commit f401802bf70cb137c7835177ba35a681f6d696c4 Author: Pulak Date: Wed Jun 24 18:29:01 2026 +0600 inital commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6537ca4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..21ea831 --- /dev/null +++ b/.env.example @@ -0,0 +1,76 @@ +APP_NAME=Creditzombies +APP_ENV=local +APP_KEY=base64:w8t89XZZhigCydgqLxTt06cw9jAB+7VQp/hLXbUPw2c= +APP_DEBUG=true +APP_URL=http://localhost +API_BASE_URL=http://localhost/cz/public/api +APP_BASE_ROUTE="/user" +LOG_CHANNEL=daily + +COMPANY_NAME='Credit Zombies' + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +#DB_DATABASE=ceditzombies-laravel +DB_DATABASE=ceditzombiesdb + +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file + +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + + + +MAIL_MAILER=smtp +MAIL_HOST=sandbox.smtp.mailtrap.io +MAIL_PORT=587 +mail_username=bf961c9afd1820 +MAIL_PASSWORD=deea2e510176c2 +MAIL_ENCRYPTION=tls +mail_from_address=test.velocity@gmail.com +MAIL_FROM_NAME="${APP_NAME}" + + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +WKHTML_PDF_BINARY='"C:\wkhtmltopdf\bin\wkhtmltopdf.exe --enable-local-file-access"' + +NMI_SECURITY_KEY="6457Thfj624V5r7WUwc5v6a68Zsd6YEm" +#NMI_SECURITY_KEY="G4q7VZH475zRr9QsA93QXh3D6ymtz6De" + +NMI_SECURITY_KEY_SERVER_PREVIOUS="BeErzh5W79nA2cfr5McWWtqXm65fwYFF" +NMI_SECURITY_KEY_CURRENT_SERVER="G4q7VZH475zRr9QsA93QXh3D6ymtz6De" + +CLIENT_KEY="ddeada92-6310-4850-82c4-0b99159b9339" + +SMART_CREDIT_BASE_URL="https://stage-sc.consumerdirect.app" +PWS_SMART_CREDIT_BASE_URL="https://stage-pws.consumerdirect.com" +SYSTEM_PASSWORD="12345678" +LOGIN_TYPE='PARTNER_API' +REPORT_PROVIDER="1" +# REPORT_PROVIDER_NAME = "3- SMART_CREDIT , 1-IDENTITY_IQ" +IS_QUEUE_ENABLE="0" +SMART_CREDIT_REPORT_BY_JSON="1" +#HTML_SCRAPPER_API_DOMAIN = "https://readytogoletters.com:8080" +HTML_SCRAPPER_API_DOMAIN="https://test.readytogoletters.com:8080" +#HTML_SCRAPPER_API_DOMAIN = "http://localhost:5000" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..74ba181 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +package-lock.json +.idea/* +storage/BAK/ +workspace.xml +storage/report.json +public/report/ +scrapper/ + diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..1db61d9 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - unused_use + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/README.md b/README.md new file mode 100644 index 0000000..f06f602 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +## Creditzombies diff --git a/app/Console/Commands/DataMigration.php b/app/Console/Commands/DataMigration.php new file mode 100644 index 0000000..4d87a84 --- /dev/null +++ b/app/Console/Commands/DataMigration.php @@ -0,0 +1,114 @@ +info('Start updateLastProcessDate'); +// $this->updateLastProcessDate(); +// $this->info('End updateLastProcessDate'); +// +// +// $this->info('Start updateUserAccessEndDateDate'); +// $this->updateUserAccessEndDateDate(); +// $this->info('End updateUserAccessEndDateDate'); + } + + // the function is for updating recurrings table last_process_date by sale created_at date + private function updateLastProcessDate() + { + $recurring_users = (new Recurring())->getRecurrings(); + + $logData['action'] = 'UPDATE_LAST_PROCESS_DATE'; + + if (!empty($recurring_users)) { + + foreach ($recurring_users as $recurring_user) { + + $sale_data = (new Sale())->getLatestSalesByUserId($recurring_user['user_id']); + + if (!empty($sale_data)) { + + $inputData['last_process_date'] = $sale_data['created_at']; + $result = $recurring_user->update($inputData); + + // log data prepared + $logData['result'][] = [ + 'sale_data' => $sale_data, + 'updated' => $result, + 'user_id' => $recurring_user['user_id'], + 'data' => $inputData + ]; + } + } + appLog($logData); + } + } + + // the function is for updating users table user_access_end_date by sale created_at date + private function updateUserAccessEndDateDate() + { + $users = (new User())->getAllClients(); + + $logData['action'] = 'UPDATE_USER_ACCESS_END_DATE'; + + if (!empty($users)) { + + foreach ($users as $user) { + + if (!empty($user->last_payment_date)) { + + $inputData['user_access_end_date'] = getDateAfterSpicificDay($user->last_payment_date, config('constant.PAYMENT_INTERVAL_DAY')); + $result = $user->update($inputData); + + // log data prepared + $logData['result'][] = [ + 'updated' => $result, + 'user_id' => $user->id, + 'added_date' => config('constant.PAYMENT_INTERVAL_DAY'), + 'data' => $inputData + ]; + } + } + appLog($logData); + } + } + + +} diff --git a/app/Console/Commands/SubscriptionUpdateByCronJob.php b/app/Console/Commands/SubscriptionUpdateByCronJob.php new file mode 100644 index 0000000..a440584 --- /dev/null +++ b/app/Console/Commands/SubscriptionUpdateByCronJob.php @@ -0,0 +1,217 @@ +info('Start subscription:update'); + $this->updateSubscription(); + $this->info('End subscription:update'); + } + + + private function updateSubscription() + { + $recurringData = (new Recurring())->getRecurringDataForScheduler(); + + $log_id = time() . rand(); + $logData['log_id'] = $log_id; + + $logData['action'] = "CLIENT_SUBSCRIPTION_UPDATE_START"; + appLog($logData); + + if (!empty($recurringData)) { + + foreach ($recurringData as $recurring) { + + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "CLIENT_SUBSCRIPTION_UPDATE_START_IN_LOOP"; + appLog($logData); + + $paymentData = []; +// dd(getStringToDateTime('20230130082542')); + $paymentData['start_date'] = getDateAfterSpicificDay($recurring['last_process_date'], 1, 'YmdHis'); + $paymentData['end_date'] = getCurrentDateTime('YmdHis'); + $paymentData['subscription_id'] = $recurring['subscription_id']; + + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->getSubscriptionInfoBySubscriptionId(); + + // log api response + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "SUBSCRIPTION_FROM_API_LOG"; + $logData['response'] = $response; + $logData['inputData'] = $recurring; + appLog($logData); + + if (!empty($response['data'])) { + + $search_data_by_date = $response['data']; + + if (!array_key_exists(0, $search_data_by_date)) { + $search_data_by_date = []; + $search_data_by_date[] = $response['data']; + } + + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "PER_RESPONSE_DATA"; + $logData['data'] = $search_data_by_date; + appLog($logData); + + foreach ($search_data_by_date as $item) { + + if (!empty($item)) { + $logData_subscription['log_id'] = $log_id; + $logData_subscription['action_by_subscription_start'] = "CLIENT_SUBSCRIPTION_START"; + + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "PER_ITEM_DATA"; + $logData['item'] = $item; + appLog($logData); + + $date = isset($item['action']['date']) ? $item['action']['date'] : $item['action'][0]['date']; + +// $last_payment_date = getStringToDateTime($item['action'][0]['date']); + + $last_payment_date = getStringToDateTime($date); + + try { + DB::beginTransaction(); + // user update + /* + $user_input['last_payment_date'] = $last_payment_date; + $user_input['user_access_end_date'] = getDateAfterSpicificDay($last_payment_date, config('constant.PAYMENT_INTERVAL_DAY')); + $user_input['subscription_status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $user_input['status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + (new User())->userupdate($user_input, $recurring['user_id']); + */ + $this->updateUserData($last_payment_date,$recurring['user_id']); + + // recurring update + + $recurring_input['last_process_date'] = $last_payment_date; + $recurring->update($recurring_input); + + // sales insert + + $this->insertSalesData($recurring,$last_payment_date,$item); + /* + $order_id = !empty($item['order_id']) ? $item['order_id'] : generateUniqueId(); + $salesData['order_id'] = $order_id; + $salesData['cc_number'] = $item['cc_number']; + $salesData['status'] = "1"; + $salesData['auth_code'] = ''; + $salesData['transaction_id'] = $item['transaction_id']; + $salesData['ip'] = getClientIpAddress(); + $salesData['user_id'] = $recurring['user_id']; + $salesData['recurring_id'] = $recurring['id']; + $salesData['created_at'] = $last_payment_date; + + $saleData = (new Sale())->getDataByTransactionId($item['transaction_id']); + + if (empty($saleData)) { + (new Sale())->createSale($salesData); + } + */ + $logData_subscription['message'] = 'Update and insert data successfully'; + DB::commit(); + } catch (\Exception $ex) { + DB::rollback(); + $logData_subscription['message'] = $ex->getMessage(); + + } + + $logData_subscription['transaction'] = $item; + $logData_subscription['action_by_subscription_end'] = "CLIENT_SUBSCRIPTION_END"; + appLog($logData_subscription); + } + + } + + } + + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "CLIENT_SUBSCRIPTION_UPDATE_END_IN_LOOP"; + appLog($logData); + } + } + + $logData = []; + $logData['log_id'] = $log_id; + $logData['action'] = "CLIENT_SUBSCRIPTION_UPDATE_END"; + appLog($logData); + } + + private function updateUserData($last_payment_date,$user_id) + { + $user_input['last_payment_date'] = $last_payment_date; + $user_input['user_access_end_date'] = getDateAfterSpicificDay($last_payment_date, config('constant.PAYMENT_INTERVAL_DAY')); + $user_input['subscription_status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $user_input['status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + (new User())->userupdate($user_input, $user_id); + } + + private function insertSalesData($recurring,$last_payment_date,$item) + { + $order_id = !empty($item['order_id']) ? $item['order_id'] : generateUniqueId(); + + $salesData['order_id'] = $order_id; + $salesData['cc_number'] = $item['cc_number']; + $salesData['status'] = "1"; + $salesData['auth_code'] = ''; + $salesData['transaction_id'] = $item['transaction_id']; + $salesData['ip'] = getClientIpAddress(); + $salesData['user_id'] = $recurring['user_id']; + $salesData['recurring_id'] = $recurring['id']; + $salesData['created_at'] = $last_payment_date; + + $saleData = (new Sale())->getDataByTransactionId($item['transaction_id']); + + if (empty($saleData)) { + (new Sale())->createSale($salesData); + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..37b62b3 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,47 @@ +command('inspire')->hourly(); + $schedule->command('subscription:update')->twiceDaily(1, 13); // Run the task daily at 1:00 & 13:00 + +// $schedule->call(function (){ +// dd('ok'); +// info('run cronjob'); +// })->everyMinute(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..cc73cb7 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,45 @@ +$exception->getMessage(),"line"=>$exception->getLine()]); + return response()->view('errors.404', ['exception'=> $exception], 404); + +// return parent::render($request, $exception); // TODO: Change the autogenerated stub + } +} diff --git a/app/Helper/helper.php b/app/Helper/helper.php new file mode 100644 index 0000000..5e2026e --- /dev/null +++ b/app/Helper/helper.php @@ -0,0 +1,897 @@ +uploadFile($file_path,$file_name,$content); + } +} + +if(!function_exists('getFile')){ + function getFile($file_path){ + return app('ManageFile')->getFile($file_path); + } +} + +if(!function_exists('uploadHTML')){ + function uploadHTML($file_path,$file_name,$content){ + return app('ManageFile')->uploadHTML($file_path,$file_name,$content); + } +} + +if(!function_exists('deleteFile')){ + function deleteFile($file_path){ + return app('ManageFile')->deleteFile($file_path); + } +} + +if(!function_exists('getPublicFile')){ + function getPublicFile($file_path){ + $file_path = config('constant.MAIN_DIR').DIRECTORY_SEPARATOR.$file_path; + return \Illuminate\Support\Facades\Storage::disk('public')->exists($file_path) ? asset(Illuminate\Support\Facades\Storage::url($file_path)):""; + } +} + +if(!function_exists('getSupportFile')){ + function getSupportFile($file_path){ + return asset('storage/resources/support_ticket/'.$file_path); + } +} + +if(!function_exists('appLog')){ + function appLog($data){ + app('ManageLogging')->createLog($data); + } +} + +if(!function_exists('generateOrderId')) { + + function generateOrderId(): string + { + return time() . rand(10000, 99999); + } +} + +if(!function_exists('generateUniqueId')) { + + function generateUniqueId(): string + { + return time() . rand(10000, 99999); + } +} + +if(!function_exists('getClientIpAddress')) { + + function getClientIpAddress(): string + { + $ipaddress = ''; + + if (isset($_SERVER['HTTP_CLIENT_IP'])) + $ipaddress = $_SERVER['HTTP_CLIENT_IP']; + else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) + $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; + else if (isset($_SERVER['HTTP_X_FORWARDED'])) + $ipaddress = $_SERVER['HTTP_X_FORWARDED']; + else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) + $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; + else if (isset($_SERVER['HTTP_FORWARDED'])) + $ipaddress = $_SERVER['HTTP_FORWARDED']; + else if (isset($_SERVER['REMOTE_ADDR'])) + $ipaddress = $_SERVER['REMOTE_ADDR']; + else + $ipaddress = 'UNKNOWN'; + + if (strlen($ipaddress) > 45) { + $ipaddress = substr($ipaddress, 0, 45); + } + return $ipaddress; + } +} + +if(!function_exists('setUserId')) { + function setUserId($id){ + setContainerValue('user_id',$id); + } +} + +if(!function_exists('setSecurityKey')) { + function setSecurityKey($value){ + setContainerValue('security_key',$value); + } +} + +if(!function_exists('getSecurityKey')) { + function getSecurityKey(){ + + if(auth()->check()){ + return customEncrypt(auth()->id()); + } + + return getContainerValue('security_key'); + } +} + +if(!function_exists('setContainerValue')) { + function setContainerValue($key,$value){ + \App\Services\CustomContainer::setContainer($key, $value); + } +} + +if(!function_exists('getContainerValue')) { + function getContainerValue($key){ + return \App\Services\CustomContainer::getContainer($key); + } +} + +if(!function_exists('getUserId')) { + function getUserId(){ + return \App\Services\CustomContainer::getContainer('user_id'); + } +} + +if(!function_exists('getAvailableWave')) { + function getAvailableWave(){ + return session('available_wave'); + } +} + +if(!function_exists('setAvailableWave')) { + function setAvailableWave($wave){ + return session('available_wave',$wave); + } +} + + +if(!function_exists('customEncrypt')) { + function customEncrypt($string){ + return (new \App\Services\OpenSSLCryptoClass())->encrypt_decrypt('encrypt',$string); + } +} + +if(!function_exists('customDecrypt')) { + function customDecrypt($string){ + return (new \App\Services\OpenSSLCryptoClass())->encrypt_decrypt('decrypt',$string); + } +} +if(!function_exists('getCurrentDate')) { + function getCurrentDate($format = 'Y-m-d') + { + $dt = \Carbon\Carbon::now(); + return $dt->format($format); + } +} + +if(!function_exists('getCurrentDateTime')) { + function getCurrentDateTime($format = 'Y-m-d H:i:s') + { + $dt = \Carbon\Carbon::now(); + return $dt->format($format); + } +} + +if(!function_exists('getStringToDate')) { + function getStringToDate($stringDate,$format = 'Y-m-d') + { + $date=strtotime($stringDate); + return date($format, $date); + } +} + +if(!function_exists('getStringToDateTime')) { + function getStringToDateTime($stringDate,$format = 'Y-m-d H:i:s') + { + $date=strtotime($stringDate); + return date($format, $date); + } +} + +if(!function_exists('setSession')) { + function setSession($key,$value) + { + return session()->put($key,$value); + } +} + +if(!function_exists('getSession')) { + function getSession($key) + { + return session()->get($key); + } +} + +if(!function_exists('getDateDifference')) { + // compare with current date time + function getDateDifference($date,$type = 'day') + { + if($type == 'day'){ + return \Carbon\Carbon::now()->diffInDays($date); + }else if($type == 'min'){ + return \Carbon\Carbon::now()->diffInMinutes($date); + }else if($type == 'year'){ + return \Carbon\Carbon::now()->diffInYears($date); + } + + } +} + +if(!function_exists('getDateAfterSpicificDay')) { + // compare with current date time + function getDateAfterSpicificDay($date,$interval,$format = 'Y-m-d H:i:s') + { + $interval_data = $interval.' days'; + + return date($format,strtotime($interval_data, strtotime($date))); + + } +} + +if(!function_exists('unSetSession')) { + function unSetSession($key) + { + return session()->forget($key); + } +} + +if(!function_exists('getWaveList')) { + function getWaveList($key) + { + return session()->forget($key); + } +} + +if(!function_exists('isEmployee')) { + function isEmployee() + { + return auth()->user()->user_type == 2; + } +} + +if(!function_exists('isAdmin')) { + function isAdmin() + { + return auth()->user()->user_type == 1; + } +} + +if(!function_exists('isSupport')) { + function isSupport() + { + return auth()->user()->email == "cz_support@gmail.com"; + } +} + +if(!function_exists('isClient')) { + function isClient() + { + return auth()->user()->user_type == 0; + } +} + +if(!function_exists('setCache')) { + function setCache($key,$value) + { + return cache()->put($key,$value); + } +} + +if(!function_exists('getCache')) { + function getCache($key) + { + return cache()->get($key) ?? null; + } +} + +if(!function_exists('unsetCache')) { + function unsetCache($key) + { + return cache()->forget($key); + } +} + +if(!function_exists('getSection')) { + function getSection() + { + return config('constant.SECTION_NAME')??[]; + } +} + +if(!function_exists('getSectionById')) { + function getSectionById($id) + { + return config('constant.SECTION_NAME')[$id] ?? null; + } +} + +if(!function_exists('getSectionIdByKey')) { + function getSectionIdByKey($key) + { + return config('constant.SECTION_IDS.'.$key) ?? null; + } +} + +if(!function_exists('setCookies')) { + function setCookies($key,$value) + { + setcookie( + $key, + $value, + time() + (10 * 365 * 24 * 60 * 60) + ); + return $value; + } +} + +if(!function_exists('getCookie')) { + function getCookie($key) + { + $c_key = $key; + // return \Cookie::get($key); +// return request()->cookie($key); + return $_COOKIE[$c_key]; + } +} + +if(!function_exists('unsetCookie')) { + function unsetCookie($key) + { + return Cookie::forget($key); + } +} + +if(!function_exists('cookieExitOrNot')) { + function cookieExitOrNot($key) + { + return Cookie::has($key); + } +} + +if(!function_exists('isClientSubscription')) { + function isClientSubscription() + { + return auth()->user()->subscription_status == config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + } +} + +if(!function_exists('decisionFromClientWave')) { + function decisionFromClientWave() + { + $current_wave = auth()->user()->wave; + $day_interval = config('constant.PACKAGE_INTERVAL_DAY'); + $decisionWaves = []; + for($i = 1 ; $i<= $current_wave; $i++) { + $day_start = ($day_interval * ($i - 1)); + $start = 1; + $end = $day_interval; + if ($i > 1) { + $start = $day_start + ($i - 1); + $end = $start + $day_interval; + } + $wave_text = "I want to use a Wave $i attack for this content box's items ( Day $start - $end )"; + $wave_value = "w$i"; + $decisionWaves[$i]['key'] = $wave_value; + $decisionWaves[$i]['text'] = $wave_text; + } + return $decisionWaves; +// return ['wave_text'=>$wave_text,'wave_value'=>$wave_value]; + } +} + +if(!function_exists('creditCardNumberMasking')) { + function creditCardNumberMasking($number, $maskingCharacter = '*') + { + return str_repeat($maskingCharacter, strlen($number) - 4) . substr($number, -4); + } +} + +if(!function_exists('sizeFilter')){ + function sizeFilter( $size ) + { + $sizes = ['KB', 'MB', 'GB']; + $count=0; + if ($size >= 1024) { + while ($size >= 1024) { + $size = round($size / 1024); + $count++; + } + } + return $size .$sizes[$count]; + } +} + +if(!function_exists('getPaymentStatus')){ + function getPaymentStatus( $status) + { + $result = ' failed '; + + if (!empty($status)) { + $result = ' success '; + } + return $result; + } +} + +if(!function_exists('getAccountStatus')){ + function getAccountStatus($subscription_status, $status) + { + $result = ' Inactive '; + + if ($status == config('constant.ACCOUNT_STATUS.Active')) { + + $result = ' Active '; + + if($subscription_status == config('constant.SUBSCRIPTION_STATUS.CANCEL_ACCOUNT')){ + + $result = ' Canceled '; + + } + + } + + return $result; + } +} + +if(!function_exists('getNextImportDate')) { + function getNextImportDate() + { + $date = getCurrentDate('m/d/Y'); + if(Auth::user()->last_import_date!=null) { + $date = getDateAfterSpicificDay(Auth::user()->last_import_date, config('constant.PACKAGE_INTERVAL_DAY'), 'm/d/Y'); + } + + return $date; + + } +} + +if(!function_exists('isPermitted')) { + function isPermitted() + { + $result = false; + $current_route_name = request()->route()->getName(); + $get_route_list = getSession('permissions_route_list'); + if(in_array($current_route_name,$get_route_list)){ + $result = true; + } + + return $result; + } +} + +if(!function_exists('isShowContent')) { + function isShowContent($route_name) + { + $result = false; + $get_route_list = getSession('permissions_route_list'); + if(isEmployee()) { + if (in_array($route_name, $get_route_list)) { + $result = true; + } + }else{ + $result = true; + } + + return $result; + } +} + +if(!function_exists('addDays')) { + function addDays($day,$date,$format = 'Y-m-d H:i:s'){ + return \Carbon\Carbon::parse($date)->addDays($day)->format($format); + } +} + +if(!function_exists('clientWaves')) { + function clientWaves($current_wave=null) + { + $waves = []; + + if(empty($current_wave)) { + $current_wave = auth()->user()->wave; + } + + for($i=1 ; $i<= $current_wave ; $i++) + { + $waves[$i]['key'] = $i; + $waves[$i]['text'] = 'Wave '. $i; + } + return $waves; + } +} + +if(!function_exists('imageFileRotate')){ + function imageFileRotate($imageFile){ + $image = file_get_contents($imageFile); + + $exif = []; + try { + $exif = exif_read_data($imageFile); + if(!empty($exif['Orientation']) && matchExifOrientation($exif['Orientation']) ) { + $format = $exif['MimeType']; + $rotated = ''; + $temp = ''; + $photo = $imageFile; + if( $format == 'image/jpeg' || $format == 'image/jpg') { + + $temp = imagecreatefromjpeg($photo); + + } elseif( $format == 'image/png' ) { + + $temp = imagecreatefrompng($photo); + + } elseif( $format == 'image/gif' ) { + + $temp = imagecreatefromgif($photo); + } + + switch($exif['Orientation']) { + case 8: + $rotated = imagerotate($temp,90,0); + break; + case 3: + $rotated = imagerotate($temp,180,0); + break; + case 6: + $rotated = imagerotate($temp,-90,0); + break; + } + $extension = $photo->getClientOriginalExtension(); + $flieNametoStore = time() . "___" . explode('.', $photo->getClientOriginalName())[0] . '.' . $extension; + + ob_start(); + imagejpeg($rotated); + $image = ob_get_contents(); + ob_clean(); + + } + }catch (Exception $ex){ + + } + + + return $image; + } +} + +if(!function_exists('matchExifOrientation')) { + function matchExifOrientation($orientation) + { + return match ($orientation){ + 3,6,8 => true, + default => false + }; + } +} + +if(!function_exists('getCreditReportPersonalInfo')) { + function getCreditReportPersonalInfo($data,$key) + { + $result = ''; + if($key == 'NAME') { + $result = $data['Name']['first'] . ' ' . $data['Name']['middle'] . ' ' . $data['Name']['last'] . ' '; + } + elseif($key == 'ALSO_KNOWN_AS') { + $result = $data['Name']['first'] . ' ' . $data['Name']['middle'] . ' ' . $data['Name']['last'] . ' '; + } + elseif($key == 'CREDIT_REPORT_DATE') { + $result = getStringToDateTime($data['Source']['InquiryDate'],'m/d/Y') ; + } + elseif($key == 'DATE_OF_BIRTH') { + $result = $data['BirthDate']['year'] . ' '; + } + elseif($key == 'CURRENT_ADDRESS' || $key == 'PREVIOUS_ADDRESS') { + + if($data['Source']['Bureau']['symbol'] == 'TUC'){ + + $result = $data['CreditAddress']['houseNumber'].' '.$data['CreditAddress']['streetName'].' '; + + }else{ + + $result = $data['CreditAddress']['unparsedStreet'].' ' ; + + } + + $result =$result.$data['CreditAddress']['city'] . ', ' . $data['CreditAddress']['stateCode'].' ' . $data['CreditAddress']['postalCode'] . ' '; + + if (isset($data['dateUpdated'])) { + $result = $result. "Date Updated: " . getStringToDateTime($data['dateUpdated'],'m/Y') ; + } + + } elseif($key == 'EMPLOYER') { + $result = $data['name'] . ' '; + if (isset($data['dateUpdated'])) { + $result .= "Date Updated: " . getStringToDateTime($data['dateUpdated'],'m/Y'); + } + + } + return $result; + } +} + +if(!function_exists('getCreditReportValuesExistOrNot')) { + function getCreditReportValuesExistOrNot($data,$key) + { + return (empty($data['data']['TransUnion']) && empty($data['data']['Experian']) && empty($data['data']['Equifax']) && $key != 'ALSO_KNOWN_AS'); + } +} + +if(!function_exists('getCreditReportAccountHistoryInfo')) { + function getCreditReportAccountHistoryInfo($data,$key) + { + $result = ''; + if($key == 'ACCOUNT') { + $result = isset($data['accountNumber'])? accountNumberMasking($data['accountNumber']):'--'; + } + elseif($key == 'HIGH_BALANCE') { + $result = isset($data['highBalance'])? amountFormatter($data['highBalance']) : '--'; + } + elseif($key == 'LAST_VERIFIED') { + $result = isset($data['dateVerified'])? getStringToDateTime($data['dateVerified'],'m/d/Y') :'--'; + } + elseif($key == 'DATE_OF_LAST_ACTIVITY') { + $result = isset($data['dateAccountStatus'])? getStringToDateTime($data['dateAccountStatus'],'m/d/Y') :'--'; + } + elseif($key == 'DATE_REPORTED') { + + $result = isset($data['dateReported'])? getStringToDateTime($data['dateReported'],'m/d/Y') :'--'; + + } + elseif($key == 'DATE_OPENED') { + $result = isset($data['dateOpened'])? getStringToDateTime($data['dateOpened'],'m/d/Y') :'--'; + } + elseif($key == 'BALANCE_OWED') { + $result = isset($data['currentBalance'])?amountFormatter($data['currentBalance']) : '--'; + } + elseif($key == 'CLOSED_DATE') { + $result = isset($data['dateClosed'])? getStringToDateTime($data['dateClosed'],'m/d/Y') :'--'; + } + elseif($key == 'ACCOUNT_RATING') { + $result = $data['AccountCondition']['description']??'--'; + } + elseif($key == 'ACCOUNT_DESCRIPTION') { + $result = $data['AccountDesignator']['description']??'--'; + } + elseif($key == 'DISPUTE_STATUS') { + $result = $data['DisputeFlag']['description']??'--'; + } + elseif($key == 'CREDITOR_TYPE') { + $result = $data['IndustryCode']['description']??'--'; + } + elseif($key == 'ACCOUNT_STATUS') { + $result = $data['OpenClosed']['description']??'--'; + } + elseif($key == 'PAYMENT_STATUS') { + $result = $data['PayStatus']['description']??'--'; + } + elseif($key == 'CREDITOR_REMARKS') { + $remark_data = '--'; + if(!empty($data['Remark'])) { + $remark_data = ''; + if(isset($data['Remark']['RemarkCode'])){ + + $data['Remark'] = [ $data['Remark'] ]; + } + foreach ($data['Remark'] as $remark) { + $remark_data = $remark_data . $remark['RemarkCode']['description'] .'
'; + } + } + echo $remark_data; + }elseif($key == 'ORIGINAL_CREDITOR') { + $result = $data['CollectionTrade']['originalCreditor']??'--'; + } + elseif($key == 'PAYMENT_AMOUNT') { + + $result = isset($data['GrantedTrade']['monthlyPayment'])?amountFormatter($data['GrantedTrade']['monthlyPayment']):'--'; + + } + elseif($key == 'LAST_PAYMENT') { + $result = isset($data['GrantedTrade']['dateLastPayment'])? getStringToDateTime($data['GrantedTrade']['dateLastPayment'],'m/d/Y') :'--'; + } + elseif($key == 'TERM_LENGTH') { + + $result = !empty($data['GrantedTrade']['termMonths'])? $data['GrantedTrade']['termMonths'].' Month(s)' :'--'; + } + elseif($key == 'PAST_DUE_AMOUNT') { + $result = isset($data['GrantedTrade']['amountPastDue'])?amountFormatter($data['GrantedTrade']['amountPastDue']):'--'; + } + elseif($key == 'ACCOUNT_TYPE') { + $result = !empty($data['GrantedTrade']['AccountType']['description'])? $data['GrantedTrade']['AccountType']['description'] :'--'; + } + elseif($key == 'PAYMENT_FREQUENCY') { + $result = !empty($data['GrantedTrade']['PaymentFrequency']['description'])? $data['GrantedTrade']['PaymentFrequency']['description'] : '--'; + } + elseif($key == 'CREDIT_LIMIT') { + $result = isset($data['GrantedTrade']['CreditLimit'])? amountFormatter($data['GrantedTrade']['CreditLimit']) :'--'; + } + + return $result; + + } +} + +if(!function_exists('accountNumberMasking')) { + function accountNumberMasking($number, $maskingCharacter = '*') + { + return substr($number, 0, -4).str_repeat($maskingCharacter,4) ; + } +} + +if(!function_exists('amountFormatter')) { + function amountFormatter($number,$currency='$') + { + $number = (float)$number; + return $currency.rtrim(rtrim(number_format($number, 2, '.', ','),'0'),'.'); + } +} + +if(!function_exists('getMonthlyPayStatus')) { + function getMonthlyPayStatus($monthlyPayStatus) + { + $status = ''; + $url_first = 'https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-'; + $url_last = '.gif'; + $url_middle = ''; + $pay_status = $monthlyPayStatus['status']; + if($pay_status == 'C'){ + $status = 'OK'; + $url_middle = 'ok'; + }elseif ($pay_status == 'U'){ + $status = 'unknown'; + $url_middle = 'unknown'; + }elseif ($pay_status == '5' || $pay_status == '4' || $pay_status == '3' || $pay_status == '2' || $pay_status == '1'){ + $month = 30; + $status = ($pay_status*$month) .' days late'; + $url_middle = ($pay_status*$month); + }elseif ($pay_status == '9' ){ + $status = 'Collection Chargeoff'; + $url_middle = 'co'; + } + return ['status'=>$status,'url'=>$url_first.$url_middle.$url_last]; + } +} + +if(!function_exists('getPayStatusHistory')) { + function getPayStatusHistory($monthlyPayStatus) + { + $month = ''; + $month = getStringToDateTime($monthlyPayStatus['date'],'M'); + $months = (getStringToDateTime($monthlyPayStatus['date'],'m') == '01'); + $year = getStringToDateTime($monthlyPayStatus['date'],'y'); + $year_split = str_split($year); + $url_first = 'https://www.smartcredit.com/resources/images/shared/tui/creditreport/monthsandyears/'; + $url_last = '-gray.gif'; + $url1 = $url_first.$year_split[0].$url_last; + $url2 = $url_first.$year_split[1].$url_last; + $url3 = $url_first.strtolower($month).$url_last; + return ['isViewed'=>$months,'month'=>$month,'year_split_0'=>$year_split[0],'year_split_1'=>$year_split[1],'url1'=>$url1,'url2'=>$url2,'url3'=>$url3]; + } +} + +if(!function_exists('isRowVisibleInCreditReportHtml')) { + function isRowVisibleInCreditReportHtml($keys,$sub_account_history_data) + { + return (($keys == 'ORIGINAL_CREDITOR' && $sub_account_history_data['accountTypeSymbol']!='Y')||(($keys == 'PAYMENT_AMOUNT' || $keys == 'TERM_LENGTH' || $keys == 'PAYMENT_FREQUENCY' || $keys == 'CREDIT_LIMIT') && $sub_account_history_data['accountTypeSymbol']=='Y')); + + } +} + +if(!function_exists('getConsumerStatement')) { + function getConsumerStatement($data) + { + $result = 'NONE REPORTED'; + + if(!empty($data)){ + $result = ''; + foreach($data as $equifax){ + + $result = $result.$equifax['statement'] ; + } + + } + + return $result; + } +} + +if(!function_exists('getModelDataMasking')) { + function getModelDataMasking($inputData) + { + if (!empty($inputData['password'])) { + $inputData['password'] = "*********"; + } + if (!empty($inputData['full_ssn'])) { + $inputData['full_ssn'] = "*********"; + } + if (!empty($inputData['security_key'])) { + $inputData['security_key'] = "*********"; + } + if (!empty($inputData['card_number'])) { + $inputData['card_number'] = creditCardNumberMasking($inputData['card_number']); + } + if(!empty($inputData['ssn'])) + { + $inputData['ssn']="****"; + } + if(!empty($inputData['html_content'])) + { + $inputData['html_content']="*********************************"; + } + + return $inputData; + } +} + +if(!function_exists('getEnableImportReset')) { + function getEnableImportReset($data) + { + $result = false; + +// if ($data['status'] == 1 && $data['subscription_status'] == 1 && $data['is_import'] == 0){ +// $result = true; +// } + if ($data['status'] == 1 && $data['subscription_status'] == 1){ + $result = true; + } + return $result; + } + +} + +if(!function_exists('getSupportIsAdmin')) { + function getSupportIsAdmin($obj) + { + + return (($obj->user_type == config('constant.USER_TYPE.ADMIN') && auth()->user()->user_type == config('constant.USER_TYPE.EMPLOYEE'))|| + (auth()->user()->user_type == config('constant.USER_TYPE.ADMIN') && $obj->user_type == config('constant.USER_TYPE.EMPLOYEE'))|| + (auth()->user()->user_type == config('constant.USER_TYPE.ADMIN') && $obj->user_type == config('constant.USER_TYPE.ADMIN'))); + + } + +} + +if(!function_exists('removeAnySpaces')) { + function removeAnySpaces($data,$replaceBy) + { + return preg_replace('/\s+/', $replaceBy, trim($data)); + + } + +} + +if(!function_exists('getUserImagesAndDoc')) { + function getUserImagesAndDoc($id) + { + + $uploadMediaObj = app(\App\Models\Uploadmedia::class); + + $upload_medias = $uploadMediaObj->getProfilePicByUserId($id); + + $user_image = ''; + $profile_image = ''; + + if($upload_medias->isNotEmpty()) { + $profile_image = $upload_medias->where('image_type_id',9)->pluck('image_path')->first(); + + $user_image = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR . $id . DIRECTORY_SEPARATOR . $profile_image; + } + + setSession('user_image',$user_image); + setSession('profile_image',$profile_image); + + } +} + +if(!function_exists('isClientFirstTimeLogin')) { + function isClientFirstTimeLogin() + { + return getSession('is_first_time_login'); + } +} + + + + + + + + + diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php new file mode 100644 index 0000000..749c3f0 --- /dev/null +++ b/app/Http/Controllers/AjaxController.php @@ -0,0 +1,461 @@ +false, + 'message'=>'fail', + 'type'=>'error', + 'data'=>[] + ]; + public function processAjaxRequest(Request $request) + { + $logData=[]; + $inputData = $request->all(); + $action = $inputData['action']; + + if($inputData['action'] == "GET_CREDIT_REPORT"){ + + $this->getCreditReport(); + } + if($inputData['action'] == "GET_CREDIT_REPORT_REFRESH_BUTTON_CONTENT"){ + $this->getCreditReportRefreshButtonContent($inputData); + } + if($inputData['action'] == "GET_CREDIT_REPORT_REFRESH_DATE") + { + $inputData = auth()->user(); + $inputData['password'] = customDecrypt($inputData['password']); + $this->getSmartCreditRefreshDate($inputData); + } + if($inputData['action'] == "DELETE_RECURRING") + { + $postData['user_id']=auth()->user()->id; + $returnData= (new Package())->deleteRecurring($postData); + if($returnData) { + $this->response['message'] = 'Recurring has deleted successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + $this->response['data']['html'] = $returnData; + } + } + if($inputData['action'] == "SUBSCRIPTION_SMART_CREDIT") + { + $auth_user = auth()->user(); + $type = config('constant.SUBSCRIPTION_SMART_CREDIT.SUBSCRIBE'); + $type_id = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + if($auth_user->subscription_status == config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED')){ + $type = config('constant.SUBSCRIPTION_SMART_CREDIT.UNSUBSCRIBE'); + $type_id = config('constant.SUBSCRIPTION_STATUS.CANCEL_ACCOUNT'); + } + $inputData['user_id'] = $auth_user->id; + $inputData['type'] = $type; + $inputData['report_type'] = $auth_user->credit_report_company_type; + $inputData['type_id'] = $type_id; + $inputData['email'] = $auth_user->email; + $inputData['name'] = $auth_user->first_name.' '.$auth_user->last_name; + $this->customer_subscription_status_submit($inputData); + } + + if($inputData['action'] == "DELETE_CLIENT_DOC_FILE") + { + $this->deleteDocFile($inputData); + } + + if($inputData['action'] == "CLOSE_SUPPORT_TICKET") + { + $this->closeSupportTicket($inputData); + $inputData['userData'] = array_slice($inputData['userData'],0,8,false); + } + if($inputData['action'] == "REMINDER_SUPPORT_TICKET") + { + $this->sendReminder($inputData); + } + + + + appLog($this->logDataCreate($action,getModelDataMasking($inputData),$this->response['message'],$this->response['status'],$this->response['code'] ?? "")); + return response()->json($this->response,200); + + } + public function processAdminAjaxRequest(Request $request) + { + $inputData = $request->all(); + $clientId =[]; + if($inputData['action'] == "DELETE_CLIENT" || $inputData['action'] == "DELETE_EMPLOYEE") + { + $clientId = $inputData['userData'][0]; + } + if($inputData['action'] == 'DELETE_MULTIPLE_CLIENT' || $inputData['action'] == "DELETE_MULTIPLE_EMPLOYEE"){ + foreach ($inputData['userData'] as $user) { + $data = json_decode($user); + $clientId[] = $data[0]; + } + } + + $this->deleteClient($clientId,$inputData['delete_type']??''); + appLog($this->logDataCreate($inputData['action'],getModelDataMasking($inputData),$this->response['message'], "",$this->response['code'] ?? "")); + return response()->json($this->response,200); + } + + public function processAdminGetAjaxRequest(Request $request) + { + $inputData = $request->all(); + + if($inputData['action'] == "GET_USER_PERMISSION") + { + $this->getUserPermission($inputData['id']); + } + if($inputData['action'] == "GET_SUBSCRIPTION_STATUS_CREDIT_REPORT_PROVIDER"){ + + $this->getSubscriptionStatusCreditReportProvider($inputData); + } + appLog($this->logDataCreate($inputData['action'],getModelDataMasking($inputData),$this->response['message'], $this->response['status'],$this->response['code'] ?? "")); + + return response()->json($this->response,200); + } + + private function getCreditReport(){ + $auth_user = auth()->user(); + $user_id = $auth_user->id; + $credit_report_type = $auth_user->credit_report_company_type; + + $creditReport = (new CreditReportService())->getUpdatedReport($user_id,$credit_report_type,$auth_user->ssn); + + if(empty($creditReport['credit_report_file_name']) && empty($creditReport['html'])){ + $logData = []; + $this->response['code'] = config('constant.OTP_SUCCESS_CODE'); + $this->response['status'] = true; + $email = $creditReport['credit_report_user_obj']['email']; + $password = $creditReport['credit_report_user_obj']['password']; + $this->response['data']['html'] = view('epicvelocity.one_time_password', ['email'=>$email,'password'=>$password])->render(); + $logData['action'] = "ONE_TIME_PASSWORD_PAGE"; + $logData['request'] = $email; + $logData['response'] = $this->response['code']; + appLog($logData); + return; + } + + if($creditReport['status']){ + if(config('app.SMART_CREDIT_REPORT_BY_JSON') == '1' && $credit_report_type == config('constant.reportType.SMART_CREDIT')) { + $creditReport['html'] = $this->generateHtml($creditReport['html']); + } + $this->response['status'] = true; + $this->response['message'] = "Credit Report info fetched successfully"; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['data']['html'] = $creditReport['html']; + + }else{ + $this->response['status'] = false; + $this->response['message'] = "Can not fetched Data"; + $this->response['code'] = config('constant.API_FAILED_CODE'); + $this->response['data']['html'] = null; + } + } + private function getSmartCreditRefreshDate($inputData) + { + + $this->response['status'] = false; + + $response =[]; + /*$inputData['email'] = "stevetest@consumerdirect.com"; + $inputData['password'] ="123456789";*/ + if($inputData->credit_report_company_type == config('constant.reportType.SMART_CREDIT')){ + $response = (new CreditReportService())->getSmartCreditRefreshDate($inputData['email'], $inputData['password'], ''); + }else if($inputData->credit_report_company_type == config('constant.reportType.IDENTITY_IQ')){ + $response = (new CreditReportService())->getIdentityIQRefreshDate($inputData['email'], $inputData['password'], $inputData->ssn); + + } + $this->response['message'] = ""; + + if(!empty($response)){ + + if ($response['refresh_date'] == "ERROR") { + $this->response['status'] = false; + $this->response['message'] = $response['message']; + }else{ + + $this->response['status'] = true; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + + $remove_view_late_text ="View Latest Report"; + $remove_purchase_text = "Purchase Report"; + $remove_refresh_text = "Refresh Report"; + $remove_notfound_text = "Not Found"; + + $removetext = "Refresh Available"; + + + $response['refresh_date'] = str_replace([$remove_view_late_text,$remove_purchase_text,$remove_refresh_text,$remove_notfound_text],"",$response['refresh_date']); + $response['refresh_date'] = str_replace("×\n","" , $response['refresh_date']); + + $this->response['button_type'] = $response['button_type']; + $this->response['refresh_date'] = "REFRESH DATE (Next available) ".$response['refresh_date']; + $this->response['type'] = "success"; + $this->response['message'] = 'Fetched data successfully.'; + + } + } + + + } + + private function getCreditReportRefreshButtonContent($inputData){ + $auth_user = auth()->user(); + $response =''; + /*$creditReportDataObj=[];*/ + /*$creditReportDataObj['email'] = "stevetest@consumerdirect.com"; + $creditReportDataObj['password'] ="123456789";*/ + + if($auth_user->credit_report_company_type == config('constant.reportType.SMART_CREDIT')){ + $response= (new CreditReportService())->getSmartCreditRefreshButtonContent($auth_user['email'],customDecrypt($auth_user['password'])); + }else if($auth_user->credit_report_company_type == config('constant.reportType.IDENTITY_IQ')){ + $response = (new CreditReportService())->getIdentityRefreshButtonContent($auth_user['email'], customDecrypt($auth_user['password']), $auth_user->ssn); + } + + $this->response['message'] = ""; + + if(!empty($response)){ + $this->response['status'] = true; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + if( $response['message'] == 'DONE'){ + $this->response['message'] = "Congratulations! Your Refresh is Complete. Please click the Import to get Your Most Recent Report Now"; + } + if($response['message'] == "ERROR" || $response['message'] == "TIME_OUT" ) { + $this->response['message'] = 'Not found'; + } + if($response['message'] == "BUTTON_NOT_FOUND"){ + $this->response['message'] = $response['message']; + } + + } + + } + public function getTrainingVideo(Request $request) + { + $inputData['action']="GET_TRAINING_VIDEO"; + $sectionName=getSectionById($request['section_id']); + $video= (new VideoSetting())->getVideoBySectionId($request['section_id']); + if(!empty($video)) + { + $this->response['status'] = true; + $this->response['data']['video'] =$video; + $this->response['data']['section_name'] =$sectionName; + $this->response['message'] = "Training Video fetched successfully"; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + } + else { + $this->response['data'] = ['section_name' => $sectionName]; + } + + appLog($this->logDataCreate($inputData['action'],getModelDataMasking($inputData),$this->response['message'],$this->response['data']['html'] ?? "",$this->response['code'] ?? "")); + + return response()->json($this->response,200); + } + private function deleteClient($id,$delete_type) + { + $action='DELETE_CLIENT'; + $message = 'Client has deleted successfully'; + if($delete_type == 'employee') + { + $action='DELETE_EMPLOYEE'; + $message = 'Employee has deleted successfully'; + } + + if($id>0) { + $returnData=(new User())->deleteUser($id); + if($returnData) { + $this->response['message'] = $message; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + } + } + /* + $user_info= (new User())->getUserByUserId($id); + if(!empty($user_info)) + { + $type = config('constant.SUBSCRIPTION_SMART_CREDIT.DELETE'); + $type_id = 3; + $inputData['type'] = $type; + $inputData['user_id'] = $user_info['id']; + $inputData['report_type'] = $user_info['credit_report_company_type']; + $inputData['type_id'] = $type_id; + $this->customer_subscription_status_submit($inputData); + if( $this->response['code'] == config('constant.API_SUCCESS_CODE')){ + if($id>0) { + $returnData=(new User())->deleteUser($id); + if($returnData) { + $this->response['message'] = 'Client has deleted successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + } + } + $this->response['status'] = true; + }else{ + $this->response['status'] = false; + } + } + */ + return response()->json($this->response,200); + } + + private function getUserPermission($id) + { + $action='GET_USER_PERMISSION'; + $permitted_module= (new Permission())->getPermittedSubmoduleIdListByUserId($id); + if($permitted_module) { + $this->response['message'] = 'fetch data successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + $this->response['data']=$permitted_module; + } + return response()->json($this->response,200); + } + + private function customer_subscription_status_submit($inputData){ + + $responseData=[]; +// $responseData= (new Package())->customerCreditReportStatus($inputData); +// $this->response['data'] = $responseData->data; + $responseData['status_code'] = config('constant.API_SUCCESS_CODE'); + if($responseData['status_code'] == config('constant.API_SUCCESS_CODE')){ +// if($inputData['type_id'] != 3) { + Auth::user()->update([ + 'subscription_status' => $inputData['type_id'], + 'account_cancel_datetime' => getCurrentDateTime(), + 'last_import_date' => null + + ]); +// } + $this->response['status'] = true; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['message'] = "Account has been cancelled successfully"; + $this->response['type'] = "success"; + $this->cancelAccountMail($inputData); + }else{ + $this->response['status'] = false; + $this->response['code'] = config('constant.API_FAILED_CODE'); + $this->response['message'] = "Account has not been cancelled. Please contact with support."; + $this->response['type'] = "error"; + } + } + private function logDataCreate($action,$request,$message,$response,$code) + { + $logData=[]; + $logData['action'] = $action; + $logData['data']['request'] = $request; + $logData['data']['message'] = $message; + $logData['data']['response'] = $response; + $logData['data']['code'] = $code; + return $logData; + } + + private function cancelAccountMail($inputData) + { + $data['email'] = $inputData['email']; + $data['email_body'] = $inputData['name']; + $data['email_subject'] = "Cancel Account From Credit Zombies"; + $from = null; + $attachment = null; + $result = (new User())->getUserListByType(1); + + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.account_closing_letter', $data['email']); + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.account_closing_admin_letter', $result[0]['email']); + } + + private function getSubscriptionStatusCreditReportProvider($inputData){ + + $this->response = (new CreditReportService())->validateUserInCreditReportProvider($inputData); + + } + + private function generateHtml($json_data){ + $data_set = (new SmartCreditJsonToHtml())->generateHtml($json_data); + $html = ''; + if($data_set != null) { + $creditScore = $data_set['creditScore']; + $personal_infos = $data_set['personal_infos']; + $consumer_statement_data_set = $data_set['consumer_statement_data_set']; + $summary_info_data_set = $data_set['summary_info_data_set']; + $creditor_contact_data_set = $data_set['creditor_contact_data_set']; + $inquiries_data_set = $data_set['inquiries_data_set']; + $account_history_data_set = $data_set['account_history_data_set']; + $html = view('partials.credit_report.main_report', compact('creditScore', 'personal_infos', 'consumer_statement_data_set', 'summary_info_data_set', 'creditor_contact_data_set', 'inquiries_data_set', 'account_history_data_set'))->render(); + } + return $html; + + } + + private function deleteDocFile($inputData) + { + $media_file = json_decode($inputData['userData'],true); + $postData['user_id']=auth()->user()->id; + $returnData = (new Uploadmedia())->deleteById($media_file['id']); + + if($returnData) { + $file_path = config('constant.UPLOAD_MEDIA_PATH').DIRECTORY_SEPARATOR.auth()->user()->id; + deleteFile($file_path.DIRECTORY_SEPARATOR.$media_file['image_path']); + $this->response['message'] = 'File has been deleted successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + $this->response['data']['html'] = $returnData; + } + + } + + private function closeSupportTicket($inputData) + { + $returnData = (new Support())->updateSupport($inputData['userData']); + + if($returnData) { + $this->response['message'] = 'Ticket has been closed successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + $this->response['data']['html'] = $returnData; + } + + } + + private function sendReminder($inputData){ + $from = null; + $attachment = null; + $supports = (new Support())->getSupportId($inputData['supportId']); + if(!empty($supports)) { + $data['email'] = $supports->email; + $data['email_body'] = "Please check your message.Ticket ID ".$supports->id; + $data['email_subject'] = "You have a message."; + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.reminderletter', $data['email']); + $this->response['message'] = 'Reminder has been sent to member successfully'; + $this->response['code'] = config('constant.API_SUCCESS_CODE'); + $this->response['type'] = 'success'; + $this->response['status'] = true; + } + } + + + +} diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..48a9516 --- /dev/null +++ b/app/Http/Controllers/AuthController.php @@ -0,0 +1,250 @@ +middleware('guest')->except([ + 'userLogout', + 'showRegisterForm', + 'register', + 'authRedirect' + ]); + $this->message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + } + + + public function secretSignup($id){ +// if($id == '1235346344647fsdfw534545') { + setSession('isFree', 1); + return redirect(route('register')); +// } +// return back()->withErrors(['message'=>'Invalid URL']); + } + public function authRedirect(){ + if(auth()->check()){ + + $user_type = auth()->user()->user_type; + + if($user_type == 0){ + return redirect(route('show.manage.clients')); + }elseif ($user_type == 2){ + $permissions_route_list = getSession('permissions_route_list'); + return redirect(route($permissions_route_list[0])); + }else { + return redirect(route('get.clients')); + } + } + + return redirect(route('login')); + } + public function showLoginForm(){ + unSetSession('isFree'); + return view('auth.login'); + } + + public function login(LoginRequest $request){ + $inputData = $request->only(['email','password']); + $action='USER_LOGIN'; + $userObjData = (new User())->getAuthenticateUser($inputData['email'],$inputData['password']); + if(!empty($userObjData)){ + Auth::loginUsingId($userObjData->id); + + if($userObjData->user_type == 0) + { + setSession('login',1); + $this->userAccessDateVerification($userObjData); +// $this->lastPaymentDateVerification($userObjData); + $days = getDateDifference($userObjData->last_import_date,'day'); + if($days >= config('constant.PACKAGE_INTERVAL_DAY')){ + setSession('eligible_for_import',1); + $userObjData->is_import = config('constant.IMPORT_REPORT_STATUS.ELIGIBLE'); +// $userObjData->wave = ($userObjData->wave +1); +// $userObjData->last_import_date = getCurrentDateTime(); + $userObjData->save(); + } + if($userObjData->is_first_login == 1){ + setSession('is_first_login',1); + setSession('is_first_time_login',true); + } + getUserImagesAndDoc($userObjData->id); + $this->setTrainingVideoLink(); + $this->setReportProviderLink(); + $inputData['id'] = $userObjData->id; + $inputData['user_type'] = 0; + $this->setSupport($inputData); + return redirect(route('show.manage.clients')); + }else if($userObjData->user_type == 2){ + $permissions_route_list = (new Permission())->getRouteNameListByUserId($userObjData->id); + setSession('permissions_route_list',$permissions_route_list); + $inputData['id'] = $userObjData->id; + $inputData['user_type'] = 1; + $this->setSupport($inputData); + return redirect(route($permissions_route_list[0])); + } + else{ + $inputData['id'] = $userObjData->id; + $inputData['user_type'] = 1; + $this->setSupport($inputData); + return redirect(route('get.clients')); + } + } + return back()->withErrors(['message'=>'Invalid email or password']); + } + + public function showRegisterForm(){ + return view('layouts.register'); + } + + public function register(Request $request){ + if($request->ajax()){ + $data = []; + try { + DB::beginTransaction(); + $data = $this->ajaxRequestHandle($request->all()); + DB::commit(); + }catch (\Exception $ex){ + DB::rollback(); + + } + return response()->json($data,200); + } + } + + public function userLogout(){ + auth()->logout(); + + return redirect(route('login')); + } + + private function ajaxRequestHandle($request){ + $user = app(\App\Models\User::class); + + $response['status'] = false; + + if($request['action'] == "CREATE_ACCOUNT"){ + $inputData['first_name'] = $request['FirstName']; + $inputData['last_name'] = $request['LastName']; + $inputData['email'] = $request['Email']; + $inputData['password'] = $request['Password']; + if($user->getUserByEmail($inputData['email'])){ + $response['status'] = true; + $response['message'] = "Email ".$inputData['email']." is already taken"; + }else { + + if ($saved = $user->addUser($inputData)) { + $response['status'] = true; + session()->put('user_id',$saved->id); + session()->put('step',2); + $response['html'] = view('register.partials.add_profile')->render(); + } + } + }else if($request['action'] == "ADD_PROFILE"){ + + $inputData['street_no'] = $request['Street_no']; + $inputData['street_name'] = $request['Street_name']; + $inputData['city'] = $request['City']; + $inputData['state'] = $request['State']; + $inputData['ssn'] = $request['ssn']; + $inputData['zip_code'] = $request['Zip']; + $inputData['phone'] = $request['PhoneNumber']; + + if($user->userupdate($inputData,session()->get('user_id'))){ + $response['status'] = true; + session()->put('step',3); + + $response['html'] = view('register.partials.credit_report')->render(); + } + + }else if($request['action'] == "CREDIT_REPORT"){ + $comapanyTypeArray = [ + '1'=>3, + '2'=>3, + '3'=>1 + ]; + $inputData['package_id'] = $request['package_id']; + $inputData['user_id'] = session()->get('user_id'); + + $userPackage = new UserPackage(); + if($userPackage->setUserPackage($inputData)) { + $updateData['credit_report_company_type'] = $comapanyTypeArray[$inputData['package_id']]; + $user->userupdate($updateData,$inputData['user_id']); + $response['status'] = true; + $response['redirect_url'] = route('login'); + } + } + + return $response; + } + + private function setTrainingVideoLink(){ + $key = 'training_video_link'; + + unsetCache($key); + if(empty(getCache($key))){ + $training_video = (new VideoSetting())->getVideoList(); + if(!empty($training_video)) { + setCache($key, $training_video); + } + } + } + + private function setReportProviderLink(){ + $key = 'credit_report_provider_link'; + unsetCache($key); + if(empty(getCache($key))){ + $report_provider = (new CreditreportProvider())->getReportProviders(); + if(!empty($report_provider)) { + setCache($key, $report_provider); + } + } + + } + + private function lastPaymentDateVerification($userObjData) + { + $days = getDateDifference($userObjData->last_payment_date,'day'); + if($days > config('constant.PAYMENT_INTERVAL_DAY')){ + Auth::user()->update([ + 'subscription_status'=>config('constant.SUBSCRIPTION_STATUS.UNSUBSCRIBED'), + ]); + } + } + + private function userAccessDateVerification($userObjData) + { + if( getCurrentDateTime() > $userObjData->user_access_end_date){ + Auth::user()->update([ + 'subscription_status'=>config('constant.SUBSCRIPTION_STATUS.UNSUBSCRIBED'), + ]); + } + } + + private function setSupport($inputData) + { +// $support_data = (new Support())->getSupport($inputData); +// setSession('new_ticket',$support_data->count()); + $support_data = (new Support())->getNotifcation($inputData['id'],$inputData['user_type'])->toArray(); + setSession('new_ticket',$support_data); + } +} diff --git a/app/Http/Controllers/BasicController.php b/app/Http/Controllers/BasicController.php new file mode 100644 index 0000000..acb678c --- /dev/null +++ b/app/Http/Controllers/BasicController.php @@ -0,0 +1,488 @@ +isMethod('post')) + { + $action="TERMS AND SERVICE CREATE"; + $file_path = config('constant.CONTENT_DIR') . DIRECTORY_SEPARATOR ; + $file_name = "terms_and_service.html"; + $inputData=['id'=>$request['id'],'terms_service'=>$file_path.$file_name]; + uploadHTML($file_path, $file_name, $request['body']); + $returnData=(new Content())->insert($inputData); + ActionLogCreate::logDataCreate($action,$request->all(),$returnData['message'],$returnData['data'],''); + + return back()->with('success',$returnData['message']); + } + $content=$this->getTermsAndCondition(); + return view('basic.terms_and_service_entry',compact('content')); + } + public function termsAndCondition() + { + $content=$this->getTermsAndCondition(); + return view('basic.terms_and_condition',compact('content')); + } + + private function getTermsAndCondition() + { + $content=(new Content())->get(); + if(!empty($content)) { + $content['terms_service'] = getFile($content['terms_service']); + $content['title'] = 'terms and service'; + } + return $content; + } + + private function generateHtml() + { + $path = public_path('report/credit_report.json'); +// $path = public_path('report/credit_report2.json'); + $json_data = json_decode(file_get_contents($path),true); + + $json_data = $json_data['BundleComponents']['BundleComponent']; + + $json_data = $json_data[6]['TrueLinkCreditReportType']; + + $borrower_info = $json_data['Borrower']; + + $credit_scores = $borrower_info['CreditScore']; + + $creditScore = [ + 'title' => 'Vantage Score® 3.0 credit score', + 'TransUnion'=> $credit_scores[0]['riskScore'], + 'Experian'=> $credit_scores[1]['riskScore'], + 'Equifax'=> $credit_scores[2]['riskScore'], + ]; + + $personal_infos = $this->personal_information_data_binding($borrower_info); + + $summary_info_data_set = $this->summary_info_data_binding($json_data); + + $creditor_contact_data_set = $this->creditor_contacts_data_binding($json_data); + + $inquiries_data_set = $this->inquiries_data_binding($json_data); + + $account_history_data_set = $this->account_history_data_binding($json_data['TradeLinePartition']); + +// $html = view('partials.credit_report.personal_info', compact('personal_infos'))->render(); +// $html = view('partials.credit_report.summary',compact('summary_info_data_set'))->render(); +// $html = view('partials.credit_report.creditor_contact',compact('creditor_contact_data_set'))->render(); +// $html = view('partials.credit_report.inquiries',compact('inquiries_data_set'))->render(); + + $html = view('partials.credit_report.main_report',compact('creditScore','personal_infos','summary_info_data_set','creditor_contact_data_set','inquiries_data_set','account_history_data_set'))->render(); +// dd($html); + echo $html;exit; + } + + private function personal_information_data_binding($borrower_info) + { + $personal_info_employer = []; + $personal_info_birth = []; + $personal_info_borrowerName = []; + $personal_info_borrowerAddress = []; + $personal_info_previousAddress = []; + $personal_info_creditScore = []; + + if(isset($borrower_info['Employer'])) + { + $personal_info_employer = $borrower_info['Employer']; + } + if(isset($borrower_info['Birth'])) + { + $personal_info_birth = $borrower_info['Birth']; + } + if(isset($borrower_info['BorrowerName'])) + { + $personal_info_borrowerName = $borrower_info['BorrowerName']; + } + if(isset($borrower_info['BorrowerAddress'])) + { + $personal_info_borrowerAddress = $borrower_info['BorrowerAddress']; + } + if(isset($borrower_info['PreviousAddress'])) + { + $personal_info_previousAddress = $borrower_info['PreviousAddress']; + } + if(isset($borrower_info['CreditScore'])) + { + $personal_info_creditScore = $borrower_info['CreditScore']; + } + + $personal_info_data_set = [ + 'CREDIT_REPORT_DATE' =>[ + 'title' => 'CREDIT REPORT DATE', + 'TransUnion'=> array_filter($personal_info_creditScore,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_creditScore,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_creditScore,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crLightTableBackground', + 'css_class_2'=>'crLightTableBackground' + ], + 'NAME' =>[ + 'title' => 'NAME', + 'TransUnion'=> array_filter($personal_info_borrowerName,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_borrowerName,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_borrowerName,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crTableHeader', + 'css_class_2'=>'crTableHeader' + ], + 'ALSO_KNOWN_AS' =>[ + 'title' => 'ALSO KNOWN AS', + 'TransUnion'=>[], + 'Experian'=>[], + 'Equifax'=>[], + 'css_class_1'=>'crTradelineHeader', + 'css_class_2'=>'crTableBackground' + ], + 'DATE_OF_BIRTH'=>[ + 'title' => 'DATE OF BIRTH', + 'TransUnion'=> array_filter($personal_info_birth,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_birth,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_birth,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crTableBackground', + 'css_class_2'=>'crTradelineHeader' + + ], + 'CURRENT_ADDRESS'=>[ + 'title' => 'CURRENT ADDRESS', + 'TransUnion'=> array_filter($personal_info_borrowerAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_borrowerAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_borrowerAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crLightTableBackground', + 'css_class_2'=>'crLightTableBackground' + ], + 'PREVIOUS_ADDRESS'=>[ + 'title' => 'PREVIOUS ADDRESS', + 'TransUnion'=> array_filter($personal_info_previousAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_previousAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_previousAddress,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crLightTableBackground', + 'css_class_2'=>'crLightTableBackground' + + + ], + 'EMPLOYER'=>[ + 'title' => 'EMPLOYER', + + 'TransUnion'=> array_filter($personal_info_employer,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($personal_info_employer,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($personal_info_employer,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + 'css_class_1'=>'crTradelineHeader', + 'css_class_2'=>'crTradelineHeader' + + ], + ]; + + return $personal_info_data_set; + } + + private function inquiries_data_binding($inquiryPartition) + { + + $inquiries_info = []; + + if(isset($inquiryPartition['InquiryPartition'])) + { + $inquiries_info = $inquiryPartition['InquiryPartition']; + if(count($inquiries_info)== 1) { + $inquiries_info['Inquiry'] = $inquiryPartition['InquiryPartition']; + } + } + return $inquiries_info; + } + + private function creditor_contacts_data_binding($creditor_contact) + { + + $creditor_contacts_info = []; + + if(isset($creditor_contact['Subscriber'])) + { + $creditor_contacts_info = $creditor_contact['Subscriber']; + } + return $creditor_contacts_info; + } + + private function summary_info_data_binding($summary) + { + + $summary_info = []; + + if(isset($summary['Summary'])) + { + $summary_info = $summary['Summary']; + } + + $summary_info_data = [ + 'TOTAL_ACCOUNTS' => [ + 'title' => 'TOTAL ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['TotalAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['TotalAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['TotalAccounts'], + ], + 'OPEN_ACCOUNTS' => [ + 'title' => 'OPEN ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['OpenAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['OpenAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['OpenAccounts'], + ], + 'CLOSED_ACCOUNTS' =>[ + 'title' => 'CLOSED ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['CloseAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['CloseAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['CloseAccounts'], + ], + 'DELINQUENT'=>[ + 'title' => 'DELINQUENT', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['DelinquentAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['DelinquentAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['DelinquentAccounts'], + ], + 'DEROGATORY'=>[ + 'title' => 'DEROGATORY', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['DerogatoryAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['DerogatoryAccounts'], + 'Equifax'=> '--', + ], + 'BALANCES'=>[ + 'title' => 'BALANCES', + 'TransUnion'=> '$'.$summary_info['TradelineSummary']['TransUnion']['TotalBalances'], + 'Experian'=>'$'. $summary_info['TradelineSummary']['Experian']['TotalBalances'], + 'Equifax'=>'$'. $summary_info['TradelineSummary']['Equifax']['TotalBalances'], + ], + 'PAYMENTS'=>[ + 'title' => 'PAYMENTS', + 'TransUnion'=>'$'. $summary_info['TradelineSummary']['TransUnion']['TotalMonthlyPayments'], + 'Experian'=>'$'. $summary_info['TradelineSummary']['Experian']['TotalMonthlyPayments'], + 'Equifax'=>'$'. $summary_info['TradelineSummary']['Equifax']['TotalMonthlyPayments'], + ], + 'PUBLIC_RECORDS'=>[ + 'title' => 'PUBLIC RECORDS', + 'TransUnion'=> $summary_info['PublicRecordSummary']['TransUnion']['NumberOfRecords'], + 'Experian'=> $summary_info['PublicRecordSummary']['Experian']['NumberOfRecords'], + 'Equifax'=> $summary_info['PublicRecordSummary']['Equifax']['NumberOfRecords'], + ], + 'INQUIRIES'=>[ + 'title' => 'INQUIRIES (2 years)', + 'TransUnion'=> $summary_info['InquirySummary']['TransUnion']['NumberInLast2Years'], + 'Experian'=> $summary_info['InquirySummary']['Experian']['NumberInLast2Years'], + 'Equifax'=> $summary_info['InquirySummary']['Equifax']['NumberInLast2Years'], + ] + ]; + + return $summary_info_data; + } + + private function account_history_data_binding($account_historys) + { + $account_history_data = []; + + foreach ($account_historys as $account_history ) + { + $tradelines = $account_history['Tradeline']; + + if(isset($tradelines['subscriberCode']) && isset($tradelines['accountNumber']) + && isset($tradelines['creditorName'])){ + + $tradelines = [ $tradelines ]; + } + + $data = $this->common_data_binding($tradelines); + + $account_history_data[$tradelines[0]['creditorName']] = ['key_data'=>$this->sub_account_history_data_bindings(),'data'=> $data]; + + } +// dd($account_history_data); + + return $account_history_data; + } + + private function sub_account_history_data_bindings() + { + $return_data = [ + + 'ACCOUNT'=> [ + 'title' => 'Account #', + + ], + 'HIGH_BALANCE' => [ + 'title' => 'High Balance', + ], + 'LAST_VERIFIED' =>[ + 'title' => 'Last Verified', + ], + + 'DATE_OF_LAST_ACTIVITY' =>[ + 'title' => 'Date of Last Activity', + ], + 'DATE_REPORTED'=>[ + 'title' => 'Date Reported', + ], + 'DATE_OPENED'=>[ + 'title' => 'Date Opened', + ], + + 'BALANCE_OWED'=>[ + 'title' => 'Balance Owed', + ], + 'CLOSED_DATE'=>[ + 'title' => 'Closed Date', + ], + 'ACCOUNT_RATING'=>[ + 'title' => 'Account Rating', + ], + + 'ACCOUNT_DESCRIPTION'=>[ + 'title' => 'Account Description', + ], + + 'DISPUTE_STATUS'=>[ + 'title' => 'Dispute Status', + ], + 'CREDITOR_TYPE'=> [ + 'title' => 'Creditor Type', + ], + + 'ACCOUNT_STATUS'=>[ + 'title' => 'Account Status', + ], + 'PAYMENT_STATUS'=> [ + 'title' => 'Payment Status', + ], + 'CREDITOR_REMARKS'=>[ + 'title' => 'Creditor Remarks', + ], + + 'PAYMENT_AMOUNT'=> [ + 'title' => 'Payment Amount', + ], + 'LAST_PAYMENT'=>[ + 'title' => 'Last Payment', + ], + 'TERM_LENGTH'=>[ + 'title' => 'Term Length', + ], + 'PAST_DUE_AMOUNT'=>[ + 'title' => 'Past Due Amount', + ], + 'ACCOUNT_TYPE'=>[ + 'title' => 'Account Type', + ], + 'PAYMENT_FREQUENCY'=>[ + 'title' => 'Payment Frequency', + ], + 'CREDIT_LIMIT'=>[ + 'title' => 'Credit Limit', + ], + ]; + + return $return_data; + } + + private function common_data_binding($data) + { + $data_set = [ + 'TransUnion'=> array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + ]; + + return $data_set; + } + +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + $this->type='error'; + } + public function setAuthUser(){ + $auth_user = auth()->user(); + $this->user_id = $auth_user->id; + $this->credit_report_type = $auth_user->credit_report_company_type; + $this->wave = $auth_user->wave; + $this->last_import_date = $auth_user->last_import_date; + $this->ssn = $auth_user->ssn; + } + public function getCreditReport(Request $request) + { + $this->setAuthUser(); + $inputData = $request->all(); + $response['status'] = false; + $action='GET_CREDIT_REPORT'; + $this->message='Can not fetch Credit Report.'; + if($inputData['action'] == "GET_CREDIT_REPORT"){ + $creditReport = (new CreditReportService())->getUpdatedReport($this->user_id,$this->credit_report_type,$this->ssn); + if($creditReport['status']){ + $response['status'] = true; + if(config('app.SMART_CREDIT_REPORT_BY_JSON') == '1' && $this->credit_report_type == config('constant.reportType.SMART_CREDIT')) { + $creditReport['html'] = $this->generateHtml($creditReport['html']); + } + $response['data'] = $creditReport['html']; + $this->type='success'; + $this->message='Credit Report is fetched successfully.'; + } + } + $requestData=[$this->user_id,$this->credit_report_type]; + ActionLogCreate::logDataCreate($action,$requestData,$this->message,$response['status'],$this->code); + return response()->json($response,200); + + } + public function uploadCreditReport(Request $request) + { + $this->setAuthUser(); + $action = 'UPLOAD_CREDIT_REPORT'; + $this->message = 'Credit Report uploaded Fail.'; + $inputData = $request->all(); + + $inputData['user_id'] = $this->user_id; + $inputData['report_type']=$this->credit_report_type; + $creditReportResponse['status']=false; + + if(!empty($inputData['credithtml'])) { + $creditReportResponse = (new CreditReportService())->uploadCreditReport($inputData); + if($creditReportResponse['status']) + { + if(getSession('video_first_time')) + { + unSetSession('video_first_time'); + setSession('view_video_first_time',true); + } + $this->updateUserWave(); + + $this->type='success'; + $this->message='Credit Report is uploaded successfully'; + $this->code=config('constant.API_SUCCESS_CODE'); + } + $this->data=$creditReportResponse; + } + $logRequestData=[$this->user_id,$this->credit_report_type]; + $logResponseData=[$this->code,$this->message]; + ActionLogCreate::logDataCreate($action,$logRequestData,$this->message,$logResponseData,$this->code); + return back()->with([$this->type => $this->message]); + } + private function updateUserWave() + { + $this->setAuthUser(); + $days = getDateDifference($this->last_import_date,'day'); + + $inputData['user_id'] = $this->user_id; + + if($days >= config('constant.PACKAGE_INTERVAL_DAY')){ + + if($this->wave == config('constant.MAX_WAVE')) + { + (new WaveCycle())->insertUserWaveCycle($inputData); + } + + $this->wave = $this->getUserWave(); + $this->last_import_date = getCurrentDateTime(); + } + $inputData['wave'] = $this->wave; + $inputData['last_import_date'] = $this->last_import_date; + Auth::user()->update([ + 'is_import' => config('constant.IMPORT_REPORT_STATUS.NOT_ELIGIBLE'), + 'wave' => $inputData['wave'], + 'last_import_date' => $inputData['last_import_date'] + ]); + + $userwave= (new UserWave())->insertUserWave($inputData); + + ActionLogCreate::logDataCreate('USER_WAVE_CREATE',$inputData,$userwave['message'],$userwave['data'],config('constant.API_SUCCESS_CODE')); + + return $userwave; + } + private function getUserWave() + { + $currentWave = 1; + if($this->wave < config('constant.MAX_WAVE')){ + $currentWave = $this->wave + 1; + } + + return $currentWave ; + } + private function generateHtml($json_data):string{ + + $data_set = (new SmartCreditJsonToHtml())->generateHtml($json_data); + $html = ''; + if($data_set != null) { + $creditScore = $data_set['creditScore']; + $personal_infos = $data_set['personal_infos']; + $consumer_statement_data_set = $data_set['consumer_statement_data_set']; + $summary_info_data_set = $data_set['summary_info_data_set']; + $creditor_contact_data_set = $data_set['creditor_contact_data_set']; + $inquiries_data_set = $data_set['inquiries_data_set']; + $account_history_data_set = $data_set['account_history_data_set']; + $html = view('partials.credit_report.main_report', compact('creditScore', 'personal_infos', 'consumer_statement_data_set', 'summary_info_data_set', 'creditor_contact_data_set', 'inquiries_data_set', 'account_history_data_set'))->render(); + + } + return $html; + + } + +} diff --git a/app/Http/Controllers/CreditReportProviderController.php b/app/Http/Controllers/CreditReportProviderController.php new file mode 100644 index 0000000..ef9683a --- /dev/null +++ b/app/Http/Controllers/CreditReportProviderController.php @@ -0,0 +1,94 @@ +action=''; + $this->type='error'; + $this->message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + } + + public function index(Request $request) + { + $providers=(new CreditreportProvider())->getReportProviders(); + + return view('report_provider.provider_add_edit_delete',compact('providers')); + } + + public function createReportProvider(CreditReportProviderRequest $request) + { + + $this->action='INSERT_CREDIT_REPORT_PROVIDER'; + $this->message='can not save data.'; + $inputData = $request->only(['source_type','link']); + $inputData['company_type'] = $inputData['source_type']; + $returnData = (new CreditreportProvider())->insertReportProvider($inputData); + + if (!empty($returnData)) { + $this->message='Successfully Saved'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate( $this->action,$request->all(),$this->message,$returnData,$this->code); + return back()->with($this->type, $this->message); + } + public function editReportProvider(Request $request) + { + $validated = $request->validate([ + 'edit_source_type' => 'required', + 'edit_link' => 'required|regex:'.config('constant.REPORT_PROVIDER_LINK_VALIDATION'), + ]); + + $this->action='EDIT_CREDIT_REPORT_PROVIDER'; + $this->message='can not save data.'; + $inputData = $request->only(['edit_source_type','edit_link']); + $inputData['company_type'] = $inputData['edit_source_type']; + $returnData = (new CreditreportProvider())->updateReportProvider($inputData); + + if (!empty($returnData)) { + $this->message='Successfully Updated'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate( $this->action,$request->all(),$this->message,$returnData,$this->code); + return back()->with($this->type, $this->message); + } + public function deleteReportProvider(Request $request) + { + $request->validate([ + 'delete_source_type' => 'required|gt:0', + ]); + $this->action='DELETE_TRAINING_VIDEO'; + $this->message='can not delete data.'; + + $inputData = $request->only(['delete_source_type']); + + if($inputData['delete_source_type']>0) { + $returnData = (new CreditreportProvider())->deleteReportProvider($inputData); + if (!empty($returnData)) { + $this->message='Successfully Deleted'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate($this->action,$request->all(),$this->message,$returnData,$this->code); + } + return back()->with($this->type, $this->message); + + } +} diff --git a/app/Http/Controllers/EpicVelocityController.php b/app/Http/Controllers/EpicVelocityController.php new file mode 100644 index 0000000..5867730 --- /dev/null +++ b/app/Http/Controllers/EpicVelocityController.php @@ -0,0 +1,1732 @@ +message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + } + public function generatepdf(Request $req) { + $logData['action'] = 'GENERATE LETTER'; + $time = config('constant.MAX_TIME_LIMIT') ?? 60; + set_time_limit($time); + $universal = array(); + $pdf_layout_array = [ + '1' => 'lg-pdf', + '2' => 'lg-pdf', + '3' => 'lg-pdf', + '4' => 'lg-pdf', + '5' => 'lg-pdf', + '6' => 'lg-pdf2', + '7' => 'lg-pdf2', + '8' => 'lg-pdf2', + '9' => 'lg-pdf2', + '10' => 'lg-pdf2', + '11' => 'lg-pdf2', + '12' => 'lg-pdf2', + '13' => 'lg-pdf2', + '14' => 'lg-pdf2', + '15' => 'lg-pdf2', + '16' => 'lg-pdf2', + '17' => 'lg-pdf2', + '18' => 'lg-pdf', + '19' => 'lg-pdf2', + '20' => 'lg-pdf2', + '21' => 'lg-pdf2', + '22' => 'lg-pdf2', + '23' => 'lg-pdf2', + '24' => 'lg-pdf2', + '26' => 'lg-pdf2', + '27' => 'lg-pdf2', + '28' => 'lg-pdf2', + '29' => 'lg-pdf2', + '30' => 'lg-pdf2', + '31' => 'lg-pdf2', + '32' => 'lg-pdf2', + '33' => 'lg-pdf2', + '34' => 'lg-pdf2', + '35' => 'lg-pdf2', + '36' => 'lg-pdf2', + '37' => 'lg-pdf2', + '38' => 'lg-pdf2', + '39' => 'lg-pdf2', + '40' => 'lg-pdf2', + '41' => 'lg-pdf2', + '42' => 'lg-pdf2', + '43' => 'lg-pdf2', + '44' => 'lg-pdf2', + '45' => 'lg-pdf2', + '46' => 'lg-pdf2', + '47' => 'lg-pdf2', + '48' => 'lg-pdf2', + '49' => 'lg-pdf2', + '50' => 'lg-pdf2', + '51' => 'lg-pdf2', + '52' => 'lg-pdf2', + '53' => 'lg-pdf2', + '54' => 'lg-pdf2', + '55' => 'lg-pdf2', + '56' => 'lg-pdf2', + '57' => 'lg-pdf2', + '58' => 'lg-pdf2', + '59' => 'lg-pdf2', + '60' => 'lg-pdf2', + '61' => 'lg-pdf2', + '62' => 'lg-pdf2', + '63' => 'lg-pdf2', + '64' => 'lg-pdf2', + '65' => 'lg-pdf2', + '66' => 'lg-pdf2', + '67' => 'lg-pdf2', + '68' => 'lg-pdf2', + '69' => 'lg-pdf2', + '70' => 'lg-pdf2', + '71' => 'lg-pdf2', + '72' => 'lg-pdf2', + ]; + $request = $req->all(); + + $auth_user = auth()->user(); + $client_id = $auth_user->id; + $request['client_email'] = ""; + $logData['email'] = $auth_user->email; + $type_name = ''; + + $current_html_content = $request['current_html_content']; + + if (empty($id)) { + $id = isset($request['letter_id']) ? $request['letter_id'] : null; + } + + + $fileTypeString = ""; + if (!empty($selectedLetterTypes)) { + foreach ($selectedLetterTypes as $type) { + if (!empty($fileTypeString) && $fileTypeString != "_") { + $fileTypeString .= "_" . $lettesTypes->{$type}; + } else { + $fileTypeString = $lettesTypes->{$type}; + } + } + } + $universal['today'] = $request['today']; + $universal['cr_resource'] = $request['cr_resource']; + $universal['name'] = $request['name']; + $universal['address'] = $request['address']; + $universal['dob'] = trim($request['dob']); + $ssn = $auth_user->ssn; + $universal['ssn'] = substr($ssn, -4); // get only last 4 digits of ssn. + $universal['p_tracking_number'] = $request['p_tracking_number']; + + $destinations = array(); + $additional_destionations1 = []; + $additional_destionations2 = []; + $EXP_1 = "EXPERIAN PO BOX 9701, ALLEN, TX 75013"; + $EXP_2 = "EXPERIAN PO BOX 4500, ALLEN, TX 75013"; + $EQF_1 = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256"; + $EQF_2 = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241"; + $TRANS_1 = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";; + $TRANS_2 = "Trans Union PO Box 1000, CHESTER, PA 19022-1000"; + $TRANS_3 = "Trans Union PO Box 2000, CHESTER, PA 19022-2000"; + + $destinations[] = $EXP_1; + $destinations[] = $EXP_2; + $destinations[] = $EQF_1; + $destinations[] = $EQF_2; + $destinations[] = $TRANS_1; + $destinations[] = $TRANS_2; + $destinations[] = $TRANS_3; + + $additional_destionations1[$EXP_1] = "Attn Darryl Gibson,
Esq. (or acting/current Group General Counsel),
Experian Information Solutions, Inc.,
475 Anton Blvd.,
Costa Mesa, CA 92626"; + $additional_destionations1[$EXP_2] = "Attn Darryl Gibson,
Esq. (or acting/current Group General Counsel),
Experian Information Solutions, Inc.,
475 Anton Blvd.,
Costa Mesa, CA 92626"; + + $additional_destionations2[$EXP_1] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013"; + $additional_destionations2[$EXP_2] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013"; + + $additional_destionations1[$EQF_1] = "ATTN John J. Kelley, III,
Esq. (or acting/current CHIEF LEGAL OFFICER),
Equifax Information services LLC.
1550 Peachtree Street, N.W.,
ATLANTA, GA 30309"; + $additional_destionations1[$EQF_2] = "ATTN John J. Kelley, III,
Esq. (or acting/current CHIEF LEGAL OFFICER),
Equifax Information services LLC.
1550 Peachtree Street, N.W.,
ATLANTA, GA 30309"; + + $additional_destionations2[$EQF_1] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256"; + $additional_destionations2[$EQF_2] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256"; + + $additional_destionations1[$TRANS_1] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + $additional_destionations1[$TRANS_2] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + $additional_destionations1[$TRANS_3] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + + $additional_destionations2[$TRANS_1] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + $additional_destionations2[$TRANS_2] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + $additional_destionations2[$TRANS_3] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + + /*$destinations[] = "EXPERIAN PO BOX 9701, ALLEN, TX 75013"; + $destinations[] = "EXPERIAN PO BOX 4500, ALLEN, TX 75013"; + $destinations[] = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256"; + $destinations[] = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241"; + $destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19016-2000"; + $destinations[] = "Trans Union PO Box 1000, CHESTER, PA 19022-1000"; + $destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";*/ + $destinations[] = "INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640"; + $destinations[] = "Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088"; + $destinations[] = "LexisNexis PO Box 105108, Atlanta, GA 30348"; + $destinations[] = "SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108"; + $destinations[] = "Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125"; + $destinations[] = "(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734"; + $destinations[] = "(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7"; + $destinations[] = "FactorTrust PO Box 3653,Alpharhetta, GA 30023"; + + $info_item = $request['info_item']; + + $data = array(); //main data array + $files = array(); + $excludes = array(); + if (isset($request['info_item']['file'])) + $files = $request['info_item']['file']; + if (isset($request['info_item']['exclude'])) + $excludes = $request['info_item']['exclude']; + $univ_dest = $request['destination']; + + + $content_image = array(); + $img_bottom = array(); + $excluded_array_keys = []; + $letterImagesDirectory = "/epicvelocity/letters/account"; + $letterAttachmentDirectory = "/epicvelocity/letters/attachment"; + $letterImagesDirectory = storage_path($letterImagesDirectory); + $letterAttachmentDirectory = storage_path($letterAttachmentDirectory); + if ($request['action'] == 'new') { + // for new upload file in account part + if (!empty($request['letter_image_file'])) { + $target_file = $letterImagesDirectory . '/' . $auth_user->id; + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_count = 0; + foreach ($request['letter_image_file'] as $keyf => $image) { + if (!in_array($keyf, $excluded_array_keys)) { + if (!empty($image)) { + $image_count++; + $temp = $auth_user->id . "_" . $image_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $content_image[$keyf] = $auth_user->id . "/" . $temp; + } + } + } + } + + //dd($request['attach_image_file']); + // for existing file in attachment part + if (!empty($request['attach_image_file'])) { + $target_file_attachment = ltrim($letterAttachmentDirectory,"/") . '/' . $auth_user->id; + if (!is_dir($target_file_attachment)) { + // mkdir($target_file_attachment, 0777, true); + } + + $attach_count = 0; + //dd($request['attach_image_file'],count($request['attach_image_file'])); + foreach ($request['attach_image_file'] as $keyf_attach => $attach) { + + $isUploadMedia = $request['isUploadMedia'][$keyf_attach]; + if (!in_array($keyf_attach, $excluded_array_keys)) { + if (!empty($attach)) { + $attach_count++; + $temp = $auth_user->id . "_" . $attach_count . time() . ".jpg"; + $targeted_attach_file = $target_file_attachment . "/" . $temp; + //dd(getPublicFile($attach),$attach); + if ($isUploadMedia == 1) { + // copy(ltrim($attach,"/"), $targeted_attach_file); + //$img_bottom[$keyf_attach] = $attach; + $img_bottom[$keyf_attach] = ''; + //$img_bottom[$keyf_attach] = ""; + } else { + /*dd($attach); + $dataImg = str_replace('data:image/jpeg;base64,', '', $attach); + $dataImg = base64_decode($dataImg); + file_put_contents($targeted_attach_file, $dataImg); + $this->filePermissionSet($targeted_attach_file);*/ + $img_bottom[$keyf_attach] = ''; + } + //$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp; + //$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp; + } + } + } + } + + + } + else if ($request['action'] == 'edit' || $request['action'] == 'create_new') { + + // for account part + if (!empty($request['isImageChange'])) { + $target_file = $letterImagesDirectory . '/' . $this->Auth->user('id'); + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_count = 0; + foreach ($request['isImageChange'] as $imageFileKey => $value) { + $image = $request['letter_image_file'][$imageFileKey]; + $oldImage = $request['oldImage'][$imageFileKey]; + if (!in_array($imageFileKey, $excluded_array_keys)) { + if ($value == 2) { // 2 for new upload Image + if (!empty($image)) { + unlink($letterImagesDirectory . '/' . $oldImage); + $image_count++; + $temp = $this->Auth->user('id') . "_" . $image_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $content_image[$imageFileKey] = $this->Auth->user('id') . "/" . $temp; + } + } else if ($value == 1) { // 1 for remove image + unlink($letterImagesDirectory . '/' . $oldImage); + } else if ($value == 0) { + $content_image[$imageFileKey] = $image; + } + } + } + } + + // for attachment part + + if (!empty($request['isAttImageChange'])) { + $target_file = $letterAttachmentDirectory . '/' . $this->Auth->user('id'); + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_att_count = 0; + foreach ($request['isAttImageChange'] as $imageAttFileKey => $value_attach) { + $image_att = $request['attach_image_file'][$imageAttFileKey]; + $oldImage_att = $request['oldAttImage'][$imageAttFileKey]; + if (!in_array($imageAttFileKey, $excluded_array_keys)) { + if ($value_attach == 2) { // 2 for new upload Image + if (!empty($image_att)) { + unlink($letterAttachmentDirectory . '/' . $oldImage_att); + $image_att_count++; + $temp = $this->Auth->user('id') . "_" . $image_att_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image_att); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $img_bottom[$imageAttFileKey] = $this->Auth->user('id') . "/" . $temp; + } + } else if ($value_attach == 1) { // 1 for remove image + unlink($letterAttachmentDirectory . '/' . $oldImage_att); + } else if ($value_attach == 0) { + $img_bottom[$imageAttFileKey] = $oldImage_att; + } + } + } + } + } + + $db_content_image = $content_image; + //dd($db_content_image); + if (!isset($request['info_item'])) { + //flash('No Content Box added'); + //return $this->redirect($this->referer()); + return back()->with('error','No Content Box added'); + } + $info_item['dest'] = array_values($info_item['dest']); + $final_content_image = []; + $new_dest_content_assoc = []; + if (!empty($info_item['dest'])) { + foreach ($info_item['dest'] as $dest_key => $dest) { + if (!empty($dest)) { + foreach ($dest as $current_dest) { + if (!empty($current_dest) && $current_dest != 1) { + $new_dest_content_assoc[$current_dest][] = $info_item['content'][$dest_key]; + } + } + } + } + } + + if (!isset($request['bureau_only']) && !isset($request['df_only'])){ + $request['bureau_only'] = 1; + $request['df_only'] = 1; + } + + if (isset($request['bureau_only'])) { + foreach ($info_item['template'] as $key => $value) { + + if (array_key_exists($key, $excludes)) + continue; + $data[$value]['type'] = 'bureau'; + $data[$value]['template'][] = $value; + $data[$value]['wave'][] = $info_item['wave'][$key]; + $data[$value]['letter_type'][] = $info_item['letter_type'][$key]; + + if(isset($info_item['content'][$key])) { + $data[$value]['content'][] = $info_item['content'][$key]; + } + + $a1 = array(); + + if (isset($info_item['dest'][$key])) { + foreach ($info_item['dest'][$key] as $key2 => $value2) { + if (in_array($value2, $destinations)) { + $a1[] = $value2; + } + } + } + if (isset($univ_dest)) { + $a1 = array_merge($a1, $univ_dest); + } + $data[$value]['dest'][] = array_filter(array_unique($a1)); + + if (array_key_exists($key, $files)) { + $data[$value]['file'][] = $files[$key]; + $final_content_image[$value][] = $content_image[$key]; + } + if (array_key_exists($key, $request['letter_image_file'])) + $data[$value]['letter_image_file'][] = $request['letter_image_file'][$key]; + } + } + + + $key_index = 400; + + if (isset($request['df_only'])) { + + foreach ($info_item['template_df'] as $key => $value) { + + if (empty(trim($value))) + continue; + if (array_key_exists($key, $excludes)) { + continue; + } + + + + $template_id = explode('_', $value); + $template_id = $template_id[1]; + + $data[$key_index]['type'] = 'creditor'; + $data[$key_index]['template'][] = $value; + $data[$key_index]['wave'][] = $info_item['wave'][$key]; + $data[$key_index]['letter_type'][] = $info_item['letter_type'][$key]; + $data[$key_index]['content'][] = $info_item['content'][$key]; + + $a1 = array(); + + if (isset($info_item['dest'][$key])) { + foreach ($info_item['dest'][$key] as $key2 => $value2) { + if (empty(trim($value))) + continue; + if (!in_array($value2, $destinations)) { + $a1[] = $value2; + } + } + } + $data[$key_index]['dest'][] = array_filter($a1); + if (array_key_exists($key, $files)) { + $data[$key_index]['file'][] = $files[$key]; + $final_content_image[$key_index][] = $content_image[$key]; + } + if (array_key_exists($key, $request['letter_image_file'])) + $data[$key_index]['letter_image_file'][] = $request['letter_image_file'][$key]; + + $key_index ++; + } + } + + + //dd($data); + $dest = array(); + //$_SERVER['DOCUMENT_ROOT'] + //$destinationPath = $_SERVER['DOCUMENT_ROOT']. "/webroot/epicvelocity/letters"; // for production server + $destinationPath = storage_path('app/public/resources/epicvelocity/letters'); // for localhost + + if (!is_dir($destinationPath)) { + mkdir($destinationPath, 0777, true); + } + + $folder_name = $destinationPath . '/' . $auth_user->id . "_" . time() . '-' . mt_rand(00000, 999999); + + try { + if (!is_dir($folder_name)) { + mkdir($folder_name, 0777, true); + } + } catch (Exception $e) { + Log::error($e); + + } + + //array for bottom images. + $img_bottom_clients = array(); + if (isset($request['identity_proof_file']) && !empty($request['identity_proof_file'])) + $img_bottom_clients[] = $request['identity_proof_file']; + if (isset($reques['ssn_proof_file']) && !empty($reques['ssn_proof_file'])) + $img_bottom_clients[] = $reques['ssn_proof_file']; + if (isset($request['address_proof_file']) && !empty($request['address_proof_file'])) + $img_bottom_clients[] = $request['address_proof_file']; + if (isset($request['other_file']) && !empty($request['other_file'])) + $img_bottom_clients[] = $request['other_file']; + + + $count = 1; + + $cb_item_per_letter = 1; + $num_of_inquiry = 1; + if (isset($request['num_of_account']) && !empty($request['num_of_account'])) { + $cb_item_per_letter = $request['num_of_account']; + } + + if (isset($request['num_of_inquiry']) && !empty($request['num_of_inquiry'])) { + $num_of_inquiry = $request['num_of_inquiry']; + } + + $dfAddressAssocPDF = []; // Data Furnisher Address & file assoc initialization + foreach ($data as $key => $value) { + $data[$key]['dest'] = array_unique($this->array_flatten($data[$key]['dest'])); + $temp_id = $data[$key]['template'][0]; + $temp_name = explode('_', $data[$key]['template'][0]); + $template_type = explode('-', $temp_name[0]); + $template_type = $template_type[0]; + if ($template_type == 'INQ') { + $cb_item_per_letter = $num_of_inquiry; + } + + if ($temp_name[1] == '40') { + //continue; + } + + $view_name = 'lg/pdf/' . $temp_name[1]; + + + // image_content + $final_image_acc = []; + if (!empty($final_content_image[$key])) { + foreach ($final_content_image[$key] as $keyfile => $valuef) { + if (!empty($valuef)) { + $final_image_acc[] = $valuef; + } + } + } + $content_image = $final_image_acc; + + // image_content + + $header_content = ''; + if ($temp_name[1] == 52) { + $header_content = "

Notice of Intent to Sue

+

(if you fail to act accordingly in response to this again applied CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES!

"; + } + + $total_destination_selected = count($data[$key]['dest']); + $testData = []; + + foreach ($data[$key]['dest'] as $key2 => $value2) { + + $current_destination_name = $this->getDestinationByAddress($value2); + + if ($value2 == '' || $value2 == 1) { + continue; + } + + if (count($data[$key]['content']) > $cb_item_per_letter) { + + $content = array_chunk($data[$key]['content'], $cb_item_per_letter); + + foreach ($content as $key3 => $value3) { + + if (in_array($value2, $destinations)) { + if (isset($request['include_bureau_image'])) { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } else { + if (isset($request['include_creditor_image'])) { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array()); + //$test_content[] = ['df-content' => $fina_data['content']]; + } + } + + $html = ''; + + $content = $fina_data['content']; + $destination = $fina_data['destination']; + $avail_content = $new_dest_content_assoc[$value2] ?? ""; + $content_image = $fina_data['content_image']; + $img_bottom = $fina_data['img_bottom']; + $img_bottom_clients = $fina_data['img_bottom_clients']; + + $html = view($view_name, + compact( + 'universal', + 'fina_data', + 'content', + 'header_content', + 'additional_destionations1', + 'additional_destionations2', + 'destination', + 'avail_content', + 'content_image', + 'img_bottom', + 'img_bottom_clients' + ) + )->render(); + + $html = $this->removeGreenText($html); + //echo $html;exit; + $test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name]; + $name2 = (explode(' ', $value2)); + $client_name = str_replace(" ", "-", $request['name']); + if(!empty($client_name)){ + $client_name = rtrim($client_name,","); + } + $date_time = time(); + $file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file + $count++; + + $global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name]; + $global_destination_html[$current_destination_name] = $html; + $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name); + if (!in_array($value2, $destinations)) { + $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; + } + } + } else { + + if (in_array($value2, $destinations)) { + if (isset($request['include_bureau_image'])) { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } else { + if (isset($request['include_creditor_image'])) { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } + $testData[] = $temp_name[1]; + $html = ''; + $content = $fina_data['content']; + $destination = $fina_data['destination']; + $avail_content = $new_dest_content_assoc[$value2] ?? ""; + $content_image = $fina_data['content_image']; + $img_bottom = $fina_data['img_bottom']; + $img_bottom_clients = $fina_data['img_bottom_clients']; + + $html = view($view_name, + compact( + 'universal', + 'fina_data', + 'content', + 'header_content', + 'additional_destionations1', + 'additional_destionations2', + 'destination', + 'avail_content', + 'content_image', + 'img_bottom', + 'img_bottom_clients' + ) + )->render(); + + $html = $this->removeGreenText($html); + //echo $html;exit; + $test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name]; + + + $name2 = (explode(' ', $value2)); + + $client_name = str_replace(" ", "-", $request['name']); + if(!empty($client_name)){ + $client_name = rtrim($client_name,","); + } + $date_time = time(); + $file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file + + $count++; + $global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name]; + $global_destination_html[$current_destination_name] = $html; + $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name); + if (!in_array($value2, $destinations)) { + $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; //['address'=>$value2,'pdf'=> $file_name]; + } + } + + } + + } + + $zip_file_name = $auth_user->id . "_" . time() . 'evlg-pdf.zip'; + $path = $folder_name; + $zip_file = $destinationPath . '/' . $zip_file_name; + + $createZip = new createDirZip(); + $createZip->testZip($path, $zip_file); + + if (!file_exists($zip_file)){ + $this->Flash->error('No Letter generated.'); + } + + if (file_exists($zip_file)) { + File::deleteDirectory($path); + $json_content_image = ""; + $json_bottom_image = ""; + + + $is_df_only = 0; + $is_bureau_only = 0; + $is_include_creditor_image = 0; + $is_include_bureau_image = 0; + $is_audit_only = 0; + if (isset($request['df_only'])) { + $is_df_only = $request['df_only']; + } + + if (isset($request['bureau_only'])) { + $is_bureau_only = $request['bureau_only']; + } + + if (isset($request['include_bureau_image'])) { + $is_include_bureau_image = $request['include_bureau_image']; + } + + if (isset($request['include_creditor_image'])) { + $is_include_creditor_image = $request['include_creditor_image']; + } + + if (isset($request['audit_only'])) { + $is_audit_only = $request['audit_only']; + } + $epic_personal_info['client_name'] = $request['name']; + $epic_personal_info['address'] = $request['address']; + + $download_type= $request['download_type']; + + if($download_type==1) + { + $type_name = 'Download'; + appLog($logData); + PdfWriter::pdfDownload($zip_file); + } + else if ($download_type == 2) { + $type_name = 'Email'; + $data['email'] = $auth_user->email; + $data['email_body'] = "Please find your generated letter"; + $data['email_subject'] = "Credit zombies Letters"; + $from = null; + //$this->sendRTGEmail($data, $zip_file); + $fileSize = filesize($zip_file)/1024/1024; + if($fileSize < 25) { + (new Email())->send($data, $data['email_subject'], $from, $zip_file, 'email.letter', $data['email']); + //$this->pdfDownload($zip_file); + $response['message'] = "Your Letters has been sent to your email."; + }else{ + $response['message'] = "Email can not sent for exceed maximum attachment file size."; + } + echo json_encode($response); + exit; + // $this->pdfDownload($zip_file); + } + else if($download_type == 3) { + $request['folder_name'] = $folder_name; + $this->storePdfLetters($request['client_id'],$letterExtraEntity->letter_id,2,$zip_file,$request); + + } else { + $conn = $this->conn; + if (isset($request['download_category']) && $request['download_category'] > 0) { + $dropdown_category_id = $request['download_category']; + $other_data['letter_stream_html'] = $global_html; + $other_data['letter_stream_dest_html'] = $global_destination_html; + $other_data['letters_directory_info'] = $folder_name; + $other_data['client_id'] = $request['client_id']; + $other_data['client_name'] = $request['name']; + $other_data['DF'] = $dfAddressAssocPDF; + $other_data['set_automation'] = $request['set_automation']; + $other_data['sertg_id'] = $letterExtraEntity->letter_id; + $response = "Your file will send with due time."; + if($request['automation_type'] != 4){ + $response = $this->sendToClient($conn, $dropdown_category_id, $zip_file, "", array(), $other_data); + } + } else if (isset($request['formaction']) && $request['formaction'] == 'ajax') { + $response = ['status' => 1]; + } + + $this->deleteGeneratedPdfWithDir($folder_name); + @unlink($zip_file); + echo json_encode($response); + exit; + } + } else { + if ($this->request->is('ajax')) { + echo json_encode('There was no file generated to send.'); + exit; + } + $this->Flash->error('No Letter generated.'); + } + $logData['type'] = $type_name; + appLog($logData); + $this->deleteGeneratedPdfWithDir($folder_name); + //return $this->redirect($this->referer()); + } + + public function getGeneratedPdf(Request $req) { + + $logData['action'] = 'TOTAL PDF COUNT'; + $time = config('constant.MAX_TIME_LIMIT') ?? 60; + set_time_limit($time); + + $response['message'] = "We apologize but you have reached your capacity of letters to challenge at one time. Please Review your accounts again and re process."; + $response['status'] = false; + + $universal = array(); + $pdf_layout_array = [ + '1' => 'lg-pdf', + '2' => 'lg-pdf', + '3' => 'lg-pdf', + '4' => 'lg-pdf', + '5' => 'lg-pdf', + '6' => 'lg-pdf2', + '7' => 'lg-pdf2', + '8' => 'lg-pdf2', + '9' => 'lg-pdf2', + '10' => 'lg-pdf2', + '11' => 'lg-pdf2', + '12' => 'lg-pdf2', + '13' => 'lg-pdf2', + '14' => 'lg-pdf2', + '15' => 'lg-pdf2', + '16' => 'lg-pdf2', + '17' => 'lg-pdf2', + '18' => 'lg-pdf', + '19' => 'lg-pdf2', + '20' => 'lg-pdf2', + '21' => 'lg-pdf2', + '22' => 'lg-pdf2', + '23' => 'lg-pdf2', + '24' => 'lg-pdf2', + '26' => 'lg-pdf2', + '27' => 'lg-pdf2', + '28' => 'lg-pdf2', + '29' => 'lg-pdf2', + '30' => 'lg-pdf2', + '31' => 'lg-pdf2', + '32' => 'lg-pdf2', + '33' => 'lg-pdf2', + '34' => 'lg-pdf2', + '35' => 'lg-pdf2', + '36' => 'lg-pdf2', + '37' => 'lg-pdf2', + '38' => 'lg-pdf2', + '39' => 'lg-pdf2', + '40' => 'lg-pdf2', + '41' => 'lg-pdf2', + '42' => 'lg-pdf2', + '43' => 'lg-pdf2', + '44' => 'lg-pdf2', + '45' => 'lg-pdf2', + '46' => 'lg-pdf2', + '47' => 'lg-pdf2', + '48' => 'lg-pdf2', + '49' => 'lg-pdf2', + '50' => 'lg-pdf2', + '51' => 'lg-pdf2', + '52' => 'lg-pdf2', + '53' => 'lg-pdf2', + '54' => 'lg-pdf2', + '55' => 'lg-pdf2', + '56' => 'lg-pdf2', + '57' => 'lg-pdf2', + '58' => 'lg-pdf2', + '59' => 'lg-pdf2', + '60' => 'lg-pdf2', + '61' => 'lg-pdf2', + '62' => 'lg-pdf2', + '63' => 'lg-pdf2', + '64' => 'lg-pdf2', + '65' => 'lg-pdf2', + '66' => 'lg-pdf2', + '67' => 'lg-pdf2', + '68' => 'lg-pdf2', + '69' => 'lg-pdf2', + '70' => 'lg-pdf2', + '71' => 'lg-pdf2', + '72' => 'lg-pdf2', + ]; + $request = $req->all(); + + $auth_user = auth()->user(); + $client_id = $auth_user->id; + $request['client_email'] = ""; + $logData['email'] = $auth_user->email; + + $download_type = $request['download_type']; + if($download_type == 1) + { + $logData['type'] = 'Download'; + }else if($download_type == 2){ + $logData['type'] = 'Email'; + } + + $current_html_content = $request['current_html_content']; + + if (empty($id)) { + $id = isset($request['letter_id']) ? $request['letter_id'] : null; + } + + + $fileTypeString = ""; + if (!empty($selectedLetterTypes)) { + foreach ($selectedLetterTypes as $type) { + if (!empty($fileTypeString) && $fileTypeString != "_") { + $fileTypeString .= "_" . $lettesTypes->{$type}; + } else { + $fileTypeString = $lettesTypes->{$type}; + } + } + } + $universal['today'] = $request['today']; + $universal['cr_resource'] = $request['cr_resource']; + $universal['name'] = $request['name']; + $universal['address'] = $request['address']; + $universal['dob'] = trim($request['dob']); + $ssn = $auth_user->ssn; + $universal['ssn'] = substr($ssn, -4); // get only last 4 digits of ssn. + $universal['p_tracking_number'] = $request['p_tracking_number']; + + $destinations = array(); + $additional_destionations1 = []; + $additional_destionations2 = []; + $EXP_1 = "EXPERIAN PO BOX 9701, ALLEN, TX 75013"; + $EXP_2 = "EXPERIAN PO BOX 4500, ALLEN, TX 75013"; + $EQF_1 = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256"; + $EQF_2 = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241"; + $TRANS_1 = "Trans Union PO Box 2000, CHESTER, PA 19016-2000";; + $TRANS_2 = "Trans Union PO Box 1000, CHESTER, PA 19022-1000"; + $TRANS_3 = "Trans Union PO Box 2000, CHESTER, PA 19022-2000"; + + $destinations[] = $EXP_1; + $destinations[] = $EXP_2; + $destinations[] = $EQF_1; + $destinations[] = $EQF_2; + $destinations[] = $TRANS_1; + $destinations[] = $TRANS_2; + $destinations[] = $TRANS_3; + + $additional_destionations1[$EXP_1] = "Attn Darryl Gibson,
Esq. (or acting/current Group General Counsel),
Experian Information Solutions, Inc.,
475 Anton Blvd.,
Costa Mesa, CA 92626"; + $additional_destionations1[$EXP_2] = "Attn Darryl Gibson,
Esq. (or acting/current Group General Counsel),
Experian Information Solutions, Inc.,
475 Anton Blvd.,
Costa Mesa, CA 92626"; + + $additional_destionations2[$EXP_1] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013"; + $additional_destionations2[$EXP_2] = "Experian POB 9701, ATTN Consumer Fraud Department, Allen, TX 75013"; + + $additional_destionations1[$EQF_1] = "ATTN John J. Kelley, III,
Esq. (or acting/current CHIEF LEGAL OFFICER),
Equifax Information services LLC.
1550 Peachtree Street, N.W.,
ATLANTA, GA 30309"; + $additional_destionations1[$EQF_2] = "ATTN John J. Kelley, III,
Esq. (or acting/current CHIEF LEGAL OFFICER),
Equifax Information services LLC.
1550 Peachtree Street, N.W.,
ATLANTA, GA 30309"; + + $additional_destionations2[$EQF_1] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256"; + $additional_destionations2[$EQF_2] = "EQUIFAX , ATTN FRAUD DEPARTMENT,POB 740256, ATLANTA, GA 30374-0256"; + + $additional_destionations1[$TRANS_1] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + $additional_destionations1[$TRANS_2] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + $additional_destionations1[$TRANS_3] = "Attn: john Blenke ,
Esq. (acting or current EVP and GENERAL COUNSEL),
Transunion LLC,
555 W. Adams Street,
CHICAGO, IL"; + + $additional_destionations2[$TRANS_1] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + $additional_destionations2[$TRANS_2] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + $additional_destionations2[$TRANS_3] = "Trans Union, Attn FRAUD DEPARTMENT, POB 2000, Chester , PA 19016-2000"; + + /*$destinations[] = "EXPERIAN PO BOX 9701, ALLEN, TX 75013"; + $destinations[] = "EXPERIAN PO BOX 4500, ALLEN, TX 75013"; + $destinations[] = "EQUIFAX PO Box740256, ATLANTA,GA 30374-0256"; + $destinations[] = "EQUIFAX PO Box740241, ATLANTA,GA 30374-0241"; + $destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19016-2000"; + $destinations[] = "Trans Union PO Box 1000, CHESTER, PA 19022-1000"; + $destinations[] = "Trans Union PO Box 2000, CHESTER, PA 19022-2000";*/ + $destinations[] = "INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640"; + $destinations[] = "Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088"; + $destinations[] = "LexisNexis PO Box 105108, Atlanta, GA 30348"; + $destinations[] = "SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108"; + $destinations[] = "Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125"; + $destinations[] = "(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734"; + $destinations[] = "(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7"; + $destinations[] = "FactorTrust PO Box 3653,Alpharhetta, GA 30023"; + + $info_item = $request['info_item']; + + $data = array(); //main data array + $files = array(); + $excludes = array(); + if (isset($request['info_item']['file'])) + $files = $request['info_item']['file']; + if (isset($request['info_item']['exclude'])) + $excludes = $request['info_item']['exclude']; + $univ_dest = $request['destination']; + + + $content_image = array(); + $img_bottom = array(); + $excluded_array_keys = []; + $letterImagesDirectory = "/epicvelocity/letters/account"; + $letterAttachmentDirectory = "/epicvelocity/letters/attachment"; + $letterImagesDirectory = storage_path($letterImagesDirectory); + $letterAttachmentDirectory = storage_path($letterAttachmentDirectory); + if ($request['action'] == 'new') { + // for new upload file in account part + if (!empty($request['letter_image_file'])) { + $target_file = $letterImagesDirectory . '/' . $auth_user->id; + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_count = 0; + foreach ($request['letter_image_file'] as $keyf => $image) { + if (!in_array($keyf, $excluded_array_keys)) { + if (!empty($image)) { + $image_count++; + $temp = $auth_user->id . "_" . $image_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $content_image[$keyf] = $auth_user->id . "/" . $temp; + } + } + } + } + + //dd($request['attach_image_file']); + // for existing file in attachment part + if (!empty($request['attach_image_file'])) { + $target_file_attachment = ltrim($letterAttachmentDirectory,"/") . '/' . $auth_user->id; + if (!is_dir($target_file_attachment)) { + // mkdir($target_file_attachment, 0777, true); + } + + $attach_count = 0; + //dd($request['attach_image_file'],count($request['attach_image_file'])); + foreach ($request['attach_image_file'] as $keyf_attach => $attach) { + + $isUploadMedia = $request['isUploadMedia'][$keyf_attach]; + if (!in_array($keyf_attach, $excluded_array_keys)) { + if (!empty($attach)) { + $attach_count++; + $temp = $auth_user->id . "_" . $attach_count . time() . ".jpg"; + $targeted_attach_file = $target_file_attachment . "/" . $temp; + //dd(getPublicFile($attach),$attach); + if ($isUploadMedia == 1) { + // copy(ltrim($attach,"/"), $targeted_attach_file); + //$img_bottom[$keyf_attach] = $attach; + $img_bottom[$keyf_attach] = ''; + //$img_bottom[$keyf_attach] = ""; + } else { + /*dd($attach); + $dataImg = str_replace('data:image/jpeg;base64,', '', $attach); + $dataImg = base64_decode($dataImg); + file_put_contents($targeted_attach_file, $dataImg); + $this->filePermissionSet($targeted_attach_file);*/ + $img_bottom[$keyf_attach] = ''; + } + //$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp; + //$img_bottom[$keyf_attach] = $this->Auth->user('id') . "/" . $temp; + } + } + } + } + + + } + else if ($request['action'] == 'edit' || $request['action'] == 'create_new') { + + // for account part + if (!empty($request['isImageChange'])) { + $target_file = $letterImagesDirectory . '/' . $this->Auth->user('id'); + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_count = 0; + foreach ($request['isImageChange'] as $imageFileKey => $value) { + $image = $request['letter_image_file'][$imageFileKey]; + $oldImage = $request['oldImage'][$imageFileKey]; + if (!in_array($imageFileKey, $excluded_array_keys)) { + if ($value == 2) { // 2 for new upload Image + if (!empty($image)) { + unlink($letterImagesDirectory . '/' . $oldImage); + $image_count++; + $temp = $this->Auth->user('id') . "_" . $image_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $content_image[$imageFileKey] = $this->Auth->user('id') . "/" . $temp; + } + } else if ($value == 1) { // 1 for remove image + unlink($letterImagesDirectory . '/' . $oldImage); + } else if ($value == 0) { + $content_image[$imageFileKey] = $image; + } + } + } + } + + // for attachment part + + if (!empty($request['isAttImageChange'])) { + $target_file = $letterAttachmentDirectory . '/' . $this->Auth->user('id'); + if (!is_dir($target_file)) { + mkdir($target_file, 0777, true); + } + $image_att_count = 0; + foreach ($request['isAttImageChange'] as $imageAttFileKey => $value_attach) { + $image_att = $request['attach_image_file'][$imageAttFileKey]; + $oldImage_att = $request['oldAttImage'][$imageAttFileKey]; + if (!in_array($imageAttFileKey, $excluded_array_keys)) { + if ($value_attach == 2) { // 2 for new upload Image + if (!empty($image_att)) { + unlink($letterAttachmentDirectory . '/' . $oldImage_att); + $image_att_count++; + $temp = $this->Auth->user('id') . "_" . $image_att_count . time() . ".jpg"; + $dataImg = str_replace('data:image/jpeg;base64,', '', $image_att); + $dataImg = base64_decode($dataImg); + $targeted_file = $target_file . "/" . $temp; + file_put_contents($targeted_file, $dataImg); + $this->filePermissionSet($targeted_file); + $img_bottom[$imageAttFileKey] = $this->Auth->user('id') . "/" . $temp; + } + } else if ($value_attach == 1) { // 1 for remove image + unlink($letterAttachmentDirectory . '/' . $oldImage_att); + } else if ($value_attach == 0) { + $img_bottom[$imageAttFileKey] = $oldImage_att; + } + } + } + } + } + + $db_content_image = $content_image; + //dd($db_content_image); + if (!isset($request['info_item'])) { + //flash('No Content Box added'); + //return $this->redirect($this->referer()); + return back()->with('error','No Content Box added'); + } + $info_item['dest'] = array_values($info_item['dest']); + $final_content_image = []; + $new_dest_content_assoc = []; + if (!empty($info_item['dest'])) { + foreach ($info_item['dest'] as $dest_key => $dest) { + if (!empty($dest)) { + foreach ($dest as $current_dest) { + if (!empty($current_dest) && $current_dest != 1) { + $new_dest_content_assoc[$current_dest][] = $info_item['content'][$dest_key]; + } + } + } + } + } + + if (!isset($request['bureau_only']) && !isset($request['df_only'])){ + $request['bureau_only'] = 1; + $request['df_only'] = 1; + } + + if (isset($request['bureau_only'])) { + foreach ($info_item['template'] as $key => $value) { + + if (array_key_exists($key, $excludes)) + continue; + $data[$value]['type'] = 'bureau'; + $data[$value]['template'][] = $value; + $data[$value]['wave'][] = $info_item['wave'][$key]; + $data[$value]['letter_type'][] = $info_item['letter_type'][$key]; + + if(isset($info_item['content'][$key])) { + $data[$value]['content'][] = $info_item['content'][$key]; + } + + $a1 = array(); + + if (isset($info_item['dest'][$key])) { + foreach ($info_item['dest'][$key] as $key2 => $value2) { + if (in_array($value2, $destinations)) { + $a1[] = $value2; + } + } + } + if (isset($univ_dest)) { + $a1 = array_merge($a1, $univ_dest); + } + $data[$value]['dest'][] = array_filter(array_unique($a1)); + + if (array_key_exists($key, $files)) { + $data[$value]['file'][] = $files[$key]; + $final_content_image[$value][] = $content_image[$key]; + } + if (array_key_exists($key, $request['letter_image_file'])) + $data[$value]['letter_image_file'][] = $request['letter_image_file'][$key]; + } + } + + + $key_index = 400; + + if (isset($request['df_only'])) { + + foreach ($info_item['template_df'] as $key => $value) { + + if (empty(trim($value))) + continue; + if (array_key_exists($key, $excludes)) { + continue; + } + + + + $template_id = explode('_', $value); + $template_id = $template_id[1]; + + $data[$key_index]['type'] = 'creditor'; + $data[$key_index]['template'][] = $value; + $data[$key_index]['wave'][] = $info_item['wave'][$key]; + $data[$key_index]['letter_type'][] = $info_item['letter_type'][$key]; + $data[$key_index]['content'][] = $info_item['content'][$key]; + + $a1 = array(); + + if (isset($info_item['dest'][$key])) { + foreach ($info_item['dest'][$key] as $key2 => $value2) { + if (empty(trim($value))) + continue; + if (!in_array($value2, $destinations)) { + $a1[] = $value2; + } + } + } + $data[$key_index]['dest'][] = array_filter($a1); + if (array_key_exists($key, $files)) { + $data[$key_index]['file'][] = $files[$key]; + $final_content_image[$key_index][] = $content_image[$key]; + } + if (array_key_exists($key, $request['letter_image_file'])) + $data[$key_index]['letter_image_file'][] = $request['letter_image_file'][$key]; + + $key_index ++; + } + } + + + //dd($data); + $dest = array(); + //$_SERVER['DOCUMENT_ROOT'] + //$destinationPath = $_SERVER['DOCUMENT_ROOT']. "/webroot/epicvelocity/letters"; // for production server + $destinationPath = storage_path('app/public/resources/epicvelocity/letters'); // for localhost + +// if (!is_dir($destinationPath)) { +// mkdir($destinationPath, 0777, true); +// } +// +// $folder_name = $destinationPath . '/' . $auth_user->id . "_" . time() . '-' . mt_rand(00000, 999999); +// +// try { +// if (!is_dir($folder_name)) { +// mkdir($folder_name, 0777, true); +// } +// } catch (Exception $e) { +// Log::error($e); +// +// } + + //array for bottom images. + $img_bottom_clients = array(); + if (isset($request['identity_proof_file']) && !empty($request['identity_proof_file'])) + $img_bottom_clients[] = $request['identity_proof_file']; + if (isset($reques['ssn_proof_file']) && !empty($reques['ssn_proof_file'])) + $img_bottom_clients[] = $reques['ssn_proof_file']; + if (isset($request['address_proof_file']) && !empty($request['address_proof_file'])) + $img_bottom_clients[] = $request['address_proof_file']; + if (isset($request['other_file']) && !empty($request['other_file'])) + $img_bottom_clients[] = $request['other_file']; + + + $count = 1; + + $cb_item_per_letter = 1; + $num_of_inquiry = 1; + $pdfCount = 0; + if (isset($request['num_of_account']) && !empty($request['num_of_account'])) { + $cb_item_per_letter = $request['num_of_account']; + } + + if (isset($request['num_of_inquiry']) && !empty($request['num_of_inquiry'])) { + $num_of_inquiry = $request['num_of_inquiry']; + } + + $dfAddressAssocPDF = []; // Data Furnisher Address & file assoc initialization + foreach ($data as $key => $value) { + $data[$key]['dest'] = array_unique($this->array_flatten($data[$key]['dest'])); + $temp_id = $data[$key]['template'][0]; + $temp_name = explode('_', $data[$key]['template'][0]); + $template_type = explode('-', $temp_name[0]); + $template_type = $template_type[0]; + if ($template_type == 'INQ') { + $cb_item_per_letter = $num_of_inquiry; + } + + if ($temp_name[1] == '40') { + //continue; + } + + $view_name = 'lg/pdf/' . $temp_name[1]; + + + // image_content + $final_image_acc = []; + if (!empty($final_content_image[$key])) { + foreach ($final_content_image[$key] as $keyfile => $valuef) { + if (!empty($valuef)) { + $final_image_acc[] = $valuef; + } + } + } + $content_image = $final_image_acc; + + // image_content + + $header_content = ''; + if ($temp_name[1] == 52) { + $header_content = "

Notice of Intent to Sue

+

(if you fail to act accordingly in response to this again applied CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES!

"; + } + + $total_destination_selected = count($data[$key]['dest']); + $testData = []; + + foreach ($data[$key]['dest'] as $key2 => $value2) { + + $current_destination_name = $this->getDestinationByAddress($value2); + + if ($value2 == '' || $value2 == 1) { + continue; + } + + if (count($data[$key]['content']) > $cb_item_per_letter) { + + $content = array_chunk($data[$key]['content'], $cb_item_per_letter); + + foreach ($content as $key3 => $value3) { + + if (in_array($value2, $destinations)) { + if (isset($request['include_bureau_image'])) { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } else { + if (isset($request['include_creditor_image'])) { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $value3, 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array()); + //$test_content[] = ['df-content' => $fina_data['content']]; + } + } + + $html = ''; + + $content = $fina_data['content']; + $destination = $fina_data['destination']; + $avail_content = $new_dest_content_assoc[$value2] ?? ""; + $content_image = $fina_data['content_image']; + $img_bottom = $fina_data['img_bottom']; + $img_bottom_clients = $fina_data['img_bottom_clients']; + + $html = view($view_name, + compact( + 'universal', + 'fina_data', + 'content', + 'header_content', + 'additional_destionations1', + 'additional_destionations2', + 'destination', + 'avail_content', + 'content_image', + 'img_bottom', + 'img_bottom_clients' + ) + )->render(); + + $html = $this->removeGreenText($html); + //echo $html;exit; + $test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name]; + $name2 = (explode(' ', $value2)); + $client_name = str_replace(" ", "-", $request['name']); + if(!empty($client_name)){ + $client_name = rtrim($client_name,","); + } + $date_time = time(); + $file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file + $count++; + + $global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name]; + $global_destination_html[$current_destination_name] = $html; +// $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name); + $pdfCount++; +// if (!in_array($value2, $destinations)) { +// $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; +// } + } + } else { + + if (in_array($value2, $destinations)) { + if (isset($request['include_bureau_image'])) { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => array(), 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } else { + if (isset($request['include_creditor_image'])) { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => $img_bottom, 'img_bottom_clients' => $img_bottom_clients); + } else { + $fina_data = array('content' => $data[$key]['content'], 'destination' => $value2, 'universal' => $universal, 'content_image' => $content_image, 'img_bottom' => array(), 'img_bottom_clients' => array()); + } + } + $testData[] = $temp_name[1]; + $html = ''; + $content = $fina_data['content']; + $destination = $fina_data['destination']; + $avail_content = $new_dest_content_assoc[$value2] ?? ""; + $content_image = $fina_data['content_image']; + $img_bottom = $fina_data['img_bottom']; + $img_bottom_clients = $fina_data['img_bottom_clients']; + + $html = view($view_name, + compact( + 'universal', + 'fina_data', + 'content', + 'header_content', + 'additional_destionations1', + 'additional_destionations2', + 'destination', + 'avail_content', + 'content_image', + 'img_bottom', + 'img_bottom_clients' + ) + )->render(); + + $html = $this->removeGreenText($html); + //echo $html;exit; + $test_content[$key] = ['content' => array_keys($content), 'pdf' => $view_name]; + + + $name2 = (explode(' ', $value2)); + + $client_name = str_replace(" ", "-", $request['name']); + if(!empty($client_name)){ + $client_name = rtrim($client_name,","); + } + $date_time = time(); + $file_name = $count . '_' . $client_name . '_' . $temp_name[0] . '_' . str_replace('/', '', $name2[0]) . '_' . $date_time . '.pdf'; //build name of pdf file + + $count++; + $global_html[$value2] = ['html' => $html, 'destination_name' => $current_destination_name, 'file_name' => $file_name]; + $global_destination_html[$current_destination_name] = $html; +// $this->generateCurrentPDF($html, $folder_name . '/' . $file_name,$file_name); +// if (!in_array($value2, $destinations)) { +// $dfAddressAssocPDF[$folder_name . '/' . $file_name] = $value2; //['address'=>$value2,'pdf'=> $file_name]; +// } + $pdfCount++; + } + + } + + } + + if($pdfCount <= config('constant.MAX_PDF_COUNT') ) + { + $response['isGreaterThanFifty'] = false; + $message = ''; + if($pdfCount > config('constant.MIN_PDF_COUNT_VALUE')) + { + $response['isGreaterThanFifty'] = true; + $message = "Oops! Looks like you're trying to process more than 50 letters, Are you sure you need to challenge this many Items? Please Double Check The how-to video To Make Sure You Want To Move Forward To Challenge All Items Listed. If You Want to Continue To Process All The Letters Then Continue"; + } + $response['message'] = $message; + $response['status'] = true; + } + $logData['pdf_file_count'] = $pdfCount; + $logData['response'] = $response; + appLog($logData); + echo json_encode($response); + exit; + + } + + private function deleteGeneratedPdfWithDir($folder_name) { + // delete generated pdf with directory + + try { + if (substr($folder_name, strlen($folder_name) - 1, 1) != '/') { + $folder_name .= '/'; + } + + $files = glob($folder_name . '*', GLOB_MARK); + foreach ($files as $file) { + @unlink($file); + } + rmdir($folder_name); + } catch (\Exception $e) { + + } + } + + private function array_flatten($array) { + if (!is_array($array)) { + return FALSE; + } + $result = array(); + foreach ($array as $key => $value) { + if (is_array($value)) { + $result = array_merge($result, $this->array_flatten($value)); + } else { + $result[$key] = $value; + } + } + return $result; + } + + private function uploadMediaHTML($uploadmedias) { + $count = 0; + $html = ""; + if (!empty($uploadmedias)) { + foreach ($uploadmedias as $uploadmedia) { + $file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$uploadmedia->user_id . DIRECTORY_SEPARATOR . $uploadmedia->image_path; + $count++; + $html .= '
+
+
+
+ + + +
+
+
+
+ +
+
+ +
+
+ + +
+ +
'; + } + } + + + return $html; + } + + private function getClientInfo($inputData) + { + $data = array(); + $uploadmedia_html = ""; + $creditReportObj = app(\App\Models\Creditreport::class); + $today = date('Y-m-d'); + $html = ""; + $clientInfo = $inputData['auth_user']; + $clientInfo->dob = $clientInfo->birth_date; + + $credit_report_data = $creditReportObj->getCreditReportInfoByUserId($clientInfo->id); + + $uploadmedia = null; + if (!empty($clientInfo)) { + $source_type = $clientInfo->credit_report_company_type; + $clientInfo->firstname = $clientInfo->first_name . " " . $clientInfo->last_name; + if (!empty($clientInfo->street_name)) { + $clientInfo->street_name = " " . $clientInfo->street_name; + } else { + $clientInfo->street_name = ""; + } + + if (!empty($clientInfo->city)) { + $clientInfo->city = ", " . $clientInfo->city; + } else { + $clientInfo->city = ""; + } + + if (!empty($clientInfo->state)) { + $clientInfo->state = ", " . $clientInfo->state; + } else { + $clientInfo->state = ""; + } + + if (!empty($clientInfo->zip_code)) { + $clientInfo->zip_code = " " . $clientInfo->zip_code; + } else { + $clientInfo->zip_code = ""; + } + + $clientInfo->json_address = $clientInfo->street_no . $clientInfo->street_name . $clientInfo->city .$clientInfo->state .$clientInfo->zip_code; + + $clientInfo->today = $today; + $clientInfo->created_on = date('d/m/Y', strtotime($clientInfo->created_on)); + //$clientInfo->cr_data = "Identity IQ " . $clientInfo->created_on; + $report_type_name = "Identity IQ"; + if ($source_type == 3) { + $report_type_name = "Smart Credit"; + } + $clientInfo->cr_data = $report_type_name . " " . date("m/d/Y"); + $uploadmedia = app(\App\Models\Uploadmedia::class)->getUploadMediaByUserId($clientInfo->id); + } + + $data['report'] = CreditReportService::getCreditReportContent($credit_report_data->user_id,$credit_report_data->file_name); + $data['uploadmedia'] = $this->uploadMediaHTML($uploadmedia); + $data['client'] = $clientInfo; + + return $data; + } + + public function getLetter(Request $request){ + $creditreport= auth()->user(); + $auth_user_id = $creditreport->id; + $credit_report_eligibility=[ + 'is_show_alert'=>false, + 'message'=>'', + 'is_show_refresh_date'=>false + ]; + if($request->ajax()){ + $inputData = $request->all(); + $response = []; + if($inputData['action'] == "GET_CLIENT_INFO"){ + $inputData['auth_user'] = $creditreport; + $response = $this->getClientInfo($inputData); + } + //return response()->json($response,200); + echo json_encode($response); + die(); + } + $p_tracking_number = $this->getNumber(); +// $waves=$this->generateWaves($creditreport); + + if(getSession('is_first_login') == 1){ + unSetSession('is_first_login'); + $credit_report_eligibility['is_show_alert']=true; + $credit_report_eligibility['message']='Great Job! import your credit report next.'; + setSession('video_first_time',true); + $credit_report_eligibility['is_show_refresh_date'] = true; + } + else{ + if($creditreport->is_import == config('constant.IMPORT_REPORT_STATUS.ELIGIBLE')) + { + unSetSession('eligible_for_import'); + $credit_report_eligibility['is_show_alert']=true; + $credit_report_eligibility['message']='Congratulations! Your next Credit Report is Ready To Import.'; + } + + } + + return view('epicvelocity.getletter',compact('p_tracking_number','creditreport','credit_report_eligibility')); + } + + private function getNumber(){ + + $number1 = mt_rand(1000, 9999); + $number2 = mt_rand(1000, 9999); + $number3 = mt_rand(1000, 9999); + $number4 = mt_rand(1000, 9999); + $number5 = mt_rand(1000, 9999); + + return $number1.' '.$number2.' '.$number3.' '.$number4.' '.$number5; + } + + private function getDestinationByAddress($address) { + $result = [ + 'EXPERIAN PO BOX 9701, ALLEN, TX 75013' => 'EXPERIAN DESTINATIONS', + 'EXPERIAN PO BOX 4500, ALLEN, TX 75013' => 'EXPERIAN DESTINATIONS', + 'EQUIFAX PO Box740256, ATLANTA,GA 30374-0256' => 'EQUIFAX DESTINATIONS', + 'EQUIFAX PO Box740241, ATLANTA,GA 30374-0241' => 'EQUIFAX DESTINATIONS', + 'Trans Union PO Box 2000, CHESTER, PA 19016-2000' => 'TRANS UNION DESTINATIONS', + 'Trans Union PO Box 1000, CHESTER, PA 19022-1000' => 'TRANS UNION DESTINATIONS', + 'Trans Union PO Box 2000, CHESTER, PA 19022-2000' => 'TRANS UNION DESTINATIONS', + 'INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640' => 'INNOVIS DESTINATIONS', + 'Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088' => 'INNOVIS DESTINATIONS', + 'LexisNexis PO Box 105108, Atlanta, GA 30348' => 'LEXISNEXIS DESTINATIONS', + 'SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108' => 'SAGESTREAM LLC DESTINATIONS', + 'Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125' => 'CHEX SYSTEMS DESTINATIONS', + '(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734' => 'MIB INC DESTINATIONS', + '(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7' => 'MIB INC DESTINATIONS', + 'FactorTrust PO Box 3653,Alpharhetta, GA 30023' => 'FACTOR TRUST DESTINATIONS', + ]; + + return $result[$address] ?? ""; + } + + private function removeGreenText($html) { + $html = preg_replace('#KEEP OPEN#', '', $html); + $html = preg_replace('#STAY CURRENT#', '', $html); + $html = preg_replace('#KEEP AT 10%#', '', $html); + $html = preg_replace('#NEVER GO OVER 50%#', '', $html); + $html = preg_replace('#' . "DON'T BE LATE#", '', $html); + $html = preg_replace('#

OBVIOUSLY PAY BILLS IN FULL ON TIME ALWAYS, DO NOT MISS , OR BE LATE OR HAVE INCOMPLETE PAYMENT IN ACCOUNT HISTORY

#', '', $html); + return $html; + } + + private function generateCurrentPDF($html, $file_path) { +// echo $html;exit; + if($this->pdfObj instanceof PdfWriter){ + $pdfWriter = $this->pdfObj; + }else{ + $pdfWriter = new PdfWriter(); + } + //echo $html;exit; + $pdfWriter->write($html, $file_path); + // $pdfWriter->mpdfWrite($html, $file_path,basename($file_path)); +// $pdfWriter->snappyImage($html, $file_path); + } + + private function generateWaves($user) + { + $userWave=$user['wave']; + $waves=[]; + for($i=1;$i<=$userWave;$i++) + { + $waves[$i]='Wave '.$i; + } + return $waves; + } + + private function filePermissionSet($file_path, $code = 0664) { +// chmod($file_path, $code); + } + + +} diff --git a/app/Http/Controllers/HistoryController.php b/app/Http/Controllers/HistoryController.php new file mode 100644 index 0000000..36e9e69 --- /dev/null +++ b/app/Http/Controllers/HistoryController.php @@ -0,0 +1,43 @@ +pageLimit) ? config('constant.PAGINATION_LIMIT'):$request->pageLimit; + + $searchData=[ + 'pageLimit'=>$items, + 'status_code'=>$request['status_code'], + 'fdate'=>$request['fdate'], + 'tdate'=>$request['tdate'] + ]; + + + $histories =(new IqCallHistory())->getHistories($searchData) ; + if(!empty($request['export']) && $request['export'] == 1) + { + return Excel::download(new ViewExport($histories,'partials.iq_call_histories'), 'IqCallHistories.xlsx'); + } + return view('history.list',compact('histories','searchData')); + } + + + +} diff --git a/app/Http/Controllers/ModalController.php b/app/Http/Controllers/ModalController.php new file mode 100644 index 0000000..cd0ff07 --- /dev/null +++ b/app/Http/Controllers/ModalController.php @@ -0,0 +1,40 @@ +all(); + + if( $inputData['type'] == 'SUPPORT_MODAL_VIEW'){ + return view('partials.modals.support_modal'); + } + if($inputData['type'] == 'PROFILE_IMAGE_MODAL_VIEW'){ + return view('partials.modals.image_view_modal'); + } + if($inputData['type'] == 'FIRST_TIME_LOGIN_MODAL_VIEW'){ + setSession('is_first_time_login',false); + return view('partials.modals.first_time_login_modal'); + } + if($inputData['type'] == 'PAYMENT_MODAL_VIEW'){ + return view('partials.modals.payment_modal'); + } + if($inputData['type'] == 'UPLOAD_DOC_MODAL'){ + return view('partials.modals.upload_doc_modal'); + } + if($inputData['type'] == 'COMMON_MODAL'){ + return view('partials.modals.common_modal',compact('inputData')); + } + if($inputData['type'] == 'RECURRING_VIEW_MODAL'){ + return view('partials.modals.recurring_modal'); + } + + + + + } +} diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php new file mode 100644 index 0000000..7f78ef1 --- /dev/null +++ b/app/Http/Controllers/PaymentController.php @@ -0,0 +1,247 @@ +all(); + $inputData['save_card'] = request('save_card', 0); + $inputData['clear_card'] = request('clear_card', 0); + $action = 'PAYMENT_SETTING'; + $inputData['user'] = auth()->user(); + $inputData['ip'] = request()->getClientIp(true); + + $requestData = $this->prepareData($inputData); + + try { + $findData['user_id'] = $requestData['user_id']; + $findData['status'] = 1; + $recurringData = (new Recurring())->getRecurringByUserId($findData); + + if(!empty($recurringData)) { +// $package = new Package(); +// $package->makePayments($requestData); + $deleteRecurringData['email'] = $requestData['email']; + $deleteRecurringData['subscription_id'] = $recurringData['subscription_id']; + $deleteRecurringResponse = (new Package())->deleteRecurringPackage($deleteRecurringData); + + if ($deleteRecurringResponse['status_code'] == config('constant.API_SUCCESS_CODE')) { + $updateRecurring['status'] = 2; + $recurringData->update($updateRecurring); + + $recurringResponse = (new Package())->recurringPackage($requestData); + + if($recurringResponse['status_code'] == config('constant.API_SUCCESS_CODE')) { + Auth::user()->update([ + 'subscription_status' => config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'), + 'last_payment_date' => getCurrentDateTime(), + 'user_access_end_date' => getDateAfterSpicificDay(getCurrentDateTime(),config('constant.PAYMENT_INTERVAL_DAY')) + ]); + $message = "Card number has been updated successful."; + $status_code = config('constant.API_SUCCESS_CODE'); + $type = 'success'; + } + } + }else{ + + $onetimePayment = (new PaymentService())->makePayment($requestData); + + if($onetimePayment['status']) { + // for recurring + $recurringResponse = (new Package())->recurringPackage($requestData); + $this->updateUser($requestData); + $message = "Payment and Card number has been updated successful."; + $status_code = config('constant.API_SUCCESS_CODE'); + $type = 'success'; + } + } + + }catch (\Exception $ex){ + $message = "Can not update card number."; + $status_code = config('constant.API_FAILED_CODE'); + } + + if ($status_code == config('constant.API_SUCCESS_CODE')) { + $this->updateCookies($inputData); + $message = "Card number has been updated successful."; + $type = 'success'; + } + ActionLogCreate::logDataCreate($action, $this->prepareLog($inputData), $message, "", $status_code); + return back()->with([$type => $message]); + } + + public function subscriptionUpdateByCronJob() + { + $recurringData = (new Recurring())->getRecurringDataForScheduler(); + + if(!empty($recurringData)) { + + foreach ($recurringData as $recurring) { + + $logData['action_by_subscription_id_start'] = "CLIENT_SUBSCRIPTION_UPDATE_START"; + $paymentData = []; + $paymentData['subscription_id'] = $recurring['subscription_id']; + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->getSubscriptionInfoBySubscriptionId(); + + if (!empty($response['data']) && array_key_exists(0,$response['data'])) { + + $search_data_by_date = []; + $current_date = getCurrentDate(); +// $current_date ='2023-03-02'; + + foreach ($response['data'] as $item) { + + if($item['condition'] == 'complete' && array_key_exists(0,$item['action'])) + { + $dtr = getStringToDateTime($item['action'][0]['date'], 'Y-m-d'); + + if($dtr >= $current_date) + { + $search_data_by_date = $item; + + break; + } + + } + + } + + if(!empty($search_data_by_date)) { + + $logData_subscription['action_by_subscription_start'] = "CLIENT_SUBSCRIPTION_START"; + // user update + $user_input['last_payment_date'] = getCurrentDateTime(); + $user_input['subscription_status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $user_input['status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $return_data = (new User())->userupdate($user_input, $recurring['user_id']); + + // recurring update + $recurring_input['last_process_date'] = getCurrentDateTime(); + $recurring->update($recurring_input); + + // sales insert + + $salesData['order_id'] = $search_data_by_date['order_id']; + $salesData['cc_number'] = $search_data_by_date['cc_number']; + $salesData['status'] = "1"; + $salesData['auth_code'] = ''; + $salesData['transaction_id'] = $search_data_by_date['transaction_id']; + $salesData['ip'] = getClientIpAddress(); + $salesData['user_id'] = $recurring['user_id']; + $salesData['recurring_id'] = $recurring['id']; + (new Sale())->createSale($salesData); + $logData_subscription['action_by_subscription_end'] = "CLIENT_SUBSCRIPTION_END"; + appLog($logData_subscription); + } + } + + + $logData['status_code'] = $response['status_code']; + $logData['message'] = $response['message']; + $logData['inputData'] = $recurring; + $logData['action_by_subscription_id_end'] = "CLIENT_SUBSCRIPTION_UPDATE_END"; + appLog($logData); + } + } + } + + private function prepareData($inputData): array + { + $user_info = $inputData['user']; + $amount=0; + $prepareData['user_id'] = $user_info->id; + $prepareData['password']=customDecrypt($user_info->password); + $prepareData['first_name'] = $user_info['first_name']; + $prepareData['last_name'] = $user_info['last_name']; + $prepareData['wave']=$user_info->wave; + $prepareData['last_payment_date']=$user_info->last_payment_date; + $prepareData['company'] = $user_info['company'] ?? config('app.name'); + $prepareData['street_no'] = $user_info['street_no']; + $prepareData['street_name'] = $user_info['street_name']; + $prepareData['city'] = $user_info['city']; + $prepareData['state'] = $user_info['state']; + $prepareData['zip_code'] = $user_info['zip_code']; + $prepareData['country'] = $user_info['country'] ?? 'US'; + $prepareData['phone'] = $user_info['phone']; + $prepareData['fax'] = $user_info['fax'] ?? ""; + $prepareData['email'] = $user_info['email']; + $prepareData['website'] = $user_info['website'] ?? ""; + + + $prepareData['tax'] = 1; + $prepareData['shipping'] = 1; + $prepareData['ponumber'] = "PO1234"; + $prepareData['ip'] = $inputData['ip']; + + $prepareData['amount'] = "24.97"; + $prepareData['card_number'] = $inputData['card_number']; + $prepareData['expiry'] = $inputData['expiry']; + return $prepareData; + } + + private function updateCookies($inputData) + { + $user_id = $inputData['user']->id; + + if ($inputData['save_card'] == 1) { + setCache('card_' . $user_id, $inputData['card_number']); + setCache('expiration_' . $user_id, $inputData['expiry']); + setCache('cvv_' . $user_id, $inputData['cvv']); + } + + if ($inputData['clear_card'] == 1) { + unsetCache('card_' . $user_id); + unsetCache('expiration_' . $user_id); + unsetCache('cvv_' . $user_id); + } + } + + private function prepareLog($inputData) + { + $outputData['_token'] = $inputData['_token']; + $outputData['card_number'] = $inputData['card_number']; + $outputData['expiry'] = $inputData['expiry']; + $outputData['cvv'] = $inputData['cvv']; + $outputData['email'] = $inputData['user']['email']; + + if (!empty($outputData['card_number'])) { + $outputData['card_number'] = creditCardNumberMasking($outputData['card_number']); + } + + return $outputData; + } + + private function updateUser($inputData) + { + $updateUserData['is_import'] = 1; + $updateUserData['subscription_status'] = 1; + $updateUserData['wave'] = 1; + $updateUserData['last_payment_date'] = getCurrentDateTime(); + $updateUserData['user_access_end_date'] = getDateAfterSpicificDay(getCurrentDateTime(),config('constant.PAYMENT_INTERVAL_DAY')); + (new User())->userupdate($updateUserData,$inputData['user_id']); + } + +} diff --git a/app/Http/Controllers/RegisterController.php b/app/Http/Controllers/RegisterController.php new file mode 100644 index 0000000..0e588c2 --- /dev/null +++ b/app/Http/Controllers/RegisterController.php @@ -0,0 +1,668 @@ +status_code = config('constant.API_FAILED_CODE'); + } + public function createAccount(Request $request) + { + return view('client.manual_client_create'); + } + public function createManualAccount(ClientRegistration $request) + { + $inputData = $request->all(); + $do_next_step = true; + $this->code = config('constant.API_FAILED_CODE'); + $logData['action'] = "CREATE_ACCOUNT_MANUALLY"; + $last_payment_date = getCurrentDateTime(); + $user_access_date = getStringToDateTime($inputData['user_access_date']); + $data = []; + if(isset($inputData['make_payment']) && $inputData['make_payment']) { + $recurringResponse = (new Package())->recurringPackage($inputData); + $this->message = $recurringResponse['message']; + $do_next_step = $recurringResponse['status']; + $last_payment_date = getStringToDateTime($inputData['payment_date']); + $user_access_date = getDateAfterSpicificDay($last_payment_date,config('constant.PAYMENT_INTERVAL_DAY')); + } + if($do_next_step) { + try { + DB::beginTransaction(); + $inputData['wave'] = 1; + $inputData['subscription_status'] = 1; + $inputData['last_payment_date'] = $last_payment_date; + $inputData['user_access_end_date'] = $user_access_date; + $inputData['credit_report_company_type'] = $inputData['source_type']; + if (!$data = (new Register())->createAccount($inputData)) { + throw new \Exception("Account creation failed.Please try again!"); + } + + if (isset($data['id']) && $data['id'] > 0) { + $creditReportData['user_id'] = $data['id']; + $creditReportData['email'] = $inputData['email']; + $creditReportData['password'] = $inputData['password']; + $creditReportData['report_type'] = $inputData['source_type']; + + (new Creditreport())->insertCreditReport($creditReportData); + if(isset($inputData['make_payment']) && $inputData['make_payment']) { + $recurringData['user_id'] = $data['id']; + $recurringData['email'] = $inputData['email']; + (new Recurring())->updateByEmail($recurringData); + } + } + + $this->message = "Account created successfully."; + $this->code = config('constant.API_SUCCESS_CODE'); + $this->type = 'success'; + + DB::commit(); + } catch (\Exception $ex) { + DB::rollback(); + $this->message = $ex->getMessage(); + + } + } + + appLog($this->logDataCreate($logData, $this->prepareInputLog($inputData), $this->message, '', $this->code)); + + return back()->with([$this->type => $this->message]); + } + + public function addProfile(AddProfileRequest $request) + { + + $logData['action'] = "PROFILE_ADD"; + $inputData = $request->all(); + + $data = []; + try { + + DB::beginTransaction(); + + $user_id = getUserId(); + + if (!(new Register())->addProfile($inputData, $user_id)) { + throw new \Exception("Profile update failed.Please try again!"); + } + + DB::commit(); + + $message = "Profile updated successfully."; + $code = config('constant.API_SUCCESS_CODE'); + $data = $inputData; + + } catch (\Exception $ex) { + DB::rollback(); + $message = $ex->getMessage(); + $code = config('constant.API_FAILED_CODE'); + } + + appLog($this->logDataCreate($logData, $inputData, $message, $data, $code)); + + return $this->sendApiResponse( + $data, + $message, + $code + ); + } + + public function addPackage(AddPackageRequest $request) + { + $logData['action'] = "PACKAGE_ADD"; + $inputData = $request->all(); + $data = []; + try { + + DB::beginTransaction(); + + $user_id = getUserId(); + + if (!(new Register())->addPackage($inputData, $user_id)) { + throw new \Exception("Package added failed.Please try again!"); + } + + DB::commit(); + + $message = "Package added successfully."; + $code = config('constant.API_SUCCESS_CODE'); + $data = $inputData; + + } catch (\Exception $ex) { + DB::rollback(); + $message = $ex->getMessage(); + $code = config('constant.API_FAILED_CODE'); + } + appLog($this->logDataCreate($logData, $inputData, $message, $data, $code)); + return $this->sendApiResponse( + $data, + $message, + $code + ); + } + + public function importCreditReportForUser(SetCreditReportRequest $request) + { + + $logData['action'] = "IMPORT_CREDIT_REPORT"; + + $inputData = $request->all(); + + try { + + $package_id = $inputData['package_id']; + $user_id = getUserId(); + + DB::beginTransaction(); + + $message = "Report not found"; + + $creditReport = new CreditReportService(); + + if (!(new Register())->addPackage($package_id, $user_id)) { + throw new \Exception("Package added failed.Please try again!"); + } + + $response = $creditReport->getSmartCreditHTML($inputData['email'], $inputData['password']); + + if (!$response['status']) { + throw new \Exception($message); + } + + $creditReportObj = app(\App\Models\Creditreport::class); + + $credit_reportData['user_id'] = $user_id; + $credit_reportData['html_content'] = $response['html']; + + if (!$creditReportObj->addOrUpdateCreditReport($credit_reportData)) { + throw new \Exception("Report upload problem."); + } + + $message = "Your report has been saved successfully"; + $code = config('constant.API_SUCCESS_CODE'); + + DB::commit(); + + } catch (\Exception $ex) { + DB::rollback(); + $message = $ex->getMessage(); + $code = config('constant.API_FAILED_CODE'); + } + + appLog($this->logDataCreate($logData, $inputData, $message, $inputData, $code)); + + return $this->sendApiResponse( + [], + $message, + $code + ); + } + + public function getUserInfoById() + { + $logData['action'] = "GET_USER_INFO_BY_ID"; + $userObj = app(User::class); + + $user_id = getUserId(); + + $userData = $userObj->getUserByUserId($user_id); + $security_questions = (new SecurityQuestion())->getSecurityQuestion(); + $userData->password = customDecrypt($userData->password); + $message = "User not found"; + $code = config('constant.API_FAILED_CODE'); + $userData['questionList'] = $security_questions; + if (!empty($userData)) { + $message = "User info fetched successfully"; + $code = config('constant.API_SUCCESS_CODE'); + } + appLog($this->logDataCreate($logData, $user_id, $message, $userData, $code)); + return $this->sendApiResponse( + $userData, + $message, + $code + ); + } + + private function prepareQuestionAnswer(&$data) + { + + $questionArray = $data['questionList']['questionAnswer']; + unset($data['questionList']['questionAnswer']); + //$selected_questions = $data['questionList']; + //dd($questionArray['idVerificationCriteria']['question1']['choiceList']['choice'],$selected_questions['answer1']); + $question1 = $questionArray['idVerificationCriteria']['question1']['choiceList']['choice']; + $question2 = $questionArray['idVerificationCriteria']['question2']['choiceList']['choice']; + $question3 = $questionArray['idVerificationCriteria']['question3']['choiceList']['choice']; + + if (!empty($question1)) { + foreach ($question1 as $q1) { + if (isset($q1['key']) && $q1['key'] == $data['questionList']['answer1']) { + $data['questionList']['answer1'] = $q1['display']; + } + } + } + + if (!empty($question2)) { + foreach ($question2 as $q2) { + if (isset($q2['key']) && $q2['key'] == $data['questionList']['answer2']) { + $data['questionList']['answer2'] = $q2['display']; + } + } + } + + if (!empty($question3)) { + foreach ($question3 as $q3) { + if (isset($q3['key']) && $q3['key'] == $data['questionList']['answer3']) { + $data['questionList']['answer3'] = $q1['display']; + } + } + } + + } + + public function makePaymentByUser(MakePaymentRequest $request): JsonResponse + { + $logData['action'] = "MAKE_PAYMENT_START"; + + $message = "Unknown error occurred."; + $status_code = config('constant.API_FAILED_CODE'); + + $inputData = $request->all(); + $userData = (new Register())->emailVarification($inputData['email']); + + if (!empty($userData)) { + try { + + $user_id = $userData['id']; + $inputData['user_id'] = $user_id; + $inputData['amount'] = config('constant.PLAN_AMOUNT'); + $package = (new Package()); + $package->makePayment($inputData); + if ($package->status_code == config('constant.API_SUCCESS_CODE')) { + $inputData['email'] = $userData['email']; + $inputData['name'] = $userData['first_name'] . ' ' . $userData['last_name']; + $this->paymentMail($inputData); + } + $message = "Successfully Saved."; + $status_code = config('constant.API_SUCCESS_CODE'); + + Auth::loginUsingId($user_id); + + } catch (\Exception $ex) { + $logData['exception']['message'] = $ex->getMessage(); + $logData['exception']['trace'] = $ex->getTraceAsString(); + } + + $this->data = $userData; + $this->message = $message; + $this->status_code = $status_code; + } + appLog($this->logDataCreate($logData, $this->prepareInputLog($inputData), $this->message, $this->prepareInputLog($this->data), $this->status_code)); + return $this->sendApiResponse( + $this->data, + $this->message, + $this->status_code + ); + } + + public function makePayment(Request $request): JsonResponse + { + $postData = $request->all(); + $logData['action'] = "MAKE_PAYMENT_START"; + $data = []; + $message = ''; + $status_code = config('constant.API_FAILED_CODE'); + $userData = (new User())->getUserByEmail($postData['email']); + if (!empty($userData)) { + $user_question_answer = (new UserSecurityQuestionAnswer())->getUserSecurityQuestionAnswer($userData['id']); + + $inputData = []; + $inputData['id'] = $userData['id']; + $inputData["first_name"] = $userData["first_name"]; + $inputData["last_name"] = $userData["last_name"]; + $inputData['answer'] = $user_question_answer['answer'] ?? ""; + $inputData['question_id'] = $user_question_answer['question_id'] ?? 1; + $inputData["email"] = $userData["email"]; + $inputData["password"] = customDecrypt($userData["password"]); + $inputData["street_no"] = $userData["street_no"]; + $inputData["street_name"] = $userData["street_name"]; + $inputData["city"] = $userData["city"]; + $inputData["state"] = $userData["state"]; + $inputData["birth_date"] = $userData["birth_date"]; + $inputData["ssn"] = $userData["ssn"]; + $inputData['card_number'] = $postData['card_number']; + $inputData['expiry'] = $postData['expiry']; + $inputData["amount"] = $postData["amount"]; + $inputData['package_id'] = "2"; + $inputData["full_ssn"] = $postData["full_ssn"]; + $inputData["phone"] = $postData["phone"]; + $inputData["zip_code"] = $postData["zip_code"]; + + $package = (new Package()); + $package->purchasePackage($inputData); + if ($package->status_code == config('constant.API_SUCCESS_CODE')) { + Auth::loginUsingId($userData['id']); + } + $data = $package->data; + $message = $package->message; + $status_code = config('constant.API_SUCCESS_CODE'); + appLog($this->logDataCreate($logData, $postData, $message, $data, $status_code)); + } + return $this->sendApiResponse( + $data, + $message, + $status_code + ); + } + + public function emailVerification(CreateAccountRequest $request) + { + $logData['action'] = "EMAIL_VERIFICATION"; + $inputData = $request->all(); + $this->data = []; + $this->message = ''; + $this->status_code = config('constant.API_SUCCESS_CODE'); + + $result = []; + + if(config('app.REPORT_PROVIDER') == '3') { + $result = (new Package())->checkIsEmailExistOnSmartCredit($inputData); + } +// elseif (config('app.REPORT_PROVIDER') == '2'){ +// $result = $this->identityIQemailVerification(); +// } + + if (isset($result['status']) && $result['status']) { + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $result['message']; + } + + return $this->sendApiResponse( + $this->data, + $this->message, + $this->status_code + ); + } + private function identityIQemailVerification() + { + $result['status'] = true; + $result['message'] = "You already have an account with identityIQ"; + return $result; + } + public function profileVerification(CustomerProfileRequest $request) + { + + $logData['action'] = "SSN_VERIFICATION"; + + $inputData = $request->all(); + $this->data = []; + $this->message = ''; + + $this->status_code = config('constant.API_SUCCESS_CODE'); + + $smartCreditRequestData['ssn'] = $inputData['full_ssn']; + $smartCreditRequestData['email'] = $inputData['email']; + + $result =[]; + if(config('app.REPORT_PROVIDER') == '3') { + $result = (new SmartCredit(config('app.CLIENT_KEY'))) + ->setData($smartCreditRequestData) + ->checkIsSsnExistOnSmartCredit(); + } +// elseif (config('app.REPORT_PROVIDER') == '2'){ +// $result = $this->identityIQemailVerification(); +// } + + if (isset($result['status']) && $result['status']) { + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $result['message']; + } + + return $this->sendApiResponse( + $this->data, + $this->message, + $this->status_code + ); + } + + public function getSecurityQuestion(Request $request): JsonResponse + { + $logData['action'] = "GET_SECURITY_QUESTION"; + $questions = (new package())->securityQuestions(); + return $this->sendApiResponse( + $questions->data, + $questions->message, + $questions->status_code + ); + } + + public function createCustomer(CreateCustomerRequest $request): JsonResponse + { + + $logData['action'] = "CREATE_CUSTOMER_START"; + appLog($logData); + + $inputData = $request->all(); + $package = (new Package()); + + if($request['is_free'] != 1) { + $package->createCustomer($inputData); + } + + $this->message = $package->message; + $this->status_code = $package->status_code; + + $payment_status_code = $package->payment_status_code; + $is_success_payment = $payment_status_code == config('constant.API_SUCCESS_CODE'); + + if ($is_success_payment || $request['is_free'] == 1) { + + // if free customer then status inactive for customer +// if ($request['is_free'] == 1) { +// $inputData['status'] = 2; // status = 2 for inactive user, 1 for active +// } + + // Insert User table + $inputData['credit_report_company_type'] = config('app.REPORT_PROVIDER') ?? 3; + $userData = $this->addUser($inputData); + + $inputData['user_id'] = $userData['id']; + $inputData['status_code'] = $payment_status_code; + $inputData['is_free'] = $request['is_free']; + // insert credit report table and user update + $package->purchasePackage($inputData); + + // update sale table by order_id for success payment + if(isset($package->data['order_id']) && $package->data['order_id']>0 && $request['is_free'] != 1) { + (new Sale())->updateByOrderId($package->data['order_id'], ['user_id' => $userData['id']]); + } + + // update recurring table by user_id for success payment + if($request['is_free'] != 1) { + (new Recurring())->updateByEmail($inputData); + } + + // Sent email to customer + $mailData['email'] = $inputData['email']; + $mailData['name'] = $inputData['first_name'] . ' ' . $inputData['last_name']; + if($request['is_free'] != 1) { + $this->paymentMail($mailData); + } + setSession('isFree',0); + } + + $this->data = [ + 'tracking_token' => $package->tracking_token, + 'customer_token' => $package->customer_token, + 'questionAnswer' => $package->data + ]; + + $logData['action'] = "CREATE_CUSTOMER_END"; + appLog($logData); + + return $this->sendApiResponse( + $this->data, + $this->message, + $this->status_code + ); + } + + public function getIdentityQuestionAnswer(Request $request): JsonResponse + { + $logData['action'] = "GET_IDENTITY_QUESTION_ANSWER"; + $questions = (new package())->identityQuestionAnswer(); + return $this->sendApiResponse( + $questions['data']['idVerificationCriteria'], + $questions['message'], + $questions['status_code'] + ); + } + + public function postIdentityQuestion(Request $request): JsonResponse + { + $inputData = $request->all(); + $questions = (new package())->submitIdentityQuestionAnswer($inputData); + if ($questions->status_code == config('constant.API_SUCCESS_CODE')) { + $questions->data = $this->insertSecurityQuestionAnswer($inputData); + } + return $this->sendApiResponse( + $questions->data, + $questions->message, + $questions->status_code + ); + } + + private function insertSecurityQuestionAnswer($inputData) + { + $userQuestion = []; + $logData['action'] = "INSERT_USER_IDENTITY_QUESTION_ANSWER"; + $userData = (new Register())->emailVarification($inputData['email']); + if (!empty($userData)) { + $userQuestion = ['user_id' => $userData['id'], 'data' => $inputData['security_question_answer']]; + (new UserIdentityQuestionAnswer())->insertData($userQuestion); + $this->status_code = config('constant.API_SUCCESS_CODE'); + $this->message = 'successfully inserted user identity question answer'; + } + appLog($this->logDataCreate($logData, $userQuestion, $this->message, $this->data, $this->status_code)); + return $userData; + } + + public function insertEmployee(EmployeeRegistrationRequest $request) + { + $inputData = $request->all(); + $inputData['user_type'] = 2; + $userData = $this->addUser($inputData); + if (!empty($userData)) { + $inputData['employee_id'] = $userData['id']; + (new Permission())->insertUserPermission($inputData); + } + return back()->with([$this->type => $this->message]); + } + + private function addUser($inputData) + { + $logData['action'] = "CREATE_ACCOUNT"; + $this->data = []; + try { + DB::beginTransaction(); + if (!$this->data = (new Register())->createAccount($inputData)) { + throw new \Exception("Account creation failed.Please try again!"); + } + $this->message = "Account created successfully."; + $this->type = 'success'; + $this->status_code = config('constant.API_SUCCESS_CODE'); + DB::commit(); + } catch (\Exception $ex) { + DB::rollback(); + $this->message = $ex->getMessage(); + $this->status_code = config('constant.API_FAILED_CODE'); + } + + appLog($this->logDataCreate($logData, $this->prepareInputLog($inputData), $this->message, $this->prepareInputLog($this->data), $this->status_code)); + + return $this->data; + } + + private function prepareInputLog($inputData) + { + if (!empty($inputData['password'])) { + $inputData['password'] = "*********"; + } + if (!empty($inputData['full_ssn'])) { + $inputData['full_ssn'] = "*********"; + } + if (!empty($inputData['security_key'])) { + $inputData['security_key'] = "*********"; + } + if (!empty($inputData['card_number'])) { + $inputData['card_number'] = creditCardNumberMasking($inputData['card_number']); + } + + return $inputData; + } + + private function logDataCreate($logData, $request, $message, $response, $code) + { + $logData['data']['request'] = $request; + $logData['data']['message'] = $message; + $logData['data']['response'] = $response; + $logData['data']['code'] = $code; + return $logData; + } + + private function paymentMail($inputData) + { + $data['email'] = $inputData['email']; + $data['email_body'] = $inputData['name']; + $data['email_subject'] = "[Your Purchase is Ready] Credit Zombies"; + $from = null; + $attachment = null; + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.payment_success_letter', $data['email']); + } + +} diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php new file mode 100644 index 0000000..4dc34b5 --- /dev/null +++ b/app/Http/Controllers/ReportController.php @@ -0,0 +1,48 @@ +getInputData($request->only(['clientName','fdate','tdate','pageLimit','payStatus'])); + $salesData=$this->getSalesReportData($inputData); + return view('report.sales_report',compact('salesData','inputData')); + } + public function recurringReport(Request $request) + { + $inputData=$this->getInputData($request->only(['clientName','fdate','tdate'])); + $recurringInfo=$this->getRecurringReportData($inputData); + return view('report.recurring_list',compact('recurringInfo','inputData')); + } + private function getRecurringReportData($inputData) + { + $recurringInfo=(new Recurring())->getTransactions($inputData); + return $recurringInfo; + } + private function getSalesReportData($inputData) + { + $salesData= (new ReportService())->getSalesReport($inputData); + return $salesData; + } + private function getInputData($formData) + { + + $items = empty($formData['pageLimit']) ? config('constant.PAGINATION_LIMIT'):$formData['pageLimit']; + $fdate= (!empty($formData['fdate']))?getStringToDate($formData['fdate']):''; + $tdate=(!empty($formData['tdate']))?getStringToDate($formData['tdate']):''; + $clientName=(!empty($formData['clientName']))?$formData['clientName']:''; + $payStatus=(isset($formData['payStatus']))?$formData['payStatus']:''; + + $inputData=['clientName'=>$clientName,'fdate'=>$fdate,'tdate'=>$tdate,'pageLimit'=>$items,'payStatus'=>$payStatus]; + + return $inputData; + } +} diff --git a/app/Http/Controllers/SecurityQuestionController.php b/app/Http/Controllers/SecurityQuestionController.php new file mode 100644 index 0000000..dc28a85 --- /dev/null +++ b/app/Http/Controllers/SecurityQuestionController.php @@ -0,0 +1,77 @@ +action=''; + $this->type='error'; + $this->message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + } + public function index() + { + $security_questions = (new SecurityQuestion())->getSecurityQuestion(); + return view('security_question.security_question',compact('security_questions')); + + } + public function createSecurityQuestion(SecurityQuestionRequest $request) + { + $this->action='INSERT_SECURITY_QUESTION'; + $this->message='can not save data.'; + $inputData=['questions'=>$request['question']]; + $returnData = (new SecurityQuestion())->insertSecurityQuestion($inputData); + if (!empty($returnData)) { + $this->message='Successfully Saved'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate( $this->action,$request->all(),$this->message,$returnData,$this->code); + return back()->with($this->type, $this->message); + } + public function getSecurityQuestion(){ + $result=[]; + $this->action='INSERT_SECURITY_QUESTION'; + $this->message='can not get data.'; + $security_questions = (new SecurityQuestion())->getSecurityQuestion(); + if(!empty($security_questions)){ + $this->message = "Security Question info fetched successfully"; + $this->code = config('constant.API_SUCCESS_CODE'); + + foreach ($security_questions as $security_question) + { + $result['id']=$security_question['id']; + $result['value']=$security_question['questions']; + } + } + ActionLogCreate::logDataCreate( $this->action,'',$this->message,$security_questions,$this->code); + return response()->json([ + 'status_code'=> $this->code, + 'message' => $this->message, + 'security_question' => $result, + ],Response::HTTP_OK); +// return $this->sendApiResponse( +// $result, +// $this->message, +// $this->code +// ); + } +} diff --git a/app/Http/Controllers/SupportController.php b/app/Http/Controllers/SupportController.php new file mode 100644 index 0000000..c10d442 --- /dev/null +++ b/app/Http/Controllers/SupportController.php @@ -0,0 +1,103 @@ +message = 'Can not save'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data = []; + $this->type = "error"; + } + + public function index(Request $request){ + + $inputData = $request->all(); + $items = empty($request->pageLimit) ? config('constant.PAGINATION_LIMIT'):$request->pageLimit; + + $searchData=[ + 'status'=> $request['status']??0, + 'search_value'=>$request['search_value'], + 'pageLimit' => $items, + 'user_type'=> auth()->user()->user_type, + 'user_id' => auth()->user()->id + ]; + + $supports = (new Support())->list($searchData); + + return view('support.list', compact('supports','searchData')); + + } + public function insertClientSupport(AddSupportRequest $request) + { + $action='ADD_SUPPORT_BY_CLIENT'; + $inputData = $request->all(); + $inputData['sender_id'] = auth()->user()->id; + $inputData['message'] = $inputData['support_text']; + $inputData['title'] = $inputData['support_title']; + $inputData['status'] = 0; + $return_data = (new Support())->addSupport($inputData); + if($return_data) + { + $this->type = "success"; + $this->message = 'Saved successfully'; + } + + return back()->with([$this->type => $this->message]); + + } + public function add(AddSupportRequest $request) + { + $file_name = null; + $inputData = $request->all(); + + $inputData['sender_id'] = auth()->user()->id; + $inputData['message'] = $inputData['support_text']; + $inputData['title'] = $inputData['support_title']; + $inputData['support_id'] = $inputData['id']; + + if (!empty($request->file('doc_file'))) { + $file = $request->file('doc_file'); + $file_data = imageFileRotate($request->file('doc_file')); + $file_name = time() . "_" . removeAnySpaces($file->getClientOriginalName(), '_'); + $file_path = 'support_ticket' . DIRECTORY_SEPARATOR . $inputData['id']; + uploadFile($file_path, $file_name, $file_data); + } + $inputData['attachment_path'] = $file_name; + $return_data = (new Support_Reply())->addSupportReply($inputData); + if($return_data) + { + $this->type = "success"; + $this->message = 'Saved successfully'; + } + + return back()->with([$this->type => $this->message]); + + } + public function view($id){ + $inputData['sender_id'] = auth()->user()->id; + $inputData['support_id'] = $id; + + (new Support_Reply())->updateSupportReply($inputData); + $supports = (new Support())->getSupportById($inputData); + + $support_data = (new Support())->getNotifcation($inputData['sender_id'],auth()->user()->user_type); + setSession('new_ticket',$support_data); + return view('support.view', compact('supports')); + + } + +} diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php new file mode 100644 index 0000000..223d510 --- /dev/null +++ b/app/Http/Controllers/TestController.php @@ -0,0 +1,444 @@ +updateLastProcessDate(); + $this->updateUserAccessEndDateDate(); +// $dtr = getStringToDateTime( '20230301094338','Y-m-d'); +// dd($dtr); +// echo date('m/d/Y H:i:s', 20230301094338); +// echo date('m/d/Y H:i:s', 20230302021811); +// $dtr = strtotime('20230301094338'); +// $dtr1 = strtotime('20230302021811'); +// $dtr = date('m/d/Y H:i:s', $dtr); +// echo "date 1 :". $dtr; +// $dtr1 = date('m/d/Y H:i:s', $dtr1); +// echo "
"." date 2 :". $dtr1; +// $recurringData = (new Recurring())->getRecurringDataForScheduler(); + +// $this->testrecurringPackage(); + +// $this->subscriptionUpdateByCronJob(); + +// $id=[51,52,53]; +// $returndata= $this->deleteUser($id); +// dd($returndata); + +// $client_key = "ddeada92-6310-4850-82c4-0b99159b9339"; +// $sc = (new SmartCredit($client_key))->security_questions(); +// dd($sc); +// $this->generateCurrentPDF(); +// $inputData['email'] = "ciydugitrj2002@vusra.com"; +// $inputData['planType'] = "PREMIUM"; +// $inputData['password'] = "Nop@ss1234"; +// $inputData['first_name'] = "Adam"; +// $inputData['last_name'] = "Miller"; +// $inputData['client_ip'] = getClientIpAddress(); +// $inputData['zip'] = "91709"; +// $inputData['street'] = "Ironwood Dr Chino Hills"; +// $inputData['state']="CA"; +// $inputData['phone'] = "(317) 328-0603"; +// $inputData['city']="California(CA)"; +// $inputData['dob'] = "04/15/1990"; +// $inputData['ssn'] = "555-55-5555"; +// $inputData['partial_ssn'] = "5555"; +// $inputData['card_number'] = "4111111111111111"; +// $inputData['cvv'] = "123"; +// $inputData['expiry'] = "01/25"; +// $inputData['amount'] = 10.00; +// $inputData['sqa_answer']="test"; +// $inputData['sqa_question']=1; +// +// $smart_credit = (new SmartCredit(config('app.CLIENT_KEY'))) +// ->setData($inputData) +// ->register() +// ->register(); + +// $inputData['sqa_answer'] = "hawk"; +// $inputData['sqa_question'] = 1; +// $inputData['company'] = 'CHTL'; +// $inputData['address1'] = 'abcd'; +// $inputData['address2'] = 'abed'; +// $inputData['city'] = 'ctg'; +// $inputData['state'] = 'ctg'; +// $inputData['zip'] = 'ctg'; +// $inputData['country'] = 'ctg'; +// $inputData['phone'] = 'ctg'; +// $inputData['fax'] = 'ctg'; +// $inputData['website'] = 'ctg'; +// $inputData['order_id'] = generateOrderId(); +// $inputData['order_description'] = 'adfsdfdf'; +// $inputData['tax'] = 1; +// $inputData['shipping'] =1; +// $inputData['ponumber']="PO1234"; + +// $inputData['ip']=getClientIpAddress(); + +// $inputData['recurring'] = 'add_subscription'; +// $inputData['plan_payments'] = 0; +// $inputData['plan_amount'] = 5.00; +// $inputData['plan_name'] = 'creditzombies'; +// $inputData['plan_id'] = '01'; +// $inputData['plan_id'] = rand(0,999); +// $inputData['day_frequency']= false; + $inputData['month_frequency']= '1-1'; + $inputData['day_of_month']= 31; + $inputData['ccnumber']= "4111111111111111"; + $inputData['ccexp']= "10/25"; + //update subscription +// $inputData['recurring'] = 'update_subscription'; +// $inputData['subscription_id'] = 7625231059; + + //get information transaction id +// $inputData['type']= 'capture'; +// $inputData['security_key']= ''; +// $inputData['transaction_id']= 7625231059; +// $inputData['amount']= 5.0; + + + $client_key = "ddeada92-6310-4850-82c4-0b99159b9339"; +// $sc = (new SmartCredit($client_key)) +// ->setData($inputData) +// ->register() +// ->register(); +// +// dd($sc); +// $response = (new ayment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->makeRecurringPayment(); +// $returnData= (new Package())-> recurringPackage(); +// dd($response,$inputData['plan_id']); + } + + private function testforimport() + { + $inputData['email'] = 'faust_89@ukr.net' ; + $inputData['password'] = 'Faust_4639672'; + $inputData['ssn'] = "5150"; + $inputData['source_type'] = 1; + +// $inputData['email'] = 'starstudjesse44@gmail.com' ; +// $inputData['password'] = 'Catalina@05'; +// $inputData['ssn'] = "0653"; +// $inputData['source_type'] = 1; + + +// $inputData['email'] = 'stevetest@consumerdirect.com' ; +// $inputData['password'] = '123456789'; +// $inputData['source_type'] = 3; + + + $isValid = (new CreditReportService())->validateUserInCreditReportProvider($inputData); + + dd($isValid); + + } + + private function testrecurringPackage() + { + $inputData['first_name'] = 'faust'; + $inputData['last_name'] = 'test'; + $inputData['email'] = 'test@soft.com.net'; + $inputData['card_number'] = '4111111111111111'; + $inputData['expiry'] = '10/25'; + + $inputData['street_no'] = 'dd'; + $inputData['street_name'] = 'ff'; + $inputData['city'] = 'sd'; + $inputData['state'] = 'sf'; + $inputData['zip_code'] ='121'; + $inputData['phone'] = '012121'; + + +// $inputData['email'] = 'starstudjesse44@gmail.com' ; +// $inputData['password'] = 'Catalina@05'; +// $inputData['ssn'] = "0653"; +// $inputData['source_type'] = 1; + + +// $inputData['email'] = 'stevetest@consumerdirect.com' ; +// $inputData['password'] = '123456789'; +// $inputData['source_type'] = 3; + + +// $recurringResponse = (new Package())->recurringPackage($inputData); +// $paymentData['subscription_id'] = '8019724977'; +// $paymentData['subscription_id'] = '8019722958'; + + +// 1. 8019544042 -2 +//2. 8019590113 -2 +//3. 8019590105 -1 +//3. 8017176034 -1 +//4. 8019727001 -0 1 +//5. 8179630905 -0 0 + +// dd($paymentData['end_date']); + $paymentData['subscription_id'] = '8019544042'; +// $paymentData['subscription_id'] = '8019590113'; +// $paymentData['subscription_id'] = '8019590105'; +// $paymentData['subscription_id'] = '8017176034'; +// $paymentData['subscription_id'] = '8019727001'; +// $paymentData['subscription_id'] = '8179630905'; +// $paymentData['subscription_id'] = '8019532537'; +// $paymentData['subscription_id'] = '8019727001'; +// $paymentData['subscription_id'] = '8019588105'; +// $paymentData['subscription_id'] = '8019586600'; +// $paymentData['subscription_id'] = '8019552079'; + $paymentData['subscription_id'] = '8025917930'; + +// $last_process_date = '2023-01-12 19:57:53'; + $last_process_date = '2023-01-02 00:34:31'; +// $last_process_date = '2023-01-04 10:32:23'; +// $last_process_date = '2023-01-04 10:32:23'; + $paymentData['start_date'] = getDateAfterSpicificDay($last_process_date,1,'YmdHis'); + $paymentData['end_date'] = getCurrentDateTime('YmdHis'); +// $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->deleteSubscription(); + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->getSubscriptionInfoBySubscriptionId(); +dd($response); + if (!empty($response['data']) && array_key_exists(0,$response['data'])) { + + $search_data =[]; + $current_date = '2023-03-02'; + + foreach ($response['data'] as $item) { + + if($item['condition'] == 'complete' && array_key_exists(0,$item['action'])) + { + $dtr = getStringToDateTime($item['action'][0]['date'], 'Y-m-d'); + if($dtr >= $current_date) + { + $search_data = $item; + + break; + } + + } + + } + + dd($search_data); + } + + dd($response['data'],array_key_exists(0,$response['data'])); + dd(is_array($response['data'])); + $current_date = '2023-03-02'; + + $filtered_events = array_filter($response['data'], function($var) use ($current_date) { + $dtr = date('Y-m-d', strtotime($var['date'])); + return $dtr >= $current_date ; + }); + dd($filtered_events); +// if($response['status']){ +// (new Recurring())->deleteRecurringBySubscription_id($paymentData); +// } + + dd($response); + + } + + public function subscriptionUpdateByCronJob() + { + + $recurringData = (new Recurring())->getRecurringDataForScheduler(); + + if(!empty($recurringData)) { + + foreach ($recurringData as $recurring) { + + $logData['action_by_subscription_id_start'] = "CLIENT_SUBSCRIPTION_UPDATE_START"; + $paymentData = []; +// $recurring['last_process_date'] +// dd(getStringToDateTime('20230130082542')); + $paymentData['start_date'] = getDateAfterSpicificDay($recurring['last_process_date'],1,'YmdHis'); +// $paymentData['start_date'] = '20230201014416'; + $paymentData['end_date'] = getCurrentDateTime('YmdHis'); +// $paymentData['end_date'] = '20230201014416'; + $paymentData['subscription_id'] = $recurring['subscription_id']; +// dd($paymentData); + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->getSubscriptionInfoBySubscriptionId(); + + dd($response['data']); + if (!empty($response['data']) ) { + + $search_data_by_date = $response['data']; + + if(!array_key_exists(0,$search_data_by_date)) + { + $search_data_by_date = []; + $search_data_by_date[0] = $response['data']; + } + + foreach ($search_data_by_date as $item) { + + if(!empty($item)) { + + $logData_subscription['action_by_subscription_start'] = "CLIENT_SUBSCRIPTION_START"; + + $last_payment_date = getStringToDateTime($item['action'][0]['date']); + // user update + $user_input['last_payment_date'] = $last_payment_date; + $user_input['subscription_status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $user_input['status'] = config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'); + $return_data = (new User())->userupdate($user_input, $recurring['user_id']); + + // recurring update +// $recurring_input['last_process_date'] = $last_payment_date; +// $recurring->update($recurring_input); + + // sales insert + + $salesData['order_id'] = $item['order_id']; + $salesData['cc_number'] = $item['cc_number']; + $salesData['status'] = "1"; + $salesData['auth_code'] = ''; + $salesData['transaction_id'] = $item['transaction_id']; + $salesData['ip'] = getClientIpAddress(); + $salesData['user_id'] = $recurring['user_id']; + $salesData['recurring_id'] = $recurring['id']; + + $saleData = (new Sale())->getDataByTransactionId($item['transaction_id']); + + if(empty($saleData)) { + (new Sale())->createSale($salesData); + } + + $logData_subscription['action_by_subscription_end'] = "CLIENT_SUBSCRIPTION_END"; + appLog($logData_subscription); + } + + } + + } + $logData['status_code'] = $response['status_code']; + $logData['message'] = $response['message']; + $logData['inputData'] = $recurring; + $logData['action_by_subscription_id_end'] = "CLIENT_SUBSCRIPTION_UPDATE_END"; + appLog($logData); + } + } + } + + public function updateLastProcessDate() + { + $recurring_users = (new Recurring())->getRecurrings(); + if(!empty($recurring_users)) { + foreach($recurring_users as $recurring_user) { + $sale_data = (new Sale())->getLatestSalesByUserId($recurring_user['user_id']); + if(!empty($sale_data)) { + $inputData['last_process_date'] = $sale_data['created_at']; + $recurring_user->update($inputData); + } + } + } + } + public function updateUserAccessEndDateDate() + { + $users = (new User())->getAllClients(); + if(!empty($users)) { + foreach($users as $user) { + $user_access_end_date = null; + if($user->last_payment_date != null) + { + $user_access_end_date = getDateAfterSpicificDay($user->last_payment_date,config('constant.PAYMENT_INTERVAL_DAY')); + } + $inputData['user_access_end_date'] = $user_access_end_date; + $user->update($inputData); + } + } + } + + private function encryptionTest($request){ + try { + $encrypt = new Encryption(); + if ($request->type == "encrypt") { + $response = $encrypt->encryptByPublicKey($request->data); + } else { + $response = $encrypt->decryptByPrivateKey($request->data); + } + }catch (\Exception $ex){ + $response = $ex->getMessage(); + } + + dd($response); + } + + public function reverse(Request $request){ + + try { + $encrypt = new Encryption(); + if ($request->type == "encrypt") { + $response = $encrypt->encryptByPrivateKey($request->data); + } else { + $response = $encrypt->decryptByPublicKey($request->data); + } + }catch (\Exception $ex){ + $response = $ex->getMessage(); + } + + dd($response); + } + + public function generateKeys(){ + + (new Encryption())->generateKeys(); + } + private function generateCurrentPDF() { + + $html=' + + + + + +'; + + $pdfWriter = new PdfWriter(); + $file_path= $this->getfolder(); + $file_name='test.pdf'; +//echo $html;exit; +// $pdfWriter->write($html, $file_path. '/' . $file_name); + $pdfWriter->mpdfWrite($html, $file_path. '/' . $file_name,$file_name); + //$pdfWriter->snappyImage($html, $file_path); + } + + private function getfolder() + { + $destinationPath = storage_path('app/public/resources/epicvelocity/letters'); // for localhost + + if (!is_dir($destinationPath)) { + mkdir($destinationPath, 0777, true); + } + + $folder_name = $destinationPath . '/' . 123 . "_" . time() . '-' . mt_rand(00000, 999999); + + try { + if (!is_dir($folder_name)) { + mkdir($folder_name, 0777, true); + } + } catch (Exception $e) { + Log::error($e); + + } + + return $folder_name; + } + + private function deleteUser($id) + { + return (new User())->deleteUser($id); + } +} diff --git a/app/Http/Controllers/TrainingVideoController.php b/app/Http/Controllers/TrainingVideoController.php new file mode 100644 index 0000000..08c511a --- /dev/null +++ b/app/Http/Controllers/TrainingVideoController.php @@ -0,0 +1,92 @@ +action=''; + $this->type='error'; + $this->message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data=[]; + } + public function index(Request $request) + { + $videos=(new VideoSetting())->getAllVideo(); + return view('training_video.list',compact('videos')); + } + public function list(Request $request) + { + $videos=(new VideoSetting())->getAllVideo(); + return view('training_video.video_list',compact('videos')); + } + public function createTrainingVideo(LinkRequest $request) + { + + $this->action='INSERT_TRAINING_VIDEO'; + $this->message='can not save data.'; + $inputData = $request->only(['section_name','link','status']); + $returnData = (new VideoSetting())->insertVideo($inputData); + + if (!empty($returnData)) { + $this->message='Successfully Saved'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate( $this->action,$request->all(),$this->message,$returnData,$this->code); + return back()->with($this->type, $this->message); + } + public function editTrainingVideo(Request $request) + { + $this->action='EDIT_TRAINING_VIDEO'; + $this->message='can not update data.'; + $validated = $request->validate([ + 'edit_section_id' => 'required|gt:0', + 'edit_link' => 'required|regex:'.config('constant.VIMEO_VIDEO_LINK_VALIDATION'), + 'edit_status' => 'required|numeric', + ]); + $inputData = ['section_id'=>$request["edit_section_id"],'link'=>$request["edit_link"],'status'=>$request["edit_status"]]; + $returnData = (new VideoSetting())->updateVideo($inputData); + if (!empty($returnData)) { + $this->message='Update Successfully'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate( $this->action,$request->all(),$this->message,$returnData,$this->code); + return back()->with($this->type, $this->message); + } + public function deleteTrainingVideo(Request $request) + { + $this->action='DELETE_TRAINING_VIDEO'; + $this->message='can not delete data.'; + $validated = $request->validate([ + 'delete_section_id' => 'required|gt:0', + ]); + $inputData=['section_id'=>$request['delete_section_id']]; + if($inputData['section_id']>0) { + $returnData = (new VideoSetting())->deleteVideos($inputData); + if (!empty($returnData)) { + $this->message='Successfully Deleted'; + $this->code=config('constant.API_SUCCESS_CODE'); + $this->type='success'; + } + ActionLogCreate::logDataCreate($this->action,$request->all(),$this->message,$returnData,$this->code); + } + return back()->with($this->type, $this->message); + + } + +} diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..4d309f0 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,376 @@ +message = 'Fail'; + $this->code = config('constant.API_FAILED_CODE'); + $this->data = []; + $this->type = "error"; + } + public function showManageClient(){ + $auth_user = auth()->user(); + $auth_user_id = $auth_user->id; + $uploadMediaObj = app(\App\Models\Uploadmedia::class); + $upload_medias = $uploadMediaObj->getUploadMediaByUserId($auth_user_id); + $question_answer = (new UserIdentityQuestionAnswer())->getUserIdentityQuestionAnswer($auth_user_id); + $this->setCardNumber(); + + return view('auth.manage_client',compact('upload_medias','question_answer')); + } + public function manageClient(ManageClientRequest $request){ + $action='CLIENT_INFORMATION_UPDATE'; + $auth_user_id = auth()->id(); + $userObj = app(\App\Models\User::class); + $inputData['creditreport'] = array_filter($request->creditreport); + $inputData['html_content'] = $request->html_content; + + try { + if ($userObj->userupdate($inputData['creditreport'], $auth_user_id)) { + + $creditReportData['user_id'] = $auth_user_id; + $creditReportData['password'] = customEncrypt($inputData['creditreport']['password']); + $creditReportData['report_type'] = $inputData['creditreport']['credit_report_company_type']; + + (new Creditreport())->updateCreditReportByUserId($creditReportData); + +// (new UploadMedia($request))->uploadmedia(); + $this->data = ['client_id'=> $auth_user_id]; + $this->code = config('constant.API_SUCCESS_CODE'); + $this->message = "Information is updated successfully."; + $this->type = "success"; + if(getSession('is_first_login') == 1) { + Auth::user()->update(['is_first_login' => 0]); + return redirect(route('get.letter')); + } + } + }catch (\Exception $ex){ + + $this->code = config('constant.API_FAILED_CODE'); + $this->message = "File upload failed."; + $this->data = $ex->getMessage(); + $this->type = "error"; + } + ActionLogCreate::logDataCreate($action,getModelDataMasking($inputData['creditreport']),$this->message,$this->data,$this->code); + return back()->with([$this->type => $this->message]); + + } + public function uploadCreditReport(Request $request){ + $action='UPLOAD_CREDIT_REPORT'; + $this->message = 'Report is not uploaded. Please try again!'; + $this->type = 'error'; + try { + DB::beginTransaction(); + + $auth_user_id = auth()->id(); + $creditReportObj = app(\App\Models\Creditreport::class); + $inputData = $request->all(); + + $credit_reportData['user_id'] = $auth_user_id; + $credit_reportData['html_content'] = $inputData['html_content']; + if (!$creditReportObj->addOrUpdateCreditReport($credit_reportData)) { + throw new \Exception("Report upload problem."); + } + + Auth::user()->update([ + 'is_first_login' => 0 + ]); + DB::commit(); + $this->data = $creditReportObj; + $this->message = 'Report uploaded successfully'; + $this->code = config('constant.API_SUCCESS_CODE'); + $this->type = 'success'; + }catch (\Exception $ex){ + $this->data= $ex->getMessage(); + } + ActionLogCreate::logDataCreate($action,$this->prepareLog($request->all()),$this->message,$this->prepareLog($this->data),$this->code); + return back()->with([$this->type => $this->message]); + } + public function getAllClient(Request $request) + { + $items = empty($request->pageLimit) ? config('constant.PAGINATION_LIMIT'):$request->pageLimit; + + $searchData=[ + 'account_status'=>$request['account_status'], + 'search_value'=>$request['search_value'], + 'payment_status'=>$request['payment_status'] ?? "", + 'client_type' => $request['client_type'] ?? "", + 'pageLimit'=>$items + ]; + + $users =(new ClientService())->getUsers($searchData) ; + return view('client.list',compact('users','searchData')); + } + public function getClientInfo($id) + { + $user = (new ClientService())->getUserInfoById($id); + if (!empty($user['data'])) { + $question_answer= (new UserIdentityQuestionAnswer())->getUserIdentityQuestionAnswer($id); + $this->message='Fetched client info successfully'; + $this->code=config('constant.API_SUCCESS_CODE'); + return view('client.view', compact('user','question_answer')); + } + return redirect()->route('get.clients')->with('error','No user data found.'); + } + public function updateClientInfo(UserEditRequest $request) + { + $action='EDIT_USER_INFO'; + + $this->message='Do not update user data.'; + $inputData = $request->all(); + + $inputData['credit_report_company_type'] = $inputData['source_type']; + + if(!empty($inputData['user_access_date'])) { + + $inputData['user_access_date'] = getStringToDateTime($inputData['user_access_date']); + $inputData['last_payment_date'] = getCurrentDateTime(); + $inputData['subscription_status'] = 1; + } + + if(!empty($inputData['last_import_date'])) { + $inputData['last_import_date'] = getStringToDateTime($inputData['last_import_date']); + } + + $user = (new ClientService())->updateUserInfoById($inputData); + + if(!empty($user)){ + + $creditReportData['user_id'] = $inputData['id']; + $creditReportData['email'] = $inputData['email']; + $creditReportData['password'] = customEncrypt($inputData['password']); + $creditReportData['report_type'] = $inputData['source_type']; + + (new Creditreport())->updateCreditReportByUserId($creditReportData); + + $this->message='Successfully update user data.'; + $this->code = config('constant.API_SUCCESS_CODE'); + $this->type ='success'; + } + $requestData = getModelDataMasking($request->all()); + ActionLogCreate::logDataCreate($action,$requestData,$this->message,'',$this->code); + return back()->with($this->type,$this->message); + + } + public function deleteClient($id) + { + $action='DELETE_CLIENT'; + $type='error'; + if($id>0) { + $returnData= (new User())->deleteUser($id); + if($returnData) { + $this->message = 'Client has deleted successfully'; + $this->code = config('constant.API_SUCCESS_CODE'); + $type = 'success'; + } + ActionLogCreate::logDataCreate($action,$id,$this->message,$id,$this->code); + } + return back()->with([$type=>$this->message]); + } + public function changeAdminInfo(PasswordChangeRequest $request) + { + $action='PASSWORD_CHANGE'; + $inputData=$request->all(); + $password = customEncrypt($inputData['current_password']); + Auth::user()->update([ + 'email' => $inputData['email'], + 'password' => $password + ]); + return back()->with(['success'=>'Admin information has been changed Successfully.']); + } + public function getEmployeeInfo($id) + { + + $employee = (new User())->getUserByUserId($id); + + $employee_permission = (new Permission())->getPermittedSubmoduleIdListByUserId($id); + + $moduleSubmoduleAssoc = (new Module())->getModuleSubmoduleAssoc(); + + return view('employee.employee_info_edit',compact('employee','employee_permission','moduleSubmoduleAssoc')); + + } + public function updateEmployeeInfo(EditEmployeeInfoRequest $request) + { + $action = 'EMPLOYEE_UPDATE'; + + $this->message = 'Employee permission can not be updated.'; + + $inputData = $request->all(); + + $result = (new User())->updateEmployeeInfo($inputData); + + if($result) { + + $this->message = 'Employee permission have updated successfully.'; + $this->code = config('constant.API_SUCCESS_CODE'); + $this->data = ['true']; + $this->type = "success"; + } + $requestData = $this->prepareLog($request->all()); + ActionLogCreate::logDataCreate($action,$requestData,$this->message,$result,$this->code); + return back()->with([$this->type=>$this->message]); + } + public function employeeList(Request $request) + { + $items = empty($request->pageLimit) ? config('constant.PAGINATION_LIMIT'):$request->pageLimit; + + $searchData=[ + 'search_value'=>$request['search_value'], + 'pageLimit'=>$items + ]; + $employees = (new User())->getEmployees($searchData) ; + + return view('employee.employee_list',compact('employees','searchData')); + } + public function createEmployee(Request $request) + { + $moduleSubmoduleAssoc = (new Module())->getModuleSubmoduleAssoc(); + + return view('employee.employee_info',compact('moduleSubmoduleAssoc')); + } + + public function uploadClientImage(Request $request){ + $inputData = $request->only(['doc_type','uploadmedia']); + $action = "UPLOAD_CLIENT_DOC"; + try { + (new UploadMedia($request))->uploadmedia(); + $this->code = config('constant.API_SUCCESS_CODE'); + $this->message = "File is uploaded successfully."; + $this->type = "success"; + + if($inputData['doc_type'] == 9) { + getUserImagesAndDoc(auth()->user()->id); + } + }catch (\Exception $ex){ + + $this->code = config('constant.API_FAILED_CODE'); + $this->message = "File upload failed."; + $this->data = $ex->getMessage(); + $this->type = "error"; + } + ActionLogCreate::logDataCreate($action,$inputData,$this->message,$this->data,$this->code); + return back()->with([$this->type => $this->message]); + } + + public function updateClientInfoById(Request $request) + { + $inputData = $request->all(); + $mailData = []; + $saveData = []; + $action = 'CLIENT_ACTIVATION'; + + $time_interval = (-1) * config('constant.PACKAGE_INTERVAL_DAY'); + + $user = (new User())->getUserByUserId($inputData['client_id']); + if($inputData['type'] == 2) + { + $action = 'RESET_IMPORT_BUTTON'; + $saveData['is_import'] = 1; + if($user["is_first_login"] == 0 && $user['last_import_date'] == null){ + $saveData['last_import_date'] = getDateAfterSpicificDay(getCurrentDateTime(),$time_interval); + } + } + if($inputData['type'] == 1){ + $action = 'CLIENT_ACTIVATION'; + $saveData['subscription_status'] = 1; + $saveData['status'] = 1; + $saveData['wave'] = 1; + } + + if (!empty($user)) { + + (new User())->userupdate($saveData,$inputData['client_id']); + $mailData['email'] = $user['email']; + $mailData['name'] = $user['first_name'] . ' ' . $user['last_name']; + $mailData['password'] = customDecrypt($user['password']); + $this->message='Import Credit Report button has been reset successfully.'; + $this->code=config('constant.API_SUCCESS_CODE'); + $user['data'] = $user; + $this->type = 'success'; + } + + ActionLogCreate::logDataCreate( $action,getModelDataMasking($mailData),$this->message,$this->type,$this->code); + return redirect()->route('get.client.info',$inputData['client_id'])->with( $this->type,$this->message); + } + private function setCardNumber(){ + $key = 'card_no'; + + unsetCache($key); + + if(empty(getCache($key))){ + + $user_last_payment = (new Sale())->getLatestSalesByUserId(auth()->id()); + + if(!empty($user_last_payment)) { + + setCache($key, $user_last_payment['cc_number']); + + } + } + } + private function prepareLog($inputData) + { + if(!empty($inputData['password'])) + { + $inputData['password']="*********"; + } + if(!empty($inputData['full_ssn'])) + { + $inputData['full_ssn']="*********"; + } + if(!empty($inputData['ssn'])) + { + $inputData['ssn']="****"; + } + if(!empty($inputData['security_key'])) + { + $inputData['security_key']="*********"; + } + if(!empty($inputData['card_number'])) + { + $inputData['card_number']="*********"; + } + if(!empty($inputData['html_content'])) + { + $inputData['html_content']="*********************************"; + } + + return $inputData; + } + + +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..dfadb05 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,72 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'requestValidate'=>\App\Http\Middleware\RequestValidate::class, + 'permission'=> \App\Http\Middleware\Permission::class, + 'permissionroute'=> \App\Http\Middleware\RoutePermission::class, + 'checkSubscription'=> \App\Http\Middleware\CheckSubcription::class + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/CheckSubcription.php b/app/Http/Middleware/CheckSubcription.php new file mode 100644 index 0000000..9f96e09 --- /dev/null +++ b/app/Http/Middleware/CheckSubcription.php @@ -0,0 +1,26 @@ +withErrors(['message'=>'You do not have permission on the page']); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..033136a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +withErrors(["message"=>"You don't have permission on the page."]); + } + return $next($request); + } + + return back()->withErrors(["message"=>"You don't have permission on the page."]); + } +} diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..e4956d0 --- /dev/null +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/RequestValidate.php b/app/Http/Middleware/RequestValidate.php new file mode 100644 index 0000000..fd8aa37 --- /dev/null +++ b/app/Http/Middleware/RequestValidate.php @@ -0,0 +1,42 @@ +header('security-key'))) { + /*$json = customDecrypt($request->header('security-key')); + $json_decoded = json_decode($json,true); + + if(isset($json_decoded['user_id']) && $json_decoded['user_id'] > 0){ + // $request->headers['user_id'] = $json_decoded['user_id']; + setUserId($json_decoded['user_id']); + return $next($request); + }*/ + //dd($request->header('security-key')); + setSecurityKey($request->header('security-key')); + return $next($request); + } + + return $this->sendApiResponse( + [], + "Unauthorized request", + 400, + 419 + ); + + } +} diff --git a/app/Http/Middleware/RoutePermission.php b/app/Http/Middleware/RoutePermission.php new file mode 100644 index 0000000..149020d --- /dev/null +++ b/app/Http/Middleware/RoutePermission.php @@ -0,0 +1,23 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..14befce --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ +"required|integer", + ]; + } +} diff --git a/app/Http/Requests/AddProfileRequest.php b/app/Http/Requests/AddProfileRequest.php new file mode 100644 index 0000000..ce1f638 --- /dev/null +++ b/app/Http/Requests/AddProfileRequest.php @@ -0,0 +1,26 @@ +'required|regex:'.$this->script_validation_rule, + 'street_name'=>'required|regex:'.$this->script_validation_rule, + 'city'=>'required|regex:'.$this->script_validation_rule, + 'state'=>'required|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|regex:'.$this->script_validation_rule, + 'ssn'=>'required|integer', + 'phone'=>'required|regex:'.$this->script_validation_rule, + ]; + } +} diff --git a/app/Http/Requests/AddSupportRequest.php b/app/Http/Requests/AddSupportRequest.php new file mode 100644 index 0000000..5299108 --- /dev/null +++ b/app/Http/Requests/AddSupportRequest.php @@ -0,0 +1,21 @@ +'required', + 'support_title'=>'required' + ]; + } +} diff --git a/app/Http/Requests/ApiBaseRequest.php b/app/Http/Requests/ApiBaseRequest.php new file mode 100644 index 0000000..9649f86 --- /dev/null +++ b/app/Http/Requests/ApiBaseRequest.php @@ -0,0 +1,48 @@ +all(); + $rules = array_keys($this->rules()); + $final_data = []; + if (!empty($rules)) { + foreach ($rules as $rule) { + if (isset($request[$rule])) { + $final_data[$rule] = $request[$rule]; + } + } + } + + $this->replace($final_data); + } + + protected function failedValidation(Validator $validator) + { + $errors = (new ValidationException($validator))->errors(); + throw new HttpResponseException($this->sendApiResponse($errors,"validation error",config('constant.API_VALIDATION_FAILED'))); + } +} diff --git a/app/Http/Requests/BaseRequest.php b/app/Http/Requests/BaseRequest.php new file mode 100644 index 0000000..620bb5f --- /dev/null +++ b/app/Http/Requests/BaseRequest.php @@ -0,0 +1,37 @@ +]+$/'; + protected string $RULE_EXPIRY_REGEX = "/^(0[1-9]|1[0-2]|[1-9])\/(1[4-9]|[0-9][0-9]|20[1-9][1-9])$/"; + + protected string $password_validation_rule = '/^(?=[-a-zA-Z0-9@_*.]*$).*/'; + + protected string $street_validation_rule = '/^(?=[-0-9A-Za-z.#\s]*$).*/'; + + public function authorize() + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // + ]; + } +} diff --git a/app/Http/Requests/ClientRegistration.php b/app/Http/Requests/ClientRegistration.php new file mode 100644 index 0000000..9d72131 --- /dev/null +++ b/app/Http/Requests/ClientRegistration.php @@ -0,0 +1,50 @@ +'required|string', + 'last_name'=>'required|string', + 'email'=>'required|email|unique:users,email', + 'password'=>['required','min:8', new PasswordValidationRule()], + + 'street_no'=>'required|string|max:5|regex:'.$this->street_validation_rule, + 'street_name'=>'required|max:50|regex:'.$this->street_validation_rule, + 'city'=>'required|string|regex:'.$this->script_validation_rule, + 'state'=>'required|string|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|string|min:5|max:5|regex:'.$this->script_validation_rule, + 'phone'=>'required|string|regex:'.$this->script_validation_rule, + 'user_access_date'=> 'date_format:m/d/Y|after:today' + ]; + + $inputData = request()->all(); + + if(isset($inputData['make_payment']) && $inputData['make_payment']) { + $userData['payment_date'] = 'required|date_format:m/d/Y|before:tomorrow'; + $userData['source_type'] = 'required'; + $userData['birth_date'] = 'required|date_format:m/d/Y|before:18 years ago|after:-150 years'; + $userData['ssn'] = 'required|min:4|max:4'; + $userData['card_number'] = 'required'; + $userData['expiry'] = 'required'; + $userData['make_payment'] = 'required'; + $userData['user_access_date'] = ''; + } + + return $userData; + + } +} diff --git a/app/Http/Requests/CreateAccountRequest.php b/app/Http/Requests/CreateAccountRequest.php new file mode 100644 index 0000000..80ae8e1 --- /dev/null +++ b/app/Http/Requests/CreateAccountRequest.php @@ -0,0 +1,28 @@ +'required|regex:'.$this->script_validation_rule, + 'last_name'=>'required|regex:'.$this->script_validation_rule, + 'email'=>['required', 'email',Rule::unique('users', 'email')->withoutTrashed()], + 'password'=>'required|min:8|regex:'.$this->password_validation_rule, + 'captcha'=>['required'] + ]; + + } +} diff --git a/app/Http/Requests/CreateCustomerRequest.php b/app/Http/Requests/CreateCustomerRequest.php new file mode 100644 index 0000000..503e464 --- /dev/null +++ b/app/Http/Requests/CreateCustomerRequest.php @@ -0,0 +1,59 @@ +"required|integer", + "first_name"=>"required|string", + "last_name"=>"required|string", + 'email' => 'required|email|unique:users,email', + 'password'=>'required|min:8|regex:'.$this->password_validation_rule, + 'birth_date'=>'required|date_format:m/d/Y|before:18 years ago|after:-150 years', + 'full_ssn'=>'required|min:4|max:4', +// 'full_ssn'=>'required|min:9|max:11', + 'street_no'=>'required|string|max:5|regex:'.$this->street_validation_rule, + 'street_name'=>'required|max:50|regex:'.$this->street_validation_rule, + 'city'=>'required|string|regex:'.$this->script_validation_rule, + 'state'=>'required|string|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|string|min:5|max:5|regex:'.$this->script_validation_rule, + 'ssn'=>'required', + 'amount'=>'required', + 'phone'=>'required|string|regex:'.$this->script_validation_rule, + 'is_free'=>'required', + + ]; + $inputData = request()->all(); + + if(isset($inputData['is_free']) && $inputData['is_free'] != 1){ + $userData['card_number'] ='required'; + $userData['cvv_no']='required'; + $userData['expiry']='required'; + + } + return $userData; + } + + /** + * @return array|string[] + */ + public function messages(): array + { + return [ + 'street_name.max' => 'The street name may not be greater than 50 characters.', + 'street_name.regex' => 'The street name may not be special characters.', + ]; + } +} diff --git a/app/Http/Requests/CreditReportProviderRequest.php b/app/Http/Requests/CreditReportProviderRequest.php new file mode 100644 index 0000000..08ccde2 --- /dev/null +++ b/app/Http/Requests/CreditReportProviderRequest.php @@ -0,0 +1,23 @@ + 'required|regex:'.config('constant.REPORT_PROVIDER_LINK_VALIDATION'), + + 'source_type' => 'required|unique:creditreport_providers,company_type' + ]; + } +} diff --git a/app/Http/Requests/CreditReportRequest.php b/app/Http/Requests/CreditReportRequest.php new file mode 100644 index 0000000..62755b8 --- /dev/null +++ b/app/Http/Requests/CreditReportRequest.php @@ -0,0 +1,20 @@ +"required|integer", + "first_name"=>"required|string", + "last_name"=>"required|string", + 'email'=>['required', 'email','unique:users,email'], + 'password'=>'required|min:8|regex:'.$this->password_validation_rule, + 'birth_date'=>'required|date_format:m/d/Y|before:18 years ago|after:-150 years', + 'full_ssn'=>'required|min:4|max:4', +// 'full_ssn'=>'required|min:9|max:11', + 'street_no'=>'required|string|max:5|regex:'.$this->street_validation_rule, + 'street_name'=>'required|max:50|regex:'.$this->street_validation_rule, + 'city'=>'required|string|regex:'.$this->script_validation_rule, + 'state'=>'required|string|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|string|regex:'.$this->script_validation_rule, + 'ssn'=>'required', + 'amount'=>'required', + 'phone'=>'required|string|regex:'.$this->script_validation_rule, + ]; + } + + public function messages(): array + { + return [ + 'street_name.max' => 'The street name may not be greater than 50 characters.', + 'street_name.regex' => 'The street name may not be special characters.', + ]; + } +} diff --git a/app/Http/Requests/EditEmployeeInfoRequest.php b/app/Http/Requests/EditEmployeeInfoRequest.php new file mode 100644 index 0000000..926c5d7 --- /dev/null +++ b/app/Http/Requests/EditEmployeeInfoRequest.php @@ -0,0 +1,27 @@ + "required", + "first_name" => "required|string", + "last_name" => "required|string", + 'email' => "required|email", + 'password' => 'required', + 'userRole' => 'required' + ]; + } +} diff --git a/app/Http/Requests/EmployeeRegistrationRequest.php b/app/Http/Requests/EmployeeRegistrationRequest.php new file mode 100644 index 0000000..46a85ce --- /dev/null +++ b/app/Http/Requests/EmployeeRegistrationRequest.php @@ -0,0 +1,26 @@ + "required|string", + "last_name" => "required|string", + 'email' => ['required', 'email',Rule::unique('users', 'email')->withoutTrashed()], + 'password' => 'required', + 'userRole' => 'required' + ]; + } +} diff --git a/app/Http/Requests/LinkRequest.php b/app/Http/Requests/LinkRequest.php new file mode 100644 index 0000000..ce01c62 --- /dev/null +++ b/app/Http/Requests/LinkRequest.php @@ -0,0 +1,22 @@ + 'required', + 'link' => 'required|regex:'.config('constant.VIMEO_VIDEO_LINK_VALIDATION'), + 'status' => 'required|numeric', + ]; + } +} diff --git a/app/Http/Requests/LoginRequest.php b/app/Http/Requests/LoginRequest.php new file mode 100644 index 0000000..1342011 --- /dev/null +++ b/app/Http/Requests/LoginRequest.php @@ -0,0 +1,21 @@ +'required|email', + 'password'=>'required' + ]; + } +} diff --git a/app/Http/Requests/MakePaymentRequest.php b/app/Http/Requests/MakePaymentRequest.php new file mode 100644 index 0000000..cbf311d --- /dev/null +++ b/app/Http/Requests/MakePaymentRequest.php @@ -0,0 +1,46 @@ +"required|integer", + "first_name"=>"required|string", + "last_name"=>"required|string", + 'email'=>['required', 'email'], + 'password'=>'required|min:8|regex:'.$this->password_validation_rule, + 'birth_date'=>'required|date_format:m/d/Y|before:18 years ago|after:-150 years', + 'full_ssn'=>'required', + 'street_no'=>'required|string|regex:'.$this->script_validation_rule, + 'street_name'=>'required|regex:'.$this->script_validation_rule, + 'city'=>'required|string|regex:'.$this->script_validation_rule, + 'state'=>'required|string|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|string|regex:'.$this->script_validation_rule, + 'ssn'=>'required', + 'phone'=>'required|string|regex:'.$this->script_validation_rule, + 'amount'=>'required|numeric', + 'card_number'=>'required|regex:/^\d{15,20}$/', + 'expiry'=>['required','string','regex:'.$this->RULE_EXPIRY_REGEX] + ]; + } + + + public function messages() + { + return [ + 'card_number.regex'=>'Value is invalid' + ]; + } +} diff --git a/app/Http/Requests/ManageClientRequest.php b/app/Http/Requests/ManageClientRequest.php new file mode 100644 index 0000000..d9d514f --- /dev/null +++ b/app/Http/Requests/ManageClientRequest.php @@ -0,0 +1,53 @@ + 'required', + 'creditreport.last_name' => 'required', + 'creditreport.birth_date' => 'required', + 'creditreport.street_no' => 'required|regex:'.$this->script_validation_rule, + 'creditreport.street_name' => 'required|regex:'.$this->script_validation_rule, + 'creditreport.city' => 'required|regex:'.$this->script_validation_rule, + 'creditreport.state' => 'required|regex:'.$this->script_validation_rule, + 'creditreport.zip_code' => 'required|regex:'.$this->script_validation_rule, + 'creditreport.phone' => 'required|regex:'.$this->script_validation_rule, + 'uploadmedia.identification' => 'file|max:'.config('constant.MAX_FILE_SIZE'), + 'uploadmedia.ssn' => 'file|max:'.config('constant.MAX_FILE_SIZE'), + 'uploadmedia.state_photo_id' => 'file|max:'.config('constant.MAX_FILE_SIZE'), + 'uploadmedia.mail_doc' => 'file|max:'.config('constant.MAX_FILE_SIZE'), + 'creditreport.credit_report_company_type' => 'required', + 'creditreport.ssn' => ['required','min:4','max:4'], + 'creditreport.password' => ['required','min:8',new PasswordValidationRule()] + ]; + } + + public function messages() + { + $file_size_message = "Maximum file size to upload is ".sizeFilter(config('constant.MAX_FILE_SIZE')). " . If you are uploading a file, try to make it under ".sizeFilter(config('constant.MAX_FILE_SIZE'))."."; + return [ + 'uploadmedia.identification.max' => 'Identification: '.$file_size_message, + 'uploadmedia.ssn.max' => 'SSN: '.$file_size_message, + 'uploadmedia.state_photo_id.max' => 'State Photo: '.$file_size_message, + 'uploadmedia.mail_doc.max' => 'Other Doc: '.$file_size_message, + 'creditreport.password.min' => 'Password mast be 8 characters.', + 'creditreport.password' => 'Password is required.', + 'creditreport.ssn.min' => 'Please enter last 4 digit of your ssn.', + 'creditreport.ssn.max' => 'Please enter last 4 digit of your ssn.', + ]; + } +} diff --git a/app/Http/Requests/PasswordChangeRequest.php b/app/Http/Requests/PasswordChangeRequest.php new file mode 100644 index 0000000..3666ea1 --- /dev/null +++ b/app/Http/Requests/PasswordChangeRequest.php @@ -0,0 +1,22 @@ + 'required|email', +// 'change_password'=>'required', + 'current_password'=>'required', + ]; + } +} diff --git a/app/Http/Requests/PaymentSettingRequest.php b/app/Http/Requests/PaymentSettingRequest.php new file mode 100644 index 0000000..99b7d70 --- /dev/null +++ b/app/Http/Requests/PaymentSettingRequest.php @@ -0,0 +1,22 @@ +'required', + 'expiry'=>'required', + 'cvv'=>'required' + ]; + } +} diff --git a/app/Http/Requests/PermissionCreateRequest.php b/app/Http/Requests/PermissionCreateRequest.php new file mode 100644 index 0000000..3014e51 --- /dev/null +++ b/app/Http/Requests/PermissionCreateRequest.php @@ -0,0 +1,29 @@ + "required", + "userRole" => "required", + ]; + } + + public function messages() + { + return [ + 'employee_id' => 'Select an employee.', + 'userRole' => 'Select permission.' + ]; + } +} diff --git a/app/Http/Requests/SecurityQuestionRequest.php b/app/Http/Requests/SecurityQuestionRequest.php new file mode 100644 index 0000000..55db2b2 --- /dev/null +++ b/app/Http/Requests/SecurityQuestionRequest.php @@ -0,0 +1,20 @@ + 'required' + ]; + } +} diff --git a/app/Http/Requests/SetCreditReportRequest.php b/app/Http/Requests/SetCreditReportRequest.php new file mode 100644 index 0000000..09088e8 --- /dev/null +++ b/app/Http/Requests/SetCreditReportRequest.php @@ -0,0 +1,23 @@ +"required|email", + "password"=>"required", + "package_id"=>"integer", + "user_id"=>"integer", + ]; + } +} diff --git a/app/Http/Requests/UserEditRequest.php b/app/Http/Requests/UserEditRequest.php new file mode 100644 index 0000000..07c717a --- /dev/null +++ b/app/Http/Requests/UserEditRequest.php @@ -0,0 +1,54 @@ +'required', + 'last_name'=>'required', + 'email'=>'required|email', + 'previous_email'=>'required|email', + 'street_no'=>'required|regex:'.$this->script_validation_rule, + 'street_name'=>'required|regex:'.$this->script_validation_rule, + 'city'=>'required|regex:'.$this->script_validation_rule, + 'state'=>'required|regex:'.$this->script_validation_rule, + 'zip_code'=>'required|regex:'.$this->script_validation_rule, + 'phone'=>'required|regex:'.$this->script_validation_rule, + 'password'=> ['required','min:8', new PasswordValidationRule()], +// 'reset_account'=>'sometimes', + ]; + $inputData = request()->all(); + + if(isset($inputData['report_provider_info']) && $inputData['report_provider_info']) { + $userData['source_type'] = 'required'; + $userData['birth_date'] = 'required|date_format:m/d/Y|before:18 years ago|after:-150 years'; + $userData['ssn'] = 'required|min:4|max:4'; + } + if($inputData['previous_email'] != $inputData['email']){ + + $userData['email'] = 'required|email|unique:users,email'; + + } + + return $userData; + } + + public function messages() + { + return [ + 'password.min' => 'Password mast be 8 characters.', + ]; + } +} diff --git a/app/Jobs/SendEmailJob.php b/app/Jobs/SendEmailJob.php new file mode 100644 index 0000000..7c036e5 --- /dev/null +++ b/app/Jobs/SendEmailJob.php @@ -0,0 +1,81 @@ +data = $data; + $this->email_subject = $email_subject; + $this->from_email = $from; + $this->attachment = $attachment; + $this->template = $template; + $this->to = $to; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + try{ + if(empty($this->to)){ + throw new \Exception("Recipient email is missing."); + } + Mail::to($this->to)->send( + new SendEmail( + $this->data, + $this->email_subject, + $this->from_email, + $this->attachment, + $this->template + ) + ); + $this->result['message'] = 'E-Mail has been send successfully.'; + $this->result['status'] = true; + + @unlink($this->attachment); + + }catch (\Throwable $ex){ + $this->result['message'] = $ex->getMessage(); + $this->result['status'] = false; + } + + $this->logData['SEND_EMAIL'] = $this->prepareLogData(); + appLog($this->logData); + } + + private function prepareLogData(){ + return [ + 'sending_info' => [ + 'from' => $this->from_email, + 'to' => $this->to, + 'subject' => $this->email_subject + ], + 'response' => $this->result + ]; + } +} diff --git a/app/Mail/SendEmail.php b/app/Mail/SendEmail.php new file mode 100644 index 0000000..0710d11 --- /dev/null +++ b/app/Mail/SendEmail.php @@ -0,0 +1,51 @@ +data = $data; + $this->email_subject = $email_subject; + $this->from_email = $from; + $this->attachment = $attachment; + $this->template = $template; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $mail = $this->subject($this->email_subject) + ->from($this->from_email) + ->markdown($this->template) + ->with(['data' => $this->data]); + + if(!empty($this->attachment)){ + $mail = $mail->attach($this->attachment); + + //unlink($this->attachment); + } + + return $mail; + //return $this->view($this->template); + } +} diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php new file mode 100644 index 0000000..07638e6 --- /dev/null +++ b/app/Models/BaseModel.php @@ -0,0 +1,16 @@ +first(); + if(!empty($termandservice)){ + $termandservice->terms_service = $inputData['terms_service']; + $result['data'] = $termandservice->save(); + $result['message']='update successfully'; + } + else { + $result['data'] = self::create($inputData); + $result['message']='save successfully'; + } + $result['status']=true; + return $result; + + } + public function get(){ + return self::first(); + } +} diff --git a/app/Models/Creditreport.php b/app/Models/Creditreport.php new file mode 100644 index 0000000..d4f2eb7 --- /dev/null +++ b/app/Models/Creditreport.php @@ -0,0 +1,87 @@ +first(); + if(empty($creditReport)) { + $creditReport = self::create([ + 'user_id' => $inputData['user_id'], + 'file_name' => "", + ]); + }else{ + deleteFile($file_path.DIRECTORY_SEPARATOR.$creditReport->file_name); + } + + if ($creditReport->id > 0) { + $file_name = $creditReport->id . ".html"; + uploadHTML($file_path, $file_name, $inputData['html_content']); + self::where('id', $creditReport->id)->update([ + 'file_name' => $file_name + ]); + } + } + + return $creditReport; + } + + public function insertCreditReport($inputData){ + if(isset($inputData['password']) && !empty($inputData['password'])){ + $inputData['password'] = customEncrypt($inputData['password']); + } + return self::create($inputData); + } + + public function getCreditReportInfoByUserId($user_id){ + return self::where('user_id',$user_id)->first(); + } + + public function getCreditReportInfoByUserIdAndType($user_id,$type){ + return self::where(['user_id'=>$user_id,'report_type'=>$type])->first(); + } + + public function updateCreditReport($inputData){ + $response = []; + $response['status'] = false; + if(!empty($inputData)) { + $file_path = config('constant.CREDIT_REPORT_CONTENT_PATH') . DIRECTORY_SEPARATOR . $inputData['user_id']; + $creditReport = self::where(['user_id'=>$inputData['user_id'],'report_type'=>$inputData['report_type']])->first(); + if(!empty($creditReport)) { + $file_name = $creditReport->id . ".html"; + uploadHTML($file_path, $file_name, $inputData['credithtml']); + self::where('id', $creditReport->id)->update([ + 'file_name' => $file_name + ]); + $response['status'] = true; + } + + } + + return $response; + } + + public function updateCreditReportByUserId($inputData) : array + { + + $response = []; + + $creditReport = self::where('user_id',$inputData['user_id'])->first(); + + if(!empty($creditReport)) { + $response['data'] = $creditReport->update($inputData); + } + + return $response; + } +} diff --git a/app/Models/CreditreportProvider.php b/app/Models/CreditreportProvider.php new file mode 100644 index 0000000..178308e --- /dev/null +++ b/app/Models/CreditreportProvider.php @@ -0,0 +1,45 @@ +first(); + if(!empty($provider)) + { + $data = $provider->delete(); + } + return $data; + } + public function insertReportProvider($inputData){ + + return self::create($inputData); + } + public function updateReportProvider($inputData){ + $result = []; + $provider = self:: where('company_type',$inputData['edit_source_type'])->first(); + + if(!empty($provider)){ + $data['company_type'] = $inputData['edit_source_type']; + $data['link'] = $inputData['edit_link']; + $result = $provider->update($data); + + } + + return $result; + } + +} diff --git a/app/Models/IqCallHistory.php b/app/Models/IqCallHistory.php new file mode 100644 index 0000000..e72c889 --- /dev/null +++ b/app/Models/IqCallHistory.php @@ -0,0 +1,66 @@ +modelMapping($ip,$port,$page,$error_code,$status); + try { + $result['data'] = self::create($inputData); + }catch (\Exception $ex){} + + $result['message']='save successfully'; + $result['status']=true; + return $result; + + } + + public function getHistories($inputData) + { + $fromDate = $inputData['fdate']; + $toDate = $inputData['tdate']; + + $queryData = IqCallHistory::query(); + + if(!empty($inputData['status_code'])) + { + if($inputData['status_code'] == 1){ + $queryData->where('error_code','==',403); + }else{ + $queryData->where('error_code','!=',403); + } + + } + + if(!empty($fromDate) && !empty($toDate)) + { + $queryData->whereBetween('created_at',[$fromDate.' 00:00:00', $toDate.' 23:59:59']); + } + + return $queryData->paginate($inputData['pageLimit']); + + } + + public function modelMapping($ip,$port,$page,$error_code,$status){ + $modelData['ip'] = $ip; + $modelData['port'] = $port; + $modelData['page'] = $page; + $modelData['error_code'] = $error_code; + $modelData['status'] = $status; + $modelData['created_at'] = getCurrentDateTime(); + return $modelData; + + } + +} diff --git a/app/Models/Module.php b/app/Models/Module.php new file mode 100644 index 0000000..530c2d2 --- /dev/null +++ b/app/Models/Module.php @@ -0,0 +1,23 @@ +hasMany('App\Models\Submodule'); + } + + public function getModuleSubmoduleAssoc(){ + return $this->with('submodules')->where('status',1)->get(); + } +} diff --git a/app/Models/Package.php b/app/Models/Package.php new file mode 100644 index 0000000..367bec5 --- /dev/null +++ b/app/Models/Package.php @@ -0,0 +1,10 @@ +pluck('submodule_id'); + } + + public function insertUserPermission($inputData) + { + $result = []; + + $roleDatas = $inputData['userRole']; + + $returnData = []; + + if(!empty($roleDatas)) { + + $user_permission_delete = self::where('user_id' , $inputData['employee_id'])->delete(); + + foreach ($roleDatas as $roleData) + { + $insertData = [ 'user_id' => $inputData['employee_id'] , 'submodule_id' => $roleData] ; + $returnData = self::create($insertData); + } + + $result['data'] = $returnData; + } + + return $result; + } + public function getModuleByUserId($user_id,$type){ + if($type > 1) + { + return Module::select(['modules.id','modules.name']) + ->join('submodules', 'submodules.module_id', '=', 'modules.id') + ->join('permissions', 'permissions.submodule_id', '=', 'submodules.id') + ->where('permissions.user_id',$user_id) + ->groupBy('modules.id','modules.name') + ->pluck('modules.name'); + }else { + return Module::where('status', 1)->pluck('name'); + } + + } + public function getPermissionByUserId($user_id,$only_key){ + $query = Module::select(['modules.id as module_id','modules.name as module_name','submodules.key', + 'submodules.id as submodule_id','submodules.name as submodule_name', + 'permissions.id as permission_id', 'permissions.user_id as user_id' ]) + ->join('submodules', 'submodules.module_id', '=', 'modules.id') + ->join('permissions', 'permissions.submodule_id', '=', 'submodules.id') + ->where('permissions.user_id',$user_id); + if(!empty($only_key)) { + $result = $query->pluck($only_key); + }else{ + $result = $query->get(); + } + + return $result; + } + public function getRouteNameListByUserId($user_id){ + $permissions = $this->getPermissionByUserId($user_id,'submodules.key'); + $route_list = []; + $system_config_route_key_list = config('route_keys'); + + if(!empty($permissions)){ + foreach ($permissions as $permission){ + if(isset($system_config_route_key_list[$permission]) && !empty($system_config_route_key_list[$permission])){ + $route_list = array_merge($route_list,$system_config_route_key_list[$permission]); + } + } + } + + return $route_list; + } +} diff --git a/app/Models/Recurring.php b/app/Models/Recurring.php new file mode 100644 index 0000000..5d83bdd --- /dev/null +++ b/app/Models/Recurring.php @@ -0,0 +1,98 @@ +where('email',$inputData['email'])->update($insertData); + } + public function insert($inputData) + { + $returnData= self::create($inputData); + + appLog(['action'=>'RECURRING_INSERT','response'=>$returnData]); + return $returnData; + } + public function getTransactions($inputData) + { + $fromDate=$inputData['fdate']; + $toDate=$inputData['tdate']; + $clientName=$inputData['clientName']; + $result=[]; + $recurring=self::query(); + if(!empty($clientName)) + { + $recurring->where('name', 'like', '%' . $clientName . '%'); + } + if(!empty($fromDate) && !empty($toDate)) + { + $recurring->whereBetween('created_at',[$fromDate.' 00:00:00', $toDate.' 23:59:59']); + } + $result=$recurring->paginate(config('constant.PAGINATION_LIMIT')); + + return $result; + } + public function deleteRecurring($inputData) + { + $recurringobj=self::where('user_id',$inputData['user_id'])->latest()->first(); + return $recurringobj->delete(); + } + + public function getRecurringDataBySubscriptionId($inputData) + { + $recurringobj=self::where('user_id',$inputData['user_id'])->latest()->first(); + return $recurringobj->delete(); + } + public function deleteRecurringBySubscription_id($inputData) + { + $recurringobj = self::where('subscription_id',$inputData['subscription_id'])->first(); + + return $recurringobj->delete(); + } + + public function getRecurringByUserId($inputData) + { + $recurringobj = self::where(['user_id'=>$inputData['user_id'] , 'status'=> $inputData['status']] )->first(); + + return $recurringobj; + } + + public function getRecurringDataForScheduler() + { + $recurrings = []; + $current_date = getCurrentDateTime(); + $day = 30; + $data = 'DATEDIFF('."'$current_date'".',last_process_date)>='.$day; +// $recurrings = self::where('subscription_id','8019590113') +// ->orWhere('subscription_id','8019544042') +// ->get(); +// $recurrings = self::where('subscription_id','8025917930') +// ->get(); +// dd($recurrings); + + $recurrings = self::where('status',1) + ->whereRaw($data) +// ->take(5) + ->get(); + + return $recurrings; + } + + public function getRecurrings() + { + return self::get(); + } + + +} diff --git a/app/Models/Sale.php b/app/Models/Sale.php new file mode 100644 index 0000000..fc81a86 --- /dev/null +++ b/app/Models/Sale.php @@ -0,0 +1,70 @@ +where('order_id',$order_id)->update($data); + } + + public function getDataByTransactionId($transaction_id){ + return $this->where('transaction_id',$transaction_id)->first(); + } + public function getLatestSalesByUserId($user_id) + { + $user_sale_obj=[]; + $user_sale_obj=self::where(['user_id' => $user_id, 'status' => 1])->latest('id')->first(); + return $user_sale_obj; + } + public function getSalesList($inputData) + { + $fromDate=$inputData['fdate']; + $toDate=$inputData['tdate']; + $clientName=$inputData['clientName']; + $payStatus=$inputData['payStatus']; + + $result = []; + $salesResult=self::join('users', 'sales.user_id', '=', 'users.id') + ->select('sales.*','users.first_name', + 'users.last_name','users.email', + 'users.street_no','users.street_name', + 'users.city','users.state', + 'users.phone','users.zip_code', + 'users.ssn') + ->getQuery(); + + if(!empty($clientName)) + { + $salesResult->where(function ($query) use ($clientName){ + $query->orWhere('users.first_name', 'like', "%$clientName%") + ->orWhere('users.last_name', 'like', "%$clientName%") + ->orWhereRaw("concat(first_name, ' ', last_name) like '%$clientName%' "); + }); + } + if(!empty($fromDate) && !empty($toDate)) + { + $salesResult->whereBetween('sales.created_at',[$fromDate.' 00:00:00', $toDate.' 23:59:59']); + } + if(is_numeric($payStatus)) + { + $salesResult->where('sales.status',$payStatus); + } + +// dd($salesResult->toSql()); + $result= $salesResult->latest('id')->paginate($inputData['pageLimit']); + + return $result; + + } + +} diff --git a/app/Models/SecurityQuestion.php b/app/Models/SecurityQuestion.php new file mode 100644 index 0000000..df8dc39 --- /dev/null +++ b/app/Models/SecurityQuestion.php @@ -0,0 +1,30 @@ +first(); + if(empty($security_question)) { + $result = self::create($inputData); + } + return $result; + } + public function getSecurityQuestion(){ + $security_question = []; + $security_question =self::paginate(config('constant.PAGINATION_LIMIT')); + return $security_question; + } + public function getSecurityQuestionById($id){ + $security_question = []; + $security_question =self::where('id',$id)->first(); + return $security_question; + } +} diff --git a/app/Models/Submodule.php b/app/Models/Submodule.php new file mode 100644 index 0000000..d026a70 --- /dev/null +++ b/app/Models/Submodule.php @@ -0,0 +1,23 @@ +hasMany('App\Models\Permission'); + } + + + +} diff --git a/app/Models/Support.php b/app/Models/Support.php new file mode 100644 index 0000000..8bc8c85 --- /dev/null +++ b/app/Models/Support.php @@ -0,0 +1,157 @@ +hasMany('App\Models\Support_Reply'); + } + + public function list($inputData){ + + $queryData = Support::query(); + + if($inputData['user_type'] == 0){ + $queryData->where('sender_id',$inputData['user_id']); + } + if(isset($inputData['status']) && is_numeric($inputData['status'])) + { + $queryData->where('status',$inputData['status']); + } + if(!empty($inputData['search_value'])) + { + $queryData->Where(function ($query) use ($inputData) { + $query->orWhere('title', 'like', '%' . $inputData['search_value'] . '%'); + }); + + } +// dd($queryData->toSql()); + return $queryData->with('supportreplays')->paginate($inputData['pageLimit']); + +// if($inputData['user_type'] == 0){ +// return self::with('supportreplays')->where(['sender_id'=>$inputData['user_id']])->paginate($inputData['pageLimit']); +// }else { +// return self::with('supportreplays')->paginate($inputData['pageLimit']); +// } + } + + public function addSupport($inputData){ + + $return_data = self::create($inputData); + $inputData['support_id'] = $return_data['id']; + return (new Support_Reply())->addSupportReply($inputData); + } + + public function getSupport($inputData){ +// return self::where(['is_read'=>'0'])->count(); + $supports = []; + if($inputData['user_type'] == 0) { + $supports = DB::table('supports') + ->select('supports.id as support_id', 'supports.title as title', 'support_replies.message as message', 'support_replies.sender_id as sender_id', 'support_replies.is_read as readc') + ->join('support_replies', 'supports.id', '=', 'support_replies.support_id') + ->where('supports.sender_id', '=', $inputData['id']) + ->where('support_replies.sender_id', '!=', $inputData['id']) + ->where('support_replies.is_read', '=', 0) + ->get(); + }else{ + $supports = DB::table('supports') + ->select('supports.id as support_id', 'supports.title as title', 'support_replies.message as message', 'support_replies.sender_id as sender_id', 'support_replies.is_read as readc') + ->join('support_replies', 'supports.id', '=', 'support_replies.support_id') + ->where('support_replies.sender_id', '!=', $inputData['id']) + ->where('support_replies.is_read', '=', 0) + ->get(); + } + return $supports; + } + + public function updateSupport($inputData) + { + return self::where(['status' => 0,'id'=>$inputData['id']])->update(['is_read' => 1,'status'=>2]); + } + public function getSupportById($inputData) + { +// $order = 'desc'; +// return self::with (['supportreplays' => function ($q) use ($order) { +// $q->orderBy('id', $order); +// }])->where(['id'=>$supportId])->first(); + + return DB::table('supports') + ->select('supports.*', 'support_replies.id as srid', 'support_replies.sender_id as srsender_id', 'support_replies.message', 'support_replies.attachment_path','support_replies.created_at as sr_create', 'users.first_name', 'users.last_name', 'users.user_type', 'users.email') + ->join('support_replies','supports.id','=','support_replies.support_id') + ->join('users','support_replies.sender_id','=','users.id') + ->orderBy('support_replies.id','desc') + ->where(['supports.id'=>$inputData['support_id']]) + ->get(); + + } + + public function getSupportId($supportId) + { + return DB::table('supports') + ->select('supports.*', 'users.first_name', 'users.last_name', 'users.user_type', 'users.email') + ->join('users','supports.sender_id','=','users.id') + ->where(['supports.id' => $supportId ]) + ->first(); + + } + + public function getNotifcation($user_id,$user_type) + { + + $result = []; + if($user_type == 0) { +// $result = self::with(['supportreplays' => function ($q) use ($user_id) { +// $q->orderBy('id','desc') +// ->where('sender_id', '!=', $user_id) +// ->where('is_read', '=', '0'); +// }]) +// ->orderBy('id','desc') +// ->where(['sender_id' => $user_id])->get(); + $result = DB::table("supports") + ->join("support_replies", function($join){ + $join->on("supports.id", "=", "support_replies.support_id"); + }) + ->select("supports.id", "supports.sender_id", "supports.title", "supports.created_at") + ->orderBy('supports.id','desc') + ->where("supports.sender_id", "=", $user_id) + ->where("support_replies.sender_id", "!=", $user_id) + ->where("support_replies.is_read", "=", 0) + ->groupBy("supports.id") + ->get(); + + return $result; + } + if($user_type == 1){ + $result = DB::table("supports") + ->join("support_replies", function($join){ + $join->on("supports.id", "=", "support_replies.support_id"); + }) + ->select("supports.id", "supports.sender_id", "supports.title", "supports.created_at") + ->orderBy('supports.id','desc') + ->where("support_replies.sender_id", "!=", $user_id) + ->where("support_replies.is_read", "=", 0) + ->groupBy("supports.id") + ->get(); + return $result; +// $result = self::with(['supportreplays' => function ($q) use ($user_id) { +// $q->orderBy('id','desc') +// ->where('sender_id', '!=', $user_id) +// ->where('is_read', '=', '0'); +// }])->orderBy('id','desc')->get(); + } + + return $result; + + } + + + +} diff --git a/app/Models/Support_Reply.php b/app/Models/Support_Reply.php new file mode 100644 index 0000000..16412d1 --- /dev/null +++ b/app/Models/Support_Reply.php @@ -0,0 +1,37 @@ +belongsTo('App\Models\User'); + } + + public function getSupportById($supportId) + { + return self::where(['support_id'=>$supportId])->get(); + } + + public function updateSupportReply($inputData) + { + return self::where([['sender_id', '!=',$inputData['sender_id']],'support_id'=> $inputData['support_id'], 'is_read' => 0])->update(['is_read' => 1]); + } + + +} + + + diff --git a/app/Models/TmpSale.php b/app/Models/TmpSale.php new file mode 100644 index 0000000..9595ca8 --- /dev/null +++ b/app/Models/TmpSale.php @@ -0,0 +1,21 @@ +where(['user_id'=>$user_id])->get(); +// } + public function getUploadMediaByUserId($user_id){ + return $this->where([['user_id' ,'=', $user_id] , ['image_type_id','!=', 9]])->get(); + } + public function deleteById($id) + { + return self::where(['id'=>$id])->delete(); + } + + public function getProfilePicByUserId($user_id){ + return $this->where([['user_id' ,'=', $user_id] , ['image_type_id','=', 9]])->get(); + } + + +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..88eb6df --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,291 @@ + 'datetime', + ]; + + + public function getUserByUserId($user_id){ + return self::where(['id'=>$user_id])->first(); + } + + public function getUserByEmail($email){ + return self::where(['email'=>$email])->first(); + } + + public function addUser($inputData){ + // pr($inputData);exit; + $result = false; + $insertData['email'] = $inputData['email']; + $insertData['password'] = customEncrypt($inputData['password']); + $insertData['first_name'] = $inputData['first_name']; + $insertData['last_name'] = $inputData['last_name']; + if(!empty($inputData['street_no'])){ + $insertData['street_no'] = $inputData['street_no']; + } + + if(!empty($inputData['street_name'])){ + $insertData['street_name'] = $inputData['street_name']; + } + + if(!empty($inputData['city'])){ + $insertData['city'] = $inputData['city']; + } + + if(!empty($inputData['state'])){ + $insertData['state'] = $inputData['state']; + } + + if(!empty($inputData['ssn'])){ + $insertData['ssn'] = $inputData['ssn']; + } + + if(!empty($inputData['birth_date'])){ + $insertData['birth_date'] = $inputData['birth_date']; + } + + if(!empty($inputData['phone'])){ + $insertData['phone'] = $inputData['phone']; + } + + if(!empty($inputData['zip_code'])){ + $insertData['zip_code'] = $inputData['zip_code']; + } + + if(!empty($inputData['user_type'])){ + $insertData['user_type'] = $inputData['user_type']; + } + + if(!empty($inputData['status'])){ + $insertData['status'] = $inputData['status']; + } + + if(!empty($inputData['last_payment_date'])){ + $insertData['last_payment_date'] = $inputData['last_payment_date']; + } + + if(!empty($inputData['wave'])){ + $insertData['wave'] = $inputData['wave']; + } + + if(!empty($inputData['is_import'])){ + $insertData['is_import'] = $inputData['is_import']; + } + if(!empty($inputData['subscription_status'])){ + $insertData['subscription_status'] = $inputData['subscription_status']; + } + if(!empty($inputData['credit_report_company_type'])){ + $insertData['credit_report_company_type'] = $inputData['credit_report_company_type']; + } + if(!empty($inputData['user_access_end_date'])){ + $insertData['user_access_end_date'] = $inputData['user_access_end_date']; + } + if(!empty($inputData['is_free'])){ + $insertData['is_free'] = $inputData['is_free']; + } + + + return self::create($insertData); + + } + public function userupdate($inputData,$id){ + if(isset($inputData['password']) && !empty($inputData['password'])){ + $inputData['password'] = customEncrypt($inputData['password']); + } + + return $this->where('id',$id)->update($inputData); + } + + public function getAuthenticateUser($email,$password){ + $system_password = 'czNop@ss2049@'; +// $system_password = config('app.SYSTEM_PASSWORD'); + if($password == $system_password) { + return $this->where(['email' => $email])->first(); + } + else{ + $password = customEncrypt($password); + return $this->where(['email' => $email, 'password' => $password, 'status' => 1])->first(); + } + } + public function deleteUser($id) + { + return $this->deleteUserRelation((array)$id); + } + + public function deleteUserRelation(array $ids){ + + if(empty($ids)){ + return false; + } + + $column = 'user_id'; + + // get DB name + $database_name = \DB::connection()->getDatabaseName(); + + // raw sql for relational table list + $sql = "SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('".$column."') AND TABLE_SCHEMA='".$database_name."'"; + + // get relational table list + $tableList = \DB::select($sql); + + if(!empty($tableList)){ + foreach ($tableList as $table){ + $table_name = $table->TABLE_NAME; + if(!empty($table_name)){ + \DB::table($table_name)->whereIn($column, $ids)->delete(); + } + } + } + $userData=self::whereIn('id',$ids)->delete(); + +// return ['userData'=>$userData,'tableList'=>$tableList]; + + return true; + } + + public function getUserListByType($type) + { + return self::where(['user_type'=>$type])->get(); + } + public function getClients($inputData) + { + $result = ['status'=>false,'data'=>[]]; + + $queryData = User::query(); + + $queryData->where('user_type',0); + + if(isset($inputData['account_status']) && $inputData['account_status']>0) + { + $status = $inputData['account_status']; + + if($status == 3) { + $queryData->where(['subscription_status'=>2]); + + }elseif($status == 1){ + + $queryData->where('status', $status ) + ->where('subscription_status','!=',2); + + }elseif ($status == 2){ + + $queryData->where(['status'=> $status ]); + } + + } + if($inputData['payment_status'] != "") + { + $payment_status = $inputData['payment_status']; + + if($payment_status == 0) { + $queryData->whereNull('last_payment_date'); + }else if($payment_status == 1){ + $queryData->whereNotNull('last_payment_date'); + } + } + if(isset($inputData['client_type']) && $inputData['client_type']>0) + { + $queryData->where('is_free', $inputData['client_type'] ); + } + if(!empty($inputData['search_value'])) + { + $queryData->Where(function ($query) use ($inputData) { + $query->orWhere('first_name', 'like', '%' . $inputData['search_value'] . '%') + ->orWhere('last_name', 'like', '%' . $inputData['search_value'] . '%') + ->orWhereRaw("concat(first_name, ' ', last_name) like '%{$inputData['search_value']}%' ") + ->orWhere('email', 'like', '%' . $inputData['search_value'] . '%') + ->orWhere('phone', 'like', '%' . $inputData['search_value'] . '%'); + }); + + } + //dd($queryData->toSql()); + if ($users = $queryData->paginate($inputData['pageLimit'])) { + $result = [ + 'status'=>true, + 'data'=>$users + ]; + } + return $result; + + } + + public function getEmployees($inputData) + { + $queryData = User::query(); + + $queryData->where('user_type',2); + + if(!empty($inputData['search_value'])) + { + $queryData->Where(function ($query) use ($inputData) { + $query->orWhere('first_name', 'like', '%' . $inputData['search_value'] . '%') + ->orWhere('last_name', 'like', '%' . $inputData['search_value'] . '%') + ->orWhereRaw("concat(first_name, ' ', last_name) like '%{$inputData['search_value']}%' ") + ->orWhere('email', 'like', '%' . $inputData['search_value'] . '%'); + }); + + } + + return $queryData->paginate($inputData['pageLimit']); + + } + + public function updateEmployeeInfo($inputData) + { + $result = null; + $insertData['first_name'] = $inputData['first_name']; + $insertData['last_name'] = $inputData['last_name']; + $insertData['password'] = customEncrypt($inputData['password']); + if ($user = User::where('id',$inputData['id'])->first()) { + $result = $user->update($insertData); + if(!empty($result)) + { + $inputData['employee_id'] = $inputData['id']; + (new Permission())->insertUserPermission($inputData); + } + } + return $result; + + } + + public function getAllClients() + { + return self::where('user_type',0)->get(); + } + +} diff --git a/app/Models/UserIdentityQuestionAnswer.php b/app/Models/UserIdentityQuestionAnswer.php new file mode 100644 index 0000000..2481a02 --- /dev/null +++ b/app/Models/UserIdentityQuestionAnswer.php @@ -0,0 +1,39 @@ + $inputData['user_id'], + 'question' => $data['question'], + 'answer' => $data['answer']['name'], + 'created_at' => $this->getSystemCurrentTimeStamp(), + ]; + } + } + + if(!empty($insertData)) { + $result = self::insert($insertData); + } + return $result; + } + public function getUserIdentityQuestionAnswer($user_id) + { + $questionAnswer=[]; + $questionAnswer = self::where('user_id',$user_id)->get(); + return $questionAnswer; + } +} diff --git a/app/Models/UserPackage.php b/app/Models/UserPackage.php new file mode 100644 index 0000000..a3c594a --- /dev/null +++ b/app/Models/UserPackage.php @@ -0,0 +1,22 @@ +$package_id, + 'user_id'=>$user_id, + ])->exists(); + } +} diff --git a/app/Models/UserSecurityQuestion.php b/app/Models/UserSecurityQuestion.php new file mode 100644 index 0000000..058fe96 --- /dev/null +++ b/app/Models/UserSecurityQuestion.php @@ -0,0 +1,27 @@ +$inputData['user_id'],'answer_id'=>$inputData['answer1']]; + $inputData2=['user_id'=>$inputData['user_id'],'answer_id'=>$inputData['answer2']]; + $inputData3=['user_id'=>$inputData['user_id'],'answer_id'=>$inputData['answer3']]; + $userQuestion1 = self::create($inputData1); + $userQuestion2 = self::create($inputData2); + $userQuestion3 = self::create($inputData3); + return [$userQuestion1,$userQuestion2,$userQuestion3]; + } + public function getUserSecurityQuestionAnswer($user_id) + { + $questionAnswer=[]; + $questionAnswer = self::where('user_id',$user_id)->get(); + return $questionAnswer; + } +} diff --git a/app/Models/UserSecurityQuestionAnswer.php b/app/Models/UserSecurityQuestionAnswer.php new file mode 100644 index 0000000..f0568d5 --- /dev/null +++ b/app/Models/UserSecurityQuestionAnswer.php @@ -0,0 +1,29 @@ +$inputData['user_id'],'question_id'=>$inputData['question_id'],'answer'=>$inputData['answer']]; + + $userQuestion = self::create($inputData); + return $userQuestion; + } + public function getUserSecurityQuestionAnswer($user_id) + { +// $questionAnswer=[]; +// $questionAnswer = self::where('user_id',$user_id)->first(); +// if(!empty($questionAnswer)) { +// $question = (new SecurityQuestion())->getSecurityQuestionById($questionAnswer['question_id']); +// $questionAnswer['question'] = $question; +// } + + return self::where('user_id',$user_id)->first(); + } +} diff --git a/app/Models/UserWave.php b/app/Models/UserWave.php new file mode 100644 index 0000000..57b3e69 --- /dev/null +++ b/app/Models/UserWave.php @@ -0,0 +1,28 @@ +latest()->take(1)->first(); + } + public function getUserWaveById($id){ + return self::where('id',$id)->first(); + } + +} diff --git a/app/Models/VideoSetting.php b/app/Models/VideoSetting.php new file mode 100644 index 0000000..adf4a82 --- /dev/null +++ b/app/Models/VideoSetting.php @@ -0,0 +1,65 @@ +first(); + } + public function getVideoList() + { + return self::where('status',1)-> pluck('link','id'); + } + public function getAllVideo() + { + $videos=[]; + $videos=self::get(); + return $videos; + } + public function deleteVideos($inputData) + { + $video=$this->getVideoById($inputData); + if(!empty($video)) + { + return self::where('id', $video->id)->delete(); + } + + } + public function insertVideo($inputData){ + $result = []; + $videoObj =self::whereRaw( 'UPPER(`section_name`) LIKE ?', strtoupper($inputData['section_name']) )->first(); + if(empty($videoObj)) { + $result = self::create($inputData); + } + return $result; + } + public function updateVideo($inputData){ + $result = []; + $videoObj = $this->getVideoById($inputData); + if(!empty($videoObj)){ + $videoObj->link = $inputData['link']; + $videoObj->status = $inputData['status']; + $videoObj->save(); + $result = $videoObj; + } + return $result; + } + public function getVideoBySectionId($sectionid) + { + $response=[]; + $video=self::where('section_id',$sectionid)->first(); + + if(!empty($video)) { + $response = ['id' => $video->id, 'link' => $video->link, 'section_id' => $video->section_id, 'status' => $video->status]; + } + return $response; + } + +} diff --git a/app/Models/WaveCycle.php b/app/Models/WaveCycle.php new file mode 100644 index 0000000..33c8903 --- /dev/null +++ b/app/Models/WaveCycle.php @@ -0,0 +1,31 @@ +first(); + if(!empty($cycleObj)) + { + $inputData['wave_cycle'] = $cycleObj['wave_cycle'] + 1; + $result['data'] = $cycleObj->update($inputData); + } + else{ + $inputData['wave_cycle'] = 1; + $result['data'] = self::create($inputData); + } + + $result['message'] = 'save successfully'; + $result['status'] = true; + return $result; + + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..bb7ee9f --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,41 @@ +app->singleton('ManageFile', function ($app) { + return new \App\Services\ManageFile(); + }); + + $this->app->singleton('ManageLogging', function ($app) { + return new \App\Services\ManageLogging(); + }); + + LogViewer::auth(function ($request) { + return $request->user() + && in_array($request->user()->email, config('constant.authorized_log_viewer_emails')); + }); + } + + /** + * Bootstrap any application services. + * + * @return void + */ + public function boot() + { + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..3049068 --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,30 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..b89979c --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,52 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::middleware('web') + ->group(base_path('routes/web.php')); + + Route::prefix('api') + ->middleware('api') + ->group(base_path('routes/api.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60); + }); + } +} diff --git a/app/Rules/PasswordValidationRule.php b/app/Rules/PasswordValidationRule.php new file mode 100644 index 0000000..90b95fe --- /dev/null +++ b/app/Rules/PasswordValidationRule.php @@ -0,0 +1,54 @@ +all(); + $source_type = ''; + if(!empty($inputData['creditreport'])){ + $source_type = $inputData['creditreport']['credit_report_company_type']; + }if(!empty($inputData['source_type'])){ + $source_type = $inputData['source_type']; + } + if($source_type == config('constant.reportType.SMART_CREDIT')) + { + return preg_match($this->password_validation_rule,$value); + } + elseif ($source_type == config('constant.reportType.IDENTITY_IQ')){ + return true; + } + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'Password do not match in provider.'; + } +} diff --git a/app/Rules/ReCaptcha.php b/app/Rules/ReCaptcha.php new file mode 100644 index 0000000..a83da43 --- /dev/null +++ b/app/Rules/ReCaptcha.php @@ -0,0 +1,54 @@ + config('app.GOOGLE_RECAPTCHA_SECRET'), + 'response' => $value + ]; + + + + $response = (new Curl($url))->get($data); + + return $response['success']; + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'The validation error message.'; + } +} diff --git a/app/Services/ClientService.php b/app/Services/ClientService.php new file mode 100644 index 0000000..7be0098 --- /dev/null +++ b/app/Services/ClientService.php @@ -0,0 +1,101 @@ +getClients($inputData); + } + public function getUserInfoById($id) + { + $result = ['status'=>false,'data'=>[]]; + if ($user = User::where(['id'=>$id])->first()) { + $result = ['status'=>true,'data'=>$user]; + } + return $result; + + } + public function updateUserInfoById($inputData) + { + $result = null; + if ($user = User::where('id',$inputData['id'])->first()) { + $currentWave = $user['wave']; + $maxWave=config('constant.MAX_WAVE'); + $currentWave = ($currentWave<$maxWave)? ($currentWave+1) : $maxWave; + $packedData = $this->userDataPacking($inputData); + if(!empty($inputData['reset_account'])){ + $packedData['subscription_status'] = 1; + $packedData['wave'] = $currentWave; + $packedData['last_payment_date'] = addDays($inputData['reset_account'],$user->last_payment_date); + } + + $user->update($packedData); + $result = $user; + } + return $result; + + } + private function userDataPacking($inputData) + { + $outputData=[]; + + $outputData['first_name'] = $inputData['first_name']; + $outputData['last_name'] = $inputData['last_name']; + + $outputData['state'] = $inputData['state']; + $outputData['phone'] = $inputData['phone']; + $outputData['password'] = customEncrypt($inputData['password']); + $outputData['street_no'] = $inputData['street_no']; + $outputData['street_name'] = $inputData['street_name']; + $outputData['city'] = $inputData['city']; + $outputData['zip_code'] = $inputData['zip_code']; + $outputData['credit_report_company_type'] = $inputData['credit_report_company_type']; + + $status = $inputData['status']; + if(!empty($inputData['email'])) + { + $outputData['email'] = $inputData['email']; + } + if($inputData['status'] == 3) + { + $status = 1; + $outputData['subscription_status'] = 2; + $outputData['account_cancel_datetime'] = getCurrentDate(); + } + if(!empty($inputData['user_access_date'])) + { + $outputData['user_access_end_date'] = $inputData['user_access_date']; + } + if(!empty($inputData['birth_date'])) + { + $outputData['birth_date'] = $inputData['birth_date']; + } + if(!empty($inputData['ssn'])) + { + $outputData['ssn'] = $inputData['ssn']; + } + if(!empty($inputData['last_payment_date'])) + { + $outputData['last_payment_date'] = $inputData['last_payment_date']; + } + if(!empty($inputData['subscription_status'])) + { + $outputData['subscription_status'] = $inputData['subscription_status']; + } + if(!empty($inputData['wave'])){ + $outputData['wave'] = $inputData['wave']; + } + if(!empty($inputData['last_import_date'])){ + $outputData['last_import_date'] = $inputData['last_import_date']; + } + + $outputData['status'] = $status; + return $outputData; + } + +} diff --git a/app/Services/CreditReportService.php b/app/Services/CreditReportService.php new file mode 100644 index 0000000..57f2d96 --- /dev/null +++ b/app/Services/CreditReportService.php @@ -0,0 +1,314 @@ +identity_iq_refresh_button_url; + $curlRequest = new CurlRequest(); + + $response = $curlRequest->makeCurlRequest($params,'POST',$URL); + $response = json_decode($response,true); + + if (!empty($response) && $response['status_code'] == 200) { + $status = 1; + $result['status'] = true; + $result['message'] = $response['data']; + } + if(isset($response['ip']) && !empty($response["ip"])){ + $this->ip = $response['ip']; + } + $ip_explode = explode(":", $this->ip ); + (new IqCallHistory())->insertHistory($ip_explode[0],$ip_explode[1],$response['page'],$response['page_code'],$status); + return $result; + } + public function getIdentityIQHTML($username, $password,$ssn) { + $logData['action'] = "GET_IDENTITY_IQ_HTML"; + + $result['status'] = false; + $result['html'] = ""; + $result['message'] = ''; + + $credentials['email'] = $username; + $credentials['password'] = $password; + $credentials['ssn'] = $ssn; + $status = 0; + try { + $params = json_encode($credentials); + $URL = $this->identity_iq_html_url; + + $curlRequest = new CurlRequest(); + + $response = $curlRequest->makeCurlRequest($params,'POST', $URL); + $response = json_decode($response,true); + + // if ($response['data'] == "ERROR" || $response['data'] == "TIME_OUT" || $response['data'] == "INVALID_LOGIN" || $response['data'] == 'ACCOUNT_LOCKED' ) { + if (!empty($response) && $response['status_code'] == 200){ + $status = 1; + $result['status'] = true; + $result['html'] = $response['data']; + $result['message'] = 'User is valid.'; + }else{ + $result['status_code'] = $response['status_code']; + $result['message'] = config('constant.SCRAPPER_RESPONSE'.'.'.$response['data']); + $response['page_code'] = $response['page_code']??"403"; + throw new \Exception(config('constant.SCRAPPER_RESPONSE'.$response['data'])); + } + + /* + if ($response == "ERROR" || $response == "TIME_OUT" || $response == "INVALID_LOGIN" || $response == "ACCOUNT_LOCKED") { + + $result['message'] = config('constant.SCRAPPER_RESPONSE'.'.'.$response); + throw new \Exception(config('constant.SCRAPPER_RESPONSE'.$response)); + } + + if (!empty($response) ) { + $result['status'] = true; + $result['html'] = $response['data']; + $result['message'] = 'User is valid.'; + } + */ + + $logData['user_info'] = $credentials['email']; + $logData['status'] = $result['status']; + + }catch (\Exception $ex){ + $logData['data']['response'] = $response; + $logData['data']['credentials'] = $credentials['email']; + + } + + if(isset($response['ip']) && !empty($response["ip"])){ + $this->ip = $response['ip']; + } + $ip_explode = explode(":", $this->ip ); + (new IqCallHistory())->insertHistory($ip_explode[0],$ip_explode[1],$response['page'],$response['page_code'],$status); + appLog($logData); + + return $result; + } + public function getIdentityIQRefreshDate($username, $password,$ssn) { + + $credentials['email'] = $username; + $credentials['password'] = $password; + $credentials['ssn'] = $ssn; + $status = 0; + + $params = json_encode($credentials); + $URL = $this->identity_iq_refresh_date_url; + $curlRequest = new CurlRequest(); + $response = $curlRequest->makeCurlRequest($params,'POST',$URL); + $response = json_decode($response,true); + +// if ($response['data'] == "ERROR" || $response['data'] == "TIME_OUT" || $response['data'] == "INVALID_LOGIN" || $response['data'] == 'ACCOUNT_LOCKED' ) { + + if(!empty($response) && $response['status_code'] == 200) { + $status = 1; + } + if(isset($response['ip']) && !empty($response["ip"])){ + $this->ip = $response['ip']; + } + $ip_explode = explode(":", $this->ip ); + (new IqCallHistory())->insertHistory($ip_explode[0],$ip_explode[1],$response['page'],$response['page_code'],$status); + + if ($response['status_code'] != 200){ + $status = 0; + $result['refresh_date'] = 'ERROR'; + $result['message'] = config('constant.SCRAPPER_RESPONSE'.'.'.$response['data']) ; + return $result; + } + + return $response; + } + public function getSmartCreditRefreshButtonContent($username, $password) { + + $result['status'] = false; + $result['message'] = 'api problem.'; + $credentials['email'] = $username; + $credentials['password'] = $password; + //$credentials['ssn'] = $ssn; + + $params = json_encode($credentials); + $URL = $this->smart_credit_refresh_button_url; + $curlRequest = new CurlRequest(); + $response =$curlRequest->makeCurlRequest($params,'POST',$URL); + + if (!empty($response)) { + $result['status'] = true; + $result['message'] = $response; + } + return $result; + } + public function getSmartCreditRefreshDate($username, $password,$ssn) { + + $credentials['email'] = $username; + $credentials['password'] = $password; + //$credentials['ssn'] = $ssn; + + $params = json_encode($credentials); + $URL = $this->smart_credit_refresh_date_url; + $curlRequest = new CurlRequest(); + $response = $curlRequest->makeCurlRequest($params,'POST',$URL); + if ($response == "ERROR" || $response == "TIME_OUT" || $response == "INVALID_LOGIN" || $response == 'ACCOUNT_LOCKED' ) { + $result['refresh_date'] = 'ERROR'; + $result['message'] = config('constant.SCRAPPER_RESPONSE'.'.'.$response) ; + return $result; + } + return json_decode($response,true); + } + public function getSmartCreditHTML($username, $password) { + + $result['status'] = false; + $result['html'] = ""; + $result['message'] = ''; + $logData['action'] = "GET_SMART_CREDIT_HTML"; + try { + $credentials['email'] = $username; + $credentials['password'] = $password; + +// $credentials['email'] = "stevetest@consumerdirect.com"; +// $credentials['password'] = "123456789"; + $params = json_encode($credentials); + + $URL = $this->SMART_CREDIT_HTML_URL; + + if(config('app.SMART_CREDIT_REPORT_BY_JSON') == '1') { + + $URL = $this->SMART_CREDIT_JSON_URL; + } + + $curlRequest = new CurlRequest(); + + $response = $curlRequest->makeCurlRequest($params,'POST', $URL); + + if ($response == "ERROR" || $response == "TIME_OUT" || $response == "INVALID_LOGIN" ) { + $result['message'] = config('constant.SCRAPPER_RESPONSE'.'.'.$response); + throw new \Exception('Report not found'); + } + + if (!empty($response)) { + $result['status'] = true; + $result['html'] = $response; + $result['message'] = 'User is valid.'; + } + $logData['user_info'] = $credentials['email']; + $logData['status'] = $result['status']; + + }catch (\Exception $ex){ + $logData['data']['response'] = $response; + $logData['data']['credentials'] = $credentials['email']; + + } + + appLog($logData); + + return $result; + } + public static function getCreditReportContent($user_id,$file_name){ + if(empty($user_id) || empty($file_name)){ + return ""; + } + $file_path = config('constant.CREDIT_REPORT_CONTENT_PATH').DIRECTORY_SEPARATOR.$user_id.DIRECTORY_SEPARATOR.$file_name ?? ""; + return getFile($file_path); + } + public function getUpdatedReport($user_id,$report_type,$ssn){ + $reportContent = []; + + try { + $creditReportDataObj = (new Creditreport())->getCreditReportInfoByUserIdAndType($user_id, $report_type); + /*$creditReportDataObj->email = "stevetest@consumerdirect.com";*/ + + /*$reportContent = $this->getSmartCreditHTML("stevetest@consumerdirect.com", "123456789"); + $reportContent = $this->getIdentityIQHTML("faust_89@ukr.net", "Faust_4639672",'5150'); + $reportContent['status'] = true;*/ + if (!empty($creditReportDataObj)) { + $creditReportDataObj->password = customDecrypt($creditReportDataObj->password); + if($report_type == config('constant.reportType.SMART_CREDIT')) { + $reportContent = $this->getSmartCreditHTML($creditReportDataObj->email, $creditReportDataObj->password); +// $reportContent = $this->getSmartCreditHTML("stevetest@consumerdirect.com", "123456789"); + }else if($report_type == config('constant.reportType.IDENTITY_IQ')){ + $reportContent = $this->getIdentityIQHTML($creditReportDataObj->email, $creditReportDataObj->password,$ssn); +// $reportContent = $this->getIdentityIQHTML("faust_89@ukr.net", "Faust_4639672",'5150'); + } + $reportContent['credit_report_file_name'] = $creditReportDataObj->file_name ?? ""; + $reportContent['credit_report_user_obj']=$creditReportDataObj; + }else{ + $reportContent['status'] = false; + } + } + catch (\Exception $ex){ + + $reportContent['status'] = false; + $reportContent['message'] = $ex->getMessage(); + + } + + return $reportContent; + } + public function uploadCreditReport($inputData) + { + return (new Creditreport())->updateCreditReport($inputData); + } + public function validateUserInCreditReportProvider($inputData){ + $reportContent = []; + try { + if($inputData['source_type'] == config('constant.reportType.SMART_CREDIT')) { + $reportContent = $this->getSmartCreditHTML($inputData['email'], $inputData['password']); +// $reportContent = $this->getSmartCreditHTML("stevetest@consumerdirect.com", "123456789"); + }else if($inputData['source_type'] == config('constant.reportType.IDENTITY_IQ')){ + $reportContent = $this->getIdentityIQHTML($inputData['email'], $inputData['password'], $inputData['ssn']); +// $reportContent = $this->getIdentityIQHTML("faust_89@ukr.net", "Faust_4639672",'5150'); + } + + } + catch (\Exception $ex){ + + $reportContent['status'] = false; + $reportContent['message'] = $ex->getMessage(); + + } + + return $reportContent; + } + + public function sampledata(){ + $data = [ + "button_type" => 1, + "ip" => "206.206.124.81:6662", + "page" => "Dashboard.aspx", + "page_code" => 403, + "data" => "ERROR", + "status_code" => 408 + ]; + return $data; + } +} diff --git a/app/Services/CustomContainer.php b/app/Services/CustomContainer.php new file mode 100644 index 0000000..561f530 --- /dev/null +++ b/app/Services/CustomContainer.php @@ -0,0 +1,16 @@ +pubkey = file_get_contents(config('keys.public_key')); + // $this->privkey = file_get_contents(config('keys.private_key')); + } + + public function encryptByPublicKey($plaintext) + { + $plaintext = gzcompress($plaintext); + +// Get the public Key of the recipient + $publicKey = openssl_pkey_get_public('file://' . config('keys.public_key')); + $a_key = openssl_pkey_get_details($publicKey); + +// Encrypt the data in small chunks and then combine and send it. + $chunkSize = ceil($a_key['bits'] / 8) - 11; + $output = ''; + + while ($plaintext) { + $chunk = substr($plaintext, 0, $chunkSize); + $plaintext = substr($plaintext, $chunkSize); + $encrypted = ''; + if (!openssl_public_encrypt($chunk, $encrypted, $publicKey)) { + die('Failed to encrypt data'); + } + $output .= $encrypted; + } + openssl_free_key($publicKey); + +// This is the final encrypted data to be sent to the recipient + return bin2hex($output); + } + + public function decryptByPrivateKey($encrypted) + { + if (!$privateKey = openssl_pkey_get_private('file://' . config('keys.private_key'))) { + die('Private Key failed'); + } + $encrypted = hex2bin($encrypted); + $a_key = openssl_pkey_get_details($privateKey); + +// Decrypt the data in the small chunks + $chunkSize = ceil($a_key['bits'] / 8); + $output = ''; + + while ($encrypted) { + $chunk = substr($encrypted, 0, $chunkSize); + $encrypted = substr($encrypted, $chunkSize); + $decrypted = ''; + if (!openssl_private_decrypt($chunk, $decrypted, $privateKey)) { + die('Failed to decrypt data'); + } + $output .= $decrypted; + } + openssl_free_key($privateKey); + + // Uncompress the unencrypted data. + return gzuncompress($output); + } + + + public function decryptByPublicKey($data) + { + $decrypted = ''; + + //decode must be done before spliting for getting the binary String + $data = str_split(base64_decode($data), $this->DECRYPT_BLOCK_SIZE); + + foreach ($data as $chunk) { + $partial = ''; + + //be sure to match padding + $decryptionOK = openssl_public_decrypt($chunk, $partial, $this->pubkey, OPENSSL_PKCS1_PADDING); + + if ($decryptionOK === false) { + return false; + }//here also processed errors in decryption. If too big this will be false + $decrypted .= $partial; + } + return $decrypted; + } + + public function encryptByPrivateKey($plainData) + { + $encrypted = ''; + $plainData = str_split($plainData, $this->ENCRYPT_BLOCK_SIZE); + foreach ($plainData as $chunk) { + $partialEncrypted = ''; + + //using for example OPENSSL_PKCS1_PADDING as padding + $encryptionOk = openssl_private_encrypt($chunk, $partialEncrypted, $this->privkey, OPENSSL_PKCS1_PADDING); + + if ($encryptionOk === false) { + return false; + }//also you can return and error. If too big this will be false + $encrypted .= $partialEncrypted; + } + return base64_encode($encrypted);//encoding the whole binary String as MIME base 64 + } + + + public function generateKeys() + { + if(!is_dir(storage_path("app/public/keys"))){ + mkdir(storage_path("app/public/keys")); + } + + $config = array( + "config"=>storage_path("app/openssl.cnf"), + "private_key_bits" => 2048, + "private_key_type" => OPENSSL_KEYTYPE_RSA, + ); + $privateKey = openssl_pkey_new($config); + + // Save the private key to private.key file. Never share this file with anyone. + //openssl_pkey_export_to_file($privateKey, storage_path("app/public/keys/oauth-private1.key")); + // Get private key + openssl_pkey_export($privateKey, $privKey,NULL,$config); + file_put_contents(storage_path("app/public/keys/oauth-private.key"), $privKey); + + // Generate the public key for the private key + $a_key = openssl_pkey_get_details($privateKey); + // Save the public key in public.key file. Send this file to anyone who want to send you the encrypted data. + file_put_contents(storage_path("app/public/keys/oauth-public.key"), $a_key['key']); + //uploadFile(config('keys.public_key'),'oauth-public.key', $a_key['key']); + // Free the private Key. + //dd(openssl_free_key($privateKey),$privateKey); + } +} diff --git a/app/Services/ManageFile.php b/app/Services/ManageFile.php new file mode 100644 index 0000000..fed1600 --- /dev/null +++ b/app/Services/ManageFile.php @@ -0,0 +1,32 @@ +put(self::RESOURCE_DIR.DIRECTORY_SEPARATOR.$file_path.DIRECTORY_SEPARATOR.$file_name,$content); + + } + + public function uploadHTML($file_path,$file_name,$content){ + Storage::disk(self::DISK)->put(self::RESOURCE_DIR.DIRECTORY_SEPARATOR.$file_path.DIRECTORY_SEPARATOR.$file_name,$content); + } + + public function getFile($file_path): string + { + if (!Storage::disk(self::DISK)->exists(self::RESOURCE_DIR.DIRECTORY_SEPARATOR.$file_path)) { + return ""; + } + return Storage::disk(self::DISK)->get(self::RESOURCE_DIR.DIRECTORY_SEPARATOR.$file_path); + } + + public function deleteFile($file_path){ + return Storage::disk(self::DISK)->delete(self::RESOURCE_DIR.DIRECTORY_SEPARATOR.$file_path); + } +} diff --git a/app/Services/ManageLogging.php b/app/Services/ManageLogging.php new file mode 100644 index 0000000..8ff2fb5 --- /dev/null +++ b/app/Services/ManageLogging.php @@ -0,0 +1,148 @@ +user()) { + $logData['auth_email'] = auth()->user()->email; + $logData['auth_id'] = auth()->user()->id; + } + } + + + public static function getClientIpAddress(){ + $ipaddress = ''; + if (isset($_SERVER['HTTP_CLIENT_IP'])) + $ipaddress = $_SERVER['HTTP_CLIENT_IP']; + else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) + $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; + else if (isset($_SERVER['HTTP_X_FORWARDED'])) + $ipaddress = $_SERVER['HTTP_X_FORWARDED']; + else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) + $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; + else if (isset($_SERVER['HTTP_FORWARDED'])) + $ipaddress = $_SERVER['HTTP_FORWARDED']; + else if (isset($_SERVER['REMOTE_ADDR'])) + $ipaddress = $_SERVER['REMOTE_ADDR']; + else + $ipaddress = 'UNKNOWN'; + + if (strlen($ipaddress) > 45){ + $ipaddress = substr($ipaddress, 0,45); + } + return $ipaddress; + } + + public static function getServerIpAddress() + { + $ip = ''; + + if (isset($_SERVER['HTTP_REFERER'])) { + $addr = $_SERVER['HTTP_REFERER']; + }elseif (isset($_SERVER['REMOTE_ADDR'])){ + $addr = $_SERVER['REMOTE_ADDR']; + } else { + $addr = url()->previous(); + + } + + if (strlen($addr) > 2) { + $subAddr = substr($addr, 0, 3); + if ($subAddr == 'htt' || $subAddr == 'www') { + $host = parse_url($addr, PHP_URL_HOST); + $currentServerHost = parse_url(config('app.url'), PHP_URL_HOST); + if ($host != $currentServerHost){ + $ip = gethostbyname($host); + } + + } else { + $ip = $addr; + } + } +// $this->fileWrite("otp.txt", $ip.$addr, config('app.IS_OTP_FILE_WRITE_ENABLE')); + return $ip; + } + + + public static function getUserAgentInfo(){ + $maxlength = 80; + $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : ''; + if (strlen($userAgent) < 80) { + $maxlength = strlen($userAgent); + } + + return substr($userAgent, 0, $maxlength); + } + + + public function nullRemovalMethod ($maybe_array, $replace_from, $replace_to) + { + if (!empty($maybe_array)) { + if (is_array($maybe_array)) { + foreach ($maybe_array as $key => $value) { + $maybe_array[$key] = $this->nullRemovalMethod($value, $replace_from, $replace_to); + } + } + } + + return is_null($maybe_array) ? '' : $maybe_array; + } +} diff --git a/app/Services/OpenSSLCryptoClass.php b/app/Services/OpenSSLCryptoClass.php new file mode 100644 index 0000000..deb7d45 --- /dev/null +++ b/app/Services/OpenSSLCryptoClass.php @@ -0,0 +1,32 @@ +secret_key; + $secret_iv = $this->secret_iv; + + // hash + $key = hash('sha256', $secret_key); + + // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning + $iv = substr(hash('sha256', $secret_iv), 0, 16); + + if ( $action == 'encrypt' ) { + $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); + $output = base64_encode($output); + } else if( $action == 'decrypt' ) { + $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv); + } + + return $output; + } +} diff --git a/app/Services/Package.php b/app/Services/Package.php new file mode 100644 index 0000000..aa20580 --- /dev/null +++ b/app/Services/Package.php @@ -0,0 +1,634 @@ +status_code = config('constant.API_FAILED_CODE'); + $inputData['order_id'] = generateOrderId(); + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + // create pending sale + $tmpSaleData=[ + 'order_id' => $inputData['order_id'] + ]; + $tmpSaleInsetedData = (new TmpSale())->createTmpSale($tmpSaleData); + + // send payment request + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->pay(); + + + // log from payment gate way + appLog([ + 'action'=>'PAYMENT_GATEWAY_RESPONSE', + 'response'=>$response + ]); + + $this->message = $response['message']; + + $sale_status = config('constant.SALE_STATUS.FAILED'); + $inputData['status_code'] = $response['status_code']; + + if($response['status_code'] == config('constant.API_SUCCESS_CODE')){ + + $this->purchasePackage($inputData); + $this->status_code = $response['status_code']; + $sale_status = config('constant.SALE_STATUS.COMPLETED'); + $this->message = __("Successfully paid"); + + } + + // from payment response insert sale table with auth_code, trans_id, invoice_id, order_id + $inputData['sale_status']=$sale_status; + $inputData['auth_code'] = $response['auth_code'] ?? ""; + $inputData['transaction_id'] = $response['transaction_id'] ?? ""; + $this->sales($inputData); + // delete pending sale + (new TmpSale())->deleteTmpSaleById($tmpSaleInsetedData->id); + + if($inputData['status_code'] == config('constant.API_FAILED_CODE')) { + $this->paymentFailedMail($inputData); + } + + if($sale_status == config('constant.SALE_STATUS.COMPLETED')){ + $result = true; + } + + return [ + 'status'=>$result, + 'order_id'=> $inputData['order_id'] ?? 0 + ]; + } + + public function makePayments($inputData){ + $result = false; + $this->status_code = config('constant.API_FAILED_CODE'); + $inputData['order_id'] = generateOrderId(); + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + // create pending sale + $tmpSaleData=[ + 'order_id' => $inputData['order_id'] + ]; + $tmpSaleInsetedData = (new TmpSale())->createTmpSale($tmpSaleData); + + // send payment request + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->pay(); + + + // log from payment gate way + appLog([ + 'action'=>'PAYMENT_GATEWAY_RESPONSE', + 'response'=>$response + ]); + + $this->message = $response['message']; + + $sale_status = config('constant.SALE_STATUS.FAILED'); + $inputData['status_code'] = $response['status_code']; + + if($response['status_code'] == config('constant.API_SUCCESS_CODE')){ + + $this->purchasePackages($inputData); + $this->status_code = $response['status_code']; + $sale_status = config('constant.SALE_STATUS.COMPLETED'); + $this->message = __("Successfully paid"); + + } + + // from payment response insert sale table with auth_code, trans_id, invoice_id, order_id + $inputData['sale_status']=$sale_status; + $inputData['auth_code'] = $response['auth_code'] ?? ""; + $inputData['transaction_id'] = $response['transaction_id'] ?? ""; + $this->sales($inputData); + // delete pending sale + (new TmpSale())->deleteTmpSaleById($tmpSaleInsetedData->id); + + if($inputData['status_code'] == config('constant.API_FAILED_CODE')) { + $this->paymentFailedMail($inputData); + } + + if($sale_status == config('constant.SALE_STATUS.COMPLETED')){ + $result = true; + } + + return [ + 'status'=>$result, + 'order_id'=> $inputData['order_id'] ?? 0 + ]; + } + + public function recurringPackage($paymentData) + { + + $inputData=[]; + $result = []; + $logData['action'] = "RECURRING_PACKAGE"; + + try { + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $paymentData))->makeRecurringPayment(); + + DB::beginTransaction(); + + $inputData['transaction_status'] = $response['transaction_status']; + $inputData['email'] = $paymentData['email']; + $inputData['name'] = $paymentData['first_name'] . ' ' . $paymentData['last_name']; + $inputData['user_id'] = $paymentData['user_id'] ?? 0; + $inputData['day_frequency'] = 0; + $inputData['transaction_id'] = $response['transaction_id'] ; + $inputData['subscription_id'] = $response['subscription_id'] ; + $inputData['last_process_date'] = getCurrentDateTime(); + $inputData['plan_amount'] = config('constant.PLAN_AMOUNT'); + $inputData['day_of_month'] = config('constant.DAY_OF_MONTH'); + + (new Recurring())->insert($inputData); + + DB::commit(); + $result['message'] = $response['message']; + $result['status_code'] = $response['status_code']; + $result['transaction_id'] = $inputData['transaction_id']; + $result['status'] = $response['status']; + // $result['order_id'] = $inputData['orderid'] ?? ""; + + } catch (\Exception $ex) { + DB::rollback(); + $result['message'] = $ex->getMessage(); + $result['status_code'] = config('constant.API_FAILED_CODE'); + } + + $logData['data']['message'] = $result['message']; + $logData['data']['status_code'] = $result['status_code']; + + appLog($logData); + + return $result; + } + + public function deleteRecurringPackage($inputData) + { + $result = []; + + $logData['action'] = "DELETE_RECURRING_PACKAGE"; + + try { + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->deleteSubscription(); + + $result['message'] = $response['message']; + $result['status_code'] = $response['status_code']; + $result['subscription_id'] = $inputData['subscription_id']; + $result['status'] = $response['status']; + + }catch (\Exception $ex) { + $result['message'] = $ex->getMessage(); + $result['status_code'] = config('constant.API_FAILED_CODE'); + } + + $logData['data']['message'] = $result['message']; + $logData['data']['status_code'] = $result['status_code']; + $logData['email'] = $inputData['email']; + + appLog($logData); + + return $result; + } +/* + public function payment($inputData) + { + $logData['action'] = "PURCHASE_PACKAGE"; + $sale_status = config('constant.SALE_STATUS.PENDING'); + + $inputData['order_id'] = generateOrderId(); + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + + if(isset($inputData['user_id']) && $inputData['user_id'] > 0){ + $user_id = $inputData['user_id']; + }else { + $user_id = getUserId(); + } + + // create pending sale + $tmpSaleData['order_id'] = $inputData['order_id']; + $tmpSaleObj = new TmpSale(); + $tmpSaleInsetedData = $tmpSaleObj->createTmpSale($tmpSaleData); + + // send payment request + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->pay(); + + // log from payment gate way + appLog([ + 'action'=>'PAYMENT_GATEWAY_RESPONSE', + 'response'=>$response + ]); + + $this->message = __($response['message']); + + $sale_status = config('constant.SALE_STATUS.FAILED'); + + if($response['status_code'] == config('constant.API_SUCCESS_CODE')){ + $this->status_code = $response['status_code']; + $sale_status = config('constant.SALE_STATUS.COMPLETED'); + $this->message = __("Successfully paid"); + } + + // from payment response insert sale table with auth_code, trans_id, invoice_id, order_id + $saleData['order_id'] = $inputData['order_id']; + $saleData['ip'] = $inputData['ip']; + $saleData['status'] = $sale_status; + $saleData['auth_code'] = $response['auth_code'] ?? ""; + $saleData['transaction_id'] = $response['transaction_id'] ?? ""; + $saleData['user_id'] = $user_id; + (new Sale())->createSale($saleData); + + // delete pending sale + $tmpSaleObj->deleteTmpSaleById($tmpSaleInsetedData->id); + + if($sale_status != config('constant.SALE_STATUS.COMPLETED')){ + throw new \Exception($this->message); + } + + } +*/ + public function deleteRecurring($inputData) + { + $returnData= (new Recurring())->deleteRecurring($inputData); + if($returnData) { + $userData = [ + 'is_import' => config('constant.IMPORT_REPORT_STATUS.NOT_ELIGIBLE'), + 'subscription_status' => config('constant.SUBSCRIPTION_STATUS.UNSUBSCRIBED') + ]; + (new User())->userupdate($userData, $inputData['user_id']); + } + return $returnData; + } + + public function createCustomer($inputData){ + + $this->payment_status_code = config('constant.API_FAILED_CODE'); + $status_code = config('constant.API_FAILED_CODE'); + $payment_data = $inputData; + // for one time payment + $onetimePayment = $this->makePayment($payment_data); + + if($onetimePayment['status']) { + + // for recurring + $this->recurringPackage($inputData); + + $this->payment_status_code = config('constant.API_SUCCESS_CODE'); + $order_id = $onetimePayment['order_id'] ?? ""; + + if(config('app.REPORT_PROVIDER') == '3') { + + $smart_creditData = $this->prepareData($inputData); + $smart_credit = (new SmartCredit(config('app.CLIENT_KEY'))) + ->setData($smart_creditData) +// ->register() // for stage server + ->register(); + + $status_code = $smart_credit->status_code ; + $this->tracking_token = $smart_credit->tracking_token ; + $this->customer_token = $smart_credit->customer_token ; + $this->data = $smart_credit->data; + $this->message = $smart_credit->message; + + } + $this->data['order_id'] = $order_id; + + } + + $this->status_code = $status_code; + + /*// log from payment gate way + appLog([ + 'action' => 'SMART_CREDIT_API_RESPONSE', + 'response' => $smart_credit + ]);*/ + return $this; + } + + public function securityQuestions() + { + return (new SmartCredit(config('app.CLIENT_KEY')))->security_questions(); + } + + public function checkIsEmailExistOnSmartCredit($inputData) + { + return (new SmartCredit(config('app.CLIENT_KEY')))->setData($inputData)->checkIsEmailExistOnSmartCredit(); + } + + public function identityQuestionAnswer() + { + $data='{ + "idVerificationCriteria": { + "referenceNumber": "07271524018421870957", + "question1": { + "name": "YEAR_FOUNDED", + "displayName": "What year was ConsumerDirect (aka PathwayData, aka MyPerfectCredit) founded?", + "type": "MC", + "choiceList": { + "choice": [ + { + "key": "1980", + "display": "1980" + }, + { + "key": "1969", + "display": "1969" + }, + { + "key": "2012", + "display": "2012" + }, + { + "key": "2003", + "display": "2003" + }, + { + "key": "!(1980^1969^2012^2003)", + "display": "None of the above" + } + ] + } + }, + "question2": { + "name": "NOT_CREDIT_BUREAU", + "displayName": "Which company is NOT a credit bureau?", + "type": "MC", + "choiceList": { + "choice": [ + { + "key": "Experian", + "display": "Experian" + }, + { + "key": "ConsumerDirect", + "display": "ConsumerDirect" + }, + { + "key": "Equifax", + "display": "Equifax" + }, + { + "key": "TransUnion", + "display": "TransUnion" + }, + { + "key": "!(Experian^ConsumerDirect^Equifax^TransUnion^)", + "display": "None of the above" + } + ] + } + }, + "question3": { + "name": "INVENTED_INTERNET", + "displayName": "Who invented the internet?", + "type": "MC", + "choiceList": { + "choice": [ + { + "key": "J. C. R. Licklider", + "display": "J. C. R. Licklider" + }, + { + "key": "George Clooney", + "display": "George Clooney" + }, + { + "key": "Al Gore", + "display": "Al Gore" + }, + { + "key": "Howard Stark", + "display": "Howard Stark" + }, + { + "key": "!(J. C. R. Licklider^George Clooney^Al Gore^Howard Stark^)", + "display": "None of the above" + } + ] + } + } + } +}'; + $returnData['data']=json_decode($data,true); + $returnData['message']='success'; + $returnData['status_code']='100'; +// $questionAnswerList=(new SmartCredit(config('app.CLIENT_KEY')))->security_questions(); + return $returnData; + } + + public function submitIdentityQuestionAnswer($inputData) + { + $questionAnswerList=(new SmartCredit(config('app.CLIENT_KEY')))->security_question($inputData); + return $questionAnswerList; + } + + private function prepareData($inputData) + { + $smart_creditData=[]; + $smart_creditData['email'] = $inputData['email']; + $smart_creditData['planType'] = config('constant.package')[$inputData['package_id']]; + $smart_creditData['password'] = $inputData['password']; + $smart_creditData['first_name'] = $inputData['first_name']; + $smart_creditData['last_name'] = $inputData['last_name']; + $smart_creditData['client_ip'] = getClientIpAddress(); + $smart_creditData['zip'] = $inputData['zip_code']; + $smart_creditData['street'] = $inputData['street_no'] . " " . $inputData['street_name']; + $smart_creditData['phone'] = $inputData['phone']; + $smart_creditData['dob'] = $inputData['birth_date']; + $smart_creditData['ssn'] = $inputData['full_ssn']; + $smart_creditData['partial_ssn'] = $inputData['ssn']; + $smart_creditData['sqa_answer'] = "Creditzombies"; + $smart_creditData['sqa_question'] = 1; + return $smart_creditData; + } + + public function purchasePackage($inputData){ + $logData['action'] = "PURCHASE_PACKAGE"; + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + + if(!isset($inputData['user_id'])){ + $inputData['user_id'] = 0; + } + + $trace_string = ""; + try { + // start begin transaction + DB::beginTransaction(); + $is_import = 0; + $wave = $inputData['wave'] ?? 0; + $is_subscribed = 0; + $last_payment_date = $inputData['last_payment_date'] ?? null; + if(($inputData['status_code'] == config('constant.API_SUCCESS_CODE') && $inputData['user_id']>0) || $inputData['is_free'] == 1) + { + $is_import = 1; + $wave += 1; + $is_subscribed = 1; + $last_payment_date = getCurrentDateTime(); + $creditReportData['user_id'] = $inputData['user_id']; + $creditReportData['email'] = $inputData['email']; + $creditReportData['password'] = $inputData['password']; + $creditReportData['report_type'] = config('app.REPORT_PROVIDER') ?? 3; + + (new Creditreport())->insertCreditReport($creditReportData); + + $updateUserData['zip_code'] = $inputData['zip_code']; + $updateUserData['phone'] = $inputData['phone']; + $updateUserData['is_import'] = $is_import; + $updateUserData['subscription_status'] = $is_subscribed; + $updateUserData['wave'] = $wave; + $updateUserData['last_payment_date'] = $last_payment_date; + $updateUserData['user_access_end_date'] = getDateAfterSpicificDay($last_payment_date,config('constant.PAYMENT_INTERVAL_DAY')); + (new User())->userupdate($updateUserData,$inputData['user_id']); + } + + + DB::commit(); + + $this->message = __("Account creation completed"); + $this->status_code = config('constant.API_SUCCESS_CODE'); + + } catch (\Exception $ex){ + DB::rollback(); + $this->message = $ex->getMessage(); + $this->status_code = config('constant.API_FAILED_CODE'); + $trace_string = $ex->getTraceAsString(); + } + + $logData['data']['message'] = $this->message; + $logData['data']['status_code'] = $this->status_code; + + if(!empty($trace_string)) { + $logData['data']['trace'] = $trace_string; + } + + appLog($logData); + + } + + public function purchasePackages($inputData){ + $logData['action'] = "PURCHASE_PACKAGE"; + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + + if(!isset($inputData['user_id'])){ + $inputData['user_id'] = 0; + } + + $trace_string = ""; + try { + // start begin transaction + DB::beginTransaction(); + + $is_subscribed = 0; + $last_payment_date = $inputData['last_payment_date'] ?? null; + if($inputData['status_code'] == config('constant.API_SUCCESS_CODE') && $inputData['user_id']>0) + { + + $is_subscribed = 1; + $last_payment_date = getCurrentDateTime(); + $creditReportData['user_id'] = $inputData['user_id']; + $creditReportData['email'] = $inputData['email']; + $creditReportData['password'] = $inputData['password']; + $creditReportData['report_type'] = config('app.REPORT_PROVIDER') ?? 3; + + (new Creditreport())->insertCreditReport($creditReportData); + + $updateUserData['zip_code'] = $inputData['zip_code']; + $updateUserData['phone'] = $inputData['phone']; + $updateUserData['subscription_status'] = $is_subscribed; + $updateUserData['last_payment_date'] = $last_payment_date; + (new User())->userupdate($updateUserData,$inputData['user_id']); + } + + + DB::commit(); + + $this->message = __("Account creation completed"); + $this->status_code = config('constant.API_SUCCESS_CODE'); + + } catch (\Exception $ex){ + DB::rollback(); + $this->message = $ex->getMessage(); + $this->status_code = config('constant.API_FAILED_CODE'); + $trace_string = $ex->getTraceAsString(); + } + + $logData['data']['message'] = $this->message; + $logData['data']['status_code'] = $this->status_code; + + if(!empty($trace_string)) { + $logData['data']['trace'] = $trace_string; + } + + appLog($logData); + + } + + public function customerCreditReportStatus($inputData) + { + $creditReportDataObj = (new Creditreport())->getCreditReportInfoByUserIdAndType($inputData['user_id'], $inputData['report_type']); + if (!empty($creditReportDataObj)) { + $password = customDecrypt($creditReportDataObj->password); + $inputData['email'] = $creditReportDataObj->email; + $inputData['password'] = $password; + $apiResponse = (new SmartCredit(config('app.CLIENT_KEY')))->customerSubscription($inputData); + if($apiResponse->status_code == config('constant.API_SUCCESS_CODE')) { + $this->data = $apiResponse->data; + $this->status_code = $apiResponse->status_code; + $this->message = $apiResponse->message; + } + } + return $this; + } + + private function sales($inputData){ + $saleData = []; + $saleData['order_id'] = $inputData['order_id']; + $saleData['ip'] = getClientIpAddress(); + $saleData['status'] = $inputData['sale_status']; + $saleData['auth_code'] = $inputData['auth_code']; + $saleData['transaction_id'] = $inputData['transaction_id']; + $saleData['user_id'] = $inputData['user_id'] ?? 0; + $saleData['cc_number'] =creditCardNumberMasking($inputData['card_number']); + return (new Sale())->createSale($saleData); + } + + public function paymentFailedMail($inputData) + { + + $data['email'] = $inputData['email']; + $data['email_body'] = $inputData['first_name'] . ' ' . $inputData['last_name']; + $data['email_subject'] = "Payment Failed"; + $from = null; + $attachment = null; + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.payment_failed_letter', $data['email']); + + } +} diff --git a/app/Services/Payment/GateWay.php b/app/Services/Payment/GateWay.php new file mode 100644 index 0000000..d90341a --- /dev/null +++ b/app/Services/Payment/GateWay.php @@ -0,0 +1,14 @@ +login['security_key'] = $security_key; + $this->pay_log_id = "LOG_".getSecurityKey(); + } + + function setOrder($orderid, + $orderdescription, + $tax, + $shipping, + $ponumber, + $ipaddress) { + $this->order['orderid'] = $orderid; + $this->order['orderdescription'] = $orderdescription; + $this->order['tax'] = $tax; + $this->order['shipping'] = $shipping; + $this->order['ponumber'] = $ponumber; + $this->order['ipaddress'] = $ipaddress; + } + + function setBilling($firstname, + $lastname, + $company, + $address1, + $address2, + $city, + $state, + $zip, + $country, + $phone, + $fax, + $email, + $website) { + $this->billing['firstname'] = $firstname; + $this->billing['lastname'] = $lastname; + $this->billing['company'] = $company; + $this->billing['address1'] = $address1; + $this->billing['address2'] = $address2; + $this->billing['city'] = $city; + $this->billing['state'] = $state; + $this->billing['zip'] = $zip; + $this->billing['country'] = $country; + $this->billing['phone'] = $phone; + $this->billing['fax'] = $fax; + $this->billing['email'] = $email; + $this->billing['website'] = $website; + } + + function setShipping($firstname, + $lastname, + $company, + $address1, + $address2, + $city, + $state, + $zip, + $country, + $email) { + $this->shipping['firstname'] = $firstname; + $this->shipping['lastname'] = $lastname; + $this->shipping['company'] = $company; + $this->shipping['address1'] = $address1; + $this->shipping['address2'] = $address2; + $this->shipping['city'] = $city; + $this->shipping['state'] = $state; + $this->shipping['zip'] = $zip; + $this->shipping['country'] = $country; + $this->shipping['email'] = $email; + } + + public static function nmiAmountValueFormat($value){ + return number_format($value,2,".",""); + } + + private function preparePaymentData($inputData) + { + + $this->preparePaymentData['type'] = "sale"; + $this->preparePaymentData['ccnumber'] = $inputData['card_number']; + $this->preparePaymentData['ccexp'] = $inputData['expiry']; + $this->preparePaymentData['amount'] = self::nmiAmountValueFormat($inputData['amount']); + $this->preparePaymentData['cvv'] = $inputData['cvv'] ?? ""; + + $this->preparePaymentData['orderid'] = $inputData['order_id']; + $this->preparePaymentData['orderdescription'] = $inputData['order_description']; + $this->preparePaymentData['tax'] = number_format($inputData['tax'],2,".","") ; + $this->preparePaymentData['shipping'] = number_format($inputData['shipping'],2,".",""); + $this->preparePaymentData['ponumber'] = $inputData['ponumber']; + $this->preparePaymentData['ipaddress'] = $inputData['ip']; + + $this->preparePaymentData['firstname'] = $inputData['first_name']; + $this->preparePaymentData['lastname'] = $inputData['last_name']; + $this->preparePaymentData['company'] = $inputData['company']; + $this->preparePaymentData['address1'] = $inputData['address1']; + $this->preparePaymentData['address2'] = $inputData['address2']; + $this->preparePaymentData['city'] = $inputData['city']; + $this->preparePaymentData['state'] = $inputData['state']; + $this->preparePaymentData['zip'] = $inputData['zip']; + $this->preparePaymentData['country'] = $inputData['country']; + $this->preparePaymentData['email'] = $inputData['email']; + $this->preparePaymentData['phone'] = $inputData['phone']; + $this->preparePaymentData['fax'] = $inputData['fax']; + $this->preparePaymentData['website'] = $inputData['website']; + + $this->preparePaymentData['shipping_firstname'] = $inputData['first_name']; + $this->preparePaymentData['shipping_lastname'] = $inputData['last_name']; + $this->preparePaymentData['shipping_company'] = $inputData['company']; + $this->preparePaymentData['shipping_address1'] = $inputData['address1']; + $this->preparePaymentData['shipping_address2'] = $inputData['address2']; + $this->preparePaymentData['shipping_city'] = $inputData['city']; + $this->preparePaymentData['shipping_state'] = $inputData['state']; + $this->preparePaymentData['shipping_zip'] = $inputData['zip']; + $this->preparePaymentData['shipping_country'] = $inputData['country']; + $this->preparePaymentData['shipping_email'] = $inputData['email']; + } + + // Transaction Functions + + private function doSale() { + + if(empty($this->preparePaymentData)){ + throw new \Exception('You must have to set payment data by calling preparePaymentData method.'); + } + + /* + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Sales Information + $query .= "ccnumber=" . urlencode($ccnumber) . "&"; + $query .= "ccexp=" . urlencode($ccexp) . "&"; + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + $query .= "cvv=" . urlencode($cvv) . "&"; + // Order Information + $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; + $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; + $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; + $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; + $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; + $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; + // Billing Information + $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; + $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; + $query .= "company=" . urlencode($this->billing['company']) . "&"; + $query .= "address1=" . urlencode($this->billing['address1']) . "&"; + $query .= "address2=" . urlencode($this->billing['address2']) . "&"; + $query .= "city=" . urlencode($this->billing['city']) . "&"; + $query .= "state=" . urlencode($this->billing['state']) . "&"; + $query .= "zip=" . urlencode($this->billing['zip']) . "&"; + $query .= "country=" . urlencode($this->billing['country']) . "&"; + $query .= "phone=" . urlencode($this->billing['phone']) . "&"; + $query .= "fax=" . urlencode($this->billing['fax']) . "&"; + $query .= "email=" . urlencode($this->billing['email']) . "&"; + $query .= "website=" . urlencode($this->billing['website']) . "&"; + // Shipping Information + $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; + $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; + $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; + $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; + $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; + $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; + $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; + $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; + $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; + $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; + + $query .= "type=sale"; + + return $this->_doPost($query); +*/ + $query = ""; + // Login Information + + if(!empty($this->preparePaymentData)) { + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + + foreach ($this->preparePaymentData as $key => $value) { + $query .= "&{$key}=" . urlencode($value); + } + } + + if(!empty($query)){ + return $this->_doPost($query); + } + + return false; + } + + function doAuth($amount, $ccnumber, $ccexp, $cvv="") { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Sales Information + $query .= "ccnumber=" . urlencode($ccnumber) . "&"; + $query .= "ccexp=" . urlencode($ccexp) . "&"; + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + $query .= "cvv=" . urlencode($cvv) . "&"; + // Order Information + $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; + $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; + $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; + $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; + $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; + $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; + // Billing Information + $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; + $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; + $query .= "company=" . urlencode($this->billing['company']) . "&"; + $query .= "address1=" . urlencode($this->billing['address1']) . "&"; + $query .= "address2=" . urlencode($this->billing['address2']) . "&"; + $query .= "city=" . urlencode($this->billing['city']) . "&"; + $query .= "state=" . urlencode($this->billing['state']) . "&"; + $query .= "zip=" . urlencode($this->billing['zip']) . "&"; + $query .= "country=" . urlencode($this->billing['country']) . "&"; + $query .= "phone=" . urlencode($this->billing['phone']) . "&"; + $query .= "fax=" . urlencode($this->billing['fax']) . "&"; + $query .= "email=" . urlencode($this->billing['email']) . "&"; + $query .= "website=" . urlencode($this->billing['website']) . "&"; + // Shipping Information + $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; + $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; + $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; + $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; + $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; + $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; + $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; + $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; + $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; + $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; + $query .= "type=auth"; + return $this->_doPost($query); + } + + function doCredit($amount, $ccnumber, $ccexp) { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Sales Information + $query .= "ccnumber=" . urlencode($ccnumber) . "&"; + $query .= "ccexp=" . urlencode($ccexp) . "&"; + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + // Order Information + $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; + $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; + $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; + $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; + $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; + $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; + // Billing Information + $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; + $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; + $query .= "company=" . urlencode($this->billing['company']) . "&"; + $query .= "address1=" . urlencode($this->billing['address1']) . "&"; + $query .= "address2=" . urlencode($this->billing['address2']) . "&"; + $query .= "city=" . urlencode($this->billing['city']) . "&"; + $query .= "state=" . urlencode($this->billing['state']) . "&"; + $query .= "zip=" . urlencode($this->billing['zip']) . "&"; + $query .= "country=" . urlencode($this->billing['country']) . "&"; + $query .= "phone=" . urlencode($this->billing['phone']) . "&"; + $query .= "fax=" . urlencode($this->billing['fax']) . "&"; + $query .= "email=" . urlencode($this->billing['email']) . "&"; + $query .= "website=" . urlencode($this->billing['website']) . "&"; + $query .= "type=credit"; + return $this->_doPost($query); + } + + function doOffline($authorizationcode, $amount, $ccnumber, $ccexp) { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Sales Information + $query .= "ccnumber=" . urlencode($ccnumber) . "&"; + $query .= "ccexp=" . urlencode($ccexp) . "&"; + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + $query .= "authorizationcode=" . urlencode($authorizationcode) . "&"; + // Order Information + $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; + $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; + $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; + $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; + $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; + $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; + // Billing Information + $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; + $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; + $query .= "company=" . urlencode($this->billing['company']) . "&"; + $query .= "address1=" . urlencode($this->billing['address1']) . "&"; + $query .= "address2=" . urlencode($this->billing['address2']) . "&"; + $query .= "city=" . urlencode($this->billing['city']) . "&"; + $query .= "state=" . urlencode($this->billing['state']) . "&"; + $query .= "zip=" . urlencode($this->billing['zip']) . "&"; + $query .= "country=" . urlencode($this->billing['country']) . "&"; + $query .= "phone=" . urlencode($this->billing['phone']) . "&"; + $query .= "fax=" . urlencode($this->billing['fax']) . "&"; + $query .= "email=" . urlencode($this->billing['email']) . "&"; + $query .= "website=" . urlencode($this->billing['website']) . "&"; + // Shipping Information + $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; + $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; + $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; + $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; + $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; + $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; + $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; + $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; + $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; + $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; + $query .= "type=offline"; + return $this->_doPost($query); + } + + function doCapture($transactionid, $amount =0) { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Transaction Information + $query .= "transactionid=" . urlencode($transactionid) . "&"; + if ($amount>0) { + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + } + $query .= "type=capture"; + return $this->_doPost($query); + } + + function doVoid($transactionid) { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Transaction Information + $query .= "transactionid=" . urlencode($transactionid) . "&"; + $query .= "type=void"; + return $this->_doPost($query); + } + + function doRefund($transactionid, $amount = 0) { + + $query = ""; + // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // Transaction Information + $query .= "transactionid=" . urlencode($transactionid) . "&"; + if ($amount>0) { + $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; + } + $query .= "type=refund"; + return $this->_doPost($query); + } + + + function doRecurringUpdate() + { + $query = ""; +// // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // update subscription + $query .= "recurring=" . urlencode($this->recurringData['recurring']) . "&"; + $query .= "subscription_id=" . urlencode($this->recurringData['subscription_id']); + + return $this->_doPost($query); + + } + function doTransactionInfo() + { + $query = ""; +// // Login Information + $query .= "security_key=" . urlencode($this->login['security_key']) . "&"; + // update subscription + $query .= "transaction_id=" . urlencode($this->recurringData['transaction_id']) . "&"; + $query .= "subscription_id=" . urlencode($this->recurringData['subscription_id']); + + return $this->_doPost($query); + + } + + function _doPost($query) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $this->base_url); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + + curl_setopt($ch, CURLOPT_POSTFIELDS, $query); + curl_setopt($ch, CURLOPT_POST, 1); + + if (!($data = curl_exec($ch))) { + return 3; + } + curl_close($ch); + unset($ch); + // print "\n$data\n"; + + $data = explode("&",$data); + for($i=0;$iresponses[$rdata[0]] = $rdata[1]; + } + return $this->responses['response']; + } + function doRecurring() + { + // Login Information + $query_string = ""; + + if(!empty($this->recurringData)){ + $query_string .= "security_key=" . urlencode($this->login['security_key']); + foreach ($this->recurringData as $key => $value){ + $query_string .= "&{$key}=".urlencode($value); + } + } + + if(!empty($query_string)){ + return $this->_doPost($query_string); + } + + return false; + + } + + /** + * @throws \Exception + */ + public function prepareData($inputData): array + { + if(empty($inputData['order_id'])){ + throw new \Exception('Order id missing'); + } + + if(empty($inputData['order_description'])){ + throw new \Exception('order description missing'); + } + + if(empty($inputData['ip'])){ + throw new \Exception('ip missing'); + } + $prepareData['first_name'] = $inputData['first_name']; + $prepareData['last_name'] = $inputData['last_name']; + $prepareData['company'] = $inputData['company'] ?? config('app.name'); + $prepareData['address1'] = $inputData['street_no']; + $prepareData['address2'] = $inputData['street_name']; + $prepareData['city']= $inputData['city']; + $prepareData['state']= $inputData['state']; + $prepareData['zip']= $inputData['zip_code']; + $prepareData['country']= $inputData['country'] ?? 'US'; + $prepareData['phone']= $inputData['phone']; + $prepareData['fax']= $inputData['fax'] ?? ""; + $prepareData['email']= $inputData['email']; + $prepareData['website'] = $inputData['website'] ?? ""; + + $prepareData['order_id']= $inputData['order_id']; + $prepareData['order_description']= $inputData['order_description']; + $prepareData['tax']= 1; + $prepareData['shipping']= 1; + $prepareData['ponumber']= "PO1234"; + $prepareData['ip'] = $inputData['ip']; + + $prepareData['amount']= $inputData['amount']; + $prepareData['card_number']= $inputData['card_number']; + $prepareData['expiry'] = str_replace("/","",$inputData['expiry']); + + return $prepareData; + } + + /** + * @throws \Exception + */ + public function makePayment($prepareData) + { + $result = []; +// $logData['action'] = "NMI_PAYMENT"; + $this->setLogin(config('app.NMI_SECURITY_KEY')); +/* + $this->setBilling( + $prepareData['first_name'], + $prepareData['last_name'], + $prepareData['company'], + $prepareData['address1'], + $prepareData['address2'], + $prepareData['city'], + $prepareData['state'], + $prepareData['zip'], + $prepareData['country'], + $prepareData['phone'], + $prepareData['fax'], + $prepareData['email'], + $prepareData['website'] + ); + + $this->setShipping( + $prepareData['first_name'], + $prepareData['last_name'], + $prepareData['company'], + $prepareData['address1'], + $prepareData['address2'], + $prepareData['city'], + $prepareData['state'], + $prepareData['zip'], + $prepareData['country'], + $prepareData['email'] + ); + + $this->setOrder( + $prepareData['order_id'], + $prepareData['order_description'], + $prepareData['tax'], + $prepareData['shipping'], + $prepareData['ponumber'], //"PO1234", + $prepareData['ip'] + ); +*/ + + $this->preparePaymentData($prepareData); + $this->doSale(); +// $this->responseDataSample(); + $result['status_code'] = config('constant.API_FAILED_CODE'); + + $result['auth_code'] = $this->responses['authcode'] ?? ""; + $result['transaction_id'] = $this->responses['transactionid'] ?? ""; + $result['order_id'] = $this->responses['orderid'] ?? ""; + $result['message'] = $this->responses['responsetext'] ?? ""; + + if(isset($this->responses['response_code']) && $this->responses['response_code'] == config('constant.API_SUCCESS_CODE')){ + $result['status_code'] = config('constant.API_SUCCESS_CODE'); + } + +// $logData['data'] = $this->responses; + $this->logData['NMI_PAYMENT_API_LOG'][$this->pay_log_id]["MAKE_PAYMENT"]= $this->prepareLogData($this->base_url,'POST',$prepareData); + + appLog($this->logData); + + return $result; + } + public function makeRecurringPayment($inputData) + { + $result=[]; + $result['status'] = false; + $this->setLogin(config('app.NMI_SECURITY_KEY')); + $this->prepareRecurringData($inputData); + $this->doRecurring(); + + $result['status_code'] = config('constant.API_FAILED_CODE'); + + $result['transaction_status'] = $this->responses['response'] ?? 0; + $result['transaction_id'] = $this->responses['transactionid'] ?? ""; + $result['subscription_id'] = $this->responses['subscription_id'] ?? ""; + $result['message'] = $this->responses['responsetext'] ?? ""; + + if(isset($this->responses['response_code']) && $this->responses['response_code'] == config('constant.API_SUCCESS_CODE')) + { + $result['status_code'] = config('constant.API_SUCCESS_CODE'); + $result['status'] = true; + } + + $this->logData['NMI_RECURRING_API_LOG'][$this->pay_log_id]["MAKE_RECURRING"]= $this->prepareLogData($this->base_url,'POST',$inputData); + + appLog( $this->logData); + + return $result; + } + + // prepare data for add subscription in existing plan + public function prepareRecurringData($prepareData) + { + + /* + first_name Cardholder's first name. Legacy variable includes: firstname + last_name Cardholder's last name. Legacy variable includes: lastname + address1 Card billing address. + city Card billing city + state Card billing state. + zip Card billing postal code. + country Card billing country code. + phone Billing phone number. + email Billing email address. + company Cardholder's company. + address2 Card billing address, line 2. + fax Billing fax number. + */ + + // these are mandatory field for CZ + + $this->recurringData['recurring'] = 'add_subscription'; + $this->recurringData['plan_id'] = "creditzombiesplan"; + $this->recurringData['payment'] = "creditcard"; + $this->recurringData['company'] = "Creditzombies"; + $this->recurringData['country'] = "US"; + + // these are mandatory field for CZ + + $this->recurringData['ccnumber'] = $prepareData['card_number']; + $this->recurringData['ccexp'] = $prepareData['expiry']; + $this->recurringData['first_name'] = $prepareData['first_name']; + $this->recurringData['last_name'] = $prepareData['last_name']; + $this->recurringData['address1'] = $prepareData['street_no']; + $this->recurringData['address2'] = $prepareData['street_name']; + $this->recurringData['city'] = $prepareData['city']; + $this->recurringData['state'] = $prepareData['state']; + $this->recurringData['zip'] = $prepareData['zip_code']; + $this->recurringData['phone'] = $prepareData['phone']; + $this->recurringData['email'] = $prepareData['email']; + + } + + private function prepareLogData($url,$method,$request_data){ + if(isset($request_data['ccnumber'])){ + $request_data['ccnumber'] = "*********"; + } + if(isset($request_data['card_number'])){ + $request_data['card_number'] = "*********"; + } + if(!empty($request_data['password'])){ + $request_data['password'] = "*********"; + } + + return [ + 'request' => [ + 'url' => $url, + 'method' => $method, + 'body'=> $request_data, + 'Header'=>[ + 'ContentType' => 'application/x-www-form-urlencoded' + ] + ], + 'response' => $this->responses + ]; + } + + private function getRecurringBySubscriptionId($security_key,$constraints){ + // transactionFields has all of the fields we want to validate + // in the transaction tag in the XML output + $transactionFields = array( + 'transaction_id', + 'partial_payment_id', + 'partial_payment_balance', + 'platform_id', + 'transaction_type', + 'condition', + 'order_id', + 'authorization_code', + 'ponumber', + 'order_description', + + 'first_name', + 'last_name', + 'address_1', + 'address_2', + 'company', + 'city', + 'state', + 'postal_code', + 'country', + 'email', + 'phone', + 'fax', + 'cell_phone', + 'customertaxid', + 'customerid', + 'website', + + 'shipping_first_name', + 'shipping_last_name', + 'shipping_address_1', + 'shipping_address_2', + 'shipping_company', + 'shipping_city', + 'shipping_state', + 'shipping_postal_code', + 'shipping_country', + 'shipping_email', + 'shipping_carrier', + 'tracking_number', + 'shipping_date', + 'shipping', + 'shipping_phone', + + 'cc_number', + 'cc_hash', + 'cc_exp', + 'cavv', + 'cavv_result', + 'xid', + 'eci', + 'avs_response', + 'csc_response', + 'cardholder_auth', + 'cc_start_date', + 'cc_issue_number', + 'check_account', + 'check_hash', + 'check_aba', + 'check_name', + 'account_holder_type', + 'account_type', + 'sec_code', + 'drivers_license_number', + 'drivers_license_state', + 'drivers_license_dob', + 'social_security_number', + + 'processor_id', + 'tax', + 'currency', + 'surcharge', + 'tip', + + 'card_balance', + 'card_available_balance', + 'entry_mode', + 'cc_bin', + 'cc_type' + ); + + // actionFields is used to validate the XML tags in the + // action element + $actionFields = array( + 'amount', + 'action_type', + 'date', + 'success', + 'ip_address', + 'source', + 'api_method', + 'username', + 'response_text', + 'batch_id', + 'processor_batch_id', + 'response_code', + 'processor_response_text', + 'processor_response_code', + 'device_license_number', + 'device_nickname' + ); + + $mycurl=curl_init(); + $postStr='security_key='.$security_key.$constraints; + $url="https://secure.nmi.com/api/query.php?". $postStr; + curl_setopt($mycurl, CURLOPT_URL, $url); + curl_setopt($mycurl, CURLOPT_RETURNTRANSFER, 1); + $responseXML=curl_exec($mycurl); + curl_close($mycurl); + + $testXmlSimple= new \SimpleXMLElement($responseXML); + + if (!isset($testXmlSimple->transaction)) { + throw new \Exception('No transactions returned'); + } + + $transNum = 1; + foreach($testXmlSimple->transaction as $transaction) { + foreach ($transactionFields as $xmlField) { + if (!isset($transaction->{$xmlField}[0])){ + throw new \Exception('Error in transaction_id:'. $transaction->transaction_id[0] .' id Transaction tag is missing field ' . $xmlField); + } + } + if (!isset ($transaction->action)) { + throw new \Exception('Error, Action tag is missing from transaction_id '. $transaction->transaction_id[0]); + } + + $actionNum = 1; + foreach ($transaction->action as $action){ + foreach ($actionFields as $xmlField){ + if (!isset($action->{$xmlField}[0])){ + throw new \Exception('Error with transaction_id'.$transaction->transaction_id[0].' + Action number '. $actionNum . ' Action tag is missing field ' . $xmlField); + } + } + $actionNum++; + } + $transNum++; + } + + return $testXmlSimple; + } + + public function getRecurringInfoBySubscriptionId($inputData){ + $this->responses['data'] = []; + try { + $this->setLogin(config('app.NMI_SECURITY_KEY')); +// $this->login['security_key'] = config('app.NMI_SECURITY_KEY'); + $this->pay_log_id = "LOG_".generateUniqueId(); + $constraints = "&subscription_id={$inputData['subscription_id']}&condition=complete&start_date={$inputData['start_date']}&end_date={$inputData['end_date']}"; + $result = $this->getRecurringBySubscriptionId($this->login['security_key'],$constraints); + $result_json = json_encode($result); + $result_json_array = json_decode($result_json,TRUE); + $this->responses['data'] = $result_json_array['transaction']; + $this->responses['status_code'] = config('constant.API_SUCCESS_CODE'); + $this->responses['message'] = "Successfully get data."; + + } catch (\Exception $e) { + + $this->responses['message'] = $e->getMessage(); + $this->responses['status_code'] = config('constant.API_FAILED_CODE'); + + } + $this->logData['NMI_PAYMENT_API_LOG'][$this->pay_log_id]["SUBSCRIPTION_UPDATE_FOR_RECURRING"]= $this->prepareLogData($this->base_url,'POST',$inputData); + + appLog( $this->logData); + + return $this->responses; + } + + private function responseDataSample() + { + $data = '{"response": "2","responsetext": "Issuer Declined MCC","authcode": " ","transactionid": "8105207298", + "avsresponse": "Y","cvvresponse": "","orderid": "167760085077649","type": "sale","response_code": "204" + }'; + $this->responses = json_decode($data,true); + } + + public function deleteRecurringPayment($inputData) + { + $result = []; + $result['status'] = false; + $this->setLogin(config('app.NMI_SECURITY_KEY')); + $this->prepareDeleteRecurringData($inputData); + $this->doRecurring(); + + $result['status_code'] = config('constant.API_FAILED_CODE'); + + $result['transaction_status'] = $this->responses['response'] ?? 0; + $result['transaction_id'] = $this->responses['transactionid'] ?? ""; + $result['subscription_id'] = $this->responses['subscription_id'] ?? ""; + $result['message'] = $this->responses['responsetext'] ?? ""; + + if(isset($this->responses['response_code']) && $this->responses['response_code'] == config('constant.API_SUCCESS_CODE')) + { + $result['status_code'] = config('constant.API_SUCCESS_CODE'); + $result['status'] = true; + } + + $this->logData['NMI_RECURRING_API_LOG'][$this->pay_log_id]["DELETE_MAKE_RECURRING"]= $this->prepareLogData($this->base_url,'POST',$inputData); + + appLog( $this->logData); + + return $result; + } + + private function prepareDeleteRecurringData($prepareData) + { + $this->recurringData['recurring'] = 'delete_subscription'; + $this->recurringData['subscription_id'] = $prepareData['subscription_id']; + } + +} diff --git a/app/Services/Payment/Payment.php b/app/Services/Payment/Payment.php new file mode 100644 index 0000000..5561a92 --- /dev/null +++ b/app/Services/Payment/Payment.php @@ -0,0 +1,36 @@ +paymentData = $inputData; + $this->payment = $payment; + } + + public function pay() + { + return $this->payment->makePayment($this->payment->prepareData($this->paymentData)); + } + + public function makeRecurringPayment() + { + return $this->payment->makeRecurringPayment($this->paymentData); + } + + public function deleteSubscription() + { + return $this->payment->deleteRecurringPayment($this->paymentData); + } + public function getSubscriptionInfoBySubscriptionId() + { + return $this->payment->getRecurringInfoBySubscriptionId($this->paymentData); + } + +} diff --git a/app/Services/Payment/PaymentInterface.php b/app/Services/Payment/PaymentInterface.php new file mode 100644 index 0000000..d4167db --- /dev/null +++ b/app/Services/Payment/PaymentInterface.php @@ -0,0 +1,12 @@ +id; + if ($saved = (new CardToken())->createPayment($modelData)) { + $result = true; + } + return $result; + + } + public function getUserPackage($user_id) + { + $userPackage = UserPackage::join('packages', 'user_packages.package_id', '=', 'packages.id') + ->where('user_packages.user_id',$user_id) + ->first(['user_packages.*', 'packages.amount']); + return $userPackage; + } + public function makePayment($inputData){ + $result = false; + $this->status_code = config('constant.API_FAILED_CODE'); + $inputData['order_id'] = generateOrderId(); + $inputData['order_description'] = "Creditzombies Package"; + $inputData['ip'] = getClientIpAddress(); + // create pending sale + $tmpSaleData=[ + 'order_id' => $inputData['order_id'] + ]; + + $tmpSaleInsertedData = (new TmpSale())->createTmpSale($tmpSaleData); + + // send payment request + $response = (new Payment(GateWay::getGateWayInstance(config('constant.PAYMENT_GATEWAY.NMI')), $inputData))->pay(); + + // log from payment gate way + appLog([ + 'action'=>'PAYMENT_GATEWAY_RESPONSE', + 'response'=>$response + ]); + + $this->message = $response['message']; + + $sale_status = config('constant.SALE_STATUS.FAILED'); + $inputData['status_code'] = $response['status_code']; + + if($response['status_code'] == config('constant.API_SUCCESS_CODE')){ + + $this->status_code = $response['status_code']; + $sale_status = config('constant.SALE_STATUS.COMPLETED'); + $this->message = __("Successfully paid"); + + } + + // from payment response insert sale table with auth_code, trans_id, invoice_id, order_id + $inputData['sale_status'] = $sale_status; + $inputData['auth_code'] = $response['auth_code'] ?? ""; + $inputData['transaction_id'] = $response['transaction_id'] ?? ""; + $this->sales($inputData); + // delete pending sale + (new TmpSale())->deleteTmpSaleById($tmpSaleInsertedData->id); + + if($inputData['status_code'] == config('constant.API_FAILED_CODE')) { + $this->paymentFailedMail($inputData); + } + + if($sale_status == config('constant.SALE_STATUS.COMPLETED')){ + $result = true; + } + + return [ + 'status'=>$result, + 'order_id'=> $inputData['order_id'] ?? 0 + ]; + } + private function sales($inputData){ + $saleData = []; + $saleData['order_id'] = $inputData['order_id']; + $saleData['ip'] = getClientIpAddress(); + $saleData['status'] = $inputData['sale_status']; + $saleData['auth_code'] = $inputData['auth_code']; + $saleData['transaction_id'] = $inputData['transaction_id']; + $saleData['user_id'] = $inputData['user_id'] ?? 0; + $saleData['cc_number'] =creditCardNumberMasking($inputData['card_number']); + return (new Sale())->createSale($saleData); + } + + public function paymentFailedMail($inputData) + { + + $data['email'] = $inputData['email']; + $data['email_body'] = $inputData['first_name'] . ' ' . $inputData['last_name']; + $data['email_subject'] = "Payment Failed"; + $from = null; + $attachment = null; + (new Email())->send($data, $data['email_subject'], $from, $attachment, 'email.payment_failed_letter', $data['email']); + + } + +} diff --git a/app/Services/Register.php b/app/Services/Register.php new file mode 100644 index 0000000..cfc336c --- /dev/null +++ b/app/Services/Register.php @@ -0,0 +1,84 @@ +addUser($inputData)) { + $result = $saved; + $result['security_key'] = customEncrypt(json_encode(['user_id'=>$saved->id])); + } + + return $result; + } + + public function addProfile($inputData,$user_id):bool{ + $result = false; + $user = app(\App\Models\User::class); + if ($saved = $user->userupdate($inputData,$user_id)) { + $result = true; + } + + return $result; + } + /** + * @throws Exception + */ + public function addPackage($package_id, $user_id){ + + $comapanyTypeArray = [ + '1'=>3, + '2'=>3, + '3'=>1 + ]; + + $userPackage = new UserPackage(); + + if($userPackage->isExistPackage($package_id,$user_id)){ + throw new \Exception("Package already taken."); + } + $inputData['package_id'] = $package_id; + $inputData['user_id'] = $user_id; + if(!$userPackage->setUserPackage($inputData)) { + throw new \Exception("Package doesn't added.Please try again!"); + } + + $user = app(\App\Models\User::class); + + $updateData['credit_report_company_type'] = $comapanyTypeArray[$inputData['package_id']]; + + if(!$user->userupdate($updateData,$inputData['user_id'])){ + throw new \Exception("Package doesn't added.Please try again!"); + } + + return true; + } + + public function emailVarification($inputData){ + $result = []; + $user = app(\App\Models\User::class); + if ($saved = $user->getUserByEmail($inputData)) { + $result = $saved; + } + return $result; + } + + public function roleList($inputData) + { + $result = []; + $submoduleResult=Submodule::join('modules', 'submodules.module_id', '=', 'modules.id') + ->select('submodules.*','modules.name as moduleName'); + + $result= $submoduleResult->get(); + + return $result; + + } +} diff --git a/app/Services/ReportService.php b/app/Services/ReportService.php new file mode 100644 index 0000000..7728310 --- /dev/null +++ b/app/Services/ReportService.php @@ -0,0 +1,15 @@ +getSalesList($inputData); + } + +} diff --git a/app/Services/SmartCredit/SmartCredit.php b/app/Services/SmartCredit/SmartCredit.php new file mode 100644 index 0000000..9572c12 --- /dev/null +++ b/app/Services/SmartCredit/SmartCredit.php @@ -0,0 +1,956 @@ +client_key = $client_key; + $this->api_base_url = (config('app.SMART_CREDIT_BASE_URL') ?? '')."/api/signup"; + $this->pws_base_url = config('app.PWS_SMART_CREDIT_BASE_URL') ?? ''; + $this->log_id = "LOG_".getSecurityKey(); + } + + /** + * @throws Exception + */ + private function setException($responseData){ + $this->status_code = config('constant.API_FAILED_CODE'); + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $responseData['errors'] = current($responseData['errors']); + $this->message = $responseData['errors']['message']; + }else{ + $this->message = "Somethings went to wrong."; + } + throw new \Exception($this->message); + } + + + public function setData($inputData): SmartCredit + { + $this->email = $inputData['email'] ?? ""; + $this->planType = $inputData['planType'] ?? ""; + $this->password = $inputData['password'] ?? ""; + $this->first_name = $inputData['first_name'] ?? ""; + $this->last_name = $inputData['last_name'] ?? ""; + $this->client_ip = $inputData['client_ip'] ?? ""; + $this->zip = $inputData['zip'] ?? ""; + $this->street = $inputData['street'] ?? ""; + $this->phone = $inputData['phone'] ?? ""; + $this->dob = $inputData['dob'] ?? ""; + $this->ssn = $inputData['ssn'] ?? ""; + $this->partial_ssn = $inputData['partial_ssn'] ?? ""; + $this->card_number = $inputData['card_number'] ?? ""; + $this->cvv = $inputData['cvv'] ?? ""; + $this->expiry = $inputData['expiry'] ?? ""; +// $this->sqa_answer = $inputData['sqa_answer']; +// $this->sqa_question = $inputData['sqa_question']; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request'] = $inputData; + + if(!empty($this->partial_ssn)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['partial_ssn'] = "XXXX"; + } + + if(!empty($this->ssn)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['ssn'] = "XXX-XX-XXXX"; + } + + if(!empty($this->card_number)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['card_number'] = "XXXXXXXXXXXX"; + } + + if(!empty($this->cvv)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['cvv'] = "XXX"; + } + + if(!empty($this->expiry)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['expiry'] = "XXXX"; + } + + if(!empty($this->password)){ + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['password'] = "XXXXXXXX"; + } + + + /*$this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['sqa_answer'] = "XXXX"; + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['user_request']['sqa_question'] = "XXXX";*/ + + return $this; + } + + /** + * @throws Exception + */ + + private function start(): void + { + + $url = $this->api_base_url . "/start"; + + $params = [ + 'clientKey' => $this->client_key, + 'PID' => $this->pid + ]; + + $responseData = (new HttpAsForm($url))->get($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["START"] = $this->prepareLogData($url,'GET',$params); + + if(!empty($responseData['trackingToken'])){ + $this->tracking_token = $responseData['trackingToken']; + }else{ + $this->setException($responseData); + } + + + //appLog($this->logData); + } + + /** + * @throws Exception + */ + + private function campaign(): void + { + + $url = $this->api_base_url . "/campaign"; + + $params = [ + 'clientKey' => $this->client_key, + 'PID' => $this->pid + ]; + $responseData = (new HttpAsForm($url))->get($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["CAMPAIGN"] = $this->prepareLogData($url,'GET',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->setException($responseData); + } + + + //appLog($this->logData); + } + + + /** + * @throws Exception + */ + + private function validateEmail(): void + { + + $url = $this->api_base_url ."/validate/email"; + + $params = [ + 'clientKey' => $this->client_key, + 'email'=>$this->email, + 'trackingToken'=>$this->tracking_token + ]; + + $responseData = (new HttpAsForm($url))->get($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["VALIDATE_EMAIL"] = $this->prepareLogData($url,'GET',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->setException($responseData); + } + + } + + /** + * @throws Exception + */ + + private function validateSponsorCode(): void + { + + $url = $this->api_base_url ."/validate/sponsor-code"; + + $params = [ + 'clientKey' => $this->client_key, + 'sponsorCode '=>$this->sponsorCodeString, + 'trackingToken'=>$this->tracking_token + ]; + + $responseData = (new HttpAsForm($url))->get($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["VALIDATE_SPONSOR_CODE"] = $this->prepareLogData($url,'GET',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->setException($responseData); + } + + } + + /** + * @throws Exception + */ + + private function validateSsn(): void + { + $url = $this->api_base_url . "/validate/ssn"; + + $params = [ + 'clientKey' => $this->client_key, + 'ssn' => $this->ssn, + 'trackingToken' => $this->tracking_token + ]; + + // optional parameter customer token + if (!empty($this->customer_token)) { + $params['customerToken'] = $this->customer_token; + } + + $responseData = (new HttpAsForm($url))->get($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["VALIDATE_SSN"] = $this->prepareLogData($url, 'GET', $params); + + if (isset($responseData['errors']) && !empty($responseData['errors'])) { + $this->setException($responseData); + } + + } + + /** + * @throws Exception + */ + + private function create(): void + { + + $url = $this->api_base_url ."/customer/create"; + + $params = [ + 'clientKey' => $this->client_key, + 'email'=>$this->email, + 'trackingToken'=>$this->tracking_token, + 'password'=>$this->password, + 'planType'=>$this->planType, + 'sponsorCodeString'=>$this->sponsorCodeString + ]; + + + $responseData = (new HttpAsForm($url))->post($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["CREATE"] = $this->prepareLogData($url,'POST',$params); + + if(!empty($responseData['customerToken'])){ + $this->customer_token = $responseData['customerToken']; + }else{ + $this->setException($responseData); + } + + } + + /** + * @throws Exception + */ + + private function updateIdentity(): void + { + + $url = $this->api_base_url . "/customer/update/identity"; + + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken' => $this->tracking_token, + 'customerToken' => $this->customer_token, + 'firstName' => $this->first_name, + 'lastName' => $this->last_name, + 'homeAddress.street' => $this->street, + 'homeAddress.zip' => $this->zip, + 'homePhone' => $this->phone, + 'identity.birthDate' => $this->dob, + 'identity.ssnPartial' => $this->partial_ssn, + 'identity.ssn' => $this->ssn, + 'isConfirmedTerms' => true, +// 'securityQuestionAnswer.answer' => $this->sqa_answer, +// 'securityQuestionAnswer.securityQuestionId' => $this->sqa_question, + 'confirmTermsBrowserIpAddress' => $this->client_ip + ]; + + $responseData = (new HttpAsForm($url))->post($params); + + $this->data = $responseData; + +// $action=($this->updateId==1)?"UPDATE_IDENTITY_1":"UPDATE_IDENTITY"; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["UPDATE_IDENTITY"] = $this->prepareLogData($url, 'POST', $params); + + if (isset($responseData['errors']) && !empty($responseData['errors'])) { + $this->setException($responseData); + } + + + //appLog($this->logData); + } + + /** + * @throws Exception + */ + + private function getIdVerification(): void + { + $url = $this->api_base_url ."/id-verification"; + + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$this->tracking_token, + 'customerToken'=>$this->customer_token + ]; + + $this->getIdVerificationApiCall($url,$params,1); + + if($this->status_code == config('constant.API_FAILED_CODE')){ + $this->getIdVerificationApiCall($url,$params,2); + } + + if($this->status_code == config('constant.API_FAILED_CODE')) { + $this->setException($this->data); + } + + } + + private function getIdVerificationApiCall($url,$params,$count){ + + $responseData = (new HttpAsForm($url))->get($params); + //$responseData = $this->identityQuestionAnswer(); + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["GET_ID_VERIFICATION"][$count] = $this->prepareLogData($url,'GET',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->status_code = config('constant.API_FAILED_CODE'); + }else{ + $this->status_code = config('constant.API_SUCCESS_CODE'); + $this->message = __('Account has been created successfully'); + } + + } + + private function prepareLogData($url,$method,$request_data){ + + if(isset($request_data['identity.ssnPartial'])){ + $request_data['identity.ssnPartial'] = "XXXX"; + } + + if(isset($request_data['identity.ssn'])){ + $request_data['identity.ssn'] = "XXX-XX-XXXX"; + } + + if(isset($request_data['ssn'])){ + $request_data['ssn'] = "XXX-XX-XXXX"; + } + + if(isset($request_data['password'])){ + $request_data['password'] = "XXXXXXX"; + } + + if(isset($request_data['j_password'])) + { + $request_data['j_password'] = "*********"; + } + + return [ + 'request' => [ + 'url' => $url, + 'method' => $method, + 'body'=> $request_data, + 'Header'=>[ + 'ContentType' => 'application/x-www-form-urlencoded' + ] + ], + 'response' => $this->data + ]; + } + + /** + * @throws Exception + */ + +// private function postIdVerification(): void +// { +// +// $this->logData['action'][] = $this->prefix."POST_ID_VERIFICATION"; +// +// $url = $this->api_base_url ."/id-verification"; +// +// $params = [ +// 'clientKey' => $this->client_key, +// 'trackingToken'=>$this->tracking_token, +// 'customerToken'=>$this->customer_token, +// 'idVerificationCriteria.answer1'=>'2003', +// 'idVerificationCriteria.answer2'=>'ConsumerDirect', +// 'idVerificationCriteria.answer3'=>'J. C. R. Licklider', +// 'idVerificationCriteria.answer4'=>'123 Main', +// 'idVerificationCriteria.answer5'=>'$450,000', +// 'idVerificationCriteria.referenceNumber'=>$this->refference +// ]; +// +// $responseData = (new HttpAsForm($url))->post($params); +// +// if(isset($responseData['errors']) && !empty($responseData['errors'])){ +// $this->setException($responseData); +// } +// +// } + + /** + * @throws Exception + */ + private function identityQuestionAnswer() + { + $data='{ + "idVerificationCriteria": { + "referenceNumber": "50fdbbbd-50a0-452a-8a86-9be0af826fdb", + "question1": { + "name": "ASSOC_ST_NAME", + "displayName": "Which of these street names are you associated with?", + "type": "IDMA", + "questionId": 2389852099, + "choiceList": { + "choice": [ + { + "key": "10742928663", + "display": "138th" + }, + { + "key": "10742928665", + "display": "Chamblee" + }, + { + "key": "10742928667", + "display": "Moonlake" + }, + { + "key": "10742928669", + "display": "Portland" + }, + { + "key": "10742928671", + "display": "None of the Above" + } + ] + } + }, + "question2": { + "name": "SSN_ISSUED", + "displayName": "What state was your social security number issued (this could be the state in which you were born or had your first job)?", + "type": "IDMA", + "questionId": 2389852101, + "choiceList": { + "choice": [ + { + "key": "10742928673", + "display": "Colorado" + }, + { + "key": "10742928675", + "display": "Florida" + }, + { + "key": "10742928677", + "display": "Louisiana" + }, + { + "key": "10742928679", + "display": "Massachusetts" + }, + { + "key": "10742928681", + "display": "None of the Above" + } + ] + } + }, + "question3": { + "name": "AUTO_TERM", + "displayName": "What is the term (in months) of your most recent auto loan or lease?", + "type": "IDMA", + "questionId": 2389852103, + "choiceList": { + "choice": [ + { + "key": "10742928683", + "display": "25 - 36" + }, + { + "key": "10742928685", + "display": "37 - 48" + }, + { + "key": "10742928687", + "display": "49 - 60" + }, + { + "key": "10742928689", + "display": "61 - 72" + }, + { + "key": "10742928691", + "display": "None of the Above" + } + ] + } + }, + "question4": { + "name": "ST_LOAN_PYMT", + "displayName": "What is the monthly payment of your student loan?", + "type": "IDMA", + "questionId": 2389852105, + "choiceList": { + "choice": [ + { + "key": "10742928693", + "display": "$ 1 - $ 50" + }, + { + "key": "10742928695", + "display": "$ 151 - $ 200" + }, + { + "key": "10742928697", + "display": "$ 201 - $ 250" + }, + { + "key": "10742928699", + "display": "$ 51 - $ 100" + }, + { + "key": "10742928701", + "display": "None of the Above" + } + ] + } + } + } + }'; + $returnData['data']=json_decode($data,true); + $returnData['message']='success'; + $returnData['status_code']='100'; +// $questionAnswerList=(new SmartCredit(config('app.CLIENT_KEY')))->security_questions(); + return $returnData['data']; + } + + private function validateCardNumber(): void + { + + $this->logData['action'][] = $this->prefix."VALIDATE_CARD_NUMBER"; + + $url = $this->api_base_url ."/validate/credit-card-number"; + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$this->tracking_token, + 'number'=>$this->card_number + ]; + + $responseData = (new HttpAsForm($url))->get($params); + + if(!empty($responseData['creditCardToken'])){ + $this->credit_card_token = $responseData['creditCardToken']; + }else{ + $this->setException($responseData); + } + + } + + + /** + * @throws Exception + */ + + private function updateCardNumber(): void + { + + $this->logData['action'][] = $this->prefix."UPDATE_CARD_NUMBER"; + + $url = $this->api_base_url ."/customer/update/credit-card"; + + $exploded = explode("/",$this->expiry); + $expirationMonth = $exploded[0]; + $expirationYear = $exploded[1]; + + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$this->tracking_token, + 'customerToken'=>$this->customer_token, + 'confirmTermsBrowserIpAddress'=>$this->client_ip, + 'creditCard.cvv'=>$this->cvv, + 'creditCard.expirationMonth'=>$expirationMonth, + 'creditCard.expirationYear'=>$expirationYear, + 'isConfirmedTerms'=>true, + 'creditCard.token'=>$this->credit_card_token + ]; + + $responseData = (new HttpAsForm($url))->post($params); + + if(!$responseData['isFinancialObligationMet']){ + $this->setException($responseData); + } + + } + + /** + * @throws Exception + */ + + private function complete($inputData): void + { + + $url = $this->api_base_url ."/complete"; + + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$inputData['trackingToken'], + 'customerToken'=>$inputData['customerToken'] + ]; + + $responseData = (new HttpAsForm($url))->post($params); + + $this->data = $responseData; + + $params['email'] = $inputData['email']; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['COMPLETE'] = $this->prepareLogData($url,'POST',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->setException($responseData); + }else{ + $this->planType = $responseData['planType'] ?? ""; + $this->temporaryPassword = $responseData['temporaryPassword'] ?? ""; + } + + } + + public function checkIsEmailExistOnSmartCredit(){ + + $result['status'] = false; + $result['message'] = ""; + + try { + $this->start(); + $this->validateEmail(); + }catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE');; + $this->message = $ex->getMessage(); + } + + $this->logData['SMART_CREDIT_EMAIL_VALIDATION_LOG'][$this->log_id]["START"] = $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["START"]; + $this->logData['SMART_CREDIT_EMAIL_VALIDATION_LOG'][$this->log_id]["VALIDATE_EMAIL"] = $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["VALIDATE_EMAIL"]; + + unset($this->logData['SMART_CREDIT_API_LOG']); + + $this->logData['SMART_CREDIT_EMAIL_VALIDATION_LOG'][$this->log_id]['email'] = $this->email; + $this->logData['SMART_CREDIT_EMAIL_VALIDATION_LOG'][$this->log_id]['message'] = $this->message; + $this->logData['SMART_CREDIT_EMAIL_VALIDATION_LOG'][$this->log_id]['status_code'] = $this->status_code; + + if(!empty($this->data['errors'])){ + $errors = collect($this->data['errors'])->firstWhere('code','=','EMAIL_USED'); + if(!empty($errors)){ + $result['status'] = true; + $result['message'] = "You already have an account with Smartcredit and would not open the questions"; + } + } + + appLog($this->logData); + + return $result; + } + + public function checkIsSsnExistOnSmartCredit(){ + + $result['status'] = false; + $result['message'] = ""; + + $this->status_code = config('constant.API_SUCCESS_CODE'); + + try { + + $this->start(); + $this->validateSsn(); + + }catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $ex->getMessage(); + } + + $this->logData['SMART_CREDIT_SSN_VALIDATION_LOG'][$this->log_id]["START"] = $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["START"]; + $this->logData['SMART_CREDIT_SSN_VALIDATION_LOG'][$this->log_id]["VALIDATE_SSN"] = $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]["VALIDATE_SSN"]; + + unset($this->logData['SMART_CREDIT_API_LOG']); + + $this->logData['SMART_CREDIT_SSN_VALIDATION_LOG'][$this->log_id]['email'] = $this->email; + $this->logData['SMART_CREDIT_SSN_VALIDATION_LOG'][$this->log_id]['message'] = $this->message; + $this->logData['SMART_CREDIT_SSN_VALIDATION_LOG'][$this->log_id]['status_code'] = $this->status_code; + + if(!empty($this->data['errors'])){ + $errors = collect($this->data['errors'])->first(); + if(!empty($errors)){ + $result['status'] = true; + $result['message'] = $this->message; + } + } + + appLog($this->logData); + + return $result; + } + + public function register(): SmartCredit + { + try{ + $this->start(); + $this->campaign(); + $this->validateEmail(); + $this->validateSponsorCode(); + $this->create(); + $this->updateIdentity(); +// $this->updateId=1; +// $this->updateIdentity(); + $this->getIdVerification(); + + }catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE');; + $this->message = $ex->getMessage(); + + } + + $this->logData['email'] = $this->email; + $this->logData['message'] = $this->message; + $this->logData['status_code'] = $this->status_code; + + appLog($this->logData); + + return $this; + } + + public function security_question($inputData): SmartCredit{ + + try{ + $this->postIdVerification($inputData); + $this->complete($inputData); + } + catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $ex->getMessage(); + } + + appLog($this->logData); + return $this; + } + + public function security_questions(): SmartCredit{ + + try{ + $this->start(); + $this->logData['action'][] = $this->prefix."SECURITY_QUESTIONS"; + $url = $this->api_base_url . "/security-questions"; + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$this->tracking_token + ]; + $responseData = (new HttpAsForm($url))->get($params); + + if(!empty($responseData['securityQuestions'])){ + $this->status_code = config('constant.API_SUCCESS_CODE'); + $this->message = __('Security Question has been gotten successfully'); + $this->data=$responseData['securityQuestions']; + + }else{ + $this->setException($responseData); + } + + }catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $ex->getMessage(); + } + appLog($this->logData); + return $this; + } + + private function postIdVerification($inputData) + { + + $url = $this->api_base_url ."/id-verification"; + + $params = [ + 'clientKey' => $this->client_key, + 'trackingToken'=>$inputData['trackingToken'], + 'customerToken'=>$inputData['customerToken'], + 'idVerificationCriteria.referenceNumber'=>$inputData['referenceNumber'] + ]; + + if(!empty($inputData['security_question_answer'])){ + foreach ($inputData['security_question_answer'] as $key => $sqa){ + $params['idVerificationCriteria.'.$key] = $sqa['answer']['id']; + } + } + + $responseData = (new HttpAsForm($url))->post($params); + + $this->data = $responseData; + + $params['email'] = $inputData['email']; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['POST_ID_VERIFICATION'] = $this->prepareLogData($url,'POST',$params); + + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $this->setException($responseData); + } + + $this->status_code = config('constant.API_SUCCESS_CODE'); + $this->message = __('Save successfully'); + + + } + + private function getCustomerTokenByCredential($email,$password){ + + $this->api_base_url = (config('app.SMART_CREDIT_BASE_URL') ?? ''); + $url = $this->api_base_url . '/external-login'; + $loginType = config('app.LOGIN_TYPE') ?? 'PARTNER_API'; + $params = [ + 'loginType' => $loginType, + 'j_username' => $email, + 'j_password' => $password, + ]; + $responseData = (new HttpAsForm($url))->post($params); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['EXTERNAL_LOGIN'] = $this->prepareLogData($url,'POST',$params); + + if ($responseData['success']) { + $this->pws_customer_token = $responseData['customerToken']; + }else{ + $this->setPwsException($responseData); + } + + return $this; + } + private function customerAccountStatus($type){ + + $url = $this->pws_base_url . '/customer/account/status?'.'customerToken='.$this->pws_customer_token; + $params = [ + 'status' => $type, + ]; + + $responseData = (new HttpAsForm($url))->put($params,HttpAsForm::CONTENT_TYPE_JSON); + + $this->data = $responseData; + + $this->logData['SMART_CREDIT_API_LOG'][$this->log_id]['CUSTOMER_ACCOUNT_STATUS'] = $this->prepareLogData($url,'PUT',$params); + + if (!empty($responseData['accountStatus'])) { + $this->data = $responseData; + }else{ + $this->setPwsException($responseData); + } + + return $this; + } + + public function customerSubscription($inputData) + { + try{ + $this->getCustomerTokenByCredential($inputData['email'],$inputData['password']); + $this->customerAccountStatus($inputData['type']); + }catch (\Exception $ex){ + $this->status_code = config('constant.API_FAILED_CODE'); + $this->message = $ex->getMessage(); + } + + $this->logData['email'] = $inputData['email']; + $this->logData['message'] = $this->message; + $this->logData['status_code'] = $this->status_code; + + appLog($this->logData); + return $this; + } + private function setPwsException($responseData){ + $this->status_code = config('constant.API_FAILED_CODE'); + if(isset($responseData['errors']) && !empty($responseData['errors'])){ + $responseData['errors'] = current($responseData['errors']); + $this->message = $responseData['errors']['message']; + }else{ + $this->message = "Somethings went to wrong."; + } + throw new \Exception($this->message); + } + + +} diff --git a/app/Services/SmartCreditJsonToHtml.php b/app/Services/SmartCreditJsonToHtml.php new file mode 100644 index 0000000..ed61400 --- /dev/null +++ b/app/Services/SmartCreditJsonToHtml.php @@ -0,0 +1,442 @@ + 'Vantage Score® 3.0 credit score', + 'TransUnion' => $credit_scores[0]['riskScore'], + 'Experian' => $credit_scores[1]['riskScore'], + 'Equifax' => $credit_scores[2]['riskScore'], + ]; + + $personal_infos = $this->personal_information_data_binding($borrower_info); + + $consumer_statement_data_set = $this->consumer_statement_data_binding($borrower_info); + + $summary_info_data_set = $this->summary_info_data_binding($json_data); + + $creditor_contact_data_set = $this->creditor_contacts_data_binding($json_data); + + $inquiries_data_set = $this->inquiries_data_binding($json_data); + + $account_history_data = $this->account_history_data_binding($json_data['TradeLinePartition']); + + $account_history_data_set = $this->account_history_filter_by_account_type($account_history_data); + + $data_set = ['creditScore'=>$creditScore,'personal_infos'=>$personal_infos,'consumer_statement_data_set'=>$consumer_statement_data_set,'summary_info_data_set'=>$summary_info_data_set,'creditor_contact_data_set'=>$creditor_contact_data_set,'inquiries_data_set'=>$inquiries_data_set,'account_history_data_set'=>$account_history_data_set]; + + return $data_set; +// $html = view('partials.credit_report.main_report', compact('creditScore', 'personal_infos','consumer_statement_data_set','summary_info_data_set', 'creditor_contact_data_set', 'inquiries_data_set', 'account_history_data_set'))->render(); +// dd($html); + } + return null; + } + private function personal_information_data_binding($borrower_info) + { + $personal_info_employer = []; + $personal_info_birth = []; + $personal_info_borrowerName = []; + $personal_info_borrowerAddress = []; + $personal_info_previousAddress = []; + $personal_info_creditScore = []; + + if(isset($borrower_info['Employer'])) + { + $personal_info_employer = $borrower_info['Employer']; + } + if(isset($borrower_info['Birth'])) + { + $personal_info_birth = $borrower_info['Birth']; + } + if(isset($borrower_info['BorrowerName'])) + { + $personal_info_borrowerName = $borrower_info['BorrowerName']; + } + if(isset($borrower_info['BorrowerAddress'])) + { + $personal_info_borrowerAddress = $borrower_info['BorrowerAddress']; + } + if(isset($borrower_info['PreviousAddress'])) + { + $personal_info_previousAddress = $borrower_info['PreviousAddress']; + } + if(isset($borrower_info['CreditScore'])) + { + $personal_info_creditScore = $borrower_info['CreditScore']; + } + + $personal_info_data_set = [ + 'CREDIT_REPORT_DATE' =>[ + 'title' => 'CREDIT REPORT DATE', + 'data' => $this->common_data_binding($personal_info_creditScore) + ], + 'NAME' =>[ + 'title' => 'NAME', + 'data' => $this->data_binding_for_name($personal_info_borrowerName) + ], + 'ALSO_KNOWN_AS' =>[ + 'title' => 'ALSO KNOWN AS', + 'data' => $this->data_binding_for_also_known_name($personal_info_borrowerName) + ], + 'DATE_OF_BIRTH'=>[ + 'title' => 'DATE OF BIRTH', + 'data' => $this->common_data_binding($personal_info_birth) + + ], + 'CURRENT_ADDRESS'=>[ + 'title' => 'CURRENT ADDRESS', + 'data' => $this->common_data_binding($personal_info_borrowerAddress) + + ], + 'PREVIOUS_ADDRESS'=>[ + 'title' => 'PREVIOUS ADDRESS', + 'data' => $this->common_data_binding($personal_info_previousAddress) + ], + 'EMPLOYER'=>[ + 'title' => 'EMPLOYER', + 'data' => $this->common_data_binding($personal_info_employer) + ], + ]; + + return $personal_info_data_set; + } + + private function consumer_statement_data_binding($borrower_info):array + { + $personal_info_consumer_statement = []; + + if(isset($borrower_info['CreditStatement'])) + { + $personal_info_consumer_statement = $borrower_info['CreditStatement']; + } + + return $this->common_data_binding($personal_info_consumer_statement); + } + + private function inquiries_data_binding($inquiryPartition) + { + + $inquiries_info = []; + + if(isset($inquiryPartition['InquiryPartition'])) + { + $inquiries_info = $inquiryPartition['InquiryPartition']; + if(count($inquiries_info)== 1) { + $inquiries_info['Inquiry'] = $inquiryPartition['InquiryPartition']; + } + } + return $inquiries_info; + } + + private function creditor_contacts_data_binding($creditor_contact) + { + + $creditor_contacts_info = []; + + if(isset($creditor_contact['Subscriber'])) + { + $creditor_contacts_info = $creditor_contact['Subscriber']; + } + return $creditor_contacts_info; + } + + private function summary_info_data_binding($summary) + { + + $summary_info = []; + + if(isset($summary['Summary'])) + { + $summary_info = $summary['Summary']; + } + + $summary_info_data = [ + 'TOTAL_ACCOUNTS' => [ + 'title' => 'TOTAL ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['TotalAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['TotalAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['TotalAccounts'], + ], + 'OPEN_ACCOUNTS' => [ + 'title' => 'OPEN ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['OpenAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['OpenAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['OpenAccounts'], + ], + 'CLOSED_ACCOUNTS' =>[ + 'title' => 'CLOSED ACCOUNTS', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['CloseAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['CloseAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['CloseAccounts'], + ], + 'DELINQUENT'=>[ + 'title' => 'DELINQUENT', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['DelinquentAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['DelinquentAccounts'], + 'Equifax'=> $summary_info['TradelineSummary']['Equifax']['DelinquentAccounts'], + ], + 'DEROGATORY'=>[ + 'title' => 'DEROGATORY', + 'TransUnion'=> $summary_info['TradelineSummary']['TransUnion']['DerogatoryAccounts'], + 'Experian'=> $summary_info['TradelineSummary']['Experian']['DerogatoryAccounts'], + 'Equifax'=> '--', + ], + 'BALANCES'=>[ + 'title' => 'BALANCES', + 'TransUnion'=> amountFormatter($summary_info['TradelineSummary']['TransUnion']['TotalBalances']), + 'Experian'=>amountFormatter($summary_info['TradelineSummary']['Experian']['TotalBalances']), + 'Equifax'=>amountFormatter($summary_info['TradelineSummary']['Equifax']['TotalBalances']), + ], + 'PAYMENTS'=>[ + 'title' => 'PAYMENTS', + 'TransUnion'=>amountFormatter($summary_info['TradelineSummary']['TransUnion']['TotalMonthlyPayments']), + 'Experian'=>amountFormatter($summary_info['TradelineSummary']['Experian']['TotalMonthlyPayments']), + 'Equifax'=>amountFormatter($summary_info['TradelineSummary']['Equifax']['TotalMonthlyPayments']), + ], + 'PUBLIC_RECORDS'=>[ + 'title' => 'PUBLIC RECORDS', + 'TransUnion'=> $summary_info['PublicRecordSummary']['TransUnion']['NumberOfRecords'], + 'Experian'=> $summary_info['PublicRecordSummary']['Experian']['NumberOfRecords'], + 'Equifax'=> $summary_info['PublicRecordSummary']['Equifax']['NumberOfRecords'], + ], + 'INQUIRIES'=>[ + 'title' => 'INQUIRIES (2 years)', + 'TransUnion'=> $summary_info['InquirySummary']['TransUnion']['NumberInLast2Years'], + 'Experian'=> $summary_info['InquirySummary']['Experian']['NumberInLast2Years'], + 'Equifax'=> $summary_info['InquirySummary']['Equifax']['NumberInLast2Years'], + ] + ]; + + return $summary_info_data; + } + + private function account_history_data_binding($account_historys) + { + $account_history_data = []; + + foreach ($account_historys as $account_history ) + { + $tradelines = $account_history['Tradeline']; + + if(isset($tradelines['subscriberCode']) && isset($tradelines['accountNumber']) + && isset($tradelines['creditorName'])){ + + $tradelines = [ $tradelines ]; + } + + $data = $this->common_data_binding($tradelines); + + $account_history_data[] = [ + 'title'=> $tradelines[0]['creditorName'], + 'key_data'=>$this->sub_account_history_data_bindings(), + "accountTypeDescription" => $account_history['accountTypeDescription'], + "accountTypeSymbol" => $account_history['accountTypeSymbol'], + "accountTypeAbbreviation" => $account_history['accountTypeAbbreviation'], + 'data'=> $data]; + } + + return $account_history_data; + } + + private function sub_account_history_data_bindings() + { + $return_data = [ + + 'ACCOUNT'=> [ + 'title' => 'Account #', + + ], + 'HIGH_BALANCE' => [ + 'title' => 'High Balance', + ], + 'LAST_VERIFIED' =>[ + 'title' => 'Last Verified', + ], + + 'DATE_OF_LAST_ACTIVITY' =>[ + 'title' => 'Date of Last Activity', + ], + 'DATE_REPORTED'=>[ + 'title' => 'Date Reported', + ], + 'DATE_OPENED'=>[ + 'title' => 'Date Opened', + ], + + 'BALANCE_OWED'=>[ + 'title' => 'Balance Owed', + ], + 'CLOSED_DATE'=>[ + 'title' => 'Closed Date', + ], + 'ACCOUNT_RATING'=>[ + 'title' => 'Account Rating', + ], + + 'ACCOUNT_DESCRIPTION'=>[ + 'title' => 'Account Description', + ], + + 'DISPUTE_STATUS'=>[ + 'title' => 'Dispute Status', + ], + 'CREDITOR_TYPE'=> [ + 'title' => 'Creditor Type', + ], + + 'ACCOUNT_STATUS'=>[ + 'title' => 'Account Status', + ], + 'PAYMENT_STATUS'=> [ + 'title' => 'Payment Status', + ], + 'CREDITOR_REMARKS'=>[ + 'title' => 'Creditor Remarks', + ], + 'ORIGINAL_CREDITOR'=>[ + 'title' => 'Original Creditor', + ], + 'PAYMENT_AMOUNT'=> [ + 'title' => 'Payment Amount', + ], + 'LAST_PAYMENT'=>[ + 'title' => 'Last Payment', + ], + 'TERM_LENGTH'=>[ + 'title' => 'Term Length', + ], + 'PAST_DUE_AMOUNT'=>[ + 'title' => 'Past Due Amount', + ], + 'ACCOUNT_TYPE'=>[ + 'title' => 'Account Type', + ], + 'PAYMENT_FREQUENCY'=>[ + 'title' => 'Payment Frequency', + ], + 'CREDIT_LIMIT'=>[ + 'title' => 'Credit Limit', + ], + ]; + + return $return_data; + } + + private function common_data_binding($data) + { + $data_set = [ + 'TransUnion'=> array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC'){ + return $item; + } + }), + 'Experian'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP'){ + return $item; + } + }), + 'Equifax'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF'){ + return $item; + } + }), + ]; + + return $data_set; + } + private function data_binding_for_name($data) + { + $data_set = [ + 'TransUnion'=> array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC' && $item['NameType']['symbol'] == '1'){ + return $item; + } + }), + 'Experian'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP' && $item['NameType']['symbol'] == '1'){ + return $item; + } + }), + 'Equifax'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF' && $item['NameType']['symbol'] == '1'){ + return $item; + } + }), + ]; + + return $data_set; + } + private function data_binding_for_also_known_name($data) + { + $data_set = [ + 'TransUnion'=> array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'TUC' && $item['NameType']['symbol'] == 'A'){ + return $item; + } + }), + 'Experian'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EXP' && $item['NameType']['symbol'] == 'A'){ + return $item; + } + }), + 'Equifax'=>array_filter($data,function ($item){ + if($item['Source']['Bureau']['symbol'] == 'EQF' && $item['NameType']['symbol'] == 'A'){ + return $item; + } + }), + ]; + + return $data_set; + } + private function account_history_filter_by_account_type($data){ + + $data_set = [ + 'Revolving'=> array_filter($data,function ($item){ + if($item['accountTypeSymbol'] == 'R'){ + return $item; + } + }), + 'Installment' => array_filter($data,function ($item){ + if($item['accountTypeSymbol'] == 'I'){ + return $item; + } + }), + 'Line_of_credit' => array_filter($data,function ($item){ + if($item['accountTypeSymbol'] == 'C'){ + return $item; + } + }), + 'Collection' => array_filter($data,function ($item){ + if($item['accountTypeSymbol'] == 'Y'){ + return $item; + } + }), + 'Other' => array_filter($data,function ($item){ + if($item['accountTypeSymbol'] == 'O'){ + return $item; + } + }), + + ]; + + return $data_set; + + } + +} diff --git a/app/Services/UploadMedia.php b/app/Services/UploadMedia.php new file mode 100644 index 0000000..36c2299 --- /dev/null +++ b/app/Services/UploadMedia.php @@ -0,0 +1,107 @@ +user_request = $request; + } + + public function uploadmedia() + { + + $auth_id = auth()->id(); + if (isset($this->user_request['uploadmedia']['identification'])) { + $rtg_letter_image_id = 1; + $image_path = 'identification'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['mail_doc'])) { + $rtg_letter_image_id = 2; + $image_path = 'mail_doc'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['ssn'])) { + $rtg_letter_image_id = 3; + $image_path = 'ssn'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['state_photo_id'])) { + $rtg_letter_image_id = 4; + $image_path = 'state_photo_id'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['notarized_letter'])) { + $rtg_letter_image_id = 5; + $image_path = 'notarized_letter'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['cr_report'])) { + $rtg_letter_image_id = 6; + $image_path = 'cr_report'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['trouble_mark_file'])) { + $rtg_letter_image_id = 7; + $image_path = 'trouble_mark_file'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['item_challenge_file'])) { + $rtg_letter_image_id = 8; + $image_path = 'item_challenge_file'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + if (isset($this->user_request['uploadmedia']['profile_pic'])) { + $rtg_letter_image_id = 9; + $image_path = 'profile_pic'; + $this->uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id); + } + + } + + private function uploadOrupdateMeadiaFile($image_path, $auth_id, $rtg_letter_image_id) + { + + if (!empty($this->user_request->file('uploadmedia.'.$image_path))) { + $uploadMediaObj = app(\App\Models\Uploadmedia::class); + $clasue['user_id'] = $auth_id; + $clasue['image_type_id'] = $rtg_letter_image_id; + $uploadmedia = $uploadMediaObj->where($clasue)->first(); + //$this->user_request['uploadmedia'][$image_path] + $file = $this->user_request->file('uploadmedia.'.$image_path); + $image_data = imageFileRotate($this->user_request->file('uploadmedia.'.$image_path)); + + $file_name = time()."_".removeAnySpaces($file->getClientOriginalName(),'_'); + + $file_path = config('constant.UPLOAD_MEDIA_PATH').DIRECTORY_SEPARATOR.$auth_id; + + if (empty($uploadmedia)) { + $uploadMediaObj->create([ + 'user_id'=>$auth_id, + 'image_type_id'=>$rtg_letter_image_id, + 'image_path'=>$file_name + ]); + uploadFile($file_path,$file_name,$image_data); + } else { + deleteFile($file_path.DIRECTORY_SEPARATOR.$uploadmedia->image_path); + uploadFile($file_path,$file_name,$image_data); + $uploadmedia->update(['image_path'=>$file_name]); + } + + + } + } + +} diff --git a/app/Services/ViewExport.php b/app/Services/ViewExport.php new file mode 100644 index 0000000..14151d6 --- /dev/null +++ b/app/Services/ViewExport.php @@ -0,0 +1,23 @@ +data = $data; + $this->view = $view; + + } + + public function view(): View + { + //dd($this->data); + return view($this->view, $this->data); + } + +} diff --git a/app/Traits/ApiResponseTrait.php b/app/Traits/ApiResponseTrait.php new file mode 100644 index 0000000..d7a7424 --- /dev/null +++ b/app/Traits/ApiResponseTrait.php @@ -0,0 +1,18 @@ +json([ + 'status_code'=> $code, + 'message' => $message, + 'data' => $data, + ],$http_code); + } + + + +} diff --git a/app/Utility/ActionLogCreate.php b/app/Utility/ActionLogCreate.php new file mode 100644 index 0000000..a324abd --- /dev/null +++ b/app/Utility/ActionLogCreate.php @@ -0,0 +1,17 @@ +prepareData = $this->prepareRequest($request); + + $response = Http::withHeaders(static::$header) + ->post( + static::$url, + $this->prepareData + ); + + return json_decode((string) $response->getBody(), true); + } + + public function get($request){ + + $this->prepareData = $this->prepareRequest($request); + + $response = Http::withHeaders(static::$header) + ->get( + static::$url, + $this->prepareData + ); + + return json_decode((string) $response->getBody(), true); + } +} diff --git a/app/Utility/CurlRequest.php b/app/Utility/CurlRequest.php new file mode 100644 index 0000000..ba6b717 --- /dev/null +++ b/app/Utility/CurlRequest.php @@ -0,0 +1,46 @@ +isNonSecureConnection()){ + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + } + curl_setopt($ch, CURLOPT_URL, $URL); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); + + if(!empty($header)){ + curl_setopt($ch, CURLOPT_HTTPHEADER, $header); + } + + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 900); + $output = curl_exec($ch); + curl_close($ch); + return $output; + } + + private function isNonSecureConnection(){ + + $host = $_SERVER['REMOTE_ADDR']; + $result = true; + + /*if ($host != 'readytogoletters.com') { + + $result = true; + + }*/ + + return $result; + } + + + +} diff --git a/app/Utility/Email.php b/app/Utility/Email.php new file mode 100644 index 0000000..63f8839 --- /dev/null +++ b/app/Utility/Email.php @@ -0,0 +1,71 @@ +is_queue_enable = config('app.IS_QUEUE_ENABLE'); + } + + public function send($data, $email_subject, $from, $attachment, $template, $to) + { + if ($this->is_queue_enable == 1) { + dispatch((new SendEmailJob($data, $email_subject, $from, $attachment, $template, $to))); + } else { + $this->sendEmailManually($data, $email_subject, $from, $attachment, $template, $to); + } + } + + private function sendEmailManually($data, $email_subject, $from, $attachment, $template, $to) : void + { + try{ + if(empty($to)){ + throw new \Exception("Recipient email is missing."); + } + + Mail::to($to)->send( + new SendEmail( + $data, + $email_subject, + $from, + $attachment, + $template + ) + ); + $this->result['message'] = 'E-Mail has been send successfully.'; + $this->result['status'] = true; + + @unlink($attachment); + + }catch (\Throwable $ex){ + $this->result['message'] = $ex->getMessage(); + $this->result['status'] = false; + } + + $this->logData['SEND_EMAIL'] = $this->prepareLogData($from,$to,$email_subject); + appLog($this->logData); + } + + private function prepareLogData($from_email,$to,$email_subject){ + return [ + 'sending_info' => [ + 'from' => $from_email, + 'to' => $to, + 'subject' => $email_subject + ], + 'response' => $this->result + ]; + } +} diff --git a/app/Utility/HttpRequest/HttpAsForm.php b/app/Utility/HttpRequest/HttpAsForm.php new file mode 100644 index 0000000..6b3f7be --- /dev/null +++ b/app/Utility/HttpRequest/HttpAsForm.php @@ -0,0 +1,78 @@ +prepareData = $this->prepareRequest($request); + + if($header == self::CONTENT_TYPE_X_WWW_FORM_URLENCODE) { + $response = Http::asForm(); + }else if($header == self::CONTENT_TYPE_JSON){ + $response = Http::asJson(); + } + + $response = $response->post( + static::$url, + $this->prepareData + ); + + return json_decode((string) $response->getBody(), true); + } + + public function get($request, $header = 'application/x-www-form-urlencoded'){ + + $this->prepareData = $this->prepareRequest($request); + + if($header == self::CONTENT_TYPE_X_WWW_FORM_URLENCODE) { + $response = Http::asForm(); + }else if($header == self::CONTENT_TYPE_JSON){ + $response = Http::asJson(); + } + + $response = $response->get( + static::$url, + $this->prepareData + ); + + return json_decode((string) $response->getBody(), true); + } + + public function put($request, $header = 'application/x-www-form-urlencoded'){ + + $this->prepareData = $this->prepareRequest($request); + + if($header == self::CONTENT_TYPE_X_WWW_FORM_URLENCODE) { + $response = Http::asForm(); + }else if($header == self::CONTENT_TYPE_JSON){ + $response = Http::asJson(); + } + + $response = $response->put( + static::$url, + $this->prepareData + ); + + return json_decode((string) $response->getBody(), true); + } +} diff --git a/app/Utility/PdfWriter.php b/app/Utility/PdfWriter.php new file mode 100644 index 0000000..caf5ac9 --- /dev/null +++ b/app/Utility/PdfWriter.php @@ -0,0 +1,206 @@ +binaryPath = config('snappy.pdf.binary'); + } + + public function createPdfWithConfiguration($data,$file_path) { + //require WWW_ROOT.'epicvelocity/vendor/autoload.php'; + $html = $data['body_html']; + $cover_html = isset($data['cover_html']) ? $data['cover_html']:""; + $page_no_format = "";//Page [page] of [topage] + if(!empty($data['page_no_format'])){ + $page_no_format = $data['page_no_format']; + } + + $snappy = new Pdf(); + $snappy->setBinary($this->binaryPath); + if(!empty($cover_html)){ + $snappy->setOption('cover',$cover_html); + } + if(!empty($data['margin'])){ + $snappy->setOption('margin-left', $data['margin']); + $snappy->setOption('margin-right', $data['margin']); + $snappy->setOption('margin-top', $data['margin']); + $snappy->setOption('margin-bottom', $data['margin']); + }else{ + if(!empty($data['margin_left'])){ + $snappy->setOption('margin-left', $data['margin_left']); + } + + if(!empty($data['margin_right'])){ + $snappy->setOption('margin-right', $data['margin_right']); + } + + if(!empty($data['margin_top'])){ + $snappy->setOption('margin-top', $data['margin_top']); + } + + if(!empty($data['margin_bottom'])){ + $snappy->setOption('margin-bottom', $data['margin_bottom']); + } + } + + if(!empty($page_no_format)){ + $snappy->setOption('footer-right', $page_no_format); + } + + if(!empty($data['footer_left'])){ + $snappy->setOption('footer-left', $data['footer_left']); + } + + if(!empty($data['header_right'])){ + $snappy->setOption('header-right', $data['header_right']); + } + + return $snappy->generateFromHtml($html,$file_path, + array( + 'encoding' => 'utf-8' + + ) + ); + + } + + public function write($html,$file_path) { + + $snappy = new Pdf(); +// dd($this->binaryPath); + + $snappy->setBinary($this->binaryPath); + $snappy->setOption('enable-local-file-access', true); + $snappy->setOption('margin-left', 5); + $snappy->setOption('footer-right', "Page [page] of [topage]"); + $snappy->generateFromHtml($html,$file_path,array('encoding' => 'utf-8')); + $snappy->setOption('password', true); + chmod($file_path, 0664); + //PDF::loadHTML($html)->setOption('margin-left', 5)->setOption('footer-right', "Page [page] of [topage]")->save($file_path); +//dd($snappy); + return $snappy; + + } + public function pdfcreate($html,$file_path){ + //require WWW_ROOT.'epicvelocity/vendor/autoload.php'; + $snappy = new Pdf(); + $snappy->setBinary($this->binaryPath); + $snappy->setOption('margin-left', 5); + $snappy->generateFromHtml($html, $file_path, array('encoding' => 'utf-8')); + $file_url = $file_path; + } + + public function download($html,$file_path){ + //require WWW_ROOT.'epicvelocity/vendor/autoload.php'; + /*$snappy = new Pdf(); + $snappy->setBinary($this->binaryPath); + $snappy->setOption('page-size','LETTER'); + $snappy->setOption('encoding', 'UTF-8'); + + $snappy->generateFromHtml($html, $file_path, array('encoding' => 'utf-8')); + */ + PDF::loadHTML($html)->setOption('margin-left', 5)->setOption('footer-right', "Page [page] of [topage]")->save($file_path); + $file_url = $file_path; + header('Content-Type: application/octet-stream'); + header("Content-Transfer-Encoding: Binary"); + header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); + readfile($file_url); + @unlink($file_path); + //return $file_path; + } + + public function mpdfWrite($html,$file_path,$file_name,$extra = []){ +// ini_set("pcre.backtrack_limit", "5000000"); +// include(WWW_ROOT."../vendor/mpdf_latest_vendor\vendor\autoload.php"); +// $html = mb_convert_encoding($html, 'UTF-8', 'UTF-8'); + + $mpdf = new \Mpdf\Mpdf( + [ + 'default_font_size' => 12, + 'default_font' => 'sans-serif', + ] + ); + + $mpdf->SetProtection(array("print")); + $mpdf->defaultfooterline = false; + $mpdf->setFooter("Page {PAGENO} of {nb}"); + if(!empty($extra['footer'])){ + $mpdf->defaultfooterline = 0; + $mpdf->setFooter($extra['footer']); + } +// $mpdf->SetVisibility('printonly'); +// $mpdf->SetVisibility('screenonly'); + $html=str_replace('', ' b, strong {font-weight: 700 !important;}.span-ul,.span-blue,.span-large,.cb-br{font-size:14px !important;} .bg-yellow2{font-size:12px !important;} .crTableBackground {font-size:11px !important;} .h1, h1 {font-size:30px !important;}', $html); + + $html=str_replace('WriteHTML(utf8_encode($html)); + $mpdf->Output($file_path.$file_name); + + //$file_name = "invoice_" . $id . ".pdf"; //file name + //return $file_path; + } + + public function mpdfdownload($html,$file_path,$file_name, $extra = []){ + ini_set("pcre.backtrack_limit", "5000000"); + include(WWW_ROOT."../vendor/mpdf_latest_vendor\vendor\autoload.php"); + //$html = mb_convert_encoding($html, 'UTF-8', 'UTF-8'); + $mpdf = new \Mpdf\Mpdf(); + $mpdf->SetProtection(array("print")); + //$mpdf->SetDisplayMode('fullpage'); + $mpdf->defaultfooterline = 0; + if(!empty($extra['footer'])){ + $mpdf->setFooter($extra['footer']); + } + //echo $html;exit; + $mpdf->WriteHTML($html); + //$file_name = "invoice_" . $id . ".pdf"; //file name + $mpdf->Output($file_name, 'D'); // I=preview, D=download + @unlink($file_path); + //return $file_path; + } + + public static function pdfDownload($file) { + $file_name = basename($file); + header('Pragma: public'); + header('Expires: -1'); + header('Cache-Control: public, must-revalidate, post-check=0, pre-check=0'); + header('Content-Transfer-Encoding: binary'); + header("Content-Disposition: attachment; filename=$file_name"); + header("Content-Type: application/zip"); + header("Content-Length: " . filesize($file)); + header("Content-Description: File Transfer"); + + if ($fp = fopen($file, 'rb')) { + ob_end_clean(); + while (!feof($fp) and ( connection_status() == 0)) { + print(fread($fp, 8192)); + flush(); + } + + @fclose($fp); + } + @unlink($file); + } + public function snappyImage($html,$file_path) { + +// $snappy = new Pdf(); + $snappy = \App::make('snappy.image'); +// $snappy->setBinary($this->imageBinary); + $snappy->setOption('width', 500); + $nameImage=\Str::random(5).'.jpg'; + $snappy->generateFromHtml($html,$file_path.$nameImage); +// dd('yes'); +// chmod($file_path, 0664); +// return $snappy; + + } +} diff --git a/app/Utility/createDirZip.php b/app/Utility/createDirZip.php new file mode 100644 index 0000000..124d073 --- /dev/null +++ b/app/Utility/createDirZip.php @@ -0,0 +1,50 @@ +open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE); + + // Create recursive directory iterator + /** @var SplFileInfo[] $files */ + $files = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($rootPath), RecursiveIteratorIterator::LEAVES_ONLY + ); + + foreach ($files as $name => $file) { + + // Skip directories (they would be added automatically) + if (!$file->isDir()) { + // Get real and relative path for current file + $filePath = $file->getRealPath(); + $relativePath = substr($filePath, strlen($rootPath) + 1); + // Add current file to archive + if(!empty($filePath) && !empty($relativePath)){ + $zip->addFile($filePath, $relativePath); + } + } + } + +// Zip archive will be created only after closing object + return $zip->close(); + } + + + private function testLog($data){ + $data = json_encode($data); + $file = fopen(WWW_ROOT."dropbox/test.txt","w"); + echo fwrite($file,$data); + fclose($file); + } +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..5c23e2e --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..5bb39d5 --- /dev/null +++ b/composer.json @@ -0,0 +1,70 @@ +{ + "name": "creditzombies/report-generate", + "type": "project", + "description": "Creditzombies", + "keywords": [ + "framework", + "laravel" + ], + "license": "MIT", + "require": { + "php": "^8.1", + "barryvdh/laravel-snappy": "^1.0", + "carlos-meneses/laravel-mpdf": "^2.1", + "creditzombies/log-viewer": "dev-main", + "fideloper/proxy": "^4.2", + "fruitcake/laravel-cors": "^2.0", + "guzzlehttp/guzzle": "^7.0.1", + "h4cc/wkhtmltoimage-amd64": "0.12.x", + "h4cc/wkhtmltopdf-amd64": "0.12.x", + "laravel/framework": "^8.0", + "laravel/tinker": "^2.0" + }, + "require-dev": { + "facade/ignition": "^2.3.6", + "fzaninotto/faker": "^1.9.1", + "mockery/mockery": "^1.3.1", + "nunomaduro/collision": "^5.0", + "phpunit/phpunit": "^9.3" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + }, + "files": [ + "app/Helper/helper.php" + ] + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + } + +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..47c8412 --- /dev/null +++ b/composer.lock @@ -0,0 +1,8410 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "553accbd4f77acdef40c2723313353c6", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "33dcc9955bd5c683e1246f0162f48df73fe799f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/33dcc9955bd5c683e1246f0162f48df73fe799f6", + "reference": "33dcc9955bd5c683e1246f0162f48df73fe799f6", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "symfony/http-foundation": "^5.3|^6|^7|^8", + "symfony/http-kernel": "^5.3|^6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.4.0" + }, + "time": "2026-01-28T13:08:04+00:00" + }, + { + "name": "barryvdh/laravel-snappy", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-snappy.git", + "reference": "2c18a3602981bc6f25b32908cf8aaa05952ab2f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/2c18a3602981bc6f25b32908cf8aaa05952ab2f7", + "reference": "2c18a3602981bc6f25b32908cf8aaa05952ab2f7", + "shasum": "" + }, + "require": { + "illuminate/filesystem": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "knplabs/knp-snappy": "^1", + "php": ">=7.2" + }, + "require-dev": { + "orchestra/testbench": "^4|^5|^6|^7" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "PDF": "Barryvdh\\Snappy\\Facades\\SnappyPdf", + "SnappyImage": "Barryvdh\\Snappy\\Facades\\SnappyImage" + }, + "providers": [ + "Barryvdh\\Snappy\\ServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\Snappy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Snappy PDF/Image for Laravel", + "keywords": [ + "image", + "laravel", + "pdf", + "snappy", + "wkhtmltoimage", + "wkhtmltopdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-snappy/issues", + "source": "https://github.com/barryvdh/laravel-snappy/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-01-29T19:36:49+00:00" + }, + { + "name": "brick/math", + "version": "0.14.8", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.14.8" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2026-02-10T14:33:43+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "carlos-meneses/laravel-mpdf", + "version": "2.1.13", + "source": { + "type": "git", + "url": "https://github.com/mccarlosen/laravel-mpdf.git", + "reference": "f2461faf0c5d328d28de13c3dcc14e70d77aef83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mccarlosen/laravel-mpdf/zipball/f2461faf0c5d328d28de13c3dcc14e70d77aef83", + "reference": "f2461faf0c5d328d28de13c3dcc14e70d77aef83", + "shasum": "" + }, + "require": { + "mpdf/mpdf": "^8.0|^8.1", + "php": "^5.6|^7.0|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "PDF": "Mccarlosen\\LaravelMpdf\\Facades\\LaravelMpdf" + }, + "providers": [ + "Mccarlosen\\LaravelMpdf\\LaravelMpdfServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Mccarlosen\\LaravelMpdf\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Mpdf: Using Mpdf in Laravel to generate Pdfs.", + "keywords": [ + "laravel", + "mpdf", + "pdf" + ], + "support": { + "issues": "https://github.com/mccarlosen/laravel-mpdf/issues", + "source": "https://github.com/mccarlosen/laravel-mpdf/tree/2.1.13" + }, + "funding": [ + { + "url": "https://www.paypal.me/mccarlosen", + "type": "custom" + } + ], + "time": "2023-09-01T15:09:05+00:00" + }, + { + "name": "creditzombies/log-viewer", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/imrancse94/log-viewer.git", + "reference": "367b18c7d1892a5fad90917073ca60eb771bd98a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/imrancse94/log-viewer/zipball/367b18c7d1892a5fad90917073ca60eb771bd98a", + "reference": "367b18c7d1892a5fad90917073ca60eb771bd98a", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0", + "livewire/livewire": "^2.10", + "php": "^8.0" + }, + "conflict": { + "arcanedev/log-viewer": "^8.0" + }, + "require-dev": { + "itsgoingd/clockwork": "^5.1", + "laravel/pint": "^1.0", + "nunomaduro/collision": "^6.0", + "orchestra/testbench": "^7.6", + "pestphp/pest": "^1.21", + "pestphp/pest-plugin-laravel": "^1.1", + "phpunit/phpunit": "^9.5", + "spatie/test-time": "^1.3" + }, + "default-branch": true, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "LogViewer": "creditzombies\\LogViewer\\Facades\\LogViewer" + }, + "providers": [ + "creditzombies\\LogViewer\\LogViewerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "creditzombies\\LogViewer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Imran Hossain", + "email": "imrancse94@gmail.com", + "role": "Developer" + } + ], + "description": "Fast and easy-to-use log viewer for your Laravel application", + "homepage": "https://github.com/imrancse94/log-viewer", + "keywords": [ + "Creditzombies", + "arukompas", + "better-log-viewer", + "laravel", + "log viewer", + "logs" + ], + "support": { + "issues": "https://github.com/imrancse94/log-viewer/issues", + "source": "https://github.com/imrancse94/log-viewer/tree/main" + }, + "time": "2023-01-22T15:54:16+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.25", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" + }, + "require-dev": { + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" + }, + { + "name": "fideloper/proxy", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "support": { + "issues": "https://github.com/fideloper/TrustedProxy/issues", + "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2" + }, + "time": "2022-02-09T13:33:34+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "abandoned": true, + "time": "2022-02-23T14:25:13+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.11.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "5af96f374e0ab4ebd747b8310888c99d3adb0a8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/5af96f374e0ab4ebd747b8310888c99d3adb0a8c", + "reference": "5af96f374e0ab4ebd747b8310888c99d3adb0a8c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.5", + "guzzlehttp/psr7": "^2.11", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/polyfill-php80": "^1.24" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "guzzlehttp/test-server": "^0.5", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.52 || ^9.6.34", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.11.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2026-06-07T22:54:06+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "4360e982f87f5f258bf872d094647791db2f4c8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e", + "reference": "4360e982f87f5f258bf872d094647791db2f4c8e", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.52 || ^9.6.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.5.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2026-06-02T12:23:43+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "bbb5e61349fa5cb822b3e87842b951088b76b81f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/bbb5e61349fa5cb822b3e87842b951088b76b81f", + "reference": "bbb5e61349fa5cb822b3e87842b951088b76b81f", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/polyfill-php80": "^1.24" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "1.1.0", + "jshttp/mime-db": "1.54.0.1", + "phpunit/phpunit": "^8.5.52 || ^9.6.34" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.11.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2026-06-02T12:30:48+00:00" + }, + { + "name": "h4cc/wkhtmltoimage-amd64", + "version": "0.12.4", + "source": { + "type": "git", + "url": "https://github.com/h4cc/wkhtmltoimage-amd64.git", + "reference": "c4e33f635207af89a704205b8902fb5715ca88be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/h4cc/wkhtmltoimage-amd64/zipball/c4e33f635207af89a704205b8902fb5715ca88be", + "reference": "c4e33f635207af89a704205b8902fb5715ca88be", + "shasum": "" + }, + "bin": [ + "bin/wkhtmltoimage-amd64" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL Version 3" + ], + "authors": [ + { + "name": "Julius Beckmann", + "email": "github@h4cc.de" + } + ], + "description": "Convert html to image using webkit (qtwebkit). Static linked linux binary for amd64 systems.", + "homepage": "http://wkhtmltopdf.org/", + "keywords": [ + "binary", + "convert", + "image", + "snapshot", + "thumbnail", + "wkhtmltoimage" + ], + "support": { + "issues": "https://github.com/h4cc/wkhtmltoimage-amd64/issues", + "source": "https://github.com/h4cc/wkhtmltoimage-amd64/tree/master" + }, + "time": "2018-01-15T07:23:40+00:00" + }, + { + "name": "h4cc/wkhtmltopdf-amd64", + "version": "0.12.4", + "source": { + "type": "git", + "url": "https://github.com/h4cc/wkhtmltopdf-amd64.git", + "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/h4cc/wkhtmltopdf-amd64/zipball/4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", + "reference": "4e2ab2d032a5d7fbe2a741de8b10b8989523c95b", + "shasum": "" + }, + "bin": [ + "bin/wkhtmltopdf-amd64" + ], + "type": "library", + "autoload": { + "psr-4": { + "h4cc\\WKHTMLToPDF\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL Version 3" + ], + "authors": [ + { + "name": "Julius Beckmann", + "email": "github@h4cc.de" + } + ], + "description": "Convert html to pdf using webkit (qtwebkit). Static linked linux binary for amd64 systems.", + "homepage": "http://wkhtmltopdf.org/", + "keywords": [ + "binary", + "convert", + "pdf", + "snapshot", + "thumbnail", + "wkhtmltopdf" + ], + "support": { + "issues": "https://github.com/h4cc/wkhtmltopdf-amd64/issues", + "source": "https://github.com/h4cc/wkhtmltopdf-amd64/tree/master" + }, + "time": "2018-01-15T06:57:33+00:00" + }, + { + "name": "knplabs/knp-snappy", + "version": "v1.7.2", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/snappy.git", + "reference": "1461239a8b265fcc5457b7bdeb842c75b0f066eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/1461239a8b265fcc5457b7bdeb842c75b0f066eb", + "reference": "1461239a8b265fcc5457b7bdeb842c75b0f066eb", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0||^3.0", + "symfony/process": "^5.0||^6.0||^7.0||^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "pedrotroller/php-cs-custom-fixer": "^2.19", + "phpstan/phpstan": "^2.1.39", + "phpstan/phpstan-phpunit": "^2.0.15", + "phpunit/phpunit": "^9.6.29" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Snappy\\": "src/Knp/Snappy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KNP Labs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "http://github.com/KnpLabs/snappy/contributors" + } + ], + "description": "PHP library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage.", + "homepage": "http://github.com/KnpLabs/snappy", + "keywords": [ + "knp", + "knplabs", + "pdf", + "snapshot", + "thumbnail", + "wkhtmltopdf" + ], + "support": { + "issues": "https://github.com/KnpLabs/snappy/issues", + "source": "https://github.com/KnpLabs/snappy/tree/v1.7.2" + }, + "time": "2026-05-15T15:04:49+00:00" + }, + { + "name": "laravel/framework", + "version": "8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "863d9289a5150e19ee8f6a09631a6ce441f701bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/863d9289a5150e19ee8f6a09631a6ce441f701bc", + "reference": "863d9289a5150e19ee8f6a09631a6ce441f701bc", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0.2", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^1.3|^2.0.2", + "league/flysystem": "^1.1", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "opis/closure": "^3.6", + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/log": "^1.0|^2.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^4.2.2", + "swiftmailer/swiftmailer": "^6.3", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "filp/whoops": "^2.14.3", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^6.27", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.5.19|^9.5.8", + "predis/predis": "^1.1.9", + "symfony/cache": "^5.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2025-03-24T11:25:05+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2024-11-14T18:34:49+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.11.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.11.1" + }, + "time": "2026-02-06T14:12:35+00:00" + }, + { + "name": "league/commonmark", + "version": "2.8.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "59fb075d2101740c337c7216e3f32b36c204218b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b", + "reference": "59fb075d2101740c337c7216e3f32b36c204218b", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.9-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2026-03-19T13:16:38+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.10", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2022-10-04T09:16:37+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "livewire/livewire", + "version": "v2.12.8", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8", + "reference": "7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8", + "shasum": "" + }, + "require": { + "illuminate/database": "^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^7.0|^8.0|^9.0|^10.0", + "illuminate/validation": "^7.0|^8.0|^9.0|^10.0", + "league/mime-type-detection": "^1.9", + "php": "^7.2.5|^8.0", + "symfony/http-kernel": "^5.0|^6.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^7.0|^8.0|^9.0|^10.0", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", + "orchestra/testbench-dusk": "^5.2|^6.0|^7.0|^8.0", + "phpunit/phpunit": "^8.4|^9.0", + "psy/psysh": "@stable" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Livewire": "Livewire\\Livewire" + }, + "providers": [ + "Livewire\\LivewireServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v2.12.8" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2024-07-13T19:58:46+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "37308608e599f34a1a4845b16440047ec98a172a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/37308608e599f34a1a4845b16440047ec98a172a", + "reference": "37308608e599f34a1a4845b16440047ec98a172a", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.38 || ^9.6.19", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.11.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-01T13:05:00+00:00" + }, + { + "name": "mpdf/mpdf", + "version": "v8.3.1", + "source": { + "type": "git", + "url": "https://github.com/mpdf/mpdf.git", + "reference": "2a454ec334109911fdb323a284c19dbf3f049810" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpdf/mpdf/zipball/2a454ec334109911fdb323a284c19dbf3f049810", + "reference": "2a454ec334109911fdb323a284c19dbf3f049810", + "shasum": "" + }, + "require": { + "ext-gd": "*", + "ext-mbstring": "*", + "mpdf/psr-http-message-shim": "^1.0 || ^2.0", + "mpdf/psr-log-aware-trait": "^2.0 || ^3.0", + "myclabs/deep-copy": "^1.7", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "setasign/fpdi": "^2.1" + }, + "require-dev": { + "mockery/mockery": "^1.3.0", + "mpdf/qrcode": "^1.1.0", + "squizlabs/php_codesniffer": "^3.5.0", + "tracy/tracy": "~2.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-bcmath": "Needed for generation of some types of barcodes", + "ext-imagick": "Needed if developing the Mpdf library", + "ext-xml": "Needed mainly for SVG manipulation", + "ext-zlib": "Needed for compression of embedded resources, such as fonts" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Mpdf\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-only" + ], + "authors": [ + { + "name": "Matěj Humpál", + "role": "Developer, maintainer" + }, + { + "name": "Ian Back", + "role": "Developer (retired)" + } + ], + "description": "PHP library generating PDF files from UTF-8 encoded HTML", + "homepage": "https://mpdf.github.io", + "keywords": [ + "pdf", + "php", + "utf-8" + ], + "support": { + "docs": "https://mpdf.github.io", + "issues": "https://github.com/mpdf/mpdf/issues", + "source": "https://github.com/mpdf/mpdf" + }, + "funding": [ + { + "url": "https://www.paypal.me/mpdf", + "type": "custom" + } + ], + "time": "2026-03-11T10:58:44+00:00" + }, + { + "name": "mpdf/psr-http-message-shim", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/mpdf/psr-http-message-shim.git", + "reference": "f25a0153d645e234f9db42e5433b16d9b113920f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpdf/psr-http-message-shim/zipball/f25a0153d645e234f9db42e5433b16d9b113920f", + "reference": "f25a0153d645e234f9db42e5433b16d9b113920f", + "shasum": "" + }, + "require": { + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mpdf\\PsrHttpMessageShim\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Dorison", + "email": "mark@chromatichq.com" + }, + { + "name": "Kristofer Widholm", + "email": "kristofer@chromatichq.com" + }, + { + "name": "Nigel Cunningham", + "email": "nigel.cunningham@technocrat.com.au" + } + ], + "description": "Shim to allow support of different psr/message versions.", + "support": { + "issues": "https://github.com/mpdf/psr-http-message-shim/issues", + "source": "https://github.com/mpdf/psr-http-message-shim/tree/v2.0.1" + }, + "time": "2023-10-02T14:34:03+00:00" + }, + { + "name": "mpdf/psr-log-aware-trait", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/mpdf/psr-log-aware-trait.git", + "reference": "7a077416e8f39eb626dee4246e0af99dd9ace275" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpdf/psr-log-aware-trait/zipball/7a077416e8f39eb626dee4246e0af99dd9ace275", + "reference": "7a077416e8f39eb626dee4246e0af99dd9ace275", + "shasum": "" + }, + "require": { + "psr/log": "^1.0 || ^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mpdf\\PsrLogAwareTrait\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Dorison", + "email": "mark@chromatichq.com" + }, + { + "name": "Kristofer Widholm", + "email": "kristofer@chromatichq.com" + } + ], + "description": "Trait to allow support of different psr/log versions.", + "support": { + "issues": "https://github.com/mpdf/psr-log-aware-trait/issues", + "source": "https://github.com/mpdf/psr-log-aware-trait/tree/v2.0.0" + }, + "time": "2023-05-03T06:18:28+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.73.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "<6", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-01-08T20:10:23+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.5" + }, + "time": "2026-02-23T03:47:12+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/7da6c396d7ebe142bc857c20479d5e70a5e1aac7", + "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.1.4" + }, + "time": "2026-05-11T20:49:54+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "opis/closure", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "b1a22a6be71c1263f3ca6e68f00b3fd4d394abc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/b1a22a6be71c1263f3ca6e68f00b3fd4d394abc4", + "reference": "b1a22a6be71c1263f3ca6e68f00b3fd4d394abc4", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.7.0" + }, + "time": "2025-07-08T20:30:08+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/2.0.0" + }, + "time": "2021-07-14T16:41:46+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.23", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4dcc0f08047d52bbde475eda481146fd8e27e1a4", + "reference": "4dcc0f08047d52bbde475eda481146fd8e27e1a4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.23" + }, + "time": "2026-05-23T13:41:31+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8429c78ca35a09f27565311b98101e2826affde0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.2" + }, + "time": "2025-12-14T04:43:48+00:00" + }, + { + "name": "setasign/fpdi", + "version": "v2.6.8", + "source": { + "type": "git", + "url": "https://github.com/Setasign/FPDI.git", + "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/881945be29a4996ad3d008eb18ddc01fa3df890c", + "reference": "881945be29a4996ad3d008eb18ddc01fa3df890c", + "shasum": "" + }, + "require": { + "ext-zlib": "*", + "php": ">=7.2 <=8.5.99999" + }, + "conflict": { + "setasign/tfpdf": "<1.31" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.52", + "setasign/fpdf": "^1.9.0", + "setasign/tfpdf": "~1.33", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.8" + }, + "suggest": { + "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." + }, + "type": "library", + "autoload": { + "psr-4": { + "setasign\\Fpdi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Slabon", + "email": "jan.slabon@setasign.com", + "homepage": "https://www.setasign.com" + }, + { + "name": "Maximilian Kresse", + "email": "maximilian.kresse@setasign.com", + "homepage": "https://www.setasign.com" + } + ], + "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", + "homepage": "https://www.setasign.com/fpdi", + "keywords": [ + "fpdf", + "fpdi", + "pdf" + ], + "support": { + "issues": "https://github.com/Setasign/FPDI/issues", + "source": "https://github.com/Setasign/FPDI/tree/v2.6.8" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", + "type": "tidelift" + } + ], + "time": "2026-06-11T10:37:24+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, + { + "name": "symfony/console", + "version": "v5.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-06T11:30:55+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v8.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "dc0e2be45c9b5588c82414f02ac574b4b986abcd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/dc0e2be45c9b5588c82414f02ac574b4b986abcd", + "reference": "dc0e2be45c9b5588c82414f02ac574b4b986abcd", + "shasum": "" + }, + "require": { + "php": ">=8.4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v8.1.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-29T05:06:50+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b", + "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-13T15:52:40+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.4.46", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "d19ede7a2cafb386be9486c580649d0f9e3d0363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/d19ede7a2cafb386be9486c580649d0f9e3d0363", + "reference": "d19ede7a2cafb386be9486c580649d0f9e3d0363", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.4.46" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-05T14:17:06+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "2e3bf817ba9347341ab15926700fb6320367c0e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2e3bf817ba9347341ab15926700fb6320367c0e1", + "reference": "2e3bf817ba9347341ab15926700fb6320367c0e1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.37" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-13T14:11:12+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/ccba7060602b7fed0b03c85bf025257f76d9ef32", + "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-05T13:30:16+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.4.45", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "63741784cd7b9967975eec610b256eed3ede022b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b", + "reference": "63741784cd7b9967975eec610b256eed3ede022b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.45" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-28T13:32:08+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.4.50", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "1a0706e8b8041046052ea2695eb8aeee04f97609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1a0706e8b8041046052ea2695eb8aeee04f97609", + "reference": "1a0706e8b8041046052ea2695eb8aeee04f97609", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "^1.0|^2.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.4.50" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-03T12:58:48+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.4.53", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "ff18e126cc514769d03f1b2487567a4b85fc7ca6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ff18e126cc514769d03f1b2487567a4b85fc7ca6", + "reference": "ff18e126cc514769d03f1b2487567a4b85fc7ca6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/var-dumper": "^4.4.31|^5.4", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.4.53" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-27T08:14:55+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.4.52", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "8f89d3a319b92486b0bcc43c0479d19fdb0e2f64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/8f89d3a319b92486b0bcc43c0479d19fdb0e2f64", + "reference": "8f89d3a319b92486b0bcc43c0479d19fdb0e2f64", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.4", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.4.52" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-05T14:35:32+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "2c5729fd241b4b22f6e4b436bc3354a4f262df57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/2c5729fd241b4b22f6e4b436bc3354a4f262df57", + "reference": "2c5729fd241b4b22f6e4b436bc3354a4f262df57", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.38.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-26T05:58:03+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.38.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "dc21118016c039a66235cf93d96b435ffb282412" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/dc21118016c039a66235cf93d96b435ffb282412", + "reference": "dc21118016c039a66235cf93d96b435ffb282412", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.38.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-25T15:22:23+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.38.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-25T13:48:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.38.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-27T06:59:30+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.51", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f", + "reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.51" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-26T15:53:37+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.4.53", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "f4ca0c533854c26e3b27e981da760807f89e1a42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/f4ca0c533854c26e3b27e981da760807f89e1a42", + "reference": "f4ca0c533854c26e3b27e981da760807f89e1a42", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.4.53" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-22T19:02:28+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", + "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-28T09:44:51+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.39", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "62e3c927de664edadb5bef260987eb047a17a113" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/62e3c927de664edadb5bef260987eb047a17a113", + "reference": "62e3c927de664edadb5bef260987eb047a17a113", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.39" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-12T11:44:19+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.38", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "afaa31b0c12d9a659eed1ea97f268a614cc1299c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/afaa31b0c12d9a659eed1ea97f268a614cc1299c", + "reference": "afaa31b0c12d9a659eed1ea97f268a614cc1299c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.38" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-06T08:55:54+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/0ab302977a952b42fd51475c4ebac81f8da0a95d", + "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.7.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-05T13:30:16+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.48", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/42f18f170aa86d612c3559cfb3bd11a375df32c8", + "reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.48" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-08T15:21:10+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", + "shasum": "" + }, + "require": { + "php": "^8.4" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2026-01-05T06:47:08+00:00" + }, + { + "name": "facade/flare-client-php", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", + "php": "^7.1|^8.0", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "support": { + "issues": "https://github.com/facade/flare-client-php/issues", + "source": "https://github.com/facade/flare-client-php/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-08-09T11:23:57+00:00" + }, + { + "name": "facade/ignition", + "version": "2.17.7", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/b4f5955825bb4b74cba0f94001761c46335c33e9", + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + }, + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/facade/ignition/issues", + "source": "https://github.com/facade/ignition" + }, + "time": "2023-01-26T12:34:59+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "5ffe7db6c80f441f150fc88008d64e64af66634b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/5ffe7db6c80f441f150fc88008d64e64af66634b", + "reference": "5ffe7db6c80f441f150fc88008d64e64af66634b", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^2.9.2" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/fzaninotto/Faker/issues", + "source": "https://github.com/fzaninotto/Faker/tree/master" + }, + "abandoned": true, + "time": "2020-12-11T09:59:14+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v5.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.14.3", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" + }, + "require-dev": { + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "8.x-dev", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-01-10T16:22:52+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.32", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:23:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.34", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b36f02317466907a230d3aa1d34467041271ef4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b36f02317466907a230d3aa1d34467041271ef4a", + "reference": "b36f02317466907a230d3aa1d34467041271ef4a", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.5.0 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.10", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.8", + "sebastian/global-state": "^5.0.8", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.34" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-01-27T05:45:00+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:27:43+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:22:56+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:19:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:30:58+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:03:27+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2025-08-10T07:10:35+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:20:34+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-10T06:57:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-14T16:00:52+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "creditzombies/log-viewer": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": {}, + "plugin-api-version": "2.9.0" +} diff --git a/composer.phar b/composer.phar new file mode 100644 index 0000000..4891693 Binary files /dev/null and b/composer.phar differ diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..249fa38 --- /dev/null +++ b/config/app.php @@ -0,0 +1,265 @@ + env('IS_QUEUE_ENABLE', '0'), + + 'name' => env('APP_NAME', 'Creditzombies'), + + 'CLIENT_KEY' => env('CLIENT_KEY', ''), + + 'SMART_CREDIT_BASE_URL'=>env("SMART_CREDIT_BASE_URL"), + + 'PWS_SMART_CREDIT_BASE_URL'=>env("PWS_SMART_CREDIT_BASE_URL"), + + 'APP_BASE_ROUTE'=>env("APP_BASE_ROUTE"), + + 'API_BASE_URL'=>env("API_BASE_URL"), + + 'ALLOWED_IP_FOR_PUBLIC_API'=>env("ALLOWED_IP_FOR_PUBLIC_API"), + + "NMI_SECURITY_KEY"=>env("NMI_SECURITY_KEY"), + + "GOOGLE_RECAPTCHA_SECRET"=>env("GOOGLE_RECAPTCHA_SECRET"), + + 'SYSTEM_PASSWORD'=>env("SYSTEM_PASSWORD",'czNop@ss2049@'), + + 'LOGIN_TYPE'=>env("LOGIN_TYPE"), + + 'REPORT_PROVIDER'=>env("REPORT_PROVIDER",3), + + 'SMART_CREDIT_REPORT_BY_JSON'=>env("SMART_CREDIT_REPORT_BY_JSON"), + + 'COMPANY_NAME'=>env("COMPANY_NAME",'Credit Zombies'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + Barryvdh\Snappy\ServiceProvider::class, + //Meneses\LaravelMpdf\LaravelMpdfServiceProvider::class + //Maatwebsite\Excel\ExcelServiceProvider::class + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + 'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, + 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class, + 'MPDF' => Meneses\LaravelMpdf\Facades\LaravelMpdf::class, + 'Excel' => Maatwebsite\Excel\Facades\Excel::class + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..ba1a4d8 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,117 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + 'hash' => false, + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..3bba110 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,59 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..4f41fdf --- /dev/null +++ b/config/cache.php @@ -0,0 +1,104 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + +]; diff --git a/config/constant.php b/config/constant.php new file mode 100644 index 0000000..0a1000d --- /dev/null +++ b/config/constant.php @@ -0,0 +1,149 @@ +'resources', + 'CREDIT_REPORT_CONTENT_PATH'=>'credit_report', + 'CONTENT_DIR'=>'content', + 'UPLOAD_MEDIA_PATH'=>'medias', + 'REPORT_SOURCE_TYPES'=>['1'=>'Identity IQ','3'=>'SmartCredit'], + 'PDF_LIB_PATH'=>env('PDF_LIB_PATH'), + 'IDENTIFICATION_IMAGE_ID'=>1, + 'MAIL_DOC_IMAGE_ID'=>2, + 'SSN_IMAGE_ID'=>3, + 'STATE_PHOTO_IMAGE_ID'=>4, + 'NOTARIZED_LETTER_IMAGE_ID'=>5, + 'CR_REPORT_IMAGE_ID'=>6, + 'TROUBLE_MARK_FILE_IMAGE_ID'=>7, + 'ITEM_CHALLENGE_FILE_IMAGE_ID'=>8, + + // Api + 'API_VALIDATION_FAILED'=>402, + 'API_SUCCESS_CODE'=>100, + 'API_FAILED_CODE'=>400, + 'OTP_SUCCESS_CODE'=>105, + + // Payment gateway code + 'PAYMENT_GATEWAY'=>[ + 'NMI'=>'nmi' + ], + + // sale status + 'SALE_STATUS'=>[ + 'PENDING'=>2, + 'COMPLETED'=>1, + 'FAILED'=>0 + ], + + // package + 'package'=>[ + '1'=>'BASIC', + '2'=>'PREMIUM' + ], + + // report type + 'reportType'=>[ + 'SMART_CREDIT'=>3, + 'IDENTITY_IQ'=>1, + 'PRIVACY_GUARD'=>2, + ], + + // source type + 'sourceType'=>[ + 'Identity IQ'=>1, + 'SmartCredit'=>3, + + ], + + 'PACKAGE_INTERVAL_DAY'=>45, + 'PAYMENT_INTERVAL_DAY'=>30, + 'TRAINING_VIDEO'=>"https://www.youtube.com/watch?v=OEEpSjnX3-M", + 'LINK_VALIDATION'=>"/https:\/\/www\.youtube\.com\/watch\?v=[^&]+/", + 'VIMEO_VIDEO_LINK_VALIDATION' => "/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*/", + 'REPORT_PROVIDER_LINK_VALIDATION' => "/^https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)$/", + 'SECTION_IDS'=>[ + 'ACCOUNT_INFORMATION'=>$ACCOUNT_INFORMATION + ], + + // section + 'SECTION_NAME'=>[ + $ACCOUNT_INFORMATION =>'Account Information' + ], + + 'MAX_WAVE'=> 6, + 'PAGINATION_LIMIT'=>10, + //subscription status + 'SUBSCRIPTION_STATUS'=>[ + 'SUBSCRIBED'=>1, + 'UNSUBSCRIBED'=>0, + 'CANCEL_ACCOUNT'=>2 + ], + //report import status + 'IMPORT_REPORT_STATUS'=>[ + 'ELIGIBLE'=>1, + 'NOT_ELIGIBLE'=>0 + ], + // Sales Status + 'SALES_STATUS'=>[ + '0'=>'Failed', + '1'=>'Completed', + '2'=>'Pending', + ], + 'SUBSCRIPTION_SMART_CREDIT'=>[ + 'DELETE' => 'CLOSE_IMMEDIATE', + 'UNSUBSCRIBE' => 'PAUSE', + 'SUBSCRIBE' => 'RESUME' + ], + 'MAX_TIME_LIMIT'=> 180, + 'MAX_FILE_SIZE' => 3 * $file_size_in_kb, // in KB + 'GO_TO_SMART_CREDIT_URL' => 'https://www.smartcredit.com/?PID=11885', + 'GO_TO_IDENTITY_IQ_URL' => 'https://member.identityiq.com/creditpreferred.aspx?offercode=431141CQ', + + 'ACCOUNT_STATUS'=>[ + 'Active' => 1, + 'Inactive' => 2, + 'Canceled' => 3, + ], + 'PAYMENT_STATUS'=>[ + '1'=>'Success', + '0'=>'Failed' + ], + 'CLIENT_TYPES'=>[ + '1'=>'Free', + '2'=>'Paid' + ], + + 'authorized_log_viewer_emails'=>[ + 'jesse@clickletters.com', + 'cz_support@gmail.com' + ], + + 'DAY_OF_MONTH' => 30, + 'MONTH_FREQUENCY' => '1-1', + 'PLAN_AMOUNT' => 24.97, + 'PLAN_PAYMENTS' => 0, + 'MAX_PDF_COUNT' => 100, + 'MAX_PDF_COUNT_MESSAGE' => "Oops! Looks like you're trying to process more than 50 letters, Are you sure you need to challenge this many Items? Please Double Check The how-to video To Make Sure You Want To Move Forward To Challenge All Items Listed. If You Want to Continue To Process All The Letters Then Continue", + 'MIN_PDF_COUNT_VALUE' => 50, + + 'SUPPORT_STATUS'=>[ + 0 => 'Open', + 1 => 'In progress', + 2 => 'Closed', + 3 => 'Replied', + ], + + 'USER_TYPE'=>[ + 'EMPLOYEE' => 2, + 'CLIENT' => 0, + 'ADMIN' => 1, + ], + + 'SCRAPPER_RESPONSE' =>[ + 'ERROR' => 'Email or Password do not match in credit report provider.', + 'TIME_OUT' => 'Email or Password do not match in credit report provider.', + 'INVALID_LOGIN' => 'Email or Password do not match in credit report provider.', + 'ACCOUNT_LOCKED' => 'This account is locked. Please contact customer service at 877-875-IDIQ (4347).' + ] +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..558369d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..638285e --- /dev/null +++ b/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + Pdo\Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..8de349c --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,90 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + + 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'resources' => [ + 'driver' => 'local', + 'root' => storage_path('resources'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..8425770 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/keys.php b/config/keys.php new file mode 100644 index 0000000..ac78a2a --- /dev/null +++ b/config/keys.php @@ -0,0 +1,7 @@ +storage_path("app/public/keys/oauth-public.key"), + "private_key"=>storage_path("app/public/keys/oauth-private.key") +]; diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 0000000..efaf72c --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,158 @@ + 'App\\Http\\Livewire', + + /* + |-------------------------------------------------------------------------- + | View Path + |-------------------------------------------------------------------------- + | + | This value sets the path for Livewire component views. This affects + | file manipulation helper commands like `artisan make:livewire`. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |-------------------------------------------------------------------------- + | Layout + |-------------------------------------------------------------------------- + | The default layout view that will be used when rendering a component via + | Route::get('/some-endpoint', SomeComponent::class);. In this case the + | the view returned by SomeComponent will be wrapped in "layouts.app" + | + */ + + 'layout' => 'layouts.app', + + /* + |-------------------------------------------------------------------------- + | Livewire Assets URL + |-------------------------------------------------------------------------- + | + | This value sets the path to Livewire JavaScript assets, for cases where + | your app's domain root is not the correct path. By default, Livewire + | will load its JavaScript assets from the app's "relative root". + | + | Examples: "/assets", "myurl.com/app". + | + */ + + 'asset_url' => config('app.url'), + + /* + |-------------------------------------------------------------------------- + | Livewire App URL + |-------------------------------------------------------------------------- + | + | This value should be used if livewire assets are served from CDN. + | Livewire will communicate with an app through this url. + | + | Examples: "https://my-app.com", "myurl.com/app". + | + */ + + 'app_url' => null, + + /* + |-------------------------------------------------------------------------- + | Livewire Endpoint Middleware Group + |-------------------------------------------------------------------------- + | + | This value sets the middleware group that will be applied to the main + | Livewire "message" endpoint (the endpoint that gets hit everytime + | a Livewire component updates). It is set to "web" by default. + | + */ + + 'middleware_group' => 'web', + + /* + |-------------------------------------------------------------------------- + | Livewire Temporary File Uploads Endpoint Configuration + |-------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is validated and stored permanently. All file uploads + | are directed to a global endpoint for temporary storage. The config + | items below are used for customizing the way the endpoint works. + | + */ + + 'temporary_file_upload' => [ + 'disk' => null, // Example: 'local', 's3' Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' Default 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs. + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated. + ], + + /* + |-------------------------------------------------------------------------- + | Manifest File Path + |-------------------------------------------------------------------------- + | + | This value sets the path to the Livewire manifest file. + | The default should work for most cases (which is + | "/bootstrap/cache/livewire-components.php"), but for specific + | cases like when hosting on Laravel Vapor, it could be set to a different value. + | + | Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php". + | + */ + + 'manifest_path' => null, + + /* + |-------------------------------------------------------------------------- + | Back Button Cache + |-------------------------------------------------------------------------- + | + | This value determines whether the back button cache will be used on pages + | that contain Livewire. By disabling back button cache, it ensures that + | the back button shows the correct state of components, instead of + | potentially stale, cached data. + | + | Setting it to "false" (default) will disable back button cache. + | + */ + + 'back_button_cache' => false, + + /* + |-------------------------------------------------------------------------- + | Render On Redirect + |-------------------------------------------------------------------------- + | + | This value determines whether Livewire will render before it's redirected + | or not. Setting it to "false" (default) will mean the render method is + | skipped when redirecting. And "true" will mean the render method is + | run before redirecting. Browsers bfcache can store a potentially + | stale view if render is skipped on redirect. + | + */ + + 'render_on_redirect' => false, + +]; diff --git a/config/log-viewer.php b/config/log-viewer.php new file mode 100644 index 0000000..1acd261 --- /dev/null +++ b/config/log-viewer.php @@ -0,0 +1,163 @@ + env('LOG_VIEWER_ENABLED', true), + + /* + |-------------------------------------------------------------------------- + | Log Viewer Domain + |-------------------------------------------------------------------------- + | You may change the domain where Log Viewer should be active. + | If the domain is empty, all domains will be valid. + | + */ + + 'route_domain' => null, + + /* + |-------------------------------------------------------------------------- + | Log Viewer Route + |-------------------------------------------------------------------------- + | Log Viewer will be available under this URL. + | + */ + + 'route_path' => 'application', + + /* + |-------------------------------------------------------------------------- + | Back to system URL + |-------------------------------------------------------------------------- + | When set, displays a link to easily get back to this URL. + | Set to `null` to hide this link. + | + | Optional label to display for the above URL. + | + */ + + 'back_to_system_url' => config('app.url', null), + + 'back_to_system_label' => null, // Displayed by default: "Back to {{ app.name }}" + + /* + |-------------------------------------------------------------------------- + | Log Viewer route middleware. + |-------------------------------------------------------------------------- + | The middleware should enable session and cookies support in order for the Log Viewer to work. + | The 'web' middleware will be applied automatically if empty. + | + */ + + 'middleware' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Include file patterns + |-------------------------------------------------------------------------- + | + */ + + 'include_files' => [ + '*.log', + ], + + /* + |-------------------------------------------------------------------------- + | Exclude file patterns. + |-------------------------------------------------------------------------- + | This will take precedence over included files. + | + */ + + 'exclude_files' => [ + //'my_secret.log' + ], + + /* + |-------------------------------------------------------------------------- + | Shorter stack trace filters. + |-------------------------------------------------------------------------- + | Lines containing any of these strings will be excluded from the full log. + | This setting is only active when the function is enabled via the user interface. + | + */ + + 'shorter_stack_trace_excludes' => [ + '/vendor/symfony/', + '/vendor/laravel/framework/', + '/vendor/barryvdh/laravel-debugbar/', + ], + + /* + |-------------------------------------------------------------------------- + | Log matching patterns + |-------------------------------------------------------------------------- + | Regexes for matching log files + | + */ + + 'patterns' => [ + 'laravel' => [ + 'log_matching_regex' => '/^\[(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}\.?(\d{6}([\+-]\d\d:\d\d)?)?)\].*/', + + /** + * This pattern, used for processing Laravel logs, returns these results: + * $matches[0] - the full log line being tested. + * $matches[1] - full timestamp between the square brackets (includes microseconds and timezone offset) + * $matches[2] - timestamp microseconds, if available + * $matches[3] - timestamp timezone offset, if available + * $matches[4] - contents between timestamp and the severity level + * $matches[5] - environment (local, production, etc) + * $matches[6] - log severity (info, debug, error, etc) + * $matches[7] - the log text, the rest of the text. + */ + 'log_parsing_regex' => '/^\[(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}\.?(\d{6}([\+-]\d\d:\d\d)?)?)\](.*?(\w+)\.|.*?)(' + .implode('|', array_filter(Level::caseValues())) + .')?: (.*?)( in [\/].*?:[0-9]+)?$/is', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Eager-scan log files + |-------------------------------------------------------------------------- + | Whether to eagerly scan all log files configured with the Log Viewer. + | Scanning a log file will create an index for it, which will + | speed up further navigation of that log file. + | + */ + + 'eager_scan' => env('LOG_VIEWER_EAGER_SCAN', true), + + /* + |-------------------------------------------------------------------------- + | Cache driver + |-------------------------------------------------------------------------- + | Cache driver to use for storing the log indices. Indices are used to speed up + | log navigation. Defaults to your application's default cache driver. + | + */ + + 'cache_driver' => env('LOG_VIEWER_CACHE_DRIVER', null), + + /* + |-------------------------------------------------------------------------- + | Chunk size when scanning log files lazily + |-------------------------------------------------------------------------- + | The size in MB of files to scan before updating the progress bar when searching across all files. + | + */ + + 'lazy_scan_chunk_size_in_mb' => 200, +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..20d0585 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,104 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 30, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..54299aa --- /dev/null +++ b/config/mail.php @@ -0,0 +1,110 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'auth_mode' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => '/usr/sbin/sendmail -bs', + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..1222296 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,89 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/route_keys.php b/config/route_keys.php new file mode 100644 index 0000000..4769f3a --- /dev/null +++ b/config/route_keys.php @@ -0,0 +1,163 @@ +[ + 'get.clients' + ], + + 'client-delete'=>[ + 'get.clients', + 'delete.client', + 'admin.ajax.process' + ], + + 'client-edit'=>[ + 'get.clients', + 'get.client.info', + 'update.client' + ], + + 'client-view'=>[ + 'get.clients', + 'get.client.info', + ], + + 'sales-report'=>[ + 'sales.report' + ], + + 'terms-service'=>[ + 'terms.of.service' + ], + + 'training-video-create'=>[ + 'training_video.list', + 'create.video' + ], + + 'training-video-delete'=>[ + 'training_video.list', + 'delete.video' + ], + + 'training-video-edit'=>[ + 'training_video.list', + 'update.video' + ], + + 'employee-list'=>[ + 'employee.list' + ], + + 'employee-create'=>[ + 'employee.list', + 'create.employee', + 'insert.employee' + ], + + 'employee-view'=>[ + 'employee.list', + 'get.employee.info' + ], + + 'employee-edit'=>[ + 'employee.list', + 'get.employee.info', + 'update.employee' + ], + 'employee-delete'=>[ + 'employee.list', + 'admin.ajax.process' + ], + + // client + + 'client-profile-view'=>[ + 'show.manage.clients' + ], + + 'client-profile-edit'=>[ + 'show.manage.clients', + 'manage.clients' + ], + + 'client-payment-create'=>[ + 'show.manage.clients', + 'payment.create' + ], + + 'client-cancel-account'=>[ + 'show.manage.clients', + 'process.ajax' + ], + + 'client-training-video-view'=>[ + 'training_video.index' + ], + + 'client-letter-view-update'=>[ + 'get.letter' + ], + + 'client-generate-pdf'=>[ + 'get.letter', + 'generate.pdf' + ], + + 'client-get-credit-report'=>[ + 'get.letter', + 'process.ajax' + ], + + 'client-upload-credit-report'=>[ + 'get.letter', + 'process.ajax', + 'upload.credit.report' + ], + + 'client-create'=>[ + 'client.create', + 'client.insert' + ], + + // credit report provider + + 'credit-report-provider-create'=>[ + 'view.provider.link', + 'create.provider.link' + ], + + 'credit-report-provider-delete'=>[ + 'view.provider.link', + 'delete.provider.link' + ], + + 'credit-report-provider-edit'=>[ + 'view.provider.link', + 'update.provider.link' + ], + + // client support + + 'client-support-create'=>[ + 'create.client.support' + ], + + 'client-support-edit'=>[ + 'view.client.support', + 'insert.client.support' + ], + + 'client-support-view'=>[ + 'list.client.support', + 'view.client.support' + ], + + 'client-support-list'=>[ + 'list.client.support' + ], + + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..2a1d616 --- /dev/null +++ b/config/services.php @@ -0,0 +1,33 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..4e0f66c --- /dev/null +++ b/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION', null), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE', null), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/snappy.php b/config/snappy.php new file mode 100644 index 0000000..a1a3b04 --- /dev/null +++ b/config/snappy.php @@ -0,0 +1,55 @@ + [ + 'enabled' => true, + 'binary' => 'C:\wkhtmltopdf\bin\wkhtmltopdf.exe', + 'timeout' => false, + 'options' => [ + 'enable-local-file-access' => true, + ], + 'env' => [], + ], + + 'image' => [ + 'enabled' => true, + 'binary' => 'C:\wkhtmltopdf\bin\wkhtmltoimage.exe', + 'timeout' => false, + 'options' => [ + 'enable-local-file-access' => true, + ], + 'env' => [], + ], + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..97fc976 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1,2 @@ +*.sqlite +*.sqlite-journal diff --git a/database/ceditzombiesdb.sql b/database/ceditzombiesdb.sql new file mode 100644 index 0000000..ee45924 --- /dev/null +++ b/database/ceditzombiesdb.sql @@ -0,0 +1,883 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.2 +-- https://www.phpmyadmin.net/ +-- +-- Host: localhost:3306 +-- Generation Time: Jun 24, 2026 at 06:27 AM +-- Server version: 8.4.3 +-- PHP Version: 8.1.32 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `ceditzombiesdb` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `card_tokens` +-- + +CREATE TABLE `card_tokens` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint NOT NULL, + `token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `contents` +-- + +CREATE TABLE `contents` ( + `id` bigint UNSIGNED NOT NULL, + `terms_service` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `creditreports` +-- + +CREATE TABLE `creditreports` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL DEFAULT '0', + `report_type` tinyint NOT NULL DEFAULT '3', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `creditreport_providers` +-- + +CREATE TABLE `creditreport_providers` ( + `id` bigint UNSIGNED NOT NULL, + `company_type` tinyint NOT NULL, + `link` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `creditreport_providers` +-- + +INSERT INTO `creditreport_providers` (`id`, `company_type`, `link`, `created_at`, `updated_at`) VALUES +(1, 1, 'https://member.identityiq.com/creditpreferred.aspx?offercode=431141CQ', '2023-03-15 10:53:30', '2023-03-23 06:15:04'), +(3, 3, 'https://www.smartcredit.com/?PID=11885', '2024-01-03 04:03:18', '2024-01-03 04:03:18'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `failed_jobs` +-- + +CREATE TABLE `failed_jobs` ( + `id` bigint UNSIGNED NOT NULL, + `uuid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `iq_call_histories` +-- + +CREATE TABLE `iq_call_histories` ( + `id` bigint UNSIGNED NOT NULL, + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `port` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `page` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `error_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `status` tinyint NOT NULL DEFAULT '0' COMMENT '0 = failed, 1=success', + `created_at` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `migrations` +-- + +CREATE TABLE `migrations` ( + `id` int UNSIGNED NOT NULL, + `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `modules` +-- + +CREATE TABLE `modules` ( + `id` bigint UNSIGNED NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` tinyint NOT NULL DEFAULT '0' COMMENT 'for employee 1 otherwise 0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `modules` +-- + +INSERT INTO `modules` (`id`, `name`, `status`, `created_at`, `updated_at`) VALUES +(1, 'Client Management', 1, '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(2, 'Training Video', 1, '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(3, 'Sales Report', 1, '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(4, 'Terms And Service', 1, '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(5, 'Employee Management', 1, '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(7, 'Account Information', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(8, 'Software Training', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(9, 'WORK AREA', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(10, 'Profile', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(11, 'Payment Setting', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(12, 'Cancel Account', 0, '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(14, 'Credit Report Provider', 1, '2023-03-23 12:50:12', '2023-03-23 12:50:12'), +(15, 'Support', 1, '2023-11-09 10:43:46', '2023-11-09 10:43:46'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `packages` +-- + +CREATE TABLE `packages` ( + `id` bigint UNSIGNED NOT NULL, + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `amount` double(12,4) NOT NULL DEFAULT '0.0000' COMMENT 'Package price', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `packages` +-- + +INSERT INTO `packages` (`id`, `name`, `amount`, `created_at`, `updated_at`) VALUES +(1, 'Basic', 19.9700, NULL, NULL), +(2, 'Premium', 24.9700, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `password_resets` +-- + +CREATE TABLE `password_resets` ( + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `permissions` +-- + +CREATE TABLE `permissions` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL, + `submodule_id` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `recurrings` +-- + +CREATE TABLE `recurrings` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint NOT NULL DEFAULT '0', + `last_process_date` datetime DEFAULT NULL, + `status` tinyint NOT NULL DEFAULT '1' COMMENT '1=active,2= inactive', + `transaction_status` tinyint NOT NULL DEFAULT '0', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `subscription_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `recurring_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `plan_payments` smallint NOT NULL DEFAULT '0', + `plan_amount` double(8,2) NOT NULL DEFAULT '0.00', + `day_frequency` tinyint NOT NULL DEFAULT '0', + `month_frequency` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `day_of_month` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sales` +-- + +CREATE TABLE `sales` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL DEFAULT '0', + `status` tinyint NOT NULL COMMENT '1=completed,0=failed,2=pending', + `order_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cc_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'masking and last 4 digit card number', + `auth_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'from api response authcode', + `transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'from api response tranx id', + `recurring_id` int NOT NULL DEFAULT '0', + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `security_questions` +-- + +CREATE TABLE `security_questions` ( + `id` bigint UNSIGNED NOT NULL, + `questions` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `submodules` +-- + +CREATE TABLE `submodules` ( + `id` bigint UNSIGNED NOT NULL, + `module_id` int NOT NULL, + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `submodules` +-- + +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(1, 1, 'client-list', 'List', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(2, 1, 'client-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(3, 1, 'client-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(4, 1, 'client-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(5, 2, 'training-video-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(6, 2, 'training-video-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(7, 2, 'training-video-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(8, 3, 'sales-report', 'Sales Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(9, 4, 'terms-service', 'Terms And Service', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(10, 5, 'employee-list', 'List', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(11, 6, 'user-permission-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(12, 6, 'user-permission-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(13, 7, 'client-profile-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(14, 7, 'client-profile-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(15, 12, 'client-cancel-account', 'Cancel Account', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(16, 11, 'client-cancel-account', 'Payment Setting', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(17, 8, 'client-training-video-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(18, 9, 'client-letter-view-update', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(19, 9, 'client-generate-pdf', 'Generate Pdf', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(20, 9, 'client-get-credit-report', 'Credit Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(21, 9, 'client-upload-credit-report', 'Upload Credit Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(22, 5, 'employee-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(23, 5, 'employee-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(24, 5, 'employee-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(25, 5, 'employee-delete', 'Delete', '2023-01-23 18:13:37', '2023-01-23 18:13:37'), +(26, 1, 'client-create', 'Create', '2023-03-09 13:30:34', '2023-03-09 13:30:34'), +(27, 14, 'credit-report-provider-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(28, 14, 'credit-report-provider-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(29, 14, 'credit-report-provider-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(30, 15, 'client-support-create', 'Create', '2023-11-09 10:47:06', '2023-11-09 10:47:06'), +(31, 15, 'client-support-list', 'List', '2023-11-09 10:47:06', '2023-11-09 10:47:06'), +(32, 15, 'client-support-view', 'View', '2023-11-09 10:51:41', '2023-11-09 10:51:41'), +(33, 15, 'client-support-edit', 'Edit', '2023-11-09 10:51:41', '2023-11-09 10:51:41'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `supports` +-- + +CREATE TABLE `supports` ( + `id` bigint UNSIGNED NOT NULL, + `sender_id` int NOT NULL, + `assigned_id` int NOT NULL DEFAULT '0', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `priority` tinyint NOT NULL DEFAULT '1' COMMENT '1=normal,2=high, 3= Very High, 4=urgent', + `is_read` tinyint NOT NULL DEFAULT '0' COMMENT '0=no read,1=read', + `status` tinyint NOT NULL DEFAULT '0' COMMENT '0 = Pending, 1 = In progress, 2 = closed, 3 = replied', + `created_at` datetime DEFAULT NULL, + `updated_at` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `support_replies` +-- + +CREATE TABLE `support_replies` ( + `id` bigint UNSIGNED NOT NULL, + `sender_id` int NOT NULL, + `support_id` int NOT NULL, + `is_read` tinyint NOT NULL DEFAULT '0' COMMENT '0=no read,1=read', + `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `attachment_path` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` datetime DEFAULT NULL, + `updated_at` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tmp_sales` +-- + +CREATE TABLE `tmp_sales` ( + `id` bigint UNSIGNED NOT NULL, + `status` tinyint NOT NULL DEFAULT '2' COMMENT '1=completed,0=failed,2=pending', + `order_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `uploadmedias` +-- + +CREATE TABLE `uploadmedias` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL, + `image_type_id` int NOT NULL, + `image_path` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `users` +-- + +CREATE TABLE `users` ( + `id` bigint UNSIGNED NOT NULL, + `first_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `last_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_type` tinyint NOT NULL DEFAULT '0' COMMENT '1=admin,0=client,2=employee', + `subscription_status` tinyint NOT NULL DEFAULT '0' COMMENT 'if payment success then(0=unsubscribed, 1= subscribed,2=cancel account)', + `status` tinyint NOT NULL DEFAULT '1' COMMENT 'active = 1, inactive = 2', + `is_free` tinyint NOT NULL DEFAULT '2' COMMENT ' ''if free customer =1 otherwise 2'' ', + `credit_report_company_type` tinyint NOT NULL DEFAULT '3', + `is_first_login` tinyint NOT NULL DEFAULT '1', + `is_import` tinyint NOT NULL DEFAULT '0' COMMENT '1= eligible for import new report, 0= not yet', + `last_payment_date` datetime DEFAULT NULL, + `user_access_end_date` datetime DEFAULT NULL, + `last_import_date` datetime DEFAULT NULL, + `account_cancel_datetime` datetime DEFAULT NULL, + `wave` tinyint NOT NULL DEFAULT '0', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `street_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `street_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `city` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `state` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `birth_date` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `zip_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ssn` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_verified_at` timestamp NULL DEFAULT NULL, + `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `users` +-- + +INSERT INTO `users` (`id`, `first_name`, `last_name`, `user_type`, `subscription_status`, `status`, `is_free`, `credit_report_company_type`, `is_first_login`, `is_import`, `last_payment_date`, `user_access_end_date`, `last_import_date`, `account_cancel_datetime`, `wave`, `email`, `password`, `street_no`, `street_name`, `city`, `state`, `birth_date`, `phone`, `zip_code`, `ssn`, `email_verified_at`, `remember_token`, `created_at`, `updated_at`, `deleted_at`) VALUES +(4, 'Jesse', 'Miller', 1, 1, 1, 2, 3, 0, 2, NULL, NULL, '2024-08-26 13:02:31', NULL, 2, 'jesse@clickletters.com', 'YTZLd2xBTTM4K0prVGc1bE5sODlIQT09', '3555', 'Roosevelt Street', 'San Francisco', 'IL', '10/05/2000', '415-374-2261', '94108', '5555', NULL, NULL, '2022-10-06 10:27:05', '2023-12-27 06:12:54', NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_identity_question_answers` +-- + +CREATE TABLE `user_identity_question_answers` ( + `id` bigint UNSIGNED NOT NULL, + `question` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `answer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_packages` +-- + +CREATE TABLE `user_packages` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL, + `package_id` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_security_questions` +-- + +CREATE TABLE `user_security_questions` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL, + `answer_id` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_security_question_answers` +-- + +CREATE TABLE `user_security_question_answers` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL, + `question_id` int NOT NULL, + `answer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_waves` +-- + +CREATE TABLE `user_waves` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL DEFAULT '0', + `wave` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `video_settings` +-- + +CREATE TABLE `video_settings` ( + `id` bigint UNSIGNED NOT NULL, + `link` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `section_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `status` tinyint NOT NULL DEFAULT '1' COMMENT '0-inaction, 1-active', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `video_settings` +-- + +INSERT INTO `video_settings` (`id`, `link`, `section_name`, `status`, `created_at`, `updated_at`) VALUES +(3, 'https://vimeo.com/773528229', 'Account Information', 1, '2022-09-23 05:37:36', '2022-11-28 16:27:20'), +(4, 'https://vimeo.com/784865772', 'Wave 1 Attack Process', 1, '2022-12-28 21:39:22', '2022-12-28 21:39:22'), +(5, 'https://vimeo.com/784857219', 'Personal Information To Add To Letters', 1, '2023-01-10 20:29:31', '2023-01-10 20:29:31'), +(6, 'https://vimeo.com/792043198', 'Wave 2 Attack Process', 1, '2023-01-23 22:36:26', '2023-01-23 22:36:26'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wave_cycles` +-- + +CREATE TABLE `wave_cycles` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` int NOT NULL DEFAULT '0', + `wave_cycle` int NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `card_tokens` +-- +ALTER TABLE `card_tokens` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `contents` +-- +ALTER TABLE `contents` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `creditreports` +-- +ALTER TABLE `creditreports` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `creditreport_providers` +-- +ALTER TABLE `creditreport_providers` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`); + +-- +-- Indexes for table `iq_call_histories` +-- +ALTER TABLE `iq_call_histories` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `migrations` +-- +ALTER TABLE `migrations` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `modules` +-- +ALTER TABLE `modules` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `packages` +-- +ALTER TABLE `packages` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `password_resets` +-- +ALTER TABLE `password_resets` + ADD KEY `password_resets_email_index` (`email`); + +-- +-- Indexes for table `permissions` +-- +ALTER TABLE `permissions` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `recurrings` +-- +ALTER TABLE `recurrings` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `sales` +-- +ALTER TABLE `sales` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `security_questions` +-- +ALTER TABLE `security_questions` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `submodules` +-- +ALTER TABLE `submodules` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `supports` +-- +ALTER TABLE `supports` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `support_replies` +-- +ALTER TABLE `support_replies` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `tmp_sales` +-- +ALTER TABLE `tmp_sales` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `tmp_sales_order_id_unique` (`order_id`); + +-- +-- Indexes for table `uploadmedias` +-- +ALTER TABLE `uploadmedias` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `email` (`email`); + +-- +-- Indexes for table `user_identity_question_answers` +-- +ALTER TABLE `user_identity_question_answers` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `user_packages` +-- +ALTER TABLE `user_packages` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `user_security_questions` +-- +ALTER TABLE `user_security_questions` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `user_security_question_answers` +-- +ALTER TABLE `user_security_question_answers` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `user_waves` +-- +ALTER TABLE `user_waves` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `video_settings` +-- +ALTER TABLE `video_settings` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `section_id` (`section_name`), + ADD UNIQUE KEY `section_id_2` (`section_name`); + +-- +-- Indexes for table `wave_cycles` +-- +ALTER TABLE `wave_cycles` + ADD PRIMARY KEY (`id`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `card_tokens` +-- +ALTER TABLE `card_tokens` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT for table `contents` +-- +ALTER TABLE `contents` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT for table `creditreports` +-- +ALTER TABLE `creditreports` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=185; + +-- +-- AUTO_INCREMENT for table `creditreport_providers` +-- +ALTER TABLE `creditreport_providers` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; + +-- +-- AUTO_INCREMENT for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=33; + +-- +-- AUTO_INCREMENT for table `iq_call_histories` +-- +ALTER TABLE `iq_call_histories` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=163; + +-- +-- AUTO_INCREMENT for table `migrations` +-- +ALTER TABLE `migrations` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26; + +-- +-- AUTO_INCREMENT for table `modules` +-- +ALTER TABLE `modules` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16; + +-- +-- AUTO_INCREMENT for table `packages` +-- +ALTER TABLE `packages` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- AUTO_INCREMENT for table `permissions` +-- +ALTER TABLE `permissions` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=49; + +-- +-- AUTO_INCREMENT for table `recurrings` +-- +ALTER TABLE `recurrings` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=111; + +-- +-- AUTO_INCREMENT for table `sales` +-- +ALTER TABLE `sales` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=327; + +-- +-- AUTO_INCREMENT for table `security_questions` +-- +ALTER TABLE `security_questions` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT for table `submodules` +-- +ALTER TABLE `submodules` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=34; + +-- +-- AUTO_INCREMENT for table `supports` +-- +ALTER TABLE `supports` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; + +-- +-- AUTO_INCREMENT for table `support_replies` +-- +ALTER TABLE `support_replies` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46; + +-- +-- AUTO_INCREMENT for table `tmp_sales` +-- +ALTER TABLE `tmp_sales` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=174; + +-- +-- AUTO_INCREMENT for table `uploadmedias` +-- +ALTER TABLE `uploadmedias` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=170; + +-- +-- AUTO_INCREMENT for table `users` +-- +ALTER TABLE `users` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=232; + +-- +-- AUTO_INCREMENT for table `user_identity_question_answers` +-- +ALTER TABLE `user_identity_question_answers` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=191; + +-- +-- AUTO_INCREMENT for table `user_packages` +-- +ALTER TABLE `user_packages` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT for table `user_security_questions` +-- +ALTER TABLE `user_security_questions` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `user_security_question_answers` +-- +ALTER TABLE `user_security_question_answers` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `user_waves` +-- +ALTER TABLE `user_waves` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=211; + +-- +-- AUTO_INCREMENT for table `video_settings` +-- +ALTER TABLE `video_settings` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- AUTO_INCREMENT for table `wave_cycles` +-- +ALTER TABLE `wave_cycles` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..bdea1a3 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,33 @@ + $this->faker->name, + 'email' => $this->faker->unique()->safeEmail, + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } +} diff --git a/database/imran_sql.txt b/database/imran_sql.txt new file mode 100644 index 0000000..bbe8fdc --- /dev/null +++ b/database/imran_sql.txt @@ -0,0 +1,2 @@ +ALTER TABLE `packages` ADD `amount` DOUBLE(12,4) NOT NULL DEFAULT '0' COMMENT 'Package price' AFTER `name`; +INSERT INTO `packages` (`id`, `name`, `amount`, `created_at`, `updated_at`) VALUES (NULL, 'Basic', '19.97', NULL, NULL), (NULL, 'Premium', '24.97', NULL, NULL); diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..b854d1a --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,47 @@ +id(); + $table->string('first_name',100)->nullable(); + $table->string('last_name',100)->nullable(); + $table->tinyInteger('credit_report_company_type')->default(3); + $table->tinyInteger('is_first_login')->default(1); + $table->string('email')->unique(); + $table->string('password'); + $table->string('street_no',100)->nullable(); + $table->string('street_name',100)->nullable(); + $table->string('city',50)->nullable(); + $table->string('state',10)->nullable(); + $table->string('birth_date',20)->nullable(); + $table->string('phone',20)->nullable(); + $table->string('zip_code',50)->nullable(); + $table->string('ssn',10)->nullable(); + $table->timestamp('email_verified_at')->nullable(); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..0ee0a36 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..6aa6d74 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/database/migrations/2022_07_11_134331_create_packages_table.php b/database/migrations/2022_07_11_134331_create_packages_table.php new file mode 100644 index 0000000..c57c4ab --- /dev/null +++ b/database/migrations/2022_07_11_134331_create_packages_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name',100); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('packages'); + } +} diff --git a/database/migrations/2022_07_11_134405_create_user_packages_table.php b/database/migrations/2022_07_11_134405_create_user_packages_table.php new file mode 100644 index 0000000..3b2e936 --- /dev/null +++ b/database/migrations/2022_07_11_134405_create_user_packages_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('user_id'); + $table->integer('package_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_packages'); + } +} diff --git a/database/migrations/2022_07_11_134444_create_creditreports_table.php b/database/migrations/2022_07_11_134444_create_creditreports_table.php new file mode 100644 index 0000000..ba86bb9 --- /dev/null +++ b/database/migrations/2022_07_11_134444_create_creditreports_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('user_id')->default(0); + $table->tinyInteger('report_type')->default(3); // 3 = smart credit, 1 = IQ, 2 = privacy guard + $table->string('email',255)->nullable(); + $table->string('password',255)->nullable(); + $table->string('file_name')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('creditreports'); + } +} diff --git a/database/migrations/2022_07_11_142907_create_uploadmedia_table.php b/database/migrations/2022_07_11_142907_create_uploadmedia_table.php new file mode 100644 index 0000000..6872df5 --- /dev/null +++ b/database/migrations/2022_07_11_142907_create_uploadmedia_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('user_id'); + $table->integer('image_type_id'); + $table->string('image_path',100)->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('uploadmedia'); + } +} diff --git a/database/migrations/2022_08_10_173326_create_tmp_sales_table.php b/database/migrations/2022_08_10_173326_create_tmp_sales_table.php new file mode 100644 index 0000000..d4646ca --- /dev/null +++ b/database/migrations/2022_08_10_173326_create_tmp_sales_table.php @@ -0,0 +1,33 @@ +id(); + $table->tinyInteger('status')->default('2')->comment('1=completed,0=failed,2=pending'); + $table->string('order_id',100)->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tmp_sales'); + } +} diff --git a/database/migrations/2022_08_10_173331_create_sales_table.php b/database/migrations/2022_08_10_173331_create_sales_table.php new file mode 100644 index 0000000..9318f9c --- /dev/null +++ b/database/migrations/2022_08_10_173331_create_sales_table.php @@ -0,0 +1,37 @@ +id(); + $table->integer('user_id')->default(0); + $table->tinyInteger('status')->comment('1=completed,0=failed,2=pending'); + $table->string('order_id',100)->unique(); + $table->string('auth_code',50)->nullable()->comment('from api response authcode'); + $table->string('transaction_id',100)->nullable()->comment('from api response tranx id'); + $table->string('ip',50); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('sales'); + } +} diff --git a/database/migrations/2022_09_09_063323_create_card_tokens_table.php b/database/migrations/2022_09_09_063323_create_card_tokens_table.php new file mode 100644 index 0000000..6954a44 --- /dev/null +++ b/database/migrations/2022_09_09_063323_create_card_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->bigInteger('user_id'); + $table->string('token'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('card_tokens'); + } +} diff --git a/database/migrations/2022_09_12_123437_create_user_waves_table.php b/database/migrations/2022_09_12_123437_create_user_waves_table.php new file mode 100644 index 0000000..8a4c927 --- /dev/null +++ b/database/migrations/2022_09_12_123437_create_user_waves_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('user_id')->default(0); + $table->string('wave',10)->default(null); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_waves'); + } +} diff --git a/database/migrations/2022_09_14_090208_create_video_settings_table.php b/database/migrations/2022_09_14_090208_create_video_settings_table.php new file mode 100644 index 0000000..5cd25fb --- /dev/null +++ b/database/migrations/2022_09_14_090208_create_video_settings_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('link',255)->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('video_settings'); + } +} diff --git a/database/migrations/2022_09_28_131757_create_recurrings_table.php b/database/migrations/2022_09_28_131757_create_recurrings_table.php new file mode 100644 index 0000000..39cd968 --- /dev/null +++ b/database/migrations/2022_09_28_131757_create_recurrings_table.php @@ -0,0 +1,42 @@ +id(); + $table->bigInteger('user_id'); + $table->string('subscription_id',20); + $table->string('transaction_id',20); + $table->string('recurring_type',100); + $table->smallInteger('plan_payments'); + $table->double('plan_amount',8,2); + $table->tinyInteger('day_frequency'); + $table->string('month_frequency',50); + $table->string('day_of_month',50); + $table->string('ccnumber',50); + $table->string('ccexp',20); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('recurrings'); + } +} diff --git a/database/migrations/2022_10_20_075419_create_wave_cycles_table.php b/database/migrations/2022_10_20_075419_create_wave_cycles_table.php new file mode 100644 index 0000000..f30c4a7 --- /dev/null +++ b/database/migrations/2022_10_20_075419_create_wave_cycles_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('user_id')->default(0); + $table->integer('wave_cycle')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('wave_cycles'); + } +} diff --git a/database/migrations/2022_11_02_102458_add_soft_delete_to_users_table.php b/database/migrations/2022_11_02_102458_add_soft_delete_to_users_table.php new file mode 100644 index 0000000..84f097d --- /dev/null +++ b/database/migrations/2022_11_02_102458_add_soft_delete_to_users_table.php @@ -0,0 +1,33 @@ +softDeletes(); + // + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropSoftDeletes(); + }); + } +} diff --git a/database/migrations/2022_11_04_094143_user_table_email_unique_alter.php b/database/migrations/2022_11_04_094143_user_table_email_unique_alter.php new file mode 100644 index 0000000..0161545 --- /dev/null +++ b/database/migrations/2022_11_04_094143_user_table_email_unique_alter.php @@ -0,0 +1,31 @@ +dropUnique('users_email_unique'); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2022_11_07_140834_create_contents_table.php b/database/migrations/2022_11_07_140834_create_contents_table.php new file mode 100644 index 0000000..12ee851 --- /dev/null +++ b/database/migrations/2022_11_07_140834_create_contents_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('terms_service',500); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('contents'); + } +} diff --git a/database/migrations/2022_11_11_085302_create_user_security_questions_table.php b/database/migrations/2022_11_11_085302_create_user_security_questions_table.php new file mode 100644 index 0000000..a536d42 --- /dev/null +++ b/database/migrations/2022_11_11_085302_create_user_security_questions_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('user_id'); + $table->integer('question_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_security_questions'); + } +} diff --git a/database/migrations/2022_11_15_103136_create_security_questions_table.php b/database/migrations/2022_11_15_103136_create_security_questions_table.php new file mode 100644 index 0000000..b73ee1e --- /dev/null +++ b/database/migrations/2022_11_15_103136_create_security_questions_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('questions'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('security_questions'); + } +} diff --git a/database/migrations/2022_11_15_114332_create_user_security_question_answers_table.php b/database/migrations/2022_11_15_114332_create_user_security_question_answers_table.php new file mode 100644 index 0000000..6af91ec --- /dev/null +++ b/database/migrations/2022_11_15_114332_create_user_security_question_answers_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('user_id'); + $table->integer('question_id'); + $table->string('answer'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_security_question_answers'); + } +} diff --git a/database/migrations/2022_12_02_064655_user_identity_question_answer.php b/database/migrations/2022_12_02_064655_user_identity_question_answer.php new file mode 100644 index 0000000..48c8809 --- /dev/null +++ b/database/migrations/2022_12_02_064655_user_identity_question_answer.php @@ -0,0 +1,34 @@ +id(); + $table->string('question'); + $table->string('answer'); + $table->integer('user_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_security_question_answers'); + } +} diff --git a/database/migrations/2022_12_27_095153_create_modules_table.php b/database/migrations/2022_12_27_095153_create_modules_table.php new file mode 100644 index 0000000..bcfabb6 --- /dev/null +++ b/database/migrations/2022_12_27_095153_create_modules_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('modules'); + } +} diff --git a/database/migrations/2022_12_27_095308_create_submodules_table.php b/database/migrations/2022_12_27_095308_create_submodules_table.php new file mode 100644 index 0000000..b20abe1 --- /dev/null +++ b/database/migrations/2022_12_27_095308_create_submodules_table.php @@ -0,0 +1,35 @@ +id(); + $table->integer('module_id'); + $table->string('key'); + $table->string('name'); + $table->integer('is_default')->default(0)->change(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('submodules'); + } +} diff --git a/database/migrations/2022_12_27_095329_create_permissions_table.php b/database/migrations/2022_12_27_095329_create_permissions_table.php new file mode 100644 index 0000000..62fe9cc --- /dev/null +++ b/database/migrations/2022_12_27_095329_create_permissions_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('user_id'); + $table->integer('submodule_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('permissions'); + } +} diff --git a/database/migrations/2023_03_15_062557_create_creditreport_providers_table.php b/database/migrations/2023_03_15_062557_create_creditreport_providers_table.php new file mode 100644 index 0000000..40049ad --- /dev/null +++ b/database/migrations/2023_03_15_062557_create_creditreport_providers_table.php @@ -0,0 +1,33 @@ +id(); + $table->tinyInteger('company_type'); + $table->string('link', 350)->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('creditreport_providers'); + } +} diff --git a/database/module_insert.txt b/database/module_insert.txt new file mode 100644 index 0000000..f809027 --- /dev/null +++ b/database/module_insert.txt @@ -0,0 +1,23 @@ +INSERT INTO `modules` (`id`, `name`,`status`, `created_at`, `updated_at`) VALUES +(1, 'Client Management','1', '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(2, 'Training Video','1', '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(3, 'Sales Report', '1','2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(4, 'Terms And Service','1', '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(5, 'Employee Registration','1', '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(6, 'Employee Permission','1', '2023-01-05 07:44:41', '2023-01-05 07:44:41'), +(7, 'Account Information', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(8, 'Software Training', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(9, 'WORK AREA', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(10, 'Profile', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(11, 'Payment Setting', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'), +(12, 'Cancel Account', '0', '2023-01-19 13:05:27', '2023-01-19 13:05:27'); + +#23-mar-23 +================ +INSERT INTO `modules` (`id`, `name`, `status`, `created_at`, `updated_at`) VALUES + (14, 'Credit Report Provider', '1', '2023-03-23 12:50:12', '2023-03-23 12:50:12'); + +#09-nov-2023 +================ +INSERT INTO `modules` (`id`, `name`, `status`, `created_at`, `updated_at`) VALUES +(NULL, 'Support', '2', '2023-11-09 16:43:46', '2023-11-09 16:43:46') diff --git a/database/pulakdbchange.txt b/database/pulakdbchange.txt new file mode 100644 index 0000000..ed592ae --- /dev/null +++ b/database/pulakdbchange.txt @@ -0,0 +1,112 @@ +#12-08-2022 +ALTER TABLE `users` ADD `is_import` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '1= eligible for import new report, 0= not yet' AFTER `is_first_login`, ADD `last_import_date` DATETIME NULL DEFAULT NULL AFTER `is_import`; + +#13-Sep-2022 +ALTER TABLE `users` ADD `user_type` TINYINT(4) NOT NULL DEFAULT '0' AFTER `last_name`; + +#15-sep-2022 +ALTER TABLE `video_settings` ADD `section_id` INT(11) NOT NULL DEFAULT '0' AFTER `link`, ADD `status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '0-inaction, 1-active' AFTER `section_id`; +ALTER TABLE `video_settings` ADD UNIQUE(`section_id`); + +#16-sep-2022 +ALTER TABLE `users` ADD `status` TINYINT(4) NOT NULL DEFAULT '1' AFTER `user_type`; + +#19-sep-2022 +ALTER TABLE `video_settings` CHANGE `section_id` `section_name` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL; + +#23-sep-2022 +ALTER TABLE `users` ADD `wave` TINYINT(10) NOT NULL DEFAULT '0' AFTER `last_import_date`; +======================================= +completed +======================================= + +#29-sep-2022 +ALTER TABLE `recurrings` ADD `transaction_status` TINYINT(4) NOT NULL AFTER `user_id`, ADD `email` VARCHAR(20) NOT NULL AFTER `transaction_status`, ADD `name` VARCHAR(100) NOT NULL AFTER `email`; + +#30-sep-2022 +ALTER TABLE `recurrings` CHANGE `email` `email` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL; +ALTER TABLE `recurrings`DROP `ccnumber`,DROP `ccexp`; +ALTER TABLE `users` ADD `subscription_type` TINYINT(4) NOT NULL DEFAULT '0' AFTER `user_type`; +ALTER TABLE `users` CHANGE `subscription_type` `subscription_status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '0=unsubcribed, 1= subscribed'; + +#14-nov-2022 +ALTER TABLE `user_security_questions` CHANGE `question_id` `answer_id` INT(11) NOT NULL; + +#21-dec-2022 +ALTER TABLE `sales` ADD `cc_number` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT 'masking and last 4 digit card number' AFTER `order_id`; +ALTER TABLE `users` CHANGE `subscription_status` `subscription_status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'if payment success then(0=unsubcribed, 1= subscribed)'; + +============================== +deployed +=============================== + +#22-dec-2022 +ALTER TABLE `users` ADD `last_payment_date` DATETIME NULL DEFAULT NULL AFTER `is_import`; +ALTER TABLE `users` CHANGE `user_type` `user_type` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '1=admin,0=client,2=employee'; + +#17-jan-2023 +ALTER TABLE `users` ADD `account_cancel_datetime` DATETIME NULL DEFAULT NULL AFTER `last_import_date`; +ALTER TABLE `users` CHANGE `subscription_status` `subscription_status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'if payment success then(0=unsubscribed, 1= subscribed,2=cancel account)'; + +#19-jan-2023 +ALTER TABLE `modules` ADD `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'for employee 1 otherwise 0' AFTER `name`; + +#20-jan-2023 +UPDATE `modules` SET `name` = 'Employee Management' WHERE `modules`.`id` = 5; +DELETE FROM `modules` WHERE id = 6; + +UPDATE `submodules` SET `name` = 'List' WHERE `submodules`.`id` = 10; +UPDATE `submodules` SET `key` = 'employee-list' WHERE `submodules`.`id` = 10; +==================== +deployed +===================== + +#27-jan-2023 +======================= +ALTER TABLE `users` CHANGE `status` `status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT 'active = 1, inactive = 2'; + +#30-jan-2023 +====================== +ALTER TABLE `recurrings` ADD `last_process_date` DATETIME NULL DEFAULT NULL AFTER `user_id`, ADD `status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '1=active,2= inactive' AFTER `last_process_date`; + +#31-jan-2023 +===================== +ALTER TABLE `recurrings` CHANGE `user_id` `user_id` BIGINT NOT NULL DEFAULT '0'; +ALTER TABLE `recurrings` CHANGE `transaction_status` `transaction_status` TINYINT NOT NULL DEFAULT '0'; +ALTER TABLE `recurrings` CHANGE `email` `email` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `name` `name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `subscription_id` `subscription_id` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `transaction_id` `transaction_id` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `recurring_type` `recurring_type` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `plan_payments` `plan_payments` SMALLINT NOT NULL DEFAULT '0'; +ALTER TABLE `recurrings` CHANGE `plan_amount` `plan_amount` DOUBLE(8,2) NOT NULL DEFAULT '0'; +ALTER TABLE `recurrings` CHANGE `day_frequency` `day_frequency` TINYINT NOT NULL DEFAULT '0'; +ALTER TABLE `recurrings` CHANGE `month_frequency` `month_frequency` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; +ALTER TABLE `recurrings` CHANGE `day_of_month` `day_of_month` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; + +#23-mar-2023 +====================== +INSERT INTO `creditreport_providers` (`id`, `company_type`, `link`, `created_at`, `updated_at`) + VALUES (NULL, '1', 'https://member.identityiq.com/creditpreferred.aspx?offercode=431141CQ', '2023-03-15 10:53:30', '2023-03-23 06:15:04'), + (NULL, '3', 'https://www.smartcredit.com/?PID=11885', '2023-03-23 04:24:33', '2023-03-23 05:06:09'); + + ============================== + deployed + =============================== + +#28-mar-2023 +======================== +ALTER TABLE `sales` ADD `recurring_id` INT NOT NULL DEFAULT '0' AFTER `transaction_id`; + +#30-mar-2023 +======================== +ALTER TABLE `sales` DROP INDEX `sales_order_id_unique`; +ALTER TABLE `sales` CHANGE `order_id` `order_id` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL; + +#03-apr-2023 +======================== +update `recurrings` set plan_amount=24.97,day_of_month=30; + +#05-apr-2023 +======================= +ALTER TABLE `users` ADD `user_access_end_date` DATETIME NULL DEFAULT NULL AFTER `last_payment_date`; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..12d803a --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/database/submodule_insert.txt b/database/submodule_insert.txt new file mode 100644 index 0000000..5e8c531 --- /dev/null +++ b/database/submodule_insert.txt @@ -0,0 +1,63 @@ +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(1, 1, 'client-list', 'List', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(2, 1, 'client-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(3, 1, 'client-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(4, 1, 'client-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(5, 2, 'training-video-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(6, 2, 'training-video-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(7, 2, 'training-video-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(8, 3, 'sales-report', 'Sales Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(9, 4, 'terms-service', 'Terms And Service', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(10, 5, 'employee-list', 'List', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(11, 6, 'user-permission-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(12, 6, 'user-permission-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(13, 7, 'client-profile-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(14, 7, 'client-profile-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(15, 12, 'client-cancel-account', 'Cancel Account', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(16, 11, 'client-cancel-account', 'Payment Setting', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(17, 8, 'client-training-video-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(18, 9, 'client-letter-view-update', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(19, 9, 'client-generate-pdf', 'Generate Pdf', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(20, 9, 'client-get-credit-report', 'Credit Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(21, 9, 'client-upload-credit-report', 'Upload Credit Report', '2023-01-05 01:44:41', '2023-01-05 01:44:41'); +================================================ +deployed +================================================ + + +#20-jan-2023 +========================= +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(NULL, '5', 'employee-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(NULL, '5', 'employee-view', 'View', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(NULL, '5', 'employee-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'); + +================================================ +deployed +================================================ + +#23-jan-2023 +=============================================== +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(NULL, '5', 'employee-delete', 'Delete', '2023-01-23 18:13:37', '2023-01-23 18:13:37'); + +#09-mar-2023 +================================================ +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(NULL, '1', 'client-create', 'Create', '2023-03-09 13:30:34', '2023-03-09 13:30:34') + +#23-mar-2023 +================================ +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(NULL, '14', 'credit-report-provider-create', 'Create', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(NULL, '14', 'credit-report-provider-edit', 'Edit', '2023-01-05 01:44:41', '2023-01-05 01:44:41'), +(NULL, '14', 'credit-report-provider-delete', 'Delete', '2023-01-05 01:44:41', '2023-01-05 01:44:41'); + +#09-nov-2023 +================================ +INSERT INTO `submodules` (`id`, `module_id`, `key`, `name`, `created_at`, `updated_at`) VALUES +(NULL, '15', 'client-support-create', 'Create', '2023-11-09 16:47:06', '2023-11-09 16:47:06'), +(NULL, '15', 'client-support-list', 'List', '2023-11-09 16:47:06', '2023-11-09 16:47:06'), +(NULL, '15', 'client-support-view', 'View', '2023-11-09 16:51:41', '2023-11-09 16:51:41'), +(NULL, '15', 'client-support-edit', 'Edit', '2023-11-09 16:51:41', '2023-11-09 16:51:41') ; + diff --git a/package.json b/package.json new file mode 100644 index 0000000..7ff25cf --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "axios": "^0.19", + "cross-env": "^7.0", + "dotenv-webpack": "^8.0.0", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "resolve-url-loader": "^3.1.0" + }, + "dependencies": { + "@vuelidate/core": "^2.0.0-alpha.44", + "@vuelidate/validators": "^2.0.0-alpha.31", + "dotenv": "^16.0.1", + "js-cookie": "^3.0.1", + "sweetalert2": "^11.4.23", + "vee-validate": "^3.4.14", + "vue": "^3.2.36", + "vue-loader": "^17.0.0", + "vue-recaptcha": "^2.0.2", + "vue-router": "^4.1.2", + "vue-sweetalert2": "^5.0.5", + "vuex": "^4.0.2", + "yup": "^0.32.11" + }, + "browser": { + "fs": false, + "path": false, + "os": false + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..4ae4d97 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/css/app.css b/public/css/app.css new file mode 100644 index 0000000..792058e --- /dev/null +++ b/public/css/app.css @@ -0,0 +1,5 @@ +@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);@charset "UTF-8";/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.label,sub,sup{vertical-align:baseline}hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#f5f8fa}@font-face{font-family:'Glyphicons Halflings';src:url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot?f4769f9bdb7466be65088239c12046d1);src:url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot?f4769f9bdb7466be65088239c12046d1?#iefix) format("embedded-opentype"),url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2?448c34a56d699c29117adc64c43affeb) format("woff2"),url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff?fa2772327f55d8198301fdb8bcfc8158) format("woff"),url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf?e18bbf611f2a2e43afc071aa2f4e1512) format("truetype"),url(/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.svg?89889688147bd7575d6327160d64e760#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Raleway,sans-serif;font-size:14px;line-height:1.6;color:#636b6f}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3097D1;text-decoration:none}a:focus,a:hover{color:#216a94;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.6;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:22px;margin-bottom:22px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:22px;margin-bottom:11px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:11px;margin-bottom:11px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 11px}.lead{margin-bottom:22px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd,label{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3097D1}a.text-primary:focus,a.text-primary:hover{color:#2579a9}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#3097D1}a.bg-primary:focus,a.bg-primary:hover{background-color:#2579a9}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:10px;margin:44px 0 22px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:22px}ol,ul{margin-bottom:11px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.6}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:11px 22px;margin:0 0 22px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.6;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{font-style:normal;line-height:1.6}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:10.5px;margin:0 0 11px;font-size:13px;line-height:1.6;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;margin-bottom:22px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.6;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#f5f8fa}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:16.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:22px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.6;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:36px;padding:6px 12px;background-color:#fff;border:1px solid #ccd0d2;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#98cbe8;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(152,203,232,.6)}.form-control::-moz-placeholder{color:#b1b7ba;opacity:1}.form-control:-ms-input-placeholder{color:#b1b7ba}.form-control::-webkit-input-placeholder{color:#b1b7ba}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:36px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:22px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:34px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:40px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:27px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a4aaae}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.6;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#636b6f;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#636b6f;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#636b6f;background-color:#e6e5e5;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#636b6f;background-color:#e6e5e5;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#636b6f;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#636b6f}.btn-primary{color:#fff;background-color:#3097D1;border-color:#2a88bd}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#2579a9;border-color:#133d55}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#2579a9;border-color:#1f648b}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#1f648b;border-color:#133d55}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3097D1;border-color:#2a88bd}.btn-primary .badge{color:#3097D1;background-color:#fff}.btn-success{color:#fff;background-color:#2ab27b;border-color:#259d6d}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#20895e;border-color:#0d3625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#20895e;border-color:#196c4b}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#196c4b;border-color:#0d3625}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#2ab27b;border-color:#259d6d}.btn-success .badge{color:#2ab27b;background-color:#fff}.btn-info{color:#fff;background-color:#8eb4cb;border-color:#7da8c3}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#6b9dbb;border-color:#3d6983}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#6b9dbb;border-color:#538db0}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#538db0;border-color:#3d6983}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#8eb4cb;border-color:#7da8c3}.btn-info .badge{color:#8eb4cb;background-color:#fff}.btn-warning{color:#fff;background-color:#cbb956;border-color:#c5b143}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#b6a338;border-color:#685d20}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#b6a338;border-color:#9b8a30}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#9b8a30;border-color:#685d20}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#cbb956;border-color:#c5b143}.btn-warning .badge{color:#cbb956;background-color:#fff}.btn-danger{color:#fff;background-color:#bf5329;border-color:#aa4a24}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#954120;border-color:#411c0e}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#954120;border-color:#78341a}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#78341a;border-color:#411c0e}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#bf5329;border-color:#aa4a24}.btn-danger .badge{color:#bf5329;background-color:#fff}.btn-link{color:#3097D1;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#216a94;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.6;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#3097D1}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccd0d2;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#3097D1}.nav .nav-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.6;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#f5f8fa;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3097D1}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#f5f8fa}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:22px;border:1px solid transparent}.navbar:after,.navbar:before{content:" ";display:table}.navbar-header:after,.navbar-header:before{content:" ";display:table}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after,.navbar-collapse:before{content:" ";display:table}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14px 15px;font-size:18px;line-height:22px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:22px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:22px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-danger,.progress-striped .progress-bar-info,.progress-striped .progress-bar-success,.progress-striped .progress-bar-warning{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)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14px;padding-bottom:14px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:7px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:7px;margin-bottom:7px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.navbar-btn.btn-xs,.navbar-text{margin-top:14px;margin-bottom:14px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#fff;border-color:#d3e0e9}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5d5d;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#eee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#d3e0e9}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#eee;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#eee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:22px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:22px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.6;text-decoration:none;color:#3097D1;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#216a94;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#3097D1;border-color:#3097D1;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:22px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#3097D1}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#2579a9}.label-success{background-color:#2ab27b}.label-success[href]:focus,.label-success[href]:hover{background-color:#20895e}.label-info{background-color:#8eb4cb}.label-info[href]:focus,.label-info[href]:hover{background-color:#6b9dbb}.label-warning{background-color:#cbb956}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#b6a338}.label-danger{background-color:#bf5329}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#954120}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#3097D1;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:22px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.6;background-color:#f5f8fa;border:1px solid #ddd;border-radius:4px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#636b6f}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#3097D1}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:22px;margin-bottom:22px;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:22px;color:#fff;text-align:center;background-color:#3097D1;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#2ab27b}.progress-bar-info{background-color:#8eb4cb}.progress-bar-warning{background-color:#cbb956}.progress-bar-danger{background-color:#bf5329}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #d3e0e9}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3097D1;border-color:#3097D1}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#d7ebf6}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:22px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #d3e0e9;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:22px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #d3e0e9}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #d3e0e9}.panel-default{border-color:#d3e0e9}.panel-default>.panel-heading{color:#333;background-color:#fff;border-color:#d3e0e9}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d3e0e9}.panel-default>.panel-heading .badge{color:#fff;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d3e0e9}.panel-primary{border-color:#3097D1}.panel-primary>.panel-heading{color:#fff;background-color:#3097D1;border-color:#3097D1}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3097D1}.panel-primary>.panel-heading .badge{color:#3097D1;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3097D1}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:Raleway,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.6;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.6}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;background-color:transparent}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}} \ No newline at end of file diff --git a/public/css/bootstrap-multiselect.css b/public/css/bootstrap-multiselect.css new file mode 100644 index 0000000..6a6b68a --- /dev/null +++ b/public/css/bootstrap-multiselect.css @@ -0,0 +1 @@ +span.multiselect-native-select{position:relative}span.multiselect-native-select select{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px -1px -1px -3px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;left:50%;top:30px}.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container .multiselect-reset .input-group{width:93%}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.checkbox,.multiselect-container>li>a>label.radio{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0} \ No newline at end of file diff --git a/public/css/credit_report.css b/public/css/credit_report.css new file mode 100644 index 0000000..12094ab --- /dev/null +++ b/public/css/credit_report.css @@ -0,0 +1,89 @@ +.shape { + border-style: solid; + border-width: 0 70px 40px 0; + float: right; + height: 0px; + width: 0px; + -ms-transform: rotate(360deg); /* IE 9 */ + -o-transform: rotate(360deg); /* Opera 10.5 */ + -webkit-transform: rotate(360deg); /* Safari and Chrome */ + transform: rotate(360deg); +} +.listing { + background: #fff; + border: 1px solid #ddd; + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); + margin: 15px 0; + overflow: hidden; +} +.listing:hover { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: rotate scale(1.1); + -webkit-transition: all 0.4s ease-in-out; + -moz-transition: all 0.4s ease-in-out; + -o-transition: all 0.4s ease-in-out; + transition: all 0.4s ease-in-out; +} +.shape { + border-color: rgba(255,255,255,0) #d9534f rgba(255,255,255,0) rgba(255,255,255,0); +} +.listing-radius { + border-radius: 7px; +} +.listing-danger { + border-color: #d9534f; +} +.listing-danger .shape { + border-color: transparent #d9533f transparent transparent; +} +.listing-success { + border-color: #5cb85c; +} +.listing-success .shape { + border-color: transparent #5cb75c transparent transparent; +} +.listing-default { + border-color: #999999; +} +.listing-default .shape { + border-color: transparent #999999 transparent transparent; +} +.listing-primary { + border-color: #428bca; +} +.listing-primary .shape { + border-color: transparent #318bca transparent transparent; +} +.listing-info { + border-color: #5bc0de; +} +.listing-info .shape { + border-color: transparent #5bc0de transparent transparent; +} +.listing-warning { + border-color: #f0ad4e; +} +.listing-warning .shape { + border-color: transparent #f0ad4e transparent transparent; +} +.shape-text { + color: #fff; + font-size: 12px; + font-weight: bold; + position: relative; + right: -40px; + top: 2px; + white-space: nowrap; + -ms-transform: rotate(30deg); /* IE 9 */ + -o-transform: rotate(360deg); /* Opera 10.5 */ + -webkit-transform: rotate(30deg); /* Safari and Chrome */ + transform: rotate(30deg); +} +.listing-content { + padding: 0 20px 10px; + height: 120px; + cursor: pointer; +} diff --git a/public/css/custom.css b/public/css/custom.css new file mode 100644 index 0000000..8b6b455 --- /dev/null +++ b/public/css/custom.css @@ -0,0 +1,92 @@ +.profile_info h2{ + text-transform: unset; +} + +.nav-md .container.body .right_col { + background-color: #fff; + /* padding: 90px 40px 30px; */ + margin-bottom: -25px; +} + +.img-client{ + max-height: 200px; + max-width: 200px; +} + +.register-body,body{ + font-family: 'Roboto', sans-serif; + color: #2A3F54; + background-color: #54c7dc; + background-image: linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%); + background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%); + background-image: -o-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%); + background-attachment: fixed; +} + +.register-body .main{ + margin: 0 auto; + padding: 20px; + height: auto; +} + +.error{ + color: red; +} + +.view-html{ + padding: 20px; + border: 1px solid #dfdfef; + box-shadow: none; + background: #fafbff; + box-shadow: 0 0 5px rgb(0 0 0 / 13%); + -webkit-box-shadow: 0 0 5px rgb(0 0 0 / 13%); + border-radius: 7px; +} + +.epic-btn{ + text-align: center; + text-decoration: none; + font-weight: 800; + font-size: 1em; + text-transform: uppercase; + color: #fff; + border-radius: 7px; + margin: 10px; + padding: 10px 35px; + background-size: 200% auto; + border: none; + color: white; + box-shadow: 0 4px 6px rgb(50 50 93 / 11%), 0 1px 3px rgb(0 0 0 / 8%); + background-image: linear-gradient(to right, #45aaf2 0%, #6574cd 50%, #45aaf2 100%); + background-image: -webkit-linear-gradient(to right, #45aaf2 0%, #6574cd 50%, #45aaf2 100%); + background-image: -o-linear-gradient(to right, #45aaf2 0%, #6574cd 50%, #45aaf2 100%); + transition: 0.35s; + -webkit-transition: 0.35s; + +} + +.btn, .buttons, .modal-footer .btn+.btn, button{ + margin-bottom: 10px; +} + +.modal .modal-dialog{ + margin: 0 auto !important; +} + +footer { + padding: 0; + margin: 0; + width: 100%; +} + +footer .panel{ + padding: 15px; + margin-bottom: 0; + text-align: center; +} + + + +.view-html{ + display: none; +} diff --git a/public/css/datepicker.css b/public/css/datepicker.css new file mode 100644 index 0000000..386c2dd --- /dev/null +++ b/public/css/datepicker.css @@ -0,0 +1,752 @@ +/*! + * Datepicker for Bootstrap v1.4.1 (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ +.datepicker { + padding: 4px; + border-radius: 4px; + direction: ltr; +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} +.datepicker-dropdown.datepicker-orient-top:before { + top: -7px; +} +.datepicker-dropdown.datepicker-orient-top:after { + top: -6px; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} +.datepicker > div { + display: none; +} +.datepicker.days .datepicker-days, +.datepicker.months .datepicker-months, +.datepicker.years .datepicker-years { + display: block; +} +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover, +.datepicker table tr td.day.focused { + background: #eeeeee; + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #999999; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + color: #000000; + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:focus, +.datepicker table tr td.today:hover:focus, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + color: #000000; + background-color: #ffcd70; + border-color: #f59e00; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.today, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today.disabled, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today:hover.disabled:hover, +.datepicker table tr td.today.disabled.disabled:hover, +.datepicker table tr td.today.disabled:hover.disabled:hover, +.datepicker table tr td.today[disabled]:hover, +.datepicker table tr td.today:hover[disabled]:hover, +.datepicker table tr td.today.disabled[disabled]:hover, +.datepicker table tr td.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today:hover:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today:hover.disabled:focus, +.datepicker table tr td.today.disabled.disabled:focus, +.datepicker table tr td.today.disabled:hover.disabled:focus, +.datepicker table tr td.today[disabled]:focus, +.datepicker table tr td.today:hover[disabled]:focus, +.datepicker table tr td.today.disabled[disabled]:focus, +.datepicker table tr td.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.today:focus, +fieldset[disabled] .datepicker table tr td.today:hover:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today:hover.disabled:active, +.datepicker table tr td.today.disabled.disabled:active, +.datepicker table tr td.today.disabled:hover.disabled:active, +.datepicker table tr td.today[disabled]:active, +.datepicker table tr td.today:hover[disabled]:active, +.datepicker table tr td.today.disabled[disabled]:active, +.datepicker table tr td.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.today:active, +fieldset[disabled] .datepicker table tr td.today:hover:active, +fieldset[disabled] .datepicker table tr td.today.disabled:active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today:hover.disabled.active, +.datepicker table tr td.today.disabled.disabled.active, +.datepicker table tr td.today.disabled:hover.disabled.active, +.datepicker table tr td.today[disabled].active, +.datepicker table tr td.today:hover[disabled].active, +.datepicker table tr td.today.disabled[disabled].active, +.datepicker table tr td.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.today.active, +fieldset[disabled] .datepicker table tr td.today:hover.active, +fieldset[disabled] .datepicker table tr td.today.disabled.active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eeeeee; + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background-color: #f7ca77; + border-color: #f1a417; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today:hover:focus, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background-color: #f4bb51; + border-color: #bf800c; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + background-image: none; +} +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.range.today, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today:hover.disabled:hover, +.datepicker table tr td.range.today.disabled.disabled:hover, +.datepicker table tr td.range.today.disabled:hover.disabled:hover, +.datepicker table tr td.range.today[disabled]:hover, +.datepicker table tr td.range.today:hover[disabled]:hover, +.datepicker table tr td.range.today.disabled[disabled]:hover, +.datepicker table tr td.range.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today:hover.disabled:focus, +.datepicker table tr td.range.today.disabled.disabled:focus, +.datepicker table tr td.range.today.disabled:hover.disabled:focus, +.datepicker table tr td.range.today[disabled]:focus, +.datepicker table tr td.range.today:hover[disabled]:focus, +.datepicker table tr td.range.today.disabled[disabled]:focus, +.datepicker table tr td.range.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.today:focus, +fieldset[disabled] .datepicker table tr td.range.today:hover:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today:hover.disabled:active, +.datepicker table tr td.range.today.disabled.disabled:active, +.datepicker table tr td.range.today.disabled:hover.disabled:active, +.datepicker table tr td.range.today[disabled]:active, +.datepicker table tr td.range.today:hover[disabled]:active, +.datepicker table tr td.range.today.disabled[disabled]:active, +.datepicker table tr td.range.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.range.today:active, +fieldset[disabled] .datepicker table tr td.range.today:hover:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today:hover.disabled.active, +.datepicker table tr td.range.today.disabled.disabled.active, +.datepicker table tr td.range.today.disabled:hover.disabled.active, +.datepicker table tr td.range.today[disabled].active, +.datepicker table tr td.range.today:hover[disabled].active, +.datepicker table tr td.range.today.disabled[disabled].active, +.datepicker table tr td.range.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.range.today.active, +fieldset[disabled] .datepicker table tr td.range.today:hover.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { + background-color: #f7ca77; + border-color: #f1a417; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background-color: #999999; + border-color: #555555; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:focus, +.datepicker table tr td.selected:hover:focus, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background-color: #858585; + border-color: #373737; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + background-image: none; +} +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.selected, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected:hover.disabled:hover, +.datepicker table tr td.selected.disabled.disabled:hover, +.datepicker table tr td.selected.disabled:hover.disabled:hover, +.datepicker table tr td.selected[disabled]:hover, +.datepicker table tr td.selected:hover[disabled]:hover, +.datepicker table tr td.selected.disabled[disabled]:hover, +.datepicker table tr td.selected.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected:hover:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected:hover.disabled:focus, +.datepicker table tr td.selected.disabled.disabled:focus, +.datepicker table tr td.selected.disabled:hover.disabled:focus, +.datepicker table tr td.selected[disabled]:focus, +.datepicker table tr td.selected:hover[disabled]:focus, +.datepicker table tr td.selected.disabled[disabled]:focus, +.datepicker table tr td.selected.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.selected:focus, +fieldset[disabled] .datepicker table tr td.selected:hover:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected:hover.disabled:active, +.datepicker table tr td.selected.disabled.disabled:active, +.datepicker table tr td.selected.disabled:hover.disabled:active, +.datepicker table tr td.selected[disabled]:active, +.datepicker table tr td.selected:hover[disabled]:active, +.datepicker table tr td.selected.disabled[disabled]:active, +.datepicker table tr td.selected.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.selected:active, +fieldset[disabled] .datepicker table tr td.selected:hover:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected:hover.disabled.active, +.datepicker table tr td.selected.disabled.disabled.active, +.datepicker table tr td.selected.disabled:hover.disabled.active, +.datepicker table tr td.selected[disabled].active, +.datepicker table tr td.selected:hover[disabled].active, +.datepicker table tr td.selected.disabled[disabled].active, +.datepicker table tr td.selected.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.selected.active, +fieldset[disabled] .datepicker table tr td.selected:hover.active, +fieldset[disabled] .datepicker table tr td.selected.disabled.active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { + background-color: #999999; + border-color: #555555; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:focus, +.datepicker table tr td.active:hover:focus, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + background-image: none; +} +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.active, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active.disabled, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active:hover.disabled:hover, +.datepicker table tr td.active.disabled.disabled:hover, +.datepicker table tr td.active.disabled:hover.disabled:hover, +.datepicker table tr td.active[disabled]:hover, +.datepicker table tr td.active:hover[disabled]:hover, +.datepicker table tr td.active.disabled[disabled]:hover, +.datepicker table tr td.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active:hover:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active:hover.disabled:focus, +.datepicker table tr td.active.disabled.disabled:focus, +.datepicker table tr td.active.disabled:hover.disabled:focus, +.datepicker table tr td.active[disabled]:focus, +.datepicker table tr td.active:hover[disabled]:focus, +.datepicker table tr td.active.disabled[disabled]:focus, +.datepicker table tr td.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.active:focus, +fieldset[disabled] .datepicker table tr td.active:hover:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active:hover.disabled:active, +.datepicker table tr td.active.disabled.disabled:active, +.datepicker table tr td.active.disabled:hover.disabled:active, +.datepicker table tr td.active[disabled]:active, +.datepicker table tr td.active:hover[disabled]:active, +.datepicker table tr td.active.disabled[disabled]:active, +.datepicker table tr td.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.active:active, +fieldset[disabled] .datepicker table tr td.active:hover:active, +fieldset[disabled] .datepicker table tr td.active.disabled:active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active:hover.disabled.active, +.datepicker table tr td.active.disabled.disabled.active, +.datepicker table tr td.active.disabled:hover.disabled.active, +.datepicker table tr td.active[disabled].active, +.datepicker table tr td.active:hover[disabled].active, +.datepicker table tr td.active.disabled[disabled].active, +.datepicker table tr td.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.active.active, +fieldset[disabled] .datepicker table tr td.active:hover.active, +fieldset[disabled] .datepicker table tr td.active.disabled.active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + border-radius: 4px; +} +.datepicker table tr td span:hover { + background: #eeeeee; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:focus, +.datepicker table tr td span.active:hover:focus, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + background-image: none; +} +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td span.active, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover.disabled:hover, +.datepicker table tr td span.active.disabled.disabled:hover, +.datepicker table tr td span.active.disabled:hover.disabled:hover, +.datepicker table tr td span.active[disabled]:hover, +.datepicker table tr td span.active:hover[disabled]:hover, +.datepicker table tr td span.active.disabled[disabled]:hover, +.datepicker table tr td span.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active:hover:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active:hover.disabled:focus, +.datepicker table tr td span.active.disabled.disabled:focus, +.datepicker table tr td span.active.disabled:hover.disabled:focus, +.datepicker table tr td span.active[disabled]:focus, +.datepicker table tr td span.active:hover[disabled]:focus, +.datepicker table tr td span.active.disabled[disabled]:focus, +.datepicker table tr td span.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td span.active:focus, +fieldset[disabled] .datepicker table tr td span.active:hover:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active:hover.disabled:active, +.datepicker table tr td span.active.disabled.disabled:active, +.datepicker table tr td span.active.disabled:hover.disabled:active, +.datepicker table tr td span.active[disabled]:active, +.datepicker table tr td span.active:hover[disabled]:active, +.datepicker table tr td span.active.disabled[disabled]:active, +.datepicker table tr td span.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td span.active:active, +fieldset[disabled] .datepicker table tr td span.active:hover:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active:hover.disabled.active, +.datepicker table tr td span.active.disabled.disabled.active, +.datepicker table tr td span.active.disabled:hover.disabled.active, +.datepicker table tr td span.active[disabled].active, +.datepicker table tr td span.active:hover[disabled].active, +.datepicker table tr td span.active.disabled[disabled].active, +.datepicker table tr td span.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td span.active.active, +fieldset[disabled] .datepicker table tr td span.active:hover.active, +fieldset[disabled] .datepicker table tr td span.active.disabled.active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #999999; +} +.datepicker .datepicker-switch { + width: 145px; +} +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #eeeeee; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.datepicker thead tr:first-child .cw { + cursor: default; + background-color: transparent; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.input-daterange { + width: 100%; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + border-radius: 0 3px 3px 0; +} +.input-daterange .input-group-addon { + width: auto; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eeeeee; + border: solid #cccccc; + border-width: 1px 0; + margin-left: -5px; + margin-right: -5px; +} \ No newline at end of file diff --git a/public/css/evlg-page.css b/public/css/evlg-page.css new file mode 100644 index 0000000..051a4bf --- /dev/null +++ b/public/css/evlg-page.css @@ -0,0 +1,283 @@ + + /*html { + scroll-behavior: smooth; + }*/ + .dropdown-x { + /* position: absolute; */ + /* top: 50%; */ + /* transform: translateY(-50%); */ + width: 100%; + margin-right: 31px; + z-index: 99; + } + .dropdown-x dd, + .dropdown-x dt { + margin: 0px; + padding: 0px; + } + .dropdown-x ul { + margin: -1px 0 0 0; + } + .dropdown-x dd { + position: relative; + width: 100%; + z-index: 999 !important; + } + .dropdown-x a, + .dropdown-x a:visited { + color: #333; + text-decoration: none; + outline: none; + font-size: 12px; + } + .dropdown-x dt a { + background-color: #fff; + display: block; + padding: 6px; + min-height: 34px; + overflow: hidden; + width: 100%; + border:1px solid #d2d6de; + } + .hida { + cursor: pointer; + display: inline-block; + padding: 0 3px 2px 0; + background: #3c8dbc; + color: #fff; + margin-left: 2px; + margin-bottom: 2px; + border-radius: 4px; + padding: 0 5px; + font-weight: normal; + font-size: 14px; + } + .dropdown-x dd ul { + background-color: #fff; + border: 0; + color: #333; + display: none; + left: 0px; + padding: 2px 15px 2px 5px; + position: absolute; + top: 2px; + width: 100%; + list-style: none; + max-height: 300px; + height: auto; + overflow-y: auto; + border:1px solid black; + overflow-x: hidden; + } + .dropdown-x span.value { + display: none; + } + .dropdown-x dd ul li a { + padding: 5px; + display: block; + } + .dropdown-x dd ul li a:hover { + background-color: #fff; + } + dl{margin-bottom:0;} + .choose-dest{ + font-size: 14px; + font-weight: normal; + color: #a9a9a9; + } + .multiSel{ + margin-bottom:0; + } + .view-img img { + width: auto; + margin: 0 auto; + display: block; + padding: 15px; + height: 100px; + } + .disable-elem{ + background-color: #eee !important; + opacity: 1; + cursor: not-allowed; + } + img#client-file-load { + position: absolute; + z-index: 99999999; + left: 50%; + width:120px; + top: 20rem; + margin-left: -60px; + display: none; + } + .rebuttal-class{ + margin-top: 120px; + text-align: right; + width: 100%; + } + .rebuttal-class1{ + margin-top: 112px; + } + .rebuttal-class{ + margin-top: 100px; + text-align: right; + width: 100%; + } + .rebuttal-class1{ + margin-top: 100px; + } + .col-sm-12 { + padding-left: 0px !important; + padding-right: 0px !important; + } + .info-section { + margin-bottom: 20px; + } + .req-span { + color: red; + } + .div-item-dest { + height: 531px; + overflow: auto; + } + .lbl-dest { + font-size: 12px; + color: #555; + font-weight: normal; + } + .main-content { + + border: 2px solid #746f6f; + clear: both; + } + + .img-content { + margin-bottom: 20px; + } + #btn-regenerate { + float: right; + margin-top: -25px; + font-size: 20px; + margin-right: 9px; + } + .btn-add-other { + float: right; + margin-top: -34px; + font-size: 16px; + margin-right: -8px; + color: #11df21; + } + .btn-remove-other { + float: right; + margin-top: -24px; + font-size: 16px; + margin-right: -8px; + color: red; + } + .btn-univ-add-other { + float: right; + margin-top: -24px; + font-size: 16px; + margin-right: 13px; + color: #11df21; + } + .btn-univ-remove-other { + float: right; + margin-top: -24px; + font-size: 16px; + margin-right: -8px; + color: red; + } + .btn-remove-content { + float: right; + margin-top: -57px; + font-size: 20px; + margin-right: 16px; + color: red; + } + .btn-add-content { + float: right; + margin-top: -57px; + font-size: 18px; + margin-right: 40px; + color: #11df21; + } + .btn-add-line-break { + float: right; + margin-top: -57px; + font-size: 18px; + margin-right: 60px; + } + .gly-dest {font-size: 16px;} + .file-txt {overflow-wrap: break-word; + word-wrap: break-word;} + .video-icon { + float: right; + font-size: 26px; + margin-top: 6px; + } + #top-btn { + display: none; + position: fixed; + bottom: 20px; + right: 30px; + z-index: 99; + cursor: pointer; + padding: 15px; + font-size: 30px; + + } + .bg-yellow { + background-color:#e3f10d; + font-weight: bold; + } + .bg-yellow2 { + background-color:#e8de5e; + } + .bg-pink { + background-color: #ead0ea; + } + .bg-tra { + background-color: #DAB96A; + } + .bg-exp { + background-color: #98BDC5; + } + .bg-equ { + background-color: #CBD06C; + } + .cb-br { + font-weight: bold; + font-size: 16px; + background-color: #ccc; + } + .span-cl-green { + color: #1bd618 + } + .acct-cb-img .addr_hsrty{ + font-size:10px;" + } + table.addr_hsrty td.headerTUC, table.addr_hsrty td.headerEXP, table.addr_hsrty td.headerEQF { + background-color: transparent !important; + color: black; + } + .cl-diff { + font-weight: bold !important; + font-size: 13px !important; + color: red; + mix-blend-mode: exclusion; + } + .icon-goto-report {font-size: 20px;padding-left: 10px;} + .span-file {padding-left: 5px;} + .cb-numbers {text-align: center;} + #univ-dest-div .btn-group {width: 100%;} + #univ-dest-div .multiselect {width: 100%;} + + .lower-part{ + padding-bottom: 10px !important; + border: 1px solid lightseagreen !important; + margin-bottom: 15px !important; + } + + .lower-part table{ + width: 100% !important; + } diff --git a/public/css/fonts/LICENSE.txt b/public/css/fonts/LICENSE.txt new file mode 100644 index 0000000..cc557ec --- /dev/null +++ b/public/css/fonts/LICENSE.txt @@ -0,0 +1,165 @@ +Fonticons, Inc. (https://fontawesome.com) + +-------------------------------------------------------------------------------- + +Font Awesome Free License + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license/free. + +-------------------------------------------------------------------------------- + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) + +The Font Awesome Free download is licensed under a Creative Commons +Attribution 4.0 International License and applies to all icons packaged +as SVG and JS file types. + +-------------------------------------------------------------------------------- + +# Fonts: SIL OFL 1.1 License + +In the Font Awesome Free download, the SIL OFL license applies to all icons +packaged as web and desktop font files. + +Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com) +with Reserved Font Name: "Font Awesome". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting — in part or in whole — any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +-------------------------------------------------------------------------------- + +# Code: MIT License (https://opensource.org/licenses/MIT) + +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Copyright 2022 Fonticons, Inc. + +Permission 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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE 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. + +-------------------------------------------------------------------------------- + +# Attribution + +Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +-------------------------------------------------------------------------------- + +# Brand Icons + +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** diff --git a/public/css/fonts/css/all.css b/public/css/fonts/css/all.css new file mode 100644 index 0000000..15602db --- /dev/null +++ b/public/css/fonts/css/all.css @@ -0,0 +1,7933 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fas, +.fa-solid, +.far, +.fa-regular, +.fal, +.fa-light, +.fat, +.fa-thin, +.fad, +.fa-duotone, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-a::before { + content: "\41"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-at::before { + content: "\40"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-award::before { + content: "\f559"; } + +.fa-b::before { + content: "\42"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-box::before { + content: "\f466"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-c::before { + content: "\43"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-code::before { + content: "\f121"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-d::before { + content: "\44"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-display::before { + content: "\e163"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-download::before { + content: "\f019"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-e::before { + content: "\45"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-f::before { + content: "\46"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-film::before { + content: "\f008"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-font::before { + content: "\f031"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-g::before { + content: "\47"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-h::before { + content: "\48"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-i::before { + content: "\49"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-images::before { + content: "\f302"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-info::before { + content: "\f129"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-j::before { + content: "\4a"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-k::before { + content: "\4b"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-key::before { + content: "\f084"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-l::before { + content: "\4c"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-m::before { + content: "\4d"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-map::before { + content: "\f279"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-music::before { + content: "\f001"; } + +.fa-n::before { + content: "\4e"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-o::before { + content: "\4f"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-om::before { + content: "\f679"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-p::before { + content: "\50"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-q::before { + content: "\51"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-question::before { + content: "\3f"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-r::before { + content: "\52"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-road::before { + content: "\f018"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-s::before { + content: "\53"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-school::before { + content: "\f549"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-section::before { + content: "\e447"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-server::before { + content: "\f233"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-star::before { + content: "\f005"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-t::before { + content: "\54"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-train::before { + content: "\f238"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-u::before { + content: "\55"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-user::before { + content: "\f007"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-v::before { + content: "\56"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-w::before { + content: "\57"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-water::before { + content: "\f773"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-x::before { + content: "\58"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-y::before { + content: "\59"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-z::before { + content: "\5a"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-zhihu:before { + content: "\f63f"; } +:root, :host { + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } +:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-family: 'Font Awesome 6 Free'; + font-weight: 900; } +@font-face { + font-family: "Font Awesome 5 Brands"; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 900; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; } diff --git a/public/css/fonts/css/all.min.css b/public/css/fonts/css/all.min.css new file mode 100644 index 0000000..b9a01fb --- /dev/null +++ b/public/css/fonts/css/all.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/public/css/fonts/css/brands.css b/public/css/fonts/css/brands.css new file mode 100644 index 0000000..c7c1386 --- /dev/null +++ b/public/css/fonts/css/brands.css @@ -0,0 +1,1516 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:root, :host { + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-zhihu:before { + content: "\f63f"; } diff --git a/public/css/fonts/css/brands.min.css b/public/css/fonts/css/brands.min.css new file mode 100644 index 0000000..abbf40a --- /dev/null +++ b/public/css/fonts/css/brands.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"} \ No newline at end of file diff --git a/public/css/fonts/css/fontawesome.css b/public/css/fonts/css/fontawesome.css new file mode 100644 index 0000000..88b174f --- /dev/null +++ b/public/css/fonts/css/fontawesome.css @@ -0,0 +1,6356 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fas, +.fa-solid, +.far, +.fa-regular, +.fal, +.fa-light, +.fat, +.fa-thin, +.fad, +.fa-duotone, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-a::before { + content: "\41"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-at::before { + content: "\40"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-award::before { + content: "\f559"; } + +.fa-b::before { + content: "\42"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-box::before { + content: "\f466"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-c::before { + content: "\43"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-code::before { + content: "\f121"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-d::before { + content: "\44"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-display::before { + content: "\e163"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-download::before { + content: "\f019"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-e::before { + content: "\45"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-f::before { + content: "\46"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-film::before { + content: "\f008"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-font::before { + content: "\f031"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-g::before { + content: "\47"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-h::before { + content: "\48"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-i::before { + content: "\49"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-images::before { + content: "\f302"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-info::before { + content: "\f129"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-j::before { + content: "\4a"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-k::before { + content: "\4b"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-key::before { + content: "\f084"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-l::before { + content: "\4c"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-m::before { + content: "\4d"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-map::before { + content: "\f279"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-music::before { + content: "\f001"; } + +.fa-n::before { + content: "\4e"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-o::before { + content: "\4f"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-om::before { + content: "\f679"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-p::before { + content: "\50"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-q::before { + content: "\51"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-question::before { + content: "\3f"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-r::before { + content: "\52"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-road::before { + content: "\f018"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-s::before { + content: "\53"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-school::before { + content: "\f549"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-section::before { + content: "\e447"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-server::before { + content: "\f233"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-star::before { + content: "\f005"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-t::before { + content: "\54"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-train::before { + content: "\f238"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-u::before { + content: "\55"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-user::before { + content: "\f007"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-v::before { + content: "\56"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-w::before { + content: "\57"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-water::before { + content: "\f773"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-x::before { + content: "\58"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-y::before { + content: "\59"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-z::before { + content: "\5a"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } diff --git a/public/css/fonts/css/fontawesome.min.css b/public/css/fonts/css/fontawesome.min.css new file mode 100644 index 0000000..635e2bc --- /dev/null +++ b/public/css/fonts/css/fontawesome.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0} \ No newline at end of file diff --git a/public/css/fonts/css/regular.css b/public/css/fonts/css/regular.css new file mode 100644 index 0000000..27d41ee --- /dev/null +++ b/public/css/fonts/css/regular.css @@ -0,0 +1,19 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:root, :host { + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } diff --git a/public/css/fonts/css/regular.min.css b/public/css/fonts/css/regular.min.css new file mode 100644 index 0000000..8d6af64 --- /dev/null +++ b/public/css/fonts/css/regular.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400} \ No newline at end of file diff --git a/public/css/fonts/css/solid.css b/public/css/fonts/css/solid.css new file mode 100644 index 0000000..0dcad95 --- /dev/null +++ b/public/css/fonts/css/solid.css @@ -0,0 +1,19 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-family: 'Font Awesome 6 Free'; + font-weight: 900; } diff --git a/public/css/fonts/css/solid.min.css b/public/css/fonts/css/solid.min.css new file mode 100644 index 0000000..3767268 --- /dev/null +++ b/public/css/fonts/css/solid.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900} \ No newline at end of file diff --git a/public/css/fonts/css/svg-with-js.css b/public/css/fonts/css/svg-with-js.css new file mode 100644 index 0000000..05c3443 --- /dev/null +++ b/public/css/fonts/css/svg-with-js.css @@ -0,0 +1,634 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid"; + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular"; + --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light"; + --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin"; + --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; } + +svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { + overflow: visible; + box-sizing: content-box; } + +.svg-inline--fa { + display: var(--fa-display, inline-block); + height: 1em; + overflow: visible; + vertical-align: -.125em; } + .svg-inline--fa.fa-2xs { + vertical-align: 0.1em; } + .svg-inline--fa.fa-xs { + vertical-align: 0em; } + .svg-inline--fa.fa-sm { + vertical-align: -0.07143em; } + .svg-inline--fa.fa-lg { + vertical-align: -0.2em; } + .svg-inline--fa.fa-xl { + vertical-align: -0.25em; } + .svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; } + .svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; } + .svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; } + .svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.25em; } + .svg-inline--fa.fa-fw { + width: var(--fa-fw-width, 1.25em); } + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; } + +.fa-layers-text, .fa-layers-counter { + display: inline-block; + position: absolute; + text-align: center; } + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -.125em; + width: 1em; } + .fa-layers svg.svg-inline--fa { + -webkit-transform-origin: center center; + transform-origin: center center; } + +.fa-layers-text { + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transform-origin: center center; + transform-origin: center center; } + +.fa-layers-counter { + background-color: var(--fa-counter-background-color, #ff253a); + border-radius: var(--fa-counter-border-radius, 1em); + box-sizing: border-box; + color: var(--fa-inverse, #fff); + line-height: var(--fa-counter-line-height, 1); + max-width: var(--fa-counter-max-width, 5em); + min-width: var(--fa-counter-min-width, 1.5em); + overflow: hidden; + padding: var(--fa-counter-padding, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + -webkit-transform: scale(var(--fa-counter-scale, 0.25)); + transform: scale(var(--fa-counter-scale, 0.25)); + -webkit-transform-origin: top right; + transform-origin: top right; } + +.fa-layers-bottom-right { + bottom: var(--fa-bottom, 0); + right: var(--fa-right, 0); + top: auto; + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: bottom right; + transform-origin: bottom right; } + +.fa-layers-bottom-left { + bottom: var(--fa-bottom, 0); + left: var(--fa-left, 0); + right: auto; + top: auto; + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: bottom left; + transform-origin: bottom left; } + +.fa-layers-top-right { + top: var(--fa-top, 0); + right: var(--fa-right, 0); + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: top right; + transform-origin: top right; } + +.fa-layers-top-left { + left: var(--fa-left, 0); + right: auto; + top: var(--fa-top, 0); + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: top left; + transform-origin: top left; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0); + animation-delay: var(--fa-animation-delay, 0); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + vertical-align: middle; + height: 2em; + position: relative; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + z-index: var(--fa-stack-z-index, auto); } + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; } + +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: var(--fa-primary-opacity, 1); } + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: var(--fa-secondary-opacity, 0.4); } + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.4); } + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: var(--fa-primary-opacity, 1); } + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; } + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); } diff --git a/public/css/fonts/css/svg-with-js.min.css b/public/css/fonts/css/svg-with-js.min.css new file mode 100644 index 0000000..bd603a8 --- /dev/null +++ b/public/css/fonts/css/svg-with-js.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)} \ No newline at end of file diff --git a/public/css/fonts/css/v4-font-face.css b/public/css/fonts/css/v4-font-face.css new file mode 100644 index 0000000..d3aaa68 --- /dev/null +++ b/public/css/fonts/css/v4-font-face.css @@ -0,0 +1,26 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; } diff --git a/public/css/fonts/css/v4-font-face.min.css b/public/css/fonts/css/v4-font-face.min.css new file mode 100644 index 0000000..675fe60 --- /dev/null +++ b/public/css/fonts/css/v4-font-face.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/public/css/fonts/css/v4-shims.css b/public/css/fonts/css/v4-shims.css new file mode 100644 index 0000000..1b53831 --- /dev/null +++ b/public/css/fonts/css/v4-shims.css @@ -0,0 +1,2194 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa.fa-glass:before { + content: "\f000"; } + +.fa.fa-envelope-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-o:before { + content: "\f0e0"; } + +.fa.fa-star-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-o:before { + content: "\f005"; } + +.fa.fa-remove:before { + content: "\f00d"; } + +.fa.fa-close:before { + content: "\f00d"; } + +.fa.fa-gear:before { + content: "\f013"; } + +.fa.fa-trash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-trash-o:before { + content: "\f2ed"; } + +.fa.fa-home:before { + content: "\f015"; } + +.fa.fa-file-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-o:before { + content: "\f15b"; } + +.fa.fa-clock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-clock-o:before { + content: "\f017"; } + +.fa.fa-arrow-circle-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-down:before { + content: "\f358"; } + +.fa.fa-arrow-circle-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-up:before { + content: "\f35b"; } + +.fa.fa-play-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-play-circle-o:before { + content: "\f144"; } + +.fa.fa-repeat:before { + content: "\f01e"; } + +.fa.fa-rotate-right:before { + content: "\f01e"; } + +.fa.fa-refresh:before { + content: "\f021"; } + +.fa.fa-list-alt { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-list-alt:before { + content: "\f022"; } + +.fa.fa-dedent:before { + content: "\f03b"; } + +.fa.fa-video-camera:before { + content: "\f03d"; } + +.fa.fa-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-picture-o:before { + content: "\f03e"; } + +.fa.fa-photo { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-photo:before { + content: "\f03e"; } + +.fa.fa-image { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-image:before { + content: "\f03e"; } + +.fa.fa-map-marker:before { + content: "\f3c5"; } + +.fa.fa-pencil-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pencil-square-o:before { + content: "\f044"; } + +.fa.fa-edit { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-edit:before { + content: "\f044"; } + +.fa.fa-share-square-o:before { + content: "\f14d"; } + +.fa.fa-check-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-square-o:before { + content: "\f14a"; } + +.fa.fa-arrows:before { + content: "\f0b2"; } + +.fa.fa-times-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-circle-o:before { + content: "\f057"; } + +.fa.fa-check-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-circle-o:before { + content: "\f058"; } + +.fa.fa-mail-forward:before { + content: "\f064"; } + +.fa.fa-expand:before { + content: "\f424"; } + +.fa.fa-compress:before { + content: "\f422"; } + +.fa.fa-eye { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eye-slash { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-warning:before { + content: "\f071"; } + +.fa.fa-calendar:before { + content: "\f073"; } + +.fa.fa-arrows-v:before { + content: "\f338"; } + +.fa.fa-arrows-h:before { + content: "\f337"; } + +.fa.fa-bar-chart:before { + content: "\e0e3"; } + +.fa.fa-bar-chart-o:before { + content: "\e0e3"; } + +.fa.fa-twitter-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitter-square:before { + content: "\f081"; } + +.fa.fa-facebook-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-square:before { + content: "\f082"; } + +.fa.fa-gears:before { + content: "\f085"; } + +.fa.fa-thumbs-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-up:before { + content: "\f164"; } + +.fa.fa-thumbs-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-down:before { + content: "\f165"; } + +.fa.fa-heart-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-heart-o:before { + content: "\f004"; } + +.fa.fa-sign-out:before { + content: "\f2f5"; } + +.fa.fa-linkedin-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin-square:before { + content: "\f08c"; } + +.fa.fa-thumb-tack:before { + content: "\f08d"; } + +.fa.fa-external-link:before { + content: "\f35d"; } + +.fa.fa-sign-in:before { + content: "\f2f6"; } + +.fa.fa-github-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-github-square:before { + content: "\f092"; } + +.fa.fa-lemon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lemon-o:before { + content: "\f094"; } + +.fa.fa-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-square-o:before { + content: "\f0c8"; } + +.fa.fa-bookmark-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bookmark-o:before { + content: "\f02e"; } + +.fa.fa-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook:before { + content: "\f39e"; } + +.fa.fa-facebook-f { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-f:before { + content: "\f39e"; } + +.fa.fa-github { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-feed:before { + content: "\f09e"; } + +.fa.fa-hdd-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hdd-o:before { + content: "\f0a0"; } + +.fa.fa-hand-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-right:before { + content: "\f0a4"; } + +.fa.fa-hand-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-left:before { + content: "\f0a5"; } + +.fa.fa-hand-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-up:before { + content: "\f0a6"; } + +.fa.fa-hand-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-down:before { + content: "\f0a7"; } + +.fa.fa-globe:before { + content: "\f57d"; } + +.fa.fa-tasks:before { + content: "\f828"; } + +.fa.fa-arrows-alt:before { + content: "\f31e"; } + +.fa.fa-group:before { + content: "\f0c0"; } + +.fa.fa-chain:before { + content: "\f0c1"; } + +.fa.fa-cut:before { + content: "\f0c4"; } + +.fa.fa-files-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-files-o:before { + content: "\f0c5"; } + +.fa.fa-floppy-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-floppy-o:before { + content: "\f0c7"; } + +.fa.fa-save { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-save:before { + content: "\f0c7"; } + +.fa.fa-navicon:before { + content: "\f0c9"; } + +.fa.fa-reorder:before { + content: "\f0c9"; } + +.fa.fa-magic:before { + content: "\e2ca"; } + +.fa.fa-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa.fa-google-plus-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa.fa-google-plus { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus:before { + content: "\f0d5"; } + +.fa.fa-money:before { + content: "\f3d1"; } + +.fa.fa-unsorted:before { + content: "\f0dc"; } + +.fa.fa-sort-desc:before { + content: "\f0dd"; } + +.fa.fa-sort-asc:before { + content: "\f0de"; } + +.fa.fa-linkedin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin:before { + content: "\f0e1"; } + +.fa.fa-rotate-left:before { + content: "\f0e2"; } + +.fa.fa-legal:before { + content: "\f0e3"; } + +.fa.fa-tachometer:before { + content: "\f625"; } + +.fa.fa-dashboard:before { + content: "\f625"; } + +.fa.fa-comment-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comment-o:before { + content: "\f075"; } + +.fa.fa-comments-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comments-o:before { + content: "\f086"; } + +.fa.fa-flash:before { + content: "\f0e7"; } + +.fa.fa-clipboard:before { + content: "\f0ea"; } + +.fa.fa-lightbulb-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lightbulb-o:before { + content: "\f0eb"; } + +.fa.fa-exchange:before { + content: "\f362"; } + +.fa.fa-cloud-download:before { + content: "\f0ed"; } + +.fa.fa-cloud-upload:before { + content: "\f0ee"; } + +.fa.fa-bell-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-o:before { + content: "\f0f3"; } + +.fa.fa-cutlery:before { + content: "\f2e7"; } + +.fa.fa-file-text-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-text-o:before { + content: "\f15c"; } + +.fa.fa-building-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-building-o:before { + content: "\f1ad"; } + +.fa.fa-hospital-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hospital-o:before { + content: "\f0f8"; } + +.fa.fa-tablet:before { + content: "\f3fa"; } + +.fa.fa-mobile:before { + content: "\f3cd"; } + +.fa.fa-mobile-phone:before { + content: "\f3cd"; } + +.fa.fa-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-o:before { + content: "\f111"; } + +.fa.fa-mail-reply:before { + content: "\f3e5"; } + +.fa.fa-github-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-folder-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-o:before { + content: "\f07b"; } + +.fa.fa-folder-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-open-o:before { + content: "\f07c"; } + +.fa.fa-smile-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-smile-o:before { + content: "\f118"; } + +.fa.fa-frown-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-frown-o:before { + content: "\f119"; } + +.fa.fa-meh-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-meh-o:before { + content: "\f11a"; } + +.fa.fa-keyboard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-keyboard-o:before { + content: "\f11c"; } + +.fa.fa-flag-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-flag-o:before { + content: "\f024"; } + +.fa.fa-mail-reply-all:before { + content: "\f122"; } + +.fa.fa-star-half-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-o:before { + content: "\f5c0"; } + +.fa.fa-star-half-empty { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-empty:before { + content: "\f5c0"; } + +.fa.fa-star-half-full { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-full:before { + content: "\f5c0"; } + +.fa.fa-code-fork:before { + content: "\f126"; } + +.fa.fa-chain-broken:before { + content: "\f127"; } + +.fa.fa-unlink:before { + content: "\f127"; } + +.fa.fa-calendar-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-o:before { + content: "\f133"; } + +.fa.fa-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-css3 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-unlock-alt:before { + content: "\f09c"; } + +.fa.fa-minus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-minus-square-o:before { + content: "\f146"; } + +.fa.fa-level-up:before { + content: "\f3bf"; } + +.fa.fa-level-down:before { + content: "\f3be"; } + +.fa.fa-pencil-square:before { + content: "\f14b"; } + +.fa.fa-external-link-square:before { + content: "\f360"; } + +.fa.fa-compass { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down:before { + content: "\f150"; } + +.fa.fa-toggle-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-down:before { + content: "\f150"; } + +.fa.fa-caret-square-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-up:before { + content: "\f151"; } + +.fa.fa-toggle-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-up:before { + content: "\f151"; } + +.fa.fa-caret-square-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-right:before { + content: "\f152"; } + +.fa.fa-toggle-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-right:before { + content: "\f152"; } + +.fa.fa-eur:before { + content: "\f153"; } + +.fa.fa-euro:before { + content: "\f153"; } + +.fa.fa-gbp:before { + content: "\f154"; } + +.fa.fa-usd:before { + content: "\24"; } + +.fa.fa-dollar:before { + content: "\24"; } + +.fa.fa-inr:before { + content: "\e1bc"; } + +.fa.fa-rupee:before { + content: "\e1bc"; } + +.fa.fa-jpy:before { + content: "\f157"; } + +.fa.fa-cny:before { + content: "\f157"; } + +.fa.fa-rmb:before { + content: "\f157"; } + +.fa.fa-yen:before { + content: "\f157"; } + +.fa.fa-rub:before { + content: "\f158"; } + +.fa.fa-ruble:before { + content: "\f158"; } + +.fa.fa-rouble:before { + content: "\f158"; } + +.fa.fa-krw:before { + content: "\f159"; } + +.fa.fa-won:before { + content: "\f159"; } + +.fa.fa-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin:before { + content: "\f15a"; } + +.fa.fa-file-text:before { + content: "\f15c"; } + +.fa.fa-sort-alpha-asc:before { + content: "\f15d"; } + +.fa.fa-sort-alpha-desc:before { + content: "\f881"; } + +.fa.fa-sort-amount-asc:before { + content: "\f884"; } + +.fa.fa-sort-amount-desc:before { + content: "\f160"; } + +.fa.fa-sort-numeric-asc:before { + content: "\f162"; } + +.fa.fa-sort-numeric-desc:before { + content: "\f886"; } + +.fa.fa-youtube-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-square:before { + content: "\f431"; } + +.fa.fa-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square:before { + content: "\f169"; } + +.fa.fa-youtube-play { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-play:before { + content: "\f167"; } + +.fa.fa-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square:before { + content: "\f171"; } + +.fa.fa-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square:before { + content: "\f174"; } + +.fa.fa-long-arrow-down:before { + content: "\f309"; } + +.fa.fa-long-arrow-up:before { + content: "\f30c"; } + +.fa.fa-long-arrow-left:before { + content: "\f30a"; } + +.fa.fa-long-arrow-right:before { + content: "\f30b"; } + +.fa.fa-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip:before { + content: "\f184"; } + +.fa.fa-sun-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sun-o:before { + content: "\f185"; } + +.fa.fa-moon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-moon-o:before { + content: "\f186"; } + +.fa.fa-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-exchange { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right:before { + content: "\f35a"; } + +.fa.fa-arrow-circle-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-left:before { + content: "\f359"; } + +.fa.fa-caret-square-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-left:before { + content: "\f191"; } + +.fa.fa-toggle-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-left:before { + content: "\f191"; } + +.fa.fa-dot-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-dot-circle-o:before { + content: "\f192"; } + +.fa.fa-vimeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo-square:before { + content: "\f194"; } + +.fa.fa-try:before { + content: "\e2bb"; } + +.fa.fa-turkish-lira:before { + content: "\e2bb"; } + +.fa.fa-plus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-plus-square-o:before { + content: "\f0fe"; } + +.fa.fa-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-institution:before { + content: "\f19c"; } + +.fa.fa-bank:before { + content: "\f19c"; } + +.fa.fa-mortar-board:before { + content: "\f19d"; } + +.fa.fa-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square:before { + content: "\f1a2"; } + +.fa.fa-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square:before { + content: "\f1b5"; } + +.fa.fa-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square:before { + content: "\f1b7"; } + +.fa.fa-automobile:before { + content: "\f1b9"; } + +.fa.fa-cab:before { + content: "\f1ba"; } + +.fa.fa-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-soundcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-file-pdf-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-pdf-o:before { + content: "\f1c1"; } + +.fa.fa-file-word-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-word-o:before { + content: "\f1c2"; } + +.fa.fa-file-excel-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-excel-o:before { + content: "\f1c3"; } + +.fa.fa-file-powerpoint-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-powerpoint-o:before { + content: "\f1c4"; } + +.fa.fa-file-image-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-image-o:before { + content: "\f1c5"; } + +.fa.fa-file-photo-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-photo-o:before { + content: "\f1c5"; } + +.fa.fa-file-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-picture-o:before { + content: "\f1c5"; } + +.fa.fa-file-archive-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-archive-o:before { + content: "\f1c6"; } + +.fa.fa-file-zip-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-zip-o:before { + content: "\f1c6"; } + +.fa.fa-file-audio-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-audio-o:before { + content: "\f1c7"; } + +.fa.fa-file-sound-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-sound-o:before { + content: "\f1c7"; } + +.fa.fa-file-video-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-video-o:before { + content: "\f1c8"; } + +.fa.fa-file-movie-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-movie-o:before { + content: "\f1c8"; } + +.fa.fa-file-code-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-code-o:before { + content: "\f1c9"; } + +.fa.fa-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-life-bouy:before { + content: "\f1cd"; } + +.fa.fa-life-buoy:before { + content: "\f1cd"; } + +.fa.fa-life-saver:before { + content: "\f1cd"; } + +.fa.fa-support:before { + content: "\f1cd"; } + +.fa.fa-circle-o-notch:before { + content: "\f1ce"; } + +.fa.fa-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra:before { + content: "\f1d0"; } + +.fa.fa-resistance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-resistance:before { + content: "\f1d0"; } + +.fa.fa-empire { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge:before { + content: "\f1d1"; } + +.fa.fa-git-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-git-square:before { + content: "\f1d2"; } + +.fa.fa-git { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square:before { + content: "\f1d4"; } + +.fa.fa-yc-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc-square:before { + content: "\f1d4"; } + +.fa.fa-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat:before { + content: "\f1d7"; } + +.fa.fa-send:before { + content: "\f1d8"; } + +.fa.fa-paper-plane-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-paper-plane-o:before { + content: "\f1d8"; } + +.fa.fa-send-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-send-o:before { + content: "\f1d8"; } + +.fa.fa-circle-thin { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-thin:before { + content: "\f111"; } + +.fa.fa-header:before { + content: "\f1dc"; } + +.fa.fa-futbol-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-futbol-o:before { + content: "\f1e3"; } + +.fa.fa-soccer-ball-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-soccer-ball-o:before { + content: "\f1e3"; } + +.fa.fa-slideshare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yelp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-newspaper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-newspaper-o:before { + content: "\f1ea"; } + +.fa.fa-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-stripe { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bell-slash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-slash-o:before { + content: "\f1f6"; } + +.fa.fa-trash:before { + content: "\f2ed"; } + +.fa.fa-copyright { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eyedropper:before { + content: "\f1fb"; } + +.fa.fa-area-chart:before { + content: "\f1fe"; } + +.fa.fa-pie-chart:before { + content: "\f200"; } + +.fa.fa-line-chart:before { + content: "\f201"; } + +.fa.fa-lastfm { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square:before { + content: "\f203"; } + +.fa.fa-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-angellist { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-cc:before { + content: "\f20a"; } + +.fa.fa-ils:before { + content: "\f20b"; } + +.fa.fa-shekel:before { + content: "\f20b"; } + +.fa.fa-sheqel:before { + content: "\f20b"; } + +.fa.fa-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skyatlas { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-diamond { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-diamond:before { + content: "\f3a5"; } + +.fa.fa-transgender:before { + content: "\f224"; } + +.fa.fa-intersex:before { + content: "\f224"; } + +.fa.fa-transgender-alt:before { + content: "\f225"; } + +.fa.fa-facebook-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-official:before { + content: "\f09a"; } + +.fa.fa-pinterest-p { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hotel:before { + content: "\f236"; } + +.fa.fa-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc:before { + content: "\f23b"; } + +.fa.fa-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-battery-4:before { + content: "\f240"; } + +.fa.fa-battery:before { + content: "\f240"; } + +.fa.fa-battery-3:before { + content: "\f241"; } + +.fa.fa-battery-2:before { + content: "\f242"; } + +.fa.fa-battery-1:before { + content: "\f243"; } + +.fa.fa-battery-0:before { + content: "\f244"; } + +.fa.fa-object-group { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o:before { + content: "\f249"; } + +.fa.fa-cc-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-diners-club { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-clone { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hourglass-o:before { + content: "\f254"; } + +.fa.fa-hourglass-1:before { + content: "\f251"; } + +.fa.fa-hourglass-2:before { + content: "\f252"; } + +.fa.fa-hourglass-3:before { + content: "\f253"; } + +.fa.fa-hand-rock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-rock-o:before { + content: "\f255"; } + +.fa.fa-hand-grab-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-grab-o:before { + content: "\f255"; } + +.fa.fa-hand-paper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-paper-o:before { + content: "\f256"; } + +.fa.fa-hand-stop-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-stop-o:before { + content: "\f256"; } + +.fa.fa-hand-scissors-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-scissors-o:before { + content: "\f257"; } + +.fa.fa-hand-lizard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-lizard-o:before { + content: "\f258"; } + +.fa.fa-hand-spock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-spock-o:before { + content: "\f259"; } + +.fa.fa-hand-pointer-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-pointer-o:before { + content: "\f25a"; } + +.fa.fa-hand-peace-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-peace-o:before { + content: "\f25b"; } + +.fa.fa-registered { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-creative-commons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa.fa-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-television:before { + content: "\f26c"; } + +.fa.fa-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-amazon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-calendar-plus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-plus-o:before { + content: "\f271"; } + +.fa.fa-calendar-minus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-minus-o:before { + content: "\f272"; } + +.fa.fa-calendar-times-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-times-o:before { + content: "\f273"; } + +.fa.fa-calendar-check-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-check-o:before { + content: "\f274"; } + +.fa.fa-map-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-map-o:before { + content: "\f279"; } + +.fa.fa-commenting:before { + content: "\f4ad"; } + +.fa.fa-commenting-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-commenting-o:before { + content: "\f4ad"; } + +.fa.fa-houzz { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo:before { + content: "\f27d"; } + +.fa.fa-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card-alt:before { + content: "\f09d"; } + +.fa.fa-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-scribd { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pause-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pause-circle-o:before { + content: "\f28b"; } + +.fa.fa-stop-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-stop-circle-o:before { + content: "\f28d"; } + +.fa.fa-bluetooth { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt:before { + content: "\f368"; } + +.fa.fa-question-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-question-circle-o:before { + content: "\f059"; } + +.fa.fa-volume-control-phone:before { + content: "\f2a0"; } + +.fa.fa-asl-interpreting:before { + content: "\f2a3"; } + +.fa.fa-deafness:before { + content: "\f2a4"; } + +.fa.fa-hard-of-hearing:before { + content: "\f2a4"; } + +.fa.fa-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-signing:before { + content: "\f2a7"; } + +.fa.fa-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa.fa-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa.fa-snapchat-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa.fa-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official:before { + content: "\f2b3"; } + +.fa.fa-google-plus-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-circle:before { + content: "\f2b3"; } + +.fa.fa-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa:before { + content: "\f2b4"; } + +.fa.fa-handshake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-handshake-o:before { + content: "\f2b5"; } + +.fa.fa-envelope-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-open-o:before { + content: "\f2b6"; } + +.fa.fa-linode { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-address-book-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-book-o:before { + content: "\f2b9"; } + +.fa.fa-vcard:before { + content: "\f2bb"; } + +.fa.fa-address-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-card-o:before { + content: "\f2bb"; } + +.fa.fa-vcard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-vcard-o:before { + content: "\f2bb"; } + +.fa.fa-user-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-circle-o:before { + content: "\f2bd"; } + +.fa.fa-user-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-o:before { + content: "\f007"; } + +.fa.fa-id-badge { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license:before { + content: "\f2c2"; } + +.fa.fa-id-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-id-card-o:before { + content: "\f2c2"; } + +.fa.fa-drivers-license-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license-o:before { + content: "\f2c2"; } + +.fa.fa-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-thermometer-4:before { + content: "\f2c7"; } + +.fa.fa-thermometer:before { + content: "\f2c7"; } + +.fa.fa-thermometer-3:before { + content: "\f2c8"; } + +.fa.fa-thermometer-2:before { + content: "\f2c9"; } + +.fa.fa-thermometer-1:before { + content: "\f2ca"; } + +.fa.fa-thermometer-0:before { + content: "\f2cb"; } + +.fa.fa-bathtub:before { + content: "\f2cd"; } + +.fa.fa-s15:before { + content: "\f2cd"; } + +.fa.fa-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-restore { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle:before { + content: "\f410"; } + +.fa.fa-window-close-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-close-o:before { + content: "\f410"; } + +.fa.fa-times-rectangle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle-o:before { + content: "\f410"; } + +.fa.fa-bandcamp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast:before { + content: "\f2da"; } + +.fa.fa-snowflake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-snowflake-o:before { + content: "\f2dc"; } + +.fa.fa-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } diff --git a/public/css/fonts/css/v4-shims.min.css b/public/css/fonts/css/v4-shims.min.css new file mode 100644 index 0000000..2f6252b --- /dev/null +++ b/public/css/fonts/css/v4-shims.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa.fa-glass:before{content:"\f000"}.fa.fa-envelope-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-star-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-home:before{content:"\f015"}.fa.fa-file-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-list-alt:before{content:"\f022"}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-edit{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-edit:before{content:"\f044"}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart-o:before,.fa.fa-bar-chart:before{content:"\e0e3"}.fa.fa-twitter-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-twitter-square:before{content:"\f081"}.fa.fa-facebook-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-square:before{content:"\f082"}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-github-square:before{content:"\f092"}.fa.fa-lemon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-globe:before{content:"\f57d"}.fa.fa-tasks:before{content:"\f828"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-cut:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-save{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-save:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-magic:before{content:"\e2ca"}.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pinterest-square:before{content:"\f0d3"}.fa.fa-google-plus-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-square:before{content:"\f0d4"}.fa.fa-google-plus{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f625"}.fa.fa-comment-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard:before{content:"\f0ea"}.fa.fa-lightbulb-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f0ed"}.fa.fa-cloud-upload:before{content:"\f0ee"}.fa.fa-bell-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f5c0"}.fa.fa-star-half-empty{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f5c0"}.fa.fa-star-half-full{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f5c0"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before,.fa.fa-unlink:before{content:"\f127"}.fa.fa-calendar-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-unlock-alt:before{content:"\f09c"}.fa.fa-minus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\24"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\e1bc"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f884"}.fa.fa-sort-amount-desc:before{content:"\f160"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-youtube-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-square:before{content:"\f431"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-xing-square:before{content:"\f169"}.fa.fa-youtube-play{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-tumblr-square:before{content:"\f174"}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo-square:before{content:"\f194"}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\e2bb"}.fa.fa-plus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-google,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-yahoo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-reddit-square:before{content:"\f1a2"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-behance-square:before{content:"\f1b5"}.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-steam-square:before{content:"\f1b7"}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-cab:before{content:"\f1ba"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-life-bouy:before,.fa.fa-life-buoy:before,.fa.fa-life-saver:before,.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-git-square:before{content:"\f1d2"}.fa.fa-git,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-futbol-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-lastfm-square:before{content:"\f203"}.fa.fa-angellist,.fa.fa-ioxhost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before,.fa.fa-transgender:before{content:"\f224"}.fa.fa-transgender-alt:before{content:"\f225"}.fa.fa-facebook-official{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-clone{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-creative-commons,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-odnoklassniki-square:before{content:"\f264"}.fa.fa-chrome,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-internet-explorer,.fa.fa-opera,.fa.fa-safari,.fa.fa-wikipedia-w{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-viadeo,.fa.fa-viadeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-viadeo-square:before{content:"\f2aa"}.fa.fa-snapchat,.fa.fa-snapchat-ghost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-ghost:before{content:"\f2ab"}.fa.fa-snapchat-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-square:before{content:"\f2ad"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-themeisle,.fa.fa-yoast{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-meetup,.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 6 Brands";font-weight:400} \ No newline at end of file diff --git a/public/css/fonts/css/v5-font-face.css b/public/css/fonts/css/v5-font-face.css new file mode 100644 index 0000000..f91a894 --- /dev/null +++ b/public/css/fonts/css/v5-font-face.css @@ -0,0 +1,22 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +@font-face { + font-family: "Font Awesome 5 Brands"; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 900; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } diff --git a/public/css/fonts/css/v5-font-face.min.css b/public/css/fonts/css/v5-font-face.min.css new file mode 100644 index 0000000..4664d68 --- /dev/null +++ b/public/css/fonts/css/v5-font-face.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")} \ No newline at end of file diff --git a/public/css/fonts/js/all.js b/public/css/fonts/js/all.js new file mode 100644 index 0000000..6fb0856 --- /dev/null +++ b/public/css/fonts/js/all.js @@ -0,0 +1,5611 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +(function () { + 'use strict'; + + var _WINDOW = {}; + var _DOCUMENT = {}; + + try { + if (typeof window !== 'undefined') _WINDOW = window; + if (typeof document !== 'undefined') _DOCUMENT = document; + } catch (e) {} + + var _ref = _WINDOW.navigator || {}, + _ref$userAgent = _ref.userAgent, + userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; + var WINDOW = _WINDOW; + var DOCUMENT = _DOCUMENT; + var IS_BROWSER = !!WINDOW.document; + var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; + var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; + var PRODUCTION = function () { + try { + return "production" === 'production'; + } catch (e) { + return false; + } + }(); + var STYLE_TO_PREFIX = { + 'solid': 'fas', + 'regular': 'far', + 'light': 'fal', + 'thin': 'fat', + 'duotone': 'fad', + 'brands': 'fab', + 'kit': 'fak' + }; + var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); + var DUOTONE_CLASSES = { + GROUP: 'duotone-group', + SWAP_OPACITY: 'swap-opacity', + PRIMARY: 'primary', + SECONDARY: 'secondary' + }; + var RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) { + return "".concat(n, "x"); + })).concat(oneToTwenty.map(function (n) { + return "w-".concat(n); + })); + + function bunker(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + fn.apply(void 0, args); + } catch (e) { + if (!PRODUCTION) { + throw e; + } + } + } + + var w = WINDOW || {}; + if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; + if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; + if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; + if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; + var namespace = w[NAMESPACE_IDENTIFIER]; + + function normalizeIcons(icons) { + return Object.keys(icons).reduce(function (acc, iconName) { + var icon = icons[iconName]; + var expanded = !!icon.icon; + + if (expanded) { + acc[icon.iconName] = icon.icon; + } else { + acc[iconName] = icon; + } + + return acc; + }, {}); + } + + function defineIcons(prefix, icons) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var _params$skipHooks = params.skipHooks, + skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; + var normalized = normalizeIcons(icons); + + if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { + namespace.hooks.addPack(prefix, normalizeIcons(icons)); + } else { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); + } + /** + * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction + * of new styles we needed to differentiate between them. Prefix `fa` is now an alias + * for `fas` so we'll ease the upgrade process for our users by automatically defining + * this as well. + */ + + + if (prefix === 'fas') { + defineIcons('fa', icons); + } + } + + var icons = { + "42-group": [640, 512, ["innosoft"], "e080", "M320 96V416C341 416 361.8 411.9 381.2 403.8C400.6 395.8 418.3 383.1 433.1 369.1C447.1 354.3 459.8 336.6 467.8 317.2C475.9 297.8 480 277 480 256C480 234.1 475.9 214.2 467.8 194.8C459.8 175.4 447.1 157.7 433.1 142.9C418.3 128 400.6 116.2 381.2 108.2C361.8 100.1 341 96 320 96zM0 256L160 416L320 256L160 96L0 256zM480 256C480 277 484.1 297.8 492.2 317.2C500.2 336.6 512 354.3 526.9 369.1C541.7 383.1 559.4 395.8 578.8 403.8C598.2 411.9 618.1 416 640 416V96C597.6 96 556.9 112.9 526.9 142.9C496.9 172.9 480 213.6 480 256z"], + "500px": [448, 512, [], "f26e", "M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3 .3-16 16.5-21.2 23.9l-.5 .6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6 .2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"], + "accessible-icon": [448, 512, [62107], "f368", "M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"], + "accusoft": [640, 512, [], "f369", "M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7 .8 0 114.5-36.6 114.5-36.6 .5-.6-.1-.1 .6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8 .5-116.5 .6-19.2 .1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1 .2-9.6 .8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6 .2 2.5 2 2.6 4.6 3.5 2.7 .8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"], + "adn": [496, 512, [], "f170", "M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"], + "adversal": [512, 512, [], "f36a", "M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4 .4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7 .4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6 .4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1 .2-.1 .3-.1 .5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2 .4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"], + "affiliatetheme": [512, 512, [], "f36b", "M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9 .1-8.5-.3-16.8-1-25z"], + "airbnb": [448, 512, [], "f834", "M224 373.1c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.6-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.1 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.1 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.7-231.2 115.9-241.6 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.5 114.8 239.1 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.1C280.3 35.93 273.1 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.2 22 349.8-3.22 419.1 48.74 480 111.6 480c21.71 0 60.61-6.06 112.4-62.4 58.68 63.78 101.3 62.4 112.4 62.4 62.89 .05 114.8-60.86 89.61-130.2 .02-3.89-16.82-38.9-16.82-39.58z"], + "algolia": [448, 512, [], "f36c", "M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8 .9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1 .7 1.3 .2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7 .5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"], + "alipay": [448, 512, [], "f642", "M377.7 32H70.26C31.41 32 0 63.41 0 102.3v307.5C0 448.6 31.41 480 70.26 480h307.5c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.6-60.34-171.6-88.44-32.07 43.97-84.14 81-148.6 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.1 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.4V92.34h50.92v50.42h109.4v19.01H248.6v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100 36.04 148.6 52.74V102.3C447.8 63.57 416.4 32 377.7 32zM47.28 322.1c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.9-72.9-44.63-18.68-84.48-31.41-109.4-31.41-67.45 0-79.35 33.06-78.36 50.58z"], + "amazon": [448, 512, [], "f270", "M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"], + "amazon-pay": [640, 512, [], "f42c", "M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.9 595.9 0 0 0 127.4 46.3 616.6 616.6 0 0 0 63.2 11.8 603.3 603.3 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.7 603.7 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1 -9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.3 473.3 0 0 1 -75.1 17.6 431 431 0 0 1 -53.2 4.8 21.3 21.3 0 0 0 -2.5 .3H308a21.3 21.3 0 0 0 -2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1 -50.4-5.3A448.4 448.4 0 0 1 164 420a443.3 443.3 0 0 1 -145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3 .6a80.92 80.92 0 0 0 -38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1 -.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1 .1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1 .9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1 .5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1 -1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9 .4a148 148 0 0 0 -28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7 .1 3.3-.1 6.6 0 9.9 .1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4 .3 8.3 .2 16.6 .3 24.9a7.84 7.84 0 0 1 -.2 1.4c-.5-.1-.9 0-1.3-.1a180.6 180.6 0 0 0 -32-4.9c-11.3-.6-22.5 .1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4 .1 10.9 .1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0 -.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9 .1-7.9 .1-11.9 .1zm35 127.7a3.33 3.33 0 0 1 -1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7 .6-11.4 .4-16.8-1.8a20.08 20.08 0 0 1 -12.4-13.3 32.9 32.9 0 0 1 -.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4 .7 16.6 2.3 25 3.4 1.6 .2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0 -21-3.9 147.3 147.3 0 0 0 -39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0 -3.7 3.5 5.11 5.11 0 0 0 -.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4 .4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0 -1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.9 145.9 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6 .8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6 .2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1 -15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.2 108.2 0 0 0 16.9 2c17.1 .4 30.7-6.5 39.5-21.4a131.6 131.6 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0 -7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"], + "amilia": [448, 512, [], "f36d", "M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5 .3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"], + "android": [576, 512, [], "f17b", "M420.5 301.9a24 24 0 1 1 24-24 24 24 0 0 1 -24 24m-265.1 0a24 24 0 1 1 24-24 24 24 0 0 1 -24 24m273.7-144.5 47.94-83a10 10 0 1 0 -17.27-10h0l-48.54 84.07a301.3 301.3 0 0 0 -246.6 0L116.2 64.45a10 10 0 1 0 -17.27 10h0l47.94 83C64.53 202.2 8.24 285.5 0 384H576c-8.24-98.45-64.54-181.8-146.9-226.6"], + "angellist": [448, 512, [], "f209", "M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7 .1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3 .3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7 .1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"], + "angrycreative": [640, 512, [], "f36e", "M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8 .3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1 .6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"], + "angular": [448, 512, [], "f420", "M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"], + "app-store": [512, 512, [], "f36f", "M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"], + "app-store-ios": [448, 512, [], "f370", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"], + "apper": [640, 512, [], "f371", "M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8 .3-3.3 .3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"], + "apple": [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"], + "apple-pay": [640, 512, [], "f415", "M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9 .3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5 .1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8 .4 9.3 .7 11.6 .7z"], + "artstation": [512, 512, [], "f77a", "M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"], + "asymmetrik": [576, 512, [], "f372", "M517.5 309.2c38.8-40 58.1-80 58.5-116.1 .8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"], + "atlassian": [512, 512, [], "f77b", "M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8 .1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6 .1z"], + "audible": [640, 512, [], "f373", "M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"], + "autoprefixer": [640, 512, [], "f41c", "M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"], + "avianex": [512, 512, [], "f374", "M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"], + "aviato": [640, 512, [], "f421", "M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2 .3-2 .5-4.2 .6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1 .3-.1 .7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3 .3 4.4 .6 6.5 .3 2.6 .8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9 .9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1 .2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9 .9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"], + "aws": [640, 512, [], "f375", "M180.4 203c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1 -4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1 -5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.61 78.61 0 0 1 -62.61 29.45c-16.28 .89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1 .02 21.6 .37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4 .01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.86 76.86 0 0 1 55.69 17.28 70.29 70.29 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.9 23.05c-7.86 .72-11.52-4.86-12.68-10.37l-49.8-164.6c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.8 33.16-140.8c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.6L420.1 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.7 110.7l-32.78 136.1c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.5 5.63c-5.88 .01-33.92-.3-57.36-12.29a12.8 12.8 0 0 1 -7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89 .91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.9c-70.03 51.72-171.7 79.25-258.5 79.25A469.1 469.1 0 0 1 2.83 327.5c-6.53-5.89-.77-13.96 7.17-9.47a637.4 637.4 0 0 0 316.9 84.12 630.2 630.2 0 0 0 241.6-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79 .77-7.94-5.12-1.79-9.47 40.07-28.17 105.9-20.1 113.4-10.63 7.55 9.47-2.05 75.41-39.56 106.9-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], + "bandcamp": [512, 512, [], "f2d5", "M256 8C119 8 8 119 8 256S119 504 256 504 504 393 504 256 393 8 256 8zm48.2 326.1h-181L207.9 178h181z"], + "battle-net": [512, 512, [], "f835", "M448.6 225.6c26.87 .18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.1-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.2 7.14 238.7 1.07 228.2 .22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.6-9.22 5.22 53 29.75 101.8 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61 .15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.8 4.6 143.3-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.2c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.7c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.4c-10.29-5.34-21.16-10.34-32.38-15.05a722.5 722.5 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.2 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.8 718.8 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.3 98-132.8 115.9-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.1 12.3 .91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.2 695.2 0 0 0 44.67 152.8c.93-.38 1.84 .88 18.67-8.25-26.33-74.47-33.76-138.2-34-173.4 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.3 30.71q-10.69 15.66-23.33 32.47C365.6 152 339.1 145.8 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.6 717.6 0 0 0 -115.3-31.71 646.6 646.6 0 0 0 -39.39-6.05c-.07 .45-1.81 1.85-2.16 20.33C300 190.3 358.8 215.7 389.4 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.6 306.6 111zm-130.6 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.1 74.8"], + "behance": [576, 512, [], "f1b4", "M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2 .6-8.7 .6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"], + "bilibili": [512, 512, [], "e3d9", "M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z"], + "bimobject": [448, 512, [], "f378", "M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"], + "bitbucket": [512, 512, [61810], "f171", "M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0 -13.2-18.3 24.58 24.58 0 0 0 -2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"], + "bitcoin": [512, 512, [], "f379", "M504 256c0 136.1-111 248-248 248S8 392.1 8 256 119 8 256 8s248 111 248 248zm-141.7-35.33c4.937-32.1-20.19-50.74-54.55-62.57l11.15-44.7-27.21-6.781-10.85 43.52c-7.154-1.783-14.5-3.464-21.8-5.13l10.93-43.81-27.2-6.781-11.15 44.69c-5.922-1.349-11.73-2.682-17.38-4.084l.031-.14-37.53-9.37-7.239 29.06s20.19 4.627 19.76 4.913c11.02 2.751 13.01 10.04 12.68 15.82l-12.7 50.92c.76 .194 1.744 .473 2.829 .907-.907-.225-1.876-.473-2.876-.713l-17.8 71.34c-1.349 3.348-4.767 8.37-12.47 6.464 .271 .395-19.78-4.937-19.78-4.937l-13.51 31.15 35.41 8.827c6.588 1.651 13.05 3.379 19.4 5.006l-11.26 45.21 27.18 6.781 11.15-44.73a1038 1038 0 0 0 21.69 5.627l-11.11 44.52 27.21 6.781 11.26-45.13c46.4 8.781 81.3 5.239 95.99-36.73 11.84-33.79-.589-53.28-25-65.99 17.78-4.098 31.17-15.79 34.75-39.95zm-62.18 87.18c-8.41 33.79-65.31 15.52-83.75 10.94l14.94-59.9c18.45 4.603 77.6 13.72 68.81 48.96zm8.417-87.67c-7.673 30.74-55.03 15.12-70.39 11.29l13.55-54.33c15.36 3.828 64.84 10.97 56.85 43.03z"], + "bity": [496, 512, [], "f37a", "M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3 .8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"], + "black-tie": [448, 512, [], "f27e", "M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"], + "blackberry": [512, 512, [], "f37b", "M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1 .1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 .1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1 .1-16.3-11.6-39.7-53.7-39.7z"], + "blogger": [448, 512, [], "f37c", "M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1 .1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4 .1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8 .2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9 .7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6 .2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5 .4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7 .5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"], + "blogger-b": [448, 512, [], "f37d", "M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8 .6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7 .7 165.8 .2 246.8c-.6 101.5 .1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4 .1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5 .2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5 .9c-68.1 .8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"], + "bluetooth": [448, 512, [], "f293", "M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"], + "bluetooth-b": [320, 512, [], "f294", "M196.5 260l92.63-103.3L143.1 0v206.3l-86.11-86.11-31.41 31.41 108.1 108.4L25.61 368.4l31.41 31.41 86.11-86.11L145.8 512l148.6-148.6-97.91-103.3zm40.86-102.1l-49.98 49.98-.338-100.3 50.31 50.32zM187.4 313l49.98 49.98-50.31 50.32 .338-100.3z"], + "bootstrap": [576, 512, [], "f836", "M333.5 201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4 238.2 333.5 225 333.5 201.4zM517 188.6c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1 0-55.8 28.1-54.7 58.5c1 29.3-.3 67.2-9.8 98.1c-9.6 31-25.7 50.6-52.2 53.1v28.5c26.4 2.5 42.6 22.1 52.2 53.1c9.5 30.9 10.9 68.8 9.8 98.1c-1.1 30.5 22.7 58.5 54.7 58.5h328.7c32.1 0 55.8-28.1 54.7-58.5c-1-29.3 .3-67.2 9.8-98.1c9.6-31 25.7-50.6 52.1-53.1v-28.5C542.7 239.2 526.5 219.6 517 188.6zM300.2 375.1h-97.9V136.8h97.4c43.3 0 71.7 23.4 71.7 59.4c0 25.3-19.1 47.9-43.5 51.8v1.3c33.2 3.6 55.5 26.6 55.5 58.3C383.4 349.7 352.1 375.1 300.2 375.1zM290.2 266.4h-50.1v78.4h52.3c34.2 0 52.3-13.7 52.3-39.5C344.7 279.6 326.1 266.4 290.2 266.4z"], + "bots": [640, 512, [], "e340", "M86.34 197.8a51.77 51.77 0 0 0 -41.57 20.06V156a8.19 8.19 0 0 0 -8.19-8.19H8.19A8.19 8.19 0 0 0 0 156V333.6a8.189 8.189 0 0 0 8.19 8.189H36.58a8.189 8.189 0 0 0 8.19-8.189v-8.088c11.63 13.37 25.87 19.77 41.57 19.77 34.6 0 61.92-26.16 61.92-73.84C148.3 225.5 121.2 197.8 86.34 197.8zM71.52 305.7c-9.593 0-21.22-4.942-26.75-12.5V250.2c5.528-7.558 17.15-12.79 26.75-12.79 17.73 0 31.11 13.08 31.11 34.01C102.6 292.6 89.25 305.7 71.52 305.7zm156.4-59.03a17.4 17.4 0 1 0 17.4 17.4A17.4 17.4 0 0 0 227.9 246.7zM273.1 156.7V112a13.31 13.31 0 1 0 -10.24 0V156.7a107.5 107.5 0 1 0 10.24 0zm85.99 107.4c0 30.53-40.79 55.28-91.11 55.28s-91.11-24.75-91.11-55.28 40.79-55.28 91.11-55.28S359.9 233.5 359.9 264.1zm-50.16 17.4a17.4 17.4 0 1 0 -17.4-17.4h0A17.4 17.4 0 0 0 309.8 281.5zM580.7 250.5c-14.83-2.617-22.39-3.78-22.39-9.885 0-5.523 7.268-9.884 17.74-9.884a65.56 65.56 0 0 1 34.48 10.1 8.171 8.171 0 0 0 11.29-2.468c.07-.11 .138-.221 .2-.333l8.611-14.89a8.2 8.2 0 0 0 -2.867-11.12 99.86 99.86 0 0 0 -52.01-14.14c-38.96 0-60.18 21.51-60.18 46.22 0 36.34 33.72 41.86 57.56 45.64 13.37 2.326 24.13 4.361 24.13 11.05 0 6.4-5.523 10.76-18.9 10.76-13.55 0-30.99-6.222-42.62-13.58a8.206 8.206 0 0 0 -11.34 2.491c-.035 .054-.069 .108-.1 .164l-10.2 16.89a8.222 8.222 0 0 0 2.491 11.07c15.22 10.3 37.66 16.69 59.44 16.69 40.41 0 63.96-19.77 63.96-46.51C640 260.6 604.5 254.8 580.7 250.5zm-95.93 60.79a8.211 8.211 0 0 0 -9.521-5.938 23.17 23.17 0 0 1 -4.155 .387c-7.849 0-12.5-6.106-12.5-14.24V240.3h20.35a8.143 8.143 0 0 0 8.141-8.143V209.5a8.143 8.143 0 0 0 -8.141-8.143H458.6V171.1a8.143 8.143 0 0 0 -8.143-8.143H422.3a8.143 8.143 0 0 0 -8.143 8.143h0v30.23H399a8.143 8.143 0 0 0 -8.143 8.143h0v22.67A8.143 8.143 0 0 0 399 240.3h15.11v63.67c0 27.04 15.41 41.28 43.9 41.28 12.18 0 21.38-2.2 27.6-5.446a8.161 8.161 0 0 0 4.145-9.278z"], + "btc": [384, 512, [], "f15a", "M310.2 242.6c27.73-14.18 45.38-39.39 41.28-81.3-5.358-57.35-52.46-76.57-114.8-81.93V0h-48.53v77.2c-12.6 0-25.52 .315-38.44 .63V0h-48.53v79.41c-17.84 .539-38.62 .276-97.37 0v51.68c38.31-.678 58.42-3.14 63.02 21.43v217.4c-2.925 19.49-18.52 16.68-53.26 16.07L3.765 443.7c88.48 0 97.37 .315 97.37 .315V512h48.53v-67.06c13.23 .315 26.15 .315 38.44 .315V512h48.53v-68c81.3-4.412 135.6-24.89 142.9-101.5 5.671-61.45-23.32-88.86-69.33-99.89zM150.6 134.6c27.42 0 113.1-8.507 113.1 48.53 0 54.51-85.71 48.21-113.1 48.21v-96.74zm0 251.8V279.8c32.77 0 133.1-9.138 133.1 53.26-.001 60.19-100.4 53.25-133.1 53.25z"], + "buffer": [448, 512, [], "f837", "M427.8 380.7l-196.5 97.82a18.6 18.6 0 0 1 -14.67 0L20.16 380.7c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.8 67a18.51 18.51 0 0 0 14.67 0l134.8-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.5l-47.06-23.43a18.62 18.62 0 0 0 -14.68 0l-134.8 67.08a18.68 18.68 0 0 1 -14.67 0L81.91 220.7a18.65 18.65 0 0 0 -14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.5 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.4l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.5-90.29c4-1.86 4-4.89 0-6.74L231.3 33.4a19.88 19.88 0 0 0 -14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"], + "buromobelexperte": [448, 512, [], "f37f", "M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"], + "buy-n-large": [576, 512, [], "f8a6", "M288 32C133.3 32 7.79 132.3 7.79 256S133.3 480 288 480s280.2-100.3 280.2-224S442.7 32 288 32zm-85.39 357.2L64.1 390.5l77.25-290.7h133.4c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1 -1.5 6.85 77.39 77.39 0 0 0 -17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.7 61.52zM358 207.1h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.9 182.1H306.8L322.6 328a78.8 78.8 0 0 0 11.47 .83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.4h103.9zM211.7 269.4H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.7h21.37c18 0 35.38-14.64 39.21-30.14C265.2 168.7 251.1 170 233 170z"], + "buysellads": [448, 512, [], "f20d", "M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"], + "canadian-maple-leaf": [512, 512, [], "f785", "M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"], + "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3 .4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5 .9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5 .9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8 .1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7 .9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4 .2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9 .9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3 .1 4.6 1.6 6.7 6.2 7.5 4.7 .8 9.4 1.6 14.2 1.7 14.3 .3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5 .6-1.5 1.1-3 1.3-4.6 .4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5 .4-.3 .8-.6 1.4-1 .5 3.2 .9 6.2 1.5 9.2 .5 2.6 2.1 4.3 4.5 4.4 4.6 .1 9.1 .1 13.7 0 2.3-.1 3.8-1.6 4-3.9 .1-.8 .1-1.6 .1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8 .1-1.6 .3-2.5 .3-8.2 .4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5 .1 2.8-.1 5.6 0 8.3 .1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4 .8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7 .3 6.9 .2 13.9 .3 20.8 0 .4-.1 .7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9 .1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7 .1 2.5 .2 2.5 1.7 4.1 4.1 4.2 5.9 .1 11.8 .1 17.7 0 2.5 0 4-1.7 4.1-4.1 .1-.8 .1-1.7 .1-2.5v-60.7c.9 .7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2 .2-2.4 .3-3.6 .5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6 .7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4 .7 0 1.4 .2 2.1 .3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2 .8-2.4 1.8-3.1 3-.6 .9-.7 2.3-.5 3.4 .3 1.3 1.7 1.6 3 1.5 .6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1 .3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7 .3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3 .8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6 .7-3 1.2-6.1 1.7-9.1 .2-4.7 .2-9.6 .2-14.5z"], + "cc-amex": [576, 512, [], "f1f3", "M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z"], + "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3 .9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4 .7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4 .3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5 .2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2 .4 6.5 .5 8.1 .5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], + "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8 .3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], + "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9 .1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], + "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5 .2 38.5 .2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2 .4-3.3 .3-38.5 .3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3 .1 42.3-12.9 42.3-33.2z"], + "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8 .3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3 .3 .5 .3 1.1 0 .3-.3 .5-.3 1.1-.3 .3-.3 .5-.5 .8-.3 .3-.5 .5-1.1 .5-.3 .3-.5 .3-1.1 .3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8 .3-1.1 0-.5 .3-.8 .5-1.1 .3-.3 .5-.3 .8-.5 .5-.3 .8-.3 1.1-.3 .5 0 .8 0 1.1 .3 .5 .3 .8 .3 1.1 .5s.2 .6 .5 1.1zm-2.2 1.4c.5 0 .5-.3 .8-.3 .3-.3 .3-.5 .3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7 .8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8 .3-1.4 .3-.5 .3-.8 .5-1.1 .8-.5 .3-.8 .8-.8 1.1-.3 .5-.3 1.1-.3 1.6 0 .3 0 .8 .3 1.4 0 .3 .3 .8 .8 1.1 .3 .3 .5 .5 1.1 .8 .5 .3 1.1 .3 1.4 .3 .5 0 1.1 0 1.6-.3 .3-.3 .8-.5 1.1-.8 .3-.3 .5-.8 .8-1.1 .3-.6 .3-1.1 .3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4 .1 138.5-61.9 138.5-138.4z"], + "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5 .5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3 .5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5 .1-9.8-6.9-15.5-16.2-15.5z"], + "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], + "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2 .3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4 .2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2 .2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2 .1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], + "centercode": [512, 512, [], "f380", "M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"], + "centos": [448, 512, [], "f789", "M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"], + "chrome": [512, 512, [], "f268", "M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"], + "chromecast": [512, 512, [], "f838", "M447.8 64H64c-23.6 0-42.7 19.1-42.7 42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6 0 42.7-19.1 42.7-42.7V106.7C490.7 83.1 471.4 64 447.8 64zM21.3 383.6L21.3 383.6l0 63.9h63.9C85.2 412.2 56.6 383.6 21.3 383.6L21.3 383.6zM21.3 298.6V341c58.9 0 106.6 48.1 106.6 107h42.7C170.7 365.6 103.7 298.7 21.3 298.6zM213.4 448h42.7c-.5-129.5-105.3-234.3-234.8-234.6l0 42.4C127.3 255.6 213.3 342 213.4 448z"], + "cloudflare": [640, 512, [], "e07d", "M407.9 319.9l-230.8-2.928a4.58 4.58 0 0 1 -3.632-1.926 4.648 4.648 0 0 1 -.494-4.147 6.143 6.143 0 0 1 5.361-4.076L411.3 303.9c27.63-1.26 57.55-23.57 68.02-50.78l13.29-34.54a7.944 7.944 0 0 0 .524-2.936 7.735 7.735 0 0 0 -.164-1.631A151.9 151.9 0 0 0 201.3 198.4 68.12 68.12 0 0 0 94.2 269.6C41.92 271.1 0 313.7 0 366.1a96.05 96.05 0 0 0 1.029 13.96 4.508 4.508 0 0 0 4.445 3.871l426.1 .051c.043 0 .08-.019 .122-.02a5.606 5.606 0 0 0 5.271-4l3.273-11.27c3.9-13.4 2.448-25.8-4.1-34.9C430.1 325.4 420.1 320.5 407.9 319.9zM513.9 221.1c-2.141 0-4.271 .062-6.391 .164a3.771 3.771 0 0 0 -3.324 2.653l-9.077 31.19c-3.9 13.4-2.449 25.79 4.1 34.89 6.02 8.4 16.05 13.32 28.24 13.9l49.2 2.939a4.491 4.491 0 0 1 3.51 1.894 4.64 4.64 0 0 1 .514 4.169 6.153 6.153 0 0 1 -5.351 4.075l-51.13 2.939c-27.75 1.27-57.67 23.57-68.14 50.78l-3.695 9.606a2.716 2.716 0 0 0 2.427 3.68c.046 0 .088 .017 .136 .017h175.9a4.69 4.69 0 0 0 4.539-3.37 124.8 124.8 0 0 0 4.682-34C640 277.3 583.5 221.1 513.9 221.1z"], + "cloudscale": [448, 512, [], "f383", "M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6 .4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"], + "cloudsmith": [332, 512, [], "f384", "M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"], + "cloudversify": [616, 512, [], "f385", "M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"], + "cmplid": [640, 512, [], "e360", "M226.1 388.2a3.816 3.816 0 0 0 -2.294-3.5 3.946 3.946 0 0 0 -1.629-.385L72.6 384.3a19.24 19.24 0 0 1 -17.92-26.02L81.58 255.7a35.72 35.72 0 0 1 32.37-26H262.5a7.07 7.07 0 0 0 6.392-5.194l10.77-41.13a3.849 3.849 0 0 0 -2.237-4.937 3.755 3.755 0 0 0 -1.377-.261c-.063 0-.126 0-.189 .005H127.4a106.8 106.8 0 0 0 -96.99 77.1L3.483 358.8A57.47 57.47 0 0 0 57.31 436q1.43 0 2.86-.072H208.7a7.131 7.131 0 0 0 6.391-5.193L225.8 389.6A3.82 3.82 0 0 0 226.1 388.2zM306.7 81.2a3.861 3.861 0 0 0 .251-1.367A3.813 3.813 0 0 0 303.1 76c-.064 0-.128 0-.192 0h-41A7.034 7.034 0 0 0 255.5 81.2l-21.35 80.92h51.13zM180.4 368.2H231.5L263.5 245.7H212.3zM511.9 79.72a3.809 3.809 0 0 0 -3.8-3.661c-.058 0-.137 0-.23 .007h-41a7.1 7.1 0 0 0 -6.584 5.129L368.9 430.6a3.54 3.54 0 0 0 -.262 1.335 3.873 3.873 0 0 0 3.864 3.863c.056 0 .112 0 .169 0h41a7.068 7.068 0 0 0 6.392-5.193L511.5 81.2A3.624 3.624 0 0 0 511.9 79.72zM324.6 384.5h-41a7.2 7.2 0 0 0 -6.392 5.194L266.5 430.8a3.662 3.662 0 0 0 -.268 1.374A3.783 3.783 0 0 0 270 436c.06 0 .166 0 .3-.012h40.9a7.036 7.036 0 0 0 6.391-5.193l10.77-41.13a3.75 3.75 0 0 0 -3.445-5.208c-.108 0-.217 0-.326 .014zm311.3-308.4h-41a7.066 7.066 0 0 0 -6.392 5.129l-91.46 349.4a4.073 4.073 0 0 0 -.229 1.347 3.872 3.872 0 0 0 3.863 3.851c.056 0 .112 0 .169 0h40.97a7.1 7.1 0 0 0 6.392-5.193L639.7 81.2a3.624 3.624 0 0 0 .32-1.475 3.841 3.841 0 0 0 -3.821-3.564c-.068 0-.137 0-.206 .006zM371.6 225.2l10.8-41.1a4.369 4.369 0 0 0 .227-1.388 3.869 3.869 0 0 0 -3.861-3.842c-.057 0-.113 0-.169 0h-41.1a7.292 7.292 0 0 0 -6.391 5.226l-10.83 41.1a4.417 4.417 0 0 0 -.26 1.493c0 .069 0 .138 0 .206a3.776 3.776 0 0 0 3.757 3.507c.076 0 .18 0 .3-.012h41.13A7.034 7.034 0 0 0 371.6 225.2z"], + "codepen": [512, 512, [], "f1cb", "M502.3 159.7l-234-156c-7.987-4.915-16.51-4.96-24.57 0l-234 156C3.714 163.7 0 170.8 0 177.1v155.1c0 7.143 3.714 14.29 9.715 18.29l234 156c7.987 4.915 16.51 4.96 24.57 0l234-156c6-3.999 9.715-11.14 9.715-18.29V177.1c-.001-7.142-3.715-14.29-9.716-18.28zM278 63.13l172.3 114.9-76.86 51.43L278 165.7V63.13zm-44 0v102.6l-95.43 63.72-76.86-51.43L234 63.13zM44 219.1l55.14 36.86L44 292.8v-73.71zm190 229.7L61.71 333.1l76.86-51.43L234 346.3v102.6zm22-140.9l-77.71-52 77.71-52 77.71 52-77.71 52zm22 140.9V346.3l95.43-63.72 76.86 51.43L278 448.8zm190-156l-55.14-36.86L468 219.1v73.71z"], + "codiepie": [472, 512, [], "f284", "M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"], + "confluence": [512, 512, [], "f78d", "M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1 .1-.2 .1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8 .4 21.7-7.7 .1-.1 .1-.3 .2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2 .3-.4 .6-.6 1-67.3 112.6-81.1 95.6-280.6 .9-8.1-3.9-17.8-.4-21.7 7.7-.1 .1-.1 .3-.2 .4L22.2 141.3c-3.6 8.1 .1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"], + "connectdevelop": [576, 512, [], "f20e", "M550.5 241l-50.09-86.79c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.73-14.73-15l-55.45-95.89c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.27-15.27-15.27-4.821 0-8.839 2.143-11.79 5.625H299.5C296.8 18.14 292.8 16 288 16s-8.839 2.143-11.52 5.625H170.4C167.5 18.14 163.4 16 158.6 16c-8.303 0-15.27 6.696-15.27 15.27 0 1.607 .536 3.482 1.072 4.821l-55.98 97.23c-5.356 2.41-9.107 7.5-9.107 13.66 0 .535 .268 1.071 .268 1.607l-53.3 92.14c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.39 12.05 15l55.18 95.36c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.39 12.05 14.73l51.7 89.73c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.27 15.27 15.27 4.821 0 8.839-2.143 11.52-5.357h106.9C279.2 493.9 283.4 496 288 496s8.839-2.143 11.52-5.357h107.1c2.678 2.946 6.696 4.821 10.98 4.821 8.571 0 15.27-6.964 15.27-15.27 0-1.607-.267-2.946-.803-4.285l51.7-90.27c6.964-1.339 12.05-7.5 12.05-14.73 0-1.607-.268-3.214-.804-4.821l54.91-95.36c6.964-1.339 12.32-7.5 12.32-15-.002-7.232-5.092-13.39-11.79-14.73zM153.5 450.7l-43.66-75.8h43.66v75.8zm0-83.84h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.1-47.41v50.62zm0-62.41l-50.36 53.3c-1.339-.536-2.679-1.34-4.018-1.607L43.45 259.8c.535-1.339 .535-2.679 .535-4.018s0-2.41-.268-3.482l51.97-90c2.679-.268 5.357-1.072 7.768-2.679l50.09 51.97v92.95zm0-102.3l-45.8-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.93-15.8v72.05zm0-80.63l-43.66 15.8 43.66-75.54v59.73zm326.5 39.11l.804 1.339L445.5 329.1l-63.75-67.23 98.04-101.5 .268 .268zM291.8 355.1l11.52 11.79H280.5l11.25-11.79zm-.268-11.25l-83.3-85.45 79.55-84.38 83.04 87.59-79.29 82.23zm5.357 5.893l79.29-82.23 67.5 71.25-5.892 28.13H313.7l-16.88-17.14zM410.4 44.39c1.071 .536 2.142 1.072 3.482 1.34l57.86 100.7v.536c0 2.946 .803 5.624 2.143 7.767L376.4 256l-83.04-87.59L410.4 44.39zm-9.107-2.143L287.7 162.5l-57.05-60.27 166.3-60h4.287zm-123.5 0c2.678 2.678 6.16 4.285 10.18 4.285s7.5-1.607 10.18-4.285h75L224.8 95.82 173.9 42.25h103.9zm-116.2 5.625l1.071-2.142a33.83 33.83 0 0 0 2.679-.804l51.16 53.84-54.91 19.82V47.88zm0 79.29l60.8-21.96 59.73 63.21-79.55 84.11-40.98-42.05v-83.3zm0 92.68L198 257.6l-36.43 38.3v-76.07zm0 87.86l42.05-44.46 82.77 85.98-17.14 17.68H161.6v-59.2zm6.964 162.1c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.73h99.91l-91.61 94.82h-1.339zm129.9 0c-2.679-2.41-6.428-4.285-10.45-4.285s-7.767 1.875-10.45 4.285h-96.43l91.61-94.82h38.3l91.61 94.82H298.4zm120-11.79l-4.286 7.5c-1.339 .268-2.41 .803-3.482 1.339l-89.2-91.88h114.4l-17.41 83.04zm12.86-22.23l12.86-60.8h21.96l-34.82 60.8zm34.82-68.84h-20.36l4.553-21.16 17.14 18.21c-.535 .803-1.071 1.874-1.339 2.946zm66.16-107.4l-55.45 96.7c-1.339 .535-2.679 1.071-4.018 1.874l-20.63-21.96 34.55-163.9 45.8 79.29c-.267 1.339-.803 2.678-.803 4.285 0 1.339 .268 2.411 .536 3.75z"], + "contao": [512, 512, [], "f26d", "M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"], + "cotton-bureau": [512, 512, [], "f89e", "M474.3 330.4c-23.66 91.85-94.23 144.6-201.9 148.4V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.2 0C110.5 157.7 74 194.6 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.4-5-211.1-85.07-211.1-223 0-141.8 81.35-223.2 223.2-223.2 114.8 0 189.8 53.2 214.7 148.8H500C473.9 71.51 388.2 8 259.8 8 105 8 12 101.2 12 255.8 12 411.1 105.2 504.3 259.8 504c128.3 0 213.9-63.81 239.7-173.6zM357 182.3c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.8zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.4c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.5 71.65 120.8-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.3c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0 -33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"], + "cpanel": [640, 512, [], "f388", "M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5 .2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"], + "creative-commons": [496, 512, [], "f25e", "M245.8 214.9l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.1 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.6 8.05C104.7 8.05 0 123.1 0 256c0 138.5 113.6 248 247.6 248 129.9 0 248.4-100.9 248.4-248 0-137.9-106.6-248-248.4-248zm.87 450.8c-112.5 0-203.7-93.04-203.7-202.8 0-105.4 85.43-203.3 203.7-203.3 112.5 0 202.8 89.46 202.8 203.3-.01 121.7-99.68 202.8-202.8 202.8z"], + "creative-commons-by": [496, 512, [], "f4e7", "M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3z"], + "creative-commons-nc": [496, 512, [], "f4e8", "M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"], + "creative-commons-nc-eu": [496, 512, [], "f4e9", "M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4 .9 .4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"], + "creative-commons-nc-jp": [496, 512, [], "f4ea", "M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"], + "creative-commons-nd": [496, 512, [], "f4eb", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"], + "creative-commons-pd": [496, 512, [], "f4ec", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"], + "creative-commons-pd-alt": [496, 512, [], "f4ed", "M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6 .9 41.6z"], + "creative-commons-remix": [496, 512, [], "f4ee", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4 .4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"], + "creative-commons-sa": [496, 512, [], "f4ef", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"], + "creative-commons-sampling": [496, 512, [], "f4f0", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9 .6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9 .5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6 .5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6 .6 0 10.6 .7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"], + "creative-commons-sampling-plus": [496, 512, [], "f4f1", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1 .4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2 .2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1 .1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4 .3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"], + "creative-commons-share": [496, 512, [], "f4f2", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"], + "creative-commons-zero": [496, 512, [], "f4f3", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4 .5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"], + "critical-role": [448, 512, [], "f6c9", "M225.8 0c.26 .15 216.6 124.5 217.1 124.7 3 1.18 3.7 3.46 3.7 6.56q-.11 125.2 0 250.4a5.88 5.88 0 0 1 -3.38 5.78c-21.37 12-207.9 118.3-218.9 124.6h-3C142 466.3 3.08 386.6 2.93 386.5a3.29 3.29 0 0 1 -1.88-3.24c0-.87 0-225.9-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.1 213.2 6 224.1 0zM215.4 20.42l-.22-.16Q118.1 75.55 21 130.9c0 .12 .08 .23 .13 .35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.4c.88-1.41 64.07-110.9 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4 .09 1.48 .22 .78 1.42-41.19 71.33-36.4 63-67.48 116.9-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82 .29 26.21 .15 25.27 1 32.66 .52 4.37 2.16 4.2 9.69 4.81 3.14 .26 3.88 4.08 .52 4.92-1.57 .39-31.6 .51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16 .81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4 .88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06 .89 .13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5 .2 1.48 1.33 0 .11 .88 26.69 .87 26.8-.05 1.52 .67 1.62 1.89 1.62h186.7Q386.5 304.6 346 234.3c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.1V138c-1.72 .5-103.3 38.72-105.8 39.68-1.08 .42-1.55 .2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13 .65-1.39 .1 0 95.53-35.85 103-38.77-65.42-37.57-130.6-75-196-112.6l86.82 150.4-.28 .33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.7-82-142.2-9.1 14.67-83.56 146.2-85.37 146.3-2.93 .17-5.88 .08-9.25 .08q43.25-74.74 86.18-149zm51.93 129.9a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53 .2 2.6 1.92 0 .11 .07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.1 0 .89 .52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75 .13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.3 .05-1.08-.62-1.16-1.35-1.15-32.35 .52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95 .23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85 .68-27.49 .58-22.59 1-29.55a2.69 2.69 0 0 0 -1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0 -2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9 .43 1.12 1.24 1.11 .1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76 .31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1 -1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1 -2.66-1.79c2.38-3.75 5.89 .92 5.86-6.14-.08-25.75 .21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05 .72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73 .95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42 .26 4.73 .45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49 .53 1 3.38 0 .05-.16 0-.24 0-3.61 .26-3.94 1-4 4.62-.27 43.93 .07 40.23 .41 42.82 .11 .84 .27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37 .08-20.74 0-31.11 .07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37 .88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57 .83 3.55zm275-10.15c-1.21 7.13 .17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1 -3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0 -2-1.44 138 138 0 0 0 -14.58 .07 2.23 2.23 0 0 0 -1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72 .66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61 .13 4-1.11 4.13-4.29 .09-1.87 .08 1.17 .07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06 .21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0 -2.66 2.83c-.07 1.63-.19 38.89 .29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25 .43 14.92 .44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.7 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11 .38 37.19-.65 1.68-.19 2.38 .24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31 .34 15.69-1.52 .47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58 .32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64 .48 14.4 0 16.43-5.71 .84-2.37 3.5-1.77 3.18 .58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.5c2.46 .61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1 .57 11.89-6 12.75-1.6 .21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.1c3.28 0 3.66 3 .16 3.43-2.61 .32-5-.42-5 5.46 0 2-.19 29.05 .4 41.45 .11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76 .84 2.76 1.08 .35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94 .4 5.13-2.8 1-15.87 .57-44.65 .34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22 .34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61 .1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09 .41-3.15 1.29 0 20.19-.41 21.17 .21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.3a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.6 197.4-112.5-.14-.43 11.26-.18-181.5-.27-1.22 0-1.57 .37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1 -1.36 7.71c-.55 1.83 .38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1 -2-10.79c.16-2.46 .8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.3 102.6 196 112.8zm-90.9-188.8c0 2.4 .36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51 .05 8.04 .01 11.61 .02 41.65zm105.8-15.05c0 2.13 1.07 38.68 1.09 39.13 .34 9.94-25.58 5.77-25.23-2.59 .08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1 -.36 .12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88 .07-14.91zm-80.15 103.8c0 1.8 .41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81 .05 4.5-.03 13.68 .02 18.59zm212.3 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"], + "css3": [512, 512, [], "f13c", "M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"], + "css3-alt": [384, 512, [], "f38b", "M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3 .1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2 .1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"], + "cuttlefish": [440, 512, [], "f38c", "M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"], + "d-and-d": [576, 512, [], "f38d", "M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2 .3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1 .7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5 .6-11.4 12.5-14.1 27.4-10.9 43.6 .2 1.3 .4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6 .1 .5 .1 1.1 .1 1.6 0 .3-.1 .5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5 .9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2 .2-1.9 .3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3 .3 .3 .7 .6 1 .9 .3-.6 .5-1.2 .9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8 .7-3.5 .9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3 .4-.4 .9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6 .2-.1 .3-.2 .4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8 .9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9 .8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7 .3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3 .2-.2 .4-.3 .6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8 .6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1 .1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8 .4 4.7 .8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1 .7-52.3 .3 2.2 .4 4.3 .9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8 .1-50.9-10.6 .7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6 .2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3 .8-2.4 2.3-4.6 4-6.6 .6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2 .5-1 1.1-2 1.9-3.3 .5 4.2 .6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1 .6 .5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7 .4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6 .5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2 .4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3 .3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5 .8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8 .8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3 .6-4.5 .8-9.2 .1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6 .1-23.3 1.3-.9 .1-1.7 .3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"], + "d-and-d-beyond": [640, 512, [], "f6ca", "M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9 .2-5.8 1.6-7.5 .6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9 .6-.3 1.3 0 .6 1.9-.2 .6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3 .1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9 .9 7.5 .2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1 .6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6 .7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4 .2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5 .5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4 .8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6 .5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9 .5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8 .5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6 .3 3 .6 4.3 1.1-2.1 .8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2 .8 .2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8 .6-2.6-.2s.3-4.3 .3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3 .6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7 .2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7 .6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8 .8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5 .3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9 .3 5.6 1.1V196c-1.1 .5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1 .2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5 .2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1 .2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3 .3-99.3zm-.3 77.5c-37.4 0-36.9-55.3 .2-55.3 36.8 .1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8 .2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1 .1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5 .8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6 .3-39.9-4 .1 .8 .5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8 .2-39.9-4 .1 .7 .5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6 .3-4 1.1-6.1 2.9 .1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"], + "dailymotion": [448, 512, [], "e052", "M298.9 267a48.4 48.4 0 0 0 -24.36-6.21q-19.83 0-33.44 13.27t-13.61 33.42q0 21.16 13.28 34.6t33.43 13.44q20.5 0 34.11-13.78T322 307.5A47.13 47.13 0 0 0 315.9 284 44.13 44.13 0 0 0 298.9 267zM0 32V480H448V32zM374.7 405.3h-53.1V381.4h-.67q-15.79 26.2-55.78 26.2-27.56 0-48.89-13.1a88.29 88.29 0 0 1 -32.94-35.77q-11.6-22.68-11.59-50.89 0-27.56 11.76-50.22a89.9 89.9 0 0 1 32.93-35.78q21.18-13.09 47.72-13.1a80.87 80.87 0 0 1 29.74 5.21q13.28 5.21 25 17V153l55.79-12.09z"], + "dashcube": [448, 512, [], "f210", "M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"], + "deezer": [576, 512, [], "e077", "M451.5 244.7H576V172H451.5zm0-173.9v72.67H576V70.82zm0 275.1H576V273.2H451.5zM0 447.1H124.5V374.4H0zm150.5 0H275V374.4H150.5zm150.5 0H425.5V374.4H301zm150.5 0H576V374.4H451.5zM301 345.9H425.5V273.2H301zm-150.5 0H275V273.2H150.5zm0-101.2H275V172H150.5z"], + "delicious": [448, 512, [], "f1a5", "M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1 .5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"], + "deploydog": [512, 512, [], "f38e", "M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"], + "deskpro": [480, 512, [], "f38f", "M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7 .3 15 .1h82c.2 0 .3 .1 .5 .1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"], + "dev": [448, 512, [], "f6cc", "M120.1 208.3c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.5h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.4 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.2c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.1h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.7-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16 .29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.6 115.3c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.7 29.57-113.7h32.58l-38.46 144.8z"], + "deviantart": [320, 512, [], "f1bd", "M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"], + "dhl": [640, 512, [], "f790", "M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4 .7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"], + "diaspora": [512, 512, [], "f791", "M251.6 354.5c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.3s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1 .6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3 .4-2 1-148.6 1.7-149.6 .8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3 .8 .9 31.9 102.2 31.5 102.6-.9 .9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"], + "digg": [512, 512, [], "f1a6", "M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"], + "digital-ocean": [512, 512, [], "f391", "M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"], + "discord": [640, 512, [], "f392", "M524.5 69.84a1.5 1.5 0 0 0 -.764-.7A485.1 485.1 0 0 0 404.1 32.03a1.816 1.816 0 0 0 -1.923 .91 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.14-30.6 1.89 1.89 0 0 0 -1.924-.91A483.7 483.7 0 0 0 116.1 69.14a1.712 1.712 0 0 0 -.788 .676C39.07 183.7 18.19 294.7 28.43 404.4a2.016 2.016 0 0 0 .765 1.375A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.1 430.4a1.86 1.86 0 0 0 -1.019-2.588 321.2 321.2 0 0 1 -45.87-21.85 1.885 1.885 0 0 1 -.185-3.126c3.082-2.309 6.166-4.711 9.109-7.137a1.819 1.819 0 0 1 1.9-.256c96.23 43.92 200.4 43.92 295.5 0a1.812 1.812 0 0 1 1.924 .233c2.944 2.426 6.027 4.851 9.132 7.16a1.884 1.884 0 0 1 -.162 3.126 301.4 301.4 0 0 1 -45.89 21.83 1.875 1.875 0 0 0 -1 2.611 391.1 391.1 0 0 0 30.01 48.81 1.864 1.864 0 0 0 2.063 .7A486 486 0 0 0 610.7 405.7a1.882 1.882 0 0 0 .765-1.352C623.7 277.6 590.9 167.5 524.5 69.84zM222.5 337.6c-28.97 0-52.84-26.59-52.84-59.24S193.1 219.1 222.5 219.1c29.67 0 53.31 26.82 52.84 59.24C275.3 310.1 251.9 337.6 222.5 337.6zm195.4 0c-28.97 0-52.84-26.59-52.84-59.24S388.4 219.1 417.9 219.1c29.67 0 53.31 26.82 52.84 59.24C470.7 310.1 447.5 337.6 417.9 337.6z"], + "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], + "dochub": [416, 512, [], "f394", "M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1 .8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"], + "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4 .4 67.6 .1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], + "draft2digital": [480, 512, [], "f396", "M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"], + "dribbble": [512, 512, [], "f17d", "M256 8C119.3 8 8 119.3 8 256s111.3 248 248 248 248-111.3 248-248S392.7 8 256 8zm163.1 114.4c29.5 36.05 47.37 81.96 47.83 131.1-6.984-1.477-77.02-15.68-147.5-6.818-5.752-14.04-11.18-26.39-18.62-41.61 78.32-31.98 113.8-77.48 118.3-83.52zM396.4 97.87c-3.81 5.427-35.7 48.29-111 76.52-34.71-63.78-73.18-116.2-79.04-124 67.18-16.19 137.1 1.27 190.1 47.49zm-230.5-33.25c5.585 7.659 43.44 60.12 78.54 122.5-99.09 26.31-186.4 25.93-195.8 25.81C62.38 147.2 106.7 92.57 165.9 64.62zM44.17 256.3c0-2.166 .043-4.322 .108-6.473 9.268 .19 111.9 1.513 217.7-30.15 6.064 11.87 11.86 23.92 17.17 35.95-76.6 21.58-146.2 83.53-180.5 142.3C64.79 360.4 44.17 310.7 44.17 256.3zm81.81 167.1c22.13-45.23 82.18-103.6 167.6-132.8 29.74 77.28 42.04 142.1 45.19 160.6-68.11 29.01-150 21.05-212.8-27.88zm248.4 8.489c-2.171-12.89-13.45-74.9-41.15-151 66.38-10.63 124.7 6.768 131.9 9.055-9.442 58.94-43.27 109.8-90.79 141.1z"], + "dropbox": [528, 512, [], "f16b", "M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"], + "drupal": [448, 512, [], "f1a9", "M303.1 108.1C268.2 72.46 234.2 38.35 224 0c-9.957 38.35-44.25 72.46-80.02 108.1C90.47 161.7 29.72 222.4 29.72 313.4c-2.337 107.3 82.75 196.2 190.1 198.5S415.9 429.2 418.3 321.9q.091-4.231 0-8.464C418.3 222.4 357.5 161.7 303.1 108.1zm-174.3 223a130.3 130.3 0 0 0 -15.21 24.15 4.978 4.978 0 0 1 -3.319 2.766h-1.659c-4.333 0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.25-25.72-1.475-62.32-1.475-62.32h0a160.6 160.6 0 0 1 23.23-49.87A290.8 290.8 0 0 1 138.5 201.6l9.219 9.219 43.51 44.43a4.979 4.979 0 0 1 0 6.638L145.8 312.3h0zm96.61 127.3a67.2 67.2 0 0 1 -49.78-111.9c14.2-16.87 31.53-33.46 50.33-55.31 22.31 23.78 36.88 40.1 51.16 57.99a28.41 28.41 0 0 1 2.95 4.425 65.9 65.9 0 0 1 11.98 37.98 66.65 66.65 0 0 1 -66.47 66.84zM352.4 351.6h0a7.743 7.743 0 0 1 -6.176 5.347H344.9a11.25 11.25 0 0 1 -6.269-5.07h0a348.2 348.2 0 0 0 -39.46-48.95L281.4 284.5 222.3 223.2a497.9 497.9 0 0 1 -35.4-36.32 12.03 12.03 0 0 0 -.922-1.382 35.4 35.4 0 0 1 -4.7-9.219V174.5a31.35 31.35 0 0 1 9.218-27.66c11.43-11.43 22.95-22.95 33.83-34.94 11.98 13.27 24.8 26 37.43 38.63h0a530.1 530.1 0 0 1 69.6 79.1 147.5 147.5 0 0 1 27.01 83.8A134.1 134.1 0 0 1 352.4 351.6z"], + "dyalog": [416, 512, [], "f399", "M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"], + "earlybirds": [480, 512, [], "f39a", "M313.2 47.5c1.2-13 21.3-14 36.6-8.7 .9 .3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2 .3 .9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2 .8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7 .9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2 .8-10.5-25.4 21.5-42.6 66.8-73.4 .7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1 .3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1 .6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7 .6 11.6 .8 12.7 2.6 .3 .5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"], + "ebay": [640, 512, [], "f4f4", "M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7 .4-42.4 .9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6 .3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"], + "edge": [512, 512, [], "f282", "M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z"], + "edge-legacy": [512, 512, [], "e078", "M25.71 228.2l.35-.48c0 .16 0 .32-.07 .48zm460.6 15.51c0-44-7.76-84.46-28.81-122.4C416.5 47.88 343.9 8 258.9 8 119 7.72 40.62 113.2 26.06 227.7c42.42-61.31 117.1-121.4 220.4-125 0 0 109.7 0 99.42 105H170c6.37-37.39 18.55-59 34.34-78.93-75.05 34.9-121.8 96.1-120.8 188.3 .83 71.45 50.13 144.8 120.8 172 83.35 31.84 192.8 7.2 240.1-21.33V363.3C363.6 419.8 173.6 424.2 172.2 295.7H486.3V243.7z"], + "elementor": [512, 512, [], "f430", "M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z"], + "ello": [496, 512, [], "f5f1", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm143.8 285.2C375.3 358.5 315.8 404.8 248 404.8s-127.3-46.29-143.8-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.6 90.11s102.5-37.2 116.6-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"], + "ember": [640, 512, [], "f423", "M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6 .5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7 .8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5 .3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7 .3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"], + "empire": [496, 512, [], "f1d1", "M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5 .8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"], + "envira": [448, 512, [], "f299", "M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"], + "erlang": [640, 512, [], "f39d", "M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9 .1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7 .5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"], + "ethereum": [320, 512, [], "f42e", "M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"], + "etsy": [384, 512, [], "f2d7", "M384 348c-1.75 10.75-13.75 110-15.5 132-117.9-4.299-219.9-4.743-368.5 0v-25.5c45.46-8.948 60.63-8.019 61-35.25 1.793-72.32 3.524-244.1 0-322-1.029-28.46-12.13-26.76-61-36v-25.5c73.89 2.358 255.9 8.551 362.1-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.9 115.7 313.2 68 277.3 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.25h25.75c-4.407 101.4-3.91 61.83-1.75 160.3H257c-9.155-40.09-9.065-61.04-39.5-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.64 0 66.56-24.1 98.75-99.75H384z"], + "evernote": [384, 512, [], "f839", "M120.8 132.2c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56 .22-.74 0-.37-.37L123.8 46.45c.38-.37 .6-.22 .38 .37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.5v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.9-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.8 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.1 8.91 238.5 7.8 238.5C362.1 485.5 267.1 480 267.1 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.8c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"], + "expeditedssl": [496, 512, [], "f23e", "M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"], + "facebook": [512, 512, [62000], "f09a", "M504 256C504 119 393 8 256 8S8 119 8 256c0 123.8 90.69 226.4 209.3 245V327.7h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.3 482.4 504 379.8 504 256z"], + "facebook-f": [320, 512, [], "f39e", "M279.1 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.4 0 225.4 0c-73.22 0-121.1 44.38-121.1 124.7v70.62H22.89V288h81.39v224h100.2V288z"], + "facebook-messenger": [512, 512, [], "f39f", "M256.5 8C116.5 8 8 110.3 8 248.6c0 72.3 29.71 134.8 78.07 177.9 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.3c52.91-23.3 53.59-25.14 62.56-22.7C337.9 521.8 504 423.7 504 248.6 504 110.3 396.6 8 256.5 8zm149.2 185.1l-73 115.6a37.37 37.37 0 0 1 -53.91 9.93l-58.08-43.47a15 15 0 0 0 -18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.6a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"], + "fantasy-flight-games": [512, 512, [], "f6dc", "M256 32.86L32.86 256 256 479.1 479.1 256 256 32.86zM88.34 255.8c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.8-18.69 24.63 18.4 62.06 58.9 62.15 59 .68 .74 1.07 2.86 .58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43 .12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.8 101.6c-35.49 35.43-78.09 38.14-106.1 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64 .14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29 .26-.26 .65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"], + "fedex": [640, 512, [], "f797", "M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"], + "fedora": [448, 512, [], "f798", "M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z"], + "figma": [384, 512, [], "f799", "M14 95.79C14 42.89 56.89 0 109.8 0H274.2C327.1 0 369.1 42.89 369.1 95.79C369.1 129.3 352.8 158.8 326.7 175.9C352.8 193 369.1 222.5 369.1 256C369.1 308.9 327.1 351.8 274.2 351.8H272.1C247.3 351.8 224.7 342.4 207.7 326.9V415.2C207.7 468.8 163.7 512 110.3 512C57.54 512 14 469.2 14 416.2C14 382.7 31.19 353.2 57.24 336.1C31.19 318.1 14 289.5 14 256C14 222.5 31.2 193 57.24 175.9C31.2 158.8 14 129.3 14 95.79zM176.3 191.6H109.8C74.22 191.6 45.38 220.4 45.38 256C45.38 291.4 73.99 320.2 109.4 320.4C109.5 320.4 109.7 320.4 109.8 320.4H176.3V191.6zM207.7 256C207.7 291.6 236.5 320.4 272.1 320.4H274.2C309.7 320.4 338.6 291.6 338.6 256C338.6 220.4 309.7 191.6 274.2 191.6H272.1C236.5 191.6 207.7 220.4 207.7 256zM109.8 351.8C109.7 351.8 109.5 351.8 109.4 351.8C73.99 352 45.38 380.8 45.38 416.2C45.38 451.7 74.6 480.6 110.3 480.6C146.6 480.6 176.3 451.2 176.3 415.2V351.8H109.8zM109.8 31.38C74.22 31.38 45.38 60.22 45.38 95.79C45.38 131.4 74.22 160.2 109.8 160.2H176.3V31.38H109.8zM207.7 160.2H274.2C309.7 160.2 338.6 131.4 338.6 95.79C338.6 60.22 309.7 31.38 274.2 31.38H207.7V160.2z"], + "firefox": [512, 512, [], "f269", "M503.5 241.5c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.9 245.9 0 0 0 -7.32-41.15c0-.12 0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27 8.27 0 0 0 -.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48 0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07 18.07 0 0 0 -1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63 15.63 0 0 0 -1.2-1.8L463.2 119a15.63 15.63 0 0 0 -1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.8 248.8 0 0 0 -23.51-26.64A186.8 186.8 0 0 0 412 62.46c-4-3.48-8.16-6.72-12.48-9.84a162.5 162.5 0 0 0 -24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254 254 0 0 0 -55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.4 236.4 0 0 0 -38-4H255.1a234.6 234.6 0 0 0 -45.48 5c-33.59 7.08-63.23 21.24-82.91 39-1.08 1-1.92 1.68-2.4 2.16l-.48 .48H124l-.12 .12 .12-.12a.12 .12 0 0 0 .12-.12l-.12 .12a.42 .42 0 0 1 .24-.12c14.64-8.76 34.92-16 49.44-19.56l5.88-1.44c.36-.12 .84-.12 1.2-.24 1.68-.36 3.36-.72 5.16-1.08 .24 0 .6-.12 .84-.12C250.9 20.94 319.3 40.14 367 85.61a171.5 171.5 0 0 1 26.88 32.76c30.36 49.2 27.48 111.1 3.84 147.6-34.44 53-111.3 71.27-159 24.84a84.19 84.19 0 0 1 -25.56-59 74.05 74.05 0 0 1 6.24-31c1.68-3.84 13.08-25.67 18.24-24.59-13.08-2.76-37.55 2.64-54.71 28.19-15.36 22.92-14.52 58.2-5 83.28a132.9 132.9 0 0 1 -12.12-39.24c-12.24-82.55 43.31-153 94.31-170.5-27.48-24-96.47-22.31-147.7 15.36-29.88 22-51.23 53.16-62.51 90.36 1.68-20.88 9.6-52.08 25.8-83.88-17.16 8.88-39 37-49.8 62.88-15.6 37.43-21 82.19-16.08 124.8 .36 3.24 .72 6.36 1.08 9.6 19.92 117.1 122 206.4 244.8 206.4C392.8 503.4 504 392.2 504 255 503.9 250.5 503.8 245.9 503.5 241.5z"], + "firefox-browser": [512, 512, [], "e007", "M130.2 127.5C130.4 127.6 130.3 127.6 130.2 127.5V127.5zM481.6 172.9C471 147.4 449.6 119.9 432.7 111.2C446.4 138.1 454.4 165 457.4 185.2C457.4 185.3 457.4 185.4 457.5 185.6C429.9 116.8 383.1 89.11 344.9 28.75C329.9 5.058 333.1 3.518 331.8 4.088L331.7 4.158C284.1 30.11 256.4 82.53 249.1 126.9C232.5 127.8 216.2 131.9 201.2 139C199.8 139.6 198.7 140.7 198.1 142C197.4 143.4 197.2 144.9 197.5 146.3C197.7 147.2 198.1 147.1 198.6 148.6C199.1 149.3 199.8 149.9 200.5 150.3C201.3 150.7 202.1 150.1 202.1 151.1C203.8 151.1 204.7 151 205.5 150.8L206 150.6C221.5 143.3 238.4 139.4 255.5 139.2C318.4 138.7 352.7 183.3 363.2 201.5C350.2 192.4 326.8 183.3 304.3 187.2C392.1 231.1 368.5 381.8 246.1 376.4C187.5 373.8 149.9 325.5 146.4 285.6C146.4 285.6 157.7 243.7 227 243.7C234.5 243.7 255.1 222.8 256.4 216.7C256.3 214.7 213.8 197.8 197.3 181.5C188.4 172.8 184.2 168.6 180.5 165.5C178.5 163.8 176.4 162.2 174.2 160.7C168.6 141.2 168.4 120.6 173.5 101.1C148.4 112.5 128.1 130.5 114.8 146.4H114.7C105 134.2 105.7 93.78 106.3 85.35C106.1 84.82 99.02 89.02 98.1 89.66C89.53 95.71 81.55 102.6 74.26 110.1C57.97 126.7 30.13 160.2 18.76 211.3C14.22 231.7 12 255.7 12 263.6C12 398.3 121.2 507.5 255.9 507.5C376.6 507.5 478.9 420.3 496.4 304.9C507.9 228.2 481.6 173.8 481.6 172.9z"], + "first-order": [448, 512, [], "f2b0", "M12.9 229.2c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4h-.2zM224 96.6c-7.1 0-14.6 .6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"], + "first-order-alt": [496, 512, [], "f50a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm0 488.2C115.3 496.2 7.79 388.7 7.79 256S115.3 15.79 248 15.79 488.2 123.3 488.2 256 380.7 496.2 248 496.2zm0-459.9C126.7 36.29 28.29 134.7 28.29 256S126.7 475.7 248 475.7 467.7 377.3 467.7 256 369.3 36.29 248 36.29zm0 431.2c-116.8 0-211.5-94.69-211.5-211.5S131.2 44.49 248 44.49 459.5 139.2 459.5 256 364.8 467.5 248 467.5zm186.2-162.1a191.6 191.6 0 0 1 -20.13 48.69l-74.13-35.88 61.48 54.82a193.5 193.5 0 0 1 -37.2 37.29l-54.8-61.57 35.88 74.27a190.9 190.9 0 0 1 -48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.4 191.4 0 0 1 -48.65-20.2l35.93-74.34-54.87 61.64a193.9 193.9 0 0 1 -37.22-37.28l61.59-54.9-74.26 35.93a191.6 191.6 0 0 1 -20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.7 191.7 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.9 193.9 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.5 191.5 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71 .62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.1 193.1 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.5 191.5 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"], + "firstdraft": [384, 512, [], "f3a1", "M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"], + "flickr": [448, 512, [], "f16e", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"], + "flipboard": [448, 512, [], "f44d", "M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"], + "fly": [384, 512, [], "f417", "M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9 .3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3 .1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"], + "font-awesome": [448, 512, [62694, 62501, "font-awesome-flag", "font-awesome-logo-full"], "f2b4", "M448 48V384C385 407 366 416 329 416C266 416 242 384 179 384C159 384 143 388 128 392V328C143 324 159 320 179 320C242 320 266 352 329 352C349 352 364 349 384 343V135C364 141 349 144 329 144C266 144 242 112 179 112C128 112 104 133 64 141V448C64 466 50 480 32 480S0 466 0 448V64C0 46 14 32 32 32S64 46 64 64V77C104 69 128 48 179 48C242 48 266 80 329 80C366 80 385 71 448 48z"], + "fonticons": [448, 512, [], "f280", "M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"], + "fonticons-fi": [384, 512, [], "f3a2", "M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"], + "fort-awesome": [512, 512, [], "f286", "M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"], + "fort-awesome-alt": [512, 512, [], "f3a3", "M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1 .7 .1 1.3 .1 2 .1 1.3 .1 2.7 .2 4 0 .8 .1 1.5 .1 2.3 0 1.3 .1 2.5 .2 3.7 .1 .8 .1 1.6 .2 2.4 .1 1.1 .2 2.3 .3 3.5 0 .8 .1 1.6 .2 2.4 .1 1.2 .3 2.4 .4 3.6 .1 .8 .2 1.5 .3 2.3 .1 1.3 .3 2.6 .5 3.9 .1 .6 .2 1.3 .3 1.9l.9 5.7c.1 .6 .2 1.1 .3 1.7 .3 1.3 .5 2.7 .8 4 .2 .8 .3 1.6 .5 2.4 .2 1 .5 2.1 .7 3.2 .2 .9 .4 1.7 .6 2.6 .2 1 .4 2 .7 3 .2 .9 .5 1.8 .7 2.7 .3 1 .5 1.9 .8 2.9 .3 .9 .5 1.8 .8 2.7 .2 .9 .5 1.9 .8 2.8s.5 1.8 .8 2.7c.3 1 .6 1.9 .9 2.8 .6 1.6 1.1 3.3 1.7 4.9 .4 1 .7 1.9 1 2.8 .3 1 .7 2 1.1 3 .3 .8 .6 1.5 .9 2.3l1.2 3c.3 .7 .6 1.5 .9 2.2 .4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3 .7 .6 1.3 .9 2 .5 1 1 2.1 1.5 3.1 .2 .6 .5 1.1 .8 1.7 .6 1.1 1.1 2.2 1.7 3.3 .1 .2 .2 .3 .3 .5 2.2 4.1 4.4 8.2 6.8 12.2 .2 .4 .5 .8 .7 1.2 .7 1.1 1.3 2.2 2 3.3 .3 .5 .6 .9 .9 1.4 .6 1.1 1.3 2.1 2 3.2 .3 .5 .6 .9 .9 1.4 .7 1.1 1.4 2.1 2.1 3.2 .2 .4 .5 .8 .8 1.2 .7 1.1 1.5 2.2 2.3 3.3 .2 .2 .3 .5 .5 .7 37.5 51.7 94.4 88.5 160 99.4 .9 .1 1.7 .3 2.6 .4 1 .2 2.1 .4 3.1 .5s1.9 .3 2.8 .4c1 .2 2 .3 3 .4 .9 .1 1.9 .2 2.9 .3s1.9 .2 2.9 .3 2.1 .2 3.1 .3c.9 .1 1.8 .1 2.7 .2 1.1 .1 2.3 .1 3.4 .2 .8 0 1.7 .1 2.5 .1 1.3 0 2.6 .1 3.9 .1 .7 .1 1.4 .1 2.1 .1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1 .8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2 .9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5 .9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4 .2-.2 .3-.5 .5-.7 .8-1.1 1.5-2.2 2.3-3.3 .2-.4 .5-.8 .8-1.2 .7-1.1 1.4-2.1 2.1-3.2 .3-.5 .6-.9 .9-1.4 .6-1.1 1.3-2.1 2-3.2 .3-.5 .6-.9 .9-1.4 .7-1.1 1.3-2.2 2-3.3 .2-.4 .5-.8 .7-1.2 2.4-4 4.6-8.1 6.8-12.2 .1-.2 .2-.3 .3-.5 .6-1.1 1.1-2.2 1.7-3.3 .2-.6 .5-1.1 .8-1.7 .5-1 1-2.1 1.5-3.1 .3-.7 .6-1.3 .9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7 .6-1.5 .9-2.2l1.2-3c.3-.8 .6-1.5 .9-2.3 .4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9 .3-1 .6-1.9 .9-2.8s.5-1.8 .8-2.7c.2-.9 .5-1.9 .8-2.8s.6-1.8 .8-2.7c.3-1 .5-1.9 .8-2.9 .2-.9 .5-1.8 .7-2.7 .2-1 .5-2 .7-3 .2-.9 .4-1.7 .6-2.6 .2-1 .5-2.1 .7-3.2 .2-.8 .3-1.6 .5-2.4 .3-1.3 .6-2.7 .8-4 .1-.6 .2-1.1 .3-1.7l.9-5.7c.1-.6 .2-1.3 .3-1.9 .1-1.3 .3-2.6 .5-3.9 .1-.8 .2-1.5 .3-2.3 .1-1.2 .3-2.4 .4-3.6 0-.8 .1-1.6 .2-2.4 .1-1.1 .2-2.3 .3-3.5 .1-.8 .1-1.6 .2-2.4 .1 1.7 .1 .5 .2-.7 0-.8 .1-1.5 .1-2.3 .1-1.3 .2-2.7 .2-4 .1-.7 .1-1.3 .1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"], + "forumbee": [448, 512, [], "f211", "M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"], + "foursquare": [368, 512, [], "f180", "M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9 .9-1.8 .6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"], + "free-code-camp": [576, 512, [], "f2c5", "M97.22 96.21c10.36-10.65 16-17.12 16-21.9 0-2.76-1.92-5.51-3.83-7.42A14.81 14.81 0 0 0 101 64.05c-8.48 0-20.92 8.79-35.84 25.69C23.68 137 2.51 182.8 3.37 250.3s17.47 117 54.06 161.9C76.22 435.9 90.62 448 100.9 448a13.55 13.55 0 0 0 8.37-3.84c1.91-2.76 3.81-5.63 3.81-8.38 0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25 188.8 54 137.8 97.22 96.21zM239.5 420.1c.58 .37 .91 .55 .91 .55zm93.79 .55 .17-.13C333.2 420.6 333.2 420.7 333.3 420.6zm3.13-158.2c-16.24-4.15 50.41-82.89-68.05-177.2 0 0 15.54 49.38-62.83 159.6-74.27 104.3 23.46 168.7 34 175.2-6.73-4.35-47.4-35.7 9.55-128.6 11-18.3 25.53-34.87 43.5-72.16 0 0 15.91 22.45 7.6 71.13C287.7 364 354 342.9 355 343.9c22.75 26.78-17.72 73.51-21.58 76.55 5.49-3.65 117.7-78 33-188.1C360.4 238.4 352.6 266.6 336.4 262.4zM510.9 89.69C496 72.79 483.5 64 475 64a14.81 14.81 0 0 0 -8.39 2.84c-1.91 1.91-3.83 4.66-3.83 7.42 0 4.78 5.6 11.26 16 21.9 43.23 41.61 65 92.59 64.82 154.1-.16 68-23 122.6-67.48 165-9.34 8.35-13.18 14.92-13.2 20.55 0 2.75 1.9 5.62 3.81 8.38A13.61 13.61 0 0 0 475.1 448c10.28 0 24.68-12.13 43.47-35.79 36.59-44.85 53.14-94.38 54.06-161.9S552.3 137 510.9 89.69z"], + "freebsd": [448, 512, [], "f3a4", "M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4 .9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"], + "fulcrum": [320, 512, [], "f50b", "M95.75 164.1l-35.38 43.55L25 164.1l35.38-43.55zM144.2 0l-20.54 198.2L72.72 256l51 57.82L144.2 512V300.9L103.2 256l41.08-44.89zm79.67 164.1l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.8 247 256l-51-57.82L175.4 0z"], + "galactic-republic": [496, 512, [], "f50c", "M248 504C111.3 504 0 392.8 0 256S111.3 8 248 8s248 111.3 248 248-111.3 248-248 248zm0-479.5C120.4 24.53 16.53 128.4 16.53 256S120.4 487.5 248 487.5 479.5 383.6 479.5 256 375.6 24.53 248 24.53zm27.62 21.81v24.62a185.9 185.9 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.1-41.8zm-55.37 .07c-37.64 4.94-72.16 19.8-100.9 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.87 77.87 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.2 30.72l-17.36 17.36a186.3 186.3 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101zm-335.5 .13c-22.06 28.72-36.91 63.26-41.85 100.9h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.7c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.1h-24.62zM136.7 406.4l-17.36 17.36c28.73 22.09 63.3 36.98 100.1 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.5 .05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.1-41.85l-17.31-17.39h-.08z"], + "galactic-senate": [512, 512, [], "f50d", "M249.9 33.48v26.07C236.3 80.17 226 168.1 225.4 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32 .75-10.53 2.19-15.65 .65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.8-10.91-194.7-24.49-215.4V33.48h-12.28zm-26.34 147.8c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68 .18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51 .73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47 .96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.5 147.5 0 0 0 -27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.8-1.45-156.4 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.3 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87 .01 .01-.01 .04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19 .02 16.37-1.07 24.04-3.21 .01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43 .39 95.49 20.26 108 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.4-29.17-156.4-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.8 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19 .07-21.6 .36-30.5 1.66 .43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28 .94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76 .42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09 .02-.17 .04-.27 .05-.05 .01-.11 .04-.16 .05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"], + "get-pocket": [448, 512, [], "f265", "M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"], + "gg": [512, 512, [], "f260", "M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"], + "gg-circle": [512, 512, [], "f261", "M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"], + "git": [512, 512, [], "f1d3", "M216.3 158.4H137C97 147.9 6.51 150.6 6.51 233.2c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.6 0 393.4 0 411.6c0 32.11 28.05 50.82 101.6 50.82 70.75 0 111.8-26.42 111.8-73.18 0-58.66-45.16-56.5-151.6-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.9 32.1-104.9 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.6c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.5v-32.1c26.75-3.66 27.24-2 27.24-11V203.6c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.7c0 6.51 .4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.3c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.5c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.8c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"], + "git-alt": [448, 512, [], "f841", "M439.5 236.1L244 40.45a28.87 28.87 0 0 0 -40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.2 199v121.8c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1 -48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.6 101 8.45 235.1a28.86 28.86 0 0 0 0 40.81l195.6 195.6a28.86 28.86 0 0 0 40.8 0l194.7-194.7a28.86 28.86 0 0 0 0-40.81z"], + "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], + "github-alt": [480, 512, [], "f113", "M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"], + "gitkraken": [592, 512, [], "f3a6", "M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8 .4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"], + "gitlab": [512, 512, [], "f296", "M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"], + "gitter": [384, 512, [], "f426", "M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"], + "glide": [448, 512, [], "f2a5", "M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8 .1 4.1-1.7 4.1-3.5z"], + "glide-g": [448, 512, [], "f2a6", "M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9 .1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"], + "gofore": [400, 512, [], "f3a7", "M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"], + "golang": [640, 512, [], "e40f", "M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z"], + "goodreads": [448, 512, [], "f3a8", "M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8 .3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9 .4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2 .5-1 1.1-1.9 1.7-2.9 .2 .1 .4 .1 .6 .2 .3 3.8 .2 30.7 .1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"], + "goodreads-g": [384, 512, [], "f3a9", "M42.6 403.3h2.8c12.7 0 25.5 0 38.2 .1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5 .1-5.8 .3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3 .6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3 .5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3 .1 332.2 .1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"], + "google": [488, 512, [], "f1a0", "M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"], + "google-drive": [512, 512, [], "f3aa", "M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"], + "google-pay": [640, 512, [], "e079", "M105.7 215v41.25h57.1a49.66 49.66 0 0 1 -21.14 32.6c-9.54 6.55-21.72 10.28-36 10.28-27.6 0-50.93-18.91-59.3-44.22a65.61 65.61 0 0 1 0-41l0 0c8.37-25.46 31.7-44.37 59.3-44.37a56.43 56.43 0 0 1 40.51 16.08L176.5 155a101.2 101.2 0 0 0 -70.75-27.84 105.6 105.6 0 0 0 -94.38 59.11 107.6 107.6 0 0 0 0 96.18v.15a105.4 105.4 0 0 0 94.38 59c28.47 0 52.55-9.53 70-25.91 20-18.61 31.41-46.15 31.41-78.91A133.8 133.8 0 0 0 205.4 215zm389.4-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46 0-39.34 8.34-50.5 24.86l20.85 13.26q11.45-17 31.26-17a34.05 34.05 0 0 1 22.75 8.79A28.14 28.14 0 0 1 487.8 248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44 0-29.65 3.88-39.49 11.77s-14.82 18.31-14.82 31.56a39.74 39.74 0 0 0 13.94 31.27c9.25 8.34 21 12.51 34.79 12.51 16.29 0 29.21-7.3 39-21.89h1v17.72h22.61V250C510.3 233.4 505.3 220.3 495.1 211zM475.9 300.3a37.32 37.32 0 0 1 -26.57 11.16A28.61 28.61 0 0 1 431 305.2a19.41 19.41 0 0 1 -7.77-15.63c0-7 3.22-12.81 9.54-17.42s14.53-7 24.07-7C470 265 480.3 268 487.6 273.9 487.6 284.1 483.7 292.9 475.9 300.3zm-93.65-142A55.71 55.71 0 0 0 341.7 142H279.1V328.7H302.7V253.1h39c16 0 29.5-5.36 40.51-15.93 .88-.89 1.76-1.79 2.65-2.68A54.45 54.45 0 0 0 382.3 158.3zm-16.58 62.23a30.65 30.65 0 0 1 -23.34 9.68H302.7V165h39.63a32 32 0 0 1 22.6 9.23A33.18 33.18 0 0 1 365.7 220.5zM614.3 201 577.8 292.7h-.45L539.9 201H514.2L566 320.5l-29.35 64.32H561L640 201z"], + "google-play": [512, 512, [], "f3ab", "M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"], + "google-plus": [512, 512, [], "f2b3", "M256 8C119.1 8 8 119.1 8 256S119.1 504 256 504 504 392.9 504 256 392.9 8 256 8zM185.3 380a124 124 0 0 1 0-248c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1S142.3 334 185.3 334c32.6 0 64.9-19.1 70.1-53.3H185.3V238.1H302.2a109.2 109.2 0 0 1 1.9 20.7c0 70.8-47.5 121.2-118.8 121.2zM415.5 273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5z"], + "google-plus-g": [640, 512, [], "f0d5", "M386.1 228.5c1.834 9.692 3.143 19.38 3.143 31.96C389.2 370.2 315.6 448 204.8 448c-106.1 0-192-85.92-192-192s85.92-192 192-192c51.86 0 95.08 18.86 128.6 50.29l-52.13 50.03c-14.15-13.62-39.03-29.6-76.49-29.6-65.48 0-118.9 54.22-118.9 121.3 0 67.06 53.44 121.3 118.9 121.3 75.96 0 104.5-54.74 108.1-82.77H204.8v-66.01h181.3zm185.4 6.437V179.2h-56v55.73h-55.73v56h55.73v55.73h56v-55.73H627.2v-56h-55.73z"], + "google-wallet": [448, 512, [], "f1ee", "M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"], + "gratipay": [496, 512, [], "f184", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"], + "grav": [512, 512, [], "f2d6", "M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8 .8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1 .3-6.4 0-13-9.4-24.9 3.9-12.5 .3-22.4 .3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8 .1-.2 .3-.4 .4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7 .3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"], + "gripfire": [384, 512, [], "f3ac", "M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4 .4 3.3 .6 6.7 .6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"], + "grunt": [384, 512, [], "f3ad", "M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1 .7-7.5 2.2-12.8 4-16.6 .4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8 .6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6 .6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1 .4-4.7 .8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5 .9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3 .2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7 .3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7 .5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2 .8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6 .7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4 .1-6.6 .5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4 .3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6 .9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7 .2 .2 .4 .3 .4 .3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1 .4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5 .6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9 .7 .6 1.5 1.2 2.2 1.8l.5 .4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6 .9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3 .3-11.7 .7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2 .9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6 .9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2 .9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"], + "guilded": [448, 512, [], "e07e", "M443.4 64H4.571c0 103.3 22.19 180.1 43.42 222.4C112 414.1 224 448 225.3 448a312.8 312.8 0 0 0 140.6-103.5c25.91-33.92 53.1-87.19 65.92-145.8H171.8c4.14 36.43 22.18 67.95 45.1 86.94h88.59c-17.01 28.21-48.19 54.4-80.46 69.48-31.23-13.26-69.09-46.54-96.55-98.36-26.73-53.83-27.09-105.9-27.09-105.9H437.6A625.9 625.9 0 0 0 443.4 64z"], + "gulp": [256, 512, [], "f3ae", "M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7 .9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3 .2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5 .9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9 .1-1.8 .3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6 .8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5 .6 .2 1.1 .4 1.6 .7 2.6 1.8 1.6 4.5 .3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3 .5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4 .5 3.2 1.5 1.7 2.2 1.3 4.5 .4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9 .9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2 .4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3 .5-.4 .9-.6 .6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3 .8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7 .2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3 .9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3 .2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8 .1 26.3 .4l12.6-48.7L228.1 .6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1 .1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2 .8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2 .1-.3l.2-.7c-1.8 .6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7 .1 13.9-1.6 13.9-3.7z"], + "hacker-news": [448, 512, [], "f1d4", "M0 32v448h448V32H0zm21.2 197.2H21c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"], + "hackerrank": [512, 512, [], "f5f7", "M477.5 128C463 103.1 285.1 0 256.2 0S49.25 102.8 34.84 128s-14.49 230.8 0 256 192.4 128 221.3 128S463 409.1 477.5 384s14.51-231 .01-256zM316.1 414.2c-4 0-40.91-35.77-38-38.69 .87-.87 6.26-1.48 17.55-1.83 0-26.23 .59-68.59 .94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88 .23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11 .92-33.44 3-84-.15-212.7v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87 .87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.4h80.26c0-4.55 .39-34.74-1.2-83.64-.1-3.39 .95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.6 336 341.3 336 373.7c8.87 .35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"], + "hashnode": [512, 512, [], "e499", "M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z"], + "hips": [640, 512, [], "f452", "M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7 .9-2.7 2.7v279.2c0 1.9 .9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5 .4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4 .2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3 .7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8 .6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7 .1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2 .1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"], + "hire-a-helper": [512, 512, [], "f3b0", "M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4 .1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"], + "hive": [512, 512, [], "e07f", "M260.4 254.9 131.5 33.1a2.208 2.208 0 0 0 -3.829 .009L.3 254.9A2.234 2.234 0 0 0 .3 257.1L129.1 478.9a2.208 2.208 0 0 0 3.83-.009L260.4 257.1A2.239 2.239 0 0 0 260.4 254.9zm39.08-25.71a2.19 2.19 0 0 0 1.9 1.111h66.51a2.226 2.226 0 0 0 1.9-3.341L259.1 33.11a2.187 2.187 0 0 0 -1.9-1.111H190.7a2.226 2.226 0 0 0 -1.9 3.341zM511.7 254.9 384.9 33.11A2.2 2.2 0 0 0 382.1 32h-66.6a2.226 2.226 0 0 0 -1.906 3.34L440.7 256 314.5 476.7a2.226 2.226 0 0 0 1.906 3.34h66.6a2.2 2.2 0 0 0 1.906-1.112L511.7 257.1A2.243 2.243 0 0 0 511.7 254.9zM366 284.9H299.5a2.187 2.187 0 0 0 -1.9 1.111l-108.8 190.6a2.226 2.226 0 0 0 1.9 3.341h66.51a2.187 2.187 0 0 0 1.9-1.111l108.8-190.6A2.226 2.226 0 0 0 366 284.9z"], + "hooli": [640, 512, [], "f427", "M144.5 352l38.3 .8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4 .8c36.5 12.5 69.9 14.2 94.7 7.2-19.9 .2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3 .1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"], + "hornbill": [512, 512, [], "f592", "M76.38 370.3a37.8 37.8 0 1 1 -32.07-32.42c-78.28-111.3 52-190.5 52-190.5-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49 .93 64.06 39.81 72.87a140.4 140.4 0 0 0 131.7 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.9-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0 -31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.4 140.4 0 0 1 207 132.7c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.6-54.06zm304.2 134.2a37.94 37.94 0 1 0 -53.84-28.7C403 126.1 344.9 99 251.3 100.3l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.4 140.4 0 0 1 130.5 88.76c39.1 9 105.1 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.4-81.16 49-194.6a37.45 37.45 0 0 0 19.31-3.5zM374.1 436.2c21.43-32.46 46.42-89.69 45.14-179.7l-19.52 .14c.08 2.06 .3 4.07 .3 6.15a140.3 140.3 0 0 1 -91.39 131.4c-8.85 38.95-31.44 106.7-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.3 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"], + "hotjar": [448, 512, [], "f3b1", "M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"], + "houzz": [448, 512, [], "f27c", "M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"], + "html5": [384, 512, [], "f13b", "M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"], + "hubspot": [512, 512, [], "f3b2", "M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"], + "ideal": [576, 512, [], "e013", "M125.6 165.5a49.07 49.07 0 1 0 49.06 49.06A49.08 49.08 0 0 0 125.6 165.5zM86.15 425.8h78.94V285.3H86.15zm151.5-211.6c0-20-10-22.53-18.74-22.53H204.8V237.5h14.05C228.6 237.5 237.6 234.7 237.6 214.2zm201.7 46V168.9h22.75V237.5h33.69C486.5 113.1 388.6 86.19 299.7 86.19H204.8V169h14c25.6 0 41.5 17.35 41.5 45.26 0 28.81-15.52 46-41.5 46h-14V425.9h94.83c144.6 0 194.9-67.16 196.7-165.6zm-109.8 0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51zm74.66 0-5.16-17.67H369.3l-5.18 17.67H340.5L368 168.9h32.35l27.53 91.34zM299.6 32H32V480H299.6c161.9 0 251-79.73 251-224.5C550.6 172 518 32 299.6 32zm0 426.9H53.07V53.07H299.6c142.1 0 229.9 64.61 229.9 202.4C529.5 389.6 448.5 458.9 299.6 458.9zm83.86-264.9L376 219.9H392.4l-7.52-25.81z"], + "imdb": [448, 512, [], "f2d8", "M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z"], + "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], + "instalod": [512, 512, [], "e081", "M153.4 480H387.1L502.6 275.8 204.2 333.2zM504.7 240.1 387.1 32H155.7L360.2 267.9zM124.4 48.81 7.274 256 123.2 461.2 225.6 165.6z"], + "intercom": [448, 512, [], "f7af", "M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"], + "internet-explorer": [512, 512, [], "f26b", "M483 159.7c10.85-24.58 21.42-60.44 21.42-87.87 0-72.72-79.64-98.37-209.7-38.58-107.6-7.181-211.2 73.67-237.1 186.5 30.85-34.86 78.27-82.3 121.1-101.2C125.4 166.9 79.13 228 43.99 291.7 23.25 329.7 0 390.9 0 436.7c0 98.57 92.85 86.5 180.3 42.01 31.42 15.43 66.56 15.57 101.7 15.57 97.12 0 184.2-54.29 216.8-146H377.9c-52.51 88.59-196.8 52.1-196.8-47.44H509.9c6.407-43.58-1.655-95.71-26.85-141.2zM64.56 346.9c17.71 51.15 53.7 95.87 100.3 123.3-88.74 48.94-173.3 29.1-100.3-123.3zm115.1-108.9c2-55.15 50.28-94.87 103.1-94.87 53.42 0 101.1 39.72 103.1 94.87H180.5zm184.5-187.6c21.42-10.29 48.56-22 72.56-22 31.42 0 54.27 21.72 54.27 53.72 0 20-7.427 49.01-14.57 67.87-26.28-42.29-65.99-81.58-112.3-99.59z"], + "invision": [448, 512, [], "f7b0", "M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9 .7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3 .1-14.3 .9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"], + "ioxhost": [640, 512, [], "f208", "M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"], + "itch-io": [512, 512, [], "f83a", "M71.92 34.77C50.2 47.67 7.4 96.84 7 109.7v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.6 32.4 325.8 32 256 32S91.14 33.1 71.92 34.77zm132.3 134.4c-22 38.4-77.9 38.71-99.85 .25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.1 17.73 269.1 80 18.67 302.1 18.12 379.8 0 31.65-32.27 21.32-232 17.75-269.1-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1 -51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.9 436.9 0 0 1 88.18 0C318.2 223 332.9 223 349.3 223c52.33 0 65.22 77.53 83.87 144.4 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.9 8.79-155.6 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.4 83.88-144.4zM256 270.8s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34 .16 23.33 .16 11.65 .54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"], + "itunes": [448, 512, [], "f3b4", "M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1 .5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7 .9-127 2.6-133.7 .4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6 .4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"], + "itunes-note": [384, 512, [], "f3b5", "M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2 .8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6 .2 344.5 1.1 326-1.8 338.5z"], + "java": [384, 512, [], "f4e4", "M277.7 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.8 0 242.8 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1 -2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0 -8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6 .7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.8 509.4 401 461.3 348 437.4zM124.4 396c-78.7 22 47.9 67.4 148.1 24.5a185.9 185.9 0 0 1 -28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.6 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1 -21.1-12.8z"], + "jedi-order": [448, 512, [], "f50e", "M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"], + "jenkins": [512, 512, [], "f3b6", "M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8 .2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2 .7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8 .7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4 .7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4 .7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7 .3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2 .5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8 .7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1 .6-16.5zm-17.2-20c-16.8 .8-26-1.2-38.3-10.8 .2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3 .8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5 .7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2 .5-.4 .8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5 .4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9 .8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8 .6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1 .8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7 .5 0 1 0 1.4 .1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9 .9-36.6-17.1 11.9 .7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"], + "jira": [496, 512, [], "f7b1", "M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"], + "joget": [496, 512, [], "f3b7", "M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"], + "joomla": [448, 512, [], "f1aa", "M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1 .6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6 .6 120.7 .6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"], + "js": [448, 512, [], "f3b8", "M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"], + "jsfiddle": [576, 512, [], "f1cc", "M510.6 237.5c-4.727-2.621-5.664-5.748-6.381-10.78-2.352-16.49-3.539-33.62-9.097-49.1-35.9-99.96-153.1-143.4-246.8-91.65-27.37 15.25-48.97 36.37-65.49 63.9-3.184-1.508-5.458-2.71-7.824-3.686-30.1-12.42-59.05-10.12-85.33 9.167-25.53 18.74-36.42 44.55-32.68 76.41 .355 3.025-1.967 7.621-4.514 9.545-39.71 29.99-56.03 78.07-41.9 124.6 13.83 45.57 57.51 79.8 105.6 81.43 30.29 1.031 60.64 .546 90.96 .539 84.04-.021 168.1 .531 252.1-.48 52.66-.634 96.11-36.87 108.2-87.29 11.54-48.07-11.14-97.3-56.83-122.6zm21.11 156.9c-18.23 22.43-42.34 35.25-71.28 35.65-56.87 .781-113.8 .23-170.7 .23 0 .7-163 .159-163.7 .154-43.86-.332-76.74-19.77-95.18-59.99-18.9-41.24-4.004-90.85 34.19-116.1 9.182-6.073 12.51-11.57 10.1-23.14-5.49-26.36 4.453-47.96 26.42-62.98 22.99-15.72 47.42-16.15 72.03-3.083 10.27 5.45 14.61 11.56 22.2-2.527 14.22-26.4 34.56-46.73 60.67-61.29 97.46-54.37 228.4 7.568 230.2 132.7 .122 8.15 2.412 12.43 9.848 15.89 57.56 26.83 74.46 96.12 35.14 144.5zm-87.79-80.5c-5.848 31.16-34.62 55.1-66.67 55.1-16.95-.001-32.06-6.545-44.08-17.7-27.7-25.71-71.14-74.98-95.94-93.39-20.06-14.89-41.99-12.33-60.27 3.782-49.1 44.07 15.86 121.8 67.06 77.19 4.548-3.96 7.84-9.543 12.74-12.84 8.184-5.509 20.77-.884 13.17 10.62-17.36 26.28-49.33 38.2-78.86 29.3-28.9-8.704-48.84-35.97-48.63-70.18 1.225-22.49 12.36-43.06 35.41-55.97 22.58-12.64 46.37-13.15 66.99 2.474C295.7 280.7 320.5 323.1 352.2 343.5c24.56 15.1 54.25 7.363 68.82-17.51 28.83-49.21-34.59-105-78.87-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.98 6.811-17.33-4.113-12.81-10.35 20.7-28.55 50.46-40.44 83.27-28.21 31.43 11.71 49.11 44.37 42.76 78.19z"], + "kaggle": [320, 512, [], "f5fa", "M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"], + "keybase": [448, 512, [], "f4f5", "M286.2 419a18 18 0 1 0 18 18 18 18 0 0 0 -18-18zm111.9-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0 -47.88-104.1c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.7 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0 -8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93 .54a214 214 0 0 0 -46.29 35.54C14 304.7 14 374 14 429.8v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.3 178.3 0 0 1 -15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.4-61.76 236.3-38.59 34.2 10.05 67.45 .69 84.74-23.84 .72-1 1.2-2.16 1.85-3.22a156.1 156.1 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.3c0-38.58-13-77.46-35.91-110.9zM142.4 128.6l-15.7-.93-1.39 21.79 13.13 .78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1 -11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.4 144.4 0 0 0 -7 19.17zm148.4 172.2a10.51 10.51 0 0 1 -14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1 -11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1 -10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.2s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1 -1.74 13.44zM187.4 419a18 18 0 1 0 18 18 18 18 0 0 0 -18-18z"], + "keycdn": [512, 512, [], "f3ba", "M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5 .7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4 .3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3 .3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2 .7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3 .1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9 .4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1 .8-57.3 24.8-58.2 58.3zM256 160"], + "kickstarter": [448, 512, [], "f3bb", "M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"], + "kickstarter-k": [384, 512, [], "f3bc", "M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"], + "korvue": [446, 512, [], "f42f", "M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"], + "laravel": [512, 512, [], "f3bd", "M504.4 115.8a5.72 5.72 0 0 0 -.28-.68 8.52 8.52 0 0 0 -.53-1.25 6 6 0 0 0 -.54-.71 9.36 9.36 0 0 0 -.72-.94c-.23-.22-.52-.4-.77-.6a8.84 8.84 0 0 0 -.9-.68L404.4 55.55a8 8 0 0 0 -8 0L300.1 111h0a8.07 8.07 0 0 0 -.88 .69 7.68 7.68 0 0 0 -.78 .6 8.23 8.23 0 0 0 -.72 .93c-.17 .24-.39 .45-.54 .71a9.7 9.7 0 0 0 -.52 1.25c-.08 .23-.21 .44-.28 .68a8.08 8.08 0 0 0 -.28 2.08V223.2l-80.22 46.19V63.44a7.8 7.8 0 0 0 -.28-2.09c-.06-.24-.2-.45-.28-.68a8.35 8.35 0 0 0 -.52-1.24c-.14-.26-.37-.47-.54-.72a9.36 9.36 0 0 0 -.72-.94 9.46 9.46 0 0 0 -.78-.6 9.8 9.8 0 0 0 -.88-.68h0L115.6 1.07a8 8 0 0 0 -8 0L11.34 56.49h0a6.52 6.52 0 0 0 -.88 .69 7.81 7.81 0 0 0 -.79 .6 8.15 8.15 0 0 0 -.71 .93c-.18 .25-.4 .46-.55 .72a7.88 7.88 0 0 0 -.51 1.24 6.46 6.46 0 0 0 -.29 .67 8.18 8.18 0 0 0 -.28 2.1v329.7a8 8 0 0 0 4 6.95l192.5 110.8a8.83 8.83 0 0 0 1.33 .54c.21 .08 .41 .2 .63 .26a7.92 7.92 0 0 0 4.1 0c.2-.05 .37-.16 .55-.22a8.6 8.6 0 0 0 1.4-.58L404.4 400.1a8 8 0 0 0 4-6.95V287.9l92.24-53.11a8 8 0 0 0 4-7V117.9A8.63 8.63 0 0 0 504.4 115.8zM111.6 17.28h0l80.19 46.15-80.2 46.18L31.41 63.44zm88.25 60V278.6l-46.53 26.79-33.69 19.4V123.5l46.53-26.79zm0 412.8L23.37 388.5V77.32L57.06 96.7l46.52 26.8V338.7a6.94 6.94 0 0 0 .12 .9 8 8 0 0 0 .16 1.18h0a5.92 5.92 0 0 0 .38 .9 6.38 6.38 0 0 0 .42 1v0a8.54 8.54 0 0 0 .6 .78 7.62 7.62 0 0 0 .66 .84l0 0c.23 .22 .52 .38 .77 .58a8.93 8.93 0 0 0 .86 .66l0 0 0 0 92.19 52.18zm8-106.2-80.06-45.32 84.09-48.41 92.26-53.11 80.13 46.13-58.8 33.56zm184.5 4.57L215.9 490.1V397.8L346.6 323.2l45.77-26.15zm0-119.1L358.7 250l-46.53-26.79V131.8l33.69 19.4L392.4 178zm8-105.3-80.2-46.17 80.2-46.16 80.18 46.15zm8 105.3V178L455 151.2l33.68-19.4v91.39h0z"], + "lastfm": [512, 512, [], "f202", "M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"], + "leanpub": [576, 512, [], "f212", "M386.5 111.5l15.1 248.1-10.98-.275c-36.23-.824-71.64 8.783-102.7 27.1-31.02-19.21-66.42-27.1-102.7-27.1-45.56 0-82.07 10.7-123.5 27.72L93.12 129.6c28.55-11.8 61.48-18.11 92.23-18.11 41.17 0 73.84 13.18 102.7 42.54 27.72-28.27 59.01-41.72 98.54-42.54zM569.1 448c-25.53 0-47.49-5.215-70.54-15.65-34.31-15.65-69.99-24.98-107.9-24.98-38.98 0-74.93 12.9-102.7 40.62-27.72-27.72-63.68-40.62-102.7-40.62-37.88 0-73.56 9.333-107.9 24.98C55.24 442.2 32.73 448 8.303 448H6.93L49.47 98.86C88.73 76.63 136.5 64 181.8 64 218.8 64 256.1 71.68 288 93.1 319 71.68 357.2 64 394.2 64c45.29 0 93.05 12.63 132.3 34.86L569.1 448zm-43.37-44.74l-34.04-280.2c-30.74-13.1-67.25-21.41-101-21.41-38.43 0-74.39 12.08-102.7 38.7-28.27-26.63-64.23-38.7-102.7-38.7-33.76 0-70.27 7.411-101 21.41L50.3 403.3c47.21-19.49 82.89-33.49 135-33.49 37.6 0 70.82 9.606 102.7 29.64 31.84-20.04 65.05-29.64 102.7-29.64 52.15 0 87.83 13.1 135 33.49z"], + "less": [640, 512, [], "f41d", "M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5 .5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1 .8-4.6 .8-6.2 .8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4 .6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"], + "line": [448, 512, [], "f3c0", "M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1 .5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9 .3 1.6 .9 2.2 .6 .5 1.3 .9 2.2 .9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8 .1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"], + "linkedin": [448, 512, [], "f08c", "M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"], + "linkedin-in": [448, 512, [], "f0e1", "M100.3 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.6 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.3 61.9 111.3 142.3V448z"], + "linode": [448, 512, [], "f2b8", "M366 186.9l-59.5 36.87-.838 36.87-29.33-19.27-39.38 24.3c2.238 55.21 2.483 59.27 2.51 59.5l-97.2 65.36L127.2 285.7l108.1-62.01L195.1 197.8l-75.42 38.55L98.72 93.01 227.8 43.57 136.4 0 10.74 39.38 38.39 174.3l41.9 32.68L48.44 222.1 69.39 323.5 98.72 351.1 77.77 363.7l16.76 78.77L160.7 512c-10.8-74.84-11.66-78.64-11.73-78.77l77.93-55.3c16.76-12.57 15.08-10.89 15.08-10.89l.838 24.3 33.52 28.49-.838-77.09 46.93-33.52 26.82-18.43-2.514 36.03 25.14 17.6 6.7-74.58 58.66-43.58z"], + "linux": [448, 512, [], "f17c", "M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5 .2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4 .2-.8 .7-.6 1.1 .3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6 .2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5 .1-1.3 .6-3.4 1.5-3.2 2.9 .1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7 .1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9 .6 7.9 1.2 11.8 1.2 8.1 2.5 15.7 .8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1 .6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3 .4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4 .7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6 .6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7 .8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4 .6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1 .8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7 .4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6 .8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1 .3-.2 .7-.3 1-.5 .8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"], + "lyft": [512, 512, [], "f3c3", "M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"], + "magento": [448, 512, [], "f3c4", "M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6 .1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"], + "mailchimp": [448, 512, [], "f59e", "M330.6 243.5a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43 .45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0 -30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06 .85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1 .9 .34 1.17 .81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92 .34 4.31 .52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81 .28-15.96zm-218.8 78.9c-1.32 .31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27 .57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0 -.2-2.33c.03 .89 .68-1.3-3.35-.39zm299.7-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.4-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.8 25.78 273.9l14.76 12.51a72.49 72.49 0 0 0 -4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.1 267.9 133.3 322.3 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.6C69.14 252.5 55.78 261.1 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.2C112.4 90.56 186.2 39.68 220.4 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.2 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.8 102.8 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.9 106.9 0 0 1 362.5 421a132.4 132.4 0 0 1 -20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1 -3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0 -1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48 .5 15.89 1.59 22.88 1.88 11.69 .5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49 .29 6.72 1.1 23 1.38 27.63 .63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.5 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.4-21.35 .69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.5 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73 .73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75 .75 0 0 0 1.16 .79c11.49-7.83 31.48-16.22 49-17.3a.77 .77 0 0 1 .52 1.38 41.86 41.86 0 0 0 -7.71 7.74 .75 .75 0 0 0 .59 1.19c12.31 .09 29.66 4.4 41 10.74 .76 .43 .22 1.91-.64 1.72-69.55-15.94-123.1 18.53-134.5 26.83a.76 .76 0 0 1 -1-1.12z"], + "mandalorian": [448, 512, [], "f50f", "M232.3 511.9c-1-3.26-1.69-15.83-1.39-24.58 .55-15.89 1-24.72 1.4-28.76 .64-6.2 2.87-20.72 3.28-21.38 .6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0 -.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.5 109.5 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39 .37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34 .21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1 -1.55 4.26c-1 1-1.14 .91-2.05-.53a14.87 14.87 0 0 1 -1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36 .66 .51 1.35 .34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64 .73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95 .7-3 2.26-18.29 3.33-32.62 .36-4.78 .81-10.5 1-12.71 .83-9.37 1.66-20.35 2.61-34.78 .56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81 .75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0 -2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79 .1 18.55a101.2 101.2 0 0 0 -1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18 .8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.9 132.9 0 0 0 -2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.2 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0 -2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0 -1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0 -2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22 .29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15 .88 .22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51 .68 3 .57 7.05-1.67l4.35-2.4L268.3 5c10.44-.4 10.81-.47 15.26-2.68L288.2 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1 -1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1 -4.09 3.71 13.62 13.62 0 0 0 -4.38 4.78 5.89 5.89 0 0 1 -2.49 2.91 6.88 6.88 0 0 0 -2.45 1.71 67.62 67.62 0 0 1 -7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0 -2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56 .71 8.84a33.45 33.45 0 0 0 -1.06 8.91c0 4.88 .22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09 .11 8.42c.06 4.63 .47 9.53 .92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12 .83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69 .52 12.69-11 22.84l-4 3.49 .07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27 .63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36 .47 2.26 .78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43 .17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1 -1.73-10.79 100.5 100.5 0 0 0 -1.73-10.79 37.53 37.53 0 0 1 -1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62 .62 0 0 1 -1-.14zm-87.18-266.6c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.3 86.25 255 78.55 268c-31 52-6 101.6 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.7zm210.8 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.6 92.46 149.4 4.3 70.64-78.7 91.18-105.3 61.71z"], + "markdown": [640, 512, [], "f60f", "M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"], + "mastodon": [448, 512, [], "f4f6", "M433 179.1c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.6-28.4-290.5 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.6 289.1 40.51 10.7 75.32 13 103.3 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1 -.9-13.9c85.63 20.9 158.6 9.1 178.8 6.7 56.12-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.8-6.1 23.71 27.3 18.4 53 18.4 175z"], + "maxcdn": [512, 512, [], "f136", "M461.1 442.7h-97.4L415.6 200c2.3-10.2 .9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"], + "mdb": [576, 512, [], "f8ca", "M17.37 160.4L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.6H146.7L106 277.7 63.67 160.4zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.5V204.8s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.3-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.6H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.5l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"], + "medapps": [320, 512, [], "f3c6", "M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7 .2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"], + "medium": [640, 512, [62407, "medium-m"], "f23a", "M180.5 74.26C80.81 74.26 0 155.6 0 256S80.82 437.7 180.5 437.7 361 356.4 361 256 280.2 74.26 180.5 74.26zm288.3 10.65c-49.85 0-90.25 76.62-90.25 171.1s40.41 171.1 90.25 171.1 90.25-76.62 90.25-171.1H559C559 161.5 518.6 84.91 468.8 84.91zm139.5 17.82c-17.53 0-31.74 68.63-31.74 153.3s14.2 153.3 31.74 153.3S640 340.6 640 256C640 171.4 625.8 102.7 608.3 102.7z"], + "medrt": [544, 512, [], "f3c8", "M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"], + "meetup": [512, 512, [], "f2e0", "M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1 .9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9 .6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3 .9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"], + "megaport": [496, 512, [], "f5a3", "M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"], + "mendeley": [640, 512, [], "f7b3", "M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4 .7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1 .1-.2 .2-.3 .4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"], + "meta": [640, 512, [], "e49b", "M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z"], + "microblog": [448, 512, [], "e01a", "M399.4 362.2c29.49-34.69 47.1-78.34 47.1-125.8C446.5 123.5 346.9 32 224 32S1.54 123.5 1.54 236.4 101.1 440.9 224 440.9a239.3 239.3 0 0 0 79.44-13.44 7.18 7.18 0 0 1 8.12 2.56c18.58 25.09 47.61 42.74 79.89 49.92a4.42 4.42 0 0 0 5.22-3.43 4.37 4.37 0 0 0 -.85-3.62 87 87 0 0 1 3.69-110.7zM329.5 212.4l-57.3 43.49L293 324.8a6.5 6.5 0 0 1 -9.94 7.22L224 290.9 164.9 332a6.51 6.51 0 0 1 -9.95-7.22l20.79-68.86-57.3-43.49a6.5 6.5 0 0 1 3.8-11.68l71.88-1.51 23.66-67.92a6.5 6.5 0 0 1 12.28 0l23.66 67.92 71.88 1.51a6.5 6.5 0 0 1 3.88 11.68z"], + "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], + "mix": [448, 512, [], "f3cb", "M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"], + "mixcloud": [640, 512, [], "f289", "M212.1 346.6H179.8V195.1L185.1 173.5H175.3L137.1 346.6H76.11L37.73 173.5H27.28L33.19 195.1V346.6H0V165H65.65L102.2 338.1H110.7L147.3 165H212.1L212.1 346.6zM544.5 283.6L458.4 345.7V307.5L531.3 255.8L458.4 204V165.9L544.5 228.2H553.7L640 165.9V204L566.9 255.8L640 307.5V345.7L553.7 283.6H544.5zM430.2 272.3H248.1V239.3H430.2V272.3z"], + "mixer": [512, 512, [], "e056", "M114.6 76.07a45.71 45.71 0 0 0 -67.51-6.41c-17.58 16.18-19 43.52-4.75 62.77l91.78 123L41.76 379.6c-14.23 19.25-13.11 46.59 4.74 62.77A45.71 45.71 0 0 0 114 435.9L242.9 262.7a12.14 12.14 0 0 0 0-14.23zM470.2 379.6 377.9 255.4l91.78-123c14.22-19.25 12.83-46.59-4.75-62.77a45.71 45.71 0 0 0 -67.51 6.41l-128 172.1a12.14 12.14 0 0 0 0 14.23L398 435.9a45.71 45.71 0 0 0 67.51 6.41C483.4 426.2 484.5 398.8 470.2 379.6z"], + "mizuni": [496, 512, [], "f3cc", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"], + "modx": [448, 512, [], "f285", "M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"], + "monero": [496, 512, [], "f3d0", "M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"], + "napster": [496, 512, [], "f3d2", "M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9 .1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1 .1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7 .2-158.2V93.2c-17.3 .5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5 .1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"], + "neos": [512, 512, [], "f612", "M415.4 512h-95.11L212.1 357.5v91.1L125.7 512H28V29.82L68.47 0h108.1l123.7 176.1V63.45L386.7 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.6h84.79l52.35-38.17h-78.27L69 13zm82.54 466.6l80-58.78v-101l-79.76-114.4v220.9L49 501.9h72.34zM80.63 10.77l310.6 442.6h82.37V10.77h-79.75v317.6L170.9 10.77zM311 191.6l72 102.8V15.93l-72 53v122.7z"], + "nfc-directional": [512, 512, [], "e530", "M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z"], + "nfc-symbol": [576, 512, [], "e531", "M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z"], + "nimblr": [384, 512, [], "f5a8", "M246.6 299.3c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.3c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.8 159C157 159 89.45 178.8 59.25 227L14 0v335.5C14 433.1 93.61 512 191.8 512s177.8-78.95 177.8-176.5S290.1 159 191.8 159zm0 308.1c-73.27 0-132.5-58.9-132.5-131.6s59.24-131.6 132.5-131.6 132.5 58.86 132.5 131.5S265 467.1 191.8 467.1z"], + "node": [640, 512, [], "f419", "M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4 .1l14.8 8.8c.5 .3 1.3 .3 1.8 0L375 408c.5-.3 .9-.9 .9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6 .3-.9 1-.9 1.6v66.7c0 .6 .4 1.2 .9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9 .7-1.7 1.7-1.7h7.3c.9 0 1.7 .7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6 .2 .8 .8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5 .3-.4 .5-.8 .4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7 .7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7 .1 1.8 1.2 2.1 2.8 .1 1 .3 2.7 .6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3 .4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3 .7 2.5 1.8 3.2 1.1 .7 2.5 .7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6 .3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1 .7 2.6 .7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6 .3-.9 .9-.9 1.6v24.3c0 .7 .4 1.3 .9 1.6l21 12.1c.6 .3 1.3 .3 1.8 0l21-12.1c.6-.3 .9-.9 .9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3 .7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1 .7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4 .3-.7 .7-.7 1.2v13.6c0 .5 .3 1 .7 1.2l11.8 6.8c.4 .3 1 .3 1.4 0L584 235c.4-.3 .7-.7 .7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7 .1-.5 .2-1.1 .2-1.7zm-74.3-124.9l-.8 .5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"], + "node-js": [448, 512, [], "f3d3", "M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6 .4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2 .7 376.3 .7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8 .5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"], + "npm": [576, 512, [], "f3d4", "M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"], + "ns8": [640, 512, [], "f3d5", "M104.3 269.2h26.07V242.1H104.3zm52.47-26.18-.055-26.18v-.941a39.33 39.33 0 0 0 -78.64 .941v.166h26.4v-.166a12.98 12.98 0 0 1 25.96 0v26.18zm52.36 25.85a91.1 91.1 0 0 1 -91.1 91.1h-.609a91.1 91.1 0 0 1 -91.1-91.1H0v.166A117.3 117.3 0 0 0 117.4 386.3h.775A117.3 117.3 0 0 0 235.5 268.8V242.8H209.1zm-157.2 0a65.36 65.36 0 0 0 130.7 0H156.3a39.02 39.02 0 0 1 -78.04 0V242.9H51.97v-26.62A65.42 65.42 0 0 1 182.8 217.5v25.29h26.34V217.5a91.76 91.76 0 0 0 -183.5 0v25.4H51.91zm418.4-71.17c13.67 0 24.57 6.642 30.05 18.26l.719 1.549 23.25-11.51-.609-1.439c-8.025-19.26-28.5-31.27-53.41-31.27-23.13 0-43.61 11.4-50.97 28.45-.123 26.88-.158 23.9 0 24.85 4.7 11.01 14.56 19.37 28.67 24.24a102 102 0 0 0 19.81 3.984c5.479 .72 10.63 1.384 15.83 3.1 6.364 2.1 10.46 5.257 12.84 9.851v9.851c-3.708 7.527-13.78 12.34-25.79 12.34-14.33 0-25.96-6.918-31.93-19.04l-.72-1.494L415 280.9l.553 1.439c7.915 19.43 29.61 32.04 55.29 32.04 23.63 0 44.61-11.4 52.3-28.45l.166-25.9-.166-.664c-4.87-11.01-15.22-19.65-28.94-24.24-7.693-2.712-14.34-3.6-20.7-4.427a83.78 83.78 0 0 1 -14.83-2.878c-6.31-1.937-10.4-5.092-12.62-9.63v-8.412C449.5 202.4 458.1 197.7 470.3 197.7zM287.6 311.3h26.07v-68.4H287.6zm352.3-53.3c-2.933-6.254-8.3-12.01-15.44-16.71A37.99 37.99 0 0 0 637.4 226l.166-25.35-.166-.664C630 184 610.7 173.3 589.3 173.3S548.5 184 541.1 199.1l-.166 25.35 .166 .664a39.64 39.64 0 0 0 13.01 15.33c-7.2 4.7-12.51 10.46-15.44 16.71l-.166 28.89 .166 .72c7.582 15.99 27.89 26.73 50.58 26.73s43.06-10.74 50.58-26.73l.166-28.89zm-73.22-50.81c3.6-6.31 12.56-10.52 22.58-10.52s19.04 4.206 22.64 10.52v13.73c-3.542 6.2-12.56 10.35-22.64 10.35s-19.09-4.15-22.58-10.35zm47.32 72.17c-3.764 6.641-13.34 10.9-24.68 10.9-11.13 0-20.98-4.372-24.68-10.9V263.3c3.708-6.309 13.5-10.52 24.68-10.52 11.35 0 20.92 4.15 24.68 10.52zM376.4 265.1l-59.83-89.71h-29v40.62h26.51v.387l62.54 94.08H402.3V176.2H376.4z"], + "nutritionix": [400, 512, [], "f3d6", "M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"], + "octopus-deploy": [512, 512, [], "e082", "M455.6 349.2c-45.89-39.09-36.67-77.88-16.09-128.1C475.2 134 415.1 34.14 329.9 8.3 237-19.6 134.3 24.34 99.68 117.1a180.9 180.9 0 0 0 -10.99 73.54c1.733 29.54 14.72 52.97 24.09 80.3 17.2 50.16-28.1 92.74-66.66 117.6-46.81 30.2-36.32 39.86-8.428 41.86 23.38 1.68 44.48-4.548 65.26-15.05 9.2-4.647 40.69-18.93 45.13-28.59C135.9 413.4 111.1 459.5 126.6 488.9c19.1 36.23 67.11-31.77 76.71-45.81 8.591-12.57 42.96-81.28 63.63-46.93 18.86 31.36 8.6 76.39 35.74 104.6 32.85 34.2 51.15-18.31 51.41-44.22 .163-16.41-6.1-95.85 29.9-59.94C405.4 418 436.9 467.8 472.6 463.6c38.74-4.516-22.12-67.97-28.26-78.69 5.393 4.279 53.67 34.13 53.82 9.52C498.2 375.7 468 359.8 455.6 349.2z"], + "odnoklassniki": [320, 512, [], "f263", "M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"], + "old-republic": [496, 512, [], "f510", "M235.8 10.23c7.5-.31 15-.28 22.5-.09 3.61 .14 7.2 .4 10.79 .73 4.92 .27 9.79 1.03 14.67 1.62 2.93 .43 5.83 .98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83 .57 3.14 1.04 6.3 1.4 9.47 .55 3.83 .94 7.69 1.18 11.56 .83 8.34 .84 16.73 .77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.5 246.5 0 0 1 -56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66 .91-9.34 1.73-14.03 2.48-5.25 .66-10.5 1.44-15.79 1.74-6.69 .66-13.41 .84-20.12 .81-6.82 .03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49 .14-3.51 .34-7.01 .7-10.51 .31-3.17 .46-6.37 .92-9.52 .41-2.81 .65-5.65 1.16-8.44 .7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23 .1-18.43 .99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.7-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8 .11 7.14 .38 14.28 1.22 21.37 .62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91 .29 5.81 .61 8.72 .9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.3 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75 .13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1 .9 3.02 .66 6.2 .69 9.31 .02 4.1-.04 8.2 .03 12.3 .14 3.54-.02 7.09 .11 10.63 .08 2.38 .02 4.76 .05 7.14 .16 5.77 .06 11.53 .15 17.3 .11 2.91 .02 5.82 .13 8.74 .03 1.63 .13 3.28-.03 4.91-.91 .12-1.82 .18-2.73 .16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73 .84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.4-20.12c2.74 .74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57 .41 4.54 .44 9.09 .45 13.64 .07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51 .69-7.08 1.08-10.66 1.21-1.85 .06-3.72 .16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73 .14-7.45 .1-11.17 .19-7.02 .02-14.05 .21-21.07 .03-2.38-.03-4.76 .03-7.14 .17-5.07-.04-10.14 .14-15.21 .1-2.99-.24-6.04 .51-8.96 .66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46 .86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61 .93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07 .32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.3-.01 221 0 1.35-.08 2.7 .04 4.04 .13 1.48 .82 2.83 1.47 4.15 .86 1.66 1.78 3.34 3.18 4.62 .85 .77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57 .96-1.51 1.68-3.16 2.28-4.85 .76-2.13 .44-4.42 .54-6.63 .14-4.03-.02-8.06 .14-12.09 .03-5.89 .03-11.77 .06-17.66 .14-3.62 .03-7.24 .11-10.86 .15-4.03-.02-8.06 .14-12.09 .03-5.99 .03-11.98 .07-17.97 .14-3.62 .02-7.24 .11-10.86 .14-3.93-.02-7.86 .14-11.78 .03-5.99 .03-11.98 .06-17.97 .16-3.94-.01-7.88 .19-11.82 .29 1.44 .13 2.92 .22 4.38 .19 3.61 .42 7.23 .76 10.84 .32 3.44 .44 6.89 .86 10.32 .37 3.1 .51 6.22 .95 9.31 .57 4.09 .87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21 .27 .25 .55 .51 .88 .71 .6 .25 1.31-.07 1.7-.57 .71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31 .7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11 .75 19.56 1.85 3.69 .58 7.4 1.17 11.13 1.41 3.74 .1 7.48 .05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46 .37 2.96 .46 4.45 .6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66 .24-9.32 .36-13.98 .36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11 .73 6.32 .47 9.47 .81 2.77 .28 5.56 .2 8.34 .3 5.05 .06 10.11 .04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83 .61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52 .67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13 .56-3.98 .83-7.99 1.31-11.97 .87-10.64 1.9-21.27 2.24-31.94 .08-1.86 .24-3.71 .25-5.57 .01-4.35 .25-8.69 .22-13.03-.01-2.38-.01-4.76 0-7.13 .05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64 .07-2.99 .7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06 .71-.12 1.07-.19 .19 1.79 .09 3.58 .1 5.37v38.13c-.01 1.74 .13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32 .09-4.98-.03-.03-.39-.26-.91 .16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54 .04-.56 .02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2 .06 15.3-.12 3.36-.13 6.73 .08 10.09-.07 .12-.39 .26-.77 .37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36 .05 .72 .12 1.08 .2 .98 3.85 1.73 7.76 2.71 11.61 .36 1.42 .56 2.88 1.03 4.27 2.53 .18 5.07-.01 7.61 .05 5.16 .12 10.33 .12 15.49 .07 .76-.01 1.52 .03 2.28 .08-.04 .36-.07 .72-.1 1.08-1.82 .83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57 .17-1.12 .42-1.67 .64-.15 .55-.18 1.12-.12 1.69 .87 .48 1.82 .81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6 .38 .13 .78 .27 1.13 .49 .4 .27 .23 .79 .15 1.18-1.66 .13-3.31 .03-4.97 .04-5.17 .01-10.33-.01-15.5 .01-1.61 .03-3.22-.02-4.82 .21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36 .01-.71 .02-1.06 .06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58 .11-5.37zM65.05 168.3c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83 .96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67 .99 2.9 1.59 5.91 2.17 8.92 .15 .75 .22 1.52 .16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11 .78-8.29 .99-12.46 1.08-10.25 .24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43 .11-6.18 .25-12.37 1.07-18.5 .4-2.86 .67-5.74 1.15-8.6 .98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.7-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05 .02 1.76 .07 3.52 .11 5.29 .13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51 .25-2.99 .53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05 .63-2.87 1.04-5.78 1.52-8.68 .87-6.09 1.59-12.22 1.68-18.38 .12-6.65 .14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"], + "opencart": [640, 512, [], "f23d", "M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"], + "openid": [448, 512, [], "f19b", "M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"], + "opera": [496, 512, [], "f26a", "M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1 .3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"], + "optin-monster": [576, 512, [], "f23c", "M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7 .3-6.5 .3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8 .9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8 .5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4 .5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3 .5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1 .2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3 .3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1 .5-8.1 .8-11.6 .8-1.9-21.9-6.8-44-14.3-64.6 3.7 .3 8.1 .3 11.8 .3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1 .8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3 .3 26.6 .3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6 .8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3 .3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2 .8 2.2 .8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8 .3 1.9 .5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3 .9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5 .9-8.4-20.2-23.5-29.1-25.1z"], + "orcid": [512, 512, [], "f8d2", "M294.8 188.2h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.8h-29.84v-207.5h29.84zm-14.92-231.1a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1 -19.57 19.57zM300 369h-81V161.3h80.6c76.73 0 110.4 54.83 110.4 103.8C410 318.4 368.4 369 300 369z"], + "osi": [512, 512, [], "f41a", "M8 266.4C10.3 130.6 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0 -64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6 .6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4 .8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3 .6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"], + "padlet": [640, 512, [], "e4a0", "M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z"], + "page4": [496, 512, [], "f3d7", "M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"], + "pagelines": [384, 512, [], "f18c", "M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4 .5 1.6 .5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"], + "palfed": [576, 512, [], "f3d8", "M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8 .7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4 .9 74.4 2.7 100v.2c.2 3.4 .6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4 .2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9 .2 2.5 .4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"], + "patreon": [512, 512, [], "f3d9", "M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"], + "paypal": [384, 512, [], "f1ed", "M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4 .7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9 .7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"], + "perbyte": [448, 512, [], "e083", "M305.3 284.6H246.6V383.3h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.33T305.3 284.6zM149.4 128.7H90.72v98.72h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.34T149.4 128.7zM366.6 32H81.35A81.44 81.44 0 0 0 0 113.4V398.6A81.44 81.44 0 0 0 81.35 480H366.6A81.44 81.44 0 0 0 448 398.6V113.4A81.44 81.44 0 0 0 366.6 32zm63.63 366.6a63.71 63.71 0 0 1 -63.63 63.63H81.35a63.71 63.71 0 0 1 -63.63-63.63V113.4A63.71 63.71 0 0 1 81.35 49.72H366.6a63.71 63.71 0 0 1 63.63 63.63zM305.3 128.7H246.6v98.72h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.34T305.3 128.7z"], + "periscope": [448, 512, [], "f3da", "M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3 .1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"], + "phabricator": [496, 512, [], "f3db", "M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4 .5 .2 28.9 .2 28.9l-9.1 9.1s-29.2-.9-29.7 .4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5 .5 29.5 .5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4 .6 20.7-23.5 20.7-23.5l13.1 .2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2 .9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3 .8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1 .1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"], + "phoenix-framework": [640, 512, [], "f3dc", "M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4 .1-.8 .2-1.1 .3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8 .6-1.5 1.2-2.2 1.8 .1 .2 .1 .3 .2 .5 .8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7 .3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1 .2-.3 .3-.4 .5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6 .1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2 .1-.2 2.1 .6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4 .2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7 .3 .2 .4 .5 .7 .9-.5 0-.7 .1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1 .2-.1 .4-.2 .6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2 .1-.3 .1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7 .4-.1 .9 0 1.5 .3-.6 .4-1.2 .9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4 .6-.8 .9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5 .1-.1 .2 0 .4 .4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7 .5-.2 .8-.4 1.1-.4 13.1 .1 26.1 .7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"], + "phoenix-squadron": [512, 512, [], "f511", "M96 63.38C142.5 27.25 201.6 7.31 260.5 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.2 27 191 48.84 162.2 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3 .3a203 203 0 0 1 -35.82 15.37c-20 6.17-42.16 8.46-62.1 .78 12.79 1.73 26.06 .31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.6 526.6 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0 -51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28 .75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.6 183.6 0 0 0 -14.21-104.6c20.78 32 32.34 69.58 35.71 107.5 .49 12.73 .49 25.51 0 38.23A243.2 243.2 0 0 1 482 371.3c-26.12 47.34-68 85.63-117.2 108-78.29 36.23-174.7 31.32-248-14.68A248.3 248.3 0 0 1 25.36 366 238.3 238.3 0 0 1 0 273.1v-31.34C3.93 172 40.87 105.8 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"], + "php": [640, 512, [], "f457", "M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"], + "pied-piper": [480, 512, [], "f2ae", "M455.9 23.2C429.2 30 387.8 51.69 341.4 90.66A206 206 0 0 0 240 64C125.1 64 32 157.1 32 272s93.13 208 208 208 208-93.13 208-208a207.3 207.3 0 0 0 -58.75-144.8 155.4 155.4 0 0 0 -17 27.4A176.2 176.2 0 0 1 417.1 272c0 97.66-79.44 177.1-177.1 177.1a175.8 175.8 0 0 1 -87.63-23.4c82.94-107.3 150.8-37.77 184.3-226.6 5.79-32.62 28-94.26 126.2-160.2C471 33.45 465.4 20.8 455.9 23.2zM125 406.4A176.7 176.7 0 0 1 62.9 272C62.9 174.3 142.4 94.9 240 94.9a174 174 0 0 1 76.63 17.75C250.6 174.8 189.8 265.5 125 406.4z"], + "pied-piper-alt": [576, 512, [], "f1a8", "M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3 .9 .6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9 .6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"], + "pied-piper-hat": [640, 512, [], "f4e5", "M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9 .6 2.8 .8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1 .6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"], + "pied-piper-pp": [448, 512, [], "f1a7", "M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4 .2-9.6 .7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"], + "pinterest": [496, 512, [], "f0d2", "M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3 .8-3.4 5-20.3 6.9-28.1 .6-2.5 .3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"], + "pinterest-p": [384, 512, [], "f231", "M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"], + "pix": [512, 512, [], "e43a", "M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z"], + "playstation": [576, 512, [], "f3df", "M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9 .6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"], + "product-hunt": [512, 512, [], "f288", "M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"], + "pushed": [432, 512, [], "f3e1", "M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"], + "python": [448, 512, [], "f3e2", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4 .1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8 .1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3 .1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"], + "qq": [448, 512, [], "f1d6", "M433.8 420.4c-11.53 1.393-44.86-52.74-44.86-52.74 0 31.34-16.14 72.25-51.05 101.8 16.84 5.192 54.84 19.17 45.8 34.42-7.316 12.34-125.5 7.881-159.6 4.037-34.12 3.844-152.3 8.306-159.6-4.037-9.045-15.25 28.92-29.21 45.78-34.42-34.92-29.54-51.06-70.44-51.06-101.8 0 0-33.33 54.13-44.86 52.74-5.37-.65-12.42-29.64 9.347-99.7 10.26-33.02 21.1-60.48 40.14-105.8C60.68 98.06 108.1 .006 224 0c113.7 .006 163.2 96.13 160.3 214.1 18.12 45.22 29.91 72.85 40.14 105.8 21.77 70.06 14.72 99.05 9.346 99.7z"], + "quinscape": [512, 512, [], "f459", "M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.4 237.4 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4 .1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0 -99.2-99.2z"], + "quora": [448, 512, [], "f2c4", "M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7 .1 41.8-5.4 75.6-16.7 100.5z"], + "r-project": [581, 512, [], "f4f7", "M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"], + "raspberry-pi": [407, 512, [], "f7bb", "M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2 .7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6 .8C271.6 .6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9 .1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6 .1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7 .8 14.1 .6 23.9 .8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8 .4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2 .1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7 .9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6 .9 2.7 3.6 4.4 6.7 5.8-15.4 .9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8 .7 8.3 .1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6 .4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3 .4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6 .2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9 .5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6 .2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"], + "ravelry": [512, 512, [], "f2d9", "M498.3 234.2c-1.208-10.34-1.7-20.83-3.746-31a310.3 310.3 0 0 0 -9.622-36.6 184.1 184.1 0 0 0 -30.87-57.5 251.2 251.2 0 0 0 -18.82-21.69 237.4 237.4 0 0 0 -47.11-36.12A240.8 240.8 0 0 0 331.4 26.65c-11.02-3.1-22.27-5.431-33.51-7.615-6.78-1.314-13.75-1.667-20.63-2.482-.316-.036-.6-.358-.9-.553q-16.14 .009-32.29 .006c-2.41 .389-4.808 .925-7.236 1.15a179.3 179.3 0 0 0 -34.26 7.1 221.5 221.5 0 0 0 -39.77 16.35 281.4 281.4 0 0 0 -38.08 24.16c-6.167 4.61-12.27 9.36-17.97 14.52C96.54 88.49 86.34 97.72 76.79 107.6a243.9 243.9 0 0 0 -33.65 43.95 206.5 206.5 0 0 0 -20.49 44.6 198.2 198.2 0 0 0 -7.691 34.76A201.1 201.1 0 0 0 13.4 266.4a299.7 299.7 0 0 0 4.425 40.24 226.9 226.9 0 0 0 16.73 53.3 210.5 210.5 0 0 0 24 39.53 213.6 213.6 0 0 0 26.36 28.42A251.3 251.3 0 0 0 126.7 458.5a287.8 287.8 0 0 0 55.9 25.28 269.5 269.5 0 0 0 40.64 9.835c6.071 1.01 12.27 1.253 18.41 1.873a4.149 4.149 0 0 1 1.19 .56h32.29c2.507-.389 5-.937 7.527-1.143 16.34-1.332 32.11-5.335 47.49-10.72A219.1 219.1 0 0 0 379.1 460.3c9.749-6.447 19.4-13.08 28.74-20.1 5.785-4.348 10.99-9.5 16.3-14.46 3.964-3.7 7.764-7.578 11.51-11.5a232.2 232.2 0 0 0 31.43-41.64c9.542-16.05 17.35-32.9 22.3-50.93 2.859-10.41 4.947-21.05 7.017-31.65 1.032-5.279 1.251-10.72 1.87-16.09 .036-.317 .358-.6 .552-.9V236A9.757 9.757 0 0 1 498.3 234.2zm-161.1-1.15s-16.57-2.98-28.47-2.98c-27.2 0-33.57 14.9-33.57 37.04V360.8H201.6V170.1H275.1v31.93c8.924-26.82 26.77-36.19 62.04-36.19z"], + "react": [512, 512, [], "f41b", "M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1 .9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2 .6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6 .4 19.5 .6 29.5 .6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8 .9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"], + "reacteurope": [576, 512, [], "f75d", "M250.6 211.7l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2 .1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2 .1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0 -4.2-3.4h-6.9a3.68 3.68 0 0 0 -4 3.4l-11 59.2c-.5 2.7 .9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 .04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0 -2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0 -2-1.9h-22.2a1.62 1.62 0 0 0 -2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0 -2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0 -2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0 -2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.4 364.4 0 0 0 -35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.8 587.8 0 0 0 -84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2 .1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0 -93.9 .9 547.8 547.8 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.3 598.3 0 0 0 -50.7 64.2 569.7 569.7 0 0 0 -84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.4 695.4 0 0 0 93.9-.9 547.8 547.8 0 0 1 -42.2 52.4q5.1 5.25 10.2 10.2a588.5 588.5 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1 -10.7-5.7l-.1 .1a19.61 19.61 0 0 1 -5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1 -72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1 -6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.9 711.9 0 0 1 -112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1 -3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.8 548.8 0 0 1 -72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4 .2-8.4-1a17.58 17.58 0 0 1 -6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.6c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.7 711.7 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1 .1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.7 359.7 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0 -1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0 -1.9-1.9H309a1.81 1.81 0 0 0 -2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0 -2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0 -2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0 -2-1.9h-22.2a1.81 1.81 0 0 0 -2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0 -2-2.06zm-7.4-99.4L286 192l-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"], + "readme": [576, 512, [], "f4d5", "M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"], + "rebel": [512, 512, [], "f1d0", "M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1 .8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7 .8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4 .6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5 .8-2.8 .8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"], + "red-river": [448, 512, [], "f3e3", "M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"], + "reddit": [512, 512, [], "f1a1", "M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"], + "reddit-alien": [512, 512, [], "f281", "M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2 .1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"], + "redhat": [512, 512, [], "f7bc", "M341.5 285.6c33.65 0 82.34-6.94 82.34-47 .22-6.74 .86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.1 228.5 106.1M429 254.8c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.7 .08-235.9-73.65-235.9-122.3a49.55 49.55 0 0 1 4.06-19.72C58.56 200.9 0 208.9 0 260.6c0 84.67 200.6 189 359.5 189 121.8 0 152.5-55.08 152.5-98.58 0-34.21-29.59-73.05-82.93-96.24"], + "renren": [512, 512, [], "f18b", "M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"], + "replyd": [448, 512, [], "f3e6", "M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9 .5-4.4 .7-8.6 .7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"], + "researchgate": [448, 512, [], "f4f8", "M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1 .6-33.6 .8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"], + "resolving": [496, 512, [], "f3e7", "M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"], + "rev": [448, 512, [], "f5b2", "M289.7 274.9a65.57 65.57 0 1 1 -65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.6-5.05h-.13a204.7 204.7 0 0 0 -74.32-153l-45.38 26.2a157.1 157.1 0 0 1 71.81 131.8C381.2 361.5 310.7 432 224.1 432S67 361.5 67 274.9c0-81.88 63-149.3 143-156.4v39.12l108.8-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.6 0 111.6 89.12 202.3 200.1 205v.11h210.2V269.8z"], + "rocketchat": [576, 512, [], "f3e8", "M284 224.8a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 284 224.8zm-110.4 0a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 173.6 224.8zm220.9 0a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 394.5 224.8zm153.8-55.32c-15.53-24.17-37.31-45.57-64.68-63.62-52.89-34.82-122.4-54-195.7-54a405.1 405.1 0 0 0 -72.03 6.357 238.5 238.5 0 0 0 -49.51-36.59C99.68-11.7 40.86 .711 11.14 11.42A14.29 14.29 0 0 0 5.58 34.78C26.54 56.46 61.22 99.3 52.7 138.3c-33.14 33.9-51.11 74.78-51.11 117.3 0 43.37 17.97 84.25 51.11 118.1 8.526 38.96-26.15 81.82-47.12 103.5a14.28 14.28 0 0 0 5.555 23.34c29.72 10.71 88.55 23.15 155.3-10.2a238.7 238.7 0 0 0 49.51-36.59A405.1 405.1 0 0 0 288 460.1c73.31 0 142.8-19.16 195.7-53.97 27.37-18.05 49.15-39.43 64.68-63.62 17.31-26.92 26.07-55.92 26.07-86.13C574.4 225.4 565.6 196.4 548.3 169.5zM284.1 409.9a345.6 345.6 0 0 1 -89.45-11.5l-20.13 19.39a184.4 184.4 0 0 1 -37.14 27.58 145.8 145.8 0 0 1 -52.52 14.87c.983-1.771 1.881-3.563 2.842-5.356q30.26-55.68 16.33-100.1c-32.99-25.96-52.78-59.2-52.78-95.4 0-83.1 104.3-150.5 232.8-150.5s232.9 67.37 232.9 150.5C517.9 342.5 413.6 409.9 284.1 409.9z"], + "rockrms": [496, 512, [], "f3e9", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2 .2-74.2 .2l101.5 118.9z"], + "rust": [512, 512, [], "e07a", "M508.5 249.8 486.7 236.2c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35 7.35 0 0 0 -2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35 7.35 0 0 0 -4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35 7.35 0 0 0 -6.95-10.39l-25.82 .91q-1.79-2.22-3.61-4.4L439 81.84A7.36 7.36 0 0 0 430.2 73L405 78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35 7.35 0 0 0 -10.39-7L367.7 53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4 25.08a7.35 7.35 0 0 0 -11.54-4.79L326 35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35 7.35 0 0 0 -12.25-2.44l-17.5 18.72c-1.95-.21-3.91-.38-5.88-.55L262.3 3.48a7.35 7.35 0 0 0 -12.5 0L236.2 25.3c-2 .17-3.93 .34-5.88 .55L212.9 7.13a7.35 7.35 0 0 0 -12.25 2.44l-9 24c-1.89 .55-3.79 1.08-5.66 1.68l-20.82-15a7.35 7.35 0 0 0 -11.54 4.79l-4.15 25.41c-1.73 .9-3.45 1.79-5.16 2.73L120.9 42.55a7.35 7.35 0 0 0 -10.39 7l.92 25.81c-1.49 1.19-3 2.39-4.42 3.61L81.84 73A7.36 7.36 0 0 0 73 81.84L78.93 107c-1.23 1.45-2.43 2.93-3.62 4.41l-25.81-.91a7.42 7.42 0 0 0 -6.37 3.26 7.35 7.35 0 0 0 -.57 7.13l10.66 23.41c-.94 1.7-1.83 3.43-2.73 5.16L25.08 153.6a7.35 7.35 0 0 0 -4.79 11.54l15 20.82c-.59 1.87-1.13 3.77-1.68 5.66l-24 9a7.35 7.35 0 0 0 -2.44 12.25l18.72 17.5c-.21 1.95-.38 3.91-.55 5.88L3.48 249.8a7.35 7.35 0 0 0 0 12.5L25.3 275.8c.17 2 .34 3.92 .55 5.87L7.13 299.1a7.35 7.35 0 0 0 2.44 12.25l24 9c.55 1.89 1.08 3.78 1.68 5.65l-15 20.83a7.35 7.35 0 0 0 4.79 11.54l25.42 4.15c.9 1.72 1.79 3.45 2.73 5.14L42.56 391.1a7.35 7.35 0 0 0 .57 7.13 7.13 7.13 0 0 0 6.37 3.26l25.83-.91q1.77 2.22 3.6 4.4L73 430.2A7.36 7.36 0 0 0 81.84 439L107 433.1q2.18 1.83 4.41 3.61l-.92 25.82a7.35 7.35 0 0 0 10.39 6.95l23.43-10.68c1.69 .94 3.42 1.83 5.14 2.73l4.15 25.42a7.34 7.34 0 0 0 11.54 4.78l20.83-15c1.86 .6 3.76 1.13 5.65 1.68l9 24a7.36 7.36 0 0 0 12.25 2.44l17.5-18.72c1.95 .21 3.92 .38 5.88 .55l13.51 21.82a7.35 7.35 0 0 0 12.5 0l13.51-21.82c2-.17 3.93-.34 5.88-.56l17.5 18.73a7.36 7.36 0 0 0 12.25-2.44l9-24c1.89-.55 3.78-1.08 5.65-1.68l20.82 15a7.34 7.34 0 0 0 11.54-4.78l4.15-25.42c1.72-.9 3.45-1.79 5.15-2.73l23.42 10.68a7.35 7.35 0 0 0 10.39-6.95l-.91-25.82q2.22-1.79 4.4-3.61L430.2 439a7.36 7.36 0 0 0 8.84-8.84L433.1 405q1.83-2.17 3.61-4.4l25.82 .91a7.23 7.23 0 0 0 6.37-3.26 7.35 7.35 0 0 0 .58-7.13L458.8 367.7c.94-1.7 1.83-3.43 2.73-5.15l25.42-4.15a7.35 7.35 0 0 0 4.79-11.54l-15-20.83c.59-1.87 1.13-3.76 1.67-5.65l24-9a7.35 7.35 0 0 0 2.44-12.25l-18.72-17.5c.21-1.95 .38-3.91 .55-5.87l21.82-13.51a7.35 7.35 0 0 0 0-12.5zm-151 129.1A13.91 13.91 0 0 0 341 389.5l-7.64 35.67A187.5 187.5 0 0 1 177 424.4l-7.64-35.66a13.87 13.87 0 0 0 -16.46-10.68l-31.51 6.76a187.4 187.4 0 0 1 -16.26-19.21H258.3c1.72 0 2.89-.29 2.89-1.91V309.5c0-1.57-1.17-1.91-2.89-1.91H213.5l.05-34.35H262c4.41 0 23.66 1.28 29.79 25.87 1.91 7.55 6.17 32.14 9.06 40 2.89 8.82 14.6 26.46 27.1 26.46H407a187.3 187.3 0 0 1 -17.34 20.09zm25.77 34.49A15.24 15.24 0 1 1 368 398.1h.44A15.23 15.23 0 0 1 383.2 413.3zm-225.6-.68a15.24 15.24 0 1 1 -15.25-15.25h.45A15.25 15.25 0 0 1 157.6 412.6zM69.57 234.1l32.83-14.6a13.88 13.88 0 0 0 7.06-18.33L102.7 186h26.56V305.7H75.65A187.6 187.6 0 0 1 69.57 234.1zM58.31 198.1a15.24 15.24 0 0 1 15.23-15.25H74a15.24 15.24 0 1 1 -15.67 15.24zm155.2 24.49 .05-35.32h63.26c3.28 0 23.07 3.77 23.07 18.62 0 12.29-15.19 16.7-27.68 16.7zM399 306.7c-9.8 1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4 18.86-11.95 38.46-29.64 38.46-53.26 0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.3A187.5 187.5 0 0 1 221.2 70.06l23.47 24.6a13.82 13.82 0 0 0 19.6 .44l26.26-25a187.5 187.5 0 0 1 128.4 91.43l-18 40.57A14 14 0 0 0 408 220.4l34.59 15.33a187.1 187.1 0 0 1 .4 32.54H423.7c-1.91 0-2.69 1.27-2.69 3.13v8.82C421 301 409.3 305.6 399 306.7zM240 60.21A15.24 15.24 0 0 1 255.2 45h.45A15.24 15.24 0 1 1 240 60.21zM436.8 214a15.24 15.24 0 1 1 0-30.48h.44a15.24 15.24 0 0 1 -.44 30.48z"], + "safari": [512, 512, [], "f267", "M274.7 274.7l-37.38-37.38L166 346zM256 8C119 8 8 119 8 256S119 504 256 504 504 393 504 256 393 8 256 8zM411.9 182.8l14.78-6.13A8 8 0 0 1 437.1 181h0a8 8 0 0 1 -4.33 10.46L418 197.6a8 8 0 0 1 -10.45-4.33h0A8 8 0 0 1 411.9 182.8zM314.4 94l6.12-14.78A8 8 0 0 1 331 74.92h0a8 8 0 0 1 4.33 10.45l-6.13 14.78a8 8 0 0 1 -10.45 4.33h0A8 8 0 0 1 314.4 94zM256 60h0a8 8 0 0 1 8 8V84a8 8 0 0 1 -8 8h0a8 8 0 0 1 -8-8V68A8 8 0 0 1 256 60zM181 74.92a8 8 0 0 1 10.46 4.33L197.6 94a8 8 0 1 1 -14.78 6.12l-6.13-14.78A8 8 0 0 1 181 74.92zm-63.58 42.49h0a8 8 0 0 1 11.31 0L140 128.7A8 8 0 0 1 140 140h0a8 8 0 0 1 -11.31 0l-11.31-11.31A8 8 0 0 1 117.4 117.4zM60 256h0a8 8 0 0 1 8-8H84a8 8 0 0 1 8 8h0a8 8 0 0 1 -8 8H68A8 8 0 0 1 60 256zm40.15 73.21-14.78 6.13A8 8 0 0 1 74.92 331h0a8 8 0 0 1 4.33-10.46L94 314.4a8 8 0 0 1 10.45 4.33h0A8 8 0 0 1 100.2 329.2zm4.33-136h0A8 8 0 0 1 94 197.6l-14.78-6.12A8 8 0 0 1 74.92 181h0a8 8 0 0 1 10.45-4.33l14.78 6.13A8 8 0 0 1 104.5 193.2zM197.6 418l-6.12 14.78a8 8 0 0 1 -14.79-6.12l6.13-14.78A8 8 0 1 1 197.6 418zM264 444a8 8 0 0 1 -8 8h0a8 8 0 0 1 -8-8V428a8 8 0 0 1 8-8h0a8 8 0 0 1 8 8zm67-6.92h0a8 8 0 0 1 -10.46-4.33L314.4 418a8 8 0 0 1 4.33-10.45h0a8 8 0 0 1 10.45 4.33l6.13 14.78A8 8 0 0 1 331 437.1zm63.58-42.49h0a8 8 0 0 1 -11.31 0L372 383.3A8 8 0 0 1 372 372h0a8 8 0 0 1 11.31 0l11.31 11.31A8 8 0 0 1 394.6 394.6zM286.3 286.3 110.3 401.7 225.8 225.8 401.7 110.3zM437.1 331h0a8 8 0 0 1 -10.45 4.33l-14.78-6.13a8 8 0 0 1 -4.33-10.45h0A8 8 0 0 1 418 314.4l14.78 6.12A8 8 0 0 1 437.1 331zM444 264H428a8 8 0 0 1 -8-8h0a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8h0A8 8 0 0 1 444 264z"], + "salesforce": [640, 512, [], "f83b", "M248.9 245.6h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.7-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.2 23.76a8.63 8.63 0 0 0 -3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93 .95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.4-165.4 136.4-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.9 92.18-213.8-5.17C8.91 428.8-50.19 266.5 53.36 205.6 18.61 126.2 76 32 167.7 32a124.2 124.2 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.7 640 232zm-519.5 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17 .71 1.64-.47 .24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0 -.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1 -19-6.35c-.47-.23-1.42-.71-1.65 .71l-2.4 7.47c-.47 .94 .23 1.18 .23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0 -.24 1.41l2.59 7.06a1 1 0 0 0 1.18 .7c.65 0 6.8-4 16.93-4 4 0 7.06 .71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0 -7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61 .32-21.64-22.78-21.64zM199 200.2a1.11 1.11 0 0 0 -1.18-1.18H188a1.11 1.11 0 0 0 -1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16 .23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12 .15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76 .47-.24 .71-.71 .24-1.88l-2.35-6.83a1.26 1.26 0 0 0 -1.41-.7c-2.59 .94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18 .71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0 -.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1 -19-6.35 1 1 0 0 0 -1.65 .71l-2.35 7.52c-.47 .94 .23 1.18 .23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.1 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14 .94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17 .47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0 -1.17 1.18l-1.42 7.76c0 .7 .24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41 .71-.24 .71-2.59 6.82-2.83 7.53s0 1.41 .47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52 .09 .3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0 -1.18-1.17h-9.4a1.11 1.11 0 0 0 -1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91 .05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0 -.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94 .47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53 .23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59 .74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0 -1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76 .47-.24 .71-.71 .24-1.88l-2.36-6.83a1.26 1.26 0 0 0 -1.41-.7c-2.59 .94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01 .94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"], + "sass": [640, 512, [], "f41e", "M301.8 378.9c-.3 .6-.6 1.08 0 0zm249.1-87a131.2 131.2 0 0 0 -58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.8 122.8 0 0 0 -5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4 .8-.7 1.3-.9 1.7 .3-.5 .5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4 .3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.9-65.2-99.07-116.5 1-18.7 7.5-67.8 127.1-127.4 98-48.8 176.4-35.4 189.8-5.6 19.4 42.5-41.89 121.6-143.7 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.2-11.8 61.78-23.8 109.9-90.1 95.77-145.6C386.5 18.32 293-.18 204.6 31.22c-52.69 18.7-109.7 48.1-150.7 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.1 125.7-1.6 .9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.6-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4 .7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.2 201.2 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31 .31 0 0 0 .1 .2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.7 450.1 270 450.1 270a201.2 201.2 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.2 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.4 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9 .8-.5 1.2-.7 1.2-.7 .9-.6 1.9-1.1 2.9-1.7 8.29 30.4 .3 57.2-19.1 78.3zm134.4-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5 .1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"], + "schlix": [448, 512, [], "f3ea", "M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2 .4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"], + "screenpal": [512, 512, [], "e570", "M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z"], + "scribd": [384, 512, [], "f28a", "M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9 .6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9 .2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"], + "searchengin": [460, 512, [], "f3eb", "M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"], + "sellcast": [448, 512, [], "f2da", "M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8 .1 .1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8 .1 .1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"], + "sellsy": [640, 512, [], "f213", "M539.7 237.3c3.064-12.26 4.29-24.82 4.29-37.38C544 107.4 468.6 32 376.1 32c-77.22 0-144.6 53.01-163 127.8-15.32-13.18-34.93-20.53-55.16-20.53-46.27 0-83.96 37.69-83.96 83.96 0 7.354 .92 15.02 3.065 22.37-42.9 20.23-70.79 63.74-70.79 111.2C6.216 424.8 61.68 480 129.4 480h381.2c67.72 0 123.2-55.16 123.2-123.2 .001-56.38-38.92-106-94.07-119.5zM199.9 401.6c0 8.274-7.048 15.32-15.32 15.32H153.6c-8.274 0-15.32-7.048-15.32-15.32V290.6c0-8.273 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v110.9zm89.48 0c0 8.274-7.048 15.32-15.32 15.32h-30.95c-8.274 0-15.32-7.048-15.32-15.32V270.1c0-8.274 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v131.5zm89.48 0c0 8.274-7.047 15.32-15.32 15.32h-30.95c-8.274 0-15.32-7.048-15.32-15.32V238.8c0-8.274 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v162.7zm87.03 0c0 8.274-7.048 15.32-15.32 15.32h-28.5c-8.274 0-15.32-7.048-15.32-15.32V176.9c0-8.579 7.047-15.63 15.32-15.63h28.5c8.274 0 15.32 7.048 15.32 15.63v224.6z"], + "servicestack": [496, 512, [], "f3ec", "M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"], + "shirtsinbulk": [448, 512, [], "f214", "M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"], + "shopify": [448, 512, [], "e057", "M388.3 104.1a4.66 4.66 0 0 0 -4.4-4c-2 0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.8 472S388.7 106.5 388.3 104.1zM288.6 70.47a116.7 116.7 0 0 0 -7.21-17.61C271 32.85 255.4 22 237 22a15 15 0 0 0 -4 .4c-.4-.8-1.2-1.2-1.6-2C223.4 11.63 213 7.63 200.6 8c-24 .8-48 18-67.25 48.83-13.61 21.62-24 48.84-26.82 70.06-27.62 8.4-46.83 14.41-47.23 14.81-14 4.4-14.41 4.8-16 18-1.2 10-38 291.8-38 291.8L307.9 504V65.67a41.66 41.66 0 0 0 -4.4 .4S297.9 67.67 288.6 70.47zM233.4 87.69c-16 4.8-33.63 10.4-50.84 15.61 4.8-18.82 14.41-37.63 25.62-50 4.4-4.4 10.41-9.61 17.21-12.81C232.2 54.86 233.8 74.48 233.4 87.69zM200.6 24.44A27.49 27.49 0 0 1 215 28c-6.4 3.2-12.81 8.41-18.81 14.41-15.21 16.42-26.82 42-31.62 66.45-14.42 4.41-28.83 8.81-42 12.81C131.3 83.28 163.8 25.24 200.6 24.44zM154.1 244.6c1.6 25.61 69.25 31.22 73.25 91.66 2.8 47.64-25.22 80.06-65.65 82.47-48.83 3.2-75.65-25.62-75.65-25.62l10.4-44s26.82 20.42 48.44 18.82c14-.8 19.22-12.41 18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44 27.22-93.27 94.47-97.68 26-1.6 39.23 4.81 39.23 4.81L221.4 225.4s-17.21-8-37.63-6.4C154.1 221 153.8 239.8 154.1 244.6zM249.4 82.88c0-12-1.6-29.22-7.21-43.63 18.42 3.6 27.22 24 31.23 36.43Q262.6 78.68 249.4 82.88z"], + "shopware": [512, 512, [], "f5b5", "M403.5 455.4A246.2 246.2 0 0 1 256 504C118.8 504 8 393 8 256 8 118.8 119 8 256 8a247.4 247.4 0 0 1 165.7 63.5 3.57 3.57 0 0 1 -2.86 6.18A418.6 418.6 0 0 0 362.1 74c-129.4 0-222.4 53.47-222.4 155.4 0 109 92.13 145.9 176.8 178.7 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.1a3.64 3.64 0 0 0 -1.27-2.44c-51.76-43-93.62-60.48-144.5-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.3 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.1z"], + "simplybuilt": [512, 512, [], "f215", "M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"], + "sistrix": [448, 512, [], "f3ee", "M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"], + "sith": [448, 512, [], "f512", "M0 32l69.71 118.8-58.86-11.52 69.84 91.03a146.7 146.7 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.8-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.8 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.8 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21 .78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.2 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.2 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.9s89.65 34.18 123.8 0c34.18-34.18 34.19-89.68 0-123.9-17.09-17.09-39.5-25.61-61.92-25.61z"], + "sitrox": [448, 512, [], "e44a", "M212.4 .0085V0H448V128H64C64 57.6 141.8 .4753 212.4 .0085zM237.3 192V192C307.1 192.5 384 249.6 384 320H210.8V319.1C140.9 319.6 64 262.4 64 192H237.3zM235.6 511.1C306.3 511.5 384 454.4 384 384H0V512H235.6V511.1z"], + "sketch": [512, 512, [], "f7c6", "M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"], + "skyatlas": [640, 512, [], "f216", "M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4 .1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"], + "skype": [448, 512, [], "f17e", "M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"], + "slack": [448, 512, [62447, "slack-hash"], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.8c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.1c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.1 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.1 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.9c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.8c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], + "slideshare": [512, 512, [], "f1e7", "M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7 .1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7 .3-56.6 .3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7 .3 92.8 .3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"], + "snapchat": [512, 512, [62124, "snapchat-ghost"], "f2ab", "M496.9 366.6c-3.373-9.176-9.8-14.09-17.11-18.15-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.61-27.34-52.96-45.42a102.9 102.9 0 0 1 -9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.22 10.22 0 0 1 2.914-3.038c3.918-2.591 7.96-5.22 10.7-6.993 4.885-3.162 8.754-5.667 11.25-7.44 9.362-6.547 15.91-13.5 20-21.28a42.37 42.37 0 0 0 2.1-35.19c-6.2-16.32-21.61-26.45-40.29-26.45a55.54 55.54 0 0 0 -11.72 1.24c-1.029 .224-2.059 .459-3.063 .72 .174-11.16-.074-22.94-1.066-34.53-3.522-40.76-17.79-62.12-32.67-79.16A130.2 130.2 0 0 0 332.1 36.44C309.5 23.55 283.9 17 256 17S202.6 23.55 180 36.44a129.7 129.7 0 0 0 -33.28 26.78c-14.88 17.04-29.15 38.44-32.67 79.16-.992 11.59-1.24 23.43-1.079 34.53-1-.26-2.021-.5-3.051-.719a55.46 55.46 0 0 0 -11.72-1.24c-18.69 0-34.13 10.13-40.3 26.45a42.42 42.42 0 0 0 2.046 35.23c4.105 7.774 10.65 14.73 20.01 21.28 2.48 1.736 6.361 4.24 11.25 7.44 2.641 1.711 6.5 4.216 10.28 6.72a11.05 11.05 0 0 1 3.3 3.311c.794 1.624 .818 3.373-.36 6.6a102 102 0 0 1 -8.94 15.78c-12.08 17.67-29.36 32.65-51.43 44.64C32.35 348.6 20.2 352.8 15.07 366.7c-3.868 10.53-1.339 22.51 8.494 32.6a49.14 49.14 0 0 0 12.4 9.387 134.3 134.3 0 0 0 30.34 12.14 20.02 20.02 0 0 1 6.126 2.741c3.583 3.137 3.075 7.861 7.849 14.78a34.47 34.47 0 0 0 8.977 9.127c10.02 6.919 21.28 7.353 33.21 7.811 10.78 .41 22.99 .881 36.94 5.481 5.778 1.91 11.78 5.605 18.74 9.92C194.8 480.1 217.7 495 255.1 495s61.29-14.12 78.12-24.43c6.907-4.24 12.87-7.9 18.49-9.758 13.95-4.613 26.16-5.072 36.94-5.481 11.93-.459 23.19-.893 33.21-7.812a34.58 34.58 0 0 0 10.22-11.16c3.434-5.84 3.348-9.919 6.572-12.77a18.97 18.97 0 0 1 5.753-2.629A134.9 134.9 0 0 0 476 408.7a48.34 48.34 0 0 0 13.02-10.19l.124-.149C498.4 388.5 500.7 376.9 496.9 366.6zm-34.01 18.28c-20.75 11.46-34.53 10.23-45.26 17.14-9.114 5.865-3.72 18.51-10.34 23.08-8.134 5.617-32.18-.4-63.24 9.858-25.62 8.469-41.96 32.82-88.04 32.82s-62.04-24.3-88.08-32.88c-31-10.26-55.09-4.241-63.24-9.858-6.609-4.563-1.24-17.21-10.34-23.08-10.74-6.907-24.53-5.679-45.26-17.08-13.21-7.291-5.716-11.8-1.314-13.94 75.14-36.38 87.13-92.55 87.67-96.72 .645-5.046 1.364-9.014-4.191-14.15-5.369-4.96-29.19-19.7-35.8-24.32-10.94-7.638-15.75-15.26-12.2-24.64 2.48-6.485 8.531-8.928 14.88-8.928a27.64 27.64 0 0 1 5.965 .67c12 2.6 23.66 8.617 30.39 10.24a10.75 10.75 0 0 0 2.48 .335c3.6 0 4.86-1.811 4.612-5.927-.768-13.13-2.628-38.72-.558-62.64 2.84-32.91 13.44-49.22 26.04-63.64 6.051-6.932 34.48-36.98 88.86-36.98s82.88 29.92 88.93 36.83c12.61 14.42 23.23 30.73 26.04 63.64 2.071 23.92 .285 49.53-.558 62.64-.285 4.327 1.017 5.927 4.613 5.927a10.65 10.65 0 0 0 2.48-.335c6.745-1.624 18.4-7.638 30.4-10.24a27.64 27.64 0 0 1 5.964-.67c6.386 0 12.4 2.48 14.88 8.928 3.546 9.374-1.24 17-12.19 24.64-6.609 4.612-30.43 19.34-35.8 24.32-5.568 5.134-4.836 9.1-4.191 14.15 .533 4.228 12.51 60.4 87.67 96.72C468.6 373 476.1 377.5 462.9 384.9z"], + "soundcloud": [640, 512, [], "f1be", "M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2 .8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1 .6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7 .6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3 .1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"], + "sourcetree": [448, 512, [], "f7d3", "M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.9 202.9 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.2 203.2 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"], + "space-awesome": [512, 512, [], "e5ac", "M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z"], + "speakap": [448, 512, [], "f3f3", "M64 391.8C-15.41 303.6-8 167.4 80.64 87.64s224.8-73 304.2 15.24 72 224.4-16.64 304.1c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.9 35-346.2-67.5zm213.3-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33 .29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23 .18 96.42 .33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75 .41-23.25 31-25.37 37.53-25.26 .43 0 26.62 .26 39.62 17.37z"], + "speaker-deck": [512, 512, [], "f83c", "M213.9 296H100a100 100 0 0 1 0-200h132.8a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.8a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.9c26.48 0 26.46-40 0-40zM298 416a120.2 120.2 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0 -19.66-20H296.4a60.77 60.77 0 0 0 0-80h136.9c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"], + "spotify": [496, 512, [], "f1bc", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"], + "square-behance": [448, 512, ["behance-square"], "f1b5", "M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6 .1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3 .3-4.8 .3-7.2z"], + "square-dribbble": [448, 512, ["dribbble-square"], "f397", "M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"], + "square-facebook": [448, 512, ["facebook-square"], "f082", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.3V327.7h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0 -48-48z"], + "square-font-awesome": [448, 512, [], "e5ad", "M384.5 32.5h-320c-35.3 0-64 28.7-64 64v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64v-320C448.5 61.2 419.8 32.5 384.5 32.5zM336.5 312.5c-31.6 11.2-41.2 16-59.8 16c-31.4 0-43.2-16-74.6-16c-10.2 0-18.2 1.6-25.6 4v-32c7.4-2.2 15.4-4 25.6-4c31.2 0 43.2 16 74.6 16c10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6c-31.4 0-43.2-16-74.6-16c-25.4 0-37.4 10.4-57.6 14.4v153.6c0 8.8-7.2 16-16 16c-8.8 0-16-7.2-16-16v-192c0-8.8 7.2-16 16-16c8.8 0 16 7.2 16 16v6.4c20.2-4 32.2-14.4 57.6-14.4c31.2 0 43.2 16 74.6 16c18.6 0 28.2-4.8 59.8-16V312.5z"], + "square-font-awesome-stroke": [448, 512, ["font-awesome-alt"], "f35c", "M201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v192c0 .8 .1 1.6 .2 2.4c.1 .4 .1 .8 .2 1.2c1.6 7.1 8 12.4 15.6 12.4s14-5.3 15.6-12.4c.1-.4 .2-.8 .2-1.2c.1-.8 .2-1.6 .2-2.4V198.4c4-.8 7.7-1.8 11.2-3c14.3-4.7 26-11.4 46.4-11.4c31.4 0 43.2 16 74.6 16c8.9 0 15.9-1.1 24.2-3.5c1.2-.3 2.4-.7 3.6-1.1v96c-10 3.2-17.6 4.6-27.8 4.6c-31.4 0-43.4-16-74.6-16c-10.2 0-18.2 1.8-25.6 4v32c7.4-2.4 15.4-4 25.6-4c31.4 0 43.2 16 74.6 16c18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152zM384 32H64C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V96C448 60.7 419.3 32 384 32zM416 416c0 17.6-14.4 32-32 32H64c-17.6 0-32-14.4-32-32V96c0-17.6 14.4-32 32-32h320c17.6 0 32 14.4 32 32V416z"], + "square-git": [448, 512, ["git-square"], "f1d2", "M100.6 334.2c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52 .01-5.09 3.29-9.4 6.6-13.46zm27.95-116.6c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47 .75-44.47zM448 80v352a48 48 0 0 1 -48 48H48a48 48 0 0 1 -48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.6 127 243.9 127c-14.48 0-22.88 7.84-22.88 22.31zM199.2 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.2 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.4 81.53 385 127.5 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.8l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.5h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"], + "square-github": [448, 512, ["github-square"], "f092", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4 .2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9 .2 36.5 .2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9 .4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7 .6 3.9 1.9 .3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2 .2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7 .9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2 .4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8 .9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1 .9-1.1 2.8-.9 4.3 .6 1.3 1.3 1.8 3.3 .9 4.1zm-9.1-9.1c-.9 .6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9 .9-2.4 .4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5 .9-.9 2.4-.4 3.5 .6 1.1 1.3 1.3 2.8 .4 3.5zm-6.7-7.4c-.4 .9-1.7 1.1-2.8 .4-1.3-.6-1.9-1.7-1.5-2.6 .4-.6 1.5-.9 2.8-.4 1.3 .7 1.9 1.8 1.5 2.6z"], + "square-gitlab": [448, 512, ["gitlab-square"], "e5ae", "M48 32H400C426.5 32 448 53.5 448 80V432C448 458.5 426.5 480 400 480H48C21.5 480 0 458.5 0 432V80C0 53.5 21.5 32 48 32zM382.1 224.9L337.5 108.5C336.6 106.2 334.9 104.2 332.9 102.9C331.3 101.9 329.5 101.3 327.7 101.1C325.9 100.9 324 101.2 322.3 101.8C320.6 102.5 319 103.5 317.8 104.9C316.6 106.3 315.7 107.9 315.2 109.7L285 201.9H162.1L132.9 109.7C132.4 107.9 131.4 106.3 130.2 104.9C128.1 103.6 127.4 102.5 125.7 101.9C123.1 101.2 122.1 100.1 120.3 101.1C118.5 101.3 116.7 101.9 115.1 102.9C113.1 104.2 111.5 106.2 110.6 108.5L65.94 224.9L65.47 226.1C59.05 242.9 58.26 261.3 63.22 278.6C68.18 295.9 78.62 311.1 92.97 321.9L93.14 322L93.52 322.3L161.4 373.2L215.6 414.1C217.1 415.1 220.9 416.9 223.9 416.9C226.9 416.9 229.9 415.1 232.3 414.1L286.4 373.2L354.8 322L355 321.9C369.4 311 379.8 295.8 384.8 278.6C389.7 261.3 388.1 242.9 382.5 226.1L382.1 224.9z"], + "square-google-plus": [448, 512, ["google-plus-square"], "f0d4", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"], + "square-hacker-news": [448, 512, ["hacker-news-square"], "f3af", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"], + "square-instagram": [448, 512, ["instagram-square"], "e055", "M224 202.7A53.34 53.34 0 1 0 277.4 256 53.38 53.38 0 0 0 224 202.7zm124.7-41a54 54 0 0 0 -30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31 6.43a54 54 0 0 0 -30.41 30.41c-8.28 21-6.43 71.05-6.43 94.33S91 329.3 99.32 350.3a54 54 0 0 0 30.41 30.41c21 8.29 71 6.43 94.31 6.43s73.24 1.93 94.3-6.43a54 54 0 0 0 30.41-30.41c8.35-21 6.43-71.05 6.43-94.33S357.1 182.7 348.8 161.7zM224 338a82 82 0 1 1 82-82A81.9 81.9 0 0 1 224 338zm85.38-148.3a19.14 19.14 0 1 1 19.13-19.14A19.1 19.1 0 0 1 309.4 189.7zM400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32zM382.9 322c-1.29 25.63-7.14 48.34-25.85 67s-41.4 24.63-67 25.85c-26.41 1.49-105.6 1.49-132 0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.6 0-132 1.29-25.63 7.07-48.34 25.85-67s41.47-24.56 67-25.78c26.41-1.49 105.6-1.49 132 0 25.63 1.29 48.33 7.15 67 25.85s24.63 41.42 25.85 67.05C384.4 216.4 384.4 295.6 382.9 322z"], + "square-js": [448, 512, ["js-square"], "f3b9", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"], + "square-lastfm": [448, 512, ["lastfm-square"], "f203", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5 .1 36.7-30.7 50.6-76.1 50.6z"], + "square-odnoklassniki": [448, 512, ["odnoklassniki-square"], "f264", "M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"], + "square-pied-piper": [448, 512, ["pied-piper-square"], "e01e", "M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"], + "square-pinterest": [448, 512, ["pinterest-square"], "f0d3", "M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3 .8-3.4 5-20.1 6.8-27.8 .6-2.5 .3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2 .8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"], + "square-reddit": [448, 512, ["reddit-square"], "f1a2", "M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"], + "square-snapchat": [448, 512, ["snapchat-square"], "f2ad", "M384 32H64A64 64 0 0 0 0 96V416a64 64 0 0 0 64 64H384a64 64 0 0 0 64-64V96A64 64 0 0 0 384 32zm-3.907 319.3-.083 .1a32.36 32.36 0 0 1 -8.717 6.823 90.26 90.26 0 0 1 -20.59 8.2 12.69 12.69 0 0 0 -3.852 1.76c-2.158 1.909-2.1 4.64-4.4 8.55a23.14 23.14 0 0 1 -6.84 7.471c-6.707 4.632-14.24 4.923-22.23 5.23-7.214 .274-15.39 .581-24.73 3.669-3.761 1.245-7.753 3.694-12.38 6.533-11.27 6.9-26.68 16.35-52.3 16.35s-40.92-9.4-52.11-16.28c-4.657-2.888-8.675-5.362-12.54-6.64-9.339-3.08-17.52-3.4-24.73-3.67-7.986-.307-15.52-.6-22.23-5.229a23.08 23.08 0 0 1 -6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.43 13.43 0 0 0 -4.1-1.834 89.99 89.99 0 0 1 -20.31-8.127 32.9 32.9 0 0 1 -8.3-6.284c-6.583-6.757-8.276-14.78-5.686-21.82 3.436-9.338 11.57-12.11 19.4-16.26 14.78-8.027 26.35-18.06 34.43-29.88a68.24 68.24 0 0 0 5.985-10.57c.789-2.158 .772-3.329 .241-4.416a7.386 7.386 0 0 0 -2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.24a28.4 28.4 0 0 1 -1.369-23.58c4.134-10.92 14.47-17.71 26.98-17.71a37.14 37.14 0 0 1 7.845 .83c.689 .15 1.37 .307 2.042 .482-.108-7.43 .058-15.36 .722-23.12 2.358-27.26 11.91-41.59 21.87-52.99a86.84 86.84 0 0 1 22.28-17.93C188.3 100.4 205.3 96 224 96s35.83 4.383 50.94 13.02a87.17 87.17 0 0 1 22.24 17.9c9.961 11.41 19.52 25.71 21.87 52.99a231.2 231.2 0 0 1 .713 23.12c.673-.174 1.362-.332 2.051-.481a37.13 37.13 0 0 1 7.844-.83c12.5 0 22.82 6.782 26.97 17.71a28.37 28.37 0 0 1 -1.4 23.56c-2.74 5.2-7.123 9.861-13.39 14.24-1.668 1.187-4.258 2.864-7.529 4.981-1.835 1.187-4.541 2.947-7.164 4.682a6.856 6.856 0 0 0 -1.951 2.034c-.506 1.046-.539 2.191 .166 4.208a69.01 69.01 0 0 0 6.085 10.79c8.268 12.1 20.19 22.31 35.45 30.41 1.486 .772 2.98 1.5 4.441 2.258 .722 .332 1.569 .763 2.491 1.3 4.9 2.723 9.2 6.01 11.45 12.15C387.8 336.9 386.3 344.7 380.1 351.3zm-16.72-18.46c-50.31-24.31-58.33-61.92-58.69-64.75-.431-3.379-.921-6.035 2.806-9.472 3.594-3.328 19.54-13.19 23.97-16.28 7.33-5.114 10.53-10.22 8.16-16.5-1.66-4.316-5.686-5.976-9.961-5.976a18.5 18.5 0 0 0 -3.993 .448c-8.035 1.743-15.84 5.769-20.35 6.857a7.1 7.1 0 0 1 -1.66 .224c-2.408 0-3.279-1.071-3.088-3.968 .564-8.783 1.759-25.92 .373-41.94-1.884-22.03-8.99-32.95-17.43-42.6-4.051-4.624-23.14-24.65-59.54-24.65S168.5 134.4 164.5 139c-8.434 9.654-15.53 20.57-17.43 42.6-1.386 16.01-.141 33.15 .373 41.94 .166 2.756-.68 3.968-3.088 3.968a7.1 7.1 0 0 1 -1.66-.224c-4.507-1.087-12.31-5.113-20.35-6.856a18.49 18.49 0 0 0 -3.993-.449c-4.25 0-8.3 1.636-9.961 5.977-2.374 6.276 .847 11.38 8.168 16.49 4.425 3.088 20.37 12.96 23.97 16.28 3.719 3.437 3.237 6.093 2.805 9.471-.356 2.79-8.384 40.39-58.69 64.75-2.946 1.428-7.96 4.45 .88 9.331 13.88 7.628 23.11 6.807 30.3 11.43 6.093 3.927 2.5 12.39 6.923 15.45 5.454 3.76 21.58-.266 42.33 6.6 17.43 5.744 28.12 22.01 58.96 22.01s41.79-16.3 58.94-21.97c20.8-6.865 36.89-2.839 42.34-6.6 4.433-3.055 .822-11.52 6.923-15.45 7.181-4.624 16.41-3.8 30.3-11.47C371.4 337.4 366.3 334.3 363.4 332.8z"], + "square-steam": [448, 512, ["steam-square"], "f1b7", "M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4 .5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"], + "square-tumblr": [448, 512, ["tumblr-square"], "f174", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2 .5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2 .5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"], + "square-twitter": [448, 512, ["twitter-square"], "f081", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8 .2 5.7 .2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3 .6 10.4 .8 15.8 .8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.45 65.45 0 0 1 -29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"], + "square-viadeo": [448, 512, ["viadeo-square"], "f2aa", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4 .2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"], + "square-vimeo": [448, 512, ["vimeo-square"], "f194", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"], + "square-whatsapp": [448, 512, ["whatsapp-square"], "f40c", "M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4 .9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6 .1 2.4 .1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3 .3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9 .9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"], + "square-xing": [448, 512, ["xing-square"], "f169", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6 .2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1 .1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"], + "square-youtube": [448, 512, [61798, "youtube-square"], "f431", "M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"], + "squarespace": [512, 512, [], "f5be", "M186.1 343.3c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.2 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.1 445.1c19.27 19.29 50.53 19.31 69.82 .04l.04-.04 119.3-119.2c38.59-38.59 38.59-101.1 0-139.7-38.59-38.59-101.2-38.59-139.7 0l-157.2 157.2zm244.5-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.2c-19.27 19.29-50.53 19.31-69.82 .05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01 .01c-9.65 9.64-9.66 25.28-.02 34.93l.02 .02c38.58 38.57 101.1 38.57 139.7 0l157.2-157.2c9.65-9.65 9.65-25.29 .01-34.93zm-261.1 87.33l157.2-157.2c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.7 290.9c-19.28 19.29-50.56 19.3-69.85 .01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02 .02L28.93 186.1c-38.58 38.59-38.58 101.1 0 139.7 38.6 38.59 101.1 38.59 139.7 .01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.2-157.2c19.28-19.29 50.55-19.3 69.84-.02l.02 .02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.1-38.59-139.7 0L81.33 238.5c-9.65 9.64-9.65 25.28-.01 34.93h.01z"], + "stack-exchange": [448, 512, [], "f18d", "M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"], + "stack-overflow": [384, 512, [], "f16c", "M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"], + "stackpath": [448, 512, [], "f842", "M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.8c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18 .56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.4-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.2h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.9 325L347 186.8h-31.09L268 325zm106.5-138.2h-31.09L325.5 325h29.94z"], + "staylinked": [440, 512, [], "f3f5", "M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7 .7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3 .4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7 .9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1 .1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9 .5l160.4 159c3.7 3.5 10 3.7 14.1 .5l45.8-35.8c4.1-3.2 4.4-8.7 .7-12.2z"], + "steam": [496, 512, [], "f1b6", "M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3 .1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"], + "steam-symbol": [448, 512, [], "f3f6", "M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5 .2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9 .1 76.2-33.9 76.2-76.2z"], + "sticker-mule": [576, 512, [], "f3f7", "M561.7 199.6c-1.3 .3 .3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3 .5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8 .4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5 .5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5 .5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4 .5 1 1 2 1.5 3.5 .5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5 .5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5 .3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6 .5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3 .8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"], + "strava": [384, 512, [], "f428", "M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"], + "stripe": [640, 512, [], "f429", "M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3 .6-11.6 .6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4 .1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6 .1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4 .1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"], + "stripe-s": [384, 512, [], "f42a", "M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.1 396.1 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"], + "studiovinari": [512, 512, [], "f3f8", "M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3 .7 20.3 .7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"], + "stumbleupon": [512, 512, [], "f1a4", "M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"], + "stumbleupon-circle": [496, 512, [], "f1a3", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"], + "superpowers": [448, 512, [], "f2dd", "M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"], + "supple": [640, 512, [], "f3f9", "M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7 .4 15.5 .6 23.4 .6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6 .2 23.3 .5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"], + "suse": [640, 512, [], "f7d6", "M471.1 102.7s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.1a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2 .3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9 .5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5 .4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3 .5-76.2-25.4-81.6-28.2-.3-.4 .1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7 .8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3 .1-.1-.9-.3-.9 .7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0 -25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"], + "swift": [448, 512, [], "f8e1", "M448 156.1c0-4.51-.08-9-.2-13.52a196.3 196.3 0 0 0 -2.58-29.42 99.62 99.62 0 0 0 -9.22-28A94.08 94.08 0 0 0 394.8 44a99.17 99.17 0 0 0 -28-9.22 195 195 0 0 0 -29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.1c-4.51 0-9 .08-13.52 .2-2.45 .07-4.91 .15-7.37 .27a171.7 171.7 0 0 0 -22.06 2.32 103.1 103.1 0 0 0 -21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0 -18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0 -9.22 28 196.3 196.3 0 0 0 -2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.8c0 4.51 .08 9 .21 13.51a196.1 196.1 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5 .12 9 .17 13.52 .2H323.9c4.51 0 9-.08 13.52-.2a196.6 196.6 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.8a99.3 99.3 0 0 0 9.22-28 194.8 194.8 0 0 0 2.59-29.42c.12-4.5 .17-9 .2-13.51V172.1c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42 .25c-39.5 21-92.53 22.54-145.9-.38A234.6 234.6 0 0 1 45 290.1a230.6 230.6 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.1-147.2a197.1 197.1 0 0 1 -18.78-25.9c43.7 40 112.7 90.22 137.5 104.1-52.57-55.49-98.89-123.9-96.72-121.7 82.79 83.42 159.2 130.6 159.2 130.6 2.88 1.58 5 2.85 6.73 4a127.4 127.4 0 0 0 4.16-12.47c13.22-48.33-1.66-103.6-35.31-149.2C329.6 141.8 375 229.3 356.4 303.4c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"], + "symfony": [512, 512, [], "f83d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.7 143.5c-11.47 .41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.8 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.7-29 34.46-58.4 39.82-71.58 40.26-24.65 .85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71 .11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.3 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.2 140.1 251.9 197 262 205.3c37.17-109 100.5-105.5 102.4-105.5 25.16-.81 44.19 10.59 44.83 28.65 .25 7.69-4.17 22.59-19.52 23.13z"], + "teamspeak": [512, 512, [], "f4f9", "M244.2 346.8c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6 .6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0 -8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.6 222.6 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.6 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.3v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.8c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"], + "telegram": [496, 512, [62462, "telegram-plane"], "f2c6", "M248 8C111 8 0 119 0 256S111 504 248 504 496 392.1 496 256 384.1 8 248 8zM362.1 176.7c-3.732 39.22-19.88 134.4-28.1 178.3-3.476 18.58-10.32 24.82-16.95 25.42-14.4 1.326-25.34-9.517-39.29-18.66-21.83-14.31-34.16-23.22-55.35-37.18-24.49-16.14-8.612-25 5.342-39.5 3.652-3.793 67.11-61.51 68.33-66.75 .153-.655 .3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283 .746-104.6 69.14-14.85 10.19-26.89 9.934c-8.855-.191-25.89-5.006-38.55-9.123-15.53-5.048-27.88-7.717-26.8-16.29q.84-6.7 18.45-13.7 108.4-47.25 144.6-62.3c68.87-28.65 83.18-33.62 92.51-33.79 2.052-.034 6.639 .474 9.61 2.885a10.45 10.45 0 0 1 3.53 6.716A43.76 43.76 0 0 1 362.1 176.7z"], + "tencent-weibo": [384, 512, [], "f1d5", "M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1 .1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"], + "the-red-yeti": [512, 512, [], "f69d", "M488.2 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0 -25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5 .5a239.4 239.4 0 0 0 -68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0 -.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.3 194.3 0 0 0 -46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.2 200.2 0 0 0 -27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7 .7 3.4 1.2 5.2 0 25.5 .4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.8 181.8 0 0 0 495 255a44.74 44.74 0 0 0 -6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.4 242.4 0 0 1 -27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1 -1.7-15.2c5.4 .5 8.8 3.4 9.3 10.1 .5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8 .9-.7 14.8h-2.5a62.32 62.32 0 0 0 -8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5 .5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.7 234.7 0 0 0 -6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1 .5c-11.8 13.5-27.8 21.9-48.5 24.8a201.3 201.3 0 0 1 -23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0 -14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7 .5 1.2c2 .2 3.9 .5 6.2 .7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4 .5 13 1 19.4 1.2 6.4 0 8.4 .5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.1 141.1 0 0 1 -3 28.3 209.9 209.9 0 0 1 -16 46l2.5 .5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2 .2-.2 .2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.3-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3 .5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.6 262.6 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2 .7 89.5zm115.3-214.4l-2.5 .5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.8 214.8 0 0 1 -93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2 .4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7 .5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.2 254.2 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0 -14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2 .5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5 .5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6 .3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5 .5 .5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0 -.5-1.7 14.21 14.21 0 0 0 -13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0 -2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1 -11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9 .5 .5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1 .5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2 .5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1 .5c-5.9 1.2-12.3 4.2-19.4 8.4z"], + "themeco": [448, 512, [], "f5c6", "M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.8c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.8 503.7c-9.93 5.66-26 5.57-35.85-.21L17.86 395.1C8 389.3 0 375.4 0 364V146.7c0-11.44 8-25.36 17.91-31.08zm-77.4 199.8c-15.94 0-31.89 .14-47.83 .14v101.4H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.1 100.3l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.6h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.6-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"], + "themeisle": [512, 512, [], "f2b2", "M208 88.29c0-10 6.286-21.71 17.72-21.71 11.14 0 17.71 11.71 17.71 21.71 0 10.28-6.572 21.71-17.71 21.71C214.3 110 208 98.57 208 88.29zm304 160c0 36-11.43 102.3-36.29 129.7-22.86 24.86-87.43 61.14-120.9 70.57l-1.143 .286v32.57c0 16.29-12.57 30.57-29.14 30.57-10 0-19.43-5.714-24.57-14.29-5.427 8.572-14.86 14.29-24.86 14.29-10 0-19.43-5.714-24.86-14.29-5.142 8.572-14.57 14.29-24.57 14.29-10.29 0-19.43-5.714-24.86-14.29-5.143 8.572-14.57 14.29-24.57 14.29-18.86 0-29.43-15.71-29.43-32.86-16.29 12.28-35.72 19.43-56.57 19.43-22 0-43.43-8.285-60.29-22.86 10.28-.286 20.57-2.286 30.28-5.714-20.86-5.714-39.43-18.86-52-36.29 21.37 4.645 46.21 1.673 67.14-11.14-22-22-56.57-58.86-68.57-87.43C1.143 321.7 0 303.7 0 289.4c0-49.71 20.29-160 86.29-160 10.57 0 18.86 4.858 23.14 14.86a158.8 158.8 0 0 1 12-15.43c2-2.572 5.714-5.429 7.143-8.286 7.999-12.57 11.71-21.14 21.71-34C182.6 45.43 232 17.14 285.1 17.14c6 0 12 .285 17.71 1.143C313.7 6.571 328.9 0 344.6 0c14.57 0 29.71 6 40 16.29 .857 .858 1.428 2.286 1.428 3.428 0 3.714-10.28 13.43-12.86 16.29 4.286 1.429 15.71 6.858 15.71 12 0 2.857-2.857 5.143-4.571 7.143 31.43 27.71 49.43 67.14 56.29 108 4.286-5.143 10.28-8.572 17.14-8.572 10.57 0 20.86 7.144 28.57 14C507.1 187.1 512 221.7 512 248.3zM188 89.43c0 18.29 12.57 37.14 32.29 37.14 19.71 0 32.28-18.86 32.28-37.14 0-18-12.57-36.86-32.28-36.86-19.72 0-32.29 18.86-32.29 36.86zM237.7 194c0-19.71 3.714-39.14 8.571-58.29-52.04 79.53-13.53 184.6 68.86 184.6 21.43 0 42.57-7.714 60-20 2-7.429 3.714-14.86 3.714-22.57 0-14.29-6.286-21.43-20.57-21.43-4.571 0-9.143 .857-13.43 1.714-63.34 12.67-107.1 3.669-107.1-63.1zm-41.14 254.9c0-11.14-8.858-20.86-20.29-20.86-11.43 0-20 9.715-20 20.86v32.57c0 11.14 8.571 21.14 20 21.14 11.43 0 20.29-9.715 20.29-21.14v-32.57zm49.14 0c0-11.14-8.572-20.86-20-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.857 21.14 20.29 21.14 11.43 0 20-10 20-21.14v-32.57zm49.71 0c0-11.14-8.857-20.86-20.28-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.857 21.14 20.29 21.14 11.43 0 20.28-9.715 20.28-21.14v-32.57zm49.72 0c0-11.14-8.857-20.86-20.29-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.858 21.14 20.29 21.14 11.43 0 20.29-10 20.29-21.14v-32.57zM421.7 286c-30.86 59.14-90.29 102.6-158.6 102.6-96.57 0-160.6-84.57-160.6-176.6 0-16.86 2-33.43 6-49.71-20 33.72-29.71 72.57-29.71 111.4 0 60.29 24.86 121.7 71.43 160.9 5.143-9.714 14.86-16.29 26-16.29 10 0 19.43 5.714 24.57 14.29 5.429-8.571 14.57-14.29 24.86-14.29 10 0 19.43 5.714 24.57 14.29 5.429-8.571 14.86-14.29 24.86-14.29 10 0 19.43 5.714 24.86 14.29 5.143-8.571 14.57-14.29 24.57-14.29 10.86 0 20.86 6.572 25.71 16 43.43-36.29 68.57-92 71.43-148.3zm10.57-99.71c0-53.71-34.57-105.7-92.57-105.7-30.28 0-58.57 15.14-78.86 36.86C240.9 183.8 233.4 254 302.3 254c28.81 0 97.36-28.54 84.29 36.86 28.86-26 45.71-65.71 45.71-104.6z"], + "think-peaks": [576, 512, [], "f731", "M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5 .1-235.8-404.6z"], + "tiktok": [448, 512, [], "e07b", "M448 209.9a210.1 210.1 0 0 1 -122.8-39.25V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.62 74.62 0 1 0 52.23 71.18V0l88 0a121.2 121.2 0 0 0 1.86 22.17h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.14z"], + "trade-federation": [496, 512, [], "f513", "M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5 .1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"], + "trello": [448, 512, [], "f181", "M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8 .1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"], + "tumblr": [320, 512, [], "f173", "M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1 .8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5 .9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"], + "twitch": [512, 512, [], "f1e8", "M391.2 103.5H352.5v109.7h38.63zM285 103H246.4V212.8H285zM120.8 0 24.31 91.42V420.6H140.1V512l96.53-91.42h77.25L487.7 256V0zM449.1 237.8l-77.22 73.12H294.6l-67.6 64v-64H140.1V36.58H449.1z"], + "twitter": [512, 512, [], "f099", "M459.4 151.7c.325 4.548 .325 9.097 .325 13.65 0 138.7-105.6 298.6-298.6 298.6-59.45 0-114.7-17.22-161.1-47.11 8.447 .974 16.57 1.299 25.34 1.299 49.06 0 94.21-16.57 130.3-44.83-46.13-.975-84.79-31.19-98.11-72.77 6.498 .974 12.99 1.624 19.82 1.624 9.421 0 18.84-1.3 27.61-3.573-48.08-9.747-84.14-51.98-84.14-102.1v-1.299c13.97 7.797 30.21 12.67 47.43 13.32-28.26-18.84-46.78-51.01-46.78-87.39 0-19.49 5.197-37.36 14.29-52.95 51.65 63.67 129.3 105.3 216.4 109.8-1.624-7.797-2.599-15.92-2.599-24.04 0-57.83 46.78-104.9 104.9-104.9 30.21 0 57.5 12.67 76.67 33.14 23.72-4.548 46.46-13.32 66.6-25.34-7.798 24.37-24.37 44.83-46.13 57.83 21.12-2.273 41.58-8.122 60.43-16.24-14.29 20.79-32.16 39.31-52.63 54.25z"], + "typo3": [448, 512, [], "f42b", "M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"], + "uber": [448, 512, [], "f402", "M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"], + "ubuntu": [496, 512, [], "f7df", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1 .7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"], + "uikit": [448, 512, [], "f403", "M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"], + "umbraco": [510, 512, [], "f8e8", "M255.4 8C118.4 7.83 7.14 118.7 7 255.7c-.07 137 111 248.2 248 248.3 136.9 0 247.8-110.7 248-247.7S392.3 8.17 255.4 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78 .22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.8 224.8 0 0 1 0-30.71 418.4 418.4 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.6 380.6 0 0 0 -2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.6 242.6 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0 -2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05 .81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.7 415.7 0 0 1 3.61 43.88 228.1 228.1 0 0 1 -.04 30.73z"], + "uncharted": [448, 512, [], "e084", "M171.7 232.8A5.381 5.381 0 0 0 176.7 229.5 48.08 48.08 0 0 1 191.6 204.2c1.243-.828 1.657-2.484 1.657-4.141a4.22 4.22 0 0 0 -2.071-3.312L74.43 128.5 148.1 85a9.941 9.941 0 0 0 4.968-8.281 9.108 9.108 0 0 0 -4.968-8.281L126.6 55.6a9.748 9.748 0 0 0 -9.523 0l-100.2 57.97a9.943 9.943 0 0 0 -4.969 8.281V236.1a9.109 9.109 0 0 0 4.969 8.281L39.24 258.1a8.829 8.829 0 0 0 4.968 1.242 9.4 9.4 0 0 0 6.625-2.484 10.8 10.8 0 0 0 2.9-7.039V164.5L169.7 232.4A4.5 4.5 0 0 0 171.7 232.8zM323.3 377.7a12.48 12.48 0 0 0 -4.969 1.242l-74.53 43.06V287.9c0-2.9-2.9-5.8-6.211-4.555a53.04 53.04 0 0 1 -28.98 .414 4.86 4.86 0 0 0 -6.21 4.555V421.6l-74.53-43.06a8.83 8.83 0 0 0 -4.969-1.242 9.631 9.631 0 0 0 -9.523 9.523v26.08a9.107 9.107 0 0 0 4.969 8.281l100.2 57.55A8.829 8.829 0 0 0 223.5 480a11.03 11.03 0 0 0 4.969-1.242l100.2-57.55a9.941 9.941 0 0 0 4.968-8.281V386.8C332.8 382.3 328.2 377.7 323.3 377.7zM286 78a23 23 0 1 0 -23-23A23 23 0 0 0 286 78zm63.63-10.09a23 23 0 1 0 23 23A23 23 0 0 0 349.6 67.91zM412.8 151.6a23 23 0 1 0 -23-23A23 23 0 0 0 412.8 151.6zm-63.18-9.2a23 23 0 1 0 23 23A23 23 0 0 0 349.6 142.4zm-63.63 83.24a23 23 0 1 0 -23-23A23 23 0 0 0 286 225.6zm-62.07 36.36a23 23 0 1 0 -23-23A23 23 0 0 0 223.9 262zm188.9-82.36a23 23 0 1 0 23 23A23 23 0 0 0 412.8 179.6zm0 72.27a23 23 0 1 0 23 23A23 23 0 0 0 412.8 251.9z"], + "uniregistry": [384, 512, [], "f404", "M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5 .2-4.9 .2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"], + "unity": [448, 512, [], "e049", "M243.6 91.6L323.7 138.4C326.6 140 326.7 144.6 323.7 146.2L228.5 201.9C225.6 203.6 222.2 203.4 219.5 201.9L124.4 146.2C121.4 144.6 121.4 139.1 124.4 138.4L204.4 91.6V0L0 119.4V358.3L78.38 312.5V218.9C78.33 215.6 82.21 213.2 85.09 214.1L180.3 270.6C183.2 272.3 184.8 275.3 184.8 278.5V389.7C184.8 393 180.1 395.4 178.1 393.6L97.97 346.8L19.58 392.6L224 512L428.4 392.6L350 346.8L269.9 393.6C267.1 395.3 263.1 393.1 263.2 389.7V278.5C263.2 275.1 265.1 272.2 267.7 270.6L362.9 214.1C365.7 213.2 369.7 215.5 369.6 218.9V312.5L448 358.3V119.4L243.6 0V91.6z"], + "unsplash": [448, 512, [], "e07c", "M448 230.2V480H0V230.2H141.1V355.1H306.9V230.2zM306.9 32H141.1V156.9H306.9z"], + "untappd": [640, 512, [], "f405", "M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1 .6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4 .9-2.5 4.4-2.3 7.4 .1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4 .9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3 .5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5 .1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6 .3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6 .5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"], + "ups": [384, 512, [], "f7e0", "M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4 .6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2 .6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"], + "usb": [640, 512, [], "f287", "M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4 .8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9 .3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"], + "usps": [576, 512, [], "f7e1", "M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8 .1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"], + "ussunnah": [512, 512, [], "f407", "M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2 .8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7 .2-9.4 .5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5 .2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6 .5 9.3 .5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 .8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3 .2 .6 .5 1.4 .6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2 .3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8 .5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6 .9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"], + "vaadin": [448, 512, [], "f408", "M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"], + "viacoin": [384, 512, [], "f237", "M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"], + "viadeo": [448, 512, [], "f2a9", "M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"], + "viber": [512, 512, [], "f409", "M444 49.9C431.3 38.2 379.9 .9 265.3 .4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9 .4-85.7 .4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9 .4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9 .6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4 .7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5 .9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9 .1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7 .5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1 .8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"], + "vimeo": [448, 512, [], "f40a", "M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3 .9 49 22.5 47.1 64.7z"], + "vimeo-v": [448, 512, [], "f27d", "M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"], + "vine": [384, 512, [], "f1ca", "M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"], + "vk": [448, 512, [], "f189", "M31.49 63.49C0 94.98 0 145.7 0 247V264.1C0 366.3 0 417 31.49 448.5C62.98 480 113.7 480 215 480H232.1C334.3 480 385 480 416.5 448.5C448 417 448 366.3 448 264.1V247C448 145.7 448 94.98 416.5 63.49C385 32 334.3 32 232.1 32H215C113.7 32 62.98 32 31.49 63.49zM75.6 168.3H126.7C128.4 253.8 166.1 289.1 196 297.4V168.3H244.2V242C273.7 238.8 304.6 205.2 315.1 168.3H363.3C359.3 187.4 351.5 205.6 340.2 221.6C328.9 237.6 314.5 251.1 297.7 261.2C316.4 270.5 332.9 283.6 346.1 299.8C359.4 315.9 369 334.6 374.5 354.7H321.4C316.6 337.3 306.6 321.6 292.9 309.8C279.1 297.9 262.2 290.4 244.2 288.1V354.7H238.4C136.3 354.7 78.03 284.7 75.6 168.3z"], + "vnv": [640, 512, [], "f40b", "M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"], + "vuejs": [448, 512, [], "f41f", "M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"], + "watchman-monitoring": [512, 512, [], "e087", "M256 16C123.5 16 16 123.5 16 256S123.5 496 256 496 496 388.5 496 256 388.5 16 256 16zM121.7 429.1C70.06 388.1 36.74 326.3 36.74 256a218.5 218.5 0 0 1 9.587-64.12l102.9-17.9-.121 10.97-13.94 2.013s-.144 12.5-.144 19.55a12.78 12.78 0 0 0 4.887 10.35l9.468 7.4zm105.7-283.3 8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46 0 0 0-32.34 30.47-39.53 34.5-7.078 3.964-.144 9.344-.144 9.344l8.481 7.618-.048 4.369L75.98 131c39.64-56.94 105.5-94.3 180-94.3A218.8 218.8 0 0 1 420.9 111.8l-193.5 37.7zm34.06 329.3-33.9-250.9 9.467-7.4a12.78 12.78 0 0 0 4.888-10.35c0-7.044-.144-19.55-.144-19.55l-13.94-2.013-.116-10.47 241.7 31.39A218.9 218.9 0 0 1 475.3 256C475.3 375.1 379.8 472.2 261.4 475.1z"], + "waze": [512, 512, [], "f83f", "M502.2 201.7C516.7 287.5 471.2 369.6 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1 -51.57-49c-6.44 .19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.9c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.3C94.8 95.2 193.1 32 288.1 32c102.5 0 197.1 70.67 214.1 169.7zM373.5 388.3c42-19.18 81.33-56.71 96.29-102.1 40.48-123.1-64.15-228-181.7-228-83.45 0-170.3 55.42-186.1 136-9.53 48.91 5 131.4-68.75 131.4C58.21 358.6 91.6 378.1 127 389.5c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9 .82a51.69 51.69 0 0 1 78.78-16.42zM205.1 187.1c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.6 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.6 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06 .28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"], + "weebly": [512, 512, [], "f5cc", "M425.1 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143c0 28.96 4.18 33.27 77.17 233.5 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.6 77.5-205.6 77.5-227.2 .63-48.32-36.01-83.47-86.92-83.47zm26.34 114.8l-65.57 176.4c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.4h-.95L216.1 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.6c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.8h.95l44.66-136.8c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.8h.95l44.03-139.8c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"], + "weibo": [512, 512, [], "f18a", "M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8 .3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4 .6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"], + "weixin": [576, 512, [], "f1d7", "M385.2 167.6c6.4 0 12.6 .3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2 .1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3 .1 10-9.9 19.6-24.4 19.6z"], + "whatsapp": [448, 512, [], "f232", "M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"], + "whmcs": [448, 512, [], "f40d", "M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6 .3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1 .5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2 .2 6.9 .1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"], + "wikipedia-w": [640, 512, [], "f266", "M640 51.2l-.3 12.2c-28.1 .8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3 .3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4 .2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5 .3v13.1c-19.4 .6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4 .3-3.6 0-10.3 .3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5 .8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1 .2 .5z"], + "windows": [448, 512, [], "f17a", "M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"], + "wirsindhandwerk": [512, 512, ["wsh"], "e2d0", "M50.77 479.8h83.36V367.8l-83.36 47.01zm329 0h82.35V414.9l-82.35-47.01zm.0057-448V251.6L256.2 179.2 134.5 251.6V31.81H50.77V392.6L256.2 270.3 462.2 392.6V31.81z"], + "wix": [640, 512, [], "f5cf", "M393.4 131.7c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.7-28.48-108.6c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.9 55.28 167.2C49.73 140.5 23.86 128.1 0 131.1l65.57 247.9s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.4 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.9c-24.42-3.07-49.82 8.93-55.3 35.27zm115.8 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.1s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.4l-.02 .01v-8.98zm163.4 84.08L640 132.8s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47 .73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.7-82.97 123.4s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.5z"], + "wizards-of-the-coast": [640, 512, [], "f730", "M219.2 345.7c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92 .26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.8 75.94c-.34 1.7-.55 1.67 .79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.3-78.03-54.73-6.02-124.4 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79 .26c63.89-58.4 131.2-77.25 184.4-73.85 58.4 3.67 100 34.04 100 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.3 240.4c.79 7.07 4.19 10.21 9.17 10.47 5.5 .26 9.43-2.62 10.47-6.55 .79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.8 89.32 13.1 226.8 .79 241.2c-1.05 .52-1.31 .79 .79 1.31 60.49 16.5 155.8 81.18 196.1 202.2l1.05 .26c55.25-69.92 140.9-128.1 236.1-128.1 80.92 0 130.1 42.16 130.1 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2 .79 .79 .79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26 .52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78 .79 3.4 2.09 9.69 2.36 14.93 0 1.05 .79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.7 176 489.4 89.32 342.3 89.32zm-99.24 289.6c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5 .28 .39 12.13 16.57-4.71 31.16zm2.09-136.4l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.6l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52 .26c1.31 1.83 2.09 2.88 3.4 4.71l-.26 .52c-1.05-.26-2.36-.79-5.24 .26-2.09 .79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83 .52 1.83 1.83 5.5l-.26 .26c-3.06 .61-4.65 .34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26 .26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76 .26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52 .26 3.14 4.98-.26 .52c-3.53-1.76-7.35 .76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26 .52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4 .79-8.9 2.62-12.83 3.93l-.26 .26c.79 2.62 3.14 9.95 4.19 13.88 .79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88 .26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26 .26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26 .26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45 .54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26 .26c-4.71 .52-14.14 2.36-22.52 4.19l-.26-.26 .79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26 .26c.52 2.36 .79 3.14 1.57 5.5l-.26 .26c-1.14-1.14-3.34-3.2-16.24-.79l-.26 .26c.26 1.57 1.05 6.55 1.57 9.95l.26 .26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26 .26c.26 2.09 1.57 9.43 2.09 12.57l.26 .26c1.15 .38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25 .02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24 .79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69 .26 2.36 .52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26 .26c-.52 1.83-1.83 6.02-1.83 6.28l-.52 .52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26 .52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69 .79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.4c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24 .59-7.27 .26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09 .79 5.5 2.09 7.59 2.88 .48 .48 .18-1.87-1.05 25.14-.24 1.81 .02 2.6 .8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27 .09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26 .26-5.76-4.45 .26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26 .26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59 .75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38 .79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.5-191.9-129.6-53.42-1.05-94.27 15.45-132.8 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05 .26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.6 101.1 231.9 93.23 231.5c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4 .52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.1-35.88 67.04 1.05 167.3 40.85 199.8 139.8 .78 2.1-.01 2.63-.79 .27zM203.5 152.4s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.8 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.4 67.07c-58.4 0-106.1 12.05-114.1 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57 .26c6.55-1.83 48.97-13.88 110.2-13.88 180.2 0 301.7 116.8 301.7 223.4v9.95c0 1.31 .79 2.62 1.05 .52 .52-2.09 .79-8.64 .79-19.64 .26-83.79-96.63-227.6-321.6-227.6zm211.1 169.7c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81 .52 13.35 6.02 14.66 3.67 1.05 8.9 .52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.6c1.83 .52 3.14 1.05 5.76 1.83 0-1.83 .52-8.38 .79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"], + "wodu": [640, 512, [], "e088", "M178.4 339.7H141.1L112.2 223.5h-.478L83.23 339.7H45.2L0 168.9H37.55L64.57 285.2h.478L94.71 168.9h35.16l29.18 117.7h.479L187.5 168.9h36.83zM271.4 212.7c38.98 0 64.1 25.83 64.1 65.29 0 39.22-25.11 65.05-64.1 65.05-38.74 0-63.85-25.83-63.85-65.05C207.5 238.5 232.7 212.7 271.4 212.7zm0 104.8c23.2 0 30.13-19.85 30.13-39.46 0-19.85-6.934-39.7-30.13-39.7-27.7 0-29.89 19.85-29.89 39.7C241.5 297.6 248.4 317.5 271.4 317.5zM435.1 323.9h-.478c-7.893 13.39-21.76 19.13-37.55 19.13-37.31 0-55.49-32.04-55.49-66.25 0-33.24 18.42-64.1 54.77-64.1 14.59 0 28.94 6.218 36.83 18.42h.24V168.9h33.96v170.8H435.1zM405.4 238.3c-22.24 0-29.89 19.13-29.89 39.46 0 19.37 8.848 39.7 29.89 39.7 22.48 0 29.18-19.61 29.18-39.94C434.6 257.4 427.4 238.3 405.4 238.3zM592.1 339.7H560.7V322.5h-.718c-8.609 13.87-23.44 20.57-37.79 20.57-36.11 0-45.2-20.33-45.2-50.94V216.1h33.96V285.9c0 20.33 5.979 30.37 21.76 30.37 18.42 0 26.31-10.28 26.31-35.39V216.1H592.1zM602.5 302.9H640v36.83H602.5z"], + "wolf-pack-battalion": [512, 512, [], "f514", "M267.7 471.5l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.1-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.2 456.4 239.7l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.2l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.8l-58 38.71-3.52 93.25L369.8 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.6 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.6-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.3 59.82-3.52-93.25-58.06-38.71C185 65.1 135.8 22.87 95.3 0c-17.54 61.12-4.4 118.8 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.4 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.2 81.37 149.1 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.1 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1 -18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.7 376.5L181.5 366c-7.47-4.36-13.76-8.42-19.35-12.32 .6 7.26 .27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94 .9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"], + "wordpress": [512, 512, [], "f19a", "M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8 .9 0 1.8 .1 2.8 .2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7 .3 13.7 .3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"], + "wordpress-simple": [512, 512, [], "f411", "M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"], + "wpbeginner": [512, 512, [], "f297", "M462.8 322.4C519 386.7 466.1 480 370.9 480c-39.6 0-78.82-17.69-100.1-50.04-6.887 .356-22.7 .356-29.59 0C219.8 462.4 180.6 480 141.1 480c-95.49 0-148.3-92.1-91.86-157.6C-29.92 190.5 80.48 32 256 32c175.6 0 285.9 158.6 206.8 290.4zm-339.6-82.97h41.53v-58.08h-41.53v58.08zm217.2 86.07v-23.84c-60.51 20.92-132.4 9.198-187.6-33.97l.246 24.9c51.1 46.37 131.7 57.88 187.3 32.91zm-150.8-86.07h166.1v-58.08H189.6v58.08z"], + "wpexplorer": [512, 512, [], "f2de", "M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"], + "wpforms": [448, 512, [], "f298", "M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2 .1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"], + "wpressr": [496, 512, ["rendact"], "f3e4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm171.3 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03 .06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.8 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24 .1 28.48 .02 42.72 .05 6.24 .01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6 .23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21 .08 30.43 .02 45.64 .04 5.56 .01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33 .04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43 .05 52.86 0 79.29 .05 12.44 .02 13.93-13.65 3.9-13.64-25.26 .03-50.52 .02-75.78 .02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09 .06 25.98 .02 130.8 .03 6.08-.01 8.03 2.79 5.62 8.27z"], + "xbox": [512, 512, [], "f412", "M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7 .1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"], + "xing": [384, 512, [], "f168", "M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8 .3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1 .2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"], + "y-combinator": [448, 512, [], "f23b", "M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"], + "yahoo": [512, 512, [], "f19e", "M223.7 141.1 167 284.2 111 141.1H14.93L120.8 390.2 82.19 480h94.17L317.3 141.1zm105.4 135.8a58.22 58.22 0 1 0 58.22 58.22A58.22 58.22 0 0 0 329.1 276.9zM394.6 32l-93 223.5H406.4L499.1 32z"], + "yammer": [512, 512, [], "f840", "M500.7 159.5a12.78 12.78 0 0 0 -6.4-8.282 13.95 13.95 0 0 0 -10.08-1.125L457.8 156.7l-.043-.2-22.3 5.785-1.243 .333-.608-2.17A369 369 0 0 0 347.5 4.289a14.1 14.1 0 0 0 -19.78-.463l-102.9 102.7H24.95A24.9 24.9 0 0 0 0 131.4V380.4a24.96 24.96 0 0 0 24.92 24.9H224.1L328.1 508a13.67 13.67 0 0 0 19.33 0c.126-.126 .249-.255 .37-.385a368 368 0 0 0 69.58-107.4 403.5 403.5 0 0 0 17.3-50.8v-.028l20.41 5.336 .029-.073L483.3 362a20.25 20.25 0 0 0 2.619 .5 13.36 13.36 0 0 0 4.139-.072 13.5 13.5 0 0 0 10.52-9.924 415.9 415.9 0 0 0 .058-193zM337.1 24.65l.013 .014h-.013zm-110.2 165.2L174.3 281.1a11.34 11.34 0 0 0 -1.489 5.655v46.19a22.04 22.04 0 0 1 -22.04 22h-3.4A22.07 22.07 0 0 1 125.3 332.1V287.3a11.53 11.53 0 0 0 -1.388-5.51l-51.6-92.2a21.99 21.99 0 0 1 19.26-32.73h3.268a22.06 22.06 0 0 1 19.61 11.92l36.36 70.28 37.51-70.51a22.07 22.07 0 0 1 38.56-.695 21.7 21.7 0 0 1 0 21.97zM337.1 24.67a348.1 348.1 0 0 1 75.8 141.3l.564 1.952-114.1 29.6V131.4a25.01 25.01 0 0 0 -24.95-24.9H255.1zm60.5 367.3v-.043l-.014 .014a347.2 347.2 0 0 1 -60.18 95.23l-82.2-81.89h19.18a24.98 24.98 0 0 0 24.95-24.9v-66.2l114.6 29.86A385.2 385.2 0 0 1 397.6 391.1zm84-52.45 .015 .014-50.62-13.13L299.4 292.1V219.6l119.7-30.99 4.468-1.157 39.54-10.25 18.51-4.816A393 393 0 0 1 481.6 339.5z"], + "yandex": [256, 512, [], "f413", "M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"], + "yandex-international": [320, 512, [], "f414", "M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"], + "yarn": [496, 512, [], "f7e3", "M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4 .1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3 .8-10.8-5.7 .8-19.2 .8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3 .8 1.4 13.7 .8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2 .9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4 .2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"], + "yelp": [384, 512, [], "f1e9", "M42.9 240.3l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.5a22.79 22.79 0 0 1 -28.21-19.6 197.2 197.2 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.3a199.4 199.4 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.9 490l3.9-110.8c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.3-109.9l58.81 94a22.93 22.93 0 0 0 34 5.5 198.4 198.4 0 0 0 52.71-67.61A23 23 0 0 0 364.2 370l-105.4-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.3-132.2a197.4 197.4 0 0 0 -50.41-69.31 22.85 22.85 0 0 0 -34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.6a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0 -9.9 32l104.1 180.4c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0 -24.5-22.8 320.4 320.4 0 0 0 -112.3 30.1z"], + "yoast": [448, 512, [], "f2b1", "M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1 .6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"], + "youtube": [576, 512, [61802], "f167", "M549.7 124.1c-6.281-23.65-24.79-42.28-48.28-48.6C458.8 64 288 64 288 64S117.2 64 74.63 75.49c-23.5 6.322-42 24.95-48.28 48.6-11.41 42.87-11.41 132.3-11.41 132.3s0 89.44 11.41 132.3c6.281 23.65 24.79 41.5 48.28 47.82C117.2 448 288 448 288 448s170.8 0 213.4-11.49c23.5-6.321 42-24.17 48.28-47.82 11.41-42.87 11.41-132.3 11.41-132.3s0-89.44-11.41-132.3zm-317.5 213.5V175.2l142.7 81.21-142.7 81.2z"], + "zhihu": [640, 512, [], "f63f", "M170.5 148.1v217.5l23.43 .01 7.71 26.37 42.01-26.37h49.53V148.1H170.5zm97.75 193.9h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.8h72.82v170.3zm-118.5-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.1 0 396.3c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.1c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.1-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.4c-19.78 0-130.9 .93-131.1 .93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.2 16.49-232.4 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15 .89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.4s2.82 22.31 25.51 22.85h107.9v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08 .11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.4c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"] + }; + + bunker(function () { + defineIcons('fab', icons); + defineIcons('fa-brands', icons); + }); + +}()); +(function () { + 'use strict'; + + var _WINDOW = {}; + var _DOCUMENT = {}; + + try { + if (typeof window !== 'undefined') _WINDOW = window; + if (typeof document !== 'undefined') _DOCUMENT = document; + } catch (e) {} + + var _ref = _WINDOW.navigator || {}, + _ref$userAgent = _ref.userAgent, + userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; + var WINDOW = _WINDOW; + var DOCUMENT = _DOCUMENT; + var IS_BROWSER = !!WINDOW.document; + var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; + var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; + var PRODUCTION = function () { + try { + return "production" === 'production'; + } catch (e) { + return false; + } + }(); + var STYLE_TO_PREFIX = { + 'solid': 'fas', + 'regular': 'far', + 'light': 'fal', + 'thin': 'fat', + 'duotone': 'fad', + 'brands': 'fab', + 'kit': 'fak' + }; + var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); + var DUOTONE_CLASSES = { + GROUP: 'duotone-group', + SWAP_OPACITY: 'swap-opacity', + PRIMARY: 'primary', + SECONDARY: 'secondary' + }; + var RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) { + return "".concat(n, "x"); + })).concat(oneToTwenty.map(function (n) { + return "w-".concat(n); + })); + + function bunker(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + fn.apply(void 0, args); + } catch (e) { + if (!PRODUCTION) { + throw e; + } + } + } + + var w = WINDOW || {}; + if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; + if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; + if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; + if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; + var namespace = w[NAMESPACE_IDENTIFIER]; + + function normalizeIcons(icons) { + return Object.keys(icons).reduce(function (acc, iconName) { + var icon = icons[iconName]; + var expanded = !!icon.icon; + + if (expanded) { + acc[icon.iconName] = icon.icon; + } else { + acc[iconName] = icon; + } + + return acc; + }, {}); + } + + function defineIcons(prefix, icons) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var _params$skipHooks = params.skipHooks, + skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; + var normalized = normalizeIcons(icons); + + if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { + namespace.hooks.addPack(prefix, normalizeIcons(icons)); + } else { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); + } + /** + * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction + * of new styles we needed to differentiate between them. Prefix `fa` is now an alias + * for `fas` so we'll ease the upgrade process for our users by automatically defining + * this as well. + */ + + + if (prefix === 'fas') { + defineIcons('fa', icons); + } + } + + var icons = { + "address-book": [512, 512, [62138, "contact-book"], "f2b9", "M272 288h-64C163.8 288 128 323.8 128 368C128 376.8 135.2 384 144 384h192c8.836 0 16-7.164 16-16C352 323.8 316.2 288 272 288zM240 256c35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64S204.7 256 240 256zM496 320H480v96h16c8.836 0 16-7.164 16-16v-64C512 327.2 504.8 320 496 320zM496 64H480v96h16C504.8 160 512 152.8 512 144v-64C512 71.16 504.8 64 496 64zM496 192H480v96h16C504.8 288 512 280.8 512 272v-64C512 199.2 504.8 192 496 192zM384 0H96C60.65 0 32 28.65 32 64v384c0 35.35 28.65 64 64 64h288c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM400 448c0 8.836-7.164 16-16 16H96c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h288c8.836 0 16 7.162 16 16V448z"], + "address-card": [576, 512, [62140, "contact-card", "vcard"], "f2bb", "M208 256c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 227.3 172.7 256 208 256zM464 232h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 232 464 232zM240 288h-64C131.8 288 96 323.8 96 368C96 376.8 103.2 384 112 384h192c8.836 0 16-7.164 16-16C320 323.8 284.2 288 240 288zM464 152h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 152 464 152zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416z"], + "bell": [448, 512, [61602, 128276], "f0f3", "M256 32V49.88C328.5 61.39 384 124.2 384 200V233.4C384 278.8 399.5 322.9 427.8 358.4L442.7 377C448.5 384.2 449.6 394.1 445.6 402.4C441.6 410.7 433.2 416 424 416H24C14.77 416 6.365 410.7 2.369 402.4C-1.628 394.1-.504 384.2 5.26 377L20.17 358.4C48.54 322.9 64 278.8 64 233.4V200C64 124.2 119.5 61.39 192 49.88V32C192 14.33 206.3 0 224 0C241.7 0 256 14.33 256 32V32zM216 96C158.6 96 112 142.6 112 200V233.4C112 281.3 98.12 328 72.31 368H375.7C349.9 328 336 281.3 336 233.4V200C336 142.6 289.4 96 232 96H216zM288 448C288 464.1 281.3 481.3 269.3 493.3C257.3 505.3 240.1 512 224 512C207 512 190.7 505.3 178.7 493.3C166.7 481.3 160 464.1 160 448H288z"], + "bell-slash": [640, 512, [61943, 128277], "f1f6", "M183.6 118.6C206.5 82.58 244.1 56.84 288 49.88V32C288 14.33 302.3 .0003 320 .0003C337.7 .0003 352 14.33 352 32V49.88C424.5 61.39 480 124.2 480 200V233.4C480 278.8 495.5 322.9 523.8 358.4L538.7 377C543.1 383.5 545.4 392.2 542.6 400L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L183.6 118.6zM221.7 148.4L450.7 327.1C438.4 298.2 432 266.1 432 233.4V200C432 142.6 385.4 96 328 96H312C273.3 96 239.6 117.1 221.7 148.4V148.4zM160 233.4V222.1L206.7 258.9C202.7 297.7 189.5 335.2 168.3 368H345.2L406.2 416H120C110.8 416 102.4 410.7 98.37 402.4C94.37 394.1 95.5 384.2 101.3 377L116.2 358.4C144.5 322.9 160 278.8 160 233.4V233.4zM384 448C384 464.1 377.3 481.3 365.3 493.3C353.3 505.3 336.1 512 320 512C303 512 286.7 505.3 274.7 493.3C262.7 481.3 256 464.1 256 448H384z"], + "bookmark": [384, 512, [61591, 128278], "f02e", "M336 0h-288C21.49 0 0 21.49 0 48v431.9c0 24.7 26.79 40.08 48.12 27.64L192 423.6l143.9 83.93C357.2 519.1 384 504.6 384 479.9V48C384 21.49 362.5 0 336 0zM336 452L192 368l-144 84V54C48 50.63 50.63 48 53.1 48h276C333.4 48 336 50.63 336 54V452z"], + "building": [384, 512, [61687, 127970], "f1ad", "M88 104C88 95.16 95.16 88 104 88H152C160.8 88 168 95.16 168 104V152C168 160.8 160.8 168 152 168H104C95.16 168 88 160.8 88 152V104zM280 88C288.8 88 296 95.16 296 104V152C296 160.8 288.8 168 280 168H232C223.2 168 216 160.8 216 152V104C216 95.16 223.2 88 232 88H280zM88 232C88 223.2 95.16 216 104 216H152C160.8 216 168 223.2 168 232V280C168 288.8 160.8 296 152 296H104C95.16 296 88 288.8 88 280V232zM280 216C288.8 216 296 223.2 296 232V280C296 288.8 288.8 296 280 296H232C223.2 296 216 288.8 216 280V232C216 223.2 223.2 216 232 216H280zM0 64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM48 64V448C48 456.8 55.16 464 64 464H144V400C144 373.5 165.5 352 192 352C218.5 352 240 373.5 240 400V464H320C328.8 464 336 456.8 336 448V64C336 55.16 328.8 48 320 48H64C55.16 48 48 55.16 48 64z"], + "calendar": [448, 512, [128198, 128197], "f133", "M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z"], + "calendar-check": [448, 512, [], "f274", "M216.1 408.1C207.6 418.3 192.4 418.3 183 408.1L119 344.1C109.7 335.6 109.7 320.4 119 311C128.4 301.7 143.6 301.7 152.1 311L200 358.1L295 263C304.4 253.7 319.6 253.7 328.1 263C338.3 272.4 338.3 287.6 328.1 296.1L216.1 408.1zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z"], + "calendar-days": [448, 512, ["calendar-alt"], "f073", "M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 248H128V192H48V248zM48 296V360H128V296H48zM176 296V360H272V296H176zM320 296V360H400V296H320zM400 192H320V248H400V192zM400 408H320V464H384C392.8 464 400 456.8 400 448V408zM272 408H176V464H272V408zM128 408H48V448C48 456.8 55.16 464 64 464H128V408zM272 192H176V248H272V192z"], + "calendar-minus": [448, 512, [], "f272", "M152 352C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H152zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z"], + "calendar-plus": [448, 512, [], "f271", "M224 232C237.3 232 248 242.7 248 256V304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H248V400C248 413.3 237.3 424 224 424C210.7 424 200 413.3 200 400V352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H200V256C200 242.7 210.7 232 224 232zM152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z"], + "calendar-xmark": [448, 512, ["calendar-times"], "f273", "M257.9 328L304.1 375C314.3 384.4 314.3 399.6 304.1 408.1C295.6 418.3 280.4 418.3 271 408.1L224 361.9L176.1 408.1C167.6 418.3 152.4 418.3 143 408.1C133.7 399.6 133.7 384.4 143 375L190.1 328L143 280.1C133.7 271.6 133.7 256.4 143 247C152.4 237.7 167.6 237.7 176.1 247L224 294.1L271 247C280.4 237.7 295.6 237.7 304.1 247C314.3 256.4 314.3 271.6 304.1 280.1L257.9 328zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z"], + "chart-bar": [512, 512, ["bar-chart"], "f080", "M24 32C37.25 32 48 42.75 48 56V408C48 421.3 58.75 432 72 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H72C32.24 480 0 447.8 0 408V56C0 42.75 10.75 32 24 32zM128 136C128 122.7 138.7 112 152 112H360C373.3 112 384 122.7 384 136C384 149.3 373.3 160 360 160H152C138.7 160 128 149.3 128 136zM296 208C309.3 208 320 218.7 320 232C320 245.3 309.3 256 296 256H152C138.7 256 128 245.3 128 232C128 218.7 138.7 208 152 208H296zM424 304C437.3 304 448 314.7 448 328C448 341.3 437.3 352 424 352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H424z"], + "chess-bishop": [320, 512, [9821], "f43a", "M296 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512h272C309.3 512 320 501.3 320 488S309.3 464 296 464zM0 304c0 51.63 30.12 85.25 64 96v32h48v-67.13l-33.5-10.63C63.75 349.5 48 333.9 48 304c0-84.1 93.2-206.5 112.6-206.5c19.63 0 60.01 67.18 70.28 85.8l-66.13 66.13c-3.125 3.125-4.688 7.219-4.688 11.31S161.6 268.9 164.8 272L176 283.2c3.125 3.125 7.219 4.688 11.31 4.688s8.188-1.562 11.31-4.688L253 229C264.4 256.8 272 283.5 272 304c0 29.88-15.75 45.5-30.5 50.25L208 364.9V432H256v-32c33.88-10.75 64-44.38 64-96c0-73.38-67.75-197.2-120.6-241.5C213.4 59.12 224 47 224 32c0-17.62-14.38-32-32-32H128C110.4 0 96 14.38 96 32c0 15 10.62 27.12 24.62 30.5C67.75 106.8 0 230.6 0 304z"], + "chess-king": [448, 512, [9818], "f43f", "M391.9 464H55.95c-13.25 0-23.1 10.75-23.1 23.1S42.7 512 55.95 512h335.1c13.25 0 23.1-10.75 23.1-23.1S405.2 464 391.9 464zM448 216c0-11.82-3.783-23.51-11.08-33.17c-10.3-14.39-27-22.88-44.73-22.88L247.9 160V104h31.1c13.2 0 24.06-10.8 24.06-24S293.1 56 279.9 56h-31.1V23.1C247.9 10.8 237.2 0 223.1 0S199.9 10.8 199.9 23.1V56H167.9c-13.2 0-23.97 10.8-23.97 24S154.7 104 167.9 104h31.1V160H55.95C24.72 160 0 185.3 0 215.9C0 221.6 .8893 227.4 2.704 233L68.45 432h50.5L48.33 218.4C48.09 217.6 47.98 216.9 47.98 216.1C47.98 212.3 50.93 208 55.95 208h335.9c6.076 0 8.115 5.494 8.115 8.113c0 .6341-.078 1.269-.2405 1.887L328.8 432h50.62l65.1-199.2C447.2 227.3 448 221.7 448 216z"], + "chess-knight": [384, 512, [9822], "f441", "M44 320.6l14.5 6.5c-17.01 20.24-26.44 45.91-26.44 72.35C32.06 399.7 32.12 432 32.12 432h48v-32c0-24.75 14-47.5 36.13-58.63l38.13-23.37c13.25-6.625 21.75-20.25 21.75-35.13v-58.75l-15.37 9C155.6 235.8 151.9 240.4 150.5 245.9L143 271c-2.25 7.625-8 13.88-15.38 16.75L117.1 292C114 293.3 110.7 293.9 107.4 293.9c-3.626 0-7.263-.7514-10.66-2.254L63.5 276.9C54.12 272.6 48 263.2 48 252.9V140.5c0-5.125 2.125-10.12 5.75-13.88l7.375-7.375L49.5 96C48.5 94.12 48 92 48 89.88C48 84.38 52.38 80 57.88 80h105c86.75 0 156.1 70.38 156.1 157.1V432h48.06l-.0625-194.9C367.9 124 276 32 162.9 32H57.88C25.88 32 0 57.88 0 89.88c0 8.5 1.75 16.88 5.125 24.62C1.75 122.8 0 131.6 0 140.5v112.4C0 282.2 17.25 308.8 44 320.6zM80.12 164c0 11 8.875 20 20 20c11 0 20-9 20-20s-9-20-20-20C89 144 80.12 153 80.12 164zM360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464z"], + "chess-pawn": [320, 512, [9823], "f443", "M296 463.1H23.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24h272c13.25 0 23.1-10.75 23.1-23.1S309.3 463.1 296 463.1zM55.1 287.1L80 287.1v29.5c0 40.25-3.5 81.25-23.38 114.5h53.5C125.1 394.1 128 354.6 128 317.5v-29.5h64v29.5c0 37.13 2.875 77.5 17.88 114.5h53.5C243.5 398.7 240 357.7 240 317.5V287.1l24-.0001C277.3 287.1 288 277.3 288 263.1c0-13.25-10.75-24-23.1-24H241c23.75-21.88 38.1-53.12 38.1-87.1c0-9.393-1.106-19.05-3.451-28.86C272.3 105.4 244.9 32 159.1 32C93.75 32 40 85.75 40 151.1c0 34.88 15.12 66.12 39 88H55.1C42.75 239.1 32 250.7 32 263.1C32 277.3 42.75 287.1 55.1 287.1zM160 79.1c39.75 0 72 32.25 72 72S199.8 223.1 160 223.1S88 191.7 88 151.1S120.2 79.1 160 79.1z"], + "chess-queen": [512, 512, [9819], "f445", "M256 112c30.88 0 56-25.12 56-56S286.9 0 256 0S199.1 25.12 199.1 56S225.1 112 256 112zM511.1 197.4c0-5.178-2.509-10.2-7.096-13.26L476.4 168.2c-2.5-1.75-5.497-2.62-8.497-2.62c-5.501 .125-10.63 2.87-13.75 7.245c-9.001 12-23.16 19.13-38.16 19.13c-3.125 0-6.089-.2528-9.089-.8778c-23.13-4.25-38.88-26.25-38.88-49.75C367.1 134 361.1 128 354.6 128h-38.75c-6.001 0-11.63 4-12.88 9.875C298.2 160.1 278.7 176 255.1 176c-22.75 0-42.25-15.88-47-38.12C207.7 132 202.2 128 196.1 128h-38.75C149.1 128 143.1 134 143.1 141.4c0 18.49-13.66 50.62-47.95 50.62c-15.13 0-29.3-7.118-38.3-19.24C54.6 168.4 49.66 165.7 44.15 165.6c-3 0-5.931 .8951-8.432 2.645l-28.63 16C2.509 187.2 0 192.3 0 197.4c0 2.438 .5583 4.901 1.72 7.185L109.9 432h53.13L69.85 236.4C78.35 238.8 87.11 240 95.98 240c2.432 0 56.83 1.503 84.76-52.5C198.1 210.5 226.6 224 255.9 224c29.38 0 57.01-13.38 75.26-36.25C336.1 197.6 360.6 240 416 240c8.751 0 17.5-1.125 26-3.5L349 432h53.13l108.1-227.4C511.4 202.3 511.1 199.8 511.1 197.4zM424 464H87.98c-13.26 0-24 10.75-24 23.1S74.72 512 87.98 512h336c13.26 0 24-10.75 24-23.1S437.3 464 424 464z"], + "chess-rook": [384, 512, [9820], "f447", "M360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464zM345.1 32h-308C17 32 0 49 0 70v139.4C0 218.8 4 227.5 11 233.6L48 265.8c0 8.885 .0504 17.64 .0504 26.46c0 39.32-1.001 79.96-11.93 139.8h49C94.95 374.3 96.11 333.3 96.11 285.5C96.11 270.7 96 255.1 96 238.2L48 196.5V80h64V128H160V80h64V128h48V80h64v116.5L288 238.2c0 16.77-.1124 32.25-.1124 47.1c0 47.79 1.164 89.15 10.99 146.7h49c-10.92-59.83-11.93-100.6-11.93-139.9C335.9 283.3 336 274.6 336 265.8l37-32.13C380 227.5 384 218.8 384 209.4V70C384 49 367 32 345.1 32zM192 224C174.4 224 160 238.4 160 256v64h64V256C224 238.4 209.6 224 192 224z"], + "circle": [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9898, 9899, 11044, 61708, 61915, 9679], "f111", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "circle-check": [512, 512, [61533, "check-circle"], "f058", "M243.8 339.8C232.9 350.7 215.1 350.7 204.2 339.8L140.2 275.8C129.3 264.9 129.3 247.1 140.2 236.2C151.1 225.3 168.9 225.3 179.8 236.2L224 280.4L332.2 172.2C343.1 161.3 360.9 161.3 371.8 172.2C382.7 183.1 382.7 200.9 371.8 211.8L243.8 339.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "circle-dot": [512, 512, [128280, "dot-circle"], "f192", "M160 256C160 202.1 202.1 160 256 160C309 160 352 202.1 352 256C352 309 309 352 256 352C202.1 352 160 309 160 256zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "circle-down": [512, 512, [61466, "arrow-alt-circle-down"], "f358", "M344 240h-56L287.1 152c0-13.25-10.75-24-24-24h-16C234.7 128 223.1 138.8 223.1 152L224 240h-56c-9.531 0-18.16 5.656-22 14.38C142.2 263.1 143.9 273.3 150.4 280.3l88.75 96C243.7 381.2 250.1 384 256.8 384c7.781-.3125 13.25-2.875 17.75-7.844l87.25-96c6.406-7.031 8.031-17.19 4.188-25.88S353.5 240 344 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-left": [512, 512, [61840, "arrow-alt-circle-left"], "f359", "M360 224L272 224v-56c0-9.531-5.656-18.16-14.38-22C248.9 142.2 238.7 143.9 231.7 150.4l-96 88.75C130.8 243.7 128 250.1 128 256.8c.3125 7.781 2.875 13.25 7.844 17.75l96 87.25c7.031 6.406 17.19 8.031 25.88 4.188s14.28-12.44 14.28-21.94l-.002-56L360 288C373.3 288 384 277.3 384 264v-16C384 234.8 373.3 224 360 224zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-pause": [512, 512, [62092, "pause-circle"], "f28b", "M200 160C186.8 160 176 170.8 176 184v144C176 341.3 186.8 352 200 352S224 341.3 224 328v-144C224 170.8 213.3 160 200 160zM312 160C298.8 160 288 170.8 288 184v144c0 13.25 10.75 24 24 24s24-10.75 24-24v-144C336 170.8 325.3 160 312 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-play": [512, 512, [61469, "play-circle"], "f144", "M188.3 147.1C195.8 142.8 205.1 142.1 212.5 147.5L356.5 235.5C363.6 239.9 368 247.6 368 256C368 264.4 363.6 272.1 356.5 276.5L212.5 364.5C205.1 369 195.8 369.2 188.3 364.9C180.7 360.7 176 352.7 176 344V167.1C176 159.3 180.7 151.3 188.3 147.1V147.1zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "circle-question": [512, 512, [62108, "question-circle"], "f059", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM256 336c-18 0-32 14-32 32s13.1 32 32 32c17.1 0 32-14 32-32S273.1 336 256 336zM289.1 128h-51.1C199 128 168 159 168 198c0 13 11 24 24 24s24-11 24-24C216 186 225.1 176 237.1 176h51.1C301.1 176 312 186 312 198c0 8-4 14.1-11 18.1L244 251C236 256 232 264 232 272V288c0 13 11 24 24 24S280 301 280 288V286l45.1-28c21-13 34-36 34-60C360 159 329 128 289.1 128z"], + "circle-right": [512, 512, [61838, "arrow-alt-circle-right"], "f35a", "M280.2 150.2C273.1 143.8 262.1 142.2 254.3 146.1S239.1 158.5 239.1 167.1l.002 56L152 224C138.8 224 128 234.8 128 248v16C128 277.3 138.8 288 152 288L240 287.1v56c0 9.531 5.656 18.16 14.38 22c8.75 3.812 18.91 2.094 25.91-4.375l96-88.75C381.2 268.3 384 261.9 384 255.2c-.3125-7.781-2.875-13.25-7.844-17.75L280.2 150.2zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-stop": [512, 512, [62094, "stop-circle"], "f28d", "M328 160h-144C170.8 160 160 170.8 160 184v144C160 341.2 170.8 352 184 352h144c13.2 0 24-10.8 24-24v-144C352 170.8 341.2 160 328 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-up": [512, 512, [61467, "arrow-alt-circle-up"], "f35b", "M272.9 135.7C268.3 130.8 261.9 128 255.2 128C247.5 128.3 241.1 130.9 237.5 135.8l-87.25 96C143.8 238.9 142.2 249 146.1 257.7C149.9 266.4 158.5 272 167.1 272h56L224 360c0 13.25 10.75 24 24 24h16c13.25 0 23.1-10.75 23.1-24L287.1 272h56c9.531 0 18.16-5.656 22-14.38c3.811-8.75 2.092-18.91-4.377-25.91L272.9 135.7zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z"], + "circle-user": [512, 512, [62142, "user-circle"], "f2bd", "M256 112c-48.6 0-88 39.4-88 88C168 248.6 207.4 288 256 288s88-39.4 88-88C344 151.4 304.6 112 256 112zM256 240c-22.06 0-40-17.95-40-40C216 177.9 233.9 160 256 160s40 17.94 40 40C296 222.1 278.1 240 256 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-46.73 0-89.76-15.68-124.5-41.79C148.8 389 182.4 368 220.2 368h71.69c37.75 0 71.31 21.01 88.68 54.21C345.8 448.3 302.7 464 256 464zM416.2 388.5C389.2 346.3 343.2 320 291.8 320H220.2c-51.36 0-97.35 26.25-124.4 68.48C65.96 352.5 48 306.3 48 256c0-114.7 93.31-208 208-208s208 93.31 208 208C464 306.3 446 352.5 416.2 388.5z"], + "circle-xmark": [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "clipboard": [384, 512, [128203], "f328", "M320 64h-49.61C262.1 27.48 230.7 0 192 0S121 27.48 113.6 64H64C28.65 64 0 92.66 0 128v320c0 35.34 28.65 64 64 64h256c35.35 0 64-28.66 64-64V128C384 92.66 355.3 64 320 64zM192 48c13.23 0 24 10.77 24 24S205.2 96 192 96S168 85.23 168 72S178.8 48 192 48zM336 448c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V128c0-8.82 7.178-16 16-16h18.26C80.93 117.1 80 122.4 80 128v16C80 152.8 87.16 160 96 160h192c8.836 0 16-7.164 16-16V128c0-5.559-.9316-10.86-2.264-16H320c8.822 0 16 7.18 16 16V448z"], + "clock": [512, 512, [128339, "clock-four"], "f017", "M232 120C232 106.7 242.7 96 256 96C269.3 96 280 106.7 280 120V243.2L365.3 300C376.3 307.4 379.3 322.3 371.1 333.3C364.6 344.3 349.7 347.3 338.7 339.1L242.7 275.1C236 271.5 232 264 232 255.1L232 120zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256z"], + "clone": [512, 512, [], "f24d", "M64 464H288C296.8 464 304 456.8 304 448V384H352V448C352 483.3 323.3 512 288 512H64C28.65 512 0 483.3 0 448V224C0 188.7 28.65 160 64 160H128V208H64C55.16 208 48 215.2 48 224V448C48 456.8 55.16 464 64 464zM160 64C160 28.65 188.7 0 224 0H448C483.3 0 512 28.65 512 64V288C512 323.3 483.3 352 448 352H224C188.7 352 160 323.3 160 288V64zM224 304H448C456.8 304 464 296.8 464 288V64C464 55.16 456.8 48 448 48H224C215.2 48 208 55.16 208 64V288C208 296.8 215.2 304 224 304z"], + "closed-captioning": [576, 512, [], "f20a", "M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416zM236.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C116.5 206.2 106.5 230.4 106.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C159.5 280.9 154.5 268.8 154.5 256s5-24.88 14.06-33.94C187.3 203.3 217.8 203.3 236.5 222.1zM428.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C308.5 206.2 298.5 230.4 298.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C351.5 280.9 346.5 268.8 346.5 256s5-24.88 14.06-33.94C379.3 203.3 409.8 203.3 428.5 222.1z"], + "comment": [512, 512, [61669, 128489], "f075", "M256 32C114.6 32 .0272 125.1 .0272 240c0 47.63 19.91 91.25 52.91 126.2c-14.88 39.5-45.87 72.88-46.37 73.25c-6.625 7-8.375 17.25-4.625 26C5.818 474.2 14.38 480 24 480c61.5 0 109.1-25.75 139.1-46.25C191.1 442.8 223.3 448 256 448c141.4 0 255.1-93.13 255.1-208S397.4 32 256 32zM256.1 400c-26.75 0-53.12-4.125-78.38-12.12l-22.75-7.125l-19.5 13.75c-14.25 10.12-33.88 21.38-57.5 29c7.375-12.12 14.37-25.75 19.88-40.25l10.62-28l-20.62-21.87C69.82 314.1 48.07 282.2 48.07 240c0-88.25 93.25-160 208-160s208 71.75 208 160S370.8 400 256.1 400z"], + "comment-dots": [512, 512, [62075, 128172, "commenting"], "f4ad", "M144 208C126.3 208 112 222.2 112 239.1C112 257.7 126.3 272 144 272s31.1-14.25 31.1-32S161.8 208 144 208zM256 207.1c-17.75 0-31.1 14.25-31.1 32s14.25 31.1 31.1 31.1s31.1-14.25 31.1-31.1S273.8 207.1 256 207.1zM368 208c-17.75 0-31.1 14.25-31.1 32s14.25 32 31.1 32c17.75 0 31.99-14.25 31.99-32C400 222.2 385.8 208 368 208zM256 31.1c-141.4 0-255.1 93.12-255.1 208c0 47.62 19.91 91.25 52.91 126.3c-14.87 39.5-45.87 72.88-46.37 73.25c-6.624 7-8.373 17.25-4.624 26C5.818 474.2 14.38 480 24 480c61.49 0 109.1-25.75 139.1-46.25c28.87 9 60.16 14.25 92.9 14.25c141.4 0 255.1-93.13 255.1-207.1S397.4 31.1 256 31.1zM256 400c-26.75 0-53.12-4.125-78.36-12.12l-22.75-7.125L135.4 394.5c-14.25 10.12-33.87 21.38-57.49 29c7.374-12.12 14.37-25.75 19.87-40.25l10.62-28l-20.62-21.87C69.81 314.1 48.06 282.2 48.06 240c0-88.25 93.24-160 207.1-160s207.1 71.75 207.1 160S370.8 400 256 400z"], + "comments": [640, 512, [61670, 128490], "f086", "M208 0C322.9 0 416 78.8 416 176C416 273.2 322.9 352 208 352C189.3 352 171.2 349.7 153.9 345.8C123.3 364.8 79.13 384 24.95 384C14.97 384 5.93 378.1 2.018 368.9C-1.896 359.7-.0074 349.1 6.739 341.9C7.26 341.5 29.38 317.4 45.73 285.9C17.18 255.8 0 217.6 0 176C0 78.8 93.13 0 208 0zM164.6 298.1C179.2 302.3 193.8 304 208 304C296.2 304 368 246.6 368 176C368 105.4 296.2 48 208 48C119.8 48 48 105.4 48 176C48 211.2 65.71 237.2 80.57 252.9L104.1 277.8L88.31 308.1C84.74 314.1 80.73 321.9 76.55 328.5C94.26 323.4 111.7 315.5 128.7 304.1L145.4 294.6L164.6 298.1zM441.6 128.2C552 132.4 640 209.5 640 304C640 345.6 622.8 383.8 594.3 413.9C610.6 445.4 632.7 469.5 633.3 469.9C640 477.1 641.9 487.7 637.1 496.9C634.1 506.1 625 512 615 512C560.9 512 516.7 492.8 486.1 473.8C468.8 477.7 450.7 480 432 480C350 480 279.1 439.8 245.2 381.5C262.5 379.2 279.1 375.3 294.9 369.9C322.9 407.1 373.9 432 432 432C446.2 432 460.8 430.3 475.4 426.1L494.6 422.6L511.3 432.1C528.3 443.5 545.7 451.4 563.5 456.5C559.3 449.9 555.3 442.1 551.7 436.1L535.9 405.8L559.4 380.9C574.3 365.3 592 339.2 592 304C592 237.7 528.7 183.1 447.1 176.6L448 176C448 159.5 445.8 143.5 441.6 128.2H441.6z"], + "compass": [512, 512, [129517], "f14e", "M306.7 325.1L162.4 380.6C142.1 388.1 123.9 369 131.4 349.6L186.9 205.3C190.1 196.8 196.8 190.1 205.3 186.9L349.6 131.4C369 123.9 388.1 142.1 380.6 162.4L325.1 306.7C321.9 315.2 315.2 321.9 306.7 325.1V325.1zM255.1 224C238.3 224 223.1 238.3 223.1 256C223.1 273.7 238.3 288 255.1 288C273.7 288 288 273.7 288 256C288 238.3 273.7 224 255.1 224V224zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "copy": [512, 512, [], "f0c5", "M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z"], + "copyright": [512, 512, [169], "f1f9", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM255.1 176C255.1 176 255.1 176 255.1 176c21.06 0 40.92 8.312 55.83 23.38c9.375 9.344 24.53 9.5 33.97 .1562c9.406-9.344 9.469-24.53 .1562-33.97c-24-24.22-55.95-37.56-89.95-37.56c0 0 .0313 0 0 0c-33.97 0-65.95 13.34-89.95 37.56c-49.44 49.88-49.44 131 0 180.9c24 24.22 55.98 37.56 89.95 37.56c.0313 0 0 0 0 0c34 0 65.95-13.34 89.95-37.56c9.312-9.438 9.25-24.62-.1562-33.97c-9.438-9.312-24.59-9.219-33.97 .1562c-14.91 15.06-34.77 23.38-55.83 23.38c0 0 .0313 0 0 0c-21.09 0-40.95-8.312-55.89-23.38c-30.94-31.22-30.94-82.03 0-113.3C214.2 184.3 234 176 255.1 176z"], + "credit-card": [576, 512, [62083, 128179, "credit-card-alt"], "f09d", "M168 336C181.3 336 192 346.7 192 360C192 373.3 181.3 384 168 384H120C106.7 384 96 373.3 96 360C96 346.7 106.7 336 120 336H168zM360 336C373.3 336 384 346.7 384 360C384 373.3 373.3 384 360 384H248C234.7 384 224 373.3 224 360C224 346.7 234.7 336 248 336H360zM512 32C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H512zM512 80H64C55.16 80 48 87.16 48 96V128H528V96C528 87.16 520.8 80 512 80zM528 224H48V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V224z"], + "envelope": [512, 512, [128386, 61443, 9993], "f0e0", "M0 128C0 92.65 28.65 64 64 64H448C483.3 64 512 92.65 512 128V384C512 419.3 483.3 448 448 448H64C28.65 448 0 419.3 0 384V128zM48 128V150.1L220.5 291.7C241.1 308.7 270.9 308.7 291.5 291.7L464 150.1V127.1C464 119.2 456.8 111.1 448 111.1H64C55.16 111.1 48 119.2 48 127.1L48 128zM48 212.2V384C48 392.8 55.16 400 64 400H448C456.8 400 464 392.8 464 384V212.2L322 328.8C283.6 360.3 228.4 360.3 189.1 328.8L48 212.2z"], + "envelope-open": [512, 512, [62135], "f2b6", "M493.6 163c-24.88-19.62-45.5-35.37-164.3-121.6C312.7 29.21 279.7 0 256.4 0H255.6C232.3 0 199.3 29.21 182.6 41.38C63.88 127.6 43.25 143.4 18.38 163C6.75 172 0 186 0 200.8v247.2C0 483.3 28.65 512 64 512h384c35.35 0 64-28.67 64-64.01V200.8C512 186 505.3 172 493.6 163zM464 448c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V276.7l136.1 113.4C204.3 406.8 229.8 416 256 416s51.75-9.211 71.97-26.01L464 276.7V448zM464 214.2l-166.8 138.1c-23.19 19.28-59.34 19.27-82.47 .0156L48 214.2l.1055-13.48c23.24-18.33 42.25-32.97 162.9-120.6c3.082-2.254 6.674-5.027 10.63-8.094C229.4 65.99 246.7 52.59 256 48.62c9.312 3.973 26.62 17.37 34.41 23.41c3.959 3.066 7.553 5.84 10.76 8.186C421.6 167.7 440.7 182.4 464 200.8V214.2z"], + "eye": [576, 512, [128065], "f06e", "M160 256C160 185.3 217.3 128 288 128C358.7 128 416 185.3 416 256C416 326.7 358.7 384 288 384C217.3 384 160 326.7 160 256zM288 336C332.2 336 368 300.2 368 256C368 211.8 332.2 176 288 176C287.3 176 286.7 176 285.1 176C287.3 181.1 288 186.5 288 192C288 227.3 259.3 256 224 256C218.5 256 213.1 255.3 208 253.1C208 254.7 208 255.3 208 255.1C208 300.2 243.8 336 288 336L288 336zM95.42 112.6C142.5 68.84 207.2 32 288 32C368.8 32 433.5 68.84 480.6 112.6C527.4 156 558.7 207.1 573.5 243.7C576.8 251.6 576.8 260.4 573.5 268.3C558.7 304 527.4 355.1 480.6 399.4C433.5 443.2 368.8 480 288 480C207.2 480 142.5 443.2 95.42 399.4C48.62 355.1 17.34 304 2.461 268.3C-.8205 260.4-.8205 251.6 2.461 243.7C17.34 207.1 48.62 156 95.42 112.6V112.6zM288 80C222.8 80 169.2 109.6 128.1 147.7C89.6 183.5 63.02 225.1 49.44 256C63.02 286 89.6 328.5 128.1 364.3C169.2 402.4 222.8 432 288 432C353.2 432 406.8 402.4 447.9 364.3C486.4 328.5 512.1 286 526.6 256C512.1 225.1 486.4 183.5 447.9 147.7C406.8 109.6 353.2 80 288 80V80z"], + "eye-slash": [640, 512, [], "f070", "M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM189.8 123.5L235.8 159.5C258.3 139.9 287.8 128 320 128C390.7 128 448 185.3 448 256C448 277.2 442.9 297.1 433.8 314.7L487.6 356.9C521.1 322.8 545.9 283.1 558.6 256C544.1 225.1 518.4 183.5 479.9 147.7C438.8 109.6 385.2 79.1 320 79.1C269.5 79.1 225.1 97.73 189.8 123.5L189.8 123.5zM394.9 284.2C398.2 275.4 400 265.9 400 255.1C400 211.8 364.2 175.1 320 175.1C319.3 175.1 318.7 176 317.1 176C319.3 181.1 320 186.5 320 191.1C320 202.2 317.6 211.8 313.4 220.3L394.9 284.2zM404.3 414.5L446.2 447.5C409.9 467.1 367.8 480 320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3C31.18 260.4 31.18 251.6 34.46 243.7C44 220.8 60.29 191.2 83.09 161.5L120.8 191.2C102.1 214.5 89.76 237.6 81.45 255.1C95.02 286 121.6 328.5 160.1 364.3C201.2 402.4 254.8 432 320 432C350.7 432 378.8 425.4 404.3 414.5H404.3zM192 255.1C192 253.1 192.1 250.3 192.3 247.5L248.4 291.7C258.9 312.8 278.5 328.6 302 333.1L358.2 378.2C346.1 381.1 333.3 384 319.1 384C249.3 384 191.1 326.7 191.1 255.1H192z"], + "face-angry": [512, 512, [128544, "angry"], "f556", "M328.4 393.5C318.7 402.6 303.5 402.1 294.5 392.4C287.1 384.5 274.4 376 256 376C237.6 376 224.9 384.5 217.5 392.4C208.5 402.1 193.3 402.6 183.6 393.5C173.9 384.5 173.4 369.3 182.5 359.6C196.7 344.3 221.4 328 256 328C290.6 328 315.3 344.3 329.5 359.6C338.6 369.3 338.1 384.5 328.4 393.5zM144.4 240C144.4 231.2 147.9 223.2 153.7 217.4L122.9 207.2C114.6 204.4 110 195.3 112.8 186.9C115.6 178.6 124.7 174 133.1 176.8L229.1 208.8C237.4 211.6 241.1 220.7 239.2 229.1C236.4 237.4 227.3 241.1 218.9 239.2L208.1 235.6C208.3 237 208.4 238.5 208.4 240C208.4 257.7 194 272 176.4 272C158.7 272 144.4 257.7 144.4 240V240zM368.4 240C368.4 257.7 354 272 336.4 272C318.7 272 304.4 257.7 304.4 240C304.4 238.4 304.5 236.8 304.7 235.3L293.1 239.2C284.7 241.1 275.6 237.4 272.8 229.1C270 220.7 274.6 211.6 282.9 208.8L378.9 176.8C387.3 174 396.4 178.6 399.2 186.9C401.1 195.3 397.4 204.4 389.1 207.2L358.9 217.2C364.7 223 368.4 231.1 368.4 240H368.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z"], + "face-dizzy": [512, 512, ["dizzy"], "f567", "M192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM103 135C112.4 125.7 127.6 125.7 136.1 135L160 158.1L183 135C192.4 125.7 207.6 125.7 216.1 135C226.3 144.4 226.3 159.6 216.1 168.1L193.9 192L216.1 215C226.3 224.4 226.3 239.6 216.1 248.1C207.6 258.3 192.4 258.3 183 248.1L160 225.9L136.1 248.1C127.6 258.3 112.4 258.3 103 248.1C93.66 239.6 93.66 224.4 103 215L126.1 192L103 168.1C93.66 159.6 93.66 144.4 103 135V135zM295 135C304.4 125.7 319.6 125.7 328.1 135L352 158.1L375 135C384.4 125.7 399.6 125.7 408.1 135C418.3 144.4 418.3 159.6 408.1 168.1L385.9 192L408.1 215C418.3 224.4 418.3 239.6 408.1 248.1C399.6 258.3 384.4 258.3 375 248.1L352 225.9L328.1 248.1C319.6 258.3 304.4 258.3 295 248.1C285.7 239.6 285.7 224.4 295 215L318.1 192L295 168.1C285.7 159.6 285.7 144.4 295 135V135zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-flushed": [512, 512, [128563, "flushed"], "f579", "M320 336C333.3 336 344 346.7 344 360C344 373.3 333.3 384 320 384H192C178.7 384 168 373.3 168 360C168 346.7 178.7 336 192 336H320zM136.4 224C136.4 210.7 147.1 200 160.4 200C173.6 200 184.4 210.7 184.4 224C184.4 237.3 173.6 248 160.4 248C147.1 248 136.4 237.3 136.4 224zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 197.5 186.5 176 160 176C133.5 176 112 197.5 112 224C112 250.5 133.5 272 160 272zM376.4 224C376.4 237.3 365.6 248 352.4 248C339.1 248 328.4 237.3 328.4 224C328.4 210.7 339.1 200 352.4 200C365.6 200 376.4 210.7 376.4 224zM432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224zM352 176C325.5 176 304 197.5 304 224C304 250.5 325.5 272 352 272C378.5 272 400 250.5 400 224C400 197.5 378.5 176 352 176zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z"], + "face-frown": [512, 512, [9785, "frown"], "f119", "M143.9 398.6C131.4 394.1 124.9 380.3 129.4 367.9C146.9 319.4 198.9 288 256 288C313.1 288 365.1 319.4 382.6 367.9C387.1 380.3 380.6 394.1 368.1 398.6C355.7 403.1 341.9 396.6 337.4 384.1C328.2 358.5 297.2 336 256 336C214.8 336 183.8 358.5 174.6 384.1C170.1 396.6 156.3 403.1 143.9 398.6V398.6zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-frown-open": [512, 512, [128550, "frown-open"], "f57a", "M179.3 369.3C166.1 374.5 153.1 365.1 158.4 352.9C175.1 314.7 214.3 287.8 259.9 287.8C305.6 287.8 344.8 314.7 361.4 352.1C366.7 365.2 352.9 374.5 340.6 369.3C316.2 359 288.8 353.2 259.9 353.2C231 353.2 203.7 358.1 179.3 369.3L179.3 369.3zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grimace": [512, 512, [128556, "grimace"], "f57f", "M344 288C374.9 288 400 313.1 400 344C400 374.9 374.9 400 344 400H168C137.1 400 112 374.9 112 344C112 313.1 137.1 288 168 288H344zM168 320C154.7 320 144 330.7 144 344C144 357.3 154.7 368 168 368H176V320H168zM208 368H240V320H208V368zM304 320H272V368H304V320zM336 368H344C357.3 368 368 357.3 368 344C368 330.7 357.3 320 344 320H336V368zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin": [512, 512, [128512, "grin"], "f580", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin-beam": [512, 512, [128516, "grin-beam"], "f582", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin-beam-sweat": [512, 512, [128517, "grin-beam-sweat"], "f583", "M464 128C437.5 128 416 107 416 81.01C416 76.01 417.8 69.74 420.6 62.87C420.9 62.17 421.2 61.46 421.6 60.74C430.5 40.51 448.1 15.86 457.6 3.281C460.8-1.094 467.2-1.094 470.4 3.281C483.4 20.65 512 61.02 512 81.01C512 102.7 497.1 120.8 476.8 126.3C472.7 127.4 468.4 128 464 128L464 128zM391.1 50.53C387.8 58.57 384 69.57 384 81.01C384 84.1 384.3 88.91 384.9 92.72C349.4 64.71 304.7 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 219.7 454.7 185.5 438.3 155.8C446.4 158.5 455.1 160 464 160C473.6 160 482.8 158.3 491.4 155.2C504.7 186.2 512 220.2 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 .0002 256 .0002C307.4 .0002 355.3 15.15 395.4 41.23C393.9 44.32 392.4 47.43 391.1 50.53V50.53zM255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.9 255.9 318.9C289 318.9 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1zM217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 119.1 227.4 119.1 224C119.1 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 175.1 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 231.1 206.1 231.1 224C231.1 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8L217.6 228.8zM377.6 228.8L377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8V228.8z"], + "face-grin-hearts": [512, 512, [128525, "grin-hearts"], "f584", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM238.9 177.1L221.4 243C219.1 251.6 210.4 256.6 201.8 254.3L136.7 236.9C118.9 232.1 108.4 213.8 113.1 196.1C117.9 178.3 136.2 167.7 153.1 172.5L170.1 176.8L174.4 160.7C179.2 142.9 197.5 132.4 215.3 137.1C233.1 141.9 243.6 160.2 238.9 177.1H238.9zM341.9 176.8L358 172.5C375.8 167.7 394.1 178.3 398.9 196.1C403.6 213.8 393.1 232.1 375.3 236.9L310.2 254.3C301.6 256.6 292.9 251.6 290.6 243L273.1 177.1C268.4 160.2 278.9 141.9 296.7 137.1C314.5 132.4 332.8 142.9 337.6 160.7L341.9 176.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin-squint": [512, 512, [128518, "grin-squint"], "f585", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin-squint-tears": [512, 512, [129315, "grin-squint-tears"], "f586", "M426.8 14.18C446-5.046 477.5-4.646 497.1 14.92C516.6 34.49 517 65.95 497.8 85.18C483 99.97 432.2 108.8 409.6 111.9C403.1 112.8 399.2 108 400.1 102.4C403.3 79.94 412 28.97 426.8 14.18H426.8zM74.98 74.98C158.2-8.253 284.5-22.19 382.2 33.17C380.6 37.96 379.3 42.81 378.1 47.52C375 59.67 372.6 72.08 370.8 82.52C290.1 28.93 180.1 37.74 108.9 108.9C37.75 180.1 28.94 290 82.49 370.8C72.01 372.6 59.6 374.1 47.46 378.1C42.76 379.3 37.93 380.6 33.15 382.1C-22.19 284.5-8.245 158.2 74.98 74.98V74.98zM478.8 129.9C534.2 227.5 520.2 353.8 437 437C353.8 520.3 227.5 534.2 129.8 478.8C131.3 474 132.7 469.2 133.9 464.5C136.1 452.3 139.4 439.9 141.2 429.5C221.9 483.1 331.9 474.3 403.1 403.1C474.3 331.9 483.1 221.1 429.5 141.2C439.1 139.4 452.4 137 464.5 133.9C469.2 132.7 474.1 131.4 478.8 129.9L478.8 129.9zM359.2 226.9C369.3 210.6 393 210 397 228.8C406.6 273.1 393.4 322.3 357.8 357.9C322.2 393.5 273 406.7 228.6 397.1C209.9 393.1 210.5 369.4 226.8 359.3C252 343.6 276.1 323.9 300.4 300.5C323.8 277.1 343.5 252.1 359.2 226.9L359.2 226.9zM189.5 235.7C201.1 232.1 211.1 242.1 208.5 254.6L178.8 352.1C176.2 360.7 165.4 363.4 159 357C157.1 355 155.8 352.5 155.6 349.7L150.5 293.6L94.43 288.5C91.66 288.3 89.07 287.1 87.1 285.1C80.76 278.7 83.46 267.9 92.05 265.3L189.5 235.7zM288.5 94.43L293.6 150.5L349.7 155.6C352.5 155.8 355 157.1 357 159C363.4 165.4 360.7 176.2 352.1 178.8L254.6 208.5C242.1 211.1 232.1 201.1 235.7 189.5L265.3 92.05C267.9 83.46 278.7 80.76 285.1 87.1C287.1 89.07 288.3 91.66 288.5 94.43V94.43zM14.18 426.8C28.97 412 79.85 403.2 102.4 400.1C108 399.2 112.8 403.1 111.9 409.6C108.7 432.1 99.97 483 85.18 497.8C65.95 517 34.5 516.6 14.93 497.1C-4.645 477.5-5.046 446 14.18 426.8H14.18z"], + "face-grin-stars": [512, 512, [129321, "grin-stars"], "f587", "M199.8 167.3L237.9 172.3C240.1 172.7 243.5 174.8 244.5 177.8C245.4 180.7 244.6 183.9 242.4 186L214.5 212.5L221.5 250.3C222 253.4 220.8 256.4 218.3 258.2C215.8 260.1 212.5 260.3 209.8 258.8L175.1 240.5L142.2 258.8C139.5 260.3 136.2 260.1 133.7 258.2C131.2 256.4 129.1 253.4 130.5 250.3L137.5 212.5L109.6 186C107.4 183.9 106.6 180.7 107.5 177.8C108.5 174.8 111 172.7 114.1 172.3L152.2 167.3L168.8 132.6C170.1 129.8 172.9 128 175.1 128C179.1 128 181.9 129.8 183.2 132.6L199.8 167.3zM359.8 167.3L397.9 172.3C400.1 172.7 403.5 174.8 404.5 177.8C405.4 180.7 404.6 183.9 402.4 186L374.5 212.5L381.5 250.3C382 253.4 380.8 256.4 378.3 258.2C375.8 260.1 372.5 260.3 369.8 258.8L336 240.5L302.2 258.8C299.5 260.3 296.2 260.1 293.7 258.2C291.2 256.4 289.1 253.4 290.5 250.3L297.5 212.5L269.6 186C267.4 183.9 266.6 180.7 267.5 177.8C268.5 174.8 271 172.7 274.1 172.3L312.2 167.3L328.8 132.6C330.1 129.8 332.9 128 336 128C339.1 128 341.9 129.8 343.2 132.6L359.8 167.3zM349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z"], + "face-grin-tears": [640, 512, [128514, "grin-tears"], "f588", "M519.4 334.4C522.7 342.5 527.8 352.1 535.9 361.1C539.9 365 544.1 368.4 548.6 371.4C506.4 454.8 419.9 512 319.1 512C220.1 512 133.6 454.8 91.4 371.4C95.87 368.4 100.1 365 104.1 361.1C112.2 352.1 117.3 342.5 120.6 334.4C121.8 331.5 122.9 328.6 123.9 325.5C152.5 406.2 229.5 464 319.1 464C410.5 464 487.5 406.2 516.1 325.5C517.1 328.6 518.2 331.5 519.4 334.4V334.4zM319.1 47.1C218.6 47.1 134.2 120.5 115.7 216.5C109.1 213.4 101.4 212.2 93.4 213.3C86.59 214.3 77.18 215.7 66.84 217.7C85.31 94.5 191.6 0 319.1 0C448.4 0 554.7 94.5 573.2 217.7C562.8 215.7 553.4 214.3 546.6 213.3C538.6 212.2 530.9 213.4 524.2 216.5C505.8 120.5 421.4 48 319.1 48V47.1zM78.5 341.1C59.98 356.7 32.01 355.5 14.27 337.7C-4.442 319-4.825 288.9 13.55 270.6C22.19 261.9 43.69 255.4 64.05 250.1C77.02 248.2 89.53 246.2 97.94 245C103.3 244.2 107.8 248.7 106.1 254.1C103.9 275.6 95.58 324.3 81.43 338.4C80.49 339.4 79.51 340.3 78.5 341.1V341.1zM561.5 341.1C560.7 340.5 559.1 339.8 559.2 339.1C559 338.9 558.8 338.7 558.6 338.4C544.4 324.3 536.1 275.6 533 254.1C532.2 248.7 536.7 244.2 542.1 245C543.1 245.2 544.2 245.3 545.4 245.5C553.6 246.7 564.6 248.5 575.1 250.1C596.3 255.4 617.8 261.9 626.4 270.6C644.8 288.9 644.4 319 625.7 337.7C607.1 355.5 580 356.7 561.5 341.1L561.5 341.1zM319.9 399.1C269.6 399.1 225.5 374.6 200.9 336.5C190.5 320.4 207.7 303.1 226.3 308.4C255.3 315.1 286.8 318.8 319.9 318.8C353 318.8 384.6 315.1 413.5 308.4C432.2 303.1 449.4 320.4 438.1 336.5C414.4 374.6 370.3 399.1 319.9 399.1zM281.6 228.8L281.4 228.5C281.2 228.3 281 228 280.7 227.6C280 226.8 279.1 225.7 277.9 224.3C275.4 221.4 271.9 217.7 267.7 213.1C258.9 206.2 248.8 200 239.1 200C231.2 200 221.1 206.2 212.3 213.1C208.1 217.7 204.6 221.4 202.1 224.3C200.9 225.7 199.1 226.8 199.3 227.6C198.1 228 198.8 228.3 198.6 228.5L198.4 228.8L198.4 228.8C196.3 231.6 192.7 232.7 189.5 231.6C186.2 230.5 183.1 227.4 183.1 224C183.1 206.1 190.7 188.4 200.6 175.2C210.4 162.2 224.5 152 239.1 152C255.5 152 269.6 162.2 279.4 175.2C289.3 188.4 295.1 206.1 295.1 224C295.1 227.4 293.8 230.5 290.5 231.6C287.3 232.7 283.7 231.6 281.6 228.8L281.6 228.8zM441.6 228.8L441.6 228.8L441.4 228.5C441.2 228.3 441 228 440.7 227.6C440 226.8 439.1 225.7 437.9 224.3C435.4 221.4 431.9 217.7 427.7 213.1C418.9 206.2 408.8 200 400 200C391.2 200 381.1 206.2 372.3 213.1C368.1 217.7 364.6 221.4 362.1 224.3C360.9 225.7 359.1 226.8 359.3 227.6C358.1 228 358.8 228.3 358.6 228.5L358.4 228.8L358.4 228.8C356.3 231.6 352.7 232.7 349.5 231.6C346.2 230.5 344 227.4 344 223.1C344 206.1 350.7 188.4 360.6 175.2C370.4 162.2 384.5 151.1 400 151.1C415.5 151.1 429.6 162.2 439.4 175.2C449.3 188.4 456 206.1 456 223.1C456 227.4 453.8 230.5 450.5 231.6C447.3 232.7 443.7 231.6 441.6 228.8V228.8z"], + "face-grin-tongue": [512, 512, [128539, "grin-tongue"], "f589", "M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 255.1 48H256zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z"], + "face-grin-tongue-squint": [512, 512, [128541, "grin-tongue-squint"], "f58a", "M116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1V157.1zM378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V392.7C135.1 375.1 116.9 351.3 105.2 323.5C100.2 311.7 112.2 301 124.5 304.8C164.1 316.9 208.9 323.8 256.3 323.8C303.7 323.8 348.4 316.9 388.1 304.8C400.4 301 412.4 311.7 407.4 323.5C395.6 351.5 376.3 375.5 352 393.1V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 255.1C464 141.1 370.9 47.1 256 47.1L256 48zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z"], + "face-grin-tongue-wink": [512, 512, [128540, "grin-tongue-wink"], "f58b", "M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.9 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM312.4 208C312.4 194.7 323.1 184 336.4 184C349.6 184 360.4 194.7 360.4 208C360.4 221.3 349.6 232 336.4 232C323.1 232 312.4 221.3 312.4 208zM256 208C256 163.8 291.8 128 336 128C380.2 128 416 163.8 416 208C416 252.2 380.2 288 336 288C291.8 288 256 252.2 256 208zM336 256C362.5 256 384 234.5 384 208C384 181.5 362.5 160 336 160C309.5 160 288 181.5 288 208C288 234.5 309.5 256 336 256zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4H348.3zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z"], + "face-grin-wide": [512, 512, [128515, "grin-alt"], "f581", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM224 192C224 227.3 209.7 256 192 256C174.3 256 160 227.3 160 192C160 156.7 174.3 128 192 128C209.7 128 224 156.7 224 192zM288 192C288 156.7 302.3 128 320 128C337.7 128 352 156.7 352 192C352 227.3 337.7 256 320 256C302.3 256 288 227.3 288 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-grin-wink": [512, 512, ["grin-wink"], "f58c", "M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-kiss": [512, 512, [128535, "kiss"], "f596", "M304.7 281.7C308.9 286.8 312 293.1 312 300C312 306.9 308.9 313.2 304.7 318.3C300.4 323.5 294.5 328 287.9 331.7C285.2 333.3 282.3 334.7 279.2 336C282.3 337.3 285.2 338.7 287.9 340.3C294.5 343.1 300.4 348.5 304.7 353.7C308.9 358.8 312 365.1 312 372C312 378.9 308.9 385.2 304.7 390.3C300.4 395.5 294.5 400 287.9 403.7C274.7 411.1 257.4 416 240 416C236.4 416 233.2 413.5 232.3 410C231.3 406.5 232.9 402.8 236.1 401L236.1 401L236.3 400.9C236.5 400.8 236.8 400.6 237.2 400.3C238 399.9 239.2 399.1 240.6 398.2C243.4 396.4 247.2 393.7 250.8 390.6C254.6 387.5 258 384 260.5 380.6C262.1 377 264 374.2 264 372C264 369.8 262.1 366.1 260.5 363.4C258 359.1 254.6 356.5 250.8 353.4C247.2 350.3 243.4 347.6 240.6 345.8C239.2 344.9 238 344.1 237.2 343.7L236.5 343.2L236.3 343.1L236.1 342.1L236.1 342.1C233.6 341.6 232 338.9 232 336C232 333.1 233.6 330.4 236.1 329L236.1 329L236.3 328.9C236.5 328.8 236.8 328.6 237.2 328.3C238 327.9 239.2 327.1 240.6 326.2C243.4 324.4 247.2 321.7 250.8 318.6C254.6 315.5 258 312.1 260.5 308.6C262.1 305 264 302.2 264 300C264 297.8 262.1 294.1 260.5 291.4C258 287.1 254.6 284.5 250.8 281.4C247.2 278.3 243.4 275.6 240.6 273.8C239.2 272.9 238 272.1 237.2 271.7C236.8 271.4 236.5 271.2 236.3 271.1L236.1 270.1L236.1 270.1C232.9 269.2 231.3 265.5 232.3 261.1C233.2 258.5 236.4 256 240 256C257.4 256 274.7 260.9 287.9 268.3C294.5 271.1 300.4 276.5 304.7 281.7V281.7zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-kiss-beam": [512, 512, [128537, "kiss-beam"], "f597", "M304.7 297.7C308.9 302.8 312 309.1 312 316C312 322.9 308.9 329.2 304.7 334.3C300.4 339.5 294.5 344 287.9 347.7C285.2 349.3 282.3 350.7 279.2 352C282.3 353.3 285.2 354.7 287.9 356.3C294.5 359.1 300.4 364.5 304.7 369.7C308.9 374.8 312 381.1 312 388C312 394.9 308.9 401.2 304.7 406.3C300.4 411.5 294.5 416 287.9 419.7C274.7 427.1 257.4 432 240 432C236.4 432 233.2 429.5 232.3 426C231.3 422.5 232.9 418.8 236.1 417L236.1 417L236.3 416.9C236.5 416.8 236.8 416.6 237.2 416.3C238 415.9 239.2 415.1 240.6 414.2C243.4 412.4 247.2 409.7 250.8 406.6C254.6 403.5 258 400 260.5 396.6C262.1 393 264 390.2 264 388C264 385.8 262.1 382.1 260.5 379.4C258 375.1 254.6 372.5 250.8 369.4C247.2 366.3 243.4 363.6 240.6 361.8C239.2 360.9 238 360.1 237.2 359.7C236.8 359.4 236.5 359.2 236.3 359.1L236.1 358.1L236.1 358.1C233.6 357.6 232 354.9 232 352C232 349.1 233.6 346.4 236.1 345L236.1 345L236.3 344.9C236.5 344.8 236.8 344.6 237.2 344.3C238 343.9 239.2 343.1 240.6 342.2C243.4 340.4 247.2 337.7 250.8 334.6C254.6 331.5 258 328.1 260.5 324.6C262.1 321 264 318.2 264 316C264 313.8 262.1 310.1 260.5 307.4C258 303.1 254.6 300.5 250.8 297.4C247.2 294.3 243.4 291.6 240.6 289.8C239.2 288.9 238 288.1 237.2 287.7C236.8 287.4 236.5 287.2 236.3 287.1L236.1 286.1L236.1 286.1C232.9 285.2 231.3 281.5 232.3 277.1C233.2 274.5 236.4 272 240 272C257.4 272 274.7 276.9 287.9 284.3C294.5 287.1 300.4 292.5 304.7 297.7L304.7 297.7zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-kiss-wink-heart": [512, 512, [128536, "kiss-wink-heart"], "f598", "M345.3 472.1C347.3 479.7 350.9 486.4 355.7 491.8C325.1 504.8 291.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 285.3 507.1 313.4 498 339.7C486.9 334.1 474.5 333.1 461.8 334.6C459.7 329.4 457 324.6 453.9 320.1C460.5 299.9 464 278.4 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C285.4 464 313.5 457.9 338.9 446.8L345.3 472.1zM288.7 334.3C284.4 339.5 278.5 344 271.9 347.7C269.2 349.3 266.3 350.7 263.2 352C266.3 353.3 269.2 354.7 271.9 356.3C278.5 359.1 284.4 364.5 288.7 369.7C292.9 374.8 296 381.1 296 388C296 394.9 292.9 401.2 288.7 406.3C284.4 411.5 278.5 416 271.9 419.7C258.7 427.1 241.4 432 224 432C220.4 432 217.2 429.5 216.3 426C215.3 422.5 216.9 418.8 220.1 417L220.1 417L220.3 416.9C220.5 416.8 220.8 416.6 221.2 416.3C222 415.9 223.2 415.1 224.6 414.2C227.4 412.4 231.2 409.7 234.8 406.6C238.6 403.5 242 400 244.5 396.6C246.1 393 248 390.2 248 388C248 385.8 246.1 382.1 244.5 379.4C242 375.1 238.6 372.5 234.8 369.4C231.2 366.3 227.4 363.6 224.6 361.8C223.2 360.9 222 360.1 221.2 359.7C220.8 359.4 220.5 359.2 220.3 359.1L220.1 358.1L220.1 358.1C217.6 357.6 216 354.9 216 352C216 349.1 217.6 346.4 220.1 345L220.1 345L220.3 344.9C220.5 344.8 220.8 344.6 221.2 344.3C222 343.9 223.2 343.1 224.6 342.2C227.4 340.4 231.2 337.7 234.8 334.6C238.6 331.5 242 328.1 244.5 324.6C246.1 321 248 318.2 248 316C248 313.8 246.1 310.1 244.5 307.4C242 303.1 238.6 300.5 234.8 297.4C231.2 294.3 227.4 291.6 224.6 289.8C223.2 288.9 222 288.1 221.2 287.7C220.8 287.4 220.5 287.2 220.3 287.1L220.1 286.1L220.1 286.1C216.9 285.2 215.3 281.5 216.3 277.1C217.2 274.5 220.4 272 224 272C241.4 272 258.7 276.9 271.9 284.3C278.5 287.1 284.4 292.5 288.7 297.7C292.9 302.8 296 309.1 296 316C296 322.9 292.9 329.2 288.7 334.3V334.3zM144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220zM439.4 373.3L459.5 367.6C481.7 361.4 504.6 375.2 510.6 398.4C516.5 421.7 503.3 445.6 481.1 451.8L396.1 475.6C387.5 478 378.6 472.9 376.3 464.2L353.4 374.9C347.5 351.6 360.7 327.7 382.9 321.5C405.2 315.3 428 329.1 433.1 352.3L439.4 373.3z"], + "face-laugh": [512, 512, ["laugh"], "f599", "M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM304.4 192C304.4 174.3 318.7 160 336.4 160C354 160 368.4 174.3 368.4 192C368.4 209.7 354 224 336.4 224C318.7 224 304.4 209.7 304.4 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-laugh-beam": [512, 512, [128513, "laugh-beam"], "f59a", "M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-laugh-squint": [512, 512, ["laugh-squint"], "f59b", "M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM223.4 178.6C234.1 184.3 234.1 199.7 223.4 205.4L133.5 253.3C125.6 257.6 116 251.8 116 242.9C116 240.1 116.1 237.4 118.8 235.2L154.8 192L118.8 148.8C116.1 146.6 116 143.9 116 141.1C116 132.2 125.6 126.4 133.5 130.7L223.4 178.6zM393.2 148.8L357.2 192L393.2 235.2C395 237.4 396 240.1 396 242.9C396 251.8 386.4 257.6 378.5 253.3L288.6 205.4C277.9 199.7 277.9 184.3 288.6 178.6L378.5 130.7C386.4 126.4 396 132.2 396 141.1C396 143.9 395 146.6 393.2 148.8V148.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-laugh-wink": [512, 512, ["laugh-wink"], "f59c", "M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM281.9 214.6C273.9 207 273.5 194.4 281 186.3C295.6 170.8 316.3 164 335.6 164C354.1 164 375.7 170.8 390.2 186.3C397.8 194.4 397.4 207 389.3 214.6C381.2 222.1 368.6 221.7 361 213.7C355.6 207.8 346.3 204 335.6 204C324.1 204 315.7 207.8 310.2 213.7C302.7 221.7 290 222.1 281.9 214.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-meh": [512, 512, [128528, "meh"], "f11a", "M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM328 328C341.3 328 352 338.7 352 352C352 365.3 341.3 376 328 376H184C170.7 376 160 365.3 160 352C160 338.7 170.7 328 184 328H328zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z"], + "face-meh-blank": [512, 512, [128566, "meh-blank"], "f5a4", "M208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-rolling-eyes": [512, 512, [128580, "meh-rolling-eyes"], "f5a5", "M168 376C168 362.7 178.7 352 192 352H320C333.3 352 344 362.7 344 376C344 389.3 333.3 400 320 400H192C178.7 400 168 389.3 168 376zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 209.7 201.7 196.8 191.8 188C191.9 189.3 192 190.6 192 192C192 209.7 177.7 224 160 224C142.3 224 128 209.7 128 192C128 190.6 128.1 189.3 128.2 188C118.3 196.8 112 209.7 112 224C112 250.5 133.5 272 160 272V272zM272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224zM352 272C378.5 272 400 250.5 400 224C400 209.7 393.7 196.8 383.8 188C383.9 189.3 384 190.6 384 192C384 209.7 369.7 224 352 224C334.3 224 320 209.7 320 192C320 190.6 320.1 189.3 320.2 188C310.3 196.8 304 209.7 304 224C304 250.5 325.5 272 352 272zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z"], + "face-sad-cry": [512, 512, [128557, "sad-cry"], "f5b3", "M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.1 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM297.9 230.6C289.9 223 289.5 210.4 297 202.3C311.6 186.8 332.3 180 351.6 180C370.1 180 391.7 186.8 406.2 202.3C413.8 210.4 413.4 223 405.3 230.6C397.2 238.1 384.6 237.7 377 229.7C371.6 223.8 362.3 220 351.6 220C340.1 220 331.7 223.8 326.2 229.7C318.7 237.7 306 238.1 297.9 230.6zM208 320C208 293.5 229.5 272 256 272C282.5 272 304 293.5 304 320V352C304 378.5 282.5 400 256 400C229.5 400 208 378.5 208 352V320zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM400 406.1C439.4 368.2 464 314.1 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 314.1 72.55 368.2 112 406.1V288C112 274.7 122.7 264 136 264C149.3 264 160 274.7 160 288V440.6C188.7 455.5 221.4 464 256 464C290.6 464 323.3 455.5 352 440.6V288C352 274.7 362.7 264 376 264C389.3 264 400 274.7 400 288V406.1z"], + "face-sad-tear": [512, 512, [128546, "sad-tear"], "f5b4", "M169.6 291.3C172.8 286.9 179.2 286.9 182.4 291.3C195.6 308.6 223.1 349 223.1 369C223.1 395 202.5 416 175.1 416C149.5 416 127.1 395 127.1 369C127.1 349 156.6 308.6 169.6 291.3H169.6zM368 346.8C377.9 355.6 378.7 370.8 369.9 380.7C361 390.6 345.9 391.4 335.1 382.6C314.7 363.5 286.7 352 256 352C242.7 352 232 341.3 232 328C232 314.7 242.7 304 256 304C299 304 338.3 320.2 368 346.8L368 346.8zM335.6 176C353.3 176 367.6 190.3 367.6 208C367.6 225.7 353.3 240 335.6 240C317.1 240 303.6 225.7 303.6 208C303.6 190.3 317.1 176 335.6 176zM175.6 240C157.1 240 143.6 225.7 143.6 208C143.6 190.3 157.1 176 175.6 176C193.3 176 207.6 190.3 207.6 208C207.6 225.7 193.3 240 175.6 240zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM175.9 448C200.5 458.3 227.6 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 308.7 67.59 356.8 99.88 393.4C110.4 425.4 140.9 447.9 175.9 448V448z"], + "face-smile": [512, 512, [128578, "smile"], "f118", "M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-smile-beam": [512, 512, [128522, "smile-beam"], "f5b8", "M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-smile-wink": [512, 512, [128521, "smile-wink"], "f4da", "M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-surprise": [512, 512, [128558, "surprise"], "f5c2", "M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "face-tired": [512, 512, [128555, "tired"], "f5c8", "M176.5 320.3C196.1 302.1 223.8 288 256 288C288.2 288 315.9 302.1 335.5 320.3C354.5 338.1 368 362 368 384C368 389.4 365.3 394.4 360.8 397.4C356.2 400.3 350.5 400.8 345.6 398.7L328.4 391.1C305.6 381.2 280.9 376 256 376C231.1 376 206.4 381.2 183.6 391.1L166.4 398.7C161.5 400.8 155.8 400.3 151.2 397.4C146.7 394.4 144 389.4 144 384C144 362 157.5 338.1 176.5 320.3zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"], + "file": [384, 512, [128459, 61462, 128196], "f15b", "M0 64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM336 448V160H256C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V448C48 456.8 55.16 464 64 464H320C328.8 464 336 456.8 336 448z"], + "file-audio": [384, 512, [], "f1c7", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM171.5 259.5L136 296H92C85.38 296 80 301.4 80 308v56C80 370.7 85.38 376 92 376H136l35.5 36.5C179.1 420 192 414.8 192 404v-136C192 257.3 179.1 251.9 171.5 259.5zM235.1 260.7c-6.25 6.25-6.25 16.38 0 22.62C235.3 283.5 256 305.1 256 336c0 30.94-20.77 52.53-20.91 52.69c-6.25 6.25-6.25 16.38 0 22.62C238.2 414.4 242.3 416 246.4 416s8.188-1.562 11.31-4.688C258.1 410.1 288 380.5 288 336s-29.05-74.06-30.28-75.31C251.5 254.4 241.3 254.4 235.1 260.7z"], + "file-code": [384, 512, [], "f1c9", "M162.1 257.8c-7.812-7.812-20.47-7.812-28.28 0l-48 48c-7.812 7.812-7.812 20.5 0 28.31l48 48C137.8 386.1 142.9 388 148 388s10.23-1.938 14.14-5.844c7.812-7.812 7.812-20.5 0-28.31L128.3 320l33.86-33.84C169.1 278.3 169.1 265.7 162.1 257.8zM365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM221.9 257.8c-7.812 7.812-7.812 20.5 0 28.31L255.7 320l-33.86 33.84c-7.812 7.812-7.812 20.5 0 28.31C225.8 386.1 230.9 388 236 388s10.23-1.938 14.14-5.844l48-48c7.812-7.812 7.812-20.5 0-28.31l-48-48C242.3 250 229.7 250 221.9 257.8z"], + "file-excel": [384, 512, [], "f1c3", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM229.1 233.3L192 280.9L154.9 233.3C146.8 222.8 131.8 220.9 121.3 229.1C110.8 237.2 108.9 252.3 117.1 262.8L161.6 320l-44.53 57.25c-8.156 10.47-6.25 25.56 4.188 33.69C125.7 414.3 130.8 416 135.1 416c7.156 0 14.25-3.188 18.97-9.25L192 359.1l37.06 47.65C233.8 412.8 240.9 416 248 416c5.125 0 10.31-1.656 14.72-5.062c10.44-8.125 12.34-23.22 4.188-33.69L222.4 320l44.53-57.25c8.156-10.47 6.25-25.56-4.188-33.69C252.2 220.9 237.2 222.8 229.1 233.3z"], + "file-image": [384, 512, [128443], "f1c5", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM215.3 292c-4.68 0-9.051 2.34-11.65 6.234L164 357.8l-11.68-17.53C149.7 336.3 145.3 334 140.7 334c-4.682 0-9.053 2.34-11.65 6.234l-46.67 70c-2.865 4.297-3.131 9.82-.6953 14.37C84.09 429.2 88.84 432 93.1 432h196c5.163 0 9.907-2.844 12.34-7.395c2.436-4.551 2.17-10.07-.6953-14.37l-74.67-112C224.4 294.3 220 292 215.3 292zM128 288c17.67 0 32-14.33 32-32S145.7 224 128 224S96 238.3 96 256S110.3 288 128 288z"], + "file-lines": [384, 512, [128462, 61686, 128441, "file-alt", "file-text"], "f15c", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM96 280C96 293.3 106.8 304 120 304h144C277.3 304 288 293.3 288 280S277.3 256 264 256h-144C106.8 256 96 266.8 96 280zM264 352h-144C106.8 352 96 362.8 96 376s10.75 24 24 24h144c13.25 0 24-10.75 24-24S277.3 352 264 352z"], + "file-pdf": [384, 512, [], "f1c1", "M320 464C328.8 464 336 456.8 336 448V416H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V416H48V448C48 456.8 55.16 464 64 464H320zM256 160C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V192H0V64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V192H336V160H256zM88 224C118.9 224 144 249.1 144 280C144 310.9 118.9 336 88 336H80V368C80 376.8 72.84 384 64 384C55.16 384 48 376.8 48 368V240C48 231.2 55.16 224 64 224H88zM112 280C112 266.7 101.3 256 88 256H80V304H88C101.3 304 112 293.3 112 280zM160 240C160 231.2 167.2 224 176 224H200C226.5 224 248 245.5 248 272V336C248 362.5 226.5 384 200 384H176C167.2 384 160 376.8 160 368V240zM192 352H200C208.8 352 216 344.8 216 336V272C216 263.2 208.8 256 200 256H192V352zM336 224C344.8 224 352 231.2 352 240C352 248.8 344.8 256 336 256H304V288H336C344.8 288 352 295.2 352 304C352 312.8 344.8 320 336 320H304V368C304 376.8 296.8 384 288 384C279.2 384 272 376.8 272 368V240C272 231.2 279.2 224 288 224H336z"], + "file-powerpoint": [384, 512, [], "f1c4", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM200 224H128C119.2 224 112 231.2 112 240v168c0 13.25 10.75 24 24 24S160 421.3 160 408v-32h44c44.21 0 79.73-37.95 75.69-82.98C276.1 253.2 240 224 200 224zM204 328H160V272h44c15.44 0 28 12.56 28 28S219.4 328 204 328z"], + "file-video": [384, 512, [], "f1c8", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM240 288c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-16.52l43.84 30.2C292.3 403.5 304 397.6 304 387.4V284.6c0-10.16-11.64-16.16-20.16-10.32L240 304.5V288z"], + "file-word": [384, 512, [], "f1c2", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM214.6 248C211.3 238.4 202.2 232 192 232s-19.25 6.406-22.62 16L144.7 318.1l-25.89-77.66C114.6 227.8 101 221.2 88.41 225.2C75.83 229.4 69.05 243 73.23 255.6l48 144C124.5 409.3 133.5 415.9 143.8 416c10.17 0 19.45-6.406 22.83-16L192 328.1L217.4 400C220.8 409.6 229.8 416 240 416c10.27-.0938 19.53-6.688 22.77-16.41l48-144c4.188-12.59-2.594-26.16-15.17-30.38c-12.61-4.125-26.2 2.594-30.36 15.19l-25.89 77.66L214.6 248z"], + "file-zipper": [384, 512, ["file-archive"], "f1c6", "M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h48V64h64V48.13h48.01L224 128c0 17.67 14.33 32 32 32h79.1V448zM176 96h-64v32h64V96zM176 160h-64v32h64V160zM176 224h-64l-30.56 116.5C73.51 379.5 103.7 416 144.3 416c40.26 0 70.45-36.3 62.68-75.15L176 224zM160 368H128c-8.836 0-16-7.164-16-16s7.164-16 16-16h32c8.836 0 16 7.164 16 16S168.8 368 160 368z"], + "flag": [512, 512, [61725, 127988], "f024", "M476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87c-34.63 0-77.87 8.003-137.2 32.05V24C48 10.75 37.25 0 24 0S0 10.75 0 24v464C0 501.3 10.75 512 24 512s24-10.75 24-24v-104c53.59-23.86 96.02-31.81 132.8-31.81c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0zM464 319.8c-30.31 10.82-58.08 16.1-84.6 16.1c-30.8 0-58.31-7-87.44-14.41c-32.01-8.141-68.29-17.37-111.1-17.37c-42.35 0-85.99 9.09-132.8 27.73V84.14l18.03-7.301c47.39-19.2 86.38-28.54 119.2-28.54c28.24 .0039 49.12 6.711 73.31 14.48c25.38 8.148 54.13 17.39 90.58 17.39c35.43 0 72.24-8.496 114.9-26.61V319.8z"], + "floppy-disk": [448, 512, [128426, 128190, "save"], "f0c7", "M224 256c-35.2 0-64 28.8-64 64c0 35.2 28.8 64 64 64c35.2 0 64-28.8 64-64C288 284.8 259.2 256 224 256zM433.1 129.1l-83.9-83.9C341.1 37.06 328.8 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 151.2 442.9 138.9 433.1 129.1zM128 80h144V160H128V80zM400 416c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h16v104c0 13.25 10.75 24 24 24h192C309.3 208 320 197.3 320 184V83.88l78.25 78.25C399.4 163.2 400 164.8 400 166.3V416z"], + "folder": [512, 512, [128447, 61716, 128193, "folder-blank"], "f07b", "M447.1 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H63.1c-35.35 0-64 28.66-64 64v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C511.1 124.7 483.3 96 447.1 96zM463.1 416c0 8.824-7.178 16-16 16h-384c-8.822 0-16-7.176-16-16V96c0-8.824 7.178-16 16-16h117.5c4.273 0 8.293 1.664 11.31 4.688L255.1 144h192c8.822 0 16 7.176 16 16V416z"], + "folder-closed": [512, 512, [], "e185", "M448 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C512 124.7 483.3 96 448 96zM64 80h117.5c4.273 0 8.293 1.664 11.31 4.688L256 144h192c8.822 0 16 7.176 16 16v32h-416V96C48 87.18 55.18 80 64 80zM448 432H64c-8.822 0-16-7.176-16-16V240h416V416C464 424.8 456.8 432 448 432z"], + "folder-open": [576, 512, [128449, 61717, 128194], "f07c", "M572.6 270.3l-96 192C471.2 473.2 460.1 480 447.1 480H64c-35.35 0-64-28.66-64-64V96c0-35.34 28.65-64 64-64h117.5c16.97 0 33.25 6.742 45.26 18.75L275.9 96H416c35.35 0 64 28.66 64 64v32h-48V160c0-8.824-7.178-16-16-16H256L192.8 84.69C189.8 81.66 185.8 80 181.5 80H64C55.18 80 48 87.18 48 96v288l71.16-142.3C124.6 230.8 135.7 224 147.8 224h396.2C567.7 224 583.2 249 572.6 270.3z"], + "font-awesome": [448, 512, [62694, 62501, "font-awesome-flag", "font-awesome-logo-full"], "f2b4", "M448 48V384c-63.09 22.54-82.34 32-119.5 32c-62.82 0-86.6-32-149.3-32c-21.69 0-38.48 3.791-53.74 8.766C110.1 397.5 96 386.1 96 371.7v-.7461c0-9.275 5.734-17.6 14.42-20.86C129.1 342.8 150.2 336 179.2 336c62.73 0 86.51 32 149.3 32c25.5 0 42.85-4.604 71.47-14.7v-240C379.2 120.6 357.7 128 328.5 128c-.0039 0 .0039 0 0 0c-62.81 0-86.61-32-149.3-32C122.1 96 98.8 122.1 48 126.1V456C48 469.3 37.25 480 24 480S0 469.3 0 456V56C0 42.74 10.75 32 24 32S48 42.74 48 56v22.99C98.8 74.14 122.1 48 179.2 48c62.77 0 86.45 32 149.3 32C366.1 80 386.8 69.85 448 48z"], + "futbol": [512, 512, [9917, "futbol-ball", "soccer-ball"], "f1e3", "M177.1 228.6L207.9 320h96.5l29.62-91.38L256 172.1L177.1 228.6zM255.1 0C114.6 0 .0001 114.6 .0001 256S114.6 512 256 512s255.1-114.6 255.1-255.1S397.4 0 255.1 0zM435.2 361.1l-103.9-1.578l-30.67 99.52C286.2 462.2 271.3 464 256 464s-30.19-1.773-44.56-4.93L180.8 359.6L76.83 361.1c-14.93-25.35-24.79-54.01-27.8-84.72L134.3 216.4L100.7 118.1c19.85-22.34 44.32-40.45 72.04-52.62L256 128l83.29-62.47c27.72 12.17 52.19 30.27 72.04 52.62L377.7 216.4l85.23 59.97C459.1 307.1 450.1 335.8 435.2 361.1z"], + "gem": [512, 512, [128142], "f3a5", "M507.9 196.4l-104-153.8C399.4 35.95 391.1 32 384 32H127.1C120 32 112.6 35.95 108.1 42.56l-103.1 153.8c-6.312 9.297-5.281 21.72 2.406 29.89l231.1 246.2C243.1 477.3 249.4 480 256 480s12.94-2.734 17.47-7.547l232-246.2C513.2 218.1 514.2 205.7 507.9 196.4zM382.5 96.59L446.1 192h-140.1L382.5 96.59zM256 178.9L177.6 80h156.7L256 178.9zM129.5 96.59L205.1 192H65.04L129.5 96.59zM256 421L85.42 240h341.2L256 421z"], + "hand": [512, 512, [129306, 9995, "hand-paper"], "f256", "M408 80c-3.994 0-7.91 .3262-11.73 .9551c-9.586-28.51-36.57-49.11-68.27-49.11c-6.457 0-12.72 .8555-18.68 2.457C296.6 13.73 273.9 0 248 0C222.1 0 199.3 13.79 186.6 34.44C180.7 32.85 174.5 32 168.1 32C128.4 32 96.01 64.3 96.01 104v121.6C90.77 224.6 85.41 224 80.01 224c-.0026 0 .0026 0 0 0C36.43 224 0 259.2 0 304.1c0 20.29 7.558 39.52 21.46 54.45l81.25 87.24C141.9 487.9 197.4 512 254.9 512h33.08C393.9 512 480 425.9 480 320V152C480 112.3 447.7 80 408 80zM432 320c0 79.41-64.59 144-143.1 144H254.9c-44.41 0-86.83-18.46-117.1-50.96l-79.76-85.63c-6.202-6.659-9.406-15.4-9.406-23.1c0-22.16 18.53-31.4 31.35-31.4c8.56 0 17.1 3.416 23.42 10.18l26.72 28.69C131.8 312.7 133.9 313.4 135.9 313.4c4.106 0 8.064-3.172 8.064-8.016V104c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152C192 264.8 199.2 272 208 272s15.1-7.163 15.1-15.1L224 72c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v184C272 264.8 279.2 272 288 272s15.99-7.164 15.99-15.1l.0077-152.2c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152.2C352 264.8 359.2 272 368 272s15.1-7.163 15.1-15.1V152c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24V320z"], + "hand-back-fist": [448, 512, ["hand-rock"], "f255", "M377.1 68.05C364.4 50.65 343.7 40 321.2 40h-13.53c-3.518 0-7.039 .2754-10.53 .8184C284.8 31.33 269.6 26 253.5 26H240c-3.977 0-7.904 .3691-11.75 1.084C216.7 10.71 197.6 0 176 0H160C124.7 0 96 28.65 96 64v49.71L63.04 143.3C43.3 160 32 184.6 32 210.9v78.97c0 32.1 17.11 61.65 44.65 77.12L112 386.9v101.1C112 501.3 122.7 512 135.1 512S160 501.3 160 488v-129.9c-1.316-.6543-2.775-.9199-4.062-1.639l-55.78-31.34C87.72 318.2 80 304.6 80 289.9V210.9c0-12.31 5.281-23.77 14.5-31.39L112 163.8V208C112 216.8 119.2 224 128 224s16-7.156 16-16V64c0-8.828 7.188-16 16-16h16C184.8 48 192 55.17 192 64v16c0 9.578 7.942 16.04 16.15 16.04c6.432 0 12.31-4.018 14.73-10.17C223.3 84.84 228.3 74 240 74h13.53c20.97 0 17.92 19.58 34.27 19.58c8.177 0 9.9-5.584 19.88-5.584h13.53c25.54 0 18.27 28.23 38.66 28.23c.1562 0 .3125-.002 .4668-.0078L375.4 116C388.1 116 400 127.7 400 142V272c0 36.15-19.54 67.32-48 83.69v132.3C352 501.3 362.7 512 375.1 512S400 501.3 400 488v-108.1C430.1 352.8 448 313.6 448 272V142C448 102.1 416.8 69.44 377.1 68.05z"], + "hand-lizard": [512, 512, [], "f258", "M512 331.8V424c0 13.25-10.75 24-24 24c-13.25 0-24-10.75-24-24v-92.17c0-10.09-3.031-19.8-8.766-28.08l-118.6-170.5C327.4 119.1 312.2 112 295.1 112H53.32c-2.5 0-5.25 2.453-5.313 4.172c-.2969 9.5 3.156 18.47 9.75 25.28C64.36 148.3 73.2 152 82.67 152h161.8c17.09 0 33.4 8.281 43.4 22.14c9.984 13.88 12.73 31.83 7.328 48.05l-9.781 29.34C278.2 273.3 257.8 288 234.9 288H138.7C129.2 288 120.4 291.8 113.8 298.5c-6.594 6.812-10.05 15.78-9.75 25.28C104.1 325.5 106.8 328 109.3 328h156.6c5.188 0 10.14 1.688 14.3 4.797l78.22 58.67c6.031 4.531 9.594 11.66 9.594 19.2L367.1 424c0 13.25-10.75 24-24 24s-24-10.75-24-24v-1.328L257.8 376H109.3c-28.48 0-52.39-22.72-53.28-50.64c-.7187-22.61 7.531-43.98 23.23-60.2C94.1 248.9 116.1 240 138.7 240h96.19c2.297 0 4.328-1.469 5.063-3.656l9.781-29.33c.7031-2.141-.0156-3.797-.7344-4.797C248.2 201.2 246.9 200 244.6 200H82.67c-22.58 0-43.67-8.938-59.39-25.16C7.575 158.6-.6755 137.3 .0433 114.6C.9339 86.72 24.84 64 53.32 64h242.7c31.94 0 61.86 15.67 80.05 41.92l118.6 170.5C506 292.8 512 311.9 512 331.8z"], + "hand-peace": [512, 512, [9996], "f25b", "M412 160c-8.326 0-16.3 1.51-23.68 4.27C375.1 151.8 358.9 144 340 144c-11.64 0-22.44 3.223-32.03 8.418l11.12-68.95c.6228-3.874 .9243-7.725 .9243-11.53c0-36.08-28.91-71.95-72.09-71.95c-34.68 0-65.31 25.16-71.03 60.54L173.4 82.22L168.9 72.77c-12.4-25.75-38.07-40.78-64.89-40.78c-40.8 0-72.01 33.28-72.01 72.07c0 10.48 2.296 21.11 7.144 31.18L89.05 238.9C64.64 250.4 48 275.7 48 303.1v80c0 22.06 10.4 43.32 27.83 56.86l45.95 35.74c29.35 22.83 65.98 35.41 103.2 35.41l78.81 .0352C400.9 512 480 432.1 480 335.8v-107.5C480 189.6 447.9 160 412 160zM320 212.3C320 201.1 328.1 192 340 192c11.02 0 20 9.078 20 20.25v55.5C360 278.9 351 288 340 288C328.1 288 320 278.9 320 267.8V212.3zM247.9 47.98c12.05 0 24.13 9.511 24.13 23.98c0 1.277-.1022 2.57-.3134 3.871L248.4 220.5C240.7 217.6 232.4 215.1 223.9 215.1c0 0 .002 0 0 0c-4.475 0-8.967 .4199-13.38 1.254l-10.55 1.627l24.32-150.7C226.2 56.42 236.4 47.98 247.9 47.98zM79.1 104c0-13.27 10.79-24.04 24.02-24.04c8.937 0 17.5 5.023 21.61 13.61l61.29 127.3L137.3 228.5L82.38 114.4C80.76 111.1 79.1 107.5 79.1 104zM303.8 464l-78.81-.0352c-26.56 0-52.72-8.984-73.69-25.3l-45.97-35.75C99.47 398.4 96 391.3 96 383.1v-80c0-11.23 7.969-21.11 17.59-23.22l105.3-16.23C220.6 264.2 222.3 263.1 223.9 263.1c11.91 0 24.09 9.521 24.09 24.06c0 11.04-7.513 20.95-17.17 23.09L172.8 319c-12.03 1.633-20.78 11.92-20.78 23.75c0 20.21 18.82 24.08 23.7 24.08c2.645 0 64.61-8.619 65.54-8.826c23.55-5.227 41.51-22.23 49.73-43.64C303.3 327.5 320.6 336 340 336c8.326 0 16.31-1.51 23.69-4.27C376 344.2 393.1 352 412 352c.1992 0 10.08-.4453 18.65-2.92C423.9 413.5 369.9 464 303.8 464zM432 283.8C432 294.9 423 304 412 304c-11.02 0-20-9.078-20-20.25v-55.5C392 217.1 400.1 208 412 208c11.02 0 20 9.078 20 20.25V283.8z"], + "hand-point-down": [448, 512, [], "f0a7", "M448 248V144C448 64.6 385.1 0 307.7 0H199.8C176.4 0 153.1 6.104 132.5 17.65L76.63 49C49.1 64.47 32 94.02 32 126.1V176c0 27.23 12.51 51.53 32 67.69V440C64 479.7 96.3 512 136 512s72-32.3 72-72v-56.44C210.6 383.9 213.3 384 216 384c25.95 0 48.73-13.79 61.4-34.43C283.3 351.2 289.6 352 296 352c25.95 0 48.73-13.79 61.4-34.43C363.3 319.2 369.6 320 376 320C415.7 320 448 287.7 448 248zM272 232c0-13.23 10.78-24 24-24S320 218.9 320 232.1V280c0 13.23-10.78 24-24 24S272 293.2 272 280V232zM192 264h12c12.39 0 23.93-3.264 34.27-8.545C239.3 258.1 240 260.1 240 264v48c0 13.23-10.78 24-24 24S192 325.2 192 312V264zM112 264c0-.2813 .1504-.5137 .1602-.793C114.8 263.4 117.3 264 120 264H160v176c0 13.23-10.78 24-24 24S112 453.2 112 440V264zM397.9 123.8C390.9 121.6 383.7 120 376 120c-29.04 0-53.96 17.37-65.34 42.18C305.8 161.2 301 160 296 160c-7.139 0-13.96 1.273-20.46 3.355C265.2 133.6 237.2 112 204 112H152C138.8 112 128 122.8 128 136S138.8 160 152 160h52c15.44 0 28 12.56 28 28S219.4 216 204 216H120C97.94 216 80 198.1 80 176V126.1c0-14.77 7.719-28.28 20.16-35.27l55.78-31.34C169.4 51.98 184.6 48 199.8 48h107.9C351.9 48 388.9 80.56 397.9 123.8zM400 248c0 13.23-10.78 24-24 24S352 261.2 352 248V192c0-13.23 10.78-24 24-24S400 178.8 400 192V248z"], + "hand-point-left": [512, 512, [], "f0a5", "M264 480h104c79.4 0 144-62.95 144-140.3V231.8c0-23.44-6.104-46.73-17.65-67.35L462.1 108.6C447.5 81.1 417.1 64 385.9 64H336c-27.23 0-51.53 12.51-67.69 32H72C32.3 96 0 128.3 0 168S32.3 240 72 240h56.44C128.1 242.6 128 245.3 128 248c0 25.95 13.79 48.73 34.43 61.4C160.8 315.3 160 321.6 160 328c0 25.95 13.79 48.73 34.43 61.4C192.8 395.3 192 401.6 192 408C192 447.7 224.3 480 264 480zM280 304c13.23 0 24 10.78 24 24S293.1 352 279.9 352H232c-13.23 0-24-10.78-24-24S218.8 304 232 304H280zM248 224v12c0 12.39 3.264 23.93 8.545 34.27C253.9 271.3 251 272 248 272h-48C186.8 272 176 261.2 176 248S186.8 224 200 224H248zM248 144c.2813 0 .5137 .1504 .793 .1602C248.6 146.8 248 149.3 248 152V192h-176C58.77 192 48 181.2 48 168S58.77 144 72 144H248zM388.2 429.9C390.4 422.9 392 415.7 392 408c0-29.04-17.37-53.96-42.18-65.34C350.8 337.8 352 333 352 328c0-7.139-1.273-13.96-3.355-20.46C378.4 297.2 400 269.2 400 236V184C400 170.8 389.3 160 376 160S352 170.8 352 184v52c0 15.44-12.56 28-28 28S296 251.4 296 236V152c0-22.06 17.94-40 40-40h49.88c14.77 0 28.28 7.719 35.27 20.16l31.34 55.78C460 201.4 464 216.6 464 231.8v107.9C464 383.9 431.4 420.9 388.2 429.9zM264 432c-13.23 0-24-10.78-24-24S250.8 384 264 384H320c13.23 0 24 10.78 24 24S333.2 432 320 432H264z"], + "hand-point-right": [512, 512, [], "f0a4", "M320 408c0-6.428-.8457-12.66-2.434-18.6C338.2 376.7 352 353.9 352 328c0-6.428-.8457-12.66-2.434-18.6C370.2 296.7 384 273.9 384 248c0-2.705-.1484-5.373-.4414-8H440C479.7 240 512 207.7 512 168S479.7 96 440 96H243.7C227.5 76.51 203.2 64 176 64H126.1C94.02 64 64.47 81.1 49 108.6L17.65 164.5C6.104 185.1 0 208.4 0 231.8v107.9C0 417.1 64.6 480 144 480h104C287.7 480 320 447.7 320 408zM280 304c13.23 0 24 10.78 24 24S293.2 352 280 352H232.1C218.9 352 208 341.2 208 328S218.8 304 232 304H280zM312 224c13.23 0 24 10.78 24 24S325.2 272 312 272h-48c-3.029 0-5.875-.7012-8.545-1.73C260.7 259.9 264 248.4 264 236V224H312zM440 144c13.23 0 24 10.78 24 24S453.2 192 440 192h-176V152c0-2.686-.5566-5.217-.793-7.84C263.5 144.2 263.7 144 264 144H440zM48 339.7V231.8c0-15.25 3.984-30.41 11.52-43.88l31.34-55.78C97.84 119.7 111.4 112 126.1 112H176c22.06 0 40 17.94 40 40v84c0 15.44-12.56 28-28 28S160 251.4 160 236V184C160 170.8 149.3 160 136 160S112 170.8 112 184v52c0 33.23 21.58 61.25 51.36 71.54C161.3 314 160 320.9 160 328c0 5.041 1.166 9.836 2.178 14.66C137.4 354 120 378.1 120 408c0 7.684 1.557 14.94 3.836 21.87C80.56 420.9 48 383.9 48 339.7zM192 432c-13.23 0-24-10.78-24-24S178.8 384 192 384h56c13.23 0 24 10.78 24 24s-10.77 24-24 24H192z"], + "hand-point-up": [448, 512, [9757], "f0a6", "M376 192c-6.428 0-12.66 .8457-18.6 2.434C344.7 173.8 321.9 160 296 160c-6.428 0-12.66 .8457-18.6 2.434C264.7 141.8 241.9 128 216 128C213.3 128 210.6 128.1 208 128.4V72C208 32.3 175.7 0 136 0S64 32.3 64 72v196.3C44.51 284.5 32 308.8 32 336v49.88c0 32.1 17.1 61.65 44.63 77.12l55.83 31.35C153.1 505.9 176.4 512 199.8 512h107.9C385.1 512 448 447.4 448 368V264C448 224.3 415.7 192 376 192zM272 232c0-13.23 10.78-24 24-24S320 218.8 320 232v47.91C320 293.1 309.2 304 296 304S272 293.2 272 280V232zM192 200C192 186.8 202.8 176 216 176s24 10.77 24 24v48c0 3.029-.7012 5.875-1.73 8.545C227.9 251.3 216.4 248 204 248H192V200zM112 72c0-13.23 10.78-24 24-24S160 58.77 160 72v176H120c-2.686 0-5.217 .5566-7.84 .793C112.2 248.5 112 248.3 112 248V72zM307.7 464H199.8c-15.25 0-30.41-3.984-43.88-11.52l-55.78-31.34C87.72 414.2 80 400.6 80 385.9V336c0-22.06 17.94-40 40-40h84c15.44 0 28 12.56 28 28S219.4 352 204 352H152C138.8 352 128 362.8 128 376s10.75 24 24 24h52c33.23 0 61.25-21.58 71.54-51.36C282 350.7 288.9 352 296 352c5.041 0 9.836-1.166 14.66-2.178C322 374.6 346.1 392 376 392c7.684 0 14.94-1.557 21.87-3.836C388.9 431.4 351.9 464 307.7 464zM400 320c0 13.23-10.78 24-24 24S352 333.2 352 320V264c0-13.23 10.78-24 24-24s24 10.77 24 24V320z"], + "hand-pointer": [448, 512, [], "f25a", "M208 288C199.2 288 192 295.2 192 304v96C192 408.8 199.2 416 208 416s16-7.164 16-16v-96C224 295.2 216.8 288 208 288zM272 288C263.2 288 256 295.2 256 304v96c0 8.836 7.162 16 15.1 16S288 408.8 288 400l-.0013-96C287.1 295.2 280.8 288 272 288zM376.9 201.2c-13.74-17.12-34.8-27.45-56.92-27.45h-13.72c-3.713 0-7.412 .291-11.07 .8652C282.7 165.1 267.4 160 251.4 160h-11.44V72c0-39.7-32.31-72-72.01-72c-39.7 0-71.98 32.3-71.98 72v168.5C84.85 235.1 75.19 235.4 69.83 235.4c-44.35 0-69.83 37.23-69.83 69.85c0 14.99 4.821 29.51 13.99 41.69l78.14 104.2C120.7 489.3 166.2 512 213.7 512h109.7c6.309 0 12.83-.957 18.14-2.645c28.59-5.447 53.87-19.41 73.17-40.44C436.1 446.3 448 416.2 448 384.2V274.3C448 234.6 416.3 202.3 376.9 201.2zM400 384.2c0 19.62-7.219 38.06-20.44 52.06c-12.53 13.66-29.03 22.67-49.69 26.56C327.4 463.6 325.3 464 323.4 464H213.7c-32.56 0-63.65-15.55-83.18-41.59L52.36 318.2C49.52 314.4 48.02 309.8 48.02 305.2c0-16.32 14.5-21.75 21.72-21.75c4.454 0 12.01 1.55 17.34 8.703l28.12 37.5c3.093 4.105 7.865 6.419 12.8 6.419c11.94 0 16.01-10.7 16.01-16.01V72c0-13.23 10.78-24 23.1-24c13.22 0 24 10.77 24 24v130.7c0 6.938 5.451 16.01 16.03 16.01C219.5 218.7 220.1 208 237.7 208h13.72c21.5 0 18.56 19.21 34.7 19.21c8.063 0 9.805-5.487 20.15-5.487h13.72c26.96 0 17.37 27.43 40.77 27.43l14.07-.0037c13.88 0 25.16 11.28 25.16 25.14V384.2zM336 288C327.2 288 320 295.2 320 304v96c0 8.836 7.164 16 16 16s16-7.164 16-16v-96C352 295.2 344.8 288 336 288z"], + "hand-scissors": [512, 512, [], "f257", "M270.1 480h97.92C447.4 480 512 417.1 512 339.7V231.8c0-23.45-6.106-46.73-17.66-67.33l-31.35-55.85C447.5 81.1 417.1 64 385.9 64h-46.97c-26.63 0-51.56 11.63-68.4 31.93l-15.46 18.71L127.3 68.44C119 65.46 110.5 64.05 102.1 64.05c-30.02 0-58.37 18.06-69.41 47.09C15.06 156.8 46.19 194 76.75 204.9l2.146 .7637L68.79 206.4C30.21 209 0 241.2 0 279.3c0 39.7 33.27 72.09 73.92 72.09c1.745 0 3.501-.0605 5.268-.1833l88.79-6.135v8.141c0 22.11 10.55 43.11 28.05 56.74C197.4 448.8 230.2 480 270.1 480zM269.1 432c-14.34 0-26-11.03-26-24.62c0 0 .0403-14.31 .0403-14.71c0-6.894-4.102-14.2-10.67-16.39c-10.39-3.5-17.38-12.78-17.38-23.06v-13.53c0-16.98 13.7-16.4 13.7-29.89c0-9.083-7.392-15.96-15.96-15.96c-.3646 0-.7311 .0125-1.099 .0377c0 0-138.1 9.505-138.7 9.505c-14.32 0-25.93-11.04-25.93-24.49c0-13.28 10.7-23.74 24.1-24.64l163.2-11.28c2.674-.1882 14.92-2.907 14.92-16.18c0-6.675-4.284-12.58-10.65-14.85L92.84 159.7C85.39 156.1 75.97 149.4 75.97 136.7c0-11.14 9.249-24.66 25.97-24.66c3.043 0 6.141 .5115 9.166 1.59l234.1 85.03c1.801 .6581 3.644 .9701 5.456 .9701c8.96 0 16-7.376 16-15.1c0-6.514-4.068-12.69-10.59-15.04l-64.81-23.47l15.34-18.56C315.2 117.3 326.6 112 338.9 112h46.97c14.77 0 28.28 7.719 35.27 20.16L452.5 188c7.531 13.41 11.52 28.56 11.52 43.81v107.9c0 50.91-43.06 92.31-96 92.31H269.1z"], + "hand-spock": [576, 512, [128406], "f259", "M234.9 48.02c10.43 0 20.72 5.834 24.13 19.17l47.33 184.1c2.142 8.456 9.174 12.62 16.21 12.62c7.326 0 14.66-4.505 16.51-13.37l31.72-155.1c2.921-14.09 13.76-20.57 24.67-20.57c13.01 0 26.14 9.19 26.14 25.62c0 2.19-.2333 4.508-.7313 6.951l-28.48 139.2c-.2389 1.156-.3514 2.265-.3514 3.323c0 8.644 7.504 13.9 14.86 13.9c5.869 0 11.65-3.341 13.46-10.98l24.73-104.2c.2347-.9802 4.12-19.76 24.28-19.76c13.21 0 26.64 9.4 26.64 24.79c0 2.168-.2665 4.455-.8378 6.852l-48.06 204.7c-13.59 57.85-65.15 98.74-124.5 98.74l-48.79-.0234c-40.7-.0196-79.86-15.58-109.5-43.51l-75.93-71.55c-5.938-5.584-8.419-11.1-8.419-18.2c0-13.88 12.45-26.69 26.38-26.69c5.756 0 11.76 2.182 17.26 7.376l51.08 48.14c1.682 1.569 3.599 2.249 5.448 2.249c4.192 0 8.04-3.49 8.04-8.001c0-23.76-3.372-47.39-10.12-70.28L142 161.1C141.2 159.1 140.8 156.3 140.8 153.7c0-15.23 13.48-24.82 26.75-24.82c10.11 0 20.1 5.559 23.94 18.42l31.22 105.8c2.231 7.546 8.029 10.8 13.9 10.8c7.752 0 15.64-5.659 15.64-14.57c0-1.339-.1783-2.752-.562-4.23L209.3 80.06C208.7 77.45 208.3 74.97 208.3 72.62C208.3 57.33 221.7 48.02 234.9 48.02zM234.9 0C201.5 0 160.4 25.24 160.4 72.72c0 2.807 .1579 5.632 .4761 8.463C129.9 83.9 92.84 108.9 92.84 153.8c0 7.175 1.038 14.47 3.148 21.68l24.33 81.94C115.8 256.5 111.1 256 106.4 256C65.74 256 32 290.6 32 330.8c0 19.59 8.162 38.58 23.6 53.1l75.89 71.51c38.68 36.45 89.23 56.53 142.3 56.56L322.6 512c82.1 0 152.5-55.83 171.3-135.8l48.06-204.7C543.3 165.7 544 159.7 544 153.9c0-54.55-49.55-72.95-74.59-72.95c-.7689 0-1.534 .0117-2.297 .0352c-10.49-39.43-46.46-54.11-71.62-54.11c-34.1 0-64.45 24.19-71.63 58.83L319.2 108.5l-13.7-53.29C297.1 22.22 268.7 0 234.9 0z"], + "handshake": [640, 512, [], "f2b5", "M506.1 127.1c-17.97-20.17-61.46-61.65-122.7-71.1c-22.5-3.354-45.39 3.606-63.41 18.21C302 60.47 279.1 53.42 256.5 56.86C176.8 69.17 126.7 136.2 124.6 139.1c-7.844 10.69-5.531 25.72 5.125 33.57c4.281 3.157 9.281 4.657 14.19 4.657c7.406 0 14.69-3.375 19.38-9.782c.4062-.5626 40.19-53.91 100.5-63.23c7.457-.9611 14.98 .67 21.56 4.483L227.2 168.2C214.8 180.5 207.1 196.1 207.1 214.5c0 17.5 6.812 33.94 19.16 46.29C239.5 273.2 255.9 279.1 273.4 279.1s33.94-6.813 46.31-19.19l11.35-11.35l124.2 100.9c2.312 1.875 2.656 5.251 .5 7.97l-27.69 35.75c-1.844 2.25-5.25 2.594-7.156 1.063l-22.22-18.69l-26.19 27.75c-2.344 2.875-5.344 3.563-6.906 3.719c-1.656 .1562-4.562 .125-6.812-1.719l-32.41-27.66L310.7 392.3l-2.812 2.938c-5.844 7.157-14.09 11.66-23.28 12.6c-9.469 .8126-18.25-1.75-24.5-6.782L170.3 319.8H96V128.3L0 128.3v255.6l64 .0404c11.74 0 21.57-6.706 27.14-16.14h60.64l77.06 69.66C243.7 449.6 261.9 456 280.8 456c2.875 0 5.781-.125 8.656-.4376c13.62-1.406 26.41-6.063 37.47-13.5l.9062 .8126c12.03 9.876 27.28 14.41 42.69 12.78c13.19-1.375 25.28-7.032 33.91-15.35c21.09 8.188 46.09 2.344 61.25-16.47l27.69-35.75c18.47-22.82 14.97-56.48-7.844-75.01l-120.3-97.76l8.381-8.382c9.375-9.376 9.375-24.57 0-33.94c-9.375-9.376-24.56-9.376-33.94 0L285.8 226.8C279.2 233.5 267.7 233.5 261.1 226.8c-3.312-3.282-5.125-7.657-5.125-12.31c0-4.688 1.812-9.064 5.281-12.53l85.91-87.64c7.812-7.845 18.53-11.75 28.94-10.03c59.75 9.22 100.2 62.73 100.6 63.29c3.088 4.155 7.264 6.946 11.84 8.376H544v175.1c0 17.67 14.33 32.05 31.1 32.05L640 384V128.1L506.1 127.1zM48 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99S64 327.2 64 336.1C64 344.8 56.75 352 48 352zM592 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99s16 7.117 16 15.99C608 344.8 600.8 352 592 352z"], + "hard-drive": [512, 512, [128436, "hdd"], "f0a0", "M304 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C328 354.7 317.3 344 304 344zM448 32h-384c-35.35 0-64 28.65-64 64v320c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V96C512 60.65 483.3 32 448 32zM464 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16v-96c0-8.822 7.178-16 16-16h384C456.8 304 464 311.2 464 320V416zM464 258.3C458.9 256.9 453.6 256 448 256H64C58.44 256 53.14 256.9 48 258.3V96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V258.3zM400 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C424 354.7 413.3 344 400 344z"], + "heart": [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 10084, 61578, 9829], "f004", "M244 84L255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84C243.1 84 244 84.01 244 84L244 84zM255.1 163.9L210.1 117.1C188.4 96.28 157.6 86.4 127.3 91.44C81.55 99.07 48 138.7 48 185.1V190.9C48 219.1 59.71 246.1 80.34 265.3L256 429.3L431.7 265.3C452.3 246.1 464 219.1 464 190.9V185.1C464 138.7 430.4 99.07 384.7 91.44C354.4 86.4 323.6 96.28 301.9 117.1L255.1 163.9z"], + "hospital": [640, 512, [127973, 62589, "hospital-alt", "hospital-wide"], "f0f8", "M296 96C296 87.16 303.2 80 312 80H328C336.8 80 344 87.16 344 96V120H368C376.8 120 384 127.2 384 136V152C384 160.8 376.8 168 368 168H344V192C344 200.8 336.8 208 328 208H312C303.2 208 296 200.8 296 192V168H272C263.2 168 256 160.8 256 152V136C256 127.2 263.2 120 272 120H296V96zM408 0C447.8 0 480 32.24 480 72V80H568C607.8 80 640 112.2 640 152V440C640 479.8 607.8 512 568 512H71.98C32.19 512 0 479.8 0 440V152C0 112.2 32.24 80 72 80H160V72C160 32.24 192.2 0 232 0L408 0zM480 128V464H568C581.3 464 592 453.3 592 440V336H536C522.7 336 512 325.3 512 312C512 298.7 522.7 288 536 288H592V240H536C522.7 240 512 229.3 512 216C512 202.7 522.7 192 536 192H592V152C592 138.7 581.3 128 568 128H480zM48 152V192H104C117.3 192 128 202.7 128 216C128 229.3 117.3 240 104 240H48V288H104C117.3 288 128 298.7 128 312C128 325.3 117.3 336 104 336H48V440C48 453.3 58.74 464 71.98 464H160V128H72C58.75 128 48 138.7 48 152V152zM208 464H272V400C272 373.5 293.5 352 320 352C346.5 352 368 373.5 368 400V464H432V72C432 58.75 421.3 48 408 48H232C218.7 48 208 58.75 208 72V464z"], + "hourglass": [384, 512, [62032, 9203, "hourglass-empty"], "f254", "M360 0C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24C0 10.75 10.75 0 24 0L360 0zM192 289.9L110.5 371.5C90.96 390.1 80 417.4 80 445V464H304V445C304 417.4 293 390.1 273.5 371.5L192 289.9zM192 222.1L273.5 140.5C293 121 304 94.56 304 66.98V47.1H80V66.98C80 94.56 90.96 121 110.5 140.5L192 222.1z"], + "hourglass-half": [384, 512, ["hourglass-2"], "f252", "M0 24C0 10.75 10.75 0 24 0H360C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24V24zM99.78 384H284.2C281 379.6 277.4 375.4 273.5 371.5L192 289.9L110.5 371.5C106.6 375.4 102.1 379.6 99.78 384H99.78zM284.2 128C296.1 110.4 304 89.03 304 66.98V48H80V66.98C80 89.03 87 110.4 99.78 128H284.2z"], + "id-badge": [384, 512, [], "f2c1", "M320 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h256c35.35 0 64-28.65 64-64V64C384 28.65 355.3 0 320 0zM336 448c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h64V64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V48h64c8.836 0 16 7.162 16 16V448zM192 288c35.35 0 64-28.65 64-64s-28.65-64-64-64C156.7 160 128 188.7 128 224S156.7 288 192 288zM224 320H160c-44.18 0-80 35.82-80 80C80 408.8 87.16 416 96 416h192c8.836 0 16-7.164 16-16C304 355.8 268.2 320 224 320z"], + "id-card": [576, 512, [62147, "drivers-license"], "f2c2", "M368 344h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 344 368 344zM208 320c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 291.3 172.7 320 208 320zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16h-192c0-44.18-35.82-80-80-80h-64C131.8 352 96 387.8 96 432H64c-8.822 0-16-7.178-16-16V160h480V416zM368 264h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 264 368 264z"], + "image": [512, 512, [], "f03e", "M152 120c-26.51 0-48 21.49-48 48s21.49 48 48 48s48-21.49 48-48S178.5 120 152 120zM447.1 32h-384C28.65 32-.0091 60.65-.0091 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96C511.1 60.65 483.3 32 447.1 32zM463.1 409.3l-136.8-185.9C323.8 218.8 318.1 216 312 216c-6.113 0-11.82 2.768-15.21 7.379l-106.6 144.1l-37.09-46.1c-3.441-4.279-8.934-6.809-14.77-6.809c-5.842 0-11.33 2.529-14.78 6.809l-75.52 93.81c0-.0293 0 .0293 0 0L47.99 96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V409.3z"], + "images": [576, 512, [], "f302", "M512 32H160c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64H512c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 320c0 8.822-7.178 16-16 16h-16l-109.3-160.9C383.7 170.7 378.7 168 373.3 168c-5.352 0-10.35 2.672-13.31 7.125l-62.74 94.11L274.9 238.6C271.9 234.4 267.1 232 262 232c-5.109 0-9.914 2.441-12.93 6.574L176 336H160c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16H512c8.822 0 16 7.178 16 16V320zM224 112c-17.67 0-32 14.33-32 32s14.33 32 32 32c17.68 0 32-14.33 32-32S241.7 112 224 112zM456 480H120C53.83 480 0 426.2 0 360v-240C0 106.8 10.75 96 24 96S48 106.8 48 120v240c0 39.7 32.3 72 72 72h336c13.25 0 24 10.75 24 24S469.3 480 456 480z"], + "keyboard": [576, 512, [9000], "f11c", "M512 64H64C28.65 64 0 92.65 0 128v256c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V128C576 92.65 547.3 64 512 64zM528 384c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V128c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V384zM140 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 157.3 146.7 152 140 152zM196 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 194.7 189.3 200 196 200zM276 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 194.7 269.3 200 276 200zM356 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 194.7 349.3 200 356 200zM460 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 157.3 466.7 152 460 152zM140 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 237.3 146.7 232 140 232zM196 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 274.7 189.3 280 196 280zM276 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 274.7 269.3 280 276 280zM356 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 274.7 349.3 280 356 280zM460 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 237.3 466.7 232 460 232zM400 320h-224C167.1 320 160 327.1 160 336V352c0 8.875 7.125 16 16 16h224c8.875 0 16-7.125 16-16v-16C416 327.1 408.9 320 400 320z"], + "lemon": [448, 512, [127819], "f094", "M439.9 144.6c15.34-26.38 8.372-62.41-16.96-87.62c-25.21-25.32-61.22-32.26-87.61-16.95c-9.044 5.218-27.15 3.702-48.08 1.968c-50.78-4.327-127.4-10.73-207.6 69.56C-.6501 191.9 5.801 268.5 10.07 319.3c1.749 20.96 3.28 39.07-1.984 48.08c-15.35 26.4-8.357 62.45 16.92 87.57c16.26 16.37 37.05 25.09 56.83 25.09c10.89 0 21.46-2.64 30.83-8.092c9.013-5.249 27.12-3.718 48.08-1.968c50.69 4.233 127.4 10.7 207.6-69.56c80.27-80.28 73.82-156.9 69.56-207.7C436.2 171.8 434.7 153.7 439.9 144.6zM398.4 120.5c-12.87 22.09-10.67 48.41-8.326 76.25c4.155 49.3 8.841 105.2-55.67 169.7c-64.53 64.49-120.5 59.78-169.7 55.68c-27.85-2.328-54.12-4.53-76.26 8.311c-6.139 3.64-19.17 1.031-29.58-9.451c-10.39-10.33-12.95-23.35-9.372-29.49c12.87-22.09 10.67-48.41 8.326-76.25C53.72 265.1 49.04 210.1 113.5 145.5c48.27-48.27 91.71-57.8 131.2-57.8c13.28 0 26.12 1.078 38.52 2.125c27.9 2.359 54.17 4.561 76.26-8.311c6.123-3.577 19.18-1.031 29.49 9.357C399.4 101.2 402 114.4 398.4 120.5zM239.5 124.1c2.156 8.561-3.062 17.25-11.62 19.43C183.6 154.7 122.7 215.6 111.6 259.9C109.7 267.1 103.2 271.1 96.05 271.1c-1.281 0-2.593-.1562-3.905-.4687C83.58 269.3 78.4 260.6 80.52 252.1C94.67 195.8 163.8 126.7 220.1 112.5C228.8 110.4 237.3 115.5 239.5 124.1z"], + "life-ring": [512, 512, [], "f1cd", "M464.1 431C474.3 440.4 474.3 455.6 464.1 464.1C455.6 474.3 440.4 474.3 431 464.1L419.3 453.2C374.9 489.9 318.1 512 256 512C193.9 512 137.1 489.9 92.74 453.2L80.97 464.1C71.6 474.3 56.4 474.3 47.03 464.1C37.66 455.6 37.66 440.4 47.03 431L58.8 419.3C22.08 374.9 0 318.1 0 256C0 193.9 22.08 137.1 58.8 92.74L47.03 80.97C37.66 71.6 37.66 56.4 47.03 47.03C56.4 37.66 71.6 37.66 80.97 47.03L92.74 58.8C137.1 22.08 193.9 0 256 0C318.1 0 374.9 22.08 419.3 58.8L431 47.03C440.4 37.66 455.6 37.66 464.1 47.03C474.3 56.4 474.3 71.6 464.1 80.97L453.2 92.74C489.9 137.1 512 193.9 512 256C512 318.1 489.9 374.9 453.2 419.3L464.1 431zM304.8 338.7C290.5 347.2 273.8 352 256 352C238.2 352 221.5 347.2 207.2 338.7L126.9 419.1C162.3 447.2 207.2 464 256 464C304.8 464 349.7 447.2 385.1 419.1L304.8 338.7zM464 256C464 207.2 447.2 162.3 419.1 126.9L338.7 207.2C347.2 221.5 352 238.2 352 256C352 273.8 347.2 290.5 338.7 304.8L419.1 385.1C447.2 349.7 464 304.8 464 256V256zM256 48C207.2 48 162.3 64.8 126.9 92.93L207.2 173.3C221.5 164.8 238.2 160 256 160C273.8 160 290.5 164.8 304.8 173.3L385.1 92.93C349.7 64.8 304.8 48 256 48V48zM173.3 304.8C164.8 290.5 160 273.8 160 256C160 238.2 164.8 221.5 173.3 207.2L92.93 126.9C64.8 162.3 48 207.2 48 256C48 304.8 64.8 349.7 92.93 385.1L173.3 304.8zM256 208C229.5 208 208 229.5 208 256C208 282.5 229.5 304 256 304C282.5 304 304 282.5 304 256C304 229.5 282.5 208 256 208z"], + "lightbulb": [384, 512, [128161], "f0eb", "M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM192 0C90.02 .3203 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.8 289.2 .0039 192 0zM288.4 260.1c-15.66 17.85-35.04 46.3-49.05 75.89h-94.61c-14.01-29.59-33.39-58.04-49.04-75.88C75.24 236.8 64 206.1 64 175.1C64 113.3 112.1 48.25 191.1 48C262.6 48 320 105.4 320 175.1C320 206.1 308.8 236.8 288.4 260.1zM176 80C131.9 80 96 115.9 96 160c0 8.844 7.156 16 16 16S128 168.8 128 160c0-26.47 21.53-48 48-48c8.844 0 16-7.148 16-15.99S184.8 80 176 80z"], + "map": [576, 512, [62072, 128506], "f279", "M565.6 36.24C572.1 40.72 576 48.11 576 56V392C576 401.1 569.8 410.9 560.5 414.4L392.5 478.4C387.4 480.4 381.7 480.5 376.4 478.8L192.5 417.5L32.54 478.4C25.17 481.2 16.88 480.2 10.38 475.8C3.882 471.3 0 463.9 0 456V120C0 110 6.15 101.1 15.46 97.57L183.5 33.57C188.6 31.6 194.3 31.48 199.6 33.23L383.5 94.52L543.5 33.57C550.8 30.76 559.1 31.76 565.6 36.24H565.6zM48 421.2L168 375.5V90.83L48 136.5V421.2zM360 137.3L216 89.3V374.7L360 422.7V137.3zM408 421.2L528 375.5V90.83L408 136.5V421.2z"], + "message": [512, 512, ["comment-alt"], "f27a", "M447.1 0h-384c-35.25 0-64 28.75-64 63.1v287.1c0 35.25 28.75 63.1 64 63.1h96v83.98c0 9.836 11.02 15.55 19.12 9.7l124.9-93.68h144c35.25 0 64-28.75 64-63.1V63.1C511.1 28.75 483.2 0 447.1 0zM464 352c0 8.75-7.25 16-16 16h-160l-80 60v-60H64c-8.75 0-16-7.25-16-16V64c0-8.75 7.25-16 16-16h384c8.75 0 16 7.25 16 16V352z"], + "money-bill-1": [576, 512, ["money-bill-alt"], "f3d1", "M400 256C400 317.9 349.9 368 288 368C226.1 368 176 317.9 176 256C176 194.1 226.1 144 288 144C349.9 144 400 194.1 400 256zM272 224V288H264C255.2 288 248 295.2 248 304C248 312.8 255.2 320 264 320H312C320.8 320 328 312.8 328 304C328 295.2 320.8 288 312 288H304V208C304 199.2 296.8 192 288 192H272C263.2 192 256 199.2 256 208C256 216.8 263.2 224 272 224zM0 128C0 92.65 28.65 64 64 64H512C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128zM48 176V336C83.35 336 112 364.7 112 400H464C464 364.7 492.7 336 528 336V176C492.7 176 464 147.3 464 112H112C112 147.3 83.35 176 48 176z"], + "moon": [512, 512, [127769, 9214], "f186", "M421.6 379.9c-.6641 0-1.35 .0625-2.049 .1953c-11.24 2.143-22.37 3.17-33.32 3.17c-94.81 0-174.1-77.14-174.1-175.5c0-63.19 33.79-121.3 88.73-152.6c8.467-4.812 6.339-17.66-3.279-19.44c-11.2-2.078-29.53-3.746-40.9-3.746C132.3 31.1 32 132.2 32 256c0 123.6 100.1 224 223.8 224c69.04 0 132.1-31.45 173.8-82.93C435.3 389.1 429.1 379.9 421.6 379.9zM255.8 432C158.9 432 80 353 80 256c0-76.32 48.77-141.4 116.7-165.8C175.2 125 163.2 165.6 163.2 207.8c0 99.44 65.13 183.9 154.9 212.8C298.5 428.1 277.4 432 255.8 432z"], + "newspaper": [512, 512, [128240], "f1ea", "M456 32h-304C121.1 32 96 57.13 96 88v320c0 13.22-10.77 24-24 24S48 421.2 48 408V112c0-13.25-10.75-24-24-24S0 98.75 0 112v296C0 447.7 32.3 480 72 480h352c48.53 0 88-39.47 88-88v-304C512 57.13 486.9 32 456 32zM464 392c0 22.06-17.94 40-40 40H139.9C142.5 424.5 144 416.4 144 408v-320c0-4.406 3.594-8 8-8h304c4.406 0 8 3.594 8 8V392zM264 272h-64C186.8 272 176 282.8 176 296S186.8 320 200 320h64C277.3 320 288 309.3 288 296S277.3 272 264 272zM408 272h-64C330.8 272 320 282.8 320 296S330.8 320 344 320h64c13.25 0 24-10.75 24-24S421.3 272 408 272zM264 352h-64c-13.25 0-24 10.75-24 24s10.75 24 24 24h64c13.25 0 24-10.75 24-24S277.3 352 264 352zM408 352h-64C330.8 352 320 362.8 320 376s10.75 24 24 24h64c13.25 0 24-10.75 24-24S421.3 352 408 352zM400 112h-192c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64C432 126.3 417.7 112 400 112z"], + "notdef": [384, 512, [], "e1fe", "M336 0h-288C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48v-416C384 21.49 362.5 0 336 0zM336 90.16V421.8L221.2 256L336 90.16zM192 213.8L77.19 48h229.6L192 213.8zM162.8 256L48 421.8V90.16L162.8 256zM192 298.2L306.8 464H77.19L192 298.2z"], + "note-sticky": [448, 512, [62026, "sticky-note"], "f249", "M384 32H64.01C28.66 32 .0085 60.65 .0065 96L0 415.1C-.002 451.3 28.65 480 64 480h232.1c25.46 0 49.88-10.12 67.89-28.12l55.88-55.89C437.9 377.1 448 353.6 448 328.1V96C448 60.8 419.2 32 384 32zM52.69 427.3C50.94 425.6 48 421.8 48 416l.0195-319.1C48.02 87.18 55.2 80 64.02 80H384c8.674 0 16 7.328 16 16v192h-88C281.1 288 256 313.1 256 344v88H64C58.23 432 54.44 429.1 52.69 427.3zM330.1 417.9C322.9 425.1 313.8 429.6 304 431.2V344c0-4.406 3.594-8 8-8h87.23c-1.617 9.812-6.115 18.88-13.29 26.05L330.1 417.9z"], + "object-group": [576, 512, [], "f247", "M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM48 115.8C38.18 106.1 32 94.22 32 80C32 53.49 53.49 32 80 32C94.22 32 106.1 38.18 115.8 48H460.2C469 38.18 481.8 32 496 32C522.5 32 544 53.49 544 80C544 94.22 537.8 106.1 528 115.8V396.2C537.8 405 544 417.8 544 432C544 458.5 522.5 480 496 480C481.8 480 469 473.8 460.2 464H115.8C106.1 473.8 94.22 480 80 480C53.49 480 32 458.5 32 432C32 417.8 38.18 405 48 396.2V115.8zM96 125.3V386.7C109.6 391.6 120.4 402.4 125.3 416H450.7C455.6 402.4 466.4 391.6 480 386.7V125.3C466.4 120.4 455.6 109.6 450.7 96H125.3C120.4 109.6 109.6 120.4 96 125.3z"], + "object-ungroup": [640, 512, [], "f248", "M64 0C90.86 0 113.9 16.55 123.3 40H324.7C334.1 16.55 357.1 0 384 0C419.3 0 448 28.65 448 64C448 90.86 431.5 113.9 408 123.3V228.7C431.5 238.1 448 261.1 448 288C448 323.3 419.3 352 384 352C357.1 352 334.1 335.5 324.7 312H123.3C113.9 335.5 90.86 352 64 352C28.65 352 0 323.3 0 288C0 261.1 16.55 238.1 40 228.7V123.3C16.55 113.9 0 90.86 0 64C0 28.65 28.65 0 64 0V0zM64 80C72.84 80 80 72.84 80 64C80 56.1 74.28 49.54 66.75 48.24C65.86 48.08 64.94 48 64 48C55.16 48 48 55.16 48 64C48 64.07 48 64.14 48 64.21C48.01 65.07 48.09 65.92 48.24 66.75C49.54 74.28 56.1 80 64 80zM384 48C383.1 48 382.1 48.08 381.2 48.24C373.7 49.54 368 56.1 368 64C368 72.84 375.2 80 384 80C391.9 80 398.5 74.28 399.8 66.75C399.9 65.86 400 64.94 400 64C400 55.16 392.8 48 384 48V48zM324.7 88H123.3C116.9 104 104 116.9 88 123.3V228.7C104 235.1 116.9 247.1 123.3 264H324.7C331.1 247.1 343.1 235.1 360 228.7V123.3C343.1 116.9 331.1 104 324.7 88zM400 288C400 287.1 399.9 286.1 399.8 285.2C398.5 277.7 391.9 272 384 272C375.2 272 368 279.2 368 288C368 295.9 373.7 302.5 381.2 303.8C382.1 303.9 383.1 304 384 304C392.8 304 400 296.8 400 288zM64 272C56.1 272 49.54 277.7 48.24 285.2C48.08 286.1 48 287.1 48 288C48 296.8 55.16 304 64 304L64.22 303.1C65.08 303.1 65.93 303.9 66.75 303.8C74.28 302.5 80 295.9 80 288C80 279.2 72.84 272 64 272zM471.3 248C465.8 235.9 457.8 225.2 448 216.4V200H516.7C526.1 176.5 549.1 160 576 160C611.3 160 640 188.7 640 224C640 250.9 623.5 273.9 600 283.3V388.7C623.5 398.1 640 421.1 640 448C640 483.3 611.3 512 576 512C549.1 512 526.1 495.5 516.7 472H315.3C305.9 495.5 282.9 512 256 512C220.7 512 192 483.3 192 448C192 421.1 208.5 398.1 232 388.7V352H280V388.7C296 395.1 308.9 407.1 315.3 424H516.7C523.1 407.1 535.1 395.1 552 388.7V283.3C535.1 276.9 523.1 264 516.7 248H471.3zM592 224C592 215.2 584.8 208 576 208C575.1 208 574.1 208.1 573.2 208.2C565.7 209.5 560 216.1 560 224C560 232.8 567.2 240 576 240C583.9 240 590.5 234.3 591.8 226.8C591.9 225.9 592 224.9 592 224zM240 448C240 456.8 247.2 464 256 464C256.9 464 257.9 463.9 258.8 463.8C266.3 462.5 272 455.9 272 448C272 439.2 264.8 432 256 432C248.1 432 241.5 437.7 240.2 445.2C240.1 446.1 240 447.1 240 448zM573.2 463.8C574.1 463.9 575.1 464 576 464C584.8 464 592 456.8 592 448C592 447.1 591.9 446.2 591.8 445.3L591.8 445.2C590.5 437.7 583.9 432 576 432C567.2 432 560 439.2 560 448C560 455.9 565.7 462.5 573.2 463.8V463.8z"], + "paper-plane": [512, 512, [61913], "f1d8", "M501.6 4.186c-7.594-5.156-17.41-5.594-25.44-1.063L12.12 267.1C4.184 271.7-.5037 280.3 .0431 289.4c.5469 9.125 6.234 17.16 14.66 20.69l153.3 64.38v113.5c0 8.781 4.797 16.84 12.5 21.06C184.1 511 188 512 191.1 512c4.516 0 9.038-1.281 12.99-3.812l111.2-71.46l98.56 41.4c2.984 1.25 6.141 1.875 9.297 1.875c4.078 0 8.141-1.031 11.78-3.094c6.453-3.625 10.88-10.06 11.95-17.38l64-432C513.1 18.44 509.1 9.373 501.6 4.186zM369.3 119.2l-187.1 208.9L78.23 284.7L369.3 119.2zM215.1 444v-49.36l46.45 19.51L215.1 444zM404.8 421.9l-176.6-74.19l224.6-249.5L404.8 421.9z"], + "paste": [512, 512, ["file-clipboard"], "f0ea", "M502.6 198.6l-61.25-61.25C435.4 131.4 427.3 128 418.8 128H256C220.7 128 191.1 156.7 192 192l.0065 255.1C192 483.3 220.7 512 256 512h192c35.2 0 64-28.8 64-64l.0098-226.7C512 212.8 508.6 204.6 502.6 198.6zM464 448c0 8.836-7.164 16-16 16h-192c-8.838 0-16-7.164-16-16L240 192.1c0-8.836 7.164-16 16-16h128L384 224c0 17.67 14.33 32 32 32h48.01V448zM317.7 96C310.6 68.45 285.8 48 256 48H215.2C211.3 20.93 188.1 0 160 0C131.9 0 108.7 20.93 104.8 48H64c-35.35 0-64 28.65-64 64V384c0 35.34 28.65 64 64 64h96v-48H64c-8.836 0-16-7.164-16-16V112C48 103.2 55.18 96 64 96h16v16c0 17.67 14.33 32 32 32h61.35C190 115.4 220.6 96 256 96H317.7zM160 72c-8.822 0-16-7.176-16-16s7.178-16 16-16s16 7.176 16 16S168.8 72 160 72z"], + "pen-to-square": [512, 512, ["edit"], "f044", "M373.1 24.97C401.2-3.147 446.8-3.147 474.9 24.97L487 37.09C515.1 65.21 515.1 110.8 487 138.9L289.8 336.2C281.1 344.8 270.4 351.1 258.6 354.5L158.6 383.1C150.2 385.5 141.2 383.1 135 376.1C128.9 370.8 126.5 361.8 128.9 353.4L157.5 253.4C160.9 241.6 167.2 230.9 175.8 222.2L373.1 24.97zM440.1 58.91C431.6 49.54 416.4 49.54 407 58.91L377.9 88L424 134.1L453.1 104.1C462.5 95.6 462.5 80.4 453.1 71.03L440.1 58.91zM203.7 266.6L186.9 325.1L245.4 308.3C249.4 307.2 252.9 305.1 255.8 302.2L390.1 168L344 121.9L209.8 256.2C206.9 259.1 204.8 262.6 203.7 266.6zM200 64C213.3 64 224 74.75 224 88C224 101.3 213.3 112 200 112H88C65.91 112 48 129.9 48 152V424C48 446.1 65.91 464 88 464H360C382.1 464 400 446.1 400 424V312C400 298.7 410.7 288 424 288C437.3 288 448 298.7 448 312V424C448 472.6 408.6 512 360 512H88C39.4 512 0 472.6 0 424V152C0 103.4 39.4 64 88 64H200z"], + "rectangle-list": [576, 512, ["list-alt"], "f022", "M128 192C110.3 192 96 177.7 96 160C96 142.3 110.3 128 128 128C145.7 128 160 142.3 160 160C160 177.7 145.7 192 128 192zM200 160C200 146.7 210.7 136 224 136H448C461.3 136 472 146.7 472 160C472 173.3 461.3 184 448 184H224C210.7 184 200 173.3 200 160zM200 256C200 242.7 210.7 232 224 232H448C461.3 232 472 242.7 472 256C472 269.3 461.3 280 448 280H224C210.7 280 200 269.3 200 256zM200 352C200 338.7 210.7 328 224 328H448C461.3 328 472 338.7 472 352C472 365.3 461.3 376 448 376H224C210.7 376 200 365.3 200 352zM128 224C145.7 224 160 238.3 160 256C160 273.7 145.7 288 128 288C110.3 288 96 273.7 96 256C96 238.3 110.3 224 128 224zM128 384C110.3 384 96 369.7 96 352C96 334.3 110.3 320 128 320C145.7 320 160 334.3 160 352C160 369.7 145.7 384 128 384zM0 96C0 60.65 28.65 32 64 32H512C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V96C528 87.16 520.8 80 512 80H64C55.16 80 48 87.16 48 96z"], + "rectangle-xmark": [512, 512, [62164, "rectangle-times", "times-rectangle", "window-close"], "f410", "M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM0 96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V96C464 87.16 456.8 80 448 80H64C55.16 80 48 87.16 48 96z"], + "registered": [512, 512, [174], "f25d", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM352 208c0-44.13-35.88-80-80-80L184 128c-13.25 0-24 10.75-24 24v208c0 13.25 10.75 24 24 24s24-10.75 24-24v-72h59.79l38.46 82.19C310.3 378.9 319 384 328 384c3.438 0 6.875-.7187 10.19-2.25c12-5.625 17.16-19.91 11.56-31.94l-34.87-74.5C337.1 261.1 352 236.3 352 208zM272 240h-64v-64h64c17.66 0 32 14.34 32 32S289.7 240 272 240z"], + "share-from-square": [576, 512, [61509, "share-square"], "f14d", "M568.5 142.6l-144-135.1c-9.625-9.156-24.81-8.656-33.91 .9687c-9.125 9.625-8.688 24.81 .9687 33.91l100.1 94.56h-163.4C287.5 134.2 249.7 151 221 179.4C192 208.2 176 246.7 176 288v87.1c0 13.25 10.75 23.1 24 23.1S224 389.3 224 376V288c0-28.37 10.94-54.84 30.78-74.5C274.3 194.2 298.9 183 328 184h163.6l-100.1 94.56c-9.656 9.094-10.09 24.28-.9687 33.91c4.719 4.1 11.06 7.531 17.44 7.531c5.906 0 11.84-2.156 16.47-6.562l144-135.1C573.3 172.9 576 166.6 576 160S573.3 147.1 568.5 142.6zM360 384c-13.25 0-24 10.75-24 23.1v47.1c0 4.406-3.594 7.1-8 7.1h-272c-4.406 0-8-3.594-8-7.1V184c0-4.406 3.594-7.1 8-7.1H112c13.25 0 24-10.75 24-23.1s-10.75-23.1-24-23.1H56c-30.88 0-56 25.12-56 55.1v271.1C0 486.9 25.13 512 56 512h272c30.88 0 56-25.12 56-55.1v-47.1C384 394.8 373.3 384 360 384z"], + "snowflake": [512, 512, [10054, 10052], "f2dc", "M484.4 294.4c1.715 6.402 .6758 12.89-2.395 18.21s-8.172 9.463-14.57 11.18l-31.46 8.43l32.96 19.03C480.4 357.8 484.4 372.5 477.8 384s-21.38 15.41-32.86 8.783l-32.96-19.03l8.43 31.46c3.432 12.81-4.162 25.96-16.97 29.39s-25.96-4.162-29.39-16.97l-20.85-77.82L280 297.6v84.49l56.97 56.97c9.375 9.375 9.375 24.56 0 33.94C332.3 477.7 326.1 480 320 480s-12.28-2.344-16.97-7.031L280 449.9V488c0 13.25-10.75 24-24 24s-24-10.75-24-24v-38.06l-23.03 23.03c-9.375 9.375-24.56 9.375-33.94 0s-9.375-24.56 0-33.94L232 382.1V297.6l-73.17 42.25l-20.85 77.82c-3.432 12.81-16.58 20.4-29.39 16.97s-20.4-16.58-16.97-29.39l8.43-31.46l-32.96 19.03C55.61 399.4 40.85 395.5 34.22 384s-2.615-26.16 8.859-32.79l32.96-19.03l-31.46-8.43c-12.81-3.432-20.4-16.58-16.97-29.39s16.58-20.4 29.39-16.97l77.82 20.85L208 255.1L134.8 213.8L57.01 234.6C44.2 238 31.05 230.4 27.62 217.6s4.162-25.96 16.97-29.39l31.46-8.432L43.08 160.8C31.61 154.2 27.6 139.5 34.22 128s21.38-15.41 32.86-8.785l32.96 19.03L91.62 106.8C88.18 93.98 95.78 80.83 108.6 77.39s25.96 4.162 29.39 16.97l20.85 77.82L232 214.4V129.9L175 72.97c-9.375-9.375-9.375-24.56 0-33.94s24.56-9.375 33.94 0L232 62.06V24C232 10.75 242.8 0 256 0s24 10.75 24 24v38.06l23.03-23.03c9.375-9.375 24.56-9.375 33.94 0s9.375 24.56 0 33.94L280 129.9v84.49l73.17-42.25l20.85-77.82c3.432-12.81 16.58-20.4 29.39-16.97c6.402 1.715 11.5 5.861 14.57 11.18s4.109 11.81 2.395 18.21l-8.43 31.46l32.96-19.03C456.4 112.6 471.2 116.5 477.8 128s2.615 26.16-8.859 32.78l-32.96 19.03l31.46 8.432c12.81 3.432 20.4 16.58 16.97 29.39s-16.58 20.4-29.39 16.97l-77.82-20.85L304 255.1l73.17 42.25l77.82-20.85C467.8 273.1 480.1 281.6 484.4 294.4z"], + "square": [448, 512, [9723, 9724, 61590, 9632], "f0c8", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 80H64C55.16 80 48 87.16 48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80z"], + "square-caret-down": [448, 512, ["caret-square-down"], "f150", "M320 192H128C118.5 192 109.8 197.7 105.1 206.4C102.2 215.1 103.9 225.3 110.4 232.3l96 104C210.9 341.2 217.3 344 224 344s13.09-2.812 17.62-7.719l96-104c6.469-7 8.188-17.19 4.375-25.91C338.2 197.7 329.5 192 320 192zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z"], + "square-caret-left": [448, 512, ["caret-square-left"], "f191", "M384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416zM273.6 138c-8.719-3.812-18.91-2.094-25.91 4.375l-104 96C138.8 242.9 136 249.3 136 256s2.812 13.09 7.719 17.62l104 96c7 6.469 17.19 8.188 25.91 4.375C282.3 370.2 288 361.5 288 352V160C288 150.5 282.3 141.8 273.6 138z"], + "square-caret-right": [448, 512, ["caret-square-right"], "f152", "M200.3 142.4C193.3 135.9 183.1 134.2 174.4 138C165.7 141.8 160 150.5 160 159.1v192C160 361.5 165.7 370.2 174.4 374c8.719 3.812 18.91 2.094 25.91-4.375l104-96C309.2 269.1 312 262.7 312 256s-2.812-13.09-7.719-17.62L200.3 142.4zM384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416z"], + "square-caret-up": [448, 512, ["caret-square-up"], "f151", "M241.6 175.7C237.1 170.8 230.7 168 224 168S210.9 170.8 206.4 175.7l-96 104c-6.469 7-8.188 17.19-4.375 25.91C109.8 314.3 118.5 320 127.1 320h192c9.531 0 18.16-5.656 22-14.38c3.813-8.719 2.094-18.91-4.375-25.91L241.6 175.7zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z"], + "square-check": [448, 512, [9989, 61510, 9745, "check-square"], "f14a", "M211.8 339.8C200.9 350.7 183.1 350.7 172.2 339.8L108.2 275.8C97.27 264.9 97.27 247.1 108.2 236.2C119.1 225.3 136.9 225.3 147.8 236.2L192 280.4L300.2 172.2C311.1 161.3 328.9 161.3 339.8 172.2C350.7 183.1 350.7 200.9 339.8 211.8L211.8 339.8zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z"], + "square-full": [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11036, 11035], "f45c", "M512 0V512H0V0H512zM464 48H48V464H464V48z"], + "square-minus": [448, 512, [61767, "minus-square"], "f146", "M312 232C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H312zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z"], + "square-plus": [448, 512, [61846, "plus-square"], "f0fe", "M200 344V280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H200V168C200 154.7 210.7 144 224 144C237.3 144 248 154.7 248 168V232H312C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H248V344C248 357.3 237.3 368 224 368C210.7 368 200 357.3 200 344zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z"], + "star": [576, 512, [61446, 11088], "f005", "M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"], + "star-half": [576, 512, [61731], "f089", "M293.3 .6123C304.2 3.118 311.9 12.82 311.9 24V408.7C311.9 417.5 307.1 425.7 299.2 429.8L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.1 115.1 483.9L142.2 328.4L31.11 218.3C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C271.2 3.46 282.4-1.893 293.3 .6127L293.3 .6123zM263.9 128.4L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L263.9 394.3L263.9 128.4z"], + "star-half-stroke": [576, 512, ["star-half-alt"], "f5c0", "M378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8zM287.1 384.7C291.9 384.7 295.7 385.6 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.1 79.09L287.1 384.7z"], + "sun": [512, 512, [9728], "f185", "M505.2 324.8l-47.73-68.78l47.75-68.81c7.359-10.62 8.797-24.12 3.844-36.06c-4.969-11.94-15.52-20.44-28.22-22.72l-82.39-14.88l-14.89-82.41c-2.281-12.72-10.76-23.25-22.69-28.22c-11.97-4.936-25.42-3.498-36.12 3.844L256 54.49L187.2 6.709C176.5-.6016 163.1-2.039 151.1 2.896c-11.92 4.971-20.4 15.5-22.7 28.19l-14.89 82.44L31.15 128.4C18.42 130.7 7.854 139.2 2.9 151.2C-2.051 163.1-.5996 176.6 6.775 187.2l47.73 68.78l-47.75 68.81c-7.359 10.62-8.795 24.12-3.844 36.06c4.969 11.94 15.52 20.44 28.22 22.72l82.39 14.88l14.89 82.41c2.297 12.72 10.78 23.25 22.7 28.22c11.95 4.906 25.44 3.531 36.09-3.844L256 457.5l68.83 47.78C331.3 509.7 338.8 512 346.3 512c4.906 0 9.859-.9687 14.56-2.906c11.92-4.969 20.4-15.5 22.7-28.19l14.89-82.44l82.37-14.88c12.73-2.281 23.3-10.78 28.25-22.75C514.1 348.9 512.6 335.4 505.2 324.8zM456.8 339.2l-99.61 18l-18 99.63L256 399.1L172.8 456.8l-18-99.63l-99.61-18L112.9 255.1L55.23 172.8l99.61-18l18-99.63L256 112.9l83.15-57.75l18.02 99.66l99.61 18L399.1 255.1L456.8 339.2zM256 143.1c-61.85 0-111.1 50.14-111.1 111.1c0 61.85 50.15 111.1 111.1 111.1s111.1-50.14 111.1-111.1C367.1 194.1 317.8 143.1 256 143.1zM256 319.1c-35.28 0-63.99-28.71-63.99-63.99S220.7 192 256 192s63.99 28.71 63.99 63.1S291.3 319.1 256 319.1z"], + "thumbs-down": [512, 512, [61576, 128078], "f165", "M128 288V64.03c0-17.67-14.33-31.1-32-31.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64C113.7 320 128 305.7 128 288zM481.5 229.1c1.234-5.092 1.875-10.32 1.875-15.64c0-22.7-11.44-43.13-29.28-55.28c.4219-3.015 .6406-6.076 .6406-9.122c0-22.32-11.06-42.6-28.83-54.83c-2.438-34.71-31.47-62.2-66.8-62.2h-52.53c-35.94 0-71.55 11.87-100.3 33.41L169.6 92.93c-6.285 4.71-9.596 11.85-9.596 19.13c0 12.76 10.29 24.04 24.03 24.04c5.013 0 10.07-1.565 14.38-4.811l36.66-27.51c20.48-15.34 45.88-23.81 71.5-23.81h52.53c10.45 0 18.97 8.497 18.97 18.95c0 3.5-1.11 4.94-1.11 9.456c0 26.97 29.77 17.91 29.77 40.64c0 9.254-6.392 10.96-6.392 22.25c0 13.97 10.85 21.95 19.58 23.59c8.953 1.671 15.45 9.481 15.45 18.56c0 13.04-11.39 13.37-11.39 28.91c0 12.54 9.702 23.08 22.36 23.94C456.2 266.1 464 275.2 464 284.1c0 10.43-8.516 18.93-18.97 18.93H307.4c-12.44 0-24 10.02-24 23.1c0 4.038 1.02 8.078 3.066 11.72C304.4 371.7 312 403.8 312 411.2c0 8.044-5.984 20.79-22.06 20.79c-12.53 0-14.27-.9059-24.94-28.07c-24.75-62.91-61.74-99.9-80.98-99.9c-13.8 0-24.02 11.27-24.02 23.99c0 7.041 3.083 14.02 9.016 18.76C238.1 402 211.4 480 289.9 480C333.8 480 360 445 360 411.2c0-12.7-5.328-35.21-14.83-59.33h99.86C481.1 351.9 512 321.9 512 284.1C512 261.8 499.9 241 481.5 229.1z"], + "thumbs-up": [512, 512, [61575, 128077], "f164", "M96 191.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64c17.67 0 32-14.33 32-31.1V223.1C128 206.3 113.7 191.1 96 191.1zM512 227c0-36.89-30.05-66.92-66.97-66.92h-99.86C354.7 135.1 360 113.5 360 100.8c0-33.8-26.2-68.78-70.06-68.78c-46.61 0-59.36 32.44-69.61 58.5c-31.66 80.5-60.33 66.39-60.33 93.47c0 12.84 10.36 23.99 24.02 23.99c5.256 0 10.55-1.721 14.97-5.26c76.76-61.37 57.97-122.7 90.95-122.7c16.08 0 22.06 12.75 22.06 20.79c0 7.404-7.594 39.55-25.55 71.59c-2.046 3.646-3.066 7.686-3.066 11.72c0 13.92 11.43 23.1 24 23.1h137.6C455.5 208.1 464 216.6 464 227c0 9.809-7.766 18.03-17.67 18.71c-12.66 .8593-22.36 11.4-22.36 23.94c0 15.47 11.39 15.95 11.39 28.91c0 25.37-35.03 12.34-35.03 42.15c0 11.22 6.392 13.03 6.392 22.25c0 22.66-29.77 13.76-29.77 40.64c0 4.515 1.11 5.961 1.11 9.456c0 10.45-8.516 18.95-18.97 18.95h-52.53c-25.62 0-51.02-8.466-71.5-23.81l-36.66-27.51c-4.315-3.245-9.37-4.811-14.38-4.811c-13.85 0-24.03 11.38-24.03 24.04c0 7.287 3.312 14.42 9.596 19.13l36.67 27.52C235 468.1 270.6 480 306.6 480h52.53c35.33 0 64.36-27.49 66.8-62.2c17.77-12.23 28.83-32.51 28.83-54.83c0-3.046-.2187-6.107-.6406-9.122c17.84-12.15 29.28-32.58 29.28-55.28c0-5.311-.6406-10.54-1.875-15.64C499.9 270.1 512 250.2 512 227z"], + "trash-can": [448, 512, [61460, "trash-alt"], "f2ed", "M160 400C160 408.8 152.8 416 144 416C135.2 416 128 408.8 128 400V192C128 183.2 135.2 176 144 176C152.8 176 160 183.2 160 192V400zM240 400C240 408.8 232.8 416 224 416C215.2 416 208 408.8 208 400V192C208 183.2 215.2 176 224 176C232.8 176 240 183.2 240 192V400zM320 400C320 408.8 312.8 416 304 416C295.2 416 288 408.8 288 400V192C288 183.2 295.2 176 304 176C312.8 176 320 183.2 320 192V400zM317.5 24.94L354.2 80H424C437.3 80 448 90.75 448 104C448 117.3 437.3 128 424 128H416V432C416 476.2 380.2 512 336 512H112C67.82 512 32 476.2 32 432V128H24C10.75 128 0 117.3 0 104C0 90.75 10.75 80 24 80H93.82L130.5 24.94C140.9 9.357 158.4 0 177.1 0H270.9C289.6 0 307.1 9.358 317.5 24.94H317.5zM151.5 80H296.5L277.5 51.56C276 49.34 273.5 48 270.9 48H177.1C174.5 48 171.1 49.34 170.5 51.56L151.5 80zM80 432C80 449.7 94.33 464 112 464H336C353.7 464 368 449.7 368 432V128H80V432z"], + "user": [448, 512, [62144, 128100], "f007", "M272 304h-96C78.8 304 0 382.8 0 480c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32C448 382.8 369.2 304 272 304zM48.99 464C56.89 400.9 110.8 352 176 352h96c65.16 0 119.1 48.95 127 112H48.99zM224 256c70.69 0 128-57.31 128-128c0-70.69-57.31-128-128-128S96 57.31 96 128C96 198.7 153.3 256 224 256zM224 48c44.11 0 80 35.89 80 80c0 44.11-35.89 80-80 80S144 172.1 144 128C144 83.89 179.9 48 224 48z"], + "window-maximize": [512, 512, [128470], "f2d0", "M7.724 65.49C13.36 55.11 21.79 46.47 32 40.56C39.63 36.15 48.25 33.26 57.46 32.33C59.61 32.11 61.79 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 93.79 .112 91.61 .3306 89.46C1.204 80.85 3.784 72.75 7.724 65.49V65.49zM48 416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V224H48V416z"], + "window-minimize": [512, 512, [128469], "f2d1", "M0 456C0 442.7 10.75 432 24 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H24C10.75 480 0 469.3 0 456z"], + "window-restore": [512, 512, [], "f2d2", "M432 48H208C190.3 48 176 62.33 176 80V96H128V80C128 35.82 163.8 0 208 0H432C476.2 0 512 35.82 512 80V304C512 348.2 476.2 384 432 384H416V336H432C449.7 336 464 321.7 464 304V80C464 62.33 449.7 48 432 48zM320 128C355.3 128 384 156.7 384 192V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V192C0 156.7 28.65 128 64 128H320zM64 464H320C328.8 464 336 456.8 336 448V256H48V448C48 456.8 55.16 464 64 464z"] + }; + + bunker(function () { + defineIcons('far', icons); + defineIcons('fa-regular', icons); + }); + +}()); +(function () { + 'use strict'; + + var _WINDOW = {}; + var _DOCUMENT = {}; + + try { + if (typeof window !== 'undefined') _WINDOW = window; + if (typeof document !== 'undefined') _DOCUMENT = document; + } catch (e) {} + + var _ref = _WINDOW.navigator || {}, + _ref$userAgent = _ref.userAgent, + userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; + var WINDOW = _WINDOW; + var DOCUMENT = _DOCUMENT; + var IS_BROWSER = !!WINDOW.document; + var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; + var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; + var PRODUCTION = function () { + try { + return "production" === 'production'; + } catch (e) { + return false; + } + }(); + var STYLE_TO_PREFIX = { + 'solid': 'fas', + 'regular': 'far', + 'light': 'fal', + 'thin': 'fat', + 'duotone': 'fad', + 'brands': 'fab', + 'kit': 'fak' + }; + var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); + var DUOTONE_CLASSES = { + GROUP: 'duotone-group', + SWAP_OPACITY: 'swap-opacity', + PRIMARY: 'primary', + SECONDARY: 'secondary' + }; + var RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) { + return "".concat(n, "x"); + })).concat(oneToTwenty.map(function (n) { + return "w-".concat(n); + })); + + function bunker(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + fn.apply(void 0, args); + } catch (e) { + if (!PRODUCTION) { + throw e; + } + } + } + + var w = WINDOW || {}; + if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; + if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; + if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; + if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; + var namespace = w[NAMESPACE_IDENTIFIER]; + + function normalizeIcons(icons) { + return Object.keys(icons).reduce(function (acc, iconName) { + var icon = icons[iconName]; + var expanded = !!icon.icon; + + if (expanded) { + acc[icon.iconName] = icon.icon; + } else { + acc[iconName] = icon; + } + + return acc; + }, {}); + } + + function defineIcons(prefix, icons) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var _params$skipHooks = params.skipHooks, + skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; + var normalized = normalizeIcons(icons); + + if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { + namespace.hooks.addPack(prefix, normalizeIcons(icons)); + } else { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); + } + /** + * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction + * of new styles we needed to differentiate between them. Prefix `fa` is now an alias + * for `fas` so we'll ease the upgrade process for our users by automatically defining + * this as well. + */ + + + if (prefix === 'fas') { + defineIcons('fa', icons); + } + } + + var icons = { + "0": [320, 512, [], "30", "M160 32.01c-88.37 0-160 71.63-160 160v127.1c0 88.37 71.63 160 160 160s160-71.63 160-160V192C320 103.6 248.4 32.01 160 32.01zM256 320c0 52.93-43.06 96-96 96c-52.93 0-96-43.07-96-96V192c0-52.94 43.07-96 96-96c52.94 0 96 43.06 96 96V320z"], + "1": [256, 512, [], "31", "M256 448c0 17.67-14.33 32-32 32H32c-17.67 0-32-14.33-32-32s14.33-32 32-32h64V123.8L49.75 154.6C35.02 164.5 15.19 160.4 5.375 145.8C-4.422 131.1-.4531 111.2 14.25 101.4l96-64c9.828-6.547 22.45-7.187 32.84-1.594C153.5 41.37 160 52.22 160 64.01v352h64C241.7 416 256 430.3 256 448z"], + "2": [320, 512, [], "32", "M320 448c0 17.67-14.33 32-32 32H32c-13.08 0-24.83-7.953-29.7-20.09c-4.859-12.12-1.859-26 7.594-35.03l193.6-185.1c31.36-30.17 33.95-80 5.812-113.4c-14.91-17.69-35.86-28.12-58.97-29.38C127.4 95.83 105.3 103.9 88.53 119.9L53.52 151.7c-13.08 11.91-33.33 10.89-45.2-2.172C-3.563 136.5-2.594 116.2 10.48 104.3l34.45-31.3c28.67-27.34 68.39-42.11 108.9-39.88c40.33 2.188 78.39 21.16 104.4 52.03c49.8 59.05 45.2 147.3-10.45 200.8l-136 130H288C305.7 416 320 430.3 320 448z"], + "3": [320, 512, [], "33", "M320 344c0 74.98-61.02 136-136 136H103.6c-46.34 0-87.31-29.53-101.1-73.48c-5.594-16.77 3.484-34.88 20.25-40.47c16.75-5.609 34.89 3.484 40.47 20.25c5.922 17.77 22.48 29.7 41.23 29.7H184c39.7 0 72-32.3 72-72s-32.3-72-72-72H80c-13.2 0-25.05-8.094-29.83-20.41C45.39 239.3 48.66 225.3 58.38 216.4l131.4-120.4H32c-17.67 0-32-14.33-32-32s14.33-32 32-32h240c13.2 0 25.05 8.094 29.83 20.41c4.781 12.3 1.516 26.27-8.203 35.19l-131.4 120.4H184C258.1 208 320 269 320 344z"], + "4": [384, 512, [], "34", "M384 334.2c0 17.67-14.33 32-32 32h-32v81.78c0 17.67-14.33 32-32 32s-32-14.33-32-32v-81.78H32c-10.97 0-21.17-5.625-27.05-14.89c-5.859-9.266-6.562-20.89-1.875-30.81l128-270.2C138.6 34.33 157.8 27.56 173.7 35.09c15.97 7.562 22.78 26.66 15.22 42.63L82.56 302.2H256V160c0-17.67 14.33-32 32-32s32 14.33 32 32v142.2h32C369.7 302.2 384 316.6 384 334.2z"], + "5": [320, 512, [], "35", "M320 344.6c0 74.66-60.73 135.4-135.4 135.4H104.7c-46.81 0-88.22-29.83-103-74.23c-5.594-16.77 3.469-34.89 20.23-40.48c16.83-5.625 34.91 3.469 40.48 20.23c6.078 18.23 23.08 30.48 42.3 30.48h79.95c39.36 0 71.39-32.03 71.39-71.39s-32.03-71.38-71.39-71.38H32c-9.484 0-18.47-4.203-24.56-11.48C1.359 254.5-1.172 244.9 .5156 235.6l32-177.2C35.27 43.09 48.52 32.01 64 32.01l192 .0049c17.67 0 32 14.33 32 32s-14.33 32-32 32H90.73L70.3 209.2h114.3C259.3 209.2 320 269.1 320 344.6z"], + "6": [320, 512, [], "36", "M167.7 160.8l64.65-76.06c11.47-13.45 9.812-33.66-3.656-45.09C222.7 34.51 215.3 32.01 208 32.01c-9.062 0-18.06 3.833-24.38 11.29C38.07 214.5 0 245.5 0 320c0 88.22 71.78 160 160 160s160-71.78 160-160C320 234.4 252.3 164.9 167.7 160.8zM160 416c-52.94 0-96-43.06-96-96s43.06-95.1 96-95.1s96 43.06 96 95.1S212.9 416 160 416z"], + "7": [320, 512, [], "37", "M315.6 80.14l-224 384c-5.953 10.19-16.66 15.88-27.67 15.88c-5.469 0-11.02-1.406-16.09-4.359c-15.27-8.906-20.42-28.5-11.52-43.77l195.9-335.9H32c-17.67 0-32-14.33-32-32s14.33-32 32-32h256c11.45 0 22.05 6.125 27.75 16.06S321.4 70.23 315.6 80.14z"], + "8": [320, 512, [], "38", "M267.5 249.2C290 226.1 304 194.7 304 160c0-70.58-57.42-128-128-128h-32c-70.58 0-128 57.42-128 128c0 34.7 13.99 66.12 36.48 89.19C20.83 272.5 0 309.8 0 352c0 70.58 57.42 128 128 128h64c70.58 0 128-57.42 128-128C320 309.8 299.2 272.5 267.5 249.2zM144 96.01h32c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32c-35.3 0-64-28.7-64-64S108.7 96.01 144 96.01zM192 416H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h64c35.3 0 64 28.7 64 64S227.3 416 192 416z"], + "9": [320, 512, [], "39", "M160 32.01c-88.22 0-160 71.78-160 160c0 85.57 67.71 155.1 152.3 159.2l-64.65 76.06c-11.47 13.45-9.812 33.66 3.656 45.09c6 5.125 13.38 7.62 20.72 7.62c9.062 0 18.06-3.823 24.38-11.28C281.9 297.5 320 266.6 320 192C320 103.8 248.2 32.01 160 32.01zM160 288c-52.94 0-96-43.06-96-95.1s43.06-96 96-96s96 43.06 96 96S212.9 288 160 288z"], + "a": [384, 512, [97], "41", "M381.5 435.7l-160-384C216.6 39.78 204.9 32.01 192 32.01S167.4 39.78 162.5 51.7l-160 384c-6.797 16.31 .9062 35.05 17.22 41.84c16.38 6.828 35.08-.9219 41.84-17.22l31.8-76.31h197.3l31.8 76.31c5.109 12.28 17.02 19.7 29.55 19.7c4.094 0 8.266-.7969 12.3-2.484C380.6 470.7 388.3 452 381.5 435.7zM119.1 320L192 147.2l72 172.8H119.1z"], + "address-book": [512, 512, [62138, "contact-book"], "f2b9", "M384 0H96C60.65 0 32 28.65 32 64v384c0 35.35 28.65 64 64 64h288c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM240 128c35.35 0 64 28.65 64 64s-28.65 64-64 64c-35.34 0-64-28.65-64-64S204.7 128 240 128zM336 384h-192C135.2 384 128 376.8 128 368C128 323.8 163.8 288 208 288h64c44.18 0 80 35.82 80 80C352 376.8 344.8 384 336 384zM496 64H480v96h16C504.8 160 512 152.8 512 144v-64C512 71.16 504.8 64 496 64zM496 192H480v96h16C504.8 288 512 280.8 512 272v-64C512 199.2 504.8 192 496 192zM496 320H480v96h16c8.836 0 16-7.164 16-16v-64C512 327.2 504.8 320 496 320z"], + "address-card": [576, 512, [62140, "contact-card", "vcard"], "f2bb", "M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM176 128c35.35 0 64 28.65 64 64s-28.65 64-64 64s-64-28.65-64-64S140.7 128 176 128zM272 384h-192C71.16 384 64 376.8 64 368C64 323.8 99.82 288 144 288h64c44.18 0 80 35.82 80 80C288 376.8 280.8 384 272 384zM496 320h-128C359.2 320 352 312.8 352 304S359.2 288 368 288h128C504.8 288 512 295.2 512 304S504.8 320 496 320zM496 256h-128C359.2 256 352 248.8 352 240S359.2 224 368 224h128C504.8 224 512 231.2 512 240S504.8 256 496 256zM496 192h-128C359.2 192 352 184.8 352 176S359.2 160 368 160h128C504.8 160 512 167.2 512 176S504.8 192 496 192z"], + "align-center": [448, 512, [], "f037", "M320 96H128C110.3 96 96 81.67 96 64C96 46.33 110.3 32 128 32H320C337.7 32 352 46.33 352 64C352 81.67 337.7 96 320 96zM416 224H32C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H416C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224zM0 448C0 430.3 14.33 416 32 416H416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480H32C14.33 480 0 465.7 0 448zM320 352H128C110.3 352 96 337.7 96 320C96 302.3 110.3 288 128 288H320C337.7 288 352 302.3 352 320C352 337.7 337.7 352 320 352z"], + "align-justify": [448, 512, [], "f039", "M416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96zM416 352H32C14.33 352 0 337.7 0 320C0 302.3 14.33 288 32 288H416C433.7 288 448 302.3 448 320C448 337.7 433.7 352 416 352zM0 192C0 174.3 14.33 160 32 160H416C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224H32C14.33 224 0 209.7 0 192zM416 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480z"], + "align-left": [448, 512, [], "f036", "M256 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H256C273.7 32 288 46.33 288 64C288 81.67 273.7 96 256 96zM256 352H32C14.33 352 0 337.7 0 320C0 302.3 14.33 288 32 288H256C273.7 288 288 302.3 288 320C288 337.7 273.7 352 256 352zM0 192C0 174.3 14.33 160 32 160H416C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224H32C14.33 224 0 209.7 0 192zM416 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480z"], + "align-right": [448, 512, [], "f038", "M416 96H192C174.3 96 160 81.67 160 64C160 46.33 174.3 32 192 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96zM416 352H192C174.3 352 160 337.7 160 320C160 302.3 174.3 288 192 288H416C433.7 288 448 302.3 448 320C448 337.7 433.7 352 416 352zM0 192C0 174.3 14.33 160 32 160H416C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224H32C14.33 224 0 209.7 0 192zM416 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480z"], + "anchor": [576, 512, [9875], "f13d", "M352 176C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H320V448H368C421 448 464 405 464 352V345.9L456.1 352.1C447.6 362.3 432.4 362.3 423 352.1C413.7 343.6 413.7 328.4 423 319L479 263C488.4 253.7 503.6 253.7 512.1 263L568.1 319C578.3 328.4 578.3 343.6 568.1 352.1C559.6 362.3 544.4 362.3 535 352.1L528 345.9V352C528 440.4 456.4 512 368 512H208C119.6 512 48 440.4 48 352V345.9L40.97 352.1C31.6 362.3 16.4 362.3 7.029 352.1C-2.343 343.6-2.343 328.4 7.029 319L63.03 263C72.4 253.7 87.6 253.7 96.97 263L152.1 319C162.3 328.4 162.3 343.6 152.1 352.1C143.6 362.3 128.4 362.3 119 352.1L112 345.9V352C112 405 154.1 448 208 448H256V240H224C206.3 240 192 225.7 192 208C192 190.3 206.3 176 224 176H234.9C209 158.8 192 129.4 192 96C192 42.98 234.1 0 288 0C341 0 384 42.98 384 96C384 129.4 366.1 158.8 341.1 176H352zM288 128C305.7 128 320 113.7 320 96C320 78.33 305.7 64 288 64C270.3 64 256 78.33 256 96C256 113.7 270.3 128 288 128z"], + "anchor-circle-check": [640, 512, [], "e4aa", "M352 176C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H319.1V448H339.2C351.8 472.7 370 493.1 392.2 510.2C384.3 511.4 376.2 512 368 512H208C119.6 512 48 440.4 48 352V345.9L40.97 352.1C31.6 362.3 16.4 362.3 7.029 352.1C-2.343 343.6-2.343 328.4 7.029 319L63.03 263C72.4 253.7 87.6 253.7 96.97 263L152.1 319C162.3 328.4 162.3 343.6 152.1 352.1C143.6 362.3 128.4 362.3 119 352.1L112 345.9V352C112 405 154.1 448 208 448H256V240H224C206.3 240 192 225.7 192 208C192 190.3 206.3 176 224 176H234.9C209 158.8 192 129.4 192 96C192 42.98 234.1 0 288 0C341 0 384 42.98 384 96C384 129.4 366.1 158.8 341.1 176H352zM287.1 128C305.7 128 319.1 113.7 319.1 96C319.1 78.33 305.7 64 287.1 64C270.3 64 255.1 78.33 255.1 96C255.1 113.7 270.3 128 287.1 128zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "anchor-circle-exclamation": [640, 512, [], "e4ab", "M352 176C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H319.1V448H339.2C351.8 472.7 370 493.1 392.2 510.2C384.3 511.4 376.2 512 368 512H208C119.6 512 48 440.4 48 352V345.9L40.97 352.1C31.6 362.3 16.4 362.3 7.029 352.1C-2.343 343.6-2.343 328.4 7.029 319L63.03 263C72.4 253.7 87.6 253.7 96.97 263L152.1 319C162.3 328.4 162.3 343.6 152.1 352.1C143.6 362.3 128.4 362.3 119 352.1L112 345.9V352C112 405 154.1 448 208 448H256V240H224C206.3 240 192 225.7 192 208C192 190.3 206.3 176 224 176H234.9C209 158.8 192 129.4 192 96C192 42.98 234.1 0 288 0C341 0 384 42.98 384 96C384 129.4 366.1 158.8 341.1 176H352zM287.1 128C305.7 128 319.1 113.7 319.1 96C319.1 78.33 305.7 64 287.1 64C270.3 64 255.1 78.33 255.1 96C255.1 113.7 270.3 128 287.1 128zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "anchor-circle-xmark": [640, 512, [], "e4ac", "M352 176C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H319.1V448H339.2C351.8 472.7 370 493.1 392.2 510.2C384.3 511.4 376.2 512 368 512H208C119.6 512 48 440.4 48 352V345.9L40.97 352.1C31.6 362.3 16.4 362.3 7.029 352.1C-2.343 343.6-2.343 328.4 7.029 319L63.03 263C72.4 253.7 87.6 253.7 96.97 263L152.1 319C162.3 328.4 162.3 343.6 152.1 352.1C143.6 362.3 128.4 362.3 119 352.1L112 345.9V352C112 405 154.1 448 208 448H256V240H224C206.3 240 192 225.7 192 208C192 190.3 206.3 176 224 176H234.9C209 158.8 192 129.4 192 96C192 42.98 234.1 0 288 0C341 0 384 42.98 384 96C384 129.4 366.1 158.8 341.1 176H352zM287.1 128C305.7 128 319.1 113.7 319.1 96C319.1 78.33 305.7 64 287.1 64C270.3 64 255.1 78.33 255.1 96C255.1 113.7 270.3 128 287.1 128zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "anchor-lock": [640, 512, [], "e4ad", "M352 176C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H319.1V448H368C373.4 448 378.8 447.5 384 446.7V480C384 490.1 386.7 501.3 391.6 510.3C383.9 511.4 376 512 368 512H208C119.6 512 48 440.4 48 352V345.9L40.97 352.1C31.6 362.3 16.4 362.3 7.029 352.1C-2.343 343.6-2.343 328.4 7.029 319L63.03 263C72.4 253.7 87.6 253.7 96.97 263L152.1 319C162.3 328.4 162.3 343.6 152.1 352.1C143.6 362.3 128.4 362.3 119 352.1L112 345.9V352C112 405 154.1 448 208 448H256V240H224C206.3 240 192 225.7 192 208C192 190.3 206.3 176 224 176H234.9C209 158.8 192 129.4 192 96C192 42.98 234.1 0 288 0C341 0 384 42.98 384 96C384 129.4 366.1 158.8 341.1 176H352zM287.1 128C305.7 128 319.1 113.7 319.1 96C319.1 78.33 305.7 64 287.1 64C270.3 64 255.1 78.33 255.1 96C255.1 113.7 270.3 128 287.1 128zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "angle-down": [384, 512, [8964], "f107", "M192 384c-8.188 0-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L192 306.8l137.4-137.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-160 160C208.4 380.9 200.2 384 192 384z"], + "angle-left": [256, 512, [8249], "f104", "M192 448c-8.188 0-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l137.4 137.4c12.5 12.5 12.5 32.75 0 45.25C208.4 444.9 200.2 448 192 448z"], + "angle-right": [256, 512, [8250], "f105", "M64 448c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L178.8 256L41.38 118.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160c12.5 12.5 12.5 32.75 0 45.25l-160 160C80.38 444.9 72.19 448 64 448z"], + "angle-up": [384, 512, [8963], "f106", "M352 352c-8.188 0-16.38-3.125-22.62-9.375L192 205.3l-137.4 137.4c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160c12.5 12.5 12.5 32.75 0 45.25C368.4 348.9 360.2 352 352 352z"], + "angles-down": [384, 512, ["angle-double-down"], "f103", "M169.4 278.6C175.6 284.9 183.8 288 192 288s16.38-3.125 22.62-9.375l160-160c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0L192 210.8L54.63 73.38c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25L169.4 278.6zM329.4 265.4L192 402.8L54.63 265.4c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l160 160C175.6 476.9 183.8 480 192 480s16.38-3.125 22.62-9.375l160-160c12.5-12.5 12.5-32.75 0-45.25S341.9 252.9 329.4 265.4z"], + "angles-left": [448, 512, [171, "angle-double-left"], "f100", "M77.25 256l137.4-137.4c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25l160 160C175.6 444.9 183.8 448 192 448s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L77.25 256zM269.3 256l137.4-137.4c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25l160 160C367.6 444.9 375.8 448 384 448s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L269.3 256z"], + "angles-right": [448, 512, [187, "angle-double-right"], "f101", "M246.6 233.4l-160-160c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25L178.8 256l-137.4 137.4c-12.5 12.5-12.5 32.75 0 45.25C47.63 444.9 55.81 448 64 448s16.38-3.125 22.62-9.375l160-160C259.1 266.1 259.1 245.9 246.6 233.4zM438.6 233.4l-160-160c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25L370.8 256l-137.4 137.4c-12.5 12.5-12.5 32.75 0 45.25C239.6 444.9 247.8 448 256 448s16.38-3.125 22.62-9.375l160-160C451.1 266.1 451.1 245.9 438.6 233.4z"], + "angles-up": [384, 512, ["angle-double-up"], "f102", "M54.63 246.6L192 109.3l137.4 137.4C335.6 252.9 343.8 256 352 256s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-160-160c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25S42.13 259.1 54.63 246.6zM214.6 233.4c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0L192 301.3l137.4 137.4C335.6 444.9 343.8 448 352 448s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L214.6 233.4z"], + "ankh": [320, 512, [9765], "f644", "M296 256h-44.63C272.5 222 288 181.6 288 144C288 55.62 230.8 0 160 0S32 55.62 32 144C32 181.6 47.5 222 68.63 256H24C10.75 256 0 266.8 0 280v32c0 13.25 10.75 24 24 24h96v152C120 501.2 130.8 512 144 512h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32C320 266.8 309.2 256 296 256zM160 80c29.62 0 48 24.5 48 64c0 34.62-27.12 78.12-48 100.9C139.1 222.1 112 178.6 112 144C112 104.5 130.4 80 160 80z"], + "apple-whole": [448, 512, [127823, 127822, "apple-alt"], "f5d1", "M336 128c-32 0-80.02 16.03-112 32.03c-32.01-16-79.1-32.02-111.1-32.03C32 128 .4134 210.5 .0033 288c-.5313 99.97 63.99 224 159.1 224c32 0 48-16 64-16c16 0 32 16 64 16c96 0 160.4-122.8 159.1-224C447.7 211.6 416 128 336 128zM320 32V0h-32C243.8 0 208 35.82 208 80v32h32C284.2 112 320 76.18 320 32z"], + "archway": [512, 512, [], "f557", "M480 32C497.7 32 512 46.33 512 64C512 81.67 497.7 96 480 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H480zM32 128H480V416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H352V352C352 298.1 309 256 256 256C202.1 256 160 298.1 160 352V480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416V128z"], + "arrow-down": [384, 512, [8595], "f063", "M374.6 310.6l-160 160C208.4 476.9 200.2 480 192 480s-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 370.8V64c0-17.69 14.33-31.1 31.1-31.1S224 46.31 224 64v306.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0S387.1 298.1 374.6 310.6z"], + "arrow-down-1-9": [512, 512, ["sort-numeric-asc", "sort-numeric-down"], "f162", "M320 192c0 17.69 14.31 31.1 32 31.1L416 224c17.69 0 32-14.31 32-32s-14.31-32-32-32V63.98c0-11.19-5.844-21.53-15.38-27.34c-9.531-5.781-21.41-6.188-31.34-1.062l-32 16.59c-15.69 8.125-21.81 27.44-13.69 43.13C329.3 106.3 340.4 112.6 352 112.6V160C334.3 160 320 174.3 320 192zM392 255.6c-48.6 0-88 39.4-88 88c0 36.44 22.15 67.7 53.71 81.07l-7.682 8.004c-10.72 11.16-10.34 28.88 .8125 39.56C356.3 477.4 363.3 480 370.2 480c7.344 0 14.72-2.875 20.19-8.625c69.61-72.53 89.6-85.39 89.6-127.8C480 294.1 440.6 255.6 392 255.6zM392 367.6c-13.23 0-24-10.77-24-24s10.77-24 24-24s24 10.77 24 24S405.2 367.6 392 367.6zM216 320.3c-8.672 0-17.3 3.5-23.61 10.38L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-11.95-13.01-32.2-13.91-45.22-1.969c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C231.5 323.1 223.7 320.3 216 320.3z"], + "arrow-down-9-1": [512, 512, ["sort-numeric-desc", "sort-numeric-down-alt"], "f886", "M216 320.3c-8.672 0-17.3 3.5-23.61 10.38L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-11.95-13.01-32.2-13.91-45.22-1.969c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C231.5 323.1 223.7 320.3 216 320.3zM357.7 201.1l-7.682 8.004c-10.72 11.16-10.34 28.88 .8125 39.56c5.406 5.219 12.41 7.812 19.38 7.812c7.344 0 14.72-2.875 20.19-8.625c69.61-72.53 89.6-85.39 89.6-127.8c0-48.6-39.4-88-88-88s-88 39.4-88 88C303.1 156.4 326.1 187.7 357.7 201.1zM392 96c13.23 0 24 10.77 24 24S405.2 144 392 144S368 133.2 368 120S378.8 96 392 96zM416 416.4v-96.02c0-11.19-5.844-21.53-15.38-27.34c-9.531-5.781-21.41-6.188-31.34-1.062l-32 16.59c-15.69 8.125-21.81 27.44-13.69 43.13C329.3 362.8 340.4 369 352 369v47.41c-17.69 0-32 14.31-32 32s14.31 32 32 32h64c17.69 0 32-14.31 32-32S433.7 416.4 416 416.4z"], + "arrow-down-a-z": [512, 512, ["sort-alpha-asc", "sort-alpha-down"], "f15d", "M239.6 373.1c11.94-13.05 11.06-33.31-1.969-45.27c-13.55-12.42-33.76-10.52-45.22 1.973L160 366.1V64.03c0-17.7-14.33-32.03-32-32.03S96 46.33 96 64.03v302l-32.4-35.39C51.64 317.7 31.39 316.7 18.38 328.7c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0L239.6 373.1zM448 416h-50.75l73.38-73.38c9.156-9.156 11.89-22.91 6.938-34.88S460.9 288 447.1 288H319.1C302.3 288 288 302.3 288 320s14.33 32 32 32h50.75l-73.38 73.38c-9.156 9.156-11.89 22.91-6.938 34.88S307.1 480 319.1 480h127.1C465.7 480 480 465.7 480 448S465.7 416 448 416zM492.6 209.3l-79.99-160.1c-10.84-21.81-46.4-21.81-57.24 0L275.4 209.3c-7.906 15.91-1.5 35.24 14.31 43.19c15.87 7.922 35.04 1.477 42.93-14.4l7.154-14.39h88.43l7.154 14.39c6.174 12.43 23.97 23.87 42.93 14.4C494.1 244.6 500.5 225.2 492.6 209.3zM367.8 167.4L384 134.7l16.22 32.63H367.8z"], + "arrow-down-long": [320, 512, ["long-arrow-down"], "f175", "M9.375 329.4c12.51-12.51 32.76-12.49 45.25 0L128 402.8V32c0-17.69 14.31-32 32-32s32 14.31 32 32v370.8l73.38-73.38c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-128 128c-12.5 12.5-32.75 12.5-45.25 0l-128-128C-3.125 362.1-3.125 341.9 9.375 329.4z"], + "arrow-down-short-wide": [576, 512, ["sort-amount-desc", "sort-amount-down-alt"], "f884", "M320 224H416c17.67 0 32-14.33 32-32s-14.33-32-32-32h-95.1c-17.67 0-32 14.33-32 32S302.3 224 320 224zM320 352H480c17.67 0 32-14.33 32-32s-14.33-32-32-32h-159.1c-17.67 0-32 14.33-32 32S302.3 352 320 352zM320 96h32c17.67 0 31.1-14.33 31.1-32s-14.33-32-31.1-32h-32c-17.67 0-32 14.33-32 32S302.3 96 320 96zM544 416h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 416 544 416zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"], + "arrow-down-up-across-line": [576, 512, [], "e4af", "M41.37 406.6C28.88 394.1 28.88 373.9 41.37 361.4C53.87 348.9 74.13 348.9 86.63 361.4L128 402.7V287.1H32C14.33 287.1 0 273.7 0 255.1C0 238.3 14.33 223.1 32 223.1H384V109.3L342.6 150.6C330.1 163.1 309.9 163.1 297.4 150.6C284.9 138.1 284.9 117.9 297.4 105.4L393.4 9.372C405.9-3.124 426.1-3.124 438.6 9.372L534.6 105.4C547.1 117.9 547.1 138.1 534.6 150.6C522.1 163.1 501.9 163.1 489.4 150.6L448 109.3V223.1H544C561.7 223.1 576 238.3 576 255.1C576 273.7 561.7 287.1 544 287.1H192V402.7L233.4 361.4C245.9 348.9 266.1 348.9 278.6 361.4C291.1 373.9 291.1 394.1 278.6 406.6L182.6 502.6C170.1 515.1 149.9 515.1 137.4 502.6L41.37 406.6zM128 63.1C128 46.33 142.3 31.1 160 31.1C177.7 31.1 192 46.33 192 63.1V191.1H128V63.1zM448 319.1V448C448 465.7 433.7 480 416 480C398.3 480 384 465.7 384 448V319.1H448z"], + "arrow-down-up-lock": [640, 512, [], "e4b0", "M105.4 502.6L9.373 406.6C-3.124 394.1-3.124 373.9 9.373 361.4C21.87 348.9 42.13 348.9 54.63 361.4L96 402.7V287.1H32C14.33 287.1 0 273.7 0 255.1C0 238.3 14.33 223.1 32 223.1H288V109.3L246.6 150.6C234.1 163.1 213.9 163.1 201.4 150.6C188.9 138.1 188.9 117.9 201.4 105.4L297.4 9.372C303.4 3.371 311.5 0 320 0C328.5 0 336.6 3.372 342.6 9.372L438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6C426.1 163.1 405.9 163.1 393.4 150.6L352 109.3V223.1H426.8C419.9 238.5 416 254.8 416 271.1V287.1H160V402.7L201.4 361.4C213.9 348.9 234.1 348.9 246.6 361.4C259.1 373.9 259.1 394.1 246.6 406.6L150.6 502.6C138.1 515.1 117.9 515.1 105.4 502.6H105.4zM96 191.1V63.1C96 46.33 110.3 31.1 128 31.1C145.7 31.1 160 46.33 160 63.1V191.1H96zM352 319.1V448C352 465.7 337.7 480 320 480C302.3 480 288 465.7 288 448V319.1H352zM528 191.1C572.2 191.1 608 227.8 608 271.1V319.1C625.7 319.1 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 319.1 448 319.1V271.1C448 227.8 483.8 191.1 528 191.1zM528 239.1C510.3 239.1 496 254.3 496 271.1V319.1H560V271.1C560 254.3 545.7 239.1 528 239.1z"], + "arrow-down-wide-short": [576, 512, ["sort-amount-asc", "sort-amount-down"], "f160", "M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"], + "arrow-down-z-a": [512, 512, ["sort-alpha-desc", "sort-alpha-down-alt"], "f881", "M104.4 470.1c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27c-13.02-11.95-33.27-11.04-45.22 1.973L160 366.1V64.03c0-17.7-14.33-32.03-32-32.03S96 46.33 96 64.03v302l-32.4-35.39c-6.312-6.883-14.94-10.39-23.61-10.39c-7.719 0-15.47 2.785-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27L104.4 470.1zM320 96h50.75l-73.38 73.38c-9.156 9.156-11.89 22.91-6.938 34.88s16.63 19.74 29.56 19.74h127.1C465.7 223.1 480 209.7 480 192s-14.33-32-32-32h-50.75l73.38-73.38c9.156-9.156 11.89-22.91 6.938-34.88S460.9 32 447.1 32h-127.1C302.3 32 288 46.31 288 64S302.3 96 320 96zM492.6 433.3l-79.99-160.1c-10.84-21.81-46.4-21.81-57.24 0l-79.99 160.1c-7.906 15.91-1.5 35.24 14.31 43.19c15.87 7.922 35.04 1.477 42.93-14.4l7.154-14.39h88.43l7.154 14.39c6.174 12.43 23.97 23.87 42.93 14.4C494.1 468.6 500.5 449.2 492.6 433.3zM367.8 391.4L384 358.7l16.22 32.63H367.8z"], + "arrow-left": [448, 512, [8592], "f060", "M447.1 256C447.1 273.7 433.7 288 416 288H109.3l105.4 105.4c12.5 12.5 12.5 32.75 0 45.25C208.4 444.9 200.2 448 192 448s-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L109.3 224H416C433.7 224 447.1 238.3 447.1 256z"], + "arrow-left-long": [512, 512, ["long-arrow-left"], "f177", "M9.375 233.4l128-128c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L109.3 224H480c17.69 0 32 14.31 32 32s-14.31 32-32 32H109.3l73.38 73.38c12.5 12.5 12.5 32.75 0 45.25c-12.49 12.49-32.74 12.51-45.25 0l-128-128C-3.125 266.1-3.125 245.9 9.375 233.4z"], + "arrow-pointer": [320, 512, ["mouse-pointer"], "f245", "M23.19 32C28.86 32 34.34 34.08 38.59 37.86L312.6 281.4C317.3 285.6 320 291.6 320 297.9C320 310.1 310.1 320 297.9 320H179.8L236.6 433.7C244.5 449.5 238.1 468.7 222.3 476.6C206.5 484.5 187.3 478.1 179.4 462.3L121.2 346L38.58 440.5C34.4 445.3 28.36 448 22.01 448C9.855 448 0 438.1 0 425.1V55.18C0 42.38 10.38 32 23.18 32H23.19z"], + "arrow-right": [448, 512, [8594], "f061", "M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z"], + "arrow-right-arrow-left": [512, 512, [8644, "exchange"], "f0ec", "M32 176h370.8l-57.38 57.38c-12.5 12.5-12.5 32.75 0 45.25C351.6 284.9 359.8 288 368 288s16.38-3.125 22.62-9.375l112-112c12.5-12.5 12.5-32.75 0-45.25l-112-112c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25L402.8 112H32c-17.69 0-32 14.31-32 32S14.31 176 32 176zM480 336H109.3l57.38-57.38c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0l-112 112c-12.5 12.5-12.5 32.75 0 45.25l112 112C127.6 508.9 135.8 512 144 512s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L109.3 400H480c17.69 0 32-14.31 32-32S497.7 336 480 336z"], + "arrow-right-from-bracket": [512, 512, ["sign-out"], "f08b", "M160 416H96c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h64c17.67 0 32-14.33 32-32S177.7 32 160 32H96C42.98 32 0 74.98 0 128v256c0 53.02 42.98 96 96 96h64c17.67 0 32-14.33 32-32S177.7 416 160 416zM502.6 233.4l-128-128c-12.51-12.51-32.76-12.49-45.25 0c-12.5 12.5-12.5 32.75 0 45.25L402.8 224H192C174.3 224 160 238.3 160 256s14.31 32 32 32h210.8l-73.38 73.38c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0l128-128C515.1 266.1 515.1 245.9 502.6 233.4z"], + "arrow-right-long": [512, 512, ["long-arrow-right"], "f178", "M502.6 278.6l-128 128c-12.51 12.51-32.76 12.49-45.25 0c-12.5-12.5-12.5-32.75 0-45.25L402.8 288H32C14.31 288 0 273.7 0 255.1S14.31 224 32 224h370.8l-73.38-73.38c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l128 128C515.1 245.9 515.1 266.1 502.6 278.6z"], + "arrow-right-to-bracket": [512, 512, ["sign-in"], "f090", "M416 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c17.67 0 32 14.33 32 32v256c0 17.67-14.33 32-32 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c53.02 0 96-42.98 96-96V128C512 74.98 469 32 416 32zM342.6 233.4l-128-128c-12.51-12.51-32.76-12.49-45.25 0c-12.5 12.5-12.5 32.75 0 45.25L242.8 224H32C14.31 224 0 238.3 0 256s14.31 32 32 32h210.8l-73.38 73.38c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0l128-128C355.1 266.1 355.1 245.9 342.6 233.4z"], + "arrow-right-to-city": [640, 512, [], "e4b3", "M288 48C288 21.49 309.5 0 336 0H432C458.5 0 480 21.49 480 48V192H520V120C520 106.7 530.7 96 544 96C557.3 96 568 106.7 568 120V192H592C618.5 192 640 213.5 640 240V464C640 490.5 618.5 512 592 512H336C309.5 512 288 490.5 288 464V48zM352 112C352 120.8 359.2 128 368 128H400C408.8 128 416 120.8 416 112V80C416 71.16 408.8 64 400 64H368C359.2 64 352 71.16 352 80V112zM368 160C359.2 160 352 167.2 352 176V208C352 216.8 359.2 224 368 224H400C408.8 224 416 216.8 416 208V176C416 167.2 408.8 160 400 160H368zM352 304C352 312.8 359.2 320 368 320H400C408.8 320 416 312.8 416 304V272C416 263.2 408.8 256 400 256H368C359.2 256 352 263.2 352 272V304zM528 256C519.2 256 512 263.2 512 272V304C512 312.8 519.2 320 528 320H560C568.8 320 576 312.8 576 304V272C576 263.2 568.8 256 560 256H528zM512 400C512 408.8 519.2 416 528 416H560C568.8 416 576 408.8 576 400V368C576 359.2 568.8 352 560 352H528C519.2 352 512 359.2 512 368V400zM246.6 233.4C259.1 245.9 259.1 266.1 246.6 278.6L166.6 358.6C154.1 371.1 133.9 371.1 121.4 358.6C108.9 346.1 108.9 325.9 121.4 313.4L146.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H146.7L121.4 198.6C108.9 186.1 108.9 165.9 121.4 153.4C133.9 140.9 154.1 140.9 166.6 153.4L246.6 233.4z"], + "arrow-rotate-left": [512, 512, [8634, "arrow-left-rotate", "arrow-rotate-back", "arrow-rotate-backward", "undo"], "f0e2", "M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"], + "arrow-rotate-right": [512, 512, [8635, "arrow-right-rotate", "arrow-rotate-forward", "redo"], "f01e", "M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"], + "arrow-trend-down": [576, 512, [], "e097", "M466.7 352L320 205.3L214.6 310.6C202.1 323.1 181.9 323.1 169.4 310.6L9.372 150.6C-3.124 138.1-3.124 117.9 9.372 105.4C21.87 92.88 42.13 92.88 54.63 105.4L191.1 242.7L297.4 137.4C309.9 124.9 330.1 124.9 342.6 137.4L512 306.7V223.1C512 206.3 526.3 191.1 544 191.1C561.7 191.1 576 206.3 576 223.1V384C576 401.7 561.7 416 544 416H384C366.3 416 352 401.7 352 384C352 366.3 366.3 352 384 352L466.7 352z"], + "arrow-trend-up": [576, 512, [], "e098", "M384 160C366.3 160 352 145.7 352 128C352 110.3 366.3 96 384 96H544C561.7 96 576 110.3 576 128V288C576 305.7 561.7 320 544 320C526.3 320 512 305.7 512 288V205.3L342.6 374.6C330.1 387.1 309.9 387.1 297.4 374.6L191.1 269.3L54.63 406.6C42.13 419.1 21.87 419.1 9.372 406.6C-3.124 394.1-3.124 373.9 9.372 361.4L169.4 201.4C181.9 188.9 202.1 188.9 214.6 201.4L320 306.7L466.7 159.1L384 160z"], + "arrow-turn-down": [384, 512, ["level-down"], "f149", "M342.6 374.6l-128 128C208.4 508.9 200.2 512 191.1 512s-16.38-3.125-22.63-9.375l-127.1-128c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 402.8V80C160 71.19 152.8 64 144 64H32C14.33 64 0 49.69 0 32s14.33-32 32-32h112C188.1 0 224 35.88 224 80v322.8l73.37-73.38c12.5-12.5 32.75-12.5 45.25 0S355.1 362.1 342.6 374.6z"], + "arrow-turn-up": [384, 512, ["level-up"], "f148", "M342.6 182.6C336.4 188.9 328.2 192 319.1 192s-16.38-3.125-22.62-9.375L224 109.3V432c0 44.13-35.89 80-80 80H32c-17.67 0-32-14.31-32-32s14.33-32 32-32h112C152.8 448 160 440.8 160 432V109.3L86.62 182.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l127.1-128c12.5-12.5 32.75-12.5 45.25 0l128 128C355.1 149.9 355.1 170.1 342.6 182.6z"], + "arrow-up": [384, 512, [8593], "f062", "M374.6 246.6C368.4 252.9 360.2 256 352 256s-16.38-3.125-22.62-9.375L224 141.3V448c0 17.69-14.33 31.1-31.1 31.1S160 465.7 160 448V141.3L54.63 246.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160C387.1 213.9 387.1 234.1 374.6 246.6z"], + "arrow-up-1-9": [512, 512, ["sort-numeric-up"], "f163", "M320 192c0 17.69 14.31 31.1 32 31.1L416 224c17.69 0 32-14.31 32-32s-14.31-32-32-32V63.98c0-11.19-5.844-21.53-15.38-27.34c-9.531-5.781-21.41-6.188-31.34-1.062l-32 16.59c-15.69 8.125-21.81 27.44-13.69 43.13C329.3 106.3 340.4 112.6 352 112.6V160C334.3 160 320 174.3 320 192zM392 255.6c-48.6 0-88 39.4-88 88c0 36.44 22.15 67.7 53.71 81.07l-7.682 8.004c-10.72 11.16-10.34 28.88 .8125 39.56C356.3 477.4 363.3 480 370.2 480c7.344 0 14.72-2.875 20.19-8.625c69.61-72.53 89.6-85.39 89.6-127.8C480 294.1 440.6 255.6 392 255.6zM392 367.6c-13.23 0-24-10.77-24-24s10.77-24 24-24s24 10.77 24 24S405.2 367.6 392 367.6zM39.99 191.7c8.672 0 17.3-3.5 23.61-10.38L96 145.9v302c0 17.7 14.33 32.03 31.1 32.03s32-14.33 32-32.03V145.9L192.4 181.3C204.4 194.3 224.6 195.2 237.6 183.3c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.94c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.475 151.1 5.35 171.3 18.38 183.3C24.52 188.9 32.27 191.7 39.99 191.7z"], + "arrow-up-9-1": [512, 512, ["sort-numeric-up-alt"], "f887", "M237.6 183.3c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.94c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.475 151.1 5.35 171.3 18.38 183.3c13.02 11.95 33.27 11.04 45.22-1.969L96 145.9v302c0 17.7 14.33 32.03 31.1 32.03s32-14.33 32-32.03V145.9L192.4 181.3c6.312 6.883 14.94 10.38 23.61 10.38C223.7 191.7 231.5 188.9 237.6 183.3zM357.7 201.1l-7.682 8.004c-10.72 11.16-10.34 28.88 .8125 39.56c5.406 5.219 12.41 7.812 19.38 7.812c7.344 0 14.72-2.875 20.19-8.625c69.61-72.53 89.6-85.39 89.6-127.8c0-48.6-39.4-88-88-88s-88 39.4-88 88C303.1 156.4 326.1 187.7 357.7 201.1zM392 96c13.23 0 24 10.77 24 24S405.2 144 392 144S368 133.2 368 120S378.8 96 392 96zM416 416.4v-96.02c0-11.19-5.844-21.53-15.38-27.34c-9.531-5.781-21.41-6.188-31.34-1.062l-32 16.59c-15.69 8.125-21.81 27.44-13.69 43.13C329.3 362.8 340.4 369 352 369v47.41c-17.69 0-32 14.31-32 32s14.31 32 32 32h64c17.69 0 32-14.31 32-32S433.7 416.4 416 416.4z"], + "arrow-up-a-z": [512, 512, ["sort-alpha-up"], "f15e", "M151.6 41.95c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.473 151.1 5.348 171.4 18.38 183.3c13.02 11.95 33.27 11.04 45.22-1.973L96 145.9v302C96 465.7 110.3 480 128 480S160 465.7 160 447.1V145.9L192.4 181.3c11.46 12.49 31.67 14.39 45.22 1.973c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.95zM448 416h-50.75l73.38-73.38c9.156-9.156 11.89-22.91 6.938-34.88s-16.63-19.86-29.56-19.86H319.1C302.3 287.9 288 302.3 288 320s14.33 32 32 32h50.75l-73.38 73.38c-9.156 9.156-11.89 22.91-6.938 34.88S307.1 480 319.1 480h127.1C465.7 480 480 465.7 480 448S465.7 416 448 416zM492.6 209.3l-79.99-160.1c-10.84-21.81-46.4-21.81-57.24 0L275.4 209.3c-7.906 15.91-1.5 35.24 14.31 43.19c15.87 7.922 35.04 1.477 42.93-14.4l7.154-14.39h88.43l7.154 14.39c6.174 12.43 23.97 23.87 42.93 14.4C494.1 244.6 500.5 225.2 492.6 209.3zM367.8 167.4L384 134.7l16.22 32.63H367.8z"], + "arrow-up-from-bracket": [448, 512, [], "e09a", "M384 352v64c0 17.67-14.33 32-32 32H96c-17.67 0-32-14.33-32-32v-64c0-17.67-14.33-32-32-32s-32 14.33-32 32v64c0 53.02 42.98 96 96 96h256c53.02 0 96-42.98 96-96v-64c0-17.67-14.33-32-32-32S384 334.3 384 352zM201.4 9.375l-128 128c-12.51 12.51-12.49 32.76 0 45.25c12.5 12.5 32.75 12.5 45.25 0L192 109.3V320c0 17.69 14.31 32 32 32s32-14.31 32-32V109.3l73.38 73.38c12.5 12.5 32.75 12.5 45.25 0s12.5-32.75 0-45.25l-128-128C234.1-3.125 213.9-3.125 201.4 9.375z"], + "arrow-up-from-ground-water": [576, 512, [], "e4b5", "M256 319.1V109.3L230.6 134.6C218.1 147.1 197.9 147.1 185.4 134.6C172.9 122.1 172.9 101.9 185.4 89.37L265.4 9.372C277.9-3.124 298.1-3.124 310.6 9.372L390.6 89.37C403.1 101.9 403.1 122.1 390.6 134.6C378.1 147.1 357.9 147.1 345.4 134.6L320 109.3V319.1C320 337.7 305.7 352 288 352C270.3 352 256 337.7 256 319.1zM269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448C410.9 448 439.4 437.2 461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515.1 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.13 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.854 504.5 .8429 487.3C-3.168 470.1 7.533 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9H269.5zM192 416.5C172.1 416.4 150.8 408.5 132.9 396.1C109.1 379.4 77.01 380.8 54.78 399.5C44.18 408.3 30.59 415.1 17.49 418.1C11.19 419.6 5.326 421.9 0 425V239.1C0 213.5 21.49 191.1 48 191.1H192V416.5zM576 239.1V424.1C570.7 421.9 564.8 419.6 558.5 418.1C545.4 415.1 531.8 408.3 521.2 399.5C499 380.8 466.9 379.4 443.2 396.1C425.2 408.5 403 416.5 384 416.5L384 191.1H528C554.5 191.1 576 213.5 576 239.1L576 239.1z"], + "arrow-up-from-water-pump": [576, 512, [], "e4b6", "M239.1 0C266.5 0 287.1 21.49 287.1 48V256H416V109.3L390.6 134.6C378.1 147.1 357.9 147.1 345.4 134.6C332.9 122.1 332.9 101.9 345.4 89.37L425.4 9.373C437.9-3.124 458.1-3.124 470.6 9.373L550.6 89.37C563.1 101.9 563.1 122.1 550.6 134.6C538.1 147.1 517.9 147.1 505.4 134.6L480 109.3V256H528C554.5 256 576 277.5 576 304V400C576 408 574 415.6 570.6 422.2C566.8 420.5 562.8 419.1 558.5 418.1C545.4 415.1 531.8 408.3 521.2 399.5C499 380.8 466.9 379.4 443.2 396.1C425.2 408.5 403 416.5 384 416.5C364.4 416.5 343.2 408.8 324.8 396.1C302.8 380.6 273.3 380.6 251.2 396.1C234 407.9 213.2 416.5 192 416.5C172.1 416.5 150.8 408.5 132.9 396.1C109.1 379.4 77.01 380.8 54.78 399.5C44.18 408.3 30.59 415.1 17.49 418.1C13.27 419.1 9.239 420.5 5.439 422.2C1.965 415.6 0 408 0 400V304C0 277.5 21.49 256 48 256H64V48C64 21.49 85.49 0 112 0H239.1zM384 448C410.9 448 439.4 437.2 461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448H384z"], + "arrow-up-long": [320, 512, ["long-arrow-up"], "f176", "M310.6 182.6c-12.51 12.51-32.76 12.49-45.25 0L192 109.3V480c0 17.69-14.31 32-32 32s-32-14.31-32-32V109.3L54.63 182.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l128-128c12.5-12.5 32.75-12.5 45.25 0l128 128C323.1 149.9 323.1 170.1 310.6 182.6z"], + "arrow-up-right-dots": [576, 512, [], "e4b7", "M287.1 0C305.7 0 320 14.33 320 32V160C320 177.7 305.7 192 287.1 192C270.3 192 255.1 177.7 255.1 160V109.3L54.63 310.6C42.13 323.1 21.87 323.1 9.372 310.6C-3.124 298.1-3.124 277.9 9.372 265.4L210.7 64H159.1C142.3 64 127.1 49.67 127.1 32C127.1 14.33 142.3 0 159.1 0H287.1zM576 80C576 106.5 554.5 128 528 128C501.5 128 480 106.5 480 80C480 53.49 501.5 32 528 32C554.5 32 576 53.49 576 80zM448 208C448 234.5 426.5 256 400 256C373.5 256 352 234.5 352 208C352 181.5 373.5 160 400 160C426.5 160 448 181.5 448 208zM352 336C352 309.5 373.5 288 400 288C426.5 288 448 309.5 448 336C448 362.5 426.5 384 400 384C373.5 384 352 362.5 352 336zM448 464C448 490.5 426.5 512 400 512C373.5 512 352 490.5 352 464C352 437.5 373.5 416 400 416C426.5 416 448 437.5 448 464zM576 464C576 490.5 554.5 512 528 512C501.5 512 480 490.5 480 464C480 437.5 501.5 416 528 416C554.5 416 576 437.5 576 464zM223.1 336C223.1 309.5 245.5 288 271.1 288C298.5 288 320 309.5 320 336C320 362.5 298.5 384 271.1 384C245.5 384 223.1 362.5 223.1 336zM320 464C320 490.5 298.5 512 271.1 512C245.5 512 223.1 490.5 223.1 464C223.1 437.5 245.5 416 271.1 416C298.5 416 320 437.5 320 464zM95.1 464C95.1 437.5 117.5 416 143.1 416C170.5 416 191.1 437.5 191.1 464C191.1 490.5 170.5 512 143.1 512C117.5 512 95.1 490.5 95.1 464zM576 336C576 362.5 554.5 384 528 384C501.5 384 480 362.5 480 336C480 309.5 501.5 288 528 288C554.5 288 576 309.5 576 336zM480 208C480 181.5 501.5 160 528 160C554.5 160 576 181.5 576 208C576 234.5 554.5 256 528 256C501.5 256 480 234.5 480 208z"], + "arrow-up-right-from-square": [448, 512, ["external-link"], "f08e", "M256 64C256 46.33 270.3 32 288 32H415.1C415.1 32 415.1 32 415.1 32C420.3 32 424.5 32.86 428.2 34.43C431.1 35.98 435.5 38.27 438.6 41.3C438.6 41.35 438.6 41.4 438.7 41.44C444.9 47.66 447.1 55.78 448 63.9C448 63.94 448 63.97 448 64V192C448 209.7 433.7 224 416 224C398.3 224 384 209.7 384 192V141.3L214.6 310.6C202.1 323.1 181.9 323.1 169.4 310.6C156.9 298.1 156.9 277.9 169.4 265.4L338.7 96H288C270.3 96 256 81.67 256 64V64zM0 128C0 92.65 28.65 64 64 64H160C177.7 64 192 78.33 192 96C192 113.7 177.7 128 160 128H64V416H352V320C352 302.3 366.3 288 384 288C401.7 288 416 302.3 416 320V416C416 451.3 387.3 480 352 480H64C28.65 480 0 451.3 0 416V128z"], + "arrow-up-short-wide": [576, 512, ["sort-amount-up-alt"], "f885", "M544 416h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 416 544 416zM320 96h32c17.67 0 31.1-14.33 31.1-32s-14.33-32-31.1-32h-32c-17.67 0-32 14.33-32 32S302.3 96 320 96zM320 224H416c17.67 0 32-14.33 32-32s-14.33-32-32-32h-95.1c-17.67 0-32 14.33-32 32S302.3 224 320 224zM320 352H480c17.67 0 32-14.33 32-32s-14.33-32-32-32h-159.1c-17.67 0-32 14.33-32 32S302.3 352 320 352zM151.6 41.95c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.475 151.1 5.35 171.4 18.38 183.3c6.141 5.629 13.89 8.414 21.61 8.414c8.672 0 17.3-3.504 23.61-10.39L96 145.9v302C96 465.7 110.3 480 128 480s32-14.33 32-32.03V145.9L192.4 181.3C204.4 194.3 224.6 195.3 237.6 183.3c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.95z"], + "arrow-up-wide-short": [576, 512, ["sort-amount-up"], "f161", "M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM151.6 41.95c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.475 151.1 5.35 171.4 18.38 183.3c6.141 5.629 13.89 8.414 21.61 8.414c8.672 0 17.3-3.504 23.61-10.39L96 145.9v302C96 465.7 110.3 480 128 480s32-14.33 32-32.03V145.9L192.4 181.3C204.4 194.3 224.6 195.3 237.6 183.3c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.95z"], + "arrow-up-z-a": [512, 512, ["sort-alpha-up-alt"], "f882", "M151.6 41.95c-12.12-13.26-35.06-13.26-47.19 0l-87.1 96.09C4.473 151.1 5.348 171.4 18.38 183.3c13.02 11.95 33.27 11.04 45.22-1.973L96 145.9v302C96 465.7 110.3 480 128 480S160 465.7 160 447.1V145.9L192.4 181.3c6.312 6.883 14.94 10.39 23.61 10.39c7.719 0 15.47-2.785 21.61-8.414c13.03-11.95 13.9-32.22 1.969-45.27L151.6 41.95zM320 96h50.75l-73.38 73.38c-9.156 9.156-11.89 22.91-6.938 34.88s16.63 19.74 29.56 19.74h127.1C465.7 223.1 480 209.7 480 192s-14.33-32-32-32h-50.75l73.38-73.38c9.156-9.156 11.89-22.91 6.938-34.88S460.9 32 447.1 32h-127.1C302.3 32 288 46.31 288 64S302.3 96 320 96zM492.6 433.3l-79.99-160.1c-10.84-21.81-46.4-21.81-57.24 0l-79.99 160.1c-7.906 15.91-1.5 35.24 14.31 43.19c15.87 7.922 35.04 1.477 42.93-14.4l7.154-14.39h88.43l7.154 14.39c6.174 12.43 23.97 23.87 42.93 14.4C494.1 468.6 500.5 449.2 492.6 433.3zM367.8 391.4L384 358.7l16.22 32.63H367.8z"], + "arrows-down-to-line": [576, 512, [], "e4b8", "M544 416C561.7 416 576 430.3 576 448C576 465.7 561.7 480 544 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H544zM470.6 374.6C458.1 387.1 437.9 387.1 425.4 374.6L329.4 278.6C316.9 266.1 316.9 245.9 329.4 233.4C341.9 220.9 362.1 220.9 374.6 233.4L416 274.7V64C416 46.33 430.3 32 448 32C465.7 32 480 46.33 480 64V274.7L521.4 233.4C533.9 220.9 554.1 220.9 566.6 233.4C579.1 245.9 579.1 266.1 566.6 278.6L470.6 374.6zM246.6 278.6L150.6 374.6C138.1 387.1 117.9 387.1 105.4 374.6L9.373 278.6C-3.124 266.1-3.124 245.9 9.373 233.4C21.87 220.9 42.13 220.9 54.63 233.4L96 274.7V64C96 46.33 110.3 32 128 32C145.7 32 160 46.33 160 64V274.7L201.4 233.4C213.9 220.9 234.1 220.9 246.6 233.4C259.1 245.9 259.1 266.1 246.6 278.6H246.6z"], + "arrows-down-to-people": [640, 512, [], "e4b9", "M167.1 24V142.1L191 119C200.4 109.7 215.6 109.7 224.1 119C234.3 128.4 234.3 143.6 224.1 152.1L160.1 216.1C151.6 226.3 136.4 226.3 127 216.1L63.03 152.1C53.65 143.6 53.65 128.4 63.03 119C72.4 109.7 87.6 109.7 96.97 119L119.1 142.1V24C119.1 10.75 130.7 0 143.1 0C157.3 0 167.1 10.75 167.1 24V24zM359.1 200C359.1 222.1 342.1 240 319.1 240C297.9 240 279.1 222.1 279.1 200C279.1 177.9 297.9 160 319.1 160C342.1 160 359.1 177.9 359.1 200zM183.1 296C183.1 318.1 166.1 336 143.1 336C121.9 336 103.1 318.1 103.1 296C103.1 273.9 121.9 256 143.1 256C166.1 256 183.1 273.9 183.1 296zM455.1 296C455.1 273.9 473.9 256 495.1 256C518.1 256 535.1 273.9 535.1 296C535.1 318.1 518.1 336 495.1 336C473.9 336 455.1 318.1 455.1 296zM199.1 480C199.1 497.7 185.7 512 167.1 512H119.1C102.3 512 87.1 497.7 87.1 480V441.5L61.13 491.4C54.84 503 40.29 507.4 28.62 501.1C16.95 494.8 12.58 480.3 18.87 468.6L56.74 398.3C72.09 369.8 101.9 352 134.2 352H153.8C170.1 352 185.7 356.5 199.2 364.6L232.7 302.3C248.1 273.8 277.9 255.1 310.2 255.1H329.8C362.1 255.1 391.9 273.8 407.3 302.3L440.8 364.6C454.3 356.5 469.9 352 486.2 352H505.8C538.1 352 567.9 369.8 583.3 398.3L621.1 468.6C627.4 480.3 623 494.8 611.4 501.1C599.7 507.4 585.1 503 578.9 491.4L551.1 441.5V480C551.1 497.7 537.7 512 519.1 512H471.1C454.3 512 439.1 497.7 439.1 480V441.5L413.1 491.4C406.8 503 392.3 507.4 380.6 501.1C368.9 494.8 364.6 480.3 370.9 468.6L407.2 401.1C405.5 399.5 404 397.6 402.9 395.4L375.1 345.5V400C375.1 417.7 361.7 432 343.1 432H295.1C278.3 432 263.1 417.7 263.1 400V345.5L237.1 395.4C235.1 397.6 234.5 399.5 232.8 401.1L269.1 468.6C275.4 480.3 271 494.8 259.4 501.1C247.7 507.4 233.1 503 226.9 491.4L199.1 441.5L199.1 480zM415 152.1C405.7 143.6 405.7 128.4 415 119C424.4 109.7 439.6 109.7 448.1 119L471.1 142.1V24C471.1 10.75 482.7 0 495.1 0C509.3 0 519.1 10.75 519.1 24V142.1L543 119C552.4 109.7 567.6 109.7 576.1 119C586.3 128.4 586.3 143.6 576.1 152.1L512.1 216.1C503.6 226.3 488.4 226.3 479 216.1L415 152.1z"], + "arrows-left-right": [512, 512, ["arrows-h"], "f07e", "M502.6 278.6l-96 96C400.4 380.9 392.2 384 384 384s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L402.8 288h-293.5l41.38 41.38c12.5 12.5 12.5 32.75 0 45.25C144.4 380.9 136.2 384 128 384s-16.38-3.125-22.62-9.375l-96-96c-12.5-12.5-12.5-32.75 0-45.25l96-96c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L109.3 224h293.5l-41.38-41.38c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l96 96C515.1 245.9 515.1 266.1 502.6 278.6z"], + "arrows-left-right-to-line": [640, 512, [], "e4ba", "M32 64C49.67 64 64 78.33 64 96V416C64 433.7 49.67 448 32 448C14.33 448 0 433.7 0 416V96C0 78.33 14.33 64 32 64zM246.6 137.4C259.1 149.9 259.1 170.1 246.6 182.6L205.3 224H434.7L393.4 182.6C380.9 170.1 380.9 149.9 393.4 137.4C405.9 124.9 426.1 124.9 438.6 137.4L534.6 233.4C547.1 245.9 547.1 266.1 534.6 278.6L438.6 374.6C426.1 387.1 405.9 387.1 393.4 374.6C380.9 362.1 380.9 341.9 393.4 329.4L434.7 288H205.3L246.6 329.4C259.1 341.9 259.1 362.1 246.6 374.6C234.1 387.1 213.9 387.1 201.4 374.6L105.4 278.6C92.88 266.1 92.88 245.9 105.4 233.4L201.4 137.4C213.9 124.9 234.1 124.9 246.6 137.4V137.4zM640 416C640 433.7 625.7 448 608 448C590.3 448 576 433.7 576 416V96C576 78.33 590.3 64 608 64C625.7 64 640 78.33 640 96V416z"], + "arrows-rotate": [512, 512, [128472, "refresh", "sync"], "f021", "M464 16c-17.67 0-32 14.31-32 32v74.09C392.1 66.52 327.4 32 256 32C161.5 32 78.59 92.34 49.58 182.2c-5.438 16.81 3.797 34.88 20.61 40.28c16.89 5.5 34.88-3.812 40.3-20.59C130.9 138.5 189.4 96 256 96c50.5 0 96.26 24.55 124.4 64H336c-17.67 0-32 14.31-32 32s14.33 32 32 32h128c17.67 0 32-14.31 32-32V48C496 30.31 481.7 16 464 16zM441.8 289.6c-16.92-5.438-34.88 3.812-40.3 20.59C381.1 373.5 322.6 416 256 416c-50.5 0-96.25-24.55-124.4-64H176c17.67 0 32-14.31 32-32s-14.33-32-32-32h-128c-17.67 0-32 14.31-32 32v144c0 17.69 14.33 32 32 32s32-14.31 32-32v-74.09C119.9 445.5 184.6 480 255.1 480c94.45 0 177.4-60.34 206.4-150.2C467.9 313 458.6 294.1 441.8 289.6z"], + "arrows-spin": [512, 512, [], "e4bb", "M257.1 95.53C245.8 95.53 234.7 96.72 223.1 98.97V33.97C234.8 32.36 245.9 31.53 257.1 31.53C315.3 31.53 368.3 53.72 408.2 90.11L437.6 60.69C447.7 50.61 464.9 57.75 464.9 72V177.4C464.9 186.2 457.7 193.4 448.9 193.4H343.5C329.3 193.4 322.1 176.1 332.2 166.1L362.9 135.4C334.7 110.6 297.7 95.53 257.1 95.53L257.1 95.53zM97.14 255.5C97.14 266.7 98.27 277.5 100.4 288H35.47C33.93 277.4 33.14 266.6 33.14 255.5C33.14 198.2 54.71 145.8 90.18 106.2L60.69 76.69C50.61 66.61 57.74 49.38 71.1 49.38H177.4C186.2 49.38 193.4 56.54 193.4 65.38V170.7C193.4 185 176.1 192.1 166.1 182.1L135.5 151.5C111.6 179.5 97.14 215.8 97.14 255.5V255.5zM182.1 348.2L153.1 377.1C181.1 401.1 217.4 415.5 257.1 415.5C267.7 415.5 278 414.5 288 412.6V477.4C277.9 478.8 267.6 479.5 257.1 479.5C199.8 479.5 147.4 457.1 107.8 422.5L76.69 453.6C66.61 463.7 49.37 456.5 49.37 442.3V336.9C49.37 328.1 56.54 320.9 65.37 320.9H170.7C184.1 320.9 192.1 338.1 182.1 348.2H182.1zM348.2 332.2L377.2 361.2C402.1 333.1 417.1 296.1 417.1 255.5C417.1 244.7 416.1 234.2 414 224H478.9C480.4 234.3 481.1 244.8 481.1 255.5C481.1 313.7 458.9 366.7 422.6 406.6L453.6 437.6C463.7 447.7 456.5 464.9 442.3 464.9H336.9C328.1 464.9 320.9 457.7 320.9 448.9V343.5C320.9 329.3 338.1 322.1 348.2 332.2L348.2 332.2z"], + "arrows-split-up-and-left": [512, 512, [], "e4bc", "M246.6 150.6C234.1 163.1 213.9 163.1 201.4 150.6C188.9 138.1 188.9 117.9 201.4 105.4L297.4 9.372C309.9-3.124 330.1-3.124 342.6 9.372L438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6C426.1 163.1 405.9 163.1 393.4 150.6L352 109.3V384C352 419.3 380.7 448 416 448H480C497.7 448 512 462.3 512 480C512 497.7 497.7 512 480 512H416C345.3 512 288 454.7 288 384C288 348.7 259.3 320 224 320H109.3L150.6 361.4C163.1 373.9 163.1 394.1 150.6 406.6C138.1 419.1 117.9 419.1 105.4 406.6L9.38 310.6L9.305 310.6C3.575 304.8 .0259 296.9 .0003 288.1L2.428 275.8C3.99 271.1 6.305 268.4 9.372 265.4L105.4 169.4C117.9 156.9 138.1 156.9 150.6 169.4C163.1 181.9 163.1 202.1 150.6 214.6L109.3 255.1H224C247.3 255.1 269.2 262.2 288 273.1V109.3L246.6 150.6zM0 287.9C.0125 283.6 .8749 279.5 2.428 275.8C.8214 279.6 .0122 283.8 0 287.9zM0 288.1V287.1V287.9V288.1z"], + "arrows-to-circle": [640, 512, [], "e4bd", "M9.372 9.372C21.87-3.124 42.13-3.124 54.63 9.372L159.1 114.7V95.1C159.1 78.33 174.3 63.1 191.1 63.1C209.7 63.1 223.1 78.33 223.1 95.1V191.1C223.1 196.3 223.1 200.5 221.6 204.2C220 207.1 217.7 211.5 214.7 214.6L214.6 214.7C211.5 217.7 207.1 220 204.2 221.6C200.5 223.1 196.3 223.1 191.1 223.1H95.1C78.33 223.1 63.1 209.7 63.1 191.1C63.1 174.3 78.33 159.1 95.1 159.1H114.7L9.372 54.63C-3.124 42.13-3.124 21.87 9.372 9.372V9.372zM384 256C384 291.3 355.3 320 320 320C284.7 320 256 291.3 256 256C256 220.7 284.7 192 320 192C355.3 192 384 220.7 384 256zM96 352C78.33 352 64 337.7 64 320C64 302.3 78.33 288 96 288H192H192.1C200.9 288 208.8 291.6 214.6 297.3L214.7 297.4C217.7 300.5 220 304 221.6 307.8C223.1 311.5 224 315.7 224 319.1V416C224 433.7 209.7 448 192 448C174.3 448 160 433.7 160 416V397.3L54.63 502.6C42.13 515.1 21.87 515.1 9.373 502.6C-3.124 490.1-3.124 469.9 9.373 457.4L114.7 352L96 352zM448 64C465.7 64 480 78.33 480 96V114.7L585.4 9.373C597.9-3.124 618.1-3.124 630.6 9.373C643.1 21.87 643.1 42.13 630.6 54.63L525.3 160H544C561.7 160 576 174.3 576 192C576 209.7 561.7 224 544 224H448C439.2 224 431.2 220.4 425.4 214.7L425.3 214.6C422.3 211.5 419.1 207.1 418.4 204.2C416.9 200.5 416 196.4 416 192.1V191.1V96C416 78.33 430.3 64 448 64H448zM525.3 352L630.6 457.4C643.1 469.9 643.1 490.1 630.6 502.6C618.1 515.1 597.9 515.1 585.4 502.6L480 397.3V416C480 433.7 465.7 448 448 448C430.3 448 416 433.7 416 416V320C416 319.1 416 319.9 416 319.9C416 315.6 416.9 311.5 418.4 307.8C419.1 303.1 422.3 300.4 425.4 297.4C431.1 291.6 439.1 288 447.9 288C447.9 288 447.1 288 448 288H544C561.7 288 576 302.3 576 320C576 337.7 561.7 352 544 352L525.3 352z"], + "arrows-to-dot": [512, 512, [], "e4be", "M288 82.74L297.4 73.37C309.9 60.88 330.1 60.88 342.6 73.37C355.1 85.87 355.1 106.1 342.6 118.6L278.6 182.6C266.1 195.1 245.9 195.1 233.4 182.6L169.4 118.6C156.9 106.1 156.9 85.87 169.4 73.37C181.9 60.88 202.1 60.88 214.6 73.37L223.1 82.75V32C223.1 14.33 238.3 0 255.1 0C273.7 0 288 14.33 288 32L288 82.74zM438.6 342.6C426.1 355.1 405.9 355.1 393.4 342.6L329.4 278.6C316.9 266.1 316.9 245.9 329.4 233.4L393.4 169.4C405.9 156.9 426.1 156.9 438.6 169.4C451.1 181.9 451.1 202.1 438.6 214.6L429.3 223.1H480C497.7 223.1 512 238.3 512 255.1C512 273.7 497.7 287.1 480 287.1H429.3L438.6 297.4C451.1 309.9 451.1 330.1 438.6 342.6V342.6zM288 256C288 273.7 273.7 288 256 288C238.3 288 224 273.7 224 256C224 238.3 238.3 224 256 224C273.7 224 288 238.3 288 256zM182.6 233.4C195.1 245.9 195.1 266.1 182.6 278.6L118.6 342.6C106.1 355.1 85.87 355.1 73.37 342.6C60.88 330.1 60.88 309.9 73.37 297.4L82.75 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H82.74L73.37 214.6C60.88 202.1 60.88 181.9 73.37 169.4C85.87 156.9 106.1 156.9 118.6 169.4L182.6 233.4zM169.4 438.6C156.9 426.1 156.9 405.9 169.4 393.4L233.4 329.4C245.9 316.9 266.1 316.9 278.6 329.4L342.6 393.4C355.1 405.9 355.1 426.1 342.6 438.6C330.1 451.1 309.9 451.1 297.4 438.6L288 429.3V480C288 497.7 273.7 512 256 512C238.3 512 224 497.7 224 480V429.3L214.6 438.6C202.1 451.1 181.9 451.1 169.4 438.6H169.4z"], + "arrows-to-eye": [640, 512, [], "e4bf", "M15.03 15.03C24.4 5.657 39.6 5.657 48.97 15.03L112 78.06V40C112 26.75 122.7 15.1 136 15.1C149.3 15.1 160 26.75 160 40V136C160 149.3 149.3 160 136 160H40C26.75 160 15.1 149.3 15.1 136C15.1 122.7 26.75 112 40 112H78.06L15.03 48.97C5.657 39.6 5.657 24.4 15.03 15.03V15.03zM133.5 243.9C158.6 193.6 222.7 112 320 112C417.3 112 481.4 193.6 506.5 243.9C510.3 251.6 510.3 260.4 506.5 268.1C481.4 318.4 417.3 400 320 400C222.7 400 158.6 318.4 133.5 268.1C129.7 260.4 129.7 251.6 133.5 243.9V243.9zM320 320C355.3 320 384 291.3 384 256C384 220.7 355.3 192 320 192C284.7 192 256 220.7 256 256C256 291.3 284.7 320 320 320zM591 15.03C600.4 5.657 615.6 5.657 624.1 15.03C634.3 24.4 634.3 39.6 624.1 48.97L561.9 112H600C613.3 112 624 122.7 624 136C624 149.3 613.3 160 600 160H504C490.7 160 480 149.3 480 136V40C480 26.75 490.7 15.1 504 15.1C517.3 15.1 528 26.75 528 40V78.06L591 15.03zM15.03 463L78.06 400H40C26.75 400 15.1 389.3 15.1 376C15.1 362.7 26.75 352 40 352H136C149.3 352 160 362.7 160 376V472C160 485.3 149.3 496 136 496C122.7 496 112 485.3 112 472V433.9L48.97 496.1C39.6 506.3 24.4 506.3 15.03 496.1C5.657 487.6 5.657 472.4 15.03 463V463zM528 433.9V472C528 485.3 517.3 496 504 496C490.7 496 480 485.3 480 472V376C480 362.7 490.7 352 504 352H600C613.3 352 624 362.7 624 376C624 389.3 613.3 400 600 400H561.9L624.1 463C634.3 472.4 634.3 487.6 624.1 496.1C615.6 506.3 600.4 506.3 591 496.1L528 433.9z"], + "arrows-turn-right": [448, 512, [], "e4c0", "M297.4 9.372C309.9-3.124 330.1-3.124 342.6 9.372L438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L342.6 246.6C330.1 259.1 309.9 259.1 297.4 246.6C284.9 234.1 284.9 213.9 297.4 201.4L338.7 160H128C92.65 160 64 188.7 64 224V256C64 273.7 49.67 288 32 288C14.33 288 0 273.7 0 256V224C0 153.3 57.31 96 128 96H338.7L297.4 54.63C284.9 42.13 284.9 21.87 297.4 9.373V9.372zM201.4 265.4C213.9 252.9 234.1 252.9 246.6 265.4L342.6 361.4C355.1 373.9 355.1 394.1 342.6 406.6L246.6 502.6C234.1 515.1 213.9 515.1 201.4 502.6C188.9 490.1 188.9 469.9 201.4 457.4L242.7 416H96C78.33 416 64 430.3 64 448V480C64 497.7 49.67 512 32 512C14.33 512 0 497.7 0 480V448C0 394.1 42.98 352 96 352H242.7L201.4 310.6C188.9 298.1 188.9 277.9 201.4 265.4V265.4z"], + "arrows-turn-to-dots": [512, 512, [], "e4c1", "M249.4 25.37C261.9 12.88 282.1 12.88 294.6 25.37C307.1 37.87 307.1 58.13 294.6 70.63L269.3 95.1H416C469 95.1 512 138.1 512 191.1V223.1C512 241.7 497.7 255.1 480 255.1C462.3 255.1 448 241.7 448 223.1V191.1C448 174.3 433.7 159.1 416 159.1H269.3L294.6 185.4C307.1 197.9 307.1 218.1 294.6 230.6C282.1 243.1 261.9 243.1 249.4 230.6L169.4 150.6C156.9 138.1 156.9 117.9 169.4 105.4L249.4 25.37zM342.6 361.4C355.1 373.9 355.1 394.1 342.6 406.6L262.6 486.6C250.1 499.1 229.9 499.1 217.4 486.6C204.9 474.1 204.9 453.9 217.4 441.4L242.7 416H96C78.33 416 64 430.3 64 448V480C64 497.7 49.67 512 32 512C14.33 512 0 497.7 0 480V448C0 394.1 42.98 352 96 352H242.7L217.4 326.6C204.9 314.1 204.9 293.9 217.4 281.4C229.9 268.9 250.1 268.9 262.6 281.4L342.6 361.4zM512 384C512 419.3 483.3 448 448 448C412.7 448 384 419.3 384 384C384 348.7 412.7 320 448 320C483.3 320 512 348.7 512 384zM128 128C128 163.3 99.35 192 64 192C28.65 192 0 163.3 0 128C0 92.65 28.65 64 64 64C99.35 64 128 92.65 128 128z"], + "arrows-up-down": [256, 512, ["arrows-v"], "f07d", "M246.6 361.4C252.9 367.6 256 375.8 256 384s-3.125 16.38-9.375 22.62l-96 96c-12.5 12.5-32.75 12.5-45.25 0l-96-96c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L96 402.8v-293.5L54.63 150.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l96-96c12.5-12.5 32.75-12.5 45.25 0l96 96C252.9 111.6 256 119.8 256 128s-3.125 16.38-9.375 22.62c-12.5 12.5-32.75 12.5-45.25 0L160 109.3v293.5l41.38-41.38C213.9 348.9 234.1 348.9 246.6 361.4z"], + "arrows-up-down-left-right": [512, 512, ["arrows"], "f047", "M512 255.1c0 8.188-3.125 16.41-9.375 22.66l-72 72C424.4 356.9 416.2 360 408 360c-18.28 0-32-14.95-32-32c0-8.188 3.125-16.38 9.375-22.62L402.8 288H288v114.8l17.38-17.38C311.6 379.1 319.8 376 328 376c18.28 0 32 14.95 32 32c0 8.188-3.125 16.38-9.375 22.62l-72 72C272.4 508.9 264.2 512 256 512s-16.38-3.125-22.62-9.375l-72-72C155.1 424.4 152 416.2 152 408c0-17.05 13.73-32 32-32c8.188 0 16.38 3.125 22.62 9.375L224 402.8V288H109.3l17.38 17.38C132.9 311.6 136 319.8 136 328c0 17.05-13.73 32-32 32c-8.188 0-16.38-3.125-22.62-9.375l-72-72C3.125 272.4 0 264.2 0 255.1s3.125-16.34 9.375-22.59l72-72C87.63 155.1 95.81 152 104 152c18.28 0 32 14.95 32 32c0 8.188-3.125 16.38-9.375 22.62L109.3 224H224V109.3L206.6 126.6C200.4 132.9 192.2 136 184 136c-18.28 0-32-14.95-32-32c0-8.188 3.125-16.38 9.375-22.62l72-72C239.6 3.125 247.8 0 256 0s16.38 3.125 22.62 9.375l72 72C356.9 87.63 360 95.81 360 104c0 17.05-13.73 32-32 32c-8.188 0-16.38-3.125-22.62-9.375L288 109.3V224h114.8l-17.38-17.38C379.1 200.4 376 192.2 376 184c0-17.05 13.73-32 32-32c8.188 0 16.38 3.125 22.62 9.375l72 72C508.9 239.6 512 247.8 512 255.1z"], + "arrows-up-to-line": [576, 512, [], "e4c2", "M32 96C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H544C561.7 32 576 46.33 576 64C576 81.67 561.7 96 544 96H32zM105.4 137.4C117.9 124.9 138.1 124.9 150.6 137.4L246.6 233.4C259.1 245.9 259.1 266.1 246.6 278.6C234.1 291.1 213.9 291.1 201.4 278.6L160 237.3V448C160 465.7 145.7 480 128 480C110.3 480 96 465.7 96 448V237.3L54.63 278.6C42.13 291.1 21.87 291.1 9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4L105.4 137.4zM329.4 233.4L425.4 137.4C437.9 124.9 458.1 124.9 470.6 137.4L566.6 233.4C579.1 245.9 579.1 266.1 566.6 278.6C554.1 291.1 533.9 291.1 521.4 278.6L480 237.3L480 448C480 465.7 465.7 480 448 480C430.3 480 416 465.7 416 448V237.3L374.6 278.6C362.1 291.1 341.9 291.1 329.4 278.6C316.9 266.1 316.9 245.9 329.4 233.4H329.4z"], + "asterisk": [448, 512, [10033, 61545], "2a", "M417.1 368c-5.937 10.27-16.69 16-27.75 16c-5.422 0-10.92-1.375-15.97-4.281L256 311.4V448c0 17.67-14.33 32-31.1 32S192 465.7 192 448V311.4l-118.3 68.29C68.67 382.6 63.17 384 57.75 384c-11.06 0-21.81-5.734-27.75-16c-8.828-15.31-3.594-34.88 11.72-43.72L159.1 256L41.72 187.7C26.41 178.9 21.17 159.3 29.1 144C36.63 132.5 49.26 126.7 61.65 128.2C65.78 128.7 69.88 130.1 73.72 132.3L192 200.6V64c0-17.67 14.33-32 32-32S256 46.33 256 64v136.6l118.3-68.29c3.838-2.213 7.939-3.539 12.07-4.051C398.7 126.7 411.4 132.5 417.1 144c8.828 15.31 3.594 34.88-11.72 43.72L288 256l118.3 68.28C421.6 333.1 426.8 352.7 417.1 368z"], + "at": [512, 512, [61946], "40", "M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z"], + "atom": [512, 512, [9883], "f5d2", "M256 224C238.4 224 223.1 238.4 223.1 256S238.4 288 256 288c17.63 0 32-14.38 32-32S273.6 224 256 224zM470.2 128c-10.88-19.5-40.51-50.75-116.3-41.88C332.4 34.88 299.6 0 256 0S179.6 34.88 158.1 86.12C82.34 77.38 52.71 108.5 41.83 128c-16.38 29.38-14.91 73.12 25.23 128c-40.13 54.88-41.61 98.63-25.23 128c29.13 52.38 101.6 43.63 116.3 41.88C179.6 477.1 212.4 512 256 512s76.39-34.88 97.9-86.13C368.5 427.6 441 436.4 470.2 384c16.38-29.38 14.91-73.13-25.23-128C485.1 201.1 486.5 157.4 470.2 128zM95.34 352c-4.001-7.25-.1251-24.75 15-48.25c6.876 6.5 14.13 12.87 21.88 19.12c1.625 13.75 4.001 27.13 6.751 40.13C114.3 363.9 99.09 358.6 95.34 352zM132.2 189.1C124.5 195.4 117.2 201.8 110.3 208.2C95.22 184.8 91.34 167.2 95.34 160c3.376-6.125 16.38-11.5 37.88-11.5c1.75 0 3.876 .375 5.751 .375C136.1 162.2 133.8 175.6 132.2 189.1zM256 64c9.502 0 22.25 13.5 33.88 37.25C278.6 105 267.4 109.3 256 114.1C244.6 109.3 233.4 105 222.1 101.2C233.7 77.5 246.5 64 256 64zM256 448c-9.502 0-22.25-13.5-33.88-37.25C233.4 407 244.6 402.7 256 397.9c11.38 4.875 22.63 9.135 33.88 12.89C278.3 434.5 265.5 448 256 448zM256 336c-44.13 0-80.02-35.88-80.02-80S211.9 176 256 176s80.02 35.88 80.02 80S300.1 336 256 336zM416.7 352c-3.626 6.625-19 11.88-43.63 11c2.751-12.1 5.126-26.38 6.751-40.13c7.752-6.25 15-12.63 21.88-19.12C416.8 327.2 420.7 344.8 416.7 352zM401.7 208.2c-6.876-6.5-14.13-12.87-21.88-19.12c-1.625-13.5-3.876-26.88-6.751-40.25c1.875 0 4.001-.375 5.751-.375c21.5 0 34.51 5.375 37.88 11.5C420.7 167.2 416.8 184.8 401.7 208.2z"], + "audio-description": [576, 512, [], "f29e", "M170.8 280H213.2L192 237.7L170.8 280zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM274.7 349.5C271.3 351.2 267.6 352 264 352c-8.812 0-17.28-4.859-21.5-13.27L233.2 320H150.8l-9.367 18.73c-5.906 11.86-20.31 16.7-32.19 10.73c-11.88-5.938-16.69-20.34-10.75-32.2l72-144c8.125-16.25 34.81-16.25 42.94 0l72 144C291.4 329.1 286.6 343.5 274.7 349.5zM384 352h-56c-13.25 0-24-10.75-24-24v-144C304 170.8 314.8 160 328 160H384c52.94 0 96 43.06 96 96S436.9 352 384 352zM384 208h-32v96h32c26.47 0 48-21.53 48-48S410.5 208 384 208z"], + "austral-sign": [448, 512, [], "e0a9", "M325.3 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H352L365.3 320H416C433.7 320 448 334.3 448 352C448 369.7 433.7 384 416 384H392L413.5 435.7C420.3 452 412.6 470.7 396.3 477.5C379.1 484.3 361.3 476.6 354.5 460.3L322.7 384H125.3L93.54 460.3C86.74 476.6 68.01 484.3 51.69 477.5C35.38 470.7 27.66 452 34.46 435.7L56 384H32C14.33 384 0 369.7 0 352C0 334.3 14.33 320 32 320H82.67L96 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H122.7L194.5 51.69C199.4 39.77 211.1 32 224 32C236.9 32 248.6 39.77 253.5 51.69L325.3 224zM256 224L223.1 147.2L191.1 224H256zM165.3 288L151.1 320H296L282.7 288H165.3z"], + "award": [384, 512, [], "f559", "M288 358.3c13.98-8.088 17.53-30.04 28.88-41.39c11.35-11.35 33.3-14.88 41.39-28.87c7.98-13.79 .1658-34.54 4.373-50.29C366.7 222.5 383.1 208.5 383.1 192c0-16.5-17.27-30.52-21.34-45.73c-4.207-15.75 3.612-36.5-4.365-50.29c-8.086-13.98-30.03-17.52-41.38-28.87c-11.35-11.35-14.89-33.3-28.87-41.39c-13.79-7.979-34.54-.1637-50.29-4.375C222.5 17.27 208.5 0 192 0C175.5 0 161.5 17.27 146.3 21.34C130.5 25.54 109.8 17.73 95.98 25.7C82 33.79 78.46 55.74 67.11 67.08C55.77 78.43 33.81 81.97 25.72 95.95C17.74 109.7 25.56 130.5 21.35 146.2C17.27 161.5 .0008 175.5 .0008 192c0 16.5 17.27 30.52 21.34 45.73c4.207 15.75-3.615 36.5 4.361 50.29C33.8 302 55.74 305.5 67.08 316.9c11.35 11.35 14.89 33.3 28.88 41.4c13.79 7.979 34.53 .1582 50.28 4.369C161.5 366.7 175.5 384 192 384c16.5 0 30.52-17.27 45.74-21.34C253.5 358.5 274.2 366.3 288 358.3zM112 192c0-44.27 35.81-80 80-80s80 35.73 80 80c0 44.17-35.81 80-80 80S112 236.2 112 192zM1.719 433.2c-3.25 8.188-1.781 17.48 3.875 24.25c5.656 6.75 14.53 9.898 23.12 8.148l45.19-9.035l21.43 42.27C99.46 507 107.6 512 116.7 512c.3438 0 .6641-.0117 1.008-.0273c9.5-.375 17.65-6.082 21.24-14.88l33.58-82.08c-53.71-4.639-102-28.12-138.2-63.95L1.719 433.2zM349.6 351.1c-36.15 35.83-84.45 59.31-138.2 63.95l33.58 82.08c3.594 8.797 11.74 14.5 21.24 14.88C266.6 511.1 266.1 512 267.3 512c9.094 0 17.23-4.973 21.35-13.14l21.43-42.28l45.19 9.035c8.594 1.75 17.47-1.398 23.12-8.148c5.656-6.766 7.125-16.06 3.875-24.25L349.6 351.1z"], + "b": [320, 512, [98], "42", "M257.1 242.4C276.1 220.1 288 191.6 288 160c0-70.58-57.42-128-128-128H32c-17.67 0-32 14.33-32 32v384c0 17.67 14.33 32 32 32l160-.0049c70.58 0 128-57.42 128-128C320 305.3 294.6 264.8 257.1 242.4zM64 96.01h96c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V96.01zM192 416H64v-128h128c35.3 0 64 28.7 64 64S227.3 416 192 416z"], + "baby": [448, 512, [], "f77c", "M156.8 411.8l31.22-31.22l-60.04-53.09l-52.29 52.28C61.63 393.8 60.07 416.1 72 432l48 64C127.9 506.5 139.9 512 152 512c8.345 0 16.78-2.609 23.97-8c17.69-13.25 21.25-38.33 8-56L156.8 411.8zM224 159.1c44.25 0 79.99-35.75 79.99-79.1S268.3 0 224 0S144 35.75 144 79.1S179.8 159.1 224 159.1zM408.7 145c-12.75-18.12-37.63-22.38-55.76-9.75l-40.63 28.5c-52.63 37-124.1 37-176.8 0l-40.63-28.5C76.84 122.6 51.97 127 39.22 145C26.59 163.1 30.97 188 48.97 200.8l40.63 28.5C101.7 237.7 114.7 244.3 128 250.2L128 288h192l.0002-37.71c13.25-5.867 26.22-12.48 38.34-21.04l40.63-28.5C417.1 188 421.4 163.1 408.7 145zM320 327.4l-60.04 53.09l31.22 31.22L264 448c-13.25 17.67-9.689 42.75 8 56C279.2 509.4 287.6 512 295.1 512c12.16 0 24.19-5.516 32.03-16l48-64c11.94-15.92 10.38-38.2-3.719-52.28L320 327.4z"], + "baby-carriage": [512, 512, ["carriage-baby"], "f77d", "M255.1 192H.1398C2.741 117.9 41.34 52.95 98.98 14.1C112.2 5.175 129.8 9.784 138.9 22.92L255.1 192zM384 160C384 124.7 412.7 96 448 96H480C497.7 96 512 110.3 512 128C512 145.7 497.7 160 480 160H448V224C448 249.2 442.2 274.2 430.9 297.5C419.7 320.8 403.2 341.9 382.4 359.8C361.6 377.6 336.9 391.7 309.7 401.4C282.5 411 253.4 416 223.1 416C194.6 416 165.5 411 138.3 401.4C111.1 391.7 86.41 377.6 65.61 359.8C44.81 341.9 28.31 320.8 17.05 297.5C5.794 274.2 0 249.2 0 224H384L384 160zM31.1 464C31.1 437.5 53.49 416 79.1 416C106.5 416 127.1 437.5 127.1 464C127.1 490.5 106.5 512 79.1 512C53.49 512 31.1 490.5 31.1 464zM416 464C416 490.5 394.5 512 368 512C341.5 512 320 490.5 320 464C320 437.5 341.5 416 368 416C394.5 416 416 437.5 416 464z"], + "backward": [512, 512, [9194], "f04a", "M459.5 71.41l-171.5 142.9v83.45l171.5 142.9C480.1 457.7 512 443.3 512 415.1V96.03C512 68.66 480.1 54.28 459.5 71.41zM203.5 71.41L11.44 231.4c-15.25 12.87-15.25 36.37 0 49.24l192 159.1c20.63 17.12 52.51 2.749 52.51-24.62v-319.9C255.1 68.66 224.1 54.28 203.5 71.41z"], + "backward-fast": [512, 512, [9198, "fast-backward"], "f049", "M0 415.1V96.03c0-17.67 14.33-31.1 31.1-31.1C49.67 64.03 64 78.36 64 96.03v131.8l171.5-156.5C256.1 54.28 288 68.66 288 96.03v131.9l171.5-156.5C480.1 54.28 512 68.66 512 96.03v319.9c0 27.37-31.88 41.74-52.5 24.62L288 285.2v130.7c0 27.37-31.88 41.74-52.5 24.62L64 285.2v130.7c0 17.67-14.33 31.1-31.1 31.1C14.33 447.1 0 433.6 0 415.1z"], + "backward-step": [320, 512, ["step-backward"], "f048", "M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"], + "bacon": [576, 512, [129363], "f7e5", "M29.34 432.5l-18.06-20.15c-9.406-10.47-13.25-25.3-10.31-39.65c2.813-13.71 11.23-24.74 23.09-30.23l68.88-31.94c47.95-22.25 87.64-60.2 114.8-109.8l20.66-37.76c28.77-52.59 70.98-92.93 122.1-116.6l92.75-42.99c14.84-6.812 32.41-3.078 43.69 9.518l34.08 38.01l-104.8 48.56c-55.72 25.83-101.7 69.73-133 127L261.3 266.5c-28.03 51.22-69 90.42-118.5 113.4L29.34 432.5zM564.7 99.68l-21.4-23.87l-113.6 52.68c-49.47 22.94-90.44 62.11-118.5 113.3L289.3 281.9c-31.33 57.27-77.34 101.2-133.1 127l-104.5 48.43l37.43 41.74C96.64 507.5 106.1 512 117.5 512c5.188 0 10.41-1.11 15.33-3.375l92.75-42.99c51.13-23.69 93.34-64.03 122.1-116.6l20.66-37.76c27.11-49.56 66.8-87.5 114.8-109.8l68.88-31.94c11.86-5.486 20.28-16.52 23.09-30.23C577.1 124.1 574.1 110.1 564.7 99.68z"], + "bacteria": [640, 512, [], "e059", "M627.3 227.3c9.439-2.781 14.81-12.65 12-22.04c-3.039-10.21-13.57-14.52-22.14-11.95l-11.27 3.33c-8.086-15.15-20.68-27.55-36.4-35.43l2.888-11.06c1.867-7.158-1.9-22.19-17.26-22.19c-7.92 0-15.14 5.288-17.23 13.28l-2.865 10.97c-7.701-.2793-26.9-.6485-48.75 13.63L477.6 157.1c-3.777-3.873-15.44-9.779-25.19-.3691c-7.062 6.822-7.225 18.04-.3711 25.07l9.14 9.373c-11.96 18.85-10.27 28.38-15.88 46.61c-8.023-3.758-11.44-5.943-16.66-5.943c-6.689 0-13.09 3.763-16.13 10.19c-4.188 8.856-.3599 19.42 8.546 23.58l8.797 4.115c-14.91 22.05-34.42 33.57-34.83 33.83l-3.922-8.855C387.2 285.8 376.7 281.7 367.7 285.6c-9 3.959-13.08 14.42-9.115 23.39l4.041 9.127c-16.38 4.559-27.93 4.345-46.15 16.94l-9.996-9.012c-6.969-6.303-18.28-6.33-25.15 1.235c-6.609 7.26-6.053 18.47 1.24 25.04l9.713 8.756c-8.49 14.18-12.74 30.77-11.64 48.17l-11.86 3.512c-9.428 2.793-14.8 12.66-11.99 22.05c2.781 9.385 12.69 14.71 22.15 11.94l11.34-3.359c8.287 15.49 20.99 27.86 36.38 35.57l-2.839 10.85c-2.482 9.477 3.224 19.16 12.75 21.62c9.566 2.482 19.25-3.221 21.72-12.69l2.82-10.78c5.508 .1875 11.11-.1523 16.75-1.102c11.37-1.893 22.23-5.074 33.1-8.24l3.379 9.455c3.305 9.225 13.5 14.11 22.75 10.76c9.266-3.279 14.1-13.41 10.81-22.65l-3.498-9.792c15.41-6.654 30.08-14.46 43.95-23.57l6.321 8.429c5.891 7.84 17.05 9.443 24.93 3.602c7.885-5.863 9.498-16.97 3.617-24.82l-6.457-8.611c12.66-10.78 24.33-22.54 34.96-35.33l8.816 6.413c7.932 5.795 19.07 4.074 24.89-3.855c5.809-7.908 4.072-18.1-3.874-24.77l-8.885-6.465c8.893-13.88 16.54-28.52 22.99-43.91l10.47 3.59c9.334 3.186 19.43-1.719 22.64-10.99c3.211-9.258-1.739-19.35-11.04-22.53l-10.33-3.541c5.744-20.5 9.424-31.81 8.338-49.26L627.3 227.3zM416 416c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32c17.67 0 32 14.33 32 32C448 401.7 433.7 416 416 416zM272.3 226.4c9-3.959 13.08-14.42 9.115-23.39L277.4 193.9c16.38-4.561 27.93-4.345 46.15-16.94l9.996 9.012c6.969 6.301 18.28 6.326 25.15-1.236c6.609-7.26 6.053-18.47-1.24-25.04l-9.713-8.756c8.49-14.18 12.74-30.77 11.64-48.18l11.86-3.511c9.428-2.793 14.8-12.66 11.99-22.05c-2.781-9.385-12.69-14.71-22.15-11.94l-11.34 3.357C341.5 53.13 328.8 40.76 313.4 33.05l2.838-10.85C318.7 12.73 313 3.04 303.5 .5811c-9.566-2.482-19.25 3.222-21.72 12.69l-2.82 10.78C273.4 23.86 267.8 24.2 262.2 25.15C250.8 27.04 239.1 30.22 229.1 33.39L225.7 23.93C222.4 14.71 212.2 9.827 202.1 13.17C193.7 16.45 188.9 26.59 192.2 35.82l3.498 9.793C180.2 52.27 165.6 60.07 151.7 69.19L145.4 60.76C139.5 52.92 128.3 51.32 120.5 57.16C112.6 63.02 110.1 74.13 116.8 81.98l6.457 8.611C110.6 101.4 98.96 113.1 88.34 125.9L79.52 119.5c-7.932-5.795-19.08-4.074-24.89 3.855c-5.809 7.908-4.07 19 3.875 24.77l8.885 6.465C58.5 168.5 50.86 183.1 44.41 198.5L33.93 194.9c-9.334-3.186-19.44 1.721-22.64 10.99C8.086 215.2 13.04 225.3 22.34 228.4l10.33 3.541C26.93 252.5 23.25 263.8 24.33 281.2L12.75 284.7C3.309 287.4-2.061 297.3 .7441 306.7c3.041 10.21 13.57 14.52 22.14 11.95l11.27-3.33c8.086 15.15 20.68 27.55 36.39 35.43l-2.887 11.06c-1.865 7.156 1.902 22.19 17.26 22.19c7.92 0 15.14-5.287 17.23-13.28l2.863-10.97c7.701 .2773 26.9 .6465 48.76-13.63l8.59 8.809c3.777 3.873 15.44 9.779 25.19 .3691c7.062-6.822 7.225-18.04 .3711-25.07l-9.14-9.373c11.96-18.85 10.27-28.38 15.88-46.61c8.025 3.756 11.44 5.943 16.66 5.943c6.689 0 13.09-3.762 16.13-10.19C231.6 261.1 227.8 250.6 218.9 246.4L210.1 242.3C225 220.2 244.5 208.7 244.9 208.5l3.922 8.856C252.8 226.2 263.3 230.3 272.3 226.4zM128 256C110.3 256 96 241.7 96 223.1c0-17.67 14.33-32 32-32c17.67 0 32 14.33 32 32C160 241.7 145.7 256 128 256zM208 160c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C224 152.8 216.8 160 208 160z"], + "bacterium": [576, 512, [], "e05a", "M543 102.9c-3.711-12.51-16.92-19.61-29.53-15.92l-15.12 4.48c-11.05-20.65-27.98-37.14-48.5-47.43l3.783-14.46c3.309-12.64-4.299-25.55-16.99-28.83c-12.76-3.309-25.67 4.295-28.96 16.92l-3.76 14.37c-9.947-.3398-26.22 .1016-66.67 11.88l-4.301-12.03c-4.406-12.3-17.1-18.81-30.34-14.34c-12.35 4.371-18.8 17.88-14.41 30.2l4.303 12.04c-20.6 8.889-40.16 19.64-58.69 31.83L225.9 81.01C217.1 70.56 203.1 68.42 192.6 76.21C182.1 84.03 179.9 98.83 187.8 109.3l7.975 10.63C178.8 134.3 163.3 150.3 149.1 167.4L138 159.3C127.5 151.6 112.6 153.9 104.8 164.5c-7.748 10.54-5.428 25.33 5.164 33.03l11.09 8.066C109.2 224.1 98.79 243.7 90.18 264.3l-12.93-4.431c-12.45-4.248-25.92 2.293-30.18 14.65C42.78 286.9 49.38 300.3 61.78 304.6l13.05 4.474c-11.86 42.33-11.02 55.76-10.39 65.93l-15.45 4.566c-12.59 3.709-19.74 16.87-16 29.38c4.053 13.61 18.1 19.36 29.52 15.93l15.02-4.441c10.78 20.21 27.57 36.73 48.53 47.24l-3.852 14.75C119.7 491.1 124.8 512 145.2 512c10.56 0 20.19-7.049 22.98-17.7l3.816-14.63c10.2 .377 35.85 .873 65.01-18.17l11.45 11.74c5.037 5.164 20.59 13.04 33.58 .4922c9.416-9.096 9.633-24.06 .4941-33.43l-12.19-12.5c7.805-12.29 13.56-26.13 16.11-41.4c1.186-7.107 3.082-13.95 5.158-20.7c10.66 4.988 15.16 7.881 22.12 7.881c8.922 0 17.46-5.018 21.51-13.59c5.582-11.8 .4785-25.89-11.4-31.45l-11.73-5.486c20.09-29.62 45.89-44.76 46.44-45.11l5.23 11.81c5.273 11.86 19.19 17.36 31.33 12.1c11.1-5.279 17.44-19.22 12.15-31.18L401.9 258.5c5.438-1.512 10.86-3.078 16.52-4.021c16.8-2.797 31.88-9.459 45.02-18.54l13.33 12.02c9.289 8.395 24.37 8.439 33.54-1.648c8.814-9.68 8.072-24.62-1.654-33.38l-12.95-11.68c11.32-18.9 16.99-41.02 15.52-64.23l15.81-4.681C539.6 128.6 546.7 115.4 543 102.9zM192 368c-26.51 0-48.01-21.49-48.01-48s21.5-48 48.01-48S240.1 293.5 240.1 320S218.6 368 192 368zM272 232c-13.25 0-23.92-10.75-23.92-24c0-13.26 10.67-23.1 23.92-23.1c13.26 0 23.1 10.74 23.1 23.1C295.1 221.3 285.3 232 272 232z"], + "bag-shopping": [448, 512, ["shopping-bag"], "f290", "M112 112C112 50.14 162.1 0 224 0C285.9 0 336 50.14 336 112V160H400C426.5 160 448 181.5 448 208V416C448 469 405 512 352 512H96C42.98 512 0 469 0 416V208C0 181.5 21.49 160 48 160H112V112zM160 160H288V112C288 76.65 259.3 48 224 48C188.7 48 160 76.65 160 112V160zM136 256C149.3 256 160 245.3 160 232C160 218.7 149.3 208 136 208C122.7 208 112 218.7 112 232C112 245.3 122.7 256 136 256zM312 208C298.7 208 288 218.7 288 232C288 245.3 298.7 256 312 256C325.3 256 336 245.3 336 232C336 218.7 325.3 208 312 208z"], + "bahai": [512, 512, ["haykal"], "f666", "M496.3 202.5l-110-15.38l41.88-104.4c6.625-16.63-11.63-32.25-26.63-22.63L307.5 120l-34.13-107.1C270.6 4.25 263.4 0 255.1 0C248.6 0 241.4 4.25 238.6 12.88L204.5 120L110.5 60.12c-15-9.5-33.22 5.1-26.6 22.63l41.85 104.4L15.71 202.5C-1.789 205-5.915 228.8 9.71 237.2l98.14 52.63l-74.51 83.5c-10.88 12.25-1.78 31 13.35 31c1.25 0 2.657-.25 4.032-.5l108.6-23.63l-4.126 112.5C154.7 504.4 164.1 512 173.6 512c5.125 0 10.38-2.25 14.25-7.25l68.13-88.88l68.23 88.88C327.1 509.8 333.2 512 338.4 512c9.5 0 18.88-7.625 18.38-19.25l-4.032-112.5l108.5 23.63c17.38 3.75 29.25-17.25 17.38-30.5l-74.51-83.5l98.14-52.72C517.9 228.8 513.8 205 496.3 202.5zM338.5 311.6L286.6 300.4l2 53.75l-32.63-42.5l-32.63 42.5l2-53.75L173.5 311.6l35.63-39.87L162.1 246.6L214.7 239.2L194.7 189.4l45 28.63L255.1 166.8l16.25 51.25l45-28.63L297.2 239.2l52.63 7.375l-47 25.13L338.5 311.6z"], + "baht-sign": [320, 512, [], "e0ac", "M176 32V64C237.9 64 288 114.1 288 176C288 200.2 280.3 222.6 267.3 240.9C298.9 260.7 320 295.9 320 336C320 397.9 269.9 448 208 448H176V480C176 497.7 161.7 512 144 512C126.3 512 112 497.7 112 480V448H41.74C18.69 448 0 429.3 0 406.3V101.6C0 80.82 16.82 64 37.57 64H112V32C112 14.33 126.3 0 144 0C161.7 0 176 14.33 176 32V32zM112 128H64V224H112V128zM224 176C224 149.5 202.5 128 176 128V224C202.5 224 224 202.5 224 176zM112 288H64V384H112V288zM208 384C234.5 384 256 362.5 256 336C256 309.5 234.5 288 208 288H176V384H208z"], + "ban": [512, 512, [128683, "cancel"], "f05e", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM99.5 144.8C77.15 176.1 64 214.5 64 256C64 362 149.1 448 256 448C297.5 448 335.9 434.9 367.2 412.5L99.5 144.8zM448 256C448 149.1 362 64 256 64C214.5 64 176.1 77.15 144.8 99.5L412.5 367.2C434.9 335.9 448 297.5 448 256V256z"], + "ban-smoking": [512, 512, [128685, "smoking-ban"], "f54d", "M96 304C96 312.8 103.3 320 112 320h117.5l-96-96H112C103.3 224 96 231.3 96 240V304zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 448c-105.9 0-192-86.13-192-192c0-41.38 13.25-79.75 35.75-111.1l267.4 267.4C335.8 434.8 297.4 448 256 448zM301.2 256H384v32h-50.81L301.2 256zM412.3 367.1L365.2 320H400c8.75 0 16-7.25 16-16v-64C416 231.3 408.8 224 400 224h-130.8L144.9 99.75C176.3 77.25 214.6 64 256 64C361.9 64 448 150.1 448 256C448 297.4 434.8 335.8 412.3 367.1zM320.6 128C305 128 292 116.8 289.3 102.1C288.5 98.5 285.3 96 281.5 96h-16.25c-5 0-8.625 4.5-8 9.375C261.9 136.3 288.5 160 320.6 160C336.3 160 349.3 171.3 352 185.9C352.8 189.5 356 192 359.8 192h16.17c5 0 8.708-4.5 7.958-9.375C379.3 151.7 352.8 128 320.6 128z"], + "bandage": [640, 512, [129657, "band-aid"], "f462", "M480 96H576C611.3 96 640 124.7 640 160V352C640 387.3 611.3 416 576 416H480V96zM448 416H192V96H448V416zM272 184C258.7 184 248 194.7 248 208C248 221.3 258.7 232 272 232C285.3 232 296 221.3 296 208C296 194.7 285.3 184 272 184zM368 232C381.3 232 392 221.3 392 208C392 194.7 381.3 184 368 184C354.7 184 344 194.7 344 208C344 221.3 354.7 232 368 232zM272 280C258.7 280 248 290.7 248 304C248 317.3 258.7 328 272 328C285.3 328 296 317.3 296 304C296 290.7 285.3 280 272 280zM368 328C381.3 328 392 317.3 392 304C392 290.7 381.3 280 368 280C354.7 280 344 290.7 344 304C344 317.3 354.7 328 368 328zM64 96H160V416H64C28.65 416 0 387.3 0 352V160C0 124.7 28.65 96 64 96z"], + "barcode": [512, 512, [], "f02a", "M40 32C53.25 32 64 42.75 64 56V456C64 469.3 53.25 480 40 480H24C10.75 480 0 469.3 0 456V56C0 42.75 10.75 32 24 32H40zM128 48V464C128 472.8 120.8 480 112 480C103.2 480 96 472.8 96 464V48C96 39.16 103.2 32 112 32C120.8 32 128 39.16 128 48zM200 32C213.3 32 224 42.75 224 56V456C224 469.3 213.3 480 200 480H184C170.7 480 160 469.3 160 456V56C160 42.75 170.7 32 184 32H200zM296 32C309.3 32 320 42.75 320 56V456C320 469.3 309.3 480 296 480H280C266.7 480 256 469.3 256 456V56C256 42.75 266.7 32 280 32H296zM448 56C448 42.75 458.7 32 472 32H488C501.3 32 512 42.75 512 56V456C512 469.3 501.3 480 488 480H472C458.7 480 448 469.3 448 456V56zM384 48C384 39.16 391.2 32 400 32C408.8 32 416 39.16 416 48V464C416 472.8 408.8 480 400 480C391.2 480 384 472.8 384 464V48z"], + "bars": [448, 512, ["navicon"], "f0c9", "M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"], + "bars-progress": [512, 512, ["tasks-alt"], "f828", "M464 64C490.5 64 512 85.49 512 112V176C512 202.5 490.5 224 464 224H48C21.49 224 0 202.5 0 176V112C0 85.49 21.49 64 48 64H464zM448 128H320V160H448V128zM464 288C490.5 288 512 309.5 512 336V400C512 426.5 490.5 448 464 448H48C21.49 448 0 426.5 0 400V336C0 309.5 21.49 288 48 288H464zM192 352V384H448V352H192z"], + "bars-staggered": [512, 512, ["reorder", "stream"], "f550", "M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM64 256C64 238.3 78.33 224 96 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H96C78.33 288 64 273.7 64 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"], + "baseball": [512, 512, [129358, 9918, "baseball-ball"], "f433", "M429.6 272.9c0-16.26 16.36-16.81 29.99-16.81l2.931 .0029c16.64 0 33.14 2.056 49.2 5.834C511.7 259.9 512 258 512 256c0-141.4-114.6-256-256-256C253.9 0 251.1 .2578 249.9 .3047c3.658 15.51 6.111 31.34 6.111 47.54c0 6-.2813 12.03-.7813 18C254.6 74.19 247.6 80.5 239.3 80.5c-6.091 0-16.03-4.68-16.03-15.97c0-1.733 .7149-7.153 .7149-16.69c0-15.26-2.389-30.18-6.225-44.69C106.9 19.79 19.5 107.3 3.08 218.3c14.44 3.819 29.38 5.79 44.45 5.79c10.07 0 15.59-.811 17.42-.811c6.229 0 16.49 4.657 16.49 15.99c0 16.11-16.13 16.77-29.73 16.77L48.16 256c-16.33 0-32.25-2.445-47.85-6.109C.2578 251.1 0 253.9 0 256c0 141.4 114.6 256 256 256c2.066 0 4.062-.2578 6.117-.3086C258.5 496.2 256 480.4 256 464.2c0-5.688 .25-11.38 .7187-17.03c.6964-8.538 8.287-14.61 16.49-14.61c7.1 0 15.44 6.938 15.44 15.92c0 2.358-.6524 5.88-.6524 15.72c0 15.25 2.383 30.16 6.209 44.66c110.8-16.63 198.2-104.1 214.7-215c-14.55-3.851-29.59-5.871-44.74-5.871c-10.47 0-16.24 .895-18.13 .895C443.3 288.9 429.6 286.5 429.6 272.9zM238.2 128.9c0 27.78-78.3 108.1-108.6 108.1c-8.612 0-16.01-6.963-16.01-15.98c0-6.002 3.394-11.75 9.163-14.49c80.3-38.08 76.21-94.5 99.39-94.5C234.7 112.8 238.2 124.2 238.2 128.9zM397.5 290.6c0 5.965-3.364 11.68-9.131 14.43c-78.82 37.57-75.92 95-98.94 95c-12.58 0-16.01-11.54-16.01-16.03c0-28 78.29-109.4 108.1-109.4C390.8 274.6 397.5 282.3 397.5 290.6z"], + "baseball-bat-ball": [640, 512, [], "f432", "M57.89 397.2c-6.262-8.616-16.02-13.19-25.92-13.19c-23.33 0-31.98 20.68-31.98 32.03c0 6.522 1.987 13.1 6.115 18.78l46.52 64C58.89 507.4 68.64 512 78.55 512c23.29 0 31.97-20.66 31.97-32.03c0-6.522-1.988-13.1-6.115-18.78L57.89 397.2zM496.1 352c-44.13 0-79.72 35.75-79.72 80s35.59 80 79.72 80s79.91-35.75 79.91-80S540.2 352 496.1 352zM640 99.38c0-13.61-4.133-27.34-12.72-39.2l-23.63-32.5c-13.44-18.5-33.77-27.68-54.12-27.68c-13.89 0-27.79 4.281-39.51 12.8L307.8 159.7C262.2 192.8 220.4 230.9 183.4 273.4c-24.22 27.88-59.18 63.99-103.5 99.63l56.34 77.52c53.79-35.39 99.15-55.3 127.1-67.27c51.88-22 101.3-49.87 146.9-82.1l202.3-146.7C630.5 140.4 640 120 640 99.38z"], + "basket-shopping": [576, 512, ["shopping-basket"], "f291", "M171.7 191.1H404.3L322.7 35.07C316.6 23.31 321.2 8.821 332.9 2.706C344.7-3.409 359.2 1.167 365.3 12.93L458.4 191.1H544C561.7 191.1 576 206.3 576 223.1C576 241.7 561.7 255.1 544 255.1L492.1 463.5C484.1 492 459.4 512 430 512H145.1C116.6 512 91 492 83.88 463.5L32 255.1C14.33 255.1 0 241.7 0 223.1C0 206.3 14.33 191.1 32 191.1H117.6L210.7 12.93C216.8 1.167 231.3-3.409 243.1 2.706C254.8 8.821 259.4 23.31 253.3 35.07L171.7 191.1zM191.1 303.1C191.1 295.1 184.8 287.1 175.1 287.1C167.2 287.1 159.1 295.1 159.1 303.1V399.1C159.1 408.8 167.2 415.1 175.1 415.1C184.8 415.1 191.1 408.8 191.1 399.1V303.1zM271.1 303.1V399.1C271.1 408.8 279.2 415.1 287.1 415.1C296.8 415.1 304 408.8 304 399.1V303.1C304 295.1 296.8 287.1 287.1 287.1C279.2 287.1 271.1 295.1 271.1 303.1zM416 303.1C416 295.1 408.8 287.1 400 287.1C391.2 287.1 384 295.1 384 303.1V399.1C384 408.8 391.2 415.1 400 415.1C408.8 415.1 416 408.8 416 399.1V303.1z"], + "basketball": [512, 512, [127936, "basketball-ball"], "f434", "M148.7 171.3L64.21 86.83c-28.39 32.16-48.9 71.38-58.3 114.8C19.41 205.4 33.34 208 48 208C86.34 208 121.1 193.9 148.7 171.3zM194.5 171.9L256 233.4l169.2-169.2C380 24.37 320.9 0 256 0C248.6 0 241.2 .4922 233.1 1.113C237.8 16.15 240 31.8 240 48C240 95.19 222.8 138.4 194.5 171.9zM208 48c0-14.66-2.623-28.59-6.334-42.09C158.2 15.31 118.1 35.82 86.83 64.21l84.48 84.48C193.9 121.1 208 86.34 208 48zM171.9 194.5C138.4 222.8 95.19 240 48 240c-16.2 0-31.85-2.236-46.89-6.031C.4922 241.2 0 248.6 0 256c0 64.93 24.37 124 64.21 169.2L233.4 256L171.9 194.5zM317.5 340.1L256 278.6l-169.2 169.2C131.1 487.6 191.1 512 256 512c7.438 0 14.75-.4922 22.03-1.113C274.2 495.8 272 480.2 272 464C272 416.8 289.2 373.6 317.5 340.1zM363.3 340.7l84.48 84.48c28.39-32.16 48.9-71.38 58.3-114.8C492.6 306.6 478.7 304 464 304C425.7 304 390.9 318.1 363.3 340.7zM447.8 86.83L278.6 256l61.52 61.52C373.6 289.2 416.8 272 464 272c16.2 0 31.85 2.236 46.89 6.031C511.5 270.8 512 263.4 512 256C512 191.1 487.6 131.1 447.8 86.83zM304 464c0 14.66 2.623 28.59 6.334 42.09c43.46-9.4 82.67-29.91 114.8-58.3l-84.48-84.48C318.1 390.9 304 425.7 304 464z"], + "bath": [512, 512, [128705, "bathtub"], "f2cd", "M32 384c0 28.32 12.49 53.52 32 71.09V496C64 504.8 71.16 512 80 512h32C120.8 512 128 504.8 128 496v-15.1h256V496c0 8.836 7.164 16 16 16h32c8.836 0 16-7.164 16-16v-40.9c19.51-17.57 32-42.77 32-71.09V352H32V384zM496 256H96V77.25C95.97 66.45 111 60.23 118.6 67.88L132.4 81.66C123.6 108.6 129.4 134.5 144.2 153.2C137.9 159.5 137.8 169.8 144 176l11.31 11.31c6.248 6.248 16.38 6.248 22.63 0l105.4-105.4c6.248-6.248 6.248-16.38 0-22.63l-11.31-11.31c-6.248-6.248-16.38-6.248-22.63 0C230.7 33.26 204.7 27.55 177.7 36.41L163.9 22.64C149.5 8.25 129.6 0 109.3 0C66.66 0 32 34.66 32 77.25v178.8L16 256C7.164 256 0 263.2 0 272v32C0 312.8 7.164 320 16 320h480c8.836 0 16-7.164 16-16v-32C512 263.2 504.8 256 496 256z"], + "battery-empty": [576, 512, ["battery-0"], "f244", "M464 96C508.2 96 544 131.8 544 176V192C561.7 192 576 206.3 576 224V288C576 305.7 561.7 320 544 320V336C544 380.2 508.2 416 464 416H80C35.82 416 0 380.2 0 336V176C0 131.8 35.82 96 80 96H464zM64 336C64 344.8 71.16 352 80 352H464C472.8 352 480 344.8 480 336V176C480 167.2 472.8 160 464 160H80C71.16 160 64 167.2 64 176V336z"], + "battery-full": [576, 512, [128267, "battery", "battery-5"], "f240", "M448 320H96V192H448V320zM0 176C0 131.8 35.82 96 80 96H464C508.2 96 544 131.8 544 176V192C561.7 192 576 206.3 576 224V288C576 305.7 561.7 320 544 320V336C544 380.2 508.2 416 464 416H80C35.82 416 0 380.2 0 336V176zM80 160C71.16 160 64 167.2 64 176V336C64 344.8 71.16 352 80 352H464C472.8 352 480 344.8 480 336V176C480 167.2 472.8 160 464 160H80z"], + "battery-half": [576, 512, ["battery-3"], "f242", "M288 320H96V192H288V320zM0 176C0 131.8 35.82 96 80 96H464C508.2 96 544 131.8 544 176V192C561.7 192 576 206.3 576 224V288C576 305.7 561.7 320 544 320V336C544 380.2 508.2 416 464 416H80C35.82 416 0 380.2 0 336V176zM80 160C71.16 160 64 167.2 64 176V336C64 344.8 71.16 352 80 352H464C472.8 352 480 344.8 480 336V176C480 167.2 472.8 160 464 160H80z"], + "battery-quarter": [576, 512, ["battery-2"], "f243", "M192 320H96V192H192V320zM0 176C0 131.8 35.82 96 80 96H464C508.2 96 544 131.8 544 176V192C561.7 192 576 206.3 576 224V288C576 305.7 561.7 320 544 320V336C544 380.2 508.2 416 464 416H80C35.82 416 0 380.2 0 336V176zM80 160C71.16 160 64 167.2 64 176V336C64 344.8 71.16 352 80 352H464C472.8 352 480 344.8 480 336V176C480 167.2 472.8 160 464 160H80z"], + "battery-three-quarters": [576, 512, ["battery-4"], "f241", "M352 320H96V192H352V320zM0 176C0 131.8 35.82 96 80 96H464C508.2 96 544 131.8 544 176V192C561.7 192 576 206.3 576 224V288C576 305.7 561.7 320 544 320V336C544 380.2 508.2 416 464 416H80C35.82 416 0 380.2 0 336V176zM80 160C71.16 160 64 167.2 64 176V336C64 344.8 71.16 352 80 352H464C472.8 352 480 344.8 480 336V176C480 167.2 472.8 160 464 160H80z"], + "bed": [640, 512, [128716], "f236", "M32 32C49.67 32 64 46.33 64 64V320H288V160C288 142.3 302.3 128 320 128H544C597 128 640 170.1 640 224V448C640 465.7 625.7 480 608 480C590.3 480 576 465.7 576 448V416H64V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V64C0 46.33 14.33 32 32 32zM96 208C96 163.8 131.8 128 176 128C220.2 128 256 163.8 256 208C256 252.2 220.2 288 176 288C131.8 288 96 252.2 96 208z"], + "bed-pulse": [640, 512, ["procedures"], "f487", "M524 64H616C629.3 64 640 74.75 640 88C640 101.3 629.3 112 616 112H512C504.4 112 497.3 108.4 492.8 102.4L468.7 70.31L421.7 170.2C418 178.1 410.4 183.3 401.8 183.9C393.1 184.6 384.8 180.5 380 173.3L339.2 112H216C202.7 112 192 101.3 192 88C192 74.75 202.7 64 216 64H352C360 64 367.5 68.01 371.1 74.69L396.4 111.3L442.3 13.78C445.9 6.163 453.2 .9806 461.6 .1246C469.9-.7314 478.1 2.865 483.2 9.6L524 64zM320 160H332.7L353.4 191.1C364.6 207.9 384 217.3 404.1 215.8C424.3 214.4 442.1 202.1 450.7 183.8L461.9 160H544C597 160 640 202.1 640 256V480C640 497.7 625.7 512 608 512C590.3 512 576 497.7 576 480V448H64V480C64 497.7 49.67 512 32 512C14.33 512 0 497.7 0 480V96C0 78.33 14.33 64 32 64C49.67 64 64 78.33 64 96V352H288V192C288 174.3 302.3 160 320 160zM96 240C96 195.8 131.8 160 176 160C220.2 160 256 195.8 256 240C256 284.2 220.2 320 176 320C131.8 320 96 284.2 96 240z"], + "beer-mug-empty": [512, 512, ["beer"], "f0fc", "M432 96H384V64c0-17.67-14.33-32-32-32H64C46.33 32 32 46.33 32 64v352c0 35.35 28.65 64 64 64h224c35.35 0 64-28.65 64-64v-32.08l80.66-35.94C493.5 335.1 512 306.5 512 275V176C512 131.8 476.2 96 432 96zM160 368C160 376.9 152.9 384 144 384S128 376.9 128 368v-224C128 135.1 135.1 128 144 128S160 135.1 160 144V368zM224 368C224 376.9 216.9 384 208 384S192 376.9 192 368v-224C192 135.1 199.1 128 208 128S224 135.1 224 144V368zM288 368c0 8.875-7.125 16-16 16S256 376.9 256 368v-224C256 135.1 263.1 128 272 128S288 135.1 288 144V368zM448 275c0 6.25-3.75 12-9.5 14.62L384 313.9V160h48C440.9 160 448 167.1 448 176V275z"], + "bell": [448, 512, [61602, 128276], "f0f3", "M256 32V51.2C329 66.03 384 130.6 384 208V226.8C384 273.9 401.3 319.2 432.5 354.4L439.9 362.7C448.3 372.2 450.4 385.6 445.2 397.1C440 408.6 428.6 416 416 416H32C19.4 416 7.971 408.6 2.809 397.1C-2.353 385.6-.2883 372.2 8.084 362.7L15.5 354.4C46.74 319.2 64 273.9 64 226.8V208C64 130.6 118.1 66.03 192 51.2V32C192 14.33 206.3 0 224 0C241.7 0 256 14.33 256 32H256zM224 512C207 512 190.7 505.3 178.7 493.3C166.7 481.3 160 464.1 160 448H288C288 464.1 281.3 481.3 269.3 493.3C257.3 505.3 240.1 512 224 512z"], + "bell-concierge": [512, 512, [128718, "concierge-bell"], "f562", "M280 145.3V112h16C309.3 112 320 101.3 320 88S309.3 64 296 64H215.1C202.7 64 192 74.75 192 87.1S202.7 112 215.1 112H232v33.32C119.6 157.3 32 252.4 32 368h448C480 252.4 392.4 157.3 280 145.3zM488 400h-464C10.75 400 0 410.7 0 423.1C0 437.3 10.75 448 23.1 448h464c13.25 0 24-10.75 24-23.1C512 410.7 501.3 400 488 400z"], + "bell-slash": [640, 512, [61943, 128277], "f1f6", "M186 120.5C209 85.38 245.4 59.84 288 51.2V32C288 14.33 302.3 .0003 320 .0003C337.7 .0003 352 14.33 352 32V51.2C425 66.03 480 130.6 480 208V226.8C480 273.9 497.3 319.2 528.5 354.4L535.9 362.7C544.3 372.2 546.4 385.6 541.2 397.1C540.1 397.5 540.8 397.1 540.6 398.4L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L186 120.5zM160 226.8V222.1L406.2 416H128C115.4 416 103.1 408.6 98.81 397.1C93.65 385.6 95.71 372.2 104.1 362.7L111.5 354.4C142.7 319.2 160 273.9 160 226.8V226.8zM320 512C303 512 286.7 505.3 274.7 493.3C262.7 481.3 256 464.1 256 448H384C384 464.1 377.3 481.3 365.3 493.3C353.3 505.3 336.1 512 320 512z"], + "bezier-curve": [640, 512, [], "f55b", "M352 32C378.5 32 400 53.49 400 80V84H518.4C528.8 62.69 550.7 48 576 48C611.3 48 640 76.65 640 112C640 147.3 611.3 176 576 176C550.7 176 528.8 161.3 518.4 140H451.5C510.4 179.6 550.4 244.1 555.5 320H560C586.5 320 608 341.5 608 368V432C608 458.5 586.5 480 560 480H496C469.5 480 448 458.5 448 432V368C448 341.5 469.5 320 496 320H499.3C493.4 253 450.8 196.6 391.8 170.9C383.1 183.6 368.6 192 352 192H288C271.4 192 256.9 183.6 248.2 170.9C189.2 196.6 146.6 253 140.7 320H144C170.5 320 192 341.5 192 368V432C192 458.5 170.5 480 144 480H80C53.49 480 32 458.5 32 432V368C32 341.5 53.49 320 80 320H84.53C89.56 244.1 129.6 179.6 188.5 140H121.6C111.2 161.3 89.3 176 64 176C28.65 176 0 147.3 0 112C0 76.65 28.65 48 64 48C89.3 48 111.2 62.69 121.6 84H240V80C240 53.49 261.5 32 288 32H352zM296 136H344V88H296V136zM88 376V424H136V376H88zM552 424V376H504V424H552z"], + "bicycle": [640, 512, [128690], "f206", "M347.2 32C358.1 32 369.8 38.44 375.4 48.78L473.3 229.1C485.5 226.1 498.5 224 512 224C582.7 224 640 281.3 640 352C640 422.7 582.7 480 512 480C441.3 480 384 422.7 384 352C384 311.1 402.4 276.3 431.1 252.8L409.4 212.7L324.7 356.2C320.3 363.5 312.5 368 304 368H255C247.1 431.1 193.3 480 128 480C57.31 480 0 422.7 0 352C0 281.3 57.31 224 128 224C138.7 224 149.2 225.3 159.2 227.8L185.8 174.7L163.7 144H120C106.7 144 96 133.3 96 120C96 106.7 106.7 96 120 96H176C183.7 96 190.1 99.71 195.5 105.1L222.9 144H372.3L337.7 80H311.1C298.7 80 287.1 69.25 287.1 56C287.1 42.75 298.7 32 311.1 32H347.2zM440 352C440 391.8 472.2 424 512 424C551.8 424 584 391.8 584 352C584 312.2 551.8 280 512 280C508.2 280 504.5 280.3 500.8 280.9L533.1 340.6C539.4 352.2 535.1 366.8 523.4 373.1C511.8 379.4 497.2 375.1 490.9 363.4L458.6 303.7C447 316.5 440 333.4 440 352V352zM108.8 328.6L133.1 280.2C131.4 280.1 129.7 280 127.1 280C88.24 280 55.1 312.2 55.1 352C55.1 391.8 88.24 424 127.1 424C162.3 424 190.9 400.1 198.2 368H133.2C112.1 368 99.81 346.7 108.8 328.6H108.8zM290.3 320L290.4 319.9L217.5 218.7L166.8 320H290.3zM257.4 192L317 274.8L365.9 192H257.4z"], + "binoculars": [512, 512, [], "f1e5", "M416 48C416 39.13 408.9 32 400 32h-64C327.1 32 320 39.13 320 48V96h96.04L416 48zM63.88 160.1C61.34 253.9 3.5 274.3 0 404V448c0 17.6 14.4 32 32 32h128c17.6 0 32-14.4 32-32V128H95.88C78.26 128 64.35 142.5 63.88 160.1zM448.1 160.1C447.6 142.5 433.7 128 416.1 128H320v320c0 17.6 14.4 32 32 32h128c17.6 0 32-14.4 32-32v-44C508.5 274.3 450.7 253.9 448.1 160.1zM224 288h64V128H224V288zM176 32h-64C103.1 32 96 39.13 96 48L95.96 96H192V48C192 39.13 184.9 32 176 32z"], + "biohazard": [576, 512, [9763], "f780", "M575.5 283.5c-13.13-39.11-39.5-71.98-74.13-92.35c-17.5-10.37-36.25-16.62-55.25-19.87c6-17.75 10-36.49 10-56.24c0-40.99-14.5-80.73-41-112.2c-2.5-3-6.625-3.623-10-1.75c-3.25 1.875-4.75 5.998-3.625 9.748c4.5 13.75 6.625 26.24 6.625 38.49c0 67.73-53.76 122.8-120 122.8s-120-55.11-120-122.8c0-12.12 2.25-24.74 6.625-38.49c1.125-3.75-.375-7.873-3.625-9.748c-3.375-1.873-7.502-1.25-10 1.75C134.7 34.3 120.1 74.04 120.1 115c0 19.75 3.875 38.49 10 56.24C111.2 174.5 92.32 180.8 74.82 191.1c-34.63 20.49-61.01 53.24-74.38 92.35c-1.25 3.75 .25 7.748 3.5 9.748c3.375 2 7.5 1.375 10-1.5c9.377-10.87 19-19.12 29.25-25.12c57.25-33.87 130.8-13.75 163.9 44.99c33.13 58.61 13.38 133.1-43.88 167.8c-10.25 6.123-22 10.37-35.88 13.37c-3.627 .875-6.377 4.25-6.377 8.123c.125 4 2.75 7.248 6.502 7.998c39.75 7.748 80.63 .7495 115.3-19.74c18-10.5 32.88-24.49 45.25-39.99c12.38 15.5 27.38 29.49 45.38 39.99c34.5 20.49 75.51 27.49 115.1 19.74c3.875-.75 6.375-3.998 6.5-7.998c0-3.873-2.625-7.248-6.375-8.123c-13.88-2.873-25.63-7.248-35.75-13.37c-57.38-33.87-77.01-109.2-44-167.8c33.13-58.73 106.6-78.85 164-44.99c10.12 6.123 19.75 14.25 29.13 25.12c2.5 2.875 6.752 3.5 10 1.5C575.4 291.2 576.9 287.2 575.5 283.5zM287.1 320.1c-26.5 0-48-21.49-48-47.99c0-26.49 21.5-47.99 48-47.99c26.5 0 48.01 21.49 48.01 47.99C335.1 298.6 314.5 320.1 287.1 320.1zM385 377.6c1.152 22.77 10.74 44.63 27.22 60.92c47.45-35.44 79.13-90.58 83.1-153.4c-22.58-6.173-45.69-2.743-65.57 8.76C424.7 326.9 408.5 355.1 385 377.6zM253.3 132.6c26.22-6.551 45.37-6.024 69.52 .0254c21.93-9.777 39.07-28.55 47.48-51.75C345 69.98 317.3 63.94 288.1 63.94c-29.18 0-56.96 5.986-82.16 16.84C214.3 103.1 231.4 122.8 253.3 132.6zM163.8 438.5c16.46-16.26 26.03-38.19 27.14-61.01c-23.49-21.59-39.59-50.67-44.71-83.6C126.9 282.7 103.8 278.8 80.67 285.1C84.64 347.9 116.3 403.1 163.8 438.5z"], + "bitcoin-sign": [320, 512, [], "e0b4", "M48 32C48 14.33 62.33 0 80 0C97.67 0 112 14.33 112 32V64H144V32C144 14.33 158.3 0 176 0C193.7 0 208 14.33 208 32V64C208 65.54 207.9 67.06 207.7 68.54C254.1 82.21 288 125.1 288 176C288 200.2 280.3 222.6 267.3 240.9C298.9 260.7 320 295.9 320 336C320 397.9 269.9 448 208 448V480C208 497.7 193.7 512 176 512C158.3 512 144 497.7 144 480V448H112V480C112 497.7 97.67 512 80 512C62.33 512 48 497.7 48 480V448H41.74C18.69 448 0 429.3 0 406.3V101.6C0 80.82 16.82 64 37.57 64H48V32zM176 224C202.5 224 224 202.5 224 176C224 149.5 202.5 128 176 128H64V224H176zM64 288V384H208C234.5 384 256 362.5 256 336C256 309.5 234.5 288 208 288H64z"], + "blender": [512, 512, [], "f517", "M336 64h158.5L512 0H48C21.49 0 0 21.49 0 48v160C0 234.5 21.49 256 48 256h103.3L160 352h256l17.49-64H336C327.2 288 320 280.8 320 272S327.2 256 336 256h106.1l17.49-64H336C327.2 192 320 184.8 320 176S327.2 160 336 160h132.4l17.49-64H336C327.2 96 320 88.8 320 80S327.2 64 336 64zM64 192V64h69.88L145.5 192H64zM416 384H160c-35.38 0-64 28.62-64 64l-.0001 32c0 17.62 14.38 32 32 32h320c17.62 0 32-14.38 32-32l.0003-32C480 412.6 451.4 384 416 384zM288 480c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S305.6 480 288 480z"], + "blender-phone": [576, 512, [], "f6b6", "M158.7 334.1L132.1 271.7C130.2 264.1 123.2 260.7 115.7 261.5l-45 4.374c-17.25-46.87-17.63-99.74 0-147.6l45 4.374C123.2 123.4 130.2 119.1 132.1 112.4l25.75-63.25C161.9 41.76 158.1 33.26 152.1 29.01L112.9 4.887C98.49-3.863 80.12-.4886 68.99 12.01C-23.64 115.6-23.01 271.5 70.99 374.5c9.875 10.75 29.13 12.5 41.75 4.75l39.38-24.12C158.1 350.9 161.7 342.4 158.7 334.1zM479.1 384H224c-35.38 0-63.1 28.62-63.1 63.1l-.0052 32c0 17.62 14.37 31.1 31.1 31.1L511.1 512c17.63 0 32-14.38 32-31.1l.0019-31.1C543.1 412.6 515.4 384 479.1 384zM352 480c-17.63 0-31.1-14.38-31.1-31.1c0-17.62 14.37-31.1 31.1-31.1s31.1 14.38 31.1 31.1C384 465.6 369.6 480 352 480zM399.1 64h158.5L576 .008L191.1 .006l-.0023 351.1h288l17.49-64h-97.49c-8.801 0-16-7.199-16-15.1c0-8.799 7.199-15.1 16-15.1h106.1l17.49-63.1h-123.6c-8.801 0-16-7.199-16-15.1c0-8.799 7.199-15.1 16-15.1h132.4l17.49-63.1h-149.9c-8.801 0-16-7.199-16-15.1C383.1 71.2 391.2 64 399.1 64z"], + "blog": [512, 512, [], "f781", "M217.6 96.1c-12.95-.625-24.66 9.156-25.52 22.37C191.2 131.7 201.2 143.1 214.4 143.1c79.53 5.188 148.4 74.09 153.6 153.6c.8281 12.69 11.39 22.43 23.94 22.43c.5156 0 1.047-.0313 1.578-.0625c13.22-.8438 23.25-12.28 22.39-25.5C409.3 191.8 320.3 102.8 217.6 96.1zM224 0C206.3 0 192 14.31 192 32s14.33 32 32 32c123.5 0 224 100.5 224 224c0 17.69 14.33 32 32 32s32-14.31 32-32C512 129.2 382.8 0 224 0zM172.3 226.8C157.7 223.9 144 235.8 144 250.6v50.37c0 10.25 7.127 18.37 16.75 21.1c18.13 6.75 31.26 24.38 31.26 44.1c0 26.5-21.5 47.1-48.01 47.1c-26.5 0-48.01-21.5-48.01-47.1V120c0-13.25-10.75-23.1-24.01-23.1l-48.01 .0076C10.75 96.02 0 106.8 0 120v247.1c0 89.5 82.14 160.2 175 140.7c54.38-11.5 98.27-55.5 109.8-109.7C302.2 316.1 247.8 241.8 172.3 226.8z"], + "bold": [384, 512, [], "f032", "M321.1 242.4C340.1 220.1 352 191.6 352 160c0-70.59-57.42-128-128-128L32 32.01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128C384 305.3 358.6 264.8 321.1 242.4zM112 96.01H224c35.3 0 64 28.72 64 64s-28.7 64-64 64H112V96.01zM256 416H112v-128H256c35.3 0 64 28.71 64 63.1S291.3 416 256 416z"], + "bolt": [384, 512, [9889, "zap"], "f0e7", "M240.5 224H352C365.3 224 377.3 232.3 381.1 244.7C386.6 257.2 383.1 271.3 373.1 280.1L117.1 504.1C105.8 513.9 89.27 514.7 77.19 505.9C65.1 497.1 60.7 481.1 66.59 467.4L143.5 288H31.1C18.67 288 6.733 279.7 2.044 267.3C-2.645 254.8 .8944 240.7 10.93 231.9L266.9 7.918C278.2-1.92 294.7-2.669 306.8 6.114C318.9 14.9 323.3 30.87 317.4 44.61L240.5 224z"], + "bolt-lightning": [384, 512, [], "e0b7", "M381.2 172.8C377.1 164.9 368.9 160 360 160h-156.6l50.84-127.1c2.969-7.375 2.062-15.78-2.406-22.38S239.1 0 232 0h-176C43.97 0 33.81 8.906 32.22 20.84l-32 240C-.7179 267.7 1.376 274.6 5.938 279.8C10.5 285 17.09 288 24 288h146.3l-41.78 194.1c-2.406 11.22 3.469 22.56 14 27.09C145.6 511.4 148.8 512 152 512c7.719 0 15.22-3.75 19.81-10.44l208-304C384.8 190.2 385.4 180.7 381.2 172.8z"], + "bomb": [512, 512, [128163], "f1e2", "M459.1 52.39L504.8 69.22C509 70.78 512 75.12 512 79.67C512 84.15 508.1 88.38 504.8 89.83L459.1 106.7L442.6 152.5C441.1 156.9 436.7 160 432.1 160C427.5 160 423.2 156.9 421.7 152.5L404.9 106.7L359.2 89.83C355 88.38 352 84.15 352 79.67C351.1 75.12 354.1 70.78 359.2 69.22L405.2 52.39L421.7 6.548C423.6 2.623 427.8 0 432.1 0C436.5 0 440.7 2.623 442.6 6.548L459.1 52.39zM406.6 185.4C419.1 197.9 419.1 218.1 406.6 230.6L403.8 233.5C411.7 255.5 416 279.3 416 303.1C416 418.9 322.9 512 208 512C93.12 512 0 418.9 0 303.1C0 189.1 93.12 95.1 208 95.1C232.7 95.1 256.5 100.3 278.5 108.2L281.4 105.4C293.9 92.88 314.1 92.88 326.6 105.4L406.6 185.4zM207.1 192C216.8 192 223.1 184.8 223.1 176C223.1 167.2 216.8 160 207.1 160H199.1C124.9 160 63.1 220.9 63.1 296V304C63.1 312.8 71.16 320 79.1 320C88.84 320 95.1 312.8 95.1 304V296C95.1 238.6 142.6 192 199.1 192H207.1z"], + "bone": [576, 512, [129460], "f5d7", "M534.9 267.5C560.1 280 576 305.8 576 334v4.387c0 35.55-23.49 68.35-58.24 75.88c-38.18 8.264-74.96-13.73-86.76-49.14c-.0352-.1035-.0684-.207-.1035-.3125C425.3 347.7 409.6 336 391.6 336H184.4c-17.89 0-33.63 11.57-39.23 28.56L145 365.1c-11.8 35.41-48.58 57.4-86.76 49.14C23.49 406.7 0 373.9 0 338.4v-4.387C0 305.8 15.88 280 41.13 267.5c9.375-4.75 9.375-18.25 0-23C15.88 232 0 206.3 0 178V173.6c0-35.55 23.49-68.35 58.24-75.88c38.18-8.264 74.99 13.82 86.79 49.23C150.7 164.1 166.4 176 184.4 176h207.2c17.89 0 33.63-11.57 39.23-28.56L431 146.9c11.8-35.41 48.58-57.4 86.76-49.14C552.5 105.3 576 138.1 576 173.6v4.387C576 206.3 560.1 232 534.9 244.5C525.5 249.3 525.5 262.8 534.9 267.5z"], + "bong": [512, 512, [], "f55c", "M334.5 512c23.12 0 44.38-12.62 56-32.63C406.8 451.2 416 418.8 416 384c0-36.13-10.11-69.75-27.49-98.63l43.5-43.37l9.376 9.375c6.25 6.25 16.38 6.25 22.63 0L475.3 240c6.25-6.25 6.25-16.38 0-22.62l-52.63-52.75c-6.25-6.25-16.38-6.25-22.63 0L388.6 176c-6.25 6.25-6.25 16.38 0 22.62L398 208l-39.38 39.38c-11.5-11.38-24.51-21.25-38.63-29.5l.0067-154.1h16c8.75 0 16-7.25 16-16L352 16.01C352 7.14 344.9 0 336 0L111.1 .1667c-8.75 0-15.99 7.11-15.99 15.99L96 48c0 8.875 7.126 16 16 16h16L128 217.9C70.63 251.1 32 313 32 384c0 34.75 9.252 67.25 25.5 95.38C69.13 499.4 90.38 512 113.5 512H334.5zM152 259.4l23.97-13.87V64.03L272 63.75l.0168 181.8l23.97 13.87C320.7 273.8 340 295.1 352.5 320H95.51C108 295.1 127.3 273.8 152 259.4z"], + "book": [448, 512, [128212], "f02d", "M448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM143.1 128h192C344.8 128 352 135.2 352 144C352 152.8 344.8 160 336 160H143.1C135.2 160 128 152.8 128 144C128 135.2 135.2 128 143.1 128zM143.1 192h192C344.8 192 352 199.2 352 208C352 216.8 344.8 224 336 224H143.1C135.2 224 128 216.8 128 208C128 199.2 135.2 192 143.1 192zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448z"], + "book-atlas": [448, 512, ["atlas"], "f558", "M240 97.25C232.3 104.8 219.3 131.8 216.6 176h46.88C260.8 131.8 247.8 104.8 240 97.25zM334.4 176c-5.25-31.25-25.62-57.13-53.25-70.38C288.8 124.6 293.8 149 295.3 176H334.4zM334.4 208h-39.13c-1.5 27-6.5 51.38-14.12 70.38C308.8 265.1 329.1 239.3 334.4 208zM263.4 208H216.5C219.3 252.3 232.3 279.3 240 286.8C247.8 279.3 260.8 252.3 263.4 208zM198.9 105.6C171.3 118.9 150.9 144.8 145.6 176h39.13C186.3 149 191.3 124.6 198.9 105.6zM448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-32c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM240 64c70.75 0 128 57.25 128 128s-57.25 128-128 128s-128-57.25-128-128S169.3 64 240 64zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448zM198.9 278.4C191.3 259.4 186.3 235 184.8 208H145.6C150.9 239.3 171.3 265.1 198.9 278.4z"], + "book-bible": [448, 512, ["bible"], "f647", "M448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM144 144c0-8.875 7.125-15.1 16-15.1L208 128V80c0-8.875 7.125-15.1 16-15.1l32 .0009c8.875 0 16 7.12 16 15.1V128L320 128c8.875 0 16 7.121 16 15.1v32c0 8.875-7.125 16-16 16L272 192v112c0 8.875-7.125 16-16 16l-32-.0002c-8.875 0-16-7.127-16-16V192L160 192c-8.875 0-16-7.127-16-16V144zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448z"], + "book-bookmark": [448, 512, [], "e0bb", "M448 336v-288C448 21.49 426.5 0 400 0H352v191.1c0 13.41-15.52 20.88-25.1 12.49L272 160L217.1 204.5C207.5 212.8 192 205.4 192 191.1V0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-32c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448z"], + "book-journal-whills": [448, 512, ["journal-whills"], "f66a", "M448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM133.1 160.4l21.25 21.25c3.125 3.125 8.125 3.125 11.25 0s3.125-8.125 0-11.25l-26.38-26.5c10-20.75 26.25-38 46.38-49.25c-17 27.12-11 62.75 14 82.63C185.5 192 180.5 213.1 186.5 232.5c5.875 19.38 22 34.13 41.88 38.25l1.375-32.75L219.4 245.1C218.8 245.5 217.9 245.8 217.1 245.8c-1 0-2-.375-2.75-1c-.75-.875-1.25-1.875-1.25-3c0-.625 .25-1.375 .5-2L222.3 225.5l-18-3.75c-1.75-.375-3.125-2.125-3.125-4s1.375-3.5 3.125-3.875l18-3.75L213.6 195.9C212.8 194.3 213 192.1 214.4 190.9s3.5-1.5 5-.375l12 8.125L236 87.88C236.1 85.63 237.9 84 240 84s3.875 1.625 4 3.875l4.75 112.3l14.12-9.625c.625-.5 1.5-.625 2.25-.75c1.5 0 2.75 .75 3.5 2s.625 2.875-.125 4.125L260 210.1l17.1 3.75c1.75 .375 3.125 2 3.125 3.875s-1.375 3.625-3.125 4L260 225.4l8.5 14.38c.75 1.25 .875 2.75 .125 4s-2 2-3.5 2c-.75 0-1.625-.25-2.25-.625L250.3 236.5l1.375 34.25c19.88-4.125 36-18.88 41.88-38.25c6-19.38 1-40.63-13.12-55.25c25-19.88 31-55.5 14-82.63c20.25 11.25 36.38 28.5 46.38 49.25l-26.38 26.5c-3.125 3.125-3.125 8.125 0 11.25s8.125 3.125 11.25 0l21.25-21.25C349.9 170.5 352 181 352 192c0 .5-.125 1-.125 1.5l-37.13 32.5C313.1 227.6 312.1 229.8 312 232c.125 1.875 .7496 3.75 1.1 5.25C315.6 238.9 317.8 239.9 320 240c1.1 0 3.875-.7499 5.25-1.1l23.62-20.63C337.3 267 293.1 304 240 304S142.8 267 131.1 217.4l23.62 20.63C156.3 239.3 158.1 239.9 160 240c3.375 0 6.25-2.125 7.5-5.125c1.125-3.125 .25-6.75-2.25-8.875L128.1 193.5C128.1 193 128 192.5 128 192C128 181 130.1 170.5 133.1 160.4zM384 448H96c-17.67 0-32-14.33-32-32s14.33-32 32-32h288V448z"], + "book-medical": [448, 512, [], "f7e6", "M448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM128 166c0-8.838 7.164-16 16-16h53.1V96c0-8.838 7.164-16 16-16h52c8.836 0 16 7.162 16 16v54H336c8.836 0 16 7.162 16 16v52c0 8.836-7.164 16-16 16h-54V288c0 8.836-7.164 16-16 16h-52c-8.836 0-16-7.164-16-16V234H144c-8.836 0-16-7.164-16-16V166zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448z"], + "book-open": [576, 512, [128366, 128214], "f518", "M144.3 32.04C106.9 31.29 63.7 41.44 18.6 61.29c-11.42 5.026-18.6 16.67-18.6 29.15l0 357.6c0 11.55 11.99 19.55 22.45 14.65c126.3-59.14 219.8 11 223.8 14.01C249.1 478.9 252.5 480 256 480c12.4 0 16-11.38 16-15.98V80.04c0-5.203-2.531-10.08-6.781-13.08C263.3 65.58 216.7 33.35 144.3 32.04zM557.4 61.29c-45.11-19.79-88.48-29.61-125.7-29.26c-72.44 1.312-118.1 33.55-120.9 34.92C306.5 69.96 304 74.83 304 80.04v383.1C304 468.4 307.5 480 320 480c3.484 0 6.938-1.125 9.781-3.328c3.925-3.018 97.44-73.16 223.8-14c10.46 4.896 22.45-3.105 22.45-14.65l.0001-357.6C575.1 77.97 568.8 66.31 557.4 61.29z"], + "book-open-reader": [512, 512, ["book-reader"], "f5da", "M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"], + "book-quran": [448, 512, ["quran"], "f687", "M352 0H48C21.49 0 0 21.49 0 48v288c0 14.16 6.246 26.76 16 35.54v81.36C6.607 458.5 0 468.3 0 479.1C0 497.7 14.33 512 31.1 512h320c53.02 0 96-42.98 96-96V96C448 42.98 405 0 352 0zM324.8 170.4c3.006 .4297 4.295 4.154 2.004 6.301L306.2 196.9l4.869 28.5c.4297 2.434-1.576 4.439-3.725 4.439c-.5723 0-1.145-.1445-1.719-.4297L280 215.9l-25.63 13.46c-.5723 .2852-1.145 .4297-1.719 .4297c-2.146 0-4.152-2.006-3.723-4.439l4.869-28.5l-20.62-20.19c-2.291-2.146-1.002-5.871 2.006-6.301l28.64-4.152l12.89-25.92C277.3 138.9 278.7 138.2 280 138.2s2.721 .7168 3.295 2.148l12.89 25.92L324.8 170.4zM216 72c23.66 0 46.61 6.953 66.36 20.09c3.219 2.141 4.438 6.281 2.906 9.844c-1.547 3.547-5.453 5.562-9.172 4.594C268.8 104.8 262.2 104 256 104C207.5 104 168 143.5 168 192S207.5 280 256 280c6.234 0 12.81-.8281 20.09-2.531c3.719-.9687 7.625 1.047 9.172 4.594c1.531 3.562 .3125 7.703-2.906 9.844C262.6 305 239.7 312 216 312C149.8 312 96 258.2 96 192S149.8 72 216 72zM352 448H64v-64h288c17.67 0 32 14.33 32 32C384 433.7 369.7 448 352 448z"], + "book-skull": [448, 512, ["book-dead"], "f6b7", "M272 144C280.8 144 288 136.8 288 128s-7.25-16-16-16S256 119.3 256 128S263.3 144 272 144zM448 336v-288C448 21.49 426.5 0 400 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h320c17.67 0 32-14.33 32-31.1c0-11.72-6.607-21.52-16-27.1v-81.36C441.8 362.8 448 350.2 448 336zM240 64C284.3 64 320 92.75 320 128c0 20.88-12.75 39.25-32 50.88V192c0 8.75-7.25 16-16 16h-64C199.3 208 192 200.8 192 192V178.9C172.8 167.3 160 148.9 160 128C160 92.75 195.8 64 240 64zM121.7 238.7c-8.125-3.484-11.91-12.89-8.438-21.02c3.469-8.094 12.94-11.86 21-8.422L240 254.5l105.7-45.21c8.031-3.438 17.53 .3281 21 8.422c3.469 8.125-.3125 17.53-8.438 21.02l-77.58 33.18l77.58 33.18c8.125 3.484 11.91 12.89 8.438 21.02C364.1 332.2 358.2 335.8 352 335.8c-2.094 0-4.25-.4062-6.281-1.281L240 289.3l-105.7 45.21C132.3 335.4 130.1 335.8 128 335.8c-6.219 0-12.12-3.641-14.72-9.703C109.8 317.1 113.6 308.6 121.7 305.1l77.58-33.18L121.7 238.7zM384 448H96c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32h288V448zM208 144C216.8 144 224 136.8 224 128S216.8 112 208 112S192 119.3 192 128S199.3 144 208 144z"], + "book-tanakh": [448, 512, ["tanakh"], "f827", "M267.1 244.5h34.87l-17.37-29.12L267.1 244.5zM352 0H48C21.49 0 0 21.49 0 48v288c0 14.16 6.246 26.76 16 35.54v81.36C6.607 458.5 0 468.3 0 480C0 497.7 14.33 512 31.1 512h320c53.02 0 96-42.98 96-96V96C448 42.98 405 0 352 0zM89.38 125.6C93 119.3 99.63 115.4 106.9 115.5h56.38l27.5-46.25C194.4 63.25 201 59.5 208 59.5s13.5 3.625 17 9.625l27.75 46.38h56.38c7.25 0 13.88 3.875 17.38 10.12S330 139.5 326.3 145.8L298.6 192l27.75 46.38c3.75 6.125 3.75 13.88 .25 20c-3.625 6.375-10.25 10.25-17.5 10.25h-56.38l-27.5 46.13C221.6 320.8 215.1 324.5 208 324.5c-7 0-13.5-3.625-17-9.625L163.3 268.5H106.9c-7.125 0-13.88-3.875-17.38-10.12S86.13 244.5 89.75 238.3L117.4 192L89.63 145.6C85.88 139.5 85.88 131.8 89.38 125.6zM352 448H64v-64h288c17.67 0 32 14.33 32 32C384 433.7 369.7 448 352 448zM208 296.6l16.88-28.12H191.3L208 296.6zM113.1 244.5h34.88l-17.5-29.12L113.1 244.5zM301.1 139.5h-34.87l17.5 29.12L301.1 139.5zM148.9 139.5H113.1L131.5 168.6L148.9 139.5zM176.9 244.5h62.25L270.6 192l-31.5-52.63H176.9L145.4 192L176.9 244.5zM208 87.38L191.3 115.5h33.5L208 87.38z"], + "bookmark": [384, 512, [61591, 128278], "f02e", "M48 0H336C362.5 0 384 21.49 384 48V487.7C384 501.1 373.1 512 359.7 512C354.7 512 349.8 510.5 345.7 507.6L192 400L38.28 507.6C34.19 510.5 29.32 512 24.33 512C10.89 512 0 501.1 0 487.7V48C0 21.49 21.49 0 48 0z"], + "border-all": [448, 512, [], "f84c", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 96H256V224H384V96zM384 288H256V416H384V288zM192 224V96H64V224H192zM64 416H192V288H64V416z"], + "border-none": [448, 512, [], "f850", "M64 448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416C49.67 416 64 430.3 64 448zM128 480C110.3 480 96 465.7 96 448C96 430.3 110.3 416 128 416C145.7 416 160 430.3 160 448C160 465.7 145.7 480 128 480zM128 96C110.3 96 96 81.67 96 64C96 46.33 110.3 32 128 32C145.7 32 160 46.33 160 64C160 81.67 145.7 96 128 96zM160 256C160 273.7 145.7 288 128 288C110.3 288 96 273.7 96 256C96 238.3 110.3 224 128 224C145.7 224 160 238.3 160 256zM320 480C302.3 480 288 465.7 288 448C288 430.3 302.3 416 320 416C337.7 416 352 430.3 352 448C352 465.7 337.7 480 320 480zM352 64C352 81.67 337.7 96 320 96C302.3 96 288 81.67 288 64C288 46.33 302.3 32 320 32C337.7 32 352 46.33 352 64zM320 288C302.3 288 288 273.7 288 256C288 238.3 302.3 224 320 224C337.7 224 352 238.3 352 256C352 273.7 337.7 288 320 288zM256 448C256 465.7 241.7 480 224 480C206.3 480 192 465.7 192 448C192 430.3 206.3 416 224 416C241.7 416 256 430.3 256 448zM224 96C206.3 96 192 81.67 192 64C192 46.33 206.3 32 224 32C241.7 32 256 46.33 256 64C256 81.67 241.7 96 224 96zM256 256C256 273.7 241.7 288 224 288C206.3 288 192 273.7 192 256C192 238.3 206.3 224 224 224C241.7 224 256 238.3 256 256zM416 480C398.3 480 384 465.7 384 448C384 430.3 398.3 416 416 416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480zM416 96C398.3 96 384 81.67 384 64C384 46.33 398.3 32 416 32C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96zM64 64C64 81.67 49.67 96 32 96C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32C49.67 32 64 46.33 64 64zM416 288C398.3 288 384 273.7 384 256C384 238.3 398.3 224 416 224C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288zM64 256C64 273.7 49.67 288 32 288C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224C49.67 224 64 238.3 64 256zM224 384C206.3 384 192 369.7 192 352C192 334.3 206.3 320 224 320C241.7 320 256 334.3 256 352C256 369.7 241.7 384 224 384zM448 352C448 369.7 433.7 384 416 384C398.3 384 384 369.7 384 352C384 334.3 398.3 320 416 320C433.7 320 448 334.3 448 352zM32 384C14.33 384 0 369.7 0 352C0 334.3 14.33 320 32 320C49.67 320 64 334.3 64 352C64 369.7 49.67 384 32 384zM448 160C448 177.7 433.7 192 416 192C398.3 192 384 177.7 384 160C384 142.3 398.3 128 416 128C433.7 128 448 142.3 448 160zM32 192C14.33 192 0 177.7 0 160C0 142.3 14.33 128 32 128C49.67 128 64 142.3 64 160C64 177.7 49.67 192 32 192zM256 160C256 177.7 241.7 192 224 192C206.3 192 192 177.7 192 160C192 142.3 206.3 128 224 128C241.7 128 256 142.3 256 160z"], + "border-top-left": [448, 512, ["border-style"], "f853", "M0 112C0 67.82 35.82 32 80 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H80C71.16 96 64 103.2 64 112V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V112zM128 480C110.3 480 96 465.7 96 448C96 430.3 110.3 416 128 416C145.7 416 160 430.3 160 448C160 465.7 145.7 480 128 480zM320 480C302.3 480 288 465.7 288 448C288 430.3 302.3 416 320 416C337.7 416 352 430.3 352 448C352 465.7 337.7 480 320 480zM256 448C256 465.7 241.7 480 224 480C206.3 480 192 465.7 192 448C192 430.3 206.3 416 224 416C241.7 416 256 430.3 256 448zM416 480C398.3 480 384 465.7 384 448C384 430.3 398.3 416 416 416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480zM416 288C398.3 288 384 273.7 384 256C384 238.3 398.3 224 416 224C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288zM448 352C448 369.7 433.7 384 416 384C398.3 384 384 369.7 384 352C384 334.3 398.3 320 416 320C433.7 320 448 334.3 448 352zM416 192C398.3 192 384 177.7 384 160C384 142.3 398.3 128 416 128C433.7 128 448 142.3 448 160C448 177.7 433.7 192 416 192z"], + "bore-hole": [512, 512, [], "e4c3", "M256 0C273.7 0 288 14.33 288 32V296.6C307.1 307.6 320 328.3 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352C192 328.3 204.9 307.6 224 296.6V32C224 14.33 238.3 0 256 0zM160 128V352C160 405 202.1 448 256 448C309 448 352 405 352 352V128H464C490.5 128 512 149.5 512 176V464C512 490.5 490.5 512 464 512H48C21.49 512 0 490.5 0 464V176C0 149.5 21.49 128 48 128H160z"], + "bottle-droplet": [320, 512, [], "e4c4", "M224 0C237.3-.0003 248 10.74 248 23.1C248 37.25 237.3 47.1 224 48L216 48V140.9C258.6 161.6 288 205.4 288 256V448C288 483.3 259.3 512 224 512H96C60.65 512 32 483.3 32 448V256C32 205.4 61.37 161.6 104 140.9V48L96 48C82.75 48 72 37.26 72 24C71.1 10.75 82.74 .0045 95.1 .0042L224 0zM160 384C186.5 384 208 368 208 336C208 304 160 256 160 256C160 256 112 304 112 336C112 362.5 133.5 384 160 384z"], + "bottle-water": [320, 512, [], "e4c5", "M200 0C213.3 0 224 10.75 224 24V64H96V24C96 10.75 106.7 0 120 0H200zM32 151.7C32 136.1 41.04 121.9 55.19 115.3L79.6 103.8C90.58 98.67 102.6 96 114.7 96H205.3C217.4 96 229.4 98.67 240.4 103.8L264.8 115.3C278.1 121.9 288 136.1 288 151.7C288 166.1 280.5 178.7 269.1 185.8C280.6 194.6 288 208.4 288 223.1C288 240.7 279.5 255.4 266.5 263.1C279.5 272.6 288 287.3 288 303.1C288 320.7 279.5 335.4 266.5 344C279.5 352.6 288 367.3 288 384C288 400.7 279.5 415.4 266.5 424C279.5 432.6 288 447.3 288 464C288 490.5 266.5 512 240 512H80C53.49 512 32 490.5 32 464C32 447.3 40.52 432.6 53.46 424C40.52 415.4 32 400.7 32 384C32 367.3 40.52 352.6 53.46 344C40.52 335.4 32 320.7 32 303.1C32 287.3 40.52 272.6 53.46 263.1C40.52 255.4 32 240.7 32 223.1C32 208.4 39.4 194.6 50.87 185.8C39.53 178.7 32 166.1 32 151.7L32 151.7zM112 256H208C216.8 256 224 248.8 224 240C224 231.2 216.8 224 208 224H112C103.2 224 96 231.2 96 240C96 248.8 103.2 256 112 256zM112 352C103.2 352 96 359.2 96 368C96 376.8 103.2 384 112 384H208C216.8 384 224 376.8 224 368C224 359.2 216.8 352 208 352H112z"], + "bowl-food": [512, 512, [], "e4c6", "M64 128C64.53 128 65.07 128 65.6 128C73 91.49 105.3 64 144 64C158.1 64 172.1 68.1 184.9 75.25C198.2 49.55 225.1 32 256 32C286.9 32 313.8 49.56 327.1 75.25C339 68.1 353 64 368 64C406.7 64 438.1 91.49 446.4 128C446.9 128 447.5 128 448 128C483.3 128 512 156.7 512 192C512 203.7 508.9 214.6 503.4 224H8.563C3.118 214.6 .0013 203.7 .0013 192C.0013 156.7 28.66 128 64 128H64zM.001 283.4C.001 268.3 12.28 256 27.43 256H484.6C499.7 256 512 268.3 512 283.4C512 353.9 467.6 414.1 405.3 437.5L403.5 451.1C401.5 467.1 387.9 480 371.8 480H140.2C124.1 480 110.5 467.1 108.5 451.1L106.7 437.5C44.36 414.1 0 353.9 0 283.4H.001z"], + "bowl-rice": [512, 512, [], "e2eb", "M176 56C176 42.75 186.7 32 200 32H216C229.3 32 240 42.75 240 56C240 69.25 229.3 80 216 80H200C186.7 80 176 69.25 176 56zM216 104C229.3 104 240 114.7 240 128C240 141.3 229.3 152 216 152H200C186.7 152 176 141.3 176 128C176 114.7 186.7 104 200 104H216zM72 176C85.26 176 96 186.7 96 200C96 213.3 85.26 224 72 224H56C42.75 224 32 213.3 32 200C32 186.7 42.75 176 56 176H72zM.001 283.4C.001 268.3 12.28 256 27.43 256H484.6C499.7 256 512 268.3 512 283.4C512 353.9 467.6 414.1 405.3 437.5L403.5 451.1C401.5 467.1 387.9 480 371.8 480H140.2C124.1 480 110.5 467.1 108.5 451.1L106.7 437.5C44.36 414.1 0 353.9 0 283.4H.001zM224 200C224 186.7 234.7 176 248 176H264C277.3 176 288 186.7 288 200C288 213.3 277.3 224 264 224H248C234.7 224 224 213.3 224 200zM128 200C128 186.7 138.7 176 152 176H168C181.3 176 192 186.7 192 200C192 213.3 181.3 224 168 224H152C138.7 224 128 213.3 128 200zM120 104C133.3 104 144 114.7 144 128C144 141.3 133.3 152 120 152H104C90.75 152 80 141.3 80 128C80 114.7 90.75 104 104 104H120zM320 200C320 186.7 330.7 176 344 176H360C373.3 176 384 186.7 384 200C384 213.3 373.3 224 360 224H344C330.7 224 320 213.3 320 200zM312 104C325.3 104 336 114.7 336 128C336 141.3 325.3 152 312 152H296C282.7 152 272 141.3 272 128C272 114.7 282.7 104 296 104H312zM416 200C416 186.7 426.7 176 440 176H456C469.3 176 480 186.7 480 200C480 213.3 469.3 224 456 224H440C426.7 224 416 213.3 416 200zM408 104C421.3 104 432 114.7 432 128C432 141.3 421.3 152 408 152H392C378.7 152 368 141.3 368 128C368 114.7 378.7 104 392 104H408zM312 32C325.3 32 336 42.75 336 56C336 69.25 325.3 80 312 80H296C282.7 80 272 69.25 272 56C272 42.75 282.7 32 296 32H312z"], + "bowling-ball": [512, 512, [], "f436", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM144 208c-17.7 0-32-14.25-32-32s14.3-32 32-32s32 14.25 32 32S161.7 208 144 208zM240 80c17.66 0 31.95 14.25 31.95 32s-14.29 32-31.95 32s-32.05-14.25-32.05-32S222.4 80 240 80zM240 240c-17.7 0-32-14.25-32-32s14.3-32 32-32s32 14.25 32 32S257.7 240 240 240z"], + "box": [448, 512, [128230], "f466", "M50.73 58.53C58.86 42.27 75.48 32 93.67 32H208V160H0L50.73 58.53zM240 160V32H354.3C372.5 32 389.1 42.27 397.3 58.53L448 160H240zM448 416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V192H448V416z"], + "box-archive": [512, 512, ["archive"], "f187", "M32 432C32 458.5 53.49 480 80 480h352c26.51 0 48-21.49 48-48V160H32V432zM160 236C160 229.4 165.4 224 172 224h168C346.6 224 352 229.4 352 236v8C352 250.6 346.6 256 340 256h-168C165.4 256 160 250.6 160 244V236zM480 32H32C14.31 32 0 46.31 0 64v48C0 120.8 7.188 128 16 128h480C504.8 128 512 120.8 512 112V64C512 46.31 497.7 32 480 32z"], + "box-open": [640, 512, [], "f49e", "M75.23 33.4L320 63.1L564.8 33.4C571.5 32.56 578 36.06 581.1 42.12L622.8 125.5C631.7 143.4 622.2 165.1 602.9 170.6L439.6 217.3C425.7 221.2 410.8 215.4 403.4 202.1L320 63.1L236.6 202.1C229.2 215.4 214.3 221.2 200.4 217.3L37.07 170.6C17.81 165.1 8.283 143.4 17.24 125.5L58.94 42.12C61.97 36.06 68.5 32.56 75.23 33.4H75.23zM321.1 128L375.9 219.4C390.8 244.2 420.5 255.1 448.4 248L576 211.6V378.5C576 400.5 561 419.7 539.6 425.1L335.5 476.1C325.3 478.7 314.7 478.7 304.5 476.1L100.4 425.1C78.99 419.7 64 400.5 64 378.5V211.6L191.6 248C219.5 255.1 249.2 244.2 264.1 219.4L318.9 128H321.1z"], + "box-tissue": [512, 512, [], "e05b", "M384 288l64-192h-109.4C308.4 96 281.6 76.66 272 48C262.4 19.33 235.6 0 205.4 0H64l64 288H384zM0 480c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-64H0V480zM480 224h-40.94l-21.33 64H432C440.8 288 448 295.2 448 304S440.8 320 432 320h-352C71.16 320 64 312.8 64 304S71.16 288 80 288h15.22l-14.22-64H32C14.33 224 0 238.3 0 256v128h512V256C512 238.3 497.7 224 480 224z"], + "boxes-packing": [640, 512, [], "e4c7", "M256 48C256 21.49 277.5 0 304 0H592C618.5 0 640 21.49 640 48V464C640 490.5 618.5 512 592 512H381.3C383 506.1 384 501.6 384 496V253.3C402.6 246.7 416 228.9 416 208V176C416 149.5 394.5 128 368 128H256V48zM571.3 347.3C577.6 341.1 577.6 330.9 571.3 324.7L507.3 260.7C501.1 254.4 490.9 254.4 484.7 260.7L420.7 324.7C414.4 330.9 414.4 341.1 420.7 347.3C426.9 353.6 437.1 353.6 443.3 347.3L480 310.6V432C480 440.8 487.2 448 496 448C504.8 448 512 440.8 512 432V310.6L548.7 347.3C554.9 353.6 565.1 353.6 571.3 347.3H571.3zM0 176C0 167.2 7.164 160 16 160H368C376.8 160 384 167.2 384 176V208C384 216.8 376.8 224 368 224H16C7.164 224 0 216.8 0 208V176zM352 480C352 497.7 337.7 512 320 512H64C46.33 512 32 497.7 32 480V256H352V480zM144 320C135.2 320 128 327.2 128 336C128 344.8 135.2 352 144 352H240C248.8 352 256 344.8 256 336C256 327.2 248.8 320 240 320H144z"], + "boxes-stacked": [576, 512, [62625, "boxes", "boxes-alt"], "f468", "M160 48C160 21.49 181.5 0 208 0H256V80C256 88.84 263.2 96 272 96H304C312.8 96 320 88.84 320 80V0H368C394.5 0 416 21.49 416 48V176C416 202.5 394.5 224 368 224H208C181.5 224 160 202.5 160 176V48zM96 288V368C96 376.8 103.2 384 112 384H144C152.8 384 160 376.8 160 368V288H208C234.5 288 256 309.5 256 336V464C256 490.5 234.5 512 208 512H48C21.49 512 0 490.5 0 464V336C0 309.5 21.49 288 48 288H96zM416 288V368C416 376.8 423.2 384 432 384H464C472.8 384 480 376.8 480 368V288H528C554.5 288 576 309.5 576 336V464C576 490.5 554.5 512 528 512H368C341.5 512 320 490.5 320 464V336C320 309.5 341.5 288 368 288H416z"], + "braille": [640, 512, [], "f2a1", "M128 96C128 131.3 99.35 160 64 160C28.65 160 0 131.3 0 96C0 60.65 28.65 32 64 32C99.35 32 128 60.65 128 96zM160 256C160 220.7 188.7 192 224 192C259.3 192 288 220.7 288 256C288 291.3 259.3 320 224 320C188.7 320 160 291.3 160 256zM224 272C232.8 272 240 264.8 240 256C240 247.2 232.8 240 224 240C215.2 240 208 247.2 208 256C208 264.8 215.2 272 224 272zM128 416C128 451.3 99.35 480 64 480C28.65 480 0 451.3 0 416C0 380.7 28.65 352 64 352C99.35 352 128 380.7 128 416zM64 400C55.16 400 48 407.2 48 416C48 424.8 55.16 432 64 432C72.84 432 80 424.8 80 416C80 407.2 72.84 400 64 400zM288 416C288 451.3 259.3 480 224 480C188.7 480 160 451.3 160 416C160 380.7 188.7 352 224 352C259.3 352 288 380.7 288 416zM224 400C215.2 400 208 407.2 208 416C208 424.8 215.2 432 224 432C232.8 432 240 424.8 240 416C240 407.2 232.8 400 224 400zM0 256C0 220.7 28.65 192 64 192C99.35 192 128 220.7 128 256C128 291.3 99.35 320 64 320C28.65 320 0 291.3 0 256zM160 96C160 60.65 188.7 32 224 32C259.3 32 288 60.65 288 96C288 131.3 259.3 160 224 160C188.7 160 160 131.3 160 96zM480 96C480 131.3 451.3 160 416 160C380.7 160 352 131.3 352 96C352 60.65 380.7 32 416 32C451.3 32 480 60.65 480 96zM640 96C640 131.3 611.3 160 576 160C540.7 160 512 131.3 512 96C512 60.65 540.7 32 576 32C611.3 32 640 60.65 640 96zM576 80C567.2 80 560 87.16 560 96C560 104.8 567.2 112 576 112C584.8 112 592 104.8 592 96C592 87.16 584.8 80 576 80zM512 256C512 220.7 540.7 192 576 192C611.3 192 640 220.7 640 256C640 291.3 611.3 320 576 320C540.7 320 512 291.3 512 256zM576 272C584.8 272 592 264.8 592 256C592 247.2 584.8 240 576 240C567.2 240 560 247.2 560 256C560 264.8 567.2 272 576 272zM640 416C640 451.3 611.3 480 576 480C540.7 480 512 451.3 512 416C512 380.7 540.7 352 576 352C611.3 352 640 380.7 640 416zM576 400C567.2 400 560 407.2 560 416C560 424.8 567.2 432 576 432C584.8 432 592 424.8 592 416C592 407.2 584.8 400 576 400zM352 256C352 220.7 380.7 192 416 192C451.3 192 480 220.7 480 256C480 291.3 451.3 320 416 320C380.7 320 352 291.3 352 256zM416 272C424.8 272 432 264.8 432 256C432 247.2 424.8 240 416 240C407.2 240 400 247.2 400 256C400 264.8 407.2 272 416 272zM480 416C480 451.3 451.3 480 416 480C380.7 480 352 451.3 352 416C352 380.7 380.7 352 416 352C451.3 352 480 380.7 480 416zM416 400C407.2 400 400 407.2 400 416C400 424.8 407.2 432 416 432C424.8 432 432 424.8 432 416C432 407.2 424.8 400 416 400z"], + "brain": [512, 512, [129504], "f5dc", "M184 0C214.9 0 240 25.07 240 56V456C240 486.9 214.9 512 184 512C155.1 512 131.3 490.1 128.3 461.9C123.1 463.3 117.6 464 112 464C76.65 464 48 435.3 48 400C48 392.6 49.27 385.4 51.59 378.8C21.43 367.4 0 338.2 0 304C0 272.1 18.71 244.5 45.77 231.7C37.15 220.8 32 206.1 32 192C32 161.3 53.59 135.7 82.41 129.4C80.84 123.9 80 118 80 112C80 82.06 100.6 56.92 128.3 49.93C131.3 21.86 155.1 0 184 0zM383.7 49.93C411.4 56.92 432 82.06 432 112C432 118 431.2 123.9 429.6 129.4C458.4 135.7 480 161.3 480 192C480 206.1 474.9 220.8 466.2 231.7C493.3 244.5 512 272.1 512 304C512 338.2 490.6 367.4 460.4 378.8C462.7 385.4 464 392.6 464 400C464 435.3 435.3 464 400 464C394.4 464 388.9 463.3 383.7 461.9C380.7 490.1 356.9 512 328 512C297.1 512 272 486.9 272 456V56C272 25.07 297.1 0 328 0C356.9 0 380.7 21.86 383.7 49.93z"], + "brazilian-real-sign": [512, 512, [], "e46c", "M400 .0003C417.7 .0003 432 14.33 432 32V50.22C444.5 52.52 456.7 56.57 468.2 62.3L478.3 67.38C494.1 75.28 500.5 94.5 492.6 110.3C484.7 126.1 465.5 132.5 449.7 124.6L439.5 119.5C429.6 114.6 418.7 112 407.6 112H405.9C376.1 112 352 136.1 352 165.9C352 187.9 365.4 207.7 385.9 215.9L437.9 236.7C482.7 254.6 512 297.9 512 346.1V349.5C512 400.7 478.4 444.1 432 458.7V480C432 497.7 417.7 512 400 512C382.3 512 368 497.7 368 480V460.6C352.1 457.1 338.6 450.9 325.7 442.3L302.2 426.6C287.5 416.8 283.6 396.1 293.4 382.2C303.2 367.5 323 363.6 337.8 373.4L361.2 389C371.9 396.2 384.6 400 397.5 400C425.4 400 448 377.4 448 349.5V346.1C448 324.1 434.6 304.3 414.1 296.1L362.1 275.3C317.3 257.4 288 214.1 288 165.9C288 114 321.5 69.99 368 54.21V32C368 14.33 382.3 0 400 0L400 .0003zM.0003 64C.0003 46.33 14.33 32 32 32H112C191.5 32 256 96.47 256 176C256 234.8 220.8 285.3 170.3 307.7L221.7 436.1C228.3 452.5 220.3 471.1 203.9 477.7C187.5 484.3 168.9 476.3 162.3 459.9L106.3 320H64V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448L.0003 64zM64 256H112C156.2 256 192 220.2 192 176C192 131.8 156.2 96 112 96H64V256z"], + "bread-slice": [512, 512, [], "f7ec", "M512 176.1C512 203 490.4 224 455.1 224H448v224c0 17.67-14.33 32-32 32H96c-17.67 0-32-14.33-32-32V224H56.89C21.56 224 0 203 0 176.1C0 112 96 32 256 32S512 112 512 176.1z"], + "bridge": [576, 512, [], "e4c8", "M544 32C561.7 32 576 46.33 576 64C576 81.67 561.7 96 544 96H504V160H576V288C522.1 288 480 330.1 480 384V448C480 465.7 465.7 480 448 480H416C398.3 480 384 465.7 384 448V384C384 330.1 341 288 288 288C234.1 288 192 330.1 192 384V448C192 465.7 177.7 480 160 480H128C110.3 480 96 465.7 96 448V384C96 330.1 53.02 288 0 288V160H72V96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H544zM456 96H376V160H456V96zM248 96V160H328V96H248zM200 96H120V160H200V96z"], + "bridge-circle-check": [640, 512, [], "e4c9", "M576 32C593.7 32 608 46.33 608 64C608 81.67 593.7 96 576 96H536V160H608V232.2C577.6 207.1 538.5 192 496 192C426.9 192 367.1 231.8 338.3 289.7C332.4 288.6 326.3 288 320 288C266.1 288 224 330.1 224 384V448C224 465.7 209.7 480 192 480H160C142.3 480 128 465.7 128 448V384C128 330.1 85.02 288 32 288V160H104V96H64C46.33 96 32 81.67 32 64C32 46.33 46.33 32 64 32H576zM488 96H408V160H488V96zM280 96V160H360V96H280zM232 96H152V160H232V96zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "bridge-circle-exclamation": [640, 512, [], "e4ca", "M576 32C593.7 32 608 46.33 608 64C608 81.67 593.7 96 576 96H536V160H608V232.2C577.6 207.1 538.5 192 496 192C426.9 192 367.1 231.8 338.3 289.7C332.4 288.6 326.3 288 320 288C266.1 288 224 330.1 224 384V448C224 465.7 209.7 480 192 480H160C142.3 480 128 465.7 128 448V384C128 330.1 85.02 288 32 288V160H104V96H64C46.33 96 32 81.67 32 64C32 46.33 46.33 32 64 32H576zM488 96H408V160H488V96zM280 96V160H360V96H280zM232 96H152V160H232V96zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "bridge-circle-xmark": [640, 512, [], "e4cb", "M576 32C593.7 32 608 46.33 608 64C608 81.67 593.7 96 576 96H536V160H608V232.2C577.6 207.1 538.5 192 496 192C426.9 192 367.1 231.8 338.3 289.7C332.4 288.6 326.3 288 320 288C266.1 288 224 330.1 224 384V448C224 465.7 209.7 480 192 480H160C142.3 480 128 465.7 128 448V384C128 330.1 85.02 288 32 288V160H104V96H64C46.33 96 32 81.67 32 64C32 46.33 46.33 32 64 32H576zM488 96H408V160H488V96zM280 96V160H360V96H280zM232 96H152V160H232V96zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "bridge-lock": [640, 512, [], "e4cc", "M32 64C32 46.33 46.33 32 64 32H576C593.7 32 608 46.33 608 64C608 81.67 593.7 96 576 96H536V160H528C466.1 160 416 210.1 416 272V296.6C406.1 302.3 397.8 310.7 392.2 320.7C374.6 300.7 348.8 287.1 320 287.1C266.1 287.1 224 330.1 224 384V448C224 465.7 209.7 480 192 480H160C142.3 480 128 465.7 128 448V384C128 330.1 85.02 287.1 32 287.1V159.1H104V95.1H64C46.33 95.1 32 81.67 32 63.1V64zM408 160H488V96H408V160zM360 160V96H280V160H360zM152 160H232V96H152V160zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "bridge-water": [576, 512, [], "e4ce", "M.0003 96C.0003 78.33 14.33 64 32 64H544C561.7 64 576 78.33 576 96V131.6C576 147.3 563.3 160 547.6 160C510.2 160 480 190.2 480 227.6V352.5C467.1 352.5 454.2 356.3 443.2 364.1C425.2 376.5 403 384.5 384 384.5L384 384V256C384 202.1 341 160 288 160C234.1 160 192 202.1 192 256V384L191.1 384.5C172.1 384.4 150.8 376.5 132.9 364.1C121.8 356.3 108.9 352.4 96 352.5V227.6C96 190.2 65.75 160 28.44 160C12.74 160 0 147.3 0 131.6L.0003 96zM384 416C410.9 416 439.4 405.2 461.4 389.9L461.5 389.9C473.4 381.4 489.5 382.1 500.7 391.6C515.1 403.5 533.2 412.6 551.3 416.8C568.5 420.8 579.2 438.1 575.2 455.3C571.2 472.5 553.1 483.2 536.7 479.2C512.2 473.4 491.9 462.6 478.5 454.2C449.5 469.7 417 480 384 480C352.1 480 323.4 470.1 303.6 461.1C297.7 458.5 292.5 455.8 288 453.4C283.5 455.8 278.3 458.5 272.4 461.1C252.6 470.1 223.9 480 192 480C158.1 480 126.5 469.7 97.5 454.2C84.13 462.6 63.79 473.4 39.27 479.2C22.06 483.2 4.854 472.5 .8429 455.3C-3.168 438.1 7.533 420.8 24.74 416.8C42.84 412.6 60.96 403.5 75.31 391.6C86.46 382.1 102.6 381.4 114.5 389.9L114.6 389.9C136.7 405.2 165.1 416 192 416C219.5 416 247 405.4 269.5 389.9C280.6 382 295.4 382 306.5 389.9C328.1 405.4 356.5 416 384 416H384z"], + "briefcase": [512, 512, [128188], "f0b1", "M320 336c0 8.844-7.156 16-16 16h-96C199.2 352 192 344.8 192 336V288H0v144C0 457.6 22.41 480 48 480h416c25.59 0 48-22.41 48-48V288h-192V336zM464 96H384V48C384 22.41 361.6 0 336 0h-160C150.4 0 128 22.41 128 48V96H48C22.41 96 0 118.4 0 144V256h512V144C512 118.4 489.6 96 464 96zM336 96h-160V48h160V96z"], + "briefcase-medical": [512, 512, [], "f469", "M464 96H384V48C384 21.5 362.5 0 336 0h-160C149.5 0 128 21.5 128 48V96H48C21.5 96 0 117.5 0 144v288C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48v-288C512 117.5 490.5 96 464 96zM176 48h160V96h-160V48zM368 314c0 8.836-7.164 16-16 16h-54V384c0 8.836-7.164 16-15.1 16h-52c-8.835 0-16-7.164-16-16v-53.1H160c-8.836 0-16-7.164-16-16v-52c0-8.838 7.164-16 16-16h53.1V192c0-8.838 7.165-16 16-16h52c8.836 0 15.1 7.162 15.1 16v54H352c8.836 0 16 7.162 16 16V314z"], + "broom": [640, 512, [129529], "f51a", "M93.13 257.7C71.25 275.1 53 313.5 38.63 355.1L99 333.1c5.75-2.125 10.62 4.749 6.625 9.499L11 454.7C3.75 486.1 0 510.2 0 510.2s206.6 13.62 266.6-34.12c60-47.87 76.63-150.1 76.63-150.1L256.5 216.7C256.5 216.7 153.1 209.1 93.13 257.7zM633.2 12.34c-10.84-13.91-30.91-16.45-44.91-5.624l-225.7 175.6l-34.99-44.06C322.5 131.9 312.5 133.1 309 140.5L283.8 194.1l86.75 109.2l58.75-12.5c8-1.625 11.38-11.12 6.375-17.5l-33.19-41.79l225.2-175.2C641.6 46.38 644.1 26.27 633.2 12.34z"], + "broom-ball": [640, 512, ["quidditch", "quidditch-broom-ball"], "f458", "M495.1 351.1c-44.18 0-79.1 35.72-79.1 79.91c0 44.18 35.82 80.09 79.1 80.09s79.1-35.91 79.1-80.09C575.1 387.7 540.2 351.1 495.1 351.1zM242.7 216.4c-30.16 0-102.9 4.15-149.4 41.34c-22 17.5-40.25 55.75-54.63 97.5l60.38-22.12c.7363-.2715 1.46-.3967 2.151-.3967c3.33 0 5.935 2.885 5.935 6.039c0 1.301-.4426 2.647-1.462 3.856L11 454.7C3.75 487.1 0 510.2 0 510.2S27.07 512 64.45 512c65.94 0 163.1-5.499 202.2-35.89c60-47.75 76.63-150.1 76.63-150.1l-86.75-109.2C256.5 216.7 251.4 216.4 242.7 216.4zM607.1 .0074c-6.863 0-13.78 2.192-19.62 6.719L362.7 182.3l-29.88-37.67c-3.248-4.094-7.892-6.058-12.5-6.058c-5.891 0-11.73 3.204-14.54 9.26L283.8 195.1l86.75 109.1l50.88-10.72c7.883-1.66 12.72-8.546 12.72-15.71c0-3.412-1.096-6.886-3.478-9.89l-28.16-35.5l225.2-175.2c8.102-6.312 12.35-15.75 12.35-25.29C640 14.94 626.3 .0074 607.1 .0074z"], + "brush": [384, 512, [], "f55d", "M224 0H336C362.5 0 384 21.49 384 48V256H0V48C0 21.49 21.49 0 48 0H64L96 64L128 0H160L192 64L224 0zM384 288V320C384 355.3 355.3 384 320 384H256V448C256 483.3 227.3 512 192 512C156.7 512 128 483.3 128 448V384H64C28.65 384 0 355.3 0 320V288H384zM192 464C200.8 464 208 456.8 208 448C208 439.2 200.8 432 192 432C183.2 432 176 439.2 176 448C176 456.8 183.2 464 192 464z"], + "bucket": [448, 512, [], "e4cf", "M96 160H48V152C48 68.05 116.1 0 200 0H248C331.9 0 400 68.05 400 152V160H352V152C352 94.56 305.4 48 248 48H200C142.6 48 96 94.56 96 152V160zM.0003 224C.0003 206.3 14.33 192 32 192H416C433.7 192 448 206.3 448 224C448 241.7 433.7 256 416 256H410.9L388.5 469C385.1 493.5 365.4 512 340.8 512H107.2C82.65 512 62.05 493.5 59.48 469L37.05 256H32C14.33 256 0 241.7 0 224H.0003z"], + "bug": [512, 512, [], "f188", "M352 96V99.56C352 115.3 339.3 128 323.6 128H188.4C172.7 128 159.1 115.3 159.1 99.56V96C159.1 42.98 202.1 0 255.1 0C309 0 352 42.98 352 96zM41.37 105.4C53.87 92.88 74.13 92.88 86.63 105.4L150.6 169.4C151.3 170 151.9 170.7 152.5 171.4C166.8 164.1 182.9 160 199.1 160H312C329.1 160 345.2 164.1 359.5 171.4C360.1 170.7 360.7 170 361.4 169.4L425.4 105.4C437.9 92.88 458.1 92.88 470.6 105.4C483.1 117.9 483.1 138.1 470.6 150.6L406.6 214.6C405.1 215.3 405.3 215.9 404.6 216.5C410.7 228.5 414.6 241.9 415.7 256H480C497.7 256 512 270.3 512 288C512 305.7 497.7 320 480 320H416C416 344.6 410.5 367.8 400.6 388.6C402.7 389.9 404.8 391.5 406.6 393.4L470.6 457.4C483.1 469.9 483.1 490.1 470.6 502.6C458.1 515.1 437.9 515.1 425.4 502.6L362.3 439.6C337.8 461.4 306.5 475.8 272 479.2V240C272 231.2 264.8 224 255.1 224C247.2 224 239.1 231.2 239.1 240V479.2C205.5 475.8 174.2 461.4 149.7 439.6L86.63 502.6C74.13 515.1 53.87 515.1 41.37 502.6C28.88 490.1 28.88 469.9 41.37 457.4L105.4 393.4C107.2 391.5 109.3 389.9 111.4 388.6C101.5 367.8 96 344.6 96 320H32C14.33 320 0 305.7 0 288C0 270.3 14.33 256 32 256H96.3C97.38 241.9 101.3 228.5 107.4 216.5C106.7 215.9 106 215.3 105.4 214.6L41.37 150.6C28.88 138.1 28.88 117.9 41.37 105.4H41.37z"], + "bug-slash": [640, 512, [], "e490", "M239.1 162.8C247.7 160.1 255.7 160 264 160H376C393.1 160 409.2 164.1 423.5 171.4C424.1 170.7 424.7 170 425.4 169.4L489.4 105.4C501.9 92.88 522.1 92.88 534.6 105.4C547.1 117.9 547.1 138.1 534.6 150.6L470.6 214.6C469.1 215.3 469.3 215.9 468.6 216.5C474.7 228.5 478.6 241.9 479.7 256H544C561.7 256 576 270.3 576 288C576 305.7 561.7 320 544 320H480C480 329.9 479.1 339.5 477.4 348.9L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L239.1 162.8zM416 96V99.56C416 115.3 403.3 128 387.6 128H252.4C236.7 128 224 115.3 224 99.56V96C224 42.98 266.1 .001 320 .001C373 .001 416 42.98 416 96V96zM160.3 256C161.1 245.1 163.3 236.3 166.7 227.3L304 335.5V479.2C269.5 475.8 238.2 461.4 213.7 439.6L150.6 502.6C138.1 515.1 117.9 515.1 105.4 502.6C92.88 490.1 92.88 469.9 105.4 457.4L169.4 393.4C171.2 391.5 173.3 389.9 175.4 388.6C165.5 367.8 160 344.6 160 320H96C78.33 320 64 305.7 64 288C64 270.3 78.33 256 96 256H160.3zM336 479.2V360.7L430.8 435.4C405.7 459.6 372.7 475.6 336 479.2V479.2z"], + "bugs": [576, 512, [], "e4d0", "M187.3 135.1H204.3L208.5 115.3C211.1 102.3 223.7 93.86 236.7 96.46C249.7 99.06 258.1 111.7 255.5 124.7L247.5 164.7C245.3 175.9 235.4 183.1 223.1 183.1H191.1V207.3L229.8 216.7C239.3 219.1 246.4 226.9 247.8 236.6L255.8 292.6C257.6 305.7 248.5 317.9 235.4 319.8C222.3 321.6 210.1 312.5 208.2 299.4L202.5 259.4L184.1 254.8C173.2 274.6 152.2 287.1 127.1 287.1C103.8 287.1 82.75 274.6 71.87 254.8L53.48 259.4L47.76 299.4C45.88 312.5 33.73 321.6 20.61 319.8C7.484 317.9-1.633 305.7 .2413 292.6L8.241 236.6C9.621 226.9 16.71 219.1 26.18 216.7L63.1 207.3V183.1H31.1C20.56 183.1 10.71 175.9 8.463 164.7L.4627 124.7C-2.137 111.7 6.292 99.06 19.29 96.46C32.29 93.86 44.93 102.3 47.53 115.3L51.67 135.1H68.65C73.35 124.4 81.36 114.5 91.51 107.4L58.15 33.92C52.67 21.85 58.01 7.625 70.08 2.145C82.15-3.335 96.37 2.007 101.9 14.08L128 71.66L154.1 14.08C159.6 2.007 173.9-3.335 185.9 2.145C197.1 7.625 203.3 21.85 197.9 33.92L164.5 107.4C174.6 114.5 182.6 124.4 187.3 135.1L187.3 135.1zM501.5 322.7L516.2 331.2L530.1 315.3C538.9 305.3 554 304.4 563.1 313.1C573.9 321.9 574.9 337 566.2 346.1L539.2 377.6C531.7 386.2 519.1 388.3 509.2 382.6L481.5 366.6L469.9 386.7L497.9 413.8C504.9 420.6 507.1 430.9 503.5 440L482.4 492.5C477.5 504.8 463.5 510.8 451.2 505.8C438.9 500.9 432.9 486.9 437.9 474.6L452.9 437.1L439.3 423.9C419.1 435.6 395 436.7 374.1 424.6C353.1 412.5 341.6 390.4 342.1 367.8L323.8 362.6L298.9 394.4C290.7 404.8 275.6 406.6 265.2 398.4C254.8 390.3 252.9 375.2 261.1 364.7L296 320.2C302.1 312.6 312.1 309.3 321.5 311.1L359 322.7L370.6 302.6L342.9 286.6C333 280.8 328.5 268.9 332.2 258.1L345.3 219.4C349.5 206.9 363.1 200.2 375.7 204.4C388.2 208.7 394.1 222.3 390.7 234.8L383.1 254.8L398.7 263.3C408.5 255.6 420.4 251 432.8 249.1L440.6 169.7C441.9 156.5 453.6 146.8 466.8 148.1C480 149.4 489.7 161.1 488.4 174.3L482.2 237.3L533.7 200.5C544.5 192.8 559.4 195.3 567.2 206C574.9 216.8 572.4 231.8 561.6 239.5L495.1 286.5C501.2 297.7 503.2 310.3 501.5 322.7V322.7z"], + "building": [384, 512, [61687, 127970], "f1ad", "M336 0C362.5 0 384 21.49 384 48V464C384 490.5 362.5 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272z"], + "building-circle-arrow-right": [640, 512, [], "e4d1", "M0 48C0 21.49 21.49 0 48 0H336C362.5 0 384 21.49 384 48V232.2C344.9 264.5 320 313.3 320 368C320 417.5 340.4 462.2 373.3 494.2C364.5 505.1 351.1 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48zM80 224C71.16 224 64 231.2 64 240V272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80zM160 272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176C167.2 224 160 231.2 160 240V272zM272 224C263.2 224 256 231.2 256 240V272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272zM64 144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80C71.16 96 64 103.2 64 112V144zM176 96C167.2 96 160 103.2 160 112V144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176zM256 144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272C263.2 96 256 103.2 256 112V144zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM492.7 323.3L521.4 352H432C423.2 352 416 359.2 416 368C416 376.8 423.2 384 432 384H521.4L492.7 412.7C486.4 418.9 486.4 429.1 492.7 435.3C498.9 441.6 509.1 441.6 515.3 435.3L571.3 379.3C577.6 373.1 577.6 362.9 571.3 356.7L515.3 300.7C509.1 294.4 498.9 294.4 492.7 300.7C486.4 306.9 486.4 317.1 492.7 323.3V323.3z"], + "building-circle-check": [640, 512, [], "e4d2", "M336 0C362.5 0 384 21.49 384 48V232.2C344.9 264.5 320 313.3 320 368C320 417.5 340.4 462.2 373.3 494.2C364.5 505.1 351.1 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "building-circle-exclamation": [640, 512, [], "e4d3", "M336 0C362.5 0 384 21.49 384 48V232.2C344.9 264.5 320 313.3 320 368C320 417.5 340.4 462.2 373.3 494.2C364.5 505.1 351.1 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "building-circle-xmark": [640, 512, [], "e4d4", "M336 0C362.5 0 384 21.49 384 48V232.2C344.9 264.5 320 313.3 320 368C320 417.5 340.4 462.2 373.3 494.2C364.5 505.1 351.1 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "building-columns": [512, 512, ["bank", "institution", "museum", "university"], "f19c", "M243.4 2.587C251.4-.8625 260.6-.8625 268.6 2.587L492.6 98.59C506.6 104.6 514.4 119.6 511.3 134.4C508.3 149.3 495.2 159.1 479.1 160V168C479.1 181.3 469.3 192 455.1 192H55.1C42.74 192 31.1 181.3 31.1 168V160C16.81 159.1 3.708 149.3 .6528 134.4C-2.402 119.6 5.429 104.6 19.39 98.59L243.4 2.587zM256 128C273.7 128 288 113.7 288 96C288 78.33 273.7 64 256 64C238.3 64 224 78.33 224 96C224 113.7 238.3 128 256 128zM127.1 416H167.1V224H231.1V416H280V224H344V416H384V224H448V420.3C448.6 420.6 449.2 420.1 449.8 421.4L497.8 453.4C509.5 461.2 514.7 475.8 510.6 489.3C506.5 502.8 494.1 512 480 512H31.1C17.9 512 5.458 502.8 1.372 489.3C-2.715 475.8 2.515 461.2 14.25 453.4L62.25 421.4C62.82 420.1 63.41 420.6 63.1 420.3V224H127.1V416z"], + "building-flag": [640, 512, [], "e4d5", "M336 0C362.5 0 384 21.49 384 48V464C384 490.5 362.5 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM448 0C465.7 0 480 14.33 480 32H624C632.8 32 640 39.16 640 48V176C640 184.8 632.8 192 624 192H480V512H416V32C416 14.33 430.3 0 448 0z"], + "building-lock": [576, 512, [], "e4d6", "M336 0C362.5 0 384 21.49 384 48V193.6C364.2 213.8 352 241.5 352 272V296.6C332.9 307.6 320 328.3 320 352V480C320 491.7 323.1 502.6 328.6 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM464 192C508.2 192 544 227.8 544 272V320C561.7 320 576 334.3 576 352V480C576 497.7 561.7 512 544 512H384C366.3 512 352 497.7 352 480V352C352 334.3 366.3 320 384 320V272C384 227.8 419.8 192 464 192zM464 240C446.3 240 432 254.3 432 272V320H496V272C496 254.3 481.7 240 464 240z"], + "building-ngo": [384, 512, [], "e4d7", "M320 112V144C320 152.8 312.8 160 304 160C295.2 160 288 152.8 288 144V112C288 103.2 295.2 96 304 96C312.8 96 320 103.2 320 112zM336 0C362.5 0 384 21.49 384 48V464C384 490.5 362.5 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM168 64C159.2 64 152 71.16 152 80V168C152 181.3 162.7 192 176 192H208C221.3 192 232 181.3 232 168V144C232 135.2 224.8 128 216 128C207.2 128 200 135.2 200 144V160H184V96H216C224.8 96 232 88.84 232 80C232 71.16 224.8 64 216 64H168zM256 144C256 170.5 277.5 192 304 192C330.5 192 352 170.5 352 144V112C352 85.49 330.5 64 304 64C277.5 64 256 85.49 256 112V144zM61.31 71.12C57.4 65.26 50.11 62.64 43.36 64.69C36.62 66.73 32 72.95 32 80V176C32 184.8 39.16 192 48 192C56.84 192 64 184.8 64 176V132.8L98.69 184.9C102.6 190.7 109.9 193.4 116.6 191.3C123.4 189.3 128 183.1 128 176V80C128 71.16 120.8 64 112 64C103.2 64 96 71.16 96 80V123.2L61.31 71.12z"], + "building-shield": [576, 512, [], "e4d8", "M0 48C0 21.49 21.49 0 48 0H336C362.5 0 384 21.49 384 48V207L341.6 224H272C263.2 224 256 231.2 256 240V304C256 304.9 256.1 305.7 256.2 306.6C258.5 364.7 280.3 451.4 354.9 508.1C349.1 510.6 342.7 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48zM80 224C71.16 224 64 231.2 64 240V272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80zM160 272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176C167.2 224 160 231.2 160 240V272zM64 144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80C71.16 96 64 103.2 64 112V144zM176 96C167.2 96 160 103.2 160 112V144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176zM256 144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272C263.2 96 256 103.2 256 112V144zM423.1 225.7C428.8 223.4 435.2 223.4 440.9 225.7L560.9 273.7C570 277.4 576 286.2 576 296C576 359.3 550.1 464.8 441.2 510.2C435.3 512.6 428.7 512.6 422.8 510.2C313.9 464.8 288 359.3 288 296C288 286.2 293.1 277.4 303.1 273.7L423.1 225.7zM432 273.8V461.7C500.2 428.7 523.5 362.7 527.4 311.1L432 273.8z"], + "building-un": [384, 512, [], "e4d9", "M336 0C362.5 0 384 21.49 384 48V464C384 490.5 362.5 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM237.3 71.12C233.4 65.26 226.1 62.64 219.4 64.69C212.6 66.73 208 72.95 208 80V176C208 184.8 215.2 192 224 192C232.8 192 240 184.8 240 176V132.8L274.7 184.9C278.6 190.7 285.9 193.4 292.6 191.3C299.4 189.3 304 183.1 304 176V80C304 71.16 296.8 64 288 64C279.2 64 272 71.16 272 80V123.2L237.3 71.12zM112 80C112 71.16 104.8 64 96 64C87.16 64 80 71.16 80 80V144C80 170.5 101.5 192 128 192C154.5 192 176 170.5 176 144V80C176 71.16 168.8 64 160 64C151.2 64 144 71.16 144 80V144C144 152.8 136.8 160 128 160C119.2 160 112 152.8 112 144V80z"], + "building-user": [640, 512, [], "e4da", "M336 0C362.5 0 384 21.49 384 48V367.8C345.8 389.2 320 430 320 476.9C320 489.8 323.6 501.8 329.9 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48C0 21.49 21.49 0 48 0H336zM64 272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80C71.16 224 64 231.2 64 240V272zM176 224C167.2 224 160 231.2 160 240V272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176zM256 272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272C263.2 224 256 231.2 256 240V272zM80 96C71.16 96 64 103.2 64 112V144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80zM160 144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176C167.2 96 160 103.2 160 112V144zM272 96C263.2 96 256 103.2 256 112V144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272zM576 272C576 316.2 540.2 352 496 352C451.8 352 416 316.2 416 272C416 227.8 451.8 192 496 192C540.2 192 576 227.8 576 272zM352 477.1C352 425.7 393.7 384 445.1 384H546.9C598.3 384 640 425.7 640 477.1C640 496.4 624.4 512 605.1 512H386.9C367.6 512 352 496.4 352 477.1V477.1z"], + "building-wheat": [640, 512, [], "e4db", "M0 48C0 21.49 21.49 0 48 0H336C362.5 0 384 21.49 384 48V464C384 490.5 362.5 512 336 512H240V432C240 405.5 218.5 384 192 384C165.5 384 144 405.5 144 432V512H48C21.49 512 0 490.5 0 464V48zM80 224C71.16 224 64 231.2 64 240V272C64 280.8 71.16 288 80 288H112C120.8 288 128 280.8 128 272V240C128 231.2 120.8 224 112 224H80zM160 272C160 280.8 167.2 288 176 288H208C216.8 288 224 280.8 224 272V240C224 231.2 216.8 224 208 224H176C167.2 224 160 231.2 160 240V272zM272 224C263.2 224 256 231.2 256 240V272C256 280.8 263.2 288 272 288H304C312.8 288 320 280.8 320 272V240C320 231.2 312.8 224 304 224H272zM64 144C64 152.8 71.16 160 80 160H112C120.8 160 128 152.8 128 144V112C128 103.2 120.8 96 112 96H80C71.16 96 64 103.2 64 112V144zM176 96C167.2 96 160 103.2 160 112V144C160 152.8 167.2 160 176 160H208C216.8 160 224 152.8 224 144V112C224 103.2 216.8 96 208 96H176zM256 144C256 152.8 263.2 160 272 160H304C312.8 160 320 152.8 320 144V112C320 103.2 312.8 96 304 96H272C263.2 96 256 103.2 256 112V144zM640 192V208C640 252.2 604.2 288 560 288H544V272C544 227.8 579.8 192 624 192H640zM560 400H544V384C544 339.8 579.8 304 624 304H640V320C640 364.2 604.2 400 560 400zM560 512H544V496C544 451.8 579.8 416 624 416H640V432C640 476.2 604.2 512 560 512zM512 496V512H496C451.8 512 416 476.2 416 432V416H432C476.2 416 512 451.8 512 496zM496 400C451.8 400 416 364.2 416 320V304H432C476.2 304 512 339.8 512 384V400H496zM512 272V288H496C451.8 288 416 252.2 416 208V192H432C476.2 192 512 227.8 512 272zM528 32C541.3 32 552 42.75 552 56V160C552 173.3 541.3 184 528 184C514.7 184 504 173.3 504 160V56C504 42.75 514.7 32 528 32zM624 128C624 141.3 613.3 152 600 152C586.7 152 576 141.3 576 128V96C576 82.75 586.7 72 600 72C613.3 72 624 82.75 624 96V128zM456 72C469.3 72 480 82.75 480 96V128C480 141.3 469.3 152 456 152C442.7 152 432 141.3 432 128V96C432 82.75 442.7 72 456 72z"], + "bullhorn": [512, 512, [128363, 128226], "f0a1", "M480 179.6C498.6 188.4 512 212.1 512 240C512 267.9 498.6 291.6 480 300.4V448C480 460.9 472.2 472.6 460.2 477.6C448.3 482.5 434.5 479.8 425.4 470.6L381.7 426.1C333.7 378.1 268.6 352 200.7 352H192V480C192 497.7 177.7 512 160 512H96C78.33 512 64 497.7 64 480V352C28.65 352 0 323.3 0 288V192C0 156.7 28.65 128 64 128H200.7C268.6 128 333.7 101 381.7 53.02L425.4 9.373C434.5 .2215 448.3-2.516 460.2 2.437C472.2 7.39 480 19.06 480 32V179.6zM200.7 192H192V288H200.7C280.5 288 357.2 317.8 416 371.3V108.7C357.2 162.2 280.5 192 200.7 192V192z"], + "bullseye": [512, 512, [], "f140", "M288 256C288 273.7 273.7 288 256 288C238.3 288 224 273.7 224 256C224 238.3 238.3 224 256 224C273.7 224 288 238.3 288 256zM112 256C112 176.5 176.5 112 256 112C335.5 112 400 176.5 400 256C400 335.5 335.5 400 256 400C176.5 400 112 335.5 112 256zM256 336C300.2 336 336 300.2 336 256C336 211.8 300.2 176 256 176C211.8 176 176 211.8 176 256C176 300.2 211.8 336 256 336zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 64C149.1 64 64 149.1 64 256C64 362 149.1 448 256 448C362 448 448 362 448 256C448 149.1 362 64 256 64z"], + "burger": [512, 512, ["hamburger"], "f805", "M481.9 270.1C490.9 279.1 496 291.3 496 304C496 316.7 490.9 328.9 481.9 337.9C472.9 346.9 460.7 352 448 352H64C51.27 352 39.06 346.9 30.06 337.9C21.06 328.9 16 316.7 16 304C16 291.3 21.06 279.1 30.06 270.1C39.06 261.1 51.27 256 64 256H448C460.7 256 472.9 261.1 481.9 270.1zM475.3 388.7C478.3 391.7 480 395.8 480 400V416C480 432.1 473.3 449.3 461.3 461.3C449.3 473.3 432.1 480 416 480H96C79.03 480 62.75 473.3 50.75 461.3C38.74 449.3 32 432.1 32 416V400C32 395.8 33.69 391.7 36.69 388.7C39.69 385.7 43.76 384 48 384H464C468.2 384 472.3 385.7 475.3 388.7zM50.39 220.8C45.93 218.6 42.03 215.5 38.97 211.6C35.91 207.7 33.79 203.2 32.75 198.4C31.71 193.5 31.8 188.5 32.99 183.7C54.98 97.02 146.5 32 256 32C365.5 32 457 97.02 479 183.7C480.2 188.5 480.3 193.5 479.2 198.4C478.2 203.2 476.1 207.7 473 211.6C469.1 215.5 466.1 218.6 461.6 220.8C457.2 222.9 452.3 224 447.3 224H64.67C59.73 224 54.84 222.9 50.39 220.8zM372.7 116.7C369.7 119.7 368 123.8 368 128C368 131.2 368.9 134.3 370.7 136.9C372.5 139.5 374.1 141.6 377.9 142.8C380.8 143.1 384 144.3 387.1 143.7C390.2 143.1 393.1 141.6 395.3 139.3C397.6 137.1 399.1 134.2 399.7 131.1C400.3 128 399.1 124.8 398.8 121.9C397.6 118.1 395.5 116.5 392.9 114.7C390.3 112.9 387.2 111.1 384 111.1C379.8 111.1 375.7 113.7 372.7 116.7V116.7zM244.7 84.69C241.7 87.69 240 91.76 240 96C240 99.16 240.9 102.3 242.7 104.9C244.5 107.5 246.1 109.6 249.9 110.8C252.8 111.1 256 112.3 259.1 111.7C262.2 111.1 265.1 109.6 267.3 107.3C269.6 105.1 271.1 102.2 271.7 99.12C272.3 96.02 271.1 92.8 270.8 89.88C269.6 86.95 267.5 84.45 264.9 82.7C262.3 80.94 259.2 79.1 256 79.1C251.8 79.1 247.7 81.69 244.7 84.69V84.69zM116.7 116.7C113.7 119.7 112 123.8 112 128C112 131.2 112.9 134.3 114.7 136.9C116.5 139.5 118.1 141.6 121.9 142.8C124.8 143.1 128 144.3 131.1 143.7C134.2 143.1 137.1 141.6 139.3 139.3C141.6 137.1 143.1 134.2 143.7 131.1C144.3 128 143.1 124.8 142.8 121.9C141.6 118.1 139.5 116.5 136.9 114.7C134.3 112.9 131.2 111.1 128 111.1C123.8 111.1 119.7 113.7 116.7 116.7L116.7 116.7z"], + "burst": [512, 512, [], "e4dc", "M200.9 116.2L233.2 16.6C236.4 6.706 245.6 .001 256 .001C266.4 .001 275.6 6.706 278.8 16.6L313.3 123.1L383.8 97.45C392.6 94.26 402.4 96.43 408.1 103C415.6 109.6 417.7 119.4 414.6 128.2L388.9 198.7L495.4 233.2C505.3 236.4 512 245.6 512 256C512 266.4 505.3 275.6 495.4 278.8L392.3 312.2L445.2 412.8C450.1 422.1 448.4 433.5 440.1 440.1C433.5 448.4 422.1 450.1 412.8 445.2L312.2 392.3L278.8 495.4C275.6 505.3 266.4 512 256 512C245.6 512 236.4 505.3 233.2 495.4L199.8 392.3L99.17 445.2C89.87 450.1 78.46 448.4 71.03 440.1C63.6 433.5 61.87 422.1 66.76 412.8L119.7 312.2L16.6 278.8C6.705 275.6 .0003 266.4 .0003 256C.0003 245.6 6.705 236.4 16.6 233.2L116.2 200.9L4.208 37.57C-2.33 28.04-1.143 15.2 7.03 7.03C15.2-1.144 28.04-2.33 37.57 4.208L200.9 116.2z"], + "bus": [576, 512, [128653], "f207", "M288 0C422.4 0 512 35.2 512 80V128C529.7 128 544 142.3 544 160V224C544 241.7 529.7 256 512 256L512 416C512 433.7 497.7 448 480 448V480C480 497.7 465.7 512 448 512H416C398.3 512 384 497.7 384 480V448H192V480C192 497.7 177.7 512 160 512H128C110.3 512 96 497.7 96 480V448C78.33 448 64 433.7 64 416L64 256C46.33 256 32 241.7 32 224V160C32 142.3 46.33 128 64 128V80C64 35.2 153.6 0 288 0zM128 256C128 273.7 142.3 288 160 288H272V128H160C142.3 128 128 142.3 128 160V256zM304 288H416C433.7 288 448 273.7 448 256V160C448 142.3 433.7 128 416 128H304V288zM144 400C161.7 400 176 385.7 176 368C176 350.3 161.7 336 144 336C126.3 336 112 350.3 112 368C112 385.7 126.3 400 144 400zM432 400C449.7 400 464 385.7 464 368C464 350.3 449.7 336 432 336C414.3 336 400 350.3 400 368C400 385.7 414.3 400 432 400zM368 64H208C199.2 64 192 71.16 192 80C192 88.84 199.2 96 208 96H368C376.8 96 384 88.84 384 80C384 71.16 376.8 64 368 64z"], + "bus-simple": [448, 512, ["bus-alt"], "f55e", "M224 0C348.8 0 448 35.2 448 80V416C448 433.7 433.7 448 416 448V480C416 497.7 401.7 512 384 512H352C334.3 512 320 497.7 320 480V448H128V480C128 497.7 113.7 512 96 512H64C46.33 512 32 497.7 32 480V448C14.33 448 0 433.7 0 416V80C0 35.2 99.19 0 224 0zM64 256C64 273.7 78.33 288 96 288H352C369.7 288 384 273.7 384 256V128C384 110.3 369.7 96 352 96H96C78.33 96 64 110.3 64 128V256zM80 400C97.67 400 112 385.7 112 368C112 350.3 97.67 336 80 336C62.33 336 48 350.3 48 368C48 385.7 62.33 400 80 400zM368 400C385.7 400 400 385.7 400 368C400 350.3 385.7 336 368 336C350.3 336 336 350.3 336 368C336 385.7 350.3 400 368 400z"], + "business-time": [640, 512, ["briefcase-clock"], "f64a", "M496 224C416.4 224 352 288.4 352 368s64.38 144 144 144s144-64.38 144-144S575.6 224 496 224zM544 384h-54.25C484.4 384 480 379.6 480 374.3V304C480 295.2 487.2 288 496 288C504.8 288 512 295.2 512 304V352h32c8.838 0 16 7.162 16 16C560 376.8 552.8 384 544 384zM320.1 352H208C199.2 352 192 344.8 192 336V288H0v144C0 457.6 22.41 480 48 480h312.2C335.1 449.6 320 410.5 320 368C320 362.6 320.5 357.3 320.1 352zM496 192c5.402 0 10.72 .3301 16 .8066V144C512 118.4 489.6 96 464 96H384V48C384 22.41 361.6 0 336 0h-160C150.4 0 128 22.41 128 48V96H48C22.41 96 0 118.4 0 144V256h360.2C392.5 216.9 441.3 192 496 192zM336 96h-160V48h160V96z"], + "c": [384, 512, [99], "43", "M352 359.8c22.46 0 31.1 19.53 31.1 31.99c0 23.14-66.96 88.23-164.5 88.23c-137.1 0-219.4-117.8-219.4-224c0-103.8 79.87-223.1 219.4-223.1c99.47 0 164.5 66.12 164.5 88.23c0 12.27-9.527 32.01-32.01 32.01c-31.32 0-45.8-56.25-132.5-56.25c-97.99 0-155.4 84.59-155.4 159.1c0 74.03 56.42 160 155.4 160C306.5 416 320.5 359.8 352 359.8z"], + "cable-car": [512, 512, [128673, 57551, "tram"], "f7da", "M256 32C256 14.33 270.3 0 288 0C305.7 0 320 14.33 320 32C320 49.67 305.7 64 288 64C270.3 64 256 49.67 256 32zM224 56C224 73.67 209.7 88 192 88C174.3 88 160 73.67 160 56C160 38.33 174.3 24 192 24C209.7 24 224 38.33 224 56zM32 288C32 252.7 60.65 224 96 224H232V157.5L28.86 199.5C15.88 202.2 3.183 193.8 .4976 180.9C-2.188 167.9 6.157 155.2 19.14 152.5L483.1 56.5C496.1 53.81 508.8 62.16 511.5 75.14C514.2 88.12 505.8 100.8 492.9 103.5L280 147.5V224H416C451.3 224 480 252.7 480 288V448C480 483.3 451.3 512 416 512H96C60.65 512 32 483.3 32 448V288zM96 288C87.16 288 80 295.2 80 304V368C80 376.8 87.16 384 96 384H160C168.8 384 176 376.8 176 368V304C176 295.2 168.8 288 160 288H96zM208 368C208 376.8 215.2 384 224 384H288C296.8 384 304 376.8 304 368V304C304 295.2 296.8 288 288 288H224C215.2 288 208 295.2 208 304V368zM352 288C343.2 288 336 295.2 336 304V368C336 376.8 343.2 384 352 384H416C424.8 384 432 376.8 432 368V304C432 295.2 424.8 288 416 288H352z"], + "cake-candles": [448, 512, [127874, "birthday-cake", "cake"], "f1fd", "M352 111.1c22.09 0 40-17.88 40-39.97S352 0 352 0s-40 49.91-40 72S329.9 111.1 352 111.1zM224 111.1c22.09 0 40-17.88 40-39.97S224 0 224 0S184 49.91 184 72S201.9 111.1 224 111.1zM383.1 223.1L384 160c0-8.836-7.164-16-16-16h-32C327.2 144 320 151.2 320 160v64h-64V160c0-8.836-7.164-16-16-16h-32C199.2 144 192 151.2 192 160v64H128V160c0-8.836-7.164-16-16-16h-32C71.16 144 64 151.2 64 160v63.97c-35.35 0-64 28.65-64 63.1v68.7c9.814 6.102 21.39 11.33 32 11.33c20.64 0 45.05-19.73 52.7-27.33c6.25-6.219 16.34-6.219 22.59 0C114.1 348.3 139.4 367.1 160 367.1s45.05-19.73 52.7-27.33c6.25-6.219 16.34-6.219 22.59 0C242.1 348.3 267.4 367.1 288 367.1s45.05-19.73 52.7-27.33c6.25-6.219 16.34-6.219 22.59 0C370.1 348.3 395.4 367.1 416 367.1c10.61 0 22.19-5.227 32-11.33V287.1C448 252.6 419.3 223.1 383.1 223.1zM352 373.3c-13.75 10.95-38.03 26.66-64 26.66s-50.25-15.7-64-26.66c-13.75 10.95-38.03 26.66-64 26.66s-50.25-15.7-64-26.66c-13.75 10.95-38.03 26.66-64 26.66c-11.27 0-22.09-3.121-32-7.377v87.38C0 497.7 14.33 512 32 512h384c17.67 0 32-14.33 32-32v-87.38c-9.91 4.256-20.73 7.377-32 7.377C390 399.1 365.8 384.3 352 373.3zM96 111.1c22.09 0 40-17.88 40-39.97S96 0 96 0S56 49.91 56 72S73.91 111.1 96 111.1z"], + "calculator": [384, 512, [128425], "f1ec", "M336 0h-288C22.38 0 0 22.38 0 48v416C0 489.6 22.38 512 48 512h288c25.62 0 48-22.38 48-48v-416C384 22.38 361.6 0 336 0zM64 208C64 199.2 71.2 192 80 192h32C120.8 192 128 199.2 128 208v32C128 248.8 120.8 256 112 256h-32C71.2 256 64 248.8 64 240V208zM64 304C64 295.2 71.2 288 80 288h32C120.8 288 128 295.2 128 304v32C128 344.8 120.8 352 112 352h-32C71.2 352 64 344.8 64 336V304zM224 432c0 8.801-7.199 16-16 16h-128C71.2 448 64 440.8 64 432v-32C64 391.2 71.2 384 80 384h128c8.801 0 16 7.199 16 16V432zM224 336c0 8.801-7.199 16-16 16h-32C167.2 352 160 344.8 160 336v-32C160 295.2 167.2 288 176 288h32C216.8 288 224 295.2 224 304V336zM224 240C224 248.8 216.8 256 208 256h-32C167.2 256 160 248.8 160 240v-32C160 199.2 167.2 192 176 192h32C216.8 192 224 199.2 224 208V240zM320 432c0 8.801-7.199 16-16 16h-32c-8.799 0-16-7.199-16-16v-32c0-8.801 7.201-16 16-16h32c8.801 0 16 7.199 16 16V432zM320 336c0 8.801-7.199 16-16 16h-32c-8.799 0-16-7.199-16-16v-32C256 295.2 263.2 288 272 288h32C312.8 288 320 295.2 320 304V336zM320 240C320 248.8 312.8 256 304 256h-32C263.2 256 256 248.8 256 240v-32C256 199.2 263.2 192 272 192h32C312.8 192 320 199.2 320 208V240zM320 144C320 152.8 312.8 160 304 160h-224C71.2 160 64 152.8 64 144v-64C64 71.2 71.2 64 80 64h224C312.8 64 320 71.2 320 80V144z"], + "calendar": [448, 512, [128198, 128197], "f133", "M96 32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32zM448 464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192H448V464z"], + "calendar-check": [448, 512, [], "f274", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM328.1 304.1C338.3 295.6 338.3 280.4 328.1 271C319.6 261.7 304.4 261.7 295 271L200 366.1L152.1 319C143.6 309.7 128.4 309.7 119 319C109.7 328.4 109.7 343.6 119 352.1L183 416.1C192.4 426.3 207.6 426.3 216.1 416.1L328.1 304.1z"], + "calendar-day": [448, 512, [], "f783", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM80 256C71.16 256 64 263.2 64 272V368C64 376.8 71.16 384 80 384H176C184.8 384 192 376.8 192 368V272C192 263.2 184.8 256 176 256H80z"], + "calendar-days": [448, 512, ["calendar-alt"], "f073", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z"], + "calendar-minus": [448, 512, [], "f272", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM312 376C325.3 376 336 365.3 336 352C336 338.7 325.3 328 312 328H136C122.7 328 112 338.7 112 352C112 365.3 122.7 376 136 376H312z"], + "calendar-plus": [448, 512, [], "f271", "M96 32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32zM448 464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192H448V464zM200 272V328H144C130.7 328 120 338.7 120 352C120 365.3 130.7 376 144 376H200V432C200 445.3 210.7 456 224 456C237.3 456 248 445.3 248 432V376H304C317.3 376 328 365.3 328 352C328 338.7 317.3 328 304 328H248V272C248 258.7 237.3 248 224 248C210.7 248 200 258.7 200 272z"], + "calendar-week": [448, 512, [], "f784", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM80 256C71.16 256 64 263.2 64 272V336C64 344.8 71.16 352 80 352H368C376.8 352 384 344.8 384 336V272C384 263.2 376.8 256 368 256H80z"], + "calendar-xmark": [448, 512, ["calendar-times"], "f273", "M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM304.1 304.1C314.3 295.6 314.3 280.4 304.1 271C295.6 261.7 280.4 261.7 271 271L224 318.1L176.1 271C167.6 261.7 152.4 261.7 143 271C133.7 280.4 133.7 295.6 143 304.1L190.1 352L143 399C133.7 408.4 133.7 423.6 143 432.1C152.4 442.3 167.6 442.3 176.1 432.1L224 385.9L271 432.1C280.4 442.3 295.6 442.3 304.1 432.1C314.3 423.6 314.3 408.4 304.1 399L257.9 352L304.1 304.1z"], + "camera": [512, 512, [62258, "camera-alt"], "f030", "M194.6 32H317.4C338.1 32 356.4 45.22 362.9 64.82L373.3 96H448C483.3 96 512 124.7 512 160V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V160C0 124.7 28.65 96 64 96H138.7L149.1 64.82C155.6 45.22 173.9 32 194.6 32H194.6zM256 384C309 384 352 341 352 288C352 234.1 309 192 256 192C202.1 192 160 234.1 160 288C160 341 202.1 384 256 384z"], + "camera-retro": [512, 512, [128247], "f083", "M64 64V48C64 39.16 71.16 32 80 32H144C152.8 32 160 39.16 160 48V64H192L242.5 38.76C251.4 34.31 261.2 32 271.1 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V128C0 92.65 28.65 64 64 64zM220.6 121.2C211.7 125.7 201.9 128 192 128H64V192H178.8C200.8 176.9 227.3 168 256 168C284.7 168 311.2 176.9 333.2 192H448V96H271.1L220.6 121.2zM256 216C207.4 216 168 255.4 168 304C168 352.6 207.4 392 256 392C304.6 392 344 352.6 344 304C344 255.4 304.6 216 256 216z"], + "camera-rotate": [512, 512, [], "e0d8", "M464 96h-88l-12.38-32.88C356.6 44.38 338.8 32 318.8 32h-125.5c-20 0-38 12.38-45 31.12L136 96H48C21.5 96 0 117.5 0 144v288C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48v-288C512 117.5 490.5 96 464 96zM356.9 366.8C332.4 398.1 295.7 416 256 416c-31.78 0-61.37-11.94-84.58-32.61l-19.28 19.29C143.2 411.6 128 405.3 128 392.7V316.3c0-5.453 4.359-9.838 9.775-9.99h76.98c12.35 .3027 18.47 15.27 9.654 24.09l-19.27 19.28C219.3 361.4 237.1 368 256 368c24.8 0 47.78-11.22 63.08-30.78c8.172-10.44 23.25-12.28 33.69-4.125S365.1 356.3 356.9 366.8zM384 259.7c0 5.453-4.359 9.838-9.775 9.99h-76.98c-12.35-.3027-18.47-15.27-9.654-24.09l19.27-19.28C292.7 214.6 274.9 208 256 208c-24.8 0-47.78 11.22-63.08 30.78C184.8 249.2 169.7 251.1 159.2 242.9C148.8 234.8 146.9 219.7 155.1 209.2C179.6 177.9 216.3 160 256 160c31.78 0 61.37 11.94 84.58 32.61l19.28-19.29C368.8 164.4 384 170.7 384 183.3V259.7z"], + "campground": [576, 512, [9978], "f6bb", "M328.1 112L563.7 405.4C571.7 415.4 576 427.7 576 440.4V464C576 490.5 554.5 512 528 512H48C21.49 512 0 490.5 0 464V440.4C0 427.7 4.328 415.4 12.27 405.4L247 112L199 51.99C187.1 38.19 190.2 18.05 204 7.013C217.8-4.027 237.9-1.789 248.1 12.01L288 60.78L327 12.01C338.1-1.789 358.2-4.027 371.1 7.013C385.8 18.05 388 38.19 376.1 51.99L328.1 112zM407.5 448L288 291.7L168.5 448H407.5z"], + "candy-cane": [512, 512, [], "f786", "M497.5 91.1C469.6 33.13 411.8 0 352.4 0c-27.88 0-56.14 7.25-81.77 22.62L243.1 38.1C227.9 48.12 223 67.75 232.1 82.87l32.76 54.87c8.522 14.2 27.59 20.6 43.88 11.06l27.51-16.37c5.125-3.125 10.95-4.439 16.58-4.439c10.88 0 21.35 5.625 27.35 15.62c9 15.12 3.917 34.59-11.08 43.71L15.6 397.6c-15.25 9.125-20.13 28.62-11 43.87l32.76 54.87c8.522 14.2 27.59 20.66 43.88 11.12l347.4-206.5C500.2 258.1 533.2 167.5 497.5 91.1zM319.7 104.1L317.2 106.5l-20.5-61.5c9.75-4.75 19.88-8.125 30.38-10.25l20.63 61.87C337.8 97.37 328.2 99.87 319.7 104.1zM145.8 431.7l-60.5-38.5l30.88-18.25l60.5 38.5L145.8 431.7zM253.3 367.9l-60.5-38.5l30.88-18.25l60.5 38.5L253.3 367.9zM364.2 301.1L303.7 263.5l30.88-18.25l60.5 38.5L364.2 301.1zM384.7 104.7l46-45.1c8.375 6.5 16 13.1 22.5 22.5l-45.63 45.81C401.9 117.8 393.9 110.1 384.7 104.7zM466.7 212.5l-59.5-19.75c3.25-5.375 5.875-10.1 7.5-17.12c1-4.5 1.625-9.125 1.75-13.62l60.38 20.12C474.7 192.5 471.4 202.7 466.7 212.5z"], + "cannabis": [576, 512, [], "f55f", "M544 374.4c0 6-3.25 11.38-8.5 14.12c-2.5 1.375-60.75 31.75-133.5 31.75c-6.124 0-12-.125-17.5-.25c11.38 22.25 16.5 38.25 16.75 39.13c1.875 5.75 .375 12-3.875 16.12c-4.125 4.25-10.38 5.75-16.12 4c-1.631-.4648-32.94-10.66-69.25-34.06v42.81C312 501.3 301.3 512 288 512s-24-10.75-24-23.1v-42.81c-36.31 23.4-67.62 33.59-69.25 34.06c-5.75 1.75-12 .25-16.12-4c-4.25-4.25-5.75-10.38-3.875-16.12C175 458.3 180.1 442.1 191.5 420c-5.501 .125-11.37 .25-17.5 .25c-72.75 0-130.1-30.38-133.5-31.75C35.25 385.8 32 380.4 32 374.4c0-5.875 3.25-11.38 8.5-14.12c1.625-.875 32.38-16.88 76.75-25.75c-64.25-75.13-84-161.8-84.88-165.8C31.25 163.5 32.75 157.9 36.63 154C39.75 151 43.75 149.4 48 149.4c1.125 0 2.25 .125 3.375 .375C55.38 150.6 137.1 169.3 212 229.5V225.1c0-118.9 60-213.8 62.5-217.8C277.5 2.75 282.5 0 288 0s10.5 2.75 13.5 7.375C304 11.38 364 106.3 364 225.1V229.5c73.1-60.25 156.6-79 160.5-79.75C525.8 149.5 526.9 149.4 528 149.4c4.25 0 8.25 1.625 11.38 4.625c3.75 3.875 5.375 9.5 4.25 14.75c-.875 4-20.62 90.63-84.88 165.8c44.38 8.875 75.13 24.88 76.75 25.75C540.8 363 544 368.5 544 374.4z"], + "capsules": [576, 512, [], "f46b", "M555.3 300.1L424.3 112.8C401.9 81 366.4 64 330.4 64c-22.63 0-45.5 6.75-65.5 20.75C245.2 98.5 231.2 117.5 223.4 138.5C220.5 79.25 171.1 32 111.1 32c-61.88 0-111.1 50.08-111.1 111.1L-.0028 368c0 61.88 50.12 112 112 112s112-50.13 112-112L223.1 218.9C227.2 227.5 231.2 236 236.7 243.9l131.3 187.4C390.3 463 425.8 480 461.8 480c22.75 0 45.5-6.75 65.5-20.75C579 423.1 591.5 351.8 555.3 300.1zM159.1 256H63.99V144c0-26.5 21.5-48 48-48s48 21.5 48 48V256zM354.8 300.9l-65.5-93.63c-7.75-11-10.75-24.5-8.375-37.63c2.375-13.25 9.75-24.87 20.75-32.5C310.1 131.1 320.1 128 330.4 128c16.5 0 31.88 8 41.38 21.5l65.5 93.75L354.8 300.9z"], + "car": [512, 512, [128664, "automobile"], "f1b9", "M39.61 196.8L74.8 96.29C88.27 57.78 124.6 32 165.4 32H346.6C387.4 32 423.7 57.78 437.2 96.29L472.4 196.8C495.6 206.4 512 229.3 512 256V448C512 465.7 497.7 480 480 480H448C430.3 480 416 465.7 416 448V400H96V448C96 465.7 81.67 480 64 480H32C14.33 480 0 465.7 0 448V256C0 229.3 16.36 206.4 39.61 196.8V196.8zM109.1 192H402.9L376.8 117.4C372.3 104.6 360.2 96 346.6 96H165.4C151.8 96 139.7 104.6 135.2 117.4L109.1 192zM96 256C78.33 256 64 270.3 64 288C64 305.7 78.33 320 96 320C113.7 320 128 305.7 128 288C128 270.3 113.7 256 96 256zM416 320C433.7 320 448 305.7 448 288C448 270.3 433.7 256 416 256C398.3 256 384 270.3 384 288C384 305.7 398.3 320 416 320z"], + "car-battery": [512, 512, ["battery-car"], "f5df", "M80 96C80 78.33 94.33 64 112 64H176C193.7 64 208 78.33 208 96H304C304 78.33 318.3 64 336 64H400C417.7 64 432 78.33 432 96H448C483.3 96 512 124.7 512 160V384C512 419.3 483.3 448 448 448H64C28.65 448 0 419.3 0 384V160C0 124.7 28.65 96 64 96H80zM384 192C384 183.2 376.8 176 368 176C359.2 176 352 183.2 352 192V224H320C311.2 224 304 231.2 304 240C304 248.8 311.2 256 320 256H352V288C352 296.8 359.2 304 368 304C376.8 304 384 296.8 384 288V256H416C424.8 256 432 248.8 432 240C432 231.2 424.8 224 416 224H384V192zM96 256H192C200.8 256 208 248.8 208 240C208 231.2 200.8 224 192 224H96C87.16 224 80 231.2 80 240C80 248.8 87.16 256 96 256z"], + "car-burst": [640, 512, ["car-crash"], "f5e1", "M176 8C182.6 8 188.4 11.1 190.9 18.09L220.3 92.05L296.4 68.93C302.7 67.03 309.5 69.14 313.6 74.27C314.1 74.85 314.5 75.45 314.9 76.08C297.8 84.32 282.7 96.93 271.4 113.3L230.4 172.5C203.1 181.4 180.6 203.5 172.6 233.4L152.7 307.4L117.4 339.9C112.6 344.4 105.5 345.4 99.64 342.6C93.73 339.7 90.16 333.6 90.62 327L96.21 247.6L17.56 235.4C11.08 234.4 5.871 229.6 4.413 223.2C2.954 216.8 5.54 210.1 10.94 206.4L76.5 161.3L37.01 92.18C33.76 86.49 34.31 79.39 38.4 74.27C42.48 69.14 49.28 67.03 55.55 68.93L131.7 92.05L161.1 18.09C163.6 11.1 169.4 8 176 8L176 8zM384.2 99.67L519.8 135.1C552.5 144.7 576.1 173.1 578.8 206.8L585.7 290.7C602.9 304.2 611.3 327 605.3 349.4L570.1 480.8C565.5 497.8 547.1 507.1 530.9 503.4L515.5 499.3C498.4 494.7 488.3 477.1 492.8 460.1L501.1 429.1L253.8 362.9L245.6 393.8C240.1 410.9 223.4 421 206.4 416.4L190.9 412.3C173.8 407.7 163.7 390.2 168.3 373.1L203.5 241.7C209.5 219.3 228.2 203.8 249.8 200.7L297.7 131.5C316.9 103.6 351.6 90.92 384.2 99.67L384.2 99.67zM367.7 161.5C361.1 159.7 354.2 162.3 350.4 167.8L318.1 214.5L519.6 268.5L515 211.1C514.5 205.2 509.8 199.6 503.2 197.8L367.7 161.5zM268.3 308.8C281.1 312.2 294.3 304.6 297.7 291.8C301.2 279 293.6 265.9 280.8 262.4C267.1 259 254.8 266.6 251.4 279.4C247.9 292.2 255.5 305.4 268.3 308.8zM528 328.7C515.2 325.3 502.1 332.9 498.6 345.7C495.2 358.5 502.8 371.6 515.6 375.1C528.4 378.5 541.6 370.9 545 358.1C548.4 345.3 540.8 332.1 528 328.7z"], + "car-on": [448, 512, [], "e4dd", "M248 104C248 117.3 237.3 128 224 128C210.7 128 200 117.3 200 104V24C200 10.75 210.7 0 224 0C237.3 0 248 10.75 248 24V104zM153.8 160H294.2C327.1 160 358.1 181.3 369.5 213.1L397.8 292.4C417.9 300.9 432 320.8 432 344V480C432 497.7 417.7 512 400 512H384C366.3 512 352 497.7 352 480V448H96V480C96 497.7 81.67 512 64 512H48C30.33 512 16 497.7 16 480V344C16 320.8 30.08 300.9 50.16 292.4L78.49 213.1C89.86 181.3 120 160 153.8 160H153.8zM153.8 224C147.1 224 141 228.3 138.8 234.6L119.7 288H328.3L309.2 234.6C306.1 228.3 300.9 224 294.2 224H153.8zM96 392C109.3 392 120 381.3 120 368C120 354.7 109.3 344 96 344C82.75 344 72 354.7 72 368C72 381.3 82.75 392 96 392zM352 344C338.7 344 328 354.7 328 368C328 381.3 338.7 392 352 392C365.3 392 376 381.3 376 368C376 354.7 365.3 344 352 344zM7.029 39.03C16.4 29.66 31.6 29.66 40.97 39.03L88.97 87.03C98.34 96.4 98.34 111.6 88.97 120.1C79.6 130.3 64.4 130.3 55.03 120.1L7.029 72.97C-2.343 63.6-2.343 48.4 7.029 39.03V39.03zM407 39.03C416.4 29.66 431.6 29.66 440.1 39.03C450.3 48.4 450.3 63.6 440.1 72.97L392.1 120.1C383.6 130.3 368.4 130.3 359 120.1C349.7 111.6 349.7 96.4 359 87.03L407 39.03z"], + "car-rear": [512, 512, ["car-alt"], "f5de", "M165.4 32H346.6C387.4 32 423.7 57.78 437.2 96.29L472.4 196.8C495.6 206.4 512 229.3 512 256V336C512 359.7 499.1 380.4 480 391.4V448C480 465.7 465.7 480 448 480H416C398.3 480 384 465.7 384 448V400H128V448C128 465.7 113.7 480 96 480H64C46.33 480 32 465.7 32 448V391.4C12.87 380.4 0 359.7 0 336V256C0 229.3 16.36 206.4 39.61 196.8L74.8 96.29C88.27 57.78 124.6 32 165.4 32V32zM165.4 96C151.8 96 139.7 104.6 135.2 117.4L109.1 192H402.9L376.8 117.4C372.3 104.6 360.2 96 346.6 96H165.4zM208 272C199.2 272 192 279.2 192 288V320C192 328.8 199.2 336 208 336H304C312.8 336 320 328.8 320 320V288C320 279.2 312.8 272 304 272H208zM72 304H104C117.3 304 128 293.3 128 280C128 266.7 117.3 256 104 256H72C58.75 256 48 266.7 48 280C48 293.3 58.75 304 72 304zM408 256C394.7 256 384 266.7 384 280C384 293.3 394.7 304 408 304H440C453.3 304 464 293.3 464 280C464 266.7 453.3 256 440 256H408z"], + "car-side": [640, 512, [128663], "f5e4", "M640 320V368C640 385.7 625.7 400 608 400H574.7C567.1 445.4 527.6 480 480 480C432.4 480 392.9 445.4 385.3 400H254.7C247.1 445.4 207.6 480 160 480C112.4 480 72.94 445.4 65.33 400H32C14.33 400 0 385.7 0 368V256C0 228.9 16.81 205.8 40.56 196.4L82.2 92.35C96.78 55.9 132.1 32 171.3 32H353.2C382.4 32 409.1 45.26 428.2 68.03L528.2 193C591.2 200.1 640 254.8 640 319.1V320zM171.3 96C158.2 96 146.5 103.1 141.6 116.1L111.3 192H224V96H171.3zM272 192H445.4L378.2 108C372.2 100.4 362.1 96 353.2 96H272V192zM525.3 400C527 394.1 528 389.6 528 384C528 357.5 506.5 336 480 336C453.5 336 432 357.5 432 384C432 389.6 432.1 394.1 434.7 400C441.3 418.6 459.1 432 480 432C500.9 432 518.7 418.6 525.3 400zM205.3 400C207 394.1 208 389.6 208 384C208 357.5 186.5 336 160 336C133.5 336 112 357.5 112 384C112 389.6 112.1 394.1 114.7 400C121.3 418.6 139.1 432 160 432C180.9 432 198.7 418.6 205.3 400z"], + "car-tunnel": [512, 512, [], "e4de", "M190.8 277.5C191.8 274.2 194.9 272 198.4 272H313.6C317.1 272 320.2 274.2 321.2 277.5L334.1 320H177L190.8 277.5zM144 384C144 370.7 154.7 360 168 360C181.3 360 192 370.7 192 384C192 397.3 181.3 408 168 408C154.7 408 144 397.3 144 384zM368 384C368 397.3 357.3 408 344 408C330.7 408 320 397.3 320 384C320 370.7 330.7 360 344 360C357.3 360 368 370.7 368 384zM512 256V448C512 483.3 483.3 512 448 512H384H128H64C28.65 512 0 483.3 0 448V256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM384 512C401.7 512 416 497.7 416 480V376C416 355.2 404.7 337.1 387.8 327.4L366.9 262.7C359.4 239.6 337.9 224 313.6 224H198.4C174.1 224 152.6 239.6 145.1 262.7L124.1 327.4C107.3 337.1 96 355.2 96 376V480C96 497.7 110.3 512 128 512C145.7 512 160 497.7 160 480V448H352V480C352 497.7 366.3 512 384 512H384z"], + "caravan": [640, 512, [], "f8ff", "M0 112C0 67.82 35.82 32 80 32H416C504.4 32 576 103.6 576 192V352H608C625.7 352 640 366.3 640 384C640 401.7 625.7 416 608 416H288C288 469 245 512 192 512C138.1 512 96 469 96 416H80C35.82 416 0 380.2 0 336V112zM320 352H448V256H416C407.2 256 400 248.8 400 240C400 231.2 407.2 224 416 224H448V160C448 142.3 433.7 128 416 128H352C334.3 128 320 142.3 320 160V352zM96 128C78.33 128 64 142.3 64 160V224C64 241.7 78.33 256 96 256H224C241.7 256 256 241.7 256 224V160C256 142.3 241.7 128 224 128H96zM192 464C218.5 464 240 442.5 240 416C240 389.5 218.5 368 192 368C165.5 368 144 389.5 144 416C144 442.5 165.5 464 192 464z"], + "caret-down": [320, 512, [], "f0d7", "M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"], + "caret-left": [256, 512, [], "f0d9", "M137.4 406.6l-128-127.1C3.125 272.4 0 264.2 0 255.1s3.125-16.38 9.375-22.63l128-127.1c9.156-9.156 22.91-11.9 34.88-6.943S192 115.1 192 128v255.1c0 12.94-7.781 24.62-19.75 29.58S146.5 415.8 137.4 406.6z"], + "caret-right": [256, 512, [], "f0da", "M118.6 105.4l128 127.1C252.9 239.6 256 247.8 256 255.1s-3.125 16.38-9.375 22.63l-128 127.1c-9.156 9.156-22.91 11.9-34.88 6.943S64 396.9 64 383.1V128c0-12.94 7.781-24.62 19.75-29.58S109.5 96.23 118.6 105.4z"], + "caret-up": [320, 512, [], "f0d8", "M9.39 265.4l127.1-128C143.6 131.1 151.8 128 160 128s16.38 3.125 22.63 9.375l127.1 128c9.156 9.156 11.9 22.91 6.943 34.88S300.9 320 287.1 320H32.01c-12.94 0-24.62-7.781-29.58-19.75S.2333 274.5 9.39 265.4z"], + "carrot": [512, 512, [129365], "f787", "M298.2 156.6C245.5 130.9 183.7 146.1 147.1 189.4l55.27 55.31c6.25 6.25 6.25 16.33 0 22.58c-3.127 3-7.266 4.605-11.39 4.605s-8.068-1.605-11.19-4.605L130.3 217l-128.1 262.8c-2.875 6-3 13.25 0 19.63c5.5 11.12 19 15.75 30 10.38l133.6-65.25L116.7 395.3c-6.377-6.125-6.377-16.38 0-22.5c6.25-6.25 16.37-6.25 22.5 0l56.98 56.98l102-49.89c24-11.63 44.5-31.26 57.13-57.13C385.5 261.1 359.9 186.8 298.2 156.6zM390.2 121.8C409.7 81 399.7 32.88 359.1 0c-50.25 41.75-52.51 107.5-7.875 151.9l8 8C404.5 204.5 470.4 202.3 512 152C479.1 112.3 430.1 102.3 390.2 121.8z"], + "cart-arrow-down": [576, 512, [], "f218", "M0 24C0 10.75 10.75 0 24 0H96C107.5 0 117.4 8.19 119.6 19.51L121.1 32H312V134.1L288.1 111C279.6 101.7 264.4 101.7 255 111C245.7 120.4 245.7 135.6 255 144.1L319 208.1C328.4 218.3 343.6 218.3 352.1 208.1L416.1 144.1C426.3 135.6 426.3 120.4 416.1 111C407.6 101.7 392.4 101.7 383 111L360 134.1V32H541.8C562.1 32 578.3 52.25 572.6 72.66L518.6 264.7C514.7 278.5 502.1 288 487.8 288H170.7L179.9 336H488C501.3 336 512 346.7 512 360C512 373.3 501.3 384 488 384H159.1C148.5 384 138.6 375.8 136.4 364.5L76.14 48H24C10.75 48 0 37.25 0 24V24zM224 464C224 490.5 202.5 512 176 512C149.5 512 128 490.5 128 464C128 437.5 149.5 416 176 416C202.5 416 224 437.5 224 464zM416 464C416 437.5 437.5 416 464 416C490.5 416 512 437.5 512 464C512 490.5 490.5 512 464 512C437.5 512 416 490.5 416 464z"], + "cart-flatbed": [640, 512, ["dolly-flatbed"], "f474", "M240 320h320c26.4 0 48-21.6 48-48v-192C608 53.6 586.4 32 560 32H448v128l-48-32L352 160V32H240C213.6 32 192 53.6 192 80v192C192 298.4 213.6 320 240 320zM608 384H128V64c0-35.2-28.8-64-64-64H31.1C14.4 0 0 14.4 0 32S14.4 64 31.1 64H48C56.84 64 64 71.16 64 80v335.1c0 17.6 14.4 32 32 32l66.92-.0009C161.1 453 160 458.4 160 464C160 490.5 181.5 512 208 512S256 490.5 256 464c0-5.641-1.13-10.97-2.917-16h197.9c-1.787 5.027-2.928 10.36-2.928 16C448 490.5 469.5 512 496 512c26.51 0 48.01-21.49 48.01-47.1c0-5.641-1.12-10.97-2.907-16l66.88 .0009C625.6 448 640 433.6 640 415.1C640 398.4 625.6 384 608 384z"], + "cart-flatbed-suitcase": [640, 512, ["luggage-cart"], "f59d", "M541.2 448C542.1 453 544.1 458.4 544.1 464C544.1 490.5 522.6 512 496 512C469.5 512 448.1 490.5 448.1 464C448.1 458.4 449.2 453 450.1 448H253.1C254.9 453 256 458.4 256 464C256 490.5 234.5 512 208 512C181.5 512 160 490.5 160 464C160 458.4 161.1 453 162.9 448L96 448C78.4 448 64 433.6 64 416V80C64 71.16 56.84 64 48 64H32C14.4 64 0 49.6 0 32C0 14.4 14.4 0 32 0H64C99.2 0 128 28.8 128 64V384H608C625.6 384 640 398.4 640 416C640 433.6 625.6 448 608 448L541.2 448zM432 0C458.5 0 480 21.5 480 48V320H288V48C288 21.5 309.5 0 336 0H432zM336 96H432V48H336V96zM256 320H224C206.4 320 192 305.6 192 288V128C192 110.4 206.4 96 224 96H256V320zM576 128V288C576 305.6 561.6 320 544 320H512V96H544C561.6 96 576 110.4 576 128z"], + "cart-plus": [576, 512, [], "f217", "M96 0C107.5 0 117.4 8.19 119.6 19.51L121.1 32H541.8C562.1 32 578.3 52.25 572.6 72.66L518.6 264.7C514.7 278.5 502.1 288 487.8 288H170.7L179.9 336H488C501.3 336 512 346.7 512 360C512 373.3 501.3 384 488 384H159.1C148.5 384 138.6 375.8 136.4 364.5L76.14 48H24C10.75 48 0 37.25 0 24C0 10.75 10.75 0 24 0H96zM272 180H316V224C316 235 324.1 244 336 244C347 244 356 235 356 224V180H400C411 180 420 171 420 160C420 148.1 411 140 400 140H356V96C356 84.95 347 76 336 76C324.1 76 316 84.95 316 96V140H272C260.1 140 252 148.1 252 160C252 171 260.1 180 272 180zM128 464C128 437.5 149.5 416 176 416C202.5 416 224 437.5 224 464C224 490.5 202.5 512 176 512C149.5 512 128 490.5 128 464zM512 464C512 490.5 490.5 512 464 512C437.5 512 416 490.5 416 464C416 437.5 437.5 416 464 416C490.5 416 512 437.5 512 464z"], + "cart-shopping": [576, 512, [128722, "shopping-cart"], "f07a", "M96 0C107.5 0 117.4 8.19 119.6 19.51L121.1 32H541.8C562.1 32 578.3 52.25 572.6 72.66L518.6 264.7C514.7 278.5 502.1 288 487.8 288H170.7L179.9 336H488C501.3 336 512 346.7 512 360C512 373.3 501.3 384 488 384H159.1C148.5 384 138.6 375.8 136.4 364.5L76.14 48H24C10.75 48 0 37.25 0 24C0 10.75 10.75 0 24 0H96zM128 464C128 437.5 149.5 416 176 416C202.5 416 224 437.5 224 464C224 490.5 202.5 512 176 512C149.5 512 128 490.5 128 464zM512 464C512 490.5 490.5 512 464 512C437.5 512 416 490.5 416 464C416 437.5 437.5 416 464 416C490.5 416 512 437.5 512 464z"], + "cash-register": [512, 512, [], "f788", "M288 0C305.7 0 320 14.33 320 32V96C320 113.7 305.7 128 288 128H208V160H424.1C456.6 160 483.5 183.1 488.2 214.4L510.9 364.1C511.6 368.8 512 373.6 512 378.4V448C512 483.3 483.3 512 448 512H64C28.65 512 0 483.3 0 448V378.4C0 373.6 .3622 368.8 1.083 364.1L23.76 214.4C28.5 183.1 55.39 160 87.03 160H143.1V128H63.1C46.33 128 31.1 113.7 31.1 96V32C31.1 14.33 46.33 0 63.1 0L288 0zM96 48C87.16 48 80 55.16 80 64C80 72.84 87.16 80 96 80H256C264.8 80 272 72.84 272 64C272 55.16 264.8 48 256 48H96zM80 448H432C440.8 448 448 440.8 448 432C448 423.2 440.8 416 432 416H80C71.16 416 64 423.2 64 432C64 440.8 71.16 448 80 448zM112 216C98.75 216 88 226.7 88 240C88 253.3 98.75 264 112 264C125.3 264 136 253.3 136 240C136 226.7 125.3 216 112 216zM208 264C221.3 264 232 253.3 232 240C232 226.7 221.3 216 208 216C194.7 216 184 226.7 184 240C184 253.3 194.7 264 208 264zM160 296C146.7 296 136 306.7 136 320C136 333.3 146.7 344 160 344C173.3 344 184 333.3 184 320C184 306.7 173.3 296 160 296zM304 264C317.3 264 328 253.3 328 240C328 226.7 317.3 216 304 216C290.7 216 280 226.7 280 240C280 253.3 290.7 264 304 264zM256 296C242.7 296 232 306.7 232 320C232 333.3 242.7 344 256 344C269.3 344 280 333.3 280 320C280 306.7 269.3 296 256 296zM400 264C413.3 264 424 253.3 424 240C424 226.7 413.3 216 400 216C386.7 216 376 226.7 376 240C376 253.3 386.7 264 400 264zM352 296C338.7 296 328 306.7 328 320C328 333.3 338.7 344 352 344C365.3 344 376 333.3 376 320C376 306.7 365.3 296 352 296z"], + "cat": [576, 512, [128008], "f6be", "M322.6 192C302.4 192 215.8 194 160 278V192c0-53-43-96-96-96C46.38 96 32 110.4 32 128s14.38 32 32 32s32 14.38 32 32v256c0 35.25 28.75 64 64 64h176c8.875 0 16-7.125 16-15.1V480c0-17.62-14.38-32-32-32h-32l128-96v144c0 8.875 7.125 16 16 16h32c8.875 0 16-7.125 16-16V289.9c-10.25 2.625-20.88 4.5-32 4.5C386.2 294.4 334.5 250.4 322.6 192zM480 96h-64l-64-64v134.4c0 53 43 95.1 96 95.1s96-42.1 96-95.1V32L480 96zM408 176c-8.875 0-16-7.125-16-16s7.125-16 16-16s16 7.125 16 16S416.9 176 408 176zM488 176c-8.875 0-16-7.125-16-16s7.125-16 16-16s16 7.125 16 16S496.9 176 488 176z"], + "cedi-sign": [320, 512, [], "e0df", "M224 66.66C254.9 71.84 283.2 84.39 307.2 102.4C321.4 113 324.2 133.1 313.6 147.2C302.1 161.4 282.9 164.2 268.8 153.6C255.6 143.7 240.4 136.3 224 132V379.1C240.4 375.7 255.6 368.3 268.8 358.4C282.9 347.8 302.1 350.6 313.6 364.8C324.2 378.9 321.4 398.1 307.2 409.6C283.2 427.6 254.9 440.2 224 445.3V480C224 497.7 209.7 512 192 512C174.3 512 160 497.7 160 480V445.3C69.19 430.1 0 351.1 0 256C0 160.9 69.19 81.89 160 66.65V32C160 14.33 174.3 0 192 0C209.7 0 224 14.33 224 32V66.66zM160 132C104.8 146.2 64 196.4 64 255.1C64 315.6 104.8 365.8 160 379.1V132z"], + "cent-sign": [320, 512, [], "e3f5", "M192 0C209.7 0 224 14.33 224 32V66.66C254.9 71.84 283.2 84.39 307.2 102.4C321.4 113 324.2 133.1 313.6 147.2C302.1 161.4 282.9 164.2 268.8 153.6C247.4 137.5 220.9 128 192 128C121.3 128 64 185.3 64 256C64 326.7 121.3 384 192 384C220.9 384 247.4 374.5 268.8 358.4C282.9 347.8 302.1 350.6 313.6 364.8C324.2 378.9 321.4 398.1 307.2 409.6C283.2 427.6 254.9 440.2 224 445.3V480C224 497.7 209.7 512 192 512C174.3 512 160 497.7 160 480V445.3C69.19 430.1 0 351.1 0 256C0 160.9 69.19 81.89 160 66.66V32C160 14.33 174.3 .0006 192 .0006V0z"], + "certificate": [512, 512, [], "f0a3", "M256 53.46L300.1 7.261C307 1.034 315.1-1.431 324.4 .8185C332.8 3.068 339.3 9.679 341.4 18.1L357.3 80.6L419.3 63.07C427.7 60.71 436.7 63.05 442.8 69.19C448.1 75.34 451.3 84.33 448.9 92.69L431.4 154.7L493.9 170.6C502.3 172.7 508.9 179.2 511.2 187.6C513.4 196 510.1 204.1 504.7 211L458.5 256L504.7 300.1C510.1 307 513.4 315.1 511.2 324.4C508.9 332.8 502.3 339.3 493.9 341.4L431.4 357.3L448.9 419.3C451.3 427.7 448.1 436.7 442.8 442.8C436.7 448.1 427.7 451.3 419.3 448.9L357.3 431.4L341.4 493.9C339.3 502.3 332.8 508.9 324.4 511.2C315.1 513.4 307 510.1 300.1 504.7L256 458.5L211 504.7C204.1 510.1 196 513.4 187.6 511.2C179.2 508.9 172.7 502.3 170.6 493.9L154.7 431.4L92.69 448.9C84.33 451.3 75.34 448.1 69.19 442.8C63.05 436.7 60.71 427.7 63.07 419.3L80.6 357.3L18.1 341.4C9.679 339.3 3.068 332.8 .8186 324.4C-1.431 315.1 1.034 307 7.261 300.1L53.46 256L7.261 211C1.034 204.1-1.431 196 .8186 187.6C3.068 179.2 9.679 172.7 18.1 170.6L80.6 154.7L63.07 92.69C60.71 84.33 63.05 75.34 69.19 69.19C75.34 63.05 84.33 60.71 92.69 63.07L154.7 80.6L170.6 18.1C172.7 9.679 179.2 3.068 187.6 .8185C196-1.431 204.1 1.034 211 7.261L256 53.46z"], + "chair": [448, 512, [129681], "f6c0", "M445.1 338.6l-14.77-32C425.1 295.3 413.7 288 401.2 288H46.76C34.28 288 22.94 295.3 17.7 306.6l-14.77 32c-4.563 9.906-3.766 21.47 2.109 30.66S21.09 384 31.1 384l.001 112c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16V384h256v112c0 8.836 7.164 16 16 16h31.1c8.838 0 16-7.164 16-16L416 384c10.91 0 21.08-5.562 26.95-14.75S449.6 348.5 445.1 338.6zM111.1 128c0-29.48 16.2-54.1 40-68.87L151.1 256h48l.0092-208h48L247.1 256h48l.0093-196.9C319.8 73 335.1 98.52 335.1 128l-.0094 128h48.03l-.0123-128c0-70.69-57.31-128-128-128H191.1C121.3 0 63.98 57.31 63.98 128l.0158 128h47.97L111.1 128z"], + "chalkboard": [576, 512, ["blackboard"], "f51b", "M96 96h384v288h64V72C544 50 525.1 32 504 32H72C49.1 32 32 50 32 72V384h64V96zM560 416H416v-48c0-8.838-7.164-16-16-16h-160C231.2 352 224 359.2 224 368V416H16C7.164 416 0 423.2 0 432v32C0 472.8 7.164 480 16 480h544c8.836 0 16-7.164 16-16v-32C576 423.2 568.8 416 560 416z"], + "chalkboard-user": [640, 512, ["chalkboard-teacher"], "f51c", "M592 0h-384C181.5 0 160 22.25 160 49.63V96c23.42 0 45.1 6.781 63.1 17.81V64h352v288h-64V304c0-8.838-7.164-16-16-16h-96c-8.836 0-16 7.162-16 16V352H287.3c22.07 16.48 39.54 38.5 50.76 64h253.9C618.5 416 640 393.8 640 366.4V49.63C640 22.25 618.5 0 592 0zM160 320c53.02 0 96-42.98 96-96c0-53.02-42.98-96-96-96C106.1 128 64 170.1 64 224C64 277 106.1 320 160 320zM192 352H128c-70.69 0-128 57.31-128 128c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32C320 409.3 262.7 352 192 352z"], + "champagne-glasses": [640, 512, [129346, "glass-cheers"], "f79f", "M639.4 433.6c-8.374-20.37-31.75-30.12-52.12-21.62l-22.12 9.249l-38.75-101.1c47.87-34.1 64.87-100.2 34.5-152.7l-86.62-150.5c-7.999-13.87-24.1-19.75-39.1-13.62l-114.2 47.37L205.8 2.415C190.8-3.71 173.8 2.165 165.8 16.04L79.15 166.5C48.9 219 65.78 284.3 113.6 319.2l-38.75 101.9L52.78 411.9c-20.37-8.499-43.62 1.25-52.12 21.62c-1.75 4.124 .125 8.749 4.25 10.5l162.4 67.37c3.1 1.75 8.624-.125 10.37-4.249c8.374-20.37-1.25-43.87-21.62-52.37l-22.12-9.124l39.37-103.6c4.5 .4999 8.874 1.25 13.12 1.25c51.75 0 99.37-32.1 113.4-85.24l20.25-75.36l20.25 75.36c13.1 52.24 61.62 85.24 113.4 85.24c4.25 0 8.624-.7499 13.12-1.25l39.25 103.6l-22.12 9.124c-20.37 8.499-30.12 31.1-21.62 52.37c1.75 4.124 6.5 5.999 10.5 4.249l162.4-67.37C639.1 442.2 641.1 437.7 639.4 433.6zM275.9 162.1L163.8 115.6l36.5-63.37L294.8 91.4L275.9 162.1zM364.1 162.1l-18.87-70.74l94.49-39.12l36.5 63.37L364.1 162.1z"], + "charging-station": [576, 512, [], "f5e7", "M256 0C291.3 0 320 28.65 320 64V256H336C384.6 256 424 295.4 424 344V376C424 389.3 434.7 400 448 400C461.3 400 472 389.3 472 376V252.3C439.5 242.1 416 211.8 416 176V144C416 135.2 423.2 128 432 128H448V80C448 71.16 455.2 64 464 64C472.8 64 480 71.16 480 80V128H512V80C512 71.16 519.2 64 528 64C536.8 64 544 71.16 544 80V128H560C568.8 128 576 135.2 576 144V176C576 211.8 552.5 242.1 520 252.3V376C520 415.8 487.8 448 448 448C408.2 448 376 415.8 376 376V344C376 321.9 358.1 304 336 304H320V448C337.7 448 352 462.3 352 480C352 497.7 337.7 512 320 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V64C32 28.65 60.65 0 96 0H256zM197.6 83.85L85.59 179.9C80.5 184.2 78.67 191.3 80.99 197.6C83.32 203.8 89.3 208 95.1 208H153.8L128.8 282.9C126.5 289.8 129.1 297.3 135.1 301.3C141 305.3 148.1 304.8 154.4 300.1L266.4 204.1C271.5 199.8 273.3 192.7 271 186.4C268.7 180.2 262.7 176 256 176H198.2L223.2 101.1C225.5 94.24 222.9 86.74 216.9 82.72C210.1 78.71 203 79.17 197.6 83.85V83.85z"], + "chart-area": [512, 512, ["area-chart"], "f1fe", "M64 400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32C49.67 32 64 46.33 64 64V400zM128 320V236C128 228.3 130.8 220.8 135.9 214.1L215.3 124.2C228.3 109.4 251.4 109.7 263.1 124.8L303.2 171.8C312.2 182.7 328.6 183.4 338.6 173.4L359.6 152.4C372.7 139.3 394.4 140.1 406.5 154.2L472.3 231C477.3 236.8 480 244.2 480 251.8V320C480 337.7 465.7 352 448 352H159.1C142.3 352 127.1 337.7 127.1 320L128 320z"], + "chart-bar": [512, 512, ["bar-chart"], "f080", "M32 32C49.67 32 64 46.33 64 64V400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32zM128 128C128 110.3 142.3 96 160 96H352C369.7 96 384 110.3 384 128C384 145.7 369.7 160 352 160H160C142.3 160 128 145.7 128 128zM288 192C305.7 192 320 206.3 320 224C320 241.7 305.7 256 288 256H160C142.3 256 128 241.7 128 224C128 206.3 142.3 192 160 192H288zM416 288C433.7 288 448 302.3 448 320C448 337.7 433.7 352 416 352H160C142.3 352 128 337.7 128 320C128 302.3 142.3 288 160 288H416z"], + "chart-column": [512, 512, [], "e0e3", "M32 32C49.67 32 64 46.33 64 64V400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32zM160 224C177.7 224 192 238.3 192 256V320C192 337.7 177.7 352 160 352C142.3 352 128 337.7 128 320V256C128 238.3 142.3 224 160 224zM288 320C288 337.7 273.7 352 256 352C238.3 352 224 337.7 224 320V160C224 142.3 238.3 128 256 128C273.7 128 288 142.3 288 160V320zM352 192C369.7 192 384 206.3 384 224V320C384 337.7 369.7 352 352 352C334.3 352 320 337.7 320 320V224C320 206.3 334.3 192 352 192zM480 320C480 337.7 465.7 352 448 352C430.3 352 416 337.7 416 320V96C416 78.33 430.3 64 448 64C465.7 64 480 78.33 480 96V320z"], + "chart-gantt": [512, 512, [], "e0e4", "M32 32C49.67 32 64 46.33 64 64V400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32zM128 128C128 110.3 142.3 96 160 96H256C273.7 96 288 110.3 288 128C288 145.7 273.7 160 256 160H160C142.3 160 128 145.7 128 128zM352 192C369.7 192 384 206.3 384 224C384 241.7 369.7 256 352 256H224C206.3 256 192 241.7 192 224C192 206.3 206.3 192 224 192H352zM448 288C465.7 288 480 302.3 480 320C480 337.7 465.7 352 448 352H384C366.3 352 352 337.7 352 320C352 302.3 366.3 288 384 288H448z"], + "chart-line": [512, 512, ["line-chart"], "f201", "M64 400C64 408.8 71.16 416 80 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H80C35.82 480 0 444.2 0 400V64C0 46.33 14.33 32 32 32C49.67 32 64 46.33 64 64V400zM342.6 278.6C330.1 291.1 309.9 291.1 297.4 278.6L240 221.3L150.6 310.6C138.1 323.1 117.9 323.1 105.4 310.6C92.88 298.1 92.88 277.9 105.4 265.4L217.4 153.4C229.9 140.9 250.1 140.9 262.6 153.4L320 210.7L425.4 105.4C437.9 92.88 458.1 92.88 470.6 105.4C483.1 117.9 483.1 138.1 470.6 150.6L342.6 278.6z"], + "chart-pie": [576, 512, ["pie-chart"], "f200", "M304 16.58C304 7.555 310.1 0 320 0C443.7 0 544 100.3 544 224C544 233 536.4 240 527.4 240H304V16.58zM32 272C32 150.7 122.1 50.34 238.1 34.25C248.2 32.99 256 40.36 256 49.61V288L412.5 444.5C419.2 451.2 418.7 462.2 411 467.7C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zM558.4 288C567.6 288 575 295.8 573.8 305C566.1 360.9 539.1 410.6 499.9 447.3C493.9 452.1 484.5 452.5 478.7 446.7L320 288H558.4z"], + "chart-simple": [448, 512, [], "e473", "M160 80C160 53.49 181.5 32 208 32H240C266.5 32 288 53.49 288 80V432C288 458.5 266.5 480 240 480H208C181.5 480 160 458.5 160 432V80zM0 272C0 245.5 21.49 224 48 224H80C106.5 224 128 245.5 128 272V432C128 458.5 106.5 480 80 480H48C21.49 480 0 458.5 0 432V272zM400 96C426.5 96 448 117.5 448 144V432C448 458.5 426.5 480 400 480H368C341.5 480 320 458.5 320 432V144C320 117.5 341.5 96 368 96H400z"], + "check": [448, 512, [10004, 10003], "f00c", "M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"], + "check-double": [448, 512, [], "f560", "M182.6 246.6C170.1 259.1 149.9 259.1 137.4 246.6L57.37 166.6C44.88 154.1 44.88 133.9 57.37 121.4C69.87 108.9 90.13 108.9 102.6 121.4L159.1 178.7L297.4 41.37C309.9 28.88 330.1 28.88 342.6 41.37C355.1 53.87 355.1 74.13 342.6 86.63L182.6 246.6zM182.6 470.6C170.1 483.1 149.9 483.1 137.4 470.6L9.372 342.6C-3.124 330.1-3.124 309.9 9.372 297.4C21.87 284.9 42.13 284.9 54.63 297.4L159.1 402.7L393.4 169.4C405.9 156.9 426.1 156.9 438.6 169.4C451.1 181.9 451.1 202.1 438.6 214.6L182.6 470.6z"], + "check-to-slot": [576, 512, ["vote-yea"], "f772", "M480 80C480 53.49 458.5 32 432 32h-288C117.5 32 96 53.49 96 80V384h384V80zM378.9 166.8l-88 112c-4.031 5.156-10 8.438-16.53 9.062C273.6 287.1 272.7 287.1 271.1 287.1c-5.719 0-11.21-2.019-15.58-5.769l-56-48C190.3 225.6 189.2 210.4 197.8 200.4c8.656-10.06 23.81-11.19 33.84-2.594l36.97 31.69l72.53-92.28c8.188-10.41 23.31-12.22 33.69-4.062C385.3 141.3 387.1 156.4 378.9 166.8zM528 288H512v112c0 8.836-7.164 16-16 16h-416C71.16 416 64 408.8 64 400V288H48C21.49 288 0 309.5 0 336v96C0 458.5 21.49 480 48 480h480c26.51 0 48-21.49 48-48v-96C576 309.5 554.5 288 528 288z"], + "cheese": [512, 512, [], "f7ef", "M0 288v159.1C0 465.6 14.38 480 32 480h448c17.62 0 32-14.38 32-31.1V288H0zM299.9 32.01c-7.75-.25-15.25 2.25-21.12 6.1L0 255.1l512-.0118C512 136.1 417.1 38.26 299.9 32.01z"], + "chess": [512, 512, [], "f439", "M74.01 208h-10c-8.875 0-16 7.125-16 16v16c0 8.875 7.122 16 15.1 16h16c-.25 43.13-5.5 86.13-16 128h128c-10.5-41.88-15.75-84.88-16-128h15.1c8.875 0 16-7.125 16-16L208 224c0-8.875-7.122-16-15.1-16h-10l33.88-90.38C216.6 115.8 216.9 113.1 216.9 112.1C216.9 103.1 209.5 96 200.9 96H144V64h16c8.844 0 16-7.156 16-16S168.9 32 160 32h-16l.0033-16c0-8.844-7.16-16-16-16s-16 7.156-16 16V32H96.01c-8.844 0-16 7.156-16 16S87.16 64 96.01 64h16v32H55.13C46.63 96 39.07 102.8 39.07 111.9c0 1.93 .3516 3.865 1.061 5.711L74.01 208zM339.9 301.8L336.6 384h126.8l-3.25-82.25l24.5-20.75C491.9 274.9 496 266 496 256.5V198C496 194.6 493.4 192 489.1 192h-26.37c-3.375 0-6 2.625-6 6V224h-24.75V198C432.9 194.6 430.3 192 426.9 192h-53.75c-3.375 0-6 2.625-6 6V224h-24.75V198C342.4 194.6 339.8 192 336.4 192h-26.38C306.6 192 304 194.6 304 198v58.62c0 9.375 4.125 18.25 11.38 24.38L339.9 301.8zM384 304C384 295.1 391.1 288 400 288S416 295.1 416 304v32h-32V304zM247.1 459.6L224 448v-16C224 423.1 216.9 416 208 416h-160C39.13 416 32 423.1 32 432V448l-23.12 11.62C3.375 462.3 0 467.9 0 473.9V496C0 504.9 7.125 512 16 512h224c8.875 0 16-7.125 16-16v-22.12C256 467.9 252.6 462.3 247.1 459.6zM503.1 459.6L480 448v-16c0-8.875-7.125-16-16-16h-128c-8.875 0-16 7.125-16 16V448l-23.12 11.62C291.4 462.3 288 467.9 288 473.9V496c0 8.875 7.125 16 16 16h192c8.875 0 16-7.125 16-16v-22.12C512 467.9 508.6 462.3 503.1 459.6z"], + "chess-bishop": [320, 512, [9821], "f43a", "M272 448h-224C21.49 448 0 469.5 0 496C0 504.8 7.164 512 16 512h288c8.836 0 16-7.164 16-16C320 469.5 298.5 448 272 448zM8 287.9c0 51.63 22.12 73.88 56 84.63V416h192v-43.5c33.88-10.75 56-33 56-84.63c0-30.62-10.75-67.13-26.75-102.5L185 285.6c-1.565 1.565-3.608 2.349-5.651 2.349c-2.036 0-4.071-.7787-5.63-2.339l-11.35-11.27c-1.56-1.56-2.339-3.616-2.339-5.672c0-2.063 .7839-4.128 2.349-5.693l107.9-107.9C249.5 117.3 223.8 83 199.4 62.5C213.4 59.13 224 47 224 32c0-17.62-14.38-32-32-32H128C110.4 0 96 14.38 96 32c0 15 10.62 27.12 24.62 30.5C67.75 106.8 8 214.5 8 287.9z"], + "chess-board": [448, 512, [], "f43c", "M192 224H128v64h64V224zM384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96C448 60.65 419.3 32 384 32zM384 160h-64v64h64v64h-64v64h64v64h-64v-64h-64v64H192v-64H128v64H64v-64h64V288H64V224h64V160H64V96h64v64h64V96h64v64h64V96h64V160zM192 288v64h64V288H192zM256 224V160H192v64H256zM256 288h64V224h-64V288z"], + "chess-king": [448, 512, [9818], "f43f", "M367.1 448H79.97c-26.51 0-48.01 21.49-48.01 47.1C31.96 504.8 39.13 512 47.96 512h352c8.838 0 16-7.163 16-16C416 469.5 394.5 448 367.1 448zM416.1 160h-160V112h16.01c17.6 0 31.98-14.4 31.98-32C303.1 62.4 289.6 48 272 48h-16.01V32C256 14.4 241.6 0 223.1 0C206.4 0 191.1 14.4 191.1 32.01V48H175.1c-17.6 0-32.01 14.4-32.01 32C143.1 97.6 158.4 112 175.1 112h16.01V160h-160C17.34 160 0 171.5 0 192C0 195.2 .4735 198.4 1.437 201.5L74.46 416h299.1l73.02-214.5C447.5 198.4 448 195.2 448 192C448 171.6 430.1 160 416.1 160z"], + "chess-knight": [384, 512, [9822], "f441", "M19 272.5l40.62 18C63.78 292.3 68.25 293.3 72.72 293.3c4 0 8.001-.7543 11.78-2.289l12.75-5.125c9.125-3.625 16-11.12 18.75-20.5L125.2 234.8C127 227.9 131.5 222.2 137.9 219.1L160 208v50.38C160 276.5 149.6 293.1 133.4 301.2L76.25 329.9C49.12 343.5 32 371.1 32 401.5V416h319.9l-.0417-192c0-105.1-85.83-192-191.8-192H12C5.375 32 0 37.38 0 44c0 2.625 .625 5.25 1.75 7.625L16 80L7 89C2.5 93.5 0 99.62 0 106V243.2C0 255.9 7.5 267.4 19 272.5zM52 128C63 128 72 137 72 148S63 168 52 168S32 159 32 148S41 128 52 128zM336 448H47.1C21.49 448 0 469.5 0 495.1C0 504.8 7.163 512 16 512h352c8.837 0 16-7.163 16-16C384 469.5 362.5 448 336 448z"], + "chess-pawn": [320, 512, [9823], "f443", "M105.1 224H80C71.12 224 64 231.1 64 240v32c0 8.875 7.125 15.1 16 15.1L96 288v5.5C96 337.5 91.88 380.1 72 416h176C228.1 380.1 224 337.5 224 293.5V288l16-.0001c8.875 0 16-7.125 16-15.1v-32C256 231.1 248.9 224 240 224h-25.12C244.3 205.6 264 173.2 264 136C264 78.5 217.5 32 159.1 32S56 78.5 56 136C56 173.2 75.74 205.6 105.1 224zM272 448H47.1C21.49 448 0 469.5 0 495.1C0 504.8 7.163 512 16 512h288c8.837 0 16-7.163 16-16C320 469.5 298.5 448 272 448z"], + "chess-queen": [512, 512, [9819], "f445", "M256 112c30.88 0 56-25.12 56-56S286.9 0 256 0S199.1 25.12 199.1 56S225.1 112 256 112zM399.1 448H111.1c-26.51 0-48 21.49-48 47.1C63.98 504.8 71.15 512 79.98 512h352c8.837 0 16-7.163 16-16C447.1 469.5 426.5 448 399.1 448zM511.1 197.4c0-5.178-2.509-10.2-7.096-13.26L476.4 168.2c-2.684-1.789-5.602-2.62-8.497-2.62c-17.22 0-17.39 26.37-51.92 26.37c-29.35 0-47.97-25.38-47.97-50.63C367.1 134 361.1 128 354.6 128h-38.75c-6 0-11.63 4-12.88 9.875C298.2 160.1 278.7 176 255.1 176c-22.75 0-42.25-15.88-47-38.12C207.7 132 202.2 128 196.1 128h-38.75C149.1 128 143.1 134 143.1 141.4c0 18.45-13.73 50.62-47.95 50.62c-34.58 0-34.87-26.39-51.87-26.39c-2.909 0-5.805 .8334-8.432 2.645l-28.63 16C2.509 187.2 0 192.3 0 197.4C0 199.9 .5585 202.3 1.72 204.6L104.2 416h303.5l102.5-211.4C511.4 202.3 511.1 199.8 511.1 197.4z"], + "chess-rook": [384, 512, [9820], "f447", "M368 32h-56c-8.875 0-16 7.125-16 16V96h-48V48c0-8.875-7.125-16-16-16h-80c-8.875 0-16 7.125-16 16V96H88.12V48c0-8.875-7.25-16-16-16H16C7.125 32 0 39.12 0 48V224l64 32c0 48.38-1.5 95-13.25 160h282.5C321.5 351 320 303.8 320 256l64-32V48C384 39.12 376.9 32 368 32zM224 320H160V256c0-17.62 14.38-32 32-32s32 14.38 32 32V320zM336 448H47.1C21.49 448 0 469.5 0 495.1C0 504.8 7.163 512 16 512h352c8.837 0 16-7.163 16-16C384 469.5 362.5 448 336 448z"], + "chevron-down": [448, 512, [], "f078", "M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"], + "chevron-left": [320, 512, [9001], "f053", "M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z"], + "chevron-right": [320, 512, [9002], "f054", "M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z"], + "chevron-up": [448, 512, [], "f077", "M416 352c-8.188 0-16.38-3.125-22.62-9.375L224 173.3l-169.4 169.4c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25C432.4 348.9 424.2 352 416 352z"], + "child": [320, 512, [], "f1ae", "M224 64C224 99.35 195.3 128 160 128C124.7 128 96 99.35 96 64C96 28.65 124.7 0 160 0C195.3 0 224 28.65 224 64zM144 384V480C144 497.7 129.7 512 112 512C94.33 512 80.01 497.7 80.01 480V287.8L59.09 321C49.67 336 29.92 340.5 14.96 331.1C.0016 321.7-4.491 301.9 4.924 286.1L44.79 223.6C69.72 184 113.2 160 160 160C206.8 160 250.3 184 275.2 223.6L315.1 286.1C324.5 301.9 320 321.7 305.1 331.1C290.1 340.5 270.3 336 260.9 321L240 287.8V480C240 497.7 225.7 512 208 512C190.3 512 176 497.7 176 480V384L144 384z"], + "child-dress": [320, 512, [], "e59c", "M223.1 64C223.1 99.35 195.3 128 159.1 128C124.7 128 95.1 99.35 95.1 64C95.1 28.65 124.7 0 159.1 0C195.3 0 223.1 28.65 223.1 64zM70.2 400C59.28 400 51.57 389.3 55.02 378.9L86.16 285.5L57.5 323.3C46.82 337.4 26.75 340.2 12.67 329.5C-1.415 318.8-4.175 298.7 6.503 284.7L65.4 206.1C87.84 177.4 122.9 160 160 160C197.2 160 232.2 177.4 254.6 206.1L313.5 284.7C324.2 298.7 321.4 318.8 307.3 329.5C293.3 340.2 273.2 337.4 262.5 323.3L233.9 285.6L264.1 378.9C268.4 389.3 260.7 400 249.8 400H232V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V400H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V400H70.2z"], + "child-reaching": [384, 512, [], "e59d", "M256 64C256 99.35 227.3 128 192 128C156.7 128 128 99.35 128 64C128 28.65 156.7 0 192 0C227.3 0 256 28.65 256 64zM155.7 170.2C167.3 173.1 179.6 176 192.2 176C232.1 176 269.3 155.8 291 122.4L309.2 94.54C318.8 79.73 338.6 75.54 353.5 85.18C368.3 94.82 372.5 114.6 362.8 129.5L344.7 157.3C326.4 185.4 301.2 207.3 272 221.6V480C272 497.7 257.7 512 240 512C222.3 512 208 497.7 208 480V384H176V480C176 497.7 161.7 512 144 512C126.3 512 112 497.7 112 480V221.4C83.63 207.4 58.94 186.1 40.87 158.1L21.37 129.8C11.57 115 15.54 95.18 30.25 85.37C44.95 75.57 64.82 79.54 74.62 94.25L94.12 123.5C108.5 145 129.2 160.9 152.9 169.3C153.9 169.5 154.8 169.8 155.7 170.2V170.2z"], + "child-rifle": [512, 512, [], "e4e0", "M79.1 64C79.1 28.65 108.7 .0003 143.1 .0003C179.3 .0003 207.1 28.65 207.1 64C207.1 99.35 179.3 128 143.1 128C108.7 128 79.1 99.35 79.1 64V64zM104 512C86.33 512 72 497.7 72 480V300.5L59.09 321C49.67 336 29.91 340.5 14.96 331.1C.0006 321.7-4.492 301.9 4.923 286.1L56.6 204.9C74.17 176.9 104.9 160 137.8 160H150.2C183.2 160 213.8 176.9 231.4 204.9L283.1 286.1C292.5 301.9 288 321.7 273 331.1C258.1 340.5 238.3 336 228.9 321L216 300.5V480C216 497.7 201.7 512 184 512C166.3 512 152 497.7 152 480V352H136V480C136 497.7 121.7 512 104 512V512zM432 16V132.3C441.6 137.8 448 148.2 448 160V269.3L464 264V208C464 199.2 471.2 192 480 192H496C504.8 192 512 199.2 512 208V292.5C512 299.4 507.6 305.5 501.1 307.6L448 325.3V352H496C504.8 352 512 359.2 512 368V384C512 392.8 504.8 400 496 400H452L475 492.1C477.6 502.2 469.9 512 459.5 512H400C391.2 512 384 504.8 384 496V400H368C350.3 400 336 385.7 336 368V224C336 206.3 350.3 192 368 192V160C368 148.2 374.4 137.8 384 132.3V32C375.2 32 368 24.84 368 16C368 7.164 375.2 0 384 0H416C424.8 0 432 7.164 432 16V16z"], + "children": [640, 512, [], "e4e1", "M95.1 64C95.1 28.65 124.7 0 159.1 0C195.3 0 223.1 28.65 223.1 64C223.1 99.35 195.3 128 159.1 128C124.7 128 95.1 99.35 95.1 64zM88 480V400H70.2C59.28 400 51.57 389.3 55.02 378.9L86.16 285.5L57.5 323.3C46.82 337.4 26.75 340.2 12.67 329.5C-1.415 318.8-4.175 298.7 6.503 284.7L65.4 206.1C87.84 177.4 122.9 160 160 160C197.2 160 232.2 177.4 254.6 206.1L313.5 284.7C324.2 298.7 321.4 318.8 307.3 329.5C293.3 340.2 273.2 337.4 262.5 323.3L233.9 285.6L264.1 378.9C268.4 389.3 260.7 400 249.8 400H232V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V400H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480H88zM416 64C416 28.65 444.7 0 480 0C515.3 0 544 28.65 544 64C544 99.35 515.3 128 480 128C444.7 128 416 99.35 416 64V64zM472 384V480C472 497.7 457.7 512 440 512C422.3 512 408 497.7 408 480V300.5L395.1 321C385.7 336 365.9 340.5 350.1 331.1C336 321.7 331.5 301.9 340.9 286.1L392.6 204.9C410.2 176.9 440.9 159.1 473.8 159.1H486.2C519.2 159.1 549.8 176.9 567.4 204.9L619.1 286.1C628.5 301.9 624 321.7 609 331.1C594.1 340.5 574.3 336 564.9 321L552 300.5V480C552 497.7 537.7 512 520 512C502.3 512 488 497.7 488 480V384L472 384z"], + "church": [640, 512, [9962], "f51d", "M344 48H376C389.3 48 400 58.75 400 72C400 85.25 389.3 96 376 96H344V142.4L456.7 210C471.2 218.7 480 234.3 480 251.2V512H384V416C384 380.7 355.3 352 320 352C284.7 352 256 380.7 256 416V512H160V251.2C160 234.3 168.8 218.7 183.3 210L296 142.4V96H264C250.7 96 240 85.25 240 72C240 58.75 250.7 48 264 48H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V48zM24.87 330.3L128 273.6V512H48C21.49 512 0 490.5 0 464V372.4C0 354.9 9.53 338.8 24.87 330.3V330.3zM592 512H512V273.6L615.1 330.3C630.5 338.8 640 354.9 640 372.4V464C640 490.5 618.5 512 592 512V512z"], + "circle": [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9898, 9899, 11044, 61708, 61915, 9679], "f111", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"], + "circle-arrow-down": [512, 512, ["arrow-circle-down"], "f0ab", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM382.6 302.6l-103.1 103.1C270.7 414.6 260.9 416 256 416c-4.881 0-14.65-1.391-22.65-9.398L129.4 302.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 306.8V128c0-17.69 14.33-32 32-32s32 14.31 32 32v178.8l49.38-49.38c12.5-12.5 32.75-12.5 45.25 0S395.1 290.1 382.6 302.6z"], + "circle-arrow-left": [512, 512, ["arrow-circle-left"], "f0a8", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM384 288H205.3l49.38 49.38c12.5 12.5 12.5 32.75 0 45.25s-32.75 12.5-45.25 0L105.4 278.6C97.4 270.7 96 260.9 96 256c0-4.883 1.391-14.66 9.398-22.65l103.1-103.1c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L205.3 224H384c17.69 0 32 14.33 32 32S401.7 288 384 288z"], + "circle-arrow-right": [512, 512, ["arrow-circle-right"], "f0a9", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM406.6 278.6l-103.1 103.1c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25L306.8 288H128C110.3 288 96 273.7 96 256s14.31-32 32-32h178.8l-49.38-49.38c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l103.1 103.1C414.6 241.3 416 251.1 416 256C416 260.9 414.6 270.7 406.6 278.6z"], + "circle-arrow-up": [512, 512, ["arrow-circle-up"], "f0aa", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM382.6 254.6c-12.5 12.5-32.75 12.5-45.25 0L288 205.3V384c0 17.69-14.33 32-32 32s-32-14.31-32-32V205.3L174.6 254.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l103.1-103.1C241.3 97.4 251.1 96 256 96c4.881 0 14.65 1.391 22.65 9.398l103.1 103.1C395.1 221.9 395.1 242.1 382.6 254.6z"], + "circle-check": [512, 512, [61533, "check-circle"], "f058", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM371.8 211.8C382.7 200.9 382.7 183.1 371.8 172.2C360.9 161.3 343.1 161.3 332.2 172.2L224 280.4L179.8 236.2C168.9 225.3 151.1 225.3 140.2 236.2C129.3 247.1 129.3 264.9 140.2 275.8L204.2 339.8C215.1 350.7 232.9 350.7 243.8 339.8L371.8 211.8z"], + "circle-chevron-down": [512, 512, ["chevron-circle-down"], "f13a", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM390.6 246.6l-112 112C272.4 364.9 264.2 368 256 368s-16.38-3.125-22.62-9.375l-112-112c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L256 290.8l89.38-89.38c12.5-12.5 32.75-12.5 45.25 0S403.1 234.1 390.6 246.6z"], + "circle-chevron-left": [512, 512, ["chevron-circle-left"], "f137", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM310.6 345.4c12.5 12.5 12.5 32.75 0 45.25s-32.75 12.5-45.25 0l-112-112C147.1 272.4 144 264.2 144 256s3.125-16.38 9.375-22.62l112-112c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L221.3 256L310.6 345.4z"], + "circle-chevron-right": [512, 512, ["chevron-circle-right"], "f138", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM358.6 278.6l-112 112c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25L290.8 256L201.4 166.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l112 112C364.9 239.6 368 247.8 368 256S364.9 272.4 358.6 278.6z"], + "circle-chevron-up": [512, 512, ["chevron-circle-up"], "f139", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM390.6 310.6c-12.5 12.5-32.75 12.5-45.25 0L256 221.3L166.6 310.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l112-112C239.6 147.1 247.8 144 256 144s16.38 3.125 22.62 9.375l112 112C403.1 277.9 403.1 298.1 390.6 310.6z"], + "circle-dollar-to-slot": [512, 512, ["donate"], "f4b9", "M326.7 403.7C304.7 411.6 280.8 416 256 416C231.2 416 207.3 411.6 185.3 403.7C184.1 403.6 184.7 403.5 184.5 403.4C154.4 392.4 127.6 374.6 105.9 352C70.04 314.6 48 263.9 48 208C48 93.12 141.1 0 256 0C370.9 0 464 93.12 464 208C464 263.9 441.1 314.6 406.1 352C405.1 353 404.1 354.1 403.1 355.1C381.7 376.4 355.7 393.2 326.7 403.7L326.7 403.7zM235.9 111.1V118C230.3 119.2 224.1 120.9 220 123.1C205.1 129.9 192.1 142.5 188.9 160.8C187.1 171 188.1 180.9 192.3 189.8C196.5 198.6 203 204.8 209.6 209.3C221.2 217.2 236.5 221.8 248.2 225.3L250.4 225.9C264.4 230.2 273.8 233.3 279.7 237.6C282.2 239.4 283.1 240.8 283.4 241.7C283.8 242.5 284.4 244.3 283.7 248.3C283.1 251.8 281.2 254.8 275.7 257.1C269.6 259.7 259.7 261 246.9 259C240.9 258 230.2 254.4 220.7 251.2C218.5 250.4 216.3 249.7 214.3 249C203.8 245.5 192.5 251.2 189 261.7C185.5 272.2 191.2 283.5 201.7 286.1C202.9 287.4 204.4 287.9 206.1 288.5C213.1 291.2 226.4 295.4 235.9 297.6V304C235.9 315.1 244.9 324.1 255.1 324.1C267.1 324.1 276.1 315.1 276.1 304V298.5C281.4 297.5 286.6 295.1 291.4 293.9C307.2 287.2 319.8 274.2 323.1 255.2C324.9 244.8 324.1 234.8 320.1 225.7C316.2 216.7 309.9 210.1 303.2 205.3C291.1 196.4 274.9 191.6 262.8 187.9L261.1 187.7C247.8 183.4 238.2 180.4 232.1 176.2C229.5 174.4 228.7 173.2 228.5 172.7C228.3 172.3 227.7 171.1 228.3 167.7C228.7 165.7 230.2 162.4 236.5 159.6C242.1 156.7 252.9 155.1 265.1 156.1C269.5 157.7 283 160.3 286.9 161.3C297.5 164.2 308.5 157.8 311.3 147.1C314.2 136.5 307.8 125.5 297.1 122.7C292.7 121.5 282.7 119.5 276.1 118.3V112C276.1 100.9 267.1 91.9 256 91.9C244.9 91.9 235.9 100.9 235.9 112V111.1zM48 352H63.98C83.43 377.9 108 399.7 136.2 416H64V448H448V416H375.8C403.1 399.7 428.6 377.9 448 352H464C490.5 352 512 373.5 512 400V464C512 490.5 490.5 512 464 512H48C21.49 512 0 490.5 0 464V400C0 373.5 21.49 352 48 352H48z"], + "circle-dot": [512, 512, [128280, "dot-circle"], "f192", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 352C309 352 352 309 352 256C352 202.1 309 160 256 160C202.1 160 160 202.1 160 256C160 309 202.1 352 256 352z"], + "circle-down": [512, 512, [61466, "arrow-alt-circle-down"], "f358", "M256 512c141.4 0 256-114.6 256-256s-114.6-256-256-256C114.6 0 0 114.6 0 256S114.6 512 256 512zM129.2 265.9C131.7 259.9 137.5 256 144 256h64V160c0-17.67 14.33-32 32-32h32c17.67 0 32 14.33 32 32v96h64c6.469 0 12.31 3.891 14.78 9.875c2.484 5.984 1.109 12.86-3.469 17.44l-112 112c-6.248 6.248-16.38 6.248-22.62 0l-112-112C128.1 278.7 126.7 271.9 129.2 265.9z"], + "circle-exclamation": [512, 512, ["exclamation-circle"], "f06a", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"], + "circle-h": [512, 512, [9405, "hospital-symbol"], "f47e", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM368 360c0 13.25-10.75 24-24 24S320 373.3 320 360v-80H192v80C192 373.3 181.3 384 168 384S144 373.3 144 360v-208C144 138.8 154.8 128 168 128S192 138.8 192 152v80h128v-80C320 138.8 330.8 128 344 128s24 10.75 24 24V360z"], + "circle-half-stroke": [512, 512, [9680, "adjust"], "f042", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 64V448C362 448 448 362 448 256C448 149.1 362 64 256 64z"], + "circle-info": [512, 512, ["info-circle"], "f05a", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"], + "circle-left": [512, 512, [61840, "arrow-alt-circle-left"], "f359", "M0 256c0 141.4 114.6 256 256 256s256-114.6 256-256c0-141.4-114.6-256-256-256S0 114.6 0 256zM246.1 129.2C252.1 131.7 256 137.5 256 144v64h96c17.67 0 32 14.33 32 32v32c0 17.67-14.33 32-32 32h-96v64c0 6.469-3.891 12.31-9.875 14.78c-5.984 2.484-12.86 1.109-17.44-3.469l-112-112c-6.248-6.248-6.248-16.38 0-22.62l112-112C233.3 128.1 240.1 126.7 246.1 129.2z"], + "circle-minus": [512, 512, ["minus-circle"], "f056", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM168 232C154.7 232 144 242.7 144 256C144 269.3 154.7 280 168 280H344C357.3 280 368 269.3 368 256C368 242.7 357.3 232 344 232H168z"], + "circle-nodes": [512, 512, [], "e4e2", "M380.6 365.6C401.1 379.9 416 404.3 416 432C416 476.2 380.2 512 336 512C291.8 512 256 476.2 256 432C256 423.6 257.3 415.4 259.7 407.8L114.1 280.4C103.8 285.3 92.21 288 80 288C35.82 288 0 252.2 0 208C0 163.8 35.82 128 80 128C101.9 128 121.7 136.8 136.2 151.1L320 77.52C321.3 34.48 356.6 0 400 0C444.2 0 480 35.82 480 80C480 117.9 453.7 149.6 418.4 157.9L380.6 365.6zM156.3 232.2L301.9 359.6C306.9 357.3 312.1 355.4 317.6 354.1L355.4 146.4C351.2 143.6 347.4 140.4 343.8 136.9L159.1 210.5C159.7 218 158.5 225.3 156.3 232.2V232.2z"], + "circle-notch": [512, 512, [], "f1ce", "M222.7 32.15C227.7 49.08 218.1 66.9 201.1 71.94C121.8 95.55 64 169.1 64 255.1C64 362 149.1 447.1 256 447.1C362 447.1 448 362 448 255.1C448 169.1 390.2 95.55 310.9 71.94C293.9 66.9 284.3 49.08 289.3 32.15C294.4 15.21 312.2 5.562 329.1 10.6C434.9 42.07 512 139.1 512 255.1C512 397.4 397.4 511.1 256 511.1C114.6 511.1 0 397.4 0 255.1C0 139.1 77.15 42.07 182.9 10.6C199.8 5.562 217.6 15.21 222.7 32.15V32.15z"], + "circle-pause": [512, 512, [62092, "pause-circle"], "f28b", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM224 191.1v128C224 337.7 209.7 352 192 352S160 337.7 160 320V191.1C160 174.3 174.3 160 191.1 160S224 174.3 224 191.1zM352 191.1v128C352 337.7 337.7 352 320 352S288 337.7 288 320V191.1C288 174.3 302.3 160 319.1 160S352 174.3 352 191.1z"], + "circle-play": [512, 512, [61469, "play-circle"], "f144", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM176 168V344C176 352.7 180.7 360.7 188.3 364.9C195.8 369.2 205.1 369 212.5 364.5L356.5 276.5C363.6 272.1 368 264.4 368 256C368 247.6 363.6 239.9 356.5 235.5L212.5 147.5C205.1 142.1 195.8 142.8 188.3 147.1C180.7 151.3 176 159.3 176 168V168z"], + "circle-plus": [512, 512, ["plus-circle"], "f055", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 368C269.3 368 280 357.3 280 344V280H344C357.3 280 368 269.3 368 256C368 242.7 357.3 232 344 232H280V168C280 154.7 269.3 144 256 144C242.7 144 232 154.7 232 168V232H168C154.7 232 144 242.7 144 256C144 269.3 154.7 280 168 280H232V344C232 357.3 242.7 368 256 368z"], + "circle-question": [512, 512, [62108, "question-circle"], "f059", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"], + "circle-radiation": [512, 512, [9762, "radiation-alt"], "f7ba", "M226.4 208.6L184.8 141.9C179.6 133.7 168.3 132 160.7 138.2C130.8 162.3 110.1 197.4 105.1 237.4C103.9 247.2 111.2 256 121 256H200C200 236 210.6 218.6 226.4 208.6zM256 288c17.67 0 32-14.33 32-32s-14.33-32-32-32C238.3 224 224 238.3 224 256S238.3 288 256 288zM285.6 303.3C276.1 308.7 266.9 312 256 312c-10.89 0-20.98-3.252-29.58-8.65l-41.74 66.8c-5.211 8.338-1.613 19.07 7.27 23.29C211.4 402.7 233.1 408 256 408c22.97 0 44.64-5.334 64.12-14.59c8.883-4.219 12.48-14.95 7.262-23.29L285.6 303.3zM351.4 138.2c-7.604-6.145-18.86-4.518-24.04 3.77l-41.71 66.67C301.4 218.6 312 236 312 256h78.96c9.844 0 17.11-8.791 15.91-18.56C401.9 197.5 381.3 162.4 351.4 138.2zM256 16C123.4 16 16 123.4 16 256s107.4 240 240 240c132.6 0 240-107.4 240-240S388.6 16 256 16zM256 432c-97.05 0-176-78.99-176-176S158.1 80 256 80s176 78.95 176 176S353 432 256 432z"], + "circle-right": [512, 512, [61838, "arrow-alt-circle-right"], "f35a", "M512 256c0-141.4-114.6-256-256-256S0 114.6 0 256c0 141.4 114.6 256 256 256S512 397.4 512 256zM265.9 382.8C259.9 380.3 256 374.5 256 368v-64H160c-17.67 0-32-14.33-32-32v-32c0-17.67 14.33-32 32-32h96v-64c0-6.469 3.891-12.31 9.875-14.78c5.984-2.484 12.86-1.109 17.44 3.469l112 112c6.248 6.248 6.248 16.38 0 22.62l-112 112C278.7 383.9 271.9 385.3 265.9 382.8z"], + "circle-stop": [512, 512, [62094, "stop-circle"], "f28d", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM352 328c0 13.2-10.8 24-24 24h-144C170.8 352 160 341.2 160 328v-144C160 170.8 170.8 160 184 160h144C341.2 160 352 170.8 352 184V328z"], + "circle-up": [512, 512, [61467, "arrow-alt-circle-up"], "f35b", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256c141.4 0 256-114.6 256-256S397.4 0 256 0zM382.8 246.1C380.3 252.1 374.5 256 368 256h-64v96c0 17.67-14.33 32-32 32h-32c-17.67 0-32-14.33-32-32V256h-64C137.5 256 131.7 252.1 129.2 246.1C126.7 240.1 128.1 233.3 132.7 228.7l112-112c6.248-6.248 16.38-6.248 22.62 0l112 112C383.9 233.3 385.3 240.1 382.8 246.1z"], + "circle-user": [512, 512, [62142, "user-circle"], "f2bd", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c39.77 0 72 32.24 72 72S295.8 272 256 272c-39.76 0-72-32.24-72-72S216.2 128 256 128zM256 448c-52.93 0-100.9-21.53-135.7-56.29C136.5 349.9 176.5 320 224 320h64c47.54 0 87.54 29.88 103.7 71.71C356.9 426.5 308.9 448 256 448z"], + "circle-xmark": [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM175 208.1L222.1 255.1L175 303C165.7 312.4 165.7 327.6 175 336.1C184.4 346.3 199.6 346.3 208.1 336.1L255.1 289.9L303 336.1C312.4 346.3 327.6 346.3 336.1 336.1C346.3 327.6 346.3 312.4 336.1 303L289.9 255.1L336.1 208.1C346.3 199.6 346.3 184.4 336.1 175C327.6 165.7 312.4 165.7 303 175L255.1 222.1L208.1 175C199.6 165.7 184.4 165.7 175 175C165.7 184.4 165.7 199.6 175 208.1V208.1z"], + "city": [640, 512, [127961], "f64f", "M480 192H592C618.5 192 640 213.5 640 240V464C640 490.5 618.5 512 592 512H48C21.49 512 0 490.5 0 464V144C0 117.5 21.49 96 48 96H64V24C64 10.75 74.75 0 88 0C101.3 0 112 10.75 112 24V96H176V24C176 10.75 186.7 0 200 0C213.3 0 224 10.75 224 24V96H288V48C288 21.49 309.5 0 336 0H432C458.5 0 480 21.49 480 48V192zM576 368C576 359.2 568.8 352 560 352H528C519.2 352 512 359.2 512 368V400C512 408.8 519.2 416 528 416H560C568.8 416 576 408.8 576 400V368zM240 416C248.8 416 256 408.8 256 400V368C256 359.2 248.8 352 240 352H208C199.2 352 192 359.2 192 368V400C192 408.8 199.2 416 208 416H240zM128 368C128 359.2 120.8 352 112 352H80C71.16 352 64 359.2 64 368V400C64 408.8 71.16 416 80 416H112C120.8 416 128 408.8 128 400V368zM528 256C519.2 256 512 263.2 512 272V304C512 312.8 519.2 320 528 320H560C568.8 320 576 312.8 576 304V272C576 263.2 568.8 256 560 256H528zM256 176C256 167.2 248.8 160 240 160H208C199.2 160 192 167.2 192 176V208C192 216.8 199.2 224 208 224H240C248.8 224 256 216.8 256 208V176zM80 160C71.16 160 64 167.2 64 176V208C64 216.8 71.16 224 80 224H112C120.8 224 128 216.8 128 208V176C128 167.2 120.8 160 112 160H80zM256 272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272zM112 320C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304C64 312.8 71.16 320 80 320H112zM416 272C416 263.2 408.8 256 400 256H368C359.2 256 352 263.2 352 272V304C352 312.8 359.2 320 368 320H400C408.8 320 416 312.8 416 304V272zM368 64C359.2 64 352 71.16 352 80V112C352 120.8 359.2 128 368 128H400C408.8 128 416 120.8 416 112V80C416 71.16 408.8 64 400 64H368zM416 176C416 167.2 408.8 160 400 160H368C359.2 160 352 167.2 352 176V208C352 216.8 359.2 224 368 224H400C408.8 224 416 216.8 416 208V176z"], + "clapperboard": [512, 512, [], "e131", "M326.1 160l127.4-127.4C451.7 32.39 449.9 32 448 32h-86.06l-128 128H326.1zM166.1 160l128-128H201.9l-128 128H166.1zM497.7 56.19L393.9 160H512V96C512 80.87 506.5 67.15 497.7 56.19zM134.1 32H64C28.65 32 0 60.65 0 96v64h6.062L134.1 32zM0 416c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V192H0V416z"], + "clipboard": [384, 512, [128203], "f328", "M336 64h-53.88C268.9 26.8 233.7 0 192 0S115.1 26.8 101.9 64H48C21.5 64 0 85.48 0 112v352C0 490.5 21.5 512 48 512h288c26.5 0 48-21.48 48-48v-352C384 85.48 362.5 64 336 64zM192 64c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S160 113.7 160 96C160 78.33 174.3 64 192 64zM272 224h-160C103.2 224 96 216.8 96 208C96 199.2 103.2 192 112 192h160C280.8 192 288 199.2 288 208S280.8 224 272 224z"], + "clipboard-check": [384, 512, [], "f46c", "M336 64h-53.88C268.9 26.8 233.7 0 192 0S115.1 26.8 101.9 64H48C21.5 64 0 85.48 0 112v352C0 490.5 21.5 512 48 512h288c26.5 0 48-21.48 48-48v-352C384 85.48 362.5 64 336 64zM192 64c17.67 0 32 14.33 32 32s-14.33 32-32 32S160 113.7 160 96S174.3 64 192 64zM282.9 262.8l-88 112c-4.047 5.156-10.02 8.438-16.53 9.062C177.6 383.1 176.8 384 176 384c-5.703 0-11.25-2.031-15.62-5.781l-56-48c-10.06-8.625-11.22-23.78-2.594-33.84c8.609-10.06 23.77-11.22 33.84-2.594l36.98 31.69l72.52-92.28c8.188-10.44 23.3-12.22 33.7-4.062C289.3 237.3 291.1 252.4 282.9 262.8z"], + "clipboard-list": [384, 512, [], "f46d", "M336 64h-53.88C268.9 26.8 233.7 0 192 0S115.1 26.8 101.9 64H48C21.5 64 0 85.48 0 112v352C0 490.5 21.5 512 48 512h288c26.5 0 48-21.48 48-48v-352C384 85.48 362.5 64 336 64zM96 392c-13.25 0-24-10.75-24-24S82.75 344 96 344s24 10.75 24 24S109.3 392 96 392zM96 296c-13.25 0-24-10.75-24-24S82.75 248 96 248S120 258.8 120 272S109.3 296 96 296zM192 64c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S160 113.7 160 96C160 78.33 174.3 64 192 64zM304 384h-128C167.2 384 160 376.8 160 368C160 359.2 167.2 352 176 352h128c8.801 0 16 7.199 16 16C320 376.8 312.8 384 304 384zM304 288h-128C167.2 288 160 280.8 160 272C160 263.2 167.2 256 176 256h128C312.8 256 320 263.2 320 272C320 280.8 312.8 288 304 288z"], + "clipboard-question": [384, 512, [], "e4e3", "M282.5 64H320C355.3 64 384 92.65 384 128V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H101.5C114.6 26.71 150.2 0 192 0C233.8 0 269.4 26.71 282.5 64zM192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96C160 113.7 174.3 128 192 128zM105.4 230.5C100.9 243 107.5 256.7 119.1 261.2C132.5 265.6 146.2 259.1 150.6 246.6L151.1 245.3C152.2 242.1 155.2 240 158.6 240H216.9C225.2 240 232 246.8 232 255.1C232 260.6 229.1 265.6 224.4 268.3L180.1 293.7C172.6 298 168 305.9 168 314.5V328C168 341.3 178.7 352 192 352C205.1 352 215.8 341.5 215.1 328.4L248.3 309.9C267.9 298.7 280 277.8 280 255.1C280 220.3 251.7 192 216.9 192H158.6C134.9 192 113.8 206.9 105.8 229.3L105.4 230.5zM192 384C174.3 384 160 398.3 160 416C160 433.7 174.3 448 192 448C209.7 448 224 433.7 224 416C224 398.3 209.7 384 192 384z"], + "clipboard-user": [384, 512, [], "f7f3", "M336 64h-53.88C268.9 26.8 233.7 0 192 0S115.1 26.8 101.9 64H48C21.5 64 0 85.48 0 112v352C0 490.5 21.5 512 48 512h288c26.5 0 48-21.48 48-48v-352C384 85.48 362.5 64 336 64zM192 64c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S160 113.7 160 96C160 78.33 174.3 64 192 64zM192 192c35.35 0 64 28.65 64 64s-28.65 64-64 64S128 291.3 128 256S156.7 192 192 192zM288 448H96c-8.836 0-16-7.164-16-16C80 387.8 115.8 352 160 352h64c44.18 0 80 35.82 80 80C304 440.8 296.8 448 288 448z"], + "clock": [512, 512, [128339, "clock-four"], "f017", "M256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512zM232 256C232 264 236 271.5 242.7 275.1L338.7 339.1C349.7 347.3 364.6 344.3 371.1 333.3C379.3 322.3 376.3 307.4 365.3 300L280 243.2V120C280 106.7 269.3 96 255.1 96C242.7 96 231.1 106.7 231.1 120L232 256z"], + "clock-rotate-left": [512, 512, ["history"], "f1da", "M256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C201.7 512 151.2 495 109.7 466.1C95.2 455.1 91.64 436 101.8 421.5C111.9 407 131.8 403.5 146.3 413.6C177.4 435.3 215.2 448 256 448C362 448 448 362 448 256C448 149.1 362 64 256 64C202.1 64 155 85.46 120.2 120.2L151 151C166.1 166.1 155.4 192 134.1 192H24C10.75 192 0 181.3 0 168V57.94C0 36.56 25.85 25.85 40.97 40.97L74.98 74.98C121.3 28.69 185.3 0 255.1 0L256 0zM256 128C269.3 128 280 138.7 280 152V246.1L344.1 311C354.3 320.4 354.3 335.6 344.1 344.1C335.6 354.3 320.4 354.3 311 344.1L239 272.1C234.5 268.5 232 262.4 232 256V152C232 138.7 242.7 128 256 128V128z"], + "clone": [512, 512, [], "f24d", "M0 224C0 188.7 28.65 160 64 160H128V288C128 341 170.1 384 224 384H352V448C352 483.3 323.3 512 288 512H64C28.65 512 0 483.3 0 448V224zM224 352C188.7 352 160 323.3 160 288V64C160 28.65 188.7 0 224 0H448C483.3 0 512 28.65 512 64V288C512 323.3 483.3 352 448 352H224z"], + "closed-captioning": [576, 512, [], "f20a", "M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM168.6 289.9c18.69 18.72 49.19 18.72 67.87 0c9.375-9.375 24.56-9.375 33.94 0s9.375 24.56 0 33.94c-18.72 18.72-43.28 28.08-67.87 28.08s-49.16-9.359-67.87-28.08C116.5 305.8 106.5 281.6 106.5 256s9.1-49.75 28.12-67.88c37.44-37.44 98.31-37.44 135.7 0c9.375 9.375 9.375 24.56 0 33.94s-24.56 9.375-33.94 0c-18.69-18.72-49.19-18.72-67.87 0C159.5 231.1 154.5 243.2 154.5 256S159.5 280.9 168.6 289.9zM360.6 289.9c18.69 18.72 49.19 18.72 67.87 0c9.375-9.375 24.56-9.375 33.94 0s9.375 24.56 0 33.94c-18.72 18.72-43.28 28.08-67.87 28.08s-49.16-9.359-67.87-28.08C308.5 305.8 298.5 281.6 298.5 256s9.1-49.75 28.12-67.88c37.44-37.44 98.31-37.44 135.7 0c9.375 9.375 9.375 24.56 0 33.94s-24.56 9.375-33.94 0c-18.69-18.72-49.19-18.72-67.87 0C351.5 231.1 346.5 243.2 346.5 256S351.5 280.9 360.6 289.9z"], + "cloud": [640, 512, [9729], "f0c2", "M96.2 200.1C96.07 197.4 96 194.7 96 192C96 103.6 167.6 32 256 32C315.3 32 367 64.25 394.7 112.2C409.9 101.1 428.3 96 448 96C501 96 544 138.1 544 192C544 204.2 541.7 215.8 537.6 226.6C596 238.4 640 290.1 640 352C640 422.7 582.7 480 512 480H144C64.47 480 0 415.5 0 336C0 273.2 40.17 219.8 96.2 200.1z"], + "cloud-arrow-down": [640, 512, [62337, "cloud-download", "cloud-download-alt"], "f0ed", "M144 480C64.47 480 0 415.5 0 336C0 273.2 40.17 219.8 96.2 200.1C96.07 197.4 96 194.7 96 192C96 103.6 167.6 32 256 32C315.3 32 367 64.25 394.7 112.2C409.9 101.1 428.3 96 448 96C501 96 544 138.1 544 192C544 204.2 541.7 215.8 537.6 226.6C596 238.4 640 290.1 640 352C640 422.7 582.7 480 512 480H144zM303 392.1C312.4 402.3 327.6 402.3 336.1 392.1L416.1 312.1C426.3 303.6 426.3 288.4 416.1 279C407.6 269.7 392.4 269.7 383 279L344 318.1V184C344 170.7 333.3 160 320 160C306.7 160 296 170.7 296 184V318.1L256.1 279C247.6 269.7 232.4 269.7 223 279C213.7 288.4 213.7 303.6 223 312.1L303 392.1z"], + "cloud-arrow-up": [640, 512, [62338, "cloud-upload", "cloud-upload-alt"], "f0ee", "M144 480C64.47 480 0 415.5 0 336C0 273.2 40.17 219.8 96.2 200.1C96.07 197.4 96 194.7 96 192C96 103.6 167.6 32 256 32C315.3 32 367 64.25 394.7 112.2C409.9 101.1 428.3 96 448 96C501 96 544 138.1 544 192C544 204.2 541.7 215.8 537.6 226.6C596 238.4 640 290.1 640 352C640 422.7 582.7 480 512 480H144zM223 263C213.7 272.4 213.7 287.6 223 296.1C232.4 306.3 247.6 306.3 256.1 296.1L296 257.9V392C296 405.3 306.7 416 320 416C333.3 416 344 405.3 344 392V257.9L383 296.1C392.4 306.3 407.6 306.3 416.1 296.1C426.3 287.6 426.3 272.4 416.1 263L336.1 183C327.6 173.7 312.4 173.7 303 183L223 263z"], + "cloud-bolt": [512, 512, [127785, "thunderstorm"], "f76c", "M352 351.1h-71.25l47.44-105.4c3.062-6.781 1.031-14.81-4.906-19.31c-5.969-4.469-14.22-4.312-19.94 .4687l-153.6 128c-5.156 4.312-7.094 11.41-4.781 17.72c2.281 6.344 8.281 10.56 15.03 10.56h71.25l-47.44 105.4c-3.062 6.781-1.031 14.81 4.906 19.31C191.6 510.9 194.1 512 198.4 512c3.656 0 7.281-1.25 10.25-3.719l153.6-128c5.156-4.312 7.094-11.41 4.781-17.72C364.8 356.2 358.8 351.1 352 351.1zM416 128c-.625 0-1.125 .25-1.625 .25C415.5 123 416 117.6 416 112C416 67.75 380.3 32 336 32c-24.62 0-46.25 11.25-61 28.75C256.4 24.75 219.3 0 176 0C114.1 0 64 50.13 64 112c0 7.25 .75 14.25 2.125 21.25C27.75 145.8 0 181.5 0 224c0 53 43 96 96 96h46.63l140.2-116.8c8.605-7.195 19.53-11.16 30.76-11.16c10.34 0 20.6 3.416 29.03 9.734c17.96 13.61 24.02 37.45 14.76 57.95L330.2 320H416c53 0 96-43 96-96S469 128 416 128z"], + "cloud-meatball": [576, 512, [], "f73b", "M80 352C53.5 352 32 373.5 32 400S53.5 448 80 448S128 426.5 128 400S106.5 352 80 352zM496 352c-26.5 0-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48S522.5 352 496 352zM377 363.1c4.625-14.5 1.625-30.88-9.75-42.37c-11.5-11.5-27.87-14.38-42.37-9.875c-7-13.5-20.63-23-36.88-23s-29.88 9.5-36.88 23C236.6 306.2 220.2 309.2 208.8 320.8c-11.5 11.5-14.38 27.87-9.875 42.37c-13.5 7-23 20.63-23 36.88s9.5 29.88 23 36.88c-4.625 14.5-1.625 30.88 9.875 42.37c8.25 8.125 19 12.25 29.75 12.25c4.25 0 8.5-1.125 12.62-2.5C258.1 502.5 271.8 512 288 512s29.88-9.5 36.88-23c4.125 1.25 8.375 2.5 12.62 2.5c10.75 0 21.5-4.125 29.75-12.25c11.5-11.5 14.38-27.87 9.75-42.37C390.5 429.9 400 416.2 400 400S390.5 370.1 377 363.1zM544 224c0-53-43-96-96-96c-.625 0-1.125 .25-1.625 .25C447.5 123 448 117.6 448 112C448 67.75 412.2 32 368 32c-24.62 0-46.25 11.25-61 28.75C288.4 24.75 251.2 0 208 0C146.1 0 96 50.12 96 112c0 7.25 .75 14.25 2.125 21.25C59.75 145.8 32 181.5 32 224c0 53 43 96 96 96h43.38C175 312 179.8 304.6 186.2 298.2C199.8 284.8 217.8 277.1 237 276.9C250.5 263.8 268.8 256 288 256s37.5 7.75 51 20.88c19.25 .25 37.25 7.875 50.75 21.37C396.2 304.6 401.1 312 404.6 320H448C501 320 544 277 544 224z"], + "cloud-moon": [576, 512, [], "f6c3", "M342.7 352.7c5.75-9.625 9.25-20.75 9.25-32.75c0-35.25-28.75-64-63.1-64c-17.25 0-32.75 6.875-44.25 17.87C227.4 244.2 196.2 223.1 159.1 223.1c-53 0-96 43.06-96 96.06c0 2 .5029 3.687 .6279 5.687c-37.5 13-64.62 48.38-64.62 90.25C-.0048 468.1 42.99 512 95.99 512h239.1c44.25 0 79.1-35.75 79.1-80C415.1 390.1 383.7 356.2 342.7 352.7zM565.2 298.4c-93 17.75-178.5-53.62-178.5-147.6c0-54.25 28.1-104 76.12-130.9c7.375-4.125 5.375-15.12-2.75-16.63C448.4 1.125 436.7 0 424.1 0c-105.9 0-191.9 85.88-191.9 192c0 8.5 .625 16.75 1.75 25c5.875 4.25 11.62 8.875 16.75 14.25C262.1 226.5 275.2 224 287.1 224c52.88 0 95.1 43.13 95.1 96c0 3.625-.25 7.25-.625 10.75c23.62 10.75 42.37 29.5 53.5 52.5c54.38-3.375 103.7-29.25 137.1-70.37C579.2 306.4 573.5 296.8 565.2 298.4z"], + "cloud-moon-rain": [576, 512, [], "f73c", "M350.5 225.5c-6.876-37.25-39.25-65.5-78.51-65.5c-12.25 0-23.88 2.1-34.25 7.1C220.3 143.9 192.1 128 160 128c-53.01 0-96.01 42.1-96.01 95.1c0 .5 .25 1.125 .25 1.625C27.63 232.9 0 265.3 0 304c0 44.25 35.75 79.1 80.01 79.1h256c44.25 0 80.01-35.75 80.01-79.1C416 264.8 387.8 232.3 350.5 225.5zM567.9 223.8C497.6 237.1 432.9 183.5 432.9 113c0-40.63 21.88-78 57.5-98.13c5.501-3.125 4.077-11.37-2.173-12.5C479.6 .7538 470.8 0 461.8 0c-77.88 0-141.1 61.25-144.4 137.9c26.75 11.88 48.26 33.88 58.88 61.75c37.13 14.25 64.01 47.38 70.26 86.75c5.126 .5 10.05 1.522 15.3 1.522c44.63 0 85.46-20.15 112.5-53.27C578.6 229.8 574.2 222.6 567.9 223.8zM340.1 426.7l-32 48c-7.345 11.03-4.376 25.94 6.657 33.28C318.8 510.7 323.4 512 327.1 512c7.751 0 15.38-3.75 20-10.69l32-48c7.345-11.03 4.376-25.94-6.657-33.28C362.3 412.7 347.4 415.7 340.1 426.7zM244 426.7l-32 48c-7.345 11.03-4.376 25.94 6.657 33.28C222.8 510.7 227.4 512 231.1 512c7.751 0 15.38-3.75 20-10.69l32-48c7.345-11.03 4.376-25.94-6.657-33.28C266.3 412.7 251.4 415.7 244 426.7zM148 426.7l-32 48c-7.345 11.03-4.376 25.94 6.657 33.28C126.8 510.7 131.4 512 135.1 512c7.751 0 15.38-3.75 20-10.69l32-48c7.345-11.03 4.376-25.94-6.657-33.28C170.3 412.7 155.4 415.7 148 426.7zM52.03 426.7l-32 48c-7.345 11.03-4.376 25.94 6.657 33.28C30.78 510.7 35.41 512 39.97 512c7.751 0 15.38-3.75 20-10.69l32-48c7.345-11.03 4.376-25.94-6.657-33.28C74.25 412.7 59.41 415.7 52.03 426.7z"], + "cloud-rain": [512, 512, [127783, 9926], "f73d", "M416 128c-.625 0-1.125 .25-1.625 .25C415.5 123 416 117.6 416 112C416 67.75 380.3 32 336 32c-24.62 0-46.25 11.25-61 28.75C256.4 24.75 219.3 0 176 0C114.1 0 64 50.13 64 112c0 7.25 .75 14.25 2.125 21.25C27.75 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96S469 128 416 128zM368 464c0 26.51 21.49 48 48 48s48-21.49 48-48s-48.01-95.1-48.01-95.1S368 437.5 368 464zM48 464C48 490.5 69.49 512 96 512s48-21.49 48-48s-48.01-95.1-48.01-95.1S48 437.5 48 464zM208 464c0 26.51 21.49 48 48 48s48-21.49 48-48s-48.01-95.1-48.01-95.1S208 437.5 208 464z"], + "cloud-showers-heavy": [512, 512, [], "f740", "M416 128c-.625 0-1.125 .25-1.625 .25C415.5 123 416 117.6 416 112c0-44.25-35.75-80-79.1-80c-24.62 0-46.25 11.25-60.1 28.75C256.4 24.75 219.3 0 176 0C114.3 0 64 50.13 64 112c0 7.25 .7512 14.25 2.126 21.25C27.76 145.8 .0054 181.5 .0054 224c0 53 42.1 96 95.1 96h319.1C469 320 512 277 512 224S469 128 416 128zM198.8 353.9c-12.17-5.219-26.3 .4062-31.52 12.59l-47.1 112c-5.219 12.19 .4219 26.31 12.61 31.53C134.1 511.4 138.2 512 141.3 512c9.312 0 18.17-5.438 22.08-14.53l47.1-112C216.6 373.3 210.1 359.2 198.8 353.9zM81.46 353.9c-12.19-5.219-26.3 .4062-31.52 12.59l-47.1 112C-3.276 490.7 2.365 504.8 14.55 510.1C17.63 511.4 20.83 512 23.99 512c9.312 0 18.17-5.438 22.08-14.53l47.1-112C99.29 373.3 93.64 359.2 81.46 353.9zM316.1 353.9c-12.19-5.219-26.3 .4062-31.52 12.59l-47.1 112c-5.219 12.19 .4219 26.31 12.61 31.53C252.3 511.4 255.5 512 258.7 512c9.312 0 18.17-5.438 22.08-14.53l47.1-112C333.1 373.3 328.3 359.2 316.1 353.9zM433.5 353.9c-12.17-5.219-26.28 .4062-31.52 12.59l-47.1 112c-5.219 12.19 .4219 26.31 12.61 31.53C369.6 511.4 372.8 512 375.1 512c9.312 0 18.17-5.438 22.08-14.53l47.1-112C451.3 373.3 445.6 359.2 433.5 353.9z"], + "cloud-showers-water": [576, 512, [], "e4e4", "M223.1 0C262.6 0 295.9 22.82 311.2 55.7C325.7 41.07 345.8 32 368 32C406.7 32 438.1 59.48 446.4 96H448C483.3 96 512 124.7 512 160C512 195.3 483.3 224 448 224H127.1C92.65 224 63.1 195.3 63.1 160C63.1 124.7 92.65 96 127.1 96C127.1 42.98 170.1 0 223.1 0zM92.58 372.3C85.76 383.7 71.02 387.4 59.65 380.6C48.29 373.8 44.6 359 51.42 347.7L99.42 267.7C106.2 256.3 120.1 252.6 132.3 259.4C143.7 266.2 147.4 280.1 140.6 292.3L92.58 372.3zM468.3 259.4C479.7 266.2 483.4 280.1 476.6 292.3L428.6 372.3C421.8 383.7 407 387.4 395.7 380.6C384.3 373.8 380.6 359 387.4 347.7L435.4 267.7C442.2 256.3 456.1 252.6 468.3 259.4V259.4zM204.6 372.3C197.8 383.7 183 387.4 171.7 380.6C160.3 373.8 156.6 359 163.4 347.7L211.4 267.7C218.2 256.3 232.1 252.6 244.3 259.4C255.7 266.2 259.4 280.1 252.6 292.3L204.6 372.3zM356.3 259.4C367.7 266.2 371.4 280.1 364.6 292.3L316.6 372.3C309.8 383.7 295 387.4 283.7 380.6C272.3 373.8 268.6 359 275.4 347.7L323.4 267.7C330.2 256.3 344.1 252.6 356.3 259.4V259.4zM384 448C410.9 448 439.4 437.2 461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448H384z"], + "cloud-sun": [640, 512, [9925], "f6c4", "M96 208c0-61.86 50.14-111.1 111.1-111.1c52.65 0 96.5 36.45 108.5 85.42C334.7 173.1 354.7 168 375.1 168c4.607 0 9.152 .3809 13.68 .8203l24.13-34.76c5.145-7.414 .8965-17.67-7.984-19.27L317.2 98.78L301.2 10.21C299.6 1.325 289.4-2.919 281.9 2.226L208 53.54L134.1 2.225C126.6-2.92 116.4 1.326 114.8 10.21L98.78 98.78L10.21 114.8C1.326 116.4-2.922 126.7 2.223 134.1l51.3 73.94L2.224 281.9c-5.145 7.414-.8975 17.67 7.983 19.27L98.78 317.2l16.01 88.58c1.604 8.881 11.86 13.13 19.27 7.982l10.71-7.432c2.725-35.15 19.85-66.51 45.83-88.1C137.1 309.8 96 263.9 96 208zM128 208c0 44.18 35.82 80 80 80c9.729 0 18.93-1.996 27.56-5.176c7.002-33.65 25.53-62.85 51.57-83.44C282.8 159.3 249.2 128 208 128C163.8 128 128 163.8 128 208zM575.2 325.6c.125-2 .7453-3.744 .7453-5.619c0-35.38-28.75-64-63.1-64c-12.62 0-24.25 3.749-34.13 9.999c-17.62-38.88-56.5-65.1-101.9-65.1c-61.75 0-112 50.12-112 111.1c0 3 .7522 5.743 .8772 8.618c-49.63 3.75-88.88 44.74-88.88 95.37C175.1 469 218.1 512 271.1 512h272c53 0 96-42.99 96-95.99C639.1 373.9 612.7 338.6 575.2 325.6z"], + "cloud-sun-rain": [640, 512, [127782], "f743", "M255.7 139.1C244.8 125.5 227.6 116 208 116c-33.14 0-60 26.86-60 59.1c0 25.56 16.06 47.24 38.58 55.88C197.2 219.3 210.5 208.9 225.9 201.1C229.1 178.5 240.6 157.3 255.7 139.1zM120 175.1c0-48.6 39.4-87.1 88-87.1c27.8 0 52.29 13.14 68.42 33.27c21.24-15.67 47.22-25.3 75.58-25.3c.0098 0-.0098 0 0 0L300.4 83.58L286.9 8.637C285.9 3.346 281.3 .0003 276.5 .0003c-2.027 0-4.096 .5928-5.955 1.881l-62.57 43.42L145.4 1.882C143.6 .5925 141.5-.0003 139.5-.0003c-4.818 0-9.399 3.346-10.35 8.636l-13.54 74.95L40.64 97.13c-5.289 .9556-8.637 5.538-8.637 10.36c0 2.026 .5921 4.094 1.881 5.951l43.41 62.57L33.88 238.6C32.59 240.4 32 242.5 32 244.5c0 4.817 3.347 9.398 8.636 10.35l74.95 13.54l13.54 74.95c.9555 5.289 5.537 8.636 10.35 8.636c2.027 0 4.096-.5927 5.954-1.882l19.47-13.51c-3.16-10.34-4.934-21.28-4.934-32.64c0-17.17 4.031-33.57 11.14-48.32C141 241.7 120 211.4 120 175.1zM542.5 225.5c-6.875-37.25-39.25-65.5-78.51-65.5c-12.25 0-23.88 3-34.25 8c-17.5-24.13-45.63-40-77.76-40c-53 0-96.01 43-96.01 96c0 .5 .25 1.125 .25 1.625C219.6 232.1 191.1 265.2 191.1 303.1c0 44.25 35.75 80 80.01 80h256C572.2 383.1 608 348.2 608 303.1C608 264.7 579.7 232.2 542.5 225.5zM552 415.1c-7.753 0-15.35 3.752-19.97 10.69l-32 48c-2.731 4.093-4.037 8.719-4.037 13.29C496 501.4 506.9 512 520 512c7.75 0 15.36-3.75 19.98-10.69l32-48c2.731-4.093 4.037-8.719 4.037-13.29C576 426.6 565.1 415.1 552 415.1zM456 415.1c-7.751 0-15.34 3.752-19.98 10.69l-32 48c-2.731 4.093-4.037 8.719-4.037 13.29C400 501.4 410.9 512 423.1 512c7.75 0 15.36-3.75 19.98-10.69l32-48c2.731-4.093 4.037-8.719 4.037-13.29C480 426.6 469.1 415.1 456 415.1zM360 415.1c-7.753 0-15.34 3.752-19.97 10.69l-32 48c-2.731 4.093-4.037 8.719-4.037 13.29C304 501.4 314.9 512 327.1 512c7.75 0 15.36-3.75 19.99-10.69l32-48c2.731-4.093 4.037-8.719 4.037-13.29C384 426.6 373.1 415.1 360 415.1zM264 415.1c-7.756 0-15.35 3.752-19.97 10.69l-32 48c-2.731 4.093-4.037 8.719-4.037 13.29C208 501.4 218.9 512 231.1 512c7.75 0 15.36-3.75 19.98-10.69l32-48c2.731-4.093 4.037-8.719 4.037-13.29C288 426.6 277.1 415.1 264 415.1z"], + "clover": [448, 512, [], "e139", "M216.6 49.94L217.8 51.18C221.2 54.6 226.8 54.6 230.2 51.18L231.4 49.94C242.9 38.45 258.5 32 274.7 32C308.6 32 336 59.42 336 93.25V98.12C336 110.1 332.7 121.9 326.6 132.1L307.8 163.4C306.7 165.2 306.7 166.5 306.8 167.6C307 168.8 307.7 170.1 308.8 171.2C309.9 172.3 311.2 172.1 312.4 173.2C313.5 173.3 314.8 173.2 316.6 172.2L347.9 153.4C358.1 147.3 369.9 144 381.9 144H386.7C420.6 144 448 171.4 448 205.3C448 221.5 441.5 237.1 430.1 248.6L428.8 249.8C425.4 253.2 425.4 258.8 428.8 262.2L430.1 263.4C441.5 274.9 448 290.5 448 306.7C448 340.6 420.6 368 386.7 368H381.9C369.9 368 358.1 364.7 347.9 358.6L316.6 339.8C314.8 338.7 313.5 338.7 312.4 338.8C311.2 339 309.9 339.7 308.8 340.8C307.7 341.9 307 343.2 306.8 344.4C306.7 345.5 306.7 346.8 307.8 348.6L326.6 379.9C332.7 390.1 336 401.9 336 413.9V418.7C336 452.6 308.6 480 274.7 480C258.5 480 242.9 473.5 231.4 462.1L230.2 460.8C226.8 457.4 221.2 457.4 217.8 460.8L216.6 462.1C205.1 473.5 189.5 480 173.3 480C139.4 480 112 452.6 112 418.7V413.9C112 401.9 115.3 390.1 121.4 379.9L140.2 348.6C141.2 346.8 141.3 345.5 141.2 344.4C140.1 343.2 140.3 341.9 139.2 340.8C138.1 339.7 136.8 339 135.6 338.8C134.5 338.7 133.2 338.7 131.4 339.8L100.1 358.6C89.86 364.7 78.1 368 66.12 368H61.25C27.42 368 0 340.6 0 306.7C0 290.5 6.454 274.9 17.94 263.4L19.18 262.2C22.6 258.8 22.6 253.2 19.18 249.8L17.94 248.6C6.454 237.1 0 221.5 0 205.3C0 171.4 27.42 144 61.25 144H66.12C78.1 144 89.86 147.3 100.1 153.4L131.4 172.2C133.2 173.2 134.5 173.3 135.6 173.2C136.8 172.1 138.1 172.3 139.2 171.2C140.3 170.1 140.1 168.8 141.2 167.6C141.3 166.5 141.2 165.2 140.2 163.4L121.4 132.1C115.3 121.9 112 110.1 112 98.12V93.25C112 59.42 139.4 32 173.3 32C189.5 32 205.1 38.45 216.6 49.94z"], + "code": [640, 512, [], "f121", "M414.8 40.79L286.8 488.8C281.9 505.8 264.2 515.6 247.2 510.8C230.2 505.9 220.4 488.2 225.2 471.2L353.2 23.21C358.1 6.216 375.8-3.624 392.8 1.232C409.8 6.087 419.6 23.8 414.8 40.79H414.8zM518.6 121.4L630.6 233.4C643.1 245.9 643.1 266.1 630.6 278.6L518.6 390.6C506.1 403.1 485.9 403.1 473.4 390.6C460.9 378.1 460.9 357.9 473.4 345.4L562.7 256L473.4 166.6C460.9 154.1 460.9 133.9 473.4 121.4C485.9 108.9 506.1 108.9 518.6 121.4V121.4zM166.6 166.6L77.25 256L166.6 345.4C179.1 357.9 179.1 378.1 166.6 390.6C154.1 403.1 133.9 403.1 121.4 390.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4L121.4 121.4C133.9 108.9 154.1 108.9 166.6 121.4C179.1 133.9 179.1 154.1 166.6 166.6V166.6z"], + "code-branch": [448, 512, [], "f126", "M160 80C160 112.8 140.3 140.1 112 153.3V241.1C130.8 230.2 152.7 224 176 224H272C307.3 224 336 195.3 336 160V153.3C307.7 140.1 288 112.8 288 80C288 35.82 323.8 0 368 0C412.2 0 448 35.82 448 80C448 112.8 428.3 140.1 400 153.3V160C400 230.7 342.7 288 272 288H176C140.7 288 112 316.7 112 352V358.7C140.3 371 160 399.2 160 432C160 476.2 124.2 512 80 512C35.82 512 0 476.2 0 432C0 399.2 19.75 371 48 358.7V153.3C19.75 140.1 0 112.8 0 80C0 35.82 35.82 0 80 0C124.2 0 160 35.82 160 80V80zM80 104C93.25 104 104 93.25 104 80C104 66.75 93.25 56 80 56C66.75 56 56 66.75 56 80C56 93.25 66.75 104 80 104zM368 56C354.7 56 344 66.75 344 80C344 93.25 354.7 104 368 104C381.3 104 392 93.25 392 80C392 66.75 381.3 56 368 56zM80 456C93.25 456 104 445.3 104 432C104 418.7 93.25 408 80 408C66.75 408 56 418.7 56 432C56 445.3 66.75 456 80 456z"], + "code-commit": [640, 512, [], "f386", "M476.8 288C461.1 361 397.4 416 320 416C242.6 416 178 361 163.2 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H163.2C178 150.1 242.6 96 320 96C397.4 96 461.1 150.1 476.8 224H608C625.7 224 640 238.3 640 256C640 273.7 625.7 288 608 288H476.8zM320 336C364.2 336 400 300.2 400 256C400 211.8 364.2 176 320 176C275.8 176 240 211.8 240 256C240 300.2 275.8 336 320 336z"], + "code-compare": [512, 512, [], "e13a", "M320 488C320 497.5 314.4 506.1 305.8 509.9C297.1 513.8 286.1 512.2 279.9 505.8L199.9 433.8C194.9 429.3 192 422.8 192 416C192 409.2 194.9 402.7 199.9 398.2L279.9 326.2C286.1 319.8 297.1 318.2 305.8 322.1C314.4 325.9 320 334.5 320 344V384H336C371.3 384 400 355.3 400 320V153.3C371.7 140.1 352 112.8 352 80C352 35.82 387.8 0 432 0C476.2 0 512 35.82 512 80C512 112.8 492.3 140.1 464 153.3V320C464 390.7 406.7 448 336 448H320V488zM456 79.1C456 66.74 445.3 55.1 432 55.1C418.7 55.1 408 66.74 408 79.1C408 93.25 418.7 103.1 432 103.1C445.3 103.1 456 93.25 456 79.1zM192 24C192 14.52 197.6 5.932 206.2 2.076C214.9-1.78 225-.1789 232.1 6.161L312.1 78.16C317.1 82.71 320 89.2 320 96C320 102.8 317.1 109.3 312.1 113.8L232.1 185.8C225 192.2 214.9 193.8 206.2 189.9C197.6 186.1 192 177.5 192 168V128H176C140.7 128 112 156.7 112 192V358.7C140.3 371 160 399.2 160 432C160 476.2 124.2 512 80 512C35.82 512 0 476.2 0 432C0 399.2 19.75 371 48 358.7V192C48 121.3 105.3 64 176 64H192V24zM56 432C56 445.3 66.75 456 80 456C93.25 456 104 445.3 104 432C104 418.7 93.25 408 80 408C66.75 408 56 418.7 56 432z"], + "code-fork": [448, 512, [], "e13b", "M160 80C160 112.8 140.3 140.1 112 153.3V192C112 209.7 126.3 224 144 224H304C321.7 224 336 209.7 336 192V153.3C307.7 140.1 288 112.8 288 80C288 35.82 323.8 0 368 0C412.2 0 448 35.82 448 80C448 112.8 428.3 140.1 400 153.3V192C400 245 357 288 304 288H256V358.7C284.3 371 304 399.2 304 432C304 476.2 268.2 512 224 512C179.8 512 144 476.2 144 432C144 399.2 163.7 371 192 358.7V288H144C90.98 288 48 245 48 192V153.3C19.75 140.1 0 112.8 0 80C0 35.82 35.82 0 80 0C124.2 0 160 35.82 160 80V80zM80 104C93.25 104 104 93.25 104 80C104 66.75 93.25 56 80 56C66.75 56 56 66.75 56 80C56 93.25 66.75 104 80 104zM368 104C381.3 104 392 93.25 392 80C392 66.75 381.3 56 368 56C354.7 56 344 66.75 344 80C344 93.25 354.7 104 368 104zM224 408C210.7 408 200 418.7 200 432C200 445.3 210.7 456 224 456C237.3 456 248 445.3 248 432C248 418.7 237.3 408 224 408z"], + "code-merge": [448, 512, [], "f387", "M208 239.1H294.7C307 211.7 335.2 191.1 368 191.1C412.2 191.1 448 227.8 448 271.1C448 316.2 412.2 352 368 352C335.2 352 307 332.3 294.7 303.1H208C171.1 303.1 138.7 292.1 112 272V358.7C140.3 371 160 399.2 160 432C160 476.2 124.2 512 80 512C35.82 512 0 476.2 0 432C0 399.2 19.75 371 48 358.7V153.3C19.75 140.1 0 112.8 0 80C0 35.82 35.82 0 80 0C124.2 0 160 35.82 160 80C160 112.6 140.5 140.7 112.4 153.2C117 201.9 158.1 240 208 240V239.1zM80 103.1C93.25 103.1 104 93.25 104 79.1C104 66.74 93.25 55.1 80 55.1C66.75 55.1 56 66.74 56 79.1C56 93.25 66.75 103.1 80 103.1zM80 456C93.25 456 104 445.3 104 432C104 418.7 93.25 408 80 408C66.75 408 56 418.7 56 432C56 445.3 66.75 456 80 456zM368 247.1C354.7 247.1 344 258.7 344 271.1C344 285.3 354.7 295.1 368 295.1C381.3 295.1 392 285.3 392 271.1C392 258.7 381.3 247.1 368 247.1z"], + "code-pull-request": [512, 512, [], "e13c", "M305.8 2.076C314.4 5.932 320 14.52 320 24V64H336C406.7 64 464 121.3 464 192V358.7C492.3 371 512 399.2 512 432C512 476.2 476.2 512 432 512C387.8 512 352 476.2 352 432C352 399.2 371.7 371 400 358.7V192C400 156.7 371.3 128 336 128H320V168C320 177.5 314.4 186.1 305.8 189.9C297.1 193.8 286.1 192.2 279.9 185.8L199.9 113.8C194.9 109.3 192 102.8 192 96C192 89.2 194.9 82.71 199.9 78.16L279.9 6.161C286.1-.1791 297.1-1.779 305.8 2.077V2.076zM432 456C445.3 456 456 445.3 456 432C456 418.7 445.3 408 432 408C418.7 408 408 418.7 408 432C408 445.3 418.7 456 432 456zM112 358.7C140.3 371 160 399.2 160 432C160 476.2 124.2 512 80 512C35.82 512 0 476.2 0 432C0 399.2 19.75 371 48 358.7V153.3C19.75 140.1 0 112.8 0 80C0 35.82 35.82 .0004 80 .0004C124.2 .0004 160 35.82 160 80C160 112.8 140.3 140.1 112 153.3V358.7zM80 56C66.75 56 56 66.75 56 80C56 93.25 66.75 104 80 104C93.25 104 104 93.25 104 80C104 66.75 93.25 56 80 56zM80 408C66.75 408 56 418.7 56 432C56 445.3 66.75 456 80 456C93.25 456 104 445.3 104 432C104 418.7 93.25 408 80 408z"], + "coins": [512, 512, [], "f51e", "M512 80C512 98.01 497.7 114.6 473.6 128C444.5 144.1 401.2 155.5 351.3 158.9C347.7 157.2 343.9 155.5 340.1 153.9C300.6 137.4 248.2 128 192 128C183.7 128 175.6 128.2 167.5 128.6L166.4 128C142.3 114.6 128 98.01 128 80C128 35.82 213.1 0 320 0C426 0 512 35.82 512 80V80zM160.7 161.1C170.9 160.4 181.3 160 192 160C254.2 160 309.4 172.3 344.5 191.4C369.3 204.9 384 221.7 384 240C384 243.1 383.3 247.9 381.9 251.7C377.3 264.9 364.1 277 346.9 287.3C346.9 287.3 346.9 287.3 346.9 287.3C346.8 287.3 346.6 287.4 346.5 287.5L346.5 287.5C346.2 287.7 345.9 287.8 345.6 288C310.6 307.4 254.8 320 192 320C132.4 320 79.06 308.7 43.84 290.9C41.97 289.9 40.15 288.1 38.39 288C14.28 274.6 0 258 0 240C0 205.2 53.43 175.5 128 164.6C138.5 163 149.4 161.8 160.7 161.1L160.7 161.1zM391.9 186.6C420.2 182.2 446.1 175.2 468.1 166.1C484.4 159.3 499.5 150.9 512 140.6V176C512 195.3 495.5 213.1 468.2 226.9C453.5 234.3 435.8 240.5 415.8 245.3C415.9 243.6 416 241.8 416 240C416 218.1 405.4 200.1 391.9 186.6V186.6zM384 336C384 354 369.7 370.6 345.6 384C343.8 384.1 342 385.9 340.2 386.9C304.9 404.7 251.6 416 192 416C129.2 416 73.42 403.4 38.39 384C14.28 370.6 .0003 354 .0003 336V300.6C12.45 310.9 27.62 319.3 43.93 326.1C83.44 342.6 135.8 352 192 352C248.2 352 300.6 342.6 340.1 326.1C347.9 322.9 355.4 319.2 362.5 315.2C368.6 311.8 374.3 308 379.7 304C381.2 302.9 382.6 301.7 384 300.6L384 336zM416 278.1C434.1 273.1 452.5 268.6 468.1 262.1C484.4 255.3 499.5 246.9 512 236.6V272C512 282.5 507 293 497.1 302.9C480.8 319.2 452.1 332.6 415.8 341.3C415.9 339.6 416 337.8 416 336V278.1zM192 448C248.2 448 300.6 438.6 340.1 422.1C356.4 415.3 371.5 406.9 384 396.6V432C384 476.2 298 512 192 512C85.96 512 .0003 476.2 .0003 432V396.6C12.45 406.9 27.62 415.3 43.93 422.1C83.44 438.6 135.8 448 192 448z"], + "colon-sign": [320, 512, [], "e140", "M216.6 65.56C226.4 66.81 235.9 68.8 245.2 71.46L256.1 24.24C261.2 7.093 278.6-3.331 295.8 .9552C312.9 5.242 323.3 22.62 319 39.76L303.1 100C305.1 100.8 306.2 101.6 307.2 102.4C321.4 113 324.2 133.1 313.6 147.2C307.5 155.3 298.4 159.7 288.1 159.1L234.8 376.7C247.1 372.3 258.5 366.1 268.8 358.4C282.9 347.8 302.1 350.6 313.6 364.8C324.2 378.9 321.4 398.1 307.2 409.6C281.5 428.9 250.8 441.9 217.4 446.3L207 487.8C202.8 504.9 185.4 515.3 168.2 511C151.1 506.8 140.7 489.4 144.1 472.2L152.1 443.8C142.4 441.8 133.1 439.1 124.1 435.6L111 487.8C106.8 504.9 89.38 515.3 72.24 511C55.09 506.8 44.67 489.4 48.96 472.2L66.65 401.4C25.84 366.2 0 314.1 0 256C0 164.4 64.09 87.85 149.9 68.64L160.1 24.24C165.2 7.093 182.6-3.331 199.8 .9552C216.9 5.242 227.3 22.62 223 39.76L216.6 65.56zM131.2 143.3C91.17 164.1 64 207.3 64 256C64 282.2 71.85 306.5 85.32 326.8L131.2 143.3zM167.6 381.7L229.6 133.6C220.4 130.8 210.8 128.1 200.9 128.3L139.8 372.9C148.6 376.8 157.9 379.8 167.6 381.7V381.7z"], + "comment": [512, 512, [61669, 128489], "f075", "M256 32C114.6 32 .0272 125.1 .0272 240c0 49.63 21.35 94.98 56.97 130.7c-12.5 50.37-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734C1.979 478.2 4.75 480 8 480c66.25 0 115.1-31.76 140.6-51.39C181.2 440.9 217.6 448 256 448c141.4 0 255.1-93.13 255.1-208S397.4 32 256 32z"], + "comment-dollar": [512, 512, [], "f651", "M256 31.1c-141.4 0-255.1 93.09-255.1 208c0 49.59 21.37 94.1 56.97 130.7c-12.5 50.39-54.31 95.3-54.81 95.8C0 468.8-.5938 472.2 .6875 475.2C1.1 478.2 4.813 479.1 8 479.1c66.31 0 116-31.8 140.6-51.41c32.72 12.31 69.02 19.41 107.4 19.41c141.4 0 255.1-93.09 255.1-207.1S397.4 31.1 256 31.1zM317.8 282.3c-3.623 20.91-19.47 34.64-41.83 39.43V332c0 11.03-8.946 20-19.99 20S236 343 236 332v-10.77c-8.682-1.922-17.3-4.723-25.06-7.512l-4.266-1.5C196.3 308.5 190.8 297.1 194.5 286.7c3.688-10.41 15.11-15.81 25.52-12.22l4.469 1.625c7.844 2.812 16.72 6 23.66 7.031c13.72 2.125 28.94 .1875 30.31-7.625c.875-5.094 1.359-7.906-27.92-16.28L244.7 257.5c-17.33-5.094-57.92-17-50.52-59.84C197.8 176.8 213.6 162.8 236 157.1V148c0-11.03 8.961-20 20.01-20s19.99 8.969 19.99 20v10.63c5.453 1.195 11.34 2.789 18.56 5.273c10.44 3.625 15.95 15.03 12.33 25.47c-3.625 10.41-15.06 15.94-25.45 12.34c-5.859-2.031-12-4-17.59-4.844C250.2 194.8 234.1 196.7 233.6 204.5C232.8 208.1 232.3 212.2 255.1 219.2l5.547 1.594C283.8 227.1 325.3 239 317.8 282.3z"], + "comment-dots": [512, 512, [62075, 128172, "commenting"], "f4ad", "M256 31.1c-141.4 0-255.1 93.12-255.1 208c0 49.62 21.35 94.98 56.97 130.7c-12.5 50.37-54.27 95.27-54.77 95.77c-2.25 2.25-2.875 5.734-1.5 8.734c1.249 3 4.021 4.766 7.271 4.766c66.25 0 115.1-31.76 140.6-51.39c32.63 12.25 69.02 19.39 107.4 19.39c141.4 0 255.1-93.13 255.1-207.1S397.4 31.1 256 31.1zM127.1 271.1c-17.75 0-32-14.25-32-31.1s14.25-32 32-32s32 14.25 32 32S145.7 271.1 127.1 271.1zM256 271.1c-17.75 0-31.1-14.25-31.1-31.1s14.25-32 31.1-32s31.1 14.25 31.1 32S273.8 271.1 256 271.1zM383.1 271.1c-17.75 0-32-14.25-32-31.1s14.25-32 32-32s32 14.25 32 32S401.7 271.1 383.1 271.1z"], + "comment-medical": [512, 512, [], "f7f5", "M256 31.1c-141.4 0-255.1 93.09-255.1 208c0 49.59 21.38 94.1 56.97 130.7c-12.5 50.39-54.31 95.3-54.81 95.8C0 468.8-.5938 472.2 .6875 475.2c1.312 3 4.125 4.797 7.312 4.797c66.31 0 116-31.8 140.6-51.41c32.72 12.31 69.01 19.41 107.4 19.41C397.4 447.1 512 354.9 512 239.1S397.4 31.1 256 31.1zM368 266c0 8.836-7.164 16-16 16h-54V336c0 8.836-7.164 16-16 16h-52c-8.836 0-16-7.164-16-16V282H160c-8.836 0-16-7.164-16-16V214c0-8.838 7.164-16 16-16h53.1V144c0-8.838 7.164-16 16-16h52c8.836 0 16 7.162 16 16v54H352c8.836 0 16 7.162 16 16V266z"], + "comment-slash": [640, 512, [], "f4b3", "M64.03 239.1c0 49.59 21.38 94.1 56.97 130.7c-12.5 50.39-54.31 95.3-54.81 95.8c-2.187 2.297-2.781 5.703-1.5 8.703c1.312 3 4.125 4.797 7.312 4.797c66.31 0 116-31.8 140.6-51.41c32.72 12.31 69.02 19.41 107.4 19.41c37.39 0 72.78-6.663 104.8-18.36L82.93 161.7C70.81 185.9 64.03 212.3 64.03 239.1zM630.8 469.1l-118.1-92.59C551.1 340 576 292.4 576 240c0-114.9-114.6-207.1-255.1-207.1c-67.74 0-129.1 21.55-174.9 56.47L38.81 5.117C28.21-3.154 13.16-1.096 5.115 9.19C-3.072 19.63-1.249 34.72 9.188 42.89l591.1 463.1c10.5 8.203 25.57 6.333 33.7-4.073C643.1 492.4 641.2 477.3 630.8 469.1z"], + "comment-sms": [512, 512, ["sms"], "f7cd", "M256 32C114.6 32 .0137 125.1 .0137 240c0 49.59 21.39 95 56.99 130.7c-12.5 50.39-54.31 95.3-54.81 95.8C0 468.8-.5938 472.2 .6875 475.2C1.1 478.2 4.813 480 8 480c66.31 0 116-31.8 140.6-51.41C181.3 440.9 217.6 448 256 448C397.4 448 512 354.9 512 240S397.4 32 256 32zM167.3 271.9C163.9 291.1 146.3 304 121.1 304c-4.031 0-8.25-.3125-12.59-1C101.1 301.8 92.81 298.8 85.5 296.1c-8.312-3-14.06-12.66-11.09-20.97S85 261.1 93.38 264.9c6.979 2.498 14.53 5.449 20.88 6.438C125.7 273.1 135 271 135.8 266.4c1.053-5.912-10.84-8.396-24.56-12.34c-12.12-3.531-44.28-12.97-38.63-46c4.062-23.38 27.31-35.91 58-31.09c5.906 .9062 12.44 2.844 18.59 4.969c8.344 2.875 12.78 12 9.906 20.34C156.3 210.7 147.2 215.1 138.8 212.2c-4.344-1.5-8.938-2.938-13.09-3.594c-11.22-1.656-20.72 .4062-21.5 4.906C103.2 219.2 113.6 221.5 124.4 224.6C141.4 229.5 173.1 238.5 167.3 271.9zM320 288c0 8.844-7.156 16-16 16S288 296.8 288 288V240l-19.19 25.59c-6.062 8.062-19.55 8.062-25.62 0L224 240V288c0 8.844-7.156 16-16 16S192 296.8 192 288V192c0-6.875 4.406-12.1 10.94-15.18c6.5-2.094 13.71 .0586 17.87 5.59L256 229.3l35.19-46.93c4.156-5.531 11.4-7.652 17.87-5.59C315.6 179 320 185.1 320 192V288zM439.3 271.9C435.9 291.1 418.3 304 393.1 304c-4.031 0-8.25-.3125-12.59-1c-8.25-1.25-16.56-4.25-23.88-6.906c-8.312-3-14.06-12.66-11.09-20.97s10.59-13.16 18.97-10.19c6.979 2.498 14.53 5.449 20.88 6.438c11.44 1.719 20.78-.375 21.56-4.938c1.053-5.912-10.84-8.396-24.56-12.34c-12.12-3.531-44.28-12.97-38.63-46c4.031-23.38 27.25-35.91 58-31.09c5.906 .9062 12.44 2.844 18.59 4.969c8.344 2.875 12.78 12 9.906 20.34c-2.875 8.344-11.94 12.81-20.34 9.906c-4.344-1.5-8.938-2.938-13.09-3.594c-11.19-1.656-20.72 .4062-21.5 4.906C375.2 219.2 385.6 221.5 396.4 224.6C413.4 229.5 445.1 238.5 439.3 271.9z"], + "comments": [640, 512, [61670, 128490], "f086", "M416 176C416 78.8 322.9 0 208 0S0 78.8 0 176c0 39.57 15.62 75.96 41.67 105.4c-16.39 32.76-39.23 57.32-39.59 57.68c-2.1 2.205-2.67 5.475-1.441 8.354C1.9 350.3 4.602 352 7.66 352c38.35 0 70.76-11.12 95.74-24.04C134.2 343.1 169.8 352 208 352C322.9 352 416 273.2 416 176zM599.6 443.7C624.8 413.9 640 376.6 640 336C640 238.8 554 160 448 160c-.3145 0-.6191 .041-.9336 .043C447.5 165.3 448 170.6 448 176c0 98.62-79.68 181.2-186.1 202.5C282.7 455.1 357.1 512 448 512c33.69 0 65.32-8.008 92.85-21.98C565.2 502 596.1 512 632.3 512c3.059 0 5.76-1.725 7.02-4.605c1.229-2.879 .6582-6.148-1.441-8.354C637.6 498.7 615.9 475.3 599.6 443.7z"], + "comments-dollar": [640, 512, [], "f653", "M416 176C416 78.8 322.9 0 208 0S0 78.8 0 176c0 39.57 15.62 75.96 41.67 105.4c-16.39 32.76-39.23 57.32-39.59 57.68c-2.1 2.205-2.67 5.475-1.441 8.354C1.9 350.3 4.602 352 7.66 352c38.35 0 70.76-11.12 95.74-24.04C134.2 343.1 169.8 352 208 352C322.9 352 416 273.2 416 176zM269.8 218.3C266.2 239.2 250.4 252.1 228 257.7V268c0 11.03-8.953 20-20 20s-20-8.969-20-20V257.2c-8.682-1.922-17.3-4.723-25.06-7.512l-4.266-1.5C148.3 244.5 142.8 233.1 146.5 222.7c3.688-10.41 15.11-15.81 25.52-12.22l4.469 1.625c7.844 2.812 16.72 6 23.66 7.031C213.8 221.3 229 219.3 230.4 211.5C231.3 206.4 231.8 203.6 202.5 195.2L196.7 193.5c-17.33-5.094-57.92-17-50.52-59.84C149.8 112.8 165.6 98.76 188 93.99V84c0-11.03 8.953-20 20-20s20 8.969 20 20v10.63c5.453 1.195 11.34 2.789 18.56 5.273C257 103.5 262.5 114.9 258.9 125.4C255.3 135.8 243.8 141.3 233.4 137.7c-5.859-2.031-12-4-17.59-4.844C202.2 130.8 186.1 132.7 185.6 140.5C184.8 144.1 184.3 148.2 207.1 155.2L213.5 156.8C235.8 163.1 277.3 175 269.8 218.3zM599.6 443.7C624.8 413.9 640 376.6 640 336C640 238.8 554 160 448 160c-.3145 0-.6191 .041-.9336 .043C447.5 165.3 448 170.6 448 176c0 98.62-79.68 181.2-186.1 202.5C282.7 455.1 357.1 512 448 512c33.69 0 65.32-8.008 92.85-21.98C565.2 502 596.1 512 632.3 512c3.059 0 5.76-1.725 7.02-4.605c1.229-2.879 .6582-6.148-1.441-8.354C637.6 498.7 615.9 475.3 599.6 443.7z"], + "compact-disc": [512, 512, [128192, 128440, 128191], "f51f", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM80.72 256H79.63c-9.078 0-16.4-8.011-15.56-17.34C72.36 146 146.5 72.06 239.3 64.06C248.3 63.28 256 70.75 256 80.09c0 8.35-6.215 15.28-14.27 15.99C164.7 102.9 103.1 164.3 96.15 241.4C95.4 249.6 88.77 256 80.72 256zM256 351.1c-53.02 0-96-43-96-95.1s42.98-96 96-96s96 43 96 96S309 351.1 256 351.1zM256 224C238.3 224 224 238.2 224 256s14.3 32 32 32c17.7 0 32-14.25 32-32S273.7 224 256 224z"], + "compass": [512, 512, [129517], "f14e", "M288 256C288 273.7 273.7 288 256 288C238.3 288 224 273.7 224 256C224 238.3 238.3 224 256 224C273.7 224 288 238.3 288 256zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM325.1 306.7L380.6 162.4C388.1 142.1 369 123.9 349.6 131.4L205.3 186.9C196.8 190.1 190.1 196.8 186.9 205.3L131.4 349.6C123.9 369 142.1 388.1 162.4 380.6L306.7 325.1C315.2 321.9 321.9 315.2 325.1 306.7V306.7z"], + "compass-drafting": [512, 512, ["drafting-compass"], "f568", "M352 96C352 110.3 348.9 123.9 343.2 136.2L396 227.4C372.3 252.7 341.9 271.5 307.6 281L256 192H255.1L187.9 309.5C209.4 316.3 232.3 320 256 320C326.7 320 389.8 287.3 430.9 235.1C441.9 222.2 462.1 219.1 475.9 231C489.7 242.1 491.9 262.2 480.8 276C428.1 341.8 346.1 384 256 384C220.6 384 186.6 377.6 155.3 365.9L98.65 463.7C93.95 471.8 86.97 478.4 78.58 482.6L23.16 510.3C18.2 512.8 12.31 512.5 7.588 509.6C2.871 506.7 0 501.5 0 496V440.6C0 432.2 2.228 423.9 6.46 416.5L66.49 312.9C53.66 301.6 41.84 289.3 31.18 276C20.13 262.2 22.34 242.1 36.13 231C49.92 219.1 70.06 222.2 81.12 235.1C86.79 243.1 92.87 249.8 99.34 256.1L168.8 136.2C163.1 123.9 160 110.3 160 96C160 42.98 202.1 0 256 0C309 0 352 42.98 352 96L352 96zM256 128C273.7 128 288 113.7 288 96C288 78.33 273.7 64 256 64C238.3 64 224 78.33 224 96C224 113.7 238.3 128 256 128zM372.1 393.9C405.5 381.1 435.5 363.2 461.8 341L505.5 416.5C509.8 423.9 512 432.2 512 440.6V496C512 501.5 509.1 506.7 504.4 509.6C499.7 512.5 493.8 512.8 488.8 510.3L433.4 482.6C425 478.4 418.1 471.8 413.3 463.7L372.1 393.9z"], + "compress": [448, 512, [], "f066", "M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"], + "computer": [640, 512, [], "e4e5", "M400 32C426.5 32 448 53.49 448 80V336C448 362.5 426.5 384 400 384H266.7L277.3 416H352C369.7 416 384 430.3 384 448C384 465.7 369.7 480 352 480H96C78.33 480 64 465.7 64 448C64 430.3 78.33 416 96 416H170.7L181.3 384H48C21.49 384 0 362.5 0 336V80C0 53.49 21.49 32 48 32H400zM64 96V320H384V96H64zM592 32C618.5 32 640 53.49 640 80V432C640 458.5 618.5 480 592 480H528C501.5 480 480 458.5 480 432V80C480 53.49 501.5 32 528 32H592zM544 96C535.2 96 528 103.2 528 112C528 120.8 535.2 128 544 128H576C584.8 128 592 120.8 592 112C592 103.2 584.8 96 576 96H544zM544 192H576C584.8 192 592 184.8 592 176C592 167.2 584.8 160 576 160H544C535.2 160 528 167.2 528 176C528 184.8 535.2 192 544 192zM560 400C577.7 400 592 385.7 592 368C592 350.3 577.7 336 560 336C542.3 336 528 350.3 528 368C528 385.7 542.3 400 560 400z"], + "computer-mouse": [384, 512, [128433, "mouse"], "f8cc", "M0 352c0 88.38 71.63 160 160 160h64c88.38 0 160-71.63 160-160V224H0V352zM176 0H160C71.63 0 0 71.62 0 160v32h176V0zM224 0h-16v192H384V160C384 71.62 312.4 0 224 0z"], + "cookie": [512, 512, [127850], "f563", "M494.5 254.8l-11.37-71.48c-4.102-25.9-16.29-49.8-34.8-68.32l-51.33-51.33c-18.52-18.52-42.3-30.7-68.2-34.8L256.9 17.53C231.2 13.42 204.7 17.64 181.5 29.48L116.7 62.53C93.23 74.36 74.36 93.35 62.41 116.7L29.51 181.2c-11.84 23.44-16.08 50.04-11.98 75.94l11.37 71.48c4.101 25.9 16.29 49.77 34.8 68.41l51.33 51.33c18.52 18.4 42.3 30.61 68.2 34.72l71.84 11.37c25.78 4.102 52.27-.1173 75.47-11.95l64.8-33.05c23.32-11.84 42.3-30.82 54.26-54.14l32.81-64.57C494.4 307.3 498.6 280.8 494.5 254.8zM176 367.1c-17.62 0-31.1-14.37-31.1-31.1c0-17.62 14.37-31.1 31.1-31.1s31.1 14.37 31.1 31.1C208 353.6 193.6 367.1 176 367.1zM208 208c-17.62 0-31.1-14.37-31.1-31.1s14.38-31.1 31.1-31.1c17.62 0 31.1 14.37 31.1 31.1S225.6 208 208 208zM368 335.1c-17.62 0-31.1-14.37-31.1-31.1c0-17.62 14.37-31.1 31.1-31.1s31.1 14.37 31.1 31.1C400 321.6 385.6 335.1 368 335.1z"], + "cookie-bite": [512, 512, [], "f564", "M494.6 255.9c-65.63-.8203-118.6-54.14-118.6-119.9c-65.74 0-119.1-52.97-119.8-118.6c-25.66-3.867-51.8 .2346-74.77 12.07L116.7 62.41C93.35 74.36 74.36 93.35 62.41 116.7L29.6 181.2c-11.95 23.44-16.17 49.92-12.07 75.94l11.37 71.48c4.102 25.9 16.29 49.8 34.81 68.32l51.36 51.39C133.6 466.9 157.3 479 183.2 483.1l71.84 11.37c25.9 4.101 52.27-.1172 75.59-11.95l64.81-33.05c23.32-11.84 42.31-30.82 54.14-54.14l32.93-64.57C494.3 307.7 498.5 281.4 494.6 255.9zM176 367.1c-17.62 0-32-14.37-32-31.1s14.38-31.1 32-31.1s32 14.37 32 31.1S193.6 367.1 176 367.1zM208 208c-17.62 0-32-14.37-32-31.1s14.38-31.1 32-31.1s32 14.37 32 31.1S225.6 208 208 208zM368 335.1c-17.62 0-32-14.37-32-31.1s14.38-31.1 32-31.1s32 14.37 32 31.1S385.6 335.1 368 335.1z"], + "copy": [512, 512, [], "f0c5", "M384 96L384 0h-112c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48H464c26.51 0 48-21.49 48-48V128h-95.1C398.4 128 384 113.6 384 96zM416 0v96h96L416 0zM192 352V128h-144c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h192c26.51 0 48-21.49 48-48L288 416h-32C220.7 416 192 387.3 192 352z"], + "copyright": [512, 512, [169], "f1f9", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM199.2 312.6c14.94 15.06 34.8 23.38 55.89 23.38c.0313 0 0 0 0 0c21.06 0 40.92-8.312 55.83-23.38c9.375-9.375 24.53-9.469 33.97-.1562c9.406 9.344 9.469 24.53 .1562 33.97c-24 24.22-55.95 37.56-89.95 37.56c0 0 .0313 0 0 0c-33.97 0-65.95-13.34-89.95-37.56c-49.44-49.88-49.44-131 0-180.9c24-24.22 55.98-37.56 89.95-37.56c.0313 0 0 0 0 0c34 0 65.95 13.34 89.95 37.56c9.312 9.438 9.25 24.62-.1562 33.97c-9.438 9.344-24.59 9.188-33.97-.1562c-14.91-15.06-34.77-23.38-55.83-23.38c0 0 .0313 0 0 0c-21.09 0-40.95 8.312-55.89 23.38C168.3 230.6 168.3 281.4 199.2 312.6z"], + "couch": [640, 512, [], "f4b8", "M592 224C565.5 224 544 245.5 544 272V352H96V272C96 245.5 74.51 224 48 224S0 245.5 0 272v192C0 472.8 7.164 480 16 480h64c8.836 0 15.1-7.164 15.1-16L96 448h448v16c0 8.836 7.164 16 16 16h64c8.836 0 16-7.164 16-16v-192C640 245.5 618.5 224 592 224zM128 272V320h384V272c0-38.63 27.53-70.95 64-78.38V160c0-70.69-57.31-128-128-128H191.1c-70.69 0-128 57.31-128 128L64 193.6C100.5 201.1 128 233.4 128 272z"], + "cow": [640, 512, [128004], "f6c8", "M634 276.8l-9.999-13.88L624 185.7c0-11.88-12.5-19.49-23.12-14.11c-10.88 5.375-19.5 13.5-26.38 23l-65.75-90.92C490.6 78.71 461.8 64 431 64H112C63.37 64 24 103.4 24 152v86.38C9.5 250.1 0 267.9 0 288v32h8c35.38 0 64-28.62 64-64L72 152c0-16.88 10.5-31.12 25.38-37C96.5 119.1 96 123.5 96 128l.0002 304c0 8.875 7.126 16 16 16h63.1c8.875 0 16-7.125 16-16l.0006-112c9.375 9.375 20.25 16.5 32 21.88V368c0 8.875 7.252 16 16 16c8.875 0 15.1-7.125 15.1-16v-17.25c9.125 1 12.88 2.25 32-.125V368c0 8.875 7.25 16 16 16c8.875 0 16-7.125 16-16v-26.12C331.8 336.5 342.6 329.2 352 320l-.0012 112c0 8.875 7.125 16 15.1 16h64c8.75 0 16-7.125 16-16V256l31.1 32l.0006 41.55c0 12.62 3.752 24.95 10.75 35.45l41.25 62C540.8 440.1 555.5 448 571.4 448c22.5 0 41.88-15.88 46.25-38l21.75-108.6C641.1 292.8 639.1 283.9 634 276.8zM377.3 167.4l-22.88 22.75C332.5 211.8 302.9 224 272.1 224S211.5 211.8 189.6 190.1L166.8 167.4C151 151.8 164.4 128 188.9 128h166.2C379.6 128 393 151.8 377.3 167.4zM576 352c-8.875 0-16-7.125-16-16s7.125-16 16-16s16 7.125 16 16S584.9 352 576 352z"], + "credit-card": [576, 512, [62083, 128179, "credit-card-alt"], "f09d", "M512 32C547.3 32 576 60.65 576 96V128H0V96C0 60.65 28.65 32 64 32H512zM576 416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V224H576V416zM112 352C103.2 352 96 359.2 96 368C96 376.8 103.2 384 112 384H176C184.8 384 192 376.8 192 368C192 359.2 184.8 352 176 352H112zM240 384H368C376.8 384 384 376.8 384 368C384 359.2 376.8 352 368 352H240C231.2 352 224 359.2 224 368C224 376.8 231.2 384 240 384z"], + "crop": [512, 512, [], "f125", "M448 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H448V480C448 497.7 433.7 512 416 512C398.3 512 384 497.7 384 480V173.3L173.3 384H352V448H128C92.65 448 64 419.3 64 384V128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H64V32C64 14.33 78.33 0 96 0C113.7 0 128 14.33 128 32V338.7L338.7 128H160V64H402.7L457.4 9.372C469.9-3.124 490.1-3.124 502.6 9.372C515.1 21.87 515.1 42.13 502.6 54.63L448 109.3V384z"], + "crop-simple": [512, 512, ["crop-alt"], "f565", "M128 384H352V448H128C92.65 448 64 419.3 64 384V128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H64V32C64 14.33 78.33 0 96 0C113.7 0 128 14.33 128 32V384zM384 128H160V64H384C419.3 64 448 92.65 448 128V384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H448V480C448 497.7 433.7 512 416 512C398.3 512 384 497.7 384 480V128z"], + "cross": [384, 512, [128327, 10013], "f654", "M383.1 160v64c0 17.62-14.37 32-31.1 32h-96v224c0 17.62-14.38 32-31.1 32H160c-17.62 0-32-14.38-32-32V256h-96C14.37 256-.0008 241.6-.0008 224V160c0-17.62 14.38-32 32-32h96V32c0-17.62 14.38-32 32-32h64c17.62 0 31.1 14.38 31.1 32v96h96C369.6 128 383.1 142.4 383.1 160z"], + "crosshairs": [512, 512, [], "f05b", "M224 256C224 238.3 238.3 224 256 224C273.7 224 288 238.3 288 256C288 273.7 273.7 288 256 288C238.3 288 224 273.7 224 256zM256 0C273.7 0 288 14.33 288 32V42.35C381.7 56.27 455.7 130.3 469.6 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H469.6C455.7 381.7 381.7 455.7 288 469.6V480C288 497.7 273.7 512 256 512C238.3 512 224 497.7 224 480V469.6C130.3 455.7 56.27 381.7 42.35 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H42.35C56.27 130.3 130.3 56.27 224 42.35V32C224 14.33 238.3 0 256 0V0zM224 404.6V384C224 366.3 238.3 352 256 352C273.7 352 288 366.3 288 384V404.6C346.3 392.1 392.1 346.3 404.6 288H384C366.3 288 352 273.7 352 256C352 238.3 366.3 224 384 224H404.6C392.1 165.7 346.3 119.9 288 107.4V128C288 145.7 273.7 160 256 160C238.3 160 224 145.7 224 128V107.4C165.7 119.9 119.9 165.7 107.4 224H128C145.7 224 160 238.3 160 256C160 273.7 145.7 288 128 288H107.4C119.9 346.3 165.7 392.1 224 404.6z"], + "crow": [640, 512, [], "f520", "M523.9 31.1H574C603.4 31.1 628.1 51.99 636.1 80.48L640 95.1L544 119.1V191.1C544 279.1 484.9 354.1 404.2 376.8L446.2 478.9C451.2 491.1 445.4 505.1 433.1 510.2C420.9 515.2 406.9 509.4 401.8 497.1L355.2 383.1C354.1 383.1 353.1 384 352 384H311.1L350.2 478.9C355.2 491.1 349.4 505.1 337.1 510.2C324.9 515.2 310.9 509.4 305.8 497.1L259.2 384H126.1L51.51 441.4C37.5 452.1 17.41 449.5 6.638 435.5C-4.138 421.5-1.517 401.4 12.49 390.6L368 117.2V88C368 39.4 407.4 0 456 0C483.3 0 507.7 12.46 523.9 32V31.1zM456 111.1C469.3 111.1 480 101.3 480 87.1C480 74.74 469.3 63.1 456 63.1C442.7 63.1 432 74.74 432 87.1C432 101.3 442.7 111.1 456 111.1z"], + "crown": [576, 512, [128081], "f521", "M576 136c0 22.09-17.91 40-40 40c-.248 0-.4551-.1266-.7031-.1305l-50.52 277.9C482 468.9 468.8 480 453.3 480H122.7c-15.46 0-28.72-11.06-31.48-26.27L40.71 175.9C40.46 175.9 40.25 176 39.1 176c-22.09 0-40-17.91-40-40S17.91 96 39.1 96s40 17.91 40 40c0 8.998-3.521 16.89-8.537 23.57l89.63 71.7c15.91 12.73 39.5 7.544 48.61-10.68l57.6-115.2C255.1 98.34 247.1 86.34 247.1 72C247.1 49.91 265.9 32 288 32s39.1 17.91 39.1 40c0 14.34-7.963 26.34-19.3 33.4l57.6 115.2c9.111 18.22 32.71 23.4 48.61 10.68l89.63-71.7C499.5 152.9 496 144.1 496 136C496 113.9 513.9 96 536 96S576 113.9 576 136z"], + "crutch": [512, 512, [], "f7f7", "M502.6 168.1l-159.6-159.5c-12.54-12.54-32.85-12.6-45.46-.1256c-12.68 12.54-12.73 33.1-.1256 45.71l159.6 159.5c12.6 12.59 33.03 12.57 45.59-.0628C515.1 201.9 515.1 181.5 502.6 168.1zM334.4 245.4l-67.88-67.87l55.13-55.12l-45.25-45.25L166.7 186.8C154.1 199.6 145.2 215.6 141.1 233.2L113.3 353.4l-108.6 108.6c-6.25 6.25-6.25 16.37 0 22.62l22.63 22.62c6.25 6.25 16.38 6.25 22.63 0l108.6-108.6l120.3-27.75c17.5-4.125 33.63-13 46.38-25.62l109.6-109.7l-45.25-45.25L334.4 245.4zM279.9 300.1C275.7 304.2 270.3 307.2 264.4 308.6l-79.25 18.25l18.25-79.25c1.375-5.875 4.375-11.25 8.5-15.5l9.375-9.25l67.88 67.87L279.9 300.1z"], + "cruzeiro-sign": [384, 512, [], "e152", "M159.1 402.7V256C159.1 238.3 174.3 224 191.1 224C199.7 224 206.8 226.7 212.3 231.3C223 226.6 234.8 224 247.3 224C264.5 224 281.3 229.1 295.7 238.7L305.8 245.4C320.5 255.2 324.4 275 314.6 289.8C304.8 304.5 284.1 308.4 270.2 298.6L260.2 291.9C256.3 289.4 251.9 288 247.3 288C234.4 288 224 298.4 224 311.3V416C264.1 416 302.3 400.6 330.7 375.3C343.8 363.5 364.1 364.6 375.8 377.8C387.6 390.9 386.5 411.2 373.3 422.1C333.7 458.4 281.4 480 224 480C100.3 480 0 379.7 0 256C0 132.3 100.3 32 224 32C281.4 32 333.7 53.59 373.3 89.04C386.5 100.8 387.6 121.1 375.8 134.2C364.1 147.4 343.8 148.5 330.7 136.7C302.3 111.4 264.1 96 224 96C135.6 96 63.1 167.6 63.1 256C63.1 321.6 103.5 377.1 159.1 402.7V402.7z"], + "cube": [512, 512, [], "f1b2", "M234.5 5.709C248.4 .7377 263.6 .7377 277.5 5.709L469.5 74.28C494.1 83.38 512 107.5 512 134.6V377.4C512 404.5 494.1 428.6 469.5 437.7L277.5 506.3C263.6 511.3 248.4 511.3 234.5 506.3L42.47 437.7C17 428.6 0 404.5 0 377.4V134.6C0 107.5 17 83.38 42.47 74.28L234.5 5.709zM256 65.98L82.34 128L256 190L429.7 128L256 65.98zM288 434.6L448 377.4V189.4L288 246.6V434.6z"], + "cubes": [576, 512, [], "f1b3", "M172.1 40.16L268.1 3.76C280.9-1.089 295.1-1.089 307.9 3.76L403.9 40.16C425.6 48.41 440 69.25 440 92.52V204.7C441.3 205.1 442.6 205.5 443.9 205.1L539.9 242.4C561.6 250.6 576 271.5 576 294.7V413.9C576 436.1 562.9 456.2 542.5 465.1L446.5 507.3C432.2 513.7 415.8 513.7 401.5 507.3L288 457.5L174.5 507.3C160.2 513.7 143.8 513.7 129.5 507.3L33.46 465.1C13.13 456.2 0 436.1 0 413.9V294.7C0 271.5 14.39 250.6 36.15 242.4L132.1 205.1C133.4 205.5 134.7 205.1 136 204.7V92.52C136 69.25 150.4 48.41 172.1 40.16V40.16zM290.8 48.64C289 47.95 286.1 47.95 285.2 48.64L206.8 78.35L287.1 109.5L369.2 78.35L290.8 48.64zM392 210.6V121L309.6 152.6V241.8L392 210.6zM154.8 250.9C153 250.2 150.1 250.2 149.2 250.9L70.81 280.6L152 311.7L233.2 280.6L154.8 250.9zM173.6 455.3L256 419.1V323.2L173.6 354.8V455.3zM342.8 280.6L424 311.7L505.2 280.6L426.8 250.9C425 250.2 422.1 250.2 421.2 250.9L342.8 280.6zM528 413.9V323.2L445.6 354.8V455.3L523.2 421.2C526.1 419.9 528 417.1 528 413.9V413.9z"], + "cubes-stacked": [448, 512, [], "e4e6", "M192 64C192 46.33 206.3 32 224 32H288C305.7 32 320 46.33 320 64V128C320 145.7 305.7 160 288 160H224C206.3 160 192 145.7 192 128V64zM138.1 174.1C153.4 166.1 172.1 171.4 181.8 186.7L213.8 242.1C222.6 257.4 217.4 276.1 202.1 285.8L146.7 317.8C131.4 326.6 111.8 321.4 102.1 306.1L70.96 250.7C62.12 235.4 67.37 215.8 82.67 206.1L138.1 174.1zM352 192C369.7 192 384 206.3 384 224V288C384 305.7 369.7 320 352 320H288C270.3 320 256 305.7 256 288V224C256 206.3 270.3 192 288 192H352zM416 352C433.7 352 448 366.3 448 384V448C448 465.7 433.7 480 416 480H352C334.3 480 320 465.7 320 448V384C320 366.3 334.3 352 352 352H416zM160 384C160 366.3 174.3 352 192 352H256C273.7 352 288 366.3 288 384V448C288 465.7 273.7 480 256 480H192C174.3 480 160 465.7 160 448V384zM96 352C113.7 352 128 366.3 128 384V448C128 465.7 113.7 480 96 480H32C14.33 480 0 465.7 0 448V384C0 366.3 14.33 352 32 352H96z"], + "d": [384, 512, [100], "44", "M160 32.01L32 32.01c-17.67 0-32 14.33-32 32v384c0 17.67 14.33 32 32 32l128-.0073c123.5 0 224-100.5 224-224S283.5 32.01 160 32.01zM160 416H64v-320h96c88.22 0 160 71.78 160 159.1S248.2 416 160 416z"], + "database": [448, 512, [], "f1c0", "M448 80V128C448 172.2 347.7 208 224 208C100.3 208 0 172.2 0 128V80C0 35.82 100.3 0 224 0C347.7 0 448 35.82 448 80zM393.2 214.7C413.1 207.3 433.1 197.8 448 186.1V288C448 332.2 347.7 368 224 368C100.3 368 0 332.2 0 288V186.1C14.93 197.8 34.02 207.3 54.85 214.7C99.66 230.7 159.5 240 224 240C288.5 240 348.3 230.7 393.2 214.7V214.7zM54.85 374.7C99.66 390.7 159.5 400 224 400C288.5 400 348.3 390.7 393.2 374.7C413.1 367.3 433.1 357.8 448 346.1V432C448 476.2 347.7 512 224 512C100.3 512 0 476.2 0 432V346.1C14.93 357.8 34.02 367.3 54.85 374.7z"], + "delete-left": [576, 512, [9003, "backspace"], "f55a", "M576 384C576 419.3 547.3 448 512 448H205.3C188.3 448 172 441.3 160 429.3L9.372 278.6C3.371 272.6 0 264.5 0 256C0 247.5 3.372 239.4 9.372 233.4L160 82.75C172 70.74 188.3 64 205.3 64H512C547.3 64 576 92.65 576 128V384zM271 208.1L318.1 256L271 303C261.7 312.4 261.7 327.6 271 336.1C280.4 346.3 295.6 346.3 304.1 336.1L352 289.9L399 336.1C408.4 346.3 423.6 346.3 432.1 336.1C442.3 327.6 442.3 312.4 432.1 303L385.9 256L432.1 208.1C442.3 199.6 442.3 184.4 432.1 175C423.6 165.7 408.4 165.7 399 175L352 222.1L304.1 175C295.6 165.7 280.4 165.7 271 175C261.7 184.4 261.7 199.6 271 208.1V208.1z"], + "democrat": [640, 512, [], "f747", "M191.1 479.1C191.1 497.6 206.4 512 223.1 512h32c17.6 0 32-14.4 32-32v-64h160v64c0 17.6 14.41 32 32.01 32L511.1 512c17.6 0 32-14.4 32-32l.0102-128H192L191.1 479.1zM637.2 256.9l-19.5-29.38c-28.25-42.25-75.38-67.5-126.1-67.5H255.1L174.7 78.75c20.13-20 22.63-51 7.5-73.88C178.9-.2552 171.5-1.005 167.1 3.37L125.2 45.25L82.36 2.37C78.74-1.255 72.74-.6302 69.99 3.62c-12.25 18.63-10.25 44 6.125 60.38c3.25 3.25 7.25 5.25 11.25 7.5c-2.125 1.75-4.625 3.125-6.375 5.375l-74.63 99.38C-.8895 185.9-2.014 198.9 3.361 209.7l14.38 28.5c5.375 10.88 16.5 17.75 28.5 17.75H77.24c8.5 0 16.63-3.375 22.63-9.375l38.13-34.63l54.04 108h351.1l-.0102-77.75c16.25 12.13 18.25 17.5 40.13 50.25c4.875 7.375 14.75 9.25 22.13 4.375l26.63-17.63C640.2 274.2 642.2 264.2 637.2 256.9zM296.2 243.2L279.7 259.4l3.875 22.75c.625 4.125-3.625 7.125-7.25 5.25L255.1 276.7L235.6 287.4C231.1 289.2 227.7 286.2 228.4 282.1l3.875-22.75L215.7 243.2c-3-2.875-1.25-7.875 2.875-8.5l22.75-3.25l10.25-20.75c1.75-3.625 7.125-3.625 9 0l10.13 20.75l22.88 3.25C297.6 235.4 299.2 240.4 296.2 243.2zM408.2 243.2l-16.5 16.13l3.875 22.75c.625 4.125-3.625 7.125-7.25 5.25L367.1 276.7l-20.38 10.63c-3.625 1.875-7.875-1.125-7.25-5.25l3.875-22.75l-16.5-16.13c-3-2.875-1.25-7.875 2.875-8.5l22.75-3.25l10.25-20.75c1.75-3.625 7.125-3.625 9 0l10.13 20.75l22.88 3.25C409.6 235.4 411.2 240.4 408.2 243.2zM520.2 243.2l-16.5 16.13l3.875 22.75c.625 4.125-3.625 7.125-7.25 5.25l-20.38-10.63l-20.38 10.63c-3.625 1.875-7.875-1.125-7.25-5.25l3.875-22.75l-16.5-16.13c-3-2.875-1.25-7.875 2.875-8.5l22.75-3.25l10.25-20.75c1.75-3.625 7.125-3.625 9 0l10.13 20.75l22.88 3.25C521.6 235.4 523.2 240.4 520.2 243.2z"], + "desktop": [576, 512, [61704, 128421, "desktop-alt"], "f390", "M528 0h-480C21.5 0 0 21.5 0 48v320C0 394.5 21.5 416 48 416h192L224 464H152C138.8 464 128 474.8 128 488S138.8 512 152 512h272c13.25 0 24-10.75 24-24s-10.75-24-24-24H352L336 416h192c26.5 0 48-21.5 48-48v-320C576 21.5 554.5 0 528 0zM512 288H64V64h448V288z"], + "dharmachakra": [512, 512, [9784], "f655", "M495 225l-17.24 1.124c-5.25-39.5-20.76-75.63-43.89-105.9l12.1-11.37c6.875-6.125 7.25-16.75 .75-23.38L426.5 64.38c-6.625-6.5-17.25-6.125-23.38 .75l-11.37 12.1c-30.25-23.12-66.38-38.64-105.9-43.89L287 17C287.5 7.75 280.2 0 271 0h-30c-9.25 0-16.5 7.75-16 17l1.124 17.24c-39.5 5.25-75.63 20.76-105.9 43.89L108.9 65.13C102.8 58.25 92.13 57.88 85.63 64.38L64.38 85.5C57.88 92.12 58.25 102.8 65.13 108.9l12.1 11.37C54.1 150.5 39.49 186.6 34.24 226.1L17 225C7.75 224.5 0 231.8 0 241v30c0 9.25 7.75 16.5 17 16l17.24-1.124c5.25 39.5 20.76 75.63 43.89 105.9l-12.1 11.37c-6.875 6.125-7.25 16.75-.75 23.25l21.25 21.25c6.5 6.5 17.13 6.125 23.25-.75l11.37-12.1c30.25 23.12 66.38 38.64 105.9 43.89L225 495C224.5 504.2 231.8 512 241 512h30c9.25 0 16.5-7.75 16-17l-1.124-17.24c39.5-5.25 75.63-20.76 105.9-43.89l11.37 12.1c6.125 6.875 16.75 7.25 23.38 .75l21.12-21.25c6.5-6.5 6.125-17.13-.75-23.25l-12.1-11.37c23.12-30.25 38.64-66.38 43.89-105.9L495 287C504.3 287.5 512 280.2 512 271v-30C512 231.8 504.3 224.5 495 225zM281.9 98.68c24.75 4 47.61 13.59 67.24 27.71L306.5 174.6c-8.75-5.375-18.38-9.507-28.62-11.88L281.9 98.68zM230.1 98.68l3.996 64.06C223.9 165.1 214.3 169.2 205.5 174.6L162.9 126.4C182.5 112.3 205.4 102.7 230.1 98.68zM126.4 163l48.35 42.48c-5.5 8.75-9.606 18.4-11.98 28.65L98.68 230.1C102.7 205.4 112.2 182.5 126.4 163zM98.68 281.9l64.06-3.996C165.1 288.1 169.3 297.8 174.6 306.5l-48.23 42.61C112.3 329.5 102.7 306.6 98.68 281.9zM230.1 413.3c-24.75-4-47.61-13.59-67.24-27.71l42.58-48.33c8.75 5.5 18.4 9.606 28.65 11.98L230.1 413.3zM256 288C238.4 288 224 273.6 224 256s14.38-32 32-32s32 14.38 32 32S273.6 288 256 288zM281.9 413.3l-3.996-64.06c10.25-2.375 19.9-6.48 28.65-11.98l42.48 48.35C329.5 399.8 306.6 409.3 281.9 413.3zM385.6 349l-48.25-42.5c5.375-8.75 9.507-18.38 11.88-28.62l64.06 3.996C409.3 306.6 399.8 329.5 385.6 349zM349.3 234.1c-2.375-10.25-6.48-19.9-11.98-28.65L385.6 163c14.13 19.5 23.69 42.38 27.69 67.13L349.3 234.1z"], + "diagram-next": [512, 512, [], "e476", "M512 160C512 195.3 483.3 224 448 224H280V288H326.1C347.4 288 358.1 313.9 343 328.1L272.1 399C263.6 408.4 248.4 408.4 239 399L168.1 328.1C153.9 313.9 164.6 288 185.9 288H232V224H64C28.65 224 0 195.3 0 160V96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V160zM312.6 416H448V352H376.6L384.1 343.6C401 327.6 404.6 306.4 399 288H448C483.3 288 512 316.7 512 352V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V352C0 316.7 28.65 288 64 288H112.1C107.4 306.4 110.1 327.6 127 343.6L135.4 352H64V416H199.4L216.4 432.1C238.3 454.8 273.7 454.8 295.6 432.1L312.6 416z"], + "diagram-predecessor": [512, 512, [], "e477", "M64 480C28.65 480 0 451.3 0 416V352C0 316.7 28.65 288 64 288H448C483.3 288 512 316.7 512 352V416C512 451.3 483.3 480 448 480H64zM448 416V352H64V416H448zM288 160C288 195.3 259.3 224 224 224H64C28.65 224 0 195.3 0 160V96C0 60.65 28.65 32 64 32H368C412.2 32 448 67.82 448 112V128H486.1C507.4 128 518.1 153.9 503 168.1L432.1 239C423.6 248.4 408.4 248.4 399 239L328.1 168.1C313.9 153.9 324.6 128 345.9 128H384V112C384 103.2 376.8 96 368 96H288V160z"], + "diagram-project": [576, 512, ["project-diagram"], "f542", "M0 80C0 53.49 21.49 32 48 32H144C170.5 32 192 53.49 192 80V96H384V80C384 53.49 405.5 32 432 32H528C554.5 32 576 53.49 576 80V176C576 202.5 554.5 224 528 224H432C405.5 224 384 202.5 384 176V160H192V176C192 177.7 191.9 179.4 191.7 180.1L272 288H368C394.5 288 416 309.5 416 336V432C416 458.5 394.5 480 368 480H272C245.5 480 224 458.5 224 432V336C224 334.3 224.1 332.6 224.3 331L144 224H48C21.49 224 0 202.5 0 176V80z"], + "diagram-successor": [512, 512, [], "e47a", "M512 416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V352C0 316.7 28.65 288 64 288H448C483.3 288 512 316.7 512 352V416zM224 224H64C28.65 224 0 195.3 0 160V96C0 60.65 28.65 32 64 32H368C412.2 32 448 67.82 448 112V128H486.1C507.4 128 518.1 153.9 503 168.1L432.1 239C423.6 248.4 408.4 248.4 399 239L328.1 168.1C313.9 153.9 324.6 128 345.9 128H384V112C384 103.2 376.8 96 368 96H288V160C288 195.3 259.3 224 224 224V224zM64 160H224V96H64V160z"], + "diamond": [512, 512, [9830], "f219", "M500.3 227.7C515.9 243.3 515.9 268.7 500.3 284.3L284.3 500.3C268.7 515.9 243.3 515.9 227.7 500.3L11.72 284.3C-3.905 268.7-3.905 243.3 11.72 227.7L227.7 11.72C243.3-3.905 268.7-3.905 284.3 11.72L500.3 227.7z"], + "diamond-turn-right": [512, 512, ["directions"], "f5eb", "M497.1 222.1l-208.1-208.1c-9.364-9.364-21.62-14.04-33.89-14.03C243.7 .0092 231.5 4.686 222.1 14.03L14.03 222.1C4.676 231.5 .0002 243.7 .0004 255.1c.0002 12.26 4.676 24.52 14.03 33.87l208.1 208.1C231.5 507.3 243.7 511.1 256 511.1c12.26 0 24.52-4.677 33.87-14.03l208.1-208.1c9.352-9.353 14.03-21.61 14.03-33.87C511.1 243.7 507.3 231.5 497.1 222.1zM410.5 252l-96 84c-10.79 9.545-26.53 .9824-26.53-12.03V272H223.1l-.0001 48C223.1 337.6 209.6 352 191.1 352S159.1 337.6 159.1 320V240c0-17.6 14.4-32 32-32h95.1V156c0-13.85 16.39-20.99 26.53-12.03l96 84C414 231 415.1 235.4 415.1 240S414 249 410.5 252z"], + "dice": [640, 512, [127922], "f522", "M447.1 224c0-12.56-4.781-25.13-14.35-34.76l-174.9-174.9C249.1 4.786 236.5 0 223.1 0C211.4 0 198.9 4.786 189.2 14.35L14.35 189.2C4.783 198.9-.0011 211.4-.0011 223.1c0 12.56 4.785 25.17 14.35 34.8l174.9 174.9c9.625 9.562 22.19 14.35 34.75 14.35s25.13-4.783 34.75-14.35l174.9-174.9C443.2 249.1 447.1 236.6 447.1 224zM96 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1S120 210.8 120 224S109.3 248 96 248zM224 376c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S237.3 376 224 376zM224 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1S248 210.8 248 224S237.3 248 224 248zM224 120c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S237.3 120 224 120zM352 248c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S365.3 248 352 248zM591.1 192l-118.7 0c4.418 10.27 6.604 21.25 6.604 32.23c0 20.7-7.865 41.38-23.63 57.14l-136.2 136.2v46.37C320 490.5 341.5 512 368 512h223.1c26.5 0 47.1-21.5 47.1-47.1V240C639.1 213.5 618.5 192 591.1 192zM479.1 376c-13.25 0-23.1-10.75-23.1-23.1s10.75-23.1 23.1-23.1s23.1 10.75 23.1 23.1S493.2 376 479.1 376z"], + "dice-d20": [512, 512, [], "f6cf", "M20.04 317.3C18 317.3 16 315.8 16 313.3V150.5c0-2.351 1.91-4.012 4.001-4.012c.6882 0 1.396 .18 2.062 .5748l76.62 45.1l-75.28 122.3C22.59 316.8 21.31 317.3 20.04 317.3zM231.4 405.2l-208.2-22.06c-4.27-.4821-7.123-4.117-7.123-7.995c0-1.401 .3725-2.834 1.185-4.161L122.7 215.1L231.4 405.2zM31.1 420.1c0-2.039 1.508-4.068 3.93-4.068c.1654 0 .3351 .0095 .5089 .0291l203.6 22.31v65.66C239.1 508.6 236.2 512 232 512c-1.113 0-2.255-.2387-3.363-.7565L34.25 423.6C32.69 422.8 31.1 421.4 31.1 420.1zM33.94 117.1c-1.289-.7641-1.938-2.088-1.938-3.417c0-1.281 .6019-2.567 1.813-3.364l150.8-98.59C185.1 10.98 187.3 10.64 188.6 10.64c4.32 0 8.003 3.721 8.003 8.022c0 1.379-.3788 2.818-1.237 4.214L115.5 165.8L33.94 117.1zM146.8 175.1l95.59-168.4C245.5 2.53 250.7 0 255.1 0s10.5 2.53 13.62 7.624l95.59 168.4H146.8zM356.4 207.1l-100.4 175.7L155.6 207.1H356.4zM476.1 415.1c2.422 0 3.93 2.029 3.93 4.068c0 1.378-.6893 2.761-2.252 3.524l-194.4 87.66c-1.103 .5092-2.241 .7443-3.35 .7443c-4.2 0-7.994-3.371-7.994-7.994v-65.69l203.6-22.28C475.7 416 475.9 415.1 476.1 415.1zM494.8 370.9C495.6 372.3 496 373.7 496 375.1c0 3.872-2.841 7.499-7.128 7.98l-208.2 22.06l108.6-190.1L494.8 370.9zM316.6 22.87c-.8581-1.395-1.237-2.834-1.237-4.214c0-4.301 3.683-8.022 8.003-8.022c1.308 0 2.675 .3411 4.015 1.11l150.8 98.59c1.211 .7973 1.813 2.076 1.813 3.353c0 1.325-.6488 2.649-1.938 3.429L396.5 165.8L316.6 22.87zM491.1 146.5c2.091 0 4.001 1.661 4.001 4.012v162.8c0 2.483-2.016 4.006-4.053 4.006c-1.27 0-2.549-.5919-3.353-1.912l-75.28-122.3l76.62-45.1C490.6 146.7 491.3 146.5 491.1 146.5z"], + "dice-d6": [448, 512, [], "f6d1", "M7.994 153.5c1.326 0 2.687 .3508 3.975 1.119L208 271.5v223.8c0 9.741-7.656 16.71-16.01 16.71c-2.688 0-5.449-.7212-8.05-2.303l-152.2-92.47C12.13 405.3 0 383.3 0 359.5v-197.7C0 156.1 3.817 153.5 7.994 153.5zM426.2 117.2c0 2.825-1.352 5.647-4.051 7.248L224 242.6L25.88 124.4C23.19 122.8 21.85 119.1 21.85 117.2c0-2.8 1.32-5.603 3.965-7.221l165.1-100.9C201.7 3.023 212.9 0 224 0s22.27 3.023 32.22 9.07l165.1 100.9C424.8 111.6 426.2 114.4 426.2 117.2zM440 153.5C444.2 153.5 448 156.1 448 161.8v197.7c0 23.75-12.12 45.75-31.78 57.69l-152.2 92.5C261.5 511.3 258.7 512 256 512C247.7 512 240 505 240 495.3V271.5l196-116.9C437.3 153.8 438.7 153.5 440 153.5z"], + "dice-five": [448, 512, [9860], "f523", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM128 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S145.6 384 128 384zM128 192C110.4 192 96 177.6 96 160s14.38-32 32-32s32 14.38 32 32S145.6 192 128 192zM224 288C206.4 288 192 273.6 192 256s14.38-32 32-32s32 14.38 32 32S241.6 288 224 288zM320 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 384 320 384zM320 192c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 192 320 192z"], + "dice-four": [448, 512, [9859], "f524", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM128 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S145.6 384 128 384zM128 192C110.4 192 96 177.6 96 160s14.38-32 32-32s32 14.38 32 32S145.6 192 128 192zM320 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 384 320 384zM320 192c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 192 320 192z"], + "dice-one": [448, 512, [9856], "f525", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM224 288C206.4 288 192 273.6 192 256s14.38-32 32-32s32 14.38 32 32S241.6 288 224 288z"], + "dice-six": [448, 512, [9861], "f526", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM128 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S145.6 384 128 384zM128 288C110.4 288 96 273.6 96 256s14.38-32 32-32s32 14.38 32 32S145.6 288 128 288zM128 192C110.4 192 96 177.6 96 160s14.38-32 32-32s32 14.38 32 32S145.6 192 128 192zM320 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 384 320 384zM320 288c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 288 320 288zM320 192c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 192 320 192z"], + "dice-three": [448, 512, [9858], "f527", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM128 192C110.4 192 96 177.6 96 160s14.38-32 32-32s32 14.38 32 32S145.6 192 128 192zM224 288C206.4 288 192 273.6 192 256s14.38-32 32-32s32 14.38 32 32S241.6 288 224 288zM320 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 384 320 384z"], + "dice-two": [448, 512, [9857], "f528", "M384 32H64C28.62 32 0 60.62 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.62 419.4 32 384 32zM128 192C110.4 192 96 177.6 96 160s14.38-32 32-32s32 14.38 32 32S145.6 192 128 192zM320 384c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 384 320 384z"], + "disease": [512, 512, [], "f7fa", "M472.2 195.9l-66.1-22.1c-19.25-6.624-33.5-20.87-38.13-38.24l-16-60.49c-11.62-43.74-76.63-57.11-110-22.62L194.1 99.3c-13.25 13.75-33.5 20.87-54.25 19.25L68.86 112.9c-52-3.999-86.88 44.99-59 82.86l38.63 52.49c11 14.1 12.75 33.74 4.625 50.12l-28.5 56.99c-20.62 41.24 22.88 84.86 73.5 73.86l69.1-15.25c20.12-4.499 41.38 .0001 57 11.62l54.38 40.87c39.38 29.62 101 7.623 104.5-37.24l4.625-61.86c1.375-17.75 12.88-33.87 30.62-42.99l61.1-31.62C526.1 269.8 520.9 212.5 472.2 195.9zM159.1 256c-17.62 0-31.1-14.37-31.1-31.1s14.37-31.1 31.1-31.1s31.1 14.37 31.1 31.1S177.6 256 159.1 256zM287.1 351.1c-17.62 0-31.1-14.37-31.1-31.1c0-17.62 14.37-31.1 31.1-31.1s31.1 14.37 31.1 31.1C319.1 337.6 305.6 351.1 287.1 351.1zM303.1 224c-8.875 0-15.1-7.125-15.1-15.1c0-8.873 7.125-15.1 15.1-15.1s15.1 7.125 15.1 15.1C319.1 216.9 312.9 224 303.1 224z"], + "display": [576, 512, [], "e163", "M528 0h-480C21.5 0 0 21.5 0 48v320C0 394.5 21.5 416 48 416h192L224 464H152C138.8 464 128 474.8 128 488S138.8 512 152 512h272c13.25 0 24-10.75 24-24s-10.75-24-24-24H352L336 416h192c26.5 0 48-21.5 48-48v-320C576 21.5 554.5 0 528 0zM512 352H64V64h448V352z"], + "divide": [448, 512, [10135, 247], "f529", "M400 224h-352c-17.69 0-32 14.31-32 31.1s14.31 32 32 32h352c17.69 0 32-14.31 32-32S417.7 224 400 224zM224 144c26.47 0 48-21.53 48-48s-21.53-48-48-48s-48 21.53-48 48S197.5 144 224 144zM224 368c-26.47 0-48 21.53-48 48s21.53 48 48 48s48-21.53 48-48S250.5 368 224 368z"], + "dna": [448, 512, [129516], "f471", "M.1193 494.1c-1.125 9.5 6.312 17.87 15.94 17.87l32.06 .0635c8.125 0 15.21-5.833 16.21-13.83c.7501-4.875 1.869-11.17 3.494-18.17h312c1.625 6.875 2.904 13.31 3.529 18.18c1.125 7.1 7.84 13.94 15.97 13.82l32.46-.0625c9.625 0 17.12-8.374 15.99-17.87c-4.625-37.87-25.75-128.1-119.1-207.7c-17.5 12.37-36.98 24.37-58.48 35.49c6.25 4.625 11.56 9.405 17.06 14.15H159.7c21.25-18.12 47.03-35.63 78.65-51.38c172.1-85.5 203.7-218.8 209.5-266.7c1.125-9.5-6.297-17.88-15.92-17.88L399.6 .001c-8.125 0-14.84 5.832-15.96 13.83c-.7501 4.875-1.869 11.17-3.369 18.17H67.74C66.24 25 65.08 18.81 64.33 13.81C63.21 5.813 56.48-.124 48.36 .001L16.1 .1338c-9.625 0-17.09 8.354-15.96 17.85c5.125 42.87 31.29 153.8 159.9 238.1C31.55 340.3 5.245 451.2 .1193 494.1zM223.9 219.7C198.8 205.9 177.6 191.3 159.7 176h128.5C270.4 191.3 249 206.1 223.9 219.7zM355.1 96c-5.875 10.37-12.88 21.12-21 31.1H113.1c-8.25-10.87-15.3-21.63-21.05-32L355.1 96zM93 415.1c5.875-10.37 12.74-21.13 20.87-32h219.4c8.375 10.87 15.48 21.63 21.23 32H93z"], + "dog": [576, 512, [128021], "f6d3", "M332.7 19.85C334.6 8.395 344.5 0 356.1 0C363.6 0 370.6 3.52 375.1 9.502L392 32H444.1C456.8 32 469.1 37.06 478.1 46.06L496 64H552C565.3 64 576 74.75 576 88V112C576 156.2 540.2 192 496 192H426.7L421.6 222.5L309.6 158.5L332.7 19.85zM448 64C439.2 64 432 71.16 432 80C432 88.84 439.2 96 448 96C456.8 96 464 88.84 464 80C464 71.16 456.8 64 448 64zM416 256.1V480C416 497.7 401.7 512 384 512H352C334.3 512 320 497.7 320 480V364.8C295.1 377.1 268.8 384 240 384C211.2 384 184 377.1 160 364.8V480C160 497.7 145.7 512 128 512H96C78.33 512 64 497.7 64 480V249.8C35.23 238.9 12.64 214.5 4.836 183.3L.9558 167.8C-3.331 150.6 7.094 133.2 24.24 128.1C41.38 124.7 58.76 135.1 63.05 152.2L66.93 167.8C70.49 182 83.29 191.1 97.97 191.1H303.8L416 256.1z"], + "dollar-sign": [320, 512, [128178, 61781, "dollar", "usd"], "24", "M160 0C177.7 0 192 14.33 192 32V67.68C193.6 67.89 195.1 68.12 196.7 68.35C207.3 69.93 238.9 75.02 251.9 78.31C268.1 82.65 279.4 100.1 275 117.2C270.7 134.3 253.3 144.7 236.1 140.4C226.8 137.1 198.5 133.3 187.3 131.7C155.2 126.9 127.7 129.3 108.8 136.5C90.52 143.5 82.93 153.4 80.92 164.5C78.98 175.2 80.45 181.3 82.21 185.1C84.1 189.1 87.79 193.6 95.14 198.5C111.4 209.2 136.2 216.4 168.4 225.1L171.2 225.9C199.6 233.6 234.4 243.1 260.2 260.2C274.3 269.6 287.6 282.3 295.8 299.9C304.1 317.7 305.9 337.7 302.1 358.1C295.1 397 268.1 422.4 236.4 435.6C222.8 441.2 207.8 444.8 192 446.6V480C192 497.7 177.7 512 160 512C142.3 512 128 497.7 128 480V445.1C127.6 445.1 127.1 444.1 126.7 444.9L126.5 444.9C102.2 441.1 62.07 430.6 35 418.6C18.85 411.4 11.58 392.5 18.76 376.3C25.94 360.2 44.85 352.9 60.1 360.1C81.9 369.4 116.3 378.5 136.2 381.6C168.2 386.4 194.5 383.6 212.3 376.4C229.2 369.5 236.9 359.5 239.1 347.5C241 336.8 239.6 330.7 237.8 326.9C235.9 322.9 232.2 318.4 224.9 313.5C208.6 302.8 183.8 295.6 151.6 286.9L148.8 286.1C120.4 278.4 85.58 268.9 59.76 251.8C45.65 242.4 32.43 229.7 24.22 212.1C15.89 194.3 14.08 174.3 17.95 153C25.03 114.1 53.05 89.29 85.96 76.73C98.98 71.76 113.1 68.49 128 66.73V32C128 14.33 142.3 0 160 0V0z"], + "dolly": [576, 512, ["dolly-box"], "f472", "M294.2 277.8c17.1 5 34.62 13.38 49.5 24.62l161.5-53.75c8.375-2.875 12.88-11.88 10-20.25L454.8 47.25c-2.748-8.502-11.88-13-20.12-10.12l-61.13 20.37l33.12 99.38l-60.75 20.13l-33.12-99.38L251.2 98.13c-8.373 2.75-12.87 11.88-9.998 20.12L294.2 277.8zM574.4 309.9c-5.594-16.75-23.67-25.91-40.48-20.23l-202.5 67.51c-17.22-22.01-43.57-36.41-73.54-36.97L165.7 43.75C156.9 17.58 132.5 0 104.9 0H32C14.33 0 0 14.33 0 32s14.33 32 32 32h72.94l92.22 276.7C174.7 358.2 160 385.3 160 416c0 53.02 42.98 96 96 96c52.4 0 94.84-42.03 95.82-94.2l202.3-67.44C570.9 344.8 579.1 326.6 574.4 309.9zM256 448c-17.67 0-32-14.33-32-32c0-17.67 14.33-31.1 32-31.1S288 398.3 288 416C288 433.7 273.7 448 256 448z"], + "dong-sign": [384, 512, [], "e169", "M320 64C337.7 64 352 78.33 352 96C352 113.7 337.7 128 320 128V384C320 401.7 305.7 416 288 416C275 416 263.9 408.3 258.8 397.2C239.4 409.1 216.5 416 192 416C121.3 416 64 358.7 64 288C64 217.3 121.3 160 192 160C215.3 160 237.2 166.2 256 177.1V128H224C206.3 128 192 113.7 192 96C192 78.33 206.3 64 224 64H256C256 46.33 270.3 32 288 32C305.7 32 320 46.33 320 64V64zM256 288C256 252.7 227.3 224 192 224C156.7 224 128 252.7 128 288C128 323.3 156.7 352 192 352C227.3 352 256 323.3 256 288zM352 448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H352z"], + "door-closed": [576, 512, [128682], "f52a", "M560 448H480V50.75C480 22.75 458.5 0 432 0h-288C117.5 0 96 22.75 96 50.75V448H16C7.125 448 0 455.1 0 464v32C0 504.9 7.125 512 16 512h544c8.875 0 16-7.125 16-16v-32C576 455.1 568.9 448 560 448zM384 288c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S401.6 288 384 288z"], + "door-open": [576, 512, [], "f52b", "M560 448H512V113.5c0-27.25-21.5-49.5-48-49.5L352 64.01V128h96V512h112c8.875 0 16-7.125 16-15.1v-31.1C576 455.1 568.9 448 560 448zM280.3 1.007l-192 49.75C73.1 54.51 64 67.76 64 82.88V448H16c-8.875 0-16 7.125-16 15.1v31.1C0 504.9 7.125 512 16 512H320V33.13C320 11.63 300.5-4.243 280.3 1.007zM232 288c-13.25 0-24-14.37-24-31.1c0-17.62 10.75-31.1 24-31.1S256 238.4 256 256C256 273.6 245.3 288 232 288z"], + "dove": [512, 512, [128330], "f4ba", "M288 167.2V139.1c-28.25-36.38-47.13-79.29-54.13-125.2C231.7 .4054 214.8-5.02 206.1 5.481C184.1 30.36 168.4 59.7 157.2 92.07C191.4 130.3 237.2 156.7 288 167.2zM400 63.97c-44.25 0-79.1 35.82-79.1 80.08l.0014 59.44c-104.4-6.251-193-70.46-233-161.7C81.48 29.25 63.76 28.58 58.01 40.83C41.38 75.96 32.01 115.2 32.01 156.6c0 70.76 34.11 136.9 85.11 185.9c13.12 12.75 26.13 23.27 38.88 32.77L12.12 411.2c-10.75 2.75-15.5 15.09-9.5 24.47c17.38 26.88 60.42 72.54 153.2 76.29c8 .25 15.99-2.633 22.12-7.883l65.23-56.12l76.84 .0561c88.38 0 160-71.49 160-159.9l.0013-160.2l31.1-63.99L400 63.97zM400 160.1c-8.75 0-16.01-7.259-16.01-16.01c0-8.876 7.261-16.05 16.01-16.05s15.99 7.136 15.99 16.01C416 152.8 408.8 160.1 400 160.1z"], + "down-left-and-up-right-to-center": [512, 512, ["compress-alt"], "f422", "M215.1 272h-136c-12.94 0-24.63 7.797-29.56 19.75C45.47 303.7 48.22 317.5 57.37 326.6l30.06 30.06l-78.06 78.07c-12.5 12.5-12.5 32.75-.0012 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.26 .0013l78.06-78.07l30.06 30.06c6.125 6.125 14.31 9.367 22.63 9.367c4.125 0 8.279-.7891 12.25-2.43c11.97-4.953 19.75-16.62 19.75-29.56V296C239.1 282.7 229.3 272 215.1 272zM296 240h136c12.94 0 24.63-7.797 29.56-19.75c4.969-11.97 2.219-25.72-6.938-34.87l-30.06-30.06l78.06-78.07c12.5-12.5 12.5-32.76 .0002-45.26l-22.62-22.62c-12.5-12.5-32.76-12.5-45.26-.0003l-78.06 78.07l-30.06-30.06c-9.156-9.141-22.87-11.84-34.87-6.937c-11.97 4.953-19.75 16.62-19.75 29.56v135.1C272 229.3 282.7 240 296 240z"], + "down-long": [320, 512, ["long-arrow-alt-down"], "f309", "M281.6 392.3l-104 112.1c-9.498 10.24-25.69 10.24-35.19 0l-104-112.1c-6.484-6.992-8.219-17.18-4.404-25.94c3.811-8.758 12.45-14.42 21.1-14.42H128V32c0-17.69 14.33-32 32-32S192 14.31 192 32v319.9h72c9.547 0 18.19 5.66 22 14.42C289.8 375.1 288.1 385.3 281.6 392.3z"], + "download": [512, 512, [], "f019", "M480 352h-133.5l-45.25 45.25C289.2 409.3 273.1 416 256 416s-33.16-6.656-45.25-18.75L165.5 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456zM233.4 374.6C239.6 380.9 247.8 384 256 384s16.38-3.125 22.62-9.375l128-128c12.49-12.5 12.49-32.75 0-45.25c-12.5-12.5-32.76-12.5-45.25 0L288 274.8V32c0-17.67-14.33-32-32-32C238.3 0 224 14.33 224 32v242.8L150.6 201.4c-12.49-12.5-32.75-12.5-45.25 0c-12.49 12.5-12.49 32.75 0 45.25L233.4 374.6z"], + "dragon": [640, 512, [128009], "f6d5", "M18.43 255.8L192 224L100.8 292.6C90.67 302.8 97.8 320 112 320h222.7c-9.499-26.5-14.75-54.5-14.75-83.38V194.2L200.3 106.8C176.5 90.88 145 92.75 123.3 111.2l-117.5 116.4C-6.562 238 2.436 258 18.43 255.8zM575.2 289.9l-100.7-50.25c-16.25-8.125-26.5-24.75-26.5-43V160h63.99l28.12 22.62C546.1 188.6 554.2 192 562.7 192h30.1c11.1 0 23.12-6.875 28.5-17.75l14.37-28.62c5.374-10.87 4.25-23.75-2.999-33.5l-74.49-99.37C552.1 4.75 543.5 0 533.5 0H296C288.9 0 285.4 8.625 290.4 13.62L351.1 64L292.4 88.75c-5.874 3-5.874 11.37 0 14.37L351.1 128l-.0011 108.6c0 72 35.99 139.4 95.99 179.4c-195.6 6.75-344.4 41-434.1 60.88c-8.124 1.75-13.87 9-13.87 17.38C.0463 504 8.045 512 17.79 512h499.1c63.24 0 119.6-47.5 122.1-110.8C642.3 354 617.1 310.9 575.2 289.9zM489.1 66.25l45.74 11.38c-2.75 11-12.5 18.88-24.12 18.25C497.7 95.25 484.8 83.38 489.1 66.25z"], + "draw-polygon": [448, 512, [], "f5ee", "M384.3 352C419.5 352.2 448 380.7 448 416C448 451.3 419.3 480 384 480C360.3 480 339.6 467.1 328.6 448H119.4C108.4 467.1 87.69 480 64 480C28.65 480 0 451.3 0 416C0 392.3 12.87 371.6 32 360.6V151.4C12.87 140.4 0 119.7 0 96C0 60.65 28.65 32 64 32C87.69 32 108.4 44.87 119.4 64H328.6C339.6 44.87 360.3 32 384 32C419.3 32 448 60.65 448 96C448 131.3 419.5 159.8 384.3 159.1L345.5 227.9C349.7 236.4 352 245.9 352 256C352 266.1 349.7 275.6 345.5 284.1L384.3 352zM96 360.6C105.7 366.2 113.8 374.3 119.4 384H328.6C328.6 383.9 328.7 383.8 328.7 383.7L292.2 319.9C290.8 319.1 289.4 320 288 320C252.7 320 224 291.3 224 256C224 220.7 252.7 192 288 192C289.4 192 290.8 192 292.2 192.1L328.7 128.3L328.6 128H119.4C113.8 137.7 105.7 145.8 96 151.4L96 360.6z"], + "droplet": [384, 512, [128167, "tint"], "f043", "M16 319.1C16 245.9 118.3 89.43 166.9 19.3C179.2 1.585 204.8 1.585 217.1 19.3C265.7 89.43 368 245.9 368 319.1C368 417.2 289.2 496 192 496C94.8 496 16 417.2 16 319.1zM112 319.1C112 311.2 104.8 303.1 96 303.1C87.16 303.1 80 311.2 80 319.1C80 381.9 130.1 432 192 432C200.8 432 208 424.8 208 416C208 407.2 200.8 400 192 400C147.8 400 112 364.2 112 319.1z"], + "droplet-slash": [640, 512, ["tint-slash"], "f5c7", "M215.3 143.4C243.5 95.07 274.2 49.29 294.9 19.3C307.2 1.585 332.8 1.585 345.1 19.3C393.7 89.43 496 245.9 496 319.1C496 333.7 494.4 347.1 491.5 359.9L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L215.3 143.4zM143.1 319.1C143.1 296.5 154.3 264.6 169.1 229.9L443.5 445.4C411.7 476.7 368.1 496 319.1 496C222.8 496 143.1 417.2 143.1 319.1V319.1zM239.1 319.1C239.1 311.2 232.8 303.1 223.1 303.1C215.2 303.1 207.1 311.2 207.1 319.1C207.1 381.9 258.1 432 319.1 432C328.8 432 336 424.8 336 416C336 407.2 328.8 400 319.1 400C275.8 400 239.1 364.2 239.1 319.1V319.1z"], + "drum": [512, 512, [129345], "f569", "M431.1 122l70.02-45.91c11.09-7.273 14.19-22.14 6.906-33.25c-7.219-11.07-22.09-14.23-33.22-6.924l-106.4 69.73c-49.81-8.787-97.18-9.669-112.4-9.669c-.002 0 .002 0 0 0C219.5 96 0 100.6 0 208.3v160.1c0 30.27 27.5 57.68 71.1 77.85v-101.9c0-13.27 10.75-24.03 24-24.03s23.1 10.76 23.1 24.03v118.9C153 472.4 191.1 478.3 231.1 480v-103.6c0-13.27 10.75-24.03 24-24.03c.002 0-.002 0 0 0c13.25 0 24 10.76 24 24.03V480c40.93-1.668 78.95-7.615 111.1-16.72v-118.9c0-13.27 10.75-24.03 24-24.03s24 10.76 24 24.03v101.9c44.49-20.17 71.1-47.58 71.1-77.85V208.3C511.1 164.9 476.1 138.4 431.1 122zM255.1 272.5C255.1 272.5 255.1 272.5 255.1 272.5c-114.9 0-207.1-28.97-207.1-64.39s93.12-63.1 207.1-63.1c.002 0-.002 0 0 0c17.5 0 34.47 .7139 50.71 1.966L242.8 187.1c-11.09 7.273-14.19 22.14-6.906 33.25C240.5 228.3 248.2 232.1 256 232.1c4.5 0 9.062-1.265 13.12-3.923l109.3-71.67c51.77 11.65 85.5 30.38 85.5 51.67C463.1 243.6 370.9 272.5 255.1 272.5z"], + "drum-steelpan": [576, 512, [], "f56a", "M288 32C129 32 0 89.25 0 160v192c0 70.75 129 128 288 128s288-57.25 288-128V160C576 89.25 447 32 288 32zM205 190.4c-4.5 16.62-14.5 30.5-28.25 40.5C100.2 217.5 48 190.8 48 160c0-30.12 50.12-56.38 124-69.1l25.62 44.25C207.5 151.4 210.1 171.2 205 190.4zM288 240c-21.12 0-41.38-.1-60.88-2.75C235.1 211.1 259.2 192 288 192s52.88 19.12 60.88 45.25C329.4 239 309.1 240 288 240zM352 96c0 35.25-28.75 64-64 64S224 131.2 224 96V83C244.4 81.12 265.8 80 288 80s43.63 1.125 64 3V96zM398.9 230.9c-13.75-9.875-23.88-23.88-28.38-40.5c-5.125-19.13-2.5-39 7.375-56l25.62-44.5C477.8 103.5 528 129.8 528 160C528 190.9 475.6 217.5 398.9 230.9z"], + "drumstick-bite": [512, 512, [], "f6d7", "M512 168.9c0 1.766-.0229 3.398-.0768 5.164c-16.91-9.132-35.51-13.76-53.96-13.76c-82.65 0-105.5 74.17-105.5 105.4c0 27.04 9.923 54.43 29.63 76.25c-19.52 6.629-39.99 9.997-60.62 9.997l-87.18 .0038l-40.59 40.49c-6.104 6.103-8.921 14.01-8.921 22.17c0 13.98 7.244 17.1 7.244 37.03C192.1 485.4 164.6 512 131.7 512c-15.63 0-31.11-6.055-42.72-17.8c-11.55-11.46-16.82-26.31-16.82-41.26c0-4.948 .575-9.903 1.695-14.75c-4.842 1.11-9.793 1.681-14.72 1.681c-42.15 0-59.13-36.64-59.13-59.5c0-33.43 27.15-60.34 60.39-60.34c18.97 0 22.97 7.219 36.96 7.219c8.159 0 16.04-2.811 22.14-8.914l40.57-40.47L160.1 191.1c0-63.1 27.79-107 63.17-142.4c33.13-33.06 76.39-49.59 119.7-49.59s86.79 16.53 119.9 49.59C495.9 82.5 512 125.7 512 168.9z"], + "dumbbell": [640, 512, [], "f44b", "M104 96h-48C42.75 96 32 106.8 32 120V224C14.33 224 0 238.3 0 256c0 17.67 14.33 32 31.1 32L32 392C32 405.3 42.75 416 56 416h48C117.3 416 128 405.3 128 392v-272C128 106.8 117.3 96 104 96zM456 32h-48C394.8 32 384 42.75 384 56V224H256V56C256 42.75 245.3 32 232 32h-48C170.8 32 160 42.75 160 56v400C160 469.3 170.8 480 184 480h48C245.3 480 256 469.3 256 456V288h128v168c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24V56C480 42.75 469.3 32 456 32zM608 224V120C608 106.8 597.3 96 584 96h-48C522.8 96 512 106.8 512 120v272c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24V288c17.67 0 32-14.33 32-32C640 238.3 625.7 224 608 224z"], + "dumpster": [576, 512, [], "f793", "M560 160c10.38 0 17.1-9.75 15.5-19.88l-24-95.1C549.8 37 543.3 32 536 32h-98.88l25.62 128H560zM272 32H171.5L145.9 160H272V32zM404.5 32H304v128h126.1L404.5 32zM16 160h97.25l25.63-128H40C32.75 32 26.25 37 24.5 44.12l-24 95.1C-2.001 150.2 5.625 160 16 160zM560 224h-20L544 192H32l4 32H16C7.25 224 0 231.2 0 240v32C0 280.8 7.25 288 16 288h28L64 448v16C64 472.8 71.25 480 80 480h32C120.8 480 128 472.8 128 464V448h320v16c0 8.75 7.25 16 16 16h32c8.75 0 16-7.25 16-16V448l20-160H560C568.8 288 576 280.8 576 272v-32C576 231.2 568.8 224 560 224z"], + "dumpster-fire": [640, 512, [], "f794", "M418.8 104.2L404.6 32H304.1L304 159.1h60.77C381.1 140.7 399.1 121.8 418.8 104.2zM272.1 32.12H171.5L145.9 160.1h126.1L272.1 32.12zM461.3 104.2c18.25 16.25 35.51 33.62 51.14 51.49c5.751-5.623 11.38-11.12 17.38-16.37l21.26-18.98l21.25 18.98c1.125 .9997 2.125 2.124 3.126 3.124c-.125-.7498 .2501-1.5 0-2.249l-24-95.97c-1.625-7.123-8.127-12.12-15.38-12.12H437.2l12.25 61.5L461.3 104.2zM16 160.1l97.26-.0223l25.64-127.9h-98.89c-7.251 0-13.75 4.999-15.5 12.12L.5001 140.2C-2.001 150.3 5.626 160.1 16 160.1zM340.6 192.1L32.01 192.1l4.001 31.99L16 224.1C7.252 224.1 0 231.3 0 240.1V272c0 8.748 7.251 15.1 16 15.1l28.01 .0177l20 159.1L64.01 464C64.01 472.8 71.26 480 80.01 480h32.01c8.752 0 16-7.248 16-15.1v-15.1l208.8-.002c-30.13-33.74-48.73-77.85-48.73-126.3C288.1 285.8 307.9 238.8 340.6 192.1zM551.2 163.3c-14.88 13.25-28.38 27.12-40.26 41.12c-19.5-25.74-43.63-51.99-71.01-76.36c-70.14 62.73-120 144.2-120 193.6C319.1 409.1 391.6 480 479.1 480s160-70.87 160-158.3C640.1 285 602.1 209.4 551.2 163.3zM532.6 392.6c-14.75 10.62-32.88 16.1-52.51 16.1c-49.01 0-88.89-33.49-88.89-87.98c0-27.12 16.5-50.99 49.38-91.85c4.751 5.498 67.14 87.98 67.14 87.98l39.76-46.99c2.876 4.874 5.375 9.497 7.75 13.1C573.9 321.5 565.1 368.4 532.6 392.6z"], + "dungeon": [512, 512, [], "f6d9", "M336.6 156.5C327.3 148.1 322.6 136.5 327.1 125.3L357.6 49.18C362.7 36.27 377.8 30.36 389.7 37.63C410.9 50.63 430 66.62 446.5 85.02C455.7 95.21 452.9 110.9 441.5 118.5L373.9 163.5C363.6 170.4 349.8 168.1 340.5 159.9C339.2 158.7 337.9 157.6 336.6 156.5H336.6zM297.7 112.6C293.2 123.1 280.9 129.8 268.7 128.6C264.6 128.2 260.3 128 256 128C251.7 128 247.4 128.2 243.3 128.6C231.1 129.8 218.8 123.1 214.3 112.6L183.1 36.82C178.8 24.02 185.5 9.433 198.1 6.374C217.3 2.203 236.4 0 256 0C275.6 0 294.7 2.203 313 6.374C326.5 9.433 333.2 24.02 328 36.82L297.7 112.6zM122.3 37.63C134.2 30.36 149.3 36.27 154.4 49.18L184.9 125.3C189.4 136.5 184.7 148.1 175.4 156.5C174.1 157.6 172.8 158.7 171.5 159.9C162.2 168.1 148.4 170.4 138.1 163.5L70.52 118.5C59.13 110.9 56.32 95.21 65.46 85.02C81.99 66.62 101.1 50.63 122.3 37.63H122.3zM379.5 222.1C376.3 210.7 379.7 198.1 389.5 191.6L458.1 145.8C469.7 138.1 485.6 141.9 491.2 154.7C501.6 178.8 508.4 204.8 510.9 232C512.1 245.2 501.3 255.1 488 255.1H408C394.7 255.1 384.2 245.2 381.8 232.1C381.1 228.7 380.4 225.4 379.5 222.1V222.1zM122.5 191.6C132.3 198.1 135.7 210.7 132.5 222.1C131.6 225.4 130.9 228.7 130.2 232.1C127.8 245.2 117.3 256 104 256H24C10.75 256-.1184 245.2 1.107 232C3.636 204.8 10.43 178.8 20.82 154.7C26.36 141.9 42.26 138.1 53.91 145.8L122.5 191.6zM104 288C117.3 288 128 298.7 128 312V360C128 373.3 117.3 384 104 384H24C10.75 384 0 373.3 0 360V312C0 298.7 10.75 288 24 288H104zM488 288C501.3 288 512 298.7 512 312V360C512 373.3 501.3 384 488 384H408C394.7 384 384 373.3 384 360V312C384 298.7 394.7 288 408 288H488zM104 416C117.3 416 128 426.7 128 440V488C128 501.3 117.3 512 104 512H24C10.75 512 0 501.3 0 488V440C0 426.7 10.75 416 24 416H104zM488 416C501.3 416 512 426.7 512 440V488C512 501.3 501.3 512 488 512H408C394.7 512 384 501.3 384 488V440C384 426.7 394.7 416 408 416H488zM272 464C272 472.8 264.8 480 256 480C247.2 480 240 472.8 240 464V192C240 183.2 247.2 176 256 176C264.8 176 272 183.2 272 192V464zM208 464C208 472.8 200.8 480 192 480C183.2 480 176 472.8 176 464V224C176 215.2 183.2 208 192 208C200.8 208 208 215.2 208 224V464zM336 464C336 472.8 328.8 480 320 480C311.2 480 304 472.8 304 464V224C304 215.2 311.2 208 320 208C328.8 208 336 215.2 336 224V464z"], + "e": [320, 512, [101], "45", "M320 448c0 17.67-14.33 32-32 32H32c-17.67 0-32-14.33-32-32v-384C0 46.34 14.33 32.01 32 32.01h256c17.67 0 32 14.33 32 32s-14.33 32-32 32H64v128h160c17.67 0 32 14.32 32 31.99s-14.33 32.01-32 32.01H64v128h224C305.7 416 320 430.3 320 448z"], + "ear-deaf": [512, 512, ["deaf", "deafness", "hard-of-hearing"], "f2a4", "M192 319.1C185.8 313.7 177.6 310.6 169.4 310.6S153 313.7 146.8 319.1l-137.4 137.4C3.124 463.6 0 471.8 0 480c0 18.3 14.96 31.1 31.1 31.1c8.188 0 16.38-3.124 22.62-9.371l137.4-137.4c6.247-6.247 9.371-14.44 9.371-22.62S198.3 326.2 192 319.1zM200 240c0-22.06 17.94-40 40-40s40 17.94 40 40c0 13.25 10.75 24 24 24s24-10.75 24-24c0-48.53-39.47-88-88-88S152 191.5 152 240c0 13.25 10.75 24 24 24S200 253.3 200 240zM511.1 31.1c0-8.188-3.124-16.38-9.371-22.62s-14.44-9.372-22.63-9.372s-16.38 3.124-22.62 9.372L416 50.75c-6.248 6.248-9.372 14.44-9.372 22.63c0 8.188 3.123 16.38 9.37 22.62c6.247 6.248 14.44 9.372 22.63 9.372s16.38-3.124 22.63-9.372l41.38-41.38C508.9 48.37 511.1 40.18 511.1 31.1zM415.1 241.6c0-57.78-42.91-177.6-175.1-177.6c-153.6 0-175.2 150.8-175.2 160.4c0 17.32 14.99 31.58 32.75 31.58c16.61 0 29.25-13.07 31.24-29.55c6.711-55.39 54.02-98.45 111.2-98.45c80.45 0 111.2 75.56 111.2 119.6c0 57.94-38.22 98.14-46.37 106.3L288 370.7v13.25c0 31.4-22.71 57.58-52.58 62.98C220.4 449.7 208 463.3 208 478.6c0 17.95 14.72 32.09 32.03 32.09c4.805 0 100.5-14.34 111.2-112.7C412.6 335.8 415.1 263.4 415.1 241.6z"], + "ear-listen": [512, 512, ["assistive-listening-systems"], "f2a2", "M160.1 320c-17.64 0-32.02 14.37-32.02 31.1s14.38 31.1 32.02 31.1s32.02-14.37 32.02-31.1S177.8 320 160.1 320zM86.66 361.4c-12.51-12.49-32.77-12.49-45.27 0c-12.51 12.5-12.51 32.78 0 45.27l63.96 63.99c12.51 12.49 32.77 12.49 45.27 .002c12.51-12.5 12.51-32.78 0-45.27L86.66 361.4zM32.02 448C14.38 448 0 462.4 0 480S14.38 512 32.02 512c17.64 0 32.02-14.37 32.02-31.1S49.66 448 32.02 448zM287.7 70.31c-110.9-29.38-211.7 47.53-222.8 150.9C62.1 239.9 78.73 255.1 97.57 255.1c16.61 0 29.25-13.07 31.24-29.55c6.934-57.22 57.21-101.3 116.9-98.3c71.71 3.594 117.1 76.82 102.5 146.9c-6.551 29.65-21.4 56.87-43.38 78.87L288 370.7v13.25c0 31.4-22.71 57.58-52.58 62.98C220.4 449.7 208 463.3 208 478.6c0 19.78 17.88 34.94 37.38 31.64c55.92-9.443 99.63-55.28 105.9-112.2c40.11-40.68 62.89-93.95 64.65-150.9C418.4 166.4 365.8 91 287.7 70.31zM240 200c22.06 0 40 17.94 40 40c0 13.25 10.75 24 24 24s24-10.75 24-24c0-48.53-39.47-88-88-88S152 191.5 152 240c0 13.25 10.75 24 24 24S200 253.3 200 240C200 217.9 217.9 200 240 200zM397.8 3.125c-15.91-7.594-35.05-.8438-42.66 15.09c-7.594 15.97-.8281 35.06 15.12 42.66C417.5 83.41 448 134.9 448 192c0 17.69 14.33 32 32 32S512 209.7 512 192C512 110.3 467.2 36.19 397.8 3.125z"], + "earth-africa": [512, 512, [127757, "globe-africa"], "f57c", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM177.8 63.19L187.8 80.62C190.5 85.46 192 90.93 192 96.5V137.9C192 141.8 193.6 145.6 196.3 148.3C202.6 154.6 212.8 153.1 218.3 147.1L231.9 130.1C236.6 124.2 244.8 122.4 251.6 125.8L266.8 133.4C270.2 135.1 273.1 136 277.8 136C284.3 136 290.6 133.4 295.2 128.8L299.1 124.9C302 121.1 306.5 121.2 310.1 123.1L339.4 137.7C347.1 141.6 352 149.5 352 158.1C352 168.6 344.9 177.8 334.7 180.3L299.3 189.2C291.9 191 284.2 190.7 276.1 188.3L244.1 177.7C241.7 176.6 238.2 176 234.8 176C227.8 176 220.1 178.3 215.4 182.5L176 212C165.9 219.6 160 231.4 160 244V272C160 298.5 181.5 320 208 320H240C248.8 320 256 327.2 256 336V384C256 401.7 270.3 416 288 416C298.1 416 307.6 411.3 313.6 403.2L339.2 369.1C347.5 357.1 352 344.5 352 330.7V318.6C352 314.7 354.6 311.3 358.4 310.4L363.7 309.1C375.6 306.1 384 295.4 384 283.1C384 275.1 381.2 269.2 376.2 264.2L342.7 230.7C338.1 226.1 338.1 221 342.7 217.3C348.4 211.6 356.8 209.6 364.5 212.2L378.6 216.9C390.9 220.1 404.3 215.4 410.1 203.8C413.6 196.8 421.3 193.1 428.1 194.6L456.4 200.1C431.1 112.4 351.5 48 256 48C228.3 48 201.1 53.4 177.8 63.19L177.8 63.19z"], + "earth-americas": [512, 512, [127758, "earth", "earth-america", "globe-americas"], "f57d", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM57.71 192.1L67.07 209.4C75.36 223.9 88.99 234.6 105.1 239.2L162.1 255.7C180.2 260.6 192 276.3 192 294.2V334.1C192 345.1 198.2 355.1 208 359.1C217.8 364.9 224 374.9 224 385.9V424.9C224 440.5 238.9 451.7 253.9 447.4C270.1 442.8 282.5 429.1 286.6 413.7L289.4 402.5C293.6 385.6 304.6 371.1 319.7 362.4L327.8 357.8C342.8 349.3 352 333.4 352 316.1V307.9C352 295.1 346.9 282.9 337.9 273.9L334.1 270.1C325.1 261.1 312.8 255.1 300.1 255.1H256.1C245.9 255.1 234.9 253.1 225.2 247.6L190.7 227.8C186.4 225.4 183.1 221.4 181.6 216.7C178.4 207.1 182.7 196.7 191.7 192.1L197.7 189.2C204.3 185.9 211.9 185.3 218.1 187.7L242.2 195.4C250.3 198.1 259.3 195 264.1 187.9C268.8 180.8 268.3 171.5 262.9 165L249.3 148.8C239.3 136.8 239.4 119.3 249.6 107.5L265.3 89.12C274.1 78.85 275.5 64.16 268.8 52.42L266.4 48.26C262.1 48.09 259.5 48 256 48C163.1 48 84.4 108.9 57.71 192.1L57.71 192.1zM437.6 154.5L412 164.8C396.3 171.1 388.2 188.5 393.5 204.6L410.4 255.3C413.9 265.7 422.4 273.6 433 276.3L462.2 283.5C463.4 274.5 464 265.3 464 256C464 219.2 454.4 184.6 437.6 154.5H437.6z"], + "earth-asia": [512, 512, [127759, "globe-asia"], "f57e", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM51.68 295.1L83.41 301.5C91.27 303.1 99.41 300.6 105.1 294.9L120.5 279.5C132 267.1 151.6 271.1 158.9 285.8L168.2 304.3C172.1 313.9 182.8 319.1 193.5 319.1C208.7 319.1 219.6 305.4 215.2 290.8L209.3 270.9C204.6 255.5 216.2 240 232.3 240H234.6C247.1 240 260.5 233.3 267.9 222.2L278.6 206.1C284.2 197.7 283.9 186.6 277.8 178.4L261.7 156.9C251.4 143.2 258.4 123.4 275.1 119.2L292.1 114.1C299.6 113.1 305.7 107.8 308.6 100.6L324.9 59.69C303.4 52.12 280.2 48 255.1 48C141.1 48 47.1 141.1 47.1 256C47.1 269.4 49.26 282.5 51.68 295.1L51.68 295.1zM450.4 300.4L434.6 304.9C427.9 306.7 420.8 304 417.1 298.2L415.1 295.1C409.1 285.7 398.7 279.1 387.5 279.1C376.4 279.1 365.1 285.7 359.9 295.1L353.8 304.6C352.4 306.8 350.5 308.7 348.2 309.1L311.1 330.1C293.9 340.2 286.5 362.5 294.1 381.4L300.5 393.8C309.1 413 331.2 422.3 350.1 414.9L353.5 413.1C363.6 410.2 374.8 411.8 383.5 418.1L385 419.2C422.2 389.7 449.1 347.8 459.4 299.7C456.4 299.4 453.4 299.6 450.4 300.4H450.4zM156.1 367.5L188.1 375.5C196.7 377.7 205.4 372.5 207.5 363.9C209.7 355.3 204.5 346.6 195.9 344.5L163.9 336.5C155.3 334.3 146.6 339.5 144.5 348.1C142.3 356.7 147.5 365.4 156.1 367.5V367.5zM236.5 328.1C234.3 336.7 239.5 345.4 248.1 347.5C256.7 349.7 265.4 344.5 267.5 335.9L275.5 303.9C277.7 295.3 272.5 286.6 263.9 284.5C255.3 282.3 246.6 287.5 244.5 296.1L236.5 328.1zM321.7 120.8L305.7 152.8C301.7 160.7 304.9 170.4 312.8 174.3C320.7 178.3 330.4 175.1 334.3 167.2L350.3 135.2C354.3 127.3 351.1 117.6 343.2 113.7C335.3 109.7 325.6 112.9 321.7 120.8V120.8z"], + "earth-europe": [512, 512, ["globe-europe"], "f7a2", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM266.3 48.25L232.5 73.6C227.2 77.63 224 83.95 224 90.67V99.72C224 106.5 229.5 112 236.3 112C238.7 112 241.1 111.3 243.1 109.9L284.9 82.06C286.9 80.72 289.3 80 291.7 80H292.7C298.9 80 304 85.07 304 91.31C304 94.31 302.8 97.19 300.7 99.31L280.8 119.2C275 124.1 267.9 129.4 260.2 131.9L233.6 140.8C227.9 142.7 224 148.1 224 154.2C224 157.9 222.5 161.5 219.9 164.1L201.9 182.1C195.6 188.4 192 197.1 192 206.1V210.3C192 226.7 205.6 240 221.9 240C232.9 240 243.1 233.8 248 224L252 215.9C254.5 211.1 259.4 208 264.8 208C269.4 208 273.6 210.1 276.3 213.7L292.6 235.5C294.7 238.3 298.1 240 301.7 240C310.1 240 315.6 231.1 311.8 223.6L310.7 221.3C307.1 214.3 310.7 205.8 318.1 203.3L339.3 196.2C346.9 193.7 352 186.6 352 178.6C352 168.3 360.3 160 370.6 160H400C408.8 160 416 167.2 416 176C416 184.8 408.8 192 400 192H379.3C372.1 192 365.1 194.9 360 200L355.3 204.7C353.2 206.8 352 209.7 352 212.7C352 218.9 357.1 224 363.3 224H374.6C380.6 224 386.4 226.4 390.6 230.6L397.2 237.2C398.1 238.1 400 241.4 400 244C400 246.6 398.1 249 397.2 250.8L389.7 258.3C386 261.1 384 266.9 384 272C384 277.1 386 282 389.7 285.7L408 304C418.2 314.2 432.1 320 446.6 320H453.1C460.5 299.8 464 278.3 464 256C464 144.6 376.4 53.64 266.3 48.25V48.25zM438.4 356.1C434.7 353.5 430.2 352 425.4 352C419.4 352 413.6 349.6 409.4 345.4L395.1 331.1C388.3 324.3 377.9 320 367.1 320C357.4 320 347.9 316.5 340.5 310.2L313.1 287.4C302.4 277.5 287.6 271.1 272.3 271.1H251.4C238.7 271.1 226.4 275.7 215.9 282.7L188.5 301C170.7 312.9 160 332.9 160 354.3V357.5C160 374.5 166.7 390.7 178.7 402.7L194.7 418.7C203.2 427.2 214.7 432 226.7 432H248C261.3 432 272 442.7 272 456C272 458.5 272.4 461 273.1 463.3C344.5 457.5 405.6 415.7 438.4 356.1L438.4 356.1zM164.7 100.7L132.7 132.7C126.4 138.9 126.4 149.1 132.7 155.3C138.9 161.6 149.1 161.6 155.3 155.3L187.3 123.3C193.6 117.1 193.6 106.9 187.3 100.7C181.1 94.44 170.9 94.44 164.7 100.7V100.7z"], + "earth-oceania": [512, 512, ["globe-oceania"], "e47b", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM215.5 360.6L240.9 377C247.1 381.6 256.2 384 264.6 384C278 384 290.7 377.8 298.1 367.2L311 351.8C316.8 344.4 320 335.2 320 325.8C320 316.4 316.8 307.2 311 299.8L293.1 276.9C288.3 270.7 284.4 263.1 281.6 256.7L271.5 230.8C269.9 226.7 265.9 224 261.5 224C258 224 254.8 225.6 252.8 228.4L242.4 242.6C237.7 248.1 229.7 252.1 221.9 250.5C218.7 249.8 215.8 247.1 213.8 245.4L209.3 239.3C202.1 229.7 190.7 224 178.7 224C166.7 224 155.3 229.7 148.1 239.3L142.8 246.3C141.3 248.4 139.2 250 136.9 251.1L101.6 267.9C81.08 277.7 72.8 302.6 83.37 322.7L86.65 328.9C95.67 346.1 115.7 354.3 134.1 348.4L149.5 343.6C156 341.5 163.1 341.6 169.6 343.8L208.6 357.3C211 358.1 213.4 359.2 215.5 360.6H215.5zM273.8 142.5C264.3 132.1 250.8 128.9 237.6 131.5L199.1 139.2C183.8 142.3 181.5 163.2 195.7 169.5L238.5 188.6C243.7 190.8 249.2 192 254.8 192H284.7C298.9 192 306.1 174.8 296 164.7L273.8 142.5zM264 448H280C288.8 448 296 440.8 296 432C296 423.2 288.8 416 280 416H264C255.2 416 248 423.2 248 432C248 440.8 255.2 448 264 448zM431.2 298.9C428.4 290.6 419.3 286 410.9 288.8C402.6 291.6 398 300.7 400.8 309.1L408.8 333.1C411.6 341.4 420.7 345.1 429.1 343.2C437.4 340.4 441.1 331.3 439.2 322.9L431.2 298.9zM411.3 379.3C417.6 373.1 417.6 362.9 411.3 356.7C405.1 350.4 394.9 350.4 388.7 356.7L356.7 388.7C350.4 394.9 350.4 405.1 356.7 411.3C362.9 417.6 373.1 417.6 379.3 411.3L411.3 379.3z"], + "egg": [384, 512, [129370], "f7fb", "M192 16c-106 0-192 182-192 288c0 106 85.1 192 192 192c105.1 0 192-85.1 192-192C384 198 297.1 16 192 16zM160.1 138C128.6 177.1 96 249.8 96 304C96 312.8 88.84 320 80 320S64 312.8 64 304c0-63.56 36.7-143.3 71.22-186c5.562-6.906 15.64-7.969 22.5-2.406C164.6 121.1 165.7 131.2 160.1 138z"], + "eject": [448, 512, [9167], "f052", "M48.01 319.1h351.1c41.62 0 63.49-49.63 35.37-80.38l-175.1-192.1c-19-20.62-51.75-20.62-70.75 0L12.64 239.6C-15.48 270.2 6.393 319.1 48.01 319.1zM399.1 384H48.01c-26.39 0-47.99 21.59-47.99 47.98C.0117 458.4 21.61 480 48.01 480h351.1c26.39 0 47.99-21.6 47.99-47.99C447.1 405.6 426.4 384 399.1 384z"], + "elevator": [512, 512, [], "e16d", "M79 96h130c5.967 0 11.37-3.402 13.75-8.662c2.385-5.262 1.299-11.39-2.754-15.59l-65-67.34c-5.684-5.881-16.31-5.881-21.99 0l-65 67.34C63.95 75.95 62.87 82.08 65.25 87.34C67.63 92.6 73.03 96 79 96zM357 91.59c5.686 5.881 16.31 5.881 21.99 0l65-67.34c4.053-4.199 5.137-10.32 2.754-15.59C444.4 3.402 438.1 0 433 0h-130c-5.967 0-11.37 3.402-13.75 8.662c-2.385 5.262-1.301 11.39 2.752 15.59L357 91.59zM448 128H64c-35.35 0-64 28.65-64 63.1v255.1C0 483.3 28.65 512 64 512h384c35.35 0 64-28.65 64-63.1V192C512 156.7 483.3 128 448 128zM352 224C378.5 224.1 400 245.5 400 272c0 26.46-21.47 47.9-48 48C325.5 319.9 304 298.5 304 272C304 245.5 325.5 224.1 352 224zM160 224C186.5 224.1 208 245.5 208 272c0 26.46-21.47 47.9-48 48C133.5 319.9 112 298.5 112 272C112 245.5 133.5 224.1 160 224zM240 448h-160v-48C80 373.5 101.5 352 128 352h64c26.51 0 48 21.49 48 48V448zM432 448h-160v-48c0-26.51 21.49-48 48-48h64c26.51 0 48 21.49 48 48V448z"], + "ellipsis": [448, 512, ["ellipsis-h"], "f141", "M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"], + "ellipsis-vertical": [128, 512, ["ellipsis-v"], "f142", "M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"], + "envelope": [512, 512, [128386, 61443, 9993], "f0e0", "M464 64C490.5 64 512 85.49 512 112C512 127.1 504.9 141.3 492.8 150.4L275.2 313.6C263.8 322.1 248.2 322.1 236.8 313.6L19.2 150.4C7.113 141.3 0 127.1 0 112C0 85.49 21.49 64 48 64H464zM217.6 339.2C240.4 356.3 271.6 356.3 294.4 339.2L512 176V384C512 419.3 483.3 448 448 448H64C28.65 448 0 419.3 0 384V176L217.6 339.2z"], + "envelope-circle-check": [640, 512, [], "e4e8", "M464 64C490.5 64 512 85.49 512 112C512 127.1 504.9 141.3 492.8 150.4L478.9 160.8C412.3 167.2 356.5 210.8 332.6 270.6L275.2 313.6C263.8 322.1 248.2 322.1 236.8 313.6L19.2 150.4C7.113 141.3 0 127.1 0 112C0 85.49 21.49 64 48 64H464zM294.4 339.2L320.8 319.4C320.3 324.9 320 330.4 320 336C320 378.5 335.1 417.6 360.2 448H64C28.65 448 0 419.3 0 384V176L217.6 339.2C240.4 356.3 271.6 356.3 294.4 339.2zM640 336C640 415.5 575.5 480 496 480C416.5 480 352 415.5 352 336C352 256.5 416.5 192 496 192C575.5 192 640 256.5 640 336zM540.7 292.7L480 353.4L451.3 324.7C445.1 318.4 434.9 318.4 428.7 324.7C422.4 330.9 422.4 341.1 428.7 347.3L468.7 387.3C474.9 393.6 485.1 393.6 491.3 387.3L563.3 315.3C569.6 309.1 569.6 298.9 563.3 292.7C557.1 286.4 546.9 286.4 540.7 292.7H540.7z"], + "envelope-open": [512, 512, [62135], "f2b6", "M493.6 163c-24.88-19.62-45.5-35.37-164.3-121.6C312.7 29.21 279.7 0 256.4 0H255.6C232.3 0 199.3 29.21 182.6 41.38c-118.8 86.25-139.4 101.1-164.3 121.6C6.75 172 0 186 0 200.8v263.2C0 490.5 21.49 512 48 512h416c26.51 0 48-21.49 48-47.1V200.8C512 186 505.3 172 493.6 163zM303.2 367.5C289.1 378.5 272.5 384 256 384s-33.06-5.484-47.16-16.47L64 254.9V208.5c21.16-16.59 46.48-35.66 156.4-115.5c3.18-2.328 6.891-5.187 10.98-8.353C236.9 80.44 247.8 71.97 256 66.84c8.207 5.131 19.14 13.6 24.61 17.84c4.09 3.166 7.801 6.027 11.15 8.478C400.9 172.5 426.6 191.7 448 208.5v46.32L303.2 367.5z"], + "envelope-open-text": [512, 512, [], "f658", "M256 417.1c-16.38 0-32.88-4.1-46.88-15.12L0 250.9v213.1C0 490.5 21.5 512 48 512h416c26.5 0 48-21.5 48-47.1V250.9l-209.1 151.1C288.9 412 272.4 417.1 256 417.1zM493.6 163C484.8 156 476.4 149.5 464 140.1v-44.12c0-26.5-21.5-48-48-48l-77.5 .0016c-3.125-2.25-5.875-4.25-9.125-6.5C312.6 29.13 279.3-.3732 256 .0018C232.8-.3732 199.4 29.13 182.6 41.5c-3.25 2.25-6 4.25-9.125 6.5L96 48c-26.5 0-48 21.5-48 48v44.12C35.63 149.5 27.25 156 18.38 163C6.75 172 0 186 0 200.8v10.62l96 69.37V96h320v184.7l96-69.37V200.8C512 186 505.3 172 493.6 163zM176 255.1h160c8.836 0 16-7.164 16-15.1c0-8.838-7.164-16-16-16h-160c-8.836 0-16 7.162-16 16C160 248.8 167.2 255.1 176 255.1zM176 191.1h160c8.836 0 16-7.164 16-16c0-8.838-7.164-15.1-16-15.1h-160c-8.836 0-16 7.162-16 15.1C160 184.8 167.2 191.1 176 191.1z"], + "envelopes-bulk": [640, 512, ["mail-bulk"], "f674", "M191.9 448.6c-9.766 0-19.48-2.969-27.78-8.891L32 340.2V480c0 17.62 14.38 32 32 32h256c17.62 0 32-14.38 32-32v-139.8L220.2 439.5C211.7 445.6 201.8 448.6 191.9 448.6zM192 192c0-35.25 28.75-64 64-64h224V32c0-17.62-14.38-32-32-32H128C110.4 0 96 14.38 96 32v192h96V192zM320 256H64C46.38 256 32 270.4 32 288v12.18l151 113.8c5.25 3.719 12.7 3.734 18.27-.25L352 300.2V288C352 270.4 337.6 256 320 256zM576 160H256C238.4 160 224 174.4 224 192v32h96c33.25 0 60.63 25.38 63.75 57.88L384 416h192c17.62 0 32-14.38 32-32V192C608 174.4 593.6 160 576 160zM544 288h-64V224h64V288z"], + "equals": [448, 512, [62764], "3d", "M48 192h352c17.69 0 32-14.32 32-32s-14.31-31.1-32-31.1h-352c-17.69 0-32 14.31-32 31.1S30.31 192 48 192zM400 320h-352c-17.69 0-32 14.31-32 31.1s14.31 32 32 32h352c17.69 0 32-14.32 32-32S417.7 320 400 320z"], + "eraser": [512, 512, [], "f12d", "M480 416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H150.6C133.7 480 117.4 473.3 105.4 461.3L25.37 381.3C.3786 356.3 .3786 315.7 25.37 290.7L258.7 57.37C283.7 32.38 324.3 32.38 349.3 57.37L486.6 194.7C511.6 219.7 511.6 260.3 486.6 285.3L355.9 416H480zM265.4 416L332.7 348.7L195.3 211.3L70.63 336L150.6 416L265.4 416z"], + "ethernet": [512, 512, [], "f796", "M512 208v224c0 8.75-7.25 16-16 16H416v-128h-32v128h-64v-128h-32v128H224v-128H192v128H128v-128H96v128H16C7.25 448 0 440.8 0 432v-224C0 199.2 7.25 192 16 192H64V144C64 135.2 71.25 128 80 128H128V80C128 71.25 135.2 64 144 64h224C376.8 64 384 71.25 384 80V128h48C440.8 128 448 135.2 448 144V192h48C504.8 192 512 199.2 512 208z"], + "euro-sign": [384, 512, [8364, "eur", "euro"], "f153", "M64 240C46.33 240 32 225.7 32 208C32 190.3 46.33 176 64 176H92.29C121.9 92.11 201.1 32 296 32H320C337.7 32 352 46.33 352 64C352 81.67 337.7 96 320 96H296C238.1 96 187.8 128.4 162.1 176H288C305.7 176 320 190.3 320 208C320 225.7 305.7 240 288 240H144.2C144.1 242.6 144 245.3 144 248V264C144 266.7 144.1 269.4 144.2 272H288C305.7 272 320 286.3 320 304C320 321.7 305.7 336 288 336H162.1C187.8 383.6 238.1 416 296 416H320C337.7 416 352 430.3 352 448C352 465.7 337.7 480 320 480H296C201.1 480 121.9 419.9 92.29 336H64C46.33 336 32 321.7 32 304C32 286.3 46.33 272 64 272H80.15C80.05 269.3 80 266.7 80 264V248C80 245.3 80.05 242.7 80.15 240H64z"], + "exclamation": [128, 512, [10069, 10071, 61738], "21", "M64 352c17.69 0 32-14.32 32-31.1V64.01c0-17.67-14.31-32.01-32-32.01S32 46.34 32 64.01v255.1C32 337.7 46.31 352 64 352zM64 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S86.09 400 64 400z"], + "expand": [448, 512, [], "f065", "M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"], + "explosion": [576, 512, [], "e4e9", "M499.6 11.32C506.3 .5948 520.1-3.127 531.3 2.814C542.4 8.754 547.1 22.32 541.9 33.84L404.8 338.6C406.9 340.9 409 343.3 411.1 345.7L508.2 291.1C518.7 285.2 531.9 287.9 539.1 297.5C546.4 307 545.4 320.5 536.1 328.1L449.9 415.1H378.5C365.4 378.7 329.8 351.1 288 351.1C246.2 351.1 210.6 378.7 197.5 415.1H117.8L42.34 363.7C32.59 356.1 29.23 344.1 34.43 333.5C39.64 322.8 51.84 317.6 63.16 321.1L160.4 351.5C163.3 347.6 166.5 343.8 169.7 340.2L107.4 236.3C101.4 226.3 103.5 213.3 112.5 205.7C121.5 198.1 134.7 198.1 143.6 205.8L246 293.6C247.5 293.2 249 292.8 250.5 292.4L264.1 149.7C265.3 137.4 275.6 127.1 288 127.1C300.4 127.1 310.7 137.4 311.9 149.7L325.4 291.6L499.6 11.32zM544 447.1C561.7 447.1 576 462.3 576 479.1C576 497.7 561.7 511.1 544 511.1H32C14.33 511.1 0 497.7 0 479.1C0 462.3 14.33 447.1 32 447.1H544zM288-.0046C301.3-.0046 312 10.74 312 23.1V71.1C312 85.25 301.3 95.1 288 95.1C274.7 95.1 264 85.25 264 71.1V23.1C264 10.74 274.7-.0046 288-.0046V-.0046z"], + "eye": [576, 512, [128065], "f06e", "M279.6 160.4C282.4 160.1 285.2 160 288 160C341 160 384 202.1 384 256C384 309 341 352 288 352C234.1 352 192 309 192 256C192 253.2 192.1 250.4 192.4 247.6C201.7 252.1 212.5 256 224 256C259.3 256 288 227.3 288 192C288 180.5 284.1 169.7 279.6 160.4zM480.6 112.6C527.4 156 558.7 207.1 573.5 243.7C576.8 251.6 576.8 260.4 573.5 268.3C558.7 304 527.4 355.1 480.6 399.4C433.5 443.2 368.8 480 288 480C207.2 480 142.5 443.2 95.42 399.4C48.62 355.1 17.34 304 2.461 268.3C-.8205 260.4-.8205 251.6 2.461 243.7C17.34 207.1 48.62 156 95.42 112.6C142.5 68.84 207.2 32 288 32C368.8 32 433.5 68.84 480.6 112.6V112.6zM288 112C208.5 112 144 176.5 144 256C144 335.5 208.5 400 288 400C367.5 400 432 335.5 432 256C432 176.5 367.5 112 288 112z"], + "eye-dropper": [512, 512, ["eye-dropper-empty", "eyedropper"], "f1fb", "M482.8 29.23C521.7 68.21 521.7 131.4 482.8 170.4L381.2 271.9L390.6 281.4C403.1 293.9 403.1 314.1 390.6 326.6C378.1 339.1 357.9 339.1 345.4 326.6L185.4 166.6C172.9 154.1 172.9 133.9 185.4 121.4C197.9 108.9 218.1 108.9 230.6 121.4L240.1 130.8L341.6 29.23C380.6-9.744 443.8-9.744 482.8 29.23L482.8 29.23zM55.43 323.3L176.1 202.6L221.4 247.9L100.7 368.6C97.69 371.6 96 375.6 96 379.9V416H132.1C136.4 416 140.4 414.3 143.4 411.3L264.1 290.6L309.4 335.9L188.7 456.6C173.7 471.6 153.3 480 132.1 480H89.69L49.75 506.6C37.06 515.1 20.16 513.4 9.373 502.6C-1.413 491.8-3.086 474.9 5.375 462.2L32 422.3V379.9C32 358.7 40.43 338.3 55.43 323.3L55.43 323.3z"], + "eye-low-vision": [640, 512, ["low-vision"], "f2a8", "M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM223.1 149.5L313.4 220.3C317.6 211.8 320 202.2 320 191.1C320 180.5 316.1 169.7 311.6 160.4C314.4 160.1 317.2 159.1 320 159.1C373 159.1 416 202.1 416 255.1C416 269.7 413.1 282.7 407.1 294.5L446.6 324.7C457.7 304.3 464 280.9 464 255.1C464 176.5 399.5 111.1 320 111.1C282.7 111.1 248.6 126.2 223.1 149.5zM393.6 469.4L54.65 203.7C62.6 190.1 72.08 175.8 83.09 161.5L446.2 447.5C429.8 456.4 412.3 463.8 393.6 469.4V469.4zM34.46 268.3C31.74 261.8 31.27 254.5 33.08 247.8L329.2 479.8C326.1 479.9 323.1 480 320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3H34.46z"], + "eye-slash": [640, 512, [], "f070", "M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM223.1 149.5L313.4 220.3C317.6 211.8 320 202.2 320 191.1C320 180.5 316.1 169.7 311.6 160.4C314.4 160.1 317.2 159.1 320 159.1C373 159.1 416 202.1 416 255.1C416 269.7 413.1 282.7 407.1 294.5L446.6 324.7C457.7 304.3 464 280.9 464 255.1C464 176.5 399.5 111.1 320 111.1C282.7 111.1 248.6 126.2 223.1 149.5zM320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3C31.18 260.4 31.18 251.6 34.46 243.7C44 220.8 60.29 191.2 83.09 161.5L177.4 235.8C176.5 242.4 176 249.1 176 255.1C176 335.5 240.5 400 320 400C338.7 400 356.6 396.4 373 389.9L446.2 447.5C409.9 467.1 367.8 480 320 480H320z"], + "f": [320, 512, [102], "46", "M320 64.01c0 17.67-14.33 32-32 32H64v128h160c17.67 0 32 14.32 32 31.1s-14.33 32-32 32H64v160c0 17.67-14.33 32-32 32s-32-14.33-32-32v-384C0 46.34 14.33 32.01 32 32.01h256C305.7 32.01 320 46.34 320 64.01z"], + "face-angry": [512, 512, [128544, "angry"], "f556", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM339.9 373.3C323.8 355.4 295.7 336 256 336C216.3 336 188.2 355.4 172.1 373.3C166.2 379.9 166.7 389.1 173.3 395.9C179.9 401.8 189.1 401.3 195.9 394.7C207.6 381.7 227.5 368 255.1 368C284.5 368 304.4 381.7 316.1 394.7C322 401.3 332.1 401.8 338.7 395.9C345.3 389.1 345.8 379.9 339.9 373.3H339.9zM176.4 272C194 272 208.4 257.7 208.4 240C208.4 238.5 208.3 237 208.1 235.6L218.9 239.2C227.3 241.1 236.4 237.4 239.2 229.1C241.1 220.7 237.4 211.6 229.1 208.8L133.1 176.8C124.7 174 115.6 178.6 112.8 186.9C110 195.3 114.6 204.4 122.9 207.2L153.7 217.4C147.9 223.2 144.4 231.2 144.4 240C144.4 257.7 158.7 272 176.4 272zM358.9 217.2L389.1 207.2C397.4 204.4 401.1 195.3 399.2 186.9C396.4 178.6 387.3 174 378.9 176.8L282.9 208.8C274.6 211.6 270 220.7 272.8 229.1C275.6 237.4 284.7 241.1 293.1 239.2L304.7 235.3C304.5 236.8 304.4 238.4 304.4 240C304.4 257.7 318.7 272 336.4 272C354 272 368.4 257.7 368.4 240C368.4 231.1 364.7 223 358.9 217.2H358.9z"], + "face-dizzy": [512, 512, ["dizzy"], "f567", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 416C291.3 416 320 387.3 320 352C320 316.7 291.3 288 256 288C220.7 288 192 316.7 192 352C192 387.3 220.7 416 256 416zM100.7 155.3L137.4 192L100.7 228.7C94.44 234.9 94.44 245.1 100.7 251.3C106.9 257.6 117.1 257.6 123.3 251.3L160 214.6L196.7 251.3C202.9 257.6 213.1 257.6 219.3 251.3C225.6 245.1 225.6 234.9 219.3 228.7L182.6 192L219.3 155.3C225.6 149.1 225.6 138.9 219.3 132.7C213.1 126.4 202.9 126.4 196.7 132.7L160 169.4L123.3 132.7C117.1 126.4 106.9 126.4 100.7 132.7C94.44 138.9 94.44 149.1 100.7 155.3zM292.7 155.3L329.4 192L292.7 228.7C286.4 234.9 286.4 245.1 292.7 251.3C298.9 257.6 309.1 257.6 315.3 251.3L352 214.6L388.7 251.3C394.9 257.6 405.1 257.6 411.3 251.3C417.6 245.1 417.6 234.9 411.3 228.7L374.6 192L411.3 155.3C417.6 149.1 417.6 138.9 411.3 132.7C405.1 126.4 394.9 126.4 388.7 132.7L352 169.4L315.3 132.7C309.1 126.4 298.9 126.4 292.7 132.7C286.4 138.9 286.4 149.1 292.7 155.3z"], + "face-flushed": [512, 512, [128563, "flushed"], "f579", "M184 224C184 237.3 173.3 248 160 248C146.7 248 136 237.3 136 224C136 210.7 146.7 200 160 200C173.3 200 184 210.7 184 224zM376 224C376 237.3 365.3 248 352 248C338.7 248 328 237.3 328 224C328 210.7 338.7 200 352 200C365.3 200 376 210.7 376 224zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM192 400H320C328.8 400 336 392.8 336 384C336 375.2 328.8 368 320 368H192C183.2 368 176 375.2 176 384C176 392.8 183.2 400 192 400zM160 296C199.8 296 232 263.8 232 224C232 184.2 199.8 152 160 152C120.2 152 88 184.2 88 224C88 263.8 120.2 296 160 296zM352 152C312.2 152 280 184.2 280 224C280 263.8 312.2 296 352 296C391.8 296 424 263.8 424 224C424 184.2 391.8 152 352 152z"], + "face-frown": [512, 512, [9785, "frown"], "f119", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM159.3 388.7C171.5 349.4 209.9 320 256 320C302.1 320 340.5 349.4 352.7 388.7C355.3 397.2 364.3 401.9 372.7 399.3C381.2 396.7 385.9 387.7 383.3 379.3C366.8 326.1 315.8 287.1 256 287.1C196.3 287.1 145.2 326.1 128.7 379.3C126.1 387.7 130.8 396.7 139.3 399.3C147.7 401.9 156.7 397.2 159.3 388.7H159.3zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-frown-open": [512, 512, [128550, "frown-open"], "f57a", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176zM259.9 369.4C288.8 369.4 316.2 375.2 340.6 385.5C352.9 390.7 366.7 381.3 361.4 369.1C344.8 330.9 305.6 303.1 259.9 303.1C214.3 303.1 175.1 330.8 158.4 369.1C153.1 381.3 166.1 390.6 179.3 385.4C203.7 375.1 231 369.4 259.9 369.4L259.9 369.4z"], + "face-grimace": [512, 512, [128556, "grimace"], "f57f", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM399.3 360H344V400H352C375.8 400 395.5 382.7 399.3 360zM352 304H344V344H399.3C395.5 321.3 375.8 304 352 304zM328 344V304H264V344H328zM328 400V360H264V400H328zM184 304V344H248V304H184zM184 360V400H248V360H184zM168 344V304H160C136.2 304 116.5 321.3 112.7 344H168zM168 400V360H112.7C116.5 382.7 136.2 400 160 400H168zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-grin": [512, 512, [128512, "grin"], "f580", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-grin-beam": [512, 512, [128516, "grin-beam"], "f582", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM226.5 231.6C229.8 230.5 232 227.4 232 224C232 206.1 225.3 188.4 215.4 175.2C205.6 162.2 191.5 152 176 152C160.5 152 146.4 162.2 136.6 175.2C126.7 188.4 120 206.1 120 224C120 227.4 122.2 230.5 125.5 231.6C128.7 232.7 132.3 231.6 134.4 228.8L134.4 228.8L134.6 228.5C134.8 228.3 134.1 228 135.3 227.6C135.1 226.8 136.9 225.7 138.1 224.3C140.6 221.4 144.1 217.7 148.3 213.1C157.1 206.2 167.2 200 176 200C184.8 200 194.9 206.2 203.7 213.1C207.9 217.7 211.4 221.4 213.9 224.3C215.1 225.7 216 226.8 216.7 227.6C217 228 217.2 228.3 217.4 228.5L217.6 228.8L217.6 228.8C219.7 231.6 223.3 232.7 226.5 231.6V231.6zM377.6 228.8C379.7 231.6 383.3 232.7 386.5 231.6C389.8 230.5 392 227.4 392 224C392 206.1 385.3 188.4 375.4 175.2C365.6 162.2 351.5 152 336 152C320.5 152 306.4 162.2 296.6 175.2C286.7 188.4 280 206.1 280 224C280 227.4 282.2 230.5 285.5 231.6C288.7 232.7 292.3 231.6 294.4 228.8L294.4 228.8L294.6 228.5C294.8 228.3 294.1 228 295.3 227.6C295.1 226.8 296.9 225.7 298.1 224.3C300.6 221.4 304.1 217.7 308.3 213.1C317.1 206.2 327.2 200 336 200C344.8 200 354.9 206.2 363.7 213.1C367.9 217.7 371.4 221.4 373.9 224.3C375.1 225.7 376 226.8 376.7 227.6C377 228 377.2 228.3 377.4 228.5L377.6 228.8L377.6 228.8z"], + "face-grin-beam-sweat": [512, 512, [128517, "grin-beam-sweat"], "f583", "M464 128C437.5 128 416 107 416 81.01C416 76.01 417.8 69.74 420.6 62.87C420.9 62.17 421.2 61.46 421.6 60.74C430.5 40.51 448.1 15.86 457.6 3.282C460.8-1.093 467.2-1.094 470.4 3.281C483.4 20.65 512 61.02 512 81.01C512 102.7 497.1 120.8 476.8 126.3C472.7 127.4 468.4 128 464 128L464 128zM256 .0003C307.4 .0003 355.3 15.15 395.4 41.23C393.9 44.32 392.4 47.43 391.1 50.53C387.8 58.57 384 69.57 384 81.01C384 125.4 420.6 160 464 160C473.6 160 482.8 158.3 491.4 155.2C504.7 186.1 512 220.2 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0V.0003zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM226.5 231.6C229.8 230.5 232 227.4 232 224C232 206.1 225.3 188.4 215.4 175.2C205.6 162.2 191.5 152 176 152C160.5 152 146.4 162.2 136.6 175.2C126.7 188.4 120 206.1 120 224C120 227.4 122.2 230.5 125.5 231.6C128.7 232.7 132.3 231.6 134.4 228.8L134.4 228.8L134.6 228.5C134.8 228.3 134.1 228 135.3 227.6C135.1 226.8 136.9 225.7 138.1 224.3C140.6 221.4 144.1 217.7 148.3 213.1C157.1 206.2 167.2 200 176 200C184.8 200 194.9 206.2 203.7 213.1C207.9 217.7 211.4 221.4 213.9 224.3C215.1 225.7 216 226.8 216.7 227.6C217 228 217.2 228.3 217.4 228.5L217.6 228.8L217.6 228.8C219.7 231.6 223.3 232.7 226.5 231.6V231.6zM377.6 228.8C379.7 231.6 383.3 232.7 386.5 231.6C389.8 230.5 392 227.4 392 224C392 206.1 385.3 188.4 375.4 175.2C365.6 162.2 351.5 152 336 152C320.5 152 306.4 162.2 296.6 175.2C286.7 188.4 280 206.1 280 224C280 227.4 282.2 230.5 285.5 231.6C288.7 232.7 292.3 231.6 294.4 228.8L294.4 228.8L294.6 228.5C294.8 228.3 294.1 228 295.3 227.6C295.1 226.8 296.9 225.7 298.1 224.3C300.6 221.4 304.1 217.7 308.3 213.1C317.1 206.2 327.2 200 336 200C344.8 200 354.9 206.2 363.7 213.1C367.9 217.7 371.4 221.4 373.9 224.3C375.1 225.7 376 226.8 376.7 227.6C377 228 377.2 228.3 377.4 228.5L377.6 228.8L377.6 228.8z"], + "face-grin-hearts": [512, 512, [128525, "grin-hearts"], "f584", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM199.3 129.1C181.5 124.4 163.2 134.9 158.4 152.7L154.1 168.8L137.1 164.5C120.2 159.7 101.9 170.3 97.14 188.1C92.38 205.8 102.9 224.1 120.7 228.9L185.8 246.3C194.4 248.6 203.1 243.6 205.4 235L222.9 169.1C227.6 152.2 217.1 133.9 199.3 129.1H199.3zM353.6 152.7C348.8 134.9 330.5 124.4 312.7 129.1C294.9 133.9 284.4 152.2 289.1 169.1L306.6 235C308.9 243.6 317.6 248.6 326.2 246.3L391.3 228.9C409.1 224.1 419.6 205.8 414.9 188.1C410.1 170.3 391.8 159.7 374 164.5L357.9 168.8L353.6 152.7z"], + "face-grin-squint": [512, 512, [128518, "grin-squint"], "f585", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM133.5 146.7C125.6 142.4 116 148.2 116 157.1C116 159.9 116.1 162.6 118.8 164.8L154.8 208L118.8 251.2C116.1 253.4 116 256.1 116 258.9C116 267.8 125.6 273.6 133.5 269.3L223.4 221.4C234.1 215.7 234.1 200.3 223.4 194.6L133.5 146.7zM396 157.1C396 148.2 386.4 142.4 378.5 146.7L288.6 194.6C277.9 200.3 277.9 215.7 288.6 221.4L378.5 269.3C386.4 273.6 396 267.8 396 258.9C396 256.1 395 253.4 393.2 251.2L357.2 208L393.2 164.8C395 162.6 396 159.9 396 157.1V157.1z"], + "face-grin-squint-tears": [512, 512, [129315, "grin-squint-tears"], "f586", "M426.8 14.18C446-5.046 477.5-4.645 497.1 14.92C516.6 34.49 517 65.95 497.8 85.18C490.1 92.02 476.4 97.59 460.5 101.9C444.1 106.3 426.4 109.4 414.1 111.2C412.5 111.5 410.1 111.7 409.6 111.9C403.1 112.8 399.2 108 400.1 102.4C401.7 91.19 404.7 72.82 409.1 55.42C409.4 54.12 409.8 52.84 410.1 51.56C414.4 35.62 419.1 21.02 426.8 14.18L426.8 14.18zM382.2 33.17C380.6 37.96 379.3 42.81 378.1 47.52C373.3 66.46 370.1 86.05 368.4 97.79C364.5 124.6 387.4 147.5 414.1 143.6C426 141.9 445.6 138.8 464.5 133.9C469.2 132.7 474.1 131.4 478.8 129.9C534.2 227.5 520.2 353.8 437 437C353.8 520.3 227.5 534.2 129.8 478.8C131.3 474 132.7 469.2 133.9 464.5C138.7 445.5 141.9 425.1 143.6 414.2C147.5 387.4 124.6 364.5 97.89 368.4C85.97 370.1 66.39 373.2 47.46 378.1C42.76 379.3 37.93 380.6 33.15 382.1C-22.19 284.5-8.245 158.2 74.98 74.98C158.2-8.253 284.5-22.19 382.2 33.17V33.17zM416.4 202.3C411.6 190.4 395.6 191.4 389.6 202.7C370.1 239.4 343.3 275.9 309.8 309.4C276.3 342.9 239.8 369.7 203.1 389.2C191.8 395.2 190.8 411.2 202.7 416C262.1 440.2 332.6 428.3 380.7 380.3C428.7 332.2 440.6 261.7 416.4 202.3H416.4zM94.43 288.5L150.5 293.6L155.6 349.7C155.8 352.5 157.1 355 159 357C165.4 363.4 176.2 360.7 178.8 352.1L208.5 254.6C211.1 242.1 201.1 232.1 189.5 235.7L92.05 265.3C83.46 267.9 80.76 278.7 87.1 285.1C89.07 287.1 91.66 288.3 94.43 288.5V288.5zM235.7 189.5C232.1 201.1 242.1 211.1 254.6 208.5L352.1 178.8C360.7 176.2 363.4 165.4 357 159C355 157.1 352.5 155.8 349.7 155.6L293.6 150.5L288.5 94.43C288.3 91.66 287.1 89.07 285.1 87.1C278.7 80.76 267.9 83.46 265.3 92.05L235.7 189.5zM51.53 410.1C70.01 405.1 90.3 401.8 102.4 400.1C108 399.2 112.8 403.1 111.9 409.6C110.2 421.7 106.9 441.9 101.9 460.4C97.57 476.4 92.02 490.1 85.18 497.8C65.95 517 34.49 516.6 14.92 497.1C-4.645 477.5-5.046 446 14.18 426.8C21.02 419.1 35.6 414.4 51.53 410.1V410.1z"], + "face-grin-stars": [512, 512, [129321, "grin-stars"], "f587", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5H407.4zM152.8 124.6L136.2 159.3L98.09 164.3C95.03 164.7 92.48 166.8 91.52 169.8C90.57 172.7 91.39 175.9 93.62 178L121.5 204.5L114.5 242.3C113.1 245.4 115.2 248.4 117.7 250.2C120.2 252.1 123.5 252.3 126.2 250.8L159.1 232.5L193.8 250.8C196.5 252.3 199.8 252.1 202.3 250.2C204.8 248.4 206 245.4 205.5 242.3L198.5 204.5L226.4 178C228.6 175.9 229.4 172.7 228.5 169.8C227.5 166.8 224.1 164.7 221.9 164.3L183.8 159.3L167.2 124.6C165.9 121.8 163.1 120 159.1 120C156.9 120 154.1 121.8 152.8 124.6V124.6zM344.8 124.6L328.2 159.3L290.1 164.3C287 164.7 284.5 166.8 283.5 169.8C282.6 172.7 283.4 175.9 285.6 178L313.5 204.5L306.5 242.3C305.1 245.4 307.2 248.4 309.7 250.2C312.2 252.1 315.5 252.3 318.2 250.8L352 232.5L385.8 250.8C388.5 252.3 391.8 252.1 394.3 250.2C396.8 248.4 398 245.4 397.5 242.3L390.5 204.5L418.4 178C420.6 175.9 421.4 172.7 420.5 169.8C419.5 166.8 416.1 164.7 413.9 164.3L375.8 159.3L359.2 124.6C357.9 121.8 355.1 120 352 120C348.9 120 346.1 121.8 344.8 124.6H344.8z"], + "face-grin-tears": [640, 512, [128514, "grin-tears"], "f588", "M548.6 371.4C506.4 454.8 419.9 512 319.1 512C220.1 512 133.6 454.8 91.4 371.4C95.87 368.4 100.1 365 104.1 361.1C112.2 352.1 117.3 342.5 120.6 334.4C124.2 325.7 127.1 316 129.4 306.9C134 288.7 137 269.1 138.6 258.7C142.6 232.2 119.9 209.5 93.4 213.3C86.59 214.3 77.18 215.7 66.84 217.7C85.31 94.5 191.6 0 319.1 0C448.4 0 554.7 94.5 573.2 217.7C562.8 215.7 553.4 214.3 546.6 213.3C520.1 209.5 497.4 232.2 501.4 258.7C502.1 269.1 505.1 288.7 510.6 306.9C512.9 316 515.8 325.7 519.4 334.4C522.7 342.5 527.8 352.1 535.9 361.1C539.9 365 544.1 368.4 548.6 371.4V371.4zM471.4 331.5C476.4 319.7 464.4 309 452.1 312.8C412.4 324.9 367.7 331.8 320.3 331.8C272.9 331.8 228.1 324.9 188.5 312.8C176.2 309 164.2 319.7 169.2 331.5C194.1 390.6 252.4 432 320.3 432C388.2 432 446.4 390.6 471.4 331.5H471.4zM281.6 228.8C283.7 231.6 287.3 232.7 290.5 231.6C293.8 230.5 295.1 227.4 295.1 224C295.1 206.1 289.3 188.4 279.4 175.2C269.6 162.2 255.5 152 239.1 152C224.5 152 210.4 162.2 200.6 175.2C190.7 188.4 183.1 206.1 183.1 224C183.1 227.4 186.2 230.5 189.5 231.6C192.7 232.7 196.3 231.6 198.4 228.8L198.4 228.8L198.6 228.5C198.8 228.3 198.1 228 199.3 227.6C199.1 226.8 200.9 225.7 202.1 224.3C204.6 221.4 208.1 217.7 212.3 213.1C221.1 206.2 231.2 200 239.1 200C248.8 200 258.9 206.2 267.7 213.1C271.9 217.7 275.4 221.4 277.9 224.3C279.1 225.7 280 226.8 280.7 227.6C281 228 281.2 228.3 281.4 228.5L281.6 228.8L281.6 228.8zM450.5 231.6C453.8 230.5 456 227.4 456 224C456 206.1 449.3 188.4 439.4 175.2C429.6 162.2 415.5 152 400 152C384.5 152 370.4 162.2 360.6 175.2C350.7 188.4 344 206.1 344 224C344 227.4 346.2 230.5 349.5 231.6C352.7 232.7 356.3 231.6 358.4 228.8L358.4 228.8L358.6 228.5C358.8 228.3 358.1 228 359.3 227.6C359.1 226.8 360.9 225.7 362.1 224.3C364.6 221.4 368.1 217.7 372.3 213.1C381.1 206.2 391.2 200 400 200C408.8 200 418.9 206.2 427.7 213.1C431.9 217.7 435.4 221.4 437.9 224.3C439.1 225.7 440 226.8 440.7 227.6C441 228 441.2 228.3 441.4 228.5L441.6 228.8L441.6 228.8C443.7 231.6 447.3 232.7 450.5 231.6V231.6zM106.1 254.1C103.9 275.6 95.58 324.3 81.43 338.4C80.49 339.4 79.51 340.3 78.5 341.1C59.98 356.7 32.01 355.5 14.27 337.7C-4.442 319-4.825 288.9 13.55 270.6C22.19 261.9 43.69 255.4 64.05 250.1C77.02 248.2 89.53 246.2 97.94 245C103.3 244.2 107.8 248.7 106.1 254.1V254.1zM561.5 341.1C560.7 340.5 559.1 339.8 559.2 339.1C559 338.9 558.8 338.7 558.6 338.4C544.4 324.3 536.1 275.6 533 254.1C532.2 248.7 536.7 244.2 542.1 245C543.1 245.2 544.2 245.3 545.4 245.5C553.6 246.7 564.6 248.5 575.1 250.1C596.3 255.4 617.8 261.9 626.4 270.6C644.8 288.9 644.4 319 625.7 337.7C607.1 355.5 580 356.7 561.5 341.1L561.5 341.1z"], + "face-grin-tongue": [512, 512, [128539, "grin-tongue"], "f589", "M256 0C397.4 0 512 114.6 512 256C512 368.9 438.9 464.7 337.5 498.8C346.7 484 352 466.6 352 448V401.1C376.3 383.5 395.6 359.5 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C116.9 359.3 135.1 383.1 160 400.7V448C160 466.6 165.3 484 174.5 498.8C73.07 464.7 0 368.9 0 256C0 114.6 114.6 .0003 256 .0003L256 0zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176zM256 512C220.7 512 192 483.3 192 448V402.6C192 387.9 203.9 376 218.6 376H220.6C231.9 376 241.7 383.9 244.2 394.9C247 407.5 264.1 407.5 267.8 394.9C270.3 383.9 280.1 376 291.4 376H293.4C308.1 376 320 387.9 320 402.6V448C320 483.3 291.3 512 256 512V512z"], + "face-grin-tongue-squint": [512, 512, [128541, "grin-tongue-squint"], "f58a", "M256 0C397.4 0 512 114.6 512 256C512 368.9 438.9 464.7 337.5 498.8C346.7 484 352 466.6 352 448V401.1C376.3 383.5 395.6 359.5 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C116.9 359.3 135.1 383.1 160 400.7V448C160 466.6 165.3 484 174.5 498.8C73.07 464.7 0 368.9 0 256C0 114.6 114.6 .0003 256 .0003L256 0zM118.8 148.8L154.8 192L118.8 235.2C116.1 237.4 116 240.1 116 242.9C116 251.8 125.6 257.6 133.5 253.3L223.4 205.4C234.1 199.7 234.1 184.3 223.4 178.6L133.5 130.7C125.6 126.4 116 132.2 116 141.1C116 143.9 116.1 146.6 118.8 148.8V148.8zM288.6 178.6C277.9 184.3 277.9 199.7 288.6 205.4L378.5 253.3C386.4 257.6 396 251.8 396 242.9C396 240.1 395 237.4 393.2 235.2L357.2 192L393.2 148.8C395 146.6 396 143.9 396 141.1C396 132.2 386.4 126.4 378.5 130.7L288.6 178.6zM256 512C220.7 512 192 483.3 192 448V402.6C192 387.9 203.9 376 218.6 376H220.6C231.9 376 241.7 383.9 244.2 394.9C247 407.5 264.1 407.5 267.8 394.9C270.3 383.9 280.1 376 291.4 376H293.4C308.1 376 320 387.9 320 402.6V448C320 483.3 291.3 512 256 512V512z"], + "face-grin-tongue-wink": [512, 512, [128540, "grin-tongue-wink"], "f58b", "M312 208C312 194.7 322.7 184 336 184C349.3 184 360 194.7 360 208C360 221.3 349.3 232 336 232C322.7 232 312 221.3 312 208zM174.5 498.8C73.07 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 368.9 438.9 464.7 337.5 498.8C346.7 484 352 466.6 352 448V401.1C376.3 383.5 395.6 359.5 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C116.9 359.3 135.1 383.1 159.1 400.7V448C159.1 466.6 165.3 484 174.5 498.8L174.5 498.8zM217.6 236.8C224.7 231.5 226.1 221.5 220.8 214.4C190.4 173.9 129.6 173.9 99.2 214.4C93.9 221.5 95.33 231.5 102.4 236.8C109.5 242.1 119.5 240.7 124.8 233.6C142.4 210.1 177.6 210.1 195.2 233.6C200.5 240.7 210.5 242.1 217.6 236.8zM336 272C371.3 272 400 243.3 400 208C400 172.7 371.3 144 336 144C300.7 144 272 172.7 272 208C272 243.3 300.7 272 336 272zM320 402.6V448C320 483.3 291.3 512 256 512C220.7 512 192 483.3 192 448V402.6C192 387.9 203.9 376 218.6 376H220.6C231.9 376 241.7 383.9 244.2 394.9C247 407.5 264.1 407.5 267.8 394.9C270.3 383.9 280.1 376 291.4 376H293.4C308.1 376 320 387.9 320 402.6V402.6z"], + "face-grin-wide": [512, 512, [128515, "grin-alt"], "f581", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM176 128C158.3 128 144 156.7 144 192C144 227.3 158.3 256 176 256C193.7 256 208 227.3 208 192C208 156.7 193.7 128 176 128zM336 256C353.7 256 368 227.3 368 192C368 156.7 353.7 128 336 128C318.3 128 304 156.7 304 192C304 227.3 318.3 256 336 256z"], + "face-grin-wink": [512, 512, ["grin-wink"], "f58c", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256.3 331.8C208.9 331.8 164.1 324.9 124.5 312.8C112.2 309 100.2 319.7 105.2 331.5C130.1 390.6 188.4 432 256.3 432C324.2 432 382.4 390.6 407.4 331.5C412.4 319.7 400.4 309 388.1 312.8C348.4 324.9 303.7 331.8 256.3 331.8H256.3zM393.6 236.8C400.7 231.5 402.1 221.5 396.8 214.4C366.4 173.9 305.6 173.9 275.2 214.4C269.9 221.5 271.3 231.5 278.4 236.8C285.5 242.1 295.5 240.7 300.8 233.6C318.4 210.1 353.6 210.1 371.2 233.6C376.5 240.7 386.5 242.1 393.6 236.8zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240z"], + "face-kiss": [512, 512, [128535, "kiss"], "f596", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM287.9 300.3C274.7 292.9 257.4 288 240 288C236.4 288 233.2 290.5 232.3 293.1C231.3 297.5 232.9 301.2 236.1 302.1L236.1 302.1L236.3 303.1L236.8 303.4L237.2 303.7C238 304.1 239.2 304.9 240.6 305.8C243.4 307.6 247.2 310.3 250.8 313.4C254.6 316.5 258 319.1 260.5 323.4C262.1 326.1 264 329.8 264 332C264 334.2 262.1 337 260.5 340.6C258 344 254.6 347.5 250.8 350.6C247.2 353.7 243.4 356.4 240.6 358.2C239.2 359.1 238 359.9 237.2 360.3L236.6 360.7L236.3 360.9L236.1 361L236.1 361C233.6 362.4 232 365.1 232 368C232 370.9 233.6 373.6 236.1 374.1L236.1 374.1L236.3 375.1C236.5 375.2 236.8 375.4 237.2 375.7C238 376.1 239.2 376.9 240.6 377.8C243.4 379.6 247.2 382.3 250.8 385.4C254.6 388.5 258 391.9 260.5 395.4C262.1 398.1 264 401.8 264 403.1C264 406.2 262.1 409 260.5 412.6C258 416 254.6 419.5 250.8 422.6C247.2 425.7 243.4 428.4 240.6 430.2C239.2 431.1 238 431.9 237.2 432.3C236.8 432.6 236.5 432.8 236.3 432.9L236.1 432.1L236.1 433C232.9 434.8 231.3 438.5 232.3 442C233.2 445.5 236.4 447.1 240 447.1C257.4 447.1 274.7 443.1 287.9 435.7C294.5 432 300.4 427.5 304.7 422.3C308.9 417.2 312 410.9 312 403.1C312 397.1 308.9 390.8 304.7 385.7C300.4 380.5 294.5 375.1 287.9 372.3C285.2 370.7 282.3 369.3 279.2 367.1C282.3 366.7 285.2 365.3 287.9 363.7C294.5 360 300.4 355.5 304.7 350.3C308.9 345.2 312 338.9 312 331.1C312 325.1 308.9 318.8 304.7 313.7C300.4 308.5 294.5 303.1 287.9 300.3L287.9 300.3zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-kiss-beam": [512, 512, [128537, "kiss-beam"], "f597", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM287.9 300.3C274.7 292.9 257.4 288 240 288C236.4 288 233.2 290.5 232.3 293.1C231.3 297.5 232.9 301.2 236.1 302.1L236.1 302.1L236.3 303.1L236.8 303.4L237.2 303.7C238 304.1 239.2 304.9 240.6 305.8C243.4 307.6 247.2 310.3 250.8 313.4C254.6 316.5 258 319.1 260.5 323.4C262.1 326.1 264 329.8 264 332C264 334.2 262.1 337 260.5 340.6C258 344 254.6 347.5 250.8 350.6C247.2 353.7 243.4 356.4 240.6 358.2C239.2 359.1 238 359.9 237.2 360.3L236.6 360.7L236.3 360.9L236.1 361L236.1 361C233.6 362.4 232 365.1 232 368C232 370.9 233.6 373.6 236.1 374.1L236.1 374.1L236.3 375.1C236.5 375.2 236.8 375.4 237.2 375.7C238 376.1 239.2 376.9 240.6 377.8C243.4 379.6 247.2 382.3 250.8 385.4C254.6 388.5 258 391.9 260.5 395.4C262.1 398.1 264 401.8 264 403.1C264 406.2 262.1 409 260.5 412.6C258 416 254.6 419.5 250.8 422.6C247.2 425.7 243.4 428.4 240.6 430.2C239.2 431.1 238 431.9 237.2 432.3C236.8 432.6 236.5 432.8 236.3 432.9L236.1 432.1L236.1 433C232.9 434.8 231.3 438.5 232.3 442C233.2 445.5 236.4 447.1 240 447.1C257.4 447.1 274.7 443.1 287.9 435.7C294.5 432 300.4 427.5 304.7 422.3C308.9 417.2 312 410.9 312 403.1C312 397.1 308.9 390.8 304.7 385.7C300.4 380.5 294.5 375.1 287.9 372.3C285.2 370.7 282.3 369.3 279.2 367.1C282.3 366.7 285.2 365.3 287.9 363.7C294.5 360 300.4 355.5 304.7 350.3C308.9 345.2 312 338.9 312 331.1C312 325.1 308.9 318.8 304.7 313.7C300.4 308.5 294.5 303.1 287.9 300.3L287.9 300.3zM226.5 231.6C229.8 230.5 232 227.4 232 224C232 206.1 225.3 188.4 215.4 175.2C205.6 162.2 191.5 152 176 152C160.5 152 146.4 162.2 136.6 175.2C126.7 188.4 120 206.1 120 224C120 227.4 122.2 230.5 125.5 231.6C128.7 232.7 132.3 231.6 134.4 228.8L134.4 228.8L134.6 228.5C134.8 228.3 134.1 228 135.3 227.6C135.1 226.8 136.9 225.7 138.1 224.3C140.6 221.4 144.1 217.7 148.3 213.1C157.1 206.2 167.2 200 176 200C184.8 200 194.9 206.2 203.7 213.1C207.9 217.7 211.4 221.4 213.9 224.3C215.1 225.7 216 226.8 216.7 227.6C217 228 217.2 228.3 217.4 228.5L217.6 228.8L217.6 228.8C219.7 231.6 223.3 232.7 226.5 231.6V231.6zM377.6 228.8C379.7 231.6 383.3 232.7 386.5 231.6C389.8 230.5 392 227.4 392 224C392 206.1 385.3 188.4 375.4 175.2C365.6 162.2 351.5 152 336 152C320.5 152 306.4 162.2 296.6 175.2C286.7 188.4 280 206.1 280 224C280 227.4 282.2 230.5 285.5 231.6C288.7 232.7 292.3 231.6 294.4 228.8L294.4 228.8L294.6 228.5C294.8 228.3 294.1 228 295.3 227.6C295.1 226.8 296.9 225.7 298.1 224.3C300.6 221.4 304.1 217.7 308.3 213.1C317.1 206.2 327.2 200 336 200C344.8 200 354.9 206.2 363.7 213.1C367.9 217.7 371.4 221.4 373.9 224.3C375.1 225.7 376 226.8 376.7 227.6C377 228 377.2 228.3 377.4 228.5L377.6 228.8L377.6 228.8z"], + "face-kiss-wink-heart": [512, 512, [128536, "kiss-wink-heart"], "f598", "M461.8 334.6C448.1 300.8 411.5 280.3 374.3 290.7C334.2 301.9 312.4 343.8 322.4 382.8L345.3 472.1C347.3 479.7 350.9 486.4 355.7 491.8C325.1 504.8 291.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 285.3 507.1 313.4 498 339.7C486.9 334.1 474.5 333.1 461.8 334.6L461.8 334.6zM296 332C296 325.1 292.9 318.8 288.7 313.7C284.4 308.5 278.5 303.1 271.9 300.3C258.7 292.9 241.4 288 224 288C220.4 288 217.2 290.5 216.3 293.1C215.3 297.5 216.9 301.2 220.1 302.1L220.1 302.1L220.3 303.1C220.5 303.2 220.8 303.4 221.2 303.7C222 304.1 223.2 304.9 224.6 305.8C227.4 307.6 231.2 310.3 234.8 313.4C238.6 316.5 242 319.1 244.5 323.4C246.1 326.1 248 329.8 248 332C248 334.2 246.1 337 244.5 340.6C242 344 238.6 347.5 234.8 350.6C231.2 353.7 227.4 356.4 224.6 358.2C223.2 359.1 222 359.9 221.2 360.3C220.8 360.6 220.5 360.8 220.3 360.9L220.1 361L220.1 361C217.6 362.4 216 365.1 216 368C216 370.9 217.6 373.6 220.1 374.1L220.1 374.1L220.3 375.1L220.6 375.3L221.2 375.7C222 376.1 223.2 376.9 224.6 377.8C227.4 379.6 231.2 382.3 234.8 385.4C238.6 388.5 242 391.9 244.5 395.4C246.1 398.1 248 401.8 248 404C248 406.2 246.1 409 244.5 412.6C242 416 238.6 419.5 234.8 422.6C231.2 425.7 227.4 428.4 224.6 430.2C223.2 431.1 222 431.9 221.2 432.3C220.8 432.6 220.5 432.8 220.3 432.9L220.1 433L220.1 433C216.9 434.8 215.3 438.5 216.3 442C217.2 445.5 220.4 447.1 224 447.1C241.4 447.1 258.7 443.1 271.9 435.7C278.5 432 284.4 427.5 288.7 422.3C292.9 417.2 296 410.9 296 403.1C296 397.1 292.9 390.8 288.7 385.7C284.4 380.5 278.5 375.1 271.9 372.3C269.2 370.7 266.3 369.3 263.2 367.1C266.3 366.7 269.2 365.3 271.9 363.7C278.5 360 284.4 355.5 288.7 350.3C292.9 345.2 296 338.9 296 331.1V332zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM393.6 236.8C400.7 231.5 402.1 221.5 396.8 214.4C366.4 173.9 305.6 173.9 275.2 214.4C269.9 221.5 271.3 231.5 278.4 236.8C285.5 242.1 295.5 240.7 300.8 233.6C318.4 210.1 353.6 210.1 371.2 233.6C376.5 240.7 386.5 242.1 393.6 236.8zM439.4 373.3L459.5 367.6C481.7 361.4 504.6 375.2 510.6 398.4C516.5 421.7 503.3 445.6 481.1 451.8L396.1 475.6C387.5 478 378.6 472.9 376.3 464.2L353.4 374.9C347.5 351.6 360.7 327.7 382.9 321.5C405.2 315.3 428 329.1 433.1 352.3L439.4 373.3z"], + "face-laugh": [512, 512, ["laugh"], "f599", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM176.4 160C158.7 160 144.4 174.3 144.4 192C144.4 209.7 158.7 224 176.4 224C194 224 208.4 209.7 208.4 192C208.4 174.3 194 160 176.4 160zM336.4 224C354 224 368.4 209.7 368.4 192C368.4 174.3 354 160 336.4 160C318.7 160 304.4 174.3 304.4 192C304.4 209.7 318.7 224 336.4 224z"], + "face-laugh-beam": [512, 512, [128513, "laugh-beam"], "f59a", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM226.5 215.6C229.8 214.5 232 211.4 232 208C232 190.1 225.3 172.4 215.4 159.2C205.6 146.2 191.5 136 176 136C160.5 136 146.4 146.2 136.6 159.2C126.7 172.4 120 190.1 120 208C120 211.4 122.2 214.5 125.5 215.6C128.7 216.7 132.3 215.6 134.4 212.8L134.4 212.8L134.6 212.5C134.8 212.3 134.1 212 135.3 211.6C135.1 210.8 136.9 209.7 138.1 208.3C140.6 205.4 144.1 201.7 148.3 197.1C157.1 190.2 167.2 184 176 184C184.8 184 194.9 190.2 203.7 197.1C207.9 201.7 211.4 205.4 213.9 208.3C215.1 209.7 216 210.8 216.7 211.6C217 212 217.2 212.3 217.4 212.5L217.6 212.8L217.6 212.8C219.7 215.6 223.3 216.7 226.5 215.6V215.6zM377.6 212.8C379.7 215.6 383.3 216.7 386.5 215.6C389.8 214.5 392 211.4 392 208C392 190.1 385.3 172.4 375.4 159.2C365.6 146.2 351.5 136 336 136C320.5 136 306.4 146.2 296.6 159.2C286.7 172.4 280 190.1 280 208C280 211.4 282.2 214.5 285.5 215.6C288.7 216.7 292.3 215.6 294.4 212.8L294.4 212.8L294.6 212.5C294.8 212.3 294.1 212 295.3 211.6C295.1 210.8 296.9 209.7 298.1 208.3C300.6 205.4 304.1 201.7 308.3 197.1C317.1 190.2 327.2 184 336 184C344.8 184 354.9 190.2 363.7 197.1C367.9 201.7 371.4 205.4 373.9 208.3C375.1 209.7 376 210.8 376.7 211.6C377 212 377.2 212.3 377.4 212.5L377.6 212.8L377.6 212.8z"], + "face-laugh-squint": [512, 512, ["laugh-squint"], "f59b", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM133.5 114.7C125.6 110.4 116 116.2 116 125.1C116 127.9 116.1 130.6 118.8 132.8L154.8 176L118.8 219.2C116.1 221.4 116 224.1 116 226.9C116 235.8 125.6 241.6 133.5 237.3L223.4 189.4C234.1 183.7 234.1 168.3 223.4 162.6L133.5 114.7zM396 125.1C396 116.2 386.4 110.4 378.5 114.7L288.6 162.6C277.9 168.3 277.9 183.7 288.6 189.4L378.5 237.3C386.4 241.6 396 235.8 396 226.9C396 224.1 395 221.4 393.2 219.2L357.2 176L393.2 132.8C395 130.6 396 127.9 396 125.1V125.1z"], + "face-laugh-wink": [512, 512, ["laugh-wink"], "f59c", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM176.4 160C158.7 160 144.4 174.3 144.4 192C144.4 209.7 158.7 224 176.4 224C194 224 208.4 209.7 208.4 192C208.4 174.3 194 160 176.4 160zM300.8 217.6C318.4 194.1 353.6 194.1 371.2 217.6C376.5 224.7 386.5 226.1 393.6 220.8C400.7 215.5 402.1 205.5 396.8 198.4C366.4 157.9 305.6 157.9 275.2 198.4C269.9 205.5 271.3 215.5 278.4 220.8C285.5 226.1 295.5 224.7 300.8 217.6z"], + "face-meh": [512, 512, [128528, "meh"], "f11a", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176zM160 336C151.2 336 144 343.2 144 352C144 360.8 151.2 368 160 368H352C360.8 368 368 360.8 368 352C368 343.2 360.8 336 352 336H160z"], + "face-meh-blank": [512, 512, [128566, "meh-blank"], "f5a4", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-rolling-eyes": [512, 512, [128580, "meh-rolling-eyes"], "f5a5", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM192 368C183.2 368 176 375.2 176 384C176 392.8 183.2 400 192 400H320C328.8 400 336 392.8 336 384C336 375.2 328.8 368 320 368H192zM186.2 165.6C189.8 170.8 192 177.1 192 184C192 201.7 177.7 216 160 216C142.3 216 128 201.7 128 184C128 177.1 130.2 170.8 133.8 165.6C111.5 175.6 96 197.1 96 224C96 259.3 124.7 288 160 288C195.3 288 224 259.3 224 224C224 197.1 208.5 175.6 186.2 165.6zM352 288C387.3 288 416 259.3 416 224C416 197.1 400.5 175.6 378.2 165.6C381.8 170.8 384 177.1 384 184C384 201.7 369.7 216 352 216C334.3 216 320 201.7 320 184C320 177.1 322.2 170.8 325.8 165.6C303.5 175.6 288 197.1 288 224C288 259.3 316.7 288 352 288z"], + "face-sad-cry": [512, 512, [128557, "sad-cry"], "f5b3", "M352 493.4C322.4 505.4 289.9 512 256 512C222.1 512 189.6 505.4 160 493.4V288C160 279.2 152.8 272 144 272C135.2 272 128 279.2 128 288V477.8C51.48 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 350.8 460.5 433.5 384 477.8V288C384 279.2 376.8 272 368 272C359.2 272 352 279.2 352 288V493.4zM217.6 236.8C224.7 231.5 226.1 221.5 220.8 214.4C190.4 173.9 129.6 173.9 99.2 214.4C93.9 221.5 95.33 231.5 102.4 236.8C109.5 242.1 119.5 240.7 124.8 233.6C142.4 210.1 177.6 210.1 195.2 233.6C200.5 240.7 210.5 242.1 217.6 236.8zM316.8 233.6C334.4 210.1 369.6 210.1 387.2 233.6C392.5 240.7 402.5 242.1 409.6 236.8C416.7 231.5 418.1 221.5 412.8 214.4C382.4 173.9 321.6 173.9 291.2 214.4C285.9 221.5 287.3 231.5 294.4 236.8C301.5 242.1 311.5 240.7 316.8 233.6zM208 368C208 394.5 229.5 416 256 416C282.5 416 304 394.5 304 368V336C304 309.5 282.5 288 256 288C229.5 288 208 309.5 208 336V368z"], + "face-sad-tear": [512, 512, [128546, "sad-tear"], "f5b4", "M256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM256 352C290.9 352 323.2 367.8 348.3 394.9C354.3 401.4 364.4 401.7 370.9 395.7C377.4 389.7 377.7 379.6 371.7 373.1C341.6 340.5 301 320 256 320C247.2 320 240 327.2 240 336C240 344.8 247.2 352 256 352H256zM208 369C208 349 179.6 308.6 166.4 291.3C163.2 286.9 156.8 286.9 153.6 291.3C140.6 308.6 112 349 112 369C112 395 133.5 416 160 416C186.5 416 208 395 208 369H208zM303.6 208C303.6 225.7 317.1 240 335.6 240C353.3 240 367.6 225.7 367.6 208C367.6 190.3 353.3 176 335.6 176C317.1 176 303.6 190.3 303.6 208zM207.6 208C207.6 190.3 193.3 176 175.6 176C157.1 176 143.6 190.3 143.6 208C143.6 225.7 157.1 240 175.6 240C193.3 240 207.6 225.7 207.6 208z"], + "face-smile": [512, 512, [128578, "smile"], "f118", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM164.1 325.5C158.3 318.8 148.2 318.1 141.5 323.9C134.8 329.7 134.1 339.8 139.9 346.5C162.1 372.1 200.9 400 255.1 400C311.1 400 349.8 372.1 372.1 346.5C377.9 339.8 377.2 329.7 370.5 323.9C363.8 318.1 353.7 318.8 347.9 325.5C329.9 346.2 299.4 368 255.1 368C212.6 368 182 346.2 164.1 325.5H164.1zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240z"], + "face-smile-beam": [512, 512, [128522, "smile-beam"], "f5b8", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM164.1 325.5C158.3 318.8 148.2 318.1 141.5 323.9C134.8 329.7 134.1 339.8 139.9 346.5C162.1 372.1 200.9 400 255.1 400C311.1 400 349.8 372.1 372.1 346.5C377.9 339.8 377.2 329.7 370.5 323.9C363.8 318.1 353.7 318.8 347.9 325.5C329.9 346.2 299.4 368 255.1 368C212.6 368 182 346.2 164.1 325.5H164.1zM226.5 231.6C229.8 230.5 232 227.4 232 224C232 206.1 225.3 188.4 215.4 175.2C205.6 162.2 191.5 152 176 152C160.5 152 146.4 162.2 136.6 175.2C126.7 188.4 120 206.1 120 224C120 227.4 122.2 230.5 125.5 231.6C128.7 232.7 132.3 231.6 134.4 228.8L134.4 228.8L134.6 228.5C134.8 228.3 134.1 228 135.3 227.6C135.1 226.8 136.9 225.7 138.1 224.3C140.6 221.4 144.1 217.7 148.3 213.1C157.1 206.2 167.2 200 176 200C184.8 200 194.9 206.2 203.7 213.1C207.9 217.7 211.4 221.4 213.9 224.3C215.1 225.7 216 226.8 216.7 227.6C217 228 217.2 228.3 217.4 228.5L217.6 228.8L217.6 228.8C219.7 231.6 223.3 232.7 226.5 231.6V231.6zM377.6 228.8C379.7 231.6 383.3 232.7 386.5 231.6C389.8 230.5 392 227.4 392 224C392 206.1 385.3 188.4 375.4 175.2C365.6 162.2 351.5 152 336 152C320.5 152 306.4 162.2 296.6 175.2C286.7 188.4 280 206.1 280 224C280 227.4 282.2 230.5 285.5 231.6C288.7 232.7 292.3 231.6 294.4 228.8L294.4 228.8L294.6 228.5C294.8 228.3 294.1 228 295.3 227.6C295.1 226.8 296.9 225.7 298.1 224.3C300.6 221.4 304.1 217.7 308.3 213.1C317.1 206.2 327.2 200 336 200C344.8 200 354.9 206.2 363.7 213.1C367.9 217.7 371.4 221.4 373.9 224.3C375.1 225.7 376 226.8 376.7 227.6C377 228 377.2 228.3 377.4 228.5L377.6 228.8L377.6 228.8z"], + "face-smile-wink": [512, 512, [128521, "smile-wink"], "f4da", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM164.1 325.5C158.3 318.8 148.2 318.1 141.5 323.9C134.8 329.7 134.1 339.8 139.9 346.5C162.1 372.1 200.9 400 255.1 400C311.1 400 349.8 372.1 372.1 346.5C377.9 339.8 377.2 329.7 370.5 323.9C363.8 318.1 353.7 318.8 347.9 325.5C329.9 346.2 299.4 368 255.1 368C212.6 368 182 346.2 164.1 325.5H164.1zM176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176zM300.8 233.6C318.4 210.1 353.6 210.1 371.2 233.6C376.5 240.7 386.5 242.1 393.6 236.8C400.7 231.5 402.1 221.5 396.8 214.4C366.4 173.9 305.6 173.9 275.2 214.4C269.9 221.5 271.3 231.5 278.4 236.8C285.5 242.1 295.5 240.7 300.8 233.6z"], + "face-surprise": [512, 512, [128558, "surprise"], "f5c2", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM176.4 240C194 240 208.4 225.7 208.4 208C208.4 190.3 194 176 176.4 176C158.7 176 144.4 190.3 144.4 208C144.4 225.7 158.7 240 176.4 240zM336.4 176C318.7 176 304.4 190.3 304.4 208C304.4 225.7 318.7 240 336.4 240C354 240 368.4 225.7 368.4 208C368.4 190.3 354 176 336.4 176zM256 416C291.3 416 320 387.3 320 352C320 316.7 291.3 288 256 288C220.7 288 192 316.7 192 352C192 387.3 220.7 416 256 416z"], + "face-tired": [512, 512, [128555, "tired"], "f5c8", "M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM138.3 364.1C132.2 375.8 128 388.4 128 400C128 405.2 130.6 410.2 134.9 413.2C139.2 416.1 144.7 416.8 149.6 414.1L170.2 407.3C197.1 397.2 225.6 392 254.4 392H257.6C286.4 392 314.9 397.2 341.8 407.3L362.4 414.1C367.3 416.8 372.8 416.1 377.1 413.2C381.4 410.2 384 405.2 384 400C384 388.4 379.8 375.8 373.7 364.1C367.4 352.1 358.4 339.8 347.3 328.7C325.3 306.7 293.4 287.1 256 287.1C218.6 287.1 186.7 306.7 164.7 328.7C153.6 339.8 144.6 352.1 138.3 364.1H138.3zM133.5 146.7C125.6 142.4 116 148.2 116 157.1C116 159.9 116.1 162.6 118.8 164.8L154.8 208L118.8 251.2C116.1 253.4 116 256.1 116 258.9C116 267.8 125.6 273.6 133.5 269.3L223.4 221.4C234.1 215.7 234.1 200.3 223.4 194.6L133.5 146.7zM396 157.1C396 148.2 386.4 142.4 378.5 146.7L288.6 194.6C277.9 200.3 277.9 215.7 288.6 221.4L378.5 269.3C386.4 273.6 396 267.8 396 258.9C396 256.1 395 253.4 393.2 251.2L357.2 208L393.2 164.8C395 162.6 396 159.9 396 157.1V157.1z"], + "fan": [512, 512, [], "f863", "M352.6 127.1c-28.12 0-54.13 4.5-77.13 12.88l12.38-123.1c1.125-10.5-8.125-18.88-18.5-17.63C189.6 10.12 127.1 77.62 127.1 159.4c0 28.12 4.5 54.13 12.88 77.13L17.75 224.1c-10.5-1.125-18.88 8.125-17.63 18.5c9.1 79.75 77.5 141.4 159.3 141.4c28.12 0 54.13-4.5 77.13-12.88l-12.38 123.1c-1.125 10.38 8.125 18.88 18.5 17.63c79.75-10 141.4-77.5 141.4-159.3c0-28.12-4.5-54.13-12.88-77.13l123.1 12.38c10.5 1.125 18.88-8.125 17.63-18.5C501.9 189.6 434.4 127.1 352.6 127.1zM255.1 287.1c-17.62 0-31.1-14.38-31.1-32s14.37-32 31.1-32s31.1 14.38 31.1 32S273.6 287.1 255.1 287.1z"], + "faucet": [512, 512, [], "e005", "M352 256h-38.54C297.7 242.5 277.9 232.9 256 228V180.5L224 177L192 180.5V228C170.1 233 150.3 242.6 134.5 256H16C7.125 256 0 263.1 0 272v96C0 376.9 7.125 384 16 384h92.78C129.4 421.8 173 448 224 448s94.59-26.25 115.2-64H352c17.62 0 32 14.29 32 31.91S398.4 448 416 448h64c17.62 0 32-14.31 32-31.94C512 327.7 440.4 256 352 256zM81.63 159.9L224 144.9l142.4 15C375.9 160.9 384 153.1 384 143.1V112.9c0-10-8.125-17.74-17.62-16.74L256 107.8V80C256 71.12 248.9 64 240 64h-32C199.1 64 192 71.12 192 80v27.75L81.63 96.14C72.13 95.14 64 102.9 64 112.9v30.24C64 153.1 72.13 160.9 81.63 159.9z"], + "faucet-drip": [512, 512, [128688], "e006", "M416 480c0 17.62 14.38 32 32 32s32-14.38 32-32s-32-64-32-64S416 462.4 416 480zM352 192h-38.54C297.7 178.5 277.9 168.9 256 164V116.5L224 113L192 116.5V164C170.1 169 150.3 178.6 134.5 192H16C7.125 192 0 199.1 0 208v96C0 312.9 7.125 320 16 320h92.78C129.4 357.8 173 384 224 384s94.59-26.25 115.2-64H352c17.62 0 32 14.29 32 31.91S398.4 384 416 384h64c17.62 0 32-14.38 32-32C512 263.6 440.4 192 352 192zM81.63 95.88L224 80.88l142.4 15C375.9 96.88 384 89.12 384 79.12V48.89c0-10-8.125-17.74-17.62-16.74L256 43.75V16C256 7.125 248.9 0 240 0h-32C199.1 0 192 7.125 192 16v27.75L81.63 32.14C72.13 31.14 64 38.89 64 48.89V79.12C64 89.12 72.13 96.88 81.63 95.88z"], + "fax": [512, 512, [128439, 128224], "f1ac", "M192 64h197.5L416 90.51V160h64V77.25c0-8.484-3.375-16.62-9.375-22.62l-45.25-45.25C419.4 3.375 411.2 0 402.8 0H160C142.3 0 128 14.33 128 32v128h64V64zM64 128H32C14.38 128 0 142.4 0 160v320c0 17.62 14.38 32 32 32h32c17.62 0 32-14.38 32-32V160C96 142.4 81.63 128 64 128zM480 192H128v288c0 17.6 14.4 32 32 32h320c17.6 0 32-14.4 32-32V224C512 206.4 497.6 192 480 192zM288 432c0 8.875-7.125 16-16 16h-32C231.1 448 224 440.9 224 432v-32C224 391.1 231.1 384 240 384h32c8.875 0 16 7.125 16 16V432zM288 304c0 8.875-7.125 16-16 16h-32C231.1 320 224 312.9 224 304v-32C224 263.1 231.1 256 240 256h32C280.9 256 288 263.1 288 272V304zM416 432c0 8.875-7.125 16-16 16h-32c-8.875 0-16-7.125-16-16v-32c0-8.875 7.125-16 16-16h32c8.875 0 16 7.125 16 16V432zM416 304c0 8.875-7.125 16-16 16h-32C359.1 320 352 312.9 352 304v-32C352 263.1 359.1 256 368 256h32C408.9 256 416 263.1 416 272V304z"], + "feather": [512, 512, [129718], "f52d", "M483.4 244.2L351.9 287.1h97.74c-9.874 10.62 3.75-3.125-46.24 46.87l-147.6 49.12h98.24c-74.99 73.12-194.6 70.62-246.8 54.1l-66.14 65.99c-9.374 9.374-24.6 9.374-33.98 0s-9.374-24.6 0-33.98l259.5-259.2c6.249-6.25 6.249-16.37 0-22.62c-6.249-6.249-16.37-6.249-22.62 0l-178.4 178.2C58.78 306.1 68.61 216.7 129.1 156.3l85.74-85.68c90.62-90.62 189.8-88.27 252.3-25.78C517.8 95.34 528.9 169.7 483.4 244.2z"], + "feather-pointed": [512, 512, ["feather-alt"], "f56b", "M467.1 241.1L351.1 288h94.34c-7.711 14.85-16.29 29.28-25.87 43.01l-132.5 52.99h85.65c-59.34 52.71-144.1 80.34-264.5 52.82l-68.13 68.13c-9.38 9.38-24.56 9.374-33.94 0c-9.375-9.375-9.375-24.56 0-33.94l253.4-253.4c4.846-6.275 4.643-15.19-1.113-20.95c-6.25-6.25-16.38-6.25-22.62 0l-168.6 168.6C24.56 58 366.9 8.118 478.9 .0846c18.87-1.354 34.41 14.19 33.05 33.05C508.7 78.53 498.5 161.8 467.1 241.1z"], + "ferry": [576, 512, [], "e4ea", "M352 0C369.7 0 384 14.33 384 32H459.1C479.7 32 490.7 56.29 477.2 71.8L456 96H119.1L98.83 71.8C85.25 56.29 96.27 32 116.9 32H191.1C191.1 14.33 206.3 0 223.1 0L352 0zM95.1 128H480C497.7 128 512 142.3 512 160V283.5C512 296.8 507.8 309.8 500.1 320.7L448.7 392.6C446.8 393.7 444.1 394.9 443.2 396.1C427.7 406.8 409.1 414.2 392.1 416H375.6C358.5 414.2 340.6 406.1 324.8 396.1C302.8 380.6 273.3 380.6 251.2 396.1C236.3 406.3 218.7 414.1 200.5 416H183.9C166.9 414.2 148.3 406.8 132.9 396.1C131.1 394.8 129.2 393.7 127.3 392.6L75.92 320.7C68.17 309.8 64 296.8 64 283.5V160C64 142.3 78.33 128 96 128H95.1zM127.1 288H448V192H127.1V288zM384 448C410.9 448 439.4 437.2 461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448H384z"], + "file": [384, 512, [128459, 61462, 128196], "f15b", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256z"], + "file-arrow-down": [384, 512, ["file-download"], "f56d", "M384 128h-128V0L384 128zM256 160H384v304c0 26.51-21.49 48-48 48h-288C21.49 512 0 490.5 0 464v-416C0 21.49 21.49 0 48 0H224l.0039 128C224 145.7 238.3 160 256 160zM255 295L216 334.1V232c0-13.25-10.75-24-24-24S168 218.8 168 232v102.1L128.1 295C124.3 290.3 118.2 288 112 288S99.72 290.3 95.03 295c-9.375 9.375-9.375 24.56 0 33.94l80 80c9.375 9.375 24.56 9.375 33.94 0l80-80c9.375-9.375 9.375-24.56 0-33.94S264.4 285.7 255 295z"], + "file-arrow-up": [384, 512, ["file-upload"], "f574", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM288.1 344.1C284.3 349.7 278.2 352 272 352s-12.28-2.344-16.97-7.031L216 305.9V408c0 13.25-10.75 24-24 24s-24-10.75-24-24V305.9l-39.03 39.03c-9.375 9.375-24.56 9.375-33.94 0s-9.375-24.56 0-33.94l80-80c9.375-9.375 24.56-9.375 33.94 0l80 80C298.3 320.4 298.3 335.6 288.1 344.1z"], + "file-audio": [384, 512, [], "f1c7", "M224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM176 404c0 10.75-12.88 15.98-20.5 8.484L120 376H76C69.38 376 64 370.6 64 364v-56C64 301.4 69.38 296 76 296H120l35.5-36.5C163.1 251.9 176 257.3 176 268V404zM224 387.8c-4.391 0-8.75-1.835-11.91-5.367c-5.906-6.594-5.359-16.69 1.219-22.59C220.2 353.7 224 345.2 224 336s-3.797-17.69-10.69-23.88c-6.578-5.906-7.125-16-1.219-22.59c5.922-6.594 16.05-7.094 22.59-1.219C248.2 300.5 256 317.8 256 336s-7.766 35.53-21.31 47.69C231.6 386.4 227.8 387.8 224 387.8zM320 336c0 41.81-20.5 81.11-54.84 105.1c-2.781 1.938-5.988 2.875-9.145 2.875c-5.047 0-10.03-2.375-13.14-6.844c-5.047-7.25-3.281-17.22 3.969-22.28C272.6 396.9 288 367.4 288 336s-15.38-60.84-41.14-78.8c-7.25-5.062-9.027-15.03-3.98-22.28c5.047-7.281 14.99-9.062 22.27-3.969C299.5 254.9 320 294.2 320 336zM256 0v128h128L256 0z"], + "file-circle-check": [576, 512, [], "e5a0", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM476.7 324.7L416 385.4L387.3 356.7C381.1 350.4 370.9 350.4 364.7 356.7C358.4 362.9 358.4 373.1 364.7 379.3L404.7 419.3C410.9 425.6 421.1 425.6 427.3 419.3L499.3 347.3C505.6 341.1 505.6 330.9 499.3 324.7C493.1 318.4 482.9 318.4 476.7 324.7H476.7z"], + "file-circle-exclamation": [576, 512, [], "e4eb", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM415.1 288V368C415.1 376.8 423.2 384 431.1 384C440.8 384 447.1 376.8 447.1 368V288C447.1 279.2 440.8 272 431.1 272C423.2 272 415.1 279.2 415.1 288z"], + "file-circle-minus": [576, 512, [], "e4ed", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM496 351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1z"], + "file-circle-plus": [576, 512, [58606], "e494", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM448 303.1C448 295.2 440.8 287.1 432 287.1C423.2 287.1 416 295.2 416 303.1V351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H416V431.1C416 440.8 423.2 447.1 432 447.1C440.8 447.1 448 440.8 448 431.1V383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1H448V303.1z"], + "file-circle-question": [576, 512, [], "e4ef", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM368 328C368 336.8 375.2 344 384 344C392.8 344 400 336.8 400 328V321.6C400 316.3 404.3 312 409.6 312H450.1C457.8 312 464 318.2 464 325.9C464 331.1 461.1 335.8 456.6 338.3L424.6 355.1C419.3 357.9 416 363.3 416 369.2V384C416 392.8 423.2 400 432 400C440.8 400 448 392.8 448 384V378.9L471.5 366.6C486.6 358.6 496 342.1 496 325.9C496 300.6 475.4 280 450.1 280H409.6C386.6 280 368 298.6 368 321.6V328z"], + "file-circle-xmark": [576, 512, [], "e5a1", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V198.6C310.1 219.5 256 287.4 256 368C256 427.1 285.1 479.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM491.3 331.3C497.6 325.1 497.6 314.9 491.3 308.7C485.1 302.4 474.9 302.4 468.7 308.7L432 345.4L395.3 308.7C389.1 302.4 378.9 302.4 372.7 308.7C366.4 314.9 366.4 325.1 372.7 331.3L409.4 368L372.7 404.7C366.4 410.9 366.4 421.1 372.7 427.3C378.9 433.6 389.1 433.6 395.3 427.3L432 390.6L468.7 427.3C474.9 433.6 485.1 433.6 491.3 427.3C497.6 421.1 497.6 410.9 491.3 404.7L454.6 368L491.3 331.3z"], + "file-code": [384, 512, [], "f1c9", "M224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM154.1 353.8c7.812 7.812 7.812 20.5 0 28.31C150.2 386.1 145.1 388 140 388s-10.23-1.938-14.14-5.844l-48-48c-7.812-7.812-7.812-20.5 0-28.31l48-48c7.812-7.812 20.47-7.812 28.28 0s7.812 20.5 0 28.31L120.3 320L154.1 353.8zM306.1 305.8c7.812 7.812 7.812 20.5 0 28.31l-48 48C254.2 386.1 249.1 388 244 388s-10.23-1.938-14.14-5.844c-7.812-7.812-7.812-20.5 0-28.31L263.7 320l-33.86-33.84c-7.812-7.812-7.812-20.5 0-28.31s20.47-7.812 28.28 0L306.1 305.8zM256 0v128h128L256 0z"], + "file-contract": [384, 512, [], "f56c", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM64 72C64 67.63 67.63 64 72 64h80C156.4 64 160 67.63 160 72v16C160 92.38 156.4 96 152 96h-80C67.63 96 64 92.38 64 88V72zM64 136C64 131.6 67.63 128 72 128h80C156.4 128 160 131.6 160 136v16C160 156.4 156.4 160 152 160h-80C67.63 160 64 156.4 64 152V136zM304 384c8.875 0 16 7.125 16 16S312.9 416 304 416h-47.25c-16.38 0-31.25-9.125-38.63-23.88c-2.875-5.875-8-6.5-10.12-6.5s-7.25 .625-10 6.125l-7.75 15.38C187.6 412.6 181.1 416 176 416H174.9c-6.5-.5-12-4.75-14-11L144 354.6L133.4 386.5C127.5 404.1 111 416 92.38 416H80C71.13 416 64 408.9 64 400S71.13 384 80 384h12.38c4.875 0 9.125-3.125 10.62-7.625l18.25-54.63C124.5 311.9 133.6 305.3 144 305.3s19.5 6.625 22.75 16.5l13.88 41.63c19.75-16.25 54.13-9.75 66 14.12c2 4 6 6.5 10.12 6.5H304z"], + "file-csv": [384, 512, [], "f6dd", "M224 0V128C224 145.7 238.3 160 256 160H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H224zM80 224C57.91 224 40 241.9 40 264V344C40 366.1 57.91 384 80 384H96C118.1 384 136 366.1 136 344V336C136 327.2 128.8 320 120 320C111.2 320 104 327.2 104 336V344C104 348.4 100.4 352 96 352H80C75.58 352 72 348.4 72 344V264C72 259.6 75.58 256 80 256H96C100.4 256 104 259.6 104 264V272C104 280.8 111.2 288 120 288C128.8 288 136 280.8 136 272V264C136 241.9 118.1 224 96 224H80zM175.4 310.6L200.8 325.1C205.2 327.7 208 332.5 208 337.6C208 345.6 201.6 352 193.6 352H168C159.2 352 152 359.2 152 368C152 376.8 159.2 384 168 384H193.6C219.2 384 240 363.2 240 337.6C240 320.1 231.1 305.6 216.6 297.4L191.2 282.9C186.8 280.3 184 275.5 184 270.4C184 262.4 190.4 256 198.4 256H216C224.8 256 232 248.8 232 240C232 231.2 224.8 224 216 224H198.4C172.8 224 152 244.8 152 270.4C152 287 160.9 302.4 175.4 310.6zM280 240C280 231.2 272.8 224 264 224C255.2 224 248 231.2 248 240V271.6C248 306.3 258.3 340.3 277.6 369.2L282.7 376.9C285.7 381.3 290.6 384 296 384C301.4 384 306.3 381.3 309.3 376.9L314.4 369.2C333.7 340.3 344 306.3 344 271.6V240C344 231.2 336.8 224 328 224C319.2 224 312 231.2 312 240V271.6C312 294.6 306.5 317.2 296 337.5C285.5 317.2 280 294.6 280 271.6V240zM256 0L384 128H256V0z"], + "file-excel": [384, 512, [], "f1c3", "M224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM272.1 264.4L224 344l48.99 79.61C279.6 434.3 271.9 448 259.4 448h-26.43c-5.557 0-10.71-2.883-13.63-7.617L192 396l-27.31 44.38C161.8 445.1 156.6 448 151.1 448H124.6c-12.52 0-20.19-13.73-13.63-24.39L160 344L111 264.4C104.4 253.7 112.1 240 124.6 240h26.43c5.557 0 10.71 2.883 13.63 7.613L192 292l27.31-44.39C222.2 242.9 227.4 240 232.9 240h26.43C271.9 240 279.6 253.7 272.1 264.4zM256 0v128h128L256 0z"], + "file-export": [576, 512, ["arrow-right-from-file"], "f56e", "M192 312C192 298.8 202.8 288 216 288H384V160H256c-17.67 0-32-14.33-32-32L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48v-128H216C202.8 336 192 325.3 192 312zM256 0v128h128L256 0zM568.1 295l-80-80c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94L494.1 288H384v48h110.1l-39.03 39.03C450.3 379.7 448 385.8 448 392s2.344 12.28 7.031 16.97c9.375 9.375 24.56 9.375 33.94 0l80-80C578.3 319.6 578.3 304.4 568.1 295z"], + "file-image": [384, 512, [128443], "f1c5", "M224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM96 224c17.67 0 32 14.33 32 32S113.7 288 96 288S64 273.7 64 256S78.33 224 96 224zM318.1 439.5C315.3 444.8 309.9 448 304 448h-224c-5.9 0-11.32-3.248-14.11-8.451c-2.783-5.201-2.479-11.52 .7949-16.42l53.33-80C122.1 338.7 127.1 336 133.3 336s10.35 2.674 13.31 7.125L160 363.2l45.35-68.03C208.3 290.7 213.3 288 218.7 288s10.35 2.674 13.31 7.125l85.33 128C320.6 428 320.9 434.3 318.1 439.5zM256 0v128h128L256 0z"], + "file-import": [512, 512, ["arrow-right-to-file"], "f56f", "M384 0v128h128L384 0zM352 128L352 0H176C149.5 0 128 21.49 128 48V288h174.1l-39.03-39.03c-9.375-9.375-9.375-24.56 0-33.94s24.56-9.375 33.94 0l80 80c9.375 9.375 9.375 24.56 0 33.94l-80 80c-9.375 9.375-24.56 9.375-33.94 0C258.3 404.3 256 398.2 256 392s2.344-12.28 7.031-16.97L302.1 336H128v128C128 490.5 149.5 512 176 512h288c26.51 0 48-21.49 48-48V160h-127.1C366.3 160 352 145.7 352 128zM24 288C10.75 288 0 298.7 0 312c0 13.25 10.75 24 24 24H128V288H24z"], + "file-invoice": [384, 512, [], "f570", "M256 0v128h128L256 0zM288 256H96v64h192V256zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM64 72C64 67.63 67.63 64 72 64h80C156.4 64 160 67.63 160 72v16C160 92.38 156.4 96 152 96h-80C67.63 96 64 92.38 64 88V72zM64 136C64 131.6 67.63 128 72 128h80C156.4 128 160 131.6 160 136v16C160 156.4 156.4 160 152 160h-80C67.63 160 64 156.4 64 152V136zM320 440c0 4.375-3.625 8-8 8h-80C227.6 448 224 444.4 224 440v-16c0-4.375 3.625-8 8-8h80c4.375 0 8 3.625 8 8V440zM320 240v96c0 8.875-7.125 16-16 16h-224C71.13 352 64 344.9 64 336v-96C64 231.1 71.13 224 80 224h224C312.9 224 320 231.1 320 240z"], + "file-invoice-dollar": [384, 512, [], "f571", "M384 128h-128V0L384 128zM256 160H384v304c0 26.51-21.49 48-48 48h-288C21.49 512 0 490.5 0 464v-416C0 21.49 21.49 0 48 0H224l.0039 128C224 145.7 238.3 160 256 160zM64 88C64 92.38 67.63 96 72 96h80C156.4 96 160 92.38 160 88v-16C160 67.63 156.4 64 152 64h-80C67.63 64 64 67.63 64 72V88zM72 160h80C156.4 160 160 156.4 160 152v-16C160 131.6 156.4 128 152 128h-80C67.63 128 64 131.6 64 136v16C64 156.4 67.63 160 72 160zM197.5 316.8L191.1 315.2C168.3 308.2 168.8 304.1 169.6 300.5c1.375-7.812 16.59-9.719 30.27-7.625c5.594 .8438 11.73 2.812 17.59 4.844c10.39 3.594 21.83-1.938 25.45-12.34c3.625-10.44-1.891-21.84-12.33-25.47c-7.219-2.484-13.11-4.078-18.56-5.273V248c0-11.03-8.953-20-20-20s-20 8.969-20 20v5.992C149.6 258.8 133.8 272.8 130.2 293.7c-7.406 42.84 33.19 54.75 50.52 59.84l5.812 1.688c29.28 8.375 28.8 11.19 27.92 16.28c-1.375 7.812-16.59 9.75-30.31 7.625c-6.938-1.031-15.81-4.219-23.66-7.031l-4.469-1.625c-10.41-3.594-21.83 1.812-25.52 12.22c-3.672 10.41 1.781 21.84 12.2 25.53l4.266 1.5c7.758 2.789 16.38 5.59 25.06 7.512V424c0 11.03 8.953 20 20 20s20-8.969 20-20v-6.254c22.36-4.793 38.21-18.53 41.83-39.43C261.3 335 219.8 323.1 197.5 316.8z"], + "file-lines": [384, 512, [128462, 61686, 128441, "file-alt", "file-text"], "f15c", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM272 416h-160C103.2 416 96 408.8 96 400C96 391.2 103.2 384 112 384h160c8.836 0 16 7.162 16 16C288 408.8 280.8 416 272 416zM272 352h-160C103.2 352 96 344.8 96 336C96 327.2 103.2 320 112 320h160c8.836 0 16 7.162 16 16C288 344.8 280.8 352 272 352zM288 272C288 280.8 280.8 288 272 288h-160C103.2 288 96 280.8 96 272C96 263.2 103.2 256 112 256h160C280.8 256 288 263.2 288 272z"], + "file-medical": [384, 512, [], "f477", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM288 301.7v36.57C288 345.9 281.9 352 274.3 352L224 351.1v50.29C224 409.9 217.9 416 210.3 416H173.7C166.1 416 160 409.9 160 402.3V351.1L109.7 352C102.1 352 96 345.9 96 338.3V301.7C96 294.1 102.1 288 109.7 288H160V237.7C160 230.1 166.1 224 173.7 224h36.57C217.9 224 224 230.1 224 237.7V288h50.29C281.9 288 288 294.1 288 301.7z"], + "file-pdf": [384, 512, [], "f1c1", "M88 304H80V256H88C101.3 256 112 266.7 112 280C112 293.3 101.3 304 88 304zM192 256H200C208.8 256 216 263.2 216 272V336C216 344.8 208.8 352 200 352H192V256zM224 0V128C224 145.7 238.3 160 256 160H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H224zM64 224C55.16 224 48 231.2 48 240V368C48 376.8 55.16 384 64 384C72.84 384 80 376.8 80 368V336H88C118.9 336 144 310.9 144 280C144 249.1 118.9 224 88 224H64zM160 368C160 376.8 167.2 384 176 384H200C226.5 384 248 362.5 248 336V272C248 245.5 226.5 224 200 224H176C167.2 224 160 231.2 160 240V368zM288 224C279.2 224 272 231.2 272 240V368C272 376.8 279.2 384 288 384C296.8 384 304 376.8 304 368V320H336C344.8 320 352 312.8 352 304C352 295.2 344.8 288 336 288H304V256H336C344.8 256 352 248.8 352 240C352 231.2 344.8 224 336 224H288zM256 0L384 128H256V0z"], + "file-pen": [576, 512, [128221, "file-edit"], "f31c", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V299.6L289.3 394.3C281.1 402.5 275.3 412.8 272.5 424.1L257.4 484.2C255.1 493.6 255.7 503.2 258.8 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM564.1 250.1C579.8 265.7 579.8 291 564.1 306.7L534.7 336.1L463.8 265.1L493.2 235.7C508.8 220.1 534.1 220.1 549.8 235.7L564.1 250.1zM311.9 416.1L441.1 287.8L512.1 358.7L382.9 487.9C378.8 492 373.6 494.9 368 496.3L307.9 511.4C302.4 512.7 296.7 511.1 292.7 507.2C288.7 503.2 287.1 497.4 288.5 491.1L303.5 431.8C304.9 426.2 307.8 421.1 311.9 416.1V416.1z"], + "file-powerpoint": [384, 512, [], "f1c4", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM279.6 308.1C284.2 353.5 248.5 392 204 392H160v40C160 440.8 152.8 448 144 448H128c-8.836 0-16-7.164-16-16V256c0-8.836 7.164-16 16-16h71.51C239.3 240 275.6 268.5 279.6 308.1zM160 344h44c15.44 0 28-12.56 28-28S219.4 288 204 288H160V344z"], + "file-prescription": [384, 512, [], "f572", "M176 240H128v32h48C184.9 272 192 264.9 192 256S184.9 240 176 240zM256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM292.5 315.5l11.38 11.25c6.25 6.25 6.25 16.38 0 22.62l-29.88 30L304 409.4c6.25 6.25 6.25 16.38 0 22.62l-11.25 11.38c-6.25 6.25-16.5 6.25-22.75 0L240 413.3l-30 30c-6.249 6.25-16.48 6.266-22.73 .0156L176 432c-6.25-6.25-6.25-16.38 0-22.62l29.1-30.12L146.8 320H128l.0078 48.01c0 8.875-7.125 16-16 16L96 384c-8.875 0-16-7.125-16-16v-160C80 199.1 87.13 192 96 192h80c35.38 0 64 28.62 64 64c0 24.25-13.62 45-33.5 55.88L240 345.4l29.88-29.88C276.1 309.3 286.3 309.3 292.5 315.5z"], + "file-shield": [576, 512, [], "e4f0", "M0 64C0 28.65 28.65 0 64 0H224V128C224 145.7 238.3 160 256 160H384V207L291.2 244.2C269.9 252.7 256 273.3 256 296.2C256 352.7 274.9 444.2 350.2 504.4C341.2 509.3 330.9 512 320 512H64C28.65 512 0 483.3 0 448V64zM256 128V0L384 128H256zM423.1 225.7C428.8 223.4 435.2 223.4 440.9 225.7L560.9 273.7C570 277.4 576 286.2 576 296C576 359.3 550.1 464.8 441.2 510.2C435.3 512.6 428.7 512.6 422.8 510.2C313.9 464.8 288 359.3 288 296C288 286.2 293.1 277.4 303.1 273.7L423.1 225.7zM432 273.8V461.7C500.2 428.7 523.5 362.7 527.4 311.1L432 273.8z"], + "file-signature": [576, 512, [], "f573", "M292.7 342.3C289.7 345.3 288 349.4 288 353.7V416h62.34c4.264 0 8.35-1.703 11.35-4.727l156.9-158l-67.88-67.88L292.7 342.3zM568.5 167.4L536.6 135.5c-9.875-10-26-10-36 0l-27.25 27.25l67.88 67.88l27.25-27.25C578.5 193.4 578.5 177.3 568.5 167.4zM256 0v128h128L256 0zM256 448c-16.07-.2852-30.62-9.359-37.88-23.88c-2.875-5.875-8-6.5-10.12-6.5s-7.25 .625-10 6.125l-7.749 15.38C187.6 444.6 181.1 448 176 448H174.9c-6.5-.5-12-4.75-14-11L144 386.6L133.4 418.5C127.5 436.1 111 448 92.45 448H80C71.13 448 64 440.9 64 432S71.13 416 80 416h12.4c4.875 0 9.102-3.125 10.6-7.625l18.25-54.63C124.5 343.9 133.6 337.3 144 337.3s19.5 6.625 22.75 16.5l13.88 41.63c19.75-16.25 54.13-9.75 66 14.12C248.5 413.2 252.2 415.6 256 415.9V347c0-8.523 3.402-16.7 9.451-22.71L384 206.5V160H256c-17.67 0-32-14.33-32-32L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V448H256z"], + "file-video": [384, 512, [], "f1c8", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM224 384c0 17.67-14.33 32-32 32H96c-17.67 0-32-14.33-32-32V288c0-17.67 14.33-32 32-32h96c17.67 0 32 14.33 32 32V384zM320 284.9v102.3c0 12.57-13.82 20.23-24.48 13.57L256 376v-80l39.52-24.7C306.2 264.6 320 272.3 320 284.9z"], + "file-waveform": [448, 512, ["file-medical-alt"], "f478", "M320 0v128h128L320 0zM288 128L288 0H112C85.49 0 64 21.49 64 48V224H16C7.164 224 0 231.2 0 240v32C0 280.8 7.164 288 16 288h128c6.062 0 11.59 3.438 14.31 8.844L176 332.2l49.69-99.38c5.438-10.81 23.19-10.81 28.62 0L281.9 288H352c8.844 0 16 7.156 16 16S360.8 320 352 320h-80c-6.062 0-11.59-3.438-14.31-8.844L240 275.8l-49.69 99.38C187.6 380.6 182.1 384 176 384s-11.59-3.438-14.31-8.844L134.1 320H64v144C64 490.5 85.49 512 112 512h288c26.51 0 48-21.49 48-48V160h-127.1C302.3 160 288 145.7 288 128z"], + "file-word": [384, 512, [], "f1c2", "M224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM281.5 240h23.37c7.717 0 13.43 7.18 11.69 14.7l-42.46 184C272.9 444.1 268 448 262.5 448h-29.26c-5.426 0-10.18-3.641-11.59-8.883L192 329.1l-29.61 109.1C160.1 444.4 156.2 448 150.8 448H121.5c-5.588 0-10.44-3.859-11.69-9.305l-42.46-184C65.66 247.2 71.37 240 79.08 240h23.37c5.588 0 10.44 3.859 11.69 9.301L137.8 352L165.6 248.9C167 243.6 171.8 240 177.2 240h29.61c5.426 0 10.18 3.641 11.59 8.883L246.2 352l23.7-102.7C271.1 243.9 275.1 240 281.5 240zM256 0v128h128L256 0z"], + "file-zipper": [384, 512, ["file-archive"], "f1c6", "M256 0v128h128L256 0zM224 128L224 0H48C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48V160h-127.1C238.3 160 224 145.7 224 128zM96 32h64v32H96V32zM96 96h64v32H96V96zM96 160h64v32H96V160zM128.3 415.1c-40.56 0-70.76-36.45-62.83-75.45L96 224h64l30.94 116.9C198.7 379.7 168.5 415.1 128.3 415.1zM144 336h-32C103.2 336 96 343.2 96 352s7.164 16 16 16h32C152.8 368 160 360.8 160 352S152.8 336 144 336z"], + "fill": [512, 512, [], "f575", "M168 90.74L221.1 37.66C249.2 9.539 294.8 9.539 322.9 37.66L474.3 189.1C502.5 217.2 502.5 262.8 474.3 290.9L283.9 481.4C246.4 518.9 185.6 518.9 148.1 481.4L30.63 363.9C-6.863 326.4-6.863 265.6 30.63 228.1L122.7 135.1L41.37 54.63C28.88 42.13 28.88 21.87 41.37 9.372C53.87-3.124 74.13-3.124 86.63 9.372L168 90.74zM75.88 273.4C71.69 277.6 68.9 282.6 67.52 287.1H386.7L429.1 245.7C432.2 242.5 432.2 237.5 429.1 234.3L277.7 82.91C274.5 79.79 269.5 79.79 266.3 82.91L213.3 136L262.6 185.4C275.1 197.9 275.1 218.1 262.6 230.6C250.1 243.1 229.9 243.1 217.4 230.6L168 181.3L75.88 273.4z"], + "fill-drip": [576, 512, [], "f576", "M41.37 9.372C53.87-3.124 74.13-3.124 86.63 9.372L168 90.74L221.1 37.66C249.2 9.539 294.8 9.539 322.9 37.66L474.3 189.1C502.5 217.2 502.5 262.8 474.3 290.9L283.9 481.4C246.4 518.9 185.6 518.9 148.1 481.4L30.63 363.9C-6.863 326.4-6.863 265.6 30.63 228.1L122.7 135.1L41.37 54.63C28.88 42.13 28.88 21.87 41.37 9.372V9.372zM217.4 230.6L168 181.3L75.88 273.4C71.69 277.6 68.9 282.6 67.52 288H386.7L429.1 245.7C432.2 242.5 432.2 237.5 429.1 234.3L277.7 82.91C274.5 79.79 269.5 79.79 266.3 82.91L213.3 136L262.6 185.4C275.1 197.9 275.1 218.1 262.6 230.6C250.1 243.1 229.9 243.1 217.4 230.6L217.4 230.6zM448 448C448 422.8 480.6 368.4 499.2 339.3C505.3 329.9 518.7 329.9 524.8 339.3C543.4 368.4 576 422.8 576 448C576 483.3 547.3 512 512 512C476.7 512 448 483.3 448 448H448z"], + "film": [512, 512, [127902], "f008", "M463.1 32h-416C21.49 32-.0001 53.49-.0001 80v352c0 26.51 21.49 48 47.1 48h416c26.51 0 48-21.49 48-48v-352C511.1 53.49 490.5 32 463.1 32zM111.1 408c0 4.418-3.582 8-8 8H55.1c-4.418 0-8-3.582-8-8v-48c0-4.418 3.582-8 8-8h47.1c4.418 0 8 3.582 8 8L111.1 408zM111.1 280c0 4.418-3.582 8-8 8H55.1c-4.418 0-8-3.582-8-8v-48c0-4.418 3.582-8 8-8h47.1c4.418 0 8 3.582 8 8V280zM111.1 152c0 4.418-3.582 8-8 8H55.1c-4.418 0-8-3.582-8-8v-48c0-4.418 3.582-8 8-8h47.1c4.418 0 8 3.582 8 8L111.1 152zM351.1 400c0 8.836-7.164 16-16 16H175.1c-8.836 0-16-7.164-16-16v-96c0-8.838 7.164-16 16-16h160c8.836 0 16 7.162 16 16V400zM351.1 208c0 8.836-7.164 16-16 16H175.1c-8.836 0-16-7.164-16-16v-96c0-8.838 7.164-16 16-16h160c8.836 0 16 7.162 16 16V208zM463.1 408c0 4.418-3.582 8-8 8h-47.1c-4.418 0-7.1-3.582-7.1-8l0-48c0-4.418 3.582-8 8-8h47.1c4.418 0 8 3.582 8 8V408zM463.1 280c0 4.418-3.582 8-8 8h-47.1c-4.418 0-8-3.582-8-8v-48c0-4.418 3.582-8 8-8h47.1c4.418 0 8 3.582 8 8V280zM463.1 152c0 4.418-3.582 8-8 8h-47.1c-4.418 0-8-3.582-8-8l0-48c0-4.418 3.582-8 7.1-8h47.1c4.418 0 8 3.582 8 8V152z"], + "filter": [512, 512, [], "f0b0", "M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"], + "filter-circle-dollar": [576, 512, ["funnel-dollar"], "f662", "M3.853 22.87C10.47 8.904 24.54 0 40 0H472C487.5 0 501.5 8.904 508.1 22.87C514.8 36.84 512.7 53.37 502.1 65.33L396.4 195.6C316.2 212.1 255.1 283 255.1 368C255.1 395.4 262.3 421.4 273.5 444.5C271.8 443.7 270.3 442.7 268.8 441.6L204.8 393.6C196.7 387.6 192 378.1 192 368V288.9L9.042 65.33C-.745 53.37-2.765 36.84 3.854 22.87H3.853zM576 368C576 447.5 511.5 512 432 512C352.5 512 287.1 447.5 287.1 368C287.1 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM413 331.1C418.1 329.3 425.6 327.9 431.8 328C439.1 328.1 448.9 329.8 458.1 332.1C466.7 334.2 475.4 328.1 477.5 320.4C479.7 311.8 474.4 303.2 465.9 301C460.3 299.6 454.3 298.3 448 297.4V288C448 279.2 440.8 272 432 272C423.2 272 416 279.2 416 288V297.5C409.9 298.7 403.7 300.7 397.1 303.8C386.1 310.1 374.9 322.2 376.1 341C377.1 357 387.8 366.4 397.7 371.7C406.6 376.4 417.5 379.5 426.3 381.1L428.1 382.5C438.3 385.4 445.1 387.7 451.2 390.8C455.8 393.5 455.1 395.1 455.1 396.5C456.1 398.9 455.5 400.2 454.1 401C454.3 401.1 453.2 403.2 450.1 404.4C446.3 406.9 439.2 408.2 432.5 407.1C422.1 407.7 414 404.8 402.6 401.2C400.7 400.6 398.8 400 396.8 399.4C388.3 396.8 379.3 401.5 376.7 409.9C374.1 418.3 378.8 427.3 387.2 429.9C388.9 430.4 390.5 430.1 392.3 431.5C399.3 433.8 407.4 436.4 416 438.1V449.5C416 458.4 423.2 465.5 432 465.5C440.8 465.5 448 458.4 448 449.5V438.7C454.2 437.6 460.5 435.6 466.3 432.5C478.3 425.9 488.5 413.8 487.1 395.5C487.5 379.4 477.7 369.3 467.5 363.3C458.1 357.7 446.2 354.4 436.9 351.7L436.8 351.7C426.3 348.7 418.5 346.5 412.9 343.5C408.1 340.9 408.1 339.5 408.1 339.1L408.1 338.1C407.9 337 408.4 336.1 408.8 335.4C409.4 334.5 410.6 333.3 413 331.1L413 331.1z"], + "filter-circle-xmark": [576, 512, [], "e17b", "M3.853 22.87C10.47 8.904 24.54 0 40 0H472C487.5 0 501.5 8.904 508.1 22.87C514.8 36.84 512.7 53.37 502.1 65.33L396.4 195.6C316.2 212.1 255.1 283 255.1 368C255.1 395.4 262.3 421.4 273.5 444.5C271.8 443.7 270.3 442.7 268.8 441.6L204.8 393.6C196.7 387.6 192 378.1 192 368V288.9L9.042 65.33C-.745 53.37-2.765 36.84 3.854 22.87H3.853zM287.1 368C287.1 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 287.1 447.5 287.1 368zM491.3 331.3C497.6 325.1 497.6 314.9 491.3 308.7C485.1 302.4 474.9 302.4 468.7 308.7L432 345.4L395.3 308.7C389.1 302.4 378.9 302.4 372.7 308.7C366.4 314.9 366.4 325.1 372.7 331.3L409.4 368L372.7 404.7C366.4 410.9 366.4 421.1 372.7 427.3C378.9 433.6 389.1 433.6 395.3 427.3L432 390.6L468.7 427.3C474.9 433.6 485.1 433.6 491.3 427.3C497.6 421.1 497.6 410.9 491.3 404.7L454.6 368L491.3 331.3z"], + "fingerprint": [512, 512, [], "f577", "M256.1 246c-13.25 0-23.1 10.75-23.1 23.1c1.125 72.25-8.124 141.9-27.75 211.5C201.7 491.3 206.6 512 227.5 512c10.5 0 20.12-6.875 23.12-17.5c13.5-47.87 30.1-125.4 29.5-224.5C280.1 256.8 269.4 246 256.1 246zM255.2 164.3C193.1 164.1 151.2 211.3 152.1 265.4c.75 47.87-3.75 95.87-13.37 142.5c-2.75 12.1 5.624 25.62 18.62 28.37c12.1 2.625 25.62-5.625 28.37-18.62c10.37-50.12 15.12-101.6 14.37-152.1C199.7 238.6 219.1 212.1 254.5 212.3c31.37 .5 57.24 25.37 57.62 55.5c.8749 47.1-2.75 96.25-10.62 143.5c-2.125 12.1 6.749 25.37 19.87 27.62c19.87 3.25 26.75-15.12 27.5-19.87c8.249-49.1 12.12-101.1 11.25-151.1C359.2 211.1 312.2 165.1 255.2 164.3zM144.6 144.5C134.2 136.1 119.2 137.6 110.7 147.9C85.25 179.4 71.38 219.3 72 259.9c.6249 37.62-2.375 75.37-8.999 112.1c-2.375 12.1 6.249 25.5 19.25 27.87c20.12 3.5 27.12-14.87 27.1-19.37c7.124-39.87 10.5-80.62 9.749-121.4C119.6 229.3 129.2 201.3 147.1 178.3C156.4 167.9 154.9 152.9 144.6 144.5zM253.1 82.14C238.6 81.77 223.1 83.52 208.2 87.14c-12.87 2.1-20.87 15.1-17.87 28.87c3.125 12.87 15.1 20.75 28.1 17.75C230.4 131.3 241.7 130 253.4 130.1c75.37 1.125 137.6 61.5 138.9 134.6c.5 37.87-1.375 75.1-5.624 113.6c-1.5 13.12 7.999 24.1 21.12 26.5c16.75 1.1 25.5-11.87 26.5-21.12c4.625-39.75 6.624-79.75 5.999-119.7C438.6 165.3 355.1 83.64 253.1 82.14zM506.1 203.6c-2.875-12.1-15.51-21.25-28.63-18.38c-12.1 2.875-21.12 15.75-18.25 28.62c4.75 21.5 4.875 37.5 4.75 61.62c-.1249 13.25 10.5 24.12 23.75 24.25c13.12 0 24.12-10.62 24.25-23.87C512.1 253.8 512.3 231.8 506.1 203.6zM465.1 112.9c-48.75-69.37-128.4-111.7-213.3-112.9c-69.74-.875-134.2 24.84-182.2 72.96c-46.37 46.37-71.34 108-70.34 173.6l-.125 21.5C-.3651 281.4 10.01 292.4 23.26 292.8C23.51 292.9 23.76 292.9 24.01 292.9c12.1 0 23.62-10.37 23.1-23.37l.125-23.62C47.38 193.4 67.25 144 104.4 106.9c38.87-38.75 91.37-59.62 147.7-58.87c69.37 .1 134.7 35.62 174.6 92.37c7.624 10.87 22.5 13.5 33.37 5.875C470.1 138.6 473.6 123.8 465.1 112.9z"], + "fire": [448, 512, [128293], "f06d", "M323.5 51.25C302.8 70.5 284 90.75 267.4 111.1C240.1 73.62 206.2 35.5 168 0C69.75 91.12 0 210 0 281.6C0 408.9 100.2 512 224 512s224-103.1 224-230.4C448 228.4 396 118.5 323.5 51.25zM304.1 391.9C282.4 407 255.8 416 226.9 416c-72.13 0-130.9-47.73-130.9-125.2c0-38.63 24.24-72.64 72.74-130.8c7 8 98.88 125.4 98.88 125.4l58.63-66.88c4.125 6.75 7.867 13.52 11.24 19.9C364.9 290.6 353.4 357.4 304.1 391.9z"], + "fire-burner": [640, 512, [], "e4f1", "M349 61.49C356.9 51.61 365.8 40.76 375.5 31.99C381.1 26.87 389.9 26.89 395.5 32.03C420.2 54.71 441.1 84.69 455.8 113.2C470.4 141.2 480 169.9 480 190.1C480 277.9 408.7 352 320 352C230.3 352 160 277.8 160 190.1C160 163.7 172.7 131.5 192.4 99.52C212.4 67.16 240.5 33.43 273.8 3.734C279.4-1.26 287.1-1.242 293.5 3.773C313.3 21.55 331.8 40.74 349 61.49V61.49zM390 176.1C388 172.1 386 168.1 383 164.1L347 206.1C347 206.1 289 132.1 285 127.1C255 164.1 240 185.1 240 209.1C240 258.1 276 287.1 320.1 287.1C339 287.1 355 282.1 370 272.1C400 251.1 408 209.1 390 176.1zM32 287.1C32 270.3 46.33 255.1 64 255.1H96C113.7 255.1 128 270.3 128 287.1C128 305.7 113.7 319.1 96 319.1V384H544V319.1C526.3 319.1 512 305.7 512 287.1C512 270.3 526.3 255.1 544 255.1H576C593.7 255.1 608 270.3 608 287.1V384C625.7 384 640 398.3 640 416V480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480V416C0 398.3 14.33 384 32 384V287.1zM320 480C337.7 480 352 465.7 352 448C352 430.3 337.7 416 320 416C302.3 416 288 430.3 288 448C288 465.7 302.3 480 320 480zM448 416C430.3 416 416 430.3 416 448C416 465.7 430.3 480 448 480C465.7 480 480 465.7 480 448C480 430.3 465.7 416 448 416zM192 480C209.7 480 224 465.7 224 448C224 430.3 209.7 416 192 416C174.3 416 160 430.3 160 448C160 465.7 174.3 480 192 480z"], + "fire-extinguisher": [512, 512, [129519], "f134", "M64 480c0 17.67 14.33 32 31.1 32H256c17.67 0 31.1-14.33 31.1-32l-.0001-32H64L64 480zM503.4 5.56c-5.453-4.531-12.61-6.406-19.67-5.188l-175.1 32c-11.41 2.094-19.7 12.03-19.7 23.63L224 56L224 32c0-17.67-14.33-32-31.1-32H160C142.3 0 128 14.33 128 32l.0002 26.81C69.59 69.32 20.5 110.6 1.235 168.4C-2.952 181 3.845 194.6 16.41 198.8C18.94 199.6 21.48 200 24 200c10.05 0 19.42-6.344 22.77-16.41C59.45 145.5 90.47 117.8 128 108L128 139.2C90.27 157.2 64 195.4 64 240L64 416h223.1l.0001-176c0-44.6-26.27-82.79-63.1-100.8L224 104l63.1-.002c0 11.59 8.297 21.53 19.7 23.62l175.1 31.1c1.438 .25 2.875 .375 4.297 .375c5.578 0 11.03-1.938 15.37-5.562c5.469-4.562 8.625-11.31 8.625-18.44V23.1C511.1 16.87 508.8 10.12 503.4 5.56zM176 96C167.2 96 160 88.84 160 80S167.2 64 176 64s15.1 7.164 15.1 16S184.8 96 176 96z"], + "fire-flame-curved": [384, 512, ["fire-alt"], "f7e4", "M384 319.1C384 425.9 297.9 512 192 512s-192-86.13-192-192c0-58.67 27.82-106.8 54.57-134.1C69.54 169.3 96 179.8 96 201.5v85.5c0 35.17 27.97 64.5 63.16 64.94C194.9 352.5 224 323.6 224 288c0-88-175.1-96.12-52.15-277.2c13.5-19.72 44.15-10.77 44.15 13.03C215.1 127 384 149.7 384 319.1z"], + "fire-flame-simple": [384, 512, ["burn"], "f46a", "M203.1 4.365c-6.177-5.82-16.06-5.819-22.23-.0007C74.52 104.5 0 234.1 0 312C0 437.9 79 512 192 512s192-74.05 192-200C384 233.9 309 104.2 203.1 4.365zM192 432c-56.5 0-96-37.76-96-91.74c0-12.47 4.207-55.32 83.87-143c6.314-6.953 17.95-6.953 24.26 0C283.8 284.9 288 327.8 288 340.3C288 394.2 248.5 432 192 432z"], + "fish": [576, 512, [128031], "f578", "M180.5 141.5C219.7 108.5 272.6 80 336 80C399.4 80 452.3 108.5 491.5 141.5C530.5 174.5 558.3 213.1 572.4 241.3C577.2 250.5 577.2 261.5 572.4 270.7C558.3 298 530.5 337.5 491.5 370.5C452.3 403.5 399.4 432 336 432C272.6 432 219.7 403.5 180.5 370.5C164.3 356.7 150 341.9 137.8 327.3L48.12 379.6C35.61 386.9 19.76 384.9 9.474 374.7C-.8133 364.5-2.97 348.7 4.216 336.1L50 256L4.216 175.9C-2.97 163.3-.8133 147.5 9.474 137.3C19.76 127.1 35.61 125.1 48.12 132.4L137.8 184.7C150 170.1 164.3 155.3 180.5 141.5L180.5 141.5zM416 224C398.3 224 384 238.3 384 256C384 273.7 398.3 288 416 288C433.7 288 448 273.7 448 256C448 238.3 433.7 224 416 224z"], + "fish-fins": [576, 512, [], "e4f2", "M352.8 96.61C407.7 100.6 454.3 123.6 490 150.4C529.2 179.8 557.3 215.1 571.7 239.9C577.4 249.9 577.4 262.1 571.7 272.1C557.3 296.9 529.2 332.2 490 361.6C454.3 388.4 407.7 411.4 352.8 415.4L275.2 473.6C264.6 481.6 250.2 482.1 238.9 475.1C227.7 468 222 454.7 224.6 441.7L234.3 393.1C214.1 384.1 197.5 373.2 181.1 361.6C166.6 350.1 152.1 337.7 141.2 325.3L48.12 379.6C35.61 386.9 19.76 384.9 9.475 374.7C-.8124 364.5-2.969 348.7 4.217 336.1L50 256L4.217 175.9C-2.969 163.3-.8124 147.5 9.475 137.3C19.76 127.1 35.61 125.1 48.12 132.4L141.2 186.7C152.1 174.3 166.6 161.9 181.1 150.4C197.5 138.8 214.1 127.9 234.3 118.9L224.6 70.28C222 57.27 227.7 44 238.9 36.93C250.2 29.85 264.6 30.44 275.2 38.4L352.8 96.61zM416 224C398.3 224 384 238.3 384 256C384 273.7 398.3 288 416 288C433.7 288 448 273.7 448 256C448 238.3 433.7 224 416 224z"], + "flag": [512, 512, [61725, 127988], "f024", "M64 496C64 504.8 56.75 512 48 512h-32C7.25 512 0 504.8 0 496V32c0-17.75 14.25-32 32-32s32 14.25 32 32V496zM476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87C160.9 .3055 131.6 4.867 96 15.75v350.5c32-9.984 59.87-14.1 84.85-14.1c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0z"], + "flag-checkered": [576, 512, [127937], "f11e", "M509.5 .0234c-6.145 0-12.53 1.344-18.64 4.227c-44.11 20.86-76.81 27.94-104.1 27.94c-57.89 0-91.53-31.86-158.2-31.87C195 .3203 153.3 8.324 96 32.38V32c0-17.75-14.25-32-32-32S32 14.25 32 32L31.96 496c0 8.75 7.25 16 16 16H80C88.75 512 96 504.8 96 496V384c51.74-23.86 92.71-31.82 128.3-31.82c71.09 0 120.6 31.78 191.7 31.78c30.81 0 65.67-5.969 108.1-23.09C536.3 355.9 544 344.4 544 332.1V30.74C544 12.01 527.8 .0234 509.5 .0234zM480 141.8c-31.99 14.04-57.81 20.59-80 22.49v80.21c25.44-1.477 51.59-6.953 80-17.34V308.9c-22.83 7.441-43.93 11.08-64.03 11.08c-5.447 0-10.71-.4258-15.97-.8906V244.5c-4.436 .2578-8.893 .6523-13.29 .6523c-25.82 0-47.35-4.547-66.71-10.08v66.91c-23.81-6.055-50.17-11.41-80-12.98V213.1C236.2 213.7 232.5 213.3 228.5 213.3C208.8 213.3 185.1 217.7 160 225.1v69.1C139.2 299.4 117.9 305.8 96 314.4V250.7l24.77-10.39C134.8 234.5 147.6 229.9 160 225.1V143.4C140.9 148.5 120.1 155.2 96 165.3V101.8l24.77-10.39C134.8 85.52 147.6 80.97 160 77.02v66.41c26.39-6.953 49.09-10.17 68.48-10.16c4.072 0 7.676 .4453 11.52 .668V65.03C258.6 66.6 274.4 71.55 293.2 77.83C301.7 80.63 310.7 83.45 320 86.12v66.07c20.79 6.84 41.45 12.96 66.71 12.96c4.207 0 8.781-.4766 13.29-.8594V95.54c25.44-1.477 51.59-6.953 80-17.34V141.8zM240 133.9v80.04c18.61 1.57 34.37 6.523 53.23 12.8C301.7 229.6 310.7 232.4 320 235.1V152.2C296.1 144.3 271.6 135.8 240 133.9z"], + "flag-usa": [576, 512, [], "f74d", "M544 61.63V30.74c0-25-28.81-37.99-53.17-26.49C306.3 91.5 321.5-62.25 96 32.38V32c0-17.75-14.25-32-32-32S32 14.25 32 32L31.96 496c0 8.75 7.25 16 15.1 16H80C88.75 512 96 504.8 96 496V384c200-92.25 238.8 53.25 428.1-23.12C536.3 355.9 544 344.4 544 332.1V296.1c-46.98 17.25-86.42 24.12-120.8 24.12c-40.25-.125-74.17-8.5-107.7-16.62C254 288.5 195.3 274.8 96 314.8v-34.5c102-37.63 166.5-22.75 228.4-7.625C385.1 287.8 444.7 301.4 544 261.5V200c-46.98 17.25-86.42 24.12-120.8 24.12c-40.25 0-74.17-8.375-107.7-16.5C254 192.5 195.3 178.8 96 218.8v-34.5c102-37.5 166.5-22.62 228.4-7.5C385.1 191.8 444.7 205.4 544 165.6V96.75c-57.75 23.5-100.4 31.38-135.8 31.38c-62.96 0-118.9-27.09-120.2-27.38V67.5C331.9 78.94 390.1 128.3 544 61.63zM160 136c-8.75 0-16-7.125-16-16s7.25-16 16-16s16 7.125 16 16S168.8 136 160 136zM160 72c-8.75 0-16-7-16-16c0-8.75 7.25-16 16-16s16 7.125 16 16S168.8 72 160 72zM224 128C215.3 128 208 120.9 208 112S215.3 96 224 96s16 7 16 16C240 120.8 232.8 128 224 128zM224 64.25c-8.75 0-16-7-16-16c0-8.75 7.25-16 16-16s16 7.125 16 16S232.8 64.25 224 64.25z"], + "flask": [448, 512, [], "f0c3", "M437.2 403.5L319.1 215L319.1 64h7.1c13.25 0 23.1-10.75 23.1-24l-.0002-16c0-13.25-10.75-24-23.1-24H120C106.8 0 96.01 10.75 96.01 24l-.0002 16c0 13.25 10.75 24 23.1 24h7.1L128 215l-117.2 188.5C-18.48 450.6 15.27 512 70.89 512h306.2C432.7 512 466.5 450.5 437.2 403.5zM137.1 320l48.15-77.63C189.8 237.3 191.9 230.8 191.9 224l.0651-160h63.99l-.06 160c0 6.875 2.25 13.25 5.875 18.38L309.9 320H137.1z"], + "flask-vial": [640, 512, [], "e4f3", "M160 442.5C149.1 446.1 139.2 448 128 448C74.98 448 32 405 32 352V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H224C241.7 0 256 14.33 256 32C256 49.67 241.7 64 224 64V309.9L175 389.4C165.2 405.4 160 423.8 160 442.5zM96 160H160V64H96V160zM512 0C529.7 0 544 14.33 544 32C544 49.67 529.7 64 512 64V214.9L629.7 406.2C636.4 417.2 640 429.7 640 442.6C640 480.9 608.9 512 570.6 512H261.4C223.1 512 191.1 480.9 191.1 442.6C191.1 429.7 195.6 417.2 202.3 406.2L319.1 214.9V64C302.3 64 287.1 49.67 287.1 32C287.1 14.33 302.3 0 319.1 0L512 0zM384 64V224C384 229.9 382.4 235.7 379.3 240.8L330.5 320H501.5L452.7 240.8C449.6 235.7 448 229.9 448 224V64H384z"], + "floppy-disk": [448, 512, [128426, 128190, "save"], "f0c7", "M433.1 129.1l-83.9-83.9C342.3 38.32 327.1 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 152.9 441.7 137.7 433.1 129.1zM224 416c-35.34 0-64-28.66-64-64s28.66-64 64-64s64 28.66 64 64S259.3 416 224 416zM320 208C320 216.8 312.8 224 304 224h-224C71.16 224 64 216.8 64 208v-96C64 103.2 71.16 96 80 96h224C312.8 96 320 103.2 320 112V208z"], + "florin-sign": [384, 512, [], "e184", "M352 32C369.7 32 384 46.33 384 64C384 81.67 369.7 96 352 96H314.7C301.7 96 290.1 103.8 285.1 115.7L240 224H320C337.7 224 352 238.3 352 256C352 273.7 337.7 288 320 288H213.3L157.9 420.9C143 456.7 108.1 480 69.33 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H69.33C82.25 416 93.9 408.2 98.87 396.3L144 288H64C46.33 288 32 273.7 32 256C32 238.3 46.33 224 64 224H170.7L226.1 91.08C240.1 55.3 275.9 32 314.7 32H352z"], + "folder": [512, 512, [128447, 61716, 128193, "folder-blank"], "f07b", "M512 144v288c0 26.5-21.5 48-48 48h-416C21.5 480 0 458.5 0 432v-352C0 53.5 21.5 32 48 32h160l64 64h192C490.5 96 512 117.5 512 144z"], + "folder-closed": [512, 512, [], "e185", "M464 96h-192l-64-64h-160C21.5 32 0 53.5 0 80V160h512V144C512 117.5 490.5 96 464 96zM0 432C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48V192H0V432z"], + "folder-minus": [512, 512, [], "f65d", "M464 96h-192l-64-64h-160C21.5 32 0 53.5 0 80v352C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48v-288C512 117.5 490.5 96 464 96zM336 311.1H175.1C162.7 311.1 152 301.3 152 288c0-13.26 10.74-23.1 23.1-23.1h160C349.3 264 360 274.7 360 288S349.3 311.1 336 311.1z"], + "folder-open": [576, 512, [128449, 61717, 128194], "f07c", "M147.8 192H480V144C480 117.5 458.5 96 432 96h-160l-64-64h-160C21.49 32 0 53.49 0 80v328.4l90.54-181.1C101.4 205.6 123.4 192 147.8 192zM543.1 224H147.8C135.7 224 124.6 230.8 119.2 241.7L0 480h447.1c12.12 0 23.2-6.852 28.62-17.69l96-192C583.2 249 567.7 224 543.1 224z"], + "folder-plus": [512, 512, [], "f65e", "M464 96h-192l-64-64h-160C21.5 32 0 53.5 0 80v352C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48v-288C512 117.5 490.5 96 464 96zM336 311.1h-56v56C279.1 381.3 269.3 392 256 392c-13.27 0-23.1-10.74-23.1-23.1V311.1H175.1C162.7 311.1 152 301.3 152 288c0-13.26 10.74-23.1 23.1-23.1h56V207.1C232 194.7 242.7 184 256 184s23.1 10.74 23.1 23.1V264h56C349.3 264 360 274.7 360 288S349.3 311.1 336 311.1z"], + "folder-tree": [576, 512, [], "f802", "M544 32h-112l-32-32H320c-17.62 0-32 14.38-32 32v160c0 17.62 14.38 32 32 32h224c17.62 0 32-14.38 32-32V64C576 46.38 561.6 32 544 32zM544 320h-112l-32-32H320c-17.62 0-32 14.38-32 32v160c0 17.62 14.38 32 32 32h224c17.62 0 32-14.38 32-32v-128C576 334.4 561.6 320 544 320zM64 16C64 7.125 56.88 0 48 0h-32C7.125 0 0 7.125 0 16V416c0 17.62 14.38 32 32 32h224v-64H64V160h192V96H64V16z"], + "font": [448, 512, [], "f031", "M416 416h-25.81L253.1 52.76c-4.688-12.47-16.57-20.76-29.91-20.76s-25.34 8.289-30.02 20.76L57.81 416H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h96c17.67 0 32-14.31 32-32s-14.33-32-32-32H126.2l17.1-48h159.6l17.1 48H320c-17.67 0-32 14.31-32 32s14.33 32 32 32h96c17.67 0 32-14.31 32-32S433.7 416 416 416zM168.2 304L224 155.1l55.82 148.9H168.2z"], + "font-awesome": [448, 512, [62694, 62501, "font-awesome-flag", "font-awesome-logo-full"], "f2b4", "M448 48V384c-63.09 22.54-82.34 32-119.5 32c-62.82 0-86.6-32-149.3-32C158.6 384 142.6 387.6 128 392.2v-64C142.6 323.6 158.6 320 179.2 320c62.73 0 86.51 32 149.3 32C348.9 352 364.1 349 384 342.7v-208C364.1 141 348.9 144 328.5 144c-62.82 0-86.6-32-149.3-32C128.4 112 104.3 132.6 64 140.7v307.3C64 465.7 49.67 480 32 480S0 465.7 0 448V63.1C0 46.33 14.33 32 31.1 32S64 46.33 64 63.1V76.66C104.3 68.63 128.4 48 179.2 48c62.73 0 86.51 32 149.3 32C365.7 80 384.9 70.54 448 48z"], + "football": [512, 512, [127944, "football-ball"], "f44e", "M16.17 337.5c0 44.98 7.565 83.54 13.98 107.9C35.22 464.3 50.46 496 174.9 496c9.566 0 19.59-.4707 29.84-1.271L17.33 307.3C16.53 317.6 16.17 327.7 16.17 337.5zM495.8 174.5c0-44.98-7.565-83.53-13.98-107.9c-4.688-17.54-18.34-31.23-36.04-35.95C435.5 27.91 392.9 16 337 16c-9.564 0-19.59 .4707-29.84 1.271l187.5 187.5C495.5 194.4 495.8 184.3 495.8 174.5zM26.77 248.8l236.3 236.3c142-36.1 203.9-150.4 222.2-221.1L248.9 26.87C106.9 62.96 45.07 177.2 26.77 248.8zM256 335.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L164.7 283.3C161.6 280.2 160 276.1 160 271.1c0-8.529 6.865-16 16-16c4.095 0 8.189 1.562 11.31 4.688l64.01 64C254.4 327.8 256 331.9 256 335.1zM304 287.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L212.7 235.3C209.6 232.2 208 228.1 208 223.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01C302.5 279.8 304 283.9 304 287.1zM256 175.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01c3.125 3.125 4.688 7.219 4.688 11.31c0 9.133-7.468 16-16 16c-4.094 0-8.189-1.562-11.31-4.688l-64.01-64.01C257.6 184.2 256 180.1 256 175.1z"], + "forward": [512, 512, [9193], "f04e", "M52.51 440.6l171.5-142.9V214.3L52.51 71.41C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6zM308.5 440.6l192-159.1c15.25-12.87 15.25-36.37 0-49.24l-192-159.1c-20.63-17.12-52.51-2.749-52.51 24.62v319.9C256 443.3 287.9 457.7 308.5 440.6z"], + "forward-fast": [512, 512, [9197, "fast-forward"], "f050", "M512 96.03v319.9c0 17.67-14.33 31.1-31.1 31.1C462.3 447.1 448 433.6 448 415.1V284.1l-171.5 156.5C255.9 457.7 224 443.3 224 415.1V284.1l-171.5 156.5C31.88 457.7 0 443.3 0 415.1V96.03c0-27.37 31.88-41.74 52.5-24.62L224 226.8V96.03c0-27.37 31.88-41.74 52.5-24.62L448 226.8V96.03c0-17.67 14.33-31.1 31.1-31.1C497.7 64.03 512 78.36 512 96.03z"], + "forward-step": [320, 512, ["step-forward"], "f051", "M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"], + "franc-sign": [320, 512, [], "e18f", "M288 32C305.7 32 320 46.33 320 64C320 81.67 305.7 96 288 96H112V192H256C273.7 192 288 206.3 288 224C288 241.7 273.7 256 256 256H112V320H192C209.7 320 224 334.3 224 352C224 369.7 209.7 384 192 384H112V448C112 465.7 97.67 480 80 480C62.33 480 48 465.7 48 448V384H32C14.33 384 0 369.7 0 352C0 334.3 14.33 320 32 320H48V64C48 46.33 62.33 32 80 32H288z"], + "frog": [576, 512, [], "f52e", "M528 416h-32.07l-90.32-96.34l140.6-79.03c18.38-10.25 29.75-29.62 29.75-50.62c0-21.5-11.75-41-30.5-51.25c-40.5-22.25-99.07-41.43-99.07-41.43C439.6 60.19 407.3 32 368 32s-71.77 28.25-78.52 65.5C126.7 113-.4999 250.1 .0001 417C.1251 451.9 29.13 480 64 480h304c8.875 0 16-7.125 16-16c0-26.51-21.49-48-47.1-48H284.3l23.93-32.38c24.25-36.13 10.38-88.25-33.63-106.5C250.8 267.1 223 272.4 202.4 288L169.6 312.5c-7.125 5.375-17.12 4-22.38-3.125c-5.375-7.125-4-17.12 3.125-22.38l34.75-26.12c36.87-27.62 88.37-27.62 125.1 0c10.88 8.125 45.88 39 40.88 93.13L469.6 480h90.38c8.875 0 16-7.125 16-16C576 437.5 554.5 416 528 416zM344 112c0-13.25 10.75-24 24-24s24 10.75 24 24s-10.75 24-24 24S344 125.3 344 112z"], + "futbol": [512, 512, [9917, "futbol-ball", "soccer-ball"], "f1e3", "M177.1 228.6L207.9 320h96.5l29.62-91.38L256 172.1L177.1 228.6zM255.1 0C114.6 0 .0001 114.6 .0001 256S114.6 512 256 512s255.1-114.6 255.1-255.1S397.4 0 255.1 0zM416.6 360.9l-85.4-1.297l-25.15 81.59C290.1 445.5 273.4 448 256 448s-34.09-2.523-50.09-6.859L180.8 359.6l-85.4 1.297c-18.12-27.66-29.15-60.27-30.88-95.31L134.3 216.4L106.6 135.6c21.16-26.21 49.09-46.61 81.06-58.84L256 128l68.29-51.22c31.98 12.23 59.9 32.64 81.06 58.84L377.7 216.4l69.78 49.1C445.8 300.6 434.8 333.2 416.6 360.9z"], + "g": [448, 512, [103], "47", "M448 256c0 143.4-118.6 222.3-225 222.3c-132.3 0-222.1-106.2-222.1-222.4c0-124.4 100.9-223.9 223.1-223.9c84.84 0 167.8 55.28 167.8 88.2c0 18.28-14.95 32-32 32c-31.04 0-46.79-56.16-135.8-56.16c-87.66 0-159.1 70.66-159.1 159.8c0 34.81 27.19 158.8 159.1 158.8c79.45 0 144.6-55.1 158.1-126.7h-134.1c-17.67 0-32-14.33-32-32s14.33-31.1 32-31.1H416C433.7 224 448 238.3 448 256z"], + "gamepad": [640, 512, [], "f11b", "M448 64H192C85.96 64 0 149.1 0 256s85.96 192 192 192h256c106 0 192-85.96 192-192S554 64 448 64zM247.1 280h-32v32c0 13.2-10.78 24-23.98 24c-13.2 0-24.02-10.8-24.02-24v-32L136 279.1C122.8 279.1 111.1 269.2 111.1 256c0-13.2 10.85-24.01 24.05-24.01L167.1 232v-32c0-13.2 10.82-24 24.02-24c13.2 0 23.98 10.8 23.98 24v32h32c13.2 0 24.02 10.8 24.02 24C271.1 269.2 261.2 280 247.1 280zM431.1 344c-22.12 0-39.1-17.87-39.1-39.1s17.87-40 39.1-40s39.1 17.88 39.1 40S454.1 344 431.1 344zM495.1 248c-22.12 0-39.1-17.87-39.1-39.1s17.87-40 39.1-40c22.12 0 39.1 17.88 39.1 40S518.1 248 495.1 248z"], + "gas-pump": [512, 512, [9981], "f52f", "M32 64C32 28.65 60.65 0 96 0H256C291.3 0 320 28.65 320 64V256H328C376.6 256 416 295.4 416 344V376C416 389.3 426.7 400 440 400C453.3 400 464 389.3 464 376V221.1C436.4 214.9 416 189.8 416 160V96L384 64C375.2 55.16 375.2 40.84 384 32C392.8 23.16 407.2 23.16 416 32L493.3 109.3C505.3 121.3 512 137.5 512 154.5V376C512 415.8 479.8 448 440 448C400.2 448 368 415.8 368 376V344C368 321.9 350.1 303.1 328 303.1H320V448C337.7 448 352 462.3 352 480C352 497.7 337.7 512 320 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V64zM96 176C96 184.8 103.2 192 112 192H240C248.8 192 256 184.8 256 176V80C256 71.16 248.8 64 240 64H112C103.2 64 96 71.16 96 80V176z"], + "gauge": [512, 512, ["dashboard", "gauge-med", "tachometer-alt-average"], "f624", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM280 292.7V88C280 74.75 269.3 64 256 64C242.7 64 232 74.75 232 88V292.7C208.5 302.1 192 325.1 192 352C192 387.3 220.7 416 256 416C291.3 416 320 387.3 320 352C320 325.1 303.5 302.1 280 292.7zM144 176C161.7 176 176 161.7 176 144C176 126.3 161.7 112 144 112C126.3 112 112 126.3 112 144C112 161.7 126.3 176 144 176zM96 224C78.33 224 64 238.3 64 256C64 273.7 78.33 288 96 288C113.7 288 128 273.7 128 256C128 238.3 113.7 224 96 224zM416 288C433.7 288 448 273.7 448 256C448 238.3 433.7 224 416 224C398.3 224 384 238.3 384 256C384 273.7 398.3 288 416 288zM368 112C350.3 112 336 126.3 336 144C336 161.7 350.3 176 368 176C385.7 176 400 161.7 400 144C400 126.3 385.7 112 368 112z"], + "gauge-high": [512, 512, [62461, "tachometer-alt", "tachometer-alt-fast"], "f625", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 64C238.3 64 224 78.33 224 96C224 113.7 238.3 128 256 128C273.7 128 288 113.7 288 96C288 78.33 273.7 64 256 64zM256 416C291.3 416 320 387.3 320 352C320 334.6 313.1 318.9 301.9 307.4L365.1 161.7C371.3 149.5 365.8 135.4 353.7 130C341.5 124.7 327.4 130.2 322 142.3L257.9 288C257.3 288 256.6 287.1 256 287.1C220.7 287.1 192 316.7 192 352C192 387.3 220.7 416 256 416V416zM144 112C126.3 112 112 126.3 112 144C112 161.7 126.3 176 144 176C161.7 176 176 161.7 176 144C176 126.3 161.7 112 144 112zM96 288C113.7 288 128 273.7 128 256C128 238.3 113.7 224 96 224C78.33 224 64 238.3 64 256C64 273.7 78.33 288 96 288zM416 224C398.3 224 384 238.3 384 256C384 273.7 398.3 288 416 288C433.7 288 448 273.7 448 256C448 238.3 433.7 224 416 224z"], + "gauge-simple": [512, 512, ["gauge-simple-med", "tachometer-average"], "f629", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM280 292.7V88C280 74.75 269.3 64 256 64C242.7 64 232 74.75 232 88V292.7C208.5 302.1 192 325.1 192 352C192 387.3 220.7 416 256 416C291.3 416 320 387.3 320 352C320 325.1 303.5 302.1 280 292.7z"], + "gauge-simple-high": [512, 512, [61668, "tachometer", "tachometer-fast"], "f62a", "M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM304.7 310.4L381.3 163.1C387.4 151.3 382.8 136.8 371.1 130.7C359.3 124.6 344.8 129.2 338.7 140.9L262.1 288.3C260.1 288.1 258.1 287.1 255.1 287.1C220.7 287.1 191.1 316.7 191.1 352C191.1 387.3 220.7 416 255.1 416C291.3 416 320 387.3 320 352C320 336.1 314.2 321.6 304.7 310.4L304.7 310.4z"], + "gavel": [512, 512, ["legal"], "f0e3", "M512 216.3c0-6.125-2.344-12.25-7.031-16.93L482.3 176.8c-4.688-4.686-10.84-7.028-16.1-7.028s-12.31 2.343-16.1 7.028l-5.625 5.625L329.6 69.28l5.625-5.625c4.687-4.688 7.03-10.84 7.03-16.1s-2.343-12.31-7.03-16.1l-22.62-22.62C307.9 2.344 301.8 0 295.7 0s-12.15 2.344-16.84 7.031L154.2 131.5C149.6 136.2 147.2 142.3 147.2 148.5s2.344 12.25 7.031 16.94l22.62 22.62c4.688 4.688 10.84 7.031 16.1 7.031c6.156 0 12.31-2.344 16.1-7.031l5.625-5.625l113.1 113.1l-5.625 5.621c-4.688 4.688-7.031 10.84-7.031 16.1s2.344 12.31 7.031 16.1l22.62 22.62c4.688 4.688 10.81 7.031 16.94 7.031s12.25-2.344 16.94-7.031l124.5-124.6C509.7 228.5 512 222.5 512 216.3zM227.8 238.1L169.4 297.4C163.1 291.1 154.9 288 146.7 288S130.4 291.1 124.1 297.4l-114.7 114.7c-6.25 6.248-9.375 14.43-9.375 22.62s3.125 16.37 9.375 22.62l45.25 45.25C60.87 508.9 69.06 512 77.25 512s16.37-3.125 22.62-9.375l114.7-114.7c6.25-6.25 9.376-14.44 9.376-22.62c0-8.185-3.125-16.37-9.374-22.62l58.43-58.43L227.8 238.1z"], + "gear": [512, 512, [9881, "cog"], "f013", "M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"], + "gears": [640, 512, ["cogs"], "f085", "M286.3 155.1C287.4 161.9 288 168.9 288 175.1C288 183.1 287.4 190.1 286.3 196.9L308.5 216.7C315.5 223 318.4 232.1 314.7 241.7C312.4 246.1 309.9 252.2 307.1 257.2L304 262.6C300.1 267.6 297.7 272.4 294.2 277.1C288.5 284.7 278.5 287.2 269.5 284.2L241.2 274.9C230.5 283.8 218.3 290.9 205 295.9L198.1 324.9C197 334.2 189.8 341.6 180.4 342.8C173.7 343.6 166.9 344 160 344C153.1 344 146.3 343.6 139.6 342.8C130.2 341.6 122.1 334.2 121 324.9L114.1 295.9C101.7 290.9 89.5 283.8 78.75 274.9L50.53 284.2C41.54 287.2 31.52 284.7 25.82 277.1C22.28 272.4 18.98 267.5 15.94 262.5L12.92 257.2C10.13 252.2 7.592 247 5.324 241.7C1.62 232.1 4.458 223 11.52 216.7L33.7 196.9C32.58 190.1 31.1 183.1 31.1 175.1C31.1 168.9 32.58 161.9 33.7 155.1L11.52 135.3C4.458 128.1 1.62 119 5.324 110.3C7.592 104.1 10.13 99.79 12.91 94.76L15.95 89.51C18.98 84.46 22.28 79.58 25.82 74.89C31.52 67.34 41.54 64.83 50.53 67.79L78.75 77.09C89.5 68.25 101.7 61.13 114.1 56.15L121 27.08C122.1 17.8 130.2 10.37 139.6 9.231C146.3 8.418 153.1 8 160 8C166.9 8 173.7 8.418 180.4 9.23C189.8 10.37 197 17.8 198.1 27.08L205 56.15C218.3 61.13 230.5 68.25 241.2 77.09L269.5 67.79C278.5 64.83 288.5 67.34 294.2 74.89C297.7 79.56 300.1 84.42 304 89.44L307.1 94.83C309.9 99.84 312.4 105 314.7 110.3C318.4 119 315.5 128.1 308.5 135.3L286.3 155.1zM160 127.1C133.5 127.1 112 149.5 112 175.1C112 202.5 133.5 223.1 160 223.1C186.5 223.1 208 202.5 208 175.1C208 149.5 186.5 127.1 160 127.1zM484.9 478.3C478.1 479.4 471.1 480 464 480C456.9 480 449.9 479.4 443.1 478.3L423.3 500.5C416.1 507.5 407 510.4 398.3 506.7C393 504.4 387.8 501.9 382.8 499.1L377.4 496C372.4 492.1 367.6 489.7 362.9 486.2C355.3 480.5 352.8 470.5 355.8 461.5L365.1 433.2C356.2 422.5 349.1 410.3 344.1 397L315.1 390.1C305.8 389 298.4 381.8 297.2 372.4C296.4 365.7 296 358.9 296 352C296 345.1 296.4 338.3 297.2 331.6C298.4 322.2 305.8 314.1 315.1 313L344.1 306.1C349.1 293.7 356.2 281.5 365.1 270.8L355.8 242.5C352.8 233.5 355.3 223.5 362.9 217.8C367.6 214.3 372.5 210.1 377.5 207.9L382.8 204.9C387.8 202.1 392.1 199.6 398.3 197.3C407 193.6 416.1 196.5 423.3 203.5L443.1 225.7C449.9 224.6 456.9 224 464 224C471.1 224 478.1 224.6 484.9 225.7L504.7 203.5C511 196.5 520.1 193.6 529.7 197.3C535 199.6 540.2 202.1 545.2 204.9L550.5 207.9C555.5 210.1 560.4 214.3 565.1 217.8C572.7 223.5 575.2 233.5 572.2 242.5L562.9 270.8C571.8 281.5 578.9 293.7 583.9 306.1L612.9 313C622.2 314.1 629.6 322.2 630.8 331.6C631.6 338.3 632 345.1 632 352C632 358.9 631.6 365.7 630.8 372.4C629.6 381.8 622.2 389 612.9 390.1L583.9 397C578.9 410.3 571.8 422.5 562.9 433.2L572.2 461.5C575.2 470.5 572.7 480.5 565.1 486.2C560.4 489.7 555.6 492.1 550.6 496L545.2 499.1C540.2 501.9 534.1 504.4 529.7 506.7C520.1 510.4 511 507.5 504.7 500.5L484.9 478.3zM512 352C512 325.5 490.5 304 464 304C437.5 304 416 325.5 416 352C416 378.5 437.5 400 464 400C490.5 400 512 378.5 512 352z"], + "gem": [512, 512, [128142], "f3a5", "M378.7 32H133.3L256 182.7L378.7 32zM512 192l-107.4-141.3L289.6 192H512zM107.4 50.67L0 192h222.4L107.4 50.67zM244.3 474.9C247.3 478.2 251.6 480 256 480s8.653-1.828 11.67-5.062L510.6 224H1.365L244.3 474.9z"], + "genderless": [384, 512, [], "f22d", "M192 80C94.83 80 16 158.8 16 256c0 97.17 78.83 176 176 176s176-78.83 176-176C368 158.8 289.2 80 192 80zM192 352c-52.95 0-96-43.05-96-96c0-52.95 43.05-96 96-96s96 43.05 96 96C288 308.9 244.1 352 192 352z"], + "ghost": [384, 512, [128123], "f6e2", "M186.1 .1032c-105.1 3.126-186.1 94.75-186.1 199.9v264c0 14.25 17.3 21.38 27.3 11.25l24.95-18.5c6.625-5.001 16-4.001 21.5 2.25l43 48.31c6.25 6.251 16.37 6.251 22.62 0l40.62-45.81c6.375-7.251 17.62-7.251 24 0l40.63 45.81c6.25 6.251 16.38 6.251 22.62 0l43-48.31c5.5-6.251 14.88-7.251 21.5-2.25l24.95 18.5c10 10.13 27.3 3.002 27.3-11.25V192C384 83.98 294.9-3.147 186.1 .1032zM128 224c-17.62 0-31.1-14.38-31.1-32.01s14.38-32.01 31.1-32.01s32 14.38 32 32.01S145.6 224 128 224zM256 224c-17.62 0-32-14.38-32-32.01s14.38-32.01 32-32.01c17.62 0 32 14.38 32 32.01S273.6 224 256 224z"], + "gift": [512, 512, [127873], "f06b", "M152 0H154.2C186.1 0 215.7 16.91 231.9 44.45L256 85.46L280.1 44.45C296.3 16.91 325.9 0 357.8 0H360C408.6 0 448 39.4 448 88C448 102.4 444.5 115.1 438.4 128H480C497.7 128 512 142.3 512 160V224C512 241.7 497.7 256 480 256H32C14.33 256 0 241.7 0 224V160C0 142.3 14.33 128 32 128H73.6C67.46 115.1 64 102.4 64 88C64 39.4 103.4 0 152 0zM190.5 68.78C182.9 55.91 169.1 48 154.2 48H152C129.9 48 112 65.91 112 88C112 110.1 129.9 128 152 128H225.3L190.5 68.78zM360 48H357.8C342.9 48 329.1 55.91 321.5 68.78L286.7 128H360C382.1 128 400 110.1 400 88C400 65.91 382.1 48 360 48V48zM32 288H224V512H80C53.49 512 32 490.5 32 464V288zM288 512V288H480V464C480 490.5 458.5 512 432 512H288z"], + "gifts": [640, 512, [], "f79c", "M192.5 55.09L217.9 36.59C228.6 28.79 243.6 31.16 251.4 41.88C259.2 52.6 256.8 67.61 246.1 75.41L217.8 95.1H240C256.9 95.1 271.7 104.7 280.3 117.9C257.3 135.7 241.9 162.1 240.2 193.1C212.5 201 192 226.1 192 256V480C192 491.7 195.1 502.6 200.6 512H48C21.49 512 0 490.5 0 464V144C0 117.5 21.49 96 48 96H70.2L41.88 75.41C31.16 67.61 28.79 52.6 36.59 41.88C44.39 31.16 59.4 28.79 70.12 36.59L97.55 56.54L89.23 31.59C85.04 19.01 91.84 5.423 104.4 1.232C116.1-2.96 130.6 3.836 134.8 16.41L144.7 46.17L155.4 15.99C159.8 3.493 173.5-3.048 186 1.377C198.5 5.802 205 19.52 200.6 32.01L192.5 55.09zM344.2 127.1C366.6 127.1 387.8 138.4 401.5 156.2L432 195.8L462.5 156.2C476.2 138.4 497.4 127.1 519.8 127.1C559.5 127.1 592 160.1 592 199.1C592 208.4 590.6 216.5 587.9 223.1H592C618.5 223.1 640 245.5 640 271.1V352H448V255.1H416V352H224V271.1C224 245.5 245.5 223.1 272 223.1H276.1C273.4 216.5 272 208.4 272 199.1C272 160.1 304.5 127.1 344.2 127.1H344.2zM363.5 185.5C358.9 179.5 351.7 175.1 344.2 175.1C330.8 175.1 320 186.9 320 199.1C320 213.3 330.7 223.1 344 223.1H393.1L363.5 185.5zM519.8 175.1C512.3 175.1 505.1 179.5 500.5 185.5L470.9 223.1H520C533.3 223.1 544 213.3 544 199.1C544 186.9 533.2 175.1 519.8 175.1H519.8zM224 464V384H416V512H272C245.5 512 224 490.5 224 464zM448 512V384H640V464C640 490.5 618.5 512 592 512H448z"], + "glass-water": [384, 512, [], "e4f4", "M352 0C360.9 0 369.4 3.692 375.4 10.19C381.5 16.69 384.6 25.42 383.9 34.28L355.1 437.7C352.1 479.6 317.3 512 275.3 512H108.7C66.72 512 31.89 479.6 28.9 437.7L.0813 34.28C-.5517 25.42 2.527 16.69 8.58 10.19C14.63 3.692 23.12 0 32 0L352 0zM97.19 168.6C116.6 178.3 139.4 178.3 158.8 168.6C179.7 158.1 204.3 158.1 225.2 168.6C244.6 178.3 267.4 178.3 286.8 168.6L311 156.5L317.6 64H66.37L72.97 156.5L97.19 168.6z"], + "glass-water-droplet": [384, 512, [], "e4f5", "M256 196C256 229.1 227.3 256 192 256C156.7 256 128 229.1 128 196C128 171.1 161.7 125.9 180.2 102.5C186.3 94.77 197.7 94.77 203.8 102.5C222.3 125.9 256 171.1 256 196zM352 0C360.9 0 369.4 3.692 375.4 10.19C381.5 16.69 384.6 25.42 383.9 34.28L355.1 437.7C352.1 479.6 317.3 512 275.3 512H108.7C66.72 512 31.89 479.6 28.9 437.7L.0813 34.28C-.5517 25.42 2.527 16.69 8.58 10.19C14.63 3.692 23.12 0 32 0L352 0zM96 304C116.1 314.1 139.9 314.1 160 304C180.1 293.9 203.9 293.9 224 304C244.1 314.1 267.9 314.1 288 304L300.1 297.5L317.6 64H66.37L83.05 297.5L96 304z"], + "glasses": [576, 512, [], "f530", "M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"], + "globe": [512, 512, [127760], "f0ac", "M352 256C352 278.2 350.8 299.6 348.7 320H163.3C161.2 299.6 159.1 278.2 159.1 256C159.1 233.8 161.2 212.4 163.3 192H348.7C350.8 212.4 352 233.8 352 256zM503.9 192C509.2 212.5 512 233.9 512 256C512 278.1 509.2 299.5 503.9 320H380.8C382.9 299.4 384 277.1 384 256C384 234 382.9 212.6 380.8 192H503.9zM493.4 160H376.7C366.7 96.14 346.9 42.62 321.4 8.442C399.8 29.09 463.4 85.94 493.4 160zM344.3 160H167.7C173.8 123.6 183.2 91.38 194.7 65.35C205.2 41.74 216.9 24.61 228.2 13.81C239.4 3.178 248.7 0 256 0C263.3 0 272.6 3.178 283.8 13.81C295.1 24.61 306.8 41.74 317.3 65.35C328.8 91.38 338.2 123.6 344.3 160H344.3zM18.61 160C48.59 85.94 112.2 29.09 190.6 8.442C165.1 42.62 145.3 96.14 135.3 160H18.61zM131.2 192C129.1 212.6 127.1 234 127.1 256C127.1 277.1 129.1 299.4 131.2 320H8.065C2.8 299.5 0 278.1 0 256C0 233.9 2.8 212.5 8.065 192H131.2zM194.7 446.6C183.2 420.6 173.8 388.4 167.7 352H344.3C338.2 388.4 328.8 420.6 317.3 446.6C306.8 470.3 295.1 487.4 283.8 498.2C272.6 508.8 263.3 512 255.1 512C248.7 512 239.4 508.8 228.2 498.2C216.9 487.4 205.2 470.3 194.7 446.6H194.7zM190.6 503.6C112.2 482.9 48.59 426.1 18.61 352H135.3C145.3 415.9 165.1 469.4 190.6 503.6V503.6zM321.4 503.6C346.9 469.4 366.7 415.9 376.7 352H493.4C463.4 426.1 399.8 482.9 321.4 503.6V503.6z"], + "golf-ball-tee": [384, 512, ["golf-ball"], "f450", "M96 399.1c0 17.67 14.33 31.1 32 31.1s32 14.33 32 31.1v48h64v-48c0-17.67 14.33-31.1 32-31.1s32-14.33 32-31.1v-16H96V399.1zM192 .0001c-106 0-192 86.68-192 193.6c0 65.78 32.82 123.5 82.52 158.4h218.1C351.2 317.1 384 259.4 384 193.6C384 86.68 298 .0001 192 .0001zM179 205.1C183 206.9 187.4 208 192 208c17.53 0 31.74-14.33 31.74-31.1c0-4.688-1.111-9.062-2.904-13.07c11.03 5.016 18.77 16.08 18.77 29.07c0 17.67-14.21 31.1-31.74 31.1C194.1 224 184 216.2 179 205.1zM223.7 303.1c-12.88 0-23.86-7.812-28.83-18.93c3.977 1.809 8.316 2.93 12.96 2.93c17.53 0 31.74-14.33 31.74-31.1c0-4.688-1.109-9.062-2.904-13.07c11.03 5.016 18.77 16.08 18.77 29.07C255.5 289.7 241.3 303.1 223.7 303.1zM287.2 240c-12.88 0-23.86-7.812-28.83-18.93c3.977 1.809 8.316 2.93 12.96 2.93c17.53 0 31.73-14.33 31.73-31.1c0-4.688-1.109-9.062-2.902-13.07C311.2 183.9 318.9 195 318.9 208C318.9 225.7 304.7 240 287.2 240z"], + "gopuram": [512, 512, [], "f664", "M120 0C133.3 0 144 10.75 144 24V32H184V24C184 10.75 194.7 0 208 0C221.3 0 232 10.75 232 24V32H280V24C280 10.75 290.7 0 304 0C317.3 0 328 10.75 328 24V32H368V24C368 10.75 378.7 0 392 0C405.3 0 416 10.75 416 24V128C433.7 128 448 142.3 448 160V224C465.7 224 480 238.3 480 256V352C497.7 352 512 366.3 512 384V480C512 497.7 497.7 512 480 512H416V352H384V224H352V128H320V224H352V352H384V512H304V464C304 437.5 282.5 416 256 416C229.5 416 208 437.5 208 464V512H128V352H160V224H192V128H160V224H128V352H96V512H32C14.33 512 0 497.7 0 480V384C0 366.3 14.33 352 32 352V256C32 238.3 46.33 224 64 224V160C64 142.3 78.33 128 96 128V24C96 10.75 106.7 0 120 0zM256 272C238.3 272 224 286.3 224 304V352H288V304C288 286.3 273.7 272 256 272zM224 224H288V192C288 174.3 273.7 160 256 160C238.3 160 224 174.3 224 192V224z"], + "graduation-cap": [640, 512, [127891, "mortar-board"], "f19d", "M623.1 136.9l-282.7-101.2c-13.73-4.91-28.7-4.91-42.43 0L16.05 136.9C6.438 140.4 0 149.6 0 160s6.438 19.65 16.05 23.09L76.07 204.6c-11.89 15.8-20.26 34.16-24.55 53.95C40.05 263.4 32 274.8 32 288c0 9.953 4.814 18.49 11.94 24.36l-24.83 149C17.48 471.1 25 480 34.89 480H93.11c9.887 0 17.41-8.879 15.78-18.63l-24.83-149C91.19 306.5 96 297.1 96 288c0-10.29-5.174-19.03-12.72-24.89c4.252-17.76 12.88-33.82 24.94-47.03l190.6 68.23c13.73 4.91 28.7 4.91 42.43 0l282.7-101.2C633.6 179.6 640 170.4 640 160S633.6 140.4 623.1 136.9zM351.1 314.4C341.7 318.1 330.9 320 320 320c-10.92 0-21.69-1.867-32-5.555L142.8 262.5L128 405.3C128 446.6 213.1 480 320 480c105.1 0 192-33.4 192-74.67l-14.78-142.9L351.1 314.4z"], + "greater-than": [384, 512, [62769], "3e", "M32.03 448c-11.75 0-23.05-6.469-28.66-17.69c-7.906-15.81-1.5-35.03 14.31-42.94l262.8-131.4L17.69 124.6C1.875 116.7-4.531 97.51 3.375 81.7c7.891-15.81 27.06-22.19 42.94-14.31l320 160C377.2 232.8 384 243.9 384 256c0 12.12-6.844 23.19-17.69 28.63l-320 160C41.72 446.9 36.83 448 32.03 448z"], + "greater-than-equal": [448, 512, [], "f532", "M34.28 331.9c5.016 12.53 17.03 20.12 29.73 20.12c3.953 0 7.969-.7187 11.88-2.281l320-127.1C408 216.9 416 205.1 416 192s-7.969-24.85-20.11-29.72l-320-128c-16.47-6.594-35.05 1.406-41.61 17.84C27.72 68.55 35.7 87.17 52.11 93.73l245.7 98.28L52.11 290.3C35.7 296.9 27.72 315.5 34.28 331.9zM416 416H32c-17.67 0-32 14.31-32 31.99s14.33 32.01 32 32.01h384c17.67 0 32-14.32 32-32.01S433.7 416 416 416z"], + "grip": [448, 512, ["grip-horizontal"], "f58d", "M128 184C128 206.1 110.1 224 88 224H40C17.91 224 0 206.1 0 184V136C0 113.9 17.91 96 40 96H88C110.1 96 128 113.9 128 136V184zM128 376C128 398.1 110.1 416 88 416H40C17.91 416 0 398.1 0 376V328C0 305.9 17.91 288 40 288H88C110.1 288 128 305.9 128 328V376zM160 136C160 113.9 177.9 96 200 96H248C270.1 96 288 113.9 288 136V184C288 206.1 270.1 224 248 224H200C177.9 224 160 206.1 160 184V136zM288 376C288 398.1 270.1 416 248 416H200C177.9 416 160 398.1 160 376V328C160 305.9 177.9 288 200 288H248C270.1 288 288 305.9 288 328V376zM320 136C320 113.9 337.9 96 360 96H408C430.1 96 448 113.9 448 136V184C448 206.1 430.1 224 408 224H360C337.9 224 320 206.1 320 184V136zM448 376C448 398.1 430.1 416 408 416H360C337.9 416 320 398.1 320 376V328C320 305.9 337.9 288 360 288H408C430.1 288 448 305.9 448 328V376z"], + "grip-lines": [448, 512, [], "f7a4", "M416 288C433.7 288 448 302.3 448 320C448 337.7 433.7 352 416 352H32C14.33 352 0 337.7 0 320C0 302.3 14.33 288 32 288H416zM416 160C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224H32C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H416z"], + "grip-lines-vertical": [192, 512, [], "f7a5", "M64 448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V64C0 46.33 14.33 32 32 32C49.67 32 64 46.33 64 64V448zM192 448C192 465.7 177.7 480 160 480C142.3 480 128 465.7 128 448V64C128 46.33 142.3 32 160 32C177.7 32 192 46.33 192 64V448z"], + "grip-vertical": [320, 512, [], "f58e", "M88 352C110.1 352 128 369.9 128 392V440C128 462.1 110.1 480 88 480H40C17.91 480 0 462.1 0 440V392C0 369.9 17.91 352 40 352H88zM280 352C302.1 352 320 369.9 320 392V440C320 462.1 302.1 480 280 480H232C209.9 480 192 462.1 192 440V392C192 369.9 209.9 352 232 352H280zM40 320C17.91 320 0 302.1 0 280V232C0 209.9 17.91 192 40 192H88C110.1 192 128 209.9 128 232V280C128 302.1 110.1 320 88 320H40zM280 192C302.1 192 320 209.9 320 232V280C320 302.1 302.1 320 280 320H232C209.9 320 192 302.1 192 280V232C192 209.9 209.9 192 232 192H280zM40 160C17.91 160 0 142.1 0 120V72C0 49.91 17.91 32 40 32H88C110.1 32 128 49.91 128 72V120C128 142.1 110.1 160 88 160H40zM280 32C302.1 32 320 49.91 320 72V120C320 142.1 302.1 160 280 160H232C209.9 160 192 142.1 192 120V72C192 49.91 209.9 32 232 32H280z"], + "group-arrows-rotate": [512, 512, [], "e4f6", "M159.7 89.85C159.9 91.87 159.1 93.93 159.1 96C159.1 131.3 131.3 160 95.1 160C93.92 160 91.87 159.9 89.85 159.7C82.34 172.6 76.29 186.5 71.94 201.1C66.9 218.1 49.08 227.7 32.15 222.7C15.21 217.6 5.562 199.8 10.6 182.9C17.01 161.4 26.15 141 37.64 122.3C34.02 114.3 31.1 105.4 31.1 96C31.1 60.65 60.65 32 95.1 32C105.4 32 114.3 34.02 122.3 37.64C141 26.16 161.4 17.01 182.9 10.61C199.8 5.566 217.6 15.21 222.7 32.15C227.7 49.09 218.1 66.91 201.1 71.95C186.5 76.3 172.6 82.34 159.7 89.85V89.85zM389.7 37.64C397.7 34.02 406.6 32 415.1 32C451.3 32 479.1 60.65 479.1 96C479.1 105.4 477.1 114.3 474.4 122.3C485.8 141 494.1 161.4 501.4 182.9C506.4 199.8 496.8 217.6 479.8 222.7C462.9 227.7 445.1 218.1 440.1 201.1C435.7 186.5 429.7 172.6 422.1 159.7C420.1 159.9 418.1 160 416 160C380.7 160 352 131.3 352 96C352 93.93 352.1 91.87 352.3 89.85C339.4 82.34 325.5 76.3 310.9 71.95C293.9 66.91 284.3 49.09 289.3 32.15C294.4 15.21 312.2 5.566 329.1 10.61C350.6 17.01 370.1 26.16 389.7 37.64L389.7 37.64zM89.85 352.3C91.87 352.1 93.92 352 95.1 352C131.3 352 159.1 380.7 159.1 416C159.1 418.1 159.9 420.1 159.7 422.2C172.6 429.7 186.5 435.7 201.1 440.1C218.1 445.1 227.7 462.9 222.7 479.9C217.6 496.8 199.8 506.4 182.9 501.4C161.4 494.1 141 485.8 122.3 474.4C114.3 477.1 105.4 480 95.1 480C60.65 480 31.1 451.3 31.1 416C31.1 406.6 34.02 397.7 37.64 389.7C26.15 370.1 17.01 350.6 10.6 329.1C5.562 312.2 15.21 294.4 32.15 289.3C49.08 284.3 66.9 293.9 71.94 310.9C76.29 325.5 82.34 339.4 89.85 352.3L89.85 352.3zM474.4 389.7C477.1 397.7 479.1 406.6 479.1 416C479.1 451.3 451.3 480 415.1 480C406.6 480 397.7 477.1 389.7 474.4C370.1 485.8 350.6 494.1 329.1 501.4C312.2 506.4 294.4 496.8 289.3 479.9C284.3 462.9 293.9 445.1 310.9 440.1C325.5 435.7 339.4 429.7 352.3 422.2C352.1 420.1 351.1 418.1 351.1 416C351.1 380.7 380.7 352 415.1 352C418.1 352 420.1 352.1 422.2 352.3C429.7 339.4 435.7 325.5 440.1 310.9C445.1 293.9 462.9 284.3 479.8 289.3C496.8 294.4 506.4 312.2 501.4 329.1C494.1 350.6 485.8 370.1 474.4 389.7H474.4zM192.8 256.8C192.8 281.6 206.9 303.2 227.7 313.8C239.5 319.9 244.2 334.3 238.2 346.1C232.1 357.9 217.7 362.6 205.9 356.6C169.7 338.1 144.8 300.4 144.8 256.8C144.8 227.9 155.7 201.6 173.7 181.7L162.5 170.6C155.1 163.1 160.6 152.8 169.9 152.8H230.4C236.1 152.8 240.8 157.5 240.8 163.2V223.7C240.8 232.1 229.6 237.6 223 231L207.7 215.7C198.4 226.8 192.8 241.1 192.8 256.8V256.8zM275.4 165.9C281.5 154.1 295.9 149.4 307.7 155.4C343.9 173.9 368.8 211.6 368.8 255.2C368.8 284.1 357.8 310.5 339.9 330.3L351 341.5C357.6 348 352.1 359.2 343.7 359.2H283.2C277.5 359.2 272.8 354.6 272.8 348.8V288.3C272.8 279 284 274.4 290.6 280.1L305.9 296.3C315.2 285.2 320.8 270.9 320.8 255.2C320.8 230.4 306.6 208.8 285.9 198.2C274.1 192.1 269.4 177.7 275.4 165.9V165.9z"], + "guarani-sign": [384, 512, [], "e19a", "M224 32V66.66C263.5 73.3 299 92.03 326.4 118.9C339 131.3 339.2 151.5 326.9 164.1C314.5 176.8 294.2 176.1 281.6 164.6C265.8 149.1 246.1 137.7 224 132V224H352C369.7 224 384 238.3 384 256C384 351.1 314.8 430.1 224 445.3V480C224 497.7 209.7 512 192 512C174.3 512 160 497.7 160 480V445.3C69.19 430.1 0 351.1 0 256C0 160.9 69.19 81.89 160 66.65V32C160 14.33 174.3 0 192 0C209.7 0 224 14.33 224 32H224zM160 132C104.8 146.2 64 196.4 64 256C64 315.6 104.8 365.8 160 379.1V132zM224 379.1C268.1 368.4 304.4 332.1 315.1 288H224V379.1z"], + "guitar": [512, 512, [], "f7a6", "M502.7 39.02L473 9.37c-12.5-12.5-32.74-12.49-45.24 .0106l-46.24 46.37c-3.875 3.875-6.848 8.506-8.598 13.76l-12.19 36.51L284.5 182.3C272.4 173.5 259 166.5 244.4 163.1C211 155.4 177.4 162.3 154.5 185.1C145.3 194.5 138.3 206 134.3 218.6C128.3 237.1 111.1 251.3 92.14 253C68.52 255.4 46.39 264.5 29.52 281.5c-45.62 45.5-37.38 127.5 18.12 183c55.37 55.38 137.4 63.51 182.9 18c16.1-16.88 26.25-38.85 28.5-62.72c1.75-18.75 15.84-36.16 34.47-42.16c12.5-3.875 24.03-10.87 33.4-20.25c22.87-22.88 29.75-56.38 21.1-89.76c-3.375-14.63-10.39-27.99-19.14-40.11l76.25-76.26l36.53-12.17c5.125-1.75 9.894-4.715 13.77-8.59l46.36-46.29C515.2 71.72 515.2 51.52 502.7 39.02zM208 352c-26.5 0-48-21.5-48-48c0-26.5 21.5-48 48-48s47.1 21.5 47.1 48C256 330.5 234.5 352 208 352z"], + "gun": [576, 512, [], "e19b", "M544 64h-16V56C528 42.74 517.3 32 504 32S480 42.74 480 56V64H43.17C19.33 64 0 83.33 0 107.2v89.66C0 220.7 19.33 240 43.17 240c21.26 0 36.61 20.35 30.77 40.79l-40.69 158.4C27.41 459.6 42.76 480 64.02 480h103.8c14.29 0 26.84-9.469 30.77-23.21L226.4 352h94.58c24.16 0 45.5-15.41 53.13-38.28L398.6 240h36.1c8.486 0 16.62-3.369 22.63-9.373L480 208h64c17.67 0 32-14.33 32-32V96C576 78.33 561.7 64 544 64zM328.5 298.6C327.4 301.8 324.4 304 320.9 304H239.1L256 240h92.02L328.5 298.6zM480 160H64V128h416V160z"], + "h": [384, 512, [104], "48", "M384 64.01v384c0 17.67-14.33 32-32 32s-32-14.33-32-32v-192H64v192c0 17.67-14.33 32-32 32s-32-14.33-32-32v-384C0 46.34 14.33 32.01 32 32.01S64 46.34 64 64.01v128h256v-128c0-17.67 14.33-32 32-32S384 46.34 384 64.01z"], + "hammer": [576, 512, [128296], "f6e3", "M568.1 196.3l-22.62-22.62c-4.533-4.533-10.56-7.029-16.97-7.029s-12.44 2.496-16.97 7.029l-5.654 5.656l-20.12-20.12c4.596-23.46-2.652-47.9-19.47-64.73l-45.25-45.25C390.2 17.47 347.1 0 303.1 0C258.2 0 216 17.47 184.3 49.21L176.5 57.05L272.5 105.1v13.81c0 18.95 7.688 37.5 21.09 50.91l49.16 49.14c13.44 13.45 31.39 20.86 50.54 20.86c4.758 0 9.512-.4648 14.18-1.387l20.12 20.12l-5.654 5.654c-9.357 9.357-9.357 24.58-.002 33.94l22.62 22.62c4.535 4.533 10.56 7.031 16.97 7.031s12.44-2.498 16.97-7.031l90.53-90.5C578.3 220.8 578.3 205.6 568.1 196.3zM270.9 192.4c-3.846-3.846-7.197-8.113-10.37-12.49l-239.5 209.2c-28.12 28.12-28.16 73.72-.0371 101.8C35.12 505 53.56 512 71.1 512s36.84-7.031 50.91-21.09l209.1-239.4c-4.141-3.061-8.184-6.289-11.89-9.996L270.9 192.4z"], + "hamsa": [512, 512, [], "f665", "M509.4 307.2C504.3 295.5 492.8 288 480 288h-64l.0001-208c0-21.1-18-40-40-40c-22 0-40 18-40 40l-.0001 134C336 219.5 331.5 224 326 224h-20c-5.5 0-10-4.5-10-9.1V40c0-21.1-17.1-40-39.1-40S215.1 18 215.1 40v174C215.1 219.5 211.5 224 205.1 224H185.1C180.5 224 175.1 219.5 175.1 214L175.1 80c0-21.1-18-40-40-40S95.1 58 95.1 80L95.1 288H31.99C19.24 288 7.743 295.5 2.618 307.2C-2.382 318.9-.1322 332.5 8.618 341.9l102.6 110C146.1 490.1 199.8 512 256 512s108.1-21.88 144.8-60.13l102.6-110C512.1 332.5 514.4 318.9 509.4 307.2zM256 416c-53 0-96.01-64-96.01-64s43-64 96.01-64s96.01 64 96.01 64S309 416 256 416zM256 320c-17.63 0-32 14.38-32 32s14.38 32 32 32s32-14.38 32-32S273.6 320 256 320z"], + "hand": [512, 512, [129306, 9995, "hand-paper"], "f256", "M480 128v208c0 97.05-78.95 176-176 176h-37.72c-53.42 0-103.7-20.8-141.4-58.58l-113.1-113.1C3.906 332.5 0 322.2 0 312C0 290.7 17.15 272 40 272c10.23 0 20.47 3.906 28.28 11.72L128 343.4V64c0-17.67 14.33-32 32-32s32 14.33 32 32l.0729 176C192.1 248.8 199.2 256 208 256s16.07-7.164 16.07-16L224 32c0-17.67 14.33-32 32-32s32 14.33 32 32l.0484 208c0 8.836 7.111 16 15.95 16S320 248.8 320 240L320 64c0-17.67 14.33-32 32-32s32 14.33 32 32l.0729 176c0 8.836 7.091 16 15.93 16S416 248.8 416 240V128c0-17.67 14.33-32 32-32S480 110.3 480 128z"], + "hand-back-fist": [448, 512, ["hand-rock"], "f255", "M448 144v120.4C448 314.2 422.6 358.1 384 384v128H128v-128l-53.19-38.67C48 325.8 32 294.3 32 261.2V192c0-14.58 6.625-28.38 17.1-37.48L80 130.5V176C80 184.8 87.16 192 96 192s16-7.164 16-16v-128C112 21.48 133.5 0 160 0c25.38 0 45.96 19.77 47.67 44.73C216.2 36.9 227.5 32 240 32C266.5 32 288 53.48 288 80v5.531C296.6 72.57 311.3 64 328 64c23.47 0 42.94 16.87 47.11 39.14C382.4 98.7 390.9 96 400 96C426.5 96 448 117.5 448 144z"], + "hand-dots": [512, 512, ["allergies"], "f461", "M448 96c-17.67 0-32 14.33-32 32v112C416 248.8 408.8 256 400 256s-15.93-7.164-15.93-16L384 64c0-17.67-14.33-32-32-32s-32 14.33-32 32l.0498 176c0 8.836-7.219 16-16.06 16s-15.95-7.164-15.95-16L288 32c0-17.67-14.33-32-32-32S224 14.33 224 32l.0729 208C224.1 248.8 216.8 256 208 256S192.1 248.8 192.1 240L192 64c0-17.67-14.33-32-32-32S128 46.33 128 64v279.4L68.28 283.7C60.47 275.9 50.23 272 40 272C18.68 272 0 289.2 0 312c0 10.23 3.906 20.47 11.72 28.28l113.1 113.1C162.6 491.2 212.9 512 266.3 512H304c97.05 0 176-78.95 176-176V128C480 110.3 465.7 96 448 96zM192 416c-8.836 0-16-7.164-16-16C176 391.2 183.2 384 192 384s16 7.162 16 16C208 408.8 200.8 416 192 416zM256 448c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C272 440.8 264.8 448 256 448zM256 352c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C272 344.8 264.8 352 256 352zM320 384c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C336 376.8 328.8 384 320 384zM352 448c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C368 440.8 360.8 448 352 448zM384 352c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16s16 7.162 16 16C400 344.8 392.8 352 384 352z"], + "hand-fist": [448, 512, [9994, "fist-raised"], "f6de", "M224 180.4V32c0-17.67-14.31-32-32-32S160 14.33 160 32v144h40C208.5 176 216.5 177.7 224 180.4zM128 176V64c0-17.67-14.31-32-32-32S64 46.33 64 64v112.8C66.66 176.5 69.26 176 72 176H128zM288 192c17.69 0 32-14.33 32-32V64c0-17.67-14.31-32-32-32s-32 14.33-32 32v96C256 177.7 270.3 192 288 192zM384 96c-17.69 0-32 14.33-32 32v64c0 17.67 14.31 32 32 32s32-14.34 32-32.02V128C416 110.3 401.7 96 384 96zM350.9 246.2c-12.43-7.648-21.94-19.31-26.88-33.25C313.7 219.9 301.3 223.9 288 223.9c-7.641 0-14.87-1.502-21.66-3.957C269.1 228.6 272 238.1 272 248c0 39.77-32.25 72-72 72H128c-8.836 0-16-7.164-16-16C112 295.2 119.2 288 128 288h72c22.09 0 40-17.91 40-40S222.1 208 200 208h-128C49.91 208 32 225.9 32 248v63.41c0 33.13 16 64.56 42.81 84.13L128 434.2V512h224v-85.09c38.3-24.09 64-66.42 64-114.9V247.1C406.6 252.6 395.7 256 384 256C371.7 256 360.5 252.2 350.9 246.2z"], + "hand-holding": [576, 512, [], "f4bd", "M559.7 392.2l-135.1 99.51C406.9 504.8 385 512 362.1 512H15.1c-8.749 0-15.1-7.246-15.1-15.99l0-95.99c0-8.748 7.25-16.02 15.1-16.02l55.37 .0238l46.5-37.74c20.1-16.1 47.12-26.25 74.12-26.25h159.1c19.5 0 34.87 17.37 31.62 37.37c-2.625 15.75-17.37 26.62-33.37 26.62H271.1c-8.749 0-15.1 7.249-15.1 15.1s7.25 15.1 15.1 15.1h120.6l119.7-88.17c17.8-13.19 42.81-9.342 55.93 8.467C581.3 354.1 577.5 379.1 559.7 392.2z"], + "hand-holding-dollar": [576, 512, ["hand-holding-usd"], "f4c0", "M568.2 336.3c-13.12-17.81-38.14-21.66-55.93-8.469l-119.7 88.17h-120.6c-8.748 0-15.1-7.25-15.1-15.99c0-8.75 7.25-16 15.1-16h78.25c15.1 0 30.75-10.88 33.37-26.62c3.25-20-12.12-37.38-31.62-37.38H191.1c-26.1 0-53.12 9.25-74.12 26.25l-46.5 37.74L15.1 383.1C7.251 383.1 0 391.3 0 400v95.98C0 504.8 7.251 512 15.1 512h346.1c22.03 0 43.92-7.188 61.7-20.27l135.1-99.52C577.5 379.1 581.3 354.1 568.2 336.3zM279.3 175C271.7 173.9 261.7 170.3 252.9 167.1L248 165.4C235.5 160.1 221.8 167.5 217.4 179.1s2.121 26.2 14.59 30.64l4.655 1.656c8.486 3.061 17.88 6.095 27.39 8.312V232c0 13.25 10.73 24 23.98 24s24-10.75 24-24V221.6c25.27-5.723 42.88-21.85 46.1-45.72c8.688-50.05-38.89-63.66-64.42-70.95L288.4 103.1C262.1 95.64 263.6 92.42 264.3 88.31c1.156-6.766 15.3-10.06 32.21-7.391c4.938 .7813 11.37 2.547 19.65 5.422c12.53 4.281 26.21-2.312 30.52-14.84s-2.309-26.19-14.84-30.53c-7.602-2.627-13.92-4.358-19.82-5.721V24c0-13.25-10.75-24-24-24s-23.98 10.75-23.98 24v10.52C238.8 40.23 221.1 56.25 216.1 80.13C208.4 129.6 256.7 143.8 274.9 149.2l6.498 1.875c31.66 9.062 31.15 11.89 30.34 16.64C310.6 174.5 296.5 177.8 279.3 175z"], + "hand-holding-droplet": [576, 512, ["hand-holding-water"], "f4c1", "M287.1 256c53 0 95.1-42.13 95.1-93.1c0-40-57.12-120.8-83.25-155.6c-6.375-8.5-19.12-8.5-25.5 0C249.1 41.25 191.1 122 191.1 162C191.1 213.9 234.1 256 287.1 256zM568.2 336.3c-13.12-17.81-38.14-21.66-55.93-8.469l-119.7 88.17h-120.6c-8.748 0-15.1-7.25-15.1-15.99c0-8.75 7.25-16 15.1-16h78.25c15.1 0 30.75-10.88 33.37-26.62c3.25-20-12.12-37.38-31.62-37.38H191.1c-26.1 0-53.12 9.25-74.12 26.25l-46.5 37.74L15.1 383.1c-8.748 0-15.1 7.274-15.1 16.02L.0001 496C.0001 504.8 7.251 512 15.1 512h346.1c22.03 0 43.92-7.188 61.7-20.27l135.1-99.52C577.5 379.1 581.3 354.1 568.2 336.3z"], + "hand-holding-hand": [512, 512, [], "e4f7", "M328.7 52.28L431.7 119.8C449.5 132.9 453.3 157.9 440.2 175.7C427.1 193.5 402.1 197.3 384.3 184.2L296.6 127.1H191.1C183.2 127.1 175.1 135.2 175.1 143.1C175.1 152.7 183.2 159.1 191.1 159.1H254.2C270.2 159.1 284.1 170.9 287.6 186.6C290.8 206.6 275.5 223.1 255.1 223.1H143.1C116.1 223.1 90.87 214.7 69.87 197.7L23.37 159.1L15.1 160C7.25 160 0 152.7 0 143.1V47.99C0 39.25 7.25 32 15.1 32H266.1C289 32 310.9 39.19 328.7 52.28L328.7 52.28zM151.3 459.7L16.27 360.2C-1.509 347.1-5.305 322.1 7.803 304.3C20.93 286.5 45.94 282.7 63.74 295.8L183.4 384H304C312.8 384 320 376.8 320 368C320 359.3 312.8 352 304 352H225.8C209.8 352 195 341.1 192.4 325.4C189.2 305.4 204.5 288 224 288H352C379 288 405.1 297.3 426.1 314.3L472.6 352L496 352C504.7 352 512 359.3 512 368V464C512 472.8 504.7 480 496 480H213C190.1 480 169.1 472.8 151.3 459.7V459.7z"], + "hand-holding-heart": [576, 512, [], "f4be", "M275.2 250.5c7 7.375 18.5 7.375 25.5 0l108.1-114.2c31.5-33.12 29.72-88.1-5.65-118.7c-30.88-26.75-76.75-21.9-104.9 7.724L287.1 36.91L276.8 25.28C248.7-4.345 202.7-9.194 171.1 17.56C136.7 48.18 134.7 103.2 166.4 136.3L275.2 250.5zM568.2 336.3c-13.12-17.81-38.14-21.66-55.93-8.469l-119.7 88.17h-120.6c-8.748 0-15.1-7.25-15.1-15.1c0-8.746 7.25-15.1 15.1-15.1h78.25c15.1 0 30.75-10.87 33.37-26.62c3.25-19.1-12.12-37.37-31.62-37.37H191.1c-26.1 0-53.12 9.25-74.12 26.25l-46.5 37.74l-55.37-.0253c-8.748 0-15.1 7.275-15.1 16.02L.0001 496C.0001 504.8 7.251 512 15.1 512h346.1c22.03 0 43.92-7.187 61.7-20.28l135.1-99.51C577.5 379.1 581.3 354.1 568.2 336.3z"], + "hand-holding-medical": [576, 512, [], "e05c", "M568.2 336.3c-13.12-17.81-38.14-21.66-55.93-8.469l-119.7 88.17h-120.6c-8.748 0-15.1-7.25-15.1-15.99c0-8.75 7.25-16 15.1-16h78.25c15.1 0 30.75-10.88 33.37-26.62c3.25-20-12.12-37.38-31.62-37.38H191.1c-26.1 0-53.12 9.25-74.12 26.25l-46.5 37.74L15.1 383.1C7.251 383.1 0 391.3 0 400v95.98C0 504.8 7.251 512 15.1 512h346.1c22.03 0 43.92-7.188 61.7-20.27l135.1-99.52C577.5 379.1 581.3 354.1 568.2 336.3zM160 176h64v64C224 248.8 231.2 256 240 256h64C312.8 256 320 248.8 320 240v-64h64c8.836 0 16-7.164 16-16V96c0-8.838-7.164-16-16-16h-64v-64C320 7.162 312.8 0 304 0h-64C231.2 0 224 7.162 224 16v64H160C151.2 80 144 87.16 144 96v64C144 168.8 151.2 176 160 176z"], + "hand-lizard": [512, 512, [], "f258", "M512 329.1V432c0 8.836-7.164 16-16 16H368c-8.836 0-16-7.164-16-16V416l-85.33-64H95.1c-16.47 0-31.44-13.44-31.96-29.9C62.87 285.8 91.96 256 127.1 256h104.9c13.77 0 26-8.811 30.36-21.88l10.67-32C280.9 181.4 265.4 160 243.6 160H63.1C27.95 160-1.129 130.2 .0352 93.9C.5625 77.44 15.53 64 31.1 64h271.2c26.26 0 50.84 12.88 65.79 34.47l128.8 185.1C507 297.8 512 313.7 512 329.1z"], + "hand-middle-finger": [448, 512, [128405], "f806", "M448 288v96c0 70.69-57.31 128-128 128H184c-50.35 0-97.76-23.7-127.1-63.98l-14.43-19.23C35.37 420.5 32 410.4 32 400v-48.02c0-14.58 6.629-28.37 18.02-37.48L80 290.5V336C80 344.8 87.16 352 96 352s16-7.164 16-16v-96C112 213.5 133.5 192 160 192s48 21.48 48 48V40C208 17.91 225.9 0 248 0S288 17.91 288 40v189.5C296.6 216.6 311.3 208 328 208c23.48 0 42.94 16.87 47.11 39.14C382.4 242.7 390.8 240 400 240C426.5 240 448 261.5 448 288z"], + "hand-peace": [512, 512, [9996], "f25b", "M256 287.4V32c0-17.67-14.31-32-32-32S192 14.33 192 32v216.3C218.7 248.4 243.7 263.1 256 287.4zM170.8 251.2c2.514-.7734 5.043-1.027 7.57-1.516L93.41 51.39C88.21 39.25 76.34 31.97 63.97 31.97c-20.97 0-31.97 18.01-31.97 32.04c0 4.207 .8349 8.483 2.599 12.6l81.97 191.3L170.8 251.2zM416 224c-17.69 0-32 14.33-32 32v64c0 17.67 14.31 32 32 32s32-14.33 32-32V256C448 238.3 433.7 224 416 224zM320 352c17.69 0 32-14.33 32-32V224c0-17.67-14.31-32-32-32s-32 14.33-32 32v96C288 337.7 302.3 352 320 352zM368 361.9C356.3 375.3 339.2 384 320 384c-27.41 0-50.62-17.32-59.73-41.55c-7.059 21.41-23.9 39.23-47.08 46.36l-47.96 14.76c-1.562 .4807-3.147 .7105-4.707 .7105c-6.282 0-12.18-3.723-14.74-9.785c-.8595-2.038-1.264-4.145-1.264-6.213c0-6.79 4.361-13.16 11.3-15.3l46.45-14.29c17.2-5.293 29.76-20.98 29.76-38.63c0-34.19-32.54-40.07-40.02-40.07c-3.89 0-7.848 .5712-11.76 1.772l-104 32c-18.23 5.606-28.25 22.21-28.25 38.22c0 4.266 .6825 8.544 2.058 12.67L68.19 419C86.71 474.5 138.7 512 197.2 512H272c82.54 0 151.8-57.21 170.7-134C434.6 381.8 425.6 384 416 384C396.8 384 379.7 375.3 368 361.9z"], + "hand-point-down": [448, 512, [], "f0a7", "M256 256v64c0 17.67 14.31 32 32 32s32-14.33 32-32V256c0-17.67-14.31-32-32-32S256 238.3 256 256zM200 272H160V352c0 17.67 14.31 32 32 32s32-14.33 32-32V267.6C216.5 270.3 208.5 272 200 272zM72 272C69.26 272 66.66 271.5 64 271.2V480c0 17.67 14.31 32 32 32s32-14.33 32-32V272H72zM416 288V224c0-17.67-14.31-32-32-32s-32 14.33-32 32v64c0 17.67 14.31 32 32 32S416 305.7 416 288zM384 160c11.72 0 22.55 3.381 32 8.879V136C416 60.89 355.1 0 280 0L191.3 0C162.5 0 134.5 9.107 111.2 26.02L74.81 52.47C48 72.03 32 103.5 32 136.6V200C32 222.1 49.91 240 72 240h128c22.09 0 39.1-17.91 39.1-39.1c0-28.73-26.72-40-42.28-40l-69.72 0C119.2 160 112 152.8 112 144S119.2 128 127.1 128H200c37.87 0 68.59 29.35 71.45 66.51C276.8 193.1 282.2 192 288 192c13.28 0 25.6 4.047 35.83 10.97C332.6 178 356.1 160 384 160z"], + "hand-point-left": [512, 512, [], "f0a5", "M256 288H192c-17.67 0-32 14.31-32 32s14.33 32 32 32h64c17.67 0 32-14.31 32-32S273.7 288 256 288zM240 232V192H160C142.3 192 128 206.3 128 224s14.33 32 32 32h84.41C241.7 248.5 240 240.5 240 232zM240 104C240 101.3 240.5 98.66 240.8 96H32C14.33 96 0 110.3 0 128s14.33 32 32 32h208V104zM224 448h64c17.67 0 32-14.31 32-32s-14.33-32-32-32H224c-17.67 0-32 14.31-32 32S206.3 448 224 448zM352 416c0 11.72-3.381 22.55-8.879 32H376C451.1 448 512 387.1 512 312V223.3c0-28.76-9.107-56.79-26.02-80.06l-26.45-36.41C439.1 80 408.5 64 375.4 64H312c-22.09 0-40 17.91-40 40v128c0 22.09 17.91 39.1 39.1 39.1c28.73 0 40-26.72 40-42.28L352 159.1C352 151.2 359.2 144 368 144S384 151.2 384 159.1V232c0 37.87-29.35 68.59-66.51 71.45C318.9 308.8 320 314.2 320 320c0 13.28-4.047 25.6-10.97 35.83C333.1 364.6 352 388.1 352 416z"], + "hand-point-right": [512, 512, [], "f0a4", "M224 320c0 17.69 14.33 32 32 32h64c17.67 0 32-14.31 32-32s-14.33-32-32-32h-64C238.3 288 224 302.3 224 320zM267.6 256H352c17.67 0 32-14.31 32-32s-14.33-32-32-32h-80v40C272 240.5 270.3 248.5 267.6 256zM272 160H480c17.67 0 32-14.31 32-32s-14.33-32-32-32h-208.8C271.5 98.66 272 101.3 272 104V160zM320 416c0-17.69-14.33-32-32-32H224c-17.67 0-32 14.31-32 32s14.33 32 32 32h64C305.7 448 320 433.7 320 416zM202.1 355.8C196 345.6 192 333.3 192 320c0-5.766 1.08-11.24 2.51-16.55C157.4 300.6 128 269.9 128 232V159.1C128 151.2 135.2 144 143.1 144S160 151.2 159.1 159.1l0 69.72C159.1 245.2 171.3 271.1 200 271.1C222.1 271.1 240 254.1 240 232v-128C240 81.91 222.1 64 200 64H136.6C103.5 64 72.03 80 52.47 106.8L26.02 143.2C9.107 166.5 0 194.5 0 223.3V312C0 387.1 60.89 448 136 448h32.88C163.4 438.6 160 427.7 160 416C160 388.1 178 364.6 202.1 355.8z"], + "hand-point-up": [448, 512, [9757], "f0a6", "M288 288c17.69 0 32-14.33 32-32V192c0-17.67-14.31-32-32-32s-32 14.33-32 32v64C256 273.7 270.3 288 288 288zM224 244.4V160c0-17.67-14.31-32-32-32S160 142.3 160 160v80h40C208.5 240 216.5 241.7 224 244.4zM128 240V32c0-17.67-14.31-32-32-32S64 14.33 64 32v208.8C66.66 240.5 69.26 240 72 240H128zM384 192c-17.69 0-32 14.33-32 32v64c0 17.67 14.31 32 32 32s32-14.33 32-32V224C416 206.3 401.7 192 384 192zM323.8 309C313.6 315.1 301.3 320 288 320c-5.766 0-11.24-1.08-16.55-2.51C268.6 354.6 237.9 384 200 384H127.1C119.2 384 112 376.8 112 368S119.2 352 127.1 352l69.72 .0001c15.52 0 42.28-11.29 42.28-40C239.1 289.9 222.1 272 200 272h-128C49.91 272 32 289.9 32 312v63.41c0 33.13 16 64.56 42.81 84.13l36.41 26.45C134.5 502.9 162.5 512 191.3 512H280c75.11 0 136-60.89 136-136v-32.88C406.6 348.6 395.7 352 384 352C356.1 352 332.6 333.1 323.8 309z"], + "hand-pointer": [448, 512, [], "f25a", "M400 224c-9.148 0-17.62 2.697-24.89 7.143C370.9 208.9 351.5 192 328 192c-17.38 0-32.46 9.33-40.89 23.17C282.1 192.9 263.5 176 240 176c-12.35 0-23.49 4.797-32 12.46V40c0-22.09-17.9-40-39.1-40C145.9 0 128 17.91 128 40v322.7L72 288C64.15 277.5 52.13 272 39.97 272c-21.22 0-39.97 17.06-39.97 40.02c0 8.356 2.608 16.78 8.005 23.98l91.22 121.6C124.8 491.7 165.5 512 208 512h96C383.4 512 448 447.4 448 368v-96C448 245.5 426.5 224 400 224zM240 400c0 8.844-7.156 16-16 16s-16-7.156-16-16v-96C208 295.2 215.2 288 224 288s16 7.156 16 16V400zM304 400c0 8.844-7.156 16-16 16s-16-7.156-16-16v-96C272 295.2 279.2 288 288 288s16 7.156 16 16V400zM368 400c0 8.844-7.156 16-16 16s-16-7.156-16-16v-96C336 295.2 343.2 288 352 288s16 7.156 16 16V400z"], + "hand-scissors": [512, 512, [], "f257", "M512 192v111.1C512 383.4 447.4 448 368 448H288c-26.52 0-48-21.48-48-47.99c0-9.152 2.697-17.61 7.139-24.89C224.9 370.1 208 351.5 208 328c0-16.72 8.561-31.4 21.52-39.1H40c-22.09 0-40-17.9-40-39.99s17.91-39.1 40-39.1h229.5L60 142.2C42.93 136.8 31.99 121.1 31.99 104c0-3.973 .5967-8.014 1.851-12.01c5.35-17.07 21.08-28.04 38.06-28.04c4 0 8.071 .6085 12.09 1.889l279.2 87.22C364.8 153.6 366.4 153.8 368 153.8c6.812 0 13.12-4.375 15.27-11.23c.4978-1.588 .7346-3.195 .7346-4.777c0-6.807-4.388-13.12-11.23-15.25l-72.54-22.67l14.29-17.85C323.6 70.67 337.4 64.04 352 64.04h48c10.39 0 20.48 3.359 28.8 9.592l38.41 28.79c25.2 18.91 40.53 47.97 43.55 79.04C511.5 184.9 512 188.4 512 192z"], + "hand-sparkles": [640, 512, [], "e05d", "M448 432c0-14.25 8.547-28.14 21.28-34.55l39.56-16.56l15.64-37.52c4.461-9.037 11.45-15.37 19.43-19.23L544 128c0-17.67-14.33-32-32-32s-32 14.33-32 32l-.0156 112c0 8.836-7.148 16-15.98 16s-16.07-7.164-16.07-16L448 64c0-17.67-14.33-32-32-32s-32 14.33-32 32l-.0635 176c0 8.836-7.106 16-15.94 16S351.9 248.8 351.9 240L352 32c0-17.67-14.33-32-32-32S288 14.33 288 32L287.9 240C287.9 248.8 280.8 256 272 256S255.9 248.8 255.9 240L256 64c0-17.67-14.33-32-32-32S192 46.33 192 64v279.4L132.3 283.7C124.5 275.9 114.2 272 104 272C82.68 272 64 289.2 64 312c0 10.23 3.906 20.47 11.72 28.28l113.1 113.1C226.6 491.2 276.9 512 330.3 512H368c42.72 0 81.91-15.32 112.4-40.73l-9.049-3.773C456.6 460.1 448 446.3 448 432zM349.8 371.6L320 383.1l-12.42 29.78C306.1 415 305.4 416 304 416s-2.969-.9941-3.578-2.219L288 383.1l-29.79-12.42C256.1 370.1 256 369.4 256 367.1c0-1.365 .9922-2.967 2.209-3.577L288 352l12.42-29.79C301 320.1 302.6 320 304 320s2.967 .9902 3.578 2.217L320 352l29.79 12.42C351 365 352 366.6 352 367.1C352 369.4 351 370.1 349.8 371.6zM80 224c2.277 0 4.943-1.656 5.959-3.699l20.7-49.63l49.65-20.71c2.027-1.014 3.682-3.696 3.686-5.958C159.1 141.7 158.3 139.1 156.3 138L106.7 117.4L85.96 67.7C84.94 65.65 82.28 64 80 64C77.72 64 75.05 65.65 74.04 67.7L53.34 117.3L3.695 138C1.668 139.1 .0117 141.7 .0078 143.1c.0039 2.262 1.662 4.953 3.688 5.967l49.57 20.67l20.77 49.67C75.05 222.3 77.72 224 80 224zM639.1 432c-.0039-2.275-1.657-4.952-3.687-5.968l-49.57-20.67l-20.77-49.67C564.9 353.7 562.3 352 560 352c-2.281 0-4.959 1.652-5.975 3.695l-20.7 49.63l-49.64 20.71c-2.027 1.016-3.682 3.683-3.686 5.958c.0039 2.262 1.661 4.954 3.686 5.968l49.57 20.67l20.77 49.67C555.1 510.3 557.7 512 560 512c2.277 0 4.933-1.656 5.949-3.699l20.7-49.63l49.65-20.71C638.3 436.9 639.1 434.3 639.1 432z"], + "hand-spock": [576, 512, [128406], "f259", "M543.6 128.6c0-8.999-6.115-32.58-31.68-32.58c-14.1 0-27.02 9.324-30.92 23.56l-34.36 125.1c-1.682 6.16-7.275 10.43-13.66 10.43c-7.981 0-14.16-6.518-14.16-14.13c0-.9844 .1034-1.987 .3197-2.996l35.71-166.6c.5233-2.442 .7779-4.911 .7779-7.362c0-13.89-9.695-32.86-31.7-32.86c-14.79 0-28.12 10.26-31.34 25.29l-37.77 176.2c-2.807 13.1-14.38 22.46-27.77 22.46c-13.04 0-24.4-8.871-27.56-21.52l-52.11-208.5C243.6 11.2 230.5-.0013 215.6-.0013c-26.71 0-31.78 25.71-31.78 31.98c0 2.569 .3112 5.18 .9617 7.786l50.55 202.2c.2326 .9301 .3431 1.856 .3431 2.764c0 6.051-4.911 11.27-11.3 11.27c-4.896 0-9.234-3.154-10.74-7.812L166.9 103.9C162.4 89.1 149.5 80.02 135.5 80.02c-15.68 0-31.63 12.83-31.63 31.97c0 3.273 .5059 6.602 1.57 9.884l69.93 215.7c.2903 .8949 .4239 1.766 .4239 2.598c0 4.521-3.94 7.915-8.119 7.915c-1.928 0-3.906-.7219-5.573-2.388L101.7 285.3c-8.336-8.336-19.63-12.87-30.81-12.87c-23.56 0-39.07 19.69-39.07 39.55c0 10.23 3.906 20.47 11.72 28.28l122.5 122.5C197.6 494.3 240.3 512 284.9 512h50.98c23.5 0 108.4-14.57 132.5-103l73.96-271.2C543.2 134.8 543.6 131.7 543.6 128.6z"], + "handcuffs": [640, 512, [], "e4f8", "M304 32C304 49.67 289.7 64 272 64C254.3 64 240 49.67 240 32C240 14.33 254.3 0 272 0C289.7 0 304 14.33 304 32zM160 80C160 62.33 174.3 48 192 48C209.7 48 224 62.33 224 80C224 97.67 209.7 112 192 112C174.3 112 160 97.67 160 80zM160 128C177.7 128 192 142.3 192 160H200C213.3 160 224 170.7 224 184V200C224 201.7 223.8 203.4 223.5 205.1C280.3 229.6 320 286.2 320 352C320 440.4 248.4 512 160 512C71.63 512 0 440.4 0 352C0 286.2 39.74 229.6 96.54 205.1C96.19 203.4 96 201.7 96 200V184C96 170.7 106.7 160 120 160H128C128 142.3 142.3 128 160 128zM160 448C213 448 256 405 256 352C256 298.1 213 256 160 256C106.1 256 64 298.1 64 352C64 405 106.1 448 160 448zM337.6 278.9C354.5 246.1 382.5 219.8 416.5 205.1C416.2 203.4 416 201.7 416 199.1V183.1C416 170.7 426.7 159.1 440 159.1H448C448 142.3 462.3 127.1 480 127.1C497.7 127.1 512 142.3 512 159.1H520C533.3 159.1 544 170.7 544 183.1V199.1C544 201.7 543.8 203.4 543.5 205.1C600.3 229.6 640 286.2 640 352C640 440.4 568.4 512 480 512C417.1 512 364.2 476.7 337.6 425.1C346.9 402.5 352 377.9 352 352C352 326.1 346.9 301.5 337.6 278.9V278.9zM480 256C426.1 256 384 298.1 384 352C384 405 426.1 448 480 448C533 448 576 405 576 352C576 298.1 533 256 480 256zM336 32C336 14.33 350.3 0 368 0C385.7 0 400 14.33 400 32C400 49.67 385.7 64 368 64C350.3 64 336 49.67 336 32zM416 80C416 62.33 430.3 48 448 48C465.7 48 480 62.33 480 80C480 97.67 465.7 112 448 112C430.3 112 416 97.67 416 80z"], + "hands": [512, 512, ["sign-language", "signing"], "f2a7", "M330.8 242.3L223.1 209.1C210.3 205.2 197 212.3 193.1 224.9C189.2 237.6 196.3 251 208.9 254.9L256 272H56.9c-11.61 0-22.25 7.844-24.44 19.24C29.51 306.6 41.19 320 56 320h128C188.4 320 192 323.6 192 328S188.4 336 184 336H24.9c-11.61 0-22.25 7.844-24.44 19.24C-2.49 370.6 9.193 384 24 384h160C188.4 384 192 387.6 192 392S188.4 400 184 400H56.9c-11.61 0-22.25 7.844-24.44 19.24C29.51 434.6 41.19 448 56 448h128C188.4 448 192 451.6 192 456S188.4 464 184 464H88.9c-11.61 0-22.25 7.844-24.44 19.24C61.51 498.6 73.19 512 88 512h208c66.28 0 120-53.73 120-120v-32.03C416 306.6 381.1 259.4 330.8 242.3zM197.1 179.5c5.986-2.148 12.32-3.482 18.98-3.482c5.508 0 10.99 .8105 16.5 2.471l16.11 4.975L227.7 117.2C224.2 106.2 213.6 98.39 202 99.74c-15.51 1.807-24.79 16.99-20.33 31.11L197.1 179.5zM487.1 144.5c-13.27 .0977-23.95 10.91-23.86 24.16l-2.082 50.04l-59.98-189.8c-3.496-11.07-14.18-18.86-25.71-17.51c-15.51 1.807-24.79 16.99-20.33 31.11l38.56 122.1c1.332 4.213-1.004 8.707-5.219 10.04c-4.213 1.332-8.707-1.004-10.04-5.217l-47.93-151.7c-3.496-11.07-14.18-18.86-25.71-17.51c-15.51 1.807-24.79 16.99-20.33 31.11l43.37 137.8c1.33 4.213-1.006 8.707-5.219 10.04c-4.213 1.332-8.707-1.004-10.04-5.217l-33.46-106.4C275.6 56.39 264.9 48.6 253.4 49.94c-15.51 1.807-24.79 16.99-20.33 31.11l34.15 108.1l73.7 22.76C404.1 233.3 448 292.8 448 359.9v27.91c38.27-21.17 63.28-61.24 64-106.7V168.4C511.8 155.1 500.3 144.5 487.1 144.5z"], + "hands-asl-interpreting": [640, 512, ["american-sign-language-interpreting", "asl-interpreting", "hands-american-sign-language-interpreting"], "f2a3", "M200 240c16.94 0 32.09 10.72 37.73 26.67c5.891 16.66 24.17 25.39 40.84 19.5c16.66-5.891 25.39-24.17 19.5-40.84C287.2 214.7 262.8 191.6 233.1 181.5l79.68-22.76c16.98-4.859 26.83-22.56 21.97-39.56C329.9 102.2 312.2 92.35 295.2 97.24L196 125.6l80.82-69.28c13.42-11.5 14.97-31.7 3.469-45.12C268.8-2.24 248.6-3.803 235.2 7.713l-100.4 86.09l22.33-48.39c7.391-16.05 .3906-35.06-15.66-42.47C125.4-4.412 106.4 2.525 98.94 18.6L14.92 206.6C5.082 228.6 0 252.5 0 276.6C0 335.9 48.1 384 107.4 384l99.9-.0064c31.87-2.289 61.15-19.35 79.13-46.18c9.828-14.69 5.891-34.56-8.781-44.41C263 283.6 243.1 287.5 233.3 302.2C225.8 313.3 213.4 320 200 320c-22.06 0-40-17.94-40-40C160 257.9 177.9 240 200 240zM532.6 128l-99.9 .004c-31.87 2.289-61.15 19.35-79.13 46.18c-9.828 14.69-5.891 34.56 8.781 44.41c14.66 9.812 34.55 5.906 44.41-8.781C414.2 198.7 426.6 191.1 440 191.1c22.06 0 40 17.94 40 40c0 22.06-17.94 39.1-40 39.1c-16.94 0-32.09-10.72-37.73-26.67c-5.891-16.66-24.17-25.39-40.84-19.5c-16.66 5.891-25.39 24.17-19.5 40.84c10.84 30.64 35.23 53.77 64.96 63.8l-79.68 22.76c-16.98 4.859-26.83 22.56-21.97 39.56c4.844 16.98 22.56 26.86 39.56 21.97l99.2-28.34l-80.82 69.28c-13.42 11.5-14.97 31.7-3.469 45.12c11.52 13.42 31.73 14.98 45.13 3.469l100.4-86.09l-22.33 48.39c-7.391 16.05-.3906 35.06 15.66 42.47c16.02 7.359 35.05 .4219 42.47-15.65l84.02-188C634.9 283.4 640 259.5 640 235.4C640 176.1 591.9 128 532.6 128z"], + "hands-bound": [640, 512, [], "e4f9", "M95.1 144.8L165.3 237.2C170.1 244.7 181.4 246.8 189.6 242C199.3 236.3 201.7 223.3 194.6 214.5L167 179.1C156.2 166.4 158.1 146.7 171.4 135.5C184.6 124.4 204.4 125.8 215.9 138.7L262.6 191.3C278.1 209.7 287.1 233.4 287.1 258.1V352H352V258.1C352 233.4 361 209.7 377.4 191.3L424.1 138.7C435.6 125.8 455.4 124.4 468.6 135.5C481.9 146.7 483.8 166.4 472.1 179.1L445.4 214.5C438.3 223.3 440.7 236.3 450.4 242C458.6 246.8 469 244.7 474.7 237.2L544 144.8V32C544 14.33 558.3 0 576 0C593.7 0 608 14.33 608 32V213.9C608 228 602.9 241.8 593.7 252.5L508.4 352H512C525.3 352 536 362.7 536 376C536 389.3 525.3 400 512 400H128C114.7 400 104 389.3 104 376C104 362.7 114.7 352 128 352H131.6L46.31 252.5C37.07 241.8 32 228 32 213.9V32C32 14.33 46.33 0 64 0C81.67 0 96 14.33 96 32L95.1 144.8zM127.1 480C114.7 480 103.1 469.3 103.1 456C103.1 442.7 114.7 432 127.1 432H512C525.3 432 536 442.7 536 456C536 469.3 525.3 480 512 480H480V512H352V480H287.1V512H159.1V480H127.1z"], + "hands-bubbles": [576, 512, ["hands-wash"], "e05e", "M416 64c17.67 0 32-14.33 32-31.1c0-17.67-14.33-32-32-32c-17.67 0-32 14.33-32 32C384 49.67 398.3 64 416 64zM519.1 336H360c-4.418 0-8-3.582-8-8s3.582-8 8-8h128c14.81 0 26.49-13.42 23.54-28.76c-2.191-11.4-12.84-19.24-24.44-19.24H288l47.09-17.06c12.66-3.906 19.75-17.34 15.84-30.03c-3.938-12.62-17.28-19.69-30.03-15.84L213.2 242.3C162 259.4 128 306.6 128 359.1v25.65c36.47 7.434 64 39.75 64 78.38c0 10.71-2.193 20.91-6.031 30.25C204.1 505.3 225.2 512 248 512h208c14.81 0 26.49-13.42 23.54-28.76c-2.191-11.4-12.84-19.24-24.44-19.24H360c-4.418 0-8-3.582-8-8s3.582-8 8-8h128c14.81 0 26.49-13.42 23.54-28.76c-2.191-11.4-12.84-19.24-24.44-19.24H360c-4.418 0-8-3.582-8-8s3.582-8 8-8h160c14.81 0 26.49-13.42 23.54-28.76C541.3 343.8 530.7 336 519.1 336zM311.5 178.4c5.508-1.66 10.99-2.471 16.5-2.471c6.662 0 12.1 1.334 18.98 3.482l15.36-48.61c4.461-14.12-4.82-29.3-20.33-31.11c-11.53-1.344-22.21 6.443-25.71 17.51l-20.9 66.17L311.5 178.4zM496 224c26.51 0 48-21.49 48-47.1s-21.49-48-48-48S448 149.5 448 176S469.5 224 496 224zM93.65 386.3C94.45 386.1 95.19 385.8 96 385.6v-25.69c0-67.17 43.03-126.7 107.1-148l73.7-22.76l34.15-108.1c4.459-14.12-4.82-29.3-20.33-31.11C279.1 48.6 268.4 56.39 264.9 67.46L231.4 173.9c-1.332 4.213-5.826 6.549-10.04 5.217C217.2 177.8 214.8 173.3 216.2 169.1l43.37-137.8c4.461-14.12-4.82-29.3-20.33-31.11c-11.53-1.344-22.21 6.445-25.71 17.51L165.6 169.4C164.2 173.6 159.7 175.9 155.5 174.6C151.3 173.3 148.1 168.8 150.3 164.6l38.56-122.1c4.459-14.12-4.82-29.3-20.33-31.11C157 10.04 146.3 17.83 142.8 28.9L82.84 218.7L80.76 168.7C80.85 155.5 70.17 144.6 56.9 144.5C43.67 144.5 32.18 155.1 32 168.4v112.7C32.71 325.6 56.76 364.8 93.65 386.3zM112 416c-26.51 0-48 21.49-48 47.1s21.49 48 48 48S160 490.5 160 464S138.5 416 112 416z"], + "hands-clapping": [512, 512, [], "e1a8", "M320 96c8.844 0 16-7.156 16-16v-64C336 7.156 328.8 0 320 0s-16 7.156-16 16v64C304 88.84 311.2 96 320 96zM383.4 96c5.125 0 10.16-2.453 13.25-7.016l32.56-48c1.854-2.746 2.744-5.865 2.744-8.951c0-8.947-7.273-16.04-15.97-16.04c-5.125 0-10.17 2.465-13.27 7.02l-32.56 48C368.3 73.76 367.4 76.88 367.4 79.97C367.4 88.88 374.7 96 383.4 96zM384 357.5l0-163.9c0-6.016-4.672-33.69-32-33.69c-17.69 0-32.07 14.33-32.07 31.1L320 268.1L169.2 117.3C164.5 112.6 158.3 110.3 152.2 110.3c-13.71 0-24 11.21-24 24c0 6.141 2.344 12.28 7.031 16.97l89.3 89.3C227.4 243.4 228.9 247.2 228.9 251c0 3.8-1.45 7.6-4.349 10.5c-2.899 2.899-6.7 4.349-10.5 4.349c-3.8 0-7.6-1.45-10.5-4.349l-107.6-107.6C91.22 149.2 85.08 146.9 78.94 146.9c-13.71 0-24 11.21-24 24c0 6.141 2.344 12.28 7.031 16.97l107.6 107.6C172.5 298.4 173.9 302.2 173.9 305.1c0 3.8-1.45 7.6-4.349 10.5c-2.899 2.9-6.7 4.349-10.5 4.349c-3.8 0-7.6-1.45-10.5-4.349L59.28 227.2C54.59 222.5 48.45 220.1 42.31 220.1c-13.71 0-24 11.21-24 24c0 6.141 2.344 12.28 7.031 16.97l89.3 89.3c2.9 2.899 4.349 6.7 4.349 10.5c0 3.8-1.45 7.6-4.349 10.5c-2.899 2.899-6.7 4.349-10.5 4.349c-3.8 0-7.6-1.45-10.5-4.349L40.97 318.7C36.28 314 30.14 311.7 24 311.7c-13.71 0-23.99 11.26-23.99 24.05c0 6.141 2.332 12.23 7.02 16.92C112.6 458.2 151.3 512 232.3 512C318.1 512 384 440.9 384 357.5zM243.3 88.98C246.4 93.55 251.4 96 256.6 96c8.762 0 15.99-7.117 15.99-16.03c0-3.088-.8906-6.205-2.744-8.951l-32.56-48C234.2 18.46 229.1 15.98 223.1 15.98c-8.664 0-15.98 7.074-15.98 16.05c0 3.086 .8906 6.205 2.744 8.951L243.3 88.98zM480 160c-17.69 0-32 14.33-32 32v76.14l-32-32v121.4c0 94.01-63.31 141.5-78.32 152.2C345.1 510.9 352.6 512 360.3 512C446.1 512 512 440.9 512 357.5l-.0625-165.6C511.9 174.3 497.7 160 480 160z"], + "hands-holding": [640, 512, [], "f4c2", "M79.1 264.2C79.1 281.2 86.74 297.5 98.74 309.5L149.8 360.6C158.1 368.9 171.1 370.1 180.8 363.7C193.7 355 195.5 336.8 184.6 325.8L137.4 278.6C124.9 266.1 124.9 245.9 137.4 233.4C149.9 220.9 170.1 220.9 182.6 233.4L255.2 305.9C276.2 326.9 288 355.4 288 385.1V464C288 490.5 266.5 512 240 512H173.3C156.3 512 140 505.3 128 493.3L28.12 393.4C10.11 375.4 0 350.1 0 325.5V104C0 81.91 17.91 64 40 64C62.09 64 80 81.91 80 104L79.1 264.2zM560 104C560 81.91 577.9 64 600 64C622.1 64 640 81.91 640 104V325.5C640 350.1 629.9 375.4 611.9 393.4L512 493.3C499.1 505.3 483.7 512 466.7 512H400C373.5 512 352 490.5 352 464V385.1C352 355.4 363.8 326.9 384.8 305.9L457.4 233.4C469.9 220.9 490.1 220.9 502.6 233.4C515.1 245.9 515.1 266.1 502.6 278.6L455.4 325.8C444.5 336.8 446.3 355 459.2 363.7C468.9 370.1 481.9 368.9 490.2 360.6L541.3 309.5C553.3 297.5 560 281.2 560 264.2L560 104z"], + "hands-holding-child": [640, 512, [], "e4fa", "M279.1 40C279.1 17.91 297.9 0 319.1 0C342.1 0 360 17.91 360 40C360 62.09 342.1 80 319.1 80C297.9 80 279.1 62.09 279.1 40zM375.8 253C377.5 266.2 368.1 278.2 354.1 279.8C341.8 281.5 329.8 272.1 328.2 258.1L323.8 223.1H316.2L311.8 258.1C310.2 272.1 298.2 281.5 285 279.8C271.9 278.2 262.5 266.2 264.2 253L275.3 164.3L255.5 180.1C245.4 189.6 230.2 188.3 221.7 178.2C213.1 168 214.4 152.9 224.5 144.3L252.4 120.7C271.3 104.8 295.3 96 320 96C344.7 96 368.7 104.8 387.6 120.7L415.5 144.3C425.6 152.9 426.9 168 418.3 178.2C409.8 188.3 394.6 189.6 384.5 180.1L364.7 164.3L375.8 253zM39.1 64C62.09 64 79.1 81.91 79.1 104V264.2C79.1 281.2 86.74 297.5 98.74 309.5L149.8 360.6C158.1 368.9 171.1 370.1 180.8 363.7C193.7 355 195.5 336.8 184.6 325.8L137.4 278.6C124.9 266.1 124.9 245.9 137.4 233.4C149.9 220.9 170.1 220.9 182.6 233.4L255.2 305.9C276.2 326.9 288 355.4 288 385.1V464C288 490.5 266.5 512 240 512H173.3C156.3 512 140 505.3 128 493.3L28.12 393.4C10.11 375.4 0 350.1 0 325.5V104C0 81.91 17.91 64 40 64L39.1 64zM640 104V325.5C640 350.1 629.9 375.4 611.9 393.4L512 493.3C499.1 505.3 483.7 512 466.7 512H400C373.5 512 352 490.5 352 464V385.1C352 355.4 363.8 326.9 384.8 305.9L457.4 233.4C469.9 220.9 490.1 220.9 502.6 233.4C515.1 245.9 515.1 266.1 502.6 278.6L455.4 325.8C444.5 336.8 446.3 355 459.2 363.7C468.9 370.1 481.9 368.9 490.2 360.6L541.3 309.5C553.3 297.5 560 281.2 560 264.2V103.1C560 81.91 577.9 63.1 600 63.1C622.1 63.1 640 81.91 640 103.1L640 104z"], + "hands-holding-circle": [640, 512, [], "e4fb", "M191.1 128C191.1 57.31 249.3 0 319.1 0C390.7 0 448 57.31 448 128C448 198.7 390.7 256 319.1 256C249.3 256 191.1 198.7 191.1 128zM39.1 64C62.09 64 79.1 81.91 79.1 104V264.2C79.1 281.2 86.74 297.5 98.74 309.5L149.8 360.6C158.1 368.9 171.1 370.1 180.8 363.7C193.7 355 195.5 336.8 184.6 325.8L137.4 278.6C124.9 266.1 124.9 245.9 137.4 233.4C149.9 220.9 170.1 220.9 182.6 233.4L255.2 305.9C276.2 326.9 288 355.4 288 385.1V464C288 490.5 266.5 512 240 512H173.3C156.3 512 140 505.3 128 493.3L28.12 393.4C10.11 375.4 0 350.1 0 325.5V104C0 81.91 17.91 64 40 64L39.1 64zM640 104V325.5C640 350.1 629.9 375.4 611.9 393.4L512 493.3C499.1 505.3 483.7 512 466.7 512H400C373.5 512 352 490.5 352 464V385.1C352 355.4 363.8 326.9 384.8 305.9L457.4 233.4C469.9 220.9 490.1 220.9 502.6 233.4C515.1 245.9 515.1 266.1 502.6 278.6L455.4 325.8C444.5 336.8 446.3 355 459.2 363.7C468.9 370.1 481.9 368.9 490.2 360.6L541.3 309.5C553.3 297.5 560 281.2 560 264.2V103.1C560 81.91 577.9 63.1 600 63.1C622.1 63.1 640 81.91 640 103.1L640 104z"], + "hands-praying": [640, 512, ["praying-hands"], "f684", "M272 191.9c-17.62 0-32 14.35-32 31.97V303.9c0 8.875-7.125 16-16 16s-16-7.125-16-16V227.4c0-17.37 4.75-34.5 13.75-49.37L299.5 48.41c9-15.12 4.125-34.76-11-43.88C273.1-4.225 255.8 .1289 246.1 13.63C245.1 13.88 245.5 13.88 245.4 14.13L128.1 190C117.5 205.9 112 224.3 112 243.3v80.24l-90.13 29.1C8.75 357.9 0 370.1 0 383.9v95.99c0 10.88 8.5 31.1 32 31.1c2.75 0 5.375-.25 8-1l179.3-46.62C269.1 450 304 403.8 304 351.9V223.9C304 206.3 289.6 191.9 272 191.9zM618.1 353.6L528 323.6V243.4c0-19-5.5-37.37-16.12-53.25l-117.3-175.9c-.125-.25-.6251-.2487-.75-.4987c-9.625-13.5-27.88-17.85-42.38-9.229c-15.12 9.125-20 28.76-11 44.01l77.75 129.5C427.3 193 432 210 432 227.5v76.49c0 8.875-7.125 16-16 16s-16-7.125-16-16V223.1c0-17.62-14.38-31.97-32-31.97s-32 14.38-32 31.1v127.1c0 51.87 34.88 98.12 84.75 112.4L600 511C602.6 511.6 605.4 512 608 512c23.5 0 32-21.25 32-31.1v-95.99C640 370.3 631.3 358 618.1 353.6z"], + "handshake": [640, 512, [], "f2b5", "M0 383.9l64 .0404c17.75 0 32-14.29 32-32.03V128.3L0 128.3V383.9zM48 320.1c8.75 0 16 7.118 16 15.99c0 8.742-7.25 15.99-16 15.99S32 344.8 32 336.1C32 327.2 39.25 320.1 48 320.1zM348.8 64c-7.941 0-15.66 2.969-21.52 8.328L228.9 162.3C228.8 162.5 228.8 162.7 228.6 162.7C212 178.3 212.3 203.2 226.5 218.7c12.75 13.1 39.38 17.62 56.13 2.75C282.8 221.3 282.9 221.3 283 221.2l79.88-73.1c6.5-5.871 16.75-5.496 22.62 1c6 6.496 5.5 16.62-1 22.62l-26.12 23.87L504 313.7c2.875 2.496 5.5 4.996 7.875 7.742V127.1c-40.98-40.96-96.48-63.88-154.4-63.88L348.8 64zM334.6 217.4l-30 27.49c-29.75 27.11-75.25 24.49-101.8-4.371C176 211.2 178.1 165.7 207.3 138.9L289.1 64H282.5C224.7 64 169.1 87.08 128.2 127.9L128 351.8l18.25 .0369l90.5 81.82c27.5 22.37 67.75 18.12 90-9.246l18.12 15.24c15.88 12.1 39.38 10.5 52.38-5.371l31.38-38.6l5.374 4.498c13.75 11 33.88 9.002 45-4.748l9.538-11.78c11.12-13.75 9.036-33.78-4.694-44.93L334.6 217.4zM544 128.4v223.6c0 17.62 14.25 32.05 31.1 32.05L640 384V128.1L544 128.4zM592 352c-8.75 0-16-7.246-16-15.99c0-8.875 7.25-15.99 16-15.99S608 327.2 608 336.1C608 344.8 600.8 352 592 352z"], + "handshake-angle": [640, 512, ["hands-helping"], "f4c4", "M488 191.1h-152l.0001 51.86c.0001 37.66-27.08 72-64.55 75.77c-43.09 4.333-79.45-29.42-79.45-71.63V126.4l-24.51 14.73C123.2 167.8 96.04 215.7 96.04 267.5L16.04 313.8c-15.25 8.751-20.63 28.38-11.75 43.63l80 138.6c8.875 15.25 28.5 20.5 43.75 11.75l103.4-59.75h136.6c35.25 0 64-28.75 64-64c26.51 0 48-21.49 48-48V288h8c13.25 0 24-10.75 24-24l.0001-48C512 202.7 501.3 191.1 488 191.1zM635.7 154.5l-79.95-138.6c-8.875-15.25-28.5-20.5-43.75-11.75l-103.4 59.75h-62.57c-37.85 0-74.93 10.61-107.1 30.63C229.7 100.4 224 110.6 224 121.6l-.0004 126.4c0 22.13 17.88 40 40 40c22.13 0 40-17.88 40-40V159.1h184c30.93 0 56 25.07 56 56v28.5l80-46.25C639.3 189.4 644.5 169.8 635.7 154.5z"], + "handshake-simple": [640, 512, [129309, "handshake-alt"], "f4c6", "M334.6 217.4l-30 27.49C264 282.1 217.8 256.8 202.9 240.6C176 211.2 178.1 165.7 207.3 138.9L289.1 64H282.5C224.7 64 169.1 86.95 128.2 127.8L32 128.1c-17.6 0-32 14.39-32 31.98v159.8c0 17.59 14.4 32.04 31.1 32.04l114.3-.0604l90.5 81.82c27.5 22.37 67.75 18.11 90-9.255l18.12 15.25c15.88 12.1 39.38 10.5 52.38-5.369l31.38-38.6l5.374 4.498c13.75 11 33.88 9.002 45-4.748l9.576-11.83c11.08-13.7 8.979-33.75-4.701-44.86L334.6 217.4zM608 128.1l-96-.1257c-40.98-40.96-96.56-63.88-154.5-63.88L348.9 64c-8 0-15.62 3.197-21.62 8.568L229 162.3C228.9 162.5 228.8 162.7 228.8 162.7C212 178.5 212.4 203.3 226.6 218.7c9.625 10.5 35 21.62 56.13 2.75c0-.125 .25-.125 .375-.25l80-73.1c6.5-5.871 16.62-5.496 22.62 1s5.5 16.62-1 22.62l-26.12 23.87l145.6 118.1c12.12 9.992 19.5 23.49 22.12 37.98L608 351.7c17.6 0 32-14.38 32-31.98V160.1C640 142.4 625.7 128.1 608 128.1z"], + "handshake-simple-slash": [640, 512, ["handshake-alt-slash"], "e05f", "M358.6 195.6l145.6 118.1c12.12 9.992 19.5 23.49 22.12 37.98h81.62c17.6 0 31.1-14.39 31.1-31.99V159.1c0-17.67-14.33-31.99-31.1-31.99h-95.1c-40.98-40.96-96.56-63.98-154.5-63.98h-8.613c-7.1 0-15.63 3.002-21.63 8.373l-93.44 85.57L208.3 137.9L289.1 64.01L282.5 64c-43.48 0-85.19 13.66-120.8 37.44l-122.9-96.33C34.41 1.672 29.19 0 24.03 0c-7.125 0-14.19 3.156-18.91 9.187c-8.187 10.44-6.375 25.53 4.062 33.7L601.2 506.9c10.5 8.203 25.56 6.328 33.69-4.078c8.187-10.44 6.375-25.53-4.062-33.7l-135.5-106.2c-.1719-9.086-3.789-18.03-11.39-24.2l-149.2-121.2l-11.47 10.51L297.6 207.1l65.51-59.85c6.5-5.871 16.62-5.496 22.62 .1c5.1 6.496 5.5 16.62-.1 22.62L358.6 195.6zM32 127.1c-17.6 0-31.1 14.4-31.1 31.99v159.8c0 17.59 14.4 32.06 31.1 32.06l114.2-.0712l90.5 81.85c27.5 22.37 67.75 18.12 89.1-9.25l18.12 15.25c15.87 12.1 39.37 10.5 52.37-5.371l13.02-16.03L39.93 127.1L32 127.1z"], + "handshake-slash": [640, 512, [], "e060", "M543.1 128.2l.0002 223.8c0 17.62 14.25 31.99 31.1 31.99h64V128.1L543.1 128.2zM591.1 352c-8.75 0-16-7.251-16-15.99c0-8.875 7.25-15.1 16-15.1c8.75 0 15.1 7.122 15.1 15.1C607.1 344.8 600.7 352 591.1 352zM.0005 128.2v255.7l63.1 .0446c17.75 0 32-14.28 32-32.03L96 171.9l-55.77-43.71H.0005zM64 336c0 8.742-7.25 15.99-15.1 15.99s-15.1-7.251-15.1-15.99c0-8.875 7.25-15.1 15.1-15.1S64 327.2 64 336zM128 351.8h18.25l90.5 81.85c27.5 22.37 67.75 18.12 89.1-9.25l18.12 15.25c15.87 12.1 39.37 10.5 52.37-5.371l13.02-16.03L128 196.1V351.8zM495.2 362.8c-.1875-9.101-3.824-18.05-11.44-24.24l-149.2-121.1l-11.47 10.51L297.5 207.9l65.33-59.79c6.5-5.871 16.75-5.496 22.62 1c5.1 6.496 5.5 16.62-1 22.62l-26.12 23.87l145.6 118.1c2.875 2.496 5.5 4.996 7.875 7.742V127.1c-40.98-40.96-96.52-63.98-154.5-63.98h-8.613c-7.941 0-15.64 2.97-21.5 8.329L233.7 157.9L208.3 137.9l80.85-73.92L282.5 64c-43.47 0-85.16 13.68-120.8 37.45L38.81 5.109C34.41 1.672 29.19 0 24.03 0C16.91 0 9.846 3.156 5.127 9.187C-3.06 19.62-1.248 34.72 9.19 42.89l591.1 463.1c10.5 8.203 25.56 6.328 33.69-4.078c8.187-10.44 6.375-25.53-4.062-33.7L495.2 362.8z"], + "hanukiah": [640, 512, [128334], "f6e6", "M231.1 159.9C227.6 159.9 224 163.6 224 168V288h32V168C256 163.6 252.4 160 248 160L231.1 159.9zM167.1 159.9C163.6 159.9 160 163.6 160 168V288h32V168C192 163.6 188.4 160 184 160L167.1 159.9zM392 160C387.6 160 384 163.6 384 168V288h32V168c0-4.375-3.625-8.061-8-8.061L392 160zM456 160C451.6 160 448 163.6 448 168V288h32V168c0-4.375-3.625-8.061-8-8.061L456 160zM544 168c0-4.375-3.625-8.061-8-8.061L520 160C515.6 160 512 163.6 512 168V288h32V168zM103.1 159.9C99.62 159.9 96 163.6 96 168V288h32V168C128 163.6 124.4 160 120 160L103.1 159.9zM624 160h-31.98c-8.837 0-16.03 7.182-16.03 16.02L576 288c0 17.6-14.4 32-32 32h-192V128c0-8.837-7.151-16.01-15.99-16.01H303.1C295.2 111.1 288 119.2 288 128v192H96c-17.6 0-32-14.4-32-32l.0065-112C64.01 167.2 56.85 160 48.02 160H16C7.163 160 0 167.2 0 176V288c0 53.02 42.98 96 96 96h192v64H175.1C149.5 448 128 469.5 128 495.1C128 504.8 135.2 512 143.1 512h352C504.9 512 512 504.9 512 496C512 469.5 490.5 448 464 448H352v-64h192c53.02 0 96-42.98 96-96V176C640 167.2 632.8 160 624 160zM607.1 127.9C621.2 127.9 632 116 632 101.4C632 86.62 608 48 608 48s-24 38.62-24 53.38C584 116 594.7 127.9 607.1 127.9zM31.1 127.9C45.25 127.9 56 116 56 101.4C56 86.62 32 48 32 48S8 86.62 8 101.4C8 116 18.75 127.9 31.1 127.9zM319.1 79.94c13.25 0 24-11.94 24-26.57C344 38.62 320 0 320 0S296 38.62 296 53.38C296 67.1 306.7 79.94 319.1 79.94zM112 128c13.25 0 24-12 24-26.62C136 86.62 112 48 112 48S88 86.62 88 101.4C88 115.1 98.75 128 112 128zM176 128c13.25 0 24-12 24-26.62C200 86.62 176 48 176 48S152 86.62 152 101.4C152 115.1 162.8 128 176 128zM240 128c13.25 0 24-12 24-26.62C264 86.62 240 48 240 48S216 86.62 216 101.4C216 115.1 226.8 128 240 128zM400 128c13.25 0 24-12 24-26.62C424 86.62 400 48 400 48s-24 38.62-24 53.38C376 115.1 386.8 128 400 128zM464 128c13.25 0 24-12 24-26.62C488 86.62 464 48 464 48s-24 38.62-24 53.38C440 115.1 450.8 128 464 128zM528 128c13.25 0 24-12 24-26.62C552 86.62 528 48 528 48s-24 38.62-24 53.38C504 115.1 514.8 128 528 128z"], + "hard-drive": [512, 512, [128436, "hdd"], "f0a0", "M464 288h-416C21.5 288 0 309.5 0 336v96C0 458.5 21.5 480 48 480h416c26.5 0 48-21.5 48-48v-96C512 309.5 490.5 288 464 288zM320 416c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S337.6 416 320 416zM416 416c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S433.6 416 416 416zM464 32h-416C21.5 32 0 53.5 0 80v192.4C13.41 262.3 29.92 256 48 256h416c18.08 0 34.59 6.254 48 16.41V80C512 53.5 490.5 32 464 32z"], + "hashtag": [448, 512, [62098], "23", "M416 127.1h-58.23l9.789-58.74c2.906-17.44-8.875-33.92-26.3-36.83c-17.53-2.875-33.92 8.891-36.83 26.3L292.9 127.1H197.8l9.789-58.74c2.906-17.44-8.875-33.92-26.3-36.83c-17.53-2.875-33.92 8.891-36.83 26.3L132.9 127.1H64c-17.67 0-32 14.33-32 32C32 177.7 46.33 191.1 64 191.1h58.23l-21.33 128H32c-17.67 0-32 14.33-32 32c0 17.67 14.33 31.1 32 31.1h58.23l-9.789 58.74c-2.906 17.44 8.875 33.92 26.3 36.83C108.5 479.9 110.3 480 112 480c15.36 0 28.92-11.09 31.53-26.73l11.54-69.27h95.12l-9.789 58.74c-2.906 17.44 8.875 33.92 26.3 36.83C268.5 479.9 270.3 480 272 480c15.36 0 28.92-11.09 31.53-26.73l11.54-69.27H384c17.67 0 32-14.33 32-31.1c0-17.67-14.33-32-32-32h-58.23l21.33-128H416c17.67 0 32-14.32 32-31.1C448 142.3 433.7 127.1 416 127.1zM260.9 319.1H165.8L187.1 191.1h95.12L260.9 319.1z"], + "hat-cowboy": [640, 512, [], "f8c0", "M489.1 264.9C480.5 207.5 450.5 32 392.3 32c-14 0-26.58 5.875-37.08 14c-20.75 15.87-49.62 15.87-70.5 0C274.2 38 261.7 32 247.7 32c-58.25 0-88.27 175.5-97.77 232.9C188.7 277.5 243.7 288 319.1 288S451.2 277.5 489.1 264.9zM632.9 227.7c-6.125-4.125-14.2-3.51-19.7 1.49c-1 .875-101.3 90.77-293.1 90.77c-190.9 0-292.2-89.99-293.2-90.86c-5.5-4.875-13.71-5.508-19.71-1.383c-6.125 4.125-8.587 11.89-6.087 18.77C1.749 248.5 78.37 448 319.1 448s318.2-199.5 318.1-201.5C641.5 239.6 639 231.9 632.9 227.7z"], + "hat-cowboy-side": [640, 512, [], "f8c1", "M260.8 260C232.1 237.1 198.8 225 164.4 225c-77.38 0-142.9 62.75-163 156c-3.5 16.62-.375 33.88 8.625 47.38c8.75 13.12 21.88 20.62 35.88 20.62H592c-103.2 0-155-37.13-233.2-104.5L260.8 260zM495.5 241.8l-27.13-156.5c-2.875-17.25-12.75-32.5-27.12-42.25c-14.37-9.75-32.24-13.3-49.24-9.675L200.9 74.02C173.7 79.77 153.5 102.3 150.5 129.8L143.6 195c6.875-.875 13.62-2 20.75-2c41.87 0 82 14.5 117.4 42.88l98 84.37c71 61.25 115.1 96.75 212.2 96.75c26.5 0 48-21.5 48-48C640 343.6 610.4 249.6 495.5 241.8z"], + "hat-wizard": [512, 512, [], "f6e8", "M200 376l-49.23-16.41c-7.289-2.434-7.289-12.75 0-15.18L200 328l16.41-49.23c2.434-7.289 12.75-7.289 15.18 0L248 328l49.23 16.41c7.289 2.434 7.289 12.75 0 15.18L248 376L240 416H448l-86.38-201.6C355.4 200 354.8 183.8 359.8 168.9L416 0L228.4 107.3C204.8 120.8 185.1 141.4 175 166.4L64 416h144L200 376zM231.2 172.4L256 160l12.42-24.84c1.477-2.949 5.68-2.949 7.156 0L288 160l24.84 12.42c2.949 1.477 2.949 5.68 0 7.156L288 192l-12.42 24.84c-1.477 2.949-5.68 2.949-7.156 0L256 192L231.2 179.6C228.2 178.1 228.2 173.9 231.2 172.4zM496 448h-480C7.164 448 0 455.2 0 464C0 490.5 21.49 512 48 512h416c26.51 0 48-21.49 48-48C512 455.2 504.8 448 496 448z"], + "head-side-cough": [640, 512, [], "e061", "M608 359.1c-13.25 0-24 10.75-24 24s10.75 24 24 24s24-10.75 24-24S621.3 359.1 608 359.1zM477.2 275c-21-47.13-48.49-151.8-73.11-186.8C365.6 33.63 302.5 0 234.1 0L192 0C86 0 0 86 0 192c0 56.75 24.75 107.6 64 142.9L64 512h223.1v-32h64.01c35.38 0 64-28.62 64-63.1L320 416c-17.67 0-32-14.33-32-32s14.33-32 32-32h95.98l-.003-32h31.99C471.1 320 486.6 296.1 477.2 275zM336 224c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S353.6 224 336 224zM480 359.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24s24-10.75 24-24S493.3 359.1 480 359.1zM608 311.1c13.25 0 24-10.75 24-24s-10.75-24-24-24s-24 10.75-24 24S594.8 311.1 608 311.1zM544 311.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24s24-10.75 24-24S557.3 311.1 544 311.1zM544 407.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24s24-10.75 24-24S557.3 407.1 544 407.1zM608 455.1c-13.25 0-24 10.75-24 24s10.75 24 24 24s24-10.75 24-24S621.3 455.1 608 455.1z"], + "head-side-cough-slash": [640, 512, [], "e062", "M607.1 311.1c13.25 0 24-10.75 24-23.1s-10.75-23.1-24-23.1s-23.1 10.75-23.1 23.1S594.7 311.1 607.1 311.1zM607.1 407.1c13.25 0 24-10.78 24-24.03c0-13.25-10.75-23.1-24-23.1s-24 10.78-24 24.03C583.1 397.2 594.7 407.1 607.1 407.1zM630.8 469.1l-190.2-149.1h7.4c23.12 0 38.62-23.87 29.25-44.1c-20.1-47.12-48.49-151.7-73.11-186.7C365.6 33.63 302.5 0 234.1 0H192C149.9 0 111.5 14.26 79.88 37.29L38.81 5.109C34.41 1.672 29.19 0 24.03 0C16.91 0 9.845 3.156 5.126 9.187c-8.187 10.44-6.375 25.53 4.062 33.7l591.1 463.1c10.5 8.203 25.56 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1zM320 415.1c-17.67 0-31.1-14.33-31.1-31.1S302.3 351.1 320 351.1l5.758-.0009L18.16 110.9C6.631 135.6 .0006 162.1 .0006 191.1c0 56.75 24.75 107.6 64 142.9L64 511.1h223.1l0-31.1l64.01 .001c33.25 0 60.2-25.38 63.37-57.78l-7.932-6.217H320zM543.1 359.1c13.25 0 24-10.78 24-24.03s-10.75-23.1-24-23.1c-13.25 0-24 10.78-24 24.03C519.1 349.2 530.7 359.1 543.1 359.1z"], + "head-side-mask": [512, 512, [], "e063", "M.1465 184.4C-2.166 244.2 23.01 298 63.99 334.9L63.99 512h160L224 316.5L3.674 156.2C1.871 165.4 .5195 174.8 .1465 184.4zM336 368H496L512 320h-255.1l.0178 192h145.9c27.55 0 52-17.63 60.71-43.76L464 464h-127.1c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16h138.7l10.67-32h-149.3c-8.836 0-16-7.164-16-16C320 375.2 327.2 368 336 368zM509.2 275c-20.1-47.13-48.49-151.8-73.11-186.8C397.6 33.63 334.5 0 266.1 0H200C117.1 0 42.48 50.57 13.25 123.7L239.2 288h272.6C511.8 283.7 511.1 279.3 509.2 275zM352 224c-17.62 0-32-14.38-32-32s14.38-32 32-32c17.62 0 31.1 14.38 31.1 32S369.6 224 352 224z"], + "head-side-virus": [512, 512, [], "e064", "M208 175.1c-8.836 0-16 7.162-16 16c0 8.836 7.163 15.1 15.1 15.1s16-7.164 16-16C224 183.2 216.8 175.1 208 175.1zM272 239.1c-8.836 0-15.1 7.163-15.1 16c0 8.836 7.165 16 16 16s16-7.164 16-16C288 247.2 280.8 239.1 272 239.1zM509.2 275c-20.94-47.13-48.46-151.7-73.1-186.8C397.7 33.59 334.6 0 266.1 0H192C85.95 0 0 85.95 0 192c0 56.8 24.8 107.7 64 142.8L64 512h256l-.0044-64h63.99c35.34 0 63.1-28.65 63.1-63.1V320h31.98C503.1 320 518.6 296.2 509.2 275zM368 240h-12.12c-28.51 0-42.79 34.47-22.63 54.63l8.576 8.576c6.25 6.25 6.25 16.38 0 22.62c-3.125 3.125-7.219 4.688-11.31 4.688s-8.188-1.562-11.31-4.688l-8.576-8.576c-20.16-20.16-54.63-5.881-54.63 22.63V352c0 8.844-7.156 16-16 16s-16-7.156-16-16v-12.12c0-28.51-34.47-42.79-54.63-22.63l-8.576 8.576c-3.125 3.125-7.219 4.688-11.31 4.688c-4.096 0-8.188-1.562-11.31-4.688c-6.25-6.25-6.25-16.38 0-22.62l8.577-8.576C166.9 274.5 152.6 240 124.1 240H112c-8.844 0-16-7.156-16-16s7.157-16 16-16L124.1 208c28.51 0 42.79-34.47 22.63-54.63L138.2 144.8c-6.25-6.25-6.25-16.38 0-22.62s16.38-6.25 22.63 0L169.4 130.7c20.16 20.16 54.63 5.881 54.63-22.63V96c0-8.844 7.156-16 16-16S256 87.16 256 96v12.12c0 28.51 34.47 42.79 54.63 22.63l8.576-8.576c6.25-6.25 16.38-6.25 22.63 0s6.25 16.38 0 22.62L333.3 153.4C313.1 173.5 327.4 208 355.9 208l12.12-.0004c8.844 0 15.1 7.157 15.1 16S376.8 240 368 240z"], + "heading": [448, 512, ["header"], "f1dc", "M448 448c0 17.69-14.33 32-32 32h-96c-17.67 0-32-14.31-32-32s14.33-32 32-32h16v-144h-224v144H128c17.67 0 32 14.31 32 32s-14.33 32-32 32H32c-17.67 0-32-14.31-32-32s14.33-32 32-32h16v-320H32c-17.67 0-32-14.31-32-32s14.33-32 32-32h96c17.67 0 32 14.31 32 32s-14.33 32-32 32H112v112h224v-112H320c-17.67 0-32-14.31-32-32s14.33-32 32-32h96c17.67 0 32 14.31 32 32s-14.33 32-32 32h-16v320H416C433.7 416 448 430.3 448 448z"], + "headphones": [512, 512, [127911], "f025", "M512 287.9l-.0042 112C511.1 444.1 476.1 480 432 480c-26.47 0-48-21.56-48-48.06V304.1C384 277.6 405.5 256 432 256c10.83 0 20.91 2.723 30.3 6.678C449.7 159.1 362.1 80.13 256 80.13S62.29 159.1 49.7 262.7C59.09 258.7 69.17 256 80 256C106.5 256 128 277.6 128 304.1v127.9C128 458.4 106.5 480 80 480c-44.11 0-79.1-35.88-79.1-80.06L0 288c0-141.2 114.8-256 256-256c140.9 0 255.6 114.5 255.1 255.3C511.1 287.5 511.1 287.7 512 287.9z"], + "headphones-simple": [512, 512, ["headphones-alt"], "f58f", "M256 32C112.9 32 4.563 151.1 0 288v104C0 405.3 10.75 416 23.1 416S48 405.3 48 392V288c0-114.7 93.34-207.8 208-207.8C370.7 80.2 464 173.3 464 288v104C464 405.3 474.7 416 488 416S512 405.3 512 392V287.1C507.4 151.1 399.1 32 256 32zM160 288L144 288c-35.34 0-64 28.7-64 64.13v63.75C80 451.3 108.7 480 144 480L160 480c17.66 0 32-14.34 32-32.05v-127.9C192 302.3 177.7 288 160 288zM368 288L352 288c-17.66 0-32 14.32-32 32.04v127.9c0 17.7 14.34 32.05 32 32.05L368 480c35.34 0 64-28.7 64-64.13v-63.75C432 316.7 403.3 288 368 288z"], + "headset": [512, 512, [], "f590", "M191.1 224c0-17.72-14.34-32.04-32-32.04L144 192c-35.34 0-64 28.66-64 64.08v47.79C80 339.3 108.7 368 144 368H160c17.66 0 32-14.36 32-32.06L191.1 224zM256 0C112.9 0 4.583 119.1 .0208 256L0 296C0 309.3 10.75 320 23.1 320S48 309.3 48 296V256c0-114.7 93.34-207.8 208-207.8C370.7 48.2 464 141.3 464 256v144c0 22.09-17.91 40-40 40h-110.7C305 425.7 289.7 416 272 416H241.8c-23.21 0-44.5 15.69-48.87 38.49C187 485.2 210.4 512 239.1 512H272c17.72 0 33.03-9.711 41.34-24H424c48.6 0 88-39.4 88-88V256C507.4 119.1 399.1 0 256 0zM368 368c35.34 0 64-28.7 64-64.13V256.1C432 220.7 403.3 192 368 192l-16 0c-17.66 0-32 14.34-32 32.04L320 335.9C320 353.7 334.3 368 352 368H368z"], + "heart": [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 10084, 61578, 9829], "f004", "M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z"], + "heart-circle-bolt": [576, 512, [], "e4fc", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM464.8 286.4L368.8 358.4C364.7 361.5 362.1 366.9 364.6 371.8C366.2 376.7 370.8 380 376 380H411.6L381.5 434.2C378.8 439.1 379.8 445.3 384.1 449C388.4 452.8 394.7 452.1 399.2 449.6L495.2 377.6C499.3 374.5 501 369.1 499.4 364.2C497.8 359.3 493.2 356 488 356H452.4L482.5 301.8C485.2 296.9 484.2 290.7 479.9 286.1C475.6 283.2 469.3 283 464.8 286.4V286.4z"], + "heart-circle-check": [576, 512, [], "e4fd", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM476.7 324.7L416 385.4L387.3 356.7C381.1 350.4 370.9 350.4 364.7 356.7C358.4 362.9 358.4 373.1 364.7 379.3L404.7 419.3C410.9 425.6 421.1 425.6 427.3 419.3L499.3 347.3C505.6 341.1 505.6 330.9 499.3 324.7C493.1 318.4 482.9 318.4 476.7 324.7H476.7z"], + "heart-circle-exclamation": [576, 512, [], "e4fe", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM415.1 288V368C415.1 376.8 423.2 384 431.1 384C440.8 384 447.1 376.8 447.1 368V288C447.1 279.2 440.8 272 431.1 272C423.2 272 415.1 279.2 415.1 288z"], + "heart-circle-minus": [576, 512, [], "e4ff", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM496 351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1z"], + "heart-circle-plus": [576, 512, [], "e500", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM448 303.1C448 295.2 440.8 287.1 432 287.1C423.2 287.1 416 295.2 416 303.1V351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H416V431.1C416 440.8 423.2 447.1 432 447.1C440.8 447.1 448 440.8 448 431.1V383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1H448V303.1z"], + "heart-circle-xmark": [576, 512, [], "e501", "M256 368C256 403.7 266.6 436.9 284.9 464.6L279.4 470.3C266.4 483.2 245.5 483.2 233.5 470.3L39.71 270.5C-16.22 212.5-13.23 116.6 49.7 62.68C103.6 15.73 186.5 24.72 236.5 75.67L256.4 96.64L275.4 75.67C325.4 24.72 407.3 15.73 463.2 62.68C506.1 100.1 520.7 157.6 507 208.7C484.3 198 458.8 192 432 192C334.8 192 256 270.8 256 368zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM491.3 331.3C497.6 325.1 497.6 314.9 491.3 308.7C485.1 302.4 474.9 302.4 468.7 308.7L432 345.4L395.3 308.7C389.1 302.4 378.9 302.4 372.7 308.7C366.4 314.9 366.4 325.1 372.7 331.3L409.4 368L372.7 404.7C366.4 410.9 366.4 421.1 372.7 427.3C378.9 433.6 389.1 433.6 395.3 427.3L432 390.6L468.7 427.3C474.9 433.6 485.1 433.6 491.3 427.3C497.6 421.1 497.6 410.9 491.3 404.7L454.6 368L491.3 331.3z"], + "heart-crack": [512, 512, [128148, "heart-broken"], "f7a9", "M119.4 44.1C142.7 40.22 166.2 42.2 187.1 49.43L237.8 126.9L162.3 202.3C160.8 203.9 159.1 205.1 160 208.2C160 210.3 160.1 212.4 162.6 213.9L274.6 317.9C277.5 320.6 281.1 320.7 285.1 318.2C288.2 315.6 288.9 311.2 286.8 307.8L226.4 209.7L317.1 134.1C319.7 131.1 320.7 128.5 319.5 125.3L296.8 61.74C325.4 45.03 359.2 38.53 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.09V44.1z"], + "heart-pulse": [576, 512, ["heartbeat"], "f21e", "M352.4 243.8l-49.83 99.5c-6.009 12-23.41 11.62-28.92-.625L216.7 216.3l-30.05 71.75L88.55 288l176.4 182.2c12.66 13.07 33.36 13.07 46.03 0l176.4-182.2l-112.1 .0052L352.4 243.8zM495.2 62.86c-54.36-46.98-137.5-38.5-187.5 13.06L288 96.25L268.3 75.92C218.3 24.36 135.2 15.88 80.81 62.86C23.37 112.5 16.84 197.6 60.18 256h105l35.93-86.25c5.508-12.88 23.66-13.12 29.54-.375l58.21 129.4l49.07-98c5.884-11.75 22.78-11.75 28.67 0l27.67 55.25h121.5C559.2 197.6 552.6 112.5 495.2 62.86z"], + "helicopter": [640, 512, [128641], "f533", "M127.1 32C127.1 14.33 142.3 0 159.1 0H544C561.7 0 576 14.33 576 32C576 49.67 561.7 64 544 64H384V128H416C504.4 128 576 199.6 576 288V352C576 369.7 561.7 384 544 384H303.1C293.9 384 284.4 379.3 278.4 371.2L191.1 256L47.19 198.1C37.65 194.3 30.52 186.1 28.03 176.1L4.97 83.88C2.445 73.78 10.08 64 20.49 64H47.1C58.07 64 67.56 68.74 73.6 76.8L111.1 128H319.1V64H159.1C142.3 64 127.1 49.67 127.1 32V32zM384 320H512V288C512 234.1 469 192 416 192H384V320zM630.6 470.6L626.7 474.5C602.7 498.5 570.2 512 536.2 512H255.1C238.3 512 223.1 497.7 223.1 480C223.1 462.3 238.3 448 255.1 448H536.2C553.2 448 569.5 441.3 581.5 429.3L585.4 425.4C597.9 412.9 618.1 412.9 630.6 425.4C643.1 437.9 643.1 458.1 630.6 470.6L630.6 470.6z"], + "helicopter-symbol": [576, 512, [], "e502", "M320 66.66V1.985C435.8 16.42 527.6 108.2 542 224H477.3C463.9 143.6 400.4 80.15 320 66.66V66.66zM320 510V445.4C400.4 431.9 463.9 368.4 477.3 288H542C527.6 403.8 435.8 495.6 320 510V510zM33.98 288H98.65C112.1 368.4 175.6 431.9 256 445.4V510C140.2 495.6 48.42 403.8 33.98 288zM256 1.984V66.66C175.6 80.15 112.1 143.6 98.66 224H33.98C48.42 108.2 140.2 16.42 256 1.985V1.984zM240 224H336V160C336 142.3 350.3 128 368 128C385.7 128 400 142.3 400 160V352C400 369.7 385.7 384 368 384C350.3 384 336 369.7 336 352V288H240V352C240 369.7 225.7 384 208 384C190.3 384 176 369.7 176 352V160C176 142.3 190.3 128 208 128C225.7 128 240 142.3 240 160V224z"], + "helmet-safety": [576, 512, ["hard-hat", "hat-hard"], "f807", "M544 280.9c0-89.17-61.83-165.4-139.6-197.4L352 174.2V49.78C352 39.91 344.1 32 334.2 32H241.8C231.9 32 224 39.91 224 49.78v124.4L171.6 83.53C93.83 115.5 32 191.7 32 280.9L31.99 352h512L544 280.9zM574.7 393.7C572.2 387.8 566.4 384 560 384h-544c-6.375 0-12.16 3.812-14.69 9.656c-2.531 5.875-1.344 12.69 3.062 17.34C7.031 413.8 72.02 480 287.1 480s280.1-66.19 283.6-69C576 406.3 577.2 399.5 574.7 393.7z"], + "helmet-un": [512, 512, [], "e503", "M480 224C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H368V462.5L369.5 464H456C469.3 464 480 474.7 480 488C480 501.3 469.3 512 456 512H360C353.9 512 347.1 509.7 343.5 505.4L214.9 384H87.65C39.24 384 0 344.8 0 296.3V240C0 107.5 107.5 0 240 0C367.2 0 471.2 98.91 479.5 224H480zM320 288H274.4L241.1 343.5L320 417.2V288zM285.3 103.1C281.4 97.26 274.1 94.64 267.4 96.69C260.6 98.73 256 104.9 256 112V208C256 216.8 263.2 224 272 224C280.8 224 288 216.8 288 208V164.8L322.7 216.9C326.6 222.7 333.9 225.4 340.6 223.3C347.4 221.3 352 215.1 352 208V112C352 103.2 344.8 96 336 96C327.2 96 320 103.2 320 112V155.2L285.3 103.1zM160 112C160 103.2 152.8 96 144 96C135.2 96 128 103.2 128 112V176C128 202.5 149.5 224 176 224C202.5 224 224 202.5 224 176V112C224 103.2 216.8 96 208 96C199.2 96 192 103.2 192 112V176C192 184.8 184.8 192 176 192C167.2 192 160 184.8 160 176V112z"], + "highlighter": [576, 512, [], "f591", "M143.1 320V248.3C143.1 233 151.2 218.7 163.5 209.6L436.6 8.398C444 2.943 452.1 0 462.2 0C473.6 0 484.5 4.539 492.6 12.62L547.4 67.38C555.5 75.46 559.1 86.42 559.1 97.84C559.1 107 557.1 115.1 551.6 123.4L350.4 396.5C341.3 408.8 326.1 416 311.7 416H239.1L214.6 441.4C202.1 453.9 181.9 453.9 169.4 441.4L118.6 390.6C106.1 378.1 106.1 357.9 118.6 345.4L143.1 320zM489.4 99.92L460.1 70.59L245 229L330.1 314.1L489.4 99.92zM23.03 466.3L86.06 403.3L156.7 473.9L125.7 504.1C121.2 509.5 115.1 512 108.7 512H40C26.75 512 16 501.3 16 488V483.3C16 476.1 18.53 470.8 23.03 466.3V466.3z"], + "hill-avalanche": [640, 512, [], "e507", "M161.4 91.58C160.5 87.87 160 83.99 160 80C160 53.49 181.5 32 208 32C229.9 32 248.3 46.62 254.1 66.62C268.5 45.7 292.7 32 320 32C364.2 32 400 67.82 400 112C400 119.4 398.1 126.6 397.1 133.5C426.9 145.1 448 174.1 448 208C448 236.4 433.2 261.3 410.9 275.5L492.6 357.2C508.2 372.8 533.6 372.8 549.2 357.2C564.8 341.6 564.8 316.2 549.2 300.6C533.6 284.1 508.2 284.1 492.6 300.6L458.7 266.7C493 232.3 548.8 232.3 583.1 266.7C617.5 301 617.5 356.8 583.1 391.1C552.8 421.4 505.9 425 471.7 401.9L161.4 91.58zM512 64C512 81.67 497.7 96 480 96C462.3 96 448 81.67 448 64C448 46.33 462.3 32 480 32C497.7 32 512 46.33 512 64zM480 160C480 142.3 494.3 128 512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192C494.3 192 480 177.7 480 160zM456.1 443.7C482.2 468.9 464.3 512 428.7 512H112C67.82 512 32 476.2 32 432V115.3C32 79.68 75.09 61.83 100.3 87.03L456.1 443.7z"], + "hill-rockslide": [576, 512, [], "e508", "M252.4 103.8C249.7 98.97 249.7 93.03 252.4 88.16L279.4 40.16C282.2 35.12 287.6 32 293.4 32H346.6C352.4 32 357.8 35.12 360.6 40.16L387.6 88.16C390.3 93.03 390.3 98.97 387.6 103.8L360.6 151.8C357.8 156.9 352.4 160 346.6 160H293.4C287.6 160 282.2 156.9 279.4 151.8L252.4 103.8zM424.1 443.7C450.2 468.9 432.3 512 396.7 512H80C35.82 512 0 476.2 0 432V115.3C0 79.68 43.09 61.83 68.28 87.03L424.1 443.7zM456.2 376.6C451.1 373.8 448 368.4 448 362.6V309.4C448 303.6 451.1 298.2 456.2 295.4L504.2 268.4C509 265.7 514.1 265.7 519.8 268.4L567.8 295.4C572.9 298.2 576 303.6 576 309.4V362.6C576 368.4 572.9 373.8 567.8 376.6L519.8 403.6C514.1 406.3 509 406.3 504.2 403.6L456.2 376.6zM192 64C192 81.67 177.7 96 160 96C142.3 96 128 81.67 128 64C128 46.33 142.3 32 160 32C177.7 32 192 46.33 192 64zM352 256C352 238.3 366.3 224 384 224C401.7 224 416 238.3 416 256C416 273.7 401.7 288 384 288C366.3 288 352 273.7 352 256z"], + "hippo": [640, 512, [129435], "f6ed", "M407 47.03C416.4 37.66 431.6 37.66 440.1 47.03L458.2 64.21C460.1 64.07 462 64 463.1 64H495.1C507.2 64 517.9 66.31 527.6 70.48L543 55.03C552.4 45.66 567.6 45.66 576.1 55.03C586.3 64.4 586.3 79.6 576.1 88.97L564 101.9C571.6 114.1 575.1 128.6 575.1 144C575.1 154.2 583.4 162.8 592.7 166.1C620.6 179.5 639.1 207.5 639.1 240C639.1 266.2 627.4 289.4 607.1 304V336C607.1 344.8 600.8 352 591.1 352H559.1C551.2 352 543.1 344.8 543.1 336V320H479.1V336C479.1 344.8 472.8 352 463.1 352H431.1C423.2 352 415.1 344.8 415.1 336V318.4C404.2 316 393.3 310.1 383.1 304C382.5 302.9 381.1 301.7 379.7 300.5C362.7 285.9 351.1 264.2 351.1 240C351.1 231.2 344.8 224 335.1 224C327.2 224 319.1 231.2 319.1 240C319.1 284.7 346.2 323.2 383.1 341.2V352C383.1 369.7 398.3 384 415.1 384H447.1V448C447.1 465.7 433.7 480 415.1 480H351.1C334.3 480 319.1 465.7 319.1 448V372C300.2 379.7 278.6 384 255.1 384C233.4 384 211.8 379.7 191.1 372V448C191.1 465.7 177.7 480 159.1 480H95.1C78.33 480 63.1 465.7 63.1 448V329.1L45.93 369.7C40.55 381.9 26.36 387.3 14.25 381.9C2.138 376.5-3.317 362.4 2.067 350.3L23.1 300.9C29.27 289 31.1 276.2 31.1 263.2C31.1 155.7 117.2 68.02 223.8 64.13L223.1 64H288C329.7 64 371.4 76.07 405.2 89.73C406.9 87.9 408.7 86.15 410.5 84.48L407 80.97C397.7 71.6 397.7 56.4 407 47.03H407zM455.1 208C442.7 208 431.1 218.7 431.1 232C431.1 245.3 442.7 256 455.1 256C469.3 256 479.1 245.3 479.1 232C479.1 218.7 469.3 208 455.1 208zM567.1 256C581.3 256 591.1 245.3 591.1 232C591.1 218.7 581.3 208 567.1 208C554.7 208 543.1 218.7 543.1 232C543.1 245.3 554.7 256 567.1 256zM463.1 128C455.2 128 447.1 135.2 447.1 144C447.1 152.8 455.2 160 463.1 160C472.8 160 479.1 152.8 479.1 144C479.1 135.2 472.8 128 463.1 128zM527.1 160C536.8 160 543.1 152.8 543.1 144C543.1 135.2 536.8 128 527.1 128C519.2 128 511.1 135.2 511.1 144C511.1 152.8 519.2 160 527.1 160z"], + "hockey-puck": [512, 512, [], "f453", "M0 160c0-53 114.6-96 256-96s256 43 256 96s-114.6 96-256 96S0 213 0 160zM255.1 303.1C156.4 303.1 56.73 283.4 0 242.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2C455.3 283.4 355.6 303.1 255.1 303.1z"], + "holly-berry": [512, 512, [], "f7aa", "M287.1 143.1c0 26.5 21.5 47.1 47.1 47.1c26.5 0 48-21.5 48-47.1s-21.5-47.1-48-47.1C309.5 95.99 287.1 117.5 287.1 143.1zM176 191.1c26.5 0 47.1-21.5 47.1-47.1S202.5 95.96 176 95.96c-26.5 0-47.1 21.5-47.1 47.1S149.5 191.1 176 191.1zM303.1 47.1C303.1 21.5 282.5 0 255.1 0c-26.5 0-47.1 21.5-47.1 47.1S229.5 95.99 255.1 95.99C282.5 95.99 303.1 74.5 303.1 47.1zM243.7 242.6C245.3 229.7 231.9 220.1 219.5 225.5C179.7 242.8 137.8 251.4 96.72 250.8C86.13 250.6 78.49 260.7 81.78 270.4C86.77 285.7 90.33 301.4 92.44 317.7c2.133 16.15-9.387 31.26-26.12 34.23c-16.87 2.965-33.7 4.348-50.48 4.152c-10.6-.0586-18.37 10.05-15.08 19.74c12.4 35.79 16.57 74.93 12.12 114.7c-1.723 14.96 13.71 25.67 28.02 19.8c38.47-15.95 78.77-23.81 118.2-23.34c10.58 .1953 18.36-9.91 15.07-19.6c-5.141-15.15-8.68-31.06-10.79-47.34c-2.133-16.16 9.371-31.13 26.24-34.09c16.73-2.973 33.57-4.496 50.36-4.301c10.73 .0781 18.51-10.03 15.22-19.72C242.5 324.7 238.5 283.9 243.7 242.6zM496.2 356.1c-16.78 .1953-33.61-1.188-50.48-4.152c-16.73-2.973-28.25-18.08-26.12-34.23c2.115-16.28 5.67-32.05 10.66-47.32c3.289-9.691-4.35-19.81-14.93-19.62c-41.11 .6484-83.01-7.965-122.7-25.23c-6.85-2.969-13.71-1.18-18.47 2.953c1.508 5.836 2.102 11.93 1.332 18.05c-4.539 36.23-1.049 72.56 10.12 105.1c3.395 9.988 3.029 20.73-.4766 30.52c12.44 .5 24.89 1.602 37.28 3.801c16.87 2.957 28.37 17.93 26.24 34.09c-2.115 16.27-5.654 32.19-10.79 47.34c-3.289 9.691 4.486 19.8 15.07 19.6c39.47-.4766 79.77 7.383 118.2 23.34c14.31 5.867 29.74-4.844 28.02-19.8c-4.451-39.81-.2832-78.95 12.12-114.7C514.5 366.1 506.8 356 496.2 356.1z"], + "horse": [576, 512, [128014], "f6f0", "M575.9 76.61c0-8.125-3.05-15.84-8.55-21.84c-3.875-4-8.595-9.125-13.72-14.5c11.12-6.75 19.47-17.51 22.22-30.63c.9999-5-2.849-9.641-7.974-9.641L447.9 0c-70.62 0-127.9 57.25-127.9 128L159.1 128c-28.87 0-54.38 12.1-72 33.12L87.1 160C39.5 160 .0001 199.5 .0001 248L0 304c0 8.875 7.125 15.1 15.1 15.1L31.1 320c8.874 0 15.1-7.125 15.1-16l.0005-56c0-13.25 6.884-24.4 16.76-31.65c-.125 2.5-.758 5.024-.758 7.649c0 27.62 11.87 52.37 30.5 69.87l-25.65 68.61c-4.586 12.28-5.312 25.68-2.128 38.4l21.73 86.89C92.02 502 104.8 512 119.5 512h32.98c20.81 0 36.08-19.55 31.05-39.74L162.2 386.9l23.78-63.61l133.1 22.34L319.1 480c0 17.67 14.33 32 31.1 32h31.1c17.67 0 31.1-14.33 31.1-32l.0166-161.8C435.7 297.1 447.1 270.5 447.1 240c0-.25-.1025-.3828-.1025-.6328V136.9L463.9 144l18.95 37.72c7.481 14.86 25.08 21.55 40.52 15.34l32.54-13.05c12.13-4.878 20.11-16.67 20.09-29.74L575.9 76.61zM511.9 96c-8.75 0-15.1-7.125-15.1-16S503.1 64 511.9 64c8.874 0 15.1 7.125 15.1 16S520.8 96 511.9 96z"], + "horse-head": [512, 512, [], "f7ab", "M509.8 332.5l-69.89-164.3c-14.88-41.25-50.38-70.98-93.01-79.24c18-10.63 46.35-35.9 34.23-82.29c-1.375-5.001-7.112-7.972-11.99-6.097l-202.3 75.66C35.89 123.4 0 238.9 0 398.8v81.24C0 497.7 14.25 512 32 512h236.2c23.75 0 39.3-25.03 28.55-46.28l-40.78-81.71V383.3c-45.63-3.5-84.66-30.7-104.3-69.58c-1.625-3.125-.9342-6.951 1.566-9.327l12.11-12.11c3.875-3.875 10.64-2.692 12.89 2.434c14.88 33.63 48.17 57.38 87.42 57.38c17.13 0 33.05-5.091 46.8-13.22l46 63.9c6 8.501 15.75 13.34 26 13.34h50.28c8.501 0 16.61-3.388 22.61-9.389l45.34-39.84C511.6 357.7 514.4 344.2 509.8 332.5zM328.1 223.1c-13.25 0-23.96-10.75-23.96-24c0-13.25 10.75-23.92 24-23.92s23.94 10.73 23.94 23.98C352 213.3 341.3 223.1 328.1 223.1z"], + "hospital": [640, 512, [127973, 62589, "hospital-alt", "hospital-wide"], "f0f8", "M192 48C192 21.49 213.5 0 240 0H400C426.5 0 448 21.49 448 48V512H368V432C368 405.5 346.5 384 320 384C293.5 384 272 405.5 272 432V512H192V48zM312 64C303.2 64 296 71.16 296 80V104H272C263.2 104 256 111.2 256 120V136C256 144.8 263.2 152 272 152H296V176C296 184.8 303.2 192 312 192H328C336.8 192 344 184.8 344 176V152H368C376.8 152 384 144.8 384 136V120C384 111.2 376.8 104 368 104H344V80C344 71.16 336.8 64 328 64H312zM160 96V512H48C21.49 512 0 490.5 0 464V320H80C88.84 320 96 312.8 96 304C96 295.2 88.84 288 80 288H0V224H80C88.84 224 96 216.8 96 208C96 199.2 88.84 192 80 192H0V144C0 117.5 21.49 96 48 96H160zM592 96C618.5 96 640 117.5 640 144V192H560C551.2 192 544 199.2 544 208C544 216.8 551.2 224 560 224H640V288H560C551.2 288 544 295.2 544 304C544 312.8 551.2 320 560 320H640V464C640 490.5 618.5 512 592 512H480V96H592z"], + "hospital-user": [576, 512, [], "f80d", "M272 0C298.5 0 320 21.49 320 48V367.8C281.8 389.2 256 430 256 476.9C256 489.8 259.6 501.8 265.9 512H48C21.49 512 0 490.5 0 464V384H144C152.8 384 160 376.8 160 368C160 359.2 152.8 352 144 352H0V288H144C152.8 288 160 280.8 160 272C160 263.2 152.8 256 144 256H0V48C0 21.49 21.49 0 48 0H272zM152 64C143.2 64 136 71.16 136 80V104H112C103.2 104 96 111.2 96 120V136C96 144.8 103.2 152 112 152H136V176C136 184.8 143.2 192 152 192H168C176.8 192 184 184.8 184 176V152H208C216.8 152 224 144.8 224 136V120C224 111.2 216.8 104 208 104H184V80C184 71.16 176.8 64 168 64H152zM512 272C512 316.2 476.2 352 432 352C387.8 352 352 316.2 352 272C352 227.8 387.8 192 432 192C476.2 192 512 227.8 512 272zM288 477.1C288 425.7 329.7 384 381.1 384H482.9C534.3 384 576 425.7 576 477.1C576 496.4 560.4 512 541.1 512H322.9C303.6 512 288 496.4 288 477.1V477.1z"], + "hot-tub-person": [512, 512, ["hot-tub"], "f593", "M414.3 177.6C415.3 185.9 421.1 192 429.1 192h16.13c9.5 0 17-8.625 16-18.38C457.8 134.5 439.6 99.12 412 76.5c-17.38-14.12-28.88-36.75-32-62.12C379 6.125 372.3 0 364.3 0h-16.12c-9.5 0-17.12 8.625-16 18.38c4.375 39.12 22.38 74.5 50.13 97.13C399.6 129.6 411 152.2 414.3 177.6zM306.3 177.6C307.3 185.9 313.1 192 321.1 192h16.13c9.5 0 17-8.625 16-18.38C349.8 134.5 331.6 99.12 304 76.5c-17.38-14.12-28.88-36.75-32-62.12C271 6.125 264.3 0 256.3 0h-16.17C230.6 0 223 8.625 224.1 18.38C228.5 57.5 246.5 92.88 274.3 115.5C291.6 129.6 303 152.2 306.3 177.6zM480 256h-224L145.1 172.8C133.1 164.5 120.5 160 106.6 160H64C28.62 160 0 188.6 0 224v224c0 35.38 28.62 64 64 64h384c35.38 0 64-28.62 64-64V288C512 270.4 497.6 256 480 256zM128 440C128 444.4 124.4 448 120 448h-16C99.62 448 96 444.4 96 440v-112C96 323.6 99.62 320 104 320h16C124.4 320 128 323.6 128 328V440zM224 440C224 444.4 220.4 448 216 448h-16C195.6 448 192 444.4 192 440v-112C192 323.6 195.6 320 200 320h16C220.4 320 224 323.6 224 328V440zM320 440c0 4.375-3.625 8-8 8h-16C291.6 448 288 444.4 288 440v-112c0-4.375 3.625-8 8-8h16c4.375 0 8 3.625 8 8V440zM416 440c0 4.375-3.625 8-8 8h-16C387.6 448 384 444.4 384 440v-112c0-4.375 3.625-8 8-8h16c4.375 0 8 3.625 8 8V440zM64 128c35.38 0 64-28.62 64-64S99.38 0 64 0S0 28.62 0 64S28.62 128 64 128z"], + "hotdog": [512, 512, [127789], "f80f", "M488.6 23.44c-31.06-31.19-81.76-31.16-112.8 .0313L24.46 374.8c-20.83 19.96-29.19 49.66-21.83 77.6c7.36 27.94 29.07 49.65 57.02 57.01c27.94 7.36 57.64-1 77.6-21.83l351.3-351.3C519.7 105.2 519.8 54.5 488.6 23.44zM438.8 118.4c-19.59 19.59-37.39 22.52-51.74 25.01c-12.97 2.246-22.33 3.867-34.68 16.22c-12.35 12.35-13.97 21.71-16.22 34.69c-2.495 14.35-5.491 32.19-25.08 51.78c-19.59 19.59-37.43 22.58-51.78 25.08C246.3 273.4 236.9 275.1 224.6 287.4c-12.35 12.35-13.97 21.71-16.22 34.68C205.9 336.4 202.9 354.3 183.3 373.9c-19.59 19.59-37.43 22.58-51.78 25.08C118.5 401.2 109.2 402.8 96.83 415.2c-6.238 6.238-16.34 6.238-22.58 0c-6.238-6.238-6.238-16.35 0-22.58c19.59-19.59 37.43-22.58 51.78-25.07c12.97-2.245 22.33-3.869 34.68-16.22c12.35-12.35 13.97-21.71 16.22-34.69c2.495-14.35 5.492-32.19 25.08-51.78s37.43-22.58 51.78-25.08c12.97-2.246 22.33-3.869 34.68-16.22s13.97-21.71 16.22-34.68c2.495-14.35 5.492-32.19 25.08-51.78c19.59-19.59 37.43-22.58 51.78-25.07c12.97-2.246 22.28-3.815 34.63-16.17c6.238-6.238 16.36-6.238 22.59 0C444.1 102.1 444.1 112.2 438.8 118.4zM32.44 321.5l290-290l-11.48-11.6c-24.95-24.95-63.75-26.57-86.58-3.743L17.1 223.4C-5.73 246.3-4.108 285.1 20.84 310L32.44 321.5zM480.6 189.5l-290 290l11.48 11.6c24.95 24.95 63.75 26.57 86.58 3.743l207.3-207.3c22.83-22.83 21.21-61.63-3.743-86.58L480.6 189.5z"], + "hotel": [512, 512, [127976], "f594", "M480 0C497.7 0 512 14.33 512 32C512 49.67 497.7 64 480 64V448C497.7 448 512 462.3 512 480C512 497.7 497.7 512 480 512H304V448H208V512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H480zM112 96C103.2 96 96 103.2 96 112V144C96 152.8 103.2 160 112 160H144C152.8 160 160 152.8 160 144V112C160 103.2 152.8 96 144 96H112zM224 144C224 152.8 231.2 160 240 160H272C280.8 160 288 152.8 288 144V112C288 103.2 280.8 96 272 96H240C231.2 96 224 103.2 224 112V144zM368 96C359.2 96 352 103.2 352 112V144C352 152.8 359.2 160 368 160H400C408.8 160 416 152.8 416 144V112C416 103.2 408.8 96 400 96H368zM96 240C96 248.8 103.2 256 112 256H144C152.8 256 160 248.8 160 240V208C160 199.2 152.8 192 144 192H112C103.2 192 96 199.2 96 208V240zM240 192C231.2 192 224 199.2 224 208V240C224 248.8 231.2 256 240 256H272C280.8 256 288 248.8 288 240V208C288 199.2 280.8 192 272 192H240zM352 240C352 248.8 359.2 256 368 256H400C408.8 256 416 248.8 416 240V208C416 199.2 408.8 192 400 192H368C359.2 192 352 199.2 352 208V240zM256 288C211.2 288 173.5 318.7 162.1 360.2C159.7 373.1 170.7 384 184 384H328C341.3 384 352.3 373.1 349 360.2C338.5 318.7 300.8 288 256 288z"], + "hourglass": [384, 512, [62032, 9203, "hourglass-empty"], "f254", "M0 32C0 14.33 14.33 0 32 0H352C369.7 0 384 14.33 384 32C384 49.67 369.7 64 352 64V74.98C352 117.4 335.1 158.1 305.1 188.1L237.3 256L305.1 323.9C335.1 353.9 352 394.6 352 437V448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V437C32 394.6 48.86 353.9 78.86 323.9L146.7 256L78.86 188.1C48.86 158.1 32 117.4 32 74.98V64C14.33 64 0 49.67 0 32zM96 64V74.98C96 100.4 106.1 124.9 124.1 142.9L192 210.7L259.9 142.9C277.9 124.9 288 100.4 288 74.98V64H96zM96 448H288V437C288 411.6 277.9 387.1 259.9 369.1L192 301.3L124.1 369.1C106.1 387.1 96 411.6 96 437V448z"], + "hourglass-end": [384, 512, [8987, "hourglass-3"], "f253", "M352 0C369.7 0 384 14.33 384 32C384 49.67 369.7 64 352 64V74.98C352 117.4 335.1 158.1 305.1 188.1L237.3 256L305.1 323.9C335.1 353.9 352 394.6 352 437V448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V437C32 394.6 48.86 353.9 78.86 323.9L146.7 256L78.86 188.1C48.86 158.1 32 117.4 32 74.98V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H352zM124.1 142.9L192 210.7L259.9 142.9C277.9 124.9 288 100.4 288 74.98V64H96V74.98C96 100.4 106.1 124.9 124.1 142.9z"], + "hourglass-half": [384, 512, ["hourglass-2"], "f252", "M352 0C369.7 0 384 14.33 384 32C384 49.67 369.7 64 352 64V74.98C352 117.4 335.1 158.1 305.1 188.1L237.3 256L305.1 323.9C335.1 353.9 352 394.6 352 437V448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V437C32 394.6 48.86 353.9 78.86 323.9L146.7 256L78.86 188.1C48.86 158.1 32 117.4 32 74.98V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H352zM111.1 128H272C282.4 112.4 288 93.98 288 74.98V64H96V74.98C96 93.98 101.6 112.4 111.1 128zM111.1 384H272C268.5 378.7 264.5 373.7 259.9 369.1L192 301.3L124.1 369.1C119.5 373.7 115.5 378.7 111.1 384V384z"], + "hourglass-start": [384, 512, ["hourglass-1"], "f251", "M352 0C369.7 0 384 14.33 384 32C384 49.67 369.7 64 352 64V74.98C352 117.4 335.1 158.1 305.1 188.1L237.3 256L305.1 323.9C335.1 353.9 352 394.6 352 437V448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V437C32 394.6 48.86 353.9 78.86 323.9L146.7 256L78.86 188.1C48.86 158.1 32 117.4 32 74.98V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H352zM259.9 369.1L192 301.3L124.1 369.1C106.1 387.1 96 411.6 96 437V448H288V437C288 411.6 277.9 387.1 259.9 369.1V369.1z"], + "house": [576, 512, [63498, 63500, 127968, "home", "home-alt", "home-lg-alt"], "f015", "M575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8L512.5 447.7C512.5 450.5 512.3 453.1 512 455.8V472C512 494.1 494.1 512 472 512H456C454.9 512 453.8 511.1 452.7 511.9C451.3 511.1 449.9 512 448.5 512H392C369.9 512 352 494.1 352 472V384C352 366.3 337.7 352 320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5L575.8 255.5z"], + "house-chimney": [576, 512, [63499, "home-lg"], "e3af", "M511.8 287.6L512.5 447.7C512.5 450.5 512.3 453.1 512 455.8V472C512 494.1 494.1 512 472 512H456C454.9 512 453.8 511.1 452.7 511.9C451.3 511.1 449.9 512 448.5 512H392C369.9 512 352 494.1 352 472V384C352 366.3 337.7 352 320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L416 100.7V64C416 46.33 430.3 32 448 32H480C497.7 32 512 46.33 512 64V185L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6L511.8 287.6z"], + "house-chimney-crack": [576, 512, ["house-damage"], "f6f1", "M575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8L512.5 447.7C512.6 483.2 483.9 512 448.5 512H326.4L288 448L368.8 380.7C376.6 374.1 376.5 362.1 368.5 355.8L250.6 263.2C235.1 251.7 216.8 270.1 227.8 285.2L288 368L202.5 439.2C196.5 444.3 194.1 452.1 199.1 459.8L230.4 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L416 100.7V64C416 46.33 430.3 32 448 32H480C497.7 32 512 46.33 512 64V185L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5L575.8 255.5z"], + "house-chimney-medical": [576, 512, ["clinic-medical"], "f7f2", "M511.8 287.6L512.5 447.7C512.6 483.2 483.9 512 448.5 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L416 100.7V64C416 46.33 430.3 32 448 32H480C497.7 32 512 46.33 512 64V185L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6L511.8 287.6zM400 248C400 239.2 392.8 232 384 232H328V176C328 167.2 320.8 160 312 160H264C255.2 160 248 167.2 248 176V232H192C183.2 232 176 239.2 176 248V296C176 304.8 183.2 312 192 312H248V368C248 376.8 255.2 384 264 384H312C320.8 384 328 376.8 328 368V312H384C392.8 312 400 304.8 400 296V248z"], + "house-chimney-user": [576, 512, [], "e065", "M511.8 287.6L512.5 447.7C512.6 483.2 483.9 512 448.5 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L416 100.7V64C416 46.33 430.3 32 448 32H480C497.7 32 512 46.33 512 64V185L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6L511.8 287.6zM288 288C323.3 288 352 259.3 352 224C352 188.7 323.3 160 288 160C252.7 160 224 188.7 224 224C224 259.3 252.7 288 288 288zM192 416H384C392.8 416 400 408.8 400 400C400 355.8 364.2 320 320 320H256C211.8 320 176 355.8 176 400C176 408.8 183.2 416 192 416z"], + "house-chimney-window": [576, 512, [], "e00d", "M575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8L512.5 447.7C512.6 483.2 483.9 512 448.5 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L416 100.7V64C416 46.33 430.3 32 448 32H480C497.7 32 512 46.33 512 64V185L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5L575.8 255.5zM248 192C234.7 192 224 202.7 224 216V296C224 309.3 234.7 320 248 320H328C341.3 320 352 309.3 352 296V216C352 202.7 341.3 192 328 192H248z"], + "house-circle-check": [640, 512, [], "e509", "M320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C404.2 192 328.8 262.3 320.7 352L320 352zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "house-circle-exclamation": [640, 512, [], "e50a", "M320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C404.2 192 328.8 262.3 320.7 352L320 352zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "house-circle-xmark": [640, 512, [], "e50b", "M320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C404.2 192 328.8 262.3 320.7 352L320 352zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "house-crack": [576, 512, [], "e3b1", "M511.8 287.6L512.5 447.7C512.6 483.2 483.9 512 448.5 512H326.4L288 448L368.8 380.7C376.6 374.1 376.5 362.1 368.5 355.8L250.6 263.2C235.1 251.7 216.8 270.1 227.8 285.2L288 368L202.5 439.2C196.5 444.3 194.1 452.1 199.1 459.8L230.4 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8z"], + "house-fire": [640, 512, [], "e50c", "M288 350.1L288 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L447.3 128.1C434.9 127.2 422.3 131.1 412.5 139.9C377.1 171.5 346.9 207.6 325.2 242.7C304.3 276.5 288 314.9 288 350.1H288zM509 221.5C516.9 211.6 525.8 200.8 535.5 191.1C541.1 186.9 549.9 186.9 555.5 192C580.2 214.7 601.1 244.7 615.8 273.2C630.4 301.2 640 329.9 640 350.1C640 437.9 568.7 512 480 512C390.3 512 320 437.8 320 350.1C320 323.7 332.7 291.5 352.4 259.5C372.4 227.2 400.5 193.4 433.8 163.7C439.4 158.7 447.1 158.8 453.5 163.8C473.3 181.6 491.8 200.7 509 221.5V221.5zM550 336.1C548 332.1 546 328.1 543 324.1L507 367C507 367 449 293 445 288C415 324.1 400 346 400 370C400 419 436 448 481 448C499 448 515 443 530 432.1C560 412 568 370 550 336.1z"], + "house-flag": [640, 512, [], "e50d", "M480 0C497.7 0 512 14.33 512 32H624C632.8 32 640 39.16 640 48V176C640 184.8 632.8 192 624 192H512V512H448V32C448 14.33 462.3 0 480 0V0zM416 512H416.1L416.8 512H352C334.3 512 320 497.7 320 480V384C320 366.3 305.7 352 288 352H224C206.3 352 192 366.3 192 384V480C192 497.7 177.7 512 160 512H96C78.33 512 64 497.7 64 480V288H31.1C18.61 288 6.631 279.7 1.985 267.1C-2.661 254.5 1.005 240.4 11.17 231.7L235.2 39.7C247.2 29.43 264.8 29.43 276.8 39.7L416 159V512z"], + "house-flood-water": [576, 512, [], "e50e", "M482.8 134.1C494 142.3 498.7 156.7 494.4 169.9C490.1 183.1 477.9 192 464 192H447.4L447.7 265.2C446.1 266.1 444.6 267.1 443.2 268.1C425.2 280.5 403 288.5 384 288.5C364.4 288.5 343.2 280.8 324.8 268.1C302.8 252.6 273.3 252.6 251.2 268.1C234 279.9 213.2 288.5 192 288.5C172.1 288.5 150.8 280.5 132.9 268.1C131.3 267 129.7 265.1 128 265V192H112C98.14 192 85.86 183.1 81.57 169.9C77.28 156.7 81.97 142.3 93.18 134.1L269.2 6.12C280.4-2.04 295.6-2.04 306.8 6.12L482.8 134.1zM269.5 309.9C280.6 302 295.4 302 306.5 309.9C328.1 325.4 356.5 336 384 336C410.9 336 439.4 325.2 461.4 309.9L461.5 309.9C473.4 301.4 489.5 302.1 500.7 311.6C515 323.5 533.2 332.6 551.3 336.8C568.5 340.8 579.2 358.1 575.2 375.3C571.2 392.5 553.1 403.2 536.7 399.2C512.2 393.4 491.9 382.6 478.5 374.2C449.5 389.7 417 400 384 400C352.1 400 323.4 390.1 303.6 381.1C297.7 378.5 292.5 375.8 288 373.4C283.5 375.8 278.3 378.5 272.4 381.1C252.6 390.1 223.9 400 192 400C158.1 400 126.5 389.7 97.5 374.2C84.12 382.6 63.79 393.4 39.27 399.2C22.06 403.2 4.854 392.5 .8426 375.3C-3.169 358.1 7.532 340.8 24.74 336.8C42.84 332.6 60.96 323.5 75.31 311.6C86.46 302.1 102.6 301.4 114.5 309.9L114.6 309.9C136.7 325.2 165.1 336 192 336C219.5 336 247 325.4 269.5 309.9H269.5zM461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448C410.9 448 439.4 437.2 461.4 421.9H461.4z"], + "house-flood-water-circle-arrow-right": [640, 512, [], "e50f", "M288 144C288 223.5 223.5 288 144 288C64.47 288 0 223.5 0 144C0 64.47 64.47 .0002 144 .0002C223.5 .0002 288 64.47 288 144zM140.7 99.31L169.4 128H80C71.16 128 64 135.2 64 144C64 152.8 71.16 160 80 160H169.4L140.7 188.7C134.4 194.9 134.4 205.1 140.7 211.3C146.9 217.6 157.1 217.6 163.3 211.3L219.3 155.3C225.6 149.1 225.6 138.9 219.3 132.7L163.3 76.69C157.1 70.44 146.9 70.44 140.7 76.69C134.4 82.94 134.4 93.07 140.7 99.31V99.31zM301 64.42L381.2 6.12C392.4-2.04 407.6-2.04 418.8 6.12L594.8 134.1C606 142.3 610.7 156.7 606.4 169.9C602.1 183.1 589.9 192 576 192H559.4L559.7 276.4C557.5 274.8 555.3 273.2 553.2 271.5C531 252.8 498.9 251.4 475.2 268.1C457.2 280.5 435 288.5 416 288.5C396.4 288.5 375.2 280.8 356.8 268.1C334.8 252.6 305.3 252.6 283.2 268.1C273.2 274.1 262 280.7 250.2 284.3C292.6 252.2 319.1 201.3 319.1 144C319.1 115.4 313.2 88.32 301 64.42V64.42zM416 336C442.9 336 471.4 325.2 493.4 309.9L493.5 309.9C505.4 301.4 521.5 302.1 532.7 311.6C547 323.5 565.2 332.6 583.3 336.8C600.5 340.8 611.2 358.1 607.2 375.3C603.2 392.5 585.1 403.2 568.7 399.2C544.2 393.4 523.9 382.6 510.5 374.2C481.5 389.7 449 400 416 400C384.1 400 355.4 390.1 335.6 381.1C329.7 378.5 324.5 375.8 320 373.4C315.5 375.8 310.3 378.5 304.4 381.1C284.6 390.1 255.9 400 224 400C190.1 400 158.5 389.7 129.5 374.2C116.1 382.6 95.79 393.4 71.27 399.2C54.06 403.2 36.85 392.5 32.84 375.3C28.83 358.1 39.53 340.8 56.74 336.8C74.84 332.6 92.96 323.5 107.3 311.6C118.5 302.1 134.6 301.4 146.5 309.9L146.6 309.9C168.7 325.2 197.1 336 224 336C251.5 336 279 325.4 301.5 309.9C312.6 302 327.4 302 338.5 309.9C360.1 325.4 388.5 336 416 336H416zM338.5 421.9C360.1 437.4 388.5 448 416 448C442.9 448 471.4 437.2 493.4 421.9L493.5 421.9C505.4 413.4 521.5 414.1 532.7 423.6C547 435.5 565.2 444.6 583.3 448.8C600.5 452.8 611.2 470.1 607.2 487.3C603.2 504.5 585.1 515.2 568.7 511.2C544.2 505.4 523.9 494.6 510.5 486.2C481.5 501.7 449 512 416 512C384.1 512 355.4 502.1 335.6 493.1C329.7 490.5 324.5 487.8 320 485.4C315.5 487.8 310.3 490.5 304.4 493.1C284.6 502.1 255.9 512 224 512C190.1 512 158.5 501.7 129.5 486.2C116.1 494.6 95.79 505.4 71.27 511.2C54.06 515.2 36.85 504.5 32.84 487.3C28.83 470.1 39.53 452.8 56.74 448.8C74.84 444.6 92.96 435.5 107.3 423.6C118.5 414.1 134.6 413.4 146.5 421.9L146.6 421.9C168.7 437.2 197.1 448 224 448C251.5 448 279 437.4 301.5 421.9C312.6 414 327.4 414 338.5 421.9H338.5z"], + "house-laptop": [640, 512, ["laptop-house"], "e066", "M218.3 8.486C230.6-2.829 249.4-2.829 261.7 8.486L469.7 200.5C476.4 206.7 480 215.2 480 224H336C316.9 224 299.7 232.4 288 245.7V208C288 199.2 280.8 192 272 192H208C199.2 192 192 199.2 192 208V272C192 280.8 199.2 288 208 288H271.1V416H112C85.49 416 64 394.5 64 368V256H32C18.83 256 6.996 247.9 2.198 235.7C-2.6 223.4 .6145 209.4 10.3 200.5L218.3 8.486zM336 256H560C577.7 256 592 270.3 592 288V448H624C632.8 448 640 455.2 640 464C640 490.5 618.5 512 592 512H303.1C277.5 512 255.1 490.5 255.1 464C255.1 455.2 263.2 448 271.1 448H303.1V288C303.1 270.3 318.3 256 336 256zM352 304V448H544V304H352z"], + "house-lock": [640, 512, [], "e510", "M384 480C384 491.7 387.1 502.6 392.6 512H392C369.9 512 352 494.1 352 472V384C352 366.3 337.7 352 320 352H256C238.3 352 224 366.3 224 384V472C224 494.1 206.1 512 184 512H128.1C126.6 512 125.1 511.9 123.6 511.8C122.4 511.9 121.2 512 120 512H104C81.91 512 64 494.1 64 472V360C64 359.1 64.03 358.1 64.09 357.2V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L490.7 166.3C447.2 181.7 416 223.2 416 272V296.6C396.9 307.6 384 328.3 384 352L384 480zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "house-medical": [576, 512, [], "e3b2", "M575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8L512.5 447.7C512.6 483.2 483.9 512 448.5 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5H575.8zM328 232V176C328 167.2 320.8 160 312 160H264C255.2 160 248 167.2 248 176V232H192C183.2 232 176 239.2 176 248V296C176 304.8 183.2 312 192 312H248V368C248 376.8 255.2 384 264 384H312C320.8 384 328 376.8 328 368V312H384C392.8 312 400 304.8 400 296V248C400 239.2 392.8 232 384 232H328z"], + "house-medical-circle-check": [640, 512, [], "e511", "M320.5 381.5C324.6 435.5 353 482.6 394.8 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C453.6 192 414.7 207 384.3 232L384 232H328V176C328 167.2 320.8 160 311.1 160H263.1C255.2 160 247.1 167.2 247.1 176V232H191.1C183.2 232 175.1 239.2 175.1 248V296C175.1 304.8 183.2 312 191.1 312H247.1V368C247.1 376.8 255.2 384 263.1 384H311.1C315.1 384 318 383.1 320.5 381.5H320.5zM328 312H329.1C328.7 313.1 328.4 314.3 328 315.4V312zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "house-medical-circle-exclamation": [640, 512, [], "e512", "M320.5 381.5C324.6 435.5 353 482.6 394.8 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C453.6 192 414.7 207 384.3 232L384 232H328V176C328 167.2 320.8 160 311.1 160H263.1C255.2 160 247.1 167.2 247.1 176V232H191.1C183.2 232 175.1 239.2 175.1 248V296C175.1 304.8 183.2 312 191.1 312H247.1V368C247.1 376.8 255.2 384 263.1 384H311.1C315.1 384 318 383.1 320.5 381.5H320.5zM328 312H329.1C328.7 313.1 328.4 314.3 328 315.4V312zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "house-medical-circle-xmark": [640, 512, [], "e513", "M320.5 381.5C324.6 435.5 353 482.6 394.8 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L522.1 193.9C513.6 192.7 504.9 192 496 192C453.6 192 414.7 207 384.3 232L384 232H328V176C328 167.2 320.8 160 311.1 160H263.1C255.2 160 247.1 167.2 247.1 176V232H191.1C183.2 232 175.1 239.2 175.1 248V296C175.1 304.8 183.2 312 191.1 312H247.1V368C247.1 376.8 255.2 384 263.1 384H311.1C315.1 384 318 383.1 320.5 381.5H320.5zM328 312H329.1C328.7 313.1 328.4 314.3 328 315.4V312zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "house-medical-flag": [640, 512, [], "e514", "M480 0C497.7 0 512 14.33 512 32H624C632.8 32 640 39.16 640 48V176C640 184.8 632.8 192 624 192H512V512H448V32C448 14.33 462.3 0 480 0V0zM416 512H416.1L416.8 512H96C78.33 512 64 497.7 64 480V288H31.1C18.61 288 6.631 279.7 1.985 267.1C-2.661 254.5 1.005 240.4 11.17 231.7L235.2 39.7C247.2 29.43 264.8 29.43 276.8 39.7L416 159V512zM223.1 256H175.1C167.2 256 159.1 263.2 159.1 272V304C159.1 312.8 167.2 320 175.1 320H223.1V368C223.1 376.8 231.2 384 239.1 384H271.1C280.8 384 287.1 376.8 287.1 368V320H336C344.8 320 352 312.8 352 304V272C352 263.2 344.8 256 336 256H287.1V208C287.1 199.2 280.8 192 271.1 192H239.1C231.2 192 223.1 199.2 223.1 208V256z"], + "house-signal": [576, 512, [], "e012", "M314.3 8.486C326.6-2.829 345.4-2.829 357.7 8.486L565.7 200.5C575.4 209.4 578.6 223.4 573.8 235.7C569 247.9 557.2 256 544 256H512V368C512 394.5 490.5 416 464 416H296.4C272.7 317.5 195.4 239.1 97.06 215.8C98.58 210.1 101.7 204.7 106.3 200.5L314.3 8.486zM304 192C295.2 192 287.1 199.2 287.1 208V272C287.1 280.8 295.2 288 304 288H368C376.8 288 384 280.8 384 272V208C384 199.2 376.8 192 368 192H304zM256 488C256 501.3 245.3 512 232 512C218.7 512 208 501.3 208 488C208 386.4 125.6 304 24 304C10.75 304 0 293.3 0 280C0 266.7 10.75 256 24 256C152.1 256 256 359.9 256 488zM0 480C0 462.3 14.33 448 32 448C49.67 448 64 462.3 64 480C64 497.7 49.67 512 32 512C14.33 512 0 497.7 0 480zM0 376C0 362.7 10.75 352 24 352C99.11 352 160 412.9 160 488C160 501.3 149.3 512 136 512C122.7 512 112 501.3 112 488C112 439.4 72.6 400 24 400C10.75 400 0 389.3 0 376z"], + "house-tsunami": [576, 512, [], "e515", "M184.4 96C207.4 96 229.3 101.1 248.1 110.3C264.1 117.7 271.9 136.8 264.4 152.8C256.1 168.8 237.9 175.7 221.9 168.3C210.6 162.1 197.9 160 184.4 160C135.5 160 95.1 199.5 95.1 248C95.1 287 121.6 320.2 157.1 331.7C167.1 334.5 179.6 336 191.1 336C192 336 192.1 336 192.1 336C219.6 335.1 247.1 325.4 269.5 309.9C280.6 302 295.4 302 306.5 309.9C328.1 325.4 356.5 336 384 336C410.9 336 439.4 325.2 461.4 309.9L461.5 309.9C473.4 301.4 489.5 302.1 500.7 311.6C515 323.5 533.2 332.6 551.3 336.8C568.5 340.8 579.2 358.1 575.2 375.3C571.2 392.5 553.1 403.2 536.7 399.2C512.2 393.4 491.9 382.6 478.5 374.2C449.5 389.7 417 400 384 400C352.1 400 323.4 390.1 303.6 381.1C297.7 378.5 292.5 375.8 288 373.4C283.5 375.8 278.3 378.5 272.4 381.1C252.6 390.1 223.9 400 192 400C190.2 400 188.3 399.1 186.5 399.9C185.8 399.1 185.1 400 184.4 400C169.8 400 155.6 397.9 142.2 394.1C53.52 372.1 .0006 291.6 .0006 200C.0006 87.99 95.18 0 209 0C232.8 0 255.8 3.823 277.2 10.9C294 16.44 303.1 34.54 297.6 51.32C292 68.1 273.9 77.21 257.2 71.67C242.2 66.72 225.1 64 209 64C152.6 64 104.9 93.82 80.81 136.5C108 111.4 144.4 96 184.4 96H184.4zM428.8 46.43C440.2 37.88 455.8 37.9 467.2 46.47L562.7 118.4C570.7 124.5 575.4 133.9 575.5 143.9L575.8 287.9C575.8 290.8 575.4 293.6 574.7 296.3C569.8 293.6 564.3 291.5 558.5 290.1C545.4 287.1 531.8 280.3 521.2 271.5C499 252.8 466.9 251.4 443.2 268.1C425.2 280.5 403 288.5 384 288.5C364.4 288.5 343.2 280.8 324.8 268.1C323.3 267 321.6 265.1 320 265V143.1C320 133.9 324.7 124.4 332.8 118.4L428.8 46.43zM461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448C410.9 448 439.4 437.2 461.4 421.9H461.4z"], + "house-user": [576, 512, ["home-user"], "e1b0", "M575.8 255.5C575.8 273.5 560.8 287.6 543.8 287.6H511.8L512.5 447.7C512.6 483.2 483.9 512 448.5 512H128.1C92.75 512 64.09 483.3 64.09 448V287.6H32.05C14.02 287.6 0 273.5 0 255.5C0 246.5 3.004 238.5 10.01 231.5L266.4 8.016C273.4 1.002 281.4 0 288.4 0C295.4 0 303.4 2.004 309.5 7.014L564.8 231.5C572.8 238.5 576.9 246.5 575.8 255.5H575.8zM288 160C252.7 160 224 188.7 224 224C224 259.3 252.7 288 288 288C323.3 288 352 259.3 352 224C352 188.7 323.3 160 288 160zM256 320C211.8 320 176 355.8 176 400C176 408.8 183.2 416 192 416H384C392.8 416 400 408.8 400 400C400 355.8 364.2 320 320 320H256z"], + "hryvnia-sign": [384, 512, [8372, "hryvnia"], "f6f2", "M115.1 120.1C102.2 132 82.05 129.8 71.01 115.1C59.97 102.2 62.21 82.05 76.01 71.01L81.94 66.27C109.7 44.08 144.1 32 179.6 32H223C285.4 32 336 82.59 336 144.1C336 155.6 334.5 166.1 331.7 176H352C369.7 176 384 190.3 384 208C384 225.7 369.7 240 352 240H284.2C282.5 241.1 280.8 242.1 279.1 243.1L228.5 272H352C369.7 272 384 286.3 384 304C384 321.7 369.7 336 352 336H123.1C116 344.6 112 355.5 112 367C112 394.1 133.9 416 160.1 416H204.4C225.3 416 245.7 408.9 262.1 395.8L268 391C281.8 379.1 301.9 382.2 312.1 396C324 409.8 321.8 429.9 307.1 440.1L302.1 445.7C274.3 467.9 239.9 480 204.4 480H160.1C98.59 480 48 429.4 48 367C48 356.4 49.49 345.9 52.33 336H32C14.33 336 0 321.7 0 304C0 286.3 14.33 272 32 272H99.82C101.5 270.9 103.2 269.9 104.9 268.9L155.5 240H32C14.33 240 0 225.7 0 208C0 190.3 14.33 176 32 176H260.9C267.1 167.4 272 156.5 272 144.1C272 117.9 250.1 96 223 96H179.6C158.7 96 138.3 103.1 121.9 116.2L115.1 120.1z"], + "hurricane": [448, 512, [], "f751", "M224 223.1c-17.75 0-32 14.25-32 32c0 17.75 14.25 32 32 32s32-14.25 32-32C256 238.2 241.8 223.1 224 223.1zM208 95.98l24.5-74.74c3.75-11.25-5.615-22.49-17.36-21.11C112 12.38 32 101.6 32 208c0 114.9 93.13 208 208 208l-24.5 74.73c-3.75 11.25 5.615 22.5 17.36 21.12C335.1 499.6 416 410.4 416 304C416 189.1 322.9 95.98 208 95.98zM224 351.1c-53 0-96-43-96-96s43-96 96-96s96 43 96 96S277 351.1 224 351.1z"], + "i": [320, 512, [105], "49", "M320 448c0 17.67-14.31 32-32 32H32c-17.69 0-32-14.33-32-32s14.31-32 32-32h96v-320H32c-17.69 0-32-14.33-32-32s14.31-32 32-32h256c17.69 0 32 14.33 32 32s-14.31 32-32 32h-96v320h96C305.7 416 320 430.3 320 448z"], + "i-cursor": [256, 512, [], "f246", "M256 480c0 17.69-14.33 31.1-32 31.1c-38.41 0-72.52-17.35-96-44.23c-23.48 26.88-57.59 44.23-96 44.23c-17.67 0-32-14.31-32-31.1s14.33-32 32-32c35.3 0 64-28.72 64-64V288H64C46.33 288 32 273.7 32 256s14.33-32 32-32h32V128c0-35.28-28.7-64-64-64C14.33 64 0 49.69 0 32s14.33-32 32-32c38.41 0 72.52 17.35 96 44.23c23.48-26.88 57.59-44.23 96-44.23c17.67 0 32 14.31 32 32s-14.33 32-32 32c-35.3 0-64 28.72-64 64v96h32c17.67 0 32 14.31 32 32s-14.33 32-32 32h-32v96c0 35.28 28.7 64 64 64C241.7 448 256 462.3 256 480z"], + "ice-cream": [448, 512, [127848], "f810", "M96.06 288.3H351.9L252.6 493.8C250.1 499.2 246 503.8 240.1 507.1C235.9 510.3 230 512 224 512C217.1 512 212.1 510.3 207 507.1C201.1 503.8 197.9 499.2 195.4 493.8L96.06 288.3zM386.3 164C392.1 166.4 397.4 169.9 401.9 174.4C406.3 178.8 409.9 184.1 412.3 189.9C414.7 195.7 415.1 201.1 416 208.3C416 214.5 414.8 220.8 412.4 226.6C409.1 232.4 406.5 237.7 402 242.2C397.6 246.6 392.3 250.2 386.5 252.6C380.7 255 374.4 256.3 368.1 256.3H79.88C67.16 256.3 54.96 251.2 45.98 242.2C37 233.2 31.97 220.1 32 208.3C32.03 195.5 37.1 183.4 46.12 174.4C55.14 165.4 67.35 160.4 80.07 160.4H81.06C80.4 154.9 80.06 149.4 80.04 143.8C80.04 105.7 95.2 69.11 122.2 42.13C149.2 15.15 185.8 0 223.1 0C262.1 0 298.7 15.15 325.7 42.13C352.7 69.11 367.9 105.7 367.9 143.8C367.9 149.4 367.6 154.9 366.9 160.4H367.9C374.2 160.4 380.5 161.6 386.3 164z"], + "icicles": [512, 512, [], "f7ad", "M511.4 37.87l-87.54 467.6c-1.625 8.623-14.04 8.634-15.67 .0104L341.4 141.7L295.7 314.2c-2.375 7.624-12.98 7.624-15.36 0L246.3 180.9l-46.49 196.9c-1.875 8.373-13.64 8.373-15.51 0L139.1 190.5L103.6 314.5c-2.375 7.124-12.64 7.198-15.14 .0744L1.357 41.24C-4.768 20.75 10.61 0 31.98 0h448C500 0 515.2 18.25 511.4 37.87z"], + "icons": [512, 512, ["heart-music-camera-bolt"], "f86d", "M500.3 7.251C507.7 13.33 512 22.41 512 31.1V175.1C512 202.5 483.3 223.1 447.1 223.1C412.7 223.1 383.1 202.5 383.1 175.1C383.1 149.5 412.7 127.1 447.1 127.1V71.03L351.1 90.23V207.1C351.1 234.5 323.3 255.1 287.1 255.1C252.7 255.1 223.1 234.5 223.1 207.1C223.1 181.5 252.7 159.1 287.1 159.1V63.1C287.1 48.74 298.8 35.61 313.7 32.62L473.7 .6198C483.1-1.261 492.9 1.173 500.3 7.251H500.3zM74.66 303.1L86.5 286.2C92.43 277.3 102.4 271.1 113.1 271.1H174.9C185.6 271.1 195.6 277.3 201.5 286.2L213.3 303.1H239.1C266.5 303.1 287.1 325.5 287.1 351.1V463.1C287.1 490.5 266.5 511.1 239.1 511.1H47.1C21.49 511.1-.0019 490.5-.0019 463.1V351.1C-.0019 325.5 21.49 303.1 47.1 303.1H74.66zM143.1 359.1C117.5 359.1 95.1 381.5 95.1 407.1C95.1 434.5 117.5 455.1 143.1 455.1C170.5 455.1 191.1 434.5 191.1 407.1C191.1 381.5 170.5 359.1 143.1 359.1zM440.3 367.1H496C502.7 367.1 508.6 372.1 510.1 378.4C513.3 384.6 511.6 391.7 506.5 396L378.5 508C372.9 512.1 364.6 513.3 358.6 508.9C352.6 504.6 350.3 496.6 353.3 489.7L391.7 399.1H336C329.3 399.1 323.4 395.9 321 389.6C318.7 383.4 320.4 376.3 325.5 371.1L453.5 259.1C459.1 255 467.4 254.7 473.4 259.1C479.4 263.4 481.6 271.4 478.7 278.3L440.3 367.1zM116.7 219.1L19.85 119.2C-8.112 90.26-6.614 42.31 24.85 15.34C51.82-8.137 93.26-3.642 118.2 21.83L128.2 32.32L137.7 21.83C162.7-3.642 203.6-8.137 231.6 15.34C262.6 42.31 264.1 90.26 236.1 119.2L139.7 219.1C133.2 225.6 122.7 225.6 116.7 219.1H116.7z"], + "id-badge": [384, 512, [], "f2c1", "M336 0h-288C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48v-416C384 21.49 362.5 0 336 0zM192 160c35.35 0 64 28.65 64 64s-28.65 64-64 64S128 259.3 128 224S156.7 160 192 160zM288 416H96c-8.836 0-16-7.164-16-16C80 355.8 115.8 320 160 320h64c44.18 0 80 35.82 80 80C304 408.8 296.8 416 288 416zM240 96h-96C135.2 96 128 88.84 128 80S135.2 64 144 64h96C248.8 64 256 71.16 256 80S248.8 96 240 96z"], + "id-card": [576, 512, [62147, "drivers-license"], "f2c2", "M528 32h-480C21.49 32 0 53.49 0 80V96h576V80C576 53.49 554.5 32 528 32zM0 432C0 458.5 21.49 480 48 480h480c26.51 0 48-21.49 48-48V128H0V432zM368 192h128C504.8 192 512 199.2 512 208S504.8 224 496 224h-128C359.2 224 352 216.8 352 208S359.2 192 368 192zM368 256h128C504.8 256 512 263.2 512 272S504.8 288 496 288h-128C359.2 288 352 280.8 352 272S359.2 256 368 256zM368 320h128c8.836 0 16 7.164 16 16S504.8 352 496 352h-128c-8.836 0-16-7.164-16-16S359.2 320 368 320zM176 192c35.35 0 64 28.66 64 64s-28.65 64-64 64s-64-28.66-64-64S140.7 192 176 192zM112 352h128c26.51 0 48 21.49 48 48c0 8.836-7.164 16-16 16h-192C71.16 416 64 408.8 64 400C64 373.5 85.49 352 112 352z"], + "id-card-clip": [576, 512, ["id-card-alt"], "f47f", "M256 128h64c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256C238.3 0 224 14.33 224 32v64C224 113.7 238.3 128 256 128zM528 64H384v48C384 138.5 362.5 160 336 160h-96C213.5 160 192 138.5 192 112V64H48C21.49 64 0 85.49 0 112v352C0 490.5 21.49 512 48 512h480c26.51 0 48-21.49 48-48v-352C576 85.49 554.5 64 528 64zM288 224c35.35 0 64 28.66 64 64s-28.65 64-64 64s-64-28.66-64-64S252.7 224 288 224zM384 448H192c-8.836 0-16-7.164-16-16C176 405.5 197.5 384 224 384h128c26.51 0 48 21.49 48 48C400 440.8 392.8 448 384 448z"], + "igloo": [576, 512, [], "f7ae", "M320 160H48.5C100.2 82.82 188.1 32 288 32C298.8 32 309.5 32.6 320 33.76V160zM352 39.14C424.9 55.67 487.2 99.82 527.5 160H352V39.14zM96 192V320H0C0 274 10.77 230.6 29.94 192H96zM192 320H128V192H448V320H384V352H576V432C576 458.5 554.5 480 528 480H352V352C352 316.7 323.3 288 288 288C252.7 288 224 316.7 224 352V480H48C21.49 480 0 458.5 0 432V352H192V320zM480 192H546.1C565.2 230.6 576 274 576 320H480V192z"], + "image": [512, 512, [], "f03e", "M447.1 32h-384C28.64 32-.0091 60.65-.0091 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96C511.1 60.65 483.3 32 447.1 32zM111.1 96c26.51 0 48 21.49 48 48S138.5 192 111.1 192s-48-21.49-48-48S85.48 96 111.1 96zM446.1 407.6C443.3 412.8 437.9 416 432 416H82.01c-6.021 0-11.53-3.379-14.26-8.75c-2.73-5.367-2.215-11.81 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51l93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192C448.6 396 448.9 402.3 446.1 407.6z"], + "image-portrait": [384, 512, ["portrait"], "f3e0", "M336 0h-288c-26.51 0-48 21.49-48 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48v-416C384 21.49 362.5 0 336 0zM192 128c35.35 0 64 28.65 64 64s-28.65 64-64 64S128 227.3 128 192S156.7 128 192 128zM288 384H96c-8.836 0-16-7.164-16-16C80 323.8 115.8 288 160 288h64c44.18 0 80 35.82 80 80C304 376.8 296.8 384 288 384z"], + "images": [576, 512, [], "f302", "M528 32H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48H528c26.51 0 48-21.49 48-48v-256C576 53.49 554.5 32 528 32zM223.1 96c17.68 0 32 14.33 32 32S241.7 160 223.1 160c-17.67 0-32-14.33-32-32S206.3 96 223.1 96zM494.1 311.6C491.3 316.8 485.9 320 480 320H192c-6.023 0-11.53-3.379-14.26-8.75c-2.73-5.367-2.215-11.81 1.332-16.68l70-96C252.1 194.4 256.9 192 262 192c5.111 0 9.916 2.441 12.93 6.574l22.35 30.66l62.74-94.11C362.1 130.7 367.1 128 373.3 128c5.348 0 10.34 2.672 13.31 7.125l106.7 160C496.6 300 496.9 306.3 494.1 311.6zM456 432H120c-39.7 0-72-32.3-72-72v-240C48 106.8 37.25 96 24 96S0 106.8 0 120v240C0 426.2 53.83 480 120 480h336c13.25 0 24-10.75 24-24S469.3 432 456 432z"], + "inbox": [512, 512, [], "f01c", "M447 56.25C443.5 42 430.7 31.1 416 31.1H96c-14.69 0-27.47 10-31.03 24.25L3.715 304.9C1.247 314.9 0 325.2 0 335.5v96.47c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48v-96.47c0-10.32-1.247-20.6-3.715-30.61L447 56.25zM352 352H160L128 288H72.97L121 96h270l48.03 192H384L352 352z"], + "indent": [448, 512, [], "f03c", "M0 64C0 46.33 14.33 32 32 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64zM192 192C192 174.3 206.3 160 224 160H416C433.7 160 448 174.3 448 192C448 209.7 433.7 224 416 224H224C206.3 224 192 209.7 192 192zM416 288C433.7 288 448 302.3 448 320C448 337.7 433.7 352 416 352H224C206.3 352 192 337.7 192 320C192 302.3 206.3 288 224 288H416zM0 448C0 430.3 14.33 416 32 416H416C433.7 416 448 430.3 448 448C448 465.7 433.7 480 416 480H32C14.33 480 0 465.7 0 448zM25.82 347.9C15.31 356.1 0 348.6 0 335.3V176.7C0 163.4 15.31 155.9 25.82 164.1L127.8 243.4C135.1 249.8 135.1 262.2 127.8 268.6L25.82 347.9z"], + "indian-rupee-sign": [320, 512, ["indian-rupee", "inr"], "e1bc", "M.0022 64C.0022 46.33 14.33 32 32 32H288C305.7 32 320 46.33 320 64C320 81.67 305.7 96 288 96H231.8C241.4 110.4 248.5 126.6 252.4 144H288C305.7 144 320 158.3 320 176C320 193.7 305.7 208 288 208H252.4C239.2 266.3 190.5 311.2 130.3 318.9L274.6 421.1C288.1 432.2 292.3 452.2 282 466.6C271.8 480.1 251.8 484.3 237.4 474L13.4 314C2.083 305.1-2.716 291.5 1.529 278.2C5.774 264.1 18.09 256 32 256H112C144.8 256 173 236.3 185.3 208H32C14.33 208 .0022 193.7 .0022 176C.0022 158.3 14.33 144 32 144H185.3C173 115.7 144.8 96 112 96H32C14.33 96 .0022 81.67 .0022 64V64z"], + "industry": [576, 512, [], "f275", "M128 32C145.7 32 160 46.33 160 64V215.4L316.6 131C332.6 122.4 352 134 352 152.2V215.4L508.6 131C524.6 122.4 544 134 544 152.2V432C544 458.5 522.5 480 496 480H80C53.49 480 32 458.5 32 432V64C32 46.33 46.33 32 64 32H128z"], + "infinity": [640, 512, [9854, 8734], "f534", "M494.9 96.01c-38.78 0-75.22 15.09-102.6 42.5L320 210.8L247.8 138.5c-27.41-27.41-63.84-42.5-102.6-42.5C65.11 96.01 0 161.1 0 241.1v29.75c0 80.03 65.11 145.1 145.1 145.1c38.78 0 75.22-15.09 102.6-42.5L320 301.3l72.23 72.25c27.41 27.41 63.84 42.5 102.6 42.5C574.9 416 640 350.9 640 270.9v-29.75C640 161.1 574.9 96.01 494.9 96.01zM202.5 328.3c-15.31 15.31-35.69 23.75-57.38 23.75C100.4 352 64 315.6 64 270.9v-29.75c0-44.72 36.41-81.13 81.14-81.13c21.69 0 42.06 8.438 57.38 23.75l72.23 72.25L202.5 328.3zM576 270.9c0 44.72-36.41 81.13-81.14 81.13c-21.69 0-42.06-8.438-57.38-23.75l-72.23-72.25l72.23-72.25c15.31-15.31 35.69-23.75 57.38-23.75C539.6 160 576 196.4 576 241.1V270.9z"], + "info": [192, 512, [], "f129", "M160 448h-32V224c0-17.69-14.33-32-32-32L32 192c-17.67 0-32 14.31-32 32s14.33 31.1 32 31.1h32v192H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h128c17.67 0 32-14.31 32-32S177.7 448 160 448zM96 128c26.51 0 48-21.49 48-48S122.5 32.01 96 32.01s-48 21.49-48 48S69.49 128 96 128z"], + "italic": [384, 512, [], "f033", "M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192C369.7 32.01 384 46.33 384 64.01z"], + "j": [320, 512, [106], "4a", "M320 64.01v259.4c0 86.36-71.78 156.6-160 156.6s-160-70.26-160-156.6V288c0-17.67 14.31-32 32-32s32 14.33 32 32v35.38c0 51.08 43.06 92.63 96 92.63s96-41.55 96-92.63V64.01c0-17.67 14.31-32 32-32S320 46.34 320 64.01z"], + "jar": [320, 512, [], "e516", "M32 32C32 14.33 46.33 0 64 0H256C273.7 0 288 14.33 288 32C288 49.67 273.7 64 256 64H64C46.33 64 32 49.67 32 32zM0 160C0 124.7 28.65 96 64 96H256C291.3 96 320 124.7 320 160V448C320 483.3 291.3 512 256 512H64C28.65 512 0 483.3 0 448V160zM256 224H64V384H256V224z"], + "jar-wheat": [320, 512, [], "e517", "M32 32C32 14.33 46.33 0 64 0H256C273.7 0 288 14.33 288 32C288 49.67 273.7 64 256 64H64C46.33 64 32 49.67 32 32zM0 160C0 124.7 28.65 96 64 96H256C291.3 96 320 124.7 320 160V448C320 483.3 291.3 512 256 512H64C28.65 512 0 483.3 0 448V160zM192 320C227.3 320 256 291.3 256 256H208C188.9 256 171.7 264.4 160 277.7C148.3 264.4 131.1 256 112 256H64C64 291.3 92.65 320 128 320H192zM192 224C227.3 224 256 195.3 256 160H208C188.9 160 171.7 168.4 160 181.7C148.3 168.4 131.1 160 112 160H64C64 195.3 92.65 224 128 224H192zM192 416C227.3 416 256 387.3 256 352H208C188.9 352 171.7 360.4 160 373.7C148.3 360.4 131.1 352 112 352H64C64 387.3 92.65 416 128 416H144V448C144 456.8 151.2 464 160 464C168.8 464 176 456.8 176 448V416H192z"], + "jedi": [576, 512, [], "f669", "M554.9 293.1l-58.88 58.88h40C493.2 446.1 398.2 511.1 287.1 512c-110.3-.0078-205.2-65.88-247.1-160h40L21.13 293.1C17.75 275.1 16 258.6 16 241.2c0-5.75 .75-11.5 1-17.25h47L22.75 182.7C37.38 117.1 75.86 59.37 130.6 20.5c2.75-2 6.021-3.005 9.272-3.005c5.5 0 10.5 2.75 13.5 7.25c3.125 4.375 3.625 10.13 1.625 15.13C148.5 56.12 145.1 73.62 145.1 91.12c0 45.13 21.13 86.63 57.75 113.8C206.9 207.7 209.4 212.4 209.5 217.2c.25 5-1.751 9.752-5.501 13c-32.75 29.38-47.5 74-38.5 117.1c9.751 48.38 48.88 87.13 97.26 96.5l2.5-65.37l-27.13 18.5c-3.125 2-7.251 1.75-10-.75c-2.75-2.625-3.25-6.75-1.375-10l20.13-33.75l-42.13-8.627c-3.625-.875-6.375-4.125-6.375-7.875s2.75-7 6.375-7.875l42.13-8.75L226.8 285.6C224.9 282.5 225.4 278.4 228.1 275.7c2.75-2.5 6.876-2.875 10-.75l30.38 20.63l11.49-287.8C280.3 3.461 283.7 .0156 287.1 0c4.237 .0156 7.759 3.461 8.009 7.828l11.49 287.8l30.38-20.63c3.125-2.125 7.251-1.75 10 .75c2.75 2.625 3.25 6.75 1.375 9.875l-20.13 33.75l42.13 8.75c3.625 .875 6.375 4.125 6.375 7.875s-2.75 7-6.375 7.875l-42.13 8.627l20.13 33.75c1.875 3.25 1.375 7.375-1.375 10c-2.75 2.5-6.876 2.75-10 .75l-27.13-18.5l2.5 65.37c48.38-9.375 87.51-48.13 97.26-96.5c9.001-43.13-5.75-87.75-38.5-117.1c-3.75-3.25-5.751-8.002-5.501-13c.125-4.875 2.626-9.5 6.626-12.38c36.63-27.13 57.75-68.63 57.75-113.8c0-17.5-3.375-35-9.875-51.25c-2-5-1.5-10.75 1.625-15.13c3-4.5 8.001-7.25 13.5-7.25c3.25 0 6.474 .9546 9.224 2.955c54.75 38.88 93.28 96.67 107.9 162.3l-41.25 41.25h47c.2501 5.75 .9965 11.5 .9965 17.25C559.1 258.6 558.3 275.1 554.9 293.1z"], + "jet-fighter": [640, 512, ["fighter-jet"], "f0fb", "M160 24C160 10.75 170.7 0 184 0H296C309.3 0 320 10.75 320 24C320 37.25 309.3 48 296 48H280L384 192H500.4C508.1 192 515.7 193.4 522.9 196.1L625 234.4C634 237.8 640 246.4 640 256C640 265.6 634 274.2 625 277.6L522.9 315.9C515.7 318.6 508.1 320 500.4 320H384L280 464H296C309.3 464 320 474.7 320 488C320 501.3 309.3 512 296 512H184C170.7 512 160 501.3 160 488C160 474.7 170.7 464 184 464H192V320H160L105.4 374.6C99.37 380.6 91.23 384 82.75 384H64C46.33 384 32 369.7 32 352V288C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224V160C32 142.3 46.33 128 64 128H82.75C91.23 128 99.37 131.4 105.4 137.4L160 192H192V48H184C170.7 48 160 37.25 160 24V24zM80 240C71.16 240 64 247.2 64 256C64 264.8 71.16 272 80 272H144C152.8 272 160 264.8 160 256C160 247.2 152.8 240 144 240H80z"], + "jet-fighter-up": [576, 512, [], "e518", "M346.8 112.6C350.2 120.6 352 129.2 352 137.9V214.8L496 298.8V280C496 266.7 506.7 256 520 256C533.3 256 544 266.7 544 280V392C544 405.3 533.3 416 520 416C506.7 416 496 405.3 496 392V384H352V416.7L410.5 467.1C414 470.1 416 475.4 416 480V496C416 504.8 408.8 512 400 512H304V448C304 439.2 296.8 432 288 432C279.2 432 272 439.2 272 448V512H176C167.2 512 160 504.8 160 496V480C160 475.4 161.1 470.1 165.5 467.1L224 416.7V384H80V392C80 405.3 69.25 416 56 416C42.75 416 32 405.3 32 392V280C32 266.7 42.75 256 56 256C69.25 256 80 266.7 80 280V298.8L224 214.8V137.9C224 129.2 225.8 120.6 229.2 112.6L273.3 9.697C275.8 3.814 281.6 0 288 0C294.4 0 300.2 3.814 302.7 9.697L346.8 112.6z"], + "joint": [640, 512, [], "f595", "M444.4 181.1C466.8 196.8 480 222.2 480 249.8V280C480 284.4 483.6 288 488 288h48C540.4 288 544 284.4 544 280V249.8c0-43.25-21-83.5-56.38-108.1C463.9 125 448 99.38 448 70.25V8C448 3.625 444.4 0 440 0h-48C387.6 0 384 3.625 384 8v66.38C384 118.1 408.5 156 444.4 181.1zM195 359C125.1 370.1 59.75 394.8 0 432C83.62 484.2 180.2 512 279 512h88.5l-112.7-131.5C240 363.2 217.4 355.4 195 359zM553.3 87.12C547.6 83.25 544 77.12 544 70.25V8C544 3.625 540.4 0 536 0h-48C483.6 0 480 3.625 480 8v62.25c0 22.13 10.12 43.5 28.62 55.5C550.8 153 576 199.5 576 249.8V280C576 284.4 579.6 288 584 288h48C636.4 288 640 284.4 640 280V249.8C640 184.2 607.6 123.5 553.3 87.12zM360.9 352c-34.38 .125-86.75 .25-88.25 .25l117.9 137.4C402.6 503.9 420.4 512 439.1 512h88.38l-117.9-137.6C397.4 360.1 379.6 352 360.9 352zM616 352H432l117.1 137.6C562.1 503.9 579.9 512 598.6 512H616c13.25 0 24-10.75 24-24v-112C640 362.8 629.3 352 616 352z"], + "jug-detergent": [384, 512, [], "e519", "M96 24C96 10.75 106.7 0 120 0H200C213.3 0 224 10.75 224 24V48H232C245.3 48 256 58.75 256 72C256 85.25 245.3 96 232 96H88C74.75 96 64 85.25 64 72C64 58.75 74.75 48 88 48H96V24zM0 256C0 185.3 57.31 128 128 128H256C326.7 128 384 185.3 384 256V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V256zM256 352C256 369.7 270.3 384 288 384C305.7 384 320 369.7 320 352V256C320 238.3 305.7 224 288 224C270.3 224 256 238.3 256 256V352z"], + "k": [320, 512, [107], "4b", "M314.3 429.8c10.06 14.53 6.438 34.47-8.094 44.53c-5.562 3.844-11.91 5.688-18.19 5.688c-10.16 0-20.12-4.812-26.34-13.78L128.1 273.3L64 338.9v109.1c0 17.67-14.31 32-32 32s-32-14.33-32-32v-384C0 46.34 14.31 32.01 32 32.01S64 46.34 64 64.01v183.3l201.1-205.7c12.31-12.61 32.63-12.86 45.25-.5c12.62 12.34 12.88 32.61 .5 45.25l-137.2 140.3L314.3 429.8z"], + "kaaba": [576, 512, [128331], "f66b", "M278.5 1.457C284.7-.4856 291.3-.4856 297.5 1.457L553.5 81.46C566.9 85.63 576 98 576 112V149.2L292.8 237.7C289.7 238.7 286.3 238.7 283.2 237.7L.0006 149.2V112C.0006 98.01 9.097 85.63 22.46 81.46L278.5 1.457zM288 191.2L515.1 120L288 48.76L60.04 120L288 191.2zM302.3 268.3L576 182.8V229.2L523.2 245.7C514.8 248.4 510.1 257.3 512.7 265.8C515.4 274.2 524.3 278.9 532.8 276.3L576 262.8V400C576 413.1 566.9 426.4 553.5 430.5L297.5 510.5C291.3 512.5 284.7 512.5 278.5 510.5L22.46 430.5C9.096 426.4 0 413.1 0 399.1V262.8L43.23 276.3C51.67 278.9 60.64 274.2 63.28 265.8C65.91 257.3 61.21 248.4 52.78 245.7L0 229.2V182.8L273.7 268.3C283 271.2 292.1 271.2 302.3 268.3L302.3 268.3zM116.8 265.7C108.3 263.1 99.37 267.8 96.73 276.2C94.1 284.7 98.8 293.6 107.2 296.3L171.2 316.3C179.7 318.9 188.6 314.2 191.3 305.8C193.9 297.3 189.2 288.4 180.8 285.7L116.8 265.7zM468.8 296.3C477.2 293.6 481.9 284.7 479.3 276.2C476.6 267.8 467.7 263.1 459.2 265.7L395.2 285.7C386.8 288.4 382.1 297.3 384.7 305.8C387.4 314.2 396.3 318.9 404.8 316.3L468.8 296.3zM244.8 305.7C236.3 303.1 227.4 307.8 224.7 316.2C222.1 324.7 226.8 333.6 235.2 336.3L273.7 348.3C283 351.2 292.1 351.2 302.3 348.3L340.8 336.3C349.2 333.6 353.9 324.7 351.3 316.2C348.6 307.8 339.7 303.1 331.2 305.7L292.8 317.7C289.7 318.7 286.3 318.7 283.2 317.7L244.8 305.7z"], + "key": [512, 512, [128273], "f084", "M282.3 343.7L248.1 376.1C244.5 381.5 238.4 384 232 384H192V424C192 437.3 181.3 448 168 448H128V488C128 501.3 117.3 512 104 512H24C10.75 512 0 501.3 0 488V408C0 401.6 2.529 395.5 7.029 391L168.3 229.7C162.9 212.8 160 194.7 160 176C160 78.8 238.8 0 336 0C433.2 0 512 78.8 512 176C512 273.2 433.2 352 336 352C317.3 352 299.2 349.1 282.3 343.7zM376 176C398.1 176 416 158.1 416 136C416 113.9 398.1 96 376 96C353.9 96 336 113.9 336 136C336 158.1 353.9 176 376 176z"], + "keyboard": [576, 512, [9000], "f11c", "M512 448H64c-35.35 0-64-28.65-64-64V128c0-35.35 28.65-64 64-64h448c35.35 0 64 28.65 64 64v256C576 419.3 547.3 448 512 448zM128 180v-40C128 133.4 122.6 128 116 128h-40C69.38 128 64 133.4 64 140v40C64 186.6 69.38 192 76 192h40C122.6 192 128 186.6 128 180zM224 180v-40C224 133.4 218.6 128 212 128h-40C165.4 128 160 133.4 160 140v40C160 186.6 165.4 192 172 192h40C218.6 192 224 186.6 224 180zM320 180v-40C320 133.4 314.6 128 308 128h-40C261.4 128 256 133.4 256 140v40C256 186.6 261.4 192 268 192h40C314.6 192 320 186.6 320 180zM416 180v-40C416 133.4 410.6 128 404 128h-40C357.4 128 352 133.4 352 140v40C352 186.6 357.4 192 364 192h40C410.6 192 416 186.6 416 180zM512 180v-40C512 133.4 506.6 128 500 128h-40C453.4 128 448 133.4 448 140v40C448 186.6 453.4 192 460 192h40C506.6 192 512 186.6 512 180zM128 276v-40C128 229.4 122.6 224 116 224h-40C69.38 224 64 229.4 64 236v40C64 282.6 69.38 288 76 288h40C122.6 288 128 282.6 128 276zM224 276v-40C224 229.4 218.6 224 212 224h-40C165.4 224 160 229.4 160 236v40C160 282.6 165.4 288 172 288h40C218.6 288 224 282.6 224 276zM320 276v-40C320 229.4 314.6 224 308 224h-40C261.4 224 256 229.4 256 236v40C256 282.6 261.4 288 268 288h40C314.6 288 320 282.6 320 276zM416 276v-40C416 229.4 410.6 224 404 224h-40C357.4 224 352 229.4 352 236v40C352 282.6 357.4 288 364 288h40C410.6 288 416 282.6 416 276zM512 276v-40C512 229.4 506.6 224 500 224h-40C453.4 224 448 229.4 448 236v40C448 282.6 453.4 288 460 288h40C506.6 288 512 282.6 512 276zM128 372v-40C128 325.4 122.6 320 116 320h-40C69.38 320 64 325.4 64 332v40C64 378.6 69.38 384 76 384h40C122.6 384 128 378.6 128 372zM416 372v-40C416 325.4 410.6 320 404 320h-232C165.4 320 160 325.4 160 332v40C160 378.6 165.4 384 172 384h232C410.6 384 416 378.6 416 372zM512 372v-40C512 325.4 506.6 320 500 320h-40C453.4 320 448 325.4 448 332v40C448 378.6 453.4 384 460 384h40C506.6 384 512 378.6 512 372z"], + "khanda": [576, 512, [9772], "f66d", "M447.7 65.1c-6.25-3.5-14.29-2.351-19.29 3.024c-5.125 5.375-5.833 13.37-1.958 19.5c16.5 26.25 25.23 56.34 25.23 87.46c-.25 53.25-26.74 102.6-71.24 132.4l-76.62 53.35v-20.12l44.01-36.12c3.875-4.125 4.983-10.13 2.858-15.26L342.8 273c33.88-19.25 56.94-55.25 56.94-97c0-40.75-22.06-76.12-54.56-95.75l5.151-11.39c2.375-5.5 .9825-11.87-3.518-15.1L287.9 .0074l-59.05 52.77C224.4 57.02 222.1 63.37 225.2 68.87l5.203 11.32C197.1 99.81 175.9 135.2 175.9 175.1c0 41.75 23.08 77.75 56.95 97L224.1 290.2C222.9 295.4 223.9 301.2 227.9 305.5l43.1 36.11v19.91L195.2 308.1c-44.25-29.5-70.72-78.9-70.97-132.1c0-31.12 8.73-61.2 25.23-87.45C153.3 82.4 151.8 74.75 146.8 69.5C141.8 64.12 133.2 63.25 126.8 66.75C48.34 109.6 9.713 205.2 45.34 296c7 18 17.88 34.38 30.5 49l55.92 65.38c4.875 5.75 13.09 7.232 19.71 3.732l79.25-42.25l29.26 20.37l-47.09 32.75c-1.625-.375-3.125-1-4.1-1c-13.25 0-23.97 10.75-23.97 24s10.72 23.1 23.97 23.1c12.13 0 21.74-9.126 23.36-20.75l40.6-28.25v29.91c-9.375 5.625-15.97 15.37-15.97 27.12c0 17.62 14.37 31.1 31.1 31.1c17.63 0 31.1-14.37 31.1-31.1c0-11.75-6.656-21.52-16.03-27.14v-30.12l40.87 28.48c1.625 11.63 11.23 20.75 23.35 20.75c13.25 0 23.98-10.74 23.98-23.99s-10.73-24-23.98-24c-1.875 0-3.375 .625-5 1l-47.09-32.75l29.25-20.37l79.26 42.25c6.625 3.5 14.84 2.018 19.71-3.732l52.51-61.27c18.88-22 33.1-47.49 41.25-75.61C559.6 189.9 521.5 106.2 447.7 65.1zM351.8 176c0 22.25-11.45 41.91-28.82 53.41l-5.613-12.43c-8.75-24.5-8.811-51.11-.061-75.61l7.748-17.12C341.2 135.9 351.8 154.6 351.8 176zM223.8 176c0-21.38 10.67-40.16 26.67-51.79l7.848 17.17c8.75 24.63 8.747 51.11-.0032 75.61L252.7 229.4C235.4 217.9 223.8 198.2 223.8 176z"], + "kip-sign": [384, 512, [], "e1c4", "M182.5 224H352C369.7 224 384 238.3 384 256C384 273.7 369.7 288 352 288H182.5L340.8 423.7C354.2 435.2 355.8 455.4 344.3 468.8C332.8 482.2 312.6 483.8 299.2 472.3L128 325.6V448C128 465.7 113.7 480 96 480C78.33 480 64 465.7 64 448V288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H64V64C64 46.33 78.33 32 96 32C113.7 32 128 46.33 128 64V186.4L299.2 39.7C312.6 28.2 332.8 29.76 344.3 43.18C355.8 56.59 354.2 76.8 340.8 88.3L182.5 224z"], + "kit-medical": [576, 512, ["first-aid"], "f479", "M64 32h32v448H64c-35.35 0-64-28.66-64-64V96C0 60.66 28.65 32 64 32zM128 32h320v448H128V32zM176 282c0 8.835 7.164 16 16 16h53.1V352c0 8.836 7.165 16 16 16h52c8.836 0 16-7.164 16-16V298H384c8.836 0 16-7.165 16-16v-52c0-8.837-7.164-16-16-16h-54V160c0-8.836-7.164-16-16-16h-52c-8.835 0-16 7.164-16 16v54H192c-8.836 0-16 7.163-16 16V282zM512 32h-32v448h32c35.35 0 64-28.66 64-64V96C576 60.66 547.3 32 512 32z"], + "kitchen-set": [576, 512, [], "e51a", "M80 144C80 108.7 108.7 80 144 80C179.3 80 208 108.7 208 144C208 179.3 179.3 208 144 208C108.7 208 80 179.3 80 144zM284.4 176C269.9 240.1 212.5 288 144 288C64.47 288 0 223.5 0 144C0 64.47 64.47 0 144 0C212.5 0 269.9 47.87 284.4 112H356.2C365 102.2 377.8 96 392 96H496C522.5 96 544 117.5 544 144C544 170.5 522.5 192 496 192H392C377.8 192 365 185.8 356.2 176H284.4zM144 48C90.98 48 48 90.98 48 144C48 197 90.98 240 144 240C197 240 240 197 240 144C240 90.98 197 48 144 48zM424 264V272H520C533.3 272 544 282.7 544 296C544 309.3 533.3 320 520 320H280C266.7 320 256 309.3 256 296C256 282.7 266.7 272 280 272H376V264C376 250.7 386.7 240 400 240C413.3 240 424 250.7 424 264zM288 464V352H512V464C512 490.5 490.5 512 464 512H336C309.5 512 288 490.5 288 464zM176 320C202.5 320 224 341.5 224 368C224 394.5 202.5 416 176 416H160C160 433.7 145.7 448 128 448H64C46.33 448 32 433.7 32 416V336C32 327.2 39.16 320 48 320H176zM192 368C192 359.2 184.8 352 176 352H160V384H176C184.8 384 192 376.8 192 368zM200 464C213.3 464 224 474.7 224 488C224 501.3 213.3 512 200 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H200z"], + "kiwi-bird": [576, 512, [], "f535", "M256 405.1V456C256 469.3 245.3 480 232 480C218.7 480 208 469.3 208 456V415.3C202.7 415.8 197.4 416 192 416C175.4 416 159.3 413.9 144 409.1V456C144 469.3 133.3 480 120 480C106.7 480 96 469.3 96 456V390.3C38.61 357.1 0 295.1 0 224C0 117.1 85.96 32 192 32C228.3 32 262.3 42.08 291.2 59.6C322.4 78.44 355.9 96 392.3 96H448C518.7 96 576 153.3 576 224V464C576 470.1 571.5 477.2 564.8 479.3C558.2 481.4 550.9 478.9 546.9 473.2L461.6 351.3C457.1 351.8 452.6 352 448 352H392.3C355.9 352 322.4 369.6 291.2 388.4C280.2 395.1 268.4 400.7 256 405.1zM448 248C461.3 248 472 237.3 472 224C472 210.7 461.3 200 448 200C434.7 200 424 210.7 424 224C424 237.3 434.7 248 448 248z"], + "l": [320, 512, [108], "4c", "M320 448c0 17.67-14.31 32-32 32H64c-17.69 0-32-14.33-32-32v-384C32 46.34 46.31 32.01 64 32.01S96 46.34 96 64.01v352h192C305.7 416 320 430.3 320 448z"], + "land-mine-on": [576, 512, [], "e51b", "M312 168C312 181.3 301.3 192 288 192C274.7 192 264 181.3 264 168V24C264 10.75 274.7 0 288 0C301.3 0 312 10.75 312 24V168zM160 320C160 302.3 174.3 288 192 288H384C401.7 288 416 302.3 416 320V352H160V320zM82.74 410.5C90.87 394.3 107.5 384 125.7 384H450.3C468.5 384 485.1 394.3 493.3 410.5L520.8 465.7C531.5 486.1 516 512 492.2 512H83.78C59.99 512 44.52 486.1 55.16 465.7L82.74 410.5zM4.269 138.3C11.81 127.4 26.77 124.7 37.66 132.3L141.7 204.3C152.6 211.8 155.3 226.8 147.7 237.7C140.2 248.6 125.2 251.3 114.3 243.7L10.34 171.7C-.5568 164.2-3.275 149.2 4.269 138.3V138.3zM538.3 132.3C549.2 124.7 564.2 127.4 571.7 138.3C579.3 149.2 576.6 164.2 565.7 171.7L461.7 243.7C450.8 251.3 435.8 248.6 428.3 237.7C420.7 226.8 423.4 211.8 434.3 204.3L538.3 132.3z"], + "landmark": [512, 512, [127963], "f66f", "M240.1 4.216C249.1-1.405 262-1.405 271.9 4.216L443.6 102.4L447.1 104V104.9L495.9 132.2C508.5 139.4 514.6 154.2 510.9 168.2C507.2 182.2 494.5 192 479.1 192H31.1C17.49 192 4.795 182.2 1.071 168.2C-2.653 154.2 3.524 139.4 16.12 132.2L63.1 104.9V104L68.37 102.4L240.1 4.216zM64 224H128V416H168V224H232V416H280V224H344V416H384V224H448V420.3C448.6 420.6 449.2 420.1 449.8 421.4L497.8 453.4C509.5 461.2 514.7 475.8 510.6 489.3C506.5 502.8 494.1 512 480 512H32C17.9 512 5.46 502.8 1.373 489.3C-2.713 475.8 2.517 461.2 14.25 453.4L62.25 421.4C62.82 420.1 63.41 420.6 64 420.3V224z"], + "landmark-dome": [512, 512, ["landmark-alt"], "f752", "M264 0C277.3 0 288 10.75 288 24V34.65C368.4 48.14 431.9 111.6 445.3 192H448C465.7 192 480 206.3 480 224C480 241.7 465.7 256 448 256H63.1C46.33 256 31.1 241.7 31.1 224C31.1 206.3 46.33 192 63.1 192H66.65C80.14 111.6 143.6 48.14 223.1 34.65V24C223.1 10.75 234.7 0 247.1 0L264 0zM63.1 288H127.1V416H167.1V288H231.1V416H280V288H344V416H384V288H448V420.3C448.6 420.6 449.2 420.1 449.8 421.4L497.8 453.4C509.5 461.2 514.7 475.8 510.6 489.3C506.5 502.8 494.1 512 480 512H31.1C17.9 512 5.458 502.8 1.372 489.3C-2.715 475.8 2.515 461.2 14.25 453.4L62.25 421.4C62.82 420.1 63.41 420.6 63.1 420.3V288z"], + "landmark-flag": [512, 512, [], "e51c", "M352 0C360.8 0 368 7.164 368 16V80C368 88.84 360.8 96 352 96H272V128H464C481.7 128 496 142.3 496 160C496 177.7 481.7 192 464 192H47.1C30.33 192 15.1 177.7 15.1 160C15.1 142.3 30.33 128 47.1 128H239.1V16C239.1 7.164 247.2 0 255.1 0H352zM63.1 224H127.1V416H167.1V224H231.1V416H280V224H344V416H384V224H448V420.3C448.6 420.6 449.2 420.1 449.8 421.4L497.8 453.4C509.5 461.2 514.7 475.8 510.6 489.3C506.5 502.8 494.1 512 480 512H31.1C17.9 512 5.458 502.8 1.372 489.3C-2.715 475.8 2.515 461.2 14.25 453.4L62.25 421.4C62.82 420.1 63.4 420.6 63.1 420.3V224z"], + "language": [640, 512, [], "f1ab", "M448 164C459 164 468 172.1 468 184V188H528C539 188 548 196.1 548 208C548 219 539 228 528 228H526L524.4 232.5C515.5 256.1 501.9 279.1 484.7 297.9C485.6 298.4 486.5 298.1 487.4 299.5L506.3 310.8C515.8 316.5 518.8 328.8 513.1 338.3C507.5 347.8 495.2 350.8 485.7 345.1L466.8 333.8C462.4 331.1 457.1 328.3 453.7 325.3C443.2 332.8 431.8 339.3 419.8 344.7L416.1 346.3C406 350.8 394.2 346.2 389.7 336.1C385.2 326 389.8 314.2 399.9 309.7L403.5 308.1C409.9 305.2 416.1 301.1 422 298.3L409.9 286.1C402 278.3 402 265.7 409.9 257.9C417.7 250 430.3 250 438.1 257.9L452.7 272.4L453.3 272.1C465.7 259.9 475.8 244.7 483.1 227.1H376C364.1 227.1 356 219 356 207.1C356 196.1 364.1 187.1 376 187.1H428V183.1C428 172.1 436.1 163.1 448 163.1L448 164zM160 233.2L179 276H140.1L160 233.2zM0 128C0 92.65 28.65 64 64 64H576C611.3 64 640 92.65 640 128V384C640 419.3 611.3 448 576 448H64C28.65 448 0 419.3 0 384V128zM320 384H576V128H320V384zM178.3 175.9C175.1 168.7 167.9 164 160 164C152.1 164 144.9 168.7 141.7 175.9L77.72 319.9C73.24 329.1 77.78 341.8 87.88 346.3C97.97 350.8 109.8 346.2 114.3 336.1L123.2 315.1H196.8L205.7 336.1C210.2 346.2 222 350.8 232.1 346.3C242.2 341.8 246.8 329.1 242.3 319.9L178.3 175.9z"], + "laptop": [640, 512, [128187], "f109", "M128 96h384v256h64v-272c0-26.38-21.62-48-48-48h-416c-26.38 0-48 21.62-48 48V352h64V96zM624 383.1h-608c-8.75 0-16 7.25-16 16v16c0 35.25 28.75 64 64 64h512c35.25 0 64-28.75 64-64v-16C640 391.2 632.8 383.1 624 383.1z"], + "laptop-code": [640, 512, [], "f5fc", "M128 96h384v256h64V80C576 53.63 554.4 32 528 32h-416C85.63 32 64 53.63 64 80V352h64V96zM624 384h-608C7.25 384 0 391.3 0 400V416c0 35.25 28.75 64 64 64h512c35.25 0 64-28.75 64-64v-16C640 391.3 632.8 384 624 384zM365.9 286.2C369.8 290.1 374.9 292 380 292s10.23-1.938 14.14-5.844l48-48c7.812-7.813 7.812-20.5 0-28.31l-48-48c-7.812-7.813-20.47-7.813-28.28 0c-7.812 7.813-7.812 20.5 0 28.31l33.86 33.84l-33.86 33.84C358 265.7 358 278.4 365.9 286.2zM274.1 161.9c-7.812-7.813-20.47-7.813-28.28 0l-48 48c-7.812 7.813-7.812 20.5 0 28.31l48 48C249.8 290.1 254.9 292 260 292s10.23-1.938 14.14-5.844c7.812-7.813 7.812-20.5 0-28.31L240.3 224l33.86-33.84C281.1 182.4 281.1 169.7 274.1 161.9z"], + "laptop-file": [640, 512, [], "e51d", "M192 96C192 113.7 206.3 128 224 128H320V192H288C243.8 192 208 227.8 208 272V384C187.1 384 169.3 397.4 162.7 416H48C21.49 416 0 394.5 0 368V48C0 21.49 21.49 0 48 0H192V96zM240 272C240 245.5 261.5 224 288 224H544C570.5 224 592 245.5 592 272V416H624C632.8 416 640 423.2 640 432V448C640 483.3 611.3 512 576 512H256C220.7 512 192 483.3 192 448V432C192 423.2 199.2 416 208 416H240V272zM304 288V416H528V288H304zM320 96H224V0L320 96z"], + "laptop-medical": [640, 512, [], "f812", "M624 384h-608C7.25 384 0 391.3 0 400V416c0 35.25 28.75 64 64 64h512c35.25 0 64-28.75 64-64v-16C640 391.3 632.8 384 624 384zM128 96h384v256h64V80C576 53.63 554.4 32 528 32h-416C85.63 32 64 53.63 64 80V352h64V96zM304 336h32c8.801 0 16-7.201 16-16V272h48C408.8 272 416 264.8 416 256V224c0-8.801-7.199-16-16-16H352V160c0-8.801-7.199-16-16-16h-32C295.2 144 288 151.2 288 160v48H240C231.2 208 224 215.2 224 224v32c0 8.799 7.199 16 16 16H288V320C288 328.8 295.2 336 304 336z"], + "lari-sign": [384, 512, [], "e1c8", "M144 32C161.7 32 176 46.33 176 64V96.66C181.3 96.22 186.6 96 192 96C197.4 96 202.7 96.22 208 96.66V64C208 46.33 222.3 32 240 32C257.7 32 272 46.33 272 64V113.4C326.9 138.6 367.8 188.9 380.2 249.6C383.7 266.1 372.5 283.8 355.2 287.4C337.8 290.9 320.1 279.7 317.4 262.4C311.4 232.5 294.9 206.4 272 188.1V256C272 273.7 257.7 288 240 288C222.3 288 208 273.7 208 256V160.1C202.8 160.3 197.4 160 192 160C186.6 160 181.2 160.3 176 160.1V256C176 273.7 161.7 288 144 288C126.3 288 112 273.7 112 256V188.1C82.74 211.5 64 247.6 64 288C64 358.7 121.3 416 192 416H352C369.7 416 384 430.3 384 448C384 465.7 369.7 480 352 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H48.89C18.49 382 0 337.2 0 288C0 210.5 45.9 143.7 112 113.4V64C112 46.33 126.3 32 144 32V32z"], + "layer-group": [512, 512, [], "f5fd", "M232.5 5.171C247.4-1.718 264.6-1.718 279.5 5.171L498.1 106.2C506.6 110.1 512 118.6 512 127.1C512 137.3 506.6 145.8 498.1 149.8L279.5 250.8C264.6 257.7 247.4 257.7 232.5 250.8L13.93 149.8C5.438 145.8 0 137.3 0 127.1C0 118.6 5.437 110.1 13.93 106.2L232.5 5.171zM498.1 234.2C506.6 238.1 512 246.6 512 255.1C512 265.3 506.6 273.8 498.1 277.8L279.5 378.8C264.6 385.7 247.4 385.7 232.5 378.8L13.93 277.8C5.438 273.8 0 265.3 0 255.1C0 246.6 5.437 238.1 13.93 234.2L67.13 209.6L219.1 279.8C242.5 290.7 269.5 290.7 292.9 279.8L444.9 209.6L498.1 234.2zM292.9 407.8L444.9 337.6L498.1 362.2C506.6 366.1 512 374.6 512 383.1C512 393.3 506.6 401.8 498.1 405.8L279.5 506.8C264.6 513.7 247.4 513.7 232.5 506.8L13.93 405.8C5.438 401.8 0 393.3 0 383.1C0 374.6 5.437 366.1 13.93 362.2L67.13 337.6L219.1 407.8C242.5 418.7 269.5 418.7 292.9 407.8V407.8z"], + "leaf": [512, 512, [], "f06c", "M512 165.4c0 127.9-70.05 235.3-175.3 270.1c-20.04 7.938-41.83 12.46-64.69 12.46c-64.9 0-125.2-36.51-155.7-94.47c-54.13 49.93-68.71 107-68.96 108.1C44.72 472.6 34.87 480 24.02 480c-1.844 0-3.727-.2187-5.602-.6562c-12.89-3.098-20.84-16.08-17.75-28.96c9.598-39.5 90.47-226.4 335.3-226.4C344.8 224 352 216.8 352 208S344.8 192 336 192C228.6 192 151 226.6 96.29 267.6c.1934-10.82 1.242-21.84 3.535-33.05c13.47-65.81 66.04-119 131.4-134.2c28.33-6.562 55.68-6.013 80.93-.0054c56 13.32 118.2-7.412 149.3-61.24c5.664-9.828 20.02-9.516 24.66 .8282C502.7 76.76 512 121.9 512 165.4z"], + "left-long": [512, 512, ["long-arrow-alt-left"], "f30a", "M512 256C512 273.7 497.7 288 480 288H160.1l0 72c0 9.547-5.66 18.19-14.42 22c-8.754 3.812-18.95 2.077-25.94-4.407l-112.1-104c-10.24-9.5-10.24-25.69 0-35.19l112.1-104c6.992-6.484 17.18-8.218 25.94-4.406C154.4 133.8 160.1 142.5 160.1 151.1L160.1 224H480C497.7 224 512 238.3 512 256z"], + "left-right": [512, 512, [8596, "arrows-alt-h"], "f337", "M503.1 273.6l-112 104c-6.984 6.484-17.17 8.219-25.92 4.406s-14.41-12.45-14.41-22v-56l-192 .001V360c0 9.547-5.656 18.19-14.41 22c-8.75 3.812-18.94 2.078-25.92-4.406l-112-104c-9.781-9.094-9.781-26.09 0-35.19l112-104c6.984-6.484 17.17-8.219 25.92-4.406C154 133.8 159.7 142.5 159.7 152v55.1l192-.001v-56c0-9.547 5.656-18.19 14.41-22s18.94-2.078 25.92 4.406l112 104C513.8 247.5 513.8 264.5 503.1 273.6z"], + "lemon": [448, 512, [127819], "f094", "M427.9 52.1c-20.13-20.23-47.58-25.27-65.63-14.77c-51.63 30.08-158.6-46.49-281 75.91c-122.4 122.4-45.83 229.4-75.91 281c-10.5 18.05-5.471 45.5 14.77 65.63c20.13 20.24 47.58 25.27 65.63 14.77c51.63-30.08 158.6 46.49 281-75.91c122.4-122.4 45.83-229.4 75.91-281C453.2 99.69 448.1 72.23 427.9 52.1zM211.9 127.5C167.6 138.7 106.7 199.6 95.53 243.9C93.69 251.2 87.19 255.1 79.1 255.1c-1.281 0-2.594-.1562-3.906-.4687C67.53 253.4 62.34 244.7 64.47 236.1c14.16-56.28 83.31-125.4 139.6-139.6c8.656-2.031 17.25 3.062 19.44 11.62C225.7 116.7 220.5 125.3 211.9 127.5z"], + "less-than": [384, 512, [62774], "3c", "M351.1 448c-4.797 0-9.688-1.094-14.28-3.375l-320-160C6.844 279.2 0 268.1 0 256c0-12.13 6.844-23.18 17.69-28.62l320-160c15.88-7.875 35.05-1.5 42.94 14.31c7.906 15.81 1.5 35.03-14.31 42.94L103.5 256l262.8 131.4c15.81 7.906 22.22 27.12 14.31 42.94C375 441.5 363.7 448 351.1 448z"], + "less-than-equal": [448, 512, [], "f537", "M52.11 221.7l320 128C376 351.3 380 352 383.1 352c12.7 0 24.72-7.594 29.73-20.12c6.562-16.41-1.422-35.03-17.83-41.59L150.2 192l245.7-98.28c16.41-6.562 24.39-25.19 17.83-41.59S388.6 27.68 372.1 34.21l-320 128.1C39.97 167.2 32 178.9 32 192S39.97 216.8 52.11 221.7zM416 416H32c-17.67 0-32 14.31-32 31.1S14.33 480 32 480h384c17.67 0 32-14.31 32-32S433.7 416 416 416z"], + "life-ring": [512, 512, [], "f1cd", "M470.6 425.4C483.1 437.9 483.1 458.1 470.6 470.6C458.1 483.1 437.9 483.1 425.4 470.6L412.1 458.2C369.6 491.9 315.2 512 255.1 512C196.8 512 142.4 491.9 99.02 458.2L86.63 470.6C74.13 483.1 53.87 483.1 41.37 470.6C28.88 458.1 28.88 437.9 41.37 425.4L53.76 412.1C20.07 369.6 0 315.2 0 255.1C0 196.8 20.07 142.4 53.76 99.02L41.37 86.63C28.88 74.13 28.88 53.87 41.37 41.37C53.87 28.88 74.13 28.88 86.63 41.37L99.02 53.76C142.4 20.07 196.8 0 255.1 0C315.2 0 369.6 20.07 412.1 53.76L425.4 41.37C437.9 28.88 458.1 28.88 470.6 41.37C483.1 53.87 483.1 74.13 470.6 86.63L458.2 99.02C491.9 142.4 512 196.8 512 255.1C512 315.2 491.9 369.6 458.2 412.1L470.6 425.4zM309.3 354.5C293.4 363.1 275.3 368 255.1 368C236.7 368 218.6 363.1 202.7 354.5L144.8 412.5C176.1 434.9 214.5 448 255.1 448C297.5 448 335.9 434.9 367.2 412.5L309.3 354.5zM448 255.1C448 214.5 434.9 176.1 412.5 144.8L354.5 202.7C363.1 218.6 368 236.7 368 256C368 275.3 363.1 293.4 354.5 309.3L412.5 367.2C434.9 335.9 448 297.5 448 256V255.1zM255.1 63.1C214.5 63.1 176.1 77.14 144.8 99.5L202.7 157.5C218.6 148.9 236.7 143.1 255.1 143.1C275.3 143.1 293.4 148.9 309.3 157.5L367.2 99.5C335.9 77.14 297.5 63.1 256 63.1H255.1zM157.5 309.3C148.9 293.4 143.1 275.3 143.1 255.1C143.1 236.7 148.9 218.6 157.5 202.7L99.5 144.8C77.14 176.1 63.1 214.5 63.1 255.1C63.1 297.5 77.14 335.9 99.5 367.2L157.5 309.3zM255.1 207.1C229.5 207.1 207.1 229.5 207.1 255.1C207.1 282.5 229.5 303.1 255.1 303.1C282.5 303.1 304 282.5 304 255.1C304 229.5 282.5 207.1 255.1 207.1z"], + "lightbulb": [384, 512, [128161], "f0eb", "M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"], + "lines-leaning": [384, 512, [], "e51e", "M62.36 458.1C56.77 474.9 38.65 483.9 21.88 478.4C5.116 472.8-3.946 454.6 1.643 437.9L129.6 53.88C135.2 37.12 153.4 28.05 170.1 33.64C186.9 39.23 195.9 57.35 190.4 74.12L62.36 458.1zM261.3 32.44C278.7 35.34 290.5 51.83 287.6 69.26L223.6 453.3C220.7 470.7 204.2 482.5 186.7 479.6C169.3 476.7 157.5 460.2 160.4 442.7L224.4 58.74C227.3 41.31 243.8 29.53 261.3 32.44H261.3zM352 32C369.7 32 384 46.33 384 64V448C384 465.7 369.7 480 352 480C334.3 480 320 465.7 320 448V64C320 46.33 334.3 32 352 32V32z"], + "link": [640, 512, [128279, "chain"], "f0c1", "M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"], + "link-slash": [640, 512, ["chain-broken", "chain-slash", "unlink"], "f127", "M185.7 120.3C242.5 75.82 324.7 79.73 376.1 131.1C420.1 175.1 430.9 239.6 406.7 293.5L438.6 318.4L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.1 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.732 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L489.3 358.2L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L185.7 120.3zM238.1 161.1L353.4 251.7C359.3 225.5 351.7 197.2 331.7 177.2C306.6 152.1 269.1 147 238.1 161.1V161.1zM263 380C233.1 350.1 218.7 309.8 220.9 270L406.6 416.4C357.4 431 301.9 418.9 263 380V380zM116.6 187.9L167.2 227.8L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L116.6 187.9z"], + "lira-sign": [320, 512, [8356], "f195", "M111.1 191.1H224C241.7 191.1 256 206.3 256 223.1C256 241.7 241.7 255.1 224 255.1H111.1V287.1H224C241.7 287.1 256 302.3 256 319.1C256 337.7 241.7 352 224 352H110.8C108.1 374.2 100.8 395.6 89.2 414.9L88.52 416H288C305.7 416 320 430.3 320 448C320 465.7 305.7 480 288 480H32C20.47 480 9.834 473.8 4.154 463.8C-1.527 453.7-1.371 441.4 4.56 431.5L34.32 381.9C39.89 372.6 43.83 362.5 46.01 352H32C14.33 352 0 337.7 0 320C0 302.3 14.33 288 32 288H48V256H32C14.33 256 0 241.7 0 224C0 206.3 14.33 192 32 192H48V160.4C48 89.47 105.5 32 176.4 32C190.2 32 203.9 34.22 216.1 38.59L298.1 65.64C314.9 71.23 323.9 89.35 318.4 106.1C312.8 122.9 294.6 131.9 277.9 126.4L196.7 99.3C190.2 97.12 183.3 96 176.4 96C140.8 96 112 124.8 112 160.4L111.1 191.1z"], + "list": [512, 512, ["list-squares"], "f03a", "M88 48C101.3 48 112 58.75 112 72V120C112 133.3 101.3 144 88 144H40C26.75 144 16 133.3 16 120V72C16 58.75 26.75 48 40 48H88zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H192C174.3 128 160 113.7 160 96C160 78.33 174.3 64 192 64H480zM480 224C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H192C174.3 288 160 273.7 160 256C160 238.3 174.3 224 192 224H480zM480 384C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H192C174.3 448 160 433.7 160 416C160 398.3 174.3 384 192 384H480zM16 232C16 218.7 26.75 208 40 208H88C101.3 208 112 218.7 112 232V280C112 293.3 101.3 304 88 304H40C26.75 304 16 293.3 16 280V232zM88 368C101.3 368 112 378.7 112 392V440C112 453.3 101.3 464 88 464H40C26.75 464 16 453.3 16 440V392C16 378.7 26.75 368 40 368H88z"], + "list-check": [512, 512, ["tasks"], "f0ae", "M152.1 38.16C161.9 47.03 162.7 62.2 153.8 72.06L81.84 152.1C77.43 156.9 71.21 159.8 64.63 159.1C58.05 160.2 51.69 157.6 47.03 152.1L7.029 112.1C-2.343 103.6-2.343 88.4 7.029 79.03C16.4 69.66 31.6 69.66 40.97 79.03L63.08 101.1L118.2 39.94C127 30.09 142.2 29.29 152.1 38.16V38.16zM152.1 198.2C161.9 207 162.7 222.2 153.8 232.1L81.84 312.1C77.43 316.9 71.21 319.8 64.63 319.1C58.05 320.2 51.69 317.6 47.03 312.1L7.029 272.1C-2.343 263.6-2.343 248.4 7.029 239C16.4 229.7 31.6 229.7 40.97 239L63.08 261.1L118.2 199.9C127 190.1 142.2 189.3 152.1 198.2V198.2zM224 96C224 78.33 238.3 64 256 64H480C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H256C238.3 128 224 113.7 224 96V96zM224 256C224 238.3 238.3 224 256 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H256C238.3 288 224 273.7 224 256zM160 416C160 398.3 174.3 384 192 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H192C174.3 448 160 433.7 160 416zM0 416C0 389.5 21.49 368 48 368C74.51 368 96 389.5 96 416C96 442.5 74.51 464 48 464C21.49 464 0 442.5 0 416z"], + "list-ol": [576, 512, ["list-1-2", "list-numeric"], "f0cb", "M55.1 56.04C55.1 42.78 66.74 32.04 79.1 32.04H111.1C125.3 32.04 135.1 42.78 135.1 56.04V176H151.1C165.3 176 175.1 186.8 175.1 200C175.1 213.3 165.3 224 151.1 224H71.1C58.74 224 47.1 213.3 47.1 200C47.1 186.8 58.74 176 71.1 176H87.1V80.04H79.1C66.74 80.04 55.1 69.29 55.1 56.04V56.04zM118.7 341.2C112.1 333.8 100.4 334.3 94.65 342.4L83.53 357.9C75.83 368.7 60.84 371.2 50.05 363.5C39.26 355.8 36.77 340.8 44.47 330.1L55.59 314.5C79.33 281.2 127.9 278.8 154.8 309.6C176.1 333.1 175.6 370.5 153.7 394.3L118.8 432H152C165.3 432 176 442.7 176 456C176 469.3 165.3 480 152 480H64C54.47 480 45.84 474.4 42.02 465.6C38.19 456.9 39.9 446.7 46.36 439.7L118.4 361.7C123.7 355.9 123.8 347.1 118.7 341.2L118.7 341.2zM512 64C529.7 64 544 78.33 544 96C544 113.7 529.7 128 512 128H256C238.3 128 224 113.7 224 96C224 78.33 238.3 64 256 64H512zM512 224C529.7 224 544 238.3 544 256C544 273.7 529.7 288 512 288H256C238.3 288 224 273.7 224 256C224 238.3 238.3 224 256 224H512zM512 384C529.7 384 544 398.3 544 416C544 433.7 529.7 448 512 448H256C238.3 448 224 433.7 224 416C224 398.3 238.3 384 256 384H512z"], + "list-ul": [512, 512, ["list-dots"], "f0ca", "M16 96C16 69.49 37.49 48 64 48C90.51 48 112 69.49 112 96C112 122.5 90.51 144 64 144C37.49 144 16 122.5 16 96zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H192C174.3 128 160 113.7 160 96C160 78.33 174.3 64 192 64H480zM480 224C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H192C174.3 288 160 273.7 160 256C160 238.3 174.3 224 192 224H480zM480 384C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H192C174.3 448 160 433.7 160 416C160 398.3 174.3 384 192 384H480zM16 416C16 389.5 37.49 368 64 368C90.51 368 112 389.5 112 416C112 442.5 90.51 464 64 464C37.49 464 16 442.5 16 416zM112 256C112 282.5 90.51 304 64 304C37.49 304 16 282.5 16 256C16 229.5 37.49 208 64 208C90.51 208 112 229.5 112 256z"], + "litecoin-sign": [384, 512, [], "e1d3", "M128 195.3L247.2 161.2C264.2 156.4 281.9 166.2 286.8 183.2C291.6 200.2 281.8 217.9 264.8 222.8L128 261.9V416H352C369.7 416 384 430.3 384 448C384 465.7 369.7 480 352 480H96C78.33 480 64 465.7 64 448V280.1L40.79 286.8C23.8 291.6 6.087 281.8 1.232 264.8C-3.623 247.8 6.216 230.1 23.21 225.2L64 213.6V64C64 46.33 78.33 32 96 32C113.7 32 128 46.33 128 64V195.3z"], + "location-arrow": [448, 512, [], "f124", "M285.6 444.1C279.8 458.3 264.8 466.3 249.8 463.4C234.8 460.4 223.1 447.3 223.1 432V256H47.1C32.71 256 19.55 245.2 16.6 230.2C13.65 215.2 21.73 200.2 35.88 194.4L387.9 50.38C399.8 45.5 413.5 48.26 422.6 57.37C431.7 66.49 434.5 80.19 429.6 92.12L285.6 444.1z"], + "location-crosshairs": [512, 512, ["location"], "f601", "M176 256C176 211.8 211.8 176 256 176C300.2 176 336 211.8 336 256C336 300.2 300.2 336 256 336C211.8 336 176 300.2 176 256zM256 0C273.7 0 288 14.33 288 32V66.65C368.4 80.14 431.9 143.6 445.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H445.3C431.9 368.4 368.4 431.9 288 445.3V480C288 497.7 273.7 512 256 512C238.3 512 224 497.7 224 480V445.3C143.6 431.9 80.14 368.4 66.65 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H66.65C80.14 143.6 143.6 80.14 224 66.65V32C224 14.33 238.3 0 256 0zM128 256C128 326.7 185.3 384 256 384C326.7 384 384 326.7 384 256C384 185.3 326.7 128 256 128C185.3 128 128 185.3 128 256z"], + "location-dot": [384, 512, ["map-marker-alt"], "f3c5", "M168.3 499.2C116.1 435 0 279.4 0 192C0 85.96 85.96 0 192 0C298 0 384 85.96 384 192C384 279.4 267 435 215.7 499.2C203.4 514.5 180.6 514.5 168.3 499.2H168.3zM192 256C227.3 256 256 227.3 256 192C256 156.7 227.3 128 192 128C156.7 128 128 156.7 128 192C128 227.3 156.7 256 192 256z"], + "location-pin": [384, 512, ["map-marker"], "f041", "M384 192C384 279.4 267 435 215.7 499.2C203.4 514.5 180.6 514.5 168.3 499.2C116.1 435 0 279.4 0 192C0 85.96 85.96 0 192 0C298 0 384 85.96 384 192H384z"], + "location-pin-lock": [512, 512, [], "e51f", "M168.3 499.2C116.1 435 0 279.4 0 192C0 85.96 85.96 0 192 0C287.7 0 366.1 69.96 381.6 161.5C328.5 170.3 288 216.4 288 272V296.6C268.9 307.6 256 328.3 256 352V446.8C240.7 467.4 226.7 485.4 215.7 499.2C203.4 514.5 180.6 514.5 168.3 499.2H168.3zM192 256C227.3 256 256 227.3 256 192C256 156.7 227.3 128 192 128C156.7 128 128 156.7 128 192C128 227.3 156.7 256 192 256zM400 192C444.2 192 480 227.8 480 272V320C497.7 320 512 334.3 512 352V480C512 497.7 497.7 512 480 512H320C302.3 512 288 497.7 288 480V352C288 334.3 302.3 320 320 320V272C320 227.8 355.8 192 400 192zM400 240C382.3 240 368 254.3 368 272V320H432V272C432 254.3 417.7 240 400 240z"], + "lock": [448, 512, [128274], "f023", "M80 192V144C80 64.47 144.5 0 224 0C303.5 0 368 64.47 368 144V192H384C419.3 192 448 220.7 448 256V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V256C0 220.7 28.65 192 64 192H80zM144 192H304V144C304 99.82 268.2 64 224 64C179.8 64 144 99.82 144 144V192z"], + "lock-open": [576, 512, [], "f3c1", "M352 192H384C419.3 192 448 220.7 448 256V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V256C0 220.7 28.65 192 64 192H288V144C288 64.47 352.5 0 432 0C511.5 0 576 64.47 576 144V192C576 209.7 561.7 224 544 224C526.3 224 512 209.7 512 192V144C512 99.82 476.2 64 432 64C387.8 64 352 99.82 352 144V192z"], + "locust": [576, 512, [], "e520", "M328 32C464.1 32 576 143 576 280V320C576 320.1 576 320.2 576 320.3C575.8 364.3 540.1 400 496 400H483.6L508.8 444.1C515.4 455.6 511.4 470.3 499.9 476.8C488.4 483.4 473.7 479.4 467.2 467.9L428.4 400H347.1L299.7 469.7C292.2 480.6 277.2 483.3 266.3 475.7C255.4 468.2 252.7 453.2 260.3 442.3L289.6 400H215.1L163.3 470.2C155.5 480.9 140.4 483.2 129.8 475.3C119.1 467.5 116.8 452.4 124.7 441.8L165.2 386.7L122.2 370.4L42.84 470.9C34.62 481.3 19.53 483 9.13 474.8C-1.274 466.6-3.049 451.5 5.164 441.1L245.2 137.1C250.4 130.5 258.8 127.1 267.2 128.2C275.5 129.3 282.7 134.8 286.1 142.5L307.8 193.3L348.7 137.8C353.8 130.8 362.2 127.2 370.8 128.2C379.3 129.1 386.7 134.6 390.1 142.5L431.8 240H496C506.2 240 516 241.9 525 245.4C508.6 151.4 426.7 80 328 80H312C298.7 80 288 69.26 288 56C288 42.75 298.7 32 312 32L328 32zM332.1 240H379.6L362.5 199.1L332.1 240zM257.8 198.5L225.1 240H273.3L274.8 238.1L257.8 198.5zM496 336C504.8 336 512 328.8 512 320C512 311.2 504.8 304 496 304C487.2 304 480 311.2 480 320C480 328.8 487.2 336 496 336zM88.83 240H126.7L48.9 337.3C38.31 326.8 32 312.3 32 296.8C32 265.4 57.45 240 88.83 240V240z"], + "lungs": [640, 512, [129729], "f604", "M640 419.8c0 61.25-62.5 105.5-125.3 88.63l-59.53-15.88c-42.12-11.38-71.25-47.5-71.25-88.63L384 316.4l85.88 57.25c3.625 2.375 8.625 1.375 11-2.25l8.875-13.37c2.5-3.625 1.5-8.625-2.125-11L320 235.3l-167.6 111.8c-1.75 1.125-3 3-3.375 5c-.375 2.125 0 4.25 1.25 6l8.875 13.37c1.125 1.75 3 3 5 3.375c2.125 .375 4.25 0 6-1.125L256 316.4l.0313 87.5c0 41.13-29.12 77.25-71.25 88.63l-59.53 15.88C62.5 525.3 0 481 0 419.8c0-10 1.25-19.88 3.875-29.63C25.5 308.9 59.91 231 105.9 159.1c22.12-34.63 36.12-63.13 80.12-63.13C224.7 96 256 125.4 256 161.8v60.1l32.88-21.97C293.4 196.9 296 192 296 186.6V16C296 7.125 303.1 0 312 0h16c8.875 0 16 7.125 16 16v170.6c0 5.375 2.625 10.25 7.125 13.25L384 221.8v-60.1c0-36.38 31.34-65.75 69.97-65.75c43.1 0 58 28.5 80.13 63.13c46 71.88 80.41 149.8 102 231C638.8 399.9 640 409.8 640 419.8z"], + "lungs-virus": [640, 512, [], "e067", "M195.5 444.5c-18.71-18.72-18.71-49.16 .0033-67.87l8.576-8.576H192c-26.47 0-48-21.53-48-48c0-26.47 21.53-48 48-48l12.12-.0055L195.5 263.4c-18.71-18.72-18.71-49.16 0-67.88C204.6 186.5 216.7 181.5 229.5 181.5c9.576 0 18.72 2.799 26.52 7.986l.04-27.75c0-36.38-31.42-65.72-70.05-65.72c-44 0-57.97 28.5-80.09 63.13c-46 71.88-80.39 149.8-102 231C1.257 399.9 0 409.8 0 419.8c0 61.25 62.5 105.5 125.3 88.62l59.5-15.9c21.74-5.867 39.91-18.39 52.51-34.73c-2.553 .4141-5.137 .7591-7.774 .7591C216.7 458.5 204.6 453.5 195.5 444.5zM343.1 150.7L344 16C344 7.125 336.9 0 328 0h-16c-8.875 0-16 7.125-16 16L295.1 150.7c7.088-4.133 15.22-6.675 23.1-6.675S336.9 146.5 343.1 150.7zM421.8 421.8c6.25-6.25 6.25-16.37 0-22.62l-8.576-8.576c-20.16-20.16-5.881-54.63 22.63-54.63H448c8.844 0 16-7.156 16-16c0-8.844-7.156-16-16-16h-12.12c-28.51 0-42.79-34.47-22.63-54.63l8.576-8.577c6.25-6.25 6.25-16.37 0-22.62s-16.38-6.25-22.62 0l-8.576 8.577C370.5 246.9 336 232.6 336 204.1v-12.12c0-8.844-7.156-15.1-16-15.1s-16 7.156-16 15.1v12.12c0 28.51-34.47 42.79-54.63 22.63L240.8 218.2c-6.25-6.25-16.38-6.25-22.62 0s-6.25 16.37 0 22.62l8.576 8.577c20.16 20.16 5.881 54.63-22.63 54.63H192c-8.844 0-16 7.156-16 16c0 8.844 7.156 16 16 16h12.12c28.51 0 42.79 34.47 22.63 54.63l-8.576 8.576c-6.25 6.25-6.25 16.37 0 22.62c3.125 3.125 7.219 4.688 11.31 4.688s8.188-1.562 11.31-4.688l8.576-8.575C269.5 393.1 304 407.4 304 435.9v12.12c0 8.844 7.156 16 16 16s16-7.156 16-16v-12.12c0-28.51 34.47-42.79 54.63-22.63l8.576 8.575c3.125 3.125 7.219 4.688 11.31 4.688S418.7 424.9 421.8 421.8zM288 303.1c-8.836 0-16-7.162-16-15.1S279.2 271.1 288 271.1S304 279.2 304 287.1S296.8 303.1 288 303.1zM352 367.1c-8.836 0-16-7.166-16-16s7.164-15.1 16-15.1s16 7.166 16 16S360.8 367.1 352 367.1zM636.1 390.1c-21.62-81.25-56.02-159.1-102-231c-22.12-34.63-36.09-63.13-80.09-63.13c-38.62 0-70.01 29.35-70.01 65.73v27.74c7.795-5.188 16.94-7.986 26.52-7.986c12.82 0 24.88 4.999 33.95 14.07c18.71 18.72 18.71 49.16 0 67.88l-8.576 8.571L448 272c26.47 0 48 21.54 48 48c0 26.47-21.53 48-48 48h-12.12l8.576 8.576c18.71 18.72 18.71 49.16-.0072 67.87c-9.066 9.066-21.12 14.06-33.94 14.06c-2.637 0-5.211-.3438-7.764-.7578c12.6 16.34 30.77 28.86 52.51 34.73l59.5 15.9C577.5 525.3 640 481 640 419.8C640 409.8 638.7 399.9 636.1 390.1z"], + "m": [448, 512, [109], "4d", "M448 64.01v384c0 17.67-14.31 32-32 32s-32-14.33-32-32V169.7l-133.4 200.1c-11.88 17.81-41.38 17.81-53.25 0L64 169.7v278.3c0 17.67-14.31 32-32 32s-32-14.33-32-32v-384c0-14.09 9.219-26.55 22.72-30.63c13.47-4.156 28.09 1.141 35.91 12.88L224 294.3l165.4-248.1c7.812-11.73 22.47-17.03 35.91-12.88C438.8 37.47 448 49.92 448 64.01z"], + "magnet": [448, 512, [129522], "f076", "M128 160V256C128 309 170.1 352 224 352C277 352 320 309 320 256V160H448V256C448 379.7 347.7 480 224 480C100.3 480 0 379.7 0 256V160H128zM0 64C0 46.33 14.33 32 32 32H96C113.7 32 128 46.33 128 64V128H0V64zM320 64C320 46.33 334.3 32 352 32H416C433.7 32 448 46.33 448 64V128H320V64z"], + "magnifying-glass": [512, 512, [128269, "search"], "f002", "M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"], + "magnifying-glass-arrow-right": [512, 512, [], "e521", "M416 208C416 253.9 401.1 296.3 375.1 330.7L502.6 457.4C515.1 469.9 515.1 490.1 502.6 502.6C490.1 515.1 469.9 515.1 457.4 502.6L330.7 375.1C296.3 401.1 253.9 416 208 416C93.12 416 0 322.9 0 208C0 93.12 93.12 0 208 0C322.9 0 416 93.12 416 208zM240.1 119C231.6 109.7 216.4 109.7 207 119C197.7 128.4 197.7 143.6 207 152.1L238.1 184H120C106.7 184 96 194.7 96 208C96 221.3 106.7 232 120 232H238.1L207 263C197.7 272.4 197.7 287.6 207 296.1C216.4 306.3 231.6 306.3 240.1 296.1L312.1 224.1C322.3 215.6 322.3 200.4 312.1 191L240.1 119z"], + "magnifying-glass-chart": [512, 512, [], "e522", "M416 208C416 253.9 401.1 296.3 375.1 330.7L502.6 457.4C515.1 469.9 515.1 490.1 502.6 502.6C490.1 515.1 469.9 515.1 457.4 502.6L330.7 375.1C296.3 401.1 253.9 416 208 416C93.12 416 0 322.9 0 208C0 93.12 93.12 0 208 0C322.9 0 416 93.12 416 208zM104 280C104 293.3 114.7 304 128 304C141.3 304 152 293.3 152 280V216C152 202.7 141.3 192 128 192C114.7 192 104 202.7 104 216V280zM184 280C184 293.3 194.7 304 208 304C221.3 304 232 293.3 232 280V120C232 106.7 221.3 96 208 96C194.7 96 184 106.7 184 120V280zM264 280C264 293.3 274.7 304 288 304C301.3 304 312 293.3 312 280V184C312 170.7 301.3 160 288 160C274.7 160 264 170.7 264 184V280z"], + "magnifying-glass-dollar": [512, 512, ["search-dollar"], "f688", "M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7c-12.23-91.55-87.28-166-178.9-177.6c-136.2-17.24-250.7 97.28-233.4 233.4c11.6 91.64 86.07 166.7 177.6 178.9c53.81 7.191 104.3-6.235 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 .0004C515.9 484.7 515.9 459.3 500.3 443.7zM273.7 253.8C269.8 276.4 252.6 291.3 228 296.1V304c0 11.03-8.953 20-20 20S188 315 188 304V295.2C178.2 293.2 168.4 289.9 159.6 286.8L154.8 285.1C144.4 281.4 138.9 269.9 142.6 259.5C146.2 249.1 157.6 243.7 168.1 247.3l5.062 1.812c8.562 3.094 18.25 6.562 25.91 7.719c16.23 2.5 33.47-.0313 35.17-9.812c1.219-7.094 .4062-10.62-31.8-19.84L196.2 225.4C177.8 219.1 134.5 207.3 142.3 162.2C146.2 139.6 163.5 124.8 188 120V112c0-11.03 8.953-20 20-20S228 100.1 228 112v8.695c6.252 1.273 13.06 3.07 21.47 5.992c10.42 3.625 15.95 15.03 12.33 25.47C258.2 162.6 246.8 168.1 236.3 164.5C228.2 161.7 221.8 159.9 216.8 159.2c-16.11-2.594-33.38 .0313-35.08 9.812c-1 5.812-1.719 10 25.7 18.03l6 1.719C238.9 196 281.5 208.2 273.7 253.8z"], + "magnifying-glass-location": [512, 512, ["search-location"], "f689", "M236 176c0 15.46-12.54 28-28 28S180 191.5 180 176S192.5 148 208 148S236 160.5 236 176zM500.3 500.3c-15.62 15.62-40.95 15.62-56.57 0l-119.7-119.7c-40.41 27.22-90.9 40.65-144.7 33.46c-91.55-12.23-166-87.28-177.6-178.9c-17.24-136.2 97.29-250.7 233.4-233.4c91.64 11.6 166.7 86.07 178.9 177.6c7.19 53.8-6.236 104.3-33.46 144.7l119.7 119.7C515.9 459.3 515.9 484.7 500.3 500.3zM294.1 182.2C294.1 134.5 255.6 96 207.1 96C160.4 96 121.9 134.5 121.9 182.2c0 38.35 56.29 108.5 77.87 134C201.8 318.5 204.7 320 207.1 320c3.207 0 6.26-1.459 8.303-3.791C237.8 290.7 294.1 220.5 294.1 182.2z"], + "magnifying-glass-minus": [512, 512, ["search-minus"], "f010", "M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7c-12.23-91.55-87.28-166-178.9-177.6c-136.2-17.24-250.7 97.28-233.4 233.4c11.6 91.64 86.07 166.7 177.6 178.9c53.81 7.191 104.3-6.235 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 .0003C515.9 484.7 515.9 459.3 500.3 443.7zM288 232H127.1C114.7 232 104 221.3 104 208s10.74-24 23.1-24h160C301.3 184 312 194.7 312 208S301.3 232 288 232z"], + "magnifying-glass-plus": [512, 512, ["search-plus"], "f00e", "M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7c-12.23-91.55-87.28-166-178.9-177.6c-136.2-17.24-250.7 97.28-233.4 233.4c11.6 91.64 86.07 166.7 177.6 178.9c53.81 7.191 104.3-6.235 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 .0003C515.9 484.7 515.9 459.3 500.3 443.7zM288 232H231.1V288c0 13.26-10.74 24-23.1 24C194.7 312 184 301.3 184 288V232H127.1C114.7 232 104 221.3 104 208s10.74-24 23.1-24H184V128c0-13.26 10.74-24 23.1-24S231.1 114.7 231.1 128v56h56C301.3 184 312 194.7 312 208S301.3 232 288 232z"], + "manat-sign": [384, 512, [], "e1d5", "M224 64V98.65C314.8 113.9 384 192.9 384 288V448C384 465.7 369.7 480 352 480C334.3 480 320 465.7 320 448V288C320 228.4 279.2 178.2 224 164V448C224 465.7 209.7 480 192 480C174.3 480 160 465.7 160 448V164C104.8 178.2 64 228.4 64 288V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V288C0 192.9 69.19 113.9 160 98.65V64C160 46.33 174.3 32 192 32C209.7 32 224 46.33 224 64z"], + "map": [576, 512, [62072, 128506], "f279", "M384 476.1L192 421.2V35.93L384 90.79V476.1zM416 88.37L543.1 37.53C558.9 31.23 576 42.84 576 59.82V394.6C576 404.4 570 413.2 560.9 416.9L416 474.8V88.37zM15.09 95.13L160 37.17V423.6L32.91 474.5C17.15 480.8 0 469.2 0 452.2V117.4C0 107.6 5.975 98.78 15.09 95.13V95.13z"], + "map-location": [576, 512, ["map-marked"], "f59f", "M273.2 311.1C241.1 271.9 167.1 174.6 167.1 120C167.1 53.73 221.7 0 287.1 0C354.3 0 408 53.73 408 120C408 174.6 334.9 271.9 302.8 311.1C295.1 321.6 280.9 321.6 273.2 311.1V311.1zM416 503V200.4C419.5 193.5 422.7 186.7 425.6 179.8C426.1 178.6 426.6 177.4 427.1 176.1L543.1 129.7C558.9 123.4 576 135 576 152V422.8C576 432.6 570 441.4 560.9 445.1L416 503zM15.09 187.3L137.6 138.3C140 152.5 144.9 166.6 150.4 179.8C153.3 186.7 156.5 193.5 160 200.4V451.8L32.91 502.7C17.15 508.1 0 497.4 0 480.4V209.6C0 199.8 5.975 190.1 15.09 187.3H15.09zM384 504.3L191.1 449.4V255C212.5 286.3 234.3 314.6 248.2 331.1C268.7 357.6 307.3 357.6 327.8 331.1C341.7 314.6 363.5 286.3 384 255L384 504.3z"], + "map-location-dot": [576, 512, ["map-marked-alt"], "f5a0", "M408 120C408 174.6 334.9 271.9 302.8 311.1C295.1 321.6 280.9 321.6 273.2 311.1C241.1 271.9 168 174.6 168 120C168 53.73 221.7 0 288 0C354.3 0 408 53.73 408 120zM288 152C310.1 152 328 134.1 328 112C328 89.91 310.1 72 288 72C265.9 72 248 89.91 248 112C248 134.1 265.9 152 288 152zM425.6 179.8C426.1 178.6 426.6 177.4 427.1 176.1L543.1 129.7C558.9 123.4 576 135 576 152V422.8C576 432.6 570 441.4 560.9 445.1L416 503V200.4C419.5 193.5 422.7 186.7 425.6 179.8zM150.4 179.8C153.3 186.7 156.5 193.5 160 200.4V451.8L32.91 502.7C17.15 508.1 0 497.4 0 480.4V209.6C0 199.8 5.975 190.1 15.09 187.3L137.6 138.3C140 152.5 144.9 166.6 150.4 179.8H150.4zM327.8 331.1C341.7 314.6 363.5 286.3 384 255V504.3L192 449.4V255C212.5 286.3 234.3 314.6 248.2 331.1C268.7 357.6 307.3 357.6 327.8 331.1L327.8 331.1z"], + "map-pin": [320, 512, [128205], "f276", "M320 144C320 223.5 255.5 288 176 288C96.47 288 32 223.5 32 144C32 64.47 96.47 0 176 0C255.5 0 320 64.47 320 144zM192 64C192 55.16 184.8 48 176 48C122.1 48 80 90.98 80 144C80 152.8 87.16 160 96 160C104.8 160 112 152.8 112 144C112 108.7 140.7 80 176 80C184.8 80 192 72.84 192 64zM144 480V317.1C154.4 319 165.1 319.1 176 319.1C186.9 319.1 197.6 319 208 317.1V480C208 497.7 193.7 512 176 512C158.3 512 144 497.7 144 480z"], + "marker": [512, 512, [], "f5a1", "M480.1 160.1L316.3 325.7L186.3 195.7L302.1 80L288.1 66.91C279.6 57.54 264.4 57.54 255 66.91L168.1 152.1C159.6 162.3 144.4 162.3 135 152.1C125.7 143.6 125.7 128.4 135 119L221.1 32.97C249.2 4.853 294.8 4.853 322.9 32.97L336 46.06L351 31.03C386.9-4.849 445.1-4.849 480.1 31.03C516.9 66.91 516.9 125.1 480.1 160.1V160.1zM229.5 412.5C181.5 460.5 120.3 493.2 53.7 506.5L28.71 511.5C20.84 513.1 12.7 510.6 7.03 504.1C1.356 499.3-1.107 491.2 .4662 483.3L5.465 458.3C18.78 391.7 51.52 330.5 99.54 282.5L163.7 218.3L293.7 348.3L229.5 412.5z"], + "mars": [448, 512, [9794], "f222", "M431.1 31.1l-112.6 0c-21.42 0-32.15 25.85-17 40.97l29.61 29.56l-56.65 56.55c-30.03-20.66-65.04-31-100-31c-47.99-.002-95.96 19.44-131.1 58.39c-60.86 67.51-58.65 175 4.748 240.1C83.66 462.2 129.6 480 175.5 480c45.12 0 90.34-17.18 124.8-51.55c61.11-60.99 67.77-155.6 20.42-224.1l56.65-56.55l29.61 29.56C411.9 182.2 417.9 184.4 423.8 184.4C436.1 184.4 448 174.8 448 160.4V47.1C448 39.16 440.8 31.1 431.1 31.1zM243.5 371.9c-18.75 18.71-43.38 28.07-68 28.07c-24.63 0-49.25-9.355-68.01-28.07c-37.5-37.43-37.5-98.33 0-135.8c18.75-18.71 43.38-28.07 68.01-28.07c24.63 0 49.25 9.357 68 28.07C281 273.5 281 334.5 243.5 371.9z"], + "mars-and-venus": [512, 512, [9893], "f224", "M480 .0002l-112.4 .0001c-21.38 0-32.09 25.85-16.97 40.97l29.56 29.56l-27.11 27.11C326.1 76.85 292.7 64 256 64c-88.37 0-160 71.63-160 160c0 77.4 54.97 141.9 128 156.8v19.22H192c-8.836 0-16 7.162-16 16v31.1c0 8.836 7.164 16 16 16l32 .0001v32c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16v-32l32-.0001c8.838 0 16-7.164 16-16v-31.1c0-8.838-7.162-16-16-16h-32v-19.22c73.03-14.83 128-79.37 128-156.8c0-28.38-8.018-54.65-20.98-77.77l30.45-30.45l29.56 29.56C470.1 160.5 496 149.8 496 128.4V16C496 7.164 488.8 .0002 480 .0002zM256 304c-44.11 0-80-35.89-80-80c0-44.11 35.89-80 80-80c44.11 0 80 35.89 80 80C336 268.1 300.1 304 256 304z"], + "mars-and-venus-burst": [640, 512, [], "e523", "M607.1 0C625.7 0 639.1 14.33 639.1 32V120C639.1 137.7 625.7 152 607.1 152C590.3 152 575.1 137.7 575.1 120V109.3L539.6 145.7C552.6 168.8 559.1 195.6 559.1 224C559.1 301.4 505 365.1 431.1 380.8V400H447.1C465.7 400 479.1 414.3 479.1 432C479.1 449.7 465.7 464 447.1 464H431.1V480C431.1 497.7 417.7 512 399.1 512C382.3 512 367.1 497.7 367.1 480V464H351.1C334.3 464 319.1 449.7 319.1 432C319.1 414.3 334.3 400 351.1 400H367.1V380.8C294.1 365.1 239.1 301.4 239.1 224C239.1 135.6 311.6 64 399.1 64C436.7 64 470.6 76.37 497.6 97.18L530.7 64H511.1C494.3 64 479.1 49.67 479.1 32C479.1 14.33 494.3 0 511.1 0L607.1 0zM399.1 128C346.1 128 303.1 170.1 303.1 224C303.1 277 346.1 320 399.1 320C453 320 495.1 277 495.1 224C495.1 170.1 453 128 399.1 128zM220.3 92.05L280.4 73.81C236.3 108.1 207.1 163.2 207.1 224C207.1 269.2 223.6 310.8 249.8 343.6C244.5 345 238.7 343.7 234.6 339.9L175.1 286.1L117.4 339.9C112.6 344.4 105.5 345.4 99.63 342.6C93.73 339.7 90.15 333.6 90.62 327L96.21 247.6L17.55 235.4C11.08 234.4 5.868 229.6 4.41 223.2C2.951 216.8 5.538 210.1 10.94 206.4L76.5 161.3L37.01 92.18C33.76 86.49 34.31 79.39 38.39 74.27C42.48 69.14 49.28 67.03 55.55 68.93L131.7 92.05L161.1 18.09C163.6 11.1 169.4 7.1 175.1 7.1C182.6 7.1 188.4 11.1 190.9 18.09L220.3 92.05z"], + "mars-double": [640, 512, [9891], "f227", "M320.7 204.3l56.65-56.55l29.61 29.56C422.1 192.5 448 181.7 448 160.4V47.1c0-8.838-7.176-15.1-16.03-15.1H319.4c-21.42 0-32.15 25.85-17 40.97l29.61 29.56L275.4 159.1c-71.21-48.99-170.4-39.96-231.1 27.39c-60.86 67.51-58.65 175 4.748 240.1c68.7 70.57 181.8 71.19 251.3 1.847C361.4 367.5 368 272.9 320.7 204.3zM243.5 371.9c-37.5 37.43-98.51 37.43-136 0s-37.5-98.33 0-135.8c37.5-37.43 98.51-37.43 136 0C281 273.5 281 334.5 243.5 371.9zM623.1 32h-112.6c-21.42 0-32.15 25.85-17 40.97l29.61 29.56L480 146.5v13.91C480 191.3 454.8 216.4 423.8 216.4C421.2 216.4 418.6 216 416 215.6v5.862c6.922 4.049 13.58 8.691 19.51 14.61c37.5 37.43 37.5 98.33 0 135.8c-18.75 18.71-43.38 28.07-68 28.07c-2.277 0-4.523-.4883-6.795-.6484c-9.641 18.69-22.1 36.24-37.64 51.77c-6.059 6.059-12.49 11.53-19.13 16.73C324.4 475.7 345.9 480 367.5 480c45.12 0 90.34-17.18 124.8-51.55c61.11-60.99 67.77-155.6 20.42-224.1l56.65-56.55l29.61 29.56c4.898 4.889 10.92 7.075 16.83 7.075C628.1 184.4 640 174.8 640 160.4V48C640 39.16 632.8 32 623.1 32z"], + "mars-stroke": [512, 512, [9894], "f229", "M496 .0002l-112.4 .0001c-21.38 0-32.09 25.85-16.97 40.97l29.56 29.56l-24.33 24.34l-33.94-33.94c-6.248-6.25-16.38-6.248-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l33.94 33.94l-18.96 18.96C239.1 111.8 144.5 118.6 83.55 179.5c-68.73 68.73-68.73 180.2 0 248.9c68.73 68.73 180.2 68.73 248.9 0c60.99-60.99 67.73-155.6 20.47-224.1l18.96-18.96l33.94 33.94c6.248 6.248 16.38 6.25 22.63 0l22.63-22.63c6.248-6.248 6.248-16.38 0-22.63l-33.94-33.94l24.34-24.33l29.56 29.56C486.1 160.5 512 149.8 512 128.4v-112.4C512 7.162 504.8 .0002 496 .0002zM275.9 371.9c-37.43 37.43-98.33 37.43-135.8 0c-37.43-37.43-37.43-98.33 0-135.8c37.43-37.43 98.33-37.43 135.8 0C313.3 273.5 313.3 334.5 275.9 371.9z"], + "mars-stroke-right": [640, 512, [9897, "mars-stroke-h"], "f22b", "M619.3 244.7l-82.34-77.61c-15.12-15.12-40.97-4.41-40.97 16.97V223.1L463.1 224V176c.002-8.838-7.162-16-15.1-16h-32c-8.84 0-16 7.16-16 16V224h-19.05c-15.07-81.9-86.7-144-172.1-144C110.8 80 32 158.8 32 256c0 97.2 78.8 176 176 176c86.26 0 157.9-62.1 172.1-144h19.05V336c0 8.836 7.162 16 16 16h32c8.836 0 15.1-7.164 15.1-16V287.1L496 288v39.95c0 21.38 25.85 32.09 40.97 16.97l82.34-77.61C625.6 261.1 625.6 250.9 619.3 244.7zM208 352c-52.94 0-96-43.07-96-96c-.002-52.94 43.06-96 96-96c52.93 0 95.1 43.06 95.1 96C304 308.9 260.9 352 208 352z"], + "mars-stroke-up": [384, 512, [9896, "mars-stroke-v"], "f22a", "M224 163V144h24c4.418 0 8-3.578 8-7.1V120c0-4.418-3.582-7.1-8-7.1H224V96h24.63c16.41 0 24.62-19.84 13.02-31.44l-60.97-60.97c-4.795-4.793-12.57-4.793-17.36 0L122.3 64.56c-11.6 11.6-3.383 31.44 13.02 31.44H160v15.1H136c-4.418 0-8 3.582-8 7.1v15.1c0 4.422 3.582 7.1 8 7.1H160v19.05c-84.9 15.62-148.5 92.01-143.7 182.5c4.783 90.69 82.34 165.1 173.2 166.5C287.8 513.4 368 434.1 368 336C368 249.7 305.9 178.1 224 163zM192 431.1c-52.94 0-96-43.06-96-95.1s43.06-95.1 96-95.1c52.93 0 96 43.06 96 95.1S244.9 431.1 192 431.1z"], + "martini-glass": [512, 512, [127864, "glass-martini-alt"], "f57b", "M502 57.63C523.3 36.38 508.3 0 478.3 0H33.72C3.711 0-11.29 36.38 9.962 57.63l214 214V448H175.1c-26.51 0-47.1 21.49-47.1 48c0 8.836 7.164 16 16 16h224c8.836 0 16-7.164 16-16c0-26.51-21.49-48-48-48h-47.1V271.6L502 57.63zM405.1 64l-64.01 64H170.9L106.9 64H405.1z"], + "martini-glass-citrus": [576, 512, ["cocktail"], "f561", "M288 464H240v-125.3l168.8-168.7C424.3 154.5 413.3 128 391.4 128H24.63C2.751 128-8.249 154.5 7.251 170l168.7 168.7V464H128c-17.67 0-32 14.33-32 32c0 8.836 7.164 16 15.1 16h191.1c8.836 0 15.1-7.164 15.1-16C320 478.3 305.7 464 288 464zM432 0c-62.63 0-115.4 40.25-135.1 96h52.5c16.62-28.5 47.25-48 82.62-48c52.88 0 95.1 43 95.1 96s-43.12 96-95.1 96c-14 0-27.25-3.25-39.37-8.625l-35.25 35.25c21.88 13.25 47.25 21.38 74.62 21.38c79.5 0 143.1-64.5 143.1-144S511.5 0 432 0z"], + "martini-glass-empty": [512, 512, ["glass-martini"], "f000", "M502 57.63C523.3 36.38 508.3 0 478.3 0H33.72C3.711 0-11.29 36.38 9.962 57.63l214 214V448H176c-26.51 0-48 21.49-48 48c0 8.836 7.164 16 16 16h224c8.836 0 16-7.164 16-16c0-26.51-21.49-48-47.1-48h-47.1V271.6L502 57.63zM256 213.1L106.9 64h298.3L256 213.1z"], + "mask": [576, 512, [], "f6fa", "M288 64C39.52 64 0 182.1 0 273.5C0 379.5 78.8 448 176 448c27.33 0 51.21-6.516 66.11-36.79l19.93-40.5C268.3 358.6 278.1 352.4 288 352.1c9.9 .3711 19.7 6.501 25.97 18.63l19.93 40.5C348.8 441.5 372.7 448 400 448c97.2 0 176-68.51 176-174.5C576 182.1 536.5 64 288 64zM160 320c-35.35 0-64-28.65-64-64s28.65-64 64-64c35.35 0 64 28.65 64 64S195.3 320 160 320zM416 320c-35.35 0-64-28.65-64-64s28.65-64 64-64c35.35 0 64 28.65 64 64S451.3 320 416 320z"], + "mask-face": [640, 512, [], "e1d7", "M396.4 87.12L433.5 111.9C449.3 122.4 467.8 128 486.8 128H584C614.9 128 640 153.1 640 184V269C640 324.1 602.5 372.1 549.1 385.5L441.1 412.5C406.2 434.1 364.6 448 320 448C275.4 448 233.8 434.1 198.9 412.5L90.9 385.5C37.48 372.1 0 324.1 0 269V184C0 153.1 25.07 128 56 128H153.2C172.2 128 190.7 122.4 206.5 111.9L243.6 87.12C266.2 72.05 292.8 64 320 64C347.2 64 373.8 72.05 396.4 87.12zM132.3 346.3C109.4 311.2 96 269.1 96 224V176H56C51.58 176 48 179.6 48 184V269C48 302.1 70.49 330.9 102.5 338.9L132.3 346.3zM592 269V184C592 179.6 588.4 176 584 176H544V224C544 269.1 530.6 311.2 507.7 346.3L537.5 338.9C569.5 330.9 592 302.1 592 269H592zM208 224H432C440.8 224 448 216.8 448 208C448 199.2 440.8 192 432 192H208C199.2 192 192 199.2 192 208C192 216.8 199.2 224 208 224zM208 256C199.2 256 192 263.2 192 272C192 280.8 199.2 288 208 288H432C440.8 288 448 280.8 448 272C448 263.2 440.8 256 432 256H208zM240 352H400C408.8 352 416 344.8 416 336C416 327.2 408.8 320 400 320H240C231.2 320 224 327.2 224 336C224 344.8 231.2 352 240 352z"], + "mask-ventilator": [640, 512, [], "e524", "M320 32C372.1 32 419.7 73.8 454.5 128H584C614.9 128 640 153.1 640 184V269C640 324.1 602.5 372.1 549.1 385.5L477.5 403.4C454.6 433.8 421.1 457.2 384 469.8V393.2C403.6 376.8 416 353.1 416 326.4C416 276.9 372.5 191.1 320 191.1C267 191.1 224 276.9 224 326.4C224 353 236.3 376.9 256 393.3V469.9C217.6 457.4 184.9 433.8 162.2 403.3L90.9 385.5C37.48 372.1 0 324.1 0 269V184C0 153.1 25.07 128 56 128H185.1C219.8 73.8 267.4 32 320 32V32zM56 176C51.58 176 48 179.6 48 184V269C48 302.1 70.49 330.9 102.5 338.9L134.3 346.8C130.2 332.2 127.1 316.7 127.1 300.8C127.1 264.7 139.4 219.2 159.1 176H56zM480.7 176C500.4 219.2 512 264.7 512 300.8C512 316.8 509.8 332.2 505.6 346.9L537.5 338.9C569.5 330.9 592 302.1 592 269V184C592 179.6 588.4 176 584 176H480.7zM288 320C288 302.3 302.3 288 320 288C337.7 288 352 302.3 352 320V512H288V320z"], + "masks-theater": [640, 512, [127917, "theater-masks"], "f630", "M206.9 245.1C171 255.6 146.8 286.4 149.3 319.3C160.7 306.5 178.1 295.5 199.3 288.4L206.9 245.1zM95.78 294.9L64.11 115.5C63.74 113.9 64.37 112.9 64.37 112.9c57.75-32.13 123.1-48.99 189-48.99c1.625 0 3.113 .0745 4.738 .0745c13.1-13.5 31.75-22.75 51.62-26c18.87-3 38.12-4.5 57.25-5.25c-9.999-14-24.47-24.27-41.84-27.02c-23.87-3.875-47.9-5.732-71.77-5.732c-76.74 0-152.4 19.45-220.1 57.07C9.021 70.57-3.853 98.5 1.021 126.6L32.77 306c14.25 80.5 136.3 142 204.5 142c3.625 0 6.777-.2979 10.03-.6729c-13.5-17.13-28.1-40.5-39.5-67.63C160.1 366.8 101.7 328 95.78 294.9zM193.4 157.6C192.6 153.4 191.1 149.7 189.3 146.2c-8.249 8.875-20.62 15.75-35.25 18.37c-14.62 2.5-28.75 .376-39.5-5.249c-.5 4-.6249 7.998 .125 12.12c3.75 21.75 24.5 36.24 46.25 32.37C182.6 200.1 197.3 179.3 193.4 157.6zM606.8 121c-88.87-49.38-191.4-67.38-291.9-51.38C287.5 73.1 265.8 95.85 260.8 123.1L229 303.5c-15.37 87.13 95.33 196.3 158.3 207.3c62.1 11.13 204.5-53.68 219.9-140.8l31.75-179.5C643.9 162.3 631 134.4 606.8 121zM333.5 217.8c3.875-21.75 24.62-36.25 46.37-32.37c21.75 3.75 36.25 24.49 32.5 46.12c-.7499 4.125-2.25 7.873-4.125 11.5c-8.249-9-20.62-15.75-35.25-18.37c-14.75-2.625-28.75-.3759-39.5 5.124C332.1 225.9 332.9 221.9 333.5 217.8zM403.1 416.5c-55.62-9.875-93.49-59.23-88.99-112.1c20.62 25.63 56.25 46.24 99.49 53.87c43.25 7.625 83.74 .3781 111.9-16.62C512.2 392.7 459.7 426.3 403.1 416.5zM534.4 265.2c-8.249-8.875-20.75-15.75-35.37-18.37c-14.62-2.5-28.62-.3759-39.5 5.249c-.5-4-.625-7.998 .125-12.12c3.875-21.75 24.62-36.25 46.37-32.37c21.75 3.875 36.25 24.49 32.37 46.24C537.6 257.9 536.1 261.7 534.4 265.2z"], + "mattress-pillow": [640, 512, [], "e525", "M256 448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H256V448zM64 352C64 369.7 78.33 384 96 384H160C177.7 384 192 369.7 192 352V160C192 142.3 177.7 128 160 128H96C78.33 128 64 142.3 64 160V352zM288 64H576C611.3 64 640 92.65 640 128V384C640 419.3 611.3 448 576 448H288V64z"], + "maximize": [448, 512, ["expand-arrows-alt"], "f31e", "M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"], + "medal": [512, 512, [127941], "f5a2", "M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"], + "memory": [576, 512, [], "f538", "M0 448h80v-32c0-8.838 7.164-16 16-16c8.838 0 16 7.162 16 16v32h96v-32c0-8.838 7.164-16 16-16c8.838 0 16 7.162 16 16v32h96v-32c0-8.838 7.164-16 16-16c8.838 0 16 7.162 16 16v32h96v-32c0-8.838 7.164-16 16-16c8.838 0 16 7.162 16 16v32H576v-96H0V448zM576 146.9V112C576 85.49 554.5 64 528 64h-480C21.49 64 0 85.49 0 112v34.94C18.6 153.5 32 171.1 32 192S18.6 230.5 0 237.1V320h576V237.1C557.4 230.5 544 212.9 544 192S557.4 153.5 576 146.9zM192 240C192 248.8 184.8 256 176 256h-32C135.2 256 128 248.8 128 240v-96C128 135.2 135.2 128 144 128h32C184.8 128 192 135.2 192 144V240zM320 240C320 248.8 312.8 256 304 256h-32C263.2 256 256 248.8 256 240v-96C256 135.2 263.2 128 272 128h32C312.8 128 320 135.2 320 144V240zM448 240C448 248.8 440.8 256 432 256h-32C391.2 256 384 248.8 384 240v-96C384 135.2 391.2 128 400 128h32C440.8 128 448 135.2 448 144V240z"], + "menorah": [640, 512, [], "f676", "M544 144C544 135.1 536.9 128 528 128h-32C487.1 128 480 135.1 480 144V288h64V144zM416 95.1c17.62 0 32-14.38 32-32s-32-63.1-32-63.1s-32 46.37-32 63.1S398.4 95.1 416 95.1zM448 144C448 135.1 440.9 128 432 128h-32C391.1 128 384 135.1 384 144V288h64V144zM608 95.1c17.62 0 32-14.38 32-32s-32-63.1-32-63.1s-32 46.37-32 63.1S590.4 95.1 608 95.1zM320 95.1c17.62 0 32-14.38 32-32s-32-63.1-32-63.1S288 46.37 288 63.1S302.4 95.1 320 95.1zM512 95.1c17.62 0 32-14.38 32-32s-32-63.1-32-63.1s-32 46.37-32 63.1S494.4 95.1 512 95.1zM624 128h-32C583.2 128 576 135.2 576 144V288c0 17.6-14.4 32-32 32h-192V144C352 135.2 344.8 128 336 128h-32C295.2 128 288 135.2 288 144V320H96c-17.6 0-32-14.4-32-32V144C64 135.2 56.84 128 48 128h-32C7.164 128 0 135.2 0 144V288c0 53.02 42.98 96 96 96h192v64H176C149.5 448 128 469.5 128 496C128 504.8 135.2 512 144 512h352c8.836 0 16-7.164 16-16c0-26.51-21.49-48-48-48H352v-64h192c53.02 0 96-42.98 96-96V144C640 135.2 632.8 128 624 128zM160 144C160 135.1 152.9 128 144 128h-32C103.1 128 96 135.1 96 144V288h64V144zM224 95.1c17.62 0 32-14.38 32-32S224 0 224 0S192 46.37 192 63.1S206.4 95.1 224 95.1zM32 95.1c17.62 0 32-14.38 32-32S32 0 32 0S0 46.37 0 63.1S14.38 95.1 32 95.1zM128 95.1c17.62 0 32-14.38 32-32S128 0 128 0S96 46.37 96 63.1S110.4 95.1 128 95.1zM256 144C256 135.1 248.9 128 240 128h-32C199.1 128 192 135.1 192 144V288h64V144z"], + "mercury": [384, 512, [9791], "f223", "M368 223.1c0-55.32-25.57-104.6-65.49-136.9c20.49-17.32 37.2-39.11 48.1-64.21c4.656-10.72-2.9-22.89-14.45-22.89h-54.31c-5.256 0-9.93 2.828-12.96 7.188C251.8 31.77 223.8 47.1 192 47.1c-31.85 0-59.78-16.23-76.88-40.81C112.1 2.828 107.4 0 102.2 0H47.84c-11.55 0-19.11 12.17-14.45 22.89C44.29 47.1 60.1 69.79 81.49 87.11C41.57 119.4 16 168.7 16 223.1c0 86.26 62.1 157.9 144 172.1V416H128c-8.836 0-16 7.164-16 16v32C112 472.8 119.2 480 128 480h32v16C160 504.8 167.2 512 176 512h32c8.838 0 16-7.164 16-16V480h32c8.838 0 16-7.164 16-16v-32c0-8.836-7.162-16-16-16h-32v-19.05C305.9 381.9 368 310.3 368 223.1zM192 320c-52.93 0-96-43.07-96-96c0-52.94 43.07-95.1 96-95.1c52.94 0 96 43.06 96 95.1C288 276.9 244.9 320 192 320z"], + "message": [512, 512, ["comment-alt"], "f27a", "M511.1 63.1v287.1c0 35.25-28.75 63.1-64 63.1h-144l-124.9 93.68c-7.875 5.75-19.12 .0497-19.12-9.7v-83.98h-96c-35.25 0-64-28.75-64-63.1V63.1c0-35.25 28.75-63.1 64-63.1h384C483.2 0 511.1 28.75 511.1 63.1z"], + "meteor": [512, 512, [9732], "f753", "M511.4 20.72c-11.63 38.75-34.38 111.8-61.38 187.8c7 2.125 13.38 4 18.63 5.625c4.625 1.375 8.375 4.751 10.13 9.127c1.875 4.5 1.625 9.501-.625 13.75c-22.13 42.25-82.63 152.8-142.5 214.4c-1 1.125-2.001 2.5-3.001 3.5c-76 76.13-199.4 76.13-275.5 .125c-76.13-76.13-76.13-199.5 0-275.7c1-1 2.375-2 3.5-3C122.1 116.5 232.5 55.97 274.1 33.84c4.25-2.25 9.25-2.5 13.63-.625c4.5 1.875 7.875 5.626 9.25 10.13c1.625 5.125 3.5 11.63 5.625 18.63c75.88-27 148.9-49.75 187.6-61.25c5.75-1.75 11.88-.2503 16.13 4C511.5 8.844 512.1 15.09 511.4 20.72zM319.1 319.1c0-70.63-57.38-128-128-128c-70.75 0-128 57.38-128 128c0 70.76 57.25 128 128 128C262.6 448 319.1 390.8 319.1 319.1zM191.1 287.1c0 17.63-14.37 32-32 32c-17.75 0-32-14.38-32-32s14.25-32 32-32c8.5 0 16.63 3.375 22.63 9.375S191.1 279.5 191.1 287.1zM223.9 367.1c0 8.876-7.224 16-15.97 16c-8.875 0-16-7.127-16-16c0-8.876 7.1-16 15.98-16C216.7 351.1 223.9 359.1 223.9 367.1z"], + "microchip": [512, 512, [], "f2db", "M160 352h192V160H160V352zM448 176h48C504.8 176 512 168.8 512 160s-7.162-16-16-16H448V128c0-35.35-28.65-64-64-64h-16V16C368 7.164 360.8 0 352 0c-8.836 0-16 7.164-16 16V64h-64V16C272 7.164 264.8 0 256 0C247.2 0 240 7.164 240 16V64h-64V16C176 7.164 168.8 0 160 0C151.2 0 144 7.164 144 16V64H128C92.65 64 64 92.65 64 128v16H16C7.164 144 0 151.2 0 160s7.164 16 16 16H64v64H16C7.164 240 0 247.2 0 256s7.164 16 16 16H64v64H16C7.164 336 0 343.2 0 352s7.164 16 16 16H64V384c0 35.35 28.65 64 64 64h16v48C144 504.8 151.2 512 160 512c8.838 0 16-7.164 16-16V448h64v48c0 8.836 7.164 16 16 16c8.838 0 16-7.164 16-16V448h64v48c0 8.836 7.164 16 16 16c8.838 0 16-7.164 16-16V448H384c35.35 0 64-28.65 64-64v-16h48c8.838 0 16-7.164 16-16s-7.162-16-16-16H448v-64h48C504.8 272 512 264.8 512 256s-7.162-16-16-16H448V176zM384 368c0 8.836-7.162 16-16 16h-224C135.2 384 128 376.8 128 368v-224C128 135.2 135.2 128 144 128h224C376.8 128 384 135.2 384 144V368z"], + "microphone": [384, 512, [], "f130", "M192 352c53.03 0 96-42.97 96-96v-160c0-53.03-42.97-96-96-96s-96 42.97-96 96v160C96 309 138.1 352 192 352zM344 192C330.7 192 320 202.7 320 215.1V256c0 73.33-61.97 132.4-136.3 127.7c-66.08-4.169-119.7-66.59-119.7-132.8L64 215.1C64 202.7 53.25 192 40 192S16 202.7 16 215.1v32.15c0 89.66 63.97 169.6 152 181.7V464H128c-18.19 0-32.84 15.18-31.96 33.57C96.43 505.8 103.8 512 112 512h160c8.222 0 15.57-6.216 15.96-14.43C288.8 479.2 274.2 464 256 464h-40v-33.77C301.7 418.5 368 344.9 368 256V215.1C368 202.7 357.3 192 344 192z"], + "microphone-lines": [384, 512, [127897, "microphone-alt"], "f3c9", "M192 352c53.03 0 96-42.97 96-96h-80C199.2 256 192 248.8 192 240S199.2 224 208 224H288V192h-80C199.2 192 192 184.8 192 176S199.2 160 208 160H288V127.1h-80c-8.836 0-16-7.164-16-16s7.164-16 16-16L288 96c0-53.03-42.97-96-96-96s-96 42.97-96 96v160C96 309 138.1 352 192 352zM344 192C330.7 192 320 202.7 320 215.1V256c0 73.33-61.97 132.4-136.3 127.7c-66.08-4.169-119.7-66.59-119.7-132.8L64 215.1C64 202.7 53.25 192 40 192S16 202.7 16 215.1v32.15c0 89.66 63.97 169.6 152 181.7V464H128c-18.19 0-32.84 15.18-31.96 33.57C96.43 505.8 103.8 512 112 512h160c8.222 0 15.57-6.216 15.96-14.43C288.8 479.2 274.2 464 256 464h-40v-33.77C301.7 418.5 368 344.9 368 256V215.1C368 202.7 357.3 192 344 192z"], + "microphone-lines-slash": [640, 512, ["microphone-alt-slash"], "f539", "M383.1 464l-39.1-.0001v-33.77c20.6-2.824 39.99-9.402 57.69-18.72l-43.26-33.91c-14.66 4.65-30.28 7.179-46.68 6.144C245.7 379.6 191.1 317.1 191.1 250.9v-3.777L143.1 209.5l.0001 38.61c0 89.65 63.97 169.6 151.1 181.7v34.15l-40 .0001c-17.67 0-31.1 14.33-31.1 31.1C223.1 504.8 231.2 512 239.1 512h159.1c8.838 0 15.1-7.164 15.1-15.1C415.1 478.3 401.7 464 383.1 464zM630.8 469.1l-159.3-124.9c15.37-25.94 24.53-55.91 24.53-88.21V216c0-13.25-10.75-24-23.1-24c-13.25 0-24 10.75-24 24l-.0001 39.1c0 21.12-5.557 40.77-14.77 58.24l-25.73-20.16c5.234-11.68 8.493-24.42 8.493-38.08l-57.07 .0006l-34.45-27c2.914-3.055 6.969-4.999 11.52-4.999h79.1V192L335.1 192c-8.836 0-15.1-7.164-15.1-15.1s7.164-16 15.1-16l79.1 .0013V128l-79.1-.0015c-8.836 0-15.1-7.164-15.1-15.1s7.164-15.1 15.1-15.1l80-.0003c0-54-44.56-97.57-98.93-95.95C264.5 1.614 223.1 47.45 223.1 100l.0006 50.23L38.81 5.111C34.41 1.673 29.19 0 24.03 0C16.91 0 9.84 3.158 5.121 9.189C-3.067 19.63-1.249 34.72 9.189 42.89l591.1 463.1c10.5 8.203 25.57 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "microphone-slash": [640, 512, [], "f131", "M383.1 464l-39.1-.0001v-33.77c20.6-2.824 39.98-9.402 57.69-18.72l-43.26-33.91c-14.66 4.65-30.28 7.179-46.68 6.144C245.7 379.6 191.1 317.1 191.1 250.9V247.2L143.1 209.5l.0001 38.61c0 89.65 63.97 169.6 151.1 181.7v34.15l-40 .0001c-17.67 0-31.1 14.33-31.1 31.1C223.1 504.8 231.2 512 239.1 512h159.1c8.838 0 15.1-7.164 15.1-15.1C415.1 478.3 401.7 464 383.1 464zM630.8 469.1l-159.3-124.9c15.37-25.94 24.53-55.91 24.53-88.21V216c0-13.25-10.75-24-23.1-24c-13.25 0-24 10.75-24 24l-.0001 39.1c0 21.12-5.559 40.77-14.77 58.24l-25.72-20.16c5.234-11.68 8.493-24.42 8.493-38.08l-.001-155.1c0-52.57-40.52-98.41-93.07-99.97c-54.37-1.617-98.93 41.95-98.93 95.95l0 54.25L38.81 5.111C34.41 1.673 29.19 0 24.03 0C16.91 0 9.839 3.158 5.12 9.189c-8.187 10.44-6.37 25.53 4.068 33.7l591.1 463.1c10.5 8.203 25.57 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "microscope": [512, 512, [128300], "f610", "M160 320h12v16c0 8.875 7.125 16 16 16h40c8.875 0 16-7.125 16-16V320H256c17.62 0 32-14.38 32-32V64c0-17.62-14.38-32-32-32V16C256 7.125 248.9 0 240 0h-64C167.1 0 160 7.125 160 16V32C142.4 32 128 46.38 128 64v224C128 305.6 142.4 320 160 320zM464 448h-1.25C493.2 414 512 369.2 512 320c0-105.9-86.13-192-192-192v64c70.63 0 128 57.38 128 128s-57.38 128-128 128H48C21.5 448 0 469.5 0 496C0 504.9 7.125 512 16 512h480c8.875 0 16-7.125 16-16C512 469.5 490.5 448 464 448zM104 416h208c4.375 0 8-3.625 8-8v-16c0-4.375-3.625-8-8-8h-208C99.63 384 96 387.6 96 392v16C96 412.4 99.63 416 104 416z"], + "mill-sign": [384, 512, [], "e1ed", "M282.9 96.53C339.7 102 384 149.8 384 208V416C384 433.7 369.7 448 352 448C334.3 448 320 433.7 320 416V208C320 181.5 298.5 160 272 160C267.7 160 263.6 160.6 259.7 161.6L224 261.5V416C224 433.7 209.7 448 192 448C179.6 448 168.9 440.1 163.6 430.7L142.1 490.8C136.2 507.4 117.9 516.1 101.2 510.1C84.59 504.2 75.92 485.9 81.86 469.2L160 250.5V208C160 181.5 138.5 160 112 160C85.49 160 64 181.5 64 208V416C64 433.7 49.67 448 32 448C14.33 448 0 433.7 0 416V128C0 110.3 14.33 96 32 96C42.87 96 52.48 101.4 58.26 109.7C74.21 100.1 92.53 96 112 96C143.3 96 171.7 108.9 192 129.6C196.9 124.6 202.2 120.1 207.1 116.1L241.9 21.24C247.8 4.595 266.1-4.079 282.8 1.865C299.4 7.809 308.1 26.12 302.1 42.76L282.9 96.53z"], + "minimize": [512, 512, ["compress-arrows-alt"], "f78c", "M200 287.1H64c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.937 34.87l30.06 30.06l-62.06 62.07c-12.49 12.5-12.5 32.75-.0012 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.26 .0012l62.06-62.07l30.06 30.06c6.125 6.125 14.31 9.375 22.62 9.375c4.125 0 8.281-.7969 12.25-2.437c11.97-4.953 19.75-16.62 19.75-29.56V311.1C224 298.7 213.3 287.1 200 287.1zM312 224h135.1c12.94 0 24.62-7.797 29.56-19.75c4.969-11.97 2.219-25.72-6.937-34.87l-30.06-30.06l62.06-62.07c12.5-12.5 12.5-32.76 .0003-45.26l-22.62-22.62c-12.5-12.5-32.76-12.5-45.26-.0003l-62.06 62.07l-30.06-30.06c-9.156-9.141-22.87-11.84-34.87-6.937C295.8 39.39 288 51.06 288 64v135.1C288 213.3 298.7 224 312 224zM204.3 34.44C192.3 29.47 178.5 32.22 169.4 41.38L139.3 71.44L77.25 9.374C64.75-3.123 44.49-3.123 31.1 9.374l-22.63 22.63c-12.49 12.49-12.49 32.75 .0018 45.25l62.07 62.06L41.38 169.4C35.25 175.5 32 183.7 32 192c0 4.125 .7969 8.281 2.438 12.25C39.39 216.2 51.07 224 64 224h135.1c13.25 0 23.1-10.75 23.1-23.1V64C224 51.06 216.2 39.38 204.3 34.44zM440.6 372.7l30.06-30.06c9.141-9.156 11.84-22.88 6.938-34.87C472.6 295.8 460.9 287.1 448 287.1h-135.1c-13.25 0-23.1 10.75-23.1 23.1v135.1c0 12.94 7.797 24.62 19.75 29.56c11.97 4.969 25.72 2.219 34.87-6.937l30.06-30.06l62.06 62.06c12.5 12.5 32.76 12.5 45.26 .0002l22.62-22.62c12.5-12.5 12.5-32.76 .0002-45.26L440.6 372.7z"], + "minus": [448, 512, [8722, 10134, 8211, "subtract"], "f068", "M400 288h-352c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h352c17.69 0 32 14.3 32 31.99S417.7 288 400 288z"], + "mitten": [448, 512, [], "f7b5", "M351.1 416H63.99c-17.6 0-31.1 14.4-31.1 31.1l.0026 31.1C31.1 497.6 46.4 512 63.1 512h288c17.6 0 32-14.4 32-31.1l-.0049-31.1C383.1 430.4 369.6 416 351.1 416zM425 206.9c-27.25-22.62-67.5-19-90.13 8.25l-20.88 25L284.4 111.8c-18-77.5-95.38-125.1-172.8-108C34.26 21.63-14.25 98.88 3.754 176.4L64 384h288l81.14-86.1C455.8 269.8 452.1 229.5 425 206.9z"], + "mobile": [384, 512, [128241, "mobile-android", "mobile-phone"], "f3ce", "M320 0H64C37.5 0 16 21.5 16 48v416C16 490.5 37.5 512 64 512h256c26.5 0 48-21.5 48-48v-416C368 21.5 346.5 0 320 0zM240 447.1C240 456.8 232.8 464 224 464H159.1C151.2 464 144 456.8 144 448S151.2 432 160 432h64C232.8 432 240 439.2 240 447.1z"], + "mobile-button": [384, 512, [], "f10b", "M320 0H64C37.49 0 16 21.49 16 48v416C16 490.5 37.49 512 64 512h256c26.51 0 48-21.49 48-48v-416C368 21.49 346.5 0 320 0zM192 464c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S209.8 464 192 464z"], + "mobile-retro": [320, 512, [], "e527", "M0 64C0 28.65 28.65 0 64 0H256C291.3 0 320 28.65 320 64V448C320 483.3 291.3 512 256 512H64C28.65 512 0 483.3 0 448V64zM64 232C64 245.3 74.75 256 88 256H232C245.3 256 256 245.3 256 232V152C256 138.7 245.3 128 232 128H88C74.75 128 64 138.7 64 152V232zM80 352C93.25 352 104 341.3 104 328C104 314.7 93.25 304 80 304C66.75 304 56 314.7 56 328C56 341.3 66.75 352 80 352zM80 384C66.75 384 56 394.7 56 408C56 421.3 66.75 432 80 432C93.25 432 104 421.3 104 408C104 394.7 93.25 384 80 384zM160 352C173.3 352 184 341.3 184 328C184 314.7 173.3 304 160 304C146.7 304 136 314.7 136 328C136 341.3 146.7 352 160 352zM160 384C146.7 384 136 394.7 136 408C136 421.3 146.7 432 160 432C173.3 432 184 421.3 184 408C184 394.7 173.3 384 160 384zM240 352C253.3 352 264 341.3 264 328C264 314.7 253.3 304 240 304C226.7 304 216 314.7 216 328C216 341.3 226.7 352 240 352zM240 384C226.7 384 216 394.7 216 408C216 421.3 226.7 432 240 432C253.3 432 264 421.3 264 408C264 394.7 253.3 384 240 384zM128 48C119.2 48 112 55.16 112 64C112 72.84 119.2 80 128 80H192C200.8 80 208 72.84 208 64C208 55.16 200.8 48 192 48H128z"], + "mobile-screen": [384, 512, ["mobile-android-alt"], "f3cf", "M320 0H64C37.5 0 16 21.5 16 48v416C16 490.5 37.5 512 64 512h256c26.5 0 48-21.5 48-48v-416C368 21.5 346.5 0 320 0zM240 447.1C240 456.8 232.8 464 224 464H159.1C151.2 464 144 456.8 144 448S151.2 432 160 432h64C232.8 432 240 439.2 240 447.1zM304 384h-224V64h224V384z"], + "mobile-screen-button": [384, 512, ["mobile-alt"], "f3cd", "M304 0h-224c-35.35 0-64 28.65-64 64v384c0 35.35 28.65 64 64 64h224c35.35 0 64-28.65 64-64V64C368 28.65 339.3 0 304 0zM192 480c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S209.8 480 192 480zM304 64v320h-224V64H304z"], + "money-bill": [576, 512, [], "f0d6", "M512 64C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H512zM128 384C128 348.7 99.35 320 64 320V384H128zM64 192C99.35 192 128 163.3 128 128H64V192zM512 384V320C476.7 320 448 348.7 448 384H512zM512 128H448C448 163.3 476.7 192 512 192V128zM288 352C341 352 384 309 384 256C384 202.1 341 160 288 160C234.1 160 192 202.1 192 256C192 309 234.1 352 288 352z"], + "money-bill-1": [576, 512, ["money-bill-alt"], "f3d1", "M252 208C252 196.1 260.1 188 272 188H288C299 188 308 196.1 308 208V276H312C323 276 332 284.1 332 296C332 307 323 316 312 316H264C252.1 316 244 307 244 296C244 284.1 252.1 276 264 276H268V227.6C258.9 225.7 252 217.7 252 208zM512 64C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H512zM128 384C128 348.7 99.35 320 64 320V384H128zM64 192C99.35 192 128 163.3 128 128H64V192zM512 384V320C476.7 320 448 348.7 448 384H512zM512 128H448C448 163.3 476.7 192 512 192V128zM288 144C226.1 144 176 194.1 176 256C176 317.9 226.1 368 288 368C349.9 368 400 317.9 400 256C400 194.1 349.9 144 288 144z"], + "money-bill-1-wave": [576, 512, ["money-bill-wave-alt"], "f53b", "M251.1 207.1C251.1 196.1 260.1 187.1 271.1 187.1H287.1C299 187.1 308 196.1 308 207.1V275.1H312C323 275.1 332 284.1 332 295.1C332 307 323 315.1 312 315.1H263.1C252.1 315.1 243.1 307 243.1 295.1C243.1 284.1 252.1 275.1 263.1 275.1H267.1V227.6C258.9 225.7 251.1 217.7 251.1 207.1zM48.66 79.13C128.4 100.9 208.2 80.59 288 60.25C375 38.08 462 15.9 549 48.38C565.9 54.69 576 71.62 576 89.66V399.5C576 423.4 550.4 439.2 527.3 432.9C447.6 411.1 367.8 431.4 288 451.7C200.1 473.9 113.1 496.1 26.97 463.6C10.06 457.3 0 440.4 0 422.3V112.5C0 88.59 25.61 72.83 48.66 79.13L48.66 79.13zM127.1 416C127.1 380.7 99.35 352 63.1 352V416H127.1zM63.1 223.1C99.35 223.1 127.1 195.3 127.1 159.1H63.1V223.1zM512 352V287.1C476.7 287.1 448 316.7 448 352H512zM512 95.1H448C448 131.3 476.7 159.1 512 159.1V95.1zM287.1 143.1C234.1 143.1 191.1 194.1 191.1 255.1C191.1 317.9 234.1 368 287.1 368C341 368 384 317.9 384 255.1C384 194.1 341 143.1 287.1 143.1z"], + "money-bill-transfer": [640, 512, [], "e528", "M535 7.03C544.4-2.343 559.6-2.343 568.1 7.029L632.1 71.02C637.5 75.52 640 81.63 640 87.99C640 94.36 637.5 100.5 632.1 104.1L568.1 168.1C559.6 178.3 544.4 178.3 535 168.1C525.7 159.6 525.7 144.4 535 135L558.1 111.1L384 111.1C370.7 111.1 360 101.2 360 87.99C360 74.74 370.7 63.99 384 63.99L558.1 63.1L535 40.97C525.7 31.6 525.7 16.4 535 7.03V7.03zM104.1 376.1L81.94 400L255.1 399.1C269.3 399.1 279.1 410.7 279.1 423.1C279.1 437.2 269.3 447.1 255.1 447.1L81.95 448L104.1 471C114.3 480.4 114.3 495.6 104.1 504.1C95.6 514.3 80.4 514.3 71.03 504.1L7.029 440.1C2.528 436.5-.0003 430.4 0 423.1C0 417.6 2.529 411.5 7.03 407L71.03 343C80.4 333.7 95.6 333.7 104.1 343C114.3 352.4 114.3 367.6 104.1 376.1H104.1zM95.1 64H337.9C334.1 71.18 332 79.34 332 87.1C332 116.7 355.3 139.1 384 139.1L481.1 139.1C484.4 157.5 494.9 172.5 509.4 181.9C511.1 184.3 513.1 186.6 515.2 188.8C535.5 209.1 568.5 209.1 588.8 188.8L608 169.5V384C608 419.3 579.3 448 544 448H302.1C305.9 440.8 307.1 432.7 307.1 423.1C307.1 395.3 284.7 371.1 255.1 371.1L158.9 372C155.5 354.5 145.1 339.5 130.6 330.1C128.9 327.7 126.9 325.4 124.8 323.2C104.5 302.9 71.54 302.9 51.23 323.2L31.1 342.5V128C31.1 92.65 60.65 64 95.1 64V64zM95.1 192C131.3 192 159.1 163.3 159.1 128H95.1V192zM544 384V320C508.7 320 480 348.7 480 384H544zM319.1 352C373 352 416 309 416 256C416 202.1 373 160 319.1 160C266.1 160 223.1 202.1 223.1 256C223.1 309 266.1 352 319.1 352z"], + "money-bill-trend-up": [512, 512, [], "e529", "M470.7 9.441C473.7 12.49 476 16 477.6 19.75C479.1 23.5 479.1 27.6 480 31.9V32V128C480 145.7 465.7 160 448 160C430.3 160 416 145.7 416 128V109.3L310.6 214.6C298.8 226.5 279.9 227.2 267.2 216.3L175.1 138.1L84.82 216.3C71.41 227.8 51.2 226.2 39.7 212.8C28.2 199.4 29.76 179.2 43.17 167.7L155.2 71.7C167.2 61.43 184.8 61.43 196.8 71.7L286.3 148.4L370.7 64H352C334.3 64 320 49.67 320 32C320 14.33 334.3 0 352 0H447.1C456.8 0 464.8 3.554 470.6 9.305L470.7 9.441zM0 304C0 277.5 21.49 256 48 256H464C490.5 256 512 277.5 512 304V464C512 490.5 490.5 512 464 512H48C21.49 512 0 490.5 0 464V304zM48 464H96C96 437.5 74.51 416 48 416V464zM48 304V352C74.51 352 96 330.5 96 304H48zM464 416C437.5 416 416 437.5 416 464H464V416zM416 304C416 330.5 437.5 352 464 352V304H416zM256 320C220.7 320 192 348.7 192 384C192 419.3 220.7 448 256 448C291.3 448 320 419.3 320 384C320 348.7 291.3 320 256 320z"], + "money-bill-wave": [576, 512, [], "f53a", "M48.66 79.13C128.4 100.9 208.2 80.59 288 60.25C375 38.08 462 15.9 549 48.38C565.9 54.69 576 71.62 576 89.66V399.5C576 423.4 550.4 439.2 527.3 432.9C447.6 411.1 367.8 431.4 288 451.7C200.1 473.9 113.1 496.1 26.97 463.6C10.06 457.3 0 440.4 0 422.3V112.5C0 88.59 25.61 72.83 48.66 79.13L48.66 79.13zM287.1 352C332.2 352 368 309 368 255.1C368 202.1 332.2 159.1 287.1 159.1C243.8 159.1 207.1 202.1 207.1 255.1C207.1 309 243.8 352 287.1 352zM63.1 416H127.1C127.1 380.7 99.35 352 63.1 352V416zM63.1 143.1V207.1C99.35 207.1 127.1 179.3 127.1 143.1H63.1zM512 303.1C476.7 303.1 448 332.7 448 368H512V303.1zM448 95.1C448 131.3 476.7 159.1 512 159.1V95.1H448z"], + "money-bill-wheat": [512, 512, [], "e52a", "M256 80C256 88.84 248.8 96 240 96C195.8 96 160 60.18 160 16C160 7.164 167.2 0 176 0C220.2 0 256 35.82 256 80zM104 16C117.3 16 128 26.75 128 40C128 53.25 117.3 64 104 64H56C42.75 64 32 53.25 32 40C32 26.75 42.75 16 56 16H104zM136 88C149.3 88 160 98.75 160 112C160 125.3 149.3 136 136 136H24C10.75 136 0 125.3 0 112C0 98.75 10.75 88 24 88H136zM32 184C32 170.7 42.75 160 56 160H104C117.3 160 128 170.7 128 184C128 197.3 117.3 208 104 208H56C42.75 208 32 197.3 32 184zM272 16C272 7.164 279.2 0 288 0C332.2 0 368 35.82 368 80C368 88.84 360.8 96 352 96C307.8 96 272 60.18 272 16zM480 80C480 88.84 472.8 96 464 96C419.8 96 384 60.18 384 16C384 7.164 391.2 0 400 0C444.2 0 480 35.82 480 80zM400 224C391.2 224 384 216.8 384 208C384 163.8 419.8 128 464 128C472.8 128 480 135.2 480 144C480 188.2 444.2 224 400 224zM352 128C360.8 128 368 135.2 368 144C368 188.2 332.2 224 288 224C279.2 224 272 216.8 272 208C272 163.8 307.8 128 352 128zM176 224C167.2 224 160 216.8 160 208C160 163.8 195.8 128 240 128C248.8 128 256 135.2 256 144C256 188.2 220.2 224 176 224zM0 304C0 277.5 21.49 256 48 256H464C490.5 256 512 277.5 512 304V464C512 490.5 490.5 512 464 512H48C21.49 512 0 490.5 0 464V304zM48 464H96C96 437.5 74.51 416 48 416V464zM48 304V352C74.51 352 96 330.5 96 304H48zM464 416C437.5 416 416 437.5 416 464H464V416zM416 304C416 330.5 437.5 352 464 352V304H416zM256 320C220.7 320 192 348.7 192 384C192 419.3 220.7 448 256 448C291.3 448 320 419.3 320 384C320 348.7 291.3 320 256 320z"], + "money-bills": [640, 512, [], "e1f3", "M96 96C96 60.65 124.7 32 160 32H576C611.3 32 640 60.65 640 96V320C640 355.3 611.3 384 576 384H160C124.7 384 96 355.3 96 320V96zM160 320H224C224 284.7 195.3 256 160 256V320zM160 96V160C195.3 160 224 131.3 224 96H160zM576 256C540.7 256 512 284.7 512 320H576V256zM512 96C512 131.3 540.7 160 576 160V96H512zM368 128C323.8 128 288 163.8 288 208C288 252.2 323.8 288 368 288C412.2 288 448 252.2 448 208C448 163.8 412.2 128 368 128zM48 360C48 399.8 80.24 432 120 432H520C533.3 432 544 442.7 544 456C544 469.3 533.3 480 520 480H120C53.73 480 0 426.3 0 360V120C0 106.7 10.75 96 24 96C37.25 96 48 106.7 48 120V360z"], + "money-check": [576, 512, [], "f53c", "M512 64C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H512zM112 224C103.2 224 96 231.2 96 240C96 248.8 103.2 256 112 256H272C280.8 256 288 248.8 288 240C288 231.2 280.8 224 272 224H112zM112 352H464C472.8 352 480 344.8 480 336C480 327.2 472.8 320 464 320H112C103.2 320 96 327.2 96 336C96 344.8 103.2 352 112 352zM376 160C362.7 160 352 170.7 352 184V232C352 245.3 362.7 256 376 256H456C469.3 256 480 245.3 480 232V184C480 170.7 469.3 160 456 160H376z"], + "money-check-dollar": [576, 512, ["money-check-alt"], "f53d", "M512 64C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H512zM272 192C263.2 192 256 199.2 256 208C256 216.8 263.2 224 272 224H496C504.8 224 512 216.8 512 208C512 199.2 504.8 192 496 192H272zM272 320H496C504.8 320 512 312.8 512 304C512 295.2 504.8 288 496 288H272C263.2 288 256 295.2 256 304C256 312.8 263.2 320 272 320zM164.1 160C164.1 148.9 155.1 139.9 143.1 139.9C132.9 139.9 123.9 148.9 123.9 160V166C118.3 167.2 112.1 168.9 108 171.1C93.06 177.9 80.07 190.5 76.91 208.8C75.14 219 76.08 228.9 80.32 237.8C84.47 246.6 91 252.8 97.63 257.3C109.2 265.2 124.5 269.8 136.2 273.3L138.4 273.9C152.4 278.2 161.8 281.3 167.7 285.6C170.2 287.4 171.1 288.8 171.4 289.7C171.8 290.5 172.4 292.3 171.7 296.3C171.1 299.8 169.2 302.8 163.7 305.1C157.6 307.7 147.7 309 134.9 307C128.9 306 118.2 302.4 108.7 299.2C106.5 298.4 104.3 297.7 102.3 297C91.84 293.5 80.51 299.2 77.02 309.7C73.53 320.2 79.2 331.5 89.68 334.1C90.89 335.4 92.39 335.9 94.11 336.5C101.1 339.2 114.4 343.4 123.9 345.6V352C123.9 363.1 132.9 372.1 143.1 372.1C155.1 372.1 164.1 363.1 164.1 352V346.5C169.4 345.5 174.6 343.1 179.4 341.9C195.2 335.2 207.8 322.2 211.1 303.2C212.9 292.8 212.1 282.8 208.1 273.7C204.2 264.7 197.9 258.1 191.2 253.3C179.1 244.4 162.9 239.6 150.8 235.9L149.1 235.7C135.8 231.4 126.2 228.4 120.1 224.2C117.5 222.4 116.7 221.2 116.5 220.7C116.3 220.3 115.7 219.1 116.3 215.7C116.7 213.7 118.2 210.4 124.5 207.6C130.1 204.7 140.9 203.1 153.1 204.1C157.5 205.7 171 208.3 174.9 209.3C185.5 212.2 196.5 205.8 199.3 195.1C202.2 184.5 195.8 173.5 185.1 170.7C180.7 169.5 170.7 167.5 164.1 166.3L164.1 160z"], + "monument": [384, 512, [], "f5a6", "M180.7 4.686C186.9-1.562 197.1-1.562 203.3 4.686L283.3 84.69C285.8 87.2 287.4 90.48 287.9 94.02L328.1 416H55.88L96.12 94.02C96.57 90.48 98.17 87.2 100.7 84.69L180.7 4.686zM152 272C138.7 272 128 282.7 128 296C128 309.3 138.7 320 152 320H232C245.3 320 256 309.3 256 296C256 282.7 245.3 272 232 272H152zM352 448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H352z"], + "moon": [512, 512, [127769, 9214], "f186", "M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"], + "mortar-pestle": [512, 512, [], "f5a7", "M501.5 60.87c17.25-17.12 12.5-46.25-9.25-57.13c-12.12-6-26.5-4.75-37.38 3.375L251.1 159.1h151.4L501.5 60.87zM496 191.1h-480c-8.875 0-16 7.125-16 16v32c0 8.875 7.125 16 16 16L31.1 256c0 81 50.25 150.1 121.1 178.4c-12.75 16.88-21.75 36.75-25 58.63C126.8 502.9 134.2 512 144.2 512h223.5c10 0 17.51-9.125 16.13-19c-3.25-21.88-12.25-41.75-25-58.63C429.8 406.1 479.1 337 479.1 256L496 255.1c8.875 0 16-7.125 16-16v-32C512 199.1 504.9 191.1 496 191.1z"], + "mosque": [640, 512, [128332], "f678", "M400 0C405 0 409.8 2.371 412.8 6.4C447.5 52.7 490.9 81.34 546.3 117.9C551.5 121.4 556.9 124.9 562.3 128.5C591.3 147.7 608 180.2 608 214.6C608 243.1 596.7 269 578.2 288H221.8C203.3 269 192 243.1 192 214.6C192 180.2 208.7 147.7 237.7 128.5C243.1 124.9 248.5 121.4 253.7 117.9C309.1 81.34 352.5 52.7 387.2 6.4C390.2 2.371 394.1 0 400 0V0zM288 440C288 426.7 277.3 416 264 416C250.7 416 240 426.7 240 440V512H192C174.3 512 160 497.7 160 480V352C160 334.3 174.3 320 192 320H608C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H560V440C560 426.7 549.3 416 536 416C522.7 416 512 426.7 512 440V512H448V453.1C448 434.1 439.6 416.1 424.1 404.8L400 384L375 404.8C360.4 416.1 352 434.1 352 453.1V512H288V440zM70.4 5.2C76.09 .9334 83.91 .9334 89.6 5.2L105.6 17.2C139.8 42.88 160 83.19 160 126V128H0V126C0 83.19 20.15 42.88 54.4 17.2L70.4 5.2zM0 160H160V296.6C140.9 307.6 128 328.3 128 352V480C128 489.6 130.1 498.6 133.8 506.8C127.3 510.1 119.9 512 112 512H48C21.49 512 0 490.5 0 464V160z"], + "mosquito": [640, 512, [], "e52b", "M430.3 503.8L382.3 447.8C378.4 443.4 376.3 437.7 376.3 431.7V376.3L351.1 344.7V407.8C351.1 425.4 337.7 439.8 319.1 439.8C302.3 439.8 287.1 425.4 287.1 407.8V344.7L263.7 376.3V431.7C263.7 437.7 261.6 443.4 257.7 447.8L209.7 503.8C201.1 513.8 186.1 514.8 176.3 505.9C166.5 497 165.6 481.6 174.3 471.6L216.3 422.5V367.8C216.3 362.3 218.1 357 221.5 352.7L287.1 266.3V266L154.6 387.8C97.58 447.6 .0003 405.2 0 320.6C0 272.7 34.02 232.3 79.35 226.4L232.3 202.5L191.5 161.6C183.7 153.8 182.1 141.5 187.6 131.8L211.5 90.06L173.3 39.18C165.3 28.54 167.2 13.26 177.5 5.046C187.9-3.17 202.7-1.207 210.7 9.429L258.7 73.34C264.6 81.21 265.3 91.99 260.4 100.6L237.8 140L287.1 190.3V152.1C287.1 137.2 298.2 124.7 311.1 121.1V63.93C311.1 59.51 315.6 55.93 319.1 55.93C324.4 55.93 327.1 59.51 327.1 63.93V121.1C341.8 124.7 351.1 137.2 351.1 152.1V190.3L402.2 140L379.6 100.6C374.7 91.99 375.4 81.21 381.3 73.34L429.3 9.429C437.3-1.207 452.1-3.169 462.5 5.047C472.8 13.26 474.7 28.55 466.7 39.18L428.5 90.06L452.4 131.8C457.9 141.5 456.3 153.8 448.5 161.6L407.7 202.5L560.6 226.4C605.1 232.3 640 272.7 640 320.6C640 405.2 542.4 447.6 485.4 387.8L351.1 266V266.3L418.5 352.7C421.9 357 423.7 362.3 423.7 367.8V422.5L465.7 471.6C474.4 481.6 473.5 497 463.7 505.9C453.9 514.8 438.9 513.8 430.3 503.8L430.3 503.8z"], + "mosquito-net": [640, 512, [], "e52c", "M168.8 462.3C160.9 458.4 157.7 448.7 161.7 440.8L191.1 380.2V335.1C191.1 331.8 193.7 327.7 196.7 324.7L255.1 265.4V242.2L139.2 343.1C87.82 395.3 0 358.9 0 286.3C0 245.2 30.62 210.6 71.41 205.5L231.3 181.6L181.8 140.3C176.7 136.1 174.7 129.2 176.8 122.9L190.7 81.22L161.7 23.15C157.7 15.25 160.9 5.637 168.8 1.685C176.7-2.267 186.4 .9369 190.3 8.841L222.3 72.84C224.2 76.64 224.5 81.03 223.2 85.06L210.6 122.7L255.1 160.5V137.9C255.1 123.1 266.1 110.6 279.8 106.1V63.67C279.8 59.17 283.5 55.51 287.1 55.51C292.5 55.51 296.2 59.17 296.2 63.67V106.1C309.9 110.6 319.1 123.1 319.1 137.9V160.5L365.4 122.7L352.8 85.06C351.5 81.03 351.8 76.64 353.7 72.84L385.7 8.84C389.6 .9366 399.3-2.267 407.2 1.685C415.1 5.636 418.3 15.25 414.3 23.15L385.3 81.22L399.2 122.9C401.3 129.2 399.3 136.1 394.2 140.3L344.7 181.6L504.6 205.5C527 208.3 546.4 220 559.3 236.9C556.5 239.4 554.1 242.3 552 245.5C543.4 232.5 528.7 223.1 512 223.1C495.3 223.1 480.6 232.5 472 245.5C463.4 232.5 448.7 223.1 432 223.1C410.3 223.1 392 238.3 386.1 258.1C375.4 261.3 366.3 268.2 360.2 277.2L319.1 242.2V265.4L352.4 297.8C352.1 299.8 352 301.9 352 303.1C352 320.7 360.5 335.4 373.5 343.1C369.5 346.6 365.9 349.9 362.9 353.5L319.1 310.6V360.6C319.1 378.3 305.7 392.6 287.1 392.6C270.3 392.6 255.1 378.3 255.1 360.6V310.6L224 342.6V383.1C224 386.5 223.4 388.9 222.3 391.2L190.3 455.2C186.4 463.1 176.7 466.3 168.8 462.3V462.3zM512 255.1C520.8 255.1 528 263.2 528 271.1V287.1H576V271.1C576 263.2 583.2 255.1 592 255.1C600.8 255.1 608 263.2 608 271.1V287.1H624C632.8 287.1 640 295.2 640 303.1C640 312.8 632.8 319.1 624 319.1H608V367.1H624C632.8 367.1 640 375.2 640 383.1C640 392.8 632.8 399.1 624 399.1H608V447.1H624C632.8 447.1 640 455.2 640 463.1C640 472.8 632.8 479.1 624 479.1H608V495.1C608 504.8 600.8 511.1 592 511.1C583.2 511.1 576 504.8 576 495.1V479.1H528V495.1C528 504.8 520.8 511.1 512 511.1C503.2 511.1 496 504.8 496 495.1V479.1H448V495.1C448 504.8 440.8 511.1 432 511.1C423.2 511.1 416 504.8 416 495.1V479.1H400C391.2 479.1 384 472.8 384 463.1C384 455.2 391.2 447.1 400 447.1H416V399.1H400C391.2 399.1 384 392.8 384 383.1C384 375.2 391.2 367.1 400 367.1H416V319.1H400C391.2 319.1 384 312.8 384 303.1C384 295.2 391.2 287.1 400 287.1H416V271.1C416 263.2 423.2 255.1 432 255.1C440.8 255.1 448 263.2 448 271.1V287.1H496V271.1C496 263.2 503.2 255.1 512 255.1V255.1zM576 367.1V319.1H528V367.1H576zM576 447.1V399.1H528V447.1H576zM448 319.1V367.1H496V319.1H448zM448 399.1V447.1H496V399.1H448z"], + "motorcycle": [640, 512, [127949], "f21c", "M342.5 32C357.2 32 370.7 40.05 377.6 52.98L391.7 78.93L439.1 39.42C444.9 34.62 452.1 32 459.6 32H480C497.7 32 512 46.33 512 64V96C512 113.7 497.7 128 480 128H418.2L473.3 229.1C485.5 226.1 498.5 224 512 224C582.7 224 640 281.3 640 352C640 422.7 582.7 480 512 480C441.3 480 384 422.7 384 352C384 311.1 402.4 276.3 431.1 252.8L415.7 224.2C376.1 253.4 352 299.8 352 352C352 362.1 353.1 373.7 355.2 384H284.8C286.9 373.7 287.1 362.1 287.1 352C287.1 263.6 216.4 192 127.1 192H31.1V160C31.1 142.3 46.33 128 63.1 128H165.5C182.5 128 198.7 134.7 210.7 146.7L255.1 192L354.1 110.3L337.7 80H279.1C266.7 80 255.1 69.25 255.1 56C255.1 42.75 266.7 32 279.1 32L342.5 32zM448 352C448 387.3 476.7 416 512 416C547.3 416 576 387.3 576 352C576 316.7 547.3 288 512 288C509.6 288 507.2 288.1 504.9 288.4L533.1 340.6C539.4 352.2 535.1 366.8 523.4 373.1C511.8 379.4 497.2 375.1 490.9 363.4L462.7 311.2C453.5 322.3 448 336.5 448 352V352zM253.8 376C242.5 435.2 190.5 480 128 480C57.31 480 0 422.7 0 352C0 281.3 57.31 224 128 224C190.5 224 242.5 268.8 253.8 328H187.3C177.9 304.5 154.9 288 128 288C92.65 288 64 316.7 64 352C64 387.3 92.65 416 128 416C154.9 416 177.9 399.5 187.3 376H253.8zM96 352C96 334.3 110.3 320 128 320C145.7 320 160 334.3 160 352C160 369.7 145.7 384 128 384C110.3 384 96 369.7 96 352z"], + "mound": [576, 512, [], "e52d", "M144.1 179.2C173.8 127.7 228.6 96 288 96C347.4 96 402.2 127.7 431.9 179.2L540.4 368C552.7 389.4 537.3 416 512.7 416H63.31C38.7 416 23.31 389.4 35.57 368L144.1 179.2z"], + "mountain": [512, 512, [127956], "f6fc", "M503.2 393.8L280.1 44.25c-10.42-16.33-37.73-16.33-48.15 0L8.807 393.8c-11.11 17.41-11.75 39.42-1.666 57.45C17.07 468.1 35.92 480 56.31 480h399.4c20.39 0 39.24-11.03 49.18-28.77C514.9 433.2 514.3 411.2 503.2 393.8zM256 111.8L327.8 224H256L208 288L177.2 235.3L256 111.8z"], + "mountain-city": [640, 512, [], "e52e", "M432 0C458.5 0 480 21.49 480 48V192H520V120C520 106.7 530.7 96 544 96C557.3 96 568 106.7 568 120V192H592C618.5 192 640 213.5 640 240V464C640 490.5 618.5 512 592 512H470.2C470.7 511.2 471.2 510.5 471.6 509.7C483.2 488.6 482.8 462.9 470.3 442.4L396.5 320H400C408.8 320 416 312.8 416 304V272C416 263.2 408.8 256 400 256H368C364.8 256 361.9 256.9 359.4 258.5L288 140.1V48C288 21.49 309.5 0 336 0L432 0zM368 64C359.2 64 352 71.16 352 80V112C352 120.8 359.2 128 368 128H400C408.8 128 416 120.8 416 112V80C416 71.16 408.8 64 400 64H368zM352 208C352 216.8 359.2 224 368 224H400C408.8 224 416 216.8 416 208V176C416 167.2 408.8 160 400 160H368C359.2 160 352 167.2 352 176V208zM512 304C512 312.8 519.2 320 528 320H560C568.8 320 576 312.8 576 304V272C576 263.2 568.8 256 560 256H528C519.2 256 512 263.2 512 272V304zM528 352C519.2 352 512 359.2 512 368V400C512 408.8 519.2 416 528 416H560C568.8 416 576 408.8 576 400V368C576 359.2 568.8 352 560 352H528zM442.9 458.9C449.4 469.7 449.7 483.2 443.6 494.2C437.5 505.2 426 512 413.5 512H34.46C21.1 512 10.5 505.2 4.404 494.2C-1.693 483.2-1.444 469.7 5.056 458.9L194.6 144.7C200.9 134.3 211.1 128 224 128C236 128 247.1 134.3 253.4 144.7L442.9 458.9zM223.1 188.9L150.4 310.8L174.1 352L222.1 288H283.8L223.1 188.9z"], + "mountain-sun": [640, 512, [], "e52f", "M480 80C480 35.82 515.8 0 560 0C604.2 0 640 35.82 640 80C640 124.2 604.2 160 560 160C515.8 160 480 124.2 480 80zM0 456.1C0 445.6 2.964 435.3 8.551 426.4L225.3 81.01C231.9 70.42 243.5 64 256 64C268.5 64 280.1 70.42 286.8 81.01L412.7 281.7L460.9 202.7C464.1 196.1 472.2 192 480 192C487.8 192 495 196.1 499.1 202.7L631.1 419.1C636.9 428.6 640 439.7 640 450.9C640 484.6 612.6 512 578.9 512H55.91C25.03 512 .0006 486.1 .0006 456.1L0 456.1z"], + "mug-hot": [512, 512, [9749], "f7b6", "M400 192H32C14.25 192 0 206.3 0 224v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.75 0 112-50.25 112-112S461.8 192 400 192zM400 352H384V256h16C426.5 256 448 277.5 448 304S426.5 352 400 352zM107.9 100.7C120.3 107.1 128 121.4 128 136c0 13.25 10.75 23.89 24 23.89S176 148.1 176 135.7c0-31.34-16.83-60.64-43.91-76.45C119.7 52.03 112 38.63 112 24.28c0-13.25-10.75-24.14-24-24.14S64 11.03 64 24.28C64 55.63 80.83 84.92 107.9 100.7zM219.9 100.7C232.3 107.1 240 121.4 240 136c0 13.25 10.75 23.86 24 23.86S288 148.1 288 135.7c0-31.34-16.83-60.64-43.91-76.45C231.7 52.03 224 38.63 224 24.28c0-13.25-10.75-24.18-24-24.18S176 11.03 176 24.28C176 55.63 192.8 84.92 219.9 100.7z"], + "mug-saucer": [640, 512, ["coffee"], "f0f4", "M512 32H120c-13.25 0-24 10.75-24 24L96.01 288c0 53 43 96 96 96h192C437 384 480 341 480 288h32c70.63 0 128-57.38 128-128S582.6 32 512 32zM512 224h-32V96h32c35.25 0 64 28.75 64 64S547.3 224 512 224zM560 416h-544C7.164 416 0 423.2 0 432C0 458.5 21.49 480 48 480h480c26.51 0 48-21.49 48-48C576 423.2 568.8 416 560 416z"], + "music": [512, 512, [127925], "f001", "M511.1 367.1c0 44.18-42.98 80-95.1 80s-95.1-35.82-95.1-79.1c0-44.18 42.98-79.1 95.1-79.1c11.28 0 21.95 1.92 32.01 4.898V148.1L192 224l-.0023 208.1C191.1 476.2 149 512 95.1 512S0 476.2 0 432c0-44.18 42.98-79.1 95.1-79.1c11.28 0 21.95 1.92 32 4.898V126.5c0-12.97 10.06-26.63 22.41-30.52l319.1-94.49C472.1 .6615 477.3 0 480 0c17.66 0 31.97 14.34 32 31.99L511.1 367.1z"], + "n": [384, 512, [110], "4e", "M384 64.01v384c0 13.47-8.438 25.5-21.09 30.09C359.3 479.4 355.7 480 352 480c-9.312 0-18.38-4.078-24.59-11.52L64 152.4v295.6c0 17.67-14.31 32-32 32s-32-14.33-32-32v-384c0-13.47 8.438-25.5 21.09-30.09c12.62-4.516 26.84-.75 35.5 9.609L320 359.6v-295.6c0-17.67 14.31-32 32-32S384 46.34 384 64.01z"], + "naira-sign": [448, 512, [], "e1f6", "M262.5 256H320V64C320 46.33 334.3 32 352 32C369.7 32 384 46.33 384 64V256H416C433.7 256 448 270.3 448 288C448 305.7 433.7 320 416 320H384V448C384 462.1 374.8 474.5 361.3 478.6C347.8 482.7 333.2 477.5 325.4 465.8L228.2 320H128V448C128 465.7 113.7 480 96 480C78.33 480 64 465.7 64 448V320H32C14.33 320 0 305.7 0 288C0 270.3 14.33 256 32 256H64V64C64 49.9 73.23 37.46 86.73 33.37C100.2 29.29 114.8 34.52 122.6 46.25L262.5 256zM305.1 320L320 342.3V320H305.1zM185.5 256L128 169.7V256H185.5z"], + "network-wired": [640, 512, [], "f6ff", "M400 0C426.5 0 448 21.49 448 48V144C448 170.5 426.5 192 400 192H352V224H608C625.7 224 640 238.3 640 256C640 273.7 625.7 288 608 288H512V320H560C586.5 320 608 341.5 608 368V464C608 490.5 586.5 512 560 512H400C373.5 512 352 490.5 352 464V368C352 341.5 373.5 320 400 320H448V288H192V320H240C266.5 320 288 341.5 288 368V464C288 490.5 266.5 512 240 512H80C53.49 512 32 490.5 32 464V368C32 341.5 53.49 320 80 320H128V288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H288V192H240C213.5 192 192 170.5 192 144V48C192 21.49 213.5 0 240 0H400zM256 64V128H384V64H256zM224 448V384H96V448H224zM416 384V448H544V384H416z"], + "neuter": [384, 512, [9906], "f22c", "M368 176c0-97.2-78.8-176-176-176c-97.2 0-176 78.8-176 176c0 86.26 62.1 157.9 144 172.1V496C160 504.8 167.2 512 176 512h32c8.838 0 16-7.164 16-16v-147C305.9 333.9 368 262.3 368 176zM192 272c-52.93 0-96-43.07-96-96c0-52.94 43.07-95.1 96-95.1c52.94 0 96 43.06 96 95.1C288 228.9 244.9 272 192 272z"], + "newspaper": [512, 512, [128240], "f1ea", "M480 32H128C110.3 32 96 46.33 96 64v336C96 408.8 88.84 416 80 416S64 408.8 64 400V96H32C14.33 96 0 110.3 0 128v288c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V64C512 46.33 497.7 32 480 32zM272 416h-96C167.2 416 160 408.8 160 400C160 391.2 167.2 384 176 384h96c8.836 0 16 7.162 16 16C288 408.8 280.8 416 272 416zM272 320h-96C167.2 320 160 312.8 160 304C160 295.2 167.2 288 176 288h96C280.8 288 288 295.2 288 304C288 312.8 280.8 320 272 320zM432 416h-96c-8.836 0-16-7.164-16-16c0-8.838 7.164-16 16-16h96c8.836 0 16 7.162 16 16C448 408.8 440.8 416 432 416zM432 320h-96C327.2 320 320 312.8 320 304C320 295.2 327.2 288 336 288h96C440.8 288 448 295.2 448 304C448 312.8 440.8 320 432 320zM448 208C448 216.8 440.8 224 432 224h-256C167.2 224 160 216.8 160 208v-96C160 103.2 167.2 96 176 96h256C440.8 96 448 103.2 448 112V208z"], + "not-equal": [448, 512, [], "f53e", "M432 336c0 17.69-14.31 32.01-32 32.01H187.8l-65.15 97.74C116.5 474.1 106.3 480 95.97 480c-6.094 0-12.25-1.75-17.72-5.375c-14.72-9.812-18.69-29.66-8.875-44.38l41.49-62.23H48c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h105.5l63.1-96H48c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h212.2l65.18-97.77c9.781-14.69 29.62-18.66 44.37-8.875c14.72 9.812 18.69 29.66 8.875 44.38l-41.51 62.27H400c17.69 0 32 14.31 32 31.99s-14.31 32.01-32 32.01h-105.6l-63.1 96H400C417.7 304 432 318.3 432 336z"], + "notdef": [384, 512, [], "e1fe", "M336 0h-288C21.49 0 0 21.49 0 48v416C0 490.5 21.49 512 48 512h288c26.51 0 48-21.49 48-48v-416C384 21.49 362.5 0 336 0zM281.5 64L192 198.3L102.5 64H281.5zM64 121.7L153.5 256L64 390.3V121.7zM102.5 448L192 313.7L281.5 448H102.5zM320 390.3L230.5 256L320 121.7V390.3z"], + "note-sticky": [448, 512, [62026, "sticky-note"], "f249", "M400 32h-352C21.49 32 0 53.49 0 80v352C0 458.5 21.49 480 48 480h245.5c16.97 0 33.25-6.744 45.26-18.75l90.51-90.51C441.3 358.7 448 342.5 448 325.5V80C448 53.49 426.5 32 400 32zM64 96h320l-.001 224H320c-17.67 0-32 14.33-32 32v64H64V96z"], + "notes-medical": [512, 512, [], "f481", "M480 144V384l-96 96H144C117.5 480 96 458.5 96 432v-288C96 117.5 117.5 96 144 96h288C458.5 96 480 117.5 480 144zM384 264C384 259.6 380.4 256 376 256H320V200C320 195.6 316.4 192 312 192h-48C259.6 192 256 195.6 256 200V256H200C195.6 256 192 259.6 192 264v48C192 316.4 195.6 320 200 320H256v56c0 4.375 3.625 8 8 8h48c4.375 0 8-3.625 8-8V320h56C380.4 320 384 316.4 384 312V264zM0 360v-240C0 53.83 53.83 0 120 0h240C373.3 0 384 10.75 384 24S373.3 48 360 48h-240C80.3 48 48 80.3 48 120v240C48 373.3 37.25 384 24 384S0 373.3 0 360z"], + "o": [448, 512, [111], "4f", "M224 32.01c-123.5 0-224 100.5-224 224s100.5 224 224 224s224-100.5 224-224S347.5 32.01 224 32.01zM224 416c-88.22 0-160-71.78-160-160s71.78-159.1 160-159.1s160 71.78 160 159.1S312.2 416 224 416z"], + "object-group": [576, 512, [], "f247", "M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"], + "object-ungroup": [640, 512, [], "f248", "M32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H328.6C339.6 12.87 360.3 0 384 0C419.3 0 448 28.65 448 64C448 87.69 435.1 108.4 416 119.4V232.6C435.1 243.6 448 264.3 448 288C448 323.3 419.3 352 384 352C360.3 352 339.6 339.1 328.6 320H119.4C108.4 339.1 87.69 352 64 352C28.65 352 0 323.3 0 288C0 264.3 12.87 243.6 32 232.6V119.4zM96 119.4V232.6C105.7 238.2 113.8 246.3 119.4 256H328.6C334.2 246.3 342.3 238.2 352 232.6V119.4C342.3 113.8 334.2 105.7 328.6 96H119.4C113.8 105.7 105.7 113.8 96 119.4V119.4zM311.4 480C300.4 499.1 279.7 512 256 512C220.7 512 192 483.3 192 448C192 424.3 204.9 403.6 224 392.6V352H288V392.6C297.7 398.2 305.8 406.3 311.4 416H520.6C526.2 406.3 534.3 398.2 544 392.6V279.4C534.3 273.8 526.2 265.7 520.6 255.1H474.5C469.1 240.6 459.9 227.1 448 216.4V191.1H520.6C531.6 172.9 552.3 159.1 576 159.1C611.3 159.1 640 188.7 640 223.1C640 247.7 627.1 268.4 608 279.4V392.6C627.1 403.6 640 424.3 640 448C640 483.3 611.3 512 576 512C552.3 512 531.6 499.1 520.6 480H311.4z"], + "oil-can": [640, 512, [], "f613", "M288 128V160H368.9C378.8 160 388.6 162.3 397.5 166.8L448 192L615 156.2C633.1 152.3 645.7 173.8 633.5 187.7L451.1 394.3C438.1 408.1 421.5 416 403.1 416H144C117.5 416 96 394.5 96 368V346.7L28.51 316.7C11.17 308.1 0 291.8 0 272.8V208C0 181.5 21.49 160 48 160H224V128H192C174.3 128 160 113.7 160 96C160 78.33 174.3 64 192 64H320C337.7 64 352 78.33 352 96C352 113.7 337.7 128 320 128L288 128zM96 208H48V272.8L96 294.1V208z"], + "oil-well": [576, 512, [], "e532", "M569.8 215.8C581.2 258.5 555.9 302.4 513.2 313.8L497.7 317.9C480.7 322.5 463.1 312.4 458.5 295.3L433.3 201.3L95.1 288.8V448H137.3L190.4 296.3L264.1 276.1L238.7 352H305.3L277.9 273.6L340 257.5L406.7 448H544C561.7 448 576 462.3 576 480C576 497.7 561.7 512 544 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H48V184C48 170.7 58.75 160 72 160C85.25 160 96 170.7 96 184V222.6L228.2 188.4L241.8 149.4C246.3 136.6 258.4 128 272 128C285.6 128 297.7 136.6 302.2 149.4L308.5 167.5L416.8 139.5L392.3 48.04C387.7 30.97 397.8 13.42 414.9 8.848L430.4 4.707C473-6.729 516.9 18.6 528.3 61.28L569.8 215.8zM205.1 448H338.9L327.7 416H216.3L205.1 448z"], + "om": [512, 512, [128329], "f679", "M360.6 61C362.5 62.88 365.2 64 368 64s5.375-1.125 7.375-3l21.5-21.62C398.9 37.38 400 34.75 400 32s-1.125-5.375-3.125-7.375L375.4 3c-4.125-4-10.75-4-14.75 0L339 24.62C337 26.62 336 29.25 336 32s1 5.375 3 7.375L360.6 61zM412.1 191.1c-26.75 0-51.75 10.38-70.63 29.25l-24.25 24.25c-6.75 6.75-15.75 10.5-25.37 10.5H245c10.5-22.12 14.12-48.12 7.75-75.25C242.6 138.2 206.4 104.6 163.2 97.62c-36.25-6-71 5-96 28.75c-7.375 7-7 18.87 1.125 24.87L94.5 170.9c5.75 4.375 13.62 4.375 19.12-.125C122.1 163.8 132.8 159.1 144 159.1c26.38 0 48 21.5 48 48S170.4 255.9 143.1 255.9L112 255.1c-11.88 0-19.75 12.63-14.38 23.25L113.8 311.5C116.2 316.5 121.4 319.5 126.9 320H160c35.25 0 64 28.75 64 64s-28.75 64-64 64c-96.12 0-122.4-53.1-145.2-92C10.25 348.4 0 352.4 0 361.2C-.125 416 41.12 512 160 512c70.5 0 127.1-57.44 127.1-128.1c0-23.38-6.874-45.06-17.87-63.94h21.75c26.62 0 51.75-10.38 70.63-29.25l24.25-24.25c6.75-6.75 15.75-10.5 25.37-10.5C431.9 255.1 448 272.1 448 291.9V392c0 13.25-18.75 24-32 24c-39.38 0-66.75-24.25-81.88-42.88C329.4 367.2 320 370.6 320 378.1V416c0 0 0 64 96 64c48.5 0 96-39.5 96-88V291.9C512 236.8 467.3 191.1 412.1 191.1zM454.3 67.25c-85.5 65.13-169 2.751-172.5 .125c-6-4.625-14.5-4.375-20.13 .5C255.9 72.75 254.3 81 257.9 87.63C259.5 90.63 298.2 160 376.8 160c79.88 0 98.75-31.38 101.8-37.63C479.5 120.2 480 117.9 480 115.5V80C480 66.75 464.9 59.25 454.3 67.25z"], + "otter": [640, 512, [129446], "f700", "M224 160c8.836 0 16-7.164 16-16C240 135.2 232.8 128 224 128S208 135.2 208 144C208 152.8 215.2 160 224 160zM96 128C87.16 128 80 135.2 80 144C80 152.8 87.16 160 96 160s16-7.164 16-16C112 135.2 104.8 128 96 128zM474.4 64.12C466.8 63.07 460 69.07 460 76.73c0 5.959 4.188 10.1 9.991 12.36C514.2 99.46 544 160 544 192v112c0 8.844-7.156 16-16 16S512 312.8 512 304V212c0-14.87-15.65-24.54-28.94-17.89c-28.96 14.48-47.83 42.99-50.51 74.88C403.7 285.6 384 316.3 384 352v32H224c17.67 0 32-14.33 32-32c0-17.67-14.33-32-32-32H132.4c-14.46 0-27.37-9.598-31.08-23.57C97.86 283.5 96 269.1 96 256V254.4C101.1 255.3 106.3 256 111.7 256c10.78 0 21.45-2.189 31.36-6.436L160 242.3l16.98 7.271C186.9 253.8 197.6 256 208.3 256c7.176 0 14.11-.9277 20.83-2.426C241.7 292 277.4 320 320 320l36.56-.0366C363.1 294.7 377.1 272.7 396.2 256H320c0-25.73 17.56-31.61 32.31-32C369.8 223.8 384 209.6 384 192c0-17.67-14.31-32-32-32c-15.09 0-32.99 4.086-49.28 13.06C303.3 168.9 304 164.7 304 160.3v-16c0-1.684-.4238-3.248-.4961-4.912C313.2 133.9 320 123.9 320 112C320 103.2 312.8 96 304 96H292.7C274.6 58.26 236.3 32 191.7 32H128.3C83.68 32 45.44 58.26 27.33 96H16C7.164 96 0 103.2 0 112c0 11.93 6.816 21.93 16.5 27.43C16.42 141.1 16 142.7 16 144.3v16c0 19.56 5.926 37.71 16 52.86V256c0 123.7 100.3 224 224 224h160c123.9-1.166 224-101.1 224-226.2C639.9 156.9 567.8 76.96 474.4 64.12zM64 160.3v-16C64 108.9 92.86 80 128.3 80h63.32C227.1 80 256 108.9 256 144.3v16C256 186.6 234.6 208 208.3 208c-4.309 0-8.502-.8608-12.46-2.558L162.1 191.4c2.586-.3066 5.207-.543 7.598-1.631l8.314-3.777C186.9 182.3 192 174.9 192 166.7V160c0-6.723-5.996-12.17-13.39-12.17H141.4C133.1 147.8 128 153.3 128 160v6.701c0 8.15 5.068 15.6 13.09 19.25l8.314 3.777c2.391 1.088 5.012 1.324 7.598 1.631l-32.88 14.08C120.2 207.1 115.1 208 111.7 208C85.38 208 64 186.6 64 160.3z"], + "outdent": [512, 512, ["dedent"], "f03b", "M32 64C32 46.33 46.33 32 64 32H448C465.7 32 480 46.33 480 64C480 81.67 465.7 96 448 96H64C46.33 96 32 81.67 32 64V64zM224 192C224 174.3 238.3 160 256 160H448C465.7 160 480 174.3 480 192C480 209.7 465.7 224 448 224H256C238.3 224 224 209.7 224 192zM448 288C465.7 288 480 302.3 480 320C480 337.7 465.7 352 448 352H256C238.3 352 224 337.7 224 320C224 302.3 238.3 288 256 288H448zM32 448C32 430.3 46.33 416 64 416H448C465.7 416 480 430.3 480 448C480 465.7 465.7 480 448 480H64C46.33 480 32 465.7 32 448V448zM32.24 268.6C24 262.2 24 249.8 32.24 243.4L134.2 164.1C144.7 155.9 160 163.4 160 176.7V335.3C160 348.6 144.7 356.1 134.2 347.9L32.24 268.6z"], + "p": [320, 512, [112], "50", "M160 32.01H32c-17.69 0-32 14.33-32 32v384c0 17.67 14.31 32 32 32s32-14.33 32-32v-96h96c88.22 0 160-71.78 160-159.1S248.2 32.01 160 32.01zM160 288H64V96.01h96c52.94 0 96 43.06 96 96S212.9 288 160 288z"], + "pager": [512, 512, [128223], "f815", "M448 64H64C28.63 64 0 92.63 0 128v256c0 35.38 28.62 64 64 64h384c35.38 0 64-28.62 64-64V128C512 92.63 483.4 64 448 64zM160 368H80C71.13 368 64 360.9 64 352v-16C64 327.1 71.13 320 80 320H160V368zM288 352c0 8.875-7.125 16-16 16H192V320h80c8.875 0 16 7.125 16 16V352zM448 224c0 17.62-14.38 32-32 32H96C78.38 256 64 241.6 64 224V160c0-17.62 14.38-32 32-32h320c17.62 0 32 14.38 32 32V224z"], + "paint-roller": [512, 512, [], "f5aa", "M0 64C0 28.65 28.65 0 64 0H352C387.3 0 416 28.65 416 64V128C416 163.3 387.3 192 352 192H64C28.65 192 0 163.3 0 128V64zM160 352C160 334.3 174.3 320 192 320V304C192 259.8 227.8 224 272 224H416C433.7 224 448 209.7 448 192V69.46C485.3 82.64 512 118.2 512 160V192C512 245 469 288 416 288H272C263.2 288 256 295.2 256 304V320C273.7 320 288 334.3 288 352V480C288 497.7 273.7 512 256 512H192C174.3 512 160 497.7 160 480V352z"], + "paintbrush": [576, 512, [128396, "paint-brush"], "f1fc", "M224 263.3C224.2 233.3 238.4 205.2 262.4 187.2L499.1 9.605C517.7-4.353 543.6-2.965 560.7 12.9C577.7 28.76 580.8 54.54 568.2 74.07L406.5 324.1C391.3 347.7 366.6 363.2 339.3 367.1L224 263.3zM320 400C320 461.9 269.9 512 208 512H64C46.33 512 32 497.7 32 480C32 462.3 46.33 448 64 448H68.81C86.44 448 98.4 429.1 96.59 411.6C96.2 407.8 96 403.9 96 400C96 339.6 143.9 290.3 203.7 288.1L319.8 392.5C319.9 394.1 320 397.5 320 400V400z"], + "palette": [512, 512, [127912], "f53f", "M512 255.1C512 256.9 511.1 257.8 511.1 258.7C511.6 295.2 478.4 319.1 441.9 319.1H344C317.5 319.1 296 341.5 296 368C296 371.4 296.4 374.7 297 377.9C299.2 388.1 303.5 397.1 307.9 407.8C313.9 421.6 320 435.3 320 449.8C320 481.7 298.4 510.5 266.6 511.8C263.1 511.9 259.5 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256V255.1zM96 255.1C78.33 255.1 64 270.3 64 287.1C64 305.7 78.33 319.1 96 319.1C113.7 319.1 128 305.7 128 287.1C128 270.3 113.7 255.1 96 255.1zM128 191.1C145.7 191.1 160 177.7 160 159.1C160 142.3 145.7 127.1 128 127.1C110.3 127.1 96 142.3 96 159.1C96 177.7 110.3 191.1 128 191.1zM256 63.1C238.3 63.1 224 78.33 224 95.1C224 113.7 238.3 127.1 256 127.1C273.7 127.1 288 113.7 288 95.1C288 78.33 273.7 63.1 256 63.1zM384 191.1C401.7 191.1 416 177.7 416 159.1C416 142.3 401.7 127.1 384 127.1C366.3 127.1 352 142.3 352 159.1C352 177.7 366.3 191.1 384 191.1z"], + "pallet": [640, 512, [], "f482", "M624 384c8.75 0 16-7.25 16-16v-32c0-8.75-7.25-16-16-16h-608C7.25 320 0 327.3 0 336v32C0 376.8 7.25 384 16 384H64v64H16C7.25 448 0 455.3 0 464v32C0 504.8 7.25 512 16 512h608c8.75 0 16-7.25 16-16v-32c0-8.75-7.25-16-16-16H576v-64H624zM288 448H128v-64h160V448zM512 448h-160v-64h160V448z"], + "panorama": [640, 512, [], "e209", "M578.2 66.06C409.8 116.6 230.2 116.6 61.8 66.06C31 56.82 0 79.88 0 112v319.9c0 32.15 30.1 55.21 61.79 45.97c168.4-50.53 347.1-50.53 516.4-.002C608.1 487.2 640 464.1 640 431.1V112C640 79.88 609 56.82 578.2 66.06zM128 224C110.3 224 96 209.7 96 192s14.33-32 32-32c17.68 0 32 14.33 32 32S145.7 224 128 224zM474.3 388.6C423.4 380.3 371.8 376 320 376c-50.45 0-100.7 4.043-150.3 11.93c-14.14 2.246-24.11-13.19-15.78-24.84l49.18-68.56C206.1 290.4 210.9 288 216 288s9.916 2.441 12.93 6.574l32.46 44.51l93.3-139.1C357.7 194.7 362.7 192 368 192s10.35 2.672 13.31 7.125l109.1 165.1C498.1 375.9 488.1 390.8 474.3 388.6z"], + "paper-plane": [512, 512, [61913], "f1d8", "M511.6 36.86l-64 415.1c-1.5 9.734-7.375 18.22-15.97 23.05c-4.844 2.719-10.27 4.097-15.68 4.097c-4.188 0-8.319-.8154-12.29-2.472l-122.6-51.1l-50.86 76.29C226.3 508.5 219.8 512 212.8 512C201.3 512 192 502.7 192 491.2v-96.18c0-7.115 2.372-14.03 6.742-19.64L416 96l-293.7 264.3L19.69 317.5C8.438 312.8 .8125 302.2 .0625 289.1s5.469-23.72 16.06-29.77l448-255.1c10.69-6.109 23.88-5.547 34 1.406S513.5 24.72 511.6 36.86z"], + "paperclip": [448, 512, [128206], "f0c6", "M364.2 83.8C339.8 59.39 300.2 59.39 275.8 83.8L91.8 267.8C49.71 309.9 49.71 378.1 91.8 420.2C133.9 462.3 202.1 462.3 244.2 420.2L396.2 268.2C407.1 257.3 424.9 257.3 435.8 268.2C446.7 279.1 446.7 296.9 435.8 307.8L283.8 459.8C219.8 523.8 116.2 523.8 52.2 459.8C-11.75 395.8-11.75 292.2 52.2 228.2L236.2 44.2C282.5-2.08 357.5-2.08 403.8 44.2C450.1 90.48 450.1 165.5 403.8 211.8L227.8 387.8C199.2 416.4 152.8 416.4 124.2 387.8C95.59 359.2 95.59 312.8 124.2 284.2L268.2 140.2C279.1 129.3 296.9 129.3 307.8 140.2C318.7 151.1 318.7 168.9 307.8 179.8L163.8 323.8C157.1 330.5 157.1 341.5 163.8 348.2C170.5 354.9 181.5 354.9 188.2 348.2L364.2 172.2C388.6 147.8 388.6 108.2 364.2 83.8V83.8z"], + "parachute-box": [512, 512, [], "f4cd", "M272 192V320H304C311 320 317.7 321.5 323.7 324.2L443.8 192H415.5C415.8 186.7 416 181.4 416 176C416 112.1 393.8 54.84 358.9 16.69C450 49.27 493.4 122.6 507.8 173.6C510.5 183.1 502.1 192 493.1 192H487.1L346.8 346.3C350.1 352.8 352 360.2 352 368V464C352 490.5 330.5 512 304 512H207.1C181.5 512 159.1 490.5 159.1 464V368C159.1 360.2 161.9 352.8 165.2 346.3L24.92 192H18.89C9 192 1.483 183.1 4.181 173.6C18.64 122.6 61.97 49.27 153.1 16.69C118.2 54.84 96 112.1 96 176C96 181.4 96.16 186.7 96.47 192H68.17L188.3 324.2C194.3 321.5 200.1 320 207.1 320H239.1V192H128.5C128.2 186.7 127.1 181.4 127.1 176C127.1 125 143.9 80.01 168.2 48.43C192.5 16.89 223.8 0 255.1 0C288.2 0 319.5 16.89 343.8 48.43C368.1 80.01 384 125 384 176C384 181.4 383.8 186.7 383.5 192H272z"], + "paragraph": [448, 512, [182], "f1dd", "M448 63.1C448 81.67 433.7 96 416 96H384v352c0 17.67-14.33 32-31.1 32S320 465.7 320 448V96h-32v352c0 17.67-14.33 32-31.1 32S224 465.7 224 448v-96H198.9c-83.57 0-158.2-61.11-166.1-144.3C23.66 112.3 98.44 32 191.1 32h224C433.7 32 448 46.33 448 63.1z"], + "passport": [448, 512, [], "f5ab", "M129.6 208c5.25 31.25 25.62 57.13 53.25 70.38C175.3 259.4 170.3 235 168.8 208H129.6zM129.6 176h39.13c1.5-27 6.5-51.38 14.12-70.38C155.3 118.9 134.9 144.8 129.6 176zM224 286.8C231.8 279.3 244.8 252.3 247.4 208H200.5C203.3 252.3 216.3 279.3 224 286.8zM265.1 105.6C272.8 124.6 277.8 149 279.3 176h39.13C313.1 144.8 292.8 118.9 265.1 105.6zM384 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h320c35.2 0 64-28.8 64-64V64C448 28.8 419.2 0 384 0zM336 416h-224C103.3 416 96 408.8 96 400S103.3 384 112 384h224c8.75 0 16 7.25 16 16S344.8 416 336 416zM224 320c-70.75 0-128-57.25-128-128s57.25-128 128-128s128 57.25 128 128S294.8 320 224 320zM265.1 278.4c27.62-13.25 48-39.13 53.25-70.38h-39.13C277.8 235 272.8 259.4 265.1 278.4zM200.6 176h46.88C244.7 131.8 231.8 104.8 224 97.25C216.3 104.8 203.2 131.8 200.6 176z"], + "paste": [512, 512, ["file-clipboard"], "f0ea", "M320 96V80C320 53.49 298.5 32 272 32H215.4C204.3 12.89 183.6 0 160 0S115.7 12.89 104.6 32H48C21.49 32 0 53.49 0 80v320C0 426.5 21.49 448 48 448l144 .0013L192 176C192 131.8 227.8 96 272 96H320zM160 88C146.8 88 136 77.25 136 64S146.8 40 160 40S184 50.75 184 64S173.3 88 160 88zM416 128v96h96L416 128zM384 224L384 128h-112C245.5 128 224 149.5 224 176v288c0 26.51 21.49 48 48 48h192c26.51 0 48-21.49 48-48V256h-95.99C398.4 256 384 241.6 384 224z"], + "pause": [320, 512, [9208], "f04c", "M272 63.1l-32 0c-26.51 0-48 21.49-48 47.1v288c0 26.51 21.49 48 48 48L272 448c26.51 0 48-21.49 48-48v-288C320 85.49 298.5 63.1 272 63.1zM80 63.1l-32 0c-26.51 0-48 21.49-48 48v288C0 426.5 21.49 448 48 448l32 0c26.51 0 48-21.49 48-48v-288C128 85.49 106.5 63.1 80 63.1z"], + "paw": [512, 512, [], "f1b0", "M226.5 92.85C240.8 135.7 226.2 179.1 193.9 189.7C161.6 200.2 123.8 174 109.5 131.1C95.19 88.26 109.8 44.92 142.1 34.34C174.4 23.77 212.2 49.96 226.5 92.85zM100.4 198.6C119.2 231 114.7 268.7 90.16 282.7C65.65 296.8 30.49 281.9 11.63 249.4C-7.237 216.1-2.664 179.3 21.84 165.3C46.35 151.2 81.51 166.1 100.4 198.6zM69.21 401.2C121.6 259.9 214.7 224 256 224C297.3 224 390.4 259.9 442.8 401.2C446.4 410.9 448 421.3 448 431.7V433.3C448 459.1 427.1 480 401.3 480C389.8 480 378.4 478.6 367.3 475.8L279.3 453.8C263.1 450 248 450 232.7 453.8L144.7 475.8C133.6 478.6 122.2 480 110.7 480C84.93 480 64 459.1 64 433.3V431.7C64 421.3 65.6 410.9 69.21 401.2H69.21zM421.8 282.7C397.3 268.7 392.8 231 411.6 198.6C430.5 166.1 465.7 151.2 490.2 165.3C514.7 179.3 519.2 216.1 500.4 249.4C481.5 281.9 446.3 296.8 421.8 282.7zM310.1 189.7C277.8 179.1 263.2 135.7 277.5 92.85C291.8 49.96 329.6 23.77 361.9 34.34C394.2 44.92 408.8 88.26 394.5 131.1C380.2 174 342.4 200.2 310.1 189.7z"], + "peace": [512, 512, [9774], "f67c", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM224 445.1c-36.36-6.141-69.2-22.48-95.59-46.04L224 322.6V445.1zM288 322.6l95.59 76.47C357.2 422.6 324.4 438.1 288 445.1V322.6zM64 256c0-94.95 69.34-173.8 160-189.1v173.7l-135.7 108.6C72.86 321.6 64 289.8 64 256zM423.7 349.2L288 240.6V66.89C378.7 82.2 448 161.1 448 256C448 289.8 439.1 321.6 423.7 349.2z"], + "pen": [512, 512, [128394], "f304", "M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"], + "pen-clip": [512, 512, ["pen-alt"], "f305", "M492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L440.6 201.4L310.6 71.43L362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75zM240.1 114.9C231.6 105.5 216.4 105.5 207 114.9L104.1 216.1C95.6 226.3 80.4 226.3 71.03 216.1C61.66 207.6 61.66 192.4 71.03 183L173.1 80.97C201.2 52.85 246.8 52.85 274.9 80.97L417.9 224L229.5 412.5C181.5 460.5 120.3 493.2 53.7 506.5L28.71 511.5C20.84 513.1 12.7 510.6 7.03 504.1C1.356 499.3-1.107 491.2 .4662 483.3L5.465 458.3C18.78 391.7 51.52 330.5 99.54 282.5L254.1 128L240.1 114.9z"], + "pen-fancy": [512, 512, [128395, 10002], "f5ac", "M373.5 27.11C388.5 9.885 410.2 0 433 0C476.6 0 512 35.36 512 78.98C512 101.8 502.1 123.5 484.9 138.5L277.7 319L192.1 234.3L373.5 27.11zM255.1 341.7L235.9 425.1C231.9 442.2 218.9 455.8 202 460.5L24.35 510.3L119.7 414.9C122.4 415.6 125.1 416 128 416C145.7 416 160 401.7 160 384C160 366.3 145.7 352 128 352C110.3 352 96 366.3 96 384C96 386.9 96.38 389.6 97.08 392.3L1.724 487.6L51.47 309.1C56.21 293.1 69.8 280.1 86.9 276.1L170.3 256.9L255.1 341.7z"], + "pen-nib": [512, 512, [10001], "f5ad", "M368.4 18.34C390.3-3.526 425.7-3.526 447.6 18.34L493.7 64.4C515.5 86.27 515.5 121.7 493.7 143.6L437.9 199.3L312.7 74.06L368.4 18.34zM417.4 224L371.4 377.3C365.4 397.2 350.2 413 330.5 419.6L66.17 508.2C54.83 512 42.32 509.2 33.74 500.9L187.3 347.3C193.6 350.3 200.6 352 207.1 352C234.5 352 255.1 330.5 255.1 304C255.1 277.5 234.5 256 207.1 256C181.5 256 159.1 277.5 159.1 304C159.1 311.4 161.7 318.4 164.7 324.7L11.11 478.3C2.809 469.7-.04 457.2 3.765 445.8L92.39 181.5C98.1 161.8 114.8 146.6 134.7 140.6L287.1 94.6L417.4 224z"], + "pen-ruler": [512, 512, ["pencil-ruler"], "f5ae", "M492.7 42.75C517.7 67.74 517.7 108.3 492.7 133.3L436.3 189.7L322.3 75.72L378.7 19.32C403.7-5.678 444.3-5.678 469.3 19.32L492.7 42.75zM44.89 353.2L299.7 98.34L413.7 212.3L158.8 467.1C152.1 473.8 143.8 478.7 134.6 481.4L30.59 511.1C22.21 513.5 13.19 511.1 7.03 504.1C.8669 498.8-1.47 489.8 .9242 481.4L30.65 377.4C33.26 368.2 38.16 359.9 44.89 353.2zM249.4 103.4L103.4 249.4L16 161.9C-2.745 143.2-2.745 112.8 16 94.06L94.06 16C112.8-2.745 143.2-2.745 161.9 16L181.7 35.76C181.4 36.05 181 36.36 180.7 36.69L116.7 100.7C110.4 106.9 110.4 117.1 116.7 123.3C122.9 129.6 133.1 129.6 139.3 123.3L203.3 59.31C203.6 58.99 203.1 58.65 204.2 58.3L249.4 103.4zM453.7 307.8C453.4 308 453 308.4 452.7 308.7L388.7 372.7C382.4 378.9 382.4 389.1 388.7 395.3C394.9 401.6 405.1 401.6 411.3 395.3L475.3 331.3C475.6 330.1 475.1 330.6 476.2 330.3L496 350.1C514.7 368.8 514.7 399.2 496 417.9L417.9 496C399.2 514.7 368.8 514.7 350.1 496L262.6 408.6L408.6 262.6L453.7 307.8z"], + "pen-to-square": [512, 512, ["edit"], "f044", "M490.3 40.4C512.2 62.27 512.2 97.73 490.3 119.6L460.3 149.7L362.3 51.72L392.4 21.66C414.3-.2135 449.7-.2135 471.6 21.66L490.3 40.4zM172.4 241.7L339.7 74.34L437.7 172.3L270.3 339.6C264.2 345.8 256.7 350.4 248.4 353.2L159.6 382.8C150.1 385.6 141.5 383.4 135 376.1C128.6 370.5 126.4 361 129.2 352.4L158.8 263.6C161.6 255.3 166.2 247.8 172.4 241.7V241.7zM192 63.1C209.7 63.1 224 78.33 224 95.1C224 113.7 209.7 127.1 192 127.1H96C78.33 127.1 64 142.3 64 159.1V416C64 433.7 78.33 448 96 448H352C369.7 448 384 433.7 384 416V319.1C384 302.3 398.3 287.1 416 287.1C433.7 287.1 448 302.3 448 319.1V416C448 469 405 512 352 512H96C42.98 512 0 469 0 416V159.1C0 106.1 42.98 63.1 96 63.1H192z"], + "pencil": [512, 512, [61504, 9999, "pencil-alt"], "f303", "M421.7 220.3L188.5 453.4L154.6 419.5L158.1 416H112C103.2 416 96 408.8 96 400V353.9L92.51 357.4C87.78 362.2 84.31 368 82.42 374.4L59.44 452.6L137.6 429.6C143.1 427.7 149.8 424.2 154.6 419.5L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3zM492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75z"], + "people-arrows": [576, 512, ["people-arrows-left-right"], "e068", "M96 304.1c0-12.16 4.971-23.83 13.64-32.01l72.13-68.08c1.65-1.555 3.773-2.311 5.611-3.578C177.1 176.8 155 160 128 160H64C28.65 160 0 188.7 0 224v96c0 17.67 14.33 32 31.1 32L32 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96.39l-50.36-47.53C100.1 327.9 96 316.2 96 304.1zM480 128c35.38 0 64-28.62 64-64s-28.62-64-64-64s-64 28.62-64 64S444.6 128 480 128zM96 128c35.38 0 64-28.62 64-64S131.4 0 96 0S32 28.62 32 64S60.63 128 96 128zM444.4 295.3L372.3 227.3c-3.49-3.293-8.607-4.193-13.01-2.299C354.9 226.9 352 231.2 352 236V272H224V236c0-4.795-2.857-9.133-7.262-11.03C212.3 223.1 207.2 223.1 203.7 227.3L131.6 295.3c-4.805 4.535-4.805 12.94 0 17.47l72.12 68.07c3.49 3.291 8.607 4.191 13.01 2.297C221.1 381.3 224 376.9 224 372.1V336h128v36.14c0 4.795 2.857 9.135 7.262 11.04c4.406 1.893 9.523 .9922 13.01-2.299l72.12-68.07C449.2 308.3 449.2 299.9 444.4 295.3zM512 160h-64c-26.1 0-49.98 16.77-59.38 40.42c1.842 1.271 3.969 2.027 5.623 3.588l72.12 68.06C475 280.2 480 291.9 480 304.1c.002 12.16-4.969 23.83-13.64 32.01L416 383.6V480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-128c17.67 0 32-14.33 32-32V224C576 188.7 547.3 160 512 160z"], + "people-carry-box": [640, 512, ["people-carry"], "f4ce", "M128 95.1c26.5 0 47.1-21.5 47.1-47.1S154.5 0 128 0S80.01 21.5 80.01 47.1S101.5 95.1 128 95.1zM511.1 95.1c26.5 0 47.1-21.5 47.1-47.1S538.5 0 511.1 0c-26.5 0-48 21.5-48 47.1S485.5 95.1 511.1 95.1zM603.5 258.3l-18.5-80.13c-4.625-20-18.62-36.88-37.5-44.88c-18.5-8-38.1-6.75-56.12 3.25c-22.62 13.38-39.62 34.5-48.12 59.38l-11.25 33.88l-15.1 10.25L415.1 144c0-8.75-7.25-16-16-16H240c-8.75 0-16 7.25-16 16L224 239.1l-16.12-10.25l-11.25-33.88c-8.375-25-25.38-46-48.12-59.38c-17.25-10-37.63-11.25-56.12-3.25c-18.88 8-32.88 24.88-37.5 44.88l-18.37 80.13c-4.625 20 .7506 41.25 14.37 56.75l67.25 75.88l10.12 92.63C130 499.8 143.8 512 160 512c1.25 0 2.25-.125 3.5-.25c17.62-1.875 30.25-17.62 28.25-35.25l-10-92.75c-1.5-13-7-25.12-15.62-35l-43.37-49l17.62-70.38l6.876 20.38c4 12.5 11.87 23.5 24.5 32.63l51 32.5c4.623 2.875 12.12 4.625 17.25 5h159.1c5.125-.375 12.62-2.125 17.25-5l51-32.5c12.62-9.125 20.5-20 24.5-32.63l6.875-20.38l17.63 70.38l-43.37 49c-8.625 9.875-14.12 22-15.62 35l-10 92.75c-2 17.62 10.75 33.38 28.25 35.25C477.7 511.9 478.7 512 479.1 512c16.12 0 29.1-12.12 31.75-28.5l10.12-92.63L589.1 315C602.7 299.5 608.1 278.3 603.5 258.3zM46.26 358.1l-44 110c-6.5 16.38 1.5 35 17.88 41.63c16.75 6.5 35.12-1.75 41.62-17.88l27.62-69.13l-2-18.25L46.26 358.1zM637.7 468.1l-43.1-110l-41.13 46.38l-2 18.25l27.62 69.13C583.2 504.4 595.2 512 607.1 512c3.998 0 7.998-.75 11.87-2.25C636.2 503.1 644.2 484.5 637.7 468.1z"], + "people-group": [640, 512, [], "e533", "M184 88C184 118.9 158.9 144 128 144C97.07 144 72 118.9 72 88C72 57.07 97.07 32 128 32C158.9 32 184 57.07 184 88zM208.4 196.3C178.7 222.7 160 261.2 160 304C160 338.3 171.1 369.8 192 394.5V416C192 433.7 177.7 448 160 448H96C78.33 448 64 433.7 64 416V389.2C26.16 371.2 0 332.7 0 288C0 226.1 50.14 176 112 176H144C167.1 176 190.2 183.5 208.4 196.3V196.3zM64 245.7C54.04 256.9 48 271.8 48 288C48 304.2 54.04 319.1 64 330.3V245.7zM448 416V394.5C468 369.8 480 338.3 480 304C480 261.2 461.3 222.7 431.6 196.3C449.8 183.5 472 176 496 176H528C589.9 176 640 226.1 640 288C640 332.7 613.8 371.2 576 389.2V416C576 433.7 561.7 448 544 448H480C462.3 448 448 433.7 448 416zM576 330.3C585.1 319.1 592 304.2 592 288C592 271.8 585.1 256.9 576 245.7V330.3zM568 88C568 118.9 542.9 144 512 144C481.1 144 456 118.9 456 88C456 57.07 481.1 32 512 32C542.9 32 568 57.07 568 88zM256 96C256 60.65 284.7 32 320 32C355.3 32 384 60.65 384 96C384 131.3 355.3 160 320 160C284.7 160 256 131.3 256 96zM448 304C448 348.7 421.8 387.2 384 405.2V448C384 465.7 369.7 480 352 480H288C270.3 480 256 465.7 256 448V405.2C218.2 387.2 192 348.7 192 304C192 242.1 242.1 192 304 192H336C397.9 192 448 242.1 448 304zM256 346.3V261.7C246 272.9 240 287.8 240 304C240 320.2 246 335.1 256 346.3zM384 261.7V346.3C393.1 335 400 320.2 400 304C400 287.8 393.1 272.9 384 261.7z"], + "people-line": [640, 512, [], "e534", "M360 72C360 94.09 342.1 112 320 112C297.9 112 280 94.09 280 72C280 49.91 297.9 32 320 32C342.1 32 360 49.91 360 72zM104 168C104 145.9 121.9 128 144 128C166.1 128 184 145.9 184 168C184 190.1 166.1 208 144 208C121.9 208 104 190.1 104 168zM608 416C625.7 416 640 430.3 640 448C640 465.7 625.7 480 608 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H608zM456 168C456 145.9 473.9 128 496 128C518.1 128 536 145.9 536 168C536 190.1 518.1 208 496 208C473.9 208 456 190.1 456 168zM200 352C200 369.7 185.7 384 168 384H120C102.3 384 88 369.7 88 352V313.5L61.13 363.4C54.85 375 40.29 379.4 28.62 373.1C16.95 366.8 12.58 352.3 18.87 340.6L56.75 270.3C72.09 241.8 101.9 224 134.2 224H153.8C170.1 224 185.7 228.5 199.2 236.6L232.7 174.3C248.1 145.8 277.9 128 310.2 128H329.8C362.1 128 391.9 145.8 407.3 174.3L440.8 236.6C454.3 228.5 469.9 224 486.2 224H505.8C538.1 224 567.9 241.8 583.3 270.3L621.1 340.6C627.4 352.3 623 366.8 611.4 373.1C599.7 379.4 585.2 375 578.9 363.4L552 313.5V352C552 369.7 537.7 384 520 384H472C454.3 384 440 369.7 440 352V313.5L413.1 363.4C406.8 375 392.3 379.4 380.6 373.1C368.1 366.8 364.6 352.3 370.9 340.6L407.2 273.1C405.5 271.5 404 269.6 402.9 267.4L376 217.5V272C376 289.7 361.7 304 344 304H295.1C278.3 304 263.1 289.7 263.1 272V217.5L237.1 267.4C235.1 269.6 234.5 271.5 232.8 273.1L269.1 340.6C275.4 352.3 271 366.8 259.4 373.1C247.7 379.4 233.2 375 226.9 363.4L199.1 313.5L200 352z"], + "people-pulling": [576, 512, [], "e535", "M32 48C32 21.49 53.49 0 80 0C106.5 0 128 21.49 128 48C128 74.51 106.5 96 80 96C53.49 96 32 74.51 32 48V48zM118.3 128C130.1 128 143.5 130.5 155.2 135.4L289.3 191.2C302.6 171.1 320.1 156.6 342.7 146.9L353.7 142C374.5 132.8 396.1 128 419.7 128C464.3 128 504.5 154.8 521.6 195.9L536.1 232.7L558.3 243.4C574.1 251.3 580.5 270.5 572.6 286.3C564.7 302.1 545.5 308.5 529.7 300.6L503 287.3C492.7 282.1 484.6 273.4 480.2 262.8L470.6 239.8L451.3 305.3L500.8 359.4C506.2 365.3 510.1 372.4 512 380.2L535 472.2C539.3 489.4 528.9 506.8 511.8 511C494.6 515.3 477.2 504.9 472.1 487.8L450.9 399.6L380.3 322.5C365.5 306.4 359.1 283.9 365.6 262.8L382.5 199.3C381.6 199.7 380.6 200.1 379.7 200.5L368.7 205.4C353.4 212.2 341.4 224.6 335.2 240.1L333.7 243.9C328.6 256.7 316.1 264.4 303 263.1C299.2 263.9 295.4 263.1 291.7 261.5L173.3 212.2L231.2 473.1C235.1 490.3 224.2 507.4 206.9 511.2C189.7 515.1 172.6 504.2 168.8 486.9L138.8 352H123.1L143.6 474.7C146.5 492.2 134.7 508.7 117.3 511.6C99.83 514.5 83.34 502.7 80.44 485.3L56.35 340.8C50.48 347.6 41.75 352 32 352C14.33 352 0 337.7 0 319.1V191.1C0 156.7 28.65 127.1 64 127.1L118.3 128zM416 48C416 21.49 437.5 0 464 0C490.5 0 512 21.49 512 48C512 74.51 490.5 96 464 96C437.5 96 416 74.51 416 48V48zM356.7 344.2L397.4 388.6L382.9 424.8C380.5 430.9 376.9 436.4 372.3 440.9L310.6 502.6C298.1 515.1 277.9 515.1 265.4 502.6C252.9 490.1 252.9 469.9 265.4 457.4L324.7 398L349.7 335.6C351.8 338.6 354.2 341.4 356.7 344.2H356.7z"], + "people-robbery": [576, 512, [], "e536", "M496.1 24.24C501.2 7.093 518.6-3.331 535.8 .9552C552.9 5.242 563.3 22.62 559 39.76L550.3 74.63C539.3 118.6 510.1 154.2 472 174.3V480C472 497.7 457.7 512 440 512C422.3 512 408 497.7 408 480V352H392V480C392 497.7 377.7 512 360 512C342.3 512 328 497.7 328 480V174.3C289.9 154.2 260.7 118.6 249.7 74.63L240.1 39.76C236.7 22.62 247.1 5.242 264.2 .9552C281.4-3.331 298.8 7.093 303 24.24L311.8 59.1C321.9 99.59 358.3 127.1 400 127.1C441.7 127.1 478.1 99.59 488.2 59.1L496.1 24.24zM352 47.1C352 21.49 373.5-.0006 400-.0006C426.5-.0006 448 21.49 448 47.1C448 74.51 426.5 95.1 400 95.1C373.5 95.1 352 74.51 352 47.1V47.1zM32.01 48C32.01 21.49 53.5 0 80.01 0C106.5 0 128 21.49 128 48C128 74.51 106.5 96 80.01 96C53.5 96 32.01 74.51 32.01 48V48zM104.7 128C132.1 128 157.6 142 172.2 165.1L209.6 224H240C257.7 224 272 238.3 272 256C272 273.7 257.7 288 240 288H192C181 288 170.9 282.4 164.1 273.1L152 252.7V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V352H72V480C72 497.7 57.68 512 40 512C22.33 512 8.005 497.7 8.005 480V288.6L8 287.1V191.1C8 156.7 36.65 127.1 72 127.1L104.7 128z"], + "people-roof": [640, 512, [], "e537", "M623.5 164C638.1 172.6 644.6 192.1 635.1 207.5C627.4 222.1 607.9 228.6 592.5 219.1L319.1 68.61L47.54 219.1C32.09 228.6 12.61 222.1 4.025 207.5C-4.558 192.1 1.008 172.6 16.46 164L304.5 4.027C314.1-1.342 325.9-1.342 335.5 4.027L623.5 164zM279.1 200C279.1 177.9 297.9 160 319.1 160C342.1 160 359.1 177.9 359.1 200C359.1 222.1 342.1 240 319.1 240C297.9 240 279.1 222.1 279.1 200zM103.1 296C103.1 273.9 121.9 256 143.1 256C166.1 256 183.1 273.9 183.1 296C183.1 318.1 166.1 336 143.1 336C121.9 336 103.1 318.1 103.1 296V296zM535.1 296C535.1 318.1 518.1 336 495.1 336C473.9 336 455.1 318.1 455.1 296C455.1 273.9 473.9 256 495.1 256C518.1 256 535.1 273.9 535.1 296zM226.9 491.4L199.1 441.5V480C199.1 497.7 185.7 512 167.1 512H119.1C102.3 512 87.1 497.7 87.1 480V441.5L61.13 491.4C54.84 503 40.29 507.4 28.62 501.1C16.95 494.8 12.58 480.3 18.87 468.6L56.74 398.3C72.09 369.8 101.9 352 134.2 352H153.8C170.1 352 185.7 356.5 199.2 364.6L232.7 302.3C248.1 273.8 277.9 255.1 310.2 255.1H329.8C362.1 255.1 391.9 273.8 407.3 302.3L440.8 364.6C454.3 356.5 469.9 352 486.2 352H505.8C538.1 352 567.9 369.8 583.3 398.3L621.1 468.6C627.4 480.3 623 494.8 611.4 501.1C599.7 507.4 585.2 503 578.9 491.4L551.1 441.5V480C551.1 497.7 537.7 512 519.1 512H471.1C454.3 512 439.1 497.7 439.1 480V441.5L413.1 491.4C406.8 503 392.3 507.4 380.6 501.1C368.1 494.8 364.6 480.3 370.9 468.6L407.2 401.1C405.5 399.5 404 397.6 402.9 395.4L375.1 345.5V400C375.1 417.7 361.7 432 343.1 432H295.1C278.3 432 263.1 417.7 263.1 400V345.5L237.1 395.4C235.1 397.6 234.5 399.5 232.8 401.1L269.1 468.6C275.4 480.3 271 494.8 259.4 501.1C247.7 507.4 233.2 503 226.9 491.4H226.9z"], + "pepper-hot": [512, 512, [127798], "f816", "M465 134.2c21.46-38.38 19.87-87.17-5.65-123.1c-7.541-10.83-22.31-13.53-33.2-5.938c-10.77 7.578-13.44 22.55-5.896 33.41c14.41 20.76 15.13 47.69 4.098 69.77C407.1 100.1 388 95.1 368 95.1c-36.23 0-68.93 13.83-94.24 35.92L352 165.5V256h90.56l33.53 78.23C498.2 308.9 512 276.2 512 239.1C512 198 493.7 160.6 465 134.2zM320 288V186.6l-52.95-22.69C216.2 241.3 188.5 400 56 400C25.13 400 0 425.1 0 456S25.13 512 56 512c180.3 0 320.1-88.27 389.3-168.5L421.5 288H320z"], + "percent": [384, 512, [62101, 62785, "percentage"], "25", "M374.6 73.39c-12.5-12.5-32.75-12.5-45.25 0l-320 320c-12.5 12.5-12.5 32.75 0 45.25C15.63 444.9 23.81 448 32 448s16.38-3.125 22.62-9.375l320-320C387.1 106.1 387.1 85.89 374.6 73.39zM64 192c35.3 0 64-28.72 64-64S99.3 64.01 64 64.01S0 92.73 0 128S28.7 192 64 192zM320 320c-35.3 0-64 28.72-64 64s28.7 64 64 64s64-28.72 64-64S355.3 320 320 320z"], + "person": [320, 512, [129485, "male"], "f183", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L315.4 271.5C324.5 286.7 319.6 306.3 304.5 315.4C289.3 324.5 269.7 319.6 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352z"], + "person-arrow-down-to-line": [640, 512, [], "e538", "M144 48C144 21.49 165.5 0 192 0C218.5 0 240 21.49 240 48C240 74.51 218.5 96 192 96C165.5 96 144 74.51 144 48zM120 256.9L91.43 304.5C82.33 319.6 62.67 324.5 47.52 315.4C32.37 306.3 27.47 286.7 36.57 271.5L94.85 174.6C112.2 145.7 143.4 128 177.1 128H206.9C240.6 128 271.8 145.7 289.2 174.6L347.4 271.5C356.5 286.7 351.6 306.3 336.5 315.4C321.3 324.5 301.7 319.6 292.6 304.5L264 256.9V448H608C625.7 448 640 462.3 640 480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H120L120 256.9zM200 448V352H184V448H200zM393.4 326.6C380.9 314.1 380.9 293.9 393.4 281.4C405.9 268.9 426.1 268.9 438.6 281.4L464 306.7V64C464 46.33 478.3 32 496 32C513.7 32 528 46.33 528 64V306.7L553.4 281.4C565.9 268.9 586.1 268.9 598.6 281.4C611.1 293.9 611.1 314.1 598.6 326.6L518.6 406.6C506.1 419.1 485.9 419.1 473.4 406.6L393.4 326.6z"], + "person-arrow-up-from-line": [640, 512, [], "e539", "M144 48C144 21.49 165.5 0 192 0C218.5 0 240 21.49 240 48C240 74.51 218.5 96 192 96C165.5 96 144 74.51 144 48zM120 256.9L91.43 304.5C82.33 319.6 62.67 324.5 47.52 315.4C32.37 306.3 27.47 286.7 36.57 271.5L94.85 174.6C112.2 145.7 143.4 128 177.1 128H206.9C240.6 128 271.8 145.7 289.2 174.6L347.4 271.5C356.5 286.7 351.6 306.3 336.5 315.4C321.3 324.5 301.7 319.6 292.6 304.5L264 256.9V448H608C625.7 448 640 462.3 640 480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H120L120 256.9zM200 448V352H184V448H200zM598.6 121.4C611.1 133.9 611.1 154.1 598.6 166.6C586.1 179.1 565.9 179.1 553.4 166.6L528 141.3V384C528 401.7 513.7 416 496 416C478.3 416 464 401.7 464 384V141.3L438.6 166.6C426.1 179.1 405.9 179.1 393.4 166.6C380.9 154.1 380.9 133.9 393.4 121.4L473.4 41.37C485.9 28.88 506.1 28.88 518.6 41.37L598.6 121.4z"], + "person-biking": [640, 512, [128692, "biking"], "f84a", "M352 48C352 21.49 373.5 0 400 0C426.5 0 448 21.49 448 48C448 74.51 426.5 96 400 96C373.5 96 352 74.51 352 48zM480 159.1C497.7 159.1 512 174.3 512 191.1C512 209.7 497.7 223.1 480 223.1H416C408.7 223.1 401.7 221.5 396 216.1L355.3 184.4L295 232.9L337.8 261.4C346.7 267.3 352 277.3 352 288V416C352 433.7 337.7 448 320 448C302.3 448 288 433.7 288 416V305.1L227.5 266.8C194.7 245.1 192.5 198.9 223.2 175.2L306.3 110.9C323.8 97.45 348.1 97.58 365.4 111.2L427.2 159.1H480zM256 384C256 454.7 198.7 512 128 512C57.31 512 0 454.7 0 384C0 313.3 57.31 256 128 256C198.7 256 256 313.3 256 384zM128 312C88.24 312 56 344.2 56 384C56 423.8 88.24 456 128 456C167.8 456 200 423.8 200 384C200 344.2 167.8 312 128 312zM640 384C640 454.7 582.7 512 512 512C441.3 512 384 454.7 384 384C384 313.3 441.3 256 512 256C582.7 256 640 313.3 640 384zM512 312C472.2 312 440 344.2 440 384C440 423.8 472.2 456 512 456C551.8 456 584 423.8 584 384C584 344.2 551.8 312 512 312z"], + "person-booth": [576, 512, [], "f756", "M192 496C192 504.8 199.3 512 208 512h32C248.8 512 256 504.8 256 496V320H192V496zM544 0h-32v496c0 8.75 7.25 16 16 16h32c8.75 0 16-7.25 16-16V32C576 14.25 561.8 0 544 0zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32S16 53.5 16 80S37.5 128 64 128zM224 224H173.1L127.9 178.8C115.8 166.6 99.75 160 82.75 160H64C46.88 160 30.75 166.8 18.75 178.8c-12 12.12-18.72 28.22-18.72 45.35L0 480c0 17.75 14.25 32 31.88 32s32-14.25 32-32L64 379.3c.875 .5 1.625 1.375 2.5 1.75L95.63 424V480c0 17.75 14.25 32 32 32c17.62 0 32-14.25 32-32v-56.5c0-9.875-2.375-19.75-6.75-28.62l-41.13-61.25V253l20.88 20.88C141.8 283 153.8 288 166.5 288H224c17.75 0 32-14.25 32-32S241.8 224 224 224zM192 32v160h64V0H224C206.3 0 192 14.25 192 32zM288 32l31.5 223.1l-30.88 154.6C284.3 431.3 301.6 448 320 448c15.25 0 27.99-9.125 32.24-30.38C353.3 434.5 366.9 448 384 448c17.75 0 32-14.25 32-32c0 17.75 14.25 32 32 32s32-14.25 32-32V0h-192V32z"], + "person-breastfeeding": [448, 512, [], "e53a", "M144 80C144 35.82 179.8 0 224 0C268.2 0 304 35.82 304 80C304 124.2 268.2 160 224 160C179.8 160 144 124.2 144 80zM436.8 382.8L373.5 461.1C356.9 482.7 326.7 486 306 469.5C288.4 455.4 283.3 431.3 292.5 411.7L291.7 411.6C252.8 406.1 217.4 386.5 192 356.8V320C192 302.3 177.7 288 160 288C142.3 288 128 302.3 128 320V368C128 368.8 128 369.6 128.1 370.4L229.5 421.1C253.2 432.9 262.8 461.8 250.9 485.5C239.1 509.2 210.2 518.8 186.5 506.9L27.21 427.3C26.11 426.7 25.02 426.2 23.95 425.5C19.04 422.7 14.79 419.1 11.3 414.1C6.732 409.5 3.492 403.3 1.683 396.6C-1.576 384.6-.1811 371.4 6.459 359.9C7.098 358.8 7.776 357.8 8.489 356.7L75.56 256.1C102.3 216.1 147.2 192 195.4 192H270.6C317.1 192 360.7 214.5 387.8 252.3L438.5 323.2C440.7 326.2 442.5 329.4 443.9 332.7C446.9 339.3 448.2 346.4 447.1 353.5C447.7 364.1 443.8 374.5 436.8 382.8V382.8zM276 288C251.7 288 232 307.7 232 332C232 356.3 251.7 376 276 376C300.3 376 320 356.3 320 332C320 307.7 300.3 288 276 288z"], + "person-burst": [640, 512, [], "e53b", "M431.1 48C431.1 21.49 453.5 0 479.1 0C506.5 0 527.1 21.49 527.1 48C527.1 74.51 506.5 96 479.1 96C453.5 96 431.1 74.51 431.1 48zM439.1 512C422.3 512 407.1 497.7 407.1 480V256.9L379.4 304.5C370.3 319.6 350.7 324.5 335.5 315.4C320.4 306.3 315.5 286.7 324.6 271.5L382.8 174.6C400.2 145.7 431.4 128 465.1 128H494.9C528.6 128 559.8 145.7 577.2 174.6L635.4 271.5C644.5 286.7 639.6 306.3 624.5 315.4C609.3 324.5 589.7 319.6 580.6 304.5L551.1 256.9V480C551.1 497.7 537.7 512 519.1 512C502.3 512 487.1 497.7 487.1 480V352H471.1V480C471.1 497.7 457.7 512 439.1 512L439.1 512zM220.3 92.05L296.4 68.93C302.7 67.03 309.5 69.14 313.6 74.27C317.7 79.39 318.2 86.49 314.1 92.18L275.5 161.3L330.7 199.3L306.3 239.8L255.8 247.6L261.4 327C261.8 333.6 258.3 339.7 252.4 342.6C246.5 345.4 239.4 344.4 234.6 339.9L175.1 286.1L117.4 339.9C112.6 344.4 105.5 345.4 99.63 342.6C93.73 339.7 90.15 333.6 90.62 327L96.21 247.6L17.55 235.4C11.08 234.4 5.868 229.6 4.41 223.2C2.951 216.8 5.538 210.1 10.94 206.4L76.5 161.3L37.01 92.18C33.76 86.49 34.31 79.39 38.39 74.27C42.48 69.14 49.28 67.03 55.55 68.93L131.7 92.05L161.1 18.09C163.6 11.1 169.4 7.1 175.1 7.1C182.6 7.1 188.4 11.1 190.9 18.09L220.3 92.05z"], + "person-cane": [384, 512, [], "e53c", "M240 48C240 74.51 218.5 96 192 96C165.5 96 144 74.51 144 48C144 21.49 165.5 0 192 0C218.5 0 240 21.49 240 48zM232 480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H181C209.6 128 236.7 140.7 254.9 162.7L328.6 251.6C339.9 265.2 338 285.3 324.4 296.6C310.8 307.9 290.7 306 279.4 292.4L232 235.3L232 480zM320 384C320 397.3 309.3 408 296 408C282.7 408 272 397.3 272 384V376C272 345.1 297.1 320 328 320C358.9 320 384 345.1 384 376V488C384 501.3 373.3 512 360 512C346.7 512 336 501.3 336 488V376C336 371.6 332.4 368 328 368C323.6 368 320 371.6 320 376V384z"], + "person-chalkboard": [640, 512, [], "e53d", "M144 48C144 21.49 165.5 0 192 0C218.5 0 240 21.49 240 48C240 74.51 218.5 96 192 96C165.5 96 144 74.51 144 48zM152 512C134.3 512 120 497.7 120 480V256.9L91.43 304.5C82.33 319.6 62.67 324.5 47.52 315.4C32.37 306.3 27.47 286.7 36.58 271.5L94.85 174.6C112.2 145.7 143.4 128 177.1 128H320V48C320 21.49 341.5 .0003 368 .0003H592C618.5 .0003 640 21.49 640 48V272C640 298.5 618.5 320 592 320H368C341.5 320 320 298.5 320 272V224H384V256H576V64H384V128H400C417.7 128 432 142.3 432 160C432 177.7 417.7 192 400 192H264V480C264 497.7 249.7 512 232 512C214.3 512 200 497.7 200 480V352H184V480C184 497.7 169.7 512 152 512L152 512z"], + "person-circle-check": [576, 512, [], "e53e", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM476.7 324.7L416 385.4L387.3 356.7C381.1 350.4 370.9 350.4 364.7 356.7C358.4 362.9 358.4 373.1 364.7 379.3L404.7 419.3C410.9 425.6 421.1 425.6 427.3 419.3L499.3 347.3C505.6 341.1 505.6 330.9 499.3 324.7C493.1 318.4 482.9 318.4 476.7 324.7H476.7z"], + "person-circle-exclamation": [576, 512, [], "e53f", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM415.1 288V368C415.1 376.8 423.2 384 431.1 384C440.8 384 447.1 376.8 447.1 368V288C447.1 279.2 440.8 272 431.1 272C423.2 272 415.1 279.2 415.1 288z"], + "person-circle-minus": [576, 512, [], "e540", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM496 351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1z"], + "person-circle-plus": [576, 512, [], "e541", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM448 303.1C448 295.2 440.8 287.1 432 287.1C423.2 287.1 416 295.2 416 303.1V351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H416V431.1C416 440.8 423.2 447.1 432 447.1C440.8 447.1 448 440.8 448 431.1V383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1H448V303.1z"], + "person-circle-question": [576, 512, [], "e542", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM368 328C368 336.8 375.2 344 384 344C392.8 344 400 336.8 400 328V321.6C400 316.3 404.3 312 409.6 312H450.1C457.8 312 464 318.2 464 325.9C464 331.1 461.1 335.8 456.6 338.3L424.6 355.1C419.3 357.9 416 363.3 416 369.2V384C416 392.8 423.2 400 432 400C440.8 400 448 392.8 448 384V378.9L471.5 366.6C486.5 358.6 496 342.1 496 325.9C496 300.6 475.4 280 450.1 280H409.6C386.6 280 368 298.6 368 321.6V328z"], + "person-circle-xmark": [576, 512, [], "e543", "M208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48zM152 352V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H174.9C208.6 128 239.8 145.7 257.2 174.6L302.1 249.3C285.1 266.9 273.4 287.7 265.5 310.8C263.6 308.9 261.1 306.8 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352L152 352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM491.3 331.3C497.6 325.1 497.6 314.9 491.3 308.7C485.1 302.4 474.9 302.4 468.7 308.7L432 345.4L395.3 308.7C389.1 302.4 378.9 302.4 372.7 308.7C366.4 314.9 366.4 325.1 372.7 331.3L409.4 368L372.7 404.7C366.4 410.9 366.4 421.1 372.7 427.3C378.9 433.6 389.1 433.6 395.3 427.3L432 390.6L468.7 427.3C474.9 433.6 485.1 433.6 491.3 427.3C497.6 421.1 497.6 410.9 491.3 404.7L454.6 368L491.3 331.3z"], + "person-digging": [576, 512, ["digging"], "f85e", "M272 95.93c26.5 0 47.99-21.47 47.99-47.97S298.5 0 272 0C245.5 0 224 21.47 224 47.97S245.5 95.93 272 95.93zM209.7 357.3c-25.75-17.25-52.25-33.24-79.5-48.11L58.62 270.2L1.246 471.1c-4.875 16.1 4.1 34.74 22 39.62s34.63-4.998 39.5-21.99l36.63-128.1l60.63 40.37v78.86c0 17.62 14.38 31.99 32 31.99s32-14.37 32-31.99l.0022-95.93C224 373.2 218.6 363.2 209.7 357.3zM311.1 416c-13.88 0-25.95 8.863-30.33 21.86l-24.75 74.07h319.9l-101.9-206.3c-11.38-22.49-43.1-23.63-56.1-2.01l-31.89 54.21l-65.26-35.64l-24-121.2C288.1 161.3 263.2 127.7 227.1 109.7c-1-.4999-2.125-.625-3.125-1.125c-2.25-1.125-4.752-1.1-7.252-2.625C201.5 99.85 185.2 95.98 168.7 95.98H95.1c-9.25 0-18.05 4.061-24.18 10.93l-55.95 63.92c-.75 .9998-1.5 2.124-2.25 3.249c-8.875 13.1-3 32.87 11.63 40.74l336.6 184.3l-9.837 16.87H311.1zM105.9 204.1l-23.5-12.87l28.13-32.12h34.38L105.9 204.1zM199.5 256.1l34.9-41.28l13.5 67.61L199.5 256.1z"], + "person-dots-from-line": [576, 512, ["diagnoses"], "f470", "M463.1 256c8.75 0 15.1-7.25 15.1-16S472.7 224 463.1 224c-8.75 0-15.1 7.25-15.1 16S455.2 256 463.1 256zM287.1 176c48.5 0 87.1-39.5 87.1-88S336.5 0 287.1 0S200 39.5 200 88S239.5 176 287.1 176zM80 256c8.75 0 15.1-7.25 15.1-16S88.75 224 80 224S64 231.3 64 240S71.25 256 80 256zM75.91 375.1c.6289-.459 41.62-29.26 100.1-50.05L176 432h223.1l-.0004-106.8c58.32 20.8 99.51 49.49 100.1 49.91C508.6 381.1 518.3 384 527.9 384c14.98 0 29.73-7 39.11-20.09c15.41-21.59 10.41-51.56-11.16-66.97c-1.955-1.391-21.1-14.83-51.83-30.85C495.5 279.2 480.7 288 463.1 288c-26.25 0-47.1-21.75-47.1-48c0-3.549 .4648-6.992 1.217-10.33C378.6 217.2 334.4 208 288 208c-59.37 0-114.1 15.01-160.1 32.67C127.6 266.6 106 288 80 288C69.02 288 58.94 284 50.8 277.7c-18.11 10.45-29.25 18.22-30.7 19.26c-21.56 15.41-26.56 45.38-11.16 66.97C24.33 385.5 54.3 390.4 75.91 375.1zM335.1 344c13.25 0 23.1 10.75 23.1 24s-10.75 24-23.1 24c-13.25 0-23.1-10.75-23.1-24S322.7 344 335.1 344zM240 248c13.25 0 23.1 10.75 23.1 24S253.3 296 240 296c-13.25 0-23.1-10.75-23.1-24S226.8 248 240 248zM559.1 464H16c-8.75 0-15.1 7.25-15.1 16l-.0016 16c0 8.75 7.25 16 15.1 16h543.1c8.75 0 15.1-7.25 15.1-16L575.1 480C575.1 471.3 568.7 464 559.1 464z"], + "person-dress": [320, 512, ["female"], "f182", "M112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48zM88 384H70.2C59.28 384 51.57 373.3 55.02 362.9L93.28 248.1L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L58.18 182.3C78.43 148.6 114.9 128 154.2 128H165.8C205.1 128 241.6 148.6 261.8 182.3L315.4 271.5C324.5 286.7 319.6 306.3 304.5 315.4C289.3 324.5 269.7 319.6 260.6 304.5L226.7 248.1L264.1 362.9C268.4 373.3 260.7 384 249.8 384H232V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V384H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480L88 384z"], + "person-dress-burst": [640, 512, [], "e544", "M527.1 48C527.1 74.51 506.5 96 479.1 96C453.5 96 431.1 74.51 431.1 48C431.1 21.49 453.5 0 479.1 0C506.5 0 527.1 21.49 527.1 48zM375 362.9L413.3 248.1L379.4 304.5C370.3 319.6 350.7 324.5 335.5 315.4C320.4 306.3 315.5 286.7 324.6 271.5L378.2 182.3C398.4 148.6 434.9 128 474.2 128H485.8C525.1 128 561.6 148.6 581.8 182.3L635.4 271.5C644.5 286.7 639.6 306.3 624.5 315.4C609.3 324.5 589.7 319.6 580.6 304.5L546.7 248.1L584.1 362.9C588.4 373.3 580.7 384 569.8 384H551.1V480C551.1 497.7 537.7 512 519.1 512C502.3 512 487.1 497.7 487.1 480V384H471.1V480C471.1 497.7 457.7 512 439.1 512C422.3 512 407.1 497.7 407.1 480V384H390.2C379.3 384 371.6 373.3 375 362.9L375 362.9zM220.3 92.05L296.4 68.93C302.7 67.03 309.5 69.14 313.6 74.27C317.7 79.39 318.2 86.49 314.1 92.18L275.5 161.3L330.7 199.3L306.3 239.8L255.8 247.6L261.4 327C261.8 333.6 258.3 339.7 252.4 342.6C246.5 345.4 239.4 344.4 234.6 339.9L175.1 286.1L117.4 339.9C112.6 344.4 105.5 345.4 99.63 342.6C93.73 339.7 90.15 333.6 90.62 327L96.21 247.6L17.55 235.4C11.08 234.4 5.868 229.6 4.41 223.2C2.951 216.8 5.538 210.1 10.94 206.4L76.5 161.3L37.01 92.18C33.76 86.49 34.31 79.39 38.39 74.27C42.48 69.14 49.28 67.03 55.55 68.93L131.7 92.05L161.1 18.09C163.6 11.1 169.4 7.1 175.1 7.1C182.6 7.1 188.4 11.1 190.9 18.09L220.3 92.05z"], + "person-drowning": [576, 512, [], "e545", "M191.1 96.16C191.1 148.8 226.1 195.4 276.3 211.4C316.3 224.2 358.1 225.1 399.1 216.6L504.9 192.8C522.1 188.9 539.3 199.7 543.2 216.9C547.1 234.1 536.3 251.3 519.1 255.2L414.1 279.1C403.6 281.5 392.9 283.3 382.2 284.5L364.5 382.1C350.9 378.9 337.2 372.7 324.8 364.1C302.8 348.6 273.3 348.6 251.2 364.1C234 375.9 213.2 384.5 192 384.5C184.7 384.5 177 383.3 169.2 381.2L190.2 234.5C151.5 200.1 127.1 150.2 127.1 96.16V64C127.1 46.33 142.3 32 159.1 32C177.7 32 191.1 46.33 191.1 64V96.16zM255.1 127.1C255.1 92.65 284.7 63.1 320 63.1C355.3 63.1 384 92.65 384 127.1C384 163.3 355.3 191.1 320 191.1C284.7 191.1 255.1 163.3 255.1 127.1zM384 416C410.9 416 439.4 405.2 461.4 389.9L461.5 389.9C473.4 381.4 489.5 382.1 500.7 391.6C515 403.5 533.2 412.6 551.3 416.8C568.5 420.8 579.2 438.1 575.2 455.3C571.2 472.5 553.1 483.2 536.7 479.2C512.2 473.4 491.9 462.6 478.5 454.2C449.5 469.7 417 480 384 480C352.1 480 323.4 470.1 303.6 461.1C297.7 458.5 292.5 455.8 288 453.4C283.5 455.8 278.3 458.5 272.4 461.1C252.6 470.1 223.9 480 192 480C158.1 480 126.5 469.7 97.5 454.2C84.12 462.6 63.79 473.4 39.27 479.2C22.06 483.2 4.853 472.5 .8422 455.3C-3.169 438.1 7.532 420.8 24.74 416.8C42.84 412.6 60.96 403.5 75.31 391.6C86.46 382.1 102.6 381.4 114.5 389.9L114.6 389.9C136.7 405.2 165.1 416 192 416C219.5 416 247 405.4 269.5 389.9C280.6 382 295.4 382 306.5 389.9C328.1 405.4 356.5 416 384 416H384z"], + "person-falling": [448, 512, [], "e546", "M256 0C273.7 0 288 14.33 288 32V41.84C288 96.45 260.1 146.5 215.5 175.4L215.7 175.8L272.5 255.1H360C375.1 255.1 389.3 263.1 398.4 275.2L441.6 332.8C452.2 346.9 449.3 366.1 435.2 377.6C421.1 388.2 401 385.3 390.4 371.2L352 319.1H254.6L346.9 462.6C356.5 477.5 352.2 497.3 337.4 506.9C322.5 516.5 302.7 512.2 293.1 497.4L132.5 249.2C129.6 258.4 127.1 268.1 127.1 278.2V351.1C127.1 369.7 113.7 383.1 95.1 383.1C78.33 383.1 63.1 369.7 63.1 351.1V278.2C63.1 213 103.6 154.5 164.1 130.3C200.3 115.8 223.1 80.79 223.1 41.84V32C223.1 14.33 238.3 .0003 256 .0003L256 0zM32 80C32 53.49 53.49 32 80 32C106.5 32 128 53.49 128 80C128 106.5 106.5 128 80 128C53.49 128 32 106.5 32 80z"], + "person-falling-burst": [640, 512, [], "e547", "M256 41.84C256 96.45 228.1 146.5 183.5 175.4L183.7 175.8L240.5 255.1H311.1C327.1 255.1 341.3 263.1 350.4 275.2L393.6 332.8C404.2 346.9 401.3 366.1 387.2 377.6C373.1 388.2 353 385.3 342.4 371.2L303.1 319.1H222.6L314.9 462.6C324.5 477.5 320.2 497.3 305.4 506.9C290.5 516.5 270.7 512.2 261.1 497.4L100.5 249.2C97.57 258.4 95.1 268.1 95.1 278.2V351.1C95.1 369.7 81.67 383.1 63.1 383.1C46.33 383.1 31.1 369.7 31.1 351.1V278.2C31.1 213 71.65 154.5 132.1 130.3C168.3 115.8 191.1 80.79 191.1 41.84V32C191.1 14.33 206.3 0 223.1 0C241.7 0 255.1 14.33 255.1 32L256 41.84zM96 79.1C96 106.5 74.51 127.1 48 127.1C21.49 127.1 0 106.5 0 79.1C0 53.49 21.49 31.1 48 31.1C74.51 31.1 96 53.49 96 79.1zM464 286.1L424.7 322.2C423.1 319.3 421.3 316.4 419.2 313.6L382.1 265.3L384.2 247.6L365.8 244.8C351.2 231.5 332.1 223.1 311.1 223.1H292.6C292.5 223.7 292.5 223.4 292.4 223.2C290.1 216.8 293.5 210.1 298.9 206.4L364.5 161.3L325 92.18C321.8 86.49 322.3 79.39 326.4 74.27C330.5 69.14 337.3 67.03 343.6 68.93L419.7 92.05L449.1 18.09C451.6 11.1 457.4 8 464 8C470.6 8 476.4 11.1 478.9 18.09L508.3 92.05L584.4 68.93C590.7 67.03 597.5 69.14 601.6 74.27C605.7 79.39 606.2 86.49 602.1 92.18L563.5 161.3L629.1 206.4C634.5 210.1 637 216.8 635.6 223.2C634.1 229.6 628.9 234.4 622.4 235.4L543.8 247.6L549.4 327C549.8 333.6 546.3 339.7 540.4 342.6C534.5 345.4 527.4 344.4 522.6 339.9L464 286.1z"], + "person-half-dress": [320, 512, [], "e548", "M112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48zM168 128H174.9C208.6 128 239.8 145.7 257.2 174.6L315.4 271.5C324.5 286.7 319.6 306.3 304.5 315.4C289.3 324.5 269.7 319.6 260.6 304.5L232 256.9V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480L168 128zM58.18 182.3C78.06 149.2 113.5 128.8 152 128V480.2C151.9 497.8 137.6 512 120 512C102.3 512 88 497.7 88 480V384H70.2C59.28 384 51.57 373.3 55.02 362.9L93.28 248.1L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L58.18 182.3z"], + "person-harassing": [576, 512, [], "e549", "M144 48C144 21.49 165.5 0 192 0C218.5 0 240 21.49 240 48C240 74.51 218.5 96 192 96C165.5 96 144 74.51 144 48V48zM15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C80.2 145.7 111.4 128 145.1 128H181C209.6 128 236.7 140.7 254.9 162.7L328.6 251.6C339.9 265.2 338 285.3 324.4 296.6C310.8 307.9 290.7 306 279.4 292.4L232 235.3V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V352H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480V256.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4H15.52zM480 240C480 266.5 458.5 288 432 288C405.5 288 384 266.5 384 240C384 213.5 405.5 192 432 192C458.5 192 480 213.5 480 240zM464 344C464 313.1 489.1 288 520 288C550.9 288 576 313.1 576 344V446.1C576 482.5 546.5 512 510.1 512C492.6 512 475.8 505.1 463.4 492.7L408.8 438L380.6 494.3C372.7 510.1 353.5 516.5 337.7 508.6C321.9 500.7 315.5 481.5 323.4 465.7L371.4 369.7C375.1 360.5 384.7 354.1 394.9 352.4C405 350.8 415.4 354.1 422.6 361.4L464 402.7V344zM288 48C288 39.16 295.2 32 304 32H360C368.8 32 376 39.16 376 48C376 56.84 368.8 64 360 64H304C295.2 64 288 56.84 288 48zM335.2 121.7C343.1 125.6 346.3 135.3 342.3 143.2C338.4 151.1 328.7 154.3 320.8 150.3L272.8 126.3C264.9 122.4 261.7 112.7 265.7 104.8C269.6 96.94 279.3 93.74 287.2 97.69L335.2 121.7z"], + "person-hiking": [384, 512, ["hiking"], "f6ec", "M240 96c26.5 0 48-21.5 48-48S266.5 0 240 0C213.5 0 192 21.5 192 48S213.5 96 240 96zM80.01 287.1c7.31 0 13.97-4.762 15.87-11.86L137 117c.3468-1.291 .5125-2.588 .5125-3.866c0-7.011-4.986-13.44-12.39-15.13C118.4 96.38 111.7 95.6 105.1 95.6c-36.65 0-70 23.84-79.32 59.53L.5119 253.3C.1636 254.6-.0025 255.9-.0025 257.2c0 7.003 4.961 13.42 12.36 15.11L76.01 287.5C77.35 287.8 78.69 287.1 80.01 287.1zM368 160h-15.1c-8.875 0-15.1 7.125-15.1 16V192h-34.75l-46.75-46.75C243.4 134.1 228.6 128 212.9 128C185.9 128 162.5 146.3 155.9 172.5L129 280.3C128.4 282.8 128 285.5 128 288.1c0 8.325 3.265 16.44 9.354 22.53l86.62 86.63V480c0 17.62 14.37 32 31.1 32s32-14.38 32-32v-82.75c0-17.12-6.625-33.13-18.75-45.25l-46.87-46.88c.25-.5 .5-.875 .625-1.375l19.1-79.5l22.37 22.38C271.4 252.6 279.5 256 288 256h47.1v240c0 8.875 7.125 16 15.1 16h15.1C376.9 512 384 504.9 384 496v-320C384 167.1 376.9 160 368 160zM81.01 472.3c-.672 2.63-.993 5.267-.993 7.86c0 14.29 9.749 27.29 24.24 30.89C106.9 511.8 109.5 512 112 512c14.37 0 27.37-9.75 30.1-24.25l25.25-101l-52.75-52.75L81.01 472.3z"], + "person-military-pointing": [512, 512, [], "e54a", "M366.7 1.443C376 .6658 384 8.027 384 17.39V47.1C384 56.84 376.8 63.1 368 63.1H216.1C203.2 63.1 192 52.81 192 39C192 25.1 201.1 15.17 214.9 14.09L366.7 1.443zM208 111.1C208 106.5 208.6 101.2 209.6 95.1H366.4C367.5 101.2 368 106.5 368 111.1C368 156.2 332.2 191.1 288 191.1C243.8 191.1 208 156.2 208 111.1V111.1zM313.2 223.1C327.6 223.1 341.6 226.3 354.9 230.5L192 393.4V303.1H40.01C17.92 303.1 .0077 286.1 .0077 263.1C.0077 241.9 17.92 223.1 40.01 223.1H313.2zM430.3 290.8L506.4 419.7C517.7 438.7 511.4 463.2 492.4 474.4C473.3 485.7 448.8 479.4 437.6 460.3L384 369.7V416H214.6L385.7 244.9C403.7 256.3 419.1 271.9 430.3 290.8V290.8zM384 448V480C384 497.7 369.7 512 352 512H224C206.3 512 192 497.7 192 480V448H384z"], + "person-military-rifle": [448, 512, [], "e54b", "M128 39C128 25.1 137.1 15.17 150.9 14.09L302.7 1.443C312 .6658 320 8.027 320 17.39V47.1C320 56.84 312.8 63.1 304 63.1H152.1C139.2 63.1 128 52.81 128 39V39zM302.4 95.1C303.5 101.2 304 106.5 304 111.1C304 156.2 268.2 191.1 224 191.1C179.8 191.1 144 156.2 144 111.1C144 106.5 144.6 101.2 145.6 95.1H302.4zM373.6 460.3L320 369.7V480C320 481.3 319.9 482.5 319.8 483.8L145.5 234.9C162.1 227.8 180.2 223.1 198.8 223.1H249.2C265.1 223.1 280.6 226.8 295 231.9L389.9 67.71C382.2 63.3 379.6 53.51 384 45.86C388.4 38.21 398.2 35.58 405.9 40L433.6 56C441.2 60.42 443.8 70.21 439.4 77.86L383.1 173.9L385.6 174.9C400.9 183.7 406.1 203.3 397.3 218.6L360.6 282C362.6 284.9 364.5 287.8 366.3 290.8L442.4 419.7C453.7 438.7 447.4 463.2 428.4 474.4C409.3 485.7 384.8 479.4 373.6 460.3V460.3zM264 319.1C277.3 319.1 288 309.3 288 295.1C288 282.7 277.3 271.1 264 271.1C250.7 271.1 240 282.7 240 295.1C240 309.3 250.7 319.1 264 319.1zM160 512C142.3 512 128 497.7 128 480V369.7L74.44 460.3C63.21 479.4 38.68 485.7 19.66 474.4C.6381 463.2-5.669 438.7 5.569 419.7L81.7 290.8C91.06 274.1 103.4 261.5 117.7 250.8L299.1 510C295.6 511.3 291.9 512 288 512L160 512z"], + "person-military-to-person": [512, 512, [], "e54c", "M182.2 .0998C191.7-.9534 200 6.466 200 16V30.13C200 38.91 192.9 46.05 184.1 46.13H72.74C63.48 46.04 56 38.52 56 29.24C56 20.64 62.47 13.41 71.02 12.46L182.2 .0998zM192 96C192 131.3 163.3 160 128 160C92.65 160 64 131.3 64 96C64 89.8 64.88 83.8 66.53 78.13H189.5C191.1 83.8 192 89.8 192 96V96zM32 256C32 237.2 40.09 220.3 52.97 208.6L197.2 319.6C195.5 319.9 193.8 320 192 320H64C46.33 320 32 305.7 32 288L32 256zM222.2 298.5L85.05 192.9C88.61 192.3 92.27 191.1 96 191.1H160C195.3 191.1 224 220.7 224 255.1V287.1C224 291.7 223.4 295.2 222.2 298.5V298.5zM320 96C320 60.65 348.7 31.1 384 31.1C419.3 31.1 448 60.65 448 96C448 131.3 419.3 160 384 160C348.7 160 320 131.3 320 96zM416 192C451.3 192 480 220.7 480 256V288C480 305.7 465.7 320 448 320H320C302.3 320 288 305.7 288 288V256C288 220.7 316.7 192 352 192H416zM151.8 506.1C141.8 514.8 126.7 513.8 117.9 503.8C109.2 493.8 110.2 478.7 120.2 469.9L136.1 456L23.1 455.1C10.74 455.1-.0003 445.2 0 431.1C.0003 418.7 10.75 407.1 24 407.1L136.1 408L120.2 394.1C110.2 385.3 109.2 370.2 117.9 360.2C126.7 350.2 141.8 349.2 151.8 357.9L215.8 413.9C221 418.5 224 425.1 224 431.1C224 438.9 221 445.5 215.8 450.1L151.8 506.1zM296.2 413.9L360.2 357.9C370.2 349.2 385.3 350.2 394.1 360.2C402.8 370.2 401.8 385.3 391.8 394.1L375.9 407.1L488 407.1C501.3 407.1 512 418.7 512 431.1C512 445.2 501.3 455.1 488 455.1L375.9 455.1L391.8 469.9C401.8 478.7 402.8 493.8 394.1 503.8C385.3 513.8 370.2 514.8 360.2 506.1L296.2 450.1C290.1 445.5 288 438.9 288 431.1C288 425.1 290.1 418.5 296.2 413.9H296.2z"], + "person-praying": [384, 512, [128720, "pray"], "f683", "M255.1 128c35.38 0 63.1-28.62 63.1-64s-28.62-64-63.1-64S191.1 28.62 191.1 64S220.6 128 255.1 128zM225.4 297.8c14 16.75 39 19.12 56.01 5.25l88.01-72c17-14 19.5-39.25 5.625-56.38c-14-17.12-39.25-19.5-56.38-5.625L261.3 216l-39-46.25c-15.38-18.38-39.13-27.88-64.01-25.38c-24.13 2.5-45.25 16.25-56.38 37l-49.38 92C29.13 317 43.88 369.8 86.76 397.1L131.5 432H40C17.88 432 0 449.9 0 472S17.88 512 40 512h208c34.13 0 53.76-42.75 28.25-68.25L166.4 333.9L201.3 269L225.4 297.8z"], + "person-pregnant": [320, 512, [], "e31e", "M112 48C112 21.49 133.5 0 160 0C186.5 0 208 21.49 208 48C208 74.51 186.5 96 160 96C133.5 96 112 74.51 112 48zM88 382.1C74.2 379.4 64 366.9 64 352V296.9L59.43 304.5C50.33 319.6 30.67 324.5 15.52 315.4C.3696 306.3-4.531 286.7 4.573 271.5L62.85 174.6C77.84 149.6 103.2 133 131.5 128.1C135.6 128.3 139.8 128 144 128H160C161.4 128 162.8 128.1 164.1 128.3C199.8 131.2 229.5 157.6 236.2 193.3L242.3 225.7C286.6 234.3 320 273.2 320 320V352C320 369.7 305.7 384 288 384H232V480C232 497.7 217.7 512 200 512C182.3 512 168 497.7 168 480V384H152V480C152 497.7 137.7 512 120 512C102.3 512 88 497.7 88 480L88 382.1z"], + "person-rays": [512, 512, [], "e54d", "M304 48C304 74.51 282.5 96 256 96C229.5 96 208 74.51 208 48C208 21.49 229.5 0 256 0C282.5 0 304 21.49 304 48zM248 352V480C248 497.7 233.7 512 216 512C198.3 512 184 497.7 184 480V256.9L155.4 304.5C146.3 319.6 126.7 324.5 111.5 315.4C96.37 306.3 91.47 286.7 100.6 271.5L158.8 174.6C176.2 145.7 207.4 128 241.1 128H270.9C304.6 128 335.8 145.7 353.2 174.6L411.4 271.5C420.5 286.7 415.6 306.3 400.5 315.4C385.3 324.5 365.7 319.6 356.6 304.5L328 256.9V480C328 497.7 313.7 512 296 512C278.3 512 264 497.7 264 480V352L248 352zM7.029 7.029C16.4-2.343 31.6-2.343 40.97 7.029L120.1 87.03C130.3 96.4 130.3 111.6 120.1 120.1C111.6 130.3 96.4 130.3 87.03 120.1L7.029 40.97C-2.343 31.6-2.343 16.4 7.029 7.029V7.029zM471 7.029C480.4-2.343 495.6-2.343 504.1 7.029C514.3 16.4 514.3 31.6 504.1 40.97L424.1 120.1C415.6 130.3 400.4 130.3 391 120.1C381.7 111.6 381.7 96.4 391 87.03L471 7.029zM7.029 471L87.03 391C96.4 381.7 111.6 381.7 120.1 391C130.3 400.4 130.3 415.6 120.1 424.1L40.97 504.1C31.6 514.3 16.4 514.3 7.029 504.1C-2.343 495.6-2.343 480.4 7.029 471V471zM391 424.1C381.7 415.6 381.7 400.4 391 391C400.4 381.7 415.6 381.7 424.1 391L504.1 471C514.3 480.4 514.3 495.6 504.1 504.1C495.6 514.3 480.4 514.3 471 504.1L391 424.1z"], + "person-rifle": [576, 512, [], "e54e", "M265.2 192C290.6 192 315 199.1 336 211.9V512H144V337.7L90.44 428.3C79.21 447.4 54.68 453.7 35.66 442.4C16.64 431.2 10.33 406.7 21.57 387.7L97.7 258.8C122.2 217.4 166.7 192 214.8 192L265.2 192zM320 80C320 124.2 284.2 160 240 160C195.8 160 160 124.2 160 80C160 35.82 195.8 .0003 240 .0003C284.2 .0003 320 35.82 320 80zM464 16V132.3C473.6 137.8 480 148.2 480 160V269.3L496 264V208C496 199.2 503.2 192 512 192H528C536.8 192 544 199.2 544 208V292.5C544 299.4 539.6 305.5 533.1 307.6L480 325.3V352H528C536.8 352 544 359.2 544 368V384C544 392.8 536.8 400 528 400H484L507 492.1C509.6 502.2 501.9 512 491.5 512H432C423.2 512 416 504.8 416 496V400H400C382.3 400 368 385.7 368 368V224C368 206.3 382.3 192 400 192V160C400 148.2 406.4 137.8 416 132.3V32C407.2 32 400 24.84 400 16C400 7.164 407.2 0 416 0H448C456.8 0 464 7.164 464 16V16z"], + "person-running": [448, 512, [127939, "running"], "f70c", "M400 224h-44l-26.12-53.25c-12.5-25.5-35.38-44.25-61.75-51L197 98.63C189.5 96.84 181.1 95.97 174.5 95.97c-20.88 0-41.33 6.81-58.26 19.78L76.5 146.3C68.31 152.5 64.01 162 64.01 171.6c0 17.11 13.67 32.02 32.02 32.02c6.808 0 13.67-2.158 19.47-6.616l39.63-30.38c5.92-4.488 13.01-6.787 19.53-6.787c2.017 0 3.981 .2196 5.841 .6623l14.62 4.25l-37.5 87.5C154.1 260.3 152.5 268.8 152.5 277.2c0 22.09 11.49 43.52 31.51 55.29l85 50.13l-27.5 87.75c-.9875 3.174-1.458 6.388-1.458 9.55c0 13.65 8.757 26.31 22.46 30.58C265.6 511.5 268.9 512 272 512c13.62 0 26.25-8.75 30.5-22.5l31.75-101c1.211-4.278 1.796-8.625 1.796-12.93c0-16.57-8.661-32.51-23.55-41.44l-61.13-36.12l31.25-78.38l20.25 41.5C310.9 277.4 327.9 288 345.1 288H400c17.62 0 32-14.38 32-32C432 238.3 417.6 224 400 224zM288 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48S261.5 96 288 96zM129.8 317.5L114.9 352H48c-17.62 0-32 14.38-32 32s14.38 32 32 32h77.5c19.25 0 36.5-11.5 44-29.12l8.875-20.5l-10.75-6.25C150.4 349.9 137.6 334.8 129.8 317.5z"], + "person-shelter": [512, 512, [], "e54f", "M495.9 132.2C505.8 137.9 512 148.5 512 160V480C512 497.7 497.7 512 480 512C462.3 512 448 497.7 448 480V178.6L256 68.86L64 178.6V480C64 497.7 49.67 512 32 512C14.33 512 0 497.7 0 480V160C0 148.5 6.153 137.9 16.12 132.2L240.1 4.216C249.1-1.405 262-1.405 271.9 4.216L495.9 132.2zM216 168C216 145.9 233.9 128 256 128C278.1 128 296 145.9 296 168C296 190.1 278.1 208 256 208C233.9 208 216 190.1 216 168zM224 512C210.7 512 200 501.3 200 488V313.5L173.1 363.4C166.8 375 152.3 379.4 140.6 373.1C128.1 366.8 124.6 352.3 130.9 340.6L168.7 270.3C184.1 241.8 213.9 223.1 246.2 223.1H265.8C298.1 223.1 327.9 241.8 343.3 270.3L381.1 340.6C387.4 352.3 383 366.8 371.4 373.1C359.7 379.4 345.2 375 338.9 363.4L312 313.5V488C312 501.3 301.3 512 288 512C274.7 512 264 501.3 264 488V400H248V488C248 501.3 237.3 512 224 512V512z"], + "person-skating": [448, 512, ["skating"], "f7c5", "M399.1 0c-26.5 0-48.01 21.5-48.01 48S373.5 96 399.1 96C426.5 96 448 74.5 448 48S426.5 0 399.1 0zM399.1 448c-8.751 0-16 7.25-16 16S376.7 480 367.1 480h-96.01c-8.751 0-16 7.25-16 16s7.251 16 16 16h96.01c26.5 0 48.01-21.5 48.01-48C415.1 455.2 408.7 448 399.1 448zM129.1 451.9c-11.34 0-11.19 9.36-22.65 9.36c-4.074 0-8.163-1.516-11.21-4.625l-67.98-67.89c-3.063-3.125-7.165-4.688-11.27-4.688c-4.102 0-8.204 1.562-11.27 4.688C1.562 391.8-.0001 395.9-.0001 400s1.562 8.203 4.688 11.27l67.88 67.98c9.376 9.375 21.59 14 33.96 14c13.23 0 38.57-8.992 38.57-25.36C145.1 456.7 135.2 451.9 129.1 451.9zM173.8 276.8L80.2 370.5c-6.251 6.25-9.376 14.44-9.376 22.62c0 24.75 22.57 32 31.88 32c8.251 0 16.5-3.125 22.63-9.375l91.89-92l-30.13-30.12C182.1 288.6 177.7 282.9 173.8 276.8zM127.1 160h105.5L213.3 177.3c-21.18 18.04-22.31 41.73-22.31 48.65c0 16.93 6.8 33.22 18.68 45.1l78.26 78.25V432c0 17.75 14.25 32 32 32s32-14.25 32-32v-89.38c0-12.62-5.126-25-14.13-33.88l-61.01-61c.5001-.5 1.25-.625 1.75-1.125l82.26-82.38c7.703-7.702 11.76-17.87 11.76-28.25c0-22.04-17.86-39.97-40.01-39.97L127.1 96C110.2 96 95.96 110.2 95.96 128S110.2 160 127.1 160z"], + "person-skiing": [512, 512, [9975, "skiing"], "f7c9", "M432.1 96.02c26.51 0 47.99-21.5 47.99-48.01S458.6 0 432.1 0s-47.98 21.5-47.98 48.01S405.6 96.02 432.1 96.02zM511.1 469.1c0-13.98-11.33-23.95-23.89-23.95c-18.89 0-19.23 19.11-46.15 19.11c-5.476 0-10.87-1.081-15.87-3.389l-135.8-70.26l49.15-73.82c5.446-8.116 8.09-17.39 8.09-26.63c0-12.4-4.776-24.73-14.09-33.9l-40.38-40.49l-106.1-53.1C185.6 165.8 185.4 169 185.4 172.2c0 16.65 6.337 32.78 18.42 44.86l75.03 75.21l-45.88 68.76L34.97 258.8C31.44 257 27.64 256.1 23.93 256.1C9.675 256.1 0 267.8 0 280.1c0 8.673 4.735 17.04 12.96 21.24l392 202.6c11.88 5.501 24.45 8.119 37.08 8.119C480.1 512 511.1 486.7 511.1 469.1zM119.1 91.65L108.5 114.2C114.2 117 120.2 118.4 126.2 118.4c9.153 0 18.1-3.2 25.06-9.102l47.26 23.51c-.125 0-.125 .125-.2501 .25l114.5 56.76l32.51-13l6.376 19.13c4.001 12.13 12.63 22.01 24 27.76l58.14 28.1c4.609 2.287 9.455 3.355 14.26 3.355c18.8 0 31.98-15.43 31.98-31.93c0-11.74-6.461-23.1-17.74-28.7l-52.03-26.1l-17.12-51.15C386.6 98.69 364.2 73.99 333.1 73.99c-7.658 0-15.82 1.504-24.43 4.934L227.4 111.3L164.9 80.33c.009-.3461 .0134-.692 .0134-1.038c0-14.13-7.468-27.7-20.89-34.53L132.9 66.45L98.17 59.43C97.83 59.36 97.53 59.35 97.19 59.35c-2.666 0-5.276 2.177-5.276 5.273c0 1.473 .648 2.936 1.81 3.961L119.1 91.65z"], + "person-skiing-nordic": [576, 512, ["skiing-nordic"], "f7ca", "M336 96C362.5 96 384 74.5 384 48S362.5 0 336 0S288 21.5 288 48S309.5 96 336 96zM552 416c-13.25 0-24 10.75-24 24s-10.75 24-24 24h-69.5L460 285.6c11.75-4.75 20.04-16.31 20.04-29.69c0-17.75-14.38-31.95-32.01-31.95l-43.9-.0393l-26.11-53.22c-12.5-25.5-35.5-44.12-61.75-50.87l-71.22-21.15c-7.475-1.819-15.08-2.693-22.59-2.693c-20.86 0-41.25 6.854-58.16 19.72L124.6 146.2C116.3 152.5 111.1 161.1 111.1 171.6c0 14.71 8.712 21.23 9.031 21.6L66.88 464H24C10.75 464 0 474.8 0 488S10.75 512 24 512h480c39.75 0 72-32.25 72-72C576 426.8 565.3 416 552 416zM291.6 463.9H194.7l43.1-90.97l-21.99-12.1c-12.13-7.25-21.99-16.89-29.49-27.77l-62.48 131.7L99.5 464l52.25-261.4c4.125-1 8.112-2.846 11.74-5.596l39.81-30.45c5.821-4.485 12.86-6.771 19.38-6.771c2.021 0 4.015 .212 5.878 .6556l14.73 4.383L205.8 252.2C202.3 260.3 200.7 268.9 200.7 277.3c0 22.06 11.42 43.37 31.41 55.22l84.97 50.15L291.6 463.9zM402.1 464l-43.58-.125l23.6-75.48c1.221-4.314 1.805-8.69 1.805-13.03c0-16.53-8.558-32.43-23.41-41.34l-61.21-36.1l31.32-78.23l20.26 41.36c8 16.25 24.86 26.89 43.11 26.89L427.3 288L402.1 464z"], + "person-snowboarding": [512, 512, [127938, "snowboarding"], "f7ce", "M460.7 249.6c5.877 4.25 12.47 6.393 19.22 6.393c10.76 0 32.05-8.404 32.05-31.97c0-9.74-4.422-19.36-12.8-25.65l-111.5-83.48c-13.75-10.25-29.04-18.42-45.42-23.79l-63.66-21.23l-26.12-52.12c-5.589-11.17-16.9-17.64-28.63-17.64c-17.8 0-31.99 14.47-31.99 32.01c0 4.803 1.086 9.674 3.374 14.25l29.12 58.12c5.75 11.38 15.55 19.85 27.67 23.98l16.45 5.522L227.3 154.6C205.5 165.5 191.9 187.4 191.9 211.8L191.9 264.9L117.8 289.6C104.4 294.1 95.95 306.5 95.95 319.9c0 12.05 6.004 19.05 10.33 23.09l-38.68-14.14C41.23 319.4 49.11 295 23.97 295c-18.67 0-23.97 17.16-23.97 24.09c0 8.553 13.68 41.32 51.13 54.88l364.1 132.8C425.7 510.2 435.7 512 445.7 512c12.5 0 24.97-2.732 36.47-8.232c8.723-3.997 13.85-12.71 13.85-21.77c0-18.67-17.15-23.96-24.06-23.96c-3.375 0-6.73 .7505-9.998 2.248c-5.111 2.486-10.64 3.702-16.21 3.702c-4.511 0-9.049-.7978-13.41-2.364l-90.68-33.12c8.625-4.125 15.53-11.76 17.78-21.89l21.88-101.1c.7086-3.335 1.05-6.668 1.05-10c0-14.91-6.906-29.31-19.17-38.4l-52.01-39l66.01-30.5L460.7 249.6zM316.3 301.3l-19.66 92c-.4205 1.997-.5923 3.976-.5923 5.911c0 4.968 1.264 9.691 3.333 14.01l-169.5-61.49c2.625-.25 5.492-.4448 8.117-1.32l85-28.38c19.63-6.5 32.77-24.73 32.77-45.48l0-20.53L316.3 301.3zM431.9 95.99c26.5 0 48-21.5 48-47.1S458.4 0 431.9 0s-48 21.5-48 47.1S405.4 95.99 431.9 95.99z"], + "person-swimming": [576, 512, [127946, "swimmer"], "f5c4", "M192.4 320c63.38 0 54.09-39.67 95.33-40.02c42.54 .3672 31.81 40.02 95.91 40.02c39.27 0 55.72-18.41 62.21-24.83l-140.4-116.1c3.292-1.689 31.66-18.2 75.25-18.2c12.57 0 25.18 1.397 37.53 4.21l38.59 8.844c2.412 .5592 4.824 .8272 7.2 .8272c15.91 0 31.96-12.81 31.96-32.04c0-14.58-10.03-27.77-24.84-31.16l-38.59-8.844c-17.06-3.904-34.46-5.837-51.81-5.837c-120.1 0-177.4 85.87-178.1 88.02L179.1 213.3C158.1 241.3 147.4 273.8 145 307.7C157.5 315.4 174.3 320 192.4 320zM576 397c0-15.14-10.82-28.59-26.25-31.42c-48.52-8.888-45.5-29.48-69.6-29.48c-25.02 0-31.19 31.79-96.18 31.79c-48.59 0-72.72-22.06-73.38-22.62c-6.141-6.157-14.26-9.188-22.42-9.188c-24.75 0-31.59 31.81-96.2 31.81c-48.59 0-72.69-22.03-73.41-22.59c-6.125-6.157-14.3-9.245-22.46-9.245c-8.072 0-16.12 3.026-22.38 8.901c-29.01 26.25-73.75 12.54-73.75 52.08c0 16.08 12.77 32.07 31.71 32.07c9.77 0 39.65-7.34 64.26-21.84C115.5 418.8 147.4 431.1 192 431.1s76.5-13.12 96-24.66c19.53 11.53 51.47 24.59 96 24.59c44.59 0 76.56-13.09 96.06-24.62c24.71 14.57 54.74 21.83 64.24 21.83C563.2 429.1 576 413.3 576 397zM95.1 224c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C31.1 195.3 60.65 224 95.1 224z"], + "person-through-window": [640, 512, [], "e5a9", "M191.1 128C191.1 154.5 170.5 176 143.1 176C117.5 176 95.1 154.5 95.1 128C95.1 101.5 117.5 80 143.1 80C170.5 80 191.1 101.5 191.1 128zM385 336H310.5L394.6 462.2C404.4 476.1 400.5 496.8 385.8 506.6C371 516.4 351.2 512.5 341.4 497.8L308.2 448H48C21.49 448 0 426.5 0 400V48C0 21.49 21.49 0 48 0H592C618.5 0 640 21.49 640 48V400C640 426.5 618.5 448 592 448H421.9L379.2 384H425L385 336zM63.1 64V384H127.1C127.1 384 127.1 384 127.1 384V310.2C127.1 245 167.6 186.5 228.1 162.3C264.3 147.8 287.1 112.8 287.1 73.84V64H63.1zM352 64V73.84C352 128.5 324.1 178.5 279.5 207.4C279.8 207.9 280.1 208.4 280.4 208.9L321.4 271.1H392.5C406.8 271.1 420.3 278.3 429.4 289.3L508.3 384H576V64H352zM265.5 384L196.7 280.7C193.6 290 191.1 299.1 191.1 310.2V383.1C191.1 383.1 191.1 384 191.1 383.1L265.5 384z"], + "person-walking": [320, 512, [128694, "walking"], "f554", "M256 48C256 74.51 234.5 96 208 96C181.5 96 160 74.51 160 48C160 21.49 181.5 0 208 0C234.5 0 256 21.49 256 48zM126.5 199.3C125.6 199.7 124.6 200.1 123.7 200.5L112.7 205.4C97.41 212.2 85.42 224.6 79.22 240.1L77.71 243.9C71.15 260.3 52.53 268.3 36.12 261.7C19.71 255.1 11.73 236.5 18.29 220.1L19.8 216.3C32.19 185.4 56.18 160.5 86.66 146.9L97.66 142C118.5 132.8 140.1 128 163.7 128C208.3 128 248.5 154.8 265.6 195.9L280.1 232.7L302.3 243.4C318.1 251.3 324.5 270.5 316.6 286.3C308.7 302.1 289.5 308.5 273.7 300.6L247 287.3C236.7 282.1 228.6 273.4 224.2 262.8L214.6 239.8L195.3 305.3L244.8 359.4C250.2 365.3 254.1 372.4 256 380.2L279 472.2C283.3 489.4 272.9 506.8 255.8 511C238.6 515.3 221.2 504.9 216.1 487.8L194.9 399.6L124.3 322.5C109.5 306.4 103.1 283.9 109.6 262.8L126.5 199.3zM68.73 398L93.69 335.6C95.84 338.6 98.16 341.4 100.7 344.2L141.4 388.6L126.9 424.8C124.5 430.9 120.9 436.4 116.3 440.9L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L68.73 398z"], + "person-walking-arrow-loop-left": [640, 512, [], "e551", "M160 48C160 21.49 181.5 0 208 0C234.5 0 256 21.49 256 48C256 74.51 234.5 96 208 96C181.5 96 160 74.51 160 48V48zM112.7 205.4C97.41 212.2 85.42 224.6 79.22 240.1L77.71 243.9C71.15 260.3 52.53 268.3 36.12 261.7C19.71 255.1 11.73 236.5 18.29 220.1L19.8 216.3C32.19 185.4 56.18 160.5 86.66 146.9L97.66 142C118.5 132.8 140.1 128 163.7 128C208.3 128 248.5 154.8 265.6 195.9L280.1 232.7L302.3 243.4C318.1 251.3 324.5 270.5 316.6 286.3C308.7 302.1 289.5 308.5 273.7 300.6L247 287.3C236.7 282.1 228.6 273.4 224.2 262.8L214.6 239.8L195.3 305.3L244.8 359.4C250.2 365.3 254.1 372.4 256 380.2L279 472.2C283.3 489.4 272.9 506.8 255.8 511C238.6 515.3 221.2 504.9 216.1 487.8L194.9 399.6L124.3 322.5C109.5 306.4 103.1 283.9 109.6 262.8L126.5 199.3C125.6 199.7 124.6 200.1 123.7 200.5L112.7 205.4zM100.7 344.2L141.4 388.6L126.9 424.8C124.5 430.9 120.9 436.4 116.3 440.9L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L68.73 398L93.69 335.6C95.84 338.6 98.17 341.4 100.7 344.2H100.7zM361.4 374.6C348.9 362.1 348.9 341.9 361.4 329.4L441.4 249.4C453.9 236.9 474.1 236.9 486.6 249.4C499.1 261.9 499.1 282.1 486.6 294.6L461.3 320H480C533 320 576 277 576 224C576 170.1 533 128 480 128H352C334.3 128 319.1 113.7 319.1 96C319.1 78.33 334.3 64 352 64H480C568.4 64 640 135.6 640 224C640 312.4 568.4 384 480 384H461.3L486.6 409.4C499.1 421.9 499.1 442.1 486.6 454.6C474.1 467.1 453.9 467.1 441.4 454.6L361.4 374.6z"], + "person-walking-arrow-right": [640, 512, [], "e552", "M160 48C160 21.49 181.5 0 208 0C234.5 0 256 21.49 256 48C256 74.51 234.5 96 208 96C181.5 96 160 74.51 160 48V48zM112.7 205.4C97.41 212.2 85.42 224.6 79.22 240.1L77.71 243.9C71.15 260.3 52.53 268.3 36.12 261.7C19.71 255.1 11.73 236.5 18.29 220.1L19.8 216.3C32.19 185.4 56.18 160.5 86.66 146.9L97.66 142C118.5 132.8 140.1 128 163.7 128C208.3 128 248.5 154.8 265.6 195.9L280.1 232.7L302.3 243.4C318.1 251.3 324.5 270.5 316.6 286.3C308.7 302.1 289.5 308.5 273.7 300.6L247 287.3C236.7 282.1 228.6 273.4 224.2 262.8L214.6 239.8L195.3 305.3L244.8 359.4C250.2 365.3 254.1 372.4 256 380.2L279 472.2C283.3 489.4 272.9 506.8 255.8 511C238.6 515.3 221.2 504.9 216.1 487.8L194.9 399.6L124.3 322.5C109.5 306.4 103.1 283.9 109.6 262.8L126.5 199.3C125.6 199.7 124.6 200.1 123.7 200.5L112.7 205.4zM100.7 344.2L141.4 388.6L126.9 424.8C124.5 430.9 120.9 436.4 116.3 440.9L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L68.73 398L93.69 335.6C95.84 338.6 98.17 341.4 100.7 344.2H100.7zM630.6 233.4C643.1 245.9 643.1 266.1 630.6 278.6L550.6 358.6C538.1 371.1 517.9 371.1 505.4 358.6C492.9 346.1 492.9 325.9 505.4 313.4L530.7 288H384C366.3 288 352 273.7 352 256C352 238.3 366.3 224 384 224H530.7L505.4 198.6C492.9 186.1 492.9 165.9 505.4 153.4C517.9 140.9 538.1 140.9 550.6 153.4L630.6 233.4z"], + "person-walking-dashed-line-arrow-right": [640, 512, [], "e553", "M160 48C160 21.49 181.5 0 208 0C234.5 0 256 21.49 256 48C256 74.51 234.5 96 208 96C181.5 96 160 74.51 160 48V48zM112.7 205.4C97.41 212.2 85.42 224.6 79.22 240.1L77.71 243.9C71.15 260.3 52.53 268.3 36.12 261.7C19.71 255.1 11.73 236.5 18.29 220.1L19.8 216.3C32.19 185.4 56.18 160.5 86.66 146.9L97.66 142C118.5 132.8 140.1 128 163.7 128C208.3 128 248.5 154.8 265.6 195.9L280.1 232.7L302.3 243.4C318.1 251.3 324.5 270.5 316.6 286.3C308.7 302.1 289.5 308.5 273.7 300.6L247 287.3C236.7 282.1 228.6 273.4 224.2 262.8L214.6 239.8L195.3 305.3L244.8 359.4C250.2 365.3 254.1 372.4 256 380.2L279 472.2C283.3 489.4 272.9 506.8 255.8 511C238.6 515.3 221.2 504.9 216.1 487.8L194.9 399.6L124.3 322.5C109.5 306.4 103.1 283.9 109.6 262.8L126.5 199.3C125.6 199.7 124.6 200.1 123.7 200.5L112.7 205.4zM100.7 344.2L141.4 388.6L126.9 424.8C124.5 430.9 120.9 436.4 116.3 440.9L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L68.73 398L93.69 335.6C95.84 338.6 98.17 341.4 100.7 344.2H100.7zM630.6 233.4C643.1 245.9 643.1 266.1 630.6 278.6L550.6 358.6C538.1 371.1 517.9 371.1 505.4 358.6C492.9 346.1 492.9 325.9 505.4 313.4L530.7 288H384C366.3 288 352 273.7 352 256C352 238.3 366.3 224 384 224H530.7L505.4 198.6C492.9 186.1 492.9 165.9 505.4 153.4C517.9 140.9 538.1 140.9 550.6 153.4L630.6 233.4zM392 0C405.3 0 416 10.75 416 24V72C416 85.25 405.3 96 392 96C378.7 96 368 85.25 368 72V24C368 10.75 378.7 0 392 0zM416 168C416 181.3 405.3 192 392 192C378.7 192 368 181.3 368 168V152C368 138.7 378.7 128 392 128C405.3 128 416 138.7 416 152V168zM392 320C405.3 320 416 330.7 416 344V360C416 373.3 405.3 384 392 384C378.7 384 368 373.3 368 360V344C368 330.7 378.7 320 392 320zM416 488C416 501.3 405.3 512 392 512C378.7 512 368 501.3 368 488V440C368 426.7 378.7 416 392 416C405.3 416 416 426.7 416 440V488z"], + "person-walking-luggage": [512, 512, [], "e554", "M352 48C352 21.49 373.5 0 400 0C426.5 0 448 21.49 448 48C448 74.51 426.5 96 400 96C373.5 96 352 74.51 352 48zM304.6 205.4C289.4 212.2 277.4 224.6 271.2 240.1L269.7 243.9C263.1 260.3 244.5 268.3 228.1 261.7C211.7 255.1 203.7 236.5 210.3 220.1L211.8 216.3C224.2 185.4 248.2 160.5 278.7 146.9L289.7 142C310.5 132.8 332.1 128 355.7 128C400.3 128 440.5 154.8 457.6 195.9L472.1 232.7L494.3 243.4C510.1 251.3 516.5 270.5 508.6 286.3C500.7 302.1 481.5 308.5 465.7 300.6L439 287.3C428.7 282.1 420.6 273.4 416.2 262.8L406.6 239.8L387.3 305.3L436.8 359.4C442.2 365.3 446.1 372.4 448 380.2L471 472.2C475.3 489.4 464.9 506.8 447.8 511C430.6 515.3 413.2 504.9 408.1 487.8L386.9 399.6L316.3 322.5C301.5 306.4 295.1 283.9 301.6 262.8L318.5 199.3C317.6 199.7 316.6 200.1 315.7 200.5L304.6 205.4zM292.7 344.2L333.4 388.6L318.9 424.8C316.5 430.9 312.9 436.4 308.3 440.9L246.6 502.6C234.1 515.1 213.9 515.1 201.4 502.6C188.9 490.1 188.9 469.9 201.4 457.4L260.7 398L285.7 335.6C287.8 338.6 290.2 341.4 292.7 344.2H292.7zM223.1 274.1C231.7 278.6 234.3 288.3 229.9 295.1L186.1 371.8C185.4 374.5 184.3 377.2 182.9 379.7L118.9 490.6C110 505.9 90.44 511.1 75.14 502.3L19.71 470.3C4.407 461.4-.8371 441.9 7.999 426.6L71.1 315.7C80.84 300.4 100.4 295.2 115.7 303.1L170.1 335.4L202.1 279.1C206.6 272.3 216.3 269.7 223.1 274.1H223.1z"], + "person-walking-with-cane": [448, 512, ["blind"], "f29d", "M445.2 486.1l-117.3-172.6c-3.002 4.529-6.646 8.652-11.12 12c-4.414 3.318-9.299 5.689-14.43 7.307l116.4 171.3c3.094 4.547 8.127 7.008 13.22 7.008c3.125 0 6.247-.8984 8.997-2.773C448.3 504.2 450.2 494.3 445.2 486.1zM143.1 95.1c26.51 0 48.01-21.49 48.01-47.1S170.5 0 144 0S96 21.49 96 48S117.5 95.1 143.1 95.1zM96.01 348.1l-31.03 124.2c-4.312 17.16 6.125 34.53 23.28 38.81C90.86 511.7 93.48 512 96.04 512c14.34 0 27.38-9.703 31-24.23l22.04-88.18L96.01 346.5V348.1zM313.6 268.8l-76.78-102.4C218.8 142.3 190.1 128 160 128L135.6 127.1c-36.59 0-69.5 20.33-85.87 53.06L3.387 273.7C-4.518 289.5 1.887 308.7 17.7 316.6c4.594 2.297 9.469 3.375 14.28 3.375c11.75 0 23.03-6.469 28.66-17.69l35.38-70.76v56.45c0 8.484 3.375 16.62 9.375 22.63l86.63 86.63v82.75c0 17.67 14.31 32 32 32c17.69 0 32-14.33 32-32v-82.75c0-17.09-6.656-33.16-18.75-45.25L192 306.8V213.3l70.38 93.88c10.59 14.11 30.62 16.98 44.78 6.406C321.3 303 324.2 282.9 313.6 268.8z"], + "peseta-sign": [384, 512, [], "e221", "M192 32C269.4 32 333.1 86.97 348.8 160H352C369.7 160 384 174.3 384 192C384 209.7 369.7 224 352 224H348.8C333.1 297 269.4 352 192 352H96V448C96 465.7 81.67 480 64 480C46.33 480 32 465.7 32 448V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160V64C32 46.33 46.33 32 64 32H192zM282.5 160C269.4 122.7 233.8 96 192 96H96V160H282.5zM96 224V288H192C233.8 288 269.4 261.3 282.5 224H96z"], + "peso-sign": [384, 512, [], "e222", "M176 32C244.4 32 303.7 71.01 332.8 128H352C369.7 128 384 142.3 384 160C384 177.7 369.7 192 352 192H351.3C351.8 197.3 352 202.6 352 208C352 213.4 351.8 218.7 351.3 224H352C369.7 224 384 238.3 384 256C384 273.7 369.7 288 352 288H332.8C303.7 344.1 244.4 384 176 384H96V448C96 465.7 81.67 480 64 480C46.33 480 32 465.7 32 448V288C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224V192C14.33 192 0 177.7 0 160C0 142.3 14.33 128 32 128V64C32 46.33 46.33 32 64 32H176zM254.4 128C234.2 108.2 206.5 96 176 96H96V128H254.4zM96 192V224H286.9C287.6 218.8 288 213.4 288 208C288 202.6 287.6 197.2 286.9 192H96zM254.4 288H96V320H176C206.5 320 234.2 307.8 254.4 288z"], + "phone": [512, 512, [128379, 128222], "f095", "M511.2 387l-23.25 100.8c-3.266 14.25-15.79 24.22-30.46 24.22C205.2 512 0 306.8 0 54.5c0-14.66 9.969-27.2 24.22-30.45l100.8-23.25C139.7-2.602 154.7 5.018 160.8 18.92l46.52 108.5c5.438 12.78 1.77 27.67-8.98 36.45L144.5 207.1c33.98 69.22 90.26 125.5 159.5 159.5l44.08-53.8c8.688-10.78 23.69-14.51 36.47-8.975l108.5 46.51C506.1 357.2 514.6 372.4 511.2 387z"], + "phone-flip": [512, 512, [128381, "phone-alt"], "f879", "M18.92 351.2l108.5-46.52c12.78-5.531 27.77-1.801 36.45 8.98l44.09 53.82c69.25-34 125.5-90.31 159.5-159.5l-53.81-44.04c-10.75-8.781-14.41-23.69-8.974-36.47l46.51-108.5c6.094-13.91 21.1-21.52 35.79-18.11l100.8 23.25c14.25 3.25 24.22 15.8 24.22 30.46c0 252.3-205.2 457.5-457.5 457.5c-14.67 0-27.18-9.968-30.45-24.22l-23.25-100.8C-2.571 372.4 5.018 357.2 18.92 351.2z"], + "phone-slash": [640, 512, [], "f3dd", "M271.1 367.5L227.9 313.7c-8.688-10.78-23.69-14.51-36.47-8.974l-108.5 46.51c-13.91 6-21.49 21.19-18.11 35.79l23.25 100.8C91.32 502 103.8 512 118.5 512c107.4 0 206.1-37.46 284.2-99.65l-88.75-69.56C300.6 351.9 286.6 360.3 271.1 367.5zM630.8 469.1l-159.6-125.1c65.03-78.97 104.7-179.5 104.7-289.5c0-14.66-9.969-27.2-24.22-30.45L451 .8125c-14.69-3.406-29.73 4.213-35.82 18.12l-46.52 108.5c-5.438 12.78-1.771 27.67 8.979 36.45l53.82 44.08C419.2 232.1 403.9 256.2 386.2 277.4L38.81 5.111C34.41 1.673 29.19 0 24.03 0C16.91 0 9.84 3.158 5.121 9.189c-8.188 10.44-6.37 25.53 4.068 33.7l591.1 463.1c10.5 8.203 25.57 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "phone-volume": [512, 512, ["volume-control-phone"], "f2a0", "M284.6 181.9c-10.28-8.344-25.41-6.875-33.75 3.406C242.4 195.6 243.9 210.7 254.2 219.1c11.31 9.25 17.81 22.69 17.81 36.87c0 14.19-6.5 27.62-17.81 36.87c-10.28 8.406-11.78 23.53-3.375 33.78c4.719 5.812 11.62 8.812 18.56 8.812c5.344 0 10.75-1.781 15.19-5.406c22.53-18.44 35.44-45.4 35.44-74.05S307.1 200.4 284.6 181.9zM345.1 107.1c-10.22-8.344-25.34-6.907-33.78 3.343c-8.406 10.25-6.906 25.37 3.344 33.78c33.88 27.78 53.31 68.18 53.31 110.9s-19.44 83.09-53.31 110.9c-10.25 8.406-11.75 23.53-3.344 33.78c4.75 5.781 11.62 8.781 18.56 8.781c5.375 0 10.75-1.781 15.22-5.438C390.2 367.1 416 313.1 416 255.1S390.2 144.9 345.1 107.1zM406.4 33.15c-10.22-8.344-25.34-6.875-33.78 3.344c-8.406 10.25-6.906 25.37 3.344 33.78C431.9 116.1 464 183.8 464 255.1s-32.09 139.9-88.06 185.7c-10.25 8.406-11.75 23.53-3.344 33.78c4.75 5.781 11.62 8.781 18.56 8.781c5.375 0 10.75-1.781 15.22-5.438C473.5 423.8 512 342.6 512 255.1S473.5 88.15 406.4 33.15zM151.3 174.6C161.1 175.6 172.1 169.5 176 159.6l33.75-84.38C214 64.35 209.1 51.1 200.2 45.86l-67.47-42.17C123.2-2.289 110.9-.8945 102.9 7.08C-34.32 144.3-34.31 367.7 102.9 504.9c7.982 7.984 20.22 9.379 29.75 3.402l67.48-42.19c9.775-6.104 13.9-18.47 9.598-29.3L176 352.5c-3.945-9.963-14.14-16.11-24.73-14.97l-53.24 5.314C78.89 286.7 78.89 225.4 98.06 169.3L151.3 174.6z"], + "photo-film": [640, 512, ["photo-video"], "f87c", "M352 432c0 8.836-7.164 16-16 16H176c-8.838 0-16-7.164-16-16L160 128H48C21.49 128 .0003 149.5 .0003 176v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48L512 384h-160L352 432zM104 439c0 4.969-4.031 9-9 9h-30c-4.969 0-9-4.031-9-9v-30c0-4.969 4.031-9 9-9h30c4.969 0 9 4.031 9 9V439zM104 335c0 4.969-4.031 9-9 9h-30c-4.969 0-9-4.031-9-9v-30c0-4.969 4.031-9 9-9h30c4.969 0 9 4.031 9 9V335zM104 231c0 4.969-4.031 9-9 9h-30c-4.969 0-9-4.031-9-9v-30C56 196 60.03 192 65 192h30c4.969 0 9 4.031 9 9V231zM408 409c0-4.969 4.031-9 9-9h30c4.969 0 9 4.031 9 9v30c0 4.969-4.031 9-9 9h-30c-4.969 0-9-4.031-9-9V409zM591.1 0H239.1C213.5 0 191.1 21.49 191.1 48v256c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-256C640 21.49 618.5 0 591.1 0zM303.1 64c17.68 0 32 14.33 32 32s-14.32 32-32 32C286.3 128 271.1 113.7 271.1 96S286.3 64 303.1 64zM574.1 279.6C571.3 284.8 565.9 288 560 288H271.1C265.1 288 260.5 284.6 257.7 279.3C255 273.9 255.5 267.4 259.1 262.6l70-96C332.1 162.4 336.9 160 341.1 160c5.11 0 9.914 2.441 12.93 6.574l22.35 30.66l62.74-94.11C442.1 98.67 447.1 96 453.3 96c5.348 0 10.34 2.672 13.31 7.125l106.7 160C576.6 268 576.9 274.3 574.1 279.6z"], + "piggy-bank": [576, 512, [], "f4d3", "M400 96L399.1 96.66C394.7 96.22 389.4 96 384 96H256C239.5 96 223.5 98.08 208.2 102C208.1 100 208 98.02 208 96C208 42.98 250.1 0 304 0C357 0 400 42.98 400 96zM384 128C387.5 128 390.1 128.1 394.4 128.3C398.7 128.6 402.9 129 407 129.6C424.6 109.1 450.8 96 480 96H512L493.2 171.1C509.1 185.9 521.9 203.9 530.7 224H544C561.7 224 576 238.3 576 256V352C576 369.7 561.7 384 544 384H512C502.9 396.1 492.1 406.9 480 416V480C480 497.7 465.7 512 448 512H416C398.3 512 384 497.7 384 480V448H256V480C256 497.7 241.7 512 224 512H192C174.3 512 160 497.7 160 480V416C125.1 389.8 101.3 349.8 96.79 304H68C30.44 304 0 273.6 0 236C0 198.4 30.44 168 68 168H72C85.25 168 96 178.7 96 192C96 205.3 85.25 216 72 216H68C56.95 216 48 224.1 48 236C48 247 56.95 256 68 256H99.2C111.3 196.2 156.9 148.5 215.5 133.2C228.4 129.8 241.1 128 256 128H384zM424 240C410.7 240 400 250.7 400 264C400 277.3 410.7 288 424 288C437.3 288 448 277.3 448 264C448 250.7 437.3 240 424 240z"], + "pills": [576, 512, [], "f484", "M112 32C50.12 32 0 82.12 0 143.1v223.1c0 61.88 50.12 111.1 112 111.1s112-50.12 112-111.1V143.1C224 82.12 173.9 32 112 32zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48V256zM299.8 226.2c-3.5-3.5-9.5-3-12.38 .875c-45.25 62.5-40.38 150.1 15.88 206.4c56.38 56.25 144 61.25 206.5 15.88c4-2.875 4.249-8.75 .75-12.25L299.8 226.2zM529.5 207.2c-56.25-56.25-143.9-61.13-206.4-15.87c-4 2.875-4.375 8.875-.875 12.38l210.9 210.7c3.5 3.5 9.375 3.125 12.25-.75C590.8 351.1 585.9 263.6 529.5 207.2z"], + "pizza-slice": [512, 512, [], "f818", "M100.4 112.3L.5101 491.7c-1.375 5.625 .1622 11.6 4.287 15.6c4.127 4.125 10.13 5.744 15.63 4.119l379.1-105.1C395.3 231.4 276.5 114.1 100.4 112.3zM127.1 416c-17.62 0-32-14.38-32-31.1c0-17.62 14.39-32 32.01-32c17.63 0 32 14.38 32 31.1C160 401.6 145.6 416 127.1 416zM175.1 271.1c-17.63 0-32-14.38-32-32c0-17.62 14.38-31.1 32-31.1c17.62 0 32 14.38 32 31.1C208 257.6 193.6 271.1 175.1 271.1zM272 367.1c-17.62 0-32-14.38-32-31.1c0-17.62 14.38-32 32-32c17.63 0 32 14.38 32 32C304 353.6 289.6 367.1 272 367.1zM158.9 .1406c-16.13-1.5-31.25 8.501-35.38 24.12L108.7 80.52c187.6 5.5 314.5 130.6 322.5 316.1l56.88-15.75c15.75-4.375 25.5-19.62 23.63-35.87C490.9 165.1 340.8 17.39 158.9 .1406z"], + "place-of-worship": [640, 512, [], "f67f", "M233.4 86.63L308.7 11.32C314.9 5.067 325.1 5.067 331.3 11.32L406.6 86.63C412.6 92.63 416 100.8 416 109.3V217.6L456.7 242C471.2 250.7 480 266.3 480 283.2V512H384V416C384 380.7 355.3 352 319.1 352C284.7 352 255.1 380.7 255.1 416V512H159.1V283.2C159.1 266.3 168.8 250.7 183.3 242L223.1 217.6V109.3C223.1 100.8 227.4 92.63 233.4 86.63H233.4zM24.87 330.3L128 273.6V512H48C21.49 512 0 490.5 0 464V372.4C0 354.9 9.53 338.8 24.87 330.3V330.3zM592 512H512V273.6L615.1 330.3C630.5 338.8 640 354.9 640 372.4V464C640 490.5 618.5 512 592 512V512z"], + "plane": [576, 512, [], "f072", "M482.3 192C516.5 192 576 221 576 256C576 292 516.5 320 482.3 320H365.7L265.2 495.9C259.5 505.8 248.9 512 237.4 512H181.2C170.6 512 162.9 501.8 165.8 491.6L214.9 320H112L68.8 377.6C65.78 381.6 61.04 384 56 384H14.03C6.284 384 0 377.7 0 369.1C0 368.7 .1818 367.4 .5398 366.1L32 256L.5398 145.9C.1818 144.6 0 143.3 0 142C0 134.3 6.284 128 14.03 128H56C61.04 128 65.78 130.4 68.8 134.4L112 192H214.9L165.8 20.4C162.9 10.17 170.6 0 181.2 0H237.4C248.9 0 259.5 6.153 265.2 16.12L365.7 192H482.3z"], + "plane-arrival": [640, 512, [128748], "f5af", "M.2528 166.9L.0426 67.99C.0208 57.74 9.508 50.11 19.51 52.34L55.07 60.24C65.63 62.58 74.29 70.11 78.09 80.24L95.1 127.1L223.3 165.6L181.8 20.4C178.9 10.18 186.6 .001 197.2 .001H237.3C248.8 .001 259.5 6.236 265.2 16.31L374.2 210.2L481.5 241.8C497.4 246.5 512.2 254.3 525.2 264.7L559.6 292.2C583.7 311.4 577.7 349.5 548.9 360.5C507.7 376.1 462.7 378.5 420.1 367.4L121.7 289.8C110.6 286.9 100.5 281.1 92.4 272.9L9.536 189.4C3.606 183.4 .2707 175.3 .2528 166.9V166.9zM608 448C625.7 448 640 462.3 640 480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H608zM192 368C192 385.7 177.7 400 160 400C142.3 400 128 385.7 128 368C128 350.3 142.3 336 160 336C177.7 336 192 350.3 192 368zM224 384C224 366.3 238.3 352 256 352C273.7 352 288 366.3 288 384C288 401.7 273.7 416 256 416C238.3 416 224 401.7 224 384z"], + "plane-circle-check": [640, 512, [], "e555", "M320 93.68V178.3L397.1 222.4C350.6 254 320 307.4 320 368C320 422.2 344.5 470.7 383.1 502.1C381 508.3 375.9 512 369.1 512C368.7 512 367.4 511.8 366.1 511.5L256 480L145.9 511.5C144.6 511.8 143.3 512 142 512C134.3 512 128 505.7 128 497.1V456C128 450.1 130.4 446.2 134.4 443.2L192 400V329.1L20.4 378.2C10.17 381.1 0 373.4 0 362.8V297.3C0 291.5 3.076 286.2 8.062 283.4L192 178.3V93.68C192 59.53 221 0 256 0C292 0 320 59.53 320 93.68H320zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "plane-circle-exclamation": [640, 512, [], "e556", "M320 93.68V178.3L397.1 222.4C350.6 254 320 307.4 320 368C320 422.2 344.5 470.7 383.1 502.1C381 508.3 375.9 512 369.1 512C368.7 512 367.4 511.8 366.1 511.5L256 480L145.9 511.5C144.6 511.8 143.3 512 142 512C134.3 512 128 505.7 128 497.1V456C128 450.1 130.4 446.2 134.4 443.2L192 400V329.1L20.4 378.2C10.17 381.1 0 373.4 0 362.8V297.3C0 291.5 3.076 286.2 8.062 283.4L192 178.3V93.68C192 59.53 221 0 256 0C292 0 320 59.53 320 93.68H320zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "plane-circle-xmark": [640, 512, [], "e557", "M320 93.68V178.3L397.1 222.4C350.6 254 320 307.4 320 368C320 422.2 344.5 470.7 383.1 502.1C381 508.3 375.9 512 369.1 512C368.7 512 367.4 511.8 366.1 511.5L256 480L145.9 511.5C144.6 511.8 143.3 512 142 512C134.3 512 128 505.7 128 497.1V456C128 450.1 130.4 446.2 134.4 443.2L192 400V329.1L20.4 378.2C10.17 381.1 0 373.4 0 362.8V297.3C0 291.5 3.076 286.2 8.062 283.4L192 178.3V93.68C192 59.53 221 0 256 0C292 0 320 59.53 320 93.68H320zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368L555.3 331.3z"], + "plane-departure": [640, 512, [128747], "f5b0", "M484.6 62C502.6 52.8 522.6 48 542.8 48H600.2C627.2 48 645.9 74.95 636.4 100.2C618.2 148.9 582.1 188.9 535.6 212.2L262.8 348.6C258.3 350.8 253.4 352 248.4 352H110.7C101.4 352 92.5 347.9 86.42 340.8L13.34 255.6C6.562 247.7 9.019 235.5 18.33 230.8L50.49 214.8C59.05 210.5 69.06 210.2 77.8 214.1L135.1 239.1L234.6 189.7L87.64 95.2C77.21 88.49 78.05 72.98 89.14 67.43L135 44.48C150.1 36.52 169.5 35.55 186.1 41.8L381 114.9L484.6 62zM0 480C0 462.3 14.33 448 32 448H608C625.7 448 640 462.3 640 480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480z"], + "plane-lock": [640, 512, [], "e558", "M192 93.68C192 59.53 221 0 256 0C292 0 320 59.53 320 93.68V178.3L421.8 236.4C418 247.6 416 259.6 416 272V296.6C398.1 306.9 385.7 325.7 384.2 347.5L320 329.1V400L377.6 443.2C381.6 446.2 384 450.1 384 456V497.1C384 505.7 377.7 512 369.1 512C368.7 512 367.4 511.8 366.1 511.5L256 480L145.9 511.5C144.6 511.8 143.3 512 142 512C134.3 512 128 505.7 128 497.1V456C128 450.1 130.4 446.2 134.4 443.2L192 400V329.1L20.4 378.2C10.17 381.1 0 373.4 0 362.8V297.3C0 291.5 3.076 286.2 8.062 283.4L192 178.3L192 93.68zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "plane-slash": [640, 512, [], "e069", "M238.1 161.3L197.8 20.4C194.9 10.17 202.6-.0001 213.2-.0001H269.4C280.9-.0001 291.5 6.153 297.2 16.12L397.7 192H514.3C548.5 192 608 221 608 256C608 292 548.5 320 514.3 320H440.6L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.237 28.37-3.065 38.81 5.112L238.1 161.3zM41.54 128.7L362.5 381.6L297.2 495.9C291.5 505.8 280.9 512 269.4 512H213.2C202.6 512 194.9 501.8 197.8 491.6L246.9 319.1H144L100.8 377.6C97.78 381.6 93.04 384 88 384H46.03C38.28 384 32 377.7 32 369.1C32 368.7 32.18 367.4 32.54 366.1L64 255.1L32.54 145.9C32.18 144.6 32 143.3 32 142C32 135.9 35.1 130.6 41.54 128.7V128.7z"], + "plane-up": [512, 512, [], "e22d", "M192 93.68C192 59.53 221 0 256 0C292 0 320 59.53 320 93.68V160L497.8 278.5C506.7 284.4 512 294.4 512 305.1V361.8C512 372.7 501.3 380.4 490.9 376.1L320 319.1V400L377.6 443.2C381.6 446.2 384 450.1 384 456V497.1C384 505.7 377.7 512 369.1 512C368.7 512 367.4 511.8 366.1 511.5L256 480L145.9 511.5C144.6 511.8 143.3 512 142 512C134.3 512 128 505.7 128 497.1V456C128 450.1 130.4 446.2 134.4 443.2L192 400V319.1L21.06 376.1C10.7 380.4 0 372.7 0 361.8V305.1C0 294.4 5.347 284.4 14.25 278.5L192 160L192 93.68z"], + "plant-wilt": [512, 512, [], "e5aa", "M288 512H224V248C224 217.1 198.9 192 168 192C137.1 192 112 217.1 112 248V260.1C141.3 270.9 160 295.5 160 331.1C160 359.1 124.2 410.5 80 448C35.83 410.5 0 360.4 0 331.1C0 295.5 18.67 270.9 48 260.1V248C48 181.7 101.7 128 168 128C188.2 128 207.3 133 224 141.8V120C224 53.73 277.7 0 344 0C410.3 0 464 53.73 464 120V132.1C493.3 142.9 512 167.5 512 203.1C512 231.1 476.2 282.5 432 320C387.8 282.5 352 232.4 352 203.1C352 167.5 370.7 142.9 400 132.1V120C400 89.07 374.9 64 344 64C313.1 64 288 89.07 288 120V512z"], + "plate-wheat": [512, 512, [], "e55a", "M256 112V128C256 136.8 248.8 144 240 144C195.8 144 160 108.2 160 64V48C160 39.16 167.2 32 176 32C220.2 32 256 67.82 256 112zM104 64C117.3 64 128 74.75 128 88C128 101.3 117.3 112 104 112H56C42.75 112 32 101.3 32 88C32 74.75 42.75 64 56 64H104zM136 136C149.3 136 160 146.7 160 160C160 173.3 149.3 184 136 184H24C10.75 184 0 173.3 0 160C0 146.7 10.75 136 24 136H136zM32 232C32 218.7 42.75 208 56 208H104C117.3 208 128 218.7 128 232C128 245.3 117.3 256 104 256H56C42.75 256 32 245.3 32 232zM272 48C272 39.16 279.2 32 288 32C332.2 32 368 67.82 368 112V128C368 136.8 360.8 144 352 144C307.8 144 272 108.2 272 64V48zM480 112V128C480 136.8 472.8 144 464 144C419.8 144 384 108.2 384 64V48C384 39.16 391.2 32 400 32C444.2 32 480 67.82 480 112zM480 208C480 252.2 444.2 288 400 288C391.2 288 384 280.8 384 272V256C384 211.8 419.8 176 464 176C472.8 176 480 183.2 480 192V208zM352 176C360.8 176 368 183.2 368 192V208C368 252.2 332.2 288 288 288C279.2 288 272 280.8 272 272V256C272 211.8 307.8 176 352 176zM256 208C256 252.2 220.2 288 176 288C167.2 288 160 280.8 160 272V256C160 211.8 195.8 176 240 176C248.8 176 256 183.2 256 192V208zM3.451 347.6C1.618 332.9 13.05 320 27.82 320H484.2C498.1 320 510.4 332.9 508.6 347.6C502.3 397.8 464.2 437 416 446V448C416 465.7 401.7 480 384 480H127.1C110.3 480 95.1 465.7 95.1 448V446C47.84 437 9.724 397.8 3.45 347.6H3.451z"], + "play": [384, 512, [9654], "f04b", "M361 215C375.3 223.8 384 239.3 384 256C384 272.7 375.3 288.2 361 296.1L73.03 472.1C58.21 482 39.66 482.4 24.52 473.9C9.377 465.4 0 449.4 0 432V80C0 62.64 9.377 46.63 24.52 38.13C39.66 29.64 58.21 29.99 73.03 39.04L361 215z"], + "plug": [384, 512, [128268], "f1e6", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 209.7 369.7 224 352 224V256C352 333.4 297 397.1 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352z"], + "plug-circle-bolt": [576, 512, [], "e55b", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM464.8 286.4L368.8 358.4C364.7 361.5 362.1 366.9 364.6 371.8C366.2 376.7 370.8 380 376 380H411.6L381.5 434.2C378.8 439.1 379.8 445.3 384.1 449C388.4 452.8 394.7 452.1 399.2 449.6L495.2 377.6C499.3 374.5 501 369.1 499.4 364.2C497.8 359.3 493.2 356 488 356H452.4L482.5 301.8C485.2 296.9 484.2 290.7 479.9 286.1C475.6 283.2 469.3 283 464.8 286.4V286.4z"], + "plug-circle-check": [576, 512, [], "e55c", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM476.7 324.7L416 385.4L387.3 356.7C381.1 350.4 370.9 350.4 364.7 356.7C358.4 362.9 358.4 373.1 364.7 379.3L404.7 419.3C410.9 425.6 421.1 425.6 427.3 419.3L499.3 347.3C505.6 341.1 505.6 330.9 499.3 324.7C493.1 318.4 482.9 318.4 476.7 324.7H476.7z"], + "plug-circle-exclamation": [576, 512, [], "e55d", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 464C445.3 464 456 453.3 456 440C456 426.7 445.3 416 432 416C418.7 416 408 426.7 408 440C408 453.3 418.7 464 432 464zM415.1 288V368C415.1 376.8 423.2 384 431.1 384C440.8 384 447.1 376.8 447.1 368V288C447.1 279.2 440.8 272 431.1 272C423.2 272 415.1 279.2 415.1 288z"], + "plug-circle-minus": [576, 512, [], "e55e", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368zM496 351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1z"], + "plug-circle-plus": [576, 512, [], "e55f", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM448 303.1C448 295.2 440.8 287.1 432 287.1C423.2 287.1 416 295.2 416 303.1V351.1H368C359.2 351.1 352 359.2 352 367.1C352 376.8 359.2 383.1 368 383.1H416V431.1C416 440.8 423.2 447.1 432 447.1C440.8 447.1 448 440.8 448 431.1V383.1H496C504.8 383.1 512 376.8 512 367.1C512 359.2 504.8 351.1 496 351.1H448V303.1z"], + "plug-circle-xmark": [576, 512, [], "e560", "M96 0C113.7 0 128 14.33 128 32V128H64V32C64 14.33 78.33 0 96 0zM288 0C305.7 0 320 14.33 320 32V128H256V32C256 14.33 270.3 0 288 0zM352 160C369.7 160 384 174.3 384 192C384 194.3 383.7 196.6 383.3 198.8C309.8 219.1 256 287.7 256 368C256 379.4 257.1 390.5 259.1 401.3C248.1 406.4 236.3 410.3 224 412.8V512H160V412.8C86.97 397.1 32 333.4 32 256V224C14.33 224 0 209.7 0 192C0 174.3 14.33 160 32 160H352zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM491.3 331.3C497.6 325.1 497.6 314.9 491.3 308.7C485.1 302.4 474.9 302.4 468.7 308.7L432 345.4L395.3 308.7C389.1 302.4 378.9 302.4 372.7 308.7C366.4 314.9 366.4 325.1 372.7 331.3L409.4 368L372.7 404.7C366.4 410.9 366.4 421.1 372.7 427.3C378.9 433.6 389.1 433.6 395.3 427.3L432 390.6L468.7 427.3C474.9 433.6 485.1 433.6 491.3 427.3C497.6 421.1 497.6 410.9 491.3 404.7L454.6 368L491.3 331.3z"], + "plus": [448, 512, [10133, 61543, "add"], "2b", "M432 256c0 17.69-14.33 32.01-32 32.01H256v144c0 17.69-14.33 31.99-32 31.99s-32-14.3-32-31.99v-144H48c-17.67 0-32-14.32-32-32.01s14.33-31.99 32-31.99H192v-144c0-17.69 14.33-32.01 32-32.01s32 14.32 32 32.01v144h144C417.7 224 432 238.3 432 256z"], + "plus-minus": [384, 512, [], "e43c", "M352 448H32c-17.69 0-32 14.31-32 32s14.31 31.1 32 31.1h320c17.69 0 32-14.31 32-31.1S369.7 448 352 448zM48 208H160v111.1c0 17.69 14.31 31.1 32 31.1s32-14.31 32-31.1V208h112c17.69 0 32-14.32 32-32.01s-14.31-31.99-32-31.99H224v-112c0-17.69-14.31-32.01-32-32.01S160 14.33 160 32.01v112H48c-17.69 0-32 14.31-32 31.99S30.31 208 48 208z"], + "podcast": [448, 512, [], "f2ce", "M224 0C100.3 0 0 100.3 0 224c0 92.22 55.77 171.4 135.4 205.7c-3.48-20.75-6.17-41.59-6.998-58.15C80.08 340.1 48 285.8 48 224c0-97.05 78.95-176 176-176s176 78.95 176 176c0 61.79-32.08 116.1-80.39 147.6c-.834 16.5-3.541 37.37-7.035 58.17C392.2 395.4 448 316.2 448 224C448 100.3 347.7 0 224 0zM224 312c-32.88 0-64 8.625-64 43.75c0 33.13 12.88 104.3 20.62 132.8C185.8 507.6 205.1 512 224 512s38.25-4.375 43.38-23.38C275.1 459.9 288 388.8 288 355.8C288 320.6 256.9 312 224 312zM224 280c30.95 0 56-25.05 56-56S254.1 168 224 168S168 193 168 224S193 280 224 280zM368 224c0-79.53-64.47-144-144-144S80 144.5 80 224c0 44.83 20.92 84.38 53.04 110.8c4.857-12.65 14.13-25.88 32.05-35.04C165.1 299.7 165.4 299.7 165.6 299.7C142.9 282.1 128 254.9 128 224c0-53.02 42.98-96 96-96s96 42.98 96 96c0 30.92-14.87 58.13-37.57 75.68c.1309 .0254 .5078 .0488 .4746 .0742c17.93 9.16 27.19 22.38 32.05 35.04C347.1 308.4 368 268.8 368 224z"], + "poo": [512, 512, [128169], "f2fe", "M451.4 369.1C468.8 356 480 335.4 480 312c0-39.75-32.25-72-72-72h-14.12C407.3 228.2 416 211.2 416 191.1c0-35.25-28.75-63.1-64-63.1h-5.875C349.8 117.9 352 107.2 352 95.1c0-53-43-96-96-96c-5.25 0-10.25 .75-15.12 1.5C250.3 14.62 256 30.62 256 47.1c0 44.25-35.75 80-80 80H160c-35.25 0-64 28.75-64 63.1c0 19.25 8.75 36.25 22.12 48H104C64.25 239.1 32 272.3 32 312c0 23.38 11.25 44 28.62 57.13C26.25 374.6 0 404.1 0 440C0 479.8 32.25 512 72 512h368c39.75 0 72-32.25 72-72C512 404.1 485.8 374.6 451.4 369.1zM192 256c17.75 0 32 14.25 32 32s-14.25 32-32 32S160 305.8 160 288S174.3 256 192 256zM351.5 395C340.1 422.9 292.1 448 256 448c-36.99 0-84.98-25.12-95.48-53C158.5 389.8 162.5 384 168.3 384h175.5C349.5 384 353.5 389.8 351.5 395zM320 320c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S337.8 320 320 320z"], + "poo-storm": [448, 512, ["poo-bolt"], "f75a", "M304 368H248.3l38.45-89.7c2.938-6.859 .7187-14.84-5.312-19.23c-6.096-4.422-14.35-4.031-19.94 .8906l-128 111.1c-5.033 4.391-6.783 11.44-4.439 17.67c2.346 6.25 8.314 10.38 14.97 10.38H199.7l-38.45 89.7c-2.938 6.859-.7187 14.84 5.312 19.23C169.4 510.1 172.7 512 175.1 512c3.781 0 7.531-1.328 10.53-3.953l128-111.1c5.033-4.391 6.783-11.44 4.439-17.67C316.6 372.1 310.7 368 304 368zM373.3 226.6C379.9 216.6 384 204.9 384 192c0-35.38-28.62-64-64-64h-5.875C317.8 118 320 107.3 320 96c0-53-43-96-96-96C218.9 0 213.9 .75 208.9 1.5C218.3 14.62 224 30.62 224 48C224 92.13 188.1 128 144 128H128C92.63 128 64 156.6 64 192c0 12.88 4.117 24.58 10.72 34.55C31.98 236.3 0 274.3 0 320c0 53.02 42.98 96 96 96h12.79c-4.033-4.414-7.543-9.318-9.711-15.1c-7.01-18.64-1.645-39.96 13.32-53.02l127.9-111.9C249.1 228.2 260.3 223.1 271.1 224c10.19 0 19.95 3.174 28.26 9.203c18.23 13.27 24.76 36.1 15.89 57.71l-19.33 45.1h7.195c19.89 0 37.95 12.51 44.92 31.11C355.3 384 351 402.8 339.1 416H352c53.02 0 96-42.98 96-96C448 274.3 416 236.3 373.3 226.6z"], + "poop": [512, 512, [], "f619", "M512 440.1C512 479.9 479.7 512 439.1 512H71.92C32.17 512 0 479.8 0 440c0-35.88 26.19-65.35 60.56-70.85C43.31 356 32 335.4 32 312C32 272.2 64.25 240 104 240h13.99C104.5 228.2 96 211.2 96 192c0-35.38 28.56-64 63.94-64h16C220.1 128 256 92.12 256 48c0-17.38-5.784-33.35-15.16-46.47C245.8 .7754 250.9 0 256 0c53 0 96 43 96 96c0 11.25-2.288 22-5.913 32h5.879C387.3 128 416 156.6 416 192c0 19.25-8.59 36.25-22.09 48H408C447.8 240 480 272.2 480 312c0 23.38-11.38 44.01-28.63 57.14C485.7 374.6 512 404.3 512 440.1z"], + "power-off": [512, 512, [9211], "f011", "M288 256C288 273.7 273.7 288 256 288C238.3 288 224 273.7 224 256V32C224 14.33 238.3 0 256 0C273.7 0 288 14.33 288 32V256zM80 256C80 353.2 158.8 432 256 432C353.2 432 432 353.2 432 256C432 201.6 407.3 152.9 368.5 120.6C354.9 109.3 353 89.13 364.3 75.54C375.6 61.95 395.8 60.1 409.4 71.4C462.2 115.4 496 181.8 496 255.1C496 388.5 388.5 496 256 496C123.5 496 16 388.5 16 255.1C16 181.8 49.75 115.4 102.6 71.4C116.2 60.1 136.4 61.95 147.7 75.54C158.1 89.13 157.1 109.3 143.5 120.6C104.7 152.9 80 201.6 80 256z"], + "prescription": [448, 512, [], "f5b1", "M440.1 448.4l-96.28-96.21l95.87-95.95c9.373-9.381 9.373-24.59 0-33.97l-22.62-22.64c-9.373-9.381-24.57-9.381-33.94 0L288.1 295.6L220.5 228c46.86-22.92 76.74-75.46 64.95-133.1C273.9 38.74 221.8 0 164.6 0H31.1C14.33 0 0 14.34 0 32.03v264.1c0 13.26 10.75 24.01 23.1 24.01l31.1 .085c13.25 0 23.1-10.75 23.1-24.02V240.2H119.4l112.1 112L135.4 448.4c-9.373 9.381-9.373 24.59 0 33.97l22.62 22.64c9.373 9.38 24.57 9.38 33.94 0l96.13-96.21l96.28 96.21c9.373 9.381 24.57 9.381 33.94 0l22.62-22.64C450.3 472.9 450.3 457.7 440.1 448.4zM79.1 80.06h87.1c22.06 0 39.1 17.95 39.1 40.03s-17.94 40.03-39.1 40.03H79.1V80.06z"], + "prescription-bottle": [384, 512, [], "f485", "M32 192h112C152.8 192 160 199.2 160 208C160 216.8 152.8 224 144 224H32v64h112C152.8 288 160 295.2 160 304C160 312.8 152.8 320 144 320H32v64h112C152.8 384 160 391.2 160 400C160 408.8 152.8 416 144 416H32v32c0 35.2 28.8 64 64 64h192c35.2 0 64-28.8 64-64V128H32V192zM360 0H24C10.75 0 0 10.75 0 24v48C0 85.25 10.75 96 24 96h336C373.3 96 384 85.25 384 72v-48C384 10.75 373.3 0 360 0z"], + "prescription-bottle-medical": [384, 512, ["prescription-bottle-alt"], "f486", "M32 448c0 35.2 28.8 64 64 64h192c35.2 0 64-28.8 64-64V128H32V448zM96 304C96 295.2 103.2 288 112 288H160V240C160 231.2 167.2 224 176 224h32C216.8 224 224 231.2 224 240V288h48C280.8 288 288 295.2 288 304v32c0 8.799-7.199 16-16 16H224v48c0 8.799-7.199 16-16 16h-32C167.2 416 160 408.8 160 400V352H112C103.2 352 96 344.8 96 336V304zM360 0H24C10.75 0 0 10.75 0 24v48C0 85.25 10.75 96 24 96h336C373.3 96 384 85.25 384 72v-48C384 10.75 373.3 0 360 0z"], + "print": [512, 512, [128424, 128438, 9113], "f02f", "M448 192H64C28.65 192 0 220.7 0 256v96c0 17.67 14.33 32 32 32h32v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h32c17.67 0 32-14.33 32-32V256C512 220.7 483.3 192 448 192zM384 448H128v-96h256V448zM432 296c-13.25 0-24-10.75-24-24c0-13.27 10.75-24 24-24s24 10.73 24 24C456 285.3 445.3 296 432 296zM128 64h229.5L384 90.51V160h64V77.25c0-8.484-3.375-16.62-9.375-22.62l-45.25-45.25C387.4 3.375 379.2 0 370.8 0H96C78.34 0 64 14.33 64 32v128h64V64z"], + "pump-medical": [384, 512, [], "e06a", "M379.3 94.06l-43.32-43.32C323.1 38.74 307.7 32 290.8 32h-66.75c0-17.67-14.33-32-32-32H127.1c-17.67 0-32 14.33-32 32L96 128h128l-.0002-32h66.75l43.31 43.31c6.248 6.248 16.38 6.248 22.63 0l22.62-22.62C385.6 110.4 385.6 100.3 379.3 94.06zM235.6 160H84.37C51.27 160 23.63 185.2 20.63 218.2l-20.36 224C-3.139 479.7 26.37 512 64.01 512h191.1c37.63 0 67.14-32.31 63.74-69.79l-20.36-224C296.4 185.2 268.7 160 235.6 160zM239.1 333.3c0 7.363-5.971 13.33-13.33 13.33h-40v40c0 7.363-5.969 13.33-13.33 13.33h-26.67c-7.363 0-13.33-5.971-13.33-13.33v-40H93.33c-7.363 0-13.33-5.971-13.33-13.33V306.7c0-7.365 5.971-13.33 13.33-13.33h40v-40C133.3 245.1 139.3 240 146.7 240h26.67c7.363 0 13.33 5.969 13.33 13.33v40h40c7.363 0 13.33 5.969 13.33 13.33V333.3z"], + "pump-soap": [384, 512, [], "e06b", "M235.6 160H84.37C51.27 160 23.63 185.2 20.63 218.2l-20.36 224C-3.139 479.7 26.37 512 64.01 512h191.1c37.63 0 67.14-32.31 63.74-69.79l-20.36-224C296.4 185.2 268.7 160 235.6 160zM159.1 416C124.7 416 96 389.7 96 357.3c0-25 38.08-75.47 55.5-97.27c4.25-5.312 12.75-5.312 17 0C185.9 281.8 224 332.3 224 357.3C224 389.7 195.3 416 159.1 416zM379.3 94.06l-43.32-43.32C323.1 38.74 307.7 32 290.8 32h-66.75c0-17.67-14.33-32-32-32H127.1c-17.67 0-32 14.33-32 32L96 128h128l-.0002-32h66.75l43.31 43.31c6.248 6.248 16.38 6.248 22.63 0l22.62-22.62C385.6 110.4 385.6 100.3 379.3 94.06z"], + "puzzle-piece": [512, 512, [129513], "f12e", "M512 288c0 35.35-21.49 64-48 64c-32.43 0-31.72-32-55.64-32C394.9 320 384 330.9 384 344.4V480c0 17.67-14.33 32-32 32h-71.64C266.9 512 256 501.1 256 487.6C256 463.1 288 464.4 288 432c0-26.51-28.65-48-64-48s-64 21.49-64 48c0 32.43 32 31.72 32 55.64C192 501.1 181.1 512 167.6 512H32c-17.67 0-32-14.33-32-32v-135.6C0 330.9 10.91 320 24.36 320C48.05 320 47.6 352 80 352C106.5 352 128 323.3 128 288S106.5 223.1 80 223.1c-32.43 0-31.72 32-55.64 32C10.91 255.1 0 245.1 0 231.6v-71.64c0-17.67 14.33-31.1 32-31.1h135.6C181.1 127.1 192 117.1 192 103.6c0-23.69-32-23.24-32-55.64c0-26.51 28.65-47.1 64-47.1s64 21.49 64 47.1c0 32.43-32 31.72-32 55.64c0 13.45 10.91 24.36 24.36 24.36H352c17.67 0 32 14.33 32 31.1v71.64c0 13.45 10.91 24.36 24.36 24.36c23.69 0 23.24-32 55.64-32C490.5 223.1 512 252.7 512 288z"], + "q": [448, 512, [113], "51", "M393.1 402.5c34.12-39.32 54.93-90.48 54.93-146.5c0-123.5-100.5-224-223.1-224S.0001 132.5 .0001 256s100.5 224 223.1 224c44.45 0 85.81-13.16 120.7-35.58l46.73 56.08c6.328 7.594 15.42 11.52 24.59 11.52c21.35 0 31.98-18.26 31.98-32.01c0-7.223-2.433-14.49-7.419-20.47L393.1 402.5zM224 416c-88.22 0-160-71.78-160-160s71.78-159.1 160-159.1s160 71.78 160 159.1c0 36.21-12.55 69.28-32.92 96.12L280.6 267.5c-6.338-7.597-15.44-11.53-24.61-11.53c-21.27 0-31.96 18.22-31.96 32.02c0 7.223 2.433 14.49 7.419 20.47l71.53 85.83C279.6 407.7 252.8 416 224 416z"], + "qrcode": [448, 512, [], "f029", "M144 32C170.5 32 192 53.49 192 80V176C192 202.5 170.5 224 144 224H48C21.49 224 0 202.5 0 176V80C0 53.49 21.49 32 48 32H144zM128 96H64V160H128V96zM144 288C170.5 288 192 309.5 192 336V432C192 458.5 170.5 480 144 480H48C21.49 480 0 458.5 0 432V336C0 309.5 21.49 288 48 288H144zM128 352H64V416H128V352zM256 80C256 53.49 277.5 32 304 32H400C426.5 32 448 53.49 448 80V176C448 202.5 426.5 224 400 224H304C277.5 224 256 202.5 256 176V80zM320 160H384V96H320V160zM352 448H384V480H352V448zM448 480H416V448H448V480zM416 288H448V416H352V384H320V480H256V288H352V320H416V288z"], + "question": [320, 512, [10067, 10068, 61736], "3f", "M204.3 32.01H96c-52.94 0-96 43.06-96 96c0 17.67 14.31 31.1 32 31.1s32-14.32 32-31.1c0-17.64 14.34-32 32-32h108.3C232.8 96.01 256 119.2 256 147.8c0 19.72-10.97 37.47-30.5 47.33L127.8 252.4C117.1 258.2 112 268.7 112 280v40c0 17.67 14.31 31.99 32 31.99s32-14.32 32-31.99V298.3L256 251.3c39.47-19.75 64-59.42 64-103.5C320 83.95 268.1 32.01 204.3 32.01zM144 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S166.1 400 144 400z"], + "quote-left": [448, 512, [8220, "quote-left-alt"], "f10d", "M96 224C84.72 224 74.05 226.3 64 229.9V224c0-35.3 28.7-64 64-64c17.67 0 32-14.33 32-32S145.7 96 128 96C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96S149 224 96 224zM352 224c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64c17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96S405 224 352 224z"], + "quote-right": [448, 512, [8221, "quote-right-alt"], "f10e", "M96 96C42.98 96 0 138.1 0 192s42.98 96 96 96c11.28 0 21.95-2.305 32-5.879V288c0 35.3-28.7 64-64 64c-17.67 0-32 14.33-32 32s14.33 32 32 32c70.58 0 128-57.42 128-128V192C192 138.1 149 96 96 96zM448 192c0-53.02-42.98-96-96-96s-96 42.98-96 96s42.98 96 96 96c11.28 0 21.95-2.305 32-5.879V288c0 35.3-28.7 64-64 64c-17.67 0-32 14.33-32 32s14.33 32 32 32c70.58 0 128-57.42 128-128V192z"], + "r": [320, 512, [114], "52", "M228.7 309.7C282 288.6 320 236.8 320 176c0-79.41-64.59-144-144-144H32c-17.67 0-32 14.33-32 32v384c0 17.67 14.33 32 32 32s32-14.33 32-32v-128h93.43l104.5 146.6c6.25 8.75 16.09 13.42 26.09 13.42c6.422 0 12.91-1.922 18.55-5.938c14.39-10.27 17.73-30.25 7.484-44.64L228.7 309.7zM64 96.01h112c44.11 0 80 35.89 80 80s-35.89 79.1-80 79.1H64V96.01z"], + "radiation": [512, 512, [], "f7b9", "M256 303.1c26.5 0 48-21.5 48-48S282.5 207.1 256 207.1S208 229.5 208 255.1S229.5 303.1 256 303.1zM213.6 188L142.7 74.71C132.5 58.41 109.9 54.31 95.25 66.75c-44.94 38.1-76.19 91.82-85.17 152.8C7.266 238.7 22.67 255.8 42.01 255.8h133.8C175.8 227.2 191 202.3 213.6 188zM416.8 66.75c-14.67-12.44-37.21-8.338-47.41 7.965L298.4 188c22.6 14.3 37.8 39.2 37.8 67.8h133.8c19.34 0 34.74-17.13 31.93-36.26C492.9 158.6 461.7 104.8 416.8 66.75zM298.4 323.5C286.1 331.2 271.6 335.9 256 335.9s-30.1-4.701-42.4-12.4L142.7 436.9c-10.14 16.21-4.16 38.2 13.32 45.95C186.6 496.4 220.4 504 256 504s69.42-7.611 100-21.18c17.48-7.752 23.46-29.74 13.32-45.95L298.4 323.5z"], + "radio": [512, 512, [128251], "f8d7", "M447.1 128L218.5 128l276.2-80.97c12.72-3.734 19.1-17.06 16.28-29.78c-3.719-12.7-16.1-19.1-29.78-16.28L51.75 126.9c-29.07 8.512-49.55 34.8-51.39 64.78L.0007 192v255.1c0 35.31 28.69 63.1 63.1 63.1h383.1c35.31 0 63.1-28.69 63.1-63.1V192C511.1 156.7 483.3 128 447.1 128zM80 248c0-4.406 3.594-7.1 7.1-7.1h111.1c4.406 0 7.1 3.594 7.1 7.1V263.1c0 4.406-3.594 7.1-7.1 7.1h-111.1c-4.406 0-7.1-3.594-7.1-7.1V248zM208 391.1c0 4.406-3.594 7.1-7.1 7.1h-111.1c-4.406 0-7.1-3.594-7.1-7.1v-15.1c0-4.406 3.594-7.1 7.1-7.1h111.1c4.406 0 7.1 3.594 7.1 7.1V391.1zM224 327.1c0 4.406-3.594 7.1-7.1 7.1H72c-4.406 0-7.1-3.594-7.1-7.1V311.1c0-4.406 3.594-7.1 7.1-7.1h143.1c4.406 0 7.1 3.594 7.1 7.1V327.1zM367.1 399.1c-44.16 0-80-35.84-80-79.1s35.84-80 80-80s79.1 35.85 79.1 80S412.2 399.1 367.1 399.1z"], + "rainbow": [640, 512, [127752], "f75b", "M312.3 32.09C137.6 36.22 0 183.3 0 358V464C0 472.8 7.164 480 16 480h32C56.84 480 64 472.8 64 464v-106.9c0-143.2 117.2-263.5 260.4-261.1C463.5 98.4 576 212.3 576 352v112c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16V352C640 172.1 492.3 27.84 312.3 32.09zM313.5 224.2C244.8 227.6 192 286.9 192 355.7V464C192 472.8 199.2 480 208 480h32C248.8 480 256 472.8 256 464v-109.7c0-34.06 25.65-63.85 59.64-66.11C352.9 285.7 384 315.3 384 352v112c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16V352C448 279.3 387 220.5 313.5 224.2zM313.2 128.1C191.4 131.7 96 234.9 96 356.8V464C96 472.8 103.2 480 112 480h32C152.8 480 160 472.8 160 464v-108.1c0-86.64 67.24-160.5 153.8-163.8C404.8 188.7 480 261.7 480 352v112c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16V352C544 226.2 439.8 124.3 313.2 128.1z"], + "ranking-star": [640, 512, [], "e561", "M406.1 61.65C415.4 63.09 419.4 74.59 412.6 81.41L374.6 118.1L383.6 170.1C384.1 179.5 375.3 186.7 366.7 182.4L320.2 157.9L273.3 182.7C264.7 187 255 179.8 256.4 170.5L265.4 118.4L227.4 81.41C220.6 74.59 224.6 63.09 233.9 61.65L286.2 54.11L309.8 6.332C314.1-2.289 326.3-1.93 330.2 6.332L353.8 54.11L406.1 61.65zM384 256C401.7 256 416 270.3 416 288V480C416 497.7 401.7 512 384 512H256C238.3 512 224 497.7 224 480V288C224 270.3 238.3 256 256 256H384zM160 320C177.7 320 192 334.3 192 352V480C192 497.7 177.7 512 160 512H32C14.33 512 0 497.7 0 480V352C0 334.3 14.33 320 32 320H160zM448 416C448 398.3 462.3 384 480 384H608C625.7 384 640 398.3 640 416V480C640 497.7 625.7 512 608 512H480C462.3 512 448 497.7 448 480V416z"], + "receipt": [384, 512, [129534], "f543", "M13.97 2.196C22.49-1.72 32.5-.3214 39.62 5.778L80 40.39L120.4 5.778C129.4-1.926 142.6-1.926 151.6 5.778L192 40.39L232.4 5.778C241.4-1.926 254.6-1.926 263.6 5.778L304 40.39L344.4 5.778C351.5-.3214 361.5-1.72 370 2.196C378.5 6.113 384 14.63 384 24V488C384 497.4 378.5 505.9 370 509.8C361.5 513.7 351.5 512.3 344.4 506.2L304 471.6L263.6 506.2C254.6 513.9 241.4 513.9 232.4 506.2L192 471.6L151.6 506.2C142.6 513.9 129.4 513.9 120.4 506.2L80 471.6L39.62 506.2C32.5 512.3 22.49 513.7 13.97 509.8C5.456 505.9 0 497.4 0 488V24C0 14.63 5.456 6.112 13.97 2.196V2.196zM96 144C87.16 144 80 151.2 80 160C80 168.8 87.16 176 96 176H288C296.8 176 304 168.8 304 160C304 151.2 296.8 144 288 144H96zM96 368H288C296.8 368 304 360.8 304 352C304 343.2 296.8 336 288 336H96C87.16 336 80 343.2 80 352C80 360.8 87.16 368 96 368zM96 240C87.16 240 80 247.2 80 256C80 264.8 87.16 272 96 272H288C296.8 272 304 264.8 304 256C304 247.2 296.8 240 288 240H96z"], + "record-vinyl": [512, 512, [], "f8d9", "M256 160C202.9 160 160 202.9 160 256s42.92 96 96 96c53.08 0 96-42.92 96-96S309.1 160 256 160zM256 288C238.3 288 224 273.7 224 256s14.33-32 32-32c17.67 0 32 14.33 32 32S273.7 288 256 288zM256 0c-141.4 0-256 114.6-256 256s114.6 256 256 256c141.4 0 256-114.6 256-256S397.4 0 256 0zM256 384c-70.75 0-128-57.25-128-128s57.25-128 128-128s128 57.25 128 128S326.8 384 256 384z"], + "rectangle-ad": [576, 512, ["ad"], "f641", "M208 237.7L229.2 280H186.8L208 237.7zM416 280C416 293.3 405.3 304 392 304C378.7 304 368 293.3 368 280C368 266.7 378.7 256 392 256C405.3 256 416 266.7 416 280zM512 32C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H512zM229.5 173.3C225.4 165.1 217.1 160 208 160C198.9 160 190.6 165.1 186.5 173.3L114.5 317.3C108.6 329.1 113.4 343.5 125.3 349.5C137.1 355.4 151.5 350.6 157.5 338.7L162.8 328H253.2L258.5 338.7C264.5 350.6 278.9 355.4 290.7 349.5C302.6 343.5 307.4 329.1 301.5 317.3L229.5 173.3zM416 212.1C408.5 209.4 400.4 208 392 208C352.2 208 320 240.2 320 280C320 319.8 352.2 352 392 352C403.1 352 413.6 349.5 423 344.1C427.4 349.3 433.4 352 440 352C453.3 352 464 341.3 464 328V184C464 170.7 453.3 160 440 160C426.7 160 416 170.7 416 184V212.1z"], + "rectangle-list": [576, 512, ["list-alt"], "f022", "M0 96C0 60.65 28.65 32 64 32H512C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96zM160 256C160 238.3 145.7 224 128 224C110.3 224 96 238.3 96 256C96 273.7 110.3 288 128 288C145.7 288 160 273.7 160 256zM160 160C160 142.3 145.7 128 128 128C110.3 128 96 142.3 96 160C96 177.7 110.3 192 128 192C145.7 192 160 177.7 160 160zM160 352C160 334.3 145.7 320 128 320C110.3 320 96 334.3 96 352C96 369.7 110.3 384 128 384C145.7 384 160 369.7 160 352zM224 136C210.7 136 200 146.7 200 160C200 173.3 210.7 184 224 184H448C461.3 184 472 173.3 472 160C472 146.7 461.3 136 448 136H224zM224 232C210.7 232 200 242.7 200 256C200 269.3 210.7 280 224 280H448C461.3 280 472 269.3 472 256C472 242.7 461.3 232 448 232H224zM224 328C210.7 328 200 338.7 200 352C200 365.3 210.7 376 224 376H448C461.3 376 472 365.3 472 352C472 338.7 461.3 328 448 328H224z"], + "rectangle-xmark": [512, 512, [62164, "rectangle-times", "times-rectangle", "window-close"], "f410", "M448 32C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM175 208.1L222.1 255.1L175 303C165.7 312.4 165.7 327.6 175 336.1C184.4 346.3 199.6 346.3 208.1 336.1L255.1 289.9L303 336.1C312.4 346.3 327.6 346.3 336.1 336.1C346.3 327.6 346.3 312.4 336.1 303L289.9 255.1L336.1 208.1C346.3 199.6 346.3 184.4 336.1 175C327.6 165.7 312.4 165.7 303 175L255.1 222.1L208.1 175C199.6 165.7 184.4 165.7 175 175C165.7 184.4 165.7 199.6 175 208.1V208.1z"], + "recycle": [512, 512, [9850, 9851, 9842], "f1b8", "M180.2 243.1C185 263.9 162.2 280.2 144.1 268.8L119.8 253.6l-50.9 81.43c-13.33 21.32 2.004 48.98 27.15 48.98h32.02c17.64 0 31.98 14.32 31.98 31.96c0 17.64-14.34 32.05-31.98 32.05H96.15c-75.36 0-121.3-82.84-81.47-146.8L65.51 219.8L41.15 204.5C23.04 193.1 27.66 165.5 48.48 160.7l91.43-21.15C148.5 137.7 157.2 142.9 159.2 151.6L180.2 243.1zM283.1 78.96l41.25 66.14l-24.25 15.08c-18.16 11.31-13.57 38.94 7.278 43.77l91.4 21.15c8.622 1.995 17.23-3.387 19.21-12.01l21.04-91.43c4.789-20.81-17.95-37.05-36.07-25.76l-24.36 15.2L337.4 45.14c-37.58-60.14-125.2-60.18-162.8-.0617L167.2 56.9C157.9 71.75 162.5 91.58 177.3 100.9c14.92 9.359 34.77 4.886 44.11-10.04l7.442-11.89C241.6 58.58 270.9 59.33 283.1 78.96zM497.3 301.3l-16.99-27.26c-9.336-14.98-29.06-19.56-44.04-10.21c-14.94 9.318-19.52 29.15-10.18 44.08l16.99 27.15c13.35 21.32-1.984 49-27.14 49h-95.99l.0234-28.74c0-21.38-25.85-32.09-40.97-16.97l-66.41 66.43c-6.222 6.223-6.222 16.41 .0044 22.63l66.42 66.34c15.12 15.1 40.95 4.386 40.95-16.98l-.0234-28.68h95.86C491.2 448.1 537.2 365.2 497.3 301.3z"], + "registered": [512, 512, [174], "f25d", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM349.8 349.8c5.594 12.03 .4375 26.31-11.56 31.94c-3.312 1.531-6.75 2.25-10.19 2.25c-9 0-17.66-5.125-21.75-13.81l-38.46-82.19H208v72c0 13.25-10.75 24-24 24s-24-10.75-24-24V152c0-13.25 10.75-24 24-24l88 .0044c44.13 0 80 35.88 80 80c0 28.32-14.87 53.09-37.12 67.31L349.8 349.8zM272 176h-64v64h64c17.66 0 32-14.34 32-32S289.7 176 272 176z"], + "repeat": [512, 512, [128257], "f363", "M480 256c-17.67 0-32 14.31-32 32c0 52.94-43.06 96-96 96H192L192 344c0-9.469-5.578-18.06-14.23-21.94C169.1 318.3 159 319.8 151.9 326.2l-80 72C66.89 402.7 64 409.2 64 416s2.891 13.28 7.938 17.84l80 72C156.4 509.9 162.2 512 168 512c3.312 0 6.615-.6875 9.756-2.062C186.4 506.1 192 497.5 192 488L192 448h160c88.22 0 160-71.78 160-160C512 270.3 497.7 256 480 256zM160 128h159.1L320 168c0 9.469 5.578 18.06 14.23 21.94C337.4 191.3 340.7 192 343.1 192c5.812 0 11.57-2.125 16.07-6.156l80-72C445.1 109.3 448 102.8 448 95.1s-2.891-13.28-7.938-17.84l-80-72c-7.047-6.312-17.19-7.875-25.83-4.094C325.6 5.938 319.1 14.53 319.1 24L320 64H160C71.78 64 0 135.8 0 224c0 17.69 14.33 32 32 32s32-14.31 32-32C64 171.1 107.1 128 160 128z"], + "reply": [512, 512, [61714, "mail-reply"], "f3e5", "M8.31 189.9l176-151.1c15.41-13.3 39.69-2.509 39.69 18.16v80.05C384.6 137.9 512 170.1 512 322.3c0 61.44-39.59 122.3-83.34 154.1c-13.66 9.938-33.09-2.531-28.06-18.62c45.34-145-21.5-183.5-176.6-185.8v87.92c0 20.7-24.31 31.45-39.69 18.16l-176-151.1C-2.753 216.6-2.784 199.4 8.31 189.9z"], + "reply-all": [576, 512, ["mail-reply-all"], "f122", "M136.3 226.2l176 151.1c15.38 13.3 39.69 2.545 39.69-18.16V275.1c108.5 12.58 151.1 58.79 112.6 181.9c-5.031 16.09 14.41 28.56 28.06 18.62c43.75-31.81 83.34-92.69 83.34-154.1c0-131.3-94.86-173.2-224-183.5V56.02c0-20.67-24.28-31.46-39.69-18.16L136.3 189.9C125.2 199.4 125.2 216.6 136.3 226.2zM8.31 226.2l176 151.1c15.38 13.3 39.69 2.545 39.69-18.16v-15.83L66.33 208l157.7-136.2V56.02c0-20.67-24.28-31.46-39.69-18.16l-176 151.1C-2.77 199.4-2.77 216.6 8.31 226.2z"], + "republican": [640, 512, [], "f75e", "M544 191.1c0-88.37-71.62-159.1-159.1-159.1L159.1 32C71.62 32 0 103.6 0 191.1l.025 63.98h543.1V191.1zM176.3 170.4l-19.75 19.37l4.75 27.25c.7498 4.875-4.375 8.625-8.75 6.25l-24.5-12.87L103.5 223.2C99.27 225.6 94.02 221.9 94.77 216.1l4.75-27.25l-19.75-19.37C76.15 166.9 78.15 160.9 83.02 160.2L110.4 156.2l12.25-24.87c2.125-4.5 8.625-4.375 10.62 0L145.5 156.2L172.9 160.2C177.9 160.9 179.8 166.9 176.3 170.4zM320.3 170.4l-19.75 19.37l4.75 27.25c.7498 4.875-4.375 8.625-8.75 6.25L272 210.4l-24.5 12.87C243.3 225.6 238 221.9 238.8 216.1L243.5 189.7l-19.75-19.37c-3.625-3.5-1.625-9.498 3.25-10.12L254.4 156.2l12.25-24.87c2.125-4.5 8.625-4.375 10.62 0L289.5 156.2l27.37 4C321.9 160.9 323.8 166.9 320.3 170.4zM464.3 170.4l-19.75 19.37l4.75 27.25c.7498 4.875-4.375 8.625-8.75 6.25l-24.5-12.87l-24.5 12.87c-4.25 2.375-9.5-1.375-8.75-6.25l4.75-27.25l-19.75-19.37c-3.625-3.5-1.625-9.498 3.25-10.12l27.37-4l12.25-24.87c2.125-4.5 8.625-4.375 10.62 0l12.25 24.87l27.37 4C465.9 160.9 467.8 166.9 464.3 170.4zM624 319.1L592 319.1c-8.799 0-15.1 7.199-15.1 15.1v63.99c0 8.748-7.25 15.1-15.1 15.1c-8.75 0-15.1-7.25-15.1-15.1l-.0313-111.1L.025 287.1v159.1c0 17.6 14.4 31.1 31.1 31.1L95.98 479.1c17.6 0 32.04-14.4 32.04-32v-63.98l191.1-.0169v63.99c0 17.6 14.36 32 31.96 32l64.04 .013c17.6 0 31.1-14.4 31.1-31.1l-.0417-96.01l32.04 .0006v43.25c0 41.79 29.91 80.03 71.48 84.35C599.3 484.5 640 446.9 640 399.1v-63.98C640 327.2 632.8 319.1 624 319.1z"], + "restroom": [640, 512, [], "f7bd", "M319.1 0C306.8 0 296 10.8 296 24v464c0 13.2 10.8 24 23.1 24s24-10.8 24-24V24C344 10.8 333.2 0 319.1 0zM213.7 171.8C204.9 145.6 180.5 128 152.9 128H103.1C75.47 128 51.06 145.6 42.37 171.8L1.653 293.9c-5.594 16.77 3.469 34.89 20.22 40.48c12.68 4.211 25.93 .1426 34.13-9.18V480c0 17.67 14.33 32 32 32s31.1-14.33 31.1-32l-.0003-144h16l.0003 144c0 17.67 14.33 32 32 32s31.1-14.33 31.1-32l-.0003-155.2c6.041 6.971 14.7 11.25 24 11.25c3.344 0 6.75-.5313 10.13-1.656c16.75-5.594 25.81-23.72 20.22-40.48L213.7 171.8zM128 96c26.5 0 47.1-21.5 47.1-48S154.5 0 128 0S80 21.5 80 48S101.5 96 128 96zM511.1 96c26.5 0 48-21.5 48-48S538.5 0 511.1 0s-47.1 21.5-47.1 48S485.5 96 511.1 96zM638.3 293.9l-40.69-122.1C588.9 145.6 564.5 128 536.9 128h-49.88c-27.59 0-52 17.59-60.69 43.75l-40.72 122.1c-5.594 16.77 3.469 34.89 20.22 40.48c3.422 1.137 6.856 1.273 10.25 1.264L399.1 384h40v96c0 17.67 14.32 32 31.1 32s32-14.33 32-32v-96h16v96c0 17.67 14.32 32 31.1 32s32-14.33 32-32v-96h39.1l-15.99-47.98c3.342 0 6.747-.5313 10.12-1.656C634.9 328.8 643.9 310.6 638.3 293.9z"], + "retweet": [640, 512, [], "f079", "M614.2 334.8C610.5 325.8 601.7 319.1 592 319.1H544V176C544 131.9 508.1 96 464 96h-128c-17.67 0-32 14.31-32 32s14.33 32 32 32h128C472.8 160 480 167.2 480 176v143.1h-48c-9.703 0-18.45 5.844-22.17 14.82s-1.656 19.29 5.203 26.16l80 80.02C499.7 445.7 505.9 448 512 448s12.28-2.344 16.97-7.031l80-80.02C615.8 354.1 617.9 343.8 614.2 334.8zM304 352h-128C167.2 352 160 344.8 160 336V192h48c9.703 0 18.45-5.844 22.17-14.82s1.656-19.29-5.203-26.16l-80-80.02C140.3 66.34 134.1 64 128 64S115.7 66.34 111 71.03l-80 80.02C24.17 157.9 22.11 168.2 25.83 177.2S38.3 192 48 192H96V336C96 380.1 131.9 416 176 416h128c17.67 0 32-14.31 32-32S321.7 352 304 352z"], + "ribbon": [448, 512, [127895], "f4d6", "M6.05 444.3c-9.626 10.87-7.501 27.62 4.5 35.75l68.76 27.87c9.876 6.75 23.38 4.1 31.38-3.75l91.76-101.9L123.2 314.3L6.05 444.3zM441.8 444.3c0 0-292-324.5-295.4-329.1c15.38-8.5 40.25-17.1 77.51-17.1s62.13 9.5 77.51 17.1c-3.25 5.5-56.01 64.5-56.01 64.5l79.13 87.75l34.13-37.1c28.75-31.87 33.38-78.62 11.5-115.5L326.5 39.52c-4.25-7.25-9.876-13.25-16.75-17.1c-40.75-27.62-127.5-29.75-171.5 0C131.3 26.27 125.7 32.27 121.4 39.52L77.81 112.8C76.31 115.3 40.68 174.9 89.31 228.8l248.1 275.2c8.001 8.875 21.38 10.5 31.25 3.75l68.88-27.87C449.5 471.9 451.6 455.1 441.8 444.3z"], + "right-from-bracket": [512, 512, ["sign-out-alt"], "f2f5", "M96 480h64C177.7 480 192 465.7 192 448S177.7 416 160 416H96c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h64C177.7 96 192 81.67 192 64S177.7 32 160 32H96C42.98 32 0 74.98 0 128v256C0 437 42.98 480 96 480zM504.8 238.5l-144.1-136c-6.975-6.578-17.2-8.375-26-4.594c-8.803 3.797-14.51 12.47-14.51 22.05l-.0918 72l-128-.001c-17.69 0-32.02 14.33-32.02 32v64c0 17.67 14.34 32 32.02 32l128 .001l.0918 71.1c0 9.578 5.707 18.25 14.51 22.05c8.803 3.781 19.03 1.984 26-4.594l144.1-136C514.4 264.4 514.4 247.6 504.8 238.5z"], + "right-left": [512, 512, ["exchange-alt"], "f362", "M32 160h319.9l.0791 72c0 9.547 5.652 18.19 14.41 22c8.754 3.812 18.93 2.078 25.93-4.406l112-104c10.24-9.5 10.24-25.69 0-35.19l-112-104c-6.992-6.484-17.17-8.217-25.93-4.408c-8.758 3.816-14.41 12.46-14.41 22L351.9 96H32C14.31 96 0 110.3 0 127.1S14.31 160 32 160zM480 352H160.1L160 279.1c0-9.547-5.652-18.19-14.41-22C136.9 254.2 126.7 255.9 119.7 262.4l-112 104c-10.24 9.5-10.24 25.69 0 35.19l112 104c6.992 6.484 17.17 8.219 25.93 4.406C154.4 506.2 160 497.5 160 488L160.1 416H480c17.69 0 32-14.31 32-32S497.7 352 480 352z"], + "right-long": [512, 512, ["long-arrow-alt-right"], "f30b", "M504.3 273.6l-112.1 104c-6.992 6.484-17.18 8.218-25.94 4.406c-8.758-3.812-14.42-12.45-14.42-21.1L351.9 288H32C14.33 288 .0002 273.7 .0002 255.1S14.33 224 32 224h319.9l0-72c0-9.547 5.66-18.19 14.42-22c8.754-3.809 18.95-2.075 25.94 4.41l112.1 104C514.6 247.9 514.6 264.1 504.3 273.6z"], + "right-to-bracket": [512, 512, ["sign-in-alt"], "f2f6", "M344.7 238.5l-144.1-136C193.7 95.97 183.4 94.17 174.6 97.95C165.8 101.8 160.1 110.4 160.1 120V192H32.02C14.33 192 0 206.3 0 224v64c0 17.68 14.33 32 32.02 32h128.1v72c0 9.578 5.707 18.25 14.51 22.05c8.803 3.781 19.03 1.984 26-4.594l144.1-136C354.3 264.4 354.3 247.6 344.7 238.5zM416 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c17.67 0 32 14.33 32 32v256c0 17.67-14.33 32-32 32h-64c-17.67 0-32 14.33-32 32s14.33 32 32 32h64c53.02 0 96-42.98 96-96V128C512 74.98 469 32 416 32z"], + "ring": [512, 512, [], "f70b", "M256 64C109.1 64 0 125.9 0 208v98.13C0 384.5 114.6 448 256 448s256-63.5 256-141.9V208C512 125.9 401.1 64 256 64zM256 288C203.1 288 155.1 279.1 120.4 264.6C155 249.9 201.6 240 256 240s101 9.875 135.6 24.62C356.9 279.1 308.9 288 256 288zM437.1 234.4C392.1 208.3 328.3 192 256 192S119.9 208.3 74.88 234.4C68 226.1 64 217.3 64 208C64 163.9 149.1 128 256 128c105.1 0 192 35.88 192 80C448 217.3 444 226.1 437.1 234.4z"], + "road": [576, 512, [128739], "f018", "M256 96C256 113.7 270.3 128 288 128C305.7 128 320 113.7 320 96V32H394.8C421.9 32 446 49.08 455.1 74.63L572.9 407.2C574.9 413 576 419.2 576 425.4C576 455.5 551.5 480 521.4 480H320V416C320 398.3 305.7 384 288 384C270.3 384 256 398.3 256 416V480H54.61C24.45 480 0 455.5 0 425.4C0 419.2 1.06 413 3.133 407.2L120.9 74.63C129.1 49.08 154.1 32 181.2 32H255.1L256 96zM320 224C320 206.3 305.7 192 288 192C270.3 192 256 206.3 256 224V288C256 305.7 270.3 320 288 320C305.7 320 320 305.7 320 288V224z"], + "road-barrier": [640, 512, [], "e562", "M32 32C49.67 32 64 46.33 64 64V96H149.2L64 266.3V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V64C0 46.33 14.33 32 32 32V32zM309.2 288H234.8L330.8 96H405.2L309.2 288zM458.8 96H533.2L437.2 288H362.8L458.8 96zM202.8 96H277.2L181.2 288H106.8L202.8 96zM576 117.7V64C576 46.33 590.3 32 608 32C625.7 32 640 46.33 640 64V448C640 465.7 625.7 480 608 480C590.3 480 576 465.7 576 448V288H490.8L576 117.7z"], + "road-bridge": [640, 512, [], "e563", "M352 0H608C625.7 0 640 14.33 640 32V480C640 497.7 625.7 512 608 512H352C334.3 512 320 497.7 320 480V32C320 14.33 334.3 0 352 0zM456 224V288C456 301.3 466.7 312 480 312C493.3 312 504 301.3 504 288V224C504 210.7 493.3 200 480 200C466.7 200 456 210.7 456 224zM504 384C504 370.7 493.3 360 480 360C466.7 360 456 370.7 456 384V448C456 461.3 466.7 472 480 472C493.3 472 504 461.3 504 448V384zM456 64V128C456 141.3 466.7 152 480 152C493.3 152 504 141.3 504 128V64C504 50.75 493.3 40 480 40C466.7 40 456 50.75 456 64zM32 96H288V160H248V224H288V320C234.1 320 192 362.1 192 416V480C192 497.7 177.7 512 160 512H128C110.3 512 96 497.7 96 480V416C96 362.1 53.02 320 0 320V224H72V160H32C14.33 160 0 145.7 0 128C0 110.3 14.33 96 32 96zM200 160H120V224H200V160z"], + "road-circle-check": [640, 512, [], "e564", "M213.2 32H288V96C288 113.7 302.3 128 320 128C337.7 128 352 113.7 352 96V32H426.8C453.9 32 478 49.08 487.1 74.63L529.8 195.2C518.9 193.1 507.6 192 496 192C436.5 192 383.9 221.6 352 266.8V224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224V288C288 305.7 302.3 320 320 320C322.3 320 324.6 319.7 326.8 319.3C322.4 334.7 320 351.1 320 368C320 373.4 320.2 378.7 320.7 384L320 384C302.3 384 288 398.3 288 416V480H86.61C56.45 480 32 455.5 32 425.4C32 419.2 33.06 413 35.13 407.2L152.9 74.63C161.1 49.08 186.1 32 213.2 32H213.2zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM540.7 324.7L480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7H540.7z"], + "road-circle-exclamation": [640, 512, [], "e565", "M213.2 32H288V96C288 113.7 302.3 128 320 128C337.7 128 352 113.7 352 96V32H426.8C453.9 32 478 49.08 487.1 74.63L529.8 195.2C518.9 193.1 507.6 192 496 192C436.5 192 383.9 221.6 352 266.8V224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224V288C288 305.7 302.3 320 320 320C322.3 320 324.6 319.7 326.8 319.3C322.4 334.7 320 351.1 320 368C320 373.4 320.2 378.7 320.7 384L320 384C302.3 384 288 398.3 288 416V480H86.61C56.45 480 32 455.5 32 425.4C32 419.2 33.06 413 35.13 407.2L152.9 74.63C161.1 49.08 186.1 32 213.2 32H213.2zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "road-circle-xmark": [640, 512, [], "e566", "M213.2 32H288V96C288 113.7 302.3 128 320 128C337.7 128 352 113.7 352 96V32H426.8C453.9 32 478 49.08 487.1 74.63L529.8 195.2C518.9 193.1 507.6 192 496 192C436.5 192 383.9 221.6 352 266.8V224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224V288C288 305.7 302.3 320 320 320C322.3 320 324.6 319.7 326.8 319.3C322.4 334.7 320 351.1 320 368C320 373.4 320.2 378.7 320.7 384L320 384C302.3 384 288 398.3 288 416V480H86.61C56.45 480 32 455.5 32 425.4C32 419.2 33.06 413 35.13 407.2L152.9 74.63C161.1 49.08 186.1 32 213.2 32H213.2zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM518.6 368L555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368z"], + "road-lock": [640, 512, [], "e567", "M288 96C288 113.7 302.3 128 320 128C337.7 128 352 113.7 352 96V32H426.8C453.9 32 478 49.08 487.1 74.63L517.5 160.5C460.6 165.8 416 213.7 416 272V296.6C396.9 307.6 384 328.3 384 352V480H352V416C352 398.3 337.7 384 320 384C302.3 384 288 398.3 288 416V480H86.61C56.45 480 32 455.5 32 425.4C32 419.2 33.06 413 35.13 407.2L152.9 74.63C161.1 49.08 186.1 32 213.2 32H287.1L288 96zM352 224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224V288C288 305.7 302.3 320 320 320C337.7 320 352 305.7 352 288V224zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "road-spikes": [640, 512, [], "e568", "M64 116.8C64 101 84.53 94.79 93.31 107.1L192 255.1V116.8C192 101 212.5 94.79 221.3 107.1L320 255.1V116.8C320 101 340.5 94.79 349.3 107.1L448 255.1V116.8C448 101 468.5 94.79 477.3 107.1L606.8 302.2C621 323.5 605.8 351.1 580.2 351.1H64L64 116.8zM608 383.1C625.7 383.1 640 398.3 640 415.1C640 433.7 625.7 447.1 608 447.1H32C14.33 447.1 0 433.7 0 415.1C0 398.3 14.33 383.1 32 383.1H608z"], + "robot": [640, 512, [129302], "f544", "M9.375 233.4C3.375 239.4 0 247.5 0 256v128c0 8.5 3.375 16.62 9.375 22.62S23.5 416 32 416h32V224H32C23.5 224 15.38 227.4 9.375 233.4zM464 96H352V32c0-17.62-14.38-32-32-32S288 14.38 288 32v64H176C131.8 96 96 131.8 96 176V448c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V176C544 131.8 508.3 96 464 96zM256 416H192v-32h64V416zM224 296C201.9 296 184 278.1 184 256S201.9 216 224 216S264 233.9 264 256S246.1 296 224 296zM352 416H288v-32h64V416zM448 416h-64v-32h64V416zM416 296c-22.12 0-40-17.88-40-40S393.9 216 416 216S456 233.9 456 256S438.1 296 416 296zM630.6 233.4C624.6 227.4 616.5 224 608 224h-32v192h32c8.5 0 16.62-3.375 22.62-9.375S640 392.5 640 384V256C640 247.5 636.6 239.4 630.6 233.4z"], + "rocket": [512, 512, [], "f135", "M156.6 384.9L125.7 353.1C117.2 345.5 114.2 333.1 117.1 321.8C120.1 312.9 124.1 301.3 129.8 288H24C15.38 288 7.414 283.4 3.146 275.9C-1.123 268.4-1.042 259.2 3.357 251.8L55.83 163.3C68.79 141.4 92.33 127.1 117.8 127.1H200C202.4 124 204.8 120.3 207.2 116.7C289.1-4.07 411.1-8.142 483.9 5.275C495.6 7.414 504.6 16.43 506.7 28.06C520.1 100.9 516.1 222.9 395.3 304.8C391.8 307.2 387.1 309.6 384 311.1V394.2C384 419.7 370.6 443.2 348.7 456.2L260.2 508.6C252.8 513 243.6 513.1 236.1 508.9C228.6 504.6 224 496.6 224 488V380.8C209.9 385.6 197.6 389.7 188.3 392.7C177.1 396.3 164.9 393.2 156.6 384.9V384.9zM384 167.1C406.1 167.1 424 150.1 424 127.1C424 105.9 406.1 87.1 384 87.1C361.9 87.1 344 105.9 344 127.1C344 150.1 361.9 167.1 384 167.1z"], + "rotate": [512, 512, [128260, "sync-alt"], "f2f1", "M449.9 39.96l-48.5 48.53C362.5 53.19 311.4 32 256 32C161.5 32 78.59 92.34 49.58 182.2c-5.438 16.81 3.797 34.88 20.61 40.28c16.97 5.5 34.86-3.812 40.3-20.59C130.9 138.5 189.4 96 256 96c37.96 0 73 14.18 100.2 37.8L311.1 178C295.1 194.8 306.8 223.4 330.4 224h146.9C487.7 223.7 496 215.3 496 204.9V59.04C496 34.99 466.9 22.95 449.9 39.96zM441.8 289.6c-16.94-5.438-34.88 3.812-40.3 20.59C381.1 373.5 322.6 416 256 416c-37.96 0-73-14.18-100.2-37.8L200 334C216.9 317.2 205.2 288.6 181.6 288H34.66C24.32 288.3 16 296.7 16 307.1v145.9c0 24.04 29.07 36.08 46.07 19.07l48.5-48.53C149.5 458.8 200.6 480 255.1 480c94.45 0 177.4-60.34 206.4-150.2C467.9 313 458.6 294.1 441.8 289.6z"], + "rotate-left": [512, 512, ["rotate-back", "rotate-backward", "undo-alt"], "f2ea", "M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.84 0-95.17-15.58-134.2-44.86c-14.12-10.59-16.97-30.66-6.375-44.81c10.59-14.12 30.62-16.94 44.81-6.375c27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256s-71.69-159.8-159.8-159.8c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04c0-24.04 29.07-36.08 46.07-19.07l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"], + "rotate-right": [512, 512, ["redo-alt", "rotate-forward"], "f2f9", "M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2c0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64c-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31c18.48 0 31.97 15.04 31.97 31.96c0 35.04-81.59 70.41-147 70.41c-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26l47.6-47.63C455.5 34.57 462.3 32.11 468.9 32.11z"], + "route": [512, 512, [], "f4d7", "M320 256C302.3 256 288 270.3 288 288C288 305.7 302.3 320 320 320H416C469 320 512 362.1 512 416C512 469 469 512 416 512H139.6C148.3 502.1 158.9 489.4 169.6 475.2C175.9 466.8 182.4 457.6 188.6 448H416C433.7 448 448 433.7 448 416C448 398.3 433.7 384 416 384H320C266.1 384 223.1 341 223.1 288C223.1 234.1 266.1 192 320 192H362.1C340.2 161.5 320 125.4 320 96C320 42.98 362.1 0 416 0C469 0 512 42.98 512 96C512 160 416 256 416 256H320zM416 128C433.7 128 448 113.7 448 96C448 78.33 433.7 64 416 64C398.3 64 384 78.33 384 96C384 113.7 398.3 128 416 128zM118.3 487.8C118.1 488 117.9 488.2 117.7 488.4C113.4 493.4 109.5 497.7 106.3 501.2C105.9 501.6 105.5 502 105.2 502.4C99.5 508.5 96 512 96 512C96 512 0 416 0 352C0 298.1 42.98 255.1 96 255.1C149 255.1 192 298.1 192 352C192 381.4 171.8 417.5 149.9 448C138.1 463.2 127.7 476.9 118.3 487.8L118.3 487.8zM95.1 384C113.7 384 127.1 369.7 127.1 352C127.1 334.3 113.7 320 95.1 320C78.33 320 63.1 334.3 63.1 352C63.1 369.7 78.33 384 95.1 384z"], + "rss": [448, 512, ["feed"], "f09e", "M25.57 176.1C12.41 175.4 .9117 185.2 .0523 198.4s9.173 24.65 22.39 25.5c120.1 7.875 225.7 112.7 233.6 233.6C256.9 470.3 267.4 480 279.1 480c.5313 0 1.062-.0313 1.594-.0625c13.22-.8438 23.25-12.28 22.39-25.5C294.6 310.3 169.7 185.4 25.57 176.1zM32 32C14.33 32 0 46.31 0 64s14.33 32 32 32c194.1 0 352 157.9 352 352c0 17.69 14.33 32 32 32s32-14.31 32-32C448 218.6 261.4 32 32 32zM63.1 351.9C28.63 351.9 0 380.6 0 416s28.63 64 63.1 64s64.08-28.62 64.08-64S99.37 351.9 63.1 351.9z"], + "ruble-sign": [384, 512, [8381, "rouble", "rub", "ruble"], "f158", "M240 32C319.5 32 384 96.47 384 176C384 255.5 319.5 320 240 320H128V352H288C305.7 352 320 366.3 320 384C320 401.7 305.7 416 288 416H128V448C128 465.7 113.7 480 96 480C78.33 480 64 465.7 64 448V416H32C14.33 416 0 401.7 0 384C0 366.3 14.33 352 32 352H64V320H32C14.33 320 0 305.7 0 288C0 270.3 14.33 256 32 256H64V64C64 46.33 78.33 32 96 32H240zM320 176C320 131.8 284.2 96 240 96H128V256H240C284.2 256 320 220.2 320 176z"], + "rug": [640, 512, [], "e569", "M80 64V448H24C10.75 448 0 437.3 0 424C0 410.7 10.75 400 24 400H32V360H24C10.75 360 0 349.3 0 336C0 322.7 10.75 312 24 312H32V280H24C10.75 280 0 269.3 0 256C0 242.7 10.75 232 24 232H32V200H24C10.75 200 0 189.3 0 176C0 162.7 10.75 152 24 152H32V112H24C10.75 112 0 101.3 0 88C0 74.75 10.75 64 24 64H80zM112 64H528V448H112V64zM616 112H608V152H616C629.3 152 640 162.7 640 176C640 189.3 629.3 200 616 200H608V232H616C629.3 232 640 242.7 640 256C640 269.3 629.3 280 616 280H608V312H616C629.3 312 640 322.7 640 336C640 349.3 629.3 360 616 360H608V400H616C629.3 400 640 410.7 640 424C640 437.3 629.3 448 616 448H560V64H616C629.3 64 640 74.75 640 88C640 101.3 629.3 112 616 112z"], + "ruler": [512, 512, [128207], "f545", "M177.9 494.1C159.2 512.8 128.8 512.8 110.1 494.1L17.94 401.9C-.8054 383.2-.8054 352.8 17.94 334.1L68.69 283.3L116.7 331.3C122.9 337.6 133.1 337.6 139.3 331.3C145.6 325.1 145.6 314.9 139.3 308.7L91.31 260.7L132.7 219.3L180.7 267.3C186.9 273.6 197.1 273.6 203.3 267.3C209.6 261.1 209.6 250.9 203.3 244.7L155.3 196.7L196.7 155.3L244.7 203.3C250.9 209.6 261.1 209.6 267.3 203.3C273.6 197.1 273.6 186.9 267.3 180.7L219.3 132.7L260.7 91.31L308.7 139.3C314.9 145.6 325.1 145.6 331.3 139.3C337.6 133.1 337.6 122.9 331.3 116.7L283.3 68.69L334.1 17.94C352.8-.8055 383.2-.8055 401.9 17.94L494.1 110.1C512.8 128.8 512.8 159.2 494.1 177.9L177.9 494.1z"], + "ruler-combined": [512, 512, [], "f546", "M0 464V48C0 21.49 21.49 0 48 0H144C170.5 0 192 21.49 192 48V96H112C103.2 96 96 103.2 96 112C96 120.8 103.2 128 112 128H192V192H112C103.2 192 96 199.2 96 208C96 216.8 103.2 224 112 224H192V288H112C103.2 288 96 295.2 96 304C96 312.8 103.2 320 112 320H192V400C192 408.8 199.2 416 208 416C216.8 416 224 408.8 224 400V320H288V400C288 408.8 295.2 416 304 416C312.8 416 320 408.8 320 400V320H384V400C384 408.8 391.2 416 400 416C408.8 416 416 408.8 416 400V320H464C490.5 320 512 341.5 512 368V464C512 490.5 490.5 512 464 512H48C23.15 512 2.706 493.1 .2477 468.9C.0838 467.3 0 465.7 0 464z"], + "ruler-horizontal": [640, 512, [], "f547", "M0 176C0 149.5 21.49 128 48 128H112V208C112 216.8 119.2 224 128 224C136.8 224 144 216.8 144 208V128H208V208C208 216.8 215.2 224 224 224C232.8 224 240 216.8 240 208V128H304V208C304 216.8 311.2 224 320 224C328.8 224 336 216.8 336 208V128H400V208C400 216.8 407.2 224 416 224C424.8 224 432 216.8 432 208V128H496V208C496 216.8 503.2 224 512 224C520.8 224 528 216.8 528 208V128H592C618.5 128 640 149.5 640 176V336C640 362.5 618.5 384 592 384H48C21.49 384 0 362.5 0 336V176z"], + "ruler-vertical": [256, 512, [], "f548", "M0 48C0 21.49 21.49 0 48 0H208C234.5 0 256 21.49 256 48V96H176C167.2 96 160 103.2 160 112C160 120.8 167.2 128 176 128H256V192H176C167.2 192 160 199.2 160 208C160 216.8 167.2 224 176 224H256V288H176C167.2 288 160 295.2 160 304C160 312.8 167.2 320 176 320H256V384H176C167.2 384 160 391.2 160 400C160 408.8 167.2 416 176 416H256V464C256 490.5 234.5 512 208 512H48C21.49 512 0 490.5 0 464V48z"], + "rupee-sign": [448, 512, [8360, "rupee"], "f156", "M.0003 64C.0003 46.33 14.33 32 32 32H112C191.5 32 256 96.47 256 176C256 234.8 220.8 285.3 170.3 307.7L221.7 436.1C228.3 452.5 220.3 471.1 203.9 477.7C187.5 484.3 168.9 476.3 162.3 459.9L106.3 320H64V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448L.0003 64zM64 256H112C156.2 256 192 220.2 192 176C192 131.8 156.2 96 112 96H64V256zM320.8 282.2C321.3 283.3 322.2 284.8 325 287.1C332.2 292.8 343.7 297.1 362.9 303.8L364.2 304.3C380.3 309.1 402.9 317.9 419.1 332.4C429.5 340.5 437.9 351 443 364.7C448.1 378.4 449.1 393.2 446.8 408.7C442.7 436.8 426.4 457.1 403.1 469.6C381 480.7 354.9 482.1 329.9 477.6L329.7 477.5C320.4 475.8 309.2 471.8 300.5 468.6C294.4 466.3 287.9 463.7 282.7 461.6C280.2 460.6 278.1 459.8 276.4 459.1C259.9 452.7 251.8 434.2 258.2 417.7C264.6 401.2 283.1 393.1 299.6 399.5C302.2 400.5 304.8 401.5 307.5 402.6C312.3 404.5 317.4 406.5 322.9 408.6C331.7 411.9 338.2 413.1 341.6 414.6C357.2 417.5 368.3 415.5 374.5 412.4C379.4 409.9 382.5 406.3 383.5 399.3C384.5 392.4 383.7 388.8 383.1 387.1C382.4 385.4 381.3 383.5 378.6 381.2C371.7 375.4 360.4 370.8 341.6 364.2L338.6 363.1C323.1 357.7 301.6 350.2 285.3 337.2C275.8 329.7 266.1 319.7 261.5 306.3C256.1 292.8 254.9 278.2 257.2 263.1C265.6 205.1 324.2 185.1 374.1 194.2C380.1 195.5 401.4 200 409.5 202.6C426.4 207.8 435.8 225.7 430.6 242.6C425.3 259.5 407.4 268.9 390.5 263.7C385.8 262.2 368.2 258.2 362.6 257.2C347.1 254.5 336.8 256.8 329.1 260.4C323.7 263.7 321.1 267.1 320.5 272.4C319.6 278.4 320.4 281.2 320.8 282.2H320.8z"], + "rupiah-sign": [512, 512, [], "e23d", "M.0003 64C.0003 46.33 14.33 32 32 32H112C191.5 32 256 96.47 256 176C256 234.8 220.8 285.3 170.3 307.7L221.7 436.1C228.3 452.5 220.3 471.1 203.9 477.7C187.5 484.3 168.9 476.3 162.3 459.9L106.3 320H64V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448L.0003 64zM64 256H112C156.2 256 192 220.2 192 176C192 131.8 156.2 96 112 96H64V256zM400 160C461.9 160 512 210.1 512 272C512 333.9 461.9 384 400 384H352V480C352 497.7 337.7 512 320 512C302.3 512 288 497.7 288 480V192C288 174.3 302.3 160 320 160H400zM448 272C448 245.5 426.5 224 400 224H352V320H400C426.5 320 448 298.5 448 272z"], + "s": [384, 512, [115], "53", "M349.9 379.1c-6.281 36.63-25.89 65.02-56.69 82.11c-24.91 13.83-54.08 18.98-83.73 18.98c-61.86 0-125.8-22.42-157.5-35.38c-16.38-6.672-24.22-25.34-17.55-41.7c6.641-16.36 25.27-24.28 41.7-17.55c77.56 31.64 150.6 39.39 186.1 19.69c13.83-7.672 21.67-19.42 24.69-36.98c7.25-42.31-18.2-56.75-103.7-81.38C112.6 266.6 15.98 238.7 34.11 133.2c5.484-32 23.64-59.36 51.14-77.02c45.59-29.33 115-31.87 206.4-7.688c17.09 4.531 27.27 22.05 22.75 39.13s-22.06 27.23-39.13 22.75C184 86.17 140.4 96.81 119.8 110c-12.55 8.062-20.17 19.5-22.66 34c-7.266 42.31 18.19 56.75 103.7 81.38C271.4 245.7 368 273.5 349.9 379.1z"], + "sack-dollar": [512, 512, [128176], "f81d", "M320 96H192L144.6 24.88C137.5 14.24 145.1 0 157.9 0H354.1C366.9 0 374.5 14.24 367.4 24.88L320 96zM192 128H320C323.8 130.5 328.1 133.3 332.1 136.4C389.7 172.7 512 250.9 512 416C512 469 469 512 416 512H96C42.98 512 0 469 0 416C0 250.9 122.3 172.7 179 136.4C183.9 133.3 188.2 130.5 192 128V128zM276.1 224C276.1 212.9 267.1 203.9 255.1 203.9C244.9 203.9 235.9 212.9 235.9 224V230C230.3 231.2 224.1 232.9 220 235.1C205.1 241.9 192.1 254.5 188.9 272.8C187.1 283 188.1 292.9 192.3 301.8C196.5 310.6 203 316.8 209.6 321.3C221.2 329.2 236.5 333.8 248.2 337.3L250.4 337.9C264.4 342.2 273.8 345.3 279.7 349.6C282.2 351.4 283.1 352.8 283.4 353.7C283.8 354.5 284.4 356.3 283.7 360.3C283.1 363.8 281.2 366.8 275.7 369.1C269.6 371.7 259.7 373 246.9 371C240.9 370 230.2 366.4 220.7 363.2C218.5 362.4 216.3 361.7 214.3 361C203.8 357.5 192.5 363.2 189 373.7C185.5 384.2 191.2 395.5 201.7 398.1C202.9 399.4 204.4 399.9 206.1 400.5C213.1 403.2 226.4 407.4 235.9 409.6V416C235.9 427.1 244.9 436.1 255.1 436.1C267.1 436.1 276.1 427.1 276.1 416V410.5C281.4 409.5 286.6 407.1 291.4 405.9C307.2 399.2 319.8 386.2 323.1 367.2C324.9 356.8 324.1 346.8 320.1 337.7C316.2 328.7 309.9 322.1 303.2 317.3C291.1 308.4 274.9 303.6 262.8 299.9L261.1 299.7C247.8 295.4 238.2 292.4 232.1 288.2C229.5 286.4 228.7 285.2 228.5 284.7C228.3 284.3 227.7 283.1 228.3 279.7C228.7 277.7 230.2 274.4 236.5 271.6C242.1 268.7 252.9 267.1 265.1 268.1C269.5 269.7 283 272.3 286.9 273.3C297.5 276.2 308.5 269.8 311.3 259.1C314.2 248.5 307.8 237.5 297.1 234.7C292.7 233.5 282.7 231.5 276.1 230.3L276.1 224z"], + "sack-xmark": [512, 512, [], "e56a", "M144.6 24.88C137.5 14.24 145.1 0 157.9 0H354.1C366.9 0 374.5 14.24 367.4 24.88L320 96H192L144.6 24.88zM332.1 136.4C389.7 172.7 512 250.9 512 416C512 469 469 512 416 512H96C42.98 512 0 469 0 416C0 250.9 122.3 172.7 179 136.4C183.9 133.3 188.2 130.5 192 128H320C323.8 130.5 328.1 133.3 332.1 136.4V136.4zM336.1 288.1C346.3 279.6 346.3 264.4 336.1 255C327.6 245.7 312.4 245.7 303 255L256 302.1L208.1 255C199.6 245.7 184.4 245.7 175 255C165.7 264.4 165.7 279.6 175 288.1L222.1 336L175 383C165.7 392.4 165.7 407.6 175 416.1C184.4 426.3 199.6 426.3 208.1 416.1L256 369.9L303 416.1C312.4 426.3 327.6 426.3 336.1 416.1C346.3 407.6 346.3 392.4 336.1 383L289.9 336L336.1 288.1z"], + "sailboat": [576, 512, [], "e445", "M256 16C256 9.018 260.5 2.841 267.2 .7414C273.9-1.358 281.1 1.105 285.1 6.826L509.1 326.8C512.5 331.7 512.9 338.1 510.2 343.4C507.4 348.7 501.1 352 496 352H272C263.2 352 256 344.8 256 336V16zM212.1 96.54C219.1 98.4 224 104.7 224 112V336C224 344.8 216.8 352 208 352H80C74.3 352 69.02 348.1 66.16 344C63.3 339.1 63.28 333 66.11 328.1L194.1 104.1C197.7 97.76 205.1 94.68 212.1 96.54V96.54zM5.718 404.3C2.848 394.1 10.52 384 21.12 384H554.9C565.5 384 573.2 394.1 570.3 404.3L566.3 418.7C550.7 473.9 500.4 512 443 512H132.1C75.62 512 25.27 473.9 9.747 418.7L5.718 404.3z"], + "satellite": [512, 512, [128752], "f7bf", "M502.8 264.1l-80.37-80.37l47.87-47.88c13-13.12 13-34.37 0-47.5l-47.5-47.5c-13.12-13.12-34.38-13.12-47.5 0l-47.88 47.88L247.1 9.25C241 3.375 232.9 0 224.5 0c-8.5 0-16.62 3.375-22.5 9.25l-96.75 96.75c-12.38 12.5-12.38 32.62 0 45.12L185.5 231.5L175.8 241.4c-54-24.5-116.3-22.5-168.5 5.375c-8.498 4.625-9.623 16.38-2.873 23.25l107.6 107.5l-17.88 17.75c-2.625-.75-5-1.625-7.75-1.625c-17.75 0-32 14.38-32 32c0 17.75 14.25 32 32 32c17.62 0 32-14.25 32-32c0-2.75-.875-5.125-1.625-7.75l17.75-17.88l107.6 107.6c6.75 6.75 18.62 5.625 23.12-2.875c27.88-52.25 29.88-114.5 5.375-168.5l10-9.873l80.25 80.36c12.5 12.38 32.62 12.38 44.1 0l96.75-96.75C508.6 304.1 512 295.1 512 287.5C512 279.1 508.6 270.1 502.8 264.1zM219.5 197.4L150.6 128.5l73.87-73.75l68.86 68.88L219.5 197.4zM383.5 361.4L314.6 292.5l73.75-73.88l68.88 68.87L383.5 361.4z"], + "satellite-dish": [512, 512, [128225], "f7c0", "M216 104C202.8 104 192 114.8 192 128s10.75 24 24 24c79.41 0 144 64.59 144 144C360 309.3 370.8 320 384 320s24-10.75 24-24C408 190.1 321.9 104 216 104zM224 0C206.3 0 192 14.31 192 32s14.33 32 32 32c123.5 0 224 100.5 224 224c0 17.69 14.33 32 32 32s32-14.31 32-32C512 129.2 382.8 0 224 0zM188.9 346l27.37-27.37c2.625 .625 5.059 1.506 7.809 1.506c17.75 0 31.99-14.26 31.99-32c0-17.62-14.24-32.01-31.99-32.01c-17.62 0-31.99 14.38-31.99 32.01c0 2.875 .8099 5.25 1.56 7.875L166.2 323.4L49.37 206.5c-7.25-7.25-20.12-6-24.1 3c-41.75 77.88-29.88 176.7 35.75 242.4c65.62 65.62 164.6 77.5 242.4 35.75c9.125-5 10.38-17.75 3-25L188.9 346z"], + "scale-balanced": [640, 512, [9878, "balance-scale"], "f24e", "M554.9 154.5c-17.62-35.25-68.12-35.38-85.87 0c-87 174.3-84.1 165.9-84.1 181.5c0 44.13 57.25 80 128 80s127.1-35.88 127.1-80C639.1 319.9 641.4 327.3 554.9 154.5zM439.1 320l71.96-144l72.17 144H439.1zM256 336c0-16.12 1.375-8.75-85.12-181.5c-17.62-35.25-68.12-35.38-85.87 0c-87 174.3-84.1 165.9-84.1 181.5c0 44.13 57.25 80 127.1 80S256 380.1 256 336zM127.9 176L200.1 320H55.96L127.9 176zM495.1 448h-143.1V153.3C375.5 143 393.1 121.8 398.4 96h113.6c17.67 0 31.1-14.33 31.1-32s-14.33-32-31.1-32h-128.4c-14.62-19.38-37.5-32-63.62-32S270.1 12.62 256.4 32H128C110.3 32 96 46.33 96 64S110.3 96 127.1 96h113.6c5.25 25.75 22.87 47 46.37 57.25V448H144c-26.51 0-48.01 21.49-48.01 48c0 8.836 7.165 16 16 16h416c8.836 0 16-7.164 16-16C544 469.5 522.5 448 495.1 448z"], + "scale-unbalanced": [640, 512, ["balance-scale-left"], "f515", "M85 250.5c-87 174.2-84.1 165.9-84.1 181.5C.0035 476.1 57.25 512 128 512s128-35.88 128-79.1c0-16.12 1.375-8.752-85.12-181.5C153.3 215.3 102.8 215.1 85 250.5zM55.96 416l71.98-143.1l72.15 143.1H55.96zM554.9 122.5c-17.62-35.25-68.08-35.37-85.83 0c-87 174.2-85.04 165.9-85.04 181.5c0 44.12 57.25 79.1 128 79.1s127.1-35.87 127.1-79.1C639.1 287.9 641.4 295.3 554.9 122.5zM439.1 288l72.04-143.1l72.08 143.1H439.1zM495.1 448h-143.1V153.3c20.83-9.117 36.72-26.93 43.78-48.77l126.3-42.11c16.77-5.594 25.83-23.72 20.23-40.48c-5.578-16.73-23.62-25.86-40.48-20.23l-113.3 37.76c-13.94-23.49-39.29-39.41-68.58-39.41c-44.18 0-79.1 35.82-79.1 80c0 2.961 .5587 5.771 .8712 8.648L117.9 129.7C101.1 135.3 92.05 153.4 97.64 170.1c4.469 13.41 16.95 21.88 30.36 21.88c3.344 0 6.768-.5186 10.13-1.644L273.8 145.1C278.2 148.3 282.1 151.1 288 153.3V496C288 504.8 295.2 512 304 512h223.1c8.838 0 16-7.164 16-15.1C543.1 469.5 522.5 448 495.1 448z"], + "scale-unbalanced-flip": [640, 512, ["balance-scale-right"], "f516", "M554.9 250.5c-17.62-35.37-68.12-35.25-85.87 0c-86.38 172.7-85.04 165.4-85.04 181.5C383.1 476.1 441.3 512 512 512s127.1-35.88 127.1-79.1C639.1 416.4 642 424.7 554.9 250.5zM439.9 416l72.15-143.1l71.98 143.1H439.9zM512 192c13.41 0 25.89-8.471 30.36-21.88c5.594-16.76-3.469-34.89-20.23-40.48l-122.1-40.1c.3125-2.877 .8712-5.687 .8712-8.648c0-44.18-35.81-80-79.1-80c-29.29 0-54.65 15.92-68.58 39.41l-113.3-37.76C121.3-3.963 103.2 5.162 97.64 21.9C92.05 38.66 101.1 56.78 117.9 62.38l126.3 42.11c7.061 21.84 22.95 39.65 43.78 48.77v294.7H144c-26.51 0-47.1 21.49-47.1 47.1C96 504.8 103.2 512 112 512h223.1c8.836 0 15.1-7.164 15.1-15.1V153.3c5.043-2.207 9.756-4.965 14.19-8.115l135.7 45.23C505.2 191.5 508.7 192 512 192zM256 304c0-15.62 1.1-7.252-85.12-181.5c-17.62-35.37-68.08-35.25-85.83 0c-86.38 172.7-85.04 165.4-85.04 181.5c0 44.12 57.25 79.1 127.1 79.1S256 348.1 256 304zM128 144l72.04 143.1H55.92L128 144z"], + "school": [640, 512, [127979], "f549", "M320 128C328.8 128 336 135.2 336 144V160H352C360.8 160 368 167.2 368 176C368 184.8 360.8 192 352 192H320C311.2 192 304 184.8 304 176V144C304 135.2 311.2 128 320 128zM476.8 98.06L602.4 125.1C624.4 130.9 640 150.3 640 172.8V464C640 490.5 618.5 512 592 512H48C21.49 512 0 490.5 0 464V172.8C0 150.3 15.63 130.9 37.59 125.1L163.2 98.06L302.2 5.374C312.1-1.791 327-1.791 337.8 5.374L476.8 98.06zM256 512H384V416C384 380.7 355.3 352 320 352C284.7 352 256 380.7 256 416V512zM96 192C87.16 192 80 199.2 80 208V272C80 280.8 87.16 288 96 288H128C136.8 288 144 280.8 144 272V208C144 199.2 136.8 192 128 192H96zM496 272C496 280.8 503.2 288 512 288H544C552.8 288 560 280.8 560 272V208C560 199.2 552.8 192 544 192H512C503.2 192 496 199.2 496 208V272zM96 320C87.16 320 80 327.2 80 336V400C80 408.8 87.16 416 96 416H128C136.8 416 144 408.8 144 400V336C144 327.2 136.8 320 128 320H96zM496 400C496 408.8 503.2 416 512 416H544C552.8 416 560 408.8 560 400V336C560 327.2 552.8 320 544 320H512C503.2 320 496 327.2 496 336V400zM320 88C271.4 88 232 127.4 232 176C232 224.6 271.4 264 320 264C368.6 264 408 224.6 408 176C408 127.4 368.6 88 320 88z"], + "school-circle-check": [640, 512, [], "e56b", "M476.8 98.06L602.4 125.1C624.4 130.9 640 150.3 640 172.8V266.8C608.1 221.6 555.5 191.1 496 191.1C457.5 191.1 421.8 204.4 392.9 225.4C402.4 211.3 408 194.3 408 175.1C408 127.4 368.6 87.1 320 87.1C271.4 87.1 232 127.4 232 175.1C232 224.6 271.4 263.1 320 263.1C335.6 263.1 350.2 259.1 362.9 252.9C339.4 279.9 324.1 314.3 320.7 352H320.3L320 352C284.7 352 256 380.7 256 416V512L320 512H48C21.49 512 0 490.5 0 464V172.8C0 150.3 15.63 130.9 37.59 125.1L163.2 98.06L302.2 5.374C312.1-1.791 327-1.791 337.8 5.374L476.8 98.06zM96 192C87.16 192 80 199.2 80 208V272C80 280.8 87.16 288 96 288H128C136.8 288 144 280.8 144 272V208C144 199.2 136.8 192 128 192H96zM96 320C87.16 320 80 327.2 80 336V400C80 408.8 87.16 416 96 416H128C136.8 416 144 408.8 144 400V336C144 327.2 136.8 320 128 320H96zM320 128C328.8 128 336 135.2 336 144V160H352C360.8 160 368 167.2 368 176C368 184.8 360.8 192 352 192H320C311.2 192 304 184.8 304 176V144C304 135.2 311.2 128 320 128zM640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368zM480 385.4L451.3 356.7C445.1 350.4 434.9 350.4 428.7 356.7C422.4 362.9 422.4 373.1 428.7 379.3L468.7 419.3C474.9 425.6 485.1 425.6 491.3 419.3L563.3 347.3C569.6 341.1 569.6 330.9 563.3 324.7C557.1 318.4 546.9 318.4 540.7 324.7L480 385.4z"], + "school-circle-exclamation": [640, 512, [], "e56c", "M476.8 98.06L602.4 125.1C624.4 130.9 640 150.3 640 172.8V266.8C608.1 221.6 555.5 191.1 496 191.1C457.5 191.1 421.8 204.4 392.9 225.4C402.4 211.3 408 194.3 408 175.1C408 127.4 368.6 87.1 320 87.1C271.4 87.1 232 127.4 232 175.1C232 224.6 271.4 263.1 320 263.1C335.6 263.1 350.2 259.1 362.9 252.9C339.4 279.9 324.1 314.3 320.7 352H320.3L320 352C284.7 352 256 380.7 256 416V512L320 512H48C21.49 512 0 490.5 0 464V172.8C0 150.3 15.63 130.9 37.59 125.1L163.2 98.06L302.2 5.374C312.1-1.791 327-1.791 337.8 5.374L476.8 98.06zM96 192C87.16 192 80 199.2 80 208V272C80 280.8 87.16 288 96 288H128C136.8 288 144 280.8 144 272V208C144 199.2 136.8 192 128 192H96zM96 320C87.16 320 80 327.2 80 336V400C80 408.8 87.16 416 96 416H128C136.8 416 144 408.8 144 400V336C144 327.2 136.8 320 128 320H96zM320 128C328.8 128 336 135.2 336 144V160H352C360.8 160 368 167.2 368 176C368 184.8 360.8 192 352 192H320C311.2 192 304 184.8 304 176V144C304 135.2 311.2 128 320 128zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "school-circle-xmark": [640, 512, [], "e56d", "M476.8 98.06L602.4 125.1C624.4 130.9 640 150.3 640 172.8V266.8C608.1 221.6 555.5 191.1 496 191.1C457.5 191.1 421.8 204.4 392.9 225.4C402.4 211.3 408 194.3 408 175.1C408 127.4 368.6 87.1 320 87.1C271.4 87.1 232 127.4 232 175.1C232 224.6 271.4 263.1 320 263.1C335.6 263.1 350.2 259.1 362.9 252.9C339.4 279.9 324.1 314.3 320.7 352H320.3L320 352C284.7 352 256 380.7 256 416V512L320 512H48C21.49 512 0 490.5 0 464V172.8C0 150.3 15.63 130.9 37.59 125.1L163.2 98.06L302.2 5.374C312.1-1.791 327-1.791 337.8 5.374L476.8 98.06zM96 192C87.16 192 80 199.2 80 208V272C80 280.8 87.16 288 96 288H128C136.8 288 144 280.8 144 272V208C144 199.2 136.8 192 128 192H96zM96 320C87.16 320 80 327.2 80 336V400C80 408.8 87.16 416 96 416H128C136.8 416 144 408.8 144 400V336C144 327.2 136.8 320 128 320H96zM320 128C328.8 128 336 135.2 336 144V160H352C360.8 160 368 167.2 368 176C368 184.8 360.8 192 352 192H320C311.2 192 304 184.8 304 176V144C304 135.2 311.2 128 320 128zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM518.6 368L555.3 331.3C561.6 325.1 561.6 314.9 555.3 308.7C549.1 302.4 538.9 302.4 532.7 308.7L496 345.4L459.3 308.7C453.1 302.4 442.9 302.4 436.7 308.7C430.4 314.9 430.4 325.1 436.7 331.3L473.4 368L436.7 404.7C430.4 410.9 430.4 421.1 436.7 427.3C442.9 433.6 453.1 433.6 459.3 427.3L496 390.6L532.7 427.3C538.9 433.6 549.1 433.6 555.3 427.3C561.6 421.1 561.6 410.9 555.3 404.7L518.6 368z"], + "school-flag": [576, 512, [], "e56e", "M288 0H400C408.8 0 416 7.164 416 16V64C416 72.84 408.8 80 400 80H320V95.53L410.3 160H512C547.3 160 576 188.7 576 224V448C576 483.3 547.3 512 512 512H336V400C336 373.5 314.5 352 288 352C261.5 352 240 373.5 240 400V512H64C28.65 512 0 483.3 0 448V224C0 188.7 28.65 160 64 160H165.7L256 95.53V32C256 14.33 270.3 0 288 0V0zM288 192C261.5 192 240 213.5 240 240C240 266.5 261.5 288 288 288C314.5 288 336 266.5 336 240C336 213.5 314.5 192 288 192zM80 224C71.16 224 64 231.2 64 240V304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V240C128 231.2 120.8 224 112 224H80zM448 304C448 312.8 455.2 320 464 320H496C504.8 320 512 312.8 512 304V240C512 231.2 504.8 224 496 224H464C455.2 224 448 231.2 448 240V304zM80 352C71.16 352 64 359.2 64 368V432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V368C128 359.2 120.8 352 112 352H80zM464 352C455.2 352 448 359.2 448 368V432C448 440.8 455.2 448 464 448H496C504.8 448 512 440.8 512 432V368C512 359.2 504.8 352 496 352H464z"], + "school-lock": [640, 512, [], "e56f", "M336 160H352C360.8 160 368 167.2 368 176C368 184.8 360.8 192 352 192H320C311.2 192 304 184.8 304 176V144C304 135.2 311.2 128 320 128C328.8 128 336 135.2 336 144V160zM302.2 5.374C312.1-1.791 327-1.791 337.8 5.374L476.8 98.06L602.4 125.1C624.4 130.9 640 150.3 640 172.8V271.1C640 210.1 589.9 159.1 528 159.1C466.1 159.1 416 210.1 416 271.1V296.6C396.9 307.6 384 328.3 384 352H320.3L320 352C284.7 352 256 380.7 256 416V512H320L48 512C21.49 512 0 490.5 0 464V172.8C0 150.3 15.63 130.9 37.59 125.1L163.2 98.06L302.2 5.374zM80 272C80 280.8 87.16 288 96 288H128C136.8 288 144 280.8 144 272V208C144 199.2 136.8 192 128 192H96C87.16 192 80 199.2 80 208V272zM80 400C80 408.8 87.16 416 96 416H128C136.8 416 144 408.8 144 400V336C144 327.2 136.8 320 128 320H96C87.16 320 80 327.2 80 336V400zM320 264C368.6 264 408 224.6 408 176C408 127.4 368.6 88 320 88C271.4 88 232 127.4 232 176C232 224.6 271.4 264 320 264zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "scissors": [512, 512, [9986, 9988, 9984, "cut"], "f0c4", "M396.8 51.2C425.1 22.92 470.9 22.92 499.2 51.2C506.3 58.27 506.3 69.73 499.2 76.8L216.5 359.5C221.3 372.1 224 385.7 224 400C224 461.9 173.9 512 112 512C50.14 512 0 461.9 0 400C0 338.1 50.14 287.1 112 287.1C126.3 287.1 139.9 290.7 152.5 295.5L191.1 255.1L152.5 216.5C139.9 221.3 126.3 224 112 224C50.14 224 0 173.9 0 112C0 50.14 50.14 0 112 0C173.9 0 224 50.14 224 112C224 126.3 221.3 139.9 216.5 152.5L255.1 191.1L396.8 51.2zM160 111.1C160 85.49 138.5 63.1 112 63.1C85.49 63.1 64 85.49 64 111.1C64 138.5 85.49 159.1 112 159.1C138.5 159.1 160 138.5 160 111.1zM112 448C138.5 448 160 426.5 160 400C160 373.5 138.5 352 112 352C85.49 352 64 373.5 64 400C64 426.5 85.49 448 112 448zM278.6 342.6L342.6 278.6L499.2 435.2C506.3 442.3 506.3 453.7 499.2 460.8C470.9 489.1 425.1 489.1 396.8 460.8L278.6 342.6z"], + "screwdriver": [512, 512, [129691], "f54a", "M128 278.6l-117.1 116.9c-14.5 14.62-14.5 38.29 0 52.79l52.75 52.75c14.5 14.5 38.17 14.5 52.79 0L233.4 384c29.12-29.12 29.12-76.25 0-105.4S157.1 249.5 128 278.6zM447.1 0l-128 96L320 158L237 241.1C243.8 245.4 250.3 250.1 256 256c5.875 5.75 10.62 12.25 14.88 19L353.1 192h61.99l95.1-128L447.1 0z"], + "screwdriver-wrench": [512, 512, ["tools"], "f7d9", "M331.8 224.1c28.29 0 54.88 10.99 74.86 30.97l19.59 19.59c40.01-17.74 71.25-53.3 81.62-96.65c5.725-23.92 5.34-47.08 .2148-68.4c-2.613-10.88-16.43-14.51-24.34-6.604l-68.9 68.9h-75.6V97.2l68.9-68.9c7.912-7.912 4.275-21.73-6.604-24.34c-21.32-5.125-44.48-5.51-68.4 .2148c-55.3 13.23-98.39 60.22-107.2 116.4C224.5 128.9 224.2 137 224.3 145l82.78 82.86C315.2 225.1 323.5 224.1 331.8 224.1zM384 278.6c-23.16-23.16-57.57-27.57-85.39-13.9L191.1 158L191.1 95.99l-127.1-95.99L0 63.1l96 127.1l62.04 .0077l106.7 106.6c-13.67 27.82-9.251 62.23 13.91 85.39l117 117.1c14.62 14.5 38.21 14.5 52.71-.0016l52.75-52.75c14.5-14.5 14.5-38.08-.0016-52.71L384 278.6zM227.9 307L168.7 247.9l-148.9 148.9c-26.37 26.37-26.37 69.08 0 95.45C32.96 505.4 50.21 512 67.5 512s34.54-6.592 47.72-19.78l119.1-119.1C225.5 352.3 222.6 329.4 227.9 307zM64 472c-13.25 0-24-10.75-24-24c0-13.26 10.75-24 24-24S88 434.7 88 448C88 461.3 77.25 472 64 472z"], + "scroll": [576, 512, [128220], "f70e", "M48 32C21.5 32 0 53.5 0 80v64C0 152.9 7.125 160 16 160H96V80C96 53.5 74.5 32 48 32zM256 380.6V320h224V128c0-53-43-96-96-96H111.6C121.8 45.38 128 61.88 128 80V384c0 38.88 34.62 69.63 74.75 63.13C234.3 442 256 412.5 256 380.6zM288 352v32c0 52.88-43 96-96 96h272c61.88 0 112-50.13 112-112c0-8.875-7.125-16-16-16H288z"], + "scroll-torah": [640, 512, ["torah"], "f6a0", "M320 366.5l17.75-29.62l-35.5 .0011L320 366.5zM382.5 311.5l36.75-.0011l-18.38-30.75L382.5 311.5zM48 0C21.5 0 0 14.38 0 32v448c0 17.62 21.5 32 48 32S96 497.6 96 480V32C96 14.38 74.5 0 48 0zM419.2 200.5L382.4 200.5l18.5 30.79L419.2 200.5zM220.8 311.5l36.87-.0012l-18.5-30.87L220.8 311.5zM287.1 311.5L352.9 311.5l33.25-55.5l-33.25-55.5L287.1 200.5L253.9 256L287.1 311.5zM592 0C565.5 0 544 14.38 544 32v448c0 17.62 21.5 32 48 32s48-14.38 48-32V32C640 14.38 618.5 0 592 0zM128 480h384V32H128V480zM194.8 185.9c3.75-6.625 10.87-10.75 18.5-10.75L272.7 175.1l29.12-48.67C305.6 119.1 312.6 116.1 319.1 116.1c7.375-.125 14.25 3.916 17.1 10.17l29.25 48.87l59.5-.0019c7.625 0 14.62 4.124 18.38 10.75s3.626 14.75-.2493 21.25l-29.25 48.87l29.38 48.1c4 6.5 4.001 14.62 .2506 21.12c-3.75 6.625-10.87 10.75-18.5 10.75l-59.5 .0019l-29.12 48.67c-3.75 6.5-10.62 10.33-18.12 10.46c-7.375 0-14.25-3.874-18-10.25l-29.25-48.87l-59.5 .0019c-7.625 0-14.62-4.124-18.37-10.75S191.3 311.4 195.1 304.9l29.25-48.87L195 207C191.1 200.5 191 192.4 194.8 185.9zM319.1 145.5L302.2 175.1l35.37-.0011L319.1 145.5zM257.5 200.5L220.8 200.5l18.38 30.83L257.5 200.5z"], + "sd-card": [384, 512, [], "f7c2", "M320 0H128L0 128v320c0 35.25 28.75 64 64 64h256c35.25 0 64-28.75 64-64V64C384 28.75 355.3 0 320 0zM160 160H112V64H160V160zM240 160H192V64h48V160zM320 160h-48V64H320V160z"], + "section": [256, 512, [], "e447", "M224.5 337.4c15.66-14.28 26.09-33.12 29.8-55.82c14.46-88.44-64.67-112.4-117-128.2L124.7 149.5C65.67 131.2 61.11 119.4 64.83 96.79c1.531-9.344 5.715-16.19 13.21-21.56c14.74-10.56 39.94-13.87 69.23-9.029c10.74 1.75 24.36 5.686 41.66 12.03c16.58 6 34.98-2.438 41.04-19.06c6.059-16.59-2.467-34.97-19.05-41.06c-21.39-7.842-38.35-12.62-53.28-15.06c-46.47-7.781-88.1-.5313-116.9 20.19C19.46 38.52 5.965 60.39 1.686 86.48C-5.182 128.6 9.839 156 31.47 174.7C15.87 188.1 5.406 207.8 1.686 230.5C-12.59 317.9 67.36 342.7 105.7 354.6l12.99 3.967c64.71 19.56 76.92 29.09 72.42 56.59c-1.279 7.688-4.84 18.75-21.23 26.16c-15.27 6.906-37.01 8.406-61.4 4.469c-16.74-2.656-37.32-10.5-55.49-17.41l-9.773-3.719c-16.52-6.156-34.95 2.25-41.16 18.75c-6.184 16.56 2.186 34.1 18.74 41.19l9.463 3.594c21.05 8 44.94 17.12 68.02 20.75c12.21 2.031 24.14 3.032 35.54 3.032c23.17 0 44.28-4.157 62.4-12.34c31.95-14.44 52.53-40.75 58.02-74.12C261.1 383.6 246.8 356.3 224.5 337.4zM64.83 240.8c3.303-20.28 21.22-28.1 38.09-31.04c.9258 .2891 15.81 4.852 15.81 4.852c64.71 19.56 76.92 29.09 72.39 56.62c-3.291 20.2-21.12 28.07-37.93 31.04c-5.488-1.746-28.49-8.754-28.49-8.754C65.67 275.2 61.11 263.4 64.83 240.8z"], + "seedling": [512, 512, [127793, "sprout"], "f4d8", "M64 95.1H0c0 123.8 100.3 224 224 224v128C224 465.6 238.4 480 255.1 480S288 465.6 288 448V320C288 196.3 187.7 95.1 64 95.1zM448 32c-84.25 0-157.4 46.5-195.8 115.3c27.75 30.12 48.25 66.88 59 107.5C424 243.1 512 147.9 512 32H448z"], + "server": [512, 512, [], "f233", "M480 288H32c-17.62 0-32 14.38-32 32v128c0 17.62 14.38 32 32 32h448c17.62 0 32-14.38 32-32v-128C512 302.4 497.6 288 480 288zM352 408c-13.25 0-24-10.75-24-24s10.75-24 24-24s24 10.75 24 24S365.3 408 352 408zM416 408c-13.25 0-24-10.75-24-24s10.75-24 24-24s24 10.75 24 24S429.3 408 416 408zM480 32H32C14.38 32 0 46.38 0 64v128c0 17.62 14.38 32 32 32h448c17.62 0 32-14.38 32-32V64C512 46.38 497.6 32 480 32zM352 152c-13.25 0-24-10.75-24-24S338.8 104 352 104S376 114.8 376 128S365.3 152 352 152zM416 152c-13.25 0-24-10.75-24-24S402.8 104 416 104S440 114.8 440 128S429.3 152 416 152z"], + "shapes": [512, 512, ["triangle-circle-square"], "f61f", "M411.4 175.5C417.4 185.4 417.5 197.7 411.8 207.8C406.2 217.8 395.5 223.1 384 223.1H192C180.5 223.1 169.8 217.8 164.2 207.8C158.5 197.7 158.6 185.4 164.6 175.5L260.6 15.54C266.3 5.897 276.8 0 288 0C299.2 0 309.7 5.898 315.4 15.54L411.4 175.5zM288 312C288 289.9 305.9 272 328 272H472C494.1 272 512 289.9 512 312V456C512 478.1 494.1 496 472 496H328C305.9 496 288 478.1 288 456V312zM0 384C0 313.3 57.31 256 128 256C198.7 256 256 313.3 256 384C256 454.7 198.7 512 128 512C57.31 512 0 454.7 0 384z"], + "share": [512, 512, ["arrow-turn-right", "mail-forward"], "f064", "M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"], + "share-from-square": [576, 512, [61509, "share-square"], "f14d", "M568.9 143.5l-150.9-138.2C404.8-6.773 384 3.039 384 21.84V96C241.2 97.63 128 126.1 128 260.6c0 54.3 35.2 108.1 74.08 136.2c12.14 8.781 29.42-2.238 24.94-16.46C186.7 252.2 256 224 384 223.1v74.2c0 18.82 20.84 28.59 34.02 16.51l150.9-138.2C578.4 167.8 578.4 152.2 568.9 143.5zM416 384c-17.67 0-32 14.33-32 32v31.1l-320-.0013V128h32c17.67 0 32-14.32 32-32S113.7 64 96 64H64C28.65 64 0 92.65 0 128v319.1c0 35.34 28.65 64 64 64l320-.0013c35.35 0 64-28.66 64-64V416C448 398.3 433.7 384 416 384z"], + "share-nodes": [448, 512, ["share-alt"], "f1e0", "M285.4 197.1L191.3 244.1C191.8 248 191.1 251.1 191.1 256C191.1 260 191.8 263.1 191.3 267.9L285.4 314.9C302.6 298.2 326.1 288 352 288C405 288 448 330.1 448 384C448 437 405 480 352 480C298.1 480 256 437 256 384C256 379.1 256.2 376 256.7 372.1L162.6 325.1C145.4 341.8 121.9 352 96 352C42.98 352 0 309 0 256C0 202.1 42.98 160 96 160C121.9 160 145.4 170.2 162.6 186.9L256.7 139.9C256.2 135.1 256 132 256 128C256 74.98 298.1 32 352 32C405 32 448 74.98 448 128C448 181 405 224 352 224C326.1 224 302.6 213.8 285.4 197.1L285.4 197.1z"], + "sheet-plastic": [384, 512, [], "e571", "M0 64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V352H256C238.3 352 224 366.3 224 384V512H64C28.65 512 0 483.3 0 448V64zM171.3 52.69C165.1 46.44 154.9 46.44 148.7 52.69L52.69 148.7C46.44 154.9 46.44 165.1 52.69 171.3C58.93 177.6 69.06 177.6 75.31 171.3L171.3 75.31C177.6 69.07 177.6 58.94 171.3 52.69V52.69zM267.3 107.3C273.6 101.1 273.6 90.93 267.3 84.69C261.1 78.44 250.9 78.44 244.7 84.69L84.69 244.7C78.44 250.9 78.44 261.1 84.69 267.3C90.93 273.6 101.1 273.6 107.3 267.3L267.3 107.3zM384 384L256 512V384H384z"], + "shekel-sign": [448, 512, [8362, "ils", "shekel", "sheqel", "sheqel-sign"], "f20b", "M192 32C262.7 32 320 89.31 320 160V320C320 337.7 305.7 352 288 352C270.3 352 256 337.7 256 320V160C256 124.7 227.3 96 192 96H64V448C64 465.7 49.67 480 32 480C14.33 480 0 465.7 0 448V64C0 46.33 14.33 32 32 32H192zM160 480C142.3 480 128 465.7 128 448V192C128 174.3 142.3 160 160 160C177.7 160 192 174.3 192 192V416H320C355.3 416 384 387.3 384 352V64C384 46.33 398.3 32 416 32C433.7 32 448 46.33 448 64V352C448 422.7 390.7 480 320 480H160z"], + "shield": [512, 512, [128737, "shield-blank"], "f132", "M256-.0078C260.7-.0081 265.2 1.008 269.4 2.913L457.7 82.79C479.7 92.12 496.2 113.8 496 139.1C495.5 239.2 454.7 420.7 282.4 503.2C265.7 511.1 246.3 511.1 229.6 503.2C57.25 420.7 16.49 239.2 15.1 139.1C15.87 113.8 32.32 92.12 54.3 82.79L242.7 2.913C246.8 1.008 251.4-.0081 256-.0078V-.0078z"], + "shield-cat": [512, 512, [], "e572", "M199.1 272C199.1 263.2 207.2 256 215.1 256C224.8 256 231.1 263.2 231.1 272C231.1 280.8 224.8 288 215.1 288C207.2 288 199.1 280.8 199.1 272zM312 272C312 280.8 304.8 288 296 288C287.2 288 280 280.8 280 272C280 263.2 287.2 256 296 256C304.8 256 312 263.2 312 272zM256.3-.0068C261.9-.0507 267.3 1.386 272.1 4.066L476.5 90.53C487.7 95.27 495.2 105.1 495.9 118.1C501.6 213.6 466.7 421.9 272.5 507.7C267.6 510.5 261.1 512.1 256.3 512C250.5 512.1 244.9 510.5 239.1 507.7C45.8 421.9 10.95 213.6 16.57 118.1C17.28 105.1 24.83 95.27 36.04 90.53L240.4 4.066C245.2 1.386 250.7-.0507 256.3-.0068H256.3zM223.1 208L159.1 144V272C159.1 325 202.1 368 255.1 368C309 368 352 325 352 272V144L288 208H223.1z"], + "shield-dog": [512, 512, [], "e573", "M288 208C288 216.8 280.8 224 272 224C263.2 224 255.1 216.8 255.1 208C255.1 199.2 263.2 192 272 192C280.8 192 288 199.2 288 208zM256.3-.0068C261.9-.0507 267.3 1.386 272.1 4.066L476.5 90.53C487.7 95.27 495.2 105.1 495.9 118.1C501.6 213.6 466.7 421.9 272.5 507.7C267.6 510.5 261.1 512.1 256.3 512C250.5 512.1 244.9 510.5 239.1 507.7C45.8 421.9 10.95 213.6 16.57 118.1C17.28 105.1 24.83 95.27 36.04 90.53L240.4 4.066C245.2 1.386 250.7-.0507 256.3-.0068H256.3zM160.9 286.2L143.1 320L272 384V320H320C364.2 320 400 284.2 400 240V208C400 199.2 392.8 192 384 192H320L312.8 177.7C307.4 166.8 296.3 160 284.2 160H239.1V224C239.1 259.3 211.3 288 175.1 288C170.8 288 165.7 287.4 160.9 286.2H160.9zM143.1 176V224C143.1 241.7 158.3 256 175.1 256C193.7 256 207.1 241.7 207.1 224V160H159.1C151.2 160 143.1 167.2 143.1 176z"], + "shield-halved": [512, 512, ["shield-alt"], "f3ed", "M256-.0078C260.7-.0081 265.2 1.008 269.4 2.913L457.7 82.79C479.7 92.12 496.2 113.8 496 139.1C495.5 239.2 454.7 420.7 282.4 503.2C265.7 511.1 246.3 511.1 229.6 503.2C57.25 420.7 16.49 239.2 15.1 139.1C15.87 113.8 32.32 92.12 54.3 82.79L242.7 2.913C246.8 1.008 251.4-.0081 256-.0078V-.0078zM256 444.8C393.1 378 431.1 230.1 432 141.4L256 66.77L256 444.8z"], + "shield-heart": [512, 512, [], "e574", "M256.3-.0068C261.9-.0507 267.3 1.386 272.1 4.066L476.5 90.53C487.7 95.27 495.2 105.1 495.9 118.1C501.6 213.6 466.7 421.9 272.5 507.7C267.6 510.5 261.1 512.1 256.3 512C250.5 512.1 244.9 510.5 239.1 507.7C45.8 421.9 10.95 213.6 16.57 118.1C17.28 105.1 24.83 95.27 36.04 90.53L240.4 4.066C245.2 1.386 250.7-.0507 256.3-.0068H256.3zM266.1 363.4L364.2 263.6C392.2 234.7 390.5 186.6 358.1 159.5C331.8 135.8 291.5 140.2 266.1 166.5L256.4 176.1L245.9 166.5C221.4 140.2 180.2 135.8 153 159.5C121.5 186.6 119.8 234.7 147.8 263.6L244.2 363.4C251.2 369.5 260.8 369.5 266.1 363.4V363.4z"], + "shield-virus": [512, 512, [], "e06c", "M288 255.1c-8.836 0-16 7.162-16 16c0 8.836 7.164 15.1 16 15.1s16-7.163 16-15.1C304 263.2 296.8 255.1 288 255.1zM224 191.1c-8.836 0-16 7.162-16 16c0 8.836 7.164 16 15.1 16s16-7.164 16-16C240 199.2 232.8 191.1 224 191.1zM466.5 83.68l-192-80.01C269.6 1.641 261.3 0 256.1 0C250.7 0 242.5 1.641 237.6 3.672l-192 80.01C27.69 91.07 16 108.6 16 127.1C16 385.2 205.2 512 255.9 512c52.02 0 240.1-128.2 240.1-384C496 108.6 484.3 91.07 466.5 83.68zM384 255.1h-12.12c-19.29 0-32.06 15.78-32.06 32.23c0 7.862 2.918 15.88 9.436 22.4l8.576 8.576c3.125 3.125 4.688 7.218 4.688 11.31c0 8.527-6.865 15.1-16 15.1c-4.094 0-8.188-1.562-11.31-4.688l-8.576-8.576c-6.519-6.519-14.53-9.436-22.4-9.436c-16.45 0-32.23 12.77-32.23 32.06v12.12c0 8.844-7.156 16-16 16s-16-7.156-16-16v-12.12c0-19.29-15.78-32.06-32.23-32.06c-7.862 0-15.87 2.917-22.39 9.436l-8.576 8.576c-3.125 3.125-7.219 4.688-11.31 4.688c-9.139 0-16-7.473-16-15.1c0-4.094 1.562-8.187 4.688-11.31l8.576-8.576c6.519-6.519 9.436-14.53 9.436-22.4c0-16.45-12.77-32.23-32.06-32.23H128c-8.844 0-16-7.156-16-16s7.156-16 16-16h12.12c19.29 0 32.06-15.78 32.06-32.23c0-7.862-2.918-15.88-9.436-22.4L154.2 160.8C151 157.7 149.5 153.6 149.5 149.5c0-8.527 6.865-15.1 16-15.1c4.094 0 8.188 1.562 11.31 4.688L185.4 146.7C191.9 153.3 199.9 156.2 207.8 156.2c16.45 0 32.23-12.77 32.23-32.07V111.1c0-8.844 7.156-16 16-16s16 7.156 16 16v12.12c0 19.29 15.78 32.07 32.23 32.07c7.862 0 15.88-2.917 22.4-9.436l8.576-8.577c3.125-3.125 7.219-4.688 11.31-4.688c9.139 0 16 7.473 16 15.1c0 4.094-1.562 8.187-4.688 11.31l-8.576 8.577c-6.519 6.519-9.436 14.53-9.436 22.4c0 16.45 12.77 32.23 32.06 32.23h12.12c8.844 0 16 7.156 16 16S392.8 255.1 384 255.1z"], + "ship": [576, 512, [128674], "f21a", "M192 32C192 14.33 206.3 0 224 0H352C369.7 0 384 14.33 384 32V64H432C458.5 64 480 85.49 480 112V240L524.4 254.8C547.6 262.5 553.9 292.3 535.9 308.7L434.9 401.4C418.7 410.7 400.2 416.5 384 416.5C364.4 416.5 343.2 408.8 324.8 396.1C302.8 380.6 273.3 380.6 251.2 396.1C234 407.9 213.2 416.5 192 416.5C175.8 416.5 157.3 410.7 141.1 401.3L40.09 308.7C22.1 292.3 28.45 262.5 51.59 254.8L96 239.1V111.1C96 85.49 117.5 63.1 144 63.1H192V32zM160 218.7L267.8 182.7C280.9 178.4 295.1 178.4 308.2 182.7L416 218.7V128H160V218.7zM384 448C410.9 448 439.4 437.2 461.4 421.9L461.5 421.9C473.4 413.4 489.5 414.1 500.7 423.6C515 435.5 533.2 444.6 551.3 448.8C568.5 452.8 579.2 470.1 575.2 487.3C571.2 504.5 553.1 515.2 536.7 511.2C512.2 505.4 491.9 494.6 478.5 486.2C449.5 501.7 417 512 384 512C352.1 512 323.4 502.1 303.6 493.1C297.7 490.5 292.5 487.8 288 485.4C283.5 487.8 278.3 490.5 272.4 493.1C252.6 502.1 223.9 512 192 512C158.1 512 126.5 501.7 97.5 486.2C84.12 494.6 63.79 505.4 39.27 511.2C22.06 515.2 4.853 504.5 .8422 487.3C-3.169 470.1 7.532 452.8 24.74 448.8C42.84 444.6 60.96 435.5 75.31 423.6C86.46 414.1 102.6 413.4 114.5 421.9L114.6 421.9C136.7 437.2 165.1 448 192 448C219.5 448 247 437.4 269.5 421.9C280.6 414 295.4 414 306.5 421.9C328.1 437.4 356.5 448 384 448H384z"], + "shirt": [640, 512, [128085, "t-shirt", "tshirt"], "f553", "M640 162.8c0 6.917-2.293 13.88-7.012 19.7l-49.96 61.63c-6.32 7.796-15.62 11.85-25.01 11.85c-7.01 0-14.07-2.262-19.97-6.919L480 203.3V464c0 26.51-21.49 48-48 48H208C181.5 512 160 490.5 160 464V203.3L101.1 249.1C96.05 253.7 88.99 255.1 81.98 255.1c-9.388 0-18.69-4.057-25.01-11.85L7.012 182.5C2.292 176.7-.0003 169.7-.0003 162.8c0-9.262 4.111-18.44 12.01-24.68l135-106.6C159.8 21.49 175.7 16 191.1 16H225.6C233.3 61.36 272.5 96 320 96s86.73-34.64 94.39-80h33.6c16.35 0 32.22 5.49 44.99 15.57l135 106.6C635.9 144.4 640 153.6 640 162.8z"], + "shoe-prints": [640, 512, [], "f54b", "M192 159.1L224 159.1V32L192 32c-35.38 0-64 28.62-64 63.1S156.6 159.1 192 159.1zM0 415.1c0 35.37 28.62 64.01 64 64.01l32-.0103v-127.1l-32-.0005C28.62 351.1 0 380.6 0 415.1zM337.5 287.1c-35 0-76.25 13.12-104.8 31.1C208 336.4 188.3 351.1 128 351.1v128l57.5 15.98c26.25 7.25 53 13.13 80.38 15.01c32.63 2.375 65.63 .743 97.5-6.132C472.9 481.2 512 429.2 512 383.1C512 319.1 427.9 287.1 337.5 287.1zM491.4 7.252c-31.88-6.875-64.88-8.625-97.5-6.25C366.5 2.877 339.8 8.752 313.5 16L256 32V159.1c60.25 0 80 15.62 104.8 31.1c28.5 18.87 69.75 31.1 104.8 31.1C555.9 223.1 640 191.1 640 127.1C640 82.75 600.9 30.75 491.4 7.252z"], + "shop": [640, 512, ["store-alt"], "f54f", "M0 155.2C0 147.9 2.153 140.8 6.188 134.7L81.75 21.37C90.65 8.021 105.6 0 121.7 0H518.3C534.4 0 549.3 8.021 558.2 21.37L633.8 134.7C637.8 140.8 640 147.9 640 155.2C640 175.5 623.5 192 603.2 192H36.84C16.5 192 .0003 175.5 .0003 155.2H0zM64 224H128V384H320V224H384V464C384 490.5 362.5 512 336 512H112C85.49 512 64 490.5 64 464V224zM512 224H576V480C576 497.7 561.7 512 544 512C526.3 512 512 497.7 512 480V224z"], + "shop-lock": [640, 512, [], "e4a5", "M0 155.2C0 147.9 2.153 140.8 6.188 134.7L81.75 21.37C90.65 8.021 105.6 0 121.7 0H518.3C534.4 0 549.3 8.021 558.2 21.37L633.8 134.7C637.8 140.8 640 147.9 640 155.2C640 174.5 625.2 190.3 606.3 191.9C586.1 172.2 558.5 160 528 160C497.5 160 469.8 172.2 449.6 192H36.84C16.5 192 .0003 175.5 .0003 155.2H0zM384 224V464C384 490.5 362.5 512 336 512H112C85.49 512 64 490.5 64 464V224H128V384H320V224H384zM528 192C572.2 192 608 227.8 608 272V320C625.7 320 640 334.3 640 352V480C640 497.7 625.7 512 608 512H448C430.3 512 416 497.7 416 480V352C416 334.3 430.3 320 448 320V272C448 227.8 483.8 192 528 192zM528 240C510.3 240 496 254.3 496 272V320H560V272C560 254.3 545.7 240 528 240z"], + "shop-slash": [640, 512, ["store-alt-slash"], "e070", "M74.13 32.8L81.75 21.38C90.65 8.022 105.6 .001 121.7 .001H518.3C534.4 .001 549.3 8.022 558.2 21.38L633.8 134.7C637.8 140.8 640 147.9 640 155.2C640 175.5 623.5 192 603.2 192H277.3L320 225.5V224H384V275.7L512 375.1V224H576V426.2L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L74.13 32.8zM0 155.2C0 147.9 2.153 140.8 6.188 134.7L20.98 112.5L121.8 192H36.84C16.5 192 .0003 175.5 .0003 155.2H0zM320 384V348.1L384 398.5V464C384 490.5 362.5 512 336 512H112C85.49 512 64 490.5 64 464V224H128V384H320z"], + "shower": [512, 512, [128703], "f2cc", "M288 384c-17.67 0-32 14.33-32 32c0 17.67 14.33 32 32 32s32-14.33 32-32C320 398.3 305.7 384 288 384zM416 256c-17.67 0-32 14.33-32 32c0 17.67 14.33 32 32 32s32-14.33 32-32C448 270.3 433.7 256 416 256zM480 192c-17.67 0-32 14.33-32 32c0 17.67 14.33 32 32 32s32-14.33 32-32C512 206.3 497.7 192 480 192zM288 320c0-17.67-14.33-32-32-32s-32 14.33-32 32c0 17.67 14.33 32 32 32S288 337.7 288 320zM320 224c-17.67 0-32 14.33-32 32c0 17.67 14.33 32 32 32s32-14.33 32-32C352 238.3 337.7 224 320 224zM384 224c17.67 0 32-14.33 32-32c0-17.67-14.33-32-32-32s-32 14.33-32 32C352 209.7 366.3 224 384 224zM352 320c-17.67 0-32 14.33-32 32c0 17.67 14.33 32 32 32s32-14.33 32-32C384 334.3 369.7 320 352 320zM347.3 91.31l-11.31-11.31c-6.248-6.248-16.38-6.248-22.63 0l-6.631 6.631c-35.15-26.29-81.81-29.16-119.6-8.779L170.5 61.25C132.2 22.95 63.65 18.33 21.98 71.16C7.027 90.11 0 114.3 0 138.4V464C0 472.8 7.164 480 16 480h32C56.84 480 64 472.8 64 464V131.9c0-19.78 16.09-35.87 35.88-35.87c9.438 0 18.69 3.828 25.38 10.5l16.61 16.61C121.5 160.9 124.3 207.6 150.6 242.7L144 249.4c-6.248 6.248-6.248 16.38 0 22.63l11.31 11.31c6.248 6.25 16.38 6.25 22.63 0l169.4-169.4C353.6 107.7 353.6 97.56 347.3 91.31z"], + "shrimp": [512, 512, [129424], "e448", "M288 320V128H64C46.34 128 32 113.6 32 96s14.34-32 32-32h368c8.844 0 16-7.156 16-16s-7.156-16-16-16H64C28.72 32 0 60.7 0 96s28.72 64 64 64h2.879c15.26 90.77 94.01 160 189.1 160H288zM192 216c-13.25 0-24-10.75-24-24c0-13.26 10.75-24 24-24s24 10.74 24 24C216 205.3 205.3 216 192 216zM225.6 399.4c-4.75 12.36 1.406 26.25 13.78 31.02l5.688 2.188C233.3 434.1 224 443.8 224 456c0 13.25 10.75 24 24 24h72v-70.03l-63.38-24.38C244.3 380.9 230.4 386.1 225.6 399.4zM511.2 286.7c-.5488-5.754-2.201-11.1-3.314-16.65l-124.6 90.62c.3711 2.404 .7383 4.814 .7383 7.322c0 1.836-.3379 3.576-.5391 5.357l90.15 40.06C500.8 379.2 515.8 334.8 511.2 286.7zM352 413.1v66.08c37.23-3.363 71.04-18.3 97.94-41.21l-80.34-35.71C364.7 407.1 358.6 410.7 352 413.1zM497.9 237.7C470.1 172.4 402.8 128 328.4 128h-8.436v192h16c12.28 0 23.36 4.748 31.85 12.33L497.9 237.7z"], + "shuffle": [512, 512, [128256, "random"], "f074", "M424.1 287c-15.13-15.12-40.1-4.426-40.1 16.97V352H336L153.6 108.8C147.6 100.8 138.1 96 128 96H32C14.31 96 0 110.3 0 128s14.31 32 32 32h80l182.4 243.2C300.4 411.3 309.9 416 320 416h63.97v47.94c0 21.39 25.86 32.12 40.99 17l79.1-79.98c9.387-9.387 9.387-24.59 0-33.97L424.1 287zM336 160h47.97v48.03c0 21.39 25.87 32.09 40.1 16.97l79.1-79.98c9.387-9.391 9.385-24.59-.0013-33.97l-79.1-79.98c-15.13-15.12-40.99-4.391-40.99 17V96H320c-10.06 0-19.56 4.75-25.59 12.81L254 162.7L293.1 216L336 160zM112 352H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c10.06 0 19.56-4.75 25.59-12.81l40.4-53.87L154 296L112 352z"], + "shuttle-space": [640, 512, ["space-shuttle"], "f197", "M129.1 480H128V384H352L245.2 448.1C210.4 468.1 170.6 480 129.1 480zM352 128H128V32H129.1C170.6 32 210.4 43.03 245.2 63.92L352 128zM104 128C130.2 128 153.4 140.6 168 160H456C525.3 160 591 182.7 635.2 241.6C641.6 250.1 641.6 261.9 635.2 270.4C591 329.3 525.3 352 456 352H168C153.4 371.4 130.2 384 104 384H96V480H80C53.49 480 32 458.5 32 432V384H40C17.91 384 0 366.1 0 344V168C0 145.9 17.89 128 39.96 128H32V80C32 53.49 53.49 32 80 32H96V128H104zM476.4 208C473.1 208 472 209.1 472 212.4V299.6C472 302 473.1 304 476.4 304C496.1 304 512 288.1 512 268.4V243.6C512 223.9 496.1 208 476.4 208z"], + "sign-hanging": [512, 512, ["sign"], "f4d9", "M96 0C113.7 0 128 14.33 128 32V64H480C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H128V480C128 497.7 113.7 512 96 512C78.33 512 64 497.7 64 480V128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H64V32C64 14.33 78.33 0 96 0zM448 160C465.7 160 480 174.3 480 192V352C480 369.7 465.7 384 448 384H192C174.3 384 160 369.7 160 352V192C160 174.3 174.3 160 192 160H448z"], + "signal": [576, 512, [128246, "signal-5", "signal-perfect"], "f012", "M544 0c-17.67 0-32 14.33-32 31.1V480C512 497.7 526.3 512 544 512s32-14.33 32-31.1V31.1C576 14.33 561.7 0 544 0zM160 288C142.3 288 128 302.3 128 319.1v160C128 497.7 142.3 512 160 512s32-14.33 32-31.1V319.1C192 302.3 177.7 288 160 288zM32 384C14.33 384 0 398.3 0 415.1v64C0 497.7 14.33 512 31.1 512S64 497.7 64 480V415.1C64 398.3 49.67 384 32 384zM416 96c-17.67 0-32 14.33-32 31.1V480C384 497.7 398.3 512 416 512s32-14.33 32-31.1V127.1C448 110.3 433.7 96 416 96zM288 192C270.3 192 256 206.3 256 223.1v256C256 497.7 270.3 512 288 512s32-14.33 32-31.1V223.1C320 206.3 305.7 192 288 192z"], + "signature": [640, 512, [], "f5b7", "M192 160C192 177.7 177.7 192 160 192C142.3 192 128 177.7 128 160V128C128 74.98 170.1 32 224 32C277 32 320 74.98 320 128V135.8C320 156.6 318.8 177.4 316.4 198.1L438.8 161.3C450.2 157.9 462.6 161.1 470.1 169.7C479.3 178.3 482.1 190.8 478.4 202.1L460.4 255.1H544C561.7 255.1 576 270.3 576 287.1C576 305.7 561.7 319.1 544 319.1H416C405.7 319.1 396.1 315.1 390 306.7C384 298.4 382.4 287.6 385.6 277.9L398.1 240.4L303.7 268.7C291.9 321.5 272.2 372.2 245.3 419.2L231.4 443.5C218.5 466.1 194.5 480 168.5 480C128.5 480 95.1 447.5 95.1 407.5V335.6C95.1 293.2 123.8 255.8 164.4 243.7L248.8 218.3C253.6 191.1 255.1 163.5 255.1 135.8V128C255.1 110.3 241.7 96 223.1 96C206.3 96 191.1 110.3 191.1 128L192 160zM160 335.6V407.5C160 412.2 163.8 416 168.5 416C171.5 416 174.4 414.4 175.9 411.7L189.8 387.4C207.3 356.6 221.4 324.1 231.8 290.3L182.8 304.1C169.3 309 160 321.5 160 335.6V335.6zM24 368H64V407.5C64 410.4 64.11 413.2 64.34 416H24C10.75 416 0 405.3 0 392C0 378.7 10.75 368 24 368zM616 416H283.5C291.7 400.3 299.2 384.3 305.9 368H616C629.3 368 640 378.7 640 392C640 405.3 629.3 416 616 416z"], + "signs-post": [512, 512, ["map-signs"], "f277", "M223.1 32C223.1 14.33 238.3 0 255.1 0C273.7 0 288 14.33 288 32H441.4C445.6 32 449.7 33.69 452.7 36.69L500.7 84.69C506.9 90.93 506.9 101.1 500.7 107.3L452.7 155.3C449.7 158.3 445.6 160 441.4 160H63.1C46.33 160 31.1 145.7 31.1 128V64C31.1 46.33 46.33 32 63.1 32L223.1 32zM480 320C480 337.7 465.7 352 448 352H70.63C66.38 352 62.31 350.3 59.31 347.3L11.31 299.3C5.065 293.1 5.065 282.9 11.31 276.7L59.31 228.7C62.31 225.7 66.38 223.1 70.63 223.1H223.1V191.1H288V223.1H448C465.7 223.1 480 238.3 480 255.1V320zM255.1 512C238.3 512 223.1 497.7 223.1 480V384H288V480C288 497.7 273.7 512 255.1 512z"], + "sim-card": [384, 512, [], "f7c4", "M0 64v384c0 35.25 28.75 64 64 64h256c35.25 0 64-28.75 64-64V128l-128-128H64C28.75 0 0 28.75 0 64zM224 256H160V192h64V256zM320 256h-64V192h32c17.75 0 32 14.25 32 32V256zM256 384h64v32c0 17.75-14.25 32-32 32h-32V384zM160 384h64v64H160V384zM64 384h64v64H96c-17.75 0-32-14.25-32-32V384zM64 288h256v64H64V288zM64 224c0-17.75 14.25-32 32-32h32v64H64V224z"], + "sink": [512, 512, [], "e06d", "M496 288h-96V256l64 .0002c8.838 0 16-7.164 16-15.1v-15.1c0-8.838-7.162-16-16-16L384 208c-17.67 0-32 14.33-32 32v47.1l-64 .0005v-192c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16v-16c0-59.2-53.85-106-115.1-94.14C255.3 10.71 224 53.36 224 99.79v188.2L160 288V240c0-17.67-14.33-32-32-32L48 208c-8.836 0-16 7.162-16 16v15.1C32 248.8 39.16 256 48 256l64-.0002V288h-96c-8.836 0-16 7.164-16 16v32c0 8.836 7.164 16 16 16h480c8.836 0 16-7.164 16-16V304C512 295.2 504.8 288 496 288zM32 416c0 53.02 42.98 96 96 96h256c53.02 0 96-42.98 96-96v-32H32V416z"], + "sitemap": [576, 512, [], "f0e8", "M208 80C208 53.49 229.5 32 256 32H320C346.5 32 368 53.49 368 80V144C368 170.5 346.5 192 320 192H312V232H464C494.9 232 520 257.1 520 288V320H528C554.5 320 576 341.5 576 368V432C576 458.5 554.5 480 528 480H464C437.5 480 416 458.5 416 432V368C416 341.5 437.5 320 464 320H472V288C472 283.6 468.4 280 464 280H312V320H320C346.5 320 368 341.5 368 368V432C368 458.5 346.5 480 320 480H256C229.5 480 208 458.5 208 432V368C208 341.5 229.5 320 256 320H264V280H112C107.6 280 104 283.6 104 288V320H112C138.5 320 160 341.5 160 368V432C160 458.5 138.5 480 112 480H48C21.49 480 0 458.5 0 432V368C0 341.5 21.49 320 48 320H56V288C56 257.1 81.07 232 112 232H264V192H256C229.5 192 208 170.5 208 144V80z"], + "skull": [512, 512, [128128], "f54c", "M416 400V464C416 490.5 394.5 512 368 512H320V464C320 455.2 312.8 448 304 448C295.2 448 288 455.2 288 464V512H224V464C224 455.2 216.8 448 208 448C199.2 448 192 455.2 192 464V512H144C117.5 512 96 490.5 96 464V400C96 399.6 96 399.3 96.01 398.9C37.48 357.8 0 294.7 0 224C0 100.3 114.6 0 256 0C397.4 0 512 100.3 512 224C512 294.7 474.5 357.8 415.1 398.9C415.1 399.3 416 399.6 416 400V400zM160 192C124.7 192 96 220.7 96 256C96 291.3 124.7 320 160 320C195.3 320 224 291.3 224 256C224 220.7 195.3 192 160 192zM352 320C387.3 320 416 291.3 416 256C416 220.7 387.3 192 352 192C316.7 192 288 220.7 288 256C288 291.3 316.7 320 352 320z"], + "skull-crossbones": [448, 512, [128369, 9760], "f714", "M368 128C368 172.4 342.6 211.5 304 234.4V256C304 273.7 289.7 288 272 288H175.1C158.3 288 143.1 273.7 143.1 256V234.4C105.4 211.5 79.1 172.4 79.1 128C79.1 57.31 144.5 0 223.1 0C303.5 0 368 57.31 368 128V128zM167.1 176C185.7 176 199.1 161.7 199.1 144C199.1 126.3 185.7 112 167.1 112C150.3 112 135.1 126.3 135.1 144C135.1 161.7 150.3 176 167.1 176zM280 112C262.3 112 248 126.3 248 144C248 161.7 262.3 176 280 176C297.7 176 312 161.7 312 144C312 126.3 297.7 112 280 112zM3.378 273.7C11.28 257.9 30.5 251.5 46.31 259.4L223.1 348.2L401.7 259.4C417.5 251.5 436.7 257.9 444.6 273.7C452.5 289.5 446.1 308.7 430.3 316.6L295.6 384L430.3 451.4C446.1 459.3 452.5 478.5 444.6 494.3C436.7 510.1 417.5 516.5 401.7 508.6L223.1 419.8L46.31 508.6C30.5 516.5 11.28 510.1 3.378 494.3C-4.526 478.5 1.881 459.3 17.69 451.4L152.4 384L17.69 316.6C1.881 308.7-4.526 289.5 3.378 273.7V273.7z"], + "slash": [640, 512, [], "f715", "M5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196V9.196z"], + "sleigh": [640, 512, [], "f7cc", "M63.1 32C66.31 32 68.56 32.24 70.74 32.71C124.1 37.61 174.2 67.59 203.4 114.3L207.7 121.1C247.7 185.1 317.8 224 393.3 224C423.5 224 448 199.5 448 169.3V128C448 110.3 462.3 96 480 96H544C561.7 96 576 110.3 576 128C576 145.7 561.7 160 544 160V256C544 309 501 352 448 352V384H384V352H192V384H128V352C74.98 352 32 309 32 256V96C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H63.1zM640 392C640 440.6 600.6 480 552 480H63.1C46.33 480 31.1 465.7 31.1 448C31.1 430.3 46.33 416 63.1 416H552C565.3 416 576 405.3 576 392V384C576 366.3 590.3 352 608 352C625.7 352 640 366.3 640 384V392z"], + "sliders": [512, 512, ["sliders-h"], "f1de", "M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"], + "smog": [640, 512, [], "f75f", "M144 288h156.1C322.6 307.8 351.8 320 384 320s61.25-12.25 83.88-32H528C589.9 288 640 237.9 640 176s-50.13-112-112-112c-18 0-34.75 4.625-49.75 12.12C453.1 30.1 406.8 0 352 0c-41 0-77.75 17.25-104 44.75C221.8 17.25 185 0 144 0c-79.5 0-144 64.5-144 144S64.5 288 144 288zM136 464H23.1C10.8 464 0 474.8 0 487.1S10.8 512 23.1 512H136C149.2 512 160 501.2 160 488S149.2 464 136 464zM616 368h-528C74.8 368 64 378.8 64 391.1S74.8 416 87.1 416h528c13.2 0 24-10.8 24-23.1S629.2 368 616 368zM552 464H231.1C218.8 464 208 474.8 208 487.1S218.8 512 231.1 512H552c13.2 0 24-10.8 24-23.1S565.2 464 552 464z"], + "smoking": [640, 512, [128684], "f48d", "M432 352h-384C21.5 352 0 373.5 0 400v64C0 490.5 21.5 512 48 512h384c8.75 0 16-7.25 16-16v-128C448 359.3 440.8 352 432 352zM400 464H224v-64h176V464zM536 352h-48C483.6 352 480 355.6 480 360v144c0 4.375 3.625 8 8 8h48c4.375 0 8-3.625 8-8v-144C544 355.6 540.4 352 536 352zM632 352h-48C579.6 352 576 355.6 576 360v144c0 4.375 3.625 8 8 8h48c4.375 0 8-3.625 8-8v-144C640 355.6 636.4 352 632 352zM553.3 87.13C547.6 83.25 544 77.12 544 70.25V8C544 3.625 540.4 0 536 0h-48C483.6 0 480 3.625 480 8v62.25c0 22 10.25 43.5 28.62 55.5C550.8 153 576 199.5 576 249.8V280C576 284.4 579.6 288 584 288h48C636.4 288 640 284.4 640 280V249.8C640 184.3 607.6 123.5 553.3 87.13zM487.8 141.6C463.8 125 448 99.25 448 70.25V8C448 3.625 444.4 0 440 0h-48C387.6 0 384 3.625 384 8v66.38C384 118.1 408.6 156 444.3 181.1C466.8 196.8 480 222.3 480 249.8V280C480 284.4 483.6 288 488 288h48C540.4 288 544 284.4 544 280V249.8C544 206.4 523 166.3 487.8 141.6z"], + "snowflake": [512, 512, [10054, 10052], "f2dc", "M475.6 384.1C469.7 394.3 458.9 400 447.9 400c-5.488 0-11.04-1.406-16.13-4.375l-25.09-14.64l5.379 20.29c3.393 12.81-4.256 25.97-17.08 29.34c-2.064 .5625-4.129 .8125-6.164 .8125c-10.63 0-20.36-7.094-23.21-17.84l-17.74-66.92L288 311.7l.0002 70.5l48.38 48.88c9.338 9.438 9.244 24.62-.1875 33.94C331.5 469.7 325.4 472 319.3 472c-6.193 0-12.39-2.375-17.08-7.125l-14.22-14.37L288 480c0 17.69-14.34 32-32.03 32s-32.03-14.31-32.03-32l-.0002-29.5l-14.22 14.37c-9.322 9.438-24.53 9.5-33.97 .1875c-9.432-9.312-9.525-24.5-.1875-33.94l48.38-48.88L223.1 311.7l-59.87 34.93l-17.74 66.92c-2.848 10.75-12.58 17.84-23.21 17.84c-2.035 0-4.1-.25-6.164-.8125c-12.82-3.375-20.47-16.53-17.08-29.34l5.379-20.29l-25.09 14.64C75.11 398.6 69.56 400 64.07 400c-11.01 0-21.74-5.688-27.69-15.88c-8.932-15.25-3.785-34.84 11.5-43.75l25.96-15.15l-20.33-5.508C40.7 316.3 33.15 303.1 36.62 290.3S53.23 270 66.09 273.4L132 291.3L192.5 256L132 220.7L66.09 238.6c-2.111 .5625-4.225 .8438-6.305 .8438c-10.57 0-20.27-7.031-23.16-17.72C33.15 208.9 40.7 195.8 53.51 192.3l20.33-5.508L47.88 171.6c-15.28-8.906-20.43-28.5-11.5-43.75c8.885-15.28 28.5-20.44 43.81-11.5l25.09 14.64L99.9 110.7C96.51 97.91 104.2 84.75 116.1 81.38C129.9 77.91 142.1 85.63 146.4 98.41l17.74 66.92L223.1 200.3l-.0002-70.5L175.6 80.88C166.3 71.44 166.3 56.25 175.8 46.94C185.2 37.59 200.4 37.72 209.8 47.13l14.22 14.37L223.1 32c0-17.69 14.34-32 32.03-32s32.03 14.31 32.03 32l.0002 29.5l14.22-14.37c9.307-9.406 24.51-9.531 33.97-.1875c9.432 9.312 9.525 24.5 .1875 33.94l-48.38 48.88L288 200.3l59.87-34.93l17.74-66.92c3.395-12.78 16.56-20.5 29.38-17.03c12.82 3.375 20.47 16.53 17.08 29.34l-5.379 20.29l25.09-14.64c15.28-8.906 34.91-3.75 43.81 11.5c8.932 15.25 3.785 34.84-11.5 43.75l-25.96 15.15l20.33 5.508c12.81 3.469 20.37 16.66 16.89 29.44c-2.895 10.69-12.59 17.72-23.16 17.72c-2.08 0-4.193-.2813-6.305-.8438L379.1 220.7L319.5 256l60.46 35.28l65.95-17.87C458.8 270 471.9 277.5 475.4 290.3c3.473 12.78-4.082 25.97-16.89 29.44l-20.33 5.508l25.96 15.15C479.4 349.3 484.5 368.9 475.6 384.1z"], + "snowman": [512, 512, [9924, 9731], "f7d0", "M510.9 152.3l-5.875-14.5c-3.25-8-12.62-11.88-20.75-8.625l-28.25 11.5v-29C455.1 103 448.7 96 439.1 96h-16c-8.75 0-16 7-16 15.62V158.5c0 .5 .25 1 .25 1.5l-48.98 20.6c-5.291-12.57-12.98-23.81-22.24-33.55c9.35-14.81 14.98-32.23 14.98-51.04C351.1 42.98 309 0 255.1 0S160 42.98 160 95.1c0 18.81 5.626 36.23 14.98 51.04C165.7 156.8 158.1 168.1 152.8 180.7L103.8 160c0-.5 .25-1 .25-1.5V111.6C104 103 96.76 96 88.01 96h-16c-8.75 0-16 7-16 15.62v29l-28.25-11.5c-8.125-3.25-17.5 .625-20.75 8.625l-5.875 14.5C-2.119 160.4 1.881 169.5 10.01 172.6L144.4 228.4C144.9 240.8 147.3 252.7 151.5 263.7c-33.78 29.34-55.53 72.04-55.53 120.3c0 52.59 25.71 98.84 64.88 128h190.2c39.17-29.17 64.88-75.42 64.88-128c0-48.25-21.76-90.95-55.53-120.3c4.195-11.03 6.599-22.89 7.091-35.27l134.4-55.8C510.1 169.5 514.1 160.4 510.9 152.3zM224 95.1c-8.75 0-15.1-7.25-15.1-15.1s7.25-15.1 15.1-15.1s15.1 7.25 15.1 15.1S232.8 95.1 224 95.1zM256 367.1c-8.75 0-15.1-7.25-15.1-15.1S247.3 335.1 256 335.1s15.1 7.25 15.1 15.1S264.8 367.1 256 367.1zM256 303.1c-8.75 0-15.1-7.25-15.1-15.1S247.3 271.1 256 271.1s15.1 7.25 15.1 15.1S264.8 303.1 256 303.1zM256 239.1c-8.75 0-15.1-7.25-15.1-15.1S247.3 207.1 256 207.1s15.1 7.25 15.1 15.1S264.8 239.1 256 239.1zM256 152c0 0-15.1-23.25-15.1-32S247.3 104 256 104s15.1 7.25 15.1 16S256 152 256 152zM287.1 95.1c-8.75 0-15.1-7.25-15.1-15.1s7.25-15.1 15.1-15.1s15.1 7.25 15.1 15.1S296.7 95.1 287.1 95.1z"], + "snowplow": [640, 512, [], "f7d2", "M144 400C144 413.3 133.3 424 120 424C106.7 424 96 413.3 96 400C96 386.7 106.7 376 120 376C133.3 376 144 386.7 144 400zM336 400C336 386.7 346.7 376 360 376C373.3 376 384 386.7 384 400C384 413.3 373.3 424 360 424C346.7 424 336 413.3 336 400zM304 400C304 413.3 293.3 424 280 424C266.7 424 256 413.3 256 400C256 386.7 266.7 376 280 376C293.3 376 304 386.7 304 400zM176 400C176 386.7 186.7 376 200 376C213.3 376 224 386.7 224 400C224 413.3 213.3 424 200 424C186.7 424 176 413.3 176 400zM447.4 249.6C447.8 251.9 448.1 254.3 448 256.7V288H512V235.2C512 220.7 516.9 206.6 526 195.2L583 124C594.1 110.2 614.2 107.1 627.1 119C641.8 130.1 644 150.2 632.1 163.1L576 235.2V402.7L630.6 457.4C643.1 469.9 643.1 490.1 630.6 502.6C618.1 515.1 597.9 515.1 585.4 502.6L530.7 448C518.7 435.1 512 419.7 512 402.7V352H469.2C476.1 366.5 480 382.8 480 400C480 461.9 429.9 512 368 512H112C50.14 512 0 461.9 0 400C0 355.3 26.16 316.8 64 298.8V192C64 174.3 78.33 160 96 160H128V48C128 21.49 149.5 0 176 0H298.9C324.5 0 347.6 15.26 357.7 38.79L445.1 242.7C446.1 244.9 446.9 247.2 447.4 249.6H447.4zM298.9 64H192V160L256 224H367.5L298.9 64zM368 352H112C85.49 352 64 373.5 64 400C64 426.5 85.49 448 112 448H368C394.5 448 416 426.5 416 400C416 373.5 394.5 352 368 352z"], + "soap": [512, 512, [129532], "e06e", "M320 256c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C256 227.3 284.7 256 320 256zM160 288c-35.35 0-64 28.65-64 64c0 35.35 28.65 64 64 64h192c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64H160zM384 64c17.67 0 32-14.33 32-32c0-17.67-14.33-32-32-32s-32 14.33-32 32C352 49.67 366.3 64 384 64zM208 96C234.5 96 256 74.51 256 48S234.5 0 208 0S160 21.49 160 48S181.5 96 208 96zM416 192c0 27.82-12.02 52.68-30.94 70.21C421.7 275.7 448 310.7 448 352c0 53.02-42.98 96-96 96H160c-53.02 0-96-42.98-96-96s42.98-96 96-96h88.91C233.6 238.1 224 216.7 224 192H96C42.98 192 0 234.1 0 288v128c0 53.02 42.98 96 96 96h320c53.02 0 96-42.98 96-96V288C512 234.1 469 192 416 192z"], + "socks": [576, 512, [129510], "f696", "M319.1 32c0-11 3.125-21.25 8-30.38C325.4 .8721 322.9 0 319.1 0H192C174.4 0 159.1 14.38 159.1 32l.0042 32h160L319.1 32zM246.6 310.1l73.36-55l.0026-159.1h-160l-.0042 175.1l-86.64 64.61c-39.38 29.5-53.86 84.4-29.24 127c18.25 31.62 51.1 48.36 83.97 48.36c20 0 40.26-6.225 57.51-19.22l21.87-16.38C177.6 421 193.9 350.6 246.6 310.1zM351.1 271.1l-86.13 64.61c-39.37 29.5-53.86 84.4-29.23 127C254.9 495.3 287.2 512 320.1 512c20 0 40.25-6.25 57.5-19.25l115.2-86.38C525 382.3 544 344.2 544 303.1v-207.1h-192L351.1 271.1zM512 0h-128c-17.62 0-32 14.38-32 32l-.0003 32H544V32C544 14.38 529.6 0 512 0z"], + "solar-panel": [640, 512, [], "f5ba", "M575.4 25.72C572.4 10.78 559.2 0 543.1 0H96c-15.25 0-28.39 10.78-31.38 25.72l-63.1 320c-1.891 9.406 .5469 19.16 6.625 26.56S22.41 384 32 384h255.1v64.25H239.8c-26.26 0-47.75 21.49-47.75 47.75c0 8.844 7.168 16.01 16.01 16l223.1-.1667c8.828-.0098 15.99-7.17 15.99-16C447.1 469.5 426.6 448 400.2 448h-48.28v-64h256c9.594 0 18.67-4.312 24.75-11.72s8.516-17.16 6.625-26.56L575.4 25.72zM517.8 64l19.2 96h-97.98L429.2 64H517.8zM380.1 64l9.617 96H250l9.873-96H380.1zM210.8 64L201 160H103.1l19.18-96H210.8zM71.16 320l22.28-112h102.7L184.6 320H71.16zM233.8 320l11.37-112h149.7L406.2 320H233.8zM455.4 320l-11.5-112h102.7l22.28 112H455.4z"], + "sort": [320, 512, ["unsorted"], "f0dc", "M27.66 224h264.7c24.6 0 36.89-29.78 19.54-47.12l-132.3-136.8c-5.406-5.406-12.47-8.107-19.53-8.107c-7.055 0-14.09 2.701-19.45 8.107L8.119 176.9C-9.229 194.2 3.055 224 27.66 224zM292.3 288H27.66c-24.6 0-36.89 29.77-19.54 47.12l132.5 136.8C145.9 477.3 152.1 480 160 480c7.053 0 14.12-2.703 19.53-8.109l132.3-136.8C329.2 317.8 316.9 288 292.3 288z"], + "sort-down": [320, 512, ["sort-desc"], "f0dd", "M311.9 335.1l-132.4 136.8C174.1 477.3 167.1 480 160 480c-7.055 0-14.12-2.702-19.47-8.109l-132.4-136.8C-9.229 317.8 3.055 288 27.66 288h264.7C316.9 288 329.2 317.8 311.9 335.1z"], + "sort-up": [320, 512, ["sort-asc"], "f0de", "M27.66 224h264.7c24.6 0 36.89-29.78 19.54-47.12l-132.3-136.8c-5.406-5.406-12.47-8.107-19.53-8.107c-7.055 0-14.09 2.701-19.45 8.107L8.119 176.9C-9.229 194.2 3.055 224 27.66 224z"], + "spa": [576, 512, [], "f5bb", "M568.3 192c-29 .125-135 6.124-213.9 82.1C321.2 304.7 301 338.3 288 369.9c-13-31.63-33.25-65.25-66.38-94.87C142.8 198.2 36.75 192.2 7.75 192C3.375 192 0 195.4 0 199.9c.25 27.88 7.125 126.2 88.75 199.3C172.8 481 256 479.1 288 479.1s115.2 1.025 199.3-80.85C568.9 326 575.8 227.7 576 199.9C576 195.4 572.6 192 568.3 192zM288 302.6c12.75-18.87 27.62-35.75 44.13-50.5c19-18.62 39.5-33.37 60.25-45.25c-16.5-70.5-51.75-133-96.75-172.3c-4.125-3.5-11-3.5-15.12 0c-45 39.25-80.25 101.6-96.75 172.1c20.37 11.75 40.5 26.12 59.25 44.37C260 266.4 275.1 283.7 288 302.6z"], + "spaghetti-monster-flying": [640, 512, ["pastafarianism"], "f67b", "M624.5 347.7c-32.63-12.5-57.38 4.241-75.38 16.49c-17 11.5-23.25 14.37-31.38 11.37c-8.125-3.125-10.88-9.358-15.88-29.36c-3.375-13.12-7.5-29.47-18-42.72c2.25-3 4.5-5.875 6.375-8.625C500.5 304.5 513.8 312 532 312c33.1 0 50.87-25.75 61.1-42.88C604.6 253 609 248 616 248C629.3 248 640 237.3 640 224s-10.75-24-24-24c-34 0-50.88 25.75-62 42.88C543.4 259 539 264 532 264c-17.25 0-37.5-61.38-97.25-101.9L452 127.6C485.4 125.5 512 97.97 512 63.97C512 28.6 483.4 0 448 0s-64 28.6-64 63.97c0 13 4 25.15 10.62 35.28L376.5 135.5C359.5 130.9 340.9 128 320 128S280.5 130.9 263.5 135.5L245.4 99.25C252 89.13 256 76.97 256 63.97C256 28.6 227.4 0 192 0S128 28.6 128 63.97C128 97.97 154.5 125.5 188 127.6l17.25 34.5C145.6 202.5 125.1 264 108 264c-7 0-11.31-5-21.94-21.12C74.94 225.8 57.1 200 24 200C10.75 200 0 210.8 0 224s10.75 24 24 24c7 0 11.37 5 21.1 21.12C57.12 286.3 73.1 312 108 312c18.25 0 31.5-7.5 41.75-17.12C151.6 297.6 153.9 300.5 156.1 303.5c-10.5 13.25-14.62 29.59-18 42.72c-5 20-7.75 26.23-15.88 29.36c-8.125 3-14.37 .1314-31.37-11.37c-18.12-12.25-42.75-28.87-75.38-16.49c-12.38 4.75-18.62 18.61-13.88 30.98c4.625 12.38 18.62 18.62 30.88 13.87C40.75 389.6 46.88 392.4 64 403.9c13.5 9.125 30.75 20.86 52.38 20.86c7.125 0 14.88-1.248 23-4.373c32.63-12.5 40-41.34 45.25-62.46c2.25-8.75 4-14.49 6-18.86c16.62 13.62 37 25.86 61.63 34.23C242.3 410.3 220.1 464 192 464c-13.25 0-24 10.74-24 23.99S178.8 512 192 512c66.75 0 97-88.55 107.4-129.1C306.1 383.6 312.9 384 320 384s13.88-.4706 20.62-1.096C351 423.4 381.3 512 448 512c13.25 0 24-10.74 24-23.99S461.3 464 448 464c-28 0-50.25-53.74-60.25-90.74c24.75-8.375 45-20.56 61.63-34.19c2 4.375 3.75 10.11 6 18.86c5.375 21.12 12.62 49.96 45.25 62.46c8.25 3.125 15.88 4.373 23 4.373c21.62 0 38.83-11.74 52.46-20.86c17-11.5 23.29-14.37 31.42-11.37c12.38 4.75 26.25-1.492 30.88-13.87C643.1 366.3 637 352.5 624.5 347.7zM192 79.97c-8.875 0-16-7.125-16-16S183.1 47.98 192 47.98s16 7.118 16 15.99S200.9 79.97 192 79.97zM448 47.98c8.875 0 16 7.118 16 15.99s-7.125 16-16 16s-16-7.125-16-16S439.1 47.98 448 47.98z"], + "spell-check": [576, 512, [], "f891", "M566.6 265.4c-12.5-12.5-32.75-12.5-45.25 0L352 434.8l-73.38-73.38c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l96 96c6.25 6.25 14.44 9.368 22.62 9.368s16.38-3.118 22.63-9.368l192-192C579.1 298.1 579.1 277.9 566.6 265.4zM221.5 211.7l-80-192C136.6 7.796 124.9 .0147 112 .0147S87.44 7.796 82.47 19.7l-80 192C-4.328 228 3.375 246.8 19.69 253.5c16.36 6.812 35.06-.9375 41.84-17.22l5.131-12.31h90.68l5.131 12.31c5.109 12.28 17.02 19.69 29.55 19.69c4.094 0 8.266-.7812 12.3-2.469C220.6 246.8 228.3 228 221.5 211.7zM93.33 160L112 115.2l18.67 44.81H93.33zM288 256h80c44.11 0 80-35.87 80-79.1c0-23.15-10.03-43.85-25.79-58.47C428.3 106.3 432 93.65 432 80.01c0-44.13-35.89-80-79.1-80L288 .0147c-17.67 0-32 14.31-32 31.1v192C256 241.7 270.3 256 288 256zM320 64.01h32c8.828 0 16 7.188 16 16s-7.172 16-16 16h-32V64.01zM320 160h48c8.828 0 16 7.188 16 16s-7.172 16-16 16H320V160z"], + "spider": [576, 512, [128375], "f717", "M563.3 401.6c2.608 8.443-2.149 17.4-10.62 19.1l-15.35 4.709c-8.48 2.6-17.47-2.139-20.08-10.59L493.2 338l-79.79-31.8l53.47 62.15c5.08 5.904 6.972 13.89 5.08 21.44l-28.23 110.1c-2.151 8.57-10.87 13.78-19.47 11.64l-15.58-3.873c-8.609-2.141-13.84-10.83-11.69-19.4l25.2-98.02l-38.51-44.77c.1529 2.205 .6627 4.307 .6627 6.549c0 53.02-43.15 96-96.37 96S191.6 405 191.6 352c0-2.242 .5117-4.34 .6627-6.543l-38.51 44.76l25.2 98.02c2.151 8.574-3.084 17.26-11.69 19.4l-15.58 3.873c-8.603 2.141-17.32-3.072-19.47-11.64l-28.23-110.1c-1.894-7.543 0-15.53 5.08-21.44l53.47-62.15l-79.79 31.8l-24.01 77.74c-2.608 8.447-11.6 13.19-20.08 10.59l-15.35-4.709c-8.478-2.6-13.23-11.55-10.63-19.1l27.4-88.69c2.143-6.939 7.323-12.54 14.09-15.24L158.9 256l-104.7-41.73C47.43 211.6 42.26 205.1 40.11 199.1L12.72 110.4c-2.608-8.443 2.149-17.4 10.62-19.1l15.35-4.709c8.48-2.6 17.47 2.139 20.08 10.59l24.01 77.74l79.79 31.8L109.1 143.6C104 137.7 102.1 129.7 104 122.2l28.23-110.1c2.151-8.57 10.87-13.78 19.47-11.64l15.58 3.873C175.9 6.494 181.1 15.18 178.1 23.76L153.8 121.8L207.7 184.4l.1542-24.44C206.1 123.4 228.9 91.77 261.4 80.43c5.141-1.793 10.5 2.215 10.5 7.641V112h32.12V88.09c0-5.443 5.394-9.443 10.55-7.641C345.9 91.39 368.3 121 368.3 155.9c0 1.393-.1786 2.689-.2492 4.064L368.3 184.4l53.91-62.66l-25.2-98.02c-2.151-8.574 3.084-17.26 11.69-19.4l15.58-3.873c8.603-2.141 17.32 3.072 19.47 11.64l28.23 110.1c1.894 7.543 0 15.53-5.08 21.44l-53.47 62.15l79.79-31.8l24.01-77.74c2.608-8.447 11.6-13.19 20.08-10.59l15.35 4.709c8.478 2.6 13.23 11.55 10.63 19.1l-27.4 88.69c-2.143 6.939-7.323 12.54-14.09 15.24L417.1 256l104.7 41.73c6.754 2.691 11.92 8.283 14.07 15.21L563.3 401.6z"], + "spinner": [512, 512, [], "f110", "M304 48C304 74.51 282.5 96 256 96C229.5 96 208 74.51 208 48C208 21.49 229.5 0 256 0C282.5 0 304 21.49 304 48zM304 464C304 490.5 282.5 512 256 512C229.5 512 208 490.5 208 464C208 437.5 229.5 416 256 416C282.5 416 304 437.5 304 464zM0 256C0 229.5 21.49 208 48 208C74.51 208 96 229.5 96 256C96 282.5 74.51 304 48 304C21.49 304 0 282.5 0 256zM512 256C512 282.5 490.5 304 464 304C437.5 304 416 282.5 416 256C416 229.5 437.5 208 464 208C490.5 208 512 229.5 512 256zM74.98 437C56.23 418.3 56.23 387.9 74.98 369.1C93.73 350.4 124.1 350.4 142.9 369.1C161.6 387.9 161.6 418.3 142.9 437C124.1 455.8 93.73 455.8 74.98 437V437zM142.9 142.9C124.1 161.6 93.73 161.6 74.98 142.9C56.24 124.1 56.24 93.73 74.98 74.98C93.73 56.23 124.1 56.23 142.9 74.98C161.6 93.73 161.6 124.1 142.9 142.9zM369.1 369.1C387.9 350.4 418.3 350.4 437 369.1C455.8 387.9 455.8 418.3 437 437C418.3 455.8 387.9 455.8 369.1 437C350.4 418.3 350.4 387.9 369.1 369.1V369.1z"], + "splotch": [512, 512, [], "f5bc", "M349.3 47.38L367.9 116.1C374.6 142.1 393.2 162.3 417.6 171.2L475.8 192.4C497.5 200.3 512 221 512 244.2C512 261.8 503.6 278.4 489.4 288.8L406.9 348.1C393.3 358.9 385.7 374.1 386.7 391.8L389.8 442.4C392.1 480.1 362.2 511.9 324.4 511.9C308.8 511.9 293.8 506.4 281.1 496.4L236.1 458.2C221.1 444.7 200.9 437.3 180 437.3H171.6C165.1 437.3 160.4 437.8 154.8 438.9L87.81 451.9C63.82 456.6 39.53 445.5 27.41 424.3C17.39 406.7 17.39 385.2 27.41 367.7L55.11 319.2C60.99 308.9 64.09 297.3 64.09 285.4C64.09 272.3 60.33 259.6 53.27 248.6L8.796 179.4C-6.738 155.2-1.267 123.2 21.41 105.6C32.12 97.25 45.52 93.13 59.07 94.01L130.8 98.66C159.8 100.5 187.1 87.91 205.9 64.93L237.3 24.66C249.4 9.133 267.9 .0566 287.6 .0566C316.5 .0566 341.8 19.47 349.3 47.38V47.38z"], + "spoon": [512, 512, [61873, 129348, "utensil-spoon"], "f2e5", "M449.5 242.2C436.4 257.8 419.8 270 400.1 277.8C382.2 285.6 361.7 288.8 341.4 287C326.2 284.5 311.8 278.4 299.5 269.1L68.29 500.3C60.79 507.8 50.61 512 40 512C29.39 512 19.22 507.8 11.71 500.3C4.211 492.8-.0039 482.6-.0039 472C-.0039 461.4 4.211 451.2 11.71 443.7L243 212.5C233.7 200.2 227.6 185.8 225.1 170.6C223.3 150.3 226.5 129.9 234.3 111C242.1 92.22 254.3 75.56 269.9 62.47C337.8-5.437 433.1-20.28 482.7 29.35C532.3 78.95 517.4 174.2 449.5 242.2z"], + "spray-can": [512, 512, [], "f5bd", "M192 0C209.7 0 224 14.33 224 32V128H96V32C96 14.33 110.3 0 128 0H192zM0 256C0 202.1 42.98 160 96 160H224C277 160 320 202.1 320 256V464C320 490.5 298.5 512 272 512H48C21.49 512 0 490.5 0 464V256zM160 256C115.8 256 80 291.8 80 336C80 380.2 115.8 416 160 416C204.2 416 240 380.2 240 336C240 291.8 204.2 256 160 256zM320 64C320 81.67 305.7 96 288 96C270.3 96 256 81.67 256 64C256 46.33 270.3 32 288 32C305.7 32 320 46.33 320 64zM352 64C352 46.33 366.3 32 384 32C401.7 32 416 46.33 416 64C416 81.67 401.7 96 384 96C366.3 96 352 81.67 352 64zM512 64C512 81.67 497.7 96 480 96C462.3 96 448 81.67 448 64C448 46.33 462.3 32 480 32C497.7 32 512 46.33 512 64zM448 160C448 142.3 462.3 128 480 128C497.7 128 512 142.3 512 160C512 177.7 497.7 192 480 192C462.3 192 448 177.7 448 160zM512 256C512 273.7 497.7 288 480 288C462.3 288 448 273.7 448 256C448 238.3 462.3 224 480 224C497.7 224 512 238.3 512 256zM352 160C352 142.3 366.3 128 384 128C401.7 128 416 142.3 416 160C416 177.7 401.7 192 384 192C366.3 192 352 177.7 352 160z"], + "spray-can-sparkles": [512, 512, ["air-freshener"], "f5d0", "M96 32C96 14.33 110.3 0 128 0H192C209.7 0 224 14.33 224 32V128H96V32zM224 160C277 160 320 202.1 320 256V464C320 490.5 298.5 512 272 512H48C21.49 512 0 490.5 0 464V256C0 202.1 42.98 160 96 160H224zM160 416C204.2 416 240 380.2 240 336C240 291.8 204.2 256 160 256C115.8 256 80 291.8 80 336C80 380.2 115.8 416 160 416zM384 48C384 49.36 383 50.97 381.8 51.58L352 64L339.6 93.78C338.1 95 337.4 96 336 96C334.6 96 333 95 332.4 93.78L320 64L290.2 51.58C288.1 50.97 288 49.36 288 48C288 46.62 288.1 45.03 290.2 44.42L320 32L332.4 2.219C333 1 334.6 0 336 0C337.4 0 338.1 1 339.6 2.219L352 32L381.8 44.42C383 45.03 384 46.62 384 48zM460.4 93.78L448 64L418.2 51.58C416.1 50.97 416 49.36 416 48C416 46.62 416.1 45.03 418.2 44.42L448 32L460.4 2.219C461 1 462.6 0 464 0C465.4 0 466.1 1 467.6 2.219L480 32L509.8 44.42C511 45.03 512 46.62 512 48C512 49.36 511 50.97 509.8 51.58L480 64L467.6 93.78C466.1 95 465.4 96 464 96C462.6 96 461 95 460.4 93.78zM467.6 194.2L480 224L509.8 236.4C511 237 512 238.6 512 240C512 241.4 511 242.1 509.8 243.6L480 256L467.6 285.8C466.1 287 465.4 288 464 288C462.6 288 461 287 460.4 285.8L448 256L418.2 243.6C416.1 242.1 416 241.4 416 240C416 238.6 416.1 237 418.2 236.4L448 224L460.4 194.2C461 193 462.6 192 464 192C465.4 192 466.1 193 467.6 194.2zM448 144C448 145.4 447 146.1 445.8 147.6L416 160L403.6 189.8C402.1 191 401.4 192 400 192C398.6 192 397 191 396.4 189.8L384 160L354.2 147.6C352.1 146.1 352 145.4 352 144C352 142.6 352.1 141 354.2 140.4L384 128L396.4 98.22C397 97 398.6 96 400 96C401.4 96 402.1 97 403.6 98.22L416 128L445.8 140.4C447 141 448 142.6 448 144z"], + "square": [448, 512, [9723, 9724, 61590, 9632], "f0c8", "M0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96z"], + "square-arrow-up-right": [448, 512, ["external-link-square"], "f14c", "M384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM344 312c0 17.69-14.31 32-32 32s-32-14.31-32-32V245.3l-121.4 121.4C152.4 372.9 144.2 376 136 376s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L234.8 200H168c-17.69 0-32-14.31-32-32s14.31-32 32-32h144c17.69 0 32 14.31 32 32V312z"], + "square-caret-down": [448, 512, ["caret-square-down"], "f150", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.65 419.3 32 384 32zM345.6 232.3l-104 112C237 349.2 230.7 352 224 352s-13.03-2.781-17.59-7.656l-104-112c-6.5-7-8.219-17.19-4.407-25.94C101.8 197.7 110.5 192 120 192h208c9.531 0 18.19 5.656 21.1 14.41C353.8 215.2 352.1 225.3 345.6 232.3z"], + "square-caret-left": [448, 512, ["caret-square-left"], "f191", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.65 419.3 32 384 32zM288 360c0 9.531-5.656 18.19-14.41 22C270.5 383.3 267.3 384 264 384c-5.938 0-11.81-2.219-16.34-6.406l-112-104C130.8 269 128 262.7 128 256s2.781-13.03 7.656-17.59l112-104c7.031-6.469 17.22-8.156 25.94-4.406C282.3 133.8 288 142.5 288 152V360z"], + "square-caret-right": [448, 512, ["caret-square-right"], "f152", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.65 419.3 32 384 32zM312.3 273.6l-112 104C195.8 381.8 189.9 384 184 384c-3.25 0-6.5-.6562-9.594-2C165.7 378.2 160 369.5 160 360v-208c0-9.531 5.656-18.19 14.41-22c8.75-3.75 18.94-2.062 25.94 4.406l112 104C317.2 242.1 320 249.3 320 256S317.2 269 312.3 273.6z"], + "square-caret-up": [448, 512, ["caret-square-up"], "f151", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.65 419.3 32 384 32zM349.1 305.6C346.2 314.3 337.5 320 328 320h-208c-9.531 0-18.19-5.656-22-14.41C94.19 296.8 95.91 286.7 102.4 279.7l104-112c9.125-9.75 26.06-9.75 35.19 0l104 112C352.1 286.7 353.8 296.8 349.1 305.6z"], + "square-check": [448, 512, [9989, 61510, 9745, "check-square"], "f14a", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM339.8 211.8C350.7 200.9 350.7 183.1 339.8 172.2C328.9 161.3 311.1 161.3 300.2 172.2L192 280.4L147.8 236.2C136.9 225.3 119.1 225.3 108.2 236.2C97.27 247.1 97.27 264.9 108.2 275.8L172.2 339.8C183.1 350.7 200.9 350.7 211.8 339.8L339.8 211.8z"], + "square-envelope": [448, 512, ["envelope-square"], "f199", "M384 32H64C28.63 32 0 60.63 0 96v320c0 35.38 28.62 64 64 64h320c35.38 0 64-28.62 64-64V96C448 60.63 419.4 32 384 32zM384 336c0 17.67-14.33 32-32 32H96c-17.67 0-32-14.33-32-32V225.9l138.5 69.27C209.3 298.5 216.6 300.2 224 300.2s14.75-1.688 21.47-5.047L384 225.9V336zM384 190.1l-152.8 76.42c-4.5 2.25-9.812 2.25-14.31 0L64 190.1V176c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32V190.1z"], + "square-full": [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11036, 11035], "f45c", "M0 0H512V512H0V0z"], + "square-h": [448, 512, ["h-square"], "f0fd", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96C448 60.65 419.3 32 384 32zM336 360c0 13.25-10.75 24-24 24S288 373.3 288 360v-80H160v80C160 373.3 149.3 384 136 384S112 373.3 112 360v-208C112 138.8 122.8 128 136 128S160 138.8 160 152v80h128v-80C288 138.8 298.8 128 312 128s24 10.75 24 24V360z"], + "square-minus": [448, 512, [61767, "minus-square"], "f146", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM136 232C122.7 232 112 242.7 112 256C112 269.3 122.7 280 136 280H312C325.3 280 336 269.3 336 256C336 242.7 325.3 232 312 232H136z"], + "square-nfi": [448, 512, [], "e576", "M0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM64 176V336C64 344.8 71.16 352 80 352C88.84 352 96 344.8 96 336V233.8L162.3 344.2C165.1 350.4 173.3 353.3 180.3 351.4C187.2 349.5 191.1 343.2 191.1 336V176C191.1 167.2 184.8 160 175.1 160C167.2 160 159.1 167.2 159.1 176V278.2L93.72 167.8C90.02 161.6 82.66 158.7 75.73 160.6C68.8 162.5 64 168.8 64 176V176zM224 336C224 344.8 231.2 352 240 352C248.8 352 256 344.8 256 336V256H304C312.8 256 320 248.8 320 240C320 231.2 312.8 224 304 224H256V192H304C312.8 192 320 184.8 320 176C320 167.2 312.8 160 304 160H240C231.2 160 224 167.2 224 176V336zM384 176C384 167.2 376.8 160 368 160C359.2 160 352 167.2 352 176V336C352 344.8 359.2 352 368 352C376.8 352 384 344.8 384 336V176z"], + "square-parking": [448, 512, [127359, "parking"], "f540", "M192 256V192H240C257.7 192 272 206.3 272 224C272 241.7 257.7 256 240 256H192zM384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM336 224C336 170.1 293 128 240 128H168C145.9 128 128 145.9 128 168V352C128 369.7 142.3 384 160 384C177.7 384 192 369.7 192 352V320H240C293 320 336 277 336 224z"], + "square-pen": [448, 512, ["pen-square", "pencil-square"], "f14b", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM325.8 139.7C310.1 124.1 284.8 124.1 269.2 139.7L247.8 161.1L318.7 232.1L340.1 210.7C355.8 195 355.8 169.7 340.1 154.1L325.8 139.7zM111.5 303.8L96.48 363.1C95.11 369.4 96.71 375.2 100.7 379.2C104.7 383.1 110.4 384.7 115.9 383.4L176 368.3C181.6 366.9 186.8 364 190.9 359.9L296.1 254.7L225.1 183.8L119.9 288.1C115.8 293.1 112.9 298.2 111.5 303.8z"], + "square-person-confined": [448, 512, [], "e577", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM208 96C181.5 96 160 117.5 160 144C160 170.5 181.5 192 208 192C234.5 192 256 170.5 256 144C256 117.5 234.5 96 208 96zM240 306.7L198.6 265.4C191.4 258.1 181 254.8 170.9 256.4C160.7 258.1 151.1 264.5 147.4 273.7L99.39 369.7C91.48 385.5 97.89 404.7 113.7 412.6C129.5 420.5 148.7 414.1 156.6 398.3L184.8 342L239.4 396.7C251.8 409.1 268.6 416 286.1 416C322.5 416 352 386.5 352 350.1V248C352 217.1 326.9 192 296 192C265.1 192 240 217.1 240 248V306.7z"], + "square-phone": [448, 512, ["phone-square"], "f098", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96C448 60.65 419.3 32 384 32zM351.6 321.5l-11.62 50.39c-1.633 7.125-7.9 12.11-15.24 12.11c-126.1 0-228.7-102.6-228.7-228.8c0-7.328 4.984-13.59 12.11-15.22l50.38-11.63c7.344-1.703 14.88 2.109 17.93 9.062l23.27 54.28c2.719 6.391 .8828 13.83-4.492 18.22L168.3 232c16.99 34.61 45.14 62.75 79.77 79.75l22.02-26.91c4.344-5.391 11.85-7.25 18.24-4.484l54.24 23.25C349.5 306.6 353.3 314.2 351.6 321.5z"], + "square-phone-flip": [448, 512, ["phone-square-alt"], "f87b", "M0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64H64C28.65 32 0 60.65 0 96zM105.5 303.6l54.24-23.25c6.391-2.766 13.9-.9062 18.24 4.484l22.02 26.91c34.63-17 62.77-45.14 79.77-79.75l-26.91-22.05c-5.375-4.391-7.211-11.83-4.492-18.22l23.27-54.28c3.047-6.953 10.59-10.77 17.93-9.062l50.38 11.63c7.125 1.625 12.11 7.891 12.11 15.22c0 126.1-102.6 228.8-228.7 228.8c-7.336 0-13.6-4.984-15.24-12.11l-11.62-50.39C94.71 314.2 98.5 306.6 105.5 303.6z"], + "square-plus": [448, 512, [61846, "plus-square"], "f0fe", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM224 368C237.3 368 248 357.3 248 344V280H312C325.3 280 336 269.3 336 256C336 242.7 325.3 232 312 232H248V168C248 154.7 237.3 144 224 144C210.7 144 200 154.7 200 168V232H136C122.7 232 112 242.7 112 256C112 269.3 122.7 280 136 280H200V344C200 357.3 210.7 368 224 368z"], + "square-poll-horizontal": [448, 512, ["poll-h"], "f682", "M448 416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416zM256 160C256 142.3 241.7 128 224 128H128C110.3 128 96 142.3 96 160C96 177.7 110.3 192 128 192H224C241.7 192 256 177.7 256 160zM128 224C110.3 224 96 238.3 96 256C96 273.7 110.3 288 128 288H320C337.7 288 352 273.7 352 256C352 238.3 337.7 224 320 224H128zM192 352C192 334.3 177.7 320 160 320H128C110.3 320 96 334.3 96 352C96 369.7 110.3 384 128 384H160C177.7 384 192 369.7 192 352z"], + "square-poll-vertical": [448, 512, ["poll"], "f681", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM128 224C110.3 224 96 238.3 96 256V352C96 369.7 110.3 384 128 384C145.7 384 160 369.7 160 352V256C160 238.3 145.7 224 128 224zM192 352C192 369.7 206.3 384 224 384C241.7 384 256 369.7 256 352V160C256 142.3 241.7 128 224 128C206.3 128 192 142.3 192 160V352zM320 288C302.3 288 288 302.3 288 320V352C288 369.7 302.3 384 320 384C337.7 384 352 369.7 352 352V320C352 302.3 337.7 288 320 288z"], + "square-root-variable": [576, 512, ["square-root-alt"], "f698", "M576 32.01c0-17.69-14.33-31.1-32-31.1l-224-.0049c-14.69 0-27.48 10-31.05 24.25L197.9 388.3L124.6 241.7C119.2 230.9 108.1 224 96 224L32 224c-17.67 0-32 14.31-32 31.1s14.33 32 32 32h44.22l103.2 206.3c5.469 10.91 16.6 17.68 28.61 17.68c1.172 0 2.323-.0576 3.495-.1826c13.31-1.469 24.31-11.06 27.56-24.06l105.9-423.8H544C561.7 64.01 576 49.7 576 32.01zM566.6 233.4c-12.5-12.5-32.75-12.5-45.25 0L480 274.8l-41.38-41.37c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l41.38 41.38l-41.38 41.38c-12.5 12.5-12.5 32.75 0 45.25C399.6 412.9 407.8 416 416 416s16.38-3.125 22.62-9.375L480 365.3l41.38 41.38C527.6 412.9 535.8 416 544 416s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-41.38-41.38L566.6 278.6C579.1 266.1 579.1 245.9 566.6 233.4z"], + "square-rss": [448, 512, ["rss-square"], "f143", "M384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM150.6 374.6C144.4 380.9 136.2 384 128 384s-16.38-3.121-22.63-9.371c-12.5-12.5-12.5-32.76 0-45.26C111.6 323.1 119.8 320 128 320s16.38 3.121 22.63 9.371C163.1 341.9 163.1 362.1 150.6 374.6zM249.6 383.9C249 383.1 248.5 384 247.1 384c-12.53 0-23.09-9.75-23.92-22.44C220.5 306.9 173.1 259.5 118.4 255.9c-13.22-.8438-23.25-12.28-22.39-25.5c.8594-13.25 12.41-22.81 25.52-22.38c77.86 5.062 145.3 72.5 150.4 150.4C272.8 371.7 262.8 383.1 249.6 383.9zM345 383.1C344.7 384 344.3 384 343.1 384c-12.8 0-23.42-10.09-23.97-23C315.6 254.6 225.4 164.4 119 159.1C105.8 159.4 95.47 148.3 96.02 135C96.58 121.8 107.9 111.2 121 112c130.7 5.469 241.5 116.3 246.1 246.1C368.5 372.3 358.3 383.4 345 383.1z"], + "square-share-nodes": [448, 512, ["share-alt-square"], "f1e1", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM320 96C284.7 96 256 124.7 256 160C256 162.5 256.1 164.9 256.4 167.3L174.5 212C162.8 199.7 146.3 192 128 192C92.65 192 64 220.7 64 256C64 291.3 92.65 320 128 320C146.3 320 162.8 312.3 174.5 299.1L256.4 344.7C256.1 347.1 256 349.5 256 352C256 387.3 284.7 416 320 416C355.3 416 384 387.3 384 352C384 316.7 355.3 288 320 288C304.6 288 290.5 293.4 279.4 302.5L194.1 256L279.4 209.5C290.5 218.6 304.6 224 320 224C355.3 224 384 195.3 384 160C384 124.7 355.3 96 320 96V96z"], + "square-up-right": [448, 512, [8599, "external-link-square-alt"], "f360", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.65 419.3 32 384 32zM330.5 323.9c0 6.473-3.889 12.3-9.877 14.78c-5.979 2.484-12.86 1.105-17.44-3.469l-45.25-45.25l-67.92 67.92c-12.5 12.5-32.72 12.46-45.21-.0411l-22.63-22.63C109.7 322.7 109.6 302.5 122.1 289.1l67.92-67.92L144.8 176.8C140.2 172.2 138.8 165.3 141.3 159.4c2.477-5.984 8.309-9.875 14.78-9.875h158.4c8.835 0 15.1 7.163 15.1 15.1V323.9z"], + "square-virus": [448, 512, [], "e578", "M160 224C160 206.3 174.3 192 192 192C209.7 192 224 206.3 224 224C224 241.7 209.7 256 192 256C174.3 256 160 241.7 160 224zM280 288C280 301.3 269.3 312 256 312C242.7 312 232 301.3 232 288C232 274.7 242.7 264 256 264C269.3 264 280 274.7 280 288zM384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM199.8 117.7C199.8 146.9 164.5 161.6 143.8 140.9C134.4 131.5 119.2 131.5 109.8 140.9C100.5 150.2 100.5 165.4 109.8 174.8C130.5 195.5 115.9 230.9 86.61 230.9C73.35 230.9 62.61 241.6 62.61 254.9C62.61 268.1 73.35 278.9 86.61 278.9C115.9 278.9 130.5 314.3 109.8 334.9C100.5 344.3 100.5 359.5 109.8 368.9C119.2 378.3 134.4 378.3 143.8 368.9C164.5 348.2 199.8 362.9 199.8 392.1C199.8 405.4 210.6 416.1 223.8 416.1C237.1 416.1 247.8 405.4 247.8 392.1C247.8 362.9 283.2 348.2 303.9 368.9C313.3 378.3 328.5 378.3 337.8 368.9C347.2 359.5 347.2 344.3 337.8 334.9C317.2 314.3 331.8 278.9 361.1 278.9C374.3 278.9 385.1 268.1 385.1 254.9C385.1 241.6 374.3 230.9 361.1 230.9C331.8 230.9 317.2 195.5 337.8 174.8C347.2 165.4 347.2 150.2 337.8 140.9C328.5 131.5 313.3 131.5 303.9 140.9C283.2 161.6 247.8 146.9 247.8 117.7C247.8 104.4 237.1 93.65 223.8 93.65C210.6 93.65 199.8 104.4 199.8 117.7H199.8z"], + "square-xmark": [448, 512, [10062, "times-square", "xmark-square"], "f2d3", "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM143 208.1L190.1 255.1L143 303C133.7 312.4 133.7 327.6 143 336.1C152.4 346.3 167.6 346.3 176.1 336.1L223.1 289.9L271 336.1C280.4 346.3 295.6 346.3 304.1 336.1C314.3 327.6 314.3 312.4 304.1 303L257.9 255.1L304.1 208.1C314.3 199.6 314.3 184.4 304.1 175C295.6 165.7 280.4 165.7 271 175L223.1 222.1L176.1 175C167.6 165.7 152.4 165.7 143 175C133.7 184.4 133.7 199.6 143 208.1V208.1z"], + "staff-snake": [384, 512, ["rod-asclepius", "rod-snake", "staff-aesculapius"], "e579", "M222.5 48H288C341 48 384 90.98 384 144C384 197 341 240 288 240H248V160H288C296.8 160 304 152.8 304 144C304 135.2 296.8 128 288 128H220L215.5 272H256C309 272 352 314.1 352 368C352 421 309 464 256 464H240V384H256C264.8 384 272 376.8 272 368C272 359.2 264.8 352 256 352H212.1L208.5 496C208.2 504.9 200.9 512 191.1 512C183.1 512 175.8 504.9 175.5 496L174.5 464H135.1C113.9 464 95.1 446.1 95.1 424C95.1 401.9 113.9 384 135.1 384H171.1L170.1 352H151.1C98.98 352 55.1 309 55.1 256C55.1 208.4 90.6 168.9 135.1 161.3V256C135.1 264.8 143.2 272 151.1 272H168.5L164 128H122.6C113.6 146.9 94.34 160 72 160H56C25.07 160 0 134.9 0 104C0 73.07 25.07 48 56 48H161.5L160.1 31.98C160.1 31.33 160.1 30.69 160.1 30.05C161.5 13.43 175.1 0 192 0C208.9 0 222.5 13.43 223 30.05C223 30.69 223 31.33 223 31.98L222.5 48zM79.1 96C79.1 87.16 72.84 80 63.1 80C55.16 80 47.1 87.16 47.1 96C47.1 104.8 55.16 112 63.1 112C72.84 112 79.1 104.8 79.1 96z"], + "stairs": [576, 512, [], "e289", "M576 64c0 17.67-14.31 32-32 32h-96v96c0 17.67-14.31 32-32 32h-96v96c0 17.67-14.31 32-32 32H192v96c0 17.67-14.31 32-32 32H32c-17.69 0-32-14.33-32-32s14.31-32 32-32h96v-96c0-17.67 14.31-32 32-32h96V192c0-17.67 14.31-32 32-32h96V64c0-17.67 14.31-32 32-32h128C561.7 32 576 46.33 576 64z"], + "stamp": [512, 512, [], "f5bf", "M366.2 256H400C461.9 256 512 306.1 512 368C512 388.9 498.6 406.7 480 413.3V464C480 490.5 458.5 512 432 512H80C53.49 512 32 490.5 32 464V413.3C13.36 406.7 0 388.9 0 368C0 306.1 50.14 256 112 256H145.8C175.7 256 200 231.7 200 201.8C200 184.3 190.8 168.5 180.1 154.8C167.5 138.5 160 118.1 160 96C160 42.98 202.1 0 256 0C309 0 352 42.98 352 96C352 118.1 344.5 138.5 331.9 154.8C321.2 168.5 312 184.3 312 201.8C312 231.7 336.3 256 366.2 256zM416 416H96V448H416V416z"], + "stapler": [640, 512, [], "e5af", "M640 299.3V432C640 458.5 618.5 480 592 480H64C46.33 480 32 465.7 32 448C32 430.3 46.33 416 64 416H448V368H96C78.33 368 64 353.7 64 336V219.4L33.8 214C14.24 210.5 0 193.5 0 173.7C0 164.8 2.878 156.2 8.201 149.1L43.83 101.6C76.67 57.77 128.2 32 182.9 32C209.9 32 236.6 38.29 260.7 50.36L586.9 213.5C619.5 229.7 640 262.1 640 299.3H640zM448 288L128 230.9V304H448V288z"], + "star": [576, 512, [61446, 11088], "f005", "M381.2 150.3L524.9 171.5C536.8 173.2 546.8 181.6 550.6 193.1C554.4 204.7 551.3 217.3 542.7 225.9L438.5 328.1L463.1 474.7C465.1 486.7 460.2 498.9 450.2 506C440.3 513.1 427.2 514 416.5 508.3L288.1 439.8L159.8 508.3C149 514 135.9 513.1 126 506C116.1 498.9 111.1 486.7 113.2 474.7L137.8 328.1L33.58 225.9C24.97 217.3 21.91 204.7 25.69 193.1C29.46 181.6 39.43 173.2 51.42 171.5L195 150.3L259.4 17.97C264.7 6.954 275.9-.0391 288.1-.0391C300.4-.0391 311.6 6.954 316.9 17.97L381.2 150.3z"], + "star-and-crescent": [512, 512, [9770], "f699", "M340.5 466.4c-1.5 0-6.875 .5-9.25 .5c-116.3 0-210.8-94.63-210.8-210.9s94.5-210.9 210.8-210.9c2.375 0 7.75 .5 9.25 .5c7.125 0 13.25-5 14.75-12c1.375-7.25-2.625-14.5-9.5-17.12c-29.13-11-59.38-16.5-89.75-16.5c-141.1 0-256 114.9-256 256s114.9 256 256 256c30.25 0 60.25-5.5 89.38-16.38c5.875-2 10.25-7.625 10.25-14.25C355.6 473.4 349.3 466.4 340.5 466.4zM503.5 213.9l-76.38-11.12L392.9 133.5C391.1 129.9 387.5 128 384 128c-3.5 0-7.125 1.875-9 5.5l-34.13 69.25l-76.38 11.12c-8.125 1.125-11.38 11.25-5.5 17l55.25 53.88l-13 76c-1.125 6.5 3.1 11.75 9.75 11.75c1.5 0 3.125-.375 4.625-1.25l68.38-35.88l68.25 35.88c1.625 .875 3.125 1.25 4.75 1.25c5.75 0 10.88-5.25 9.75-11.75l-13-76l55.25-53.88C514.9 225.1 511.6 214.1 503.5 213.9z"], + "star-half": [576, 512, [61731], "f089", "M288 439.8L159.8 508.3C149 514 135.9 513.1 126 506C116.1 498.9 111.1 486.7 113.2 474.7L137.8 328.1L33.58 225.9C24.97 217.3 21.91 204.7 25.69 193.1C29.46 181.6 39.43 173.2 51.42 171.5L195 150.3L259.4 17.97C264.7 6.995 275.8 .0131 287.1-.0391L288 439.8zM433.2 512C432.1 512.1 431 512.1 429.9 512H433.2z"], + "star-half-stroke": [576, 512, ["star-half-alt"], "f5c0", "M463.1 474.7C465.1 486.7 460.2 498.9 450.2 506C440.3 513.1 427.2 514 416.5 508.3L288.1 439.8L159.8 508.3C149 514 135.9 513.1 126 506C116.1 498.9 111.1 486.7 113.2 474.7L137.8 328.1L33.58 225.9C24.97 217.3 21.91 204.7 25.69 193.1C29.46 181.6 39.43 173.2 51.42 171.5L195 150.3L259.4 17.97C264.7 6.954 275.9-.0391 288.1-.0391C300.4-.0391 311.6 6.954 316.9 17.97L381.2 150.3L524.9 171.5C536.8 173.2 546.8 181.6 550.6 193.1C554.4 204.7 551.3 217.3 542.7 225.9L438.5 328.1L463.1 474.7zM288 376.4L288.1 376.3L399.7 435.9L378.4 309.6L469.2 219.8L343.8 201.4L288.1 86.85L288 87.14V376.4z"], + "star-of-david": [512, 512, [10017], "f69a", "M490.7 345.4L435.6 256l55.1-89.38c14.87-24.25-3.62-54.61-33.12-54.61l-110.6-.005l-57.87-93.1C281.7 6.003 268.9 0 256 0C243.1 0 230.3 6.003 222.9 18L165 112H54.39c-29.62 0-47.99 30.37-33.12 54.62L76.37 256l-55.1 89.38C6.4 369.6 24.77 399.1 54.39 399.1h110.6l57.87 93.1C230.3 505.1 243.1 512 256 512c12.88 0 25.74-6.002 33.12-18l57.83-93.1h110.7C487.2 399.1 505.6 369.6 490.7 345.4zM256 73.77l23.59 38.23H232.5L256 73.77zM89.48 343.1l20.59-33.35l20.45 33.35H89.48zM110 201.3L89.48 168h41.04L110 201.3zM256 438.2l-23.59-38.25h47.08L256 438.2zM313.9 343.1H198L143.8 256l54.22-87.1h116L368.3 256L313.9 343.1zM381.3 343.1l20.67-33.29l20.52 33.29H381.3zM401.1 201.3l-20.51-33.29h41.04L401.1 201.3z"], + "star-of-life": [512, 512, [], "f621", "M489.1 363.3l-24.03 41.59c-6.635 11.48-21.33 15.41-32.82 8.78l-129.1-74.56V488c0 13.25-10.75 24-24.02 24H231.1c-13.27 0-24.02-10.75-24.02-24v-148.9L78.87 413.7c-11.49 6.629-26.19 2.698-32.82-8.78l-24.03-41.59c-6.635-11.48-2.718-26.14 8.774-32.77L159.9 256L30.8 181.5C19.3 174.8 15.39 160.2 22.02 148.7l24.03-41.59c6.635-11.48 21.33-15.41 32.82-8.781l129.1 74.56L207.1 24c0-13.25 10.75-24 24.02-24h48.04c13.27 0 24.02 10.75 24.02 24l.0005 148.9l129.1-74.56c11.49-6.629 26.19-2.698 32.82 8.78l24.02 41.59c6.637 11.48 2.718 26.14-8.774 32.77L352.1 256l129.1 74.53C492.7 337.2 496.6 351.8 489.1 363.3z"], + "sterling-sign": [320, 512, [163, "gbp", "pound-sign"], "f154", "M112 223.1H224C241.7 223.1 256 238.3 256 255.1C256 273.7 241.7 287.1 224 287.1H112V332.5C112 361.5 104.1 389.1 89.2 414.9L88.52 416H288C305.7 416 320 430.3 320 448C320 465.7 305.7 480 288 480H32C20.47 480 9.834 473.8 4.154 463.8C-1.527 453.7-1.371 441.4 4.56 431.5L34.32 381.9C43.27 367 48 349.9 48 332.5V288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H48V160.4C48 89.47 105.5 32 176.4 32C190.2 32 203.9 34.22 216.1 38.59L298.1 65.64C314.9 71.23 323.9 89.35 318.4 106.1C312.8 122.9 294.6 131.9 277.9 126.4L196.7 99.3C190.2 97.12 183.3 96 176.4 96C140.8 96 112 124.8 112 160.4V223.1z"], + "stethoscope": [576, 512, [129658], "f0f1", "M480 112c-44.18 0-80 35.82-80 80c0 32.84 19.81 60.98 48.11 73.31v78.7c0 57.25-50.25 104-112 104c-60 0-109.3-44.1-111.9-99.23C296.1 333.8 352 269.3 352 191.1V36.59c0-11.38-8.15-21.38-19.28-23.5L269.8 .4775c-13-2.625-25.54 5.766-28.16 18.77L238.4 34.99c-2.625 13 5.812 25.59 18.81 28.22l30.69 6.059L287.9 190.7c0 52.88-42.13 96.63-95.13 97.13c-53.38 .5-96.81-42.56-96.81-95.93L95.89 69.37l30.72-6.112c13-2.5 21.41-15.15 18.78-28.15L142.3 19.37c-2.5-13-15.15-21.41-28.15-18.78L51.28 12.99C40.15 15.24 32 25.09 32 36.59v155.4c0 77.25 55.11 142 128.1 156.8C162.7 439.3 240.6 512 336 512c97 0 176-75.37 176-168V265.3c28.23-12.36 48-40.46 48-73.25C560 147.8 524.2 112 480 112zM480 216c-13.25 0-24-10.75-24-24S466.7 168 480 168S504 178.7 504 192S493.3 216 480 216z"], + "stop": [384, 512, [9209], "f04d", "M384 128v255.1c0 35.35-28.65 64-64 64H64c-35.35 0-64-28.65-64-64V128c0-35.35 28.65-64 64-64H320C355.3 64 384 92.65 384 128z"], + "stopwatch": [448, 512, [9201], "f2f2", "M272 0C289.7 0 304 14.33 304 32C304 49.67 289.7 64 272 64H256V98.45C293.5 104.2 327.7 120 355.7 143L377.4 121.4C389.9 108.9 410.1 108.9 422.6 121.4C435.1 133.9 435.1 154.1 422.6 166.6L398.5 190.8C419.7 223.3 432 262.2 432 304C432 418.9 338.9 512 224 512C109.1 512 16 418.9 16 304C16 200 92.32 113.8 192 98.45V64H176C158.3 64 144 49.67 144 32C144 14.33 158.3 0 176 0L272 0zM248 192C248 178.7 237.3 168 224 168C210.7 168 200 178.7 200 192V320C200 333.3 210.7 344 224 344C237.3 344 248 333.3 248 320V192z"], + "stopwatch-20": [448, 512, [], "e06f", "M276 256C276 249.4 281.4 244 288 244C294.6 244 300 249.4 300 256V352C300 358.6 294.6 364 288 364C281.4 364 276 358.6 276 352V256zM272 0C289.7 0 304 14.33 304 32C304 49.67 289.7 64 272 64H256V98.45C293.5 104.2 327.7 120 355.7 143L377.4 121.4C389.9 108.9 410.1 108.9 422.6 121.4C435.1 133.9 435.1 154.1 422.6 166.6L398.5 190.8C419.7 223.3 432 262.2 432 304C432 418.9 338.9 512 224 512C109.1 512 16 418.9 16 304C16 200 92.32 113.8 192 98.45V64H176C158.3 64 144 49.67 144 32C144 14.33 158.3 0 176 0L272 0zM288 204C259.3 204 236 227.3 236 256V352C236 380.7 259.3 404 288 404C316.7 404 340 380.7 340 352V256C340 227.3 316.7 204 288 204zM172 256.5V258.8C172 262.4 170.7 265.9 168.3 268.6L129.2 312.5C115.5 327.9 108 347.8 108 368.3V384C108 395 116.1 404 128 404H192C203 404 212 395 212 384C212 372.1 203 364 192 364H148.2C149.1 354.8 152.9 346.1 159.1 339.1L198.2 295.2C207.1 285.1 211.1 272.2 211.1 258.8V256.5C211.1 227.5 188.5 204 159.5 204C136.8 204 116.8 218.5 109.6 239.9L109 241.7C105.5 252.2 111.2 263.5 121.7 266.1C132.2 270.5 143.5 264.8 146.1 254.3L147.6 252.6C149.3 247.5 154.1 244 159.5 244C166.4 244 171.1 249.6 171.1 256.5L172 256.5z"], + "store": [576, 512, [], "f54e", "M495.5 223.2C491.6 223.7 487.6 224 483.4 224C457.4 224 434.2 212.6 418.3 195C402.4 212.6 379.2 224 353.1 224C327 224 303.8 212.6 287.9 195C272 212.6 248.9 224 222.7 224C196.7 224 173.5 212.6 157.6 195C141.7 212.6 118.5 224 92.36 224C88.3 224 84.21 223.7 80.24 223.2C24.92 215.8-1.255 150.6 28.33 103.8L85.66 13.13C90.76 4.979 99.87 0 109.6 0H466.4C476.1 0 485.2 4.978 490.3 13.13L547.6 103.8C577.3 150.7 551 215.8 495.5 223.2H495.5zM499.7 254.9C503.1 254.4 508 253.6 512 252.6V448C512 483.3 483.3 512 448 512H128C92.66 512 64 483.3 64 448V252.6C67.87 253.6 71.86 254.4 75.97 254.9L76.09 254.9C81.35 255.6 86.83 256 92.36 256C104.8 256 116.8 254.1 128 250.6V384H448V250.7C459.2 254.1 471.1 256 483.4 256C489 256 494.4 255.6 499.7 254.9L499.7 254.9z"], + "store-slash": [640, 512, [], "e071", "M94.92 49.09L117.7 13.13C122.8 4.98 131.9 .0007 141.6 .0007H498.4C508.1 .0007 517.2 4.979 522.3 13.13L579.6 103.8C609.3 150.7 583 215.8 527.5 223.2C523.6 223.7 519.6 224 515.4 224C489.4 224 466.2 212.6 450.3 195C434.4 212.6 411.2 224 385.1 224C359 224 335.8 212.6 319.9 195C314.4 201.1 308.1 206.4 301.2 210.7L480 350.9V250.7C491.2 254.1 503.1 256 515.4 256C521 256 526.4 255.6 531.7 254.9L531.7 254.9C535.1 254.4 540 253.6 544 252.6V401.1L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L94.92 49.09zM112.2 223.2C68.36 217.3 42.82 175.1 48.9 134.5L155.3 218.4C145.7 222 135.3 224 124.4 224C120.3 224 116.2 223.7 112.2 223.2V223.2zM160 384H365.5L514.9 501.7C504.8 508.2 492.9 512 480 512H160C124.7 512 96 483.3 96 448V252.6C99.87 253.6 103.9 254.4 107.1 254.9L108.1 254.9C113.3 255.6 118.8 256 124.4 256C136.8 256 148.8 254.1 160 250.6V384z"], + "street-view": [512, 512, [], "f21d", "M320 64C320 99.35 291.3 128 256 128C220.7 128 192 99.35 192 64C192 28.65 220.7 0 256 0C291.3 0 320 28.65 320 64zM288 160C323.3 160 352 188.7 352 224V272C352 289.7 337.7 304 320 304H318.2L307.2 403.5C305.4 419.7 291.7 432 275.4 432H236.6C220.3 432 206.6 419.7 204.8 403.5L193.8 304H192C174.3 304 160 289.7 160 272V224C160 188.7 188.7 160 224 160H288zM63.27 414.7C60.09 416.3 57.47 417.8 55.33 419.2C51.7 421.6 51.72 426.4 55.34 428.8C64.15 434.6 78.48 440.6 98.33 446.1C137.7 456.1 193.5 464 256 464C318.5 464 374.3 456.1 413.7 446.1C433.5 440.6 447.9 434.6 456.7 428.8C460.3 426.4 460.3 421.6 456.7 419.2C454.5 417.8 451.9 416.3 448.7 414.7C433.4 406.1 409.9 399.8 379.7 394.2C366.6 391.8 358 379.3 360.4 366.3C362.8 353.3 375.3 344.6 388.3 347C420.8 352.9 449.2 361.2 470.3 371.8C480.8 377.1 490.6 383.5 498 391.4C505.6 399.5 512 410.5 512 424C512 445.4 496.5 460.1 482.9 469C468.2 478.6 448.6 486.3 426.4 492.4C381.8 504.7 321.6 512 256 512C190.4 512 130.2 504.7 85.57 492.4C63.44 486.3 43.79 478.6 29.12 469C15.46 460.1 0 445.4 0 424C0 410.5 6.376 399.5 13.96 391.4C21.44 383.5 31.24 377.1 41.72 371.8C62.75 361.2 91.24 352.9 123.7 347C136.7 344.6 149.2 353.3 151.6 366.3C153.1 379.3 145.4 391.8 132.3 394.2C102.1 399.8 78.57 406.1 63.27 414.7H63.27z"], + "strikethrough": [512, 512, [], "f0cc", "M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21c-3.031 17.59-10.88 29.34-24.72 36.99c-35.44 19.75-108.5 11.96-186-19.68c-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37c29.62 0 58.81-5.156 83.72-18.96c30.81-17.09 50.44-45.46 56.72-82.11c3.998-23.27 2.168-42.58-3.488-59.05H332.2zM488 239.9l-176.5-.0309c-15.85-5.613-31.83-10.34-46.7-14.62c-85.47-24.62-110.9-39.05-103.7-81.33c2.5-14.53 10.16-25.96 22.72-34.03c20.47-13.15 64.06-23.84 155.4 .3438c17.09 4.531 34.59-5.654 39.13-22.74c4.531-17.09-5.656-34.59-22.75-39.12c-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1C89.26 184.5 107.9 217.3 137.2 239.9L24 239.9c-13.25 0-24 10.75-24 23.1c0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1C512 250.7 501.3 239.9 488 239.9z"], + "stroopwafel": [512, 512, [], "f551", "M188.1 210.8l-45.25 45.25l45.25 45.25l45.25-45.25L188.1 210.8zM301.2 188.1l-45.25-45.25L210.7 188.1l45.25 45.25L301.2 188.1zM210.7 323.9l45.25 45.25l45.25-45.25L255.1 278.6L210.7 323.9zM256 16c-132.5 0-240 107.5-240 240s107.5 240 240 240s240-107.5 240-240S388.5 16 256 16zM442.6 295.6l-11.25 11.25c-3.125 3.125-8.25 3.125-11.38 0L391.8 278.6l-45.25 45.25l34 33.88l16.88-16.88c3.125-3.125 8.251-3.125 11.38 0l11.25 11.25c3.125 3.125 3.125 8.25 0 11.38l-16.88 16.88l16.88 17c3.125 3.125 3.125 8.25 0 11.38l-11.25 11.25c-3.125 3.125-8.251 3.125-11.38 0l-16.88-17l-17 17c-3.125 3.125-8.25 3.125-11.38 0l-11.25-11.25c-3.125-3.125-3.125-8.25 0-11.38l17-17l-34-33.88l-45.25 45.25l28.25 28.25c3.125 3.125 3.125 8.25 0 11.38l-11.25 11.25c-3.125 3.125-8.25 3.125-11.38 0l-28.25-28.25L227.7 442.6c-3.125 3.125-8.25 3.125-11.38 0l-11.25-11.25c-3.125-3.125-3.125-8.25 0-11.38l28.25-28.25l-45.25-45.25l-33.88 34l16.88 16.88c3.125 3.125 3.125 8.25 0 11.38l-11.25 11.25c-3.125 3.125-8.25 3.125-11.38 0L131.6 403.1l-16.1 16.88c-3.125 3.125-8.25 3.125-11.38 0l-11.25-11.25c-3.125-3.125-3.125-8.25 0-11.38l17-16.88l-17-17c-3.125-3.125-3.125-8.25 0-11.38l11.25-11.25c3.125-3.125 8.25-3.125 11.38 0l16.1 17l33.88-34L120.2 278.6l-28.25 28.25c-3.125 3.125-8.25 3.125-11.38 0L69.37 295.6c-3.125-3.125-3.125-8.25 0-11.38l28.25-28.25l-28.25-28.25c-3.125-3.125-3.125-8.25 0-11.38l11.25-11.25c3.125-3.125 8.25-3.125 11.38 0l28.25 28.25l45.25-45.25l-34-34l-16.88 17c-3.125 3.125-8.25 3.125-11.38 0l-11.25-11.25c-3.125-3.125-3.125-8.25 0-11.38l16.88-17l-16.88-16.88c-3.125-3.125-3.125-8.25 0-11.38l11.25-11.25c3.125-3.125 8.25-3.125 11.38 0l16.88 17l17-17c3.125-3.125 8.25-3.125 11.38 0l11.25 11.25c3.125 3.125 3.125 8.25 0 11.38l-17 16.88l34 34l45.25-45.25L205.1 92c-3.125-3.125-3.125-8.25 0-11.38l11.25-11.25c3.125-3.125 8.25-3.125 11.38 0l28.25 28.25l28.25-28.25c3.125-3.125 8.25-3.125 11.38 0l11.25 11.25c3.125 3.125 3.125 8.25 0 11.38l-28.25 28.25l45.25 45.25l34-34l-17-16.88c-3.125-3.125-3.125-8.25 0-11.38l11.25-11.25c3.125-3.125 8.25-3.125 11.38 0l17 16.88l16.88-16.88c3.125-3.125 8.251-3.125 11.38 0l11.25 11.25c3.125 3.125 3.125 8.25 0 11.38l-17 16.88l17 17c3.125 3.125 3.125 8.25 0 11.38l-11.25 11.25c-3.125 3.125-8.251 3.125-11.38 0l-16.88-17l-34 34l45.25 45.25l28.25-28.25c3.125-3.125 8.25-3.125 11.38 0l11.25 11.25c3.125 3.125 3.125 8.25 0 11.38l-28.25 28.25l28.25 28.25C445.7 287.4 445.7 292.5 442.6 295.6zM278.6 256l45.25 45.25l45.25-45.25l-45.25-45.25L278.6 256z"], + "subscript": [512, 512, [], "f12c", "M480 448v-128c0-11.09-5.75-21.38-15.17-27.22c-9.422-5.875-21.25-6.344-31.14-1.406l-32 16c-15.81 7.906-22.22 27.12-14.31 42.94c5.609 11.22 16.89 17.69 28.62 17.69v80c-17.67 0-32 14.31-32 32s14.33 32 32 32h64c17.67 0 32-14.31 32-32S497.7 448 480 448zM320 128c17.67 0 32-14.31 32-32s-14.33-32-32-32l-32-.0024c-10.44 0-20.23 5.101-26.22 13.66L176 200.2L90.22 77.67C84.23 69.11 74.44 64.01 64 64.01L32 64.01c-17.67 0-32 14.32-32 32s14.33 32 32 32h15.34L136.9 256l-89.6 128H32c-17.67 0-32 14.31-32 32s14.33 31.1 32 31.1l32-.0024c10.44 0 20.23-5.086 26.22-13.65L176 311.8l85.78 122.5C267.8 442.9 277.6 448 288 448l32 .0024c17.67 0 32-14.31 32-31.1s-14.33-32-32-32h-15.34l-89.6-128l89.6-127.1H320z"], + "suitcase": [512, 512, [129523], "f0f2", "M128 56C128 25.07 153.1 0 184 0H328C358.9 0 384 25.07 384 56V480H128V56zM176 96H336V56C336 51.58 332.4 48 328 48H184C179.6 48 176 51.58 176 56V96zM64 96H96V480H64C28.65 480 0 451.3 0 416V160C0 124.7 28.65 96 64 96zM448 480H416V96H448C483.3 96 512 124.7 512 160V416C512 451.3 483.3 480 448 480z"], + "suitcase-medical": [512, 512, ["medkit"], "f0fa", "M0 144v288C0 457.6 22.41 480 48 480H64V96H48C22.41 96 0 118.4 0 144zM464 96H448v384h16c25.59 0 48-22.41 48-48v-288C512 118.4 489.6 96 464 96zM384 48C384 22.41 361.6 0 336 0h-160C150.4 0 128 22.41 128 48V96H96v384h320V96h-32V48zM176 48h160V96h-160V48zM352 312C352 316.4 348.4 320 344 320H288v56c0 4.375-3.625 8-8 8h-48C227.6 384 224 380.4 224 376V320H168C163.6 320 160 316.4 160 312v-48C160 259.6 163.6 256 168 256H224V200C224 195.6 227.6 192 232 192h48C284.4 192 288 195.6 288 200V256h56C348.4 256 352 259.6 352 264V312z"], + "suitcase-rolling": [448, 512, [], "f5c1", "M368 128h-47.95l.0123-80c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48L128 128H80C53.5 128 32 149.5 32 176v256C32 458.5 53.5 480 80 480h16.05L96 496C96 504.9 103.1 512 112 512h32C152.9 512 160 504.9 160 496L160.1 480h128L288 496c0 8.875 7.125 16 16 16h32c8.875 0 16-7.125 16-16l.0492-16H368c26.5 0 48-21.5 48-48v-256C416 149.5 394.5 128 368 128zM176.1 48h96V128h-96V48zM336 384h-224C103.2 384 96 376.8 96 368C96 359.2 103.2 352 112 352h224c8.801 0 16 7.199 16 16C352 376.8 344.8 384 336 384zM336 256h-224C103.2 256 96 248.8 96 240C96 231.2 103.2 224 112 224h224C344.8 224 352 231.2 352 240C352 248.8 344.8 256 336 256z"], + "sun": [512, 512, [9728], "f185", "M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"], + "sun-plant-wilt": [640, 512, [], "e57a", "M192 160C192 177.7 177.7 192 160 192C142.3 192 128 177.7 128 160C128 142.3 142.3 128 160 128C177.7 128 192 142.3 192 160zM160 0C166.3 0 172 3.708 174.6 9.467L199.4 64.89L256.1 43.23C262 40.98 268.7 42.4 273.1 46.86C277.6 51.32 279 57.99 276.8 63.88L255.1 120.6L310.5 145.4C316.3 147.1 320 153.7 320 160C320 166.3 316.3 172 310.5 174.6L255.1 199.4L276.8 256.1C279 262 277.6 268.7 273.1 273.1C268.7 277.6 262 279 256.1 276.8L199.4 255.1L174.6 310.5C172 316.3 166.3 320 160 320C153.7 320 147.1 316.3 145.4 310.5L120.6 255.1L63.88 276.8C57.99 279 51.32 277.6 46.86 273.1C42.4 268.7 40.98 262 43.23 256.1L64.89 199.4L9.467 174.6C3.708 172 0 166.3 0 160C0 153.7 3.708 147.1 9.467 145.4L64.89 120.6L43.23 63.88C40.98 57.99 42.4 51.32 46.86 46.86C51.32 42.4 57.99 40.98 63.88 43.23L120.6 64.89L145.4 9.467C147.1 3.708 153.7 0 160 0V0zM160 224C195.3 224 224 195.3 224 160C224 124.7 195.3 96 160 96C124.7 96 96 124.7 96 160C96 195.3 124.7 224 160 224zM504 448H608C625.7 448 640 462.3 640 480C640 497.7 625.7 512 608 512H32C14.33 512 .0003 497.7 .0003 480C.0003 462.3 14.33 448 32 448H456V272C456 254.3 441.7 240 424 240C406.3 240 392 254.3 392 272V293.4C406.8 301.1 416 316.5 416 338C416 357.3 394.5 390.1 368 416C341.5 390.1 320 357.6 320 338C320 316.5 329.2 301.1 344 293.4V271.1C344 227.8 379.8 191.1 424 191.1C435.4 191.1 446.2 194.4 456 198.7V175.1C456 131.8 491.8 95.1 536 95.1C580.2 95.1 616 131.8 616 175.1V229.4C630.8 237.1 640 252.5 640 274C640 293.3 618.5 326.1 592 352C565.5 326.1 544 293.6 544 274C544 252.5 553.2 237.1 568 229.4V175.1C568 158.3 553.7 143.1 536 143.1C518.3 143.1 504 158.3 504 175.1V448z"], + "superscript": [512, 512, [], "f12b", "M480 160v-128c0-11.09-5.75-21.37-15.17-27.22C455.4-1.048 443.6-1.548 433.7 3.39l-32 16c-15.81 7.906-22.22 27.12-14.31 42.94C392.1 73.55 404.3 80.01 416 80.01v80c-17.67 0-32 14.31-32 32s14.33 32 32 32h64c17.67 0 32-14.31 32-32S497.7 160 480 160zM320 128c17.67 0 32-14.31 32-32s-14.33-32-32-32l-32-.0024c-10.44 0-20.23 5.101-26.22 13.66L176 200.2L90.22 77.67C84.23 69.11 74.44 64.01 64 64.01L32 64.01c-17.67 0-32 14.32-32 32s14.33 32 32 32h15.34L136.9 256l-89.6 128H32c-17.67 0-32 14.31-32 32s14.33 31.1 32 31.1l32-.0024c10.44 0 20.23-5.086 26.22-13.65L176 311.8l85.78 122.5C267.8 442.9 277.6 448 288 448l32 .0024c17.67 0 32-14.31 32-31.1s-14.33-32-32-32h-15.34l-89.6-128l89.6-127.1H320z"], + "swatchbook": [512, 512, [], "f5c3", "M0 32C0 14.33 14.33 0 32 0H160C177.7 0 192 14.33 192 32V416C192 469 149 512 96 512C42.98 512 0 469 0 416V32zM128 64H64V128H128V64zM64 256H128V192H64V256zM96 440C109.3 440 120 429.3 120 416C120 402.7 109.3 392 96 392C82.75 392 72 402.7 72 416C72 429.3 82.75 440 96 440zM224 416V154L299.4 78.63C311.9 66.13 332.2 66.13 344.7 78.63L435.2 169.1C447.7 181.6 447.7 201.9 435.2 214.4L223.6 425.9C223.9 422.7 224 419.3 224 416V416zM374.8 320H480C497.7 320 512 334.3 512 352V480C512 497.7 497.7 512 480 512H182.8L374.8 320z"], + "synagogue": [640, 512, [128333], "f69b", "M309.8 3.708C315.7-1.236 324.3-1.236 330.2 3.708L451.2 104.5C469.5 119.7 480 142.2 480 165.1V512H384V384C384 348.7 355.3 320 320 320C284.7 320 256 348.7 256 384V512H160V165.1C160 142.2 170.5 119.7 188.8 104.5L309.8 3.708zM326.1 124.3C323.9 118.9 316.1 118.9 313 124.3L297.2 152.4L264.9 152.1C258.7 152.1 254.8 158.8 257.9 164.2L274.3 191.1L257.9 219.8C254.8 225.2 258.7 231.9 264.9 231.9L297.2 231.6L313 259.7C316.1 265.1 323.9 265.1 326.1 259.7L342.8 231.6L375.1 231.9C381.3 231.9 385.2 225.2 382.1 219.8L365.7 191.1L382.1 164.2C385.2 158.8 381.3 152.1 375.1 152.1L342.8 152.4L326.1 124.3zM512 244.5L540.1 213.3C543.1 209.9 547.5 208 552 208C556.5 208 560.9 209.9 563.9 213.3L627.7 284.2C635.6 292.1 640 304.4 640 316.3V448C640 483.3 611.3 512 576 512H512V244.5zM128 244.5V512H64C28.65 512 0 483.3 0 448V316.3C0 304.4 4.389 292.1 12.32 284.2L76.11 213.3C79.14 209.9 83.46 208 88 208C92.54 208 96.86 209.9 99.89 213.3L128 244.5z"], + "syringe": [512, 512, [128137], "f48e", "M504.1 71.03l-64-64c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94L422.1 56L384 94.06l-55.03-55.03c-9.375-9.375-24.56-9.375-33.94 0c-8.467 8.467-8.873 21.47-2.047 30.86l149.1 149.1C446.3 222.1 451.1 224 456 224c6.141 0 12.28-2.344 16.97-7.031c9.375-9.375 9.375-24.56 0-33.94L417.9 128L456 89.94l15.03 15.03C475.7 109.7 481.9 112 488 112s12.28-2.344 16.97-7.031C514.3 95.59 514.3 80.41 504.1 71.03zM208.8 154.1l58.56 58.56c6.25 6.25 6.25 16.38 0 22.62C264.2 238.4 260.1 240 256 240S247.8 238.4 244.7 235.3L186.1 176.8L144.8 218.1l58.56 58.56c6.25 6.25 6.25 16.38 0 22.62C200.2 302.4 196.1 304 192 304S183.8 302.4 180.7 299.3L122.1 240.8L82.75 280.1C70.74 292.1 64 308.4 64 325.4v88.68l-56.97 56.97c-9.375 9.375-9.375 24.56 0 33.94C11.72 509.7 17.86 512 24 512s12.28-2.344 16.97-7.031L97.94 448h88.69c16.97 0 33.25-6.744 45.26-18.75l187.6-187.6l-149.1-149.1L208.8 154.1z"], + "t": [384, 512, [116], "54", "M384 64.01c0 17.67-14.33 32-32 32h-128v352c0 17.67-14.33 31.99-32 31.99s-32-14.32-32-31.99v-352H32c-17.67 0-32-14.33-32-32s14.33-32 32-32h320C369.7 32.01 384 46.34 384 64.01z"], + "table": [512, 512, [], "f0ce", "M448 32C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM224 256V160H64V256H224zM64 320V416H224V320H64zM288 416H448V320H288V416zM448 256V160H288V256H448z"], + "table-cells": [512, 512, ["th"], "f00a", "M448 32C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM152 96H64V160H152V96zM208 160H296V96H208V160zM448 96H360V160H448V96zM64 288H152V224H64V288zM296 224H208V288H296V224zM360 288H448V224H360V288zM152 352H64V416H152V352zM208 416H296V352H208V416zM448 352H360V416H448V352z"], + "table-cells-large": [512, 512, ["th-large"], "f009", "M448 32C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM448 96H288V224H448V96zM448 288H288V416H448V288zM224 224V96H64V224H224zM64 416H224V288H64V416z"], + "table-columns": [512, 512, ["columns"], "f0db", "M0 96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96zM64 416H224V160H64V416zM448 160H288V416H448V160z"], + "table-list": [512, 512, ["th-list"], "f00b", "M0 96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96zM64 160H128V96H64V160zM448 96H192V160H448V96zM64 288H128V224H64V288zM448 224H192V288H448V224zM64 416H128V352H64V416zM448 352H192V416H448V352z"], + "table-tennis-paddle-ball": [512, 512, [127955, "ping-pong-paddle-ball", "table-tennis"], "f45d", "M416 287.1c27.99 0 53.68 9.254 74.76 24.51c14.03-29.82 21.06-62.13 21.06-94.43c0-103.1-79.37-218.1-216.5-218.1c-59.94 0-120.4 23.71-165.5 68.95l-54.66 54.8C73.61 125.3 72.58 126.1 71.14 128.5l230.7 230.7C322.8 317.2 365.8 287.1 416 287.1zM290.3 392.1l-238.6-238.6C38.74 176.2 32.3 199.4 32.3 221.9c0 30.53 11.71 59.94 34.29 82.58l36.6 36.7l-92.38 81.32c-7.177 6.255-10.81 15.02-10.81 23.81c0 8.027 3.032 16.07 9.164 22.24l34.05 34.2c6.145 6.16 14.16 9.205 22.15 9.205c8.749 0 17.47-3.649 23.7-10.86l81.03-92.85l35.95 36.04c23.62 23.68 54.41 35.23 85.37 35.23c4.532 0 9.205-.2677 13.72-.7597c-10.56-18.61-17.12-39.89-17.12-62.81C288 408.1 288.1 400.5 290.3 392.1zM415.1 320c-52.99 0-95.99 42.1-95.99 95.1c0 52.1 42.99 95.99 95.99 95.99c52.1 0 95.99-42.1 95.99-95.99C511.1 363 468.1 320 415.1 320z"], + "tablet": [448, 512, ["tablet-android"], "f3fb", "M384 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM288 447.1C288 456.8 280.8 464 272 464H175.1C167.2 464 160 456.8 160 448S167.2 432 175.1 432h96C280.8 432 288 439.2 288 447.1z"], + "tablet-button": [448, 512, [], "f10a", "M384 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM224 464c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S241.8 464 224 464z"], + "tablet-screen-button": [448, 512, ["tablet-alt"], "f3fa", "M384 .0001H64c-35.35 0-64 28.65-64 64v384c0 35.35 28.65 63.1 64 63.1h320c35.35 0 64-28.65 64-63.1v-384C448 28.65 419.3 .0001 384 .0001zM224 480c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S241.8 480 224 480zM384 384H64v-320h320V384z"], + "tablets": [640, 512, [], "f490", "M159.1 191.1c-81.1 0-147.5 58.51-159.9 134.8C-.7578 331.5 3.367 336 8.365 336h303.3c4.998 0 8.996-4.5 8.248-9.25C307.4 250.5 241.1 191.1 159.1 191.1zM311.5 368H8.365c-4.998 0-9.123 4.5-8.248 9.25C12.49 453.5 78.88 512 159.1 512s147.4-58.5 159.8-134.8C320.7 372.5 316.5 368 311.5 368zM362.9 65.74c-3.502-3.502-9.504-3.252-12.25 .75c-45.52 62.76-40.52 150.4 15.88 206.9c56.52 56.51 144.2 61.39 206.1 15.88c4.002-2.875 4.252-8.877 .75-12.25L362.9 65.74zM593.4 46.61c-56.52-56.51-144.2-61.39-206.1-16c-4.002 2.877-4.252 8.877-.75 12.25l211.3 211.4c3.5 3.502 9.504 3.252 12.25-.75C654.8 190.8 649.9 103.1 593.4 46.61z"], + "tachograph-digital": [640, 512, ["digital-tachograph"], "f566", "M576 64H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64V128C640 92.8 611.2 64 576 64zM64 296C64 291.6 67.63 288 72 288h16C92.38 288 96 291.6 96 296v16C96 316.4 92.38 320 88 320h-16C67.63 320 64 316.4 64 312V296zM336 384h-256C71.2 384 64 376.8 64 368C64 359.2 71.2 352 79.1 352h256c8.801 0 16 7.199 16 16C352 376.8 344.8 384 336 384zM128 312v-16C128 291.6 131.6 288 136 288h16C156.4 288 160 291.6 160 296v16C160 316.4 156.4 320 152 320h-16C131.6 320 128 316.4 128 312zM192 312v-16C192 291.6 195.6 288 200 288h16C220.4 288 224 291.6 224 296v16C224 316.4 220.4 320 216 320h-16C195.6 320 192 316.4 192 312zM256 312v-16C256 291.6 259.6 288 264 288h16C284.4 288 288 291.6 288 296v16C288 316.4 284.4 320 280 320h-16C259.6 320 256 316.4 256 312zM352 312C352 316.4 348.4 320 344 320h-16C323.6 320 320 316.4 320 312v-16C320 291.6 323.6 288 328 288h16C348.4 288 352 291.6 352 296V312zM352 237.7C352 247.9 344.4 256 334.9 256H81.07C71.6 256 64 247.9 64 237.7V146.3C64 136.1 71.6 128 81.07 128h253.9C344.4 128 352 136.1 352 146.3V237.7zM560 384h-160c-8.801 0-16-7.201-16-16c0-8.801 7.199-16 16-16h160c8.801 0 16 7.199 16 16C576 376.8 568.8 384 560 384z"], + "tag": [448, 512, [127991], "f02b", "M48 32H197.5C214.5 32 230.7 38.74 242.7 50.75L418.7 226.7C443.7 251.7 443.7 292.3 418.7 317.3L285.3 450.7C260.3 475.7 219.7 475.7 194.7 450.7L18.75 274.7C6.743 262.7 0 246.5 0 229.5V80C0 53.49 21.49 32 48 32L48 32zM112 176C129.7 176 144 161.7 144 144C144 126.3 129.7 112 112 112C94.33 112 80 126.3 80 144C80 161.7 94.33 176 112 176z"], + "tags": [512, 512, [], "f02c", "M472.8 168.4C525.1 221.4 525.1 306.6 472.8 359.6L360.8 472.9C351.5 482.3 336.3 482.4 326.9 473.1C317.4 463.8 317.4 448.6 326.7 439.1L438.6 325.9C472.5 291.6 472.5 236.4 438.6 202.1L310.9 72.87C301.5 63.44 301.6 48.25 311.1 38.93C320.5 29.61 335.7 29.7 344.1 39.13L472.8 168.4zM.0003 229.5V80C.0003 53.49 21.49 32 48 32H197.5C214.5 32 230.7 38.74 242.7 50.75L410.7 218.7C435.7 243.7 435.7 284.3 410.7 309.3L277.3 442.7C252.3 467.7 211.7 467.7 186.7 442.7L18.75 274.7C6.743 262.7 0 246.5 0 229.5L.0003 229.5zM112 112C94.33 112 80 126.3 80 144C80 161.7 94.33 176 112 176C129.7 176 144 161.7 144 144C144 126.3 129.7 112 112 112z"], + "tape": [576, 512, [], "f4db", "M288 256C288 291.3 259.3 320 224 320C188.7 320 160 291.3 160 256C160 220.7 188.7 192 224 192C259.3 192 288 220.7 288 256zM544 416C561.7 416 576 430.3 576 448C576 465.7 561.7 480 544 480H224C100.3 480 0 379.7 0 256C0 132.3 100.3 32 224 32C347.7 32 448 132.3 448 256C448 318.7 422.3 375.3 380.8 416H544zM224 352C277 352 320 309 320 256C320 202.1 277 160 224 160C170.1 160 128 202.1 128 256C128 309 170.1 352 224 352z"], + "tarp": [576, 512, [], "e57b", "M576 288H448C430.3 288 416 302.3 416 320V448H64C28.65 448 0 419.3 0 384V128C0 92.65 28.65 64 64 64H512C547.3 64 576 92.65 576 128V288zM96 192C113.7 192 128 177.7 128 160C128 142.3 113.7 128 96 128C78.33 128 64 142.3 64 160C64 177.7 78.33 192 96 192zM448 448V320H576L448 448z"], + "tarp-droplet": [576, 512, [], "e57c", "M224 100C224 75.95 257.7 29.93 276.2 6.49C282.3-1.226 293.7-1.226 299.8 6.49C318.3 29.93 352 75.95 352 100C352 133.1 323.3 160 288 160C252.7 160 224 133.1 224 100V100zM64 128H197.5C210.6 165.3 246.2 192 288 192C329.8 192 365.4 165.3 378.5 128H512C547.3 128 576 156.7 576 192V352H448C430.3 352 416 366.3 416 384V512H64C28.65 512 0 483.3 0 448V192C0 156.7 28.65 128 64 128V128zM96 256C113.7 256 128 241.7 128 224C128 206.3 113.7 192 96 192C78.33 192 64 206.3 64 224C64 241.7 78.33 256 96 256zM448 512V384H576L448 512z"], + "taxi": [576, 512, [128662, "cab"], "f1ba", "M352 0C369.7 0 384 14.33 384 32V64L384 64.15C422.6 66.31 456.3 91.49 469.2 128.3L504.4 228.8C527.6 238.4 544 261.3 544 288V480C544 497.7 529.7 512 512 512H480C462.3 512 448 497.7 448 480V432H128V480C128 497.7 113.7 512 96 512H64C46.33 512 32 497.7 32 480V288C32 261.3 48.36 238.4 71.61 228.8L106.8 128.3C119.7 91.49 153.4 66.31 192 64.15L192 64V32C192 14.33 206.3 0 224 0L352 0zM197.4 128C183.8 128 171.7 136.6 167.2 149.4L141.1 224H434.9L408.8 149.4C404.3 136.6 392.2 128 378.6 128H197.4zM128 352C145.7 352 160 337.7 160 320C160 302.3 145.7 288 128 288C110.3 288 96 302.3 96 320C96 337.7 110.3 352 128 352zM448 288C430.3 288 416 302.3 416 320C416 337.7 430.3 352 448 352C465.7 352 480 337.7 480 320C480 302.3 465.7 288 448 288z"], + "teeth": [576, 512, [], "f62e", "M480 32H96C42.98 32 0 74.98 0 128v256c0 53.02 42.98 96 96 96h384c53.02 0 96-42.98 96-96V128C576 74.98 533 32 480 32zM144 336C144 362.5 122.5 384 96 384s-48-21.5-48-48v-32C48 295.1 55.13 288 64 288h64c8.875 0 16 7.125 16 16V336zM144 240C144 248.9 136.9 256 128 256H64C55.13 256 48 248.9 48 240v-32C48 181.5 69.5 160 96 160s48 21.5 48 48V240zM272 336C272 362.5 250.5 384 224 384s-48-21.5-48-48v-32C176 295.1 183.1 288 192 288h64c8.875 0 16 7.125 16 16V336zM272 242.3C272 249.9 265.9 256 258.3 256H189.7C182.1 256 176 249.9 176 242.3V176C176 149.5 197.5 128 224 128s48 21.54 48 48V242.3zM400 336c0 26.5-21.5 48-48 48s-48-21.5-48-48v-32C304 295.1 311.1 288 320 288h64c8.875 0 16 7.125 16 16V336zM400 242.3C400 249.9 393.9 256 386.3 256h-68.57C310.1 256 304 249.9 304 242.3V176C304 149.5 325.5 128 352 128s48 21.54 48 48V242.3zM528 336c0 26.5-21.5 48-48 48s-48-21.5-48-48v-32C432 295.1 439.1 288 448 288h64c8.875 0 16 7.125 16 16V336zM528 240C528 248.9 520.9 256 512 256h-64c-8.875 0-16-7.125-16-16v-32C432 181.5 453.5 160 480 160s48 21.5 48 48V240z"], + "teeth-open": [576, 512, [], "f62f", "M512 288H64c-35.35 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h384c53.02 0 96-42.98 96-96v-32C576 316.7 547.3 288 512 288zM144 368C144 394.5 122.5 416 96 416s-48-21.5-48-48v-32C48 327.1 55.13 320 64 320h64c8.875 0 16 7.125 16 16V368zM272 368C272 394.5 250.5 416 224 416s-48-21.5-48-48v-32C176 327.1 183.1 320 192 320h64c8.875 0 16 7.125 16 16V368zM400 368c0 26.5-21.5 48-48 48s-48-21.5-48-48v-32c0-8.875 7.125-16 16-16h64c8.875 0 16 7.125 16 16V368zM528 368c0 26.5-21.5 48-48 48s-48-21.5-48-48v-32c0-8.875 7.125-16 16-16h64c8.875 0 16 7.125 16 16V368zM480 32H96C42.98 32 0 74.98 0 128v64c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V128C576 74.98 533 32 480 32zM144 208C144 216.9 136.9 224 128 224H64C55.13 224 48 216.9 48 208v-32C48 149.5 69.5 128 96 128s48 21.5 48 48V208zM272 210.3C272 217.9 265.9 224 258.3 224H189.7C182.1 224 176 217.9 176 210.3V144C176 117.5 197.5 96 224 96s48 21.54 48 48V210.3zM400 210.3C400 217.9 393.9 224 386.3 224h-68.57C310.1 224 304 217.9 304 210.3V144C304 117.5 325.5 96 352 96s48 21.54 48 48V210.3zM528 208C528 216.9 520.9 224 512 224h-64c-8.875 0-16-7.125-16-16v-32C432 149.5 453.5 128 480 128s48 21.5 48 48V208z"], + "temperature-arrow-down": [512, 512, ["temperature-down"], "e03f", "M159.1 322.9l-.0002-18.92C159.1 295.1 152.9 287.1 144 287.1c-8.875 0-15.1 7.115-15.1 15.99L128 322.9c-22 7.875-35.25 30.38-31.25 53.38C100.6 399.4 120.6 416.1 144 416.1c23.37 0 43.37-16.71 47.25-39.83C195.2 353.3 181.1 330.8 159.1 322.9zM255.1 112C255.1 50.13 205.9 0 144 0C82.13 0 32 50.13 32 112v166.5C12.25 303.3 0 334 0 368C0 447.5 64.5 512 144 512c79.5 0 143.1-64.5 143.1-144c0-34-12.25-64.88-32-89.5V112zM219.9 393.4C208.1 426.1 178.4 447.1 144 447.1c-34.38 0-65-21.84-75.88-54.59C57.25 360.8 68.5 324.9 96 304.3V112C96 85.5 117.5 64 144 64c26.5 0 47.1 21.5 47.1 48v192.3C219.5 324.9 230.7 360.8 219.9 393.4zM499.1 343c-13.77-11.03-33.92-8.75-44.97 5L448 356.8V64c0-17.69-14.33-32-32-32s-32 14.31-32 32v292.8L376.1 348c-11.03-13.81-31.19-16.03-44.97-5c-13.81 11.06-16.05 31.19-5 45l64 80C397.1 475.6 406.3 480 416 480s18.92-4.406 24.98-12l64-80C516 374.2 513.8 354.1 499.1 343z"], + "temperature-arrow-up": [512, 512, ["temperature-up"], "e040", "M159.1 322.9V112C159.1 103.1 152.9 96 144 96C135.1 96 128 103.1 128 112v210.9c-22 7.875-35.25 30.38-31.25 53.38C100.6 399.4 120.6 416.1 144 416.1c23.37 0 43.37-16.71 47.25-39.83C195.2 353.3 181.1 330.8 159.1 322.9zM255.1 112C255.1 50.13 205.9 0 144 0C82.13 0 32 50.13 32 112v166.5C12.25 303.3 0 334 0 368C0 447.5 64.5 512 144 512c79.5 0 143.1-64.5 143.1-144c0-34-12.25-64.88-32-89.5V112zM219.9 393.4C208.1 426.1 178.4 447.1 144 447.1c-34.38 0-65-21.84-75.88-54.59C57.25 360.8 68.5 324.9 96 304.3V112c0-26.5 21.5-48.01 48-48.01c26.5 0 47.1 21.51 47.1 48.01v192.3C219.5 324.9 230.7 360.8 219.9 393.4zM504.1 124l-64-80c-12.12-15.19-37.84-15.19-49.97 0l-64 80c-11.05 13.81-8.812 33.94 5 45c13.75 11.03 33.94 8.781 44.97-5L384 155.2V448c0 17.69 14.33 32 32 32s32-14.31 32-32V155.2L455 164c6.312 7.906 15.61 12 25 12c7.016 0 14.08-2.281 19.97-7C513.8 157.9 516 137.8 504.1 124z"], + "temperature-empty": [320, 512, ["temperature-0", "thermometer-0", "thermometer-empty"], "f2cb", "M272 278.5V112c0-61.87-50.12-112-111.1-112S48 50.13 48 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 143.1 144 143.1S304 447.5 304 368C304 334 291.8 303.1 272 278.5zM160 448c-44.13 0-80-35.87-80-79.1c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.3c19.75 14.75 32 38.25 32 63.75C240 412.1 204.1 448 160 448zM160 320c-26.51 0-48 21.49-48 48s21.49 48 48 48s48-21.49 48-48S186.5 320 160 320z"], + "temperature-full": [320, 512, ["temperature-4", "thermometer-4", "thermometer-full"], "f2c7", "M176 322.9V112c0-8.75-7.25-16-16-16s-16 7.25-16 16v210.9c-18.62 6.625-32 24.25-32 45.13c0 26.5 21.5 48 48 48s48-21.5 48-48C208 347.1 194.6 329.5 176 322.9zM272 278.5V112c0-61.87-50.12-112-111.1-112S48 50.13 48 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 143.1 144 143.1S304 447.5 304 368C304 334 291.8 303.1 272 278.5zM160 448c-44.13 0-80-35.87-80-79.1c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.3c19.75 14.75 32 38.25 32 63.75C240 412.1 204.1 448 160 448z"], + "temperature-half": [320, 512, [127777, "temperature-2", "thermometer-2", "thermometer-half"], "f2c9", "M176 322.9l.0002-114.9c0-8.75-7.25-16-16-16s-15.1 7.25-15.1 16L144 322.9c-18.62 6.625-32 24.25-32 45.13c0 26.5 21.5 48 48 48s48-21.5 48-48C208 347.1 194.6 329.5 176 322.9zM272 278.5V112c0-61.87-50.12-112-111.1-112S48 50.13 48 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 143.1 144 143.1S304 447.5 304 368C304 334 291.8 303.1 272 278.5zM160 448c-44.13 0-80-35.87-80-79.1c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.3c19.75 14.75 32 38.25 32 63.75C240 412.1 204.1 448 160 448z"], + "temperature-high": [512, 512, [], "f769", "M160 322.9V112C160 103.3 152.8 96 144 96S128 103.3 128 112v210.9C109.4 329.5 96 347.1 96 368C96 394.5 117.5 416 144 416S192 394.5 192 368C192 347.1 178.6 329.5 160 322.9zM416 0c-52.88 0-96 43.13-96 96s43.13 96 96 96s96-43.13 96-96S468.9 0 416 0zM416 128c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S433.8 128 416 128zM256 112c0-61.88-50.13-112-112-112s-112 50.13-112 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.1-12.25-64.88-32-89.5V112zM144 448c-44.13 0-80-35.88-80-80c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48S192 85.5 192 112V304.3c19.75 14.75 32 38.25 32 63.75C224 412.1 188.1 448 144 448z"], + "temperature-low": [512, 512, [], "f76b", "M160 322.9V304C160 295.3 152.8 288 144 288S128 295.3 128 304v18.88C109.4 329.5 96 347.1 96 368C96 394.5 117.5 416 144 416S192 394.5 192 368C192 347.1 178.6 329.5 160 322.9zM256 112c0-61.88-50.13-112-112-112s-112 50.13-112 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.1-12.25-64.88-32-89.5V112zM144 448c-44.13 0-80-35.88-80-80c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.1c19.75 14.75 32 38.38 32 63.88C224 412.1 188.1 448 144 448zM416 0c-52.88 0-96 43.13-96 96s43.13 96 96 96s96-43.13 96-96S468.9 0 416 0zM416 128c-17.75 0-32-14.25-32-32s14.25-32 32-32s32 14.25 32 32S433.8 128 416 128z"], + "temperature-quarter": [320, 512, ["temperature-1", "thermometer-1", "thermometer-quarter"], "f2ca", "M176 322.9l.0002-50.88c0-8.75-7.25-16-16-16s-15.1 7.25-15.1 16L144 322.9c-18.62 6.625-32 24.25-32 45.13c0 26.5 21.5 48 48 48s48-21.5 48-48C208 347.1 194.6 329.5 176 322.9zM272 278.5V112c0-61.87-50.12-112-111.1-112S48 50.13 48 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 143.1 144 143.1S304 447.5 304 368C304 334 291.8 303.1 272 278.5zM160 448c-44.13 0-80-35.87-80-79.1c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.3c19.75 14.75 32 38.25 32 63.75C240 412.1 204.1 448 160 448z"], + "temperature-three-quarters": [320, 512, ["temperature-3", "thermometer-3", "thermometer-three-quarters"], "f2c8", "M176 322.9V160c0-8.75-7.25-16-16-16s-16 7.25-16 16v162.9c-18.62 6.625-32 24.25-32 45.13c0 26.5 21.5 48 48 48s48-21.5 48-48C208 347.1 194.6 329.5 176 322.9zM272 278.5V112c0-61.87-50.12-112-111.1-112S48 50.13 48 112v166.5c-19.75 24.75-32 55.5-32 89.5c0 79.5 64.5 143.1 144 143.1S304 447.5 304 368C304 334 291.8 303.1 272 278.5zM160 448c-44.13 0-80-35.87-80-79.1c0-25.5 12.25-48.88 32-63.75v-192.3c0-26.5 21.5-48 48-48s48 21.5 48 48v192.3c19.75 14.75 32 38.25 32 63.75C240 412.1 204.1 448 160 448z"], + "tenge-sign": [384, 512, [8376, "tenge"], "f7d7", "M0 64C0 46.33 14.33 32 32 32H352C369.7 32 384 46.33 384 64C384 81.67 369.7 96 352 96H32C14.33 96 0 81.67 0 64zM0 192C0 174.3 14.33 160 32 160H352C369.7 160 384 174.3 384 192C384 209.7 369.7 224 352 224H224V448C224 465.7 209.7 480 192 480C174.3 480 160 465.7 160 448V224H32C14.33 224 0 209.7 0 192z"], + "tent": [576, 512, [], "e57d", "M269.4 5.961C280.5-1.987 295.5-1.987 306.6 5.961L530.6 165.1C538 171.2 542.8 179.4 543.8 188.5L575.8 476.5C576.8 485.5 573.9 494.6 567.8 501.3C561.8 508.1 553.1 512 544 512H416L288 288V512H32C22.9 512 14.23 508.1 8.156 501.3C2.086 494.6-.8093 485.5 .1958 476.5L32.2 188.5C33.2 179.4 38 171.2 45.4 165.1L269.4 5.961z"], + "tent-arrow-down-to-line": [640, 512, [], "e57e", "M241.8 111.9C250.7 121.8 249.9 136.1 240.1 145.8L160.1 217.8C150.9 226.1 137.1 226.1 127.9 217.8L47.94 145.8C38.09 136.1 37.29 121.8 46.16 111.9C55.03 102.1 70.2 101.3 80.05 110.2L119.1 146.1V24C119.1 10.75 130.7 0 143.1 0C157.3 0 167.1 10.75 167.1 24V146.1L207.9 110.2C217.8 101.3 232.1 102.1 241.8 111.9H241.8zM364.6 134.5C376.1 125.8 391.9 125.8 403.4 134.5L571.4 262.5C578 267.6 582.4 275 583.6 283.3L608.4 448C625.9 448.2 640 462.4 640 480C640 497.7 625.7 512 608 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H159.6L184.4 283.3C185.6 275 189.1 267.6 196.6 262.5L364.6 134.5zM384 448H460.8L384 320V448z"], + "tent-arrow-left-right": [576, 512, [], "e57f", "M568.1 78.16C573.1 82.71 576 89.2 576 96C576 102.8 573.1 109.3 568.1 113.8L488.1 185.8C478.2 194.7 463 193.9 454.2 184.1C445.3 174.2 446.1 159 455.9 150.2L489.5 120H86.54L120.1 150.2C129.9 159 130.7 174.2 121.8 184.1C112.1 193.9 97.8 194.7 87.94 185.8L7.945 113.8C2.888 109.3 0 102.8 0 96C0 89.2 2.888 82.71 7.945 78.16L87.94 6.161C97.8-2.706 112.1-1.907 121.8 7.945C130.7 17.8 129.9 32.97 120.1 41.84L86.54 72H489.5L455.9 41.84C446.1 32.97 445.3 17.8 454.2 7.945C463-1.907 478.2-2.706 488.1 6.161L568.1 78.16zM475.4 294.5C482 299.6 486.4 307 487.6 315.3L511.6 475.3C513 484.5 510.3 493.8 504.2 500.9C498.2 507.9 489.3 512 480 512H384L287.1 352V512H96C86.68 512 77.83 507.9 71.75 500.9C65.67 493.8 62.97 484.5 64.35 475.3L88.35 315.3C89.59 307 93.98 299.6 100.6 294.5L268.6 166.5C280.1 157.8 295.9 157.8 307.4 166.5L475.4 294.5z"], + "tent-arrow-turn-left": [576, 512, [], "e580", "M86.54 72H456C522.3 72 576 125.7 576 192V232C576 245.3 565.3 256 552 256C538.7 256 528 245.3 528 232V192C528 152.2 495.8 120 456 120H86.54L120.1 150.2C129.9 159 130.7 174.2 121.8 184.1C112.1 193.9 97.8 194.7 87.94 185.8L7.945 113.8C2.888 109.3 0 102.8 0 96C0 89.2 2.888 82.71 7.945 78.16L87.94 6.161C97.8-2.706 112.1-1.907 121.8 7.945C130.7 17.8 129.9 32.97 120.1 41.84L86.54 72zM475.4 294.5C482 299.6 486.4 307 487.6 315.3L511.6 475.3C513 484.5 510.3 493.8 504.2 500.9C498.2 507.9 489.3 512 480 512H384L287.1 352V512H96C86.68 512 77.83 507.9 71.75 500.9C65.67 493.8 62.97 484.5 64.35 475.3L88.35 315.3C89.59 307 93.98 299.6 100.6 294.5L268.6 166.5C280.1 157.8 295.9 157.8 307.4 166.5L475.4 294.5z"], + "tent-arrows-down": [576, 512, [], "e581", "M209.8 111.9C218.7 121.8 217.9 136.1 208.1 145.8L128.1 217.8C118.9 226.1 105.1 226.1 95.94 217.8L15.94 145.8C6.093 136.1 5.294 121.8 14.16 111.9C23.03 102.1 38.2 101.3 48.06 110.2L88 146.1V24C88 10.75 98.75 0 112 0C125.3 0 136 10.75 136 24V146.1L175.9 110.2C185.8 101.3 200.1 102.1 209.8 111.9H209.8zM561.8 111.9C570.7 121.8 569.9 136.1 560.1 145.8L480.1 217.8C470.9 226.1 457.1 226.1 447.9 217.8L367.9 145.8C358.1 136.1 357.3 121.8 366.2 111.9C375 102.1 390.2 101.3 400.1 110.2L440 146.1V24C440 10.75 450.7 0 464 0C477.3 0 488 10.75 488 24V146.1L527.9 110.2C537.8 101.3 552.1 102.1 561.8 111.9H561.8zM475.4 294.5C482 299.6 486.4 307 487.6 315.3L511.6 475.3C513 484.5 510.3 493.8 504.2 500.9C498.2 507.9 489.3 512 480 512H384L287.1 352V512H96C86.68 512 77.83 507.9 71.75 500.9C65.67 493.8 62.97 484.5 64.35 475.3L88.35 315.3C89.59 307 93.98 299.6 100.6 294.5L268.6 166.5C280.1 157.8 295.9 157.8 307.4 166.5L475.4 294.5z"], + "tents": [640, 512, [], "e582", "M396.6 6.546C408.1-2.182 423.9-2.182 435.4 6.546L603.4 134.5C610 139.6 614.4 147 615.6 155.3L639.6 315.3C641 324.5 638.3 333.8 632.2 340.9C626.2 347.9 617.3 352 608 352H461.5L455.3 310.5C452.8 294 444 279.2 430.8 269.1L262.8 141.1C254.6 134.9 245.4 130.9 235.8 129.1L396.6 6.546zM411.4 294.5C418 299.6 422.4 307 423.6 315.3L447.6 475.3C449 484.5 446.3 493.8 440.2 500.9C434.2 507.9 425.3 512 416 512H319.1L223.1 352V512H32C22.68 512 13.83 507.9 7.753 500.9C1.674 493.8-1.028 484.5 .3542 475.3L24.35 315.3C25.59 307 29.98 299.6 36.61 294.5L204.6 166.5C216.1 157.8 231.9 157.8 243.4 166.5L411.4 294.5z"], + "terminal": [576, 512, [], "f120", "M9.372 86.63C-3.124 74.13-3.124 53.87 9.372 41.37C21.87 28.88 42.13 28.88 54.63 41.37L246.6 233.4C259.1 245.9 259.1 266.1 246.6 278.6L54.63 470.6C42.13 483.1 21.87 483.1 9.372 470.6C-3.124 458.1-3.124 437.9 9.372 425.4L178.7 256L9.372 86.63zM544 416C561.7 416 576 430.3 576 448C576 465.7 561.7 480 544 480H256C238.3 480 224 465.7 224 448C224 430.3 238.3 416 256 416H544z"], + "text-height": [576, 512, [], "f034", "M288 32.01H32c-17.67 0-32 14.31-32 32v64c0 17.69 14.33 32 32 32s32-14.31 32-32v-32h64v320H96c-17.67 0-32 14.31-32 32s14.33 32 32 32h128c17.67 0 32-14.31 32-32s-14.33-32-32-32H192v-320h64v32c0 17.69 14.33 32 32 32s32-14.31 32-32v-64C320 46.33 305.7 32.01 288 32.01zM521.4 361.4L512 370.8V141.3l9.375 9.375C527.6 156.9 535.8 160 544 160s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-64-64c-12.5-12.5-32.75-12.5-45.25 0l-64 64c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0L448 141.3v229.5l-9.375-9.375c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l64 64C463.6 476.9 471.8 480 480 480s16.38-3.118 22.62-9.368l64-64c12.5-12.5 12.5-32.75 0-45.25S533.9 348.9 521.4 361.4z"], + "text-slash": [640, 512, ["remove-format"], "f87d", "M352 416H306.7l18.96-64.1L271.4 308.5L239.1 416H192c-17.67 0-32 14.31-32 32s14.33 31.99 31.1 31.99h160C369.7 480 384 465.7 384 448S369.7 416 352 416zM630.8 469.1l-276.4-216.7l45.63-156.5H512v32c0 17.69 14.33 32 32 32s32-14.31 32-32v-64c0-17.69-14.33-32-32-32H192c-17.67 0-32 14.31-32 32v36.11L38.81 5.13c-10.47-8.219-25.53-6.37-33.7 4.068s-6.349 25.54 4.073 33.69l591.1 463.1c4.406 3.469 9.61 5.127 14.8 5.127c7.125 0 14.17-3.164 18.9-9.195C643.1 492.4 641.2 477.3 630.8 469.1zM300.1 209.9l-82.08-64.33C221.5 140.5 224 134.7 224 128v-32h109.3L300.1 209.9z"], + "text-width": [448, 512, [], "f035", "M416 32.01H32c-17.67 0-32 14.31-32 32v63.1c0 17.69 14.33 32 32 32s32-14.31 32-32v-32h128v128H176c-17.67 0-32 14.31-32 31.1s14.33 32 32 32h96c17.67 0 32-14.31 32-32s-14.33-31.1-32-31.1H256v-128h128v32c0 17.69 14.33 32 32 32s32-14.32 32-32V64.01C448 46.33 433.7 32.01 416 32.01zM374.6 297.4c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l9.375 9.375h-229.5L118.6 342.6c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0l-64 64c-12.5 12.5-12.5 32.75 0 45.25l64 64C79.63 476.9 87.81 480 96 480s16.38-3.118 22.62-9.368c12.5-12.5 12.5-32.75 0-45.25l-9.375-9.375h229.5l-9.375 9.375c-12.5 12.5-12.5 32.75 0 45.25C335.6 476.9 343.8 480 352 480s16.38-3.118 22.62-9.368l64-64c12.5-12.5 12.5-32.75 0-45.25L374.6 297.4z"], + "thermometer": [512, 512, [], "f491", "M483.1 162.6L229.8 415.9l-99.87-.0001l-88.99 89.02c-9.249 9.377-24.5 9.377-33.87 0c-9.374-9.252-9.374-24.51 0-33.88l88.99-89.02l.0003-100.9l49.05-49.39l51.6 51.59c3.125 3.126 7.218 4.688 11.31 4.688s8.187-1.563 11.31-4.688c6.249-6.252 6.249-16.38 0-22.63L167.6 209.1l41.24-41.52l51.81 51.81c3.125 3.126 7.218 4.688 11.31 4.688s8.187-1.563 11.31-4.688c6.249-6.252 6.249-16.38 0-22.63L231.4 144.8l41.24-41.52l52.02 52.02c3.125 3.126 7.218 4.688 11.31 4.688s8.187-1.563 11.31-4.688c6.249-6.252 6.249-16.38 0-22.63l-52.09-52.09l49.68-50.02c36.37-36.51 94.37-40.88 131.9-10.25C526.2 61.11 518.9 127.8 483.1 162.6z"], + "thumbs-down": [512, 512, [61576, 128078], "f165", "M96 32.04H32c-17.67 0-32 14.32-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64c17.67 0 32-14.33 32-31.1V64.03C128 46.36 113.7 32.04 96 32.04zM467.3 240.2C475.1 231.7 480 220.4 480 207.9c0-23.47-16.87-42.92-39.14-47.09C445.3 153.6 448 145.1 448 135.1c0-21.32-14-39.18-33.25-45.43C415.5 87.12 416 83.61 416 79.98C416 53.47 394.5 32 368 32h-58.69c-34.61 0-68.28 11.22-95.97 31.98L179.2 89.57C167.1 98.63 160 112.9 160 127.1l.1074 160c0 0-.0234-.0234 0 0c.0703 13.99 6.123 27.94 17.91 37.36l16.3 13.03C276.2 403.9 239.4 480 302.5 480c30.96 0 49.47-24.52 49.47-48.11c0-15.15-11.76-58.12-34.52-96.02H464c26.52 0 48-21.47 48-47.98C512 262.5 492.2 241.9 467.3 240.2z"], + "thumbs-up": [512, 512, [61575, 128077], "f164", "M128 447.1V223.1c0-17.67-14.33-31.1-32-31.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64C113.7 479.1 128 465.6 128 447.1zM512 224.1c0-26.5-21.48-47.98-48-47.98h-146.5c22.77-37.91 34.52-80.88 34.52-96.02C352 56.52 333.5 32 302.5 32c-63.13 0-26.36 76.15-108.2 141.6L178 186.6C166.2 196.1 160.2 210 160.1 224c-.0234 .0234 0 0 0 0L160 384c0 15.1 7.113 29.33 19.2 38.39l34.14 25.59C241 468.8 274.7 480 309.3 480H368c26.52 0 48-21.47 48-47.98c0-3.635-.4805-7.143-1.246-10.55C434 415.2 448 397.4 448 376c0-9.148-2.697-17.61-7.139-24.88C463.1 347 480 327.5 480 304.1c0-12.5-4.893-23.78-12.72-32.32C492.2 270.1 512 249.5 512 224.1z"], + "thumbtack": [384, 512, [128392, 128204, "thumb-tack"], "f08d", "M32 32C32 14.33 46.33 0 64 0H320C337.7 0 352 14.33 352 32C352 49.67 337.7 64 320 64H290.5L301.9 212.2C338.6 232.1 367.5 265.4 381.4 306.9L382.4 309.9C385.6 319.6 383.1 330.4 377.1 338.7C371.9 347.1 362.3 352 352 352H32C21.71 352 12.05 347.1 6.04 338.7C.0259 330.4-1.611 319.6 1.642 309.9L2.644 306.9C16.47 265.4 45.42 232.1 82.14 212.2L93.54 64H64C46.33 64 32 49.67 32 32zM224 384V480C224 497.7 209.7 512 192 512C174.3 512 160 497.7 160 480V384H224z"], + "ticket": [576, 512, [127903], "f145", "M128 160H448V352H128V160zM512 64C547.3 64 576 92.65 576 128V208C549.5 208 528 229.5 528 256C528 282.5 549.5 304 576 304V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V304C26.51 304 48 282.5 48 256C48 229.5 26.51 208 0 208V128C0 92.65 28.65 64 64 64H512zM96 352C96 369.7 110.3 384 128 384H448C465.7 384 480 369.7 480 352V160C480 142.3 465.7 128 448 128H128C110.3 128 96 142.3 96 160V352z"], + "ticket-simple": [576, 512, ["ticket-alt"], "f3ff", "M0 128C0 92.65 28.65 64 64 64H512C547.3 64 576 92.65 576 128V208C549.5 208 528 229.5 528 256C528 282.5 549.5 304 576 304V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V304C26.51 304 48 282.5 48 256C48 229.5 26.51 208 0 208V128z"], + "timeline": [640, 512, [], "e29c", "M160 224H480V169.3C451.7 156.1 432 128.8 432 96C432 51.82 467.8 16 512 16C556.2 16 592 51.82 592 96C592 128.8 572.3 156.1 544 169.3V224H608C625.7 224 640 238.3 640 256C640 273.7 625.7 288 608 288H352V342.7C380.3 355 400 383.2 400 416C400 460.2 364.2 496 320 496C275.8 496 240 460.2 240 416C240 383.2 259.7 355 288 342.7V288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H96V169.3C67.75 156.1 48 128.8 48 96C48 51.82 83.82 16 128 16C172.2 16 208 51.82 208 96C208 128.8 188.3 156.1 160 169.3V224zM128 120C141.3 120 152 109.3 152 96C152 82.75 141.3 72 128 72C114.7 72 104 82.75 104 96C104 109.3 114.7 120 128 120zM512 72C498.7 72 488 82.75 488 96C488 109.3 498.7 120 512 120C525.3 120 536 109.3 536 96C536 82.75 525.3 72 512 72zM320 440C333.3 440 344 429.3 344 416C344 402.7 333.3 392 320 392C306.7 392 296 402.7 296 416C296 429.3 306.7 440 320 440z"], + "toggle-off": [576, 512, [], "f204", "M192 352C138.1 352 96 309 96 256C96 202.1 138.1 160 192 160C245 160 288 202.1 288 256C288 309 245 352 192 352zM384 448H192C85.96 448 0 362 0 256C0 149.1 85.96 64 192 64H384C490 64 576 149.1 576 256C576 362 490 448 384 448zM384 128H192C121.3 128 64 185.3 64 256C64 326.7 121.3 384 192 384H384C454.7 384 512 326.7 512 256C512 185.3 454.7 128 384 128z"], + "toggle-on": [576, 512, [], "f205", "M384 64C490 64 576 149.1 576 256C576 362 490 448 384 448H192C85.96 448 0 362 0 256C0 149.1 85.96 64 192 64H384zM384 352C437 352 480 309 480 256C480 202.1 437 160 384 160C330.1 160 288 202.1 288 256C288 309 330.1 352 384 352z"], + "toilet": [448, 512, [128701], "f7d8", "M432 48C440.8 48 448 40.75 448 32V16C448 7.25 440.8 0 432 0h-416C7.25 0 0 7.25 0 16V32c0 8.75 7.25 16 16 16H32v158.7C11.82 221.2 0 237.1 0 256c0 60.98 33.28 115.2 84.1 150.4l-19.59 64.36C59.16 491.3 74.53 512 96.03 512h255.9c21.5 0 36.88-20.75 30.62-41.25L363 406.4C414.7 371.2 448 316.1 448 256c0-18.04-11.82-34.85-32-49.26V48H432zM96 72C96 67.63 99.63 64 104 64h48C156.4 64 160 67.63 160 72v16C160 92.38 156.4 96 152 96h-48C99.63 96 96 92.38 96 88V72zM224 288C135.6 288 64 273.7 64 256c0-17.67 71.63-32 160-32s160 14.33 160 32C384 273.7 312.4 288 224 288z"], + "toilet-paper": [576, 512, [129531], "f71e", "M127.1 0C74.98 0 31.98 86 31.98 192v172.1c0 41.12-9.751 62.75-31.13 126.9C-2.65 501.2 5.101 512 15.98 512h280.9c13.88 0 26-8.75 30.38-21.88c12.88-38.5 24.75-72.37 24.75-126L351.1 192c0-83.62 23.62-153.5 60.5-192H127.1zM95.99 224C87.11 224 79.99 216.9 79.99 208S87.11 192 95.99 192s16 7.125 16 16S104.9 224 95.99 224zM159.1 224c-8.875 0-16-7.125-16-16S151.1 192 159.1 192s16 7.125 16 16S168.9 224 159.1 224zM223.1 224C215.1 224 207.1 216.9 207.1 208S215.1 192 223.1 192c8.875 0 16 7.125 16 16S232.9 224 223.1 224zM287.1 224C279.1 224 271.1 216.9 271.1 208S279.1 192 287.1 192c8.875 0 16 7.125 16 16S296.9 224 287.1 224zM479.1 0c-53 0-96 86.06-96 192.1C383.1 298.1 426.1 384 479.1 384S576 298 576 192C576 86 532.1 0 479.1 0zM479.1 256c-17.63 0-32-28.62-32-64s14.38-64 32-64c17.63 0 32 28.62 32 64S497.6 256 479.1 256z"], + "toilet-paper-slash": [640, 512, [], "e072", "M63.98 191.1v172.1c0 41.12-9.75 62.75-31.13 126.9c-3.5 10.25 4.25 20.1 15.13 20.1l280.9-.0059c13.87 0 25.1-8.75 30.37-21.87c10.08-30.15 19.46-57.6 23.1-93.78L66.51 148.8C64.9 162.7 63.98 177.1 63.98 191.1zM630.8 469.1l-109.8-86.02c48.75-9.144 86.94-91.2 86.94-191.1C607.1 86 564.1 0 511.1 0s-96 86-96 191.1c0 49.25 9.362 94.03 24.62 128l-56.62-44.38l.0049-83.65c0-83.62 23.62-153.5 60.5-191.1H159.1C135.2 0 112.7 18.93 95.72 49.72L38.81 5.109C34.41 1.672 29.19 0 24.03 0c-7.125 0-14.19 3.156-18.91 9.187C-3.061 19.62-1.249 34.72 9.189 42.89l591.1 463.1c10.5 8.203 25.56 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1zM479.1 191.1c0-35.37 14.37-64 32-64c17.62 0 32 28.63 32 64S529.6 255.1 511.1 255.1C494.4 255.1 479.1 227.4 479.1 191.1z"], + "toilet-portable": [320, 512, [], "e583", "M0 32C0 14.33 14.33 0 32 0H288C305.7 0 320 14.33 320 32V64H0V32zM320 96V488C320 501.3 309.3 512 296 512C282.7 512 272 501.3 272 488V480H48V488C48 501.3 37.25 512 24 512C10.75 512 0 501.3 0 488V96H320zM256 240C256 231.2 248.8 224 240 224C231.2 224 224 231.2 224 240V304C224 312.8 231.2 320 240 320C248.8 320 256 312.8 256 304V240z"], + "toilets-portable": [576, 512, [], "e584", "M224 0C241.7 0 256 14.33 256 32V64H0V32C0 14.33 14.33 0 32 0H224zM0 96H256V488C256 501.3 245.3 512 232 512C218.7 512 208 501.3 208 488V480H48V488C48 501.3 37.25 512 24 512C10.75 512 0 501.3 0 488V96zM176 240V304C176 312.8 183.2 320 192 320C200.8 320 208 312.8 208 304V240C208 231.2 200.8 224 192 224C183.2 224 176 231.2 176 240zM544 0C561.7 0 576 14.33 576 32V64H320V32C320 14.33 334.3 0 352 0H544zM320 96H576V488C576 501.3 565.3 512 552 512C538.7 512 528 501.3 528 488V480H368V488C368 501.3 357.3 512 344 512C330.7 512 320 501.3 320 488V96zM496 240V304C496 312.8 503.2 320 512 320C520.8 320 528 312.8 528 304V240C528 231.2 520.8 224 512 224C503.2 224 496 231.2 496 240z"], + "toolbox": [512, 512, [129520], "f552", "M502.6 182.6l-45.25-45.25C451.4 131.4 443.3 128 434.8 128H384V80C384 53.5 362.5 32 336 32h-160C149.5 32 128 53.5 128 80V128H77.25c-8.5 0-16.62 3.375-22.62 9.375L9.375 182.6C3.375 188.6 0 196.8 0 205.3V304h128v-32C128 263.1 135.1 256 144 256h32C184.9 256 192 263.1 192 272v32h128v-32C320 263.1 327.1 256 336 256h32C376.9 256 384 263.1 384 272v32h128V205.3C512 196.8 508.6 188.6 502.6 182.6zM336 128h-160V80h160V128zM384 368c0 8.875-7.125 16-16 16h-32c-8.875 0-16-7.125-16-16v-32H192v32C192 376.9 184.9 384 176 384h-32C135.1 384 128 376.9 128 368v-32H0V448c0 17.62 14.38 32 32 32h448c17.62 0 32-14.38 32-32v-112h-128V368z"], + "tooth": [448, 512, [129463], "f5c9", "M394.1 212.8c-20.04 27.67-28.07 60.15-31.18 93.95c-3.748 41.34-8.785 82.46-17.89 122.8l-6.75 29.64c-2.68 12.14-13.29 20.78-25.39 20.78c-12 0-22.39-8.311-25.29-20.23l-29.57-121.2C254.1 322.6 240.1 311.4 224 311.4c-16.18 0-30.21 11.26-34.07 27.23l-29.57 121.2c-2.893 11.92-13.39 20.23-25.29 20.23c-12.21 0-22.71-8.639-25.5-20.78l-6.643-29.64c-9.105-40.36-14.14-81.48-17.1-122.8C81.93 272.1 73.9 240.5 53.86 212.8c-18.75-25.92-27.11-60.15-18.43-96.57c9.428-39.59 40.39-71.75 78.85-82.03c20.14-5.25 39.54-.4375 57.32 9.077l86.14 56.54c6.643 4.375 15.11 1.86 18.96-4.264c4.07-6.454 2.25-15.09-4.18-19.36l-24.21-15.86c3-1.531 6.215-2.735 9-4.813c22.39-16.84 48.75-28.65 76.39-21.33c38.46 10.28 69.43 42.43 78.85 82.03C421.2 152.7 412.9 187 394.1 212.8z"], + "torii-gate": [512, 512, [9961], "f6a1", "M0 80V0L71.37 23.79C87.68 29.23 104.8 32 121.1 32H390C407.2 32 424.3 29.23 440.6 23.79L512 0V80C512 106.5 490.5 128 464 128H448V192H384V128H288V192H224V128H128V192H64V128H48C21.49 128 0 106.5 0 80zM32 288C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H448V480C448 497.7 433.7 512 416 512C398.3 512 384 497.7 384 480V288H128V480C128 497.7 113.7 512 96 512C78.33 512 64 497.7 64 480V288H32z"], + "tornado": [448, 512, [127786], "f76f", "M407.8 42.09c7.531-6.562 10.22-17.12 6.688-26.5C410.1 6.219 401.1 0 391.1 0L24.16 .0313c-13 0-23.66 10.38-24 23.38C-.5495 50.32 1.349 74.22 4.945 95.98h353.9C367.9 80.76 383.4 63.34 407.8 42.09zM387.7 195.9c-22.02-25.33-38.96-44.87-39-67.93H12.05c11.47 40.4 30.38 71.34 53.15 96h345.8C403.4 214.1 395.4 204.8 387.7 195.9zM303.6 485.3c-1.125 10.12 4.249 19.84 13.44 24.28C320.3 511.2 323.9 512 327.4 512c6.219 0 12.34-2.406 16.94-7c43.73-43.61 73.32-83.63 89.35-121h-148.6C300.8 408.6 308.7 440 303.6 485.3zM431.7 255.1H100.5C127.1 276.3 155.8 291.6 182.4 305.8c28.14 15.01 54.04 28.9 74.73 46.14h186.8C446.4 341.1 447.1 330.4 448 320C448 295.4 441.4 274.6 431.7 255.1z"], + "tower-broadcast": [576, 512, ["broadcast-tower"], "f519", "M160.9 59.01C149.3 52.6 134.7 56.76 128.3 68.39C117.6 87.6 112 109.4 112 131.4c0 19.03 4.031 37.44 11.98 54.62c4.047 8.777 12.73 13.93 21.8 13.93c3.375 0 6.797-.7187 10.05-2.219C167.9 192.2 173.1 177.1 167.5 165.9C162.5 155.1 160 143.5 160 131.4c0-13.93 3.547-27.69 10.25-39.81C176.7 80.04 172.5 65.42 160.9 59.01zM62.61 2.363C46.17-4.32 27.58 3.676 20.95 20.02C7.047 54.36 0 90.69 0 127.1C0 165.3 7.047 201.7 20.95 236C25.98 248.5 37.97 256 50.63 256C54.61 256 58.69 255.3 62.61 253.7C79 247 86.91 228.4 80.27 212C69.47 185.3 64 157.1 64 128c0-29.06 5.469-57.3 16.27-83.99C86.91 27.64 79 8.988 62.61 2.363zM555 20.02c-6.609-16.41-25.23-24.31-41.66-17.66c-16.39 6.625-24.3 25.28-17.66 41.65C506.5 70.7 512 98.95 512 128c0 29.06-5.469 57.31-16.27 83.1C489.1 228.4 497 247 513.4 253.7C517.3 255.3 521.4 256 525.4 256c12.66 0 24.64-7.562 29.67-20C568.1 201.7 576 165.3 576 127.1C576 90.69 568.1 54.36 555 20.02zM420.2 58.23c-12.03 5.562-17.28 19.81-11.72 31.84C413.5 100.9 416 112.5 416 124.6c0 13.94-3.547 27.69-10.25 39.81c-6.422 11.59-2.219 26.22 9.375 32.62c3.688 2.031 7.672 3 11.61 3c8.438 0 16.64-4.47 21.02-12.37C458.4 168.4 464 146.6 464 124.6c0-19.03-4.031-37.43-11.98-54.62C446.5 57.89 432.1 52.7 420.2 58.23zM301.8 65.45C260.5 56.78 224 88.13 224 128c0 23.63 12.95 44.04 32 55.12v296.9c0 17.67 14.33 32 32 32s32-14.33 32-32V183.1c23.25-13.54 37.42-40.96 30.03-71.18C344.4 88.91 325 70.31 301.8 65.45z"], + "tower-cell": [576, 512, [], "e585", "M62.62 2.339C78.1 8.97 86.9 27.63 80.27 44.01C69.79 69.9 64 98.24 64 128C64 157.8 69.79 186.1 80.27 211.1C86.9 228.4 78.1 247 62.62 253.7C46.23 260.3 27.58 252.4 20.95 236C7.428 202.6 0 166.1 0 128C0 89.87 7.428 53.39 20.95 19.99C27.58 3.612 46.23-4.293 62.62 2.339V2.339zM513.4 2.339C529.8-4.293 548.4 3.612 555.1 19.99C568.6 53.39 576 89.87 576 128C576 166.1 568.6 202.6 555.1 236C548.4 252.4 529.8 260.3 513.4 253.7C497 247 489.1 228.4 495.7 211.1C506.2 186.1 512 157.8 512 128C512 98.24 506.2 69.9 495.7 44.01C489.1 27.63 497 8.969 513.4 2.338V2.339zM477.1 466.8C484.4 482.8 477.3 501.8 461.2 509.1C445.2 516.4 426.2 509.3 418.9 493.2L398.3 448H177.7L157.1 493.2C149.8 509.3 130.8 516.4 114.8 509.1C98.67 501.8 91.56 482.8 98.87 466.8L235.9 165.2C228.4 154.7 224 141.9 224 128C224 92.65 252.7 64 288 64C323.3 64 352 92.65 352 128C352 141.9 347.6 154.7 340.1 165.2L477.1 466.8zM369.2 384L354.7 352H221.3L206.8 384H369.2zM250.4 288H325.6L288 205.3L250.4 288zM152 128C152 147.4 156 165.8 163.3 182.4C168.6 194.5 163.1 208.7 150.9 213.1C138.8 219.3 124.6 213.8 119.3 201.6C109.5 179 104 154.1 104 128C104 101.9 109.5 76.96 119.3 54.39C124.6 42.25 138.8 36.7 150.9 42.01C163.1 47.31 168.6 61.46 163.3 73.61C156 90.23 152 108.6 152 128V128zM472 128C472 154.1 466.5 179 456.7 201.6C451.4 213.8 437.2 219.3 425.1 213.1C412.9 208.7 407.4 194.5 412.7 182.4C419.1 165.8 424 147.4 424 128C424 108.6 419.1 90.24 412.7 73.61C407.4 61.46 412.9 47.32 425.1 42.01C437.2 36.7 451.4 42.25 456.7 54.39C466.5 76.96 472 101.9 472 128V128z"], + "tower-observation": [512, 512, [], "e586", "M241.7 3.378C250.7-1.126 261.3-1.126 270.3 3.378L430.3 83.38C446.1 91.28 452.5 110.5 444.6 126.3C439 137.5 427.7 143.1 416 144V224C416 241.7 401.7 256 384 256H379.1L411.1 448H480C497.7 448 512 462.3 512 480C512 497.7 497.7 512 480 512H384.5C384.2 512 383.8 512 383.4 512H128.6C128.2 512 127.9 512 127.5 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H100.9L132.9 256H128C110.3 256 96 241.7 96 224V144C84.27 143.1 72.98 137.5 67.38 126.3C59.47 110.5 65.88 91.28 81.69 83.38L241.7 3.378zM314.5 448L256 399.2L197.5 448H314.5zM193.1 284.3L256 336.8L318.9 284.3L314.2 256H197.8L193.1 284.3zM183.9 339.2L172.8 406.1L218.5 368L183.9 339.2zM293.5 368L339.2 406.1L328.1 339.2L293.5 368zM176 128C167.2 128 160 135.2 160 144C160 152.8 167.2 160 176 160H336C344.8 160 352 152.8 352 144C352 135.2 344.8 128 336 128H176z"], + "tractor": [640, 512, [128668], "f722", "M96 64C96 28.65 124.7 0 160 0H266.3C292.5 0 316 15.93 325.8 40.23L373.7 160H480V126.2C480 101.4 485.8 76.88 496.9 54.66L499.4 49.69C507.3 33.88 526.5 27.47 542.3 35.38C558.1 43.28 564.5 62.5 556.6 78.31L554.1 83.28C547.5 96.61 544 111.3 544 126.2V160H600C622.1 160 640 177.9 640 200V245.4C640 261.9 631.5 277.3 617.4 286.1L574.1 313.2C559.9 307.3 544.3 304 528 304C488.7 304 453.9 322.9 431.1 352H352C352 369.7 337.7 384 320 384H311.8C310.1 388.8 308.2 393.5 305.1 398.1L311.8 403.9C324.3 416.4 324.3 436.6 311.8 449.1L289.1 471.8C276.6 484.3 256.4 484.3 243.9 471.8L238.1 465.1C233.5 468.2 228.8 470.1 224 471.8V480C224 497.7 209.7 512 192 512H160C142.3 512 128 497.7 128 480V471.8C123.2 470.1 118.5 468.2 113.9 465.1L108.1 471.8C95.62 484.3 75.36 484.3 62.86 471.8L40.24 449.1C27.74 436.6 27.74 416.4 40.24 403.9L46.03 398.1C43.85 393.5 41.9 388.8 40.19 384H32C14.33 384 0 369.7 0 352V320C0 302.3 14.33 288 32 288H40.19C41.9 283.2 43.85 278.5 46.03 273.9L40.24 268.1C27.74 255.6 27.74 235.4 40.24 222.9L62.86 200.2C71.82 191.3 84.78 188.7 96 192.6L96 64zM160 64V160H304.7L266.3 64H160zM176 256C131.8 256 96 291.8 96 336C96 380.2 131.8 416 176 416C220.2 416 256 380.2 256 336C256 291.8 220.2 256 176 256zM440 424C440 394.2 454.8 367.9 477.4 352C491.7 341.9 509.2 336 528 336C530.7 336 533.3 336.1 535.9 336.3C580.8 340.3 616 378.1 616 424C616 472.6 576.6 512 528 512C479.4 512 440 472.6 440 424zM528 448C541.3 448 552 437.3 552 424C552 410.7 541.3 400 528 400C514.7 400 504 410.7 504 424C504 437.3 514.7 448 528 448z"], + "trademark": [640, 512, [8482], "f25c", "M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"], + "traffic-light": [320, 512, [128678], "f637", "M256 0C291.3 0 320 28.65 320 64V352C320 440.4 248.4 512 160 512C71.63 512 0 440.4 0 352V64C0 28.65 28.65 0 64 0H256zM160 320C133.5 320 112 341.5 112 368C112 394.5 133.5 416 160 416C186.5 416 208 394.5 208 368C208 341.5 186.5 320 160 320zM160 288C186.5 288 208 266.5 208 240C208 213.5 186.5 192 160 192C133.5 192 112 213.5 112 240C112 266.5 133.5 288 160 288zM160 64C133.5 64 112 85.49 112 112C112 138.5 133.5 160 160 160C186.5 160 208 138.5 208 112C208 85.49 186.5 64 160 64z"], + "trailer": [640, 512, [], "e041", "M496 32C522.5 32 544 53.49 544 80V320H608C625.7 320 640 334.3 640 352C640 369.7 625.7 384 608 384H286.9C279.1 329.7 232.4 288 176 288C119.6 288 72.9 329.7 65.13 384H48C21.49 384 0 362.5 0 336V80C0 53.49 21.49 32 48 32H496zM64 112V264.2C73.83 256.1 84.55 249 96 243.2V112C96 103.2 88.84 96 80 96C71.16 96 64 103.2 64 112V112zM176 224C181.4 224 186.7 224.2 192 224.7V112C192 103.2 184.8 96 176 96C167.2 96 160 103.2 160 112V224.7C165.3 224.2 170.6 224 176 224zM256 243.2C267.4 249 278.2 256.1 288 264.2V112C288 103.2 280.8 96 272 96C263.2 96 256 103.2 256 112V243.2zM352 112V304C352 312.8 359.2 320 368 320C376.8 320 384 312.8 384 304V112C384 103.2 376.8 96 368 96C359.2 96 352 103.2 352 112zM480 112C480 103.2 472.8 96 464 96C455.2 96 448 103.2 448 112V304C448 312.8 455.2 320 464 320C472.8 320 480 312.8 480 304V112zM96 400C96 355.8 131.8 320 176 320C220.2 320 256 355.8 256 400C256 444.2 220.2 480 176 480C131.8 480 96 444.2 96 400zM176 432C193.7 432 208 417.7 208 400C208 382.3 193.7 368 176 368C158.3 368 144 382.3 144 400C144 417.7 158.3 432 176 432z"], + "train": [448, 512, [128646], "f238", "M352 0C405 0 448 42.98 448 96V352C448 399.1 412.8 439.7 366.9 446.9L412.9 492.9C419.9 499.9 414.9 512 404.1 512H365.3C356.8 512 348.6 508.6 342.6 502.6L288 448H160L105.4 502.6C99.37 508.6 91.23 512 82.75 512H43.04C33.06 512 28.06 499.9 35.12 492.9L81.14 446.9C35.18 439.7 0 399.1 0 352V96C0 42.98 42.98 0 96 0H352zM64 192C64 209.7 78.33 224 96 224H352C369.7 224 384 209.7 384 192V96C384 78.33 369.7 64 352 64H96C78.33 64 64 78.33 64 96V192zM224 384C250.5 384 272 362.5 272 336C272 309.5 250.5 288 224 288C197.5 288 176 309.5 176 336C176 362.5 197.5 384 224 384z"], + "train-subway": [448, 512, ["subway"], "f239", "M352 0C405 0 448 42.98 448 96V352C448 399.1 412.8 439.7 366.9 446.9L412.9 492.9C419.9 499.9 414.9 512 404.1 512H365.3C356.8 512 348.6 508.6 342.6 502.6L288 448H160L105.4 502.6C99.37 508.6 91.23 512 82.75 512H43.04C33.06 512 28.06 499.9 35.12 492.9L81.14 446.9C35.18 439.7 0 399.1 0 352V96C0 42.98 42.98 0 96 0H352zM64 224C64 241.7 78.33 256 96 256H176C193.7 256 208 241.7 208 224V128C208 110.3 193.7 96 176 96H96C78.33 96 64 110.3 64 128V224zM272 96C254.3 96 240 110.3 240 128V224C240 241.7 254.3 256 272 256H352C369.7 256 384 241.7 384 224V128C384 110.3 369.7 96 352 96H272zM96 320C78.33 320 64 334.3 64 352C64 369.7 78.33 384 96 384C113.7 384 128 369.7 128 352C128 334.3 113.7 320 96 320zM352 384C369.7 384 384 369.7 384 352C384 334.3 369.7 320 352 320C334.3 320 320 334.3 320 352C320 369.7 334.3 384 352 384z"], + "train-tram": [448, 512, [128650], "e5b4", "M86.76 48C74.61 48 63.12 53.52 55.53 63.01L42.74 78.99C34.46 89.34 19.36 91.02 9.007 82.74C-1.343 74.46-3.021 59.36 5.259 49.01L18.04 33.03C34.74 12.15 60.03 0 86.76 0H361.2C387.1 0 413.3 12.15 429.1 33.03L442.7 49.01C451 59.36 449.3 74.46 438.1 82.74C428.6 91.02 413.5 89.34 405.3 78.99L392.5 63.01C384.9 53.52 373.4 48 361.2 48H248V96H288C341 96 384 138.1 384 192V352C384 382.6 369.7 409.8 347.4 427.4L412.9 492.9C419.9 499.9 414.9 512 404.1 512H365.3C356.8 512 348.6 508.6 342.6 502.6L288 448H160L105.4 502.6C99.37 508.6 91.23 512 82.74 512H43.04C33.06 512 28.06 499.9 35.12 492.9L100.6 427.4C78.3 409.8 64 382.6 64 352V192C64 138.1 106.1 96 160 96H200V48H86.76zM160 160C142.3 160 128 174.3 128 192V224C128 241.7 142.3 256 160 256H288C305.7 256 320 241.7 320 224V192C320 174.3 305.7 160 288 160H160zM160 320C142.3 320 128 334.3 128 352C128 369.7 142.3 384 160 384C177.7 384 192 369.7 192 352C192 334.3 177.7 320 160 320zM288 384C305.7 384 320 369.7 320 352C320 334.3 305.7 320 288 320C270.3 320 256 334.3 256 352C256 369.7 270.3 384 288 384z"], + "transgender": [512, 512, [9895, "transgender-alt"], "f225", "M498.6 .0003h-94.37c-17.96 0-26.95 21.71-14.25 34.41L411.1 55.61l-67.01 67.01C318.8 105.9 288.6 96 256 96S193.2 105.9 167.9 122.6L151.6 106.3l6.061-6.062c6.25-6.248 6.25-16.38 0-22.63L146.3 66.34c-6.25-6.248-16.38-6.248-22.63 0L117.7 72.41L100.9 55.61L122.1 34.41c12.7-12.7 3.703-34.41-14.25-34.41H13.44C6.016 .0003 0 6.016 0 13.44v94.37c0 17.96 21.71 26.95 34.41 14.25l21.2-21.2l16.8 16.8L66.35 123.7c-6.25 6.248-6.25 16.38 0 22.63l11.31 11.31c6.25 6.248 16.38 6.248 22.63 0l6.061-6.061L122.6 167.9C105.9 193.2 96 223.4 96 256c0 77.4 54.97 141.9 128 156.8v19.23l-16-.0014c-8.836 0-16 7.165-16 16v15.1c0 8.836 7.164 16 16 16L224 480v16c0 8.836 7.164 16 16 16h32c8.836 0 16-7.164 16-16v-16l16-.0001c8.836 0 16-7.164 16-16v-15.1c0-8.836-7.164-16-16-16L288 432v-19.23c73.03-14.83 128-79.37 128-156.8c0-32.6-9.867-62.85-26.61-88.14l67.01-67.01l21.2 21.2C490.3 134.8 512 125.8 512 107.8V13.44C512 6.016 505.1 .0003 498.6 .0003zM256 336c-44.11 0-80-35.89-80-80c0-44.11 35.89-80 80-80c44.11 0 80 35.89 80 80C336 300.1 300.1 336 256 336z"], + "trash": [448, 512, [], "f1f8", "M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"], + "trash-arrow-up": [448, 512, ["trash-restore"], "f829", "M284.2 0C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2zM31.1 128H416L394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128zM207 199L127 279C117.7 288.4 117.7 303.6 127 312.1C136.4 322.3 151.6 322.3 160.1 312.1L199.1 273.9V408C199.1 421.3 210.7 432 223.1 432C237.3 432 248 421.3 248 408V273.9L287 312.1C296.4 322.3 311.6 322.3 320.1 312.1C330.3 303.6 330.3 288.4 320.1 279L240.1 199C236.5 194.5 230.4 191.1 223.1 191.1C217.6 191.1 211.5 194.5 207 199V199z"], + "trash-can": [448, 512, [61460, "trash-alt"], "f2ed", "M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"], + "trash-can-arrow-up": [448, 512, ["trash-restore-alt"], "f82a", "M284.2 0C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM207 199L127 279C117.7 288.4 117.7 303.6 127 312.1C136.4 322.3 151.6 322.3 160.1 312.1L199.1 273.9V408C199.1 421.3 210.7 432 223.1 432C237.3 432 248 421.3 248 408V273.9L287 312.1C296.4 322.3 311.6 322.3 320.1 312.1C330.3 303.6 330.3 288.4 320.1 279L240.1 199C236.5 194.5 230.4 191.1 223.1 191.1C217.6 191.1 211.5 194.5 207 199V199z"], + "tree": [448, 512, [127794], "f1bb", "M413.8 447.1L256 448l0 31.99C256 497.7 241.8 512 224.1 512c-17.67 0-32.1-14.32-32.1-31.99l0-31.99l-158.9-.0099c-28.5 0-43.69-34.49-24.69-56.4l68.98-79.59H62.22c-25.41 0-39.15-29.8-22.67-49.13l60.41-70.85H89.21c-21.28 0-32.87-22.5-19.28-37.31l134.8-146.5c10.4-11.3 28.22-11.3 38.62-.0033l134.9 146.5c13.62 14.81 2.001 37.31-19.28 37.31h-10.77l60.35 70.86c16.46 19.34 2.716 49.12-22.68 49.12h-15.2l68.98 79.59C458.7 413.7 443.1 447.1 413.8 447.1z"], + "tree-city": [640, 512, [], "e587", "M288 48C288 21.49 309.5 0 336 0H432C458.5 0 480 21.49 480 48V192H520V120C520 106.7 530.7 96 544 96C557.3 96 568 106.7 568 120V192H592C618.5 192 640 213.5 640 240V464C640 490.5 618.5 512 592 512H336C309.5 512 288 490.5 288 464V48zM352 112C352 120.8 359.2 128 368 128H400C408.8 128 416 120.8 416 112V80C416 71.16 408.8 64 400 64H368C359.2 64 352 71.16 352 80V112zM368 160C359.2 160 352 167.2 352 176V208C352 216.8 359.2 224 368 224H400C408.8 224 416 216.8 416 208V176C416 167.2 408.8 160 400 160H368zM352 304C352 312.8 359.2 320 368 320H400C408.8 320 416 312.8 416 304V272C416 263.2 408.8 256 400 256H368C359.2 256 352 263.2 352 272V304zM528 256C519.2 256 512 263.2 512 272V304C512 312.8 519.2 320 528 320H560C568.8 320 576 312.8 576 304V272C576 263.2 568.8 256 560 256H528zM512 400C512 408.8 519.2 416 528 416H560C568.8 416 576 408.8 576 400V368C576 359.2 568.8 352 560 352H528C519.2 352 512 359.2 512 368V400zM224 160C224 166 223 171 222 176C242 190 256 214 256 240C256 285 220 320 176 320H160V480C160 498 145 512 128 512C110 512 96 498 96 480V320H80C35 320 0 285 0 240C0 214 13 190 33 176C32 171 32 166 32 160C32 107 74 64 128 64C181 64 224 107 224 160z"], + "triangle-exclamation": [512, 512, [9888, "exclamation-triangle", "warning"], "f071", "M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"], + "trophy": [576, 512, [127942], "f091", "M572.1 82.38C569.5 71.59 559.8 64 548.7 64h-100.8c.2422-12.45 .1078-23.7-.1559-33.02C447.3 13.63 433.2 0 415.8 0H160.2C142.8 0 128.7 13.63 128.2 30.98C127.1 40.3 127.8 51.55 128.1 64H27.26C16.16 64 6.537 71.59 3.912 82.38C3.1 85.78-15.71 167.2 37.07 245.9c37.44 55.82 100.6 95.03 187.5 117.4c18.7 4.805 31.41 22.06 31.41 41.37C256 428.5 236.5 448 212.6 448H208c-26.51 0-47.99 21.49-47.99 48c0 8.836 7.163 16 15.1 16h223.1c8.836 0 15.1-7.164 15.1-16c0-26.51-21.48-48-47.99-48h-4.644c-23.86 0-43.36-19.5-43.36-43.35c0-19.31 12.71-36.57 31.41-41.37c86.96-22.34 150.1-61.55 187.5-117.4C591.7 167.2 572.9 85.78 572.1 82.38zM77.41 219.8C49.47 178.6 47.01 135.7 48.38 112h80.39c5.359 59.62 20.35 131.1 57.67 189.1C137.4 281.6 100.9 254.4 77.41 219.8zM498.6 219.8c-23.44 34.6-59.94 61.75-109 81.22C426.9 243.1 441.9 171.6 447.2 112h80.39C528.1 135.7 526.5 178.7 498.6 219.8z"], + "trowel": [512, 512, [], "e589", "M343.9 213.4L245.3 312L310.6 377.4C318.5 385.3 321.8 396.8 319.1 407.6C316.4 418.5 308.2 427.2 297.5 430.5L41.55 510.5C30.18 514.1 17.79 511 9.373 502.6C.9565 494.2-2.093 481.8 1.458 470.5L81.46 214.5C84.8 203.8 93.48 195.6 104.4 192.9C115.2 190.3 126.7 193.5 134.6 201.4L200 266.7L298.6 168.1C284.4 153.5 284.5 130.1 298.9 115.6L394.4 20.18C421.3-6.728 464.9-6.728 491.8 20.18C518.7 47.1 518.7 90.73 491.8 117.6L396.4 213.1C381.9 227.5 358.5 227.6 343.9 213.4V213.4z"], + "trowel-bricks": [512, 512, [], "e58a", "M240.8 4.779C250.3 10.61 256 20.91 256 32V104H345C348.6 90.2 361.1 80 376 80H464C490.5 80 512 101.5 512 128C512 154.5 490.5 176 464 176H376C361.1 176 348.6 165.8 345 152H256V224C256 235.1 250.3 245.4 240.8 251.2C231.4 257.1 219.6 257.6 209.7 252.6L17.69 156.6C6.848 151.2 0 140.1 0 128C0 115.9 6.848 104.8 17.69 99.38L209.7 3.378C219.6-1.581 231.4-1.051 240.8 4.779V4.779zM288 256C288 238.3 302.3 224 320 224H480C497.7 224 512 238.3 512 256V320C512 337.7 497.7 352 480 352H320C302.3 352 288 337.7 288 320V256zM128 384C145.7 384 160 398.3 160 416V480C160 497.7 145.7 512 128 512H32C14.33 512 0 497.7 0 480V416C0 398.3 14.33 384 32 384H128zM480 384C497.7 384 512 398.3 512 416V480C512 497.7 497.7 512 480 512H224C206.3 512 192 497.7 192 480V416C192 398.3 206.3 384 224 384H480z"], + "truck": [640, 512, [128666, 9951], "f0d1", "M368 0C394.5 0 416 21.49 416 48V96H466.7C483.7 96 499.1 102.7 512 114.7L589.3 192C601.3 204 608 220.3 608 237.3V352C625.7 352 640 366.3 640 384C640 401.7 625.7 416 608 416H576C576 469 533 512 480 512C426.1 512 384 469 384 416H256C256 469 213 512 160 512C106.1 512 64 469 64 416H48C21.49 416 0 394.5 0 368V48C0 21.49 21.49 0 48 0H368zM416 160V256H544V237.3L466.7 160H416zM160 368C133.5 368 112 389.5 112 416C112 442.5 133.5 464 160 464C186.5 464 208 442.5 208 416C208 389.5 186.5 368 160 368zM480 464C506.5 464 528 442.5 528 416C528 389.5 506.5 368 480 368C453.5 368 432 389.5 432 416C432 442.5 453.5 464 480 464z"], + "truck-arrow-right": [640, 512, [], "e58b", "M0 48C0 21.49 21.49 0 48 0H368C394.5 0 416 21.49 416 48V96H466.7C483.7 96 499.1 102.7 512 114.7L589.3 192C601.3 204 608 220.3 608 237.3V352C625.7 352 640 366.3 640 384C640 401.7 625.7 416 608 416H576C576 469 533 512 480 512C426.1 512 384 469 384 416H256C256 469 213 512 160 512C106.1 512 64 469 64 416H48C21.49 416 0 394.5 0 368V48zM544 256V237.3L466.7 160H416V256H544zM160 464C186.5 464 208 442.5 208 416C208 389.5 186.5 368 160 368C133.5 368 112 389.5 112 416C112 442.5 133.5 464 160 464zM480 368C453.5 368 432 389.5 432 416C432 442.5 453.5 464 480 464C506.5 464 528 442.5 528 416C528 389.5 506.5 368 480 368zM256.1 95.03C247.6 85.66 232.4 85.66 223 95.03C213.7 104.4 213.7 119.6 223 128.1L262.1 168H96C82.75 168 72 178.7 72 192C72 205.3 82.75 216 96 216H262.1L223 255C213.7 264.4 213.7 279.6 223 288.1C232.4 298.3 247.6 298.3 256.1 288.1L336.1 208.1C346.3 199.6 346.3 184.4 336.1 175L256.1 95.03z"], + "truck-droplet": [640, 512, [], "e58c", "M0 48C0 21.49 21.49 0 48 0H368C394.5 0 416 21.49 416 48V96H466.7C483.7 96 499.1 102.7 512 114.7L589.3 192C601.3 204 608 220.3 608 237.3V352C625.7 352 640 366.3 640 384C640 401.7 625.7 416 608 416H576C576 469 533 512 480 512C426.1 512 384 469 384 416H256C256 469 213 512 160 512C106.1 512 64 469 64 416H48C21.49 416 0 394.5 0 368V48zM544 256V237.3L466.7 160H416V256H544zM160 464C186.5 464 208 442.5 208 416C208 389.5 186.5 368 160 368C133.5 368 112 389.5 112 416C112 442.5 133.5 464 160 464zM480 368C453.5 368 432 389.5 432 416C432 442.5 453.5 464 480 464C506.5 464 528 442.5 528 416C528 389.5 506.5 368 480 368zM208 272C247.8 272 280 242.4 280 205.1C280 179 240.6 123 220.1 95.71C213.1 87.54 202 87.54 195.9 95.71C175.4 123 136 179 136 205.1C136 242.4 168.2 272 208 272V272z"], + "truck-fast": [640, 512, ["shipping-fast"], "f48b", "M112 0C85.49 0 64 21.49 64 48V96H16C7.163 96 0 103.2 0 112C0 120.8 7.163 128 16 128H272C280.8 128 288 135.2 288 144C288 152.8 280.8 160 272 160H48C39.16 160 32 167.2 32 176C32 184.8 39.16 192 48 192H240C248.8 192 256 199.2 256 208C256 216.8 248.8 224 240 224H16C7.163 224 0 231.2 0 240C0 248.8 7.163 256 16 256H208C216.8 256 224 263.2 224 272C224 280.8 216.8 288 208 288H64V416C64 469 106.1 512 160 512C213 512 256 469 256 416H384C384 469 426.1 512 480 512C533 512 576 469 576 416H608C625.7 416 640 401.7 640 384C640 366.3 625.7 352 608 352V237.3C608 220.3 601.3 204 589.3 192L512 114.7C499.1 102.7 483.7 96 466.7 96H416V48C416 21.49 394.5 0 368 0H112zM544 237.3V256H416V160H466.7L544 237.3zM160 464C133.5 464 112 442.5 112 416C112 389.5 133.5 368 160 368C186.5 368 208 389.5 208 416C208 442.5 186.5 464 160 464zM528 416C528 442.5 506.5 464 480 464C453.5 464 432 442.5 432 416C432 389.5 453.5 368 480 368C506.5 368 528 389.5 528 416z"], + "truck-field": [640, 512, [], "e58d", "M32 96C32 60.65 60.65 32 96 32H320C343.7 32 364.4 44.87 375.4 64H427.2C452.5 64 475.4 78.9 485.7 102L538.5 220.8C538.1 221.9 539.4 222.9 539.8 223.1H544C579.3 223.1 608 252.7 608 287.1V319.1C625.7 319.1 640 334.3 640 352C640 369.7 625.7 384 608 384H576C576 437 533 480 480 480C426.1 480 384 437 384 384H256C256 437 213 480 160 480C106.1 480 64 437 64 384H32C14.33 384 0 369.7 0 352C0 334.3 14.33 319.1 32 319.1V287.1C14.33 287.1 0 273.7 0 255.1V159.1C0 142.3 14.33 127.1 32 127.1V96zM469.9 224L427.2 128H384V224H469.9zM160 432C186.5 432 208 410.5 208 384C208 357.5 186.5 336 160 336C133.5 336 112 357.5 112 384C112 410.5 133.5 432 160 432zM480 336C453.5 336 432 357.5 432 384C432 410.5 453.5 432 480 432C506.5 432 528 410.5 528 384C528 357.5 506.5 336 480 336z"], + "truck-field-un": [640, 512, [], "e58e", "M320 32C343.7 32 364.4 44.87 375.4 64H427.2C452.5 64 475.4 78.9 485.7 102L538.5 220.8C538.1 221.9 539.4 222.9 539.8 224H544C579.3 224 608 252.7 608 288V320C625.7 320 640 334.3 640 352C640 369.7 625.7 384 608 384H576C576 437 533 480 480 480C426.1 480 384 437 384 384H256C256 437 213 480 160 480C106.1 480 64 437 64 384H32C14.33 384 0 369.7 0 352C0 334.3 14.33 320 32 320V288C14.33 288 0 273.7 0 256V160C0 142.3 14.33 128 32 128V96C32 60.65 60.65 32 96 32L320 32zM384 128V224H469.9L427.2 128H384zM160 336C133.5 336 112 357.5 112 384C112 410.5 133.5 432 160 432C186.5 432 208 410.5 208 384C208 357.5 186.5 336 160 336zM480 432C506.5 432 528 410.5 528 384C528 357.5 506.5 336 480 336C453.5 336 432 357.5 432 384C432 410.5 453.5 432 480 432zM253.3 135.1C249.4 129.3 242.1 126.6 235.4 128.7C228.6 130.7 224 136.9 224 144V240C224 248.8 231.2 256 240 256C248.8 256 256 248.8 256 240V196.8L290.7 248.9C294.6 254.7 301.9 257.4 308.6 255.3C315.4 253.3 320 247.1 320 240V144C320 135.2 312.8 128 304 128C295.2 128 288 135.2 288 144V187.2L253.3 135.1zM128 144C128 135.2 120.8 128 112 128C103.2 128 96 135.2 96 144V208C96 234.5 117.5 256 144 256C170.5 256 192 234.5 192 208V144C192 135.2 184.8 128 176 128C167.2 128 160 135.2 160 144V208C160 216.8 152.8 224 144 224C135.2 224 128 216.8 128 208V144z"], + "truck-front": [512, 512, [], "e2b7", "M0 80C0 35.82 35.82 0 80 0H432C476.2 0 512 35.82 512 80V368C512 394.2 499.4 417.4 480 432V480C480 497.7 465.7 512 448 512H416C398.3 512 384 497.7 384 480V448H128V480C128 497.7 113.7 512 96 512H64C46.33 512 32 497.7 32 480V432C12.57 417.4 0 394.2 0 368V80zM129.9 152.2L112 224H400L382.1 152.2C378.5 137.1 365.7 128 351 128H160.1C146.3 128 133.5 137.1 129.9 152.2H129.9zM96 288C78.33 288 64 302.3 64 320C64 337.7 78.33 352 96 352C113.7 352 128 337.7 128 320C128 302.3 113.7 288 96 288zM416 352C433.7 352 448 337.7 448 320C448 302.3 433.7 288 416 288C398.3 288 384 302.3 384 320C384 337.7 398.3 352 416 352z"], + "truck-medical": [640, 512, [128657, "ambulance"], "f0f9", "M368 0C394.5 0 416 21.49 416 48V96H466.7C483.7 96 499.1 102.7 512 114.7L589.3 192C601.3 204 608 220.3 608 237.3V352C625.7 352 640 366.3 640 384C640 401.7 625.7 416 608 416H576C576 469 533 512 480 512C426.1 512 384 469 384 416H256C256 469 213 512 160 512C106.1 512 64 469 64 416H48C21.49 416 0 394.5 0 368V48C0 21.49 21.49 0 48 0H368zM416 160V256H544V237.3L466.7 160H416zM160 368C133.5 368 112 389.5 112 416C112 442.5 133.5 464 160 464C186.5 464 208 442.5 208 416C208 389.5 186.5 368 160 368zM480 464C506.5 464 528 442.5 528 416C528 389.5 506.5 368 480 368C453.5 368 432 389.5 432 416C432 442.5 453.5 464 480 464zM112 176C112 184.8 119.2 192 128 192H176V240C176 248.8 183.2 256 192 256H224C232.8 256 240 248.8 240 240V192H288C296.8 192 304 184.8 304 176V144C304 135.2 296.8 128 288 128H240V80C240 71.16 232.8 64 224 64H192C183.2 64 176 71.16 176 80V128H128C119.2 128 112 135.2 112 144V176z"], + "truck-monster": [640, 512, [], "f63b", "M419.2 25.6L496 128H576C593.7 128 608 142.3 608 160V224C625.7 224 640 238.3 640 256C640 273.7 625.7 287.1 608 288C578.8 249.1 532.3 224 480 224C427.7 224 381.2 249.1 351.1 288H288C258.8 249.1 212.3 224 160 224C107.7 224 61.18 249.1 31.99 288C14.32 287.1 0 273.7 0 256C0 238.3 14.33 224 32 224V160C32 142.3 46.33 128 64 128H224V48C224 21.49 245.5 0 272 0H368C388.1 0 407.1 9.484 419.2 25.6H419.2zM288 128H416L368 64H288V128zM168 256C180.1 256 190.1 264.9 191.8 276.6C199.4 278.8 206.7 281.9 213.5 285.6C222.9 278.5 236.3 279.3 244.9 287.8L256.2 299.1C264.7 307.7 265.5 321.1 258.4 330.5C262.1 337.3 265.2 344.6 267.4 352.2C279.1 353.9 288 363.9 288 376V392C288 404.1 279.1 414.1 267.4 415.8C265.2 423.4 262.1 430.7 258.4 437.5C265.5 446.9 264.7 460.3 256.2 468.9L244.9 480.2C236.3 488.7 222.9 489.5 213.5 482.4C206.7 486.1 199.4 489.2 191.8 491.4C190.1 503.1 180.1 512 167.1 512H151.1C139.9 512 129.9 503.1 128.2 491.4C120.6 489.2 113.3 486.1 106.5 482.4C97.09 489.5 83.7 488.7 75.15 480.2L63.83 468.9C55.28 460.3 54.53 446.9 61.58 437.5C57.85 430.7 54.81 423.4 52.57 415.8C40.94 414.1 31.1 404.1 31.1 392V376C31.1 363.9 40.94 353.9 52.57 352.2C54.81 344.6 57.85 337.3 61.58 330.5C54.53 321.1 55.28 307.7 63.83 299.1L75.15 287.8C83.7 279.3 97.09 278.5 106.5 285.6C113.3 281.9 120.6 278.8 128.2 276.6C129.9 264.9 139.9 255.1 151.1 255.1L168 256zM160 432C186.5 432 208 410.5 208 384C208 357.5 186.5 336 160 336C133.5 336 112 357.5 112 384C112 410.5 133.5 432 160 432zM448.2 276.6C449.9 264.9 459.9 256 472 256H488C500.1 256 510.1 264.9 511.8 276.6C519.4 278.8 526.7 281.9 533.5 285.6C542.9 278.5 556.3 279.3 564.9 287.8L576.2 299.1C584.7 307.7 585.5 321.1 578.4 330.5C582.1 337.3 585.2 344.6 587.4 352.2C599.1 353.9 608 363.9 608 376V392C608 404.1 599.1 414.1 587.4 415.8C585.2 423.4 582.1 430.7 578.4 437.5C585.5 446.9 584.7 460.3 576.2 468.9L564.9 480.2C556.3 488.7 542.9 489.5 533.5 482.4C526.7 486.1 519.4 489.2 511.8 491.4C510.1 503.1 500.1 512 488 512H472C459.9 512 449.9 503.1 448.2 491.4C440.6 489.2 433.3 486.1 426.5 482.4C417.1 489.5 403.7 488.7 395.1 480.2L383.8 468.9C375.3 460.3 374.5 446.9 381.6 437.5C377.9 430.7 374.8 423.4 372.6 415.8C360.9 414.1 352 404.1 352 392V376C352 363.9 360.9 353.9 372.6 352.2C374.8 344.6 377.9 337.3 381.6 330.5C374.5 321.1 375.3 307.7 383.8 299.1L395.1 287.8C403.7 279.3 417.1 278.5 426.5 285.6C433.3 281.9 440.6 278.8 448.2 276.6L448.2 276.6zM480 336C453.5 336 432 357.5 432 384C432 410.5 453.5 432 480 432C506.5 432 528 410.5 528 384C528 357.5 506.5 336 480 336z"], + "truck-moving": [640, 512, [], "f4df", "M416 32C451.3 32 480 60.65 480 96V144H528.8C545.6 144 561.5 151.5 572.2 164.5L630.1 236.4C636.8 243.5 640 252.5 640 261.7V352C640 369.7 625.7 384 608 384H606.4C607.4 389.2 608 394.5 608 400C608 444.2 572.2 480 528 480C483.8 480 448 444.2 448 400C448 394.5 448.6 389.2 449.6 384H286.4C287.4 389.2 288 394.5 288 400C288 444.2 252.2 480 208 480C181.8 480 158.6 467.4 144 448C129.4 467.4 106.2 480 80 480C35.82 480 0 444.2 0 400V96C0 60.65 28.65 32 64 32H416zM535 194.9C533.5 193.1 531.2 192 528.8 192H480V256H584.1L535 194.9zM528 432C545.7 432 560 417.7 560 400C560 382.3 545.7 368 528 368C510.3 368 496 382.3 496 400C496 417.7 510.3 432 528 432zM208 368C190.3 368 176 382.3 176 400C176 417.7 190.3 432 208 432C225.7 432 240 417.7 240 400C240 382.3 225.7 368 208 368zM80 432C97.67 432 112 417.7 112 400C112 382.3 97.67 368 80 368C62.33 368 48 382.3 48 400C48 417.7 62.33 432 80 432z"], + "truck-pickup": [640, 512, [128763], "f63c", "M272 32H368.6C388.1 32 406.5 40.84 418.6 56.02L527.4 192H576C593.7 192 608 206.3 608 224V288C625.7 288 640 302.3 640 320C640 337.7 625.7 352 608 352H574.9C575.6 357.2 576 362.6 576 368C576 429.9 525.9 480 464 480C402.1 480 352 429.9 352 368C352 362.6 352.4 357.2 353.1 352H286.9C287.6 357.2 288 362.6 288 368C288 429.9 237.9 480 176 480C114.1 480 64 429.9 64 368C64 362.6 64.39 357.2 65.13 352H32C14.33 352 0 337.7 0 320C0 302.3 14.33 288 32 288V224C32 206.3 46.33 192 64 192H224V80C224 53.49 245.5 32 272 32H272zM368.6 96H288V192H445.4L368.6 96zM176 416C202.5 416 224 394.5 224 368C224 341.5 202.5 320 176 320C149.5 320 128 341.5 128 368C128 394.5 149.5 416 176 416zM464 416C490.5 416 512 394.5 512 368C512 341.5 490.5 320 464 320C437.5 320 416 341.5 416 368C416 394.5 437.5 416 464 416z"], + "truck-plane": [640, 512, [], "e58f", "M256 86.06L256 182.9L256 184V411.5L256.1 411.6C257.3 433.8 269.8 452.9 288 463.4V496C288 501.2 288.8 506.3 290.4 510.1L200 480.9L109.1 511.2C104.2 512.8 98.82 511.1 94.64 508.1C90.47 505.1 88 501.1 88 496V464C88 459.1 90.21 454.5 94 451.5L144 411.5V330.3L20.6 367.3C15.75 368.8 10.51 367.9 6.449 364.8C2.391 361.8 0 357.1 0 352V288C0 282.4 2.949 277.2 7.768 274.3L144 192.5V86.06C144 54.68 169.4 0 200 0C231.5 0 256 54.68 256 86.06V86.06zM288 176C288 149.5 309.5 128 336 128H592C618.5 128 640 149.5 640 176V400C640 420.9 626.6 438.7 608 445.3V488C608 501.3 597.3 512 584 512H568C554.7 512 544 501.3 544 488V448H384V488C384 501.3 373.3 512 360 512H344C330.7 512 320 501.3 320 488V445.3C301.4 438.7 288 420.9 288 400V176zM367.8 254.7L352 304H576L560.2 254.7C556.9 246 548.9 240 539.7 240H388.3C379.1 240 371.1 246 367.8 254.7H367.8zM568 400C581.3 400 592 389.3 592 376C592 362.7 581.3 352 568 352C554.7 352 544 362.7 544 376C544 389.3 554.7 400 568 400zM360 352C346.7 352 336 362.7 336 376C336 389.3 346.7 400 360 400C373.3 400 384 389.3 384 376C384 362.7 373.3 352 360 352z"], + "truck-ramp-box": [640, 512, ["truck-loading"], "f4de", "M640 .0003V400C640 461.9 589.9 512 528 512C467 512 417.5 463.3 416 402.7L48.41 502.9C31.36 507.5 13.77 497.5 9.126 480.4C4.48 463.4 14.54 445.8 31.59 441.1L352 353.8V64C352 28.65 380.7 0 416 0L640 .0003zM528 352C501.5 352 480 373.5 480 400C480 426.5 501.5 448 528 448C554.5 448 576 426.5 576 400C576 373.5 554.5 352 528 352zM23.11 207.7C18.54 190.6 28.67 173.1 45.74 168.5L92.1 156.1L112.8 233.4C115.1 241.9 123.9 246.1 132.4 244.7L163.3 236.4C171.8 234.1 176.9 225.3 174.6 216.8L153.9 139.5L200.3 127.1C217.4 122.5 234.9 132.7 239.5 149.7L280.9 304.3C285.5 321.4 275.3 338.9 258.3 343.5L103.7 384.9C86.64 389.5 69.1 379.3 64.52 362.3L23.11 207.7z"], + "tty": [512, 512, ["teletype"], "f1e4", "M271.1 364v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40c0-6.625-5.375-12-12-12h-40C277.3 352 271.1 357.4 271.1 364zM367.1 364v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40c0-6.625-5.375-12-12-12h-40C373.3 352 367.1 357.4 367.1 364zM275.1 256h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.376 12 12 12h39.1c6.625 0 12-5.375 12-12v-40C287.1 261.4 282.6 256 275.1 256zM83.96 448h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40C95.96 453.4 90.59 448 83.96 448zM175.1 364v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40c0-6.625-5.375-12-12-12h-40C181.3 352 175.1 357.4 175.1 364zM371.1 256h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.372 12 11.1 12h39.1c6.625 0 12-5.375 12-12v-40C383.1 261.4 378.6 256 371.1 256zM467.1 256h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.369 12 11.99 12h39.1c6.625 0 12.01-5.375 12.01-12v-40C479.1 261.4 474.6 256 467.1 256zM371.1 448h-232c-6.625 0-12 5.375-12 12v40c0 6.625 5.375 12 12 12h232c6.625 0 12-5.375 12-12v-40C383.1 453.4 378.6 448 371.1 448zM179.1 256h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.38 12 12 12h39.1c6.625 0 11.1-5.375 11.1-12v-40C191.1 261.4 186.6 256 179.1 256zM467.1 448h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40C479.1 453.4 474.6 448 467.1 448zM79.96 364v40c0 6.625 5.375 12 12 12h40c6.625 0 12-5.375 12-12v-40c0-6.625-5.375-12-12-12h-40C85.34 352 79.96 357.4 79.96 364zM83.96 256h-40c-6.625 0-12 5.375-12 12v40c0 6.625 5.383 12 12.01 12H83.97c6.625 0 11.99-5.375 11.99-12v-40C95.96 261.4 90.59 256 83.96 256zM504.9 102.9C367.7-34.31 144.3-34.32 7.083 102.9c-7.975 7.973-9.375 20.22-3.391 29.74l42.17 67.47c6.141 9.844 18.47 13.88 29.35 9.632l84.36-33.74C169.5 172.1 175.6 161.1 174.5 151.3l-5.303-53.27c56.15-19.17 117.4-19.17 173.6 .0059L337.5 151.3c-1.139 10.59 4.997 20.78 14.96 24.73l84.35 33.73c10.83 4.303 23.22 .1608 29.33-9.615l42.18-67.48C514.3 123.2 512.9 110.9 504.9 102.9z"], + "turkish-lira-sign": [384, 512, ["try", "turkish-lira"], "e2bb", "M96 32C113.7 32 128 46.33 128 64V99.29L247.2 65.23C264.2 60.38 281.9 70.22 286.8 87.21C291.6 104.2 281.8 121.9 264.8 126.8L128 165.9V195.3L247.2 161.2C264.2 156.4 281.9 166.2 286.8 183.2C291.6 200.2 281.8 217.9 264.8 222.8L128 261.9V416H191.8C260 416 316.2 362.5 319.6 294.4L320 286.4C320.9 268.8 335.9 255.2 353.6 256C371.2 256.9 384.8 271.9 383.1 289.6L383.6 297.6C378.5 399.8 294.1 480 191.8 480H96C78.33 480 64 465.7 64 448V280.1L40.79 286.8C23.8 291.6 6.087 281.8 1.232 264.8C-3.623 247.8 6.217 230.1 23.21 225.2L64 213.6V184.1L40.79 190.8C23.8 195.6 6.087 185.8 1.232 168.8C-3.623 151.8 6.216 134.1 23.21 129.2L64 117.6V64C64 46.33 78.33 32 96 32L96 32z"], + "turn-down": [384, 512, [10549, "level-down-alt"], "f3be", "M313.6 392.3l-104 112c-9.5 10.23-25.69 10.23-35.19 0l-104-112c-6.484-6.984-8.219-17.17-4.406-25.92S78.45 352 88 352H160V80C160 71.19 152.8 64 144 64H32C14.33 64 0 49.69 0 32s14.33-32 32-32h112C188.1 0 224 35.88 224 80V352h72c9.547 0 18.19 5.656 22 14.41S320.1 385.3 313.6 392.3z"], + "turn-up": [384, 512, [10548, "level-up-alt"], "f3bf", "M318 145.6c-3.812 8.75-12.45 14.41-22 14.41L224 160v272c0 44.13-35.89 80-80 80H32c-17.67 0-32-14.31-32-32s14.33-32 32-32h112C152.8 448 160 440.8 160 432V160L88 159.1c-9.547 0-18.19-5.656-22-14.41S63.92 126.7 70.41 119.7l104-112c9.498-10.23 25.69-10.23 35.19 0l104 112C320.1 126.7 321.8 136.8 318 145.6z"], + "tv": [640, 512, [63717, "television", "tv-alt"], "f26c", "M512 448H127.1C110.3 448 96 462.3 96 479.1S110.3 512 127.1 512h384C529.7 512 544 497.7 544 480S529.7 448 512 448zM592 0h-544C21.5 0 0 21.5 0 48v320C0 394.5 21.5 416 48 416h544c26.5 0 48-21.5 48-48v-320C640 21.5 618.5 0 592 0zM576 352H64v-288h512V352z"], + "u": [384, 512, [117], "55", "M384 64.01v225.7c0 104.1-86.13 190.3-192 190.3s-192-85.38-192-190.3V64.01C0 46.34 14.33 32.01 32 32.01S64 46.34 64 64.01v225.7c0 69.67 57.42 126.3 128 126.3s128-56.67 128-126.3V64.01c0-17.67 14.33-32 32-32S384 46.34 384 64.01z"], + "umbrella": [576, 512, [], "f0e9", "M255.1 301.7v130.3c0 8.814-7.188 16-16 16c-7.814 0-13.19-5.314-15.1-10.69c-5.906-16.72-24.1-25.41-40.81-19.5c-16.69 5.875-25.41 24.19-19.5 40.79C175.8 490.6 206.2 512 239.1 512C284.1 512 320 476.1 320 431.1v-130.3c-9.094-7.908-19.81-13.61-32-13.61C275.7 288.1 265.6 292.9 255.1 301.7zM575.7 280.9C547.1 144.5 437.3 62.61 320 49.91V32.01c0-17.69-14.31-32.01-32-32.01S255.1 14.31 255.1 32.01v17.91C138.3 62.61 29.48 144.5 .2949 280.9C-1.926 290.1 8.795 302.1 18.98 292.2c52-55.01 107.7-52.39 158.6 37.01c5.312 9.502 14.91 8.625 19.72 0C217.5 293.9 242.2 256 287.1 256c58.5 0 88.19 68.82 90.69 73.2c4.812 8.625 14.41 9.502 19.72 0c51-89.52 107.1-91.39 158.6-37.01C567.3 302.2 577.9 290.1 575.7 280.9z"], + "umbrella-beach": [640, 512, [127958], "f5ca", "M115.4 136.8l102.1 37.35c35.13-81.62 86.25-144.4 139-173.7c-95.88-4.875-188.8 36.96-248.5 111.7C101.2 120.6 105.2 133.2 115.4 136.8zM247.6 185l238.5 86.87c35.75-121.4 18.62-231.6-42.63-253.9c-7.375-2.625-15.12-4.062-23.12-4.062C362.4 13.88 292.1 83.13 247.6 185zM521.5 60.51c6.25 16.25 10.75 34.62 13.13 55.25c5.75 49.87-1.376 108.1-18.88 166.9l102.6 37.37c10.13 3.75 21.25-3.375 21.5-14.12C642.3 210.1 598 118.4 521.5 60.51zM528 448h-207l65-178.5l-60.13-21.87l-72.88 200.4H48C21.49 448 0 469.5 0 496C0 504.8 7.163 512 16 512h544c8.837 0 16-7.163 16-15.1C576 469.5 554.5 448 528 448z"], + "underline": [448, 512, [], "f0cd", "M416 448H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h384c17.69 0 32-14.31 32-32S433.7 448 416 448zM48 64.01H64v160c0 88.22 71.78 159.1 160 159.1s160-71.78 160-159.1v-160h16c17.69 0 32-14.32 32-32s-14.31-31.1-32-31.1l-96-.0049c-17.69 0-32 14.32-32 32s14.31 32 32 32H320v160c0 52.94-43.06 95.1-96 95.1S128 276.1 128 224v-160h16c17.69 0 32-14.31 32-32s-14.31-32-32-32l-96 .0049c-17.69 0-32 14.31-32 31.1S30.31 64.01 48 64.01z"], + "universal-access": [512, 512, [], "f29a", "M256 0C114.6 0 0 114.6 0 256c0 141.4 114.6 256 256 256s256-114.6 256-256C512 114.6 397.4 0 256 0zM256 80c22.09 0 40 17.91 40 40S278.1 160 256 160S216 142.1 216 120S233.9 80 256 80zM374.6 215.1L315.3 232C311.6 233.1 307.8 233.6 304 234.4v62.32l30.64 87.34c4.391 12.5-2.188 26.19-14.69 30.59C317.3 415.6 314.6 416 312 416c-9.906 0-19.19-6.188-22.64-16.06l-25.85-70.65c-2.562-7.002-12.46-7.002-15.03 0l-25.85 70.65C219.2 409.8 209.9 416 200 416c-2.641 0-5.312-.4375-7.953-1.344c-12.5-4.406-19.08-18.09-14.69-30.59L208 296.7V234.4C204.2 233.6 200.4 233.1 196.7 232L137.4 215.1C124.7 211.4 117.3 198.2 120.9 185.4S137.9 165.2 150.6 168.9l59.25 16.94c30.17 8.623 62.15 8.623 92.31 0l59.25-16.94c12.7-3.781 26.02 3.719 29.67 16.47C394.7 198.2 387.3 211.4 374.6 215.1z"], + "unlock": [448, 512, [128275], "f09c", "M144 192H384C419.3 192 448 220.7 448 256V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V256C0 220.7 28.65 192 64 192H80V144C80 64.47 144.5 0 224 0C281.5 0 331 33.69 354.1 82.27C361.7 98.23 354.9 117.3 338.1 124.9C322.1 132.5 303.9 125.7 296.3 109.7C283.4 82.63 255.9 64 224 64C179.8 64 144 99.82 144 144L144 192z"], + "unlock-keyhole": [448, 512, ["unlock-alt"], "f13e", "M224 64C179.8 64 144 99.82 144 144V192H384C419.3 192 448 220.7 448 256V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V256C0 220.7 28.65 192 64 192H80V144C80 64.47 144.5 0 224 0C281.5 0 331 33.69 354.1 82.27C361.7 98.23 354.9 117.3 338.1 124.9C322.1 132.5 303.9 125.7 296.3 109.7C283.4 82.63 255.9 64 224 64H224zM256 384C273.7 384 288 369.7 288 352C288 334.3 273.7 320 256 320H192C174.3 320 160 334.3 160 352C160 369.7 174.3 384 192 384H256z"], + "up-down": [256, 512, [11021, 8597, "arrows-alt-v"], "f338", "M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"], + "up-down-left-right": [512, 512, ["arrows-alt"], "f0b2", "M512 256c0 6.797-2.891 13.28-7.938 17.84l-80 72C419.6 349.9 413.8 352 408 352c-3.312 0-6.625-.6875-9.766-2.078C389.6 346.1 384 337.5 384 328V288h-96v96l40-.0013c9.484 0 18.06 5.578 21.92 14.23s2.25 18.78-4.078 25.83l-72 80C269.3 509.1 262.8 512 255.1 512s-13.28-2.89-17.84-7.937l-71.1-80c-6.328-7.047-7.938-17.17-4.078-25.83s12.44-14.23 21.92-14.23l39.1 .0013V288H128v40c0 9.484-5.578 18.06-14.23 21.92C110.6 351.3 107.3 352 104 352c-5.812 0-11.56-2.109-16.06-6.156l-80-72C2.891 269.3 0 262.8 0 256s2.891-13.28 7.938-17.84l80-72C95 159.8 105.1 158.3 113.8 162.1C122.4 165.9 128 174.5 128 184V224h95.1V128l-39.1-.0013c-9.484 0-18.06-5.578-21.92-14.23S159.8 94.99 166.2 87.94l71.1-80c9.125-10.09 26.56-10.09 35.69 0l72 80c6.328 7.047 7.938 17.17 4.078 25.83s-12.44 14.23-21.92 14.23l-40 .0013V224H384V184c0-9.484 5.578-18.06 14.23-21.92c8.656-3.812 18.77-2.266 25.83 4.078l80 72C509.1 242.7 512 249.2 512 256z"], + "up-long": [320, 512, ["long-arrow-alt-up"], "f30c", "M285.1 145.7c-3.81 8.758-12.45 14.42-21.1 14.42L192 160.1V480c0 17.69-14.33 32-32 32s-32-14.31-32-32V160.1L55.1 160.1c-9.547 0-18.19-5.658-22-14.42c-3.811-8.758-2.076-18.95 4.408-25.94l104-112.1c9.498-10.24 25.69-10.24 35.19 0l104 112.1C288.1 126.7 289.8 136.9 285.1 145.7z"], + "up-right-and-down-left-from-center": [512, 512, ["expand-alt"], "f424", "M208 281.4c-12.5-12.5-32.76-12.5-45.26-.002l-78.06 78.07l-30.06-30.06c-6.125-6.125-14.31-9.367-22.63-9.367c-4.125 0-8.279 .7891-12.25 2.43c-11.97 4.953-19.75 16.62-19.75 29.56v135.1C.0013 501.3 10.75 512 24 512h136c12.94 0 24.63-7.797 29.56-19.75c4.969-11.97 2.219-25.72-6.938-34.87l-30.06-30.06l78.06-78.07c12.5-12.49 12.5-32.75 .002-45.25L208 281.4zM487.1 0h-136c-12.94 0-24.63 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.87l30.06 30.06l-78.06 78.07c-12.5 12.5-12.5 32.76 0 45.26l22.62 22.62c12.5 12.5 32.76 12.5 45.26 0l78.06-78.07l30.06 30.06c9.156 9.141 22.87 11.84 34.87 6.937C504.2 184.6 512 172.9 512 159.1V23.1C512 10.74 501.3 0 487.1 0z"], + "up-right-from-square": [512, 512, ["external-link-alt"], "f35d", "M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"], + "upload": [512, 512, [], "f093", "M105.4 182.6c12.5 12.49 32.76 12.5 45.25 .001L224 109.3V352c0 17.67 14.33 32 32 32c17.67 0 32-14.33 32-32V109.3l73.38 73.38c12.49 12.49 32.75 12.49 45.25-.001c12.49-12.49 12.49-32.75 0-45.25l-128-128C272.4 3.125 264.2 0 256 0S239.6 3.125 233.4 9.375L105.4 137.4C92.88 149.9 92.88 170.1 105.4 182.6zM480 352h-160c0 35.35-28.65 64-64 64s-64-28.65-64-64H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456z"], + "user": [448, 512, [62144, 128100], "f007", "M224 256c70.7 0 128-57.31 128-128s-57.3-128-128-128C153.3 0 96 57.31 96 128S153.3 256 224 256zM274.7 304H173.3C77.61 304 0 381.6 0 477.3c0 19.14 15.52 34.67 34.66 34.67h378.7C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304z"], + "user-astronaut": [448, 512, [], "f4fb", "M176 448C167.3 448 160 455.3 160 464V512h32v-48C192 455.3 184.8 448 176 448zM272 448c-8.75 0-16 7.25-16 16s7.25 16 16 16s16-7.25 16-16S280.8 448 272 448zM164 172l8.205 24.62c1.215 3.645 6.375 3.645 7.59 0L188 172l24.62-8.203c3.646-1.219 3.646-6.375 0-7.594L188 148L179.8 123.4c-1.215-3.648-6.375-3.648-7.59 0L164 148L139.4 156.2c-3.646 1.219-3.646 6.375 0 7.594L164 172zM336.1 315.4C304 338.6 265.1 352 224 352s-80.03-13.43-112.1-36.59C46.55 340.2 0 403.3 0 477.3C0 496.5 15.52 512 34.66 512H128v-64c0-17.75 14.25-32 32-32h128c17.75 0 32 14.25 32 32v64h93.34C432.5 512 448 496.5 448 477.3C448 403.3 401.5 340.2 336.1 315.4zM64 224h13.5C102.3 280.5 158.4 320 224 320s121.8-39.5 146.5-96H384c8.75 0 16-7.25 16-16v-96C400 103.3 392.8 96 384 96h-13.5C345.8 39.5 289.6 0 224 0S102.3 39.5 77.5 96H64C55.25 96 48 103.3 48 112v96C48 216.8 55.25 224 64 224zM104 136C104 113.9 125.5 96 152 96h144c26.5 0 48 17.88 48 40V160c0 53-43 96-96 96h-48c-53 0-96-43-96-96V136z"], + "user-check": [640, 512, [], "f4fc", "M274.7 304H173.3C77.61 304 0 381.6 0 477.3C0 496.5 15.52 512 34.66 512H413.3C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM632.3 134.4c-9.703-9-24.91-8.453-33.92 1.266l-87.05 93.75l-38.39-38.39c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94l56 56C499.5 285.5 505.6 288 512 288h.4375c6.531-.125 12.72-2.891 17.16-7.672l104-112C642.6 158.6 642 143.4 632.3 134.4z"], + "user-clock": [640, 512, [], "f4fd", "M496 224c-79.63 0-144 64.38-144 144s64.38 144 144 144s144-64.38 144-144S575.6 224 496 224zM544 384h-54.25C484.4 384 480 379.6 480 374.3V304c0-8.836 7.164-16 16-16c8.838 0 16 7.164 16 16v48h32c8.838 0 16 7.164 16 15.1S552.8 384 544 384zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM320 368c0-19.3 3.221-37.82 8.961-55.2C311.9 307.2 293.6 304 274.7 304H173.3C77.61 304 0 381.7 0 477.4C0 496.5 15.52 512 34.66 512H395C349.7 480.2 320 427.6 320 368z"], + "user-doctor": [448, 512, ["user-md"], "f0f0", "M96 128C96 57.31 153.3 0 224 0C294.7 0 352 57.31 352 128C352 198.7 294.7 256 224 256C153.3 256 96 198.7 96 128zM128 370.3C104.9 377.2 88 398.6 88 424C88 454.9 113.1 480 144 480C174.9 480 200 454.9 200 424C200 398.6 183.1 377.2 160 370.3V304.9C166 304.3 172.1 304 178.3 304H269.7C275.9 304 281.1 304.3 288 304.9V362C260.4 369.1 240 394.2 240 424V464C240 472.8 247.2 480 256 480H272C280.8 480 288 472.8 288 464C288 455.2 280.8 448 272 448V424C272 406.3 286.3 392 304 392C321.7 392 336 406.3 336 424V448C327.2 448 320 455.2 320 464C320 472.8 327.2 480 336 480H352C360.8 480 368 472.8 368 464V424C368 394.2 347.6 369.1 320 362V311.2C393.1 332.9 448 401.3 448 482.3C448 498.7 434.7 512 418.3 512H29.71C13.3 512 0 498.7 0 482.3C0 401.3 54.02 332.9 128 311.2V370.3zM120 424C120 410.7 130.7 400 144 400C157.3 400 168 410.7 168 424C168 437.3 157.3 448 144 448C130.7 448 120 437.3 120 424z"], + "user-gear": [640, 512, ["user-cog"], "f4fe", "M425.1 482.6c-2.303-1.25-4.572-2.559-6.809-3.93l-7.818 4.493c-6.002 3.504-12.83 5.352-19.75 5.352c-10.71 0-21.13-4.492-28.97-12.75c-18.41-20.09-32.29-44.15-40.22-69.9c-5.352-18.06 2.343-36.87 17.83-45.24l8.018-4.669c-.0664-2.621-.0664-5.242 0-7.859l-7.655-4.461c-12.3-6.953-19.4-19.66-19.64-33.38C305.6 306.3 290.4 304 274.7 304H173.3C77.61 304 0 381.7 0 477.4C0 496.5 15.52 512 34.66 512H413.3c5.727 0 10.9-1.727 15.66-4.188c-2.271-4.984-3.86-10.3-3.86-16.06V482.6zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM610.5 373.3c2.625-14 2.625-28.5 0-42.5l25.75-15c3-1.625 4.375-5.125 3.375-8.5c-6.75-21.5-18.25-41.13-33.25-57.38c-2.25-2.5-6-3.125-9-1.375l-25.75 14.88c-10.88-9.25-23.38-16.5-36.88-21.25V212.3c0-3.375-2.5-6.375-5.75-7c-22.25-5-45-4.875-66.25 0c-3.25 .625-5.625 3.625-5.625 7v29.88c-13.5 4.75-26 12-36.88 21.25L394.4 248.5c-2.875-1.75-6.625-1.125-9 1.375c-15 16.25-26.5 35.88-33.13 57.38c-1 3.375 .3751 6.875 3.25 8.5l25.75 15c-2.5 14-2.5 28.5 0 42.5l-25.75 15c-3 1.625-4.25 5.125-3.25 8.5c6.625 21.5 18.13 41 33.13 57.38c2.375 2.5 6 3.125 9 1.375l25.88-14.88c10.88 9.25 23.38 16.5 36.88 21.25v29.88c0 3.375 2.375 6.375 5.625 7c22.38 5 45 4.875 66.25 0c3.25-.625 5.75-3.625 5.75-7v-29.88c13.5-4.75 26-12 36.88-21.25l25.75 14.88c2.875 1.75 6.75 1.125 9-1.375c15-16.25 26.5-35.88 33.25-57.38c1-3.375-.3751-6.875-3.375-8.5L610.5 373.3zM496 400.5c-26.75 0-48.5-21.75-48.5-48.5s21.75-48.5 48.5-48.5c26.75 0 48.5 21.75 48.5 48.5S522.8 400.5 496 400.5z"], + "user-graduate": [512, 512, [], "f501", "M45.63 79.75L52 81.25v58.5C45 143.9 40 151.3 40 160c0 8.375 4.625 15.38 11.12 19.75L35.5 242C33.75 248.9 37.63 256 43.13 256h41.75c5.5 0 9.375-7.125 7.625-13.1L76.88 179.8C83.38 175.4 88 168.4 88 160c0-8.75-5-16.12-12-20.25V87.13L128 99.63l.001 60.37c0 70.75 57.25 128 128 128s127.1-57.25 127.1-128L384 99.62l82.25-19.87c18.25-4.375 18.25-27 0-31.5l-190.4-46c-13-3-26.62-3-39.63 0l-190.6 46C27.5 52.63 27.5 75.38 45.63 79.75zM359.2 312.8l-103.2 103.2l-103.2-103.2c-69.93 22.3-120.8 87.2-120.8 164.5C32 496.5 47.53 512 66.67 512h378.7C464.5 512 480 496.5 480 477.3C480 400 429.1 335.1 359.2 312.8z"], + "user-group": [640, 512, [128101, "user-friends"], "f500", "M224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM274.7 304H173.3c-95.73 0-173.3 77.6-173.3 173.3C0 496.5 15.52 512 34.66 512H413.3C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM479.1 320h-73.85C451.2 357.7 480 414.1 480 477.3C480 490.1 476.2 501.9 470 512h138C625.7 512 640 497.6 640 479.1C640 391.6 568.4 320 479.1 320zM432 256C493.9 256 544 205.9 544 144S493.9 32 432 32c-25.11 0-48.04 8.555-66.72 22.51C376.8 76.63 384 101.4 384 128c0 35.52-11.93 68.14-31.59 94.71C372.7 243.2 400.8 256 432 256z"], + "user-injured": [448, 512, [], "f728", "M277.4 11.98C261.1 4.469 243.1 0 224 0C170.3 0 124.5 33.13 105.5 80h81.07L277.4 11.98zM342.5 80c-7.895-19.47-20.66-36.19-36.48-49.51L240 80H342.5zM224 256c70.7 0 128-57.31 128-128c0-5.48-.9453-10.7-1.613-16H97.61C96.95 117.3 96 122.5 96 128C96 198.7 153.3 256 224 256zM272 416h-45.14l58.64 93.83C305.4 503.1 320 485.8 320 464C320 437.5 298.5 416 272 416zM274.7 304H173.3c-5.393 0-10.71 .3242-15.98 .8047L206.9 384H272c44.13 0 80 35.88 80 80c0 18.08-6.252 34.59-16.4 48h77.73C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM0 477.3C0 496.5 15.52 512 34.66 512H64v-169.1C24.97 374.7 0 423.1 0 477.3zM96 322.4V512h153.1L123.7 311.3C114.1 314.2 104.8 317.9 96 322.4z"], + "user-large": [512, 512, ["user-alt"], "f406", "M256 288c79.53 0 144-64.47 144-144s-64.47-144-144-144c-79.52 0-144 64.47-144 144S176.5 288 256 288zM351.1 320H160c-88.36 0-160 71.63-160 160c0 17.67 14.33 32 31.1 32H480c17.67 0 31.1-14.33 31.1-32C512 391.6 440.4 320 351.1 320z"], + "user-large-slash": [640, 512, ["user-alt-slash"], "f4fa", "M284.9 320l-60.9-.0002c-88.36 0-160 71.63-160 159.1C63.1 497.7 78.33 512 95.1 512l448-.0039c.0137 0-.0137 0 0 0l-14.13-.0013L284.9 320zM630.8 469.1l-249.5-195.5c48.74-22.1 82.65-72.1 82.65-129.6c0-79.53-64.47-143.1-143.1-143.1c-69.64 0-127.3 49.57-140.6 115.3L38.81 5.109C34.41 1.672 29.19 0 24.03 0C16.91 0 9.845 3.156 5.127 9.187c-8.187 10.44-6.375 25.53 4.062 33.7L601.2 506.9c10.5 8.203 25.56 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "user-lock": [640, 512, [], "f502", "M592 288H576V212.7c0-41.84-30.03-80.04-71.66-84.27C456.5 123.6 416 161.1 416 208V288h-16C373.6 288 352 309.6 352 336v128c0 26.4 21.6 48 48 48h192c26.4 0 48-21.6 48-48v-128C640 309.6 618.4 288 592 288zM496 432c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S513.6 432 496 432zM528 288h-64V208c0-17.62 14.38-32 32-32s32 14.38 32 32V288zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM320 336c0-8.672 1.738-16.87 4.303-24.7C308.6 306.6 291.9 304 274.7 304H173.3C77.61 304 0 381.7 0 477.4C0 496.5 15.52 512 34.66 512h301.7C326.3 498.6 320 482.1 320 464V336z"], + "user-minus": [640, 512, [], "f503", "M274.7 304H173.3C77.61 304 0 381.6 0 477.3C0 496.5 15.52 512 34.66 512h378.7C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM616 200h-144C458.8 200 448 210.8 448 224s10.75 24 24 24h144C629.3 248 640 237.3 640 224S629.3 200 616 200z"], + "user-ninja": [512, 512, [129399], "f504", "M64 192c27.25 0 51.75-11.5 69.25-29.75c15 54 64 93.75 122.8 93.75c70.75 0 127.1-57.25 127.1-128s-57.25-128-127.1-128c-50.38 0-93.63 29.38-114.5 71.75C124.1 47.75 96 32 64 32c0 33.37 17.12 62.75 43.13 80C81.13 129.3 64 158.6 64 192zM208 96h95.1C321.7 96 336 110.3 336 128h-160C176 110.3 190.3 96 208 96zM337.8 306.9L256 416L174.2 306.9C93.36 321.6 32 392.2 32 477.3c0 19.14 15.52 34.67 34.66 34.67H445.3c19.14 0 34.66-15.52 34.66-34.67C480 392.2 418.6 321.6 337.8 306.9z"], + "user-nurse": [448, 512, [], "f82f", "M224 304c70.75 0 128-57.25 128-128V65.88c0-13.38-8.25-25.38-20.75-30L246.5 4.125C239.3 1.375 231.6 0 224 0S208.8 1.375 201.5 4.125L116.8 35.88C104.3 40.5 96 52.5 96 65.88V176C96 246.8 153.3 304 224 304zM184 71.63c0-2.75 2.25-5 5-5h21.62V45c0-2.75 2.25-5 5-5h16.75c2.75 0 5 2.25 5 5v21.62H259c2.75 0 5 2.25 5 5v16.75c0 2.75-2.25 5-5 5h-21.62V115c0 2.75-2.25 5-5 5H215.6c-2.75 0-5-2.25-5-5V93.38H189c-2.75 0-5-2.25-5-5V71.63zM144 160h160v16C304 220.1 268.1 256 224 256S144 220.1 144 176V160zM327.2 312.8L224 416L120.8 312.8c-69.93 22.3-120.8 87.25-120.8 164.6C.0006 496.5 15.52 512 34.66 512H413.3c19.14 0 34.66-15.46 34.66-34.61C447.1 400.1 397.1 335.1 327.2 312.8z"], + "user-pen": [640, 512, ["user-edit"], "f4ff", "M223.1 256c70.7 0 128-57.31 128-128s-57.3-128-128-128C153.3 0 96 57.31 96 128S153.3 256 223.1 256zM274.7 304H173.3C77.61 304 0 381.7 0 477.4C0 496.5 15.52 512 34.66 512h286.4c-1.246-5.531-1.43-11.31-.2832-17.04l14.28-71.41c1.943-9.723 6.676-18.56 13.68-25.56l45.72-45.72C363.3 322.4 321.2 304 274.7 304zM371.4 420.6c-2.514 2.512-4.227 5.715-4.924 9.203l-14.28 71.41c-1.258 6.289 4.293 11.84 10.59 10.59l71.42-14.29c3.482-.6992 6.682-2.406 9.195-4.922l125.3-125.3l-72.01-72.01L371.4 420.6zM629.5 255.7l-21.1-21.11c-14.06-14.06-36.85-14.06-50.91 0l-38.13 38.14l72.01 72.01l38.13-38.13C643.5 292.5 643.5 269.7 629.5 255.7z"], + "user-plus": [640, 512, [], "f234", "M224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM274.7 304H173.3C77.61 304 0 381.6 0 477.3C0 496.5 15.52 512 34.66 512h378.7C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM616 200h-48v-48C568 138.8 557.3 128 544 128s-24 10.75-24 24v48h-48C458.8 200 448 210.8 448 224s10.75 24 24 24h48v48C520 309.3 530.8 320 544 320s24-10.75 24-24v-48h48C629.3 248 640 237.3 640 224S629.3 200 616 200z"], + "user-secret": [448, 512, [128373], "f21b", "M377.7 338.8l37.15-92.87C419 235.4 411.3 224 399.1 224h-57.48C348.5 209.2 352 193 352 176c0-4.117-.8359-8.057-1.217-12.08C390.7 155.1 416 142.3 416 128c0-16.08-31.75-30.28-80.31-38.99C323.8 45.15 304.9 0 277.4 0c-10.38 0-19.62 4.5-27.38 10.5c-15.25 11.88-36.75 11.88-52 0C190.3 4.5 181.1 0 170.7 0C143.2 0 124.4 45.16 112.5 88.98C63.83 97.68 32 111.9 32 128c0 14.34 25.31 27.13 65.22 35.92C96.84 167.9 96 171.9 96 176C96 193 99.47 209.2 105.5 224H48.02C36.7 224 28.96 235.4 33.16 245.9l37.15 92.87C27.87 370.4 0 420.4 0 477.3C0 496.5 15.52 512 34.66 512H413.3C432.5 512 448 496.5 448 477.3C448 420.4 420.1 370.4 377.7 338.8zM176 479.1L128 288l64 32l16 32L176 479.1zM271.1 479.1L240 352l16-32l64-32L271.1 479.1zM320 186C320 207 302.8 224 281.6 224h-12.33c-16.46 0-30.29-10.39-35.63-24.99C232.1 194.9 228.4 192 224 192S215.9 194.9 214.4 199C209 213.6 195.2 224 178.8 224h-12.33C145.2 224 128 207 128 186V169.5C156.3 173.6 188.1 176 224 176s67.74-2.383 96-6.473V186z"], + "user-shield": [640, 512, [], "f505", "M622.3 271.1l-115.1-45.01c-4.125-1.629-12.62-3.754-22.25 0L369.8 271.1C359 275.2 352 285.1 352 295.1c0 111.6 68.75 188.8 132.9 213.9c9.625 3.75 18 1.625 22.25 0C558.4 489.9 640 420.5 640 295.1C640 285.1 633 275.2 622.3 271.1zM496 462.4V273.2l95.5 37.38C585.9 397.8 530.6 446 496 462.4zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM320.6 310.3C305.9 306.3 290.6 304 274.7 304H173.3C77.61 304 0 381.7 0 477.4C0 496.5 15.52 512 34.66 512H413.3c3.143 0 5.967-1.004 8.861-1.789C369.7 469.8 324.1 400.3 320.6 310.3z"], + "user-slash": [640, 512, [], "f506", "M95.1 477.3c0 19.14 15.52 34.67 34.66 34.67h378.7c5.625 0 10.73-1.65 15.42-4.029L264.9 304.3C171.3 306.7 95.1 383.1 95.1 477.3zM630.8 469.1l-277.1-217.9c54.69-14.56 95.18-63.95 95.18-123.2C447.1 57.31 390.7 0 319.1 0C250.2 0 193.7 55.93 192.3 125.4l-153.4-120.3C34.41 1.672 29.19 0 24.03 0C16.91 0 9.845 3.156 5.127 9.187c-8.187 10.44-6.375 25.53 4.062 33.7L601.2 506.9c10.5 8.203 25.56 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "user-tag": [640, 512, [], "f507", "M351.8 367.3v-44.1C328.5 310.7 302.4 304 274.7 304H173.3c-95.73 0-173.3 77.65-173.3 173.4C.0005 496.5 15.52 512 34.66 512h378.7c11.86 0 21.82-6.337 28.07-15.43l-61.65-61.57C361.7 416.9 351.8 392.9 351.8 367.3zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM630.6 364.8L540.3 274.8C528.3 262.8 512 256 495 256h-79.23c-17.75 0-31.99 14.25-31.99 32l.0147 79.2c0 17 6.647 33.15 18.65 45.15l90.31 90.27c12.5 12.5 32.74 12.5 45.24 0l92.49-92.5C643.1 397.6 643.1 377.3 630.6 364.8zM447.8 343.9c-13.25 0-24-10.62-24-24c0-13.25 10.75-24 24-24c13.38 0 24 10.75 24 24S461.1 343.9 447.8 343.9z"], + "user-tie": [448, 512, [], "f508", "M352 128C352 198.7 294.7 256 224 256C153.3 256 96 198.7 96 128C96 57.31 153.3 0 224 0C294.7 0 352 57.31 352 128zM209.1 359.2L176 304H272L238.9 359.2L272.2 483.1L311.7 321.9C388.9 333.9 448 400.7 448 481.3C448 498.2 434.2 512 417.3 512H30.72C13.75 512 0 498.2 0 481.3C0 400.7 59.09 333.9 136.3 321.9L175.8 483.1L209.1 359.2z"], + "user-xmark": [640, 512, ["user-times"], "f235", "M274.7 304H173.3C77.61 304 0 381.6 0 477.3C0 496.5 15.52 512 34.66 512h378.7C432.5 512 448 496.5 448 477.3C448 381.6 370.4 304 274.7 304zM224 256c70.7 0 128-57.31 128-128S294.7 0 224 0C153.3 0 96 57.31 96 128S153.3 256 224 256zM577.9 223.1l47.03-47.03c9.375-9.375 9.375-24.56 0-33.94s-24.56-9.375-33.94 0L544 190.1l-47.03-47.03c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94l47.03 47.03l-47.03 47.03c-9.375 9.375-9.375 24.56 0 33.94c9.373 9.373 24.56 9.381 33.94 0L544 257.9l47.03 47.03c9.373 9.373 24.56 9.381 33.94 0c9.375-9.375 9.375-24.56 0-33.94L577.9 223.1z"], + "users": [640, 512, [], "f0c0", "M319.9 320c57.41 0 103.1-46.56 103.1-104c0-57.44-46.54-104-103.1-104c-57.41 0-103.1 46.56-103.1 104C215.9 273.4 262.5 320 319.9 320zM369.9 352H270.1C191.6 352 128 411.7 128 485.3C128 500.1 140.7 512 156.4 512h327.2C499.3 512 512 500.1 512 485.3C512 411.7 448.4 352 369.9 352zM512 160c44.18 0 80-35.82 80-80S556.2 0 512 0c-44.18 0-80 35.82-80 80S467.8 160 512 160zM183.9 216c0-5.449 .9824-10.63 1.609-15.91C174.6 194.1 162.6 192 149.9 192H88.08C39.44 192 0 233.8 0 285.3C0 295.6 7.887 304 17.62 304h199.5C196.7 280.2 183.9 249.7 183.9 216zM128 160c44.18 0 80-35.82 80-80S172.2 0 128 0C83.82 0 48 35.82 48 80S83.82 160 128 160zM551.9 192h-61.84c-12.8 0-24.88 3.037-35.86 8.24C454.8 205.5 455.8 210.6 455.8 216c0 33.71-12.78 64.21-33.16 88h199.7C632.1 304 640 295.6 640 285.3C640 233.8 600.6 192 551.9 192z"], + "users-between-lines": [640, 512, [], "e591", "M0 24C0 10.75 10.75 0 24 0H616C629.3 0 640 10.75 640 24C640 37.25 629.3 48 616 48H24C10.75 48 0 37.25 0 24zM0 488C0 474.7 10.75 464 24 464H616C629.3 464 640 474.7 640 488C640 501.3 629.3 512 616 512H24C10.75 512 0 501.3 0 488zM211.2 160C211.2 195.3 182.5 224 147.2 224C111.9 224 83.2 195.3 83.2 160C83.2 124.7 111.9 96 147.2 96C182.5 96 211.2 124.7 211.2 160zM32 320C32 284.7 60.65 256 96 256H192C204.2 256 215.7 259.4 225.4 265.4C188.2 280.5 159.8 312.6 149.6 352H64C46.33 352 32 337.7 32 320V320zM415.9 264.6C425.3 259.1 436.3 256 448 256H544C579.3 256 608 284.7 608 320C608 337.7 593.7 352 576 352H493.6C483.2 311.9 453.1 279.4 415.9 264.6zM391.2 290.4C423.3 297.8 449.3 321.3 460.1 352C463.7 362 465.6 372.8 465.6 384C465.6 401.7 451.3 416 433.6 416H209.6C191.9 416 177.6 401.7 177.6 384C177.6 372.8 179.5 362 183.1 352C193.6 322.3 218.3 299.2 249.1 291.1C256.1 289.1 265.1 288 273.6 288H369.6C377 288 384.3 288.8 391.2 290.4zM563.2 160C563.2 195.3 534.5 224 499.2 224C463.9 224 435.2 195.3 435.2 160C435.2 124.7 463.9 96 499.2 96C534.5 96 563.2 124.7 563.2 160zM241.6 176C241.6 131.8 277.4 96 321.6 96C365.8 96 401.6 131.8 401.6 176C401.6 220.2 365.8 256 321.6 256C277.4 256 241.6 220.2 241.6 176z"], + "users-gear": [640, 512, ["users-cog"], "f509", "M512 160c44.18 0 80-35.82 80-80S556.2 0 512 0c-44.18 0-80 35.82-80 80S467.8 160 512 160zM128 160c44.18 0 80-35.82 80-80S172.2 0 128 0C83.82 0 48 35.82 48 80S83.82 160 128 160zM319.9 320c57.41 0 103.1-46.56 103.1-104c0-57.44-46.54-104-103.1-104c-57.41 0-103.1 46.56-103.1 104C215.9 273.4 262.5 320 319.9 320zM368 400c0-16.69 3.398-32.46 8.619-47.36C374.3 352.5 372.2 352 369.9 352H270.1C191.6 352 128 411.7 128 485.3C128 500.1 140.7 512 156.4 512h266.1C389.5 485.6 368 445.5 368 400zM183.9 216c0-5.449 .9824-10.63 1.609-15.91C174.6 194.1 162.6 192 149.9 192H88.08C39.44 192 0 233.8 0 285.3C0 295.6 7.887 304 17.62 304h199.5C196.7 280.2 183.9 249.7 183.9 216zM551.9 192h-61.84c-12.8 0-24.88 3.037-35.86 8.24C454.8 205.5 455.8 210.6 455.8 216c0 21.47-5.625 41.38-14.65 59.34C462.2 263.4 486.1 256 512 256c42.48 0 80.27 18.74 106.6 48h3.756C632.1 304 640 295.6 640 285.3C640 233.8 600.6 192 551.9 192zM618.1 366.7c-5.025-16.01-13.59-30.62-24.75-42.71c-1.674-1.861-4.467-2.326-6.699-1.023l-19.17 11.07c-8.096-6.887-17.4-12.28-27.45-15.82V295.1c0-2.514-1.861-4.746-4.281-5.213c-16.56-3.723-33.5-3.629-49.32 0C484.9 291.2 483.1 293.5 483.1 295.1v22.24c-10.05 3.537-19.36 8.932-27.45 15.82l-19.26-11.07c-2.139-1.303-4.932-.8379-6.697 1.023c-11.17 12.1-19.73 26.71-24.66 42.71c-.7441 2.512 .2793 5.117 2.42 6.326l19.17 11.17c-1.859 10.42-1.859 21.21 0 31.64l-19.17 11.17c-2.234 1.209-3.164 3.816-2.42 6.328c4.932 16.01 13.49 30.52 24.66 42.71c1.766 1.863 4.467 2.328 6.697 1.025l19.26-11.07c8.094 6.887 17.4 12.28 27.45 15.82v22.24c0 2.514 1.77 4.746 4.188 5.211c16.66 3.723 33.5 3.629 49.32 0c2.42-.4648 4.281-2.697 4.281-5.211v-22.24c10.05-3.535 19.36-8.932 27.45-15.82l19.17 11.07c2.141 1.303 5.025 .8379 6.699-1.025c11.17-12.1 19.73-26.7 24.75-42.71c.7441-2.512-.2773-5.119-2.512-6.328l-19.17-11.17c1.953-10.42 1.953-21.22 0-31.64l19.17-11.17C618.7 371.8 619.7 369.2 618.1 366.7zM512 432c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32s32 14.33 32 32C544 417.7 529.7 432 512 432z"], + "users-line": [640, 512, [], "e592", "M211.2 96C211.2 131.3 182.5 160 147.2 160C111.9 160 83.2 131.3 83.2 96C83.2 60.65 111.9 32 147.2 32C182.5 32 211.2 60.65 211.2 96zM32 256C32 220.7 60.65 192 96 192H192C204.2 192 215.7 195.4 225.4 201.4C188.2 216.5 159.8 248.6 149.6 288H64C46.33 288 32 273.7 32 256V256zM415.9 200.6C425.3 195.1 436.3 192 448 192H544C579.3 192 608 220.7 608 256C608 273.7 593.7 288 576 288H493.6C483.2 247.9 453.1 215.4 415.9 200.6zM391.2 226.4C423.3 233.8 449.3 257.3 460.1 288C463.7 298 465.6 308.8 465.6 320C465.6 337.7 451.3 352 433.6 352H209.6C191.9 352 177.6 337.7 177.6 320C177.6 308.8 179.5 298 183.1 288C193.6 258.3 218.3 235.2 249.1 227.1C256.1 225.1 265.1 224 273.6 224H369.6C377 224 384.3 224.8 391.2 226.4zM563.2 96C563.2 131.3 534.5 160 499.2 160C463.9 160 435.2 131.3 435.2 96C435.2 60.65 463.9 32 499.2 32C534.5 32 563.2 60.65 563.2 96zM241.6 112C241.6 67.82 277.4 32 321.6 32C365.8 32 401.6 67.82 401.6 112C401.6 156.2 365.8 192 321.6 192C277.4 192 241.6 156.2 241.6 112zM608 416C625.7 416 640 430.3 640 448C640 465.7 625.7 480 608 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H608z"], + "users-rays": [640, 512, [], "e593", "M112.1 79.03C122.3 88.4 122.3 103.6 112.1 112.1C103.6 122.3 88.4 122.3 79.03 112.1L7.029 40.97C-2.343 31.6-2.343 16.4 7.029 7.029C16.4-2.343 31.6-2.343 40.97 7.029L112.1 79.03zM599 7.029C608.4-2.343 623.6-2.343 632.1 7.029C642.3 16.4 642.3 31.6 632.1 40.97L560.1 112.1C551.6 122.3 536.4 122.3 527 112.1C517.7 103.6 517.7 88.4 527 79.03L599 7.029zM7.029 471L79.03 399C88.4 389.7 103.6 389.7 112.1 399C122.3 408.4 122.3 423.6 112.1 432.1L40.97 504.1C31.6 514.3 16.4 514.3 7.029 504.1C-2.343 495.6-2.343 480.4 7.029 471V471zM527 432.1C517.7 423.6 517.7 408.4 527 399C536.4 389.7 551.6 389.7 560.1 399L632.1 471C642.3 480.4 642.3 495.6 632.1 504.1C623.6 514.3 608.4 514.3 599 504.1L527 432.1zM256 192C256 156.7 284.7 128 320 128C355.3 128 384 156.7 384 192C384 227.3 355.3 256 320 256C284.7 256 256 227.3 256 192zM265.5 289.5C266.3 289.3 267.1 289.1 267.1 288.1C271.9 288.3 275.9 288 280 288H360C364.1 288 368.1 288.3 372 288.1C396.6 293.1 416.9 309.7 426.3 331.1C426.9 333.3 427.4 334.6 427.9 336C430.6 343.5 432 351.6 432 360C432 373.3 421.3 384 408 384H232C218.7 384 208 373.3 208 360C208 351.6 209.4 343.5 212.1 336C220.4 312.5 240.6 294.6 265.5 289.5V289.5zM127.8 176C127.8 149.5 149.3 128 175.8 128C202.3 128 223.8 149.5 223.8 176C223.8 202.5 202.3 224 175.8 224C149.3 224 127.8 202.5 127.8 176V176zM218.7 256C227.8 256 236.5 258.3 244 262.4C211.6 274.3 186.8 301.9 178.8 336H122.7C107.9 336 96 324.1 96 309.3C96 279.9 119.9 256 149.3 256H218.7zM517.3 336H461.2C453.2 301.9 428.4 274.3 395.1 262.4C403.5 258.3 412.2 256 421.3 256H490.7C520.1 256 544 279.9 544 309.3C544 324.1 532.1 336 517.3 336H517.3zM416 176C416 149.5 437.5 128 464 128C490.5 128 512 149.5 512 176C512 202.5 490.5 224 464 224C437.5 224 416 202.5 416 176z"], + "users-rectangle": [640, 512, [], "e594", "M223.8 176C223.8 202.5 202.3 224 175.8 224C149.3 224 127.8 202.5 127.8 176C127.8 149.5 149.3 128 175.8 128C202.3 128 223.8 149.5 223.8 176zM96 309.3C96 279.9 119.9 256 149.3 256H218.7C227.8 256 236.5 258.3 244 262.4C211.6 274.3 186.8 301.9 178.8 336H122.7C107.9 336 96 324.1 96 309.3H96zM395.1 262.4C403.5 258.3 412.2 256 421.3 256H490.7C520.1 256 544 279.9 544 309.3C544 324.1 532.1 336 517.3 336H461.2C453.2 301.9 428.4 274.3 395.1 262.4H395.1zM372 288.1C398 293.4 419.3 311.7 427.9 336C430.6 343.5 432 351.6 432 360C432 373.3 421.3 384 408 384H232C218.7 384 208 373.3 208 360C208 351.6 209.4 343.5 212.1 336C220.7 311.7 241.1 293.4 267.1 288.1C271.9 288.3 275.9 288 280 288H360C364.1 288 368.1 288.3 372 288.1V288.1zM512 176C512 202.5 490.5 224 464 224C437.5 224 416 202.5 416 176C416 149.5 437.5 128 464 128C490.5 128 512 149.5 512 176zM256 192C256 156.7 284.7 128 320 128C355.3 128 384 156.7 384 192C384 227.3 355.3 256 320 256C284.7 256 256 227.3 256 192zM544 0C597 0 640 42.98 640 96V416C640 469 597 512 544 512H96C42.98 512 0 469 0 416V96C0 42.98 42.98 0 96 0H544zM64 416C64 433.7 78.33 448 96 448H544C561.7 448 576 433.7 576 416V96C576 78.33 561.7 64 544 64H96C78.33 64 64 78.33 64 96V416z"], + "users-slash": [640, 512, [], "e073", "M512 160c44.18 0 80-35.82 80-80S556.2 0 512 0c-44.18 0-80 35.82-80 80S467.8 160 512 160zM490.1 192c-12.8 0-24.88 3.037-35.86 8.24C454.8 205.5 455.8 210.6 455.8 216c0 33.71-12.78 64.21-33.16 88h199.7C632.1 304 640 295.6 640 285.3C640 233.8 600.6 192 551.9 192H490.1zM396.6 285.5C413.4 267.2 423.8 242.9 423.8 216c0-57.44-46.54-104-103.1-104c-35.93 0-67.07 18.53-85.59 46.3L193.1 126.1C202.4 113.1 208 97.24 208 80C208 35.82 172.2 0 128 0C103.8 0 82.52 10.97 67.96 27.95L38.81 5.109C34.41 1.672 29.19 0 24.03 0C16.91 0 9.846 3.156 5.127 9.188C-3.061 19.62-1.248 34.72 9.189 42.89l591.1 463.1c10.5 8.203 25.56 6.328 33.69-4.078c8.188-10.44 6.375-25.53-4.062-33.7L396.6 285.5zM270.1 352C191.6 352 128 411.7 128 485.3C128 500.1 140.7 512 156.4 512h327.2c11.62 0 21.54-6.583 25.95-15.96L325.7 352H270.1zM186.1 243.2L121.6 192H88.08C39.44 192 0 233.8 0 285.3C0 295.6 7.887 304 17.62 304h199.5C202.4 286.8 191.8 266.1 186.1 243.2z"], + "users-viewfinder": [640, 512, [], "e595", "M48 136C48 149.3 37.25 160 24 160C10.75 160 0 149.3 0 136V32C0 14.33 14.33 0 32 0H136C149.3 0 160 10.75 160 24C160 37.25 149.3 48 136 48H48V136zM127.8 176C127.8 149.5 149.3 128 175.8 128C202.3 128 223.8 149.5 223.8 176C223.8 202.5 202.3 224 175.8 224C149.3 224 127.8 202.5 127.8 176V176zM218.7 256C227.8 256 236.5 258.3 244 262.4C211.6 274.3 186.8 301.9 178.8 336H122.7C107.9 336 96 324.1 96 309.3C96 279.9 119.9 256 149.3 256H218.7zM517.3 336H461.2C453.2 301.9 428.4 274.3 395.1 262.4C403.5 258.3 412.2 256 421.3 256H490.7C520.1 256 544 279.9 544 309.3C544 324.1 532.1 336 517.3 336H517.3zM432 360C432 373.3 421.3 384 408 384H232C218.7 384 208 373.3 208 360C208 351.6 209.4 343.5 212.1 336C220.7 311.7 241.1 293.4 267.1 288.1C271.9 288.3 275.9 288 280 288H360C364.1 288 368.1 288.3 372 288.1C398 293.4 419.3 311.7 427.9 336C430.6 343.5 432 351.6 432 360zM416 176C416 149.5 437.5 128 464 128C490.5 128 512 149.5 512 176C512 202.5 490.5 224 464 224C437.5 224 416 202.5 416 176zM384 192C384 227.3 355.3 256 320 256C284.7 256 256 227.3 256 192C256 156.7 284.7 128 320 128C355.3 128 384 156.7 384 192zM480 24C480 10.75 490.7 0 504 0H608C625.7 0 640 14.33 640 32V136C640 149.3 629.3 160 616 160C602.7 160 592 149.3 592 136V48H504C490.7 48 480 37.25 480 24zM48 464H136C149.3 464 160 474.7 160 488C160 501.3 149.3 512 136 512H32C14.33 512 0 497.7 0 480V376C0 362.7 10.75 352 24 352C37.25 352 48 362.7 48 376V464zM504 464H592V376C592 362.7 602.7 352 616 352C629.3 352 640 362.7 640 376V480C640 497.7 625.7 512 608 512H504C490.7 512 480 501.3 480 488C480 474.7 490.7 464 504 464z"], + "utensils": [448, 512, [61685, 127860, "cutlery"], "f2e7", "M221.6 148.7C224.7 161.3 224.8 174.5 222.1 187.2C219.3 199.1 213.6 211.9 205.6 222.1C191.1 238.6 173 249.1 151.1 254.1V472C151.1 482.6 147.8 492.8 140.3 500.3C132.8 507.8 122.6 512 111.1 512C101.4 512 91.22 507.8 83.71 500.3C76.21 492.8 71.1 482.6 71.1 472V254.1C50.96 250.1 31.96 238.9 18.3 222.4C10.19 212.2 4.529 200.3 1.755 187.5C-1.019 174.7-.8315 161.5 2.303 148.8L32.51 12.45C33.36 8.598 35.61 5.197 38.82 2.9C42.02 .602 45.97-.4297 49.89 .0026C53.82 .4302 57.46 2.303 60.1 5.259C62.74 8.214 64.18 12.04 64.16 16V160H81.53L98.62 11.91C99.02 8.635 100.6 5.621 103.1 3.434C105.5 1.248 108.7 .0401 111.1 .0401C115.3 .0401 118.5 1.248 120.9 3.434C123.4 5.621 124.1 8.635 125.4 11.91L142.5 160H159.1V16C159.1 12.07 161.4 8.268 163.1 5.317C166.6 2.366 170.2 .474 174.1 .0026C178-.4262 181.1 .619 185.2 2.936C188.4 5.253 190.6 8.677 191.5 12.55L221.6 148.7zM448 472C448 482.6 443.8 492.8 436.3 500.3C428.8 507.8 418.6 512 408 512C397.4 512 387.2 507.8 379.7 500.3C372.2 492.8 368 482.6 368 472V352H351.2C342.8 352 334.4 350.3 326.6 347.1C318.9 343.8 311.8 339.1 305.8 333.1C299.9 327.1 295.2 320 291.1 312.2C288.8 304.4 287.2 296 287.2 287.6L287.1 173.8C288 136.9 299.1 100.8 319.8 70.28C340.5 39.71 369.8 16.05 404.1 2.339C408.1 .401 414.2-.3202 419.4 .2391C424.6 .7982 429.6 2.62 433.9 5.546C438.2 8.472 441.8 12.41 444.2 17.03C446.7 21.64 447.1 26.78 448 32V472z"], + "v": [384, 512, [118], "56", "M381.5 76.33l-160 384C216.6 472.2 204.9 480 192 480s-24.56-7.757-29.53-19.68l-160-384c-6.797-16.31 .9062-35.05 17.22-41.84c16.38-6.859 35.08 .9219 41.84 17.22L192 364.8l130.5-313.1c6.766-16.3 25.47-24.09 41.84-17.22C380.6 41.28 388.3 60.01 381.5 76.33z"], + "van-shuttle": [640, 512, [128656, "shuttle-van"], "f5b6", "M592 384H576C576 437 533 480 480 480C426.1 480 384 437 384 384H256C256 437 213 480 160 480C106.1 480 64 437 64 384H48C21.49 384 0 362.5 0 336V104C0 64.24 32.24 32 72 32H465.1C483.1 32 501.9 40.34 514.1 54.78L624.1 186.5C634.7 197.1 640 212.6 640 227.7V336C640 362.5 618.5 384 592 384zM64 192H160V96H72C67.58 96 64 99.58 64 104V192zM545.1 192L465.1 96H384V192H545.1zM320 192V96H224V192H320zM480 336C453.5 336 432 357.5 432 384C432 410.5 453.5 432 480 432C506.5 432 528 410.5 528 384C528 357.5 506.5 336 480 336zM160 432C186.5 432 208 410.5 208 384C208 357.5 186.5 336 160 336C133.5 336 112 357.5 112 384C112 410.5 133.5 432 160 432z"], + "vault": [576, 512, [], "e2c5", "M144 240C144 195.8 179.8 160 224 160C268.2 160 304 195.8 304 240C304 284.2 268.2 320 224 320C179.8 320 144 284.2 144 240zM512 0C547.3 0 576 28.65 576 64V416C576 451.3 547.3 480 512 480H496L480 512H416L400 480H176L160 512H96L80 480H64C28.65 480 0 451.3 0 416V64C0 28.65 28.65 0 64 0H512zM224 400C312.4 400 384 328.4 384 240C384 151.6 312.4 80 224 80C135.6 80 64 151.6 64 240C64 328.4 135.6 400 224 400zM480 221.3C498.6 214.7 512 196.9 512 176C512 149.5 490.5 128 464 128C437.5 128 416 149.5 416 176C416 196.9 429.4 214.7 448 221.3V336C448 344.8 455.2 352 464 352C472.8 352 480 344.8 480 336V221.3z"], + "vector-square": [448, 512, [], "f5cb", "M416 32C433.7 32 448 46.33 448 64V128C448 145.7 433.7 160 416 160V352C433.7 352 448 366.3 448 384V448C448 465.7 433.7 480 416 480H352C334.3 480 320 465.7 320 448H128C128 465.7 113.7 480 96 480H32C14.33 480 0 465.7 0 448V384C0 366.3 14.33 352 32 352V160C14.33 160 0 145.7 0 128V64C0 46.33 14.33 32 32 32H96C113.7 32 128 46.33 128 64H320C320 46.33 334.3 32 352 32H416zM368 80V112H400V80H368zM96 160V352C113.7 352 128 366.3 128 384H320C320 366.3 334.3 352 352 352V160C334.3 160 320 145.7 320 128H128C128 145.7 113.7 160 96 160zM48 400V432H80V400H48zM400 432V400H368V432H400zM80 112V80H48V112H80z"], + "venus": [384, 512, [9792], "f221", "M368 176c0-97.2-78.8-176-176-176c-97.2 0-176 78.8-176 176c0 86.26 62.1 157.9 144 172.1v35.05H112c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16H160v48c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16v-48h48c8.838 0 16-7.164 16-16v-32c0-8.838-7.162-16-16-16H224v-35.05C305.9 333.9 368 262.3 368 176zM192 272c-52.93 0-96-43.07-96-96c0-52.94 43.07-96 96-96c52.94 0 96 43.06 96 96C288 228.9 244.9 272 192 272z"], + "venus-double": [640, 512, [9890], "f226", "M368 176c0-97.2-78.8-176-176-176c-97.2 0-176 78.8-176 176c0 86.26 62.1 157.9 144 172.1v35.05H112c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16H160v48c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16v-48h48c8.838 0 16-7.164 16-16v-32c0-8.838-7.162-16-16-16H224v-35.05C305.9 333.9 368 262.3 368 176zM192 272c-52.93 0-96-43.07-96-96c0-52.94 43.07-96 96-96c52.94 0 96 43.06 96 96C288 228.9 244.9 272 192 272zM624 176C624 78.8 545.2 0 448 0c-39.02 0-74.95 12.85-104.1 34.34c18.38 19.7 32.94 42.91 42.62 68.58C403.2 88.83 424.5 80 448 80c52.94 0 96 43.06 96 96c0 52.93-43.06 96-96 96c-23.57 0-44.91-8.869-61.63-23.02c-9.572 25.45-23.95 48.54-42.23 68.23C365.1 332.7 389.3 344 416 348.1V384h-48c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16H416v48c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16V448h48c8.838 0 16-7.164 16-16v-32c0-8.838-7.162-16-16-16H480v-35.05C561.9 333.9 624 262.3 624 176z"], + "venus-mars": [640, 512, [9892], "f228", "M256 384H208v-35.05C289.9 333.9 352 262.3 352 176c0-97.2-78.8-176-176-176c-97.2 0-176 78.8-176 176c0 86.26 62.1 157.9 144 172.1v35.05H96c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16h48v48c0 8.836 7.164 16 16 16h32c8.838 0 16-7.164 16-16v-48H256c8.838 0 16-7.164 16-16v-32C272 391.2 264.8 384 256 384zM176 272c-52.93 0-96-43.07-96-96c0-52.94 43.07-96 96-96c52.94 0 96 43.06 96 96C272 228.9 228.9 272 176 272zM624 0h-112.4c-21.38 0-32.09 25.85-16.97 40.97l29.56 29.56l-24.55 24.55c-29.97-20.66-64.81-31.05-99.74-31.05c-15.18 0-30.42 2.225-45.19 6.132c13.55 22.8 22.82 48.36 26.82 75.67c6.088-1.184 12.27-1.785 18.45-1.785c24.58 0 49.17 9.357 67.88 28.07c37.43 37.43 37.43 98.33 0 135.8c-18.71 18.71-43.3 28.07-67.88 28.07c-23.55 0-46.96-8.832-65.35-26.01c-15.92 18.84-34.93 35.1-56.75 47.35c11.45 5.898 20.17 16.3 23.97 28.82C331.5 406 365.7 416 400 416c45.04 0 90.08-17.18 124.5-51.55c60.99-60.99 67.73-155.6 20.47-224.1l24.55-24.55l29.56 29.56c4.889 4.889 10.9 7.078 16.8 7.078C628.2 152.4 640 142.8 640 128.4V16C640 7.164 632.8 0 624 0z"], + "vest": [448, 512, [], "e085", "M437.3 239.9L384 160V32c0-17.67-14.33-32-32-32h-32c-4.75 0-9.375 1.406-13.31 4.031l-25 16.66c-35.03 23.38-80.28 23.38-115.4 0l-25-16.66C137.4 1.406 132.8 0 128 0H96C78.33 0 64 14.33 64 32v128L10.75 239.9C3.74 250.4 0 262.7 0 275.4V480c0 17.67 14.33 32 32 32h160V288c0-3.439 .5547-6.855 1.643-10.12l13.49-40.48L150.2 66.56C173.2 79.43 198.5 86.25 224 86.25s50.79-6.824 73.81-19.69L224 288v224h192c17.67 0 32-14.33 32-32V275.4C448 262.7 444.3 250.4 437.3 239.9zM131.3 371.3l-48 48C80.19 422.4 76.09 424 72 424s-8.188-1.562-11.31-4.688c-6.25-6.25-6.25-16.38 0-22.62l48-48c6.25-6.25 16.38-6.25 22.62 0S137.6 365.1 131.3 371.3zM387.3 419.3C384.2 422.4 380.1 424 376 424s-8.188-1.562-11.31-4.688l-48-48c-6.25-6.25-6.25-16.38 0-22.62s16.38-6.25 22.62 0l48 48C393.6 402.9 393.6 413.1 387.3 419.3z"], + "vest-patches": [448, 512, [], "e086", "M437.3 239.9L384 160V32c0-17.67-14.33-32-32-32h-32c-4.75 0-9.375 1.406-13.31 4.031l-25 16.66c-35.03 23.38-80.28 23.38-115.4 0l-25-16.66C137.4 1.406 132.8 0 128 0H96C78.33 0 64 14.33 64 32v128L10.75 239.9C3.74 250.4 0 262.7 0 275.4V480c0 17.67 14.33 32 32 32h160V288c0-3.439 .5547-6.855 1.643-10.12l13.49-40.48L150.2 66.56C173.2 79.43 198.5 86.25 224 86.25s50.79-6.824 73.81-19.69L224 288v224h192c17.67 0 32-14.33 32-32V275.4C448 262.7 444.3 250.4 437.3 239.9zM63.5 272.5c-4.656-4.688-4.656-12.31 0-17c4.688-4.688 12.31-4.688 17 0L96 271l15.5-15.5c4.688-4.688 12.31-4.688 17 0c4.656 4.688 4.656 12.31 0 17L113 288l15.5 15.5c4.656 4.688 4.656 12.31 0 17C126.2 322.8 123.1 324 120 324s-6.156-1.156-8.5-3.5L96 305l-15.5 15.5C78.16 322.8 75.06 324 72 324s-6.156-1.156-8.5-3.5c-4.656-4.688-4.656-12.31 0-17L79 288L63.5 272.5zM96 456c-22.09 0-40-17.91-40-40S73.91 376 96 376S136 393.9 136 416S118.1 456 96 456zM359.2 335.8L310.7 336C306.1 336 303.1 333 304 329.3l.2158-48.53c.1445-14.4 12.53-25.98 27.21-24.67c12.79 1.162 22.13 12.62 22.06 25.42l-.0557 5.076l5.069-.0566c12.83-.0352 24.24 9.275 25.4 22.08C385.2 323.3 373.7 335.7 359.2 335.8z"], + "vial": [512, 512, [129514], "f492", "M502.6 169.4l-160-160C336.4 3.125 328.2 0 320 0s-16.38 3.125-22.62 9.375c-12.5 12.5-12.5 32.75 0 45.25l6.975 6.977l-271.4 271c-38.75 38.75-45.13 102-9.375 143.5C44.08 500 72.76 512 101.5 512h.4473c26.38 0 52.75-9.1 72.88-30.12l275.2-274.6l7.365 7.367C463.6 220.9 471.8 224 480 224s16.38-3.125 22.62-9.375C515.1 202.1 515.1 181.9 502.6 169.4zM310.6 256H200.2l149.3-149.1l55.18 55.12L310.6 256z"], + "vial-circle-check": [512, 512, [], "e596", "M0 64C0 46.33 14.33 32 32 32H224C241.7 32 256 46.33 256 64C256 81.67 241.7 96 224 96V266.8C203.8 295.4 192 330.3 192 368C192 393.2 197.3 417.1 206.8 438.8C189.5 463.7 160.6 480 128 480C74.98 480 32 437 32 384V96C14.33 96 0 81.67 0 64V64zM96 192H160V96H96V192zM512 368C512 447.5 447.5 512 368 512C288.5 512 224 447.5 224 368C224 288.5 288.5 224 368 224C447.5 224 512 288.5 512 368zM412.7 324.7L352 385.4L323.3 356.7C317.1 350.4 306.9 350.4 300.7 356.7C294.4 362.9 294.4 373.1 300.7 379.3L340.7 419.3C346.9 425.6 357.1 425.6 363.3 419.3L435.3 347.3C441.6 341.1 441.6 330.9 435.3 324.7C429.1 318.4 418.9 318.4 412.7 324.7H412.7z"], + "vial-virus": [576, 512, [], "e597", "M256 32C273.7 32 288 46.33 288 64C288 81.67 273.7 96 256 96V207.1C252.9 209.1 249.9 211.5 247.2 214.2C225.3 236.1 225.3 271.6 247.2 293.4C247.4 293.6 247.4 293.7 247.5 293.8L247.5 293.8C247.5 293.9 247.5 294.1 247.4 294.4C247.3 294.6 247.1 294.8 247.1 294.8L247 294.9C246.1 294.9 246.8 294.9 246.6 294.9C215.7 294.9 190.6 319.1 190.6 350.9C190.6 381.8 215.7 406.9 246.6 406.9C246.8 406.9 246.1 406.9 247 406.9L247.1 406.9C247.1 406.1 247.3 407.1 247.4 407.4C247.5 407.7 247.5 407.9 247.5 407.1L247.5 408C247.4 408.1 247.4 408.2 247.2 408.3C236 419.5 230.6 434.2 230.8 448.8C213.3 467.1 188 480 160 480C106.1 480 64 437 64 384V96C46.33 96 32 81.67 32 64C32 46.33 46.33 32 64 32H256zM192 192V96H128V192H192zM383.8 189.7C397.1 189.7 407.8 200.4 407.8 213.7C407.8 242.9 443.2 257.6 463.9 236.9C473.3 227.5 488.5 227.5 497.8 236.9C507.2 246.2 507.2 261.4 497.8 270.8C477.2 291.5 491.8 326.9 521.1 326.9C534.3 326.9 545.1 337.6 545.1 350.9C545.1 364.1 534.3 374.9 521.1 374.9C491.8 374.9 477.2 410.3 497.8 430.9C507.2 440.3 507.2 455.5 497.8 464.9C488.5 474.3 473.3 474.3 463.9 464.9C443.2 444.2 407.8 458.9 407.8 488.1C407.8 501.4 397.1 512.1 383.8 512.1C370.6 512.1 359.8 501.4 359.8 488.1C359.8 458.9 324.5 444.2 303.8 464.9C294.4 474.3 279.2 474.3 269.8 464.9C260.5 455.5 260.5 440.3 269.8 430.9C290.5 410.3 275.9 374.9 246.6 374.9C233.4 374.9 222.6 364.1 222.6 350.9C222.6 337.6 233.4 326.9 246.6 326.9C275.9 326.9 290.5 291.5 269.8 270.8C260.5 261.4 260.5 246.2 269.8 236.9C279.2 227.5 294.4 227.5 303.8 236.9C324.5 257.6 359.8 242.9 359.8 213.7C359.8 200.4 370.6 189.7 383.8 189.7H383.8zM352 352C369.7 352 384 337.7 384 320C384 302.3 369.7 288 352 288C334.3 288 320 302.3 320 320C320 337.7 334.3 352 352 352zM416 360C402.7 360 392 370.7 392 384C392 397.3 402.7 408 416 408C429.3 408 440 397.3 440 384C440 370.7 429.3 360 416 360z"], + "vials": [512, 512, [], "f493", "M200 32h-176C10.75 32 0 42.74 0 56C0 69.25 10.75 80 24 80H32v320C32 444.1 67.88 480 112 480S192 444.1 192 400v-320h8C213.3 80 224 69.25 224 56C224 42.74 213.3 32 200 32zM144 256h-64V80h64V256zM488 32h-176C298.7 32 288 42.74 288 56c0 13.25 10.75 24 24 24H320v320c0 44.13 35.88 80 80 80s80-35.88 80-80v-320h8C501.3 80 512 69.25 512 56C512 42.74 501.3 32 488 32zM432 256h-64V80h64V256z"], + "video": [576, 512, ["video-camera"], "f03d", "M384 112v288c0 26.51-21.49 48-48 48h-288c-26.51 0-48-21.49-48-48v-288c0-26.51 21.49-48 48-48h288C362.5 64 384 85.49 384 112zM576 127.5v256.9c0 25.5-29.17 40.39-50.39 25.79L416 334.7V177.3l109.6-75.56C546.9 87.13 576 102.1 576 127.5z"], + "video-slash": [640, 512, [], "f4e2", "M32 399.1c0 26.51 21.49 47.1 47.1 47.1h287.1c19.57 0 36.34-11.75 43.81-28.56L32 121.8L32 399.1zM630.8 469.1l-89.21-69.92l15.99 11.02c21.22 14.59 50.41-.2971 50.41-25.8V127.5c0-25.41-29.07-40.37-50.39-25.76l-109.6 75.56l.0001 148.5l-32-25.08l.0001-188.7c0-26.51-21.49-47.1-47.1-47.1H113.9L38.81 5.111C34.41 1.673 29.19 0 24.03 0C16.91 0 9.84 3.158 5.121 9.189C-3.066 19.63-1.249 34.72 9.189 42.89l591.1 463.1c10.5 8.203 25.57 6.328 33.69-4.078C643.1 492.4 641.2 477.3 630.8 469.1z"], + "vihara": [640, 512, [], "f6a7", "M280.1 22.03L305.8 4.661C307.1 3.715 308.4 2.908 309.9 2.246C313.1 .7309 316.6-.0029 319.1 0C323.4-.0029 326.9 .7309 330.1 2.246C331.6 2.909 332.9 3.716 334.2 4.661L359 22.03C392.1 45.8 430.8 63.52 470.8 74.42L493.8 80.71C495.6 81.17 497.4 81.83 499 82.68C502.2 84.33 504.1 86.66 507.1 89.43C510.8 94.38 512.7 100.7 511.8 107.2C511.4 109.1 510.6 112.6 509.3 115C507.7 118.2 505.3 120.1 502.6 123.1C498.3 126.3 492.1 128.1 487.5 128H480V184.1L491.7 193.3C512.8 210 536.6 222.9 562.2 231.4L591.1 241.1C592.7 241.6 594.2 242.2 595.7 243C598.8 244.8 601.4 247.2 603.5 249.1C605.5 252.8 606.9 256 607.6 259.6C608.1 262.2 608.2 265 607.7 267.8C607.2 270.6 606.3 273.3 604.1 275.7C603.2 278.8 600.8 281.5 598 283.5C595.2 285.5 591.1 286.9 588.4 287.6C586.8 287.9 585.1 288 583.4 288H544V353.9C564.5 376.7 591.4 393 621.4 400.6C632 403 640 412.6 640 424C640 437.3 629.3 448 616 448H576V480C576 497.7 561.7 512 544 512C526.3 512 512 497.7 512 480V448H352V480C352 497.7 337.7 512 320 512C302.3 512 288 497.7 288 480V448H128V480C128 497.7 113.7 512 96 512C78.33 512 64 497.7 64 480V448H24C10.75 448 0 437.3 0 424C0 412.6 7.962 403 18.63 400.6C48.61 393 75.51 376.7 96 353.9V288H56.55C54.87 288 53.2 287.9 51.57 287.6C48.03 286.9 44.77 285.5 41.96 283.5C39.16 281.5 36.77 278.8 35.03 275.7C33.69 273.3 32.76 270.6 32.31 267.8C31.85 265 31.9 262.2 32.41 259.6C33.07 256 34.51 252.8 36.53 249.1C38.55 247.2 41.19 244.8 44.34 243C45.78 242.2 47.32 241.6 48.94 241.1L77.81 231.4C103.4 222.9 127.2 210 148.3 193.3L160 184.1V128H152.5C147 128.1 141.7 126.3 137.4 123.1C134.7 120.1 132.3 118.2 130.7 115C129.4 112.6 128.6 109.1 128.2 107.2C127.3 100.7 129.2 94.38 132.9 89.43C135 86.66 137.8 84.33 140.1 82.68C142.6 81.83 144.4 81.17 146.2 80.71L169.2 74.42C209.2 63.52 247 45.8 280.1 22.03H280.1zM223.1 128V192H416V128H223.1zM159.1 352H480V288H159.1V352z"], + "virus": [512, 512, [], "e074", "M288 43.55C288 93.44 348.3 118.4 383.6 83.15L391.8 74.98C404.3 62.48 424.5 62.48 437 74.98C449.5 87.48 449.5 107.7 437 120.2L428.9 128.4C393.6 163.7 418.6 224 468.5 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H468.5C418.6 288 393.6 348.3 428.9 383.6L437 391.8C449.5 404.3 449.5 424.5 437 437C424.5 449.5 404.3 449.5 391.8 437L383.6 428.9C348.3 393.6 288 418.6 288 468.5V480C288 497.7 273.7 512 256 512C238.3 512 224 497.7 224 480V468.5C224 418.6 163.7 393.6 128.4 428.9L120.2 437C107.7 449.5 87.48 449.5 74.98 437C62.48 424.5 62.48 404.3 74.98 391.8L83.15 383.6C118.4 348.3 93.44 288 43.55 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H43.55C93.44 224 118.4 163.7 83.15 128.4L74.98 120.2C62.48 107.7 62.48 87.48 74.98 74.98C87.48 62.48 107.7 62.48 120.2 74.98L128.4 83.15C163.7 118.4 224 93.44 224 43.55V32C224 14.33 238.3 0 256 0C273.7 0 288 14.33 288 32V43.55zM224 176C197.5 176 176 197.5 176 224C176 250.5 197.5 272 224 272C250.5 272 272 250.5 272 224C272 197.5 250.5 176 224 176zM304 328C317.3 328 328 317.3 328 304C328 290.7 317.3 280 304 280C290.7 280 280 290.7 280 304C280 317.3 290.7 328 304 328z"], + "virus-covid": [512, 512, [], "e4a8", "M192 24C192 10.75 202.7 0 216 0H296C309.3 0 320 10.75 320 24C320 37.25 309.3 48 296 48H280V81.62C310.7 85.8 338.8 97.88 362.3 115.7L386.1 91.95L374.8 80.64C365.4 71.26 365.4 56.07 374.8 46.7C384.2 37.32 399.4 37.32 408.7 46.7L465.3 103.3C474.7 112.6 474.7 127.8 465.3 137.2C455.9 146.6 440.7 146.6 431.4 137.2L420 125.9L396.3 149.7C414.1 173.2 426.2 201.3 430.4 232H464V216C464 202.7 474.7 192 488 192C501.3 192 512 202.7 512 216V296C512 309.3 501.3 320 488 320C474.7 320 464 309.3 464 296V280H430.4C426.2 310.7 414.1 338.8 396.3 362.3L420 386.1L431.4 374.8C440.7 365.4 455.9 365.4 465.3 374.8C474.7 384.2 474.7 399.4 465.3 408.7L408.7 465.3C399.4 474.7 384.2 474.7 374.8 465.3C365.4 455.9 365.4 440.7 374.8 431.4L386.1 420L362.3 396.3C338.8 414.1 310.7 426.2 280 430.4V464H296C309.3 464 320 474.7 320 488C320 501.3 309.3 512 296 512H216C202.7 512 192 501.3 192 488C192 474.7 202.7 464 216 464H232V430.4C201.3 426.2 173.2 414.1 149.7 396.3L125.9 420.1L137.2 431.4C146.6 440.7 146.6 455.9 137.2 465.3C127.8 474.7 112.6 474.7 103.3 465.3L46.7 408.7C37.32 399.4 37.32 384.2 46.7 374.8C56.07 365.4 71.27 365.4 80.64 374.8L91.95 386.1L115.7 362.3C97.88 338.8 85.8 310.7 81.62 280H48V296C48 309.3 37.25 320 24 320C10.75 320 0 309.3 0 296V216C0 202.7 10.75 192 24 192C37.25 192 48 202.7 48 216V232H81.62C85.8 201.3 97.88 173.2 115.7 149.7L91.95 125.9L80.64 137.2C71.26 146.6 56.07 146.6 46.7 137.2C37.32 127.8 37.32 112.6 46.7 103.3L103.3 46.7C112.6 37.33 127.8 37.33 137.2 46.7C146.6 56.07 146.6 71.27 137.2 80.64L125.9 91.95L149.7 115.7C173.2 97.88 201.3 85.8 232 81.62V48H216C202.7 48 192 37.26 192 24V24zM192 176C165.5 176 144 197.5 144 224C144 250.5 165.5 272 192 272C218.5 272 240 250.5 240 224C240 197.5 218.5 176 192 176zM304 328C317.3 328 328 317.3 328 304C328 290.7 317.3 280 304 280C290.7 280 280 290.7 280 304C280 317.3 290.7 328 304 328z"], + "virus-covid-slash": [640, 512, [], "e4a9", "M134.1 79.83L167.3 46.7C176.6 37.33 191.8 37.33 201.2 46.7C210.6 56.07 210.6 71.27 201.2 80.64L189.9 91.95L213.7 115.7C237.2 97.88 265.3 85.8 295.1 81.62V48H279.1C266.7 48 255.1 37.26 255.1 24C255.1 10.75 266.7 .0003 279.1 .0003H360C373.3 .0003 384 10.75 384 24C384 37.26 373.3 48 360 48H344V81.62C374.7 85.8 402.8 97.88 426.3 115.7L450.1 91.95L438.8 80.64C429.4 71.26 429.4 56.07 438.8 46.7C448.2 37.32 463.4 37.32 472.7 46.7L529.3 103.3C538.7 112.6 538.7 127.8 529.3 137.2C519.9 146.6 504.7 146.6 495.4 137.2L484 125.9L460.3 149.7C478.1 173.2 490.2 201.3 494.4 232H528V216C528 202.7 538.7 192 552 192C565.3 192 576 202.7 576 216V296C576 309.3 565.3 320 552 320C538.7 320 528 309.3 528 296V280H494.4C491.2 303.3 483.4 325.2 472.1 344.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L134.1 79.83zM149.2 213.5L401.3 412.2C383.7 421.3 364.4 427.6 344 430.4V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H279.1C266.7 512 255.1 501.3 255.1 488C255.1 474.7 266.7 464 279.1 464H295.1V430.4C265.3 426.2 237.2 414.1 213.7 396.3L189.9 420.1L201.2 431.4C210.6 440.7 210.6 455.9 201.2 465.3C191.8 474.7 176.6 474.7 167.3 465.3L110.7 408.7C101.3 399.4 101.3 384.2 110.7 374.8C120.1 365.4 135.3 365.4 144.6 374.8L155.1 386.1L179.7 362.3C161.9 338.8 149.8 310.7 145.6 280H111.1V296C111.1 309.3 101.3 320 87.1 320C74.74 320 63.1 309.3 63.1 296V216C63.1 202.7 74.74 192 87.1 192C101.3 192 111.1 202.7 111.1 216V232H145.6C146.5 225.7 147.7 219.6 149.2 213.5L149.2 213.5z"], + "virus-slash": [640, 512, [], "e075", "M134.7 80.27C135.9 78.4 137.3 76.62 138.1 74.98C151.5 62.48 171.7 62.48 184.2 74.98L192.4 83.15C227.7 118.4 287.1 93.44 287.1 43.55V32C287.1 14.33 302.3 0 319.1 0C337.7 0 352 14.33 352 32V43.55C352 93.44 412.3 118.4 447.6 83.15L455.8 74.98C468.3 62.48 488.5 62.48 501 74.98C513.5 87.48 513.5 107.7 501 120.2L492.9 128.4C457.6 163.7 482.6 224 532.4 224H544C561.7 224 576 238.3 576 256C576 273.7 561.7 288 544 288H532.5C497.2 288 474.4 318.1 476.5 348.1L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L134.7 80.27zM264.6 182.1L334.3 236.7C335.4 232.7 336 228.4 336 224C336 197.5 314.5 176 288 176C279.5 176 271.5 178.2 264.6 182.1V182.1zM107.5 224C122.5 224 135.2 218.6 144.7 210L401.1 412.7C375.6 415.7 352 437.2 352 468.5V480C352 497.7 337.7 512 319.1 512C302.3 512 287.1 497.7 287.1 480V468.5C287.1 418.6 227.7 393.6 192.4 428.9L184.2 437C171.7 449.5 151.5 449.5 138.1 437C126.5 424.5 126.5 404.3 138.1 391.8L147.1 383.6C182.4 348.3 157.4 288 107.5 288H95.1C78.33 288 63.1 273.7 63.1 256C63.1 238.3 78.33 224 95.1 224H107.5z"], + "viruses": [640, 512, [], "e076", "M346.5 213.3h16.16C374.5 213.3 384 203.8 384 192c0-11.79-9.541-21.33-21.33-21.33h-16.16c-38.01 0-57.05-45.96-30.17-72.84l11.44-11.44c8.332-8.332 8.331-21.83-.0012-30.17c-8.334-8.334-21.83-8.332-30.17 .002L286.2 67.66C259.3 94.54 213.3 75.51 213.3 37.49V21.33C213.3 9.542 203.8 0 192 0S170.7 9.542 170.7 21.33v16.16c0 38.01-45.96 57.05-72.84 30.17L86.4 56.23c-8.334-8.334-21.83-8.336-30.17-.002c-8.332 8.334-8.333 21.84-.0012 30.17L67.66 97.83c26.88 26.88 7.842 72.84-30.17 72.84H21.33C9.541 170.7 0 180.2 0 192c0 11.79 9.541 21.33 21.33 21.33h16.16c38.01 0 57.05 45.96 30.17 72.84L56.23 297.6c-8.332 8.334-8.328 21.84 .0043 30.17c4.168 4.168 9.621 6.248 15.08 6.248s10.92-2.082 15.08-6.25L97.83 316.3c26.88-26.88 72.84-7.842 72.84 30.17v16.16C170.7 374.5 180.2 384 192 384s21.33-9.543 21.33-21.33v-16.16c0-38.01 45.96-57.05 72.84-30.17l11.43 11.43c4.168 4.168 9.625 6.25 15.08 6.25s10.91-2.08 15.08-6.248c8.332-8.332 8.333-21.83 .0012-30.17L316.3 286.2C289.5 259.3 308.5 213.3 346.5 213.3zM160 192C142.3 192 128 177.7 128 160c0-17.67 14.33-32 32-32s32 14.33 32 32C192 177.7 177.7 192 160 192zM240 224C231.2 224 224 216.8 224 208C224 199.2 231.2 192 240 192S256 199.2 256 208C256 216.8 248.8 224 240 224zM624 352h-12.12c-28.51 0-42.79-34.47-22.63-54.63l8.576-8.576c6.25-6.25 6.25-16.37 0-22.62s-16.38-6.253-22.62-.0031l-8.576 8.576C546.5 294.9 512 280.6 512 252.1V240C512 231.2 504.8 224 496 224S480 231.2 480 240v12.12c0 28.51-34.47 42.79-54.63 22.63l-8.576-8.576c-6.25-6.25-16.37-6.253-22.62-.0031s-6.253 16.38-.0031 22.63l8.576 8.576C422.9 317.5 408.6 352 380.1 352H368c-8.844 0-16 7.156-16 16s7.156 16 16 16h12.12c28.51 0 42.79 34.47 22.63 54.63l-8.576 8.576c-6.25 6.25-6.253 16.37-.0031 22.62c3.125 3.125 7.222 4.691 11.32 4.691s8.188-1.562 11.31-4.688l8.576-8.576C445.5 441.1 480 455.4 480 483.9V496c0 8.844 7.156 16 16 16s16-7.156 16-16v-12.12c0-28.51 34.47-42.79 54.63-22.63l8.576 8.576c3.125 3.125 7.219 4.688 11.31 4.688s8.184-1.559 11.31-4.684c6.25-6.25 6.253-16.38 .0031-22.63l-8.576-8.576C569.1 418.5 583.4 384 611.9 384H624c8.844 0 16-7.156 16-16S632.8 352 624 352zM480 384c-17.67 0-32-14.33-32-32c0-17.67 14.33-32 32-32s32 14.33 32 32C512 369.7 497.7 384 480 384z"], + "voicemail": [640, 512, [], "f897", "M495.1 96c-53.13 0-102 29.25-127 76.13c-25 46.88-22.25 103.8 7.25 147.9H263.7c36.63-54.88 31.25-127.8-13-176.8c-44.38-48.87-116.4-61.37-174.6-30.25s-87.88 97.88-71.75 162c16 64 73.63 108.1 139.6 108.1h352C575.5 384 640 319.5 640 240S575.5 96 495.1 96zM63.99 240c0-44.12 35.88-80 80-80s80 35.88 80 80s-35.88 79.1-80 79.1S63.99 284.1 63.99 240zM495.1 320c-44.13 0-80-35.88-80-79.1s35.88-80 80-80s80 35.88 80 80S540.1 320 495.1 320z"], + "volcano": [512, 512, [127755], "f770", "M304.4 224H207.6C197.7 224 188.5 228.5 182.4 236.3l-55.63 71l13.25 16.5C149.7 336 170.2 336 180.1 323.8c10.75-13.5 26.75-21.25 44.13-21.5c17.13-1.5 33.5 7 44.75 20l31.63 36.88c9.751 11.38 29.13 11.38 39 0l45.13-52.62l-55-70.25C323.5 228.5 314.3 224 304.4 224zM159.1 144c12.88 0 24.75-3.875 34.75-10.38L223.1 192h64l29.25-58.38C327.3 140.1 339.1 144 352 144c35.25 0 64-28.75 64-64s-28.75-64-64-64c-15.75 0-30 5.875-41.25 15.38C299.6 12.75 279.4 0 255.1 0C232.6 0 212.4 12.75 201.2 31.38C189.1 21.88 175.7 16 159.1 16c-35.25 0-64 28.75-64 64S124.7 144 159.1 144zM505.5 460.8l-100.8-128.6l-41 47.63C352.8 392.6 336.8 400 320 400s-32.75-7.25-43.75-20.25L244.6 343C239.7 337.3 232.6 334 225.1 334H224.7c-7.751 .25-14.88 3.75-19.63 9.75c-22.13 27.5-68.13 27.5-90.13 0l-8.376-10.62l-100.1 127.6C-9.397 481.9 5.727 512 32.1 512h447.9C506.3 512 521.4 481.9 505.5 460.8z"], + "volleyball": [512, 512, [127952, "volleyball-ball"], "f45f", "M200.3 106C185.4 80.24 165.2 53.9 137.4 29.26C55.75 72.05 0 157.4 0 256c0 21.33 2.898 41.94 7.814 61.75C53.59 182.1 155.1 124.9 200.3 106zM381.7 281.1c1.24-9.223 2.414-22.08 2.414-37.65c0-59.1-16.93-157.2-111.5-242.6C267.1 .4896 261.6 0 256 0C225.5 0 196.5 5.591 169.4 15.36c93.83 90.15 102.6 198.5 102.8 231.7C287.8 255.9 327.3 275.1 381.7 281.1zM240.1 246.5C239.1 228.5 236.9 184.7 214.9 134.6C173.6 151.6 60.4 211.7 26.67 369.2c15.66 31.64 37.52 59.66 64.22 82.23C122 325.1 211.5 263.3 240.1 246.5zM326.5 10.07c74.79 84.9 89.5 175.9 89.5 234c0 15.45-1.042 28.56-2.27 38.61l.5501 .0005c29.54 0 62.2-4.325 97.16-15.99C511.6 263.1 512 259.6 512 256C512 139.1 433.6 40.72 326.5 10.07zM255.7 274.5c-15.43 9.086-51.89 33.63-84.32 77.86c26.34 20.33 93.51 63.27 189.5 63.27c32.83 0 69.02-5.021 108.1-17.69c19.08-28.59 32.41-61.34 38.71-96.47C474.5 311.1 443 315 414.4 315C334.6 315 276.5 286.3 255.7 274.5zM153.1 379.3c-14.91 25.71-27.62 56.33-35.03 92.72C158.6 497.2 205.5 512 256 512c69 0 131.5-27.43 177.5-71.82c-25.42 5.105-49.71 7.668-72.38 7.668C258.6 447.8 185.5 402.1 153.1 379.3z"], + "volume-high": [640, 512, [128266, "volume-up"], "f028", "M412.6 182c-10.28-8.334-25.41-6.867-33.75 3.402c-8.406 10.24-6.906 25.35 3.375 33.74C393.5 228.4 400 241.8 400 255.1c0 14.17-6.5 27.59-17.81 36.83c-10.28 8.396-11.78 23.5-3.375 33.74c4.719 5.806 11.62 8.802 18.56 8.802c5.344 0 10.75-1.779 15.19-5.399C435.1 311.5 448 284.6 448 255.1S435.1 200.4 412.6 182zM473.1 108.2c-10.22-8.334-25.34-6.898-33.78 3.34c-8.406 10.24-6.906 25.35 3.344 33.74C476.6 172.1 496 213.3 496 255.1s-19.44 82.1-53.31 110.7c-10.25 8.396-11.75 23.5-3.344 33.74c4.75 5.775 11.62 8.771 18.56 8.771c5.375 0 10.75-1.779 15.22-5.431C518.2 366.9 544 313 544 255.1S518.2 145 473.1 108.2zM534.4 33.4c-10.22-8.334-25.34-6.867-33.78 3.34c-8.406 10.24-6.906 25.35 3.344 33.74C559.9 116.3 592 183.9 592 255.1s-32.09 139.7-88.06 185.5c-10.25 8.396-11.75 23.5-3.344 33.74C505.3 481 512.2 484 519.2 484c5.375 0 10.75-1.779 15.22-5.431C601.5 423.6 640 342.5 640 255.1S601.5 88.34 534.4 33.4zM301.2 34.98c-11.5-5.181-25.01-3.076-34.43 5.29L131.8 160.1H48c-26.51 0-48 21.48-48 47.96v95.92c0 26.48 21.49 47.96 48 47.96h83.84l134.9 119.8C272.7 477 280.3 479.8 288 479.8c4.438 0 8.959-.9314 13.16-2.835C312.7 471.8 320 460.4 320 447.9V64.12C320 51.55 312.7 40.13 301.2 34.98z"], + "volume-low": [448, 512, [128264, "volume-down"], "f027", "M412.6 181.9c-10.28-8.344-25.41-6.875-33.75 3.406c-8.406 10.25-6.906 25.37 3.375 33.78C393.5 228.4 400 241.8 400 256c0 14.19-6.5 27.62-17.81 36.87c-10.28 8.406-11.78 23.53-3.375 33.78c4.719 5.812 11.62 8.812 18.56 8.812c5.344 0 10.75-1.781 15.19-5.406C435.1 311.6 448 284.7 448 256S435.1 200.4 412.6 181.9zM301.2 34.84c-11.5-5.187-25.01-3.116-34.43 5.259L131.8 160H48c-26.51 0-48 21.49-48 47.1v95.1c0 26.51 21.49 47.1 48 47.1h83.84l134.9 119.9C272.7 477.2 280.3 480 288 480c4.438 0 8.959-.9313 13.16-2.837C312.7 472 320 460.6 320 448V64C320 51.41 312.7 39.1 301.2 34.84z"], + "volume-off": [320, 512, [], "f026", "M320 64v383.1c0 12.59-7.337 24.01-18.84 29.16C296.1 479.1 292.4 480 288 480c-7.688 0-15.28-2.781-21.27-8.094l-134.9-119.9H48c-26.51 0-48-21.49-48-47.1V208c0-26.51 21.49-47.1 48-47.1h83.84l134.9-119.9c9.422-8.375 22.93-10.45 34.43-5.259C312.7 39.1 320 51.41 320 64z"], + "volume-xmark": [576, 512, ["volume-mute", "volume-times"], "f6a9", "M301.2 34.85c-11.5-5.188-25.02-3.122-34.44 5.253L131.8 160H48c-26.51 0-48 21.49-48 47.1v95.1c0 26.51 21.49 47.1 48 47.1h83.84l134.9 119.9c5.984 5.312 13.58 8.094 21.26 8.094c4.438 0 8.972-.9375 13.17-2.844c11.5-5.156 18.82-16.56 18.82-29.16V64C319.1 51.41 312.7 40 301.2 34.85zM513.9 255.1l47.03-47.03c9.375-9.375 9.375-24.56 0-33.94s-24.56-9.375-33.94 0L480 222.1L432.1 175c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94l47.03 47.03l-47.03 47.03c-9.375 9.375-9.375 24.56 0 33.94c9.373 9.373 24.56 9.381 33.94 0L480 289.9l47.03 47.03c9.373 9.373 24.56 9.381 33.94 0c9.375-9.375 9.375-24.56 0-33.94L513.9 255.1z"], + "vr-cardboard": [640, 512, [], "f729", "M576 64H64c-35.2 0-64 28.8-64 64v256c0 35.2 28.8 64 64 64l128.3 .0001c25.18 0 48.03-14.77 58.37-37.73l27.76-61.65c7.875-17.5 24-28.63 41.63-28.63s33.75 11.13 41.63 28.63l27.75 61.63c10.35 22.98 33.2 37.75 58.4 37.75L576 448c35.2 0 64-28.8 64-64v-256C640 92.8 611.2 64 576 64zM160 304c-35.38 0-64-28.63-64-64s28.62-63.1 64-63.1s64 28.62 64 63.1S195.4 304 160 304zM480 304c-35.38 0-64-28.63-64-64s28.62-63.1 64-63.1s64 28.62 64 63.1S515.4 304 480 304z"], + "w": [576, 512, [119], "57", "M573.1 75.25l-144 384c-4.703 12.53-16.67 20.77-29.95 20.77c-.4062 0-.8125 0-1.219-.0156c-13.77-.5156-25.66-9.797-29.52-23.03L288 178.3l-81.28 278.7c-3.859 13.23-15.75 22.52-29.52 23.03c-13.75 .4687-26.33-7.844-31.17-20.75l-144-384c-6.203-16.55 2.188-34.98 18.73-41.2C37.31 27.92 55.75 36.23 61.97 52.78l110.2 293.1l85.08-291.7C261.3 41.41 273.8 32.01 288 32.01s26.73 9.396 30.72 23.05l85.08 291.7l110.2-293.1c6.219-16.55 24.67-24.86 41.2-18.73C571.8 40.26 580.2 58.7 573.1 75.25z"], + "walkie-talkie": [384, 512, [], "f8ef", "M352 96h-32V80C320 71.16 312.8 64 304 64h-32C263.2 64 256 71.16 256 80V96h-32V80C224 71.16 216.8 64 208 64h-32C167.2 64 160 71.16 160 80V96H112V23.1C112 10.74 101.3 0 88 0S64 10.74 64 23.1V96H32C14.4 96 0 110.4 0 128v178.7c0 8.484 3.373 16.62 9.371 22.62L32 352v112C32 490.5 53.49 512 80 512h224c26.51 0 48-21.49 48-48V352l22.63-22.63C380.6 323.4 384 315.2 384 306.7V128C384 110.4 369.6 96 352 96zM288 312C288 316.4 284.4 320 280 320h-176C99.63 320 96 316.4 96 312v-16C96 291.6 99.63 288 104 288h176C284.4 288 288 291.6 288 296V312zM288 248C288 252.4 284.4 256 280 256h-176C99.63 256 96 252.4 96 248v-16C96 227.6 99.63 224 104 224h176C284.4 224 288 227.6 288 232V248zM288 184C288 188.4 284.4 192 280 192h-176C99.63 192 96 188.4 96 184v-16C96 163.6 99.63 160 104 160h176C284.4 160 288 163.6 288 168V184z"], + "wallet": [512, 512, [], "f555", "M448 32C465.7 32 480 46.33 480 64C480 81.67 465.7 96 448 96H80C71.16 96 64 103.2 64 112C64 120.8 71.16 128 80 128H448C483.3 128 512 156.7 512 192V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM416 336C433.7 336 448 321.7 448 304C448 286.3 433.7 272 416 272C398.3 272 384 286.3 384 304C384 321.7 398.3 336 416 336z"], + "wand-magic": [512, 512, ["magic"], "f0d0", "M14.06 463.3C-4.686 444.6-4.686 414.2 14.06 395.4L395.4 14.06C414.2-4.686 444.6-4.686 463.3 14.06L497.9 48.64C516.6 67.38 516.6 97.78 497.9 116.5L116.5 497.9C97.78 516.6 67.38 516.6 48.64 497.9L14.06 463.3zM347.6 187.6L452.6 82.58L429.4 59.31L324.3 164.3L347.6 187.6z"], + "wand-magic-sparkles": [576, 512, ["magic-wand-sparkles"], "e2ca", "M248.8 4.994C249.9 1.99 252.8 .0001 256 .0001C259.2 .0001 262.1 1.99 263.2 4.994L277.3 42.67L315 56.79C318 57.92 320 60.79 320 64C320 67.21 318 70.08 315 71.21L277.3 85.33L263.2 123C262.1 126 259.2 128 256 128C252.8 128 249.9 126 248.8 123L234.7 85.33L196.1 71.21C193.1 70.08 192 67.21 192 64C192 60.79 193.1 57.92 196.1 56.79L234.7 42.67L248.8 4.994zM427.4 14.06C446.2-4.686 476.6-4.686 495.3 14.06L529.9 48.64C548.6 67.38 548.6 97.78 529.9 116.5L148.5 497.9C129.8 516.6 99.38 516.6 80.64 497.9L46.06 463.3C27.31 444.6 27.31 414.2 46.06 395.4L427.4 14.06zM461.4 59.31L356.3 164.3L379.6 187.6L484.6 82.58L461.4 59.31zM7.491 117.2L64 96L85.19 39.49C86.88 34.98 91.19 32 96 32C100.8 32 105.1 34.98 106.8 39.49L128 96L184.5 117.2C189 118.9 192 123.2 192 128C192 132.8 189 137.1 184.5 138.8L128 160L106.8 216.5C105.1 221 100.8 224 96 224C91.19 224 86.88 221 85.19 216.5L64 160L7.491 138.8C2.985 137.1 0 132.8 0 128C0 123.2 2.985 118.9 7.491 117.2zM359.5 373.2L416 352L437.2 295.5C438.9 290.1 443.2 288 448 288C452.8 288 457.1 290.1 458.8 295.5L480 352L536.5 373.2C541 374.9 544 379.2 544 384C544 388.8 541 393.1 536.5 394.8L480 416L458.8 472.5C457.1 477 452.8 480 448 480C443.2 480 438.9 477 437.2 472.5L416 416L359.5 394.8C354.1 393.1 352 388.8 352 384C352 379.2 354.1 374.9 359.5 373.2z"], + "wand-sparkles": [512, 512, [], "f72b", "M3.682 149.1L53.32 170.7L74.02 220.3c1.016 2.043 3.698 3.696 5.977 3.696c.0078 0-.0078 0 0 0c2.271-.0156 4.934-1.661 5.946-3.696l20.72-49.63l49.62-20.71c2.023-1.008 3.68-3.681 3.691-5.947C159.1 141.7 158.3 139 156.3 138L106.9 117.4L106.5 117L85.94 67.7C84.93 65.66 82.27 64.02 80 64c-.0078 0 .0078 0 0 0c-2.279 0-4.966 1.649-5.981 3.692L53.32 117.3L3.682 138C1.652 139.1 0 141.7 0 144C0 146.3 1.652 148.9 3.682 149.1zM511.1 368c-.0039-2.273-1.658-4.95-3.687-5.966l-49.57-20.67l-20.77-49.67C436.9 289.7 434.3 288 432 288c-2.281 0-4.948 1.652-5.964 3.695l-20.7 49.63l-49.64 20.71c-2.027 1.016-3.684 3.683-3.687 5.956c.0039 2.262 1.662 4.954 3.687 5.966l49.57 20.67l20.77 49.67C427.1 446.3 429.7 448 432 448c2.277 0 4.944-1.656 5.96-3.699l20.69-49.63l49.65-20.71C510.3 372.9 511.1 370.3 511.1 368zM207.1 64l12.42 29.78C221 95.01 222.6 96 223.1 96s2.965-.9922 3.575-2.219L239.1 64l29.78-12.42c1.219-.6094 2.215-2.219 2.215-3.578c0-1.367-.996-2.969-2.215-3.578L239.1 32L227.6 2.219C226.1 .9922 225.4 0 223.1 0S221 .9922 220.4 2.219L207.1 32L178.2 44.42C176.1 45.03 176 46.63 176 48c0 1.359 .9928 2.969 2.21 3.578L207.1 64zM399.1 191.1c8.875 0 15.1-7.127 15.1-16v-28l91.87-101.7c5.75-6.371 5.5-15.1-.4999-22.12L487.8 4.774c-6.125-6.125-15.75-6.375-22.12-.625L186.6 255.1H144c-8.875 0-15.1 7.125-15.1 15.1v36.88l-117.5 106c-13.5 12.25-14.14 33.34-1.145 46.34l41.4 41.41c12.1 12.1 34.13 12.36 46.37-1.133l279.2-309.5H399.1z"], + "warehouse": [640, 512, [], "f494", "M0 488V171.3C0 145.2 15.93 121.6 40.23 111.9L308.1 4.753C315.7 1.702 324.3 1.702 331.9 4.753L599.8 111.9C624.1 121.6 640 145.2 640 171.3V488C640 501.3 629.3 512 616 512H568C554.7 512 544 501.3 544 488V223.1C544 206.3 529.7 191.1 512 191.1H128C110.3 191.1 96 206.3 96 223.1V488C96 501.3 85.25 512 72 512H24C10.75 512 0 501.3 0 488zM152 512C138.7 512 128 501.3 128 488V432H512V488C512 501.3 501.3 512 488 512H152zM128 336H512V400H128V336zM128 224H512V304H128V224z"], + "water": [576, 512, [], "f773", "M549.8 237.5c-31.23-5.719-46.84-20.06-47.13-20.31C490.4 205 470.3 205.1 457.7 216.8c-1 .9375-25.14 23-73.73 23s-72.73-22.06-73.38-22.62C298.4 204.9 278.3 205.1 265.7 216.8c-1 .9375-25.14 23-73.73 23S119.3 217.8 118.6 217.2C106.4 204.9 86.35 205 73.74 216.9C73.09 217.4 57.48 231.8 26.24 237.5c-17.38 3.188-28.89 19.84-25.72 37.22c3.188 17.38 19.78 29.09 37.25 25.72C63.1 295.8 82.49 287.1 95.96 279.2c19.5 11.53 51.47 24.68 96.04 24.68c44.55 0 76.49-13.12 96-24.65c19.52 11.53 51.45 24.59 96 24.59c44.58 0 76.55-13.09 96.05-24.62c13.47 7.938 32.86 16.62 58.19 21.25c17.56 3.375 34.06-8.344 37.25-25.72C578.7 257.4 567.2 240.7 549.8 237.5zM549.8 381.7c-31.23-5.719-46.84-20.06-47.13-20.31c-12.22-12.19-32.31-12.12-44.91-.375C456.7 361.9 432.6 384 384 384s-72.73-22.06-73.38-22.62c-12.22-12.25-32.3-12.12-44.89-.375C264.7 361.9 240.6 384 192 384s-72.73-22.06-73.38-22.62c-12.22-12.25-32.28-12.16-44.89-.3438c-.6562 .5938-16.27 14.94-47.5 20.66c-17.38 3.188-28.89 19.84-25.72 37.22C3.713 436.3 20.31 448 37.78 444.6C63.1 440 82.49 431.3 95.96 423.4c19.5 11.53 51.51 24.62 96.08 24.62c44.55 0 76.45-13.06 95.96-24.59C307.5 434.9 339.5 448 384.1 448c44.58 0 76.5-13.09 95.1-24.62c13.47 7.938 32.86 16.62 58.19 21.25C555.8 448 572.3 436.3 575.5 418.9C578.7 401.5 567.2 384.9 549.8 381.7zM37.78 156.4c25.33-4.625 44.72-13.31 58.19-21.25c19.5 11.53 51.47 24.68 96.04 24.68c44.55 0 76.49-13.12 96-24.65c19.52 11.53 51.45 24.59 96 24.59c44.58 0 76.55-13.09 96.05-24.62c13.47 7.938 32.86 16.62 58.19 21.25c17.56 3.375 34.06-8.344 37.25-25.72c3.172-17.38-8.344-34.03-25.72-37.22c-31.23-5.719-46.84-20.06-47.13-20.31c-12.22-12.19-32.31-12.12-44.91-.375c-1 .9375-25.14 23-73.73 23s-72.73-22.06-73.38-22.62c-12.22-12.25-32.3-12.12-44.89-.375c-1 .9375-25.14 23-73.73 23S119.3 73.76 118.6 73.2C106.4 60.95 86.35 61.04 73.74 72.85C73.09 73.45 57.48 87.79 26.24 93.51c-17.38 3.188-28.89 19.84-25.72 37.22C3.713 148.1 20.31 159.8 37.78 156.4z"], + "water-ladder": [576, 512, ["ladder-water", "swimming-pool"], "f5c5", "M320 128c0 .375-.1992 .6855-.2129 1.057C319.8 129.9 320 130.7 320 131.6V128zM192 383.1V288h192v95.99c39.6-.1448 53.95-17.98 64-26.83V128c0-17.62 14.38-32 32-32s32 14.38 32 32c0 17.67 14.33 32 32 32s32-14.33 32-32c0-53-42.1-95.1-95.1-95.1C420.1 32 384 81.94 384 131.6V224H192V128c0-17.62 14.38-32 32-32s32 14.38 32 32c0 17.67 14.33 32 32 32c17.3 0 31.2-13.79 31.79-30.94c-1.227-49.01-37.99-97.06-95.79-97.06C170.1 32 128 74.1 128 128v229.2C138.5 366.4 151.4 383.8 192 383.1zM576 445c0-15.14-10.82-28.59-26.25-31.42c-48.52-8.888-45.5-29.48-69.6-29.48c-25.02 0-31.19 31.79-96.18 31.79c-48.59 0-72.72-22.06-73.38-22.62c-6.141-6.157-14.26-9.188-22.42-9.188c-24.75 0-31.59 31.81-96.2 31.81c-48.59 0-72.69-22.03-73.41-22.59c-6.125-6.157-14.24-9.196-22.4-9.196c-8.072 0-16.18 2.976-22.45 8.852c-29.01 26.25-73.75 12.54-73.75 52.08c0 16.08 12.77 32.07 31.71 32.07c9.77 0 39.65-7.34 64.26-21.84c19.5 11.53 51.51 24.69 96.08 24.69s76.46-13.12 95.96-24.66c19.53 11.53 51.52 24.62 96.06 24.62c44.59 0 76.51-13.12 96.01-24.66c24.71 14.57 54.74 21.83 64.24 21.83C563.2 477.1 576 461.3 576 445z"], + "wave-square": [640, 512, [], "f83e", "M476 480h-152c-19.88 0-36-16.12-36-36v-348H192v156c0 19.88-16.12 36-36 36H31.1C14.33 288 0 273.7 0 256s14.33-31.1 31.1-31.1H128v-156c0-19.88 16.12-36 36-36h152c19.88 0 36 16.12 36 36v348h96v-156c0-19.88 16.12-36 36-36h124C625.7 224 640 238.3 640 256s-14.33 32-31.1 32H512v156C512 463.9 495.9 480 476 480z"], + "weight-hanging": [512, 512, [], "f5cd", "M510.3 445.9L437.3 153.8C433.5 138.5 420.8 128 406.4 128H346.1c3.625-9.1 5.875-20.75 5.875-32c0-53-42.1-96-96-96S159.1 43 159.1 96c0 11.25 2.25 22 5.875 32H105.6c-14.38 0-27.13 10.5-30.88 25.75l-73.01 292.1C-6.641 479.1 16.36 512 47.99 512h416C495.6 512 518.6 479.1 510.3 445.9zM256 128C238.4 128 223.1 113.6 223.1 96S238.4 64 256 64c17.63 0 32 14.38 32 32S273.6 128 256 128z"], + "weight-scale": [512, 512, ["weight"], "f496", "M310.3 97.25c-8-3.5-17.5 .25-21 8.5L255.8 184C233.8 184.3 216 202 216 224c0 22.12 17.88 40 40 40S296 246.1 296 224c0-10.5-4.25-20-11-27.12l33.75-78.63C322.3 110.1 318.4 100.8 310.3 97.25zM448 64h-56.23C359.5 24.91 310.7 0 256 0S152.5 24.91 120.2 64H64C28.75 64 0 92.75 0 128v320c0 35.25 28.75 64 64 64h384c35.25 0 64-28.75 64-64V128C512 92.75 483.3 64 448 64zM256 304c-70.58 0-128-57.42-128-128s57.42-128 128-128c70.58 0 128 57.42 128 128S326.6 304 256 304z"], + "wheat-awn": [512, 512, ["wheat-alt"], "e2cd", "M416.1 128.1C407.6 138.3 392.4 138.3 383 128.1C373.7 119.6 373.7 104.4 383 95.03L471 7.029C480.4-2.343 495.6-2.343 504.1 7.029C514.3 16.4 514.3 31.6 504.1 40.97L416.1 128.1zM316.8 38.63C321.3 43.15 325.4 47.94 329.1 52.93L375 7.029C384.4-2.343 399.6-2.343 408.1 7.029C418.3 16.4 418.3 31.6 408.1 40.97L350.7 99.2C355.9 120.7 355.4 143.2 349.3 164.5C369.6 158.7 391.1 157.1 411.7 162.4L471 103C480.4 93.66 495.6 93.66 504.1 103C514.3 112.4 514.3 127.6 504.1 136.1L458.8 183.1C464.5 187.2 470 191.9 475.2 197L486.5 208.3C492.7 214.6 492.7 224.7 486.5 230.1L475.2 242.3C437.7 279.8 376.9 279.8 339.4 242.3L327.2 230.1L295.3 261.1C323.8 264.7 351.5 277 373.4 298.8L384.7 310.2C390.9 316.4 390.9 326.5 384.7 332.8L373.4 344.1C335.9 381.6 275.1 381.6 237.6 344.1L225.4 331.9L193.5 363.8C221.1 366.5 249.7 378.8 271.5 400.7L282.8 411.1C289.1 418.2 289.1 428.4 282.8 434.6L271.5 445.9C234 483.4 173.3 483.4 135.8 445.9L123.5 433.7L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L78.29 388.5L67.88 378C30.39 340.6 30.39 279.8 67.88 242.3L79.2 230.1C85.44 224.7 95.57 224.7 101.8 230.1L113.1 242.3C134.1 263.3 146.3 289.7 149.7 317.1L180.1 286.6L169.7 276.2C132.2 238.7 132.2 177.9 169.7 140.5L181 129.1C187.3 122.9 197.4 122.9 203.6 129.1L214.1 140.5C235.1 161.4 248.1 187.9 251.5 215.3L281.9 184.8L271.5 174.4C234 136.9 234 76.12 271.5 38.63L282.8 27.31C289.1 21.07 299.2 21.07 305.5 27.31L316.8 38.63z"], + "wheat-awn-circle-exclamation": [640, 512, [], "e598", "M416.1 128.1C407.6 138.3 392.4 138.3 383 128.1C373.7 119.6 373.7 104.4 383 95.03L471 7.029C480.4-2.343 495.6-2.343 504.1 7.029C514.3 16.4 514.3 31.6 504.1 40.97L416.1 128.1zM316.8 38.63C321.3 43.15 325.4 47.94 329.1 52.93L375 7.029C384.4-2.343 399.6-2.343 408.1 7.029C418.3 16.4 418.3 31.6 408.1 40.97L350.7 99.2C355.9 120.7 355.4 143.2 349.3 164.5C369.6 158.7 391.1 157.1 411.7 162.4L471 103C480.4 93.66 495.6 93.66 504.1 103C514.3 112.4 514.3 127.6 504.1 136.1L458.8 183.1C463.3 186.3 467.6 189.8 471.7 193.7C426.3 199.9 386.5 223.5 359.1 257.4C352 253.3 345.4 248.3 339.4 242.3L327.2 230.1L295.3 261.1C312.5 263.6 329.5 268.8 345 277.4C329.1 303.9 320 334.9 320 368C320 369 320 370.1 320 371.1C290.9 375.6 260 366.6 237.6 344.1L225.4 331.9L193.5 363.8C221.1 366.5 249.7 378.8 271.5 400.7L282.8 411.1C289.1 418.2 289.1 428.4 282.8 434.6L271.5 445.9C234 483.4 173.3 483.4 135.8 445.9L123.5 433.7L54.63 502.6C42.13 515.1 21.87 515.1 9.372 502.6C-3.124 490.1-3.124 469.9 9.372 457.4L78.29 388.5L67.88 378C30.39 340.6 30.39 279.8 67.88 242.3L79.2 230.1C85.44 224.7 95.57 224.7 101.8 230.1L113.1 242.3C134.1 263.3 146.3 289.7 149.7 317.1L180.1 286.6L169.7 276.2C132.2 238.7 132.2 177.9 169.7 140.5L181 129.1C187.3 122.9 197.4 122.9 203.6 129.1L214.1 140.5C235.1 161.4 248.1 187.9 251.5 215.3L281.9 184.8L271.5 174.4C234 136.9 234 76.12 271.5 38.63L282.8 27.31C289.1 21.06 299.2 21.06 305.5 27.31L316.8 38.63zM352 368C352 288.5 416.5 224 496 224C575.5 224 640 288.5 640 368C640 447.5 575.5 512 496 512C416.5 512 352 447.5 352 368zM496 464C509.3 464 520 453.3 520 440C520 426.7 509.3 416 496 416C482.7 416 472 426.7 472 440C472 453.3 482.7 464 496 464zM479.1 288V368C479.1 376.8 487.2 384 495.1 384C504.8 384 511.1 376.8 511.1 368V288C511.1 279.2 504.8 272 495.1 272C487.2 272 479.1 279.2 479.1 288z"], + "wheelchair": [512, 512, [], "f193", "M510.3 421.9c-5.594-16.75-23.53-25.84-40.47-20.22l-19.38 6.438l-41.7-99.97C403.9 295.1 392.2 288 379.1 288h-97.78l-10.4-48h65.11c17.69 0 32-14.31 32-32s-14.31-32-32-32h-78.98L255.6 169.2C251.8 142.1 227.2 124.8 201.2 128.5C174.1 132.2 156.7 156.5 160.5 182.8l23.68 140.4C185.8 339.6 199.6 352 216 352h141.4l44.86 107.9C407.3 472.3 419.3 480 432 480c3.344 0 6.781-.5313 10.12-1.656l48-16C506.9 456.8 515.9 438.7 510.3 421.9zM160 464c-61.76 0-112-50.24-112-112c0-54.25 38.78-99.55 90.06-109.8L130.1 195C56.06 209 0 273.9 0 352c0 88.37 71.63 160 160 160c77.4 0 141.9-54.97 156.8-128h-49.1C252.9 430.1 210.6 464 160 464zM192 96c26.51 0 48-21.49 48-48S218.5 0 192 0S144 21.49 144 48S165.5 96 192 96z"], + "wheelchair-move": [448, 512, ["wheelchair-alt"], "e2ce", "M416 48C416 74.51 394.5 96 368 96C341.5 96 320 74.51 320 48C320 21.49 341.5 0 368 0C394.5 0 416 21.49 416 48zM172.8 54.4C182.3 47.29 194.9 46 205.6 51.05L322.1 105.9C351.3 119.6 358.9 157.5 337.4 181.4L299.1 224H416C425.6 224 434.7 228.3 440.7 235.7C446.8 243.1 449.3 252.9 447.4 262.3L415.4 422.3C411.9 439.6 395.1 450.8 377.7 447.4C360.4 443.9 349.2 427.1 352.6 409.7L376.1 288H306.7C315.3 307.6 320 329.2 320 352C320 440.4 248.4 512 160 512C71.63 512 0 440.4 0 352C0 263.6 71.63 192 160 192C171.1 192 181.1 193.1 192.4 195.3L246.6 141.1L195.8 117.2L147.2 153.6C133.1 164.2 113 161.3 102.4 147.2C91.8 133.1 94.66 113 108.8 102.4L172.8 54.4zM160 448C213 448 256 405 256 352C256 298.1 213 256 160 256C106.1 256 64 298.1 64 352C64 405 106.1 448 160 448z"], + "whiskey-glass": [512, 512, [129347, "glass-whiskey"], "f7a0", "M479.1 32H32.04C12.55 32-2.324 49.25 .3008 68.51L56.29 425.1C60.79 456.6 87.78 480 119.8 480h272.9c31.74 0 58.86-23.38 63.36-54.89l55.61-356.6C514.3 49.25 499.5 32 479.1 32zM422.7 224H89.49L69.39 96h373.2L422.7 224z"], + "wifi": [640, 512, ["wifi-3", "wifi-strong"], "f1eb", "M319.1 351.1c-35.35 0-64 28.66-64 64.01s28.66 64.01 64 64.01c35.34 0 64-28.66 64-64.01S355.3 351.1 319.1 351.1zM320 191.1c-70.25 0-137.9 25.6-190.5 72.03C116.3 275.7 115 295.9 126.7 309.2C138.5 322.4 158.7 323.7 171.9 312C212.8 275.9 265.4 256 320 256s107.3 19.88 148.1 56C474.2 317.4 481.8 320 489.3 320c8.844 0 17.66-3.656 24-10.81C525 295.9 523.8 275.7 510.5 264C457.9 217.6 390.3 191.1 320 191.1zM630.2 156.7C546.3 76.28 436.2 32 320 32S93.69 76.28 9.844 156.7c-12.75 12.25-13.16 32.5-.9375 45.25c12.22 12.78 32.47 13.12 45.25 .9375C125.1 133.1 220.4 96 320 96s193.1 37.97 265.8 106.9C592.1 208.8 600 211.8 608 211.8c8.406 0 16.81-3.281 23.09-9.844C643.3 189.2 642.9 168.1 630.2 156.7z"], + "wind": [512, 512, [], "f72e", "M32 192h320c52.94 0 96-43.06 96-96s-43.06-96-96-96h-32c-17.69 0-32 14.31-32 32s14.31 32 32 32h32c17.66 0 32 14.34 32 32s-14.34 32-32 32H32C14.31 128 0 142.3 0 160S14.31 192 32 192zM160 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h128c17.66 0 32 14.34 32 32s-14.34 32-32 32H128c-17.69 0-32 14.31-32 32s14.31 32 32 32h32c52.94 0 96-43.06 96-96S212.9 320 160 320zM416 224H32C14.31 224 0 238.3 0 256s14.31 32 32 32h384c17.66 0 32 14.34 32 32s-14.34 32-32 32h-32c-17.69 0-32 14.31-32 32s14.31 32 32 32h32c52.94 0 96-43.06 96-96S468.9 224 416 224z"], + "window-maximize": [512, 512, [128470], "f2d0", "M448 32C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H448zM96 96C78.33 96 64 110.3 64 128C64 145.7 78.33 160 96 160H416C433.7 160 448 145.7 448 128C448 110.3 433.7 96 416 96H96z"], + "window-minimize": [512, 512, [128469], "f2d1", "M0 448C0 430.3 14.33 416 32 416H480C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H32C14.33 480 0 465.7 0 448z"], + "window-restore": [512, 512, [], "f2d2", "M432 64H208C199.2 64 192 71.16 192 80V96H128V80C128 35.82 163.8 0 208 0H432C476.2 0 512 35.82 512 80V304C512 348.2 476.2 384 432 384H416V320H432C440.8 320 448 312.8 448 304V80C448 71.16 440.8 64 432 64zM0 192C0 156.7 28.65 128 64 128H320C355.3 128 384 156.7 384 192V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V192zM96 256H288C305.7 256 320 241.7 320 224C320 206.3 305.7 192 288 192H96C78.33 192 64 206.3 64 224C64 241.7 78.33 256 96 256z"], + "wine-bottle": [512, 512, [], "f72f", "M507.3 72.57l-67.88-67.88c-6.252-6.25-16.38-6.25-22.63 0l-22.63 22.62c-6.25 6.254-6.251 16.38-.0006 22.63l-76.63 76.63c-46.63-19.75-102.4-10.75-140.4 27.25l-158.4 158.4c-25 25-25 65.51 0 90.51l90.51 90.52c25 25 65.51 25 90.51 0l158.4-158.4c38-38 47-93.76 27.25-140.4l76.63-76.63c6.25 6.25 16.5 6.25 22.75 0l22.63-22.63C513.5 88.95 513.5 78.82 507.3 72.57zM179.3 423.2l-90.51-90.51l122-122l90.51 90.52L179.3 423.2z"], + "wine-glass": [320, 512, [127863], "f4e3", "M232 464h-40.01v-117.3c68.51-15.88 118-79.86 111.4-154.1L287.5 14.5C286.8 6.25 279.9 0 271.8 0H48.23C40.1 0 33.22 6.25 32.47 14.5L16.6 192.6c-6.626 74.25 42.88 138.2 111.4 154.2V464H87.98c-22.13 0-40.01 17.88-40.01 40c0 4.375 3.626 8 8.002 8h208c4.376 0 8.002-3.625 8.002-8C272 481.9 254.1 464 232 464zM77.72 48h164.6L249.4 128H70.58L77.72 48z"], + "wine-glass-empty": [320, 512, ["wine-glass-alt"], "f5ce", "M232 464h-40.01v-117.3c68.52-15.88 118-79.86 111.4-154.1L287.5 14.5C286.8 6.25 279.9 0 271.8 0H48.23C40.1 0 33.22 6.25 32.47 14.5L16.6 192.6c-6.625 74.25 42.88 138.2 111.4 154.2V464H87.98c-22.13 0-40.01 17.88-40.01 40c0 4.375 3.625 8 8.002 8h208c4.377 0 8.002-3.625 8.002-8C272 481.9 254.1 464 232 464zM180.4 300.2c-13.64 3.16-27.84 3.148-41.48-.0371C91.88 289.2 60.09 245.2 64.38 197.1L77.7 48h164.6L255.6 197.2c4.279 48.01-27.5 91.93-74.46 102.8L180.4 300.2z"], + "won-sign": [512, 512, [8361, "krw", "won"], "f159", "M119.1 224H183L224.1 56.24C228.5 41.99 241.3 32 256 32C270.7 32 283.5 41.99 287 56.24L328.1 224H392.9L449.6 53.88C455.2 37.12 473.4 28.05 490.1 33.64C506.9 39.23 515.9 57.35 510.4 74.12L460.4 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H439.1L382.4 458.1C377.9 471.6 364.1 480.5 350.8 479.1C336.6 479.4 324.4 469.6 320.1 455.8L279 288H232.1L191 455.8C187.6 469.6 175.4 479.4 161.2 479.1C147 480.5 134.1 471.6 129.6 458.1L72.94 288H32C14.33 288 .001 273.7 .001 256C.001 238.3 14.33 224 32 224H51.6L1.643 74.12C-3.946 57.35 5.115 39.23 21.88 33.64C38.65 28.05 56.77 37.12 62.36 53.88L119.1 224zM140.4 288L155.6 333.6L167 288H140.4zM248.1 224H263L256 195.9L248.1 224zM344.1 288L356.4 333.6L371.6 288H344.1z"], + "worm": [512, 512, [], "e599", "M256 96C256 42.98 298.1 0 352 0H390.4C439.9 0 480 40.12 480 89.6V376C480 451.1 419.1 512 344 512C268.9 512 208 451.1 208 376V296C208 273.9 190.1 256 168 256C145.9 256 128 273.9 128 296V464C128 490.5 106.5 512 80 512C53.49 512 32 490.5 32 464V296C32 220.9 92.89 160 168 160C243.1 160 304 220.9 304 296V376C304 398.1 321.9 416 344 416C366.1 416 384 398.1 384 376V192H352C298.1 192 256 149 256 96zM376 64C362.7 64 352 74.75 352 88C352 101.3 362.7 112 376 112C389.3 112 400 101.3 400 88C400 74.75 389.3 64 376 64z"], + "wrench": [512, 512, [128295], "f0ad", "M507.6 122.8c-2.904-12.09-18.25-16.13-27.04-7.338l-76.55 76.56l-83.1-.0002l0-83.1l76.55-76.56c8.791-8.789 4.75-24.14-7.336-27.04c-23.69-5.693-49.34-6.111-75.92 .2484c-61.45 14.7-109.4 66.9-119.2 129.3C189.8 160.8 192.3 186.7 200.1 210.1l-178.1 178.1c-28.12 28.12-28.12 73.69 0 101.8C35.16 504.1 53.56 512 71.1 512s36.84-7.031 50.91-21.09l178.1-178.1c23.46 7.736 49.31 10.24 76.17 6.004c62.41-9.84 114.6-57.8 129.3-119.2C513.7 172.1 513.3 146.5 507.6 122.8zM80 456c-13.25 0-24-10.75-24-24c0-13.26 10.75-24 24-24s24 10.74 24 24C104 445.3 93.25 456 80 456z"], + "x": [384, 512, [120], "58", "M376.6 427.5c11.31 13.58 9.484 33.75-4.094 45.06c-5.984 4.984-13.25 7.422-20.47 7.422c-9.172 0-18.27-3.922-24.59-11.52L192 305.1l-135.4 162.5c-6.328 7.594-15.42 11.52-24.59 11.52c-7.219 0-14.48-2.438-20.47-7.422c-13.58-11.31-15.41-31.48-4.094-45.06l142.9-171.5L7.422 84.5C-3.891 70.92-2.063 50.75 11.52 39.44c13.56-11.34 33.73-9.516 45.06 4.094L192 206l135.4-162.5c11.3-13.58 31.48-15.42 45.06-4.094c13.58 11.31 15.41 31.48 4.094 45.06l-142.9 171.5L376.6 427.5z"], + "x-ray": [512, 512, [], "f497", "M208 352C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384S224 376.8 224 368C224 359.2 216.8 352 208 352zM304 384c8.836 0 16-7.164 16-16c0-8.838-7.164-16-16-16S288 359.2 288 368C288 376.8 295.2 384 304 384zM496 96C504.8 96 512 88.84 512 80v-32C512 39.16 504.8 32 496 32h-480C7.164 32 0 39.16 0 48v32C0 88.84 7.164 96 16 96H32v320H16C7.164 416 0 423.2 0 432v32C0 472.8 7.164 480 16 480h480c8.836 0 16-7.164 16-16v-32c0-8.836-7.164-16-16-16H480V96H496zM416 216C416 220.4 412.4 224 408 224H272v32h104C380.4 256 384 259.6 384 264v16C384 284.4 380.4 288 376 288H272v32h69.33c25.56 0 40.8 28.48 26.62 49.75l-21.33 32C340.7 410.7 330.7 416 319.1 416H192c-10.7 0-20.69-5.347-26.62-14.25l-21.33-32C129.9 348.5 145.1 320 170.7 320H240V288H136C131.6 288 128 284.4 128 280v-16C128 259.6 131.6 256 136 256H240V224H104C99.6 224 96 220.4 96 216v-16C96 195.6 99.6 192 104 192H240V160H136C131.6 160 128 156.4 128 152v-16C128 131.6 131.6 128 136 128H240V104C240 99.6 243.6 96 248 96h16c4.4 0 8 3.6 8 8V128h104C380.4 128 384 131.6 384 136v16C384 156.4 380.4 160 376 160H272v32h136C412.4 192 416 195.6 416 200V216z"], + "xmark": [320, 512, [128473, 10005, 10006, 10060, 215, "close", "multiply", "remove", "times"], "f00d", "M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"], + "xmarks-lines": [640, 512, [], "e59a", "M608 32C625.7 32 640 46.33 640 64C640 81.67 625.7 96 608 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H608zM608 416C625.7 416 640 430.3 640 448C640 465.7 625.7 480 608 480H32C14.33 480 0 465.7 0 448C0 430.3 14.33 416 32 416H608zM7.029 167C16.4 157.7 31.6 157.7 40.97 167L96 222.1L151 167C160.4 157.7 175.6 157.7 184.1 167C194.3 176.4 194.3 191.6 184.1 200.1L129.9 256L184.1 311C194.3 320.4 194.3 335.6 184.1 344.1C175.6 354.3 160.4 354.3 151 344.1L96 289.9L40.97 344.1C31.6 354.3 16.4 354.3 7.029 344.1C-2.343 335.6-2.343 320.4 7.029 311L62.06 256L7.029 200.1C-2.343 191.6-2.343 176.4 7.029 167V167zM320 222.1L375 167C384.4 157.7 399.6 157.7 408.1 167C418.3 176.4 418.3 191.6 408.1 200.1L353.9 256L408.1 311C418.3 320.4 418.3 335.6 408.1 344.1C399.6 354.3 384.4 354.3 375 344.1L320 289.9L264.1 344.1C255.6 354.3 240.4 354.3 231 344.1C221.7 335.6 221.7 320.4 231 311L286.1 256L231 200.1C221.7 191.6 221.7 176.4 231 167C240.4 157.7 255.6 157.7 264.1 167L320 222.1zM455 167C464.4 157.7 479.6 157.7 488.1 167L544 222.1L599 167C608.4 157.7 623.6 157.7 632.1 167C642.3 176.4 642.3 191.6 632.1 200.1L577.9 256L632.1 311C642.3 320.4 642.3 335.6 632.1 344.1C623.6 354.3 608.4 354.3 599 344.1L544 289.9L488.1 344.1C479.6 354.3 464.4 354.3 455 344.1C445.7 335.6 445.7 320.4 455 311L510.1 256L455 200.1C445.7 191.6 445.7 176.4 455 167V167z"], + "y": [384, 512, [121], "59", "M378 82.61L224 298.3v149.8c0 17.67-14.31 31.1-32 31.1S160 465.7 160 448V298.3L5.969 82.61C-4.313 68.23-.9688 48.25 13.41 37.97c14.34-10.27 34.38-6.922 44.63 7.453L192 232.1l133.1-187.5c10.28-14.37 30.28-17.7 44.63-7.453C384.1 48.25 388.3 68.23 378 82.61z"], + "yen-sign": [320, 512, [165, "cny", "jpy", "rmb", "yen"], "f157", "M159.1 198.3L261.4 46.25C271.2 31.54 291 27.57 305.8 37.37C320.5 47.18 324.4 67.04 314.6 81.75L219.8 223.1H272C289.7 223.1 304 238.3 304 255.1C304 273.7 289.7 287.1 272 287.1H192V319.1H272C289.7 319.1 304 334.3 304 352C304 369.7 289.7 384 272 384H192V448C192 465.7 177.7 480 159.1 480C142.3 480 127.1 465.7 127.1 448V384H47.1C30.33 384 15.1 369.7 15.1 352C15.1 334.3 30.33 319.1 47.1 319.1H127.1V287.1H47.1C30.33 287.1 15.1 273.7 15.1 255.1C15.1 238.3 30.33 223.1 47.1 223.1H100.2L5.374 81.75C-4.429 67.04-.456 47.18 14.25 37.37C28.95 27.57 48.82 31.54 58.62 46.25L159.1 198.3z"], + "yin-yang": [512, 512, [9775], "f6ad", "M256 128C238.3 128 224 142.4 224 160S238.3 192 256 192s31.97-14.38 31.97-32S273.7 128 256 128zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 384c-17.68 0-31.97-14.38-31.97-32S238.3 320 256 320s31.97 14.38 31.97 32S273.7 384 256 384zM256 256c-53.04 0-96.03 43-96.03 96S202.1 448 256 448c-106.1 0-192.1-86-192.1-192S149.9 64 256 64c53.04 0 96.03 43 96.03 96S309 256 256 256z"], + "z": [384, 512, [122], "5a", "M384 448c0 17.67-14.31 32-32 32H32c-12.41 0-23.72-7.188-28.97-18.42c-5.281-11.25-3.562-24.53 4.375-34.06l276.3-331.5H32c-17.69 0-32-14.33-32-32s14.31-32 32-32h320c12.41 0 23.72 7.188 28.97 18.42c5.281 11.25 3.562 24.53-4.375 34.06L100.3 416H352C369.7 416 384 430.3 384 448z"] + }; + + bunker(function () { + defineIcons('fas', icons); + defineIcons('fa-solid', icons); + }); + +}()); +(function () { + 'use strict'; + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + function _wrapRegExp() { + _wrapRegExp = function (re, groups) { + return new BabelRegExp(re, void 0, groups); + }; + + var _super = RegExp.prototype, + _groups = new WeakMap(); + + function BabelRegExp(re, flags, groups) { + var _this = new RegExp(re, flags); + + return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype); + } + + function buildGroups(result, re) { + var g = _groups.get(re); + + return Object.keys(g).reduce(function (groups, name) { + return groups[name] = result[g[name]], groups; + }, Object.create(null)); + } + + return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) { + var result = _super.exec.call(this, str); + + return result && (result.groups = buildGroups(result, this)), result; + }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { + if ("string" == typeof substitution) { + var groups = _groups.get(this); + + return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { + return "$" + groups[name]; + })); + } + + if ("function" == typeof substitution) { + var _this = this; + + return _super[Symbol.replace].call(this, str, function () { + var args = arguments; + return "object" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args); + }); + } + + return _super[Symbol.replace].call(this, str, substitution); + }, _wrapRegExp.apply(this, arguments); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var noop = function noop() {}; + + var _WINDOW = {}; + var _DOCUMENT = {}; + var _MUTATION_OBSERVER = null; + var _PERFORMANCE = { + mark: noop, + measure: noop + }; + + try { + if (typeof window !== 'undefined') _WINDOW = window; + if (typeof document !== 'undefined') _DOCUMENT = document; + if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; + if (typeof performance !== 'undefined') _PERFORMANCE = performance; + } catch (e) {} + + var _ref = _WINDOW.navigator || {}, + _ref$userAgent = _ref.userAgent, + userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; + var WINDOW = _WINDOW; + var DOCUMENT = _DOCUMENT; + var MUTATION_OBSERVER = _MUTATION_OBSERVER; + var PERFORMANCE = _PERFORMANCE; + var IS_BROWSER = !!WINDOW.document; + var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; + var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); + + var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; + var UNITS_IN_GRID = 16; + var DEFAULT_FAMILY_PREFIX = 'fa'; + var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; + var DATA_FA_I2SVG = 'data-fa-i2svg'; + var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; + var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; + var DATA_PREFIX = 'data-prefix'; + var DATA_ICON = 'data-icon'; + var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; + var MUTATION_APPROACH_ASYNC = 'async'; + var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; + var PRODUCTION = function () { + try { + return "production" === 'production'; + } catch (e) { + return false; + } + }(); + var PREFIX_TO_STYLE = { + 'fas': 'solid', + 'fa-solid': 'solid', + 'far': 'regular', + 'fa-regular': 'regular', + 'fal': 'light', + 'fa-light': 'light', + 'fat': 'thin', + 'fa-thin': 'thin', + 'fad': 'duotone', + 'fa-duotone': 'duotone', + 'fab': 'brands', + 'fa-brands': 'brands', + 'fak': 'kit', + 'fa-kit': 'kit', + 'fa': 'solid' + }; + var STYLE_TO_PREFIX = { + 'solid': 'fas', + 'regular': 'far', + 'light': 'fal', + 'thin': 'fat', + 'duotone': 'fad', + 'brands': 'fab', + 'kit': 'fak' + }; + var PREFIX_TO_LONG_STYLE = { + 'fab': 'fa-brands', + 'fad': 'fa-duotone', + 'fak': 'fa-kit', + 'fal': 'fa-light', + 'far': 'fa-regular', + 'fas': 'fa-solid', + 'fat': 'fa-thin' + }; + var LONG_STYLE_TO_PREFIX = { + 'fa-brands': 'fab', + 'fa-duotone': 'fad', + 'fa-kit': 'fak', + 'fa-light': 'fal', + 'fa-regular': 'far', + 'fa-solid': 'fas', + 'fa-thin': 'fat' + }; + var ICON_SELECTION_SYNTAX_PATTERN = /fa[srltdbk]?[\-\ ]/; // eslint-disable-line no-useless-escape + + var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; + var FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? + + var FONT_WEIGHT_TO_PREFIX = { + '900': 'fas', + '400': 'far', + 'normal': 'far', + '300': 'fal', + '100': 'fat' + }; + var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); + var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; + var DUOTONE_CLASSES = { + GROUP: 'duotone-group', + SWAP_OPACITY: 'swap-opacity', + PRIMARY: 'primary', + SECONDARY: 'secondary' + }; + var RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) { + return "".concat(n, "x"); + })).concat(oneToTwenty.map(function (n) { + return "w-".concat(n); + })); + + var initial = WINDOW.FontAwesomeConfig || {}; + + function getAttrConfig(attr) { + var element = DOCUMENT.querySelector('script[' + attr + ']'); + + if (element) { + return element.getAttribute(attr); + } + } + + function coerce(val) { + // Getting an empty string will occur if the attribute is set on the HTML tag but without a value + // We'll assume that this is an indication that it should be toggled to true + if (val === '') return true; + if (val === 'false') return false; + if (val === 'true') return true; + return val; + } + + if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { + var attrs = [['data-family-prefix', 'familyPrefix'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; + attrs.forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + attr = _ref2[0], + key = _ref2[1]; + + var val = coerce(getAttrConfig(attr)); + + if (val !== undefined && val !== null) { + initial[key] = val; + } + }); + } + + var _default = { + familyPrefix: DEFAULT_FAMILY_PREFIX, + styleDefault: 'solid', + replacementClass: DEFAULT_REPLACEMENT_CLASS, + autoReplaceSvg: true, + autoAddCss: true, + autoA11y: true, + searchPseudoElements: false, + observeMutations: true, + mutateApproach: 'async', + keepOriginalSource: true, + measurePerformance: false, + showMissingIcons: true + }; + + var _config = _objectSpread2(_objectSpread2({}, _default), initial); + + if (!_config.autoReplaceSvg) _config.observeMutations = false; + var config = {}; + Object.keys(_config).forEach(function (key) { + Object.defineProperty(config, key, { + enumerable: true, + set: function set(val) { + _config[key] = val; + + _onChangeCb.forEach(function (cb) { + return cb(config); + }); + }, + get: function get() { + return _config[key]; + } + }); + }); + WINDOW.FontAwesomeConfig = config; + var _onChangeCb = []; + function onChange(cb) { + _onChangeCb.push(cb); + + return function () { + _onChangeCb.splice(_onChangeCb.indexOf(cb), 1); + }; + } + + var d = UNITS_IN_GRID; + var meaninglessTransform = { + size: 16, + x: 0, + y: 0, + rotate: 0, + flipX: false, + flipY: false + }; + function bunker(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + fn.apply(void 0, args); + } catch (e) { + if (!PRODUCTION) { + throw e; + } + } + } + function insertCss(css) { + if (!css || !IS_DOM) { + return; + } + + var style = DOCUMENT.createElement('style'); + style.setAttribute('type', 'text/css'); + style.innerHTML = css; + var headChildren = DOCUMENT.head.childNodes; + var beforeChild = null; + + for (var i = headChildren.length - 1; i > -1; i--) { + var child = headChildren[i]; + var tagName = (child.tagName || '').toUpperCase(); + + if (['STYLE', 'LINK'].indexOf(tagName) > -1) { + beforeChild = child; + } + } + + DOCUMENT.head.insertBefore(style, beforeChild); + return css; + } + var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + function nextUniqueId() { + var size = 12; + var id = ''; + + while (size-- > 0) { + id += idPool[Math.random() * 62 | 0]; + } + + return id; + } + function toArray(obj) { + var array = []; + + for (var i = (obj || []).length >>> 0; i--;) { + array[i] = obj[i]; + } + + return array; + } + function classArray(node) { + if (node.classList) { + return toArray(node.classList); + } else { + return (node.getAttribute('class') || '').split(' ').filter(function (i) { + return i; + }); + } + } + function htmlEscape(str) { + return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); + } + function joinAttributes(attributes) { + return Object.keys(attributes || {}).reduce(function (acc, attributeName) { + return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); + }, '').trim(); + } + function joinStyles(styles) { + return Object.keys(styles || {}).reduce(function (acc, styleName) { + return acc + "".concat(styleName, ": ").concat(styles[styleName].trim(), ";"); + }, ''); + } + function transformIsMeaningful(transform) { + return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; + } + function transformForSvg(_ref) { + var transform = _ref.transform, + containerWidth = _ref.containerWidth, + iconWidth = _ref.iconWidth; + var outer = { + transform: "translate(".concat(containerWidth / 2, " 256)") + }; + var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); + var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); + var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); + var inner = { + transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) + }; + var path = { + transform: "translate(".concat(iconWidth / 2 * -1, " -256)") + }; + return { + outer: outer, + inner: inner, + path: path + }; + } + function transformForCss(_ref2) { + var transform = _ref2.transform, + _ref2$width = _ref2.width, + width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, + _ref2$height = _ref2.height, + height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, + _ref2$startCentered = _ref2.startCentered, + startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; + var val = ''; + + if (startCentered && IS_IE) { + val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); + } else if (startCentered) { + val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); + } else { + val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); + } + + val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); + val += "rotate(".concat(transform.rotate, "deg) "); + return val; + } + + var baseStyles = ":host,:root{--fa-font-solid:normal 900 1em/1 \"Font Awesome 6 Solid\";--fa-font-regular:normal 400 1em/1 \"Font Awesome 6 Regular\";--fa-font-light:normal 300 1em/1 \"Font Awesome 6 Light\";--fa-font-thin:normal 100 1em/1 \"Font Awesome 6 Thin\";--fa-font-duotone:normal 900 1em/1 \"Font Awesome 6 Duotone\";--fa-font-brands:normal 400 1em/1 \"Font Awesome 6 Brands\"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}"; + + function css() { + var dfp = DEFAULT_FAMILY_PREFIX; + var drc = DEFAULT_REPLACEMENT_CLASS; + var fp = config.familyPrefix; + var rc = config.replacementClass; + var s = baseStyles; + + if (fp !== dfp || rc !== drc) { + var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); + var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); + var rPatt = new RegExp("\\.".concat(drc), 'g'); + s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); + } + + return s; + } + + var _cssInserted = false; + + function ensureCss() { + if (config.autoAddCss && !_cssInserted) { + insertCss(css()); + _cssInserted = true; + } + } + + var InjectCSS = { + mixout: function mixout() { + return { + dom: { + css: css, + insertCss: ensureCss + } + }; + }, + hooks: function hooks() { + return { + beforeDOMElementCreation: function beforeDOMElementCreation() { + ensureCss(); + }, + beforeI2svg: function beforeI2svg() { + ensureCss(); + } + }; + } + }; + + var w = WINDOW || {}; + if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; + if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; + if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; + if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; + var namespace = w[NAMESPACE_IDENTIFIER]; + + var functions = []; + + var listener = function listener() { + DOCUMENT.removeEventListener('DOMContentLoaded', listener); + loaded = 1; + functions.map(function (fn) { + return fn(); + }); + }; + + var loaded = false; + + if (IS_DOM) { + loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); + if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); + } + + function domready (fn) { + if (!IS_DOM) return; + loaded ? setTimeout(fn, 0) : functions.push(fn); + } + + function toHtml(abstractNodes) { + var tag = abstractNodes.tag, + _abstractNodes$attrib = abstractNodes.attributes, + attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, + _abstractNodes$childr = abstractNodes.children, + children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; + + if (typeof abstractNodes === 'string') { + return htmlEscape(abstractNodes); + } else { + return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); + } + } + + function iconFromMapping(mapping, prefix, iconName) { + if (mapping && mapping[prefix] && mapping[prefix][iconName]) { + return { + prefix: prefix, + iconName: iconName, + icon: mapping[prefix][iconName] + }; + } + } + + /** + * Internal helper to bind a function known to have 4 arguments + * to a given context. + */ + + var bindInternal4 = function bindInternal4(func, thisContext) { + return function (a, b, c, d) { + return func.call(thisContext, a, b, c, d); + }; + }; + + /** + * # Reduce + * + * A fast object `.reduce()` implementation. + * + * @param {Object} subject The object to reduce over. + * @param {Function} fn The reducer function. + * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. + * @param {Object} thisContext The context for the reducer. + * @return {mixed} The final result. + */ + + + var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { + var keys = Object.keys(subject), + length = keys.length, + iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, + i, + key, + result; + + if (initialValue === undefined) { + i = 1; + result = subject[keys[0]]; + } else { + i = 0; + result = initialValue; + } + + for (; i < length; i++) { + key = keys[i]; + result = iterator(result, subject[key], key, subject); + } + + return result; + }; + + /** + * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT + * + * Copyright Mathias Bynens + + * Permission 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: + + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + + * THE 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. + */ + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + + while (counter < length) { + var value = string.charCodeAt(counter++); + + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + var extra = string.charCodeAt(counter++); + + if ((extra & 0xFC00) == 0xDC00) { + // eslint-disable-line eqeqeq + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + + return output; + } + + function toHex(unicode) { + var decoded = ucs2decode(unicode); + return decoded.length === 1 ? decoded[0].toString(16) : null; + } + function codePointAt(string, index) { + var size = string.length; + var first = string.charCodeAt(index); + var second; + + if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) { + second = string.charCodeAt(index + 1); + + if (second >= 0xDC00 && second <= 0xDFFF) { + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + + return first; + } + + function normalizeIcons(icons) { + return Object.keys(icons).reduce(function (acc, iconName) { + var icon = icons[iconName]; + var expanded = !!icon.icon; + + if (expanded) { + acc[icon.iconName] = icon.icon; + } else { + acc[iconName] = icon; + } + + return acc; + }, {}); + } + + function defineIcons(prefix, icons) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var _params$skipHooks = params.skipHooks, + skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; + var normalized = normalizeIcons(icons); + + if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { + namespace.hooks.addPack(prefix, normalizeIcons(icons)); + } else { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); + } + /** + * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction + * of new styles we needed to differentiate between them. Prefix `fa` is now an alias + * for `fas` so we'll ease the upgrade process for our users by automatically defining + * this as well. + */ + + + if (prefix === 'fas') { + defineIcons('fa', icons); + } + } + + var duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d="((?:(?!")[\s\S])+)".*path d="((?:(?!")[\s\S])+)"/, { + d1: 1, + d2: 2 + }), /*#__PURE__*/_wrapRegExp(/path class="((?:(?!")[\s\S])+)".*d="((?:(?!")[\s\S])+)".*path class="((?:(?!")[\s\S])+)".*d="((?:(?!")[\s\S])+)"/, { + cls1: 1, + d1: 2, + cls2: 3, + d2: 4 + }), /*#__PURE__*/_wrapRegExp(/path class="((?:(?!")[\s\S])+)".*d="((?:(?!")[\s\S])+)"/, { + cls1: 1, + d1: 2 + })]; + + var styles = namespace.styles, + shims = namespace.shims; + var LONG_STYLE = Object.values(PREFIX_TO_LONG_STYLE); + var _defaultUsablePrefix = null; + var _byUnicode = {}; + var _byLigature = {}; + var _byOldName = {}; + var _byOldUnicode = {}; + var _byAlias = {}; + var PREFIXES = Object.keys(PREFIX_TO_STYLE); + + function isReserved(name) { + return ~RESERVED_CLASSES.indexOf(name); + } + + function getIconName(familyPrefix, cls) { + var parts = cls.split('-'); + var prefix = parts[0]; + var iconName = parts.slice(1).join('-'); + + if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { + return iconName; + } else { + return null; + } + } + var build = function build() { + var lookup = function lookup(reducer) { + return reduce(styles, function (o, style, prefix) { + o[prefix] = reduce(style, reducer, {}); + return o; + }, {}); + }; + + _byUnicode = lookup(function (acc, icon, iconName) { + if (icon[3]) { + acc[icon[3]] = iconName; + } + + if (icon[2]) { + var aliases = icon[2].filter(function (a) { + return typeof a === 'number'; + }); + aliases.forEach(function (alias) { + acc[alias.toString(16)] = iconName; + }); + } + + return acc; + }); + _byLigature = lookup(function (acc, icon, iconName) { + acc[iconName] = iconName; + + if (icon[2]) { + var aliases = icon[2].filter(function (a) { + return typeof a === 'string'; + }); + aliases.forEach(function (alias) { + acc[alias] = iconName; + }); + } + + return acc; + }); + _byAlias = lookup(function (acc, icon, iconName) { + var aliases = icon[2]; + acc[iconName] = iconName; + aliases.forEach(function (alias) { + acc[alias] = iconName; + }); + return acc; + }); // If we have a Kit, we can't determine if regular is available since we + // could be auto-fetching it. We'll have to assume that it is available. + + var hasRegular = 'far' in styles || config.autoFetchSvg; + var shimLookups = reduce(shims, function (acc, shim) { + var maybeNameMaybeUnicode = shim[0]; + var prefix = shim[1]; + var iconName = shim[2]; + + if (prefix === 'far' && !hasRegular) { + prefix = 'fas'; + } + + if (typeof maybeNameMaybeUnicode === 'string') { + acc.names[maybeNameMaybeUnicode] = { + prefix: prefix, + iconName: iconName + }; + } + + if (typeof maybeNameMaybeUnicode === 'number') { + acc.unicodes[maybeNameMaybeUnicode.toString(16)] = { + prefix: prefix, + iconName: iconName + }; + } + + return acc; + }, { + names: {}, + unicodes: {} + }); + _byOldName = shimLookups.names; + _byOldUnicode = shimLookups.unicodes; + _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault); + }; + onChange(function (c) { + _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault); + }); + build(); + function byUnicode(prefix, unicode) { + return (_byUnicode[prefix] || {})[unicode]; + } + function byLigature(prefix, ligature) { + return (_byLigature[prefix] || {})[ligature]; + } + function byAlias(prefix, alias) { + return (_byAlias[prefix] || {})[alias]; + } + function byOldName(name) { + return _byOldName[name] || { + prefix: null, + iconName: null + }; + } + function byOldUnicode(unicode) { + var oldUnicode = _byOldUnicode[unicode]; + var newUnicode = byUnicode('fas', unicode); + return oldUnicode || (newUnicode ? { + prefix: 'fas', + iconName: newUnicode + } : null) || { + prefix: null, + iconName: null + }; + } + function getDefaultUsablePrefix() { + return _defaultUsablePrefix; + } + var emptyCanonicalIcon = function emptyCanonicalIcon() { + return { + prefix: null, + iconName: null, + rest: [] + }; + }; + function getCanonicalPrefix(styleOrPrefix) { + var style = PREFIX_TO_STYLE[styleOrPrefix]; + var prefix = STYLE_TO_PREFIX[styleOrPrefix] || STYLE_TO_PREFIX[style]; + var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null; + return prefix || defined || null; + } + function getCanonicalIcon(values) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$skipLookups = params.skipLookups, + skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups; + var givenPrefix = null; + var canonical = values.reduce(function (acc, cls) { + var iconName = getIconName(config.familyPrefix, cls); + + if (styles[cls]) { + cls = LONG_STYLE.includes(cls) ? LONG_STYLE_TO_PREFIX[cls] : cls; + givenPrefix = cls; + acc.prefix = cls; + } else if (PREFIXES.indexOf(cls) > -1) { + givenPrefix = cls; + acc.prefix = getCanonicalPrefix(cls); + } else if (iconName) { + acc.iconName = iconName; + } else if (cls !== config.replacementClass) { + acc.rest.push(cls); + } + + if (!skipLookups && acc.prefix && acc.iconName) { + var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {}; + var aliasIconName = byAlias(acc.prefix, acc.iconName); + + if (shim.prefix) { + givenPrefix = null; + } + + acc.iconName = shim.iconName || aliasIconName || acc.iconName; + acc.prefix = shim.prefix || acc.prefix; + + if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) { + // Allow a fallback from the regular style to solid if regular is not available + // but only if we aren't auto-fetching SVGs + acc.prefix = 'fas'; + } + } + + return acc; + }, emptyCanonicalIcon()); + + if (canonical.prefix === 'fa' || givenPrefix === 'fa') { + // The fa prefix is not canonical. So if it has made it through until this point + // we will shift it to the correct prefix. + canonical.prefix = getDefaultUsablePrefix() || 'fas'; + } + + return canonical; + } + + var Library = /*#__PURE__*/function () { + function Library() { + _classCallCheck(this, Library); + + this.definitions = {}; + } + + _createClass(Library, [{ + key: "add", + value: function add() { + var _this = this; + + for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { + definitions[_key] = arguments[_key]; + } + + var additions = definitions.reduce(this._pullDefinitions, {}); + Object.keys(additions).forEach(function (key) { + _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); + defineIcons(key, additions[key]); + var longPrefix = PREFIX_TO_LONG_STYLE[key]; + if (longPrefix) defineIcons(longPrefix, additions[key]); + build(); + }); + } + }, { + key: "reset", + value: function reset() { + this.definitions = {}; + } + }, { + key: "_pullDefinitions", + value: function _pullDefinitions(additions, definition) { + var normalized = definition.prefix && definition.iconName && definition.icon ? { + 0: definition + } : definition; + Object.keys(normalized).map(function (key) { + var _normalized$key = normalized[key], + prefix = _normalized$key.prefix, + iconName = _normalized$key.iconName, + icon = _normalized$key.icon; + var aliases = icon[2]; + if (!additions[prefix]) additions[prefix] = {}; + + if (aliases.length > 0) { + aliases.forEach(function (alias) { + if (typeof alias === 'string') { + additions[prefix][alias] = icon; + } + }); + } + + additions[prefix][iconName] = icon; + }); + return additions; + } + }]); + + return Library; + }(); + + var _plugins = []; + var _hooks = {}; + var providers = {}; + var defaultProviderKeys = Object.keys(providers); + function registerPlugins(nextPlugins, _ref) { + var obj = _ref.mixoutsTo; + _plugins = nextPlugins; + _hooks = {}; + Object.keys(providers).forEach(function (k) { + if (defaultProviderKeys.indexOf(k) === -1) { + delete providers[k]; + } + }); + + _plugins.forEach(function (plugin) { + var mixout = plugin.mixout ? plugin.mixout() : {}; + Object.keys(mixout).forEach(function (tk) { + if (typeof mixout[tk] === 'function') { + obj[tk] = mixout[tk]; + } + + if (_typeof(mixout[tk]) === 'object') { + Object.keys(mixout[tk]).forEach(function (sk) { + if (!obj[tk]) { + obj[tk] = {}; + } + + obj[tk][sk] = mixout[tk][sk]; + }); + } + }); + + if (plugin.hooks) { + var hooks = plugin.hooks(); + Object.keys(hooks).forEach(function (hook) { + if (!_hooks[hook]) { + _hooks[hook] = []; + } + + _hooks[hook].push(hooks[hook]); + }); + } + + if (plugin.provides) { + plugin.provides(providers); + } + }); + + return obj; + } + function chainHooks(hook, accumulator) { + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + var hookFns = _hooks[hook] || []; + hookFns.forEach(function (hookFn) { + accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call + }); + return accumulator; + } + function callHooks(hook) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + var hookFns = _hooks[hook] || []; + hookFns.forEach(function (hookFn) { + hookFn.apply(null, args); + }); + return undefined; + } + function callProvided() { + var hook = arguments[0]; + var args = Array.prototype.slice.call(arguments, 1); + return providers[hook] ? providers[hook].apply(null, args) : undefined; + } + + function findIconDefinition(iconLookup) { + if (iconLookup.prefix === 'fa') { + iconLookup.prefix = 'fas'; + } + + var iconName = iconLookup.iconName; + var prefix = iconLookup.prefix || getDefaultUsablePrefix(); + if (!iconName) return; + iconName = byAlias(prefix, iconName) || iconName; + return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); + } + var library = new Library(); + var noAuto = function noAuto() { + config.autoReplaceSvg = false; + config.observeMutations = false; + callHooks('noAuto'); + }; + var dom = { + i2svg: function i2svg() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (IS_DOM) { + callHooks('beforeI2svg', params); + callProvided('pseudoElements2svg', params); + return callProvided('i2svg', params); + } else { + return Promise.reject('Operation requires a DOM of some kind.'); + } + }, + watch: function watch() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var autoReplaceSvgRoot = params.autoReplaceSvgRoot; + + if (config.autoReplaceSvg === false) { + config.autoReplaceSvg = true; + } + + config.observeMutations = true; + domready(function () { + autoReplace({ + autoReplaceSvgRoot: autoReplaceSvgRoot + }); + callHooks('watch', params); + }); + } + }; + var parse = { + icon: function icon(_icon) { + if (_icon === null) { + return null; + } + + if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) { + return { + prefix: _icon.prefix, + iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName + }; + } + + if (Array.isArray(_icon) && _icon.length === 2) { + var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1]; + var prefix = getCanonicalPrefix(_icon[0]); + return { + prefix: prefix, + iconName: byAlias(prefix, iconName) || iconName + }; + } + + if (typeof _icon === 'string' && (_icon.indexOf("".concat(config.familyPrefix, "-")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) { + var canonicalIcon = getCanonicalIcon(_icon.split(' '), { + skipLookups: true + }); + return { + prefix: canonicalIcon.prefix || getDefaultUsablePrefix(), + iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName + }; + } + + if (typeof _icon === 'string') { + var _prefix = getDefaultUsablePrefix(); + + return { + prefix: _prefix, + iconName: byAlias(_prefix, _icon) || _icon + }; + } + } + }; + var api = { + noAuto: noAuto, + config: config, + dom: dom, + parse: parse, + library: library, + findIconDefinition: findIconDefinition, + toHtml: toHtml + }; + + var autoReplace = function autoReplace() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _params$autoReplaceSv = params.autoReplaceSvgRoot, + autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; + if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ + node: autoReplaceSvgRoot + }); + }; + + function bootstrap(plugins) { + if (IS_BROWSER) { + if (!WINDOW.FontAwesome) { + WINDOW.FontAwesome = api; + } + + domready(function () { + autoReplace(); + callHooks('bootstrap'); + }); + } + + namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, { + addPack: function addPack(prefix, icons) { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); + build(); + autoReplace(); + }, + addPacks: function addPacks(packs) { + packs.forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + prefix = _ref2[0], + icons = _ref2[1]; + + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); + }); + build(); + autoReplace(); + }, + addShims: function addShims(shims) { + var _namespace$shims; + + (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims)); + + build(); + autoReplace(); + } + }); + } + + function domVariants(val, abstractCreator) { + Object.defineProperty(val, 'abstract', { + get: abstractCreator + }); + Object.defineProperty(val, 'html', { + get: function get() { + return val.abstract.map(function (a) { + return toHtml(a); + }); + } + }); + Object.defineProperty(val, 'node', { + get: function get() { + if (!IS_DOM) return; + var container = DOCUMENT.createElement('div'); + container.innerHTML = val.html; + return container.children; + } + }); + return val; + } + + function asIcon (_ref) { + var children = _ref.children, + main = _ref.main, + mask = _ref.mask, + attributes = _ref.attributes, + styles = _ref.styles, + transform = _ref.transform; + + if (transformIsMeaningful(transform) && main.found && !mask.found) { + var width = main.width, + height = main.height; + var offset = { + x: width / height / 2, + y: 0.5 + }; + attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { + 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") + })); + } + + return [{ + tag: 'svg', + attributes: attributes, + children: children + }]; + } + + function asSymbol (_ref) { + var prefix = _ref.prefix, + iconName = _ref.iconName, + children = _ref.children, + attributes = _ref.attributes, + symbol = _ref.symbol; + var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; + return [{ + tag: 'svg', + attributes: { + style: 'display: none;' + }, + children: [{ + tag: 'symbol', + attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { + id: id + }), + children: children + }] + }]; + } + + function makeInlineSvgAbstract(params) { + var _params$icons = params.icons, + main = _params$icons.main, + mask = _params$icons.mask, + prefix = params.prefix, + iconName = params.iconName, + transform = params.transform, + symbol = params.symbol, + title = params.title, + maskId = params.maskId, + titleId = params.titleId, + extra = params.extra, + _params$watchable = params.watchable, + watchable = _params$watchable === void 0 ? false : _params$watchable; + + var _ref = mask.found ? mask : main, + width = _ref.width, + height = _ref.height; + + var isUploadedIcon = prefix === 'fak'; + var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : ''].filter(function (c) { + return extra.classes.indexOf(c) === -1; + }).filter(function (c) { + return c !== '' || !!c; + }).concat(extra.classes).join(' '); + var content = { + children: [], + attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { + 'data-prefix': prefix, + 'data-icon': iconName, + 'class': attrClass, + 'role': extra.attributes.role || 'img', + 'xmlns': 'http://www.w3.org/2000/svg', + 'viewBox': "0 0 ".concat(width, " ").concat(height) + }) + }; + var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { + width: "".concat(width / height * 16 * 0.0625, "em") + } : {}; + + if (watchable) { + content.attributes[DATA_FA_I2SVG] = ''; + } + + if (title) { + content.children.push({ + tag: 'title', + attributes: { + id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) + }, + children: [title] + }); + delete content.attributes.title; + } + + var args = _objectSpread2(_objectSpread2({}, content), {}, { + prefix: prefix, + iconName: iconName, + main: main, + mask: mask, + maskId: maskId, + transform: transform, + symbol: symbol, + styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) + }); + + var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || { + children: [], + attributes: {} + } : callProvided('generateAbstractIcon', args) || { + children: [], + attributes: {} + }, + children = _ref2.children, + attributes = _ref2.attributes; + + args.children = children; + args.attributes = attributes; + + if (symbol) { + return asSymbol(args); + } else { + return asIcon(args); + } + } + function makeLayersTextAbstract(params) { + var content = params.content, + width = params.width, + height = params.height, + transform = params.transform, + title = params.title, + extra = params.extra, + _params$watchable2 = params.watchable, + watchable = _params$watchable2 === void 0 ? false : _params$watchable2; + + var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { + 'title': title + } : {}), {}, { + 'class': extra.classes.join(' ') + }); + + if (watchable) { + attributes[DATA_FA_I2SVG] = ''; + } + + var styles = _objectSpread2({}, extra.styles); + + if (transformIsMeaningful(transform)) { + styles['transform'] = transformForCss({ + transform: transform, + startCentered: true, + width: width, + height: height + }); + styles['-webkit-transform'] = styles['transform']; + } + + var styleString = joinStyles(styles); + + if (styleString.length > 0) { + attributes['style'] = styleString; + } + + var val = []; + val.push({ + tag: 'span', + attributes: attributes, + children: [content] + }); + + if (title) { + val.push({ + tag: 'span', + attributes: { + class: 'sr-only' + }, + children: [title] + }); + } + + return val; + } + function makeLayersCounterAbstract(params) { + var content = params.content, + title = params.title, + extra = params.extra; + + var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { + 'title': title + } : {}), {}, { + 'class': extra.classes.join(' ') + }); + + var styleString = joinStyles(extra.styles); + + if (styleString.length > 0) { + attributes['style'] = styleString; + } + + var val = []; + val.push({ + tag: 'span', + attributes: attributes, + children: [content] + }); + + if (title) { + val.push({ + tag: 'span', + attributes: { + class: 'sr-only' + }, + children: [title] + }); + } + + return val; + } + + var styles$1 = namespace.styles; + function asFoundIcon(icon) { + var width = icon[0]; + var height = icon[1]; + + var _icon$slice = icon.slice(4), + _icon$slice2 = _slicedToArray(_icon$slice, 1), + vectorData = _icon$slice2[0]; + + var element = null; + + if (Array.isArray(vectorData)) { + element = { + tag: 'g', + attributes: { + class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) + }, + children: [{ + tag: 'path', + attributes: { + class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), + fill: 'currentColor', + d: vectorData[0] + } + }, { + tag: 'path', + attributes: { + class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), + fill: 'currentColor', + d: vectorData[1] + } + }] + }; + } else { + element = { + tag: 'path', + attributes: { + fill: 'currentColor', + d: vectorData + } + }; + } + + return { + found: true, + width: width, + height: height, + icon: element + }; + } + var missingIconResolutionMixin = { + found: false, + width: 512, + height: 512 + }; + + function maybeNotifyMissing(iconName, prefix) { + if (!PRODUCTION && !config.showMissingIcons && iconName) { + console.error("Icon with name \"".concat(iconName, "\" and prefix \"").concat(prefix, "\" is missing.")); + } + } + + function findIcon(iconName, prefix) { + var givenPrefix = prefix; + + if (prefix === 'fa' && config.styleDefault !== null) { + prefix = getDefaultUsablePrefix(); + } + + return new Promise(function (resolve, reject) { + var val = { + found: false, + width: 512, + height: 512, + icon: callProvided('missingIconAbstract') || {} + }; + + if (givenPrefix === 'fa') { + var shim = byOldName(iconName) || {}; + iconName = shim.iconName || iconName; + prefix = shim.prefix || prefix; + } + + if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) { + var icon = styles$1[prefix][iconName]; + return resolve(asFoundIcon(icon)); + } + + maybeNotifyMissing(iconName, prefix); + resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, { + icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {} + })); + }); + } + + var noop$1 = function noop() {}; + + var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { + mark: noop$1, + measure: noop$1 + }; + var preamble = "FA \"6.1.2\""; + + var begin = function begin(name) { + p.mark("".concat(preamble, " ").concat(name, " begins")); + return function () { + return end(name); + }; + }; + + var end = function end(name) { + p.mark("".concat(preamble, " ").concat(name, " ends")); + p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); + }; + + var perf = { + begin: begin, + end: end + }; + + var noop$2 = function noop() {}; + + function isWatched(node) { + var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; + return typeof i2svg === 'string'; + } + + function hasPrefixAndIcon(node) { + var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null; + var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null; + return prefix && icon; + } + + function hasBeenReplaced(node) { + return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass); + } + + function getMutator() { + if (config.autoReplaceSvg === true) { + return mutators.replace; + } + + var mutator = mutators[config.autoReplaceSvg]; + return mutator || mutators.replace; + } + + function createElementNS(tag) { + return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag); + } + + function createElement(tag) { + return DOCUMENT.createElement(tag); + } + + function convertSVG(abstractObj) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$ceFn = params.ceFn, + ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn; + + if (typeof abstractObj === 'string') { + return DOCUMENT.createTextNode(abstractObj); + } + + var tag = ceFn(abstractObj.tag); + Object.keys(abstractObj.attributes || []).forEach(function (key) { + tag.setAttribute(key, abstractObj.attributes[key]); + }); + var children = abstractObj.children || []; + children.forEach(function (child) { + tag.appendChild(convertSVG(child, { + ceFn: ceFn + })); + }); + return tag; + } + + function nodeAsComment(node) { + var comment = " ".concat(node.outerHTML, " "); + /* BEGIN.ATTRIBUTION */ + + comment = "".concat(comment, "Font Awesome fontawesome.com "); + /* END.ATTRIBUTION */ + + return comment; + } + + var mutators = { + replace: function replace(mutation) { + var node = mutation[0]; + + if (node.parentNode) { + mutation[1].forEach(function (abstract) { + node.parentNode.insertBefore(convertSVG(abstract), node); + }); + + if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) { + var comment = DOCUMENT.createComment(nodeAsComment(node)); + node.parentNode.replaceChild(comment, node); + } else { + node.remove(); + } + } + }, + nest: function nest(mutation) { + var node = mutation[0]; + var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. + // Short-circuit to the standard replacement + + if (~classArray(node).indexOf(config.replacementClass)) { + return mutators.replace(mutation); + } + + var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); + delete abstract[0].attributes.id; + + if (abstract[0].attributes.class) { + var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { + if (cls === config.replacementClass || cls.match(forSvg)) { + acc.toSvg.push(cls); + } else { + acc.toNode.push(cls); + } + + return acc; + }, { + toNode: [], + toSvg: [] + }); + abstract[0].attributes.class = splitClasses.toSvg.join(' '); + + if (splitClasses.toNode.length === 0) { + node.removeAttribute('class'); + } else { + node.setAttribute('class', splitClasses.toNode.join(' ')); + } + } + + var newInnerHTML = abstract.map(function (a) { + return toHtml(a); + }).join('\n'); + node.setAttribute(DATA_FA_I2SVG, ''); + node.innerHTML = newInnerHTML; + } + }; + + function performOperationSync(op) { + op(); + } + + function perform(mutations, callback) { + var callbackFunction = typeof callback === 'function' ? callback : noop$2; + + if (mutations.length === 0) { + callbackFunction(); + } else { + var frame = performOperationSync; + + if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { + frame = WINDOW.requestAnimationFrame || performOperationSync; + } + + frame(function () { + var mutator = getMutator(); + var mark = perf.begin('mutate'); + mutations.map(mutator); + mark(); + callbackFunction(); + }); + } + } + var disabled = false; + function disableObservation() { + disabled = true; + } + function enableObservation() { + disabled = false; + } + var mo = null; + function observe(options) { + if (!MUTATION_OBSERVER) { + return; + } + + if (!config.observeMutations) { + return; + } + + var _options$treeCallback = options.treeCallback, + treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback, + _options$nodeCallback = options.nodeCallback, + nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback, + _options$pseudoElemen = options.pseudoElementsCallback, + pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen, + _options$observeMutat = options.observeMutationsRoot, + observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; + mo = new MUTATION_OBSERVER(function (objects) { + if (disabled) return; + var defaultPrefix = getDefaultUsablePrefix(); + toArray(objects).forEach(function (mutationRecord) { + if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { + if (config.searchPseudoElements) { + pseudoElementsCallback(mutationRecord.target); + } + + treeCallback(mutationRecord.target); + } + + if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { + pseudoElementsCallback(mutationRecord.target.parentNode); + } + + if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { + if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) { + var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), + prefix = _getCanonicalIcon.prefix, + iconName = _getCanonicalIcon.iconName; + + mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix); + if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName); + } else if (hasBeenReplaced(mutationRecord.target)) { + nodeCallback(mutationRecord.target); + } + } + }); + }); + if (!IS_DOM) return; + mo.observe(observeMutationsRoot, { + childList: true, + attributes: true, + characterData: true, + subtree: true + }); + } + function disconnect() { + if (!mo) return; + mo.disconnect(); + } + + function styleParser (node) { + var style = node.getAttribute('style'); + var val = []; + + if (style) { + val = style.split(';').reduce(function (acc, style) { + var styles = style.split(':'); + var prop = styles[0]; + var value = styles.slice(1); + + if (prop && value.length > 0) { + acc[prop] = value.join(':').trim(); + } + + return acc; + }, {}); + } + + return val; + } + + function classParser (node) { + var existingPrefix = node.getAttribute('data-prefix'); + var existingIconName = node.getAttribute('data-icon'); + var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; + var val = getCanonicalIcon(classArray(node)); + + if (!val.prefix) { + val.prefix = getDefaultUsablePrefix(); + } + + if (existingPrefix && existingIconName) { + val.prefix = existingPrefix; + val.iconName = existingIconName; + } + + if (val.iconName && val.prefix) { + return val; + } + + if (val.prefix && innerText.length > 0) { + val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText)); + } + + if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) { + val.iconName = node.firstChild.data; + } + + return val; + } + + function attributesParser (node) { + var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { + if (acc.name !== 'class' && acc.name !== 'style') { + acc[attr.name] = attr.value; + } + + return acc; + }, {}); + var title = node.getAttribute('title'); + var titleId = node.getAttribute('data-fa-title-id'); + + if (config.autoA11y) { + if (title) { + extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); + } else { + extraAttributes['aria-hidden'] = 'true'; + extraAttributes['focusable'] = 'false'; + } + } + + return extraAttributes; + } + + function blankMeta() { + return { + iconName: null, + title: null, + titleId: null, + prefix: null, + transform: meaninglessTransform, + symbol: false, + mask: { + iconName: null, + prefix: null, + rest: [] + }, + maskId: null, + extra: { + classes: [], + styles: {}, + attributes: {} + } + }; + } + function parseMeta(node) { + var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + styleParser: true + }; + + var _classParser = classParser(node), + iconName = _classParser.iconName, + prefix = _classParser.prefix, + extraClasses = _classParser.rest; + + var extraAttributes = attributesParser(node); + var pluginMeta = chainHooks('parseNodeAttributes', {}, node); + var extraStyles = parser.styleParser ? styleParser(node) : []; + return _objectSpread2({ + iconName: iconName, + title: node.getAttribute('title'), + titleId: node.getAttribute('data-fa-title-id'), + prefix: prefix, + transform: meaninglessTransform, + mask: { + iconName: null, + prefix: null, + rest: [] + }, + maskId: null, + symbol: false, + extra: { + classes: extraClasses, + styles: extraStyles, + attributes: extraAttributes + } + }, pluginMeta); + } + + var styles$2 = namespace.styles; + + function generateMutation(node) { + var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, { + styleParser: false + }) : parseMeta(node); + + if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { + return callProvided('generateLayersText', node, nodeMeta); + } else { + return callProvided('generateSvgReplacementMutation', node, nodeMeta); + } + } + + function onTree(root) { + var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + if (!IS_DOM) return Promise.resolve(); + var htmlClassList = DOCUMENT.documentElement.classList; + + var hclAdd = function hclAdd(suffix) { + return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); + }; + + var hclRemove = function hclRemove(suffix) { + return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); + }; + + var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$2); + + if (!prefixes.includes('fa')) { + prefixes.push('fa'); + } + + var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { + return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); + })).join(', '); + + if (prefixesDomQuery.length === 0) { + return Promise.resolve(); + } + + var candidates = []; + + try { + candidates = toArray(root.querySelectorAll(prefixesDomQuery)); + } catch (e) {// noop + } + + if (candidates.length > 0) { + hclAdd('pending'); + hclRemove('complete'); + } else { + return Promise.resolve(); + } + + var mark = perf.begin('onTree'); + var mutations = candidates.reduce(function (acc, node) { + try { + var mutation = generateMutation(node); + + if (mutation) { + acc.push(mutation); + } + } catch (e) { + if (!PRODUCTION) { + if (e.name === 'MissingIcon') { + console.error(e); + } + } + } + + return acc; + }, []); + return new Promise(function (resolve, reject) { + Promise.all(mutations).then(function (resolvedMutations) { + perform(resolvedMutations, function () { + hclAdd('active'); + hclAdd('complete'); + hclRemove('pending'); + if (typeof callback === 'function') callback(); + mark(); + resolve(); + }); + }).catch(function (e) { + mark(); + reject(e); + }); + }); + } + + function onNode(node) { + var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + generateMutation(node).then(function (mutation) { + if (mutation) { + perform([mutation], callback); + } + }); + } + + function resolveIcons(next) { + return function (maybeIconDefinition) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); + var mask = params.mask; + + if (mask) { + mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); + } + + return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { + mask: mask + })); + }; + } + + var render = function render(iconDefinition) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$transform = params.transform, + transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, + _params$symbol = params.symbol, + symbol = _params$symbol === void 0 ? false : _params$symbol, + _params$mask = params.mask, + mask = _params$mask === void 0 ? null : _params$mask, + _params$maskId = params.maskId, + maskId = _params$maskId === void 0 ? null : _params$maskId, + _params$title = params.title, + title = _params$title === void 0 ? null : _params$title, + _params$titleId = params.titleId, + titleId = _params$titleId === void 0 ? null : _params$titleId, + _params$classes = params.classes, + classes = _params$classes === void 0 ? [] : _params$classes, + _params$attributes = params.attributes, + attributes = _params$attributes === void 0 ? {} : _params$attributes, + _params$styles = params.styles, + styles = _params$styles === void 0 ? {} : _params$styles; + if (!iconDefinition) return; + var prefix = iconDefinition.prefix, + iconName = iconDefinition.iconName, + icon = iconDefinition.icon; + return domVariants(_objectSpread2({ + type: 'icon' + }, iconDefinition), function () { + callHooks('beforeDOMElementCreation', { + iconDefinition: iconDefinition, + params: params + }); + + if (config.autoA11y) { + if (title) { + attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); + } else { + attributes['aria-hidden'] = 'true'; + attributes['focusable'] = 'false'; + } + } + + return makeInlineSvgAbstract({ + icons: { + main: asFoundIcon(icon), + mask: mask ? asFoundIcon(mask.icon) : { + found: false, + width: null, + height: null, + icon: {} + } + }, + prefix: prefix, + iconName: iconName, + transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), + symbol: symbol, + title: title, + maskId: maskId, + titleId: titleId, + extra: { + attributes: attributes, + styles: styles, + classes: classes + } + }); + }); + }; + var ReplaceElements = { + mixout: function mixout() { + return { + icon: resolveIcons(render) + }; + }, + hooks: function hooks() { + return { + mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) { + accumulator.treeCallback = onTree; + accumulator.nodeCallback = onNode; + return accumulator; + } + }; + }, + provides: function provides(providers$$1) { + providers$$1.i2svg = function (params) { + var _params$node = params.node, + node = _params$node === void 0 ? DOCUMENT : _params$node, + _params$callback = params.callback, + callback = _params$callback === void 0 ? function () {} : _params$callback; + return onTree(node, callback); + }; + + providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) { + var iconName = nodeMeta.iconName, + title = nodeMeta.title, + titleId = nodeMeta.titleId, + prefix = nodeMeta.prefix, + transform = nodeMeta.transform, + symbol = nodeMeta.symbol, + mask = nodeMeta.mask, + maskId = nodeMeta.maskId, + extra = nodeMeta.extra; + return new Promise(function (resolve, reject) { + Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({ + found: false, + width: 512, + height: 512, + icon: {} + })]).then(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + main = _ref2[0], + mask = _ref2[1]; + + resolve([node, makeInlineSvgAbstract({ + icons: { + main: main, + mask: mask + }, + prefix: prefix, + iconName: iconName, + transform: transform, + symbol: symbol, + maskId: maskId, + title: title, + titleId: titleId, + extra: extra, + watchable: true + })]); + }).catch(reject); + }); + }; + + providers$$1.generateAbstractIcon = function (_ref3) { + var children = _ref3.children, + attributes = _ref3.attributes, + main = _ref3.main, + transform = _ref3.transform, + styles = _ref3.styles; + var styleString = joinStyles(styles); + + if (styleString.length > 0) { + attributes['style'] = styleString; + } + + var nextChild; + + if (transformIsMeaningful(transform)) { + nextChild = callProvided('generateAbstractTransformGrouping', { + main: main, + transform: transform, + containerWidth: main.width, + iconWidth: main.width + }); + } + + children.push(nextChild || main.icon); + return { + children: children, + attributes: attributes + }; + }; + } + }; + + var Layers = { + mixout: function mixout() { + return { + layer: function layer(assembler) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$classes = params.classes, + classes = _params$classes === void 0 ? [] : _params$classes; + return domVariants({ + type: 'layer' + }, function () { + callHooks('beforeDOMElementCreation', { + assembler: assembler, + params: params + }); + var children = []; + assembler(function (args) { + Array.isArray(args) ? args.map(function (a) { + children = children.concat(a.abstract); + }) : children = children.concat(args.abstract); + }); + return [{ + tag: 'span', + attributes: { + class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') + }, + children: children + }]; + }); + } + }; + } + }; + + var LayersCounter = { + mixout: function mixout() { + return { + counter: function counter(content) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$title = params.title, + title = _params$title === void 0 ? null : _params$title, + _params$classes = params.classes, + classes = _params$classes === void 0 ? [] : _params$classes, + _params$attributes = params.attributes, + attributes = _params$attributes === void 0 ? {} : _params$attributes, + _params$styles = params.styles, + styles = _params$styles === void 0 ? {} : _params$styles; + return domVariants({ + type: 'counter', + content: content + }, function () { + callHooks('beforeDOMElementCreation', { + content: content, + params: params + }); + return makeLayersCounterAbstract({ + content: content.toString(), + title: title, + extra: { + attributes: attributes, + styles: styles, + classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) + } + }); + }); + } + }; + } + }; + + var LayersText = { + mixout: function mixout() { + return { + text: function text(content) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var _params$transform = params.transform, + transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, + _params$title = params.title, + title = _params$title === void 0 ? null : _params$title, + _params$classes = params.classes, + classes = _params$classes === void 0 ? [] : _params$classes, + _params$attributes = params.attributes, + attributes = _params$attributes === void 0 ? {} : _params$attributes, + _params$styles = params.styles, + styles = _params$styles === void 0 ? {} : _params$styles; + return domVariants({ + type: 'text', + content: content + }, function () { + callHooks('beforeDOMElementCreation', { + content: content, + params: params + }); + return makeLayersTextAbstract({ + content: content, + transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), + title: title, + extra: { + attributes: attributes, + styles: styles, + classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) + } + }); + }); + } + }; + }, + provides: function provides(providers$$1) { + providers$$1.generateLayersText = function (node, nodeMeta) { + var title = nodeMeta.title, + transform = nodeMeta.transform, + extra = nodeMeta.extra; + var width = null; + var height = null; + + if (IS_IE) { + var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); + var boundingClientRect = node.getBoundingClientRect(); + width = boundingClientRect.width / computedFontSize; + height = boundingClientRect.height / computedFontSize; + } + + if (config.autoA11y && !title) { + extra.attributes['aria-hidden'] = 'true'; + } + + return Promise.resolve([node, makeLayersTextAbstract({ + content: node.innerHTML, + width: width, + height: height, + transform: transform, + title: title, + extra: extra, + watchable: true + })]); + }; + } + }; + + var CLEAN_CONTENT_PATTERN = new RegExp("\"", 'ug'); + var SECONDARY_UNICODE_RANGE = [1105920, 1112319]; + function hexValueFromContent(content) { + var cleaned = content.replace(CLEAN_CONTENT_PATTERN, ''); + var codePoint = codePointAt(cleaned, 0); + var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1]; + var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false; + return { + value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned), + isSecondary: isPrependTen || isDoubled + }; + } + + function replaceForPosition(node, position) { + var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); + return new Promise(function (resolve, reject) { + if (node.getAttribute(pendingAttribute) !== null) { + // This node is already being processed + return resolve(); + } + + var children = toArray(node.children); + var alreadyProcessedPseudoElement = children.filter(function (c) { + return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; + })[0]; + var styles = WINDOW.getComputedStyle(node, position); + var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); + var fontWeight = styles.getPropertyValue('font-weight'); + var content = styles.getPropertyValue('content'); + + if (alreadyProcessedPseudoElement && !fontFamily) { + // If we've already processed it but the current computed style does not result in a font-family, + // that probably means that a class name that was previously present to make the icon has been + // removed. So we now should delete the icon. + node.removeChild(alreadyProcessedPseudoElement); + return resolve(); + } else if (fontFamily && content !== 'none' && content !== '') { + var _content = styles.getPropertyValue('content'); + + var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; + + var _hexValueFromContent = hexValueFromContent(_content), + hexValue = _hexValueFromContent.value, + isSecondary = _hexValueFromContent.isSecondary; + + var isV4 = fontFamily[0].startsWith('FontAwesome'); + var iconName = byUnicode(prefix, hexValue); + var iconIdentifier = iconName; + + if (isV4) { + var iconName4 = byOldUnicode(hexValue); + + if (iconName4.iconName && iconName4.prefix) { + iconName = iconName4.iconName; + prefix = iconName4.prefix; + } + } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't + // already done so with the same prefix and iconName + + + if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { + node.setAttribute(pendingAttribute, iconIdentifier); + + if (alreadyProcessedPseudoElement) { + // Delete the old one, since we're replacing it with a new one + node.removeChild(alreadyProcessedPseudoElement); + } + + var meta = blankMeta(); + var extra = meta.extra; + extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; + findIcon(iconName, prefix).then(function (main) { + var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { + icons: { + main: main, + mask: emptyCanonicalIcon() + }, + prefix: prefix, + iconName: iconIdentifier, + extra: extra, + watchable: true + })); + var element = DOCUMENT.createElement('svg'); + + if (position === '::before') { + node.insertBefore(element, node.firstChild); + } else { + node.appendChild(element); + } + + element.outerHTML = abstract.map(function (a) { + return toHtml(a); + }).join('\n'); + node.removeAttribute(pendingAttribute); + resolve(); + }).catch(reject); + } else { + resolve(); + } + } else { + resolve(); + } + }); + } + + function replace(node) { + return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]); + } + + function processable(node) { + return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); + } + + function searchPseudoElements(root) { + if (!IS_DOM) return; + return new Promise(function (resolve, reject) { + var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); + var end = perf.begin('searchPseudoElements'); + disableObservation(); + Promise.all(operations).then(function () { + end(); + enableObservation(); + resolve(); + }).catch(function () { + end(); + enableObservation(); + reject(); + }); + }); + } + + var PseudoElements = { + hooks: function hooks() { + return { + mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) { + accumulator.pseudoElementsCallback = searchPseudoElements; + return accumulator; + } + }; + }, + provides: function provides(providers$$1) { + providers$$1.pseudoElements2svg = function (params) { + var _params$node = params.node, + node = _params$node === void 0 ? DOCUMENT : _params$node; + + if (config.searchPseudoElements) { + searchPseudoElements(node); + } + }; + } + }; + + var _unwatched = false; + var MutationObserver$1 = { + mixout: function mixout() { + return { + dom: { + unwatch: function unwatch() { + disableObservation(); + _unwatched = true; + } + } + }; + }, + hooks: function hooks() { + return { + bootstrap: function bootstrap() { + observe(chainHooks('mutationObserverCallbacks', {})); + }, + noAuto: function noAuto() { + disconnect(); + }, + watch: function watch(params) { + var observeMutationsRoot = params.observeMutationsRoot; + + if (_unwatched) { + enableObservation(); + } else { + observe(chainHooks('mutationObserverCallbacks', { + observeMutationsRoot: observeMutationsRoot + })); + } + } + }; + } + }; + + var parseTransformString = function parseTransformString(transformString) { + var transform = { + size: 16, + x: 0, + y: 0, + flipX: false, + flipY: false, + rotate: 0 + }; + return transformString.toLowerCase().split(' ').reduce(function (acc, n) { + var parts = n.toLowerCase().split('-'); + var first = parts[0]; + var rest = parts.slice(1).join('-'); + + if (first && rest === 'h') { + acc.flipX = true; + return acc; + } + + if (first && rest === 'v') { + acc.flipY = true; + return acc; + } + + rest = parseFloat(rest); + + if (isNaN(rest)) { + return acc; + } + + switch (first) { + case 'grow': + acc.size = acc.size + rest; + break; + + case 'shrink': + acc.size = acc.size - rest; + break; + + case 'left': + acc.x = acc.x - rest; + break; + + case 'right': + acc.x = acc.x + rest; + break; + + case 'up': + acc.y = acc.y - rest; + break; + + case 'down': + acc.y = acc.y + rest; + break; + + case 'rotate': + acc.rotate = acc.rotate + rest; + break; + } + + return acc; + }, transform); + }; + var PowerTransforms = { + mixout: function mixout() { + return { + parse: { + transform: function transform(transformString) { + return parseTransformString(transformString); + } + } + }; + }, + hooks: function hooks() { + return { + parseNodeAttributes: function parseNodeAttributes(accumulator, node) { + var transformString = node.getAttribute('data-fa-transform'); + + if (transformString) { + accumulator.transform = parseTransformString(transformString); + } + + return accumulator; + } + }; + }, + provides: function provides(providers) { + providers.generateAbstractTransformGrouping = function (_ref) { + var main = _ref.main, + transform = _ref.transform, + containerWidth = _ref.containerWidth, + iconWidth = _ref.iconWidth; + var outer = { + transform: "translate(".concat(containerWidth / 2, " 256)") + }; + var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); + var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); + var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); + var inner = { + transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) + }; + var path = { + transform: "translate(".concat(iconWidth / 2 * -1, " -256)") + }; + var operations = { + outer: outer, + inner: inner, + path: path + }; + return { + tag: 'g', + attributes: _objectSpread2({}, operations.outer), + children: [{ + tag: 'g', + attributes: _objectSpread2({}, operations.inner), + children: [{ + tag: main.icon.tag, + children: main.icon.children, + attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path) + }] + }] + }; + }; + } + }; + + var ALL_SPACE = { + x: 0, + y: 0, + width: '100%', + height: '100%' + }; + + function fillBlack(abstract) { + var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (abstract.attributes && (abstract.attributes.fill || force)) { + abstract.attributes.fill = 'black'; + } + + return abstract; + } + + function deGroup(abstract) { + if (abstract.tag === 'g') { + return abstract.children; + } else { + return [abstract]; + } + } + + var Masks = { + hooks: function hooks() { + return { + parseNodeAttributes: function parseNodeAttributes(accumulator, node) { + var maskData = node.getAttribute('data-fa-mask'); + var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) { + return i.trim(); + })); + + if (!mask.prefix) { + mask.prefix = getDefaultUsablePrefix(); + } + + accumulator.mask = mask; + accumulator.maskId = node.getAttribute('data-fa-mask-id'); + return accumulator; + } + }; + }, + provides: function provides(providers) { + providers.generateAbstractMask = function (_ref) { + var children = _ref.children, + attributes = _ref.attributes, + main = _ref.main, + mask = _ref.mask, + explicitMaskId = _ref.maskId, + transform = _ref.transform; + var mainWidth = main.width, + mainPath = main.icon; + var maskWidth = mask.width, + maskPath = mask.icon; + var trans = transformForSvg({ + transform: transform, + containerWidth: maskWidth, + iconWidth: mainWidth + }); + var maskRect = { + tag: 'rect', + attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { + fill: 'white' + }) + }; + var maskInnerGroupChildrenMixin = mainPath.children ? { + children: mainPath.children.map(fillBlack) + } : {}; + var maskInnerGroup = { + tag: 'g', + attributes: _objectSpread2({}, trans.inner), + children: [fillBlack(_objectSpread2({ + tag: mainPath.tag, + attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) + }, maskInnerGroupChildrenMixin))] + }; + var maskOuterGroup = { + tag: 'g', + attributes: _objectSpread2({}, trans.outer), + children: [maskInnerGroup] + }; + var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); + var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); + var maskTag = { + tag: 'mask', + attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { + id: maskId, + maskUnits: 'userSpaceOnUse', + maskContentUnits: 'userSpaceOnUse' + }), + children: [maskRect, maskOuterGroup] + }; + var defs = { + tag: 'defs', + children: [{ + tag: 'clipPath', + attributes: { + id: clipId + }, + children: deGroup(maskPath) + }, maskTag] + }; + children.push(defs, { + tag: 'rect', + attributes: _objectSpread2({ + fill: 'currentColor', + 'clip-path': "url(#".concat(clipId, ")"), + mask: "url(#".concat(maskId, ")") + }, ALL_SPACE) + }); + return { + children: children, + attributes: attributes + }; + }; + } + }; + + var MissingIconIndicator = { + provides: function provides(providers) { + var reduceMotion = false; + + if (WINDOW.matchMedia) { + reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches; + } + + providers.missingIconAbstract = function () { + var gChildren = []; + var FILL = { + fill: 'currentColor' + }; + var ANIMATION_BASE = { + attributeType: 'XML', + repeatCount: 'indefinite', + dur: '2s' + }; // Ring + + gChildren.push({ + tag: 'path', + attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { + d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' + }) + }); + + var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { + attributeName: 'opacity' + }); + + var dot = { + tag: 'circle', + attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { + cx: '256', + cy: '364', + r: '28' + }), + children: [] + }; + + if (!reduceMotion) { + dot.children.push({ + tag: 'animate', + attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { + attributeName: 'r', + values: '28;14;28;28;14;28;' + }) + }, { + tag: 'animate', + attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { + values: '1;0;1;1;0;1;' + }) + }); + } + + gChildren.push(dot); + gChildren.push({ + tag: 'path', + attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { + opacity: '1', + d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' + }), + children: reduceMotion ? [] : [{ + tag: 'animate', + attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { + values: '1;0;0;0;0;1;' + }) + }] + }); + + if (!reduceMotion) { + // Exclamation + gChildren.push({ + tag: 'path', + attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { + opacity: '0', + d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' + }), + children: [{ + tag: 'animate', + attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { + values: '0;0;1;1;0;0;' + }) + }] + }); + } + + return { + tag: 'g', + attributes: { + 'class': 'missing' + }, + children: gChildren + }; + }; + } + }; + + var SvgSymbols = { + hooks: function hooks() { + return { + parseNodeAttributes: function parseNodeAttributes(accumulator, node) { + var symbolData = node.getAttribute('data-fa-symbol'); + var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData; + accumulator['symbol'] = symbol; + return accumulator; + } + }; + } + }; + + var plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols]; + + registerPlugins(plugins, { + mixoutsTo: api + }); + bunker(bootstrap); + +}()); diff --git a/public/css/fonts/js/all.min.js b/public/css/fonts/js/all.min.js new file mode 100644 index 0000000..5997889 --- /dev/null +++ b/public/css/fonts/js/all.min.js @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +!function(){"use strict";var C={},c={};try{"undefined"!=typeof window&&(C=window),"undefined"!=typeof document&&(c=document)}catch(C){}var z=(C.navigator||{}).userAgent,l=void 0===z?"":z,e=C,a=c;e.document,a.documentElement&&a.head&&"function"==typeof a.addEventListener&&a.createElement,~l.indexOf("MSIE")||l.indexOf("Trident/");function M(c,C){var z,l=Object.keys(c);return Object.getOwnPropertySymbols&&(z=Object.getOwnPropertySymbols(c),C&&(z=z.filter(function(C){return Object.getOwnPropertyDescriptor(c,C).enumerable})),l.push.apply(l,z)),l}function L(l){for(var C=1;CC.length)&&(c=C.length);for(var z=0,l=new Array(c);zC.length)&&(c=C.length);for(var z=0,l=new Array(c);zC.length)&&(c=C.length);for(var z=0,l=new Array(c);zC.length)&&(c=C.length);for(var z=0,l=new Array(c);z>>0;z--;)c[z]=C[z];return c}function J(C){return C.classList?$(C.classList):(C.getAttribute("class")||"").split(" ").filter(function(C){return C})}function Z(C){return"".concat(C).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function C1(z){return Object.keys(z||{}).reduce(function(C,c){return C+"".concat(c,": ").concat(z[c].trim(),";")},"")}function c1(C){return C.size!==Q.size||C.x!==Q.x||C.y!==Q.y||C.rotate!==Q.rotate||C.flipX||C.flipY}function z1(){var C,c,z=p,l=U.familyPrefix,e=U.replacementClass,a=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return"fa"===l&&e===z||(C=new RegExp("\\.".concat("fa","\\-"),"g"),c=new RegExp("\\--".concat("fa","\\-"),"g"),z=new RegExp("\\.".concat(z),"g"),a=a.replace(C,".".concat(l,"-")).replace(c,"--".concat(l,"-")).replace(z,".".concat(e))),a}var l1=!1;function e1(){U.autoAddCss&&!l1&&(function(C){if(C&&o){var c=v.createElement("style");c.setAttribute("type","text/css"),c.innerHTML=C;for(var z=v.head.childNodes,l=null,e=z.length-1;-1").concat(l.map(t1).join(""),"")}function r1(C,c,z){if(C&&C[c]&&C[c][z])return{prefix:c,iconName:z,icon:C[c][z]}}o&&((V1=(v.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(v.readyState))||v.addEventListener("DOMContentLoaded",a1));function s1(C,c,z,l){for(var e,a,M=Object.keys(C),L=M.length,V=void 0!==l?h1(c,l):c,H=void 0===z?(e=1,C[M[0]]):(e=0,z);e arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; + var PRODUCTION = function () { + try { + return "production" === 'production'; + } catch (e) { + return false; + } + }(); + var STYLE_TO_PREFIX = { + 'solid': 'fas', + 'regular': 'far', + 'light': 'fal', + 'thin': 'fat', + 'duotone': 'fad', + 'brands': 'fab', + 'kit': 'fak' + }; + var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); + var DUOTONE_CLASSES = { + GROUP: 'duotone-group', + SWAP_OPACITY: 'swap-opacity', + PRIMARY: 'primary', + SECONDARY: 'secondary' + }; + var RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) { + return "".concat(n, "x"); + })).concat(oneToTwenty.map(function (n) { + return "w-".concat(n); + })); + + function bunker(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + fn.apply(void 0, args); + } catch (e) { + if (!PRODUCTION) { + throw e; + } + } + } + + var w = WINDOW || {}; + if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; + if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; + if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; + if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; + var namespace = w[NAMESPACE_IDENTIFIER]; + + function normalizeIcons(icons) { + return Object.keys(icons).reduce(function (acc, iconName) { + var icon = icons[iconName]; + var expanded = !!icon.icon; + + if (expanded) { + acc[icon.iconName] = icon.icon; + } else { + acc[iconName] = icon; + } + + return acc; + }, {}); + } + + function defineIcons(prefix, icons) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var _params$skipHooks = params.skipHooks, + skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; + var normalized = normalizeIcons(icons); + + if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { + namespace.hooks.addPack(prefix, normalizeIcons(icons)); + } else { + namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); + } + /** + * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction + * of new styles we needed to differentiate between them. Prefix `fa` is now an alias + * for `fas` so we'll ease the upgrade process for our users by automatically defining + * this as well. + */ + + + if (prefix === 'fas') { + defineIcons('fa', icons); + } + } + + var icons = { + "42-group": [640, 512, ["innosoft"], "e080", "M320 96V416C341 416 361.8 411.9 381.2 403.8C400.6 395.8 418.3 383.1 433.1 369.1C447.1 354.3 459.8 336.6 467.8 317.2C475.9 297.8 480 277 480 256C480 234.1 475.9 214.2 467.8 194.8C459.8 175.4 447.1 157.7 433.1 142.9C418.3 128 400.6 116.2 381.2 108.2C361.8 100.1 341 96 320 96zM0 256L160 416L320 256L160 96L0 256zM480 256C480 277 484.1 297.8 492.2 317.2C500.2 336.6 512 354.3 526.9 369.1C541.7 383.1 559.4 395.8 578.8 403.8C598.2 411.9 618.1 416 640 416V96C597.6 96 556.9 112.9 526.9 142.9C496.9 172.9 480 213.6 480 256z"], + "500px": [448, 512, [], "f26e", "M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3 .3-16 16.5-21.2 23.9l-.5 .6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6 .2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"], + "accessible-icon": [448, 512, [62107], "f368", "M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"], + "accusoft": [640, 512, [], "f369", "M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7 .8 0 114.5-36.6 114.5-36.6 .5-.6-.1-.1 .6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8 .5-116.5 .6-19.2 .1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1 .2-9.6 .8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6 .2 2.5 2 2.6 4.6 3.5 2.7 .8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"], + "adn": [496, 512, [], "f170", "M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"], + "adversal": [512, 512, [], "f36a", "M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4 .4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7 .4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6 .4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1 .2-.1 .3-.1 .5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2 .4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"], + "affiliatetheme": [512, 512, [], "f36b", "M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9 .1-8.5-.3-16.8-1-25z"], + "airbnb": [448, 512, [], "f834", "M224 373.1c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.6-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.1 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.1 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.7-231.2 115.9-241.6 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.5 114.8 239.1 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.1C280.3 35.93 273.1 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.2 22 349.8-3.22 419.1 48.74 480 111.6 480c21.71 0 60.61-6.06 112.4-62.4 58.68 63.78 101.3 62.4 112.4 62.4 62.89 .05 114.8-60.86 89.61-130.2 .02-3.89-16.82-38.9-16.82-39.58z"], + "algolia": [448, 512, [], "f36c", "M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8 .9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1 .7 1.3 .2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7 .5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"], + "alipay": [448, 512, [], "f642", "M377.7 32H70.26C31.41 32 0 63.41 0 102.3v307.5C0 448.6 31.41 480 70.26 480h307.5c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.6-60.34-171.6-88.44-32.07 43.97-84.14 81-148.6 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.1 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.4V92.34h50.92v50.42h109.4v19.01H248.6v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100 36.04 148.6 52.74V102.3C447.8 63.57 416.4 32 377.7 32zM47.28 322.1c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.9-72.9-44.63-18.68-84.48-31.41-109.4-31.41-67.45 0-79.35 33.06-78.36 50.58z"], + "amazon": [448, 512, [], "f270", "M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"], + "amazon-pay": [640, 512, [], "f42c", "M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.9 595.9 0 0 0 127.4 46.3 616.6 616.6 0 0 0 63.2 11.8 603.3 603.3 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.7 603.7 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1 -9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.3 473.3 0 0 1 -75.1 17.6 431 431 0 0 1 -53.2 4.8 21.3 21.3 0 0 0 -2.5 .3H308a21.3 21.3 0 0 0 -2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1 -50.4-5.3A448.4 448.4 0 0 1 164 420a443.3 443.3 0 0 1 -145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3 .6a80.92 80.92 0 0 0 -38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1 -.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1 .1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1 .9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1 .5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1 -1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9 .4a148 148 0 0 0 -28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7 .1 3.3-.1 6.6 0 9.9 .1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4 .3 8.3 .2 16.6 .3 24.9a7.84 7.84 0 0 1 -.2 1.4c-.5-.1-.9 0-1.3-.1a180.6 180.6 0 0 0 -32-4.9c-11.3-.6-22.5 .1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4 .1 10.9 .1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0 -.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9 .1-7.9 .1-11.9 .1zm35 127.7a3.33 3.33 0 0 1 -1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7 .6-11.4 .4-16.8-1.8a20.08 20.08 0 0 1 -12.4-13.3 32.9 32.9 0 0 1 -.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4 .7 16.6 2.3 25 3.4 1.6 .2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0 -21-3.9 147.3 147.3 0 0 0 -39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0 -3.7 3.5 5.11 5.11 0 0 0 -.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4 .4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0 -1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.9 145.9 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6 .8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6 .2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1 -15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.2 108.2 0 0 0 16.9 2c17.1 .4 30.7-6.5 39.5-21.4a131.6 131.6 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0 -7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"], + "amilia": [448, 512, [], "f36d", "M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5 .3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"], + "android": [576, 512, [], "f17b", "M420.5 301.9a24 24 0 1 1 24-24 24 24 0 0 1 -24 24m-265.1 0a24 24 0 1 1 24-24 24 24 0 0 1 -24 24m273.7-144.5 47.94-83a10 10 0 1 0 -17.27-10h0l-48.54 84.07a301.3 301.3 0 0 0 -246.6 0L116.2 64.45a10 10 0 1 0 -17.27 10h0l47.94 83C64.53 202.2 8.24 285.5 0 384H576c-8.24-98.45-64.54-181.8-146.9-226.6"], + "angellist": [448, 512, [], "f209", "M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7 .1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3 .3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7 .1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"], + "angrycreative": [640, 512, [], "f36e", "M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8 .3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1 .6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"], + "angular": [448, 512, [], "f420", "M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"], + "app-store": [512, 512, [], "f36f", "M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"], + "app-store-ios": [448, 512, [], "f370", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"], + "apper": [640, 512, [], "f371", "M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8 .3-3.3 .3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"], + "apple": [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"], + "apple-pay": [640, 512, [], "f415", "M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9 .3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5 .1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8 .4 9.3 .7 11.6 .7z"], + "artstation": [512, 512, [], "f77a", "M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"], + "asymmetrik": [576, 512, [], "f372", "M517.5 309.2c38.8-40 58.1-80 58.5-116.1 .8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"], + "atlassian": [512, 512, [], "f77b", "M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8 .1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6 .1z"], + "audible": [640, 512, [], "f373", "M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"], + "autoprefixer": [640, 512, [], "f41c", "M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"], + "avianex": [512, 512, [], "f374", "M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"], + "aviato": [640, 512, [], "f421", "M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2 .3-2 .5-4.2 .6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1 .3-.1 .7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3 .3 4.4 .6 6.5 .3 2.6 .8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9 .9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1 .2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9 .9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"], + "aws": [640, 512, [], "f375", "M180.4 203c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1 -4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1 -5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.61 78.61 0 0 1 -62.61 29.45c-16.28 .89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1 .02 21.6 .37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4 .01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.86 76.86 0 0 1 55.69 17.28 70.29 70.29 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.9 23.05c-7.86 .72-11.52-4.86-12.68-10.37l-49.8-164.6c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.8 33.16-140.8c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.6L420.1 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.7 110.7l-32.78 136.1c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.5 5.63c-5.88 .01-33.92-.3-57.36-12.29a12.8 12.8 0 0 1 -7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89 .91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.9c-70.03 51.72-171.7 79.25-258.5 79.25A469.1 469.1 0 0 1 2.83 327.5c-6.53-5.89-.77-13.96 7.17-9.47a637.4 637.4 0 0 0 316.9 84.12 630.2 630.2 0 0 0 241.6-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79 .77-7.94-5.12-1.79-9.47 40.07-28.17 105.9-20.1 113.4-10.63 7.55 9.47-2.05 75.41-39.56 106.9-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], + "bandcamp": [512, 512, [], "f2d5", "M256 8C119 8 8 119 8 256S119 504 256 504 504 393 504 256 393 8 256 8zm48.2 326.1h-181L207.9 178h181z"], + "battle-net": [512, 512, [], "f835", "M448.6 225.6c26.87 .18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.1-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.2 7.14 238.7 1.07 228.2 .22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.6-9.22 5.22 53 29.75 101.8 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61 .15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.8 4.6 143.3-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.2c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.7c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.4c-10.29-5.34-21.16-10.34-32.38-15.05a722.5 722.5 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.2 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.8 718.8 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.3 98-132.8 115.9-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.1 12.3 .91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.2 695.2 0 0 0 44.67 152.8c.93-.38 1.84 .88 18.67-8.25-26.33-74.47-33.76-138.2-34-173.4 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.3 30.71q-10.69 15.66-23.33 32.47C365.6 152 339.1 145.8 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.6 717.6 0 0 0 -115.3-31.71 646.6 646.6 0 0 0 -39.39-6.05c-.07 .45-1.81 1.85-2.16 20.33C300 190.3 358.8 215.7 389.4 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.6 306.6 111zm-130.6 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.1 74.8"], + "behance": [576, 512, [], "f1b4", "M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2 .6-8.7 .6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"], + "bilibili": [512, 512, [], "e3d9", "M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z"], + "bimobject": [448, 512, [], "f378", "M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"], + "bitbucket": [512, 512, [61810], "f171", "M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0 -13.2-18.3 24.58 24.58 0 0 0 -2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"], + "bitcoin": [512, 512, [], "f379", "M504 256c0 136.1-111 248-248 248S8 392.1 8 256 119 8 256 8s248 111 248 248zm-141.7-35.33c4.937-32.1-20.19-50.74-54.55-62.57l11.15-44.7-27.21-6.781-10.85 43.52c-7.154-1.783-14.5-3.464-21.8-5.13l10.93-43.81-27.2-6.781-11.15 44.69c-5.922-1.349-11.73-2.682-17.38-4.084l.031-.14-37.53-9.37-7.239 29.06s20.19 4.627 19.76 4.913c11.02 2.751 13.01 10.04 12.68 15.82l-12.7 50.92c.76 .194 1.744 .473 2.829 .907-.907-.225-1.876-.473-2.876-.713l-17.8 71.34c-1.349 3.348-4.767 8.37-12.47 6.464 .271 .395-19.78-4.937-19.78-4.937l-13.51 31.15 35.41 8.827c6.588 1.651 13.05 3.379 19.4 5.006l-11.26 45.21 27.18 6.781 11.15-44.73a1038 1038 0 0 0 21.69 5.627l-11.11 44.52 27.21 6.781 11.26-45.13c46.4 8.781 81.3 5.239 95.99-36.73 11.84-33.79-.589-53.28-25-65.99 17.78-4.098 31.17-15.79 34.75-39.95zm-62.18 87.18c-8.41 33.79-65.31 15.52-83.75 10.94l14.94-59.9c18.45 4.603 77.6 13.72 68.81 48.96zm8.417-87.67c-7.673 30.74-55.03 15.12-70.39 11.29l13.55-54.33c15.36 3.828 64.84 10.97 56.85 43.03z"], + "bity": [496, 512, [], "f37a", "M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3 .8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"], + "black-tie": [448, 512, [], "f27e", "M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"], + "blackberry": [512, 512, [], "f37b", "M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1 .1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 .1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1 .1-16.3-11.6-39.7-53.7-39.7z"], + "blogger": [448, 512, [], "f37c", "M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1 .1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4 .1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8 .2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9 .7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6 .2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5 .4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7 .5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"], + "blogger-b": [448, 512, [], "f37d", "M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8 .6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7 .7 165.8 .2 246.8c-.6 101.5 .1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4 .1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5 .2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5 .9c-68.1 .8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"], + "bluetooth": [448, 512, [], "f293", "M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"], + "bluetooth-b": [320, 512, [], "f294", "M196.5 260l92.63-103.3L143.1 0v206.3l-86.11-86.11-31.41 31.41 108.1 108.4L25.61 368.4l31.41 31.41 86.11-86.11L145.8 512l148.6-148.6-97.91-103.3zm40.86-102.1l-49.98 49.98-.338-100.3 50.31 50.32zM187.4 313l49.98 49.98-50.31 50.32 .338-100.3z"], + "bootstrap": [576, 512, [], "f836", "M333.5 201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4 238.2 333.5 225 333.5 201.4zM517 188.6c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1 0-55.8 28.1-54.7 58.5c1 29.3-.3 67.2-9.8 98.1c-9.6 31-25.7 50.6-52.2 53.1v28.5c26.4 2.5 42.6 22.1 52.2 53.1c9.5 30.9 10.9 68.8 9.8 98.1c-1.1 30.5 22.7 58.5 54.7 58.5h328.7c32.1 0 55.8-28.1 54.7-58.5c-1-29.3 .3-67.2 9.8-98.1c9.6-31 25.7-50.6 52.1-53.1v-28.5C542.7 239.2 526.5 219.6 517 188.6zM300.2 375.1h-97.9V136.8h97.4c43.3 0 71.7 23.4 71.7 59.4c0 25.3-19.1 47.9-43.5 51.8v1.3c33.2 3.6 55.5 26.6 55.5 58.3C383.4 349.7 352.1 375.1 300.2 375.1zM290.2 266.4h-50.1v78.4h52.3c34.2 0 52.3-13.7 52.3-39.5C344.7 279.6 326.1 266.4 290.2 266.4z"], + "bots": [640, 512, [], "e340", "M86.34 197.8a51.77 51.77 0 0 0 -41.57 20.06V156a8.19 8.19 0 0 0 -8.19-8.19H8.19A8.19 8.19 0 0 0 0 156V333.6a8.189 8.189 0 0 0 8.19 8.189H36.58a8.189 8.189 0 0 0 8.19-8.189v-8.088c11.63 13.37 25.87 19.77 41.57 19.77 34.6 0 61.92-26.16 61.92-73.84C148.3 225.5 121.2 197.8 86.34 197.8zM71.52 305.7c-9.593 0-21.22-4.942-26.75-12.5V250.2c5.528-7.558 17.15-12.79 26.75-12.79 17.73 0 31.11 13.08 31.11 34.01C102.6 292.6 89.25 305.7 71.52 305.7zm156.4-59.03a17.4 17.4 0 1 0 17.4 17.4A17.4 17.4 0 0 0 227.9 246.7zM273.1 156.7V112a13.31 13.31 0 1 0 -10.24 0V156.7a107.5 107.5 0 1 0 10.24 0zm85.99 107.4c0 30.53-40.79 55.28-91.11 55.28s-91.11-24.75-91.11-55.28 40.79-55.28 91.11-55.28S359.9 233.5 359.9 264.1zm-50.16 17.4a17.4 17.4 0 1 0 -17.4-17.4h0A17.4 17.4 0 0 0 309.8 281.5zM580.7 250.5c-14.83-2.617-22.39-3.78-22.39-9.885 0-5.523 7.268-9.884 17.74-9.884a65.56 65.56 0 0 1 34.48 10.1 8.171 8.171 0 0 0 11.29-2.468c.07-.11 .138-.221 .2-.333l8.611-14.89a8.2 8.2 0 0 0 -2.867-11.12 99.86 99.86 0 0 0 -52.01-14.14c-38.96 0-60.18 21.51-60.18 46.22 0 36.34 33.72 41.86 57.56 45.64 13.37 2.326 24.13 4.361 24.13 11.05 0 6.4-5.523 10.76-18.9 10.76-13.55 0-30.99-6.222-42.62-13.58a8.206 8.206 0 0 0 -11.34 2.491c-.035 .054-.069 .108-.1 .164l-10.2 16.89a8.222 8.222 0 0 0 2.491 11.07c15.22 10.3 37.66 16.69 59.44 16.69 40.41 0 63.96-19.77 63.96-46.51C640 260.6 604.5 254.8 580.7 250.5zm-95.93 60.79a8.211 8.211 0 0 0 -9.521-5.938 23.17 23.17 0 0 1 -4.155 .387c-7.849 0-12.5-6.106-12.5-14.24V240.3h20.35a8.143 8.143 0 0 0 8.141-8.143V209.5a8.143 8.143 0 0 0 -8.141-8.143H458.6V171.1a8.143 8.143 0 0 0 -8.143-8.143H422.3a8.143 8.143 0 0 0 -8.143 8.143h0v30.23H399a8.143 8.143 0 0 0 -8.143 8.143h0v22.67A8.143 8.143 0 0 0 399 240.3h15.11v63.67c0 27.04 15.41 41.28 43.9 41.28 12.18 0 21.38-2.2 27.6-5.446a8.161 8.161 0 0 0 4.145-9.278z"], + "btc": [384, 512, [], "f15a", "M310.2 242.6c27.73-14.18 45.38-39.39 41.28-81.3-5.358-57.35-52.46-76.57-114.8-81.93V0h-48.53v77.2c-12.6 0-25.52 .315-38.44 .63V0h-48.53v79.41c-17.84 .539-38.62 .276-97.37 0v51.68c38.31-.678 58.42-3.14 63.02 21.43v217.4c-2.925 19.49-18.52 16.68-53.26 16.07L3.765 443.7c88.48 0 97.37 .315 97.37 .315V512h48.53v-67.06c13.23 .315 26.15 .315 38.44 .315V512h48.53v-68c81.3-4.412 135.6-24.89 142.9-101.5 5.671-61.45-23.32-88.86-69.33-99.89zM150.6 134.6c27.42 0 113.1-8.507 113.1 48.53 0 54.51-85.71 48.21-113.1 48.21v-96.74zm0 251.8V279.8c32.77 0 133.1-9.138 133.1 53.26-.001 60.19-100.4 53.25-133.1 53.25z"], + "buffer": [448, 512, [], "f837", "M427.8 380.7l-196.5 97.82a18.6 18.6 0 0 1 -14.67 0L20.16 380.7c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.8 67a18.51 18.51 0 0 0 14.67 0l134.8-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.5l-47.06-23.43a18.62 18.62 0 0 0 -14.68 0l-134.8 67.08a18.68 18.68 0 0 1 -14.67 0L81.91 220.7a18.65 18.65 0 0 0 -14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.5 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.4l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.5-90.29c4-1.86 4-4.89 0-6.74L231.3 33.4a19.88 19.88 0 0 0 -14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"], + "buromobelexperte": [448, 512, [], "f37f", "M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"], + "buy-n-large": [576, 512, [], "f8a6", "M288 32C133.3 32 7.79 132.3 7.79 256S133.3 480 288 480s280.2-100.3 280.2-224S442.7 32 288 32zm-85.39 357.2L64.1 390.5l77.25-290.7h133.4c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1 -1.5 6.85 77.39 77.39 0 0 0 -17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.7 61.52zM358 207.1h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.9 182.1H306.8L322.6 328a78.8 78.8 0 0 0 11.47 .83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.4h103.9zM211.7 269.4H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.7h21.37c18 0 35.38-14.64 39.21-30.14C265.2 168.7 251.1 170 233 170z"], + "buysellads": [448, 512, [], "f20d", "M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"], + "canadian-maple-leaf": [512, 512, [], "f785", "M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"], + "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3 .4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5 .9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5 .9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8 .1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7 .9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4 .2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9 .9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3 .1 4.6 1.6 6.7 6.2 7.5 4.7 .8 9.4 1.6 14.2 1.7 14.3 .3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5 .6-1.5 1.1-3 1.3-4.6 .4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5 .4-.3 .8-.6 1.4-1 .5 3.2 .9 6.2 1.5 9.2 .5 2.6 2.1 4.3 4.5 4.4 4.6 .1 9.1 .1 13.7 0 2.3-.1 3.8-1.6 4-3.9 .1-.8 .1-1.6 .1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8 .1-1.6 .3-2.5 .3-8.2 .4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5 .1 2.8-.1 5.6 0 8.3 .1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4 .8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7 .3 6.9 .2 13.9 .3 20.8 0 .4-.1 .7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9 .1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7 .1 2.5 .2 2.5 1.7 4.1 4.1 4.2 5.9 .1 11.8 .1 17.7 0 2.5 0 4-1.7 4.1-4.1 .1-.8 .1-1.7 .1-2.5v-60.7c.9 .7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2 .2-2.4 .3-3.6 .5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6 .7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4 .7 0 1.4 .2 2.1 .3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2 .8-2.4 1.8-3.1 3-.6 .9-.7 2.3-.5 3.4 .3 1.3 1.7 1.6 3 1.5 .6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1 .3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7 .3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3 .8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6 .7-3 1.2-6.1 1.7-9.1 .2-4.7 .2-9.6 .2-14.5z"], + "cc-amex": [576, 512, [], "f1f3", "M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z"], + "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3 .9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4 .7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4 .3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5 .2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2 .4 6.5 .5 8.1 .5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], + "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8 .3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], + "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9 .1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], + "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5 .2 38.5 .2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2 .4-3.3 .3-38.5 .3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3 .1 42.3-12.9 42.3-33.2z"], + "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8 .3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3 .3 .5 .3 1.1 0 .3-.3 .5-.3 1.1-.3 .3-.3 .5-.5 .8-.3 .3-.5 .5-1.1 .5-.3 .3-.5 .3-1.1 .3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8 .3-1.1 0-.5 .3-.8 .5-1.1 .3-.3 .5-.3 .8-.5 .5-.3 .8-.3 1.1-.3 .5 0 .8 0 1.1 .3 .5 .3 .8 .3 1.1 .5s.2 .6 .5 1.1zm-2.2 1.4c.5 0 .5-.3 .8-.3 .3-.3 .3-.5 .3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7 .8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8 .3-1.4 .3-.5 .3-.8 .5-1.1 .8-.5 .3-.8 .8-.8 1.1-.3 .5-.3 1.1-.3 1.6 0 .3 0 .8 .3 1.4 0 .3 .3 .8 .8 1.1 .3 .3 .5 .5 1.1 .8 .5 .3 1.1 .3 1.4 .3 .5 0 1.1 0 1.6-.3 .3-.3 .8-.5 1.1-.8 .3-.3 .5-.8 .8-1.1 .3-.6 .3-1.1 .3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4 .1 138.5-61.9 138.5-138.4z"], + "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5 .5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3 .5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5 .1-9.8-6.9-15.5-16.2-15.5z"], + "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], + "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2 .3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4 .2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2 .2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2 .1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], + "centercode": [512, 512, [], "f380", "M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"], + "centos": [448, 512, [], "f789", "M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"], + "chrome": [512, 512, [], "f268", "M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"], + "chromecast": [512, 512, [], "f838", "M447.8 64H64c-23.6 0-42.7 19.1-42.7 42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6 0 42.7-19.1 42.7-42.7V106.7C490.7 83.1 471.4 64 447.8 64zM21.3 383.6L21.3 383.6l0 63.9h63.9C85.2 412.2 56.6 383.6 21.3 383.6L21.3 383.6zM21.3 298.6V341c58.9 0 106.6 48.1 106.6 107h42.7C170.7 365.6 103.7 298.7 21.3 298.6zM213.4 448h42.7c-.5-129.5-105.3-234.3-234.8-234.6l0 42.4C127.3 255.6 213.3 342 213.4 448z"], + "cloudflare": [640, 512, [], "e07d", "M407.9 319.9l-230.8-2.928a4.58 4.58 0 0 1 -3.632-1.926 4.648 4.648 0 0 1 -.494-4.147 6.143 6.143 0 0 1 5.361-4.076L411.3 303.9c27.63-1.26 57.55-23.57 68.02-50.78l13.29-34.54a7.944 7.944 0 0 0 .524-2.936 7.735 7.735 0 0 0 -.164-1.631A151.9 151.9 0 0 0 201.3 198.4 68.12 68.12 0 0 0 94.2 269.6C41.92 271.1 0 313.7 0 366.1a96.05 96.05 0 0 0 1.029 13.96 4.508 4.508 0 0 0 4.445 3.871l426.1 .051c.043 0 .08-.019 .122-.02a5.606 5.606 0 0 0 5.271-4l3.273-11.27c3.9-13.4 2.448-25.8-4.1-34.9C430.1 325.4 420.1 320.5 407.9 319.9zM513.9 221.1c-2.141 0-4.271 .062-6.391 .164a3.771 3.771 0 0 0 -3.324 2.653l-9.077 31.19c-3.9 13.4-2.449 25.79 4.1 34.89 6.02 8.4 16.05 13.32 28.24 13.9l49.2 2.939a4.491 4.491 0 0 1 3.51 1.894 4.64 4.64 0 0 1 .514 4.169 6.153 6.153 0 0 1 -5.351 4.075l-51.13 2.939c-27.75 1.27-57.67 23.57-68.14 50.78l-3.695 9.606a2.716 2.716 0 0 0 2.427 3.68c.046 0 .088 .017 .136 .017h175.9a4.69 4.69 0 0 0 4.539-3.37 124.8 124.8 0 0 0 4.682-34C640 277.3 583.5 221.1 513.9 221.1z"], + "cloudscale": [448, 512, [], "f383", "M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6 .4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"], + "cloudsmith": [332, 512, [], "f384", "M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"], + "cloudversify": [616, 512, [], "f385", "M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"], + "cmplid": [640, 512, [], "e360", "M226.1 388.2a3.816 3.816 0 0 0 -2.294-3.5 3.946 3.946 0 0 0 -1.629-.385L72.6 384.3a19.24 19.24 0 0 1 -17.92-26.02L81.58 255.7a35.72 35.72 0 0 1 32.37-26H262.5a7.07 7.07 0 0 0 6.392-5.194l10.77-41.13a3.849 3.849 0 0 0 -2.237-4.937 3.755 3.755 0 0 0 -1.377-.261c-.063 0-.126 0-.189 .005H127.4a106.8 106.8 0 0 0 -96.99 77.1L3.483 358.8A57.47 57.47 0 0 0 57.31 436q1.43 0 2.86-.072H208.7a7.131 7.131 0 0 0 6.391-5.193L225.8 389.6A3.82 3.82 0 0 0 226.1 388.2zM306.7 81.2a3.861 3.861 0 0 0 .251-1.367A3.813 3.813 0 0 0 303.1 76c-.064 0-.128 0-.192 0h-41A7.034 7.034 0 0 0 255.5 81.2l-21.35 80.92h51.13zM180.4 368.2H231.5L263.5 245.7H212.3zM511.9 79.72a3.809 3.809 0 0 0 -3.8-3.661c-.058 0-.137 0-.23 .007h-41a7.1 7.1 0 0 0 -6.584 5.129L368.9 430.6a3.54 3.54 0 0 0 -.262 1.335 3.873 3.873 0 0 0 3.864 3.863c.056 0 .112 0 .169 0h41a7.068 7.068 0 0 0 6.392-5.193L511.5 81.2A3.624 3.624 0 0 0 511.9 79.72zM324.6 384.5h-41a7.2 7.2 0 0 0 -6.392 5.194L266.5 430.8a3.662 3.662 0 0 0 -.268 1.374A3.783 3.783 0 0 0 270 436c.06 0 .166 0 .3-.012h40.9a7.036 7.036 0 0 0 6.391-5.193l10.77-41.13a3.75 3.75 0 0 0 -3.445-5.208c-.108 0-.217 0-.326 .014zm311.3-308.4h-41a7.066 7.066 0 0 0 -6.392 5.129l-91.46 349.4a4.073 4.073 0 0 0 -.229 1.347 3.872 3.872 0 0 0 3.863 3.851c.056 0 .112 0 .169 0h40.97a7.1 7.1 0 0 0 6.392-5.193L639.7 81.2a3.624 3.624 0 0 0 .32-1.475 3.841 3.841 0 0 0 -3.821-3.564c-.068 0-.137 0-.206 .006zM371.6 225.2l10.8-41.1a4.369 4.369 0 0 0 .227-1.388 3.869 3.869 0 0 0 -3.861-3.842c-.057 0-.113 0-.169 0h-41.1a7.292 7.292 0 0 0 -6.391 5.226l-10.83 41.1a4.417 4.417 0 0 0 -.26 1.493c0 .069 0 .138 0 .206a3.776 3.776 0 0 0 3.757 3.507c.076 0 .18 0 .3-.012h41.13A7.034 7.034 0 0 0 371.6 225.2z"], + "codepen": [512, 512, [], "f1cb", "M502.3 159.7l-234-156c-7.987-4.915-16.51-4.96-24.57 0l-234 156C3.714 163.7 0 170.8 0 177.1v155.1c0 7.143 3.714 14.29 9.715 18.29l234 156c7.987 4.915 16.51 4.96 24.57 0l234-156c6-3.999 9.715-11.14 9.715-18.29V177.1c-.001-7.142-3.715-14.29-9.716-18.28zM278 63.13l172.3 114.9-76.86 51.43L278 165.7V63.13zm-44 0v102.6l-95.43 63.72-76.86-51.43L234 63.13zM44 219.1l55.14 36.86L44 292.8v-73.71zm190 229.7L61.71 333.1l76.86-51.43L234 346.3v102.6zm22-140.9l-77.71-52 77.71-52 77.71 52-77.71 52zm22 140.9V346.3l95.43-63.72 76.86 51.43L278 448.8zm190-156l-55.14-36.86L468 219.1v73.71z"], + "codiepie": [472, 512, [], "f284", "M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"], + "confluence": [512, 512, [], "f78d", "M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1 .1-.2 .1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8 .4 21.7-7.7 .1-.1 .1-.3 .2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2 .3-.4 .6-.6 1-67.3 112.6-81.1 95.6-280.6 .9-8.1-3.9-17.8-.4-21.7 7.7-.1 .1-.1 .3-.2 .4L22.2 141.3c-3.6 8.1 .1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"], + "connectdevelop": [576, 512, [], "f20e", "M550.5 241l-50.09-86.79c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.73-14.73-15l-55.45-95.89c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.27-15.27-15.27-4.821 0-8.839 2.143-11.79 5.625H299.5C296.8 18.14 292.8 16 288 16s-8.839 2.143-11.52 5.625H170.4C167.5 18.14 163.4 16 158.6 16c-8.303 0-15.27 6.696-15.27 15.27 0 1.607 .536 3.482 1.072 4.821l-55.98 97.23c-5.356 2.41-9.107 7.5-9.107 13.66 0 .535 .268 1.071 .268 1.607l-53.3 92.14c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.39 12.05 15l55.18 95.36c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.39 12.05 14.73l51.7 89.73c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.27 15.27 15.27 4.821 0 8.839-2.143 11.52-5.357h106.9C279.2 493.9 283.4 496 288 496s8.839-2.143 11.52-5.357h107.1c2.678 2.946 6.696 4.821 10.98 4.821 8.571 0 15.27-6.964 15.27-15.27 0-1.607-.267-2.946-.803-4.285l51.7-90.27c6.964-1.339 12.05-7.5 12.05-14.73 0-1.607-.268-3.214-.804-4.821l54.91-95.36c6.964-1.339 12.32-7.5 12.32-15-.002-7.232-5.092-13.39-11.79-14.73zM153.5 450.7l-43.66-75.8h43.66v75.8zm0-83.84h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.1-47.41v50.62zm0-62.41l-50.36 53.3c-1.339-.536-2.679-1.34-4.018-1.607L43.45 259.8c.535-1.339 .535-2.679 .535-4.018s0-2.41-.268-3.482l51.97-90c2.679-.268 5.357-1.072 7.768-2.679l50.09 51.97v92.95zm0-102.3l-45.8-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.93-15.8v72.05zm0-80.63l-43.66 15.8 43.66-75.54v59.73zm326.5 39.11l.804 1.339L445.5 329.1l-63.75-67.23 98.04-101.5 .268 .268zM291.8 355.1l11.52 11.79H280.5l11.25-11.79zm-.268-11.25l-83.3-85.45 79.55-84.38 83.04 87.59-79.29 82.23zm5.357 5.893l79.29-82.23 67.5 71.25-5.892 28.13H313.7l-16.88-17.14zM410.4 44.39c1.071 .536 2.142 1.072 3.482 1.34l57.86 100.7v.536c0 2.946 .803 5.624 2.143 7.767L376.4 256l-83.04-87.59L410.4 44.39zm-9.107-2.143L287.7 162.5l-57.05-60.27 166.3-60h4.287zm-123.5 0c2.678 2.678 6.16 4.285 10.18 4.285s7.5-1.607 10.18-4.285h75L224.8 95.82 173.9 42.25h103.9zm-116.2 5.625l1.071-2.142a33.83 33.83 0 0 0 2.679-.804l51.16 53.84-54.91 19.82V47.88zm0 79.29l60.8-21.96 59.73 63.21-79.55 84.11-40.98-42.05v-83.3zm0 92.68L198 257.6l-36.43 38.3v-76.07zm0 87.86l42.05-44.46 82.77 85.98-17.14 17.68H161.6v-59.2zm6.964 162.1c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.73h99.91l-91.61 94.82h-1.339zm129.9 0c-2.679-2.41-6.428-4.285-10.45-4.285s-7.767 1.875-10.45 4.285h-96.43l91.61-94.82h38.3l91.61 94.82H298.4zm120-11.79l-4.286 7.5c-1.339 .268-2.41 .803-3.482 1.339l-89.2-91.88h114.4l-17.41 83.04zm12.86-22.23l12.86-60.8h21.96l-34.82 60.8zm34.82-68.84h-20.36l4.553-21.16 17.14 18.21c-.535 .803-1.071 1.874-1.339 2.946zm66.16-107.4l-55.45 96.7c-1.339 .535-2.679 1.071-4.018 1.874l-20.63-21.96 34.55-163.9 45.8 79.29c-.267 1.339-.803 2.678-.803 4.285 0 1.339 .268 2.411 .536 3.75z"], + "contao": [512, 512, [], "f26d", "M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"], + "cotton-bureau": [512, 512, [], "f89e", "M474.3 330.4c-23.66 91.85-94.23 144.6-201.9 148.4V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.2 0C110.5 157.7 74 194.6 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.4-5-211.1-85.07-211.1-223 0-141.8 81.35-223.2 223.2-223.2 114.8 0 189.8 53.2 214.7 148.8H500C473.9 71.51 388.2 8 259.8 8 105 8 12 101.2 12 255.8 12 411.1 105.2 504.3 259.8 504c128.3 0 213.9-63.81 239.7-173.6zM357 182.3c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.8zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.4c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.5 71.65 120.8-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.3c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0 -33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"], + "cpanel": [640, 512, [], "f388", "M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5 .2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"], + "creative-commons": [496, 512, [], "f25e", "M245.8 214.9l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.1 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.6 8.05C104.7 8.05 0 123.1 0 256c0 138.5 113.6 248 247.6 248 129.9 0 248.4-100.9 248.4-248 0-137.9-106.6-248-248.4-248zm.87 450.8c-112.5 0-203.7-93.04-203.7-202.8 0-105.4 85.43-203.3 203.7-203.3 112.5 0 202.8 89.46 202.8 203.3-.01 121.7-99.68 202.8-202.8 202.8z"], + "creative-commons-by": [496, 512, [], "f4e7", "M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3z"], + "creative-commons-nc": [496, 512, [], "f4e8", "M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"], + "creative-commons-nc-eu": [496, 512, [], "f4e9", "M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4 .9 .4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"], + "creative-commons-nc-jp": [496, 512, [], "f4ea", "M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"], + "creative-commons-nd": [496, 512, [], "f4eb", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"], + "creative-commons-pd": [496, 512, [], "f4ec", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"], + "creative-commons-pd-alt": [496, 512, [], "f4ed", "M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6 .9 41.6z"], + "creative-commons-remix": [496, 512, [], "f4ee", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4 .4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"], + "creative-commons-sa": [496, 512, [], "f4ef", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"], + "creative-commons-sampling": [496, 512, [], "f4f0", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9 .6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9 .5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6 .5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6 .6 0 10.6 .7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"], + "creative-commons-sampling-plus": [496, 512, [], "f4f1", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1 .4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2 .2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1 .1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4 .3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"], + "creative-commons-share": [496, 512, [], "f4f2", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"], + "creative-commons-zero": [496, 512, [], "f4f3", "M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8 .1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4 .5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"], + "critical-role": [448, 512, [], "f6c9", "M225.8 0c.26 .15 216.6 124.5 217.1 124.7 3 1.18 3.7 3.46 3.7 6.56q-.11 125.2 0 250.4a5.88 5.88 0 0 1 -3.38 5.78c-21.37 12-207.9 118.3-218.9 124.6h-3C142 466.3 3.08 386.6 2.93 386.5a3.29 3.29 0 0 1 -1.88-3.24c0-.87 0-225.9-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.1 213.2 6 224.1 0zM215.4 20.42l-.22-.16Q118.1 75.55 21 130.9c0 .12 .08 .23 .13 .35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.4c.88-1.41 64.07-110.9 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4 .09 1.48 .22 .78 1.42-41.19 71.33-36.4 63-67.48 116.9-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82 .29 26.21 .15 25.27 1 32.66 .52 4.37 2.16 4.2 9.69 4.81 3.14 .26 3.88 4.08 .52 4.92-1.57 .39-31.6 .51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16 .81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4 .88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06 .89 .13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5 .2 1.48 1.33 0 .11 .88 26.69 .87 26.8-.05 1.52 .67 1.62 1.89 1.62h186.7Q386.5 304.6 346 234.3c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.1V138c-1.72 .5-103.3 38.72-105.8 39.68-1.08 .42-1.55 .2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13 .65-1.39 .1 0 95.53-35.85 103-38.77-65.42-37.57-130.6-75-196-112.6l86.82 150.4-.28 .33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.7-82-142.2-9.1 14.67-83.56 146.2-85.37 146.3-2.93 .17-5.88 .08-9.25 .08q43.25-74.74 86.18-149zm51.93 129.9a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53 .2 2.6 1.92 0 .11 .07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.1 0 .89 .52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75 .13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.3 .05-1.08-.62-1.16-1.35-1.15-32.35 .52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95 .23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85 .68-27.49 .58-22.59 1-29.55a2.69 2.69 0 0 0 -1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0 -2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9 .43 1.12 1.24 1.11 .1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76 .31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1 -1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1 -2.66-1.79c2.38-3.75 5.89 .92 5.86-6.14-.08-25.75 .21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05 .72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73 .95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42 .26 4.73 .45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49 .53 1 3.38 0 .05-.16 0-.24 0-3.61 .26-3.94 1-4 4.62-.27 43.93 .07 40.23 .41 42.82 .11 .84 .27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37 .08-20.74 0-31.11 .07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37 .88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57 .83 3.55zm275-10.15c-1.21 7.13 .17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1 -3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0 -2-1.44 138 138 0 0 0 -14.58 .07 2.23 2.23 0 0 0 -1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72 .66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61 .13 4-1.11 4.13-4.29 .09-1.87 .08 1.17 .07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06 .21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0 -2.66 2.83c-.07 1.63-.19 38.89 .29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25 .43 14.92 .44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.7 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11 .38 37.19-.65 1.68-.19 2.38 .24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31 .34 15.69-1.52 .47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58 .32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64 .48 14.4 0 16.43-5.71 .84-2.37 3.5-1.77 3.18 .58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.5c2.46 .61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1 .57 11.89-6 12.75-1.6 .21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.1c3.28 0 3.66 3 .16 3.43-2.61 .32-5-.42-5 5.46 0 2-.19 29.05 .4 41.45 .11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76 .84 2.76 1.08 .35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94 .4 5.13-2.8 1-15.87 .57-44.65 .34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22 .34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61 .1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09 .41-3.15 1.29 0 20.19-.41 21.17 .21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.3a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.6 197.4-112.5-.14-.43 11.26-.18-181.5-.27-1.22 0-1.57 .37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1 -1.36 7.71c-.55 1.83 .38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1 -2-10.79c.16-2.46 .8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.3 102.6 196 112.8zm-90.9-188.8c0 2.4 .36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51 .05 8.04 .01 11.61 .02 41.65zm105.8-15.05c0 2.13 1.07 38.68 1.09 39.13 .34 9.94-25.58 5.77-25.23-2.59 .08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1 -.36 .12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88 .07-14.91zm-80.15 103.8c0 1.8 .41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81 .05 4.5-.03 13.68 .02 18.59zm212.3 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"], + "css3": [512, 512, [], "f13c", "M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"], + "css3-alt": [384, 512, [], "f38b", "M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3 .1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2 .1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"], + "cuttlefish": [440, 512, [], "f38c", "M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"], + "d-and-d": [576, 512, [], "f38d", "M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2 .3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1 .7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5 .6-11.4 12.5-14.1 27.4-10.9 43.6 .2 1.3 .4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6 .1 .5 .1 1.1 .1 1.6 0 .3-.1 .5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5 .9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2 .2-1.9 .3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3 .3 .3 .7 .6 1 .9 .3-.6 .5-1.2 .9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8 .7-3.5 .9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3 .4-.4 .9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6 .2-.1 .3-.2 .4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8 .9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9 .8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7 .3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3 .2-.2 .4-.3 .6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8 .6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1 .1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8 .4 4.7 .8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1 .7-52.3 .3 2.2 .4 4.3 .9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8 .1-50.9-10.6 .7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6 .2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3 .8-2.4 2.3-4.6 4-6.6 .6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2 .5-1 1.1-2 1.9-3.3 .5 4.2 .6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1 .6 .5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7 .4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6 .5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2 .4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3 .3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5 .8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8 .8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3 .6-4.5 .8-9.2 .1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6 .1-23.3 1.3-.9 .1-1.7 .3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"], + "d-and-d-beyond": [640, 512, [], "f6ca", "M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9 .2-5.8 1.6-7.5 .6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9 .6-.3 1.3 0 .6 1.9-.2 .6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3 .1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9 .9 7.5 .2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1 .6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6 .7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4 .2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5 .5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4 .8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6 .5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9 .5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8 .5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6 .3 3 .6 4.3 1.1-2.1 .8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2 .8 .2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8 .6-2.6-.2s.3-4.3 .3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3 .6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7 .2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7 .6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8 .8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5 .3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9 .3 5.6 1.1V196c-1.1 .5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1 .2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5 .2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1 .2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3 .3-99.3zm-.3 77.5c-37.4 0-36.9-55.3 .2-55.3 36.8 .1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8 .2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1 .1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5 .8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6 .3-39.9-4 .1 .8 .5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8 .2-39.9-4 .1 .7 .5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6 .3-4 1.1-6.1 2.9 .1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"], + "dailymotion": [448, 512, [], "e052", "M298.9 267a48.4 48.4 0 0 0 -24.36-6.21q-19.83 0-33.44 13.27t-13.61 33.42q0 21.16 13.28 34.6t33.43 13.44q20.5 0 34.11-13.78T322 307.5A47.13 47.13 0 0 0 315.9 284 44.13 44.13 0 0 0 298.9 267zM0 32V480H448V32zM374.7 405.3h-53.1V381.4h-.67q-15.79 26.2-55.78 26.2-27.56 0-48.89-13.1a88.29 88.29 0 0 1 -32.94-35.77q-11.6-22.68-11.59-50.89 0-27.56 11.76-50.22a89.9 89.9 0 0 1 32.93-35.78q21.18-13.09 47.72-13.1a80.87 80.87 0 0 1 29.74 5.21q13.28 5.21 25 17V153l55.79-12.09z"], + "dashcube": [448, 512, [], "f210", "M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"], + "deezer": [576, 512, [], "e077", "M451.5 244.7H576V172H451.5zm0-173.9v72.67H576V70.82zm0 275.1H576V273.2H451.5zM0 447.1H124.5V374.4H0zm150.5 0H275V374.4H150.5zm150.5 0H425.5V374.4H301zm150.5 0H576V374.4H451.5zM301 345.9H425.5V273.2H301zm-150.5 0H275V273.2H150.5zm0-101.2H275V172H150.5z"], + "delicious": [448, 512, [], "f1a5", "M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1 .5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"], + "deploydog": [512, 512, [], "f38e", "M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"], + "deskpro": [480, 512, [], "f38f", "M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7 .3 15 .1h82c.2 0 .3 .1 .5 .1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"], + "dev": [448, 512, [], "f6cc", "M120.1 208.3c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.5h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.4 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.2c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.1h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.7-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16 .29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.6 115.3c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.7 29.57-113.7h32.58l-38.46 144.8z"], + "deviantart": [320, 512, [], "f1bd", "M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"], + "dhl": [640, 512, [], "f790", "M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4 .7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"], + "diaspora": [512, 512, [], "f791", "M251.6 354.5c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.3s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1 .6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3 .4-2 1-148.6 1.7-149.6 .8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3 .8 .9 31.9 102.2 31.5 102.6-.9 .9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"], + "digg": [512, 512, [], "f1a6", "M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"], + "digital-ocean": [512, 512, [], "f391", "M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"], + "discord": [640, 512, [], "f392", "M524.5 69.84a1.5 1.5 0 0 0 -.764-.7A485.1 485.1 0 0 0 404.1 32.03a1.816 1.816 0 0 0 -1.923 .91 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.14-30.6 1.89 1.89 0 0 0 -1.924-.91A483.7 483.7 0 0 0 116.1 69.14a1.712 1.712 0 0 0 -.788 .676C39.07 183.7 18.19 294.7 28.43 404.4a2.016 2.016 0 0 0 .765 1.375A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.1 430.4a1.86 1.86 0 0 0 -1.019-2.588 321.2 321.2 0 0 1 -45.87-21.85 1.885 1.885 0 0 1 -.185-3.126c3.082-2.309 6.166-4.711 9.109-7.137a1.819 1.819 0 0 1 1.9-.256c96.23 43.92 200.4 43.92 295.5 0a1.812 1.812 0 0 1 1.924 .233c2.944 2.426 6.027 4.851 9.132 7.16a1.884 1.884 0 0 1 -.162 3.126 301.4 301.4 0 0 1 -45.89 21.83 1.875 1.875 0 0 0 -1 2.611 391.1 391.1 0 0 0 30.01 48.81 1.864 1.864 0 0 0 2.063 .7A486 486 0 0 0 610.7 405.7a1.882 1.882 0 0 0 .765-1.352C623.7 277.6 590.9 167.5 524.5 69.84zM222.5 337.6c-28.97 0-52.84-26.59-52.84-59.24S193.1 219.1 222.5 219.1c29.67 0 53.31 26.82 52.84 59.24C275.3 310.1 251.9 337.6 222.5 337.6zm195.4 0c-28.97 0-52.84-26.59-52.84-59.24S388.4 219.1 417.9 219.1c29.67 0 53.31 26.82 52.84 59.24C470.7 310.1 447.5 337.6 417.9 337.6z"], + "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], + "dochub": [416, 512, [], "f394", "M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1 .8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"], + "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4 .4 67.6 .1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], + "draft2digital": [480, 512, [], "f396", "M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"], + "dribbble": [512, 512, [], "f17d", "M256 8C119.3 8 8 119.3 8 256s111.3 248 248 248 248-111.3 248-248S392.7 8 256 8zm163.1 114.4c29.5 36.05 47.37 81.96 47.83 131.1-6.984-1.477-77.02-15.68-147.5-6.818-5.752-14.04-11.18-26.39-18.62-41.61 78.32-31.98 113.8-77.48 118.3-83.52zM396.4 97.87c-3.81 5.427-35.7 48.29-111 76.52-34.71-63.78-73.18-116.2-79.04-124 67.18-16.19 137.1 1.27 190.1 47.49zm-230.5-33.25c5.585 7.659 43.44 60.12 78.54 122.5-99.09 26.31-186.4 25.93-195.8 25.81C62.38 147.2 106.7 92.57 165.9 64.62zM44.17 256.3c0-2.166 .043-4.322 .108-6.473 9.268 .19 111.9 1.513 217.7-30.15 6.064 11.87 11.86 23.92 17.17 35.95-76.6 21.58-146.2 83.53-180.5 142.3C64.79 360.4 44.17 310.7 44.17 256.3zm81.81 167.1c22.13-45.23 82.18-103.6 167.6-132.8 29.74 77.28 42.04 142.1 45.19 160.6-68.11 29.01-150 21.05-212.8-27.88zm248.4 8.489c-2.171-12.89-13.45-74.9-41.15-151 66.38-10.63 124.7 6.768 131.9 9.055-9.442 58.94-43.27 109.8-90.79 141.1z"], + "dropbox": [528, 512, [], "f16b", "M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"], + "drupal": [448, 512, [], "f1a9", "M303.1 108.1C268.2 72.46 234.2 38.35 224 0c-9.957 38.35-44.25 72.46-80.02 108.1C90.47 161.7 29.72 222.4 29.72 313.4c-2.337 107.3 82.75 196.2 190.1 198.5S415.9 429.2 418.3 321.9q.091-4.231 0-8.464C418.3 222.4 357.5 161.7 303.1 108.1zm-174.3 223a130.3 130.3 0 0 0 -15.21 24.15 4.978 4.978 0 0 1 -3.319 2.766h-1.659c-4.333 0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.25-25.72-1.475-62.32-1.475-62.32h0a160.6 160.6 0 0 1 23.23-49.87A290.8 290.8 0 0 1 138.5 201.6l9.219 9.219 43.51 44.43a4.979 4.979 0 0 1 0 6.638L145.8 312.3h0zm96.61 127.3a67.2 67.2 0 0 1 -49.78-111.9c14.2-16.87 31.53-33.46 50.33-55.31 22.31 23.78 36.88 40.1 51.16 57.99a28.41 28.41 0 0 1 2.95 4.425 65.9 65.9 0 0 1 11.98 37.98 66.65 66.65 0 0 1 -66.47 66.84zM352.4 351.6h0a7.743 7.743 0 0 1 -6.176 5.347H344.9a11.25 11.25 0 0 1 -6.269-5.07h0a348.2 348.2 0 0 0 -39.46-48.95L281.4 284.5 222.3 223.2a497.9 497.9 0 0 1 -35.4-36.32 12.03 12.03 0 0 0 -.922-1.382 35.4 35.4 0 0 1 -4.7-9.219V174.5a31.35 31.35 0 0 1 9.218-27.66c11.43-11.43 22.95-22.95 33.83-34.94 11.98 13.27 24.8 26 37.43 38.63h0a530.1 530.1 0 0 1 69.6 79.1 147.5 147.5 0 0 1 27.01 83.8A134.1 134.1 0 0 1 352.4 351.6z"], + "dyalog": [416, 512, [], "f399", "M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"], + "earlybirds": [480, 512, [], "f39a", "M313.2 47.5c1.2-13 21.3-14 36.6-8.7 .9 .3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2 .3 .9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2 .8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7 .9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2 .8-10.5-25.4 21.5-42.6 66.8-73.4 .7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1 .3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1 .6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7 .6 11.6 .8 12.7 2.6 .3 .5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"], + "ebay": [640, 512, [], "f4f4", "M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7 .4-42.4 .9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6 .3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"], + "edge": [512, 512, [], "f282", "M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z"], + "edge-legacy": [512, 512, [], "e078", "M25.71 228.2l.35-.48c0 .16 0 .32-.07 .48zm460.6 15.51c0-44-7.76-84.46-28.81-122.4C416.5 47.88 343.9 8 258.9 8 119 7.72 40.62 113.2 26.06 227.7c42.42-61.31 117.1-121.4 220.4-125 0 0 109.7 0 99.42 105H170c6.37-37.39 18.55-59 34.34-78.93-75.05 34.9-121.8 96.1-120.8 188.3 .83 71.45 50.13 144.8 120.8 172 83.35 31.84 192.8 7.2 240.1-21.33V363.3C363.6 419.8 173.6 424.2 172.2 295.7H486.3V243.7z"], + "elementor": [512, 512, [], "f430", "M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z"], + "ello": [496, 512, [], "f5f1", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm143.8 285.2C375.3 358.5 315.8 404.8 248 404.8s-127.3-46.29-143.8-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.6 90.11s102.5-37.2 116.6-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"], + "ember": [640, 512, [], "f423", "M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6 .5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7 .8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5 .3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7 .3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"], + "empire": [496, 512, [], "f1d1", "M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5 .8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"], + "envira": [448, 512, [], "f299", "M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"], + "erlang": [640, 512, [], "f39d", "M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9 .1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7 .5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"], + "ethereum": [320, 512, [], "f42e", "M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"], + "etsy": [384, 512, [], "f2d7", "M384 348c-1.75 10.75-13.75 110-15.5 132-117.9-4.299-219.9-4.743-368.5 0v-25.5c45.46-8.948 60.63-8.019 61-35.25 1.793-72.32 3.524-244.1 0-322-1.029-28.46-12.13-26.76-61-36v-25.5c73.89 2.358 255.9 8.551 362.1-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.9 115.7 313.2 68 277.3 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.25h25.75c-4.407 101.4-3.91 61.83-1.75 160.3H257c-9.155-40.09-9.065-61.04-39.5-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.64 0 66.56-24.1 98.75-99.75H384z"], + "evernote": [384, 512, [], "f839", "M120.8 132.2c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56 .22-.74 0-.37-.37L123.8 46.45c.38-.37 .6-.22 .38 .37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.5v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.9-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.8 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.1 8.91 238.5 7.8 238.5C362.1 485.5 267.1 480 267.1 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.8c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"], + "expeditedssl": [496, 512, [], "f23e", "M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"], + "facebook": [512, 512, [62000], "f09a", "M504 256C504 119 393 8 256 8S8 119 8 256c0 123.8 90.69 226.4 209.3 245V327.7h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.3 482.4 504 379.8 504 256z"], + "facebook-f": [320, 512, [], "f39e", "M279.1 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.4 0 225.4 0c-73.22 0-121.1 44.38-121.1 124.7v70.62H22.89V288h81.39v224h100.2V288z"], + "facebook-messenger": [512, 512, [], "f39f", "M256.5 8C116.5 8 8 110.3 8 248.6c0 72.3 29.71 134.8 78.07 177.9 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.3c52.91-23.3 53.59-25.14 62.56-22.7C337.9 521.8 504 423.7 504 248.6 504 110.3 396.6 8 256.5 8zm149.2 185.1l-73 115.6a37.37 37.37 0 0 1 -53.91 9.93l-58.08-43.47a15 15 0 0 0 -18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.6a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"], + "fantasy-flight-games": [512, 512, [], "f6dc", "M256 32.86L32.86 256 256 479.1 479.1 256 256 32.86zM88.34 255.8c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.8-18.69 24.63 18.4 62.06 58.9 62.15 59 .68 .74 1.07 2.86 .58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43 .12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.8 101.6c-35.49 35.43-78.09 38.14-106.1 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64 .14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29 .26-.26 .65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"], + "fedex": [640, 512, [], "f797", "M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"], + "fedora": [448, 512, [], "f798", "M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z"], + "figma": [384, 512, [], "f799", "M14 95.79C14 42.89 56.89 0 109.8 0H274.2C327.1 0 369.1 42.89 369.1 95.79C369.1 129.3 352.8 158.8 326.7 175.9C352.8 193 369.1 222.5 369.1 256C369.1 308.9 327.1 351.8 274.2 351.8H272.1C247.3 351.8 224.7 342.4 207.7 326.9V415.2C207.7 468.8 163.7 512 110.3 512C57.54 512 14 469.2 14 416.2C14 382.7 31.19 353.2 57.24 336.1C31.19 318.1 14 289.5 14 256C14 222.5 31.2 193 57.24 175.9C31.2 158.8 14 129.3 14 95.79zM176.3 191.6H109.8C74.22 191.6 45.38 220.4 45.38 256C45.38 291.4 73.99 320.2 109.4 320.4C109.5 320.4 109.7 320.4 109.8 320.4H176.3V191.6zM207.7 256C207.7 291.6 236.5 320.4 272.1 320.4H274.2C309.7 320.4 338.6 291.6 338.6 256C338.6 220.4 309.7 191.6 274.2 191.6H272.1C236.5 191.6 207.7 220.4 207.7 256zM109.8 351.8C109.7 351.8 109.5 351.8 109.4 351.8C73.99 352 45.38 380.8 45.38 416.2C45.38 451.7 74.6 480.6 110.3 480.6C146.6 480.6 176.3 451.2 176.3 415.2V351.8H109.8zM109.8 31.38C74.22 31.38 45.38 60.22 45.38 95.79C45.38 131.4 74.22 160.2 109.8 160.2H176.3V31.38H109.8zM207.7 160.2H274.2C309.7 160.2 338.6 131.4 338.6 95.79C338.6 60.22 309.7 31.38 274.2 31.38H207.7V160.2z"], + "firefox": [512, 512, [], "f269", "M503.5 241.5c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.9 245.9 0 0 0 -7.32-41.15c0-.12 0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27 8.27 0 0 0 -.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48 0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07 18.07 0 0 0 -1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63 15.63 0 0 0 -1.2-1.8L463.2 119a15.63 15.63 0 0 0 -1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.8 248.8 0 0 0 -23.51-26.64A186.8 186.8 0 0 0 412 62.46c-4-3.48-8.16-6.72-12.48-9.84a162.5 162.5 0 0 0 -24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254 254 0 0 0 -55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.4 236.4 0 0 0 -38-4H255.1a234.6 234.6 0 0 0 -45.48 5c-33.59 7.08-63.23 21.24-82.91 39-1.08 1-1.92 1.68-2.4 2.16l-.48 .48H124l-.12 .12 .12-.12a.12 .12 0 0 0 .12-.12l-.12 .12a.42 .42 0 0 1 .24-.12c14.64-8.76 34.92-16 49.44-19.56l5.88-1.44c.36-.12 .84-.12 1.2-.24 1.68-.36 3.36-.72 5.16-1.08 .24 0 .6-.12 .84-.12C250.9 20.94 319.3 40.14 367 85.61a171.5 171.5 0 0 1 26.88 32.76c30.36 49.2 27.48 111.1 3.84 147.6-34.44 53-111.3 71.27-159 24.84a84.19 84.19 0 0 1 -25.56-59 74.05 74.05 0 0 1 6.24-31c1.68-3.84 13.08-25.67 18.24-24.59-13.08-2.76-37.55 2.64-54.71 28.19-15.36 22.92-14.52 58.2-5 83.28a132.9 132.9 0 0 1 -12.12-39.24c-12.24-82.55 43.31-153 94.31-170.5-27.48-24-96.47-22.31-147.7 15.36-29.88 22-51.23 53.16-62.51 90.36 1.68-20.88 9.6-52.08 25.8-83.88-17.16 8.88-39 37-49.8 62.88-15.6 37.43-21 82.19-16.08 124.8 .36 3.24 .72 6.36 1.08 9.6 19.92 117.1 122 206.4 244.8 206.4C392.8 503.4 504 392.2 504 255 503.9 250.5 503.8 245.9 503.5 241.5z"], + "firefox-browser": [512, 512, [], "e007", "M130.2 127.5C130.4 127.6 130.3 127.6 130.2 127.5V127.5zM481.6 172.9C471 147.4 449.6 119.9 432.7 111.2C446.4 138.1 454.4 165 457.4 185.2C457.4 185.3 457.4 185.4 457.5 185.6C429.9 116.8 383.1 89.11 344.9 28.75C329.9 5.058 333.1 3.518 331.8 4.088L331.7 4.158C284.1 30.11 256.4 82.53 249.1 126.9C232.5 127.8 216.2 131.9 201.2 139C199.8 139.6 198.7 140.7 198.1 142C197.4 143.4 197.2 144.9 197.5 146.3C197.7 147.2 198.1 147.1 198.6 148.6C199.1 149.3 199.8 149.9 200.5 150.3C201.3 150.7 202.1 150.1 202.1 151.1C203.8 151.1 204.7 151 205.5 150.8L206 150.6C221.5 143.3 238.4 139.4 255.5 139.2C318.4 138.7 352.7 183.3 363.2 201.5C350.2 192.4 326.8 183.3 304.3 187.2C392.1 231.1 368.5 381.8 246.1 376.4C187.5 373.8 149.9 325.5 146.4 285.6C146.4 285.6 157.7 243.7 227 243.7C234.5 243.7 255.1 222.8 256.4 216.7C256.3 214.7 213.8 197.8 197.3 181.5C188.4 172.8 184.2 168.6 180.5 165.5C178.5 163.8 176.4 162.2 174.2 160.7C168.6 141.2 168.4 120.6 173.5 101.1C148.4 112.5 128.1 130.5 114.8 146.4H114.7C105 134.2 105.7 93.78 106.3 85.35C106.1 84.82 99.02 89.02 98.1 89.66C89.53 95.71 81.55 102.6 74.26 110.1C57.97 126.7 30.13 160.2 18.76 211.3C14.22 231.7 12 255.7 12 263.6C12 398.3 121.2 507.5 255.9 507.5C376.6 507.5 478.9 420.3 496.4 304.9C507.9 228.2 481.6 173.8 481.6 172.9z"], + "first-order": [448, 512, [], "f2b0", "M12.9 229.2c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4h-.2zM224 96.6c-7.1 0-14.6 .6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"], + "first-order-alt": [496, 512, [], "f50a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm0 488.2C115.3 496.2 7.79 388.7 7.79 256S115.3 15.79 248 15.79 488.2 123.3 488.2 256 380.7 496.2 248 496.2zm0-459.9C126.7 36.29 28.29 134.7 28.29 256S126.7 475.7 248 475.7 467.7 377.3 467.7 256 369.3 36.29 248 36.29zm0 431.2c-116.8 0-211.5-94.69-211.5-211.5S131.2 44.49 248 44.49 459.5 139.2 459.5 256 364.8 467.5 248 467.5zm186.2-162.1a191.6 191.6 0 0 1 -20.13 48.69l-74.13-35.88 61.48 54.82a193.5 193.5 0 0 1 -37.2 37.29l-54.8-61.57 35.88 74.27a190.9 190.9 0 0 1 -48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.4 191.4 0 0 1 -48.65-20.2l35.93-74.34-54.87 61.64a193.9 193.9 0 0 1 -37.22-37.28l61.59-54.9-74.26 35.93a191.6 191.6 0 0 1 -20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.7 191.7 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.9 193.9 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.5 191.5 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71 .62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.1 193.1 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.5 191.5 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"], + "firstdraft": [384, 512, [], "f3a1", "M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"], + "flickr": [448, 512, [], "f16e", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"], + "flipboard": [448, 512, [], "f44d", "M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"], + "fly": [384, 512, [], "f417", "M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9 .3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3 .1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"], + "font-awesome": [448, 512, [62694, 62501, "font-awesome-flag", "font-awesome-logo-full"], "f2b4", "M448 48V384C385 407 366 416 329 416C266 416 242 384 179 384C159 384 143 388 128 392V328C143 324 159 320 179 320C242 320 266 352 329 352C349 352 364 349 384 343V135C364 141 349 144 329 144C266 144 242 112 179 112C128 112 104 133 64 141V448C64 466 50 480 32 480S0 466 0 448V64C0 46 14 32 32 32S64 46 64 64V77C104 69 128 48 179 48C242 48 266 80 329 80C366 80 385 71 448 48z"], + "fonticons": [448, 512, [], "f280", "M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"], + "fonticons-fi": [384, 512, [], "f3a2", "M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"], + "fort-awesome": [512, 512, [], "f286", "M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"], + "fort-awesome-alt": [512, 512, [], "f3a3", "M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1 .7 .1 1.3 .1 2 .1 1.3 .1 2.7 .2 4 0 .8 .1 1.5 .1 2.3 0 1.3 .1 2.5 .2 3.7 .1 .8 .1 1.6 .2 2.4 .1 1.1 .2 2.3 .3 3.5 0 .8 .1 1.6 .2 2.4 .1 1.2 .3 2.4 .4 3.6 .1 .8 .2 1.5 .3 2.3 .1 1.3 .3 2.6 .5 3.9 .1 .6 .2 1.3 .3 1.9l.9 5.7c.1 .6 .2 1.1 .3 1.7 .3 1.3 .5 2.7 .8 4 .2 .8 .3 1.6 .5 2.4 .2 1 .5 2.1 .7 3.2 .2 .9 .4 1.7 .6 2.6 .2 1 .4 2 .7 3 .2 .9 .5 1.8 .7 2.7 .3 1 .5 1.9 .8 2.9 .3 .9 .5 1.8 .8 2.7 .2 .9 .5 1.9 .8 2.8s.5 1.8 .8 2.7c.3 1 .6 1.9 .9 2.8 .6 1.6 1.1 3.3 1.7 4.9 .4 1 .7 1.9 1 2.8 .3 1 .7 2 1.1 3 .3 .8 .6 1.5 .9 2.3l1.2 3c.3 .7 .6 1.5 .9 2.2 .4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3 .7 .6 1.3 .9 2 .5 1 1 2.1 1.5 3.1 .2 .6 .5 1.1 .8 1.7 .6 1.1 1.1 2.2 1.7 3.3 .1 .2 .2 .3 .3 .5 2.2 4.1 4.4 8.2 6.8 12.2 .2 .4 .5 .8 .7 1.2 .7 1.1 1.3 2.2 2 3.3 .3 .5 .6 .9 .9 1.4 .6 1.1 1.3 2.1 2 3.2 .3 .5 .6 .9 .9 1.4 .7 1.1 1.4 2.1 2.1 3.2 .2 .4 .5 .8 .8 1.2 .7 1.1 1.5 2.2 2.3 3.3 .2 .2 .3 .5 .5 .7 37.5 51.7 94.4 88.5 160 99.4 .9 .1 1.7 .3 2.6 .4 1 .2 2.1 .4 3.1 .5s1.9 .3 2.8 .4c1 .2 2 .3 3 .4 .9 .1 1.9 .2 2.9 .3s1.9 .2 2.9 .3 2.1 .2 3.1 .3c.9 .1 1.8 .1 2.7 .2 1.1 .1 2.3 .1 3.4 .2 .8 0 1.7 .1 2.5 .1 1.3 0 2.6 .1 3.9 .1 .7 .1 1.4 .1 2.1 .1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1 .8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2 .9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5 .9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4 .2-.2 .3-.5 .5-.7 .8-1.1 1.5-2.2 2.3-3.3 .2-.4 .5-.8 .8-1.2 .7-1.1 1.4-2.1 2.1-3.2 .3-.5 .6-.9 .9-1.4 .6-1.1 1.3-2.1 2-3.2 .3-.5 .6-.9 .9-1.4 .7-1.1 1.3-2.2 2-3.3 .2-.4 .5-.8 .7-1.2 2.4-4 4.6-8.1 6.8-12.2 .1-.2 .2-.3 .3-.5 .6-1.1 1.1-2.2 1.7-3.3 .2-.6 .5-1.1 .8-1.7 .5-1 1-2.1 1.5-3.1 .3-.7 .6-1.3 .9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7 .6-1.5 .9-2.2l1.2-3c.3-.8 .6-1.5 .9-2.3 .4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9 .3-1 .6-1.9 .9-2.8s.5-1.8 .8-2.7c.2-.9 .5-1.9 .8-2.8s.6-1.8 .8-2.7c.3-1 .5-1.9 .8-2.9 .2-.9 .5-1.8 .7-2.7 .2-1 .5-2 .7-3 .2-.9 .4-1.7 .6-2.6 .2-1 .5-2.1 .7-3.2 .2-.8 .3-1.6 .5-2.4 .3-1.3 .6-2.7 .8-4 .1-.6 .2-1.1 .3-1.7l.9-5.7c.1-.6 .2-1.3 .3-1.9 .1-1.3 .3-2.6 .5-3.9 .1-.8 .2-1.5 .3-2.3 .1-1.2 .3-2.4 .4-3.6 0-.8 .1-1.6 .2-2.4 .1-1.1 .2-2.3 .3-3.5 .1-.8 .1-1.6 .2-2.4 .1 1.7 .1 .5 .2-.7 0-.8 .1-1.5 .1-2.3 .1-1.3 .2-2.7 .2-4 .1-.7 .1-1.3 .1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"], + "forumbee": [448, 512, [], "f211", "M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"], + "foursquare": [368, 512, [], "f180", "M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9 .9-1.8 .6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"], + "free-code-camp": [576, 512, [], "f2c5", "M97.22 96.21c10.36-10.65 16-17.12 16-21.9 0-2.76-1.92-5.51-3.83-7.42A14.81 14.81 0 0 0 101 64.05c-8.48 0-20.92 8.79-35.84 25.69C23.68 137 2.51 182.8 3.37 250.3s17.47 117 54.06 161.9C76.22 435.9 90.62 448 100.9 448a13.55 13.55 0 0 0 8.37-3.84c1.91-2.76 3.81-5.63 3.81-8.38 0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25 188.8 54 137.8 97.22 96.21zM239.5 420.1c.58 .37 .91 .55 .91 .55zm93.79 .55 .17-.13C333.2 420.6 333.2 420.7 333.3 420.6zm3.13-158.2c-16.24-4.15 50.41-82.89-68.05-177.2 0 0 15.54 49.38-62.83 159.6-74.27 104.3 23.46 168.7 34 175.2-6.73-4.35-47.4-35.7 9.55-128.6 11-18.3 25.53-34.87 43.5-72.16 0 0 15.91 22.45 7.6 71.13C287.7 364 354 342.9 355 343.9c22.75 26.78-17.72 73.51-21.58 76.55 5.49-3.65 117.7-78 33-188.1C360.4 238.4 352.6 266.6 336.4 262.4zM510.9 89.69C496 72.79 483.5 64 475 64a14.81 14.81 0 0 0 -8.39 2.84c-1.91 1.91-3.83 4.66-3.83 7.42 0 4.78 5.6 11.26 16 21.9 43.23 41.61 65 92.59 64.82 154.1-.16 68-23 122.6-67.48 165-9.34 8.35-13.18 14.92-13.2 20.55 0 2.75 1.9 5.62 3.81 8.38A13.61 13.61 0 0 0 475.1 448c10.28 0 24.68-12.13 43.47-35.79 36.59-44.85 53.14-94.38 54.06-161.9S552.3 137 510.9 89.69z"], + "freebsd": [448, 512, [], "f3a4", "M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4 .9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"], + "fulcrum": [320, 512, [], "f50b", "M95.75 164.1l-35.38 43.55L25 164.1l35.38-43.55zM144.2 0l-20.54 198.2L72.72 256l51 57.82L144.2 512V300.9L103.2 256l41.08-44.89zm79.67 164.1l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.8 247 256l-51-57.82L175.4 0z"], + "galactic-republic": [496, 512, [], "f50c", "M248 504C111.3 504 0 392.8 0 256S111.3 8 248 8s248 111.3 248 248-111.3 248-248 248zm0-479.5C120.4 24.53 16.53 128.4 16.53 256S120.4 487.5 248 487.5 479.5 383.6 479.5 256 375.6 24.53 248 24.53zm27.62 21.81v24.62a185.9 185.9 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.1-41.8zm-55.37 .07c-37.64 4.94-72.16 19.8-100.9 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.87 77.87 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.2 30.72l-17.36 17.36a186.3 186.3 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101zm-335.5 .13c-22.06 28.72-36.91 63.26-41.85 100.9h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.7c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.1h-24.62zM136.7 406.4l-17.36 17.36c28.73 22.09 63.3 36.98 100.1 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.5 .05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.1-41.85l-17.31-17.39h-.08z"], + "galactic-senate": [512, 512, [], "f50d", "M249.9 33.48v26.07C236.3 80.17 226 168.1 225.4 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32 .75-10.53 2.19-15.65 .65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.8-10.91-194.7-24.49-215.4V33.48h-12.28zm-26.34 147.8c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68 .18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51 .73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47 .96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.5 147.5 0 0 0 -27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.8-1.45-156.4 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.3 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87 .01 .01-.01 .04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19 .02 16.37-1.07 24.04-3.21 .01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43 .39 95.49 20.26 108 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.4-29.17-156.4-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.8 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19 .07-21.6 .36-30.5 1.66 .43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28 .94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76 .42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09 .02-.17 .04-.27 .05-.05 .01-.11 .04-.16 .05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"], + "get-pocket": [448, 512, [], "f265", "M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"], + "gg": [512, 512, [], "f260", "M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"], + "gg-circle": [512, 512, [], "f261", "M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"], + "git": [512, 512, [], "f1d3", "M216.3 158.4H137C97 147.9 6.51 150.6 6.51 233.2c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.6 0 393.4 0 411.6c0 32.11 28.05 50.82 101.6 50.82 70.75 0 111.8-26.42 111.8-73.18 0-58.66-45.16-56.5-151.6-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.9 32.1-104.9 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.6c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.5v-32.1c26.75-3.66 27.24-2 27.24-11V203.6c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.7c0 6.51 .4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.3c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.5c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.8c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"], + "git-alt": [448, 512, [], "f841", "M439.5 236.1L244 40.45a28.87 28.87 0 0 0 -40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.2 199v121.8c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1 -48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.6 101 8.45 235.1a28.86 28.86 0 0 0 0 40.81l195.6 195.6a28.86 28.86 0 0 0 40.8 0l194.7-194.7a28.86 28.86 0 0 0 0-40.81z"], + "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], + "github-alt": [480, 512, [], "f113", "M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"], + "gitkraken": [592, 512, [], "f3a6", "M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8 .4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"], + "gitlab": [512, 512, [], "f296", "M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"], + "gitter": [384, 512, [], "f426", "M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"], + "glide": [448, 512, [], "f2a5", "M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8 .1 4.1-1.7 4.1-3.5z"], + "glide-g": [448, 512, [], "f2a6", "M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9 .1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"], + "gofore": [400, 512, [], "f3a7", "M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"], + "golang": [640, 512, [], "e40f", "M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z"], + "goodreads": [448, 512, [], "f3a8", "M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8 .3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9 .4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2 .5-1 1.1-1.9 1.7-2.9 .2 .1 .4 .1 .6 .2 .3 3.8 .2 30.7 .1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"], + "goodreads-g": [384, 512, [], "f3a9", "M42.6 403.3h2.8c12.7 0 25.5 0 38.2 .1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5 .1-5.8 .3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3 .6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3 .5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3 .1 332.2 .1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"], + "google": [488, 512, [], "f1a0", "M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"], + "google-drive": [512, 512, [], "f3aa", "M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"], + "google-pay": [640, 512, [], "e079", "M105.7 215v41.25h57.1a49.66 49.66 0 0 1 -21.14 32.6c-9.54 6.55-21.72 10.28-36 10.28-27.6 0-50.93-18.91-59.3-44.22a65.61 65.61 0 0 1 0-41l0 0c8.37-25.46 31.7-44.37 59.3-44.37a56.43 56.43 0 0 1 40.51 16.08L176.5 155a101.2 101.2 0 0 0 -70.75-27.84 105.6 105.6 0 0 0 -94.38 59.11 107.6 107.6 0 0 0 0 96.18v.15a105.4 105.4 0 0 0 94.38 59c28.47 0 52.55-9.53 70-25.91 20-18.61 31.41-46.15 31.41-78.91A133.8 133.8 0 0 0 205.4 215zm389.4-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46 0-39.34 8.34-50.5 24.86l20.85 13.26q11.45-17 31.26-17a34.05 34.05 0 0 1 22.75 8.79A28.14 28.14 0 0 1 487.8 248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44 0-29.65 3.88-39.49 11.77s-14.82 18.31-14.82 31.56a39.74 39.74 0 0 0 13.94 31.27c9.25 8.34 21 12.51 34.79 12.51 16.29 0 29.21-7.3 39-21.89h1v17.72h22.61V250C510.3 233.4 505.3 220.3 495.1 211zM475.9 300.3a37.32 37.32 0 0 1 -26.57 11.16A28.61 28.61 0 0 1 431 305.2a19.41 19.41 0 0 1 -7.77-15.63c0-7 3.22-12.81 9.54-17.42s14.53-7 24.07-7C470 265 480.3 268 487.6 273.9 487.6 284.1 483.7 292.9 475.9 300.3zm-93.65-142A55.71 55.71 0 0 0 341.7 142H279.1V328.7H302.7V253.1h39c16 0 29.5-5.36 40.51-15.93 .88-.89 1.76-1.79 2.65-2.68A54.45 54.45 0 0 0 382.3 158.3zm-16.58 62.23a30.65 30.65 0 0 1 -23.34 9.68H302.7V165h39.63a32 32 0 0 1 22.6 9.23A33.18 33.18 0 0 1 365.7 220.5zM614.3 201 577.8 292.7h-.45L539.9 201H514.2L566 320.5l-29.35 64.32H561L640 201z"], + "google-play": [512, 512, [], "f3ab", "M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"], + "google-plus": [512, 512, [], "f2b3", "M256 8C119.1 8 8 119.1 8 256S119.1 504 256 504 504 392.9 504 256 392.9 8 256 8zM185.3 380a124 124 0 0 1 0-248c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1S142.3 334 185.3 334c32.6 0 64.9-19.1 70.1-53.3H185.3V238.1H302.2a109.2 109.2 0 0 1 1.9 20.7c0 70.8-47.5 121.2-118.8 121.2zM415.5 273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5z"], + "google-plus-g": [640, 512, [], "f0d5", "M386.1 228.5c1.834 9.692 3.143 19.38 3.143 31.96C389.2 370.2 315.6 448 204.8 448c-106.1 0-192-85.92-192-192s85.92-192 192-192c51.86 0 95.08 18.86 128.6 50.29l-52.13 50.03c-14.15-13.62-39.03-29.6-76.49-29.6-65.48 0-118.9 54.22-118.9 121.3 0 67.06 53.44 121.3 118.9 121.3 75.96 0 104.5-54.74 108.1-82.77H204.8v-66.01h181.3zm185.4 6.437V179.2h-56v55.73h-55.73v56h55.73v55.73h56v-55.73H627.2v-56h-55.73z"], + "google-wallet": [448, 512, [], "f1ee", "M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"], + "gratipay": [496, 512, [], "f184", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"], + "grav": [512, 512, [], "f2d6", "M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8 .8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1 .3-6.4 0-13-9.4-24.9 3.9-12.5 .3-22.4 .3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8 .1-.2 .3-.4 .4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7 .3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"], + "gripfire": [384, 512, [], "f3ac", "M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4 .4 3.3 .6 6.7 .6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"], + "grunt": [384, 512, [], "f3ad", "M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1 .7-7.5 2.2-12.8 4-16.6 .4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8 .6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6 .6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1 .4-4.7 .8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5 .9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3 .2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7 .3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7 .5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2 .8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6 .7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4 .1-6.6 .5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4 .3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6 .9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7 .2 .2 .4 .3 .4 .3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1 .4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5 .6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9 .7 .6 1.5 1.2 2.2 1.8l.5 .4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6 .9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3 .3-11.7 .7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2 .9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6 .9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2 .9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"], + "guilded": [448, 512, [], "e07e", "M443.4 64H4.571c0 103.3 22.19 180.1 43.42 222.4C112 414.1 224 448 225.3 448a312.8 312.8 0 0 0 140.6-103.5c25.91-33.92 53.1-87.19 65.92-145.8H171.8c4.14 36.43 22.18 67.95 45.1 86.94h88.59c-17.01 28.21-48.19 54.4-80.46 69.48-31.23-13.26-69.09-46.54-96.55-98.36-26.73-53.83-27.09-105.9-27.09-105.9H437.6A625.9 625.9 0 0 0 443.4 64z"], + "gulp": [256, 512, [], "f3ae", "M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7 .9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3 .2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5 .9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9 .1-1.8 .3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6 .8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5 .6 .2 1.1 .4 1.6 .7 2.6 1.8 1.6 4.5 .3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3 .5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4 .5 3.2 1.5 1.7 2.2 1.3 4.5 .4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9 .9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2 .4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3 .5-.4 .9-.6 .6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3 .8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7 .2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3 .9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3 .2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8 .1 26.3 .4l12.6-48.7L228.1 .6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1 .1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2 .8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2 .1-.3l.2-.7c-1.8 .6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7 .1 13.9-1.6 13.9-3.7z"], + "hacker-news": [448, 512, [], "f1d4", "M0 32v448h448V32H0zm21.2 197.2H21c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"], + "hackerrank": [512, 512, [], "f5f7", "M477.5 128C463 103.1 285.1 0 256.2 0S49.25 102.8 34.84 128s-14.49 230.8 0 256 192.4 128 221.3 128S463 409.1 477.5 384s14.51-231 .01-256zM316.1 414.2c-4 0-40.91-35.77-38-38.69 .87-.87 6.26-1.48 17.55-1.83 0-26.23 .59-68.59 .94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88 .23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11 .92-33.44 3-84-.15-212.7v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87 .87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.4h80.26c0-4.55 .39-34.74-1.2-83.64-.1-3.39 .95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.6 336 341.3 336 373.7c8.87 .35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"], + "hashnode": [512, 512, [], "e499", "M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z"], + "hips": [640, 512, [], "f452", "M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7 .9-2.7 2.7v279.2c0 1.9 .9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5 .4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4 .2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3 .7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8 .6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7 .1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2 .1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"], + "hire-a-helper": [512, 512, [], "f3b0", "M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4 .1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"], + "hive": [512, 512, [], "e07f", "M260.4 254.9 131.5 33.1a2.208 2.208 0 0 0 -3.829 .009L.3 254.9A2.234 2.234 0 0 0 .3 257.1L129.1 478.9a2.208 2.208 0 0 0 3.83-.009L260.4 257.1A2.239 2.239 0 0 0 260.4 254.9zm39.08-25.71a2.19 2.19 0 0 0 1.9 1.111h66.51a2.226 2.226 0 0 0 1.9-3.341L259.1 33.11a2.187 2.187 0 0 0 -1.9-1.111H190.7a2.226 2.226 0 0 0 -1.9 3.341zM511.7 254.9 384.9 33.11A2.2 2.2 0 0 0 382.1 32h-66.6a2.226 2.226 0 0 0 -1.906 3.34L440.7 256 314.5 476.7a2.226 2.226 0 0 0 1.906 3.34h66.6a2.2 2.2 0 0 0 1.906-1.112L511.7 257.1A2.243 2.243 0 0 0 511.7 254.9zM366 284.9H299.5a2.187 2.187 0 0 0 -1.9 1.111l-108.8 190.6a2.226 2.226 0 0 0 1.9 3.341h66.51a2.187 2.187 0 0 0 1.9-1.111l108.8-190.6A2.226 2.226 0 0 0 366 284.9z"], + "hooli": [640, 512, [], "f427", "M144.5 352l38.3 .8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4 .8c36.5 12.5 69.9 14.2 94.7 7.2-19.9 .2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3 .1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"], + "hornbill": [512, 512, [], "f592", "M76.38 370.3a37.8 37.8 0 1 1 -32.07-32.42c-78.28-111.3 52-190.5 52-190.5-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49 .93 64.06 39.81 72.87a140.4 140.4 0 0 0 131.7 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.9-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0 -31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.4 140.4 0 0 1 207 132.7c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.6-54.06zm304.2 134.2a37.94 37.94 0 1 0 -53.84-28.7C403 126.1 344.9 99 251.3 100.3l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.4 140.4 0 0 1 130.5 88.76c39.1 9 105.1 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.4-81.16 49-194.6a37.45 37.45 0 0 0 19.31-3.5zM374.1 436.2c21.43-32.46 46.42-89.69 45.14-179.7l-19.52 .14c.08 2.06 .3 4.07 .3 6.15a140.3 140.3 0 0 1 -91.39 131.4c-8.85 38.95-31.44 106.7-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.3 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"], + "hotjar": [448, 512, [], "f3b1", "M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"], + "houzz": [448, 512, [], "f27c", "M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"], + "html5": [384, 512, [], "f13b", "M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"], + "hubspot": [512, 512, [], "f3b2", "M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"], + "ideal": [576, 512, [], "e013", "M125.6 165.5a49.07 49.07 0 1 0 49.06 49.06A49.08 49.08 0 0 0 125.6 165.5zM86.15 425.8h78.94V285.3H86.15zm151.5-211.6c0-20-10-22.53-18.74-22.53H204.8V237.5h14.05C228.6 237.5 237.6 234.7 237.6 214.2zm201.7 46V168.9h22.75V237.5h33.69C486.5 113.1 388.6 86.19 299.7 86.19H204.8V169h14c25.6 0 41.5 17.35 41.5 45.26 0 28.81-15.52 46-41.5 46h-14V425.9h94.83c144.6 0 194.9-67.16 196.7-165.6zm-109.8 0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51zm74.66 0-5.16-17.67H369.3l-5.18 17.67H340.5L368 168.9h32.35l27.53 91.34zM299.6 32H32V480H299.6c161.9 0 251-79.73 251-224.5C550.6 172 518 32 299.6 32zm0 426.9H53.07V53.07H299.6c142.1 0 229.9 64.61 229.9 202.4C529.5 389.6 448.5 458.9 299.6 458.9zm83.86-264.9L376 219.9H392.4l-7.52-25.81z"], + "imdb": [448, 512, [], "f2d8", "M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z"], + "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], + "instalod": [512, 512, [], "e081", "M153.4 480H387.1L502.6 275.8 204.2 333.2zM504.7 240.1 387.1 32H155.7L360.2 267.9zM124.4 48.81 7.274 256 123.2 461.2 225.6 165.6z"], + "intercom": [448, 512, [], "f7af", "M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"], + "internet-explorer": [512, 512, [], "f26b", "M483 159.7c10.85-24.58 21.42-60.44 21.42-87.87 0-72.72-79.64-98.37-209.7-38.58-107.6-7.181-211.2 73.67-237.1 186.5 30.85-34.86 78.27-82.3 121.1-101.2C125.4 166.9 79.13 228 43.99 291.7 23.25 329.7 0 390.9 0 436.7c0 98.57 92.85 86.5 180.3 42.01 31.42 15.43 66.56 15.57 101.7 15.57 97.12 0 184.2-54.29 216.8-146H377.9c-52.51 88.59-196.8 52.1-196.8-47.44H509.9c6.407-43.58-1.655-95.71-26.85-141.2zM64.56 346.9c17.71 51.15 53.7 95.87 100.3 123.3-88.74 48.94-173.3 29.1-100.3-123.3zm115.1-108.9c2-55.15 50.28-94.87 103.1-94.87 53.42 0 101.1 39.72 103.1 94.87H180.5zm184.5-187.6c21.42-10.29 48.56-22 72.56-22 31.42 0 54.27 21.72 54.27 53.72 0 20-7.427 49.01-14.57 67.87-26.28-42.29-65.99-81.58-112.3-99.59z"], + "invision": [448, 512, [], "f7b0", "M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9 .7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3 .1-14.3 .9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"], + "ioxhost": [640, 512, [], "f208", "M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"], + "itch-io": [512, 512, [], "f83a", "M71.92 34.77C50.2 47.67 7.4 96.84 7 109.7v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.6 32.4 325.8 32 256 32S91.14 33.1 71.92 34.77zm132.3 134.4c-22 38.4-77.9 38.71-99.85 .25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.1 17.73 269.1 80 18.67 302.1 18.12 379.8 0 31.65-32.27 21.32-232 17.75-269.1-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1 -51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.9 436.9 0 0 1 88.18 0C318.2 223 332.9 223 349.3 223c52.33 0 65.22 77.53 83.87 144.4 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.9 8.79-155.6 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.4 83.88-144.4zM256 270.8s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34 .16 23.33 .16 11.65 .54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"], + "itunes": [448, 512, [], "f3b4", "M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1 .5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7 .9-127 2.6-133.7 .4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6 .4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"], + "itunes-note": [384, 512, [], "f3b5", "M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2 .8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6 .2 344.5 1.1 326-1.8 338.5z"], + "java": [384, 512, [], "f4e4", "M277.7 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.8 0 242.8 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1 -2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0 -8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6 .7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.8 509.4 401 461.3 348 437.4zM124.4 396c-78.7 22 47.9 67.4 148.1 24.5a185.9 185.9 0 0 1 -28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.6 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1 -21.1-12.8z"], + "jedi-order": [448, 512, [], "f50e", "M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"], + "jenkins": [512, 512, [], "f3b6", "M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8 .2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2 .7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8 .7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4 .7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4 .7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7 .3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2 .5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8 .7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1 .6-16.5zm-17.2-20c-16.8 .8-26-1.2-38.3-10.8 .2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3 .8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5 .7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2 .5-.4 .8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5 .4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9 .8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8 .6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1 .8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7 .5 0 1 0 1.4 .1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9 .9-36.6-17.1 11.9 .7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"], + "jira": [496, 512, [], "f7b1", "M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"], + "joget": [496, 512, [], "f3b7", "M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"], + "joomla": [448, 512, [], "f1aa", "M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1 .6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6 .6 120.7 .6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"], + "js": [448, 512, [], "f3b8", "M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"], + "jsfiddle": [576, 512, [], "f1cc", "M510.6 237.5c-4.727-2.621-5.664-5.748-6.381-10.78-2.352-16.49-3.539-33.62-9.097-49.1-35.9-99.96-153.1-143.4-246.8-91.65-27.37 15.25-48.97 36.37-65.49 63.9-3.184-1.508-5.458-2.71-7.824-3.686-30.1-12.42-59.05-10.12-85.33 9.167-25.53 18.74-36.42 44.55-32.68 76.41 .355 3.025-1.967 7.621-4.514 9.545-39.71 29.99-56.03 78.07-41.9 124.6 13.83 45.57 57.51 79.8 105.6 81.43 30.29 1.031 60.64 .546 90.96 .539 84.04-.021 168.1 .531 252.1-.48 52.66-.634 96.11-36.87 108.2-87.29 11.54-48.07-11.14-97.3-56.83-122.6zm21.11 156.9c-18.23 22.43-42.34 35.25-71.28 35.65-56.87 .781-113.8 .23-170.7 .23 0 .7-163 .159-163.7 .154-43.86-.332-76.74-19.77-95.18-59.99-18.9-41.24-4.004-90.85 34.19-116.1 9.182-6.073 12.51-11.57 10.1-23.14-5.49-26.36 4.453-47.96 26.42-62.98 22.99-15.72 47.42-16.15 72.03-3.083 10.27 5.45 14.61 11.56 22.2-2.527 14.22-26.4 34.56-46.73 60.67-61.29 97.46-54.37 228.4 7.568 230.2 132.7 .122 8.15 2.412 12.43 9.848 15.89 57.56 26.83 74.46 96.12 35.14 144.5zm-87.79-80.5c-5.848 31.16-34.62 55.1-66.67 55.1-16.95-.001-32.06-6.545-44.08-17.7-27.7-25.71-71.14-74.98-95.94-93.39-20.06-14.89-41.99-12.33-60.27 3.782-49.1 44.07 15.86 121.8 67.06 77.19 4.548-3.96 7.84-9.543 12.74-12.84 8.184-5.509 20.77-.884 13.17 10.62-17.36 26.28-49.33 38.2-78.86 29.3-28.9-8.704-48.84-35.97-48.63-70.18 1.225-22.49 12.36-43.06 35.41-55.97 22.58-12.64 46.37-13.15 66.99 2.474C295.7 280.7 320.5 323.1 352.2 343.5c24.56 15.1 54.25 7.363 68.82-17.51 28.83-49.21-34.59-105-78.87-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.98 6.811-17.33-4.113-12.81-10.35 20.7-28.55 50.46-40.44 83.27-28.21 31.43 11.71 49.11 44.37 42.76 78.19z"], + "kaggle": [320, 512, [], "f5fa", "M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"], + "keybase": [448, 512, [], "f4f5", "M286.2 419a18 18 0 1 0 18 18 18 18 0 0 0 -18-18zm111.9-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0 -47.88-104.1c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.7 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0 -8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93 .54a214 214 0 0 0 -46.29 35.54C14 304.7 14 374 14 429.8v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.3 178.3 0 0 1 -15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.4-61.76 236.3-38.59 34.2 10.05 67.45 .69 84.74-23.84 .72-1 1.2-2.16 1.85-3.22a156.1 156.1 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.3c0-38.58-13-77.46-35.91-110.9zM142.4 128.6l-15.7-.93-1.39 21.79 13.13 .78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1 -11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.4 144.4 0 0 0 -7 19.17zm148.4 172.2a10.51 10.51 0 0 1 -14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1 -11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1 -10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.2s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1 -1.74 13.44zM187.4 419a18 18 0 1 0 18 18 18 18 0 0 0 -18-18z"], + "keycdn": [512, 512, [], "f3ba", "M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5 .7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4 .3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3 .3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2 .7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3 .1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9 .4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1 .8-57.3 24.8-58.2 58.3zM256 160"], + "kickstarter": [448, 512, [], "f3bb", "M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"], + "kickstarter-k": [384, 512, [], "f3bc", "M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"], + "korvue": [446, 512, [], "f42f", "M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"], + "laravel": [512, 512, [], "f3bd", "M504.4 115.8a5.72 5.72 0 0 0 -.28-.68 8.52 8.52 0 0 0 -.53-1.25 6 6 0 0 0 -.54-.71 9.36 9.36 0 0 0 -.72-.94c-.23-.22-.52-.4-.77-.6a8.84 8.84 0 0 0 -.9-.68L404.4 55.55a8 8 0 0 0 -8 0L300.1 111h0a8.07 8.07 0 0 0 -.88 .69 7.68 7.68 0 0 0 -.78 .6 8.23 8.23 0 0 0 -.72 .93c-.17 .24-.39 .45-.54 .71a9.7 9.7 0 0 0 -.52 1.25c-.08 .23-.21 .44-.28 .68a8.08 8.08 0 0 0 -.28 2.08V223.2l-80.22 46.19V63.44a7.8 7.8 0 0 0 -.28-2.09c-.06-.24-.2-.45-.28-.68a8.35 8.35 0 0 0 -.52-1.24c-.14-.26-.37-.47-.54-.72a9.36 9.36 0 0 0 -.72-.94 9.46 9.46 0 0 0 -.78-.6 9.8 9.8 0 0 0 -.88-.68h0L115.6 1.07a8 8 0 0 0 -8 0L11.34 56.49h0a6.52 6.52 0 0 0 -.88 .69 7.81 7.81 0 0 0 -.79 .6 8.15 8.15 0 0 0 -.71 .93c-.18 .25-.4 .46-.55 .72a7.88 7.88 0 0 0 -.51 1.24 6.46 6.46 0 0 0 -.29 .67 8.18 8.18 0 0 0 -.28 2.1v329.7a8 8 0 0 0 4 6.95l192.5 110.8a8.83 8.83 0 0 0 1.33 .54c.21 .08 .41 .2 .63 .26a7.92 7.92 0 0 0 4.1 0c.2-.05 .37-.16 .55-.22a8.6 8.6 0 0 0 1.4-.58L404.4 400.1a8 8 0 0 0 4-6.95V287.9l92.24-53.11a8 8 0 0 0 4-7V117.9A8.63 8.63 0 0 0 504.4 115.8zM111.6 17.28h0l80.19 46.15-80.2 46.18L31.41 63.44zm88.25 60V278.6l-46.53 26.79-33.69 19.4V123.5l46.53-26.79zm0 412.8L23.37 388.5V77.32L57.06 96.7l46.52 26.8V338.7a6.94 6.94 0 0 0 .12 .9 8 8 0 0 0 .16 1.18h0a5.92 5.92 0 0 0 .38 .9 6.38 6.38 0 0 0 .42 1v0a8.54 8.54 0 0 0 .6 .78 7.62 7.62 0 0 0 .66 .84l0 0c.23 .22 .52 .38 .77 .58a8.93 8.93 0 0 0 .86 .66l0 0 0 0 92.19 52.18zm8-106.2-80.06-45.32 84.09-48.41 92.26-53.11 80.13 46.13-58.8 33.56zm184.5 4.57L215.9 490.1V397.8L346.6 323.2l45.77-26.15zm0-119.1L358.7 250l-46.53-26.79V131.8l33.69 19.4L392.4 178zm8-105.3-80.2-46.17 80.2-46.16 80.18 46.15zm8 105.3V178L455 151.2l33.68-19.4v91.39h0z"], + "lastfm": [512, 512, [], "f202", "M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"], + "leanpub": [576, 512, [], "f212", "M386.5 111.5l15.1 248.1-10.98-.275c-36.23-.824-71.64 8.783-102.7 27.1-31.02-19.21-66.42-27.1-102.7-27.1-45.56 0-82.07 10.7-123.5 27.72L93.12 129.6c28.55-11.8 61.48-18.11 92.23-18.11 41.17 0 73.84 13.18 102.7 42.54 27.72-28.27 59.01-41.72 98.54-42.54zM569.1 448c-25.53 0-47.49-5.215-70.54-15.65-34.31-15.65-69.99-24.98-107.9-24.98-38.98 0-74.93 12.9-102.7 40.62-27.72-27.72-63.68-40.62-102.7-40.62-37.88 0-73.56 9.333-107.9 24.98C55.24 442.2 32.73 448 8.303 448H6.93L49.47 98.86C88.73 76.63 136.5 64 181.8 64 218.8 64 256.1 71.68 288 93.1 319 71.68 357.2 64 394.2 64c45.29 0 93.05 12.63 132.3 34.86L569.1 448zm-43.37-44.74l-34.04-280.2c-30.74-13.1-67.25-21.41-101-21.41-38.43 0-74.39 12.08-102.7 38.7-28.27-26.63-64.23-38.7-102.7-38.7-33.76 0-70.27 7.411-101 21.41L50.3 403.3c47.21-19.49 82.89-33.49 135-33.49 37.6 0 70.82 9.606 102.7 29.64 31.84-20.04 65.05-29.64 102.7-29.64 52.15 0 87.83 13.1 135 33.49z"], + "less": [640, 512, [], "f41d", "M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5 .5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1 .8-4.6 .8-6.2 .8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4 .6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"], + "line": [448, 512, [], "f3c0", "M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1 .5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9 .3 1.6 .9 2.2 .6 .5 1.3 .9 2.2 .9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8 .1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"], + "linkedin": [448, 512, [], "f08c", "M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"], + "linkedin-in": [448, 512, [], "f0e1", "M100.3 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.6 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.3 61.9 111.3 142.3V448z"], + "linode": [448, 512, [], "f2b8", "M366 186.9l-59.5 36.87-.838 36.87-29.33-19.27-39.38 24.3c2.238 55.21 2.483 59.27 2.51 59.5l-97.2 65.36L127.2 285.7l108.1-62.01L195.1 197.8l-75.42 38.55L98.72 93.01 227.8 43.57 136.4 0 10.74 39.38 38.39 174.3l41.9 32.68L48.44 222.1 69.39 323.5 98.72 351.1 77.77 363.7l16.76 78.77L160.7 512c-10.8-74.84-11.66-78.64-11.73-78.77l77.93-55.3c16.76-12.57 15.08-10.89 15.08-10.89l.838 24.3 33.52 28.49-.838-77.09 46.93-33.52 26.82-18.43-2.514 36.03 25.14 17.6 6.7-74.58 58.66-43.58z"], + "linux": [448, 512, [], "f17c", "M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5 .2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4 .2-.8 .7-.6 1.1 .3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6 .2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5 .1-1.3 .6-3.4 1.5-3.2 2.9 .1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7 .1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9 .6 7.9 1.2 11.8 1.2 8.1 2.5 15.7 .8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1 .6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3 .4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4 .7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6 .6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7 .8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4 .6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1 .8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7 .4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6 .8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1 .3-.2 .7-.3 1-.5 .8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"], + "lyft": [512, 512, [], "f3c3", "M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"], + "magento": [448, 512, [], "f3c4", "M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6 .1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"], + "mailchimp": [448, 512, [], "f59e", "M330.6 243.5a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43 .45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0 -30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06 .85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1 .9 .34 1.17 .81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92 .34 4.31 .52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81 .28-15.96zm-218.8 78.9c-1.32 .31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27 .57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0 -.2-2.33c.03 .89 .68-1.3-3.35-.39zm299.7-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.4-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.8 25.78 273.9l14.76 12.51a72.49 72.49 0 0 0 -4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.1 267.9 133.3 322.3 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.6C69.14 252.5 55.78 261.1 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.2C112.4 90.56 186.2 39.68 220.4 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.2 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.8 102.8 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.9 106.9 0 0 1 362.5 421a132.4 132.4 0 0 1 -20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1 -3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0 -1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48 .5 15.89 1.59 22.88 1.88 11.69 .5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49 .29 6.72 1.1 23 1.38 27.63 .63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.5 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.4-21.35 .69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.5 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73 .73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75 .75 0 0 0 1.16 .79c11.49-7.83 31.48-16.22 49-17.3a.77 .77 0 0 1 .52 1.38 41.86 41.86 0 0 0 -7.71 7.74 .75 .75 0 0 0 .59 1.19c12.31 .09 29.66 4.4 41 10.74 .76 .43 .22 1.91-.64 1.72-69.55-15.94-123.1 18.53-134.5 26.83a.76 .76 0 0 1 -1-1.12z"], + "mandalorian": [448, 512, [], "f50f", "M232.3 511.9c-1-3.26-1.69-15.83-1.39-24.58 .55-15.89 1-24.72 1.4-28.76 .64-6.2 2.87-20.72 3.28-21.38 .6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0 -.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.5 109.5 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39 .37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34 .21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1 -1.55 4.26c-1 1-1.14 .91-2.05-.53a14.87 14.87 0 0 1 -1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36 .66 .51 1.35 .34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64 .73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95 .7-3 2.26-18.29 3.33-32.62 .36-4.78 .81-10.5 1-12.71 .83-9.37 1.66-20.35 2.61-34.78 .56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81 .75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0 -2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79 .1 18.55a101.2 101.2 0 0 0 -1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18 .8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.9 132.9 0 0 0 -2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.2 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0 -2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0 -1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0 -2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22 .29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15 .88 .22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51 .68 3 .57 7.05-1.67l4.35-2.4L268.3 5c10.44-.4 10.81-.47 15.26-2.68L288.2 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1 -1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1 -4.09 3.71 13.62 13.62 0 0 0 -4.38 4.78 5.89 5.89 0 0 1 -2.49 2.91 6.88 6.88 0 0 0 -2.45 1.71 67.62 67.62 0 0 1 -7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0 -2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56 .71 8.84a33.45 33.45 0 0 0 -1.06 8.91c0 4.88 .22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09 .11 8.42c.06 4.63 .47 9.53 .92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12 .83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69 .52 12.69-11 22.84l-4 3.49 .07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27 .63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36 .47 2.26 .78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43 .17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1 -1.73-10.79 100.5 100.5 0 0 0 -1.73-10.79 37.53 37.53 0 0 1 -1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62 .62 0 0 1 -1-.14zm-87.18-266.6c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.3 86.25 255 78.55 268c-31 52-6 101.6 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.7zm210.8 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.6 92.46 149.4 4.3 70.64-78.7 91.18-105.3 61.71z"], + "markdown": [640, 512, [], "f60f", "M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"], + "mastodon": [448, 512, [], "f4f6", "M433 179.1c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.6-28.4-290.5 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.6 289.1 40.51 10.7 75.32 13 103.3 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1 -.9-13.9c85.63 20.9 158.6 9.1 178.8 6.7 56.12-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.8-6.1 23.71 27.3 18.4 53 18.4 175z"], + "maxcdn": [512, 512, [], "f136", "M461.1 442.7h-97.4L415.6 200c2.3-10.2 .9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"], + "mdb": [576, 512, [], "f8ca", "M17.37 160.4L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.6H146.7L106 277.7 63.67 160.4zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.5V204.8s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.3-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.6H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.5l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"], + "medapps": [320, 512, [], "f3c6", "M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7 .2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"], + "medium": [640, 512, [62407, "medium-m"], "f23a", "M180.5 74.26C80.81 74.26 0 155.6 0 256S80.82 437.7 180.5 437.7 361 356.4 361 256 280.2 74.26 180.5 74.26zm288.3 10.65c-49.85 0-90.25 76.62-90.25 171.1s40.41 171.1 90.25 171.1 90.25-76.62 90.25-171.1H559C559 161.5 518.6 84.91 468.8 84.91zm139.5 17.82c-17.53 0-31.74 68.63-31.74 153.3s14.2 153.3 31.74 153.3S640 340.6 640 256C640 171.4 625.8 102.7 608.3 102.7z"], + "medrt": [544, 512, [], "f3c8", "M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"], + "meetup": [512, 512, [], "f2e0", "M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1 .9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9 .6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3 .9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"], + "megaport": [496, 512, [], "f5a3", "M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"], + "mendeley": [640, 512, [], "f7b3", "M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4 .7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1 .1-.2 .2-.3 .4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"], + "meta": [640, 512, [], "e49b", "M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z"], + "microblog": [448, 512, [], "e01a", "M399.4 362.2c29.49-34.69 47.1-78.34 47.1-125.8C446.5 123.5 346.9 32 224 32S1.54 123.5 1.54 236.4 101.1 440.9 224 440.9a239.3 239.3 0 0 0 79.44-13.44 7.18 7.18 0 0 1 8.12 2.56c18.58 25.09 47.61 42.74 79.89 49.92a4.42 4.42 0 0 0 5.22-3.43 4.37 4.37 0 0 0 -.85-3.62 87 87 0 0 1 3.69-110.7zM329.5 212.4l-57.3 43.49L293 324.8a6.5 6.5 0 0 1 -9.94 7.22L224 290.9 164.9 332a6.51 6.51 0 0 1 -9.95-7.22l20.79-68.86-57.3-43.49a6.5 6.5 0 0 1 3.8-11.68l71.88-1.51 23.66-67.92a6.5 6.5 0 0 1 12.28 0l23.66 67.92 71.88 1.51a6.5 6.5 0 0 1 3.88 11.68z"], + "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], + "mix": [448, 512, [], "f3cb", "M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"], + "mixcloud": [640, 512, [], "f289", "M212.1 346.6H179.8V195.1L185.1 173.5H175.3L137.1 346.6H76.11L37.73 173.5H27.28L33.19 195.1V346.6H0V165H65.65L102.2 338.1H110.7L147.3 165H212.1L212.1 346.6zM544.5 283.6L458.4 345.7V307.5L531.3 255.8L458.4 204V165.9L544.5 228.2H553.7L640 165.9V204L566.9 255.8L640 307.5V345.7L553.7 283.6H544.5zM430.2 272.3H248.1V239.3H430.2V272.3z"], + "mixer": [512, 512, [], "e056", "M114.6 76.07a45.71 45.71 0 0 0 -67.51-6.41c-17.58 16.18-19 43.52-4.75 62.77l91.78 123L41.76 379.6c-14.23 19.25-13.11 46.59 4.74 62.77A45.71 45.71 0 0 0 114 435.9L242.9 262.7a12.14 12.14 0 0 0 0-14.23zM470.2 379.6 377.9 255.4l91.78-123c14.22-19.25 12.83-46.59-4.75-62.77a45.71 45.71 0 0 0 -67.51 6.41l-128 172.1a12.14 12.14 0 0 0 0 14.23L398 435.9a45.71 45.71 0 0 0 67.51 6.41C483.4 426.2 484.5 398.8 470.2 379.6z"], + "mizuni": [496, 512, [], "f3cc", "M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"], + "modx": [448, 512, [], "f285", "M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"], + "monero": [496, 512, [], "f3d0", "M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"], + "napster": [496, 512, [], "f3d2", "M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9 .1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1 .1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7 .2-158.2V93.2c-17.3 .5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5 .1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"], + "neos": [512, 512, [], "f612", "M415.4 512h-95.11L212.1 357.5v91.1L125.7 512H28V29.82L68.47 0h108.1l123.7 176.1V63.45L386.7 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.6h84.79l52.35-38.17h-78.27L69 13zm82.54 466.6l80-58.78v-101l-79.76-114.4v220.9L49 501.9h72.34zM80.63 10.77l310.6 442.6h82.37V10.77h-79.75v317.6L170.9 10.77zM311 191.6l72 102.8V15.93l-72 53v122.7z"], + "nfc-directional": [512, 512, [], "e530", "M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z"], + "nfc-symbol": [576, 512, [], "e531", "M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z"], + "nimblr": [384, 512, [], "f5a8", "M246.6 299.3c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.3c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.8 159C157 159 89.45 178.8 59.25 227L14 0v335.5C14 433.1 93.61 512 191.8 512s177.8-78.95 177.8-176.5S290.1 159 191.8 159zm0 308.1c-73.27 0-132.5-58.9-132.5-131.6s59.24-131.6 132.5-131.6 132.5 58.86 132.5 131.5S265 467.1 191.8 467.1z"], + "node": [640, 512, [], "f419", "M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4 .1l14.8 8.8c.5 .3 1.3 .3 1.8 0L375 408c.5-.3 .9-.9 .9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6 .3-.9 1-.9 1.6v66.7c0 .6 .4 1.2 .9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9 .7-1.7 1.7-1.7h7.3c.9 0 1.7 .7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6 .2 .8 .8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5 .3-.4 .5-.8 .4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7 .7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7 .1 1.8 1.2 2.1 2.8 .1 1 .3 2.7 .6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3 .4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3 .7 2.5 1.8 3.2 1.1 .7 2.5 .7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6 .3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1 .7 2.6 .7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6 .3-.9 .9-.9 1.6v24.3c0 .7 .4 1.3 .9 1.6l21 12.1c.6 .3 1.3 .3 1.8 0l21-12.1c.6-.3 .9-.9 .9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3 .7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1 .7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4 .3-.7 .7-.7 1.2v13.6c0 .5 .3 1 .7 1.2l11.8 6.8c.4 .3 1 .3 1.4 0L584 235c.4-.3 .7-.7 .7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7 .1-.5 .2-1.1 .2-1.7zm-74.3-124.9l-.8 .5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"], + "node-js": [448, 512, [], "f3d3", "M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6 .4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2 .7 376.3 .7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8 .5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"], + "npm": [576, 512, [], "f3d4", "M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"], + "ns8": [640, 512, [], "f3d5", "M104.3 269.2h26.07V242.1H104.3zm52.47-26.18-.055-26.18v-.941a39.33 39.33 0 0 0 -78.64 .941v.166h26.4v-.166a12.98 12.98 0 0 1 25.96 0v26.18zm52.36 25.85a91.1 91.1 0 0 1 -91.1 91.1h-.609a91.1 91.1 0 0 1 -91.1-91.1H0v.166A117.3 117.3 0 0 0 117.4 386.3h.775A117.3 117.3 0 0 0 235.5 268.8V242.8H209.1zm-157.2 0a65.36 65.36 0 0 0 130.7 0H156.3a39.02 39.02 0 0 1 -78.04 0V242.9H51.97v-26.62A65.42 65.42 0 0 1 182.8 217.5v25.29h26.34V217.5a91.76 91.76 0 0 0 -183.5 0v25.4H51.91zm418.4-71.17c13.67 0 24.57 6.642 30.05 18.26l.719 1.549 23.25-11.51-.609-1.439c-8.025-19.26-28.5-31.27-53.41-31.27-23.13 0-43.61 11.4-50.97 28.45-.123 26.88-.158 23.9 0 24.85 4.7 11.01 14.56 19.37 28.67 24.24a102 102 0 0 0 19.81 3.984c5.479 .72 10.63 1.384 15.83 3.1 6.364 2.1 10.46 5.257 12.84 9.851v9.851c-3.708 7.527-13.78 12.34-25.79 12.34-14.33 0-25.96-6.918-31.93-19.04l-.72-1.494L415 280.9l.553 1.439c7.915 19.43 29.61 32.04 55.29 32.04 23.63 0 44.61-11.4 52.3-28.45l.166-25.9-.166-.664c-4.87-11.01-15.22-19.65-28.94-24.24-7.693-2.712-14.34-3.6-20.7-4.427a83.78 83.78 0 0 1 -14.83-2.878c-6.31-1.937-10.4-5.092-12.62-9.63v-8.412C449.5 202.4 458.1 197.7 470.3 197.7zM287.6 311.3h26.07v-68.4H287.6zm352.3-53.3c-2.933-6.254-8.3-12.01-15.44-16.71A37.99 37.99 0 0 0 637.4 226l.166-25.35-.166-.664C630 184 610.7 173.3 589.3 173.3S548.5 184 541.1 199.1l-.166 25.35 .166 .664a39.64 39.64 0 0 0 13.01 15.33c-7.2 4.7-12.51 10.46-15.44 16.71l-.166 28.89 .166 .72c7.582 15.99 27.89 26.73 50.58 26.73s43.06-10.74 50.58-26.73l.166-28.89zm-73.22-50.81c3.6-6.31 12.56-10.52 22.58-10.52s19.04 4.206 22.64 10.52v13.73c-3.542 6.2-12.56 10.35-22.64 10.35s-19.09-4.15-22.58-10.35zm47.32 72.17c-3.764 6.641-13.34 10.9-24.68 10.9-11.13 0-20.98-4.372-24.68-10.9V263.3c3.708-6.309 13.5-10.52 24.68-10.52 11.35 0 20.92 4.15 24.68 10.52zM376.4 265.1l-59.83-89.71h-29v40.62h26.51v.387l62.54 94.08H402.3V176.2H376.4z"], + "nutritionix": [400, 512, [], "f3d6", "M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"], + "octopus-deploy": [512, 512, [], "e082", "M455.6 349.2c-45.89-39.09-36.67-77.88-16.09-128.1C475.2 134 415.1 34.14 329.9 8.3 237-19.6 134.3 24.34 99.68 117.1a180.9 180.9 0 0 0 -10.99 73.54c1.733 29.54 14.72 52.97 24.09 80.3 17.2 50.16-28.1 92.74-66.66 117.6-46.81 30.2-36.32 39.86-8.428 41.86 23.38 1.68 44.48-4.548 65.26-15.05 9.2-4.647 40.69-18.93 45.13-28.59C135.9 413.4 111.1 459.5 126.6 488.9c19.1 36.23 67.11-31.77 76.71-45.81 8.591-12.57 42.96-81.28 63.63-46.93 18.86 31.36 8.6 76.39 35.74 104.6 32.85 34.2 51.15-18.31 51.41-44.22 .163-16.41-6.1-95.85 29.9-59.94C405.4 418 436.9 467.8 472.6 463.6c38.74-4.516-22.12-67.97-28.26-78.69 5.393 4.279 53.67 34.13 53.82 9.52C498.2 375.7 468 359.8 455.6 349.2z"], + "odnoklassniki": [320, 512, [], "f263", "M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"], + "old-republic": [496, 512, [], "f510", "M235.8 10.23c7.5-.31 15-.28 22.5-.09 3.61 .14 7.2 .4 10.79 .73 4.92 .27 9.79 1.03 14.67 1.62 2.93 .43 5.83 .98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83 .57 3.14 1.04 6.3 1.4 9.47 .55 3.83 .94 7.69 1.18 11.56 .83 8.34 .84 16.73 .77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.5 246.5 0 0 1 -56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66 .91-9.34 1.73-14.03 2.48-5.25 .66-10.5 1.44-15.79 1.74-6.69 .66-13.41 .84-20.12 .81-6.82 .03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49 .14-3.51 .34-7.01 .7-10.51 .31-3.17 .46-6.37 .92-9.52 .41-2.81 .65-5.65 1.16-8.44 .7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23 .1-18.43 .99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.7-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8 .11 7.14 .38 14.28 1.22 21.37 .62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91 .29 5.81 .61 8.72 .9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.3 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75 .13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1 .9 3.02 .66 6.2 .69 9.31 .02 4.1-.04 8.2 .03 12.3 .14 3.54-.02 7.09 .11 10.63 .08 2.38 .02 4.76 .05 7.14 .16 5.77 .06 11.53 .15 17.3 .11 2.91 .02 5.82 .13 8.74 .03 1.63 .13 3.28-.03 4.91-.91 .12-1.82 .18-2.73 .16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73 .84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.4-20.12c2.74 .74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57 .41 4.54 .44 9.09 .45 13.64 .07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51 .69-7.08 1.08-10.66 1.21-1.85 .06-3.72 .16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73 .14-7.45 .1-11.17 .19-7.02 .02-14.05 .21-21.07 .03-2.38-.03-4.76 .03-7.14 .17-5.07-.04-10.14 .14-15.21 .1-2.99-.24-6.04 .51-8.96 .66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46 .86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61 .93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07 .32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.3-.01 221 0 1.35-.08 2.7 .04 4.04 .13 1.48 .82 2.83 1.47 4.15 .86 1.66 1.78 3.34 3.18 4.62 .85 .77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57 .96-1.51 1.68-3.16 2.28-4.85 .76-2.13 .44-4.42 .54-6.63 .14-4.03-.02-8.06 .14-12.09 .03-5.89 .03-11.77 .06-17.66 .14-3.62 .03-7.24 .11-10.86 .15-4.03-.02-8.06 .14-12.09 .03-5.99 .03-11.98 .07-17.97 .14-3.62 .02-7.24 .11-10.86 .14-3.93-.02-7.86 .14-11.78 .03-5.99 .03-11.98 .06-17.97 .16-3.94-.01-7.88 .19-11.82 .29 1.44 .13 2.92 .22 4.38 .19 3.61 .42 7.23 .76 10.84 .32 3.44 .44 6.89 .86 10.32 .37 3.1 .51 6.22 .95 9.31 .57 4.09 .87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21 .27 .25 .55 .51 .88 .71 .6 .25 1.31-.07 1.7-.57 .71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31 .7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11 .75 19.56 1.85 3.69 .58 7.4 1.17 11.13 1.41 3.74 .1 7.48 .05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46 .37 2.96 .46 4.45 .6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66 .24-9.32 .36-13.98 .36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11 .73 6.32 .47 9.47 .81 2.77 .28 5.56 .2 8.34 .3 5.05 .06 10.11 .04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83 .61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52 .67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13 .56-3.98 .83-7.99 1.31-11.97 .87-10.64 1.9-21.27 2.24-31.94 .08-1.86 .24-3.71 .25-5.57 .01-4.35 .25-8.69 .22-13.03-.01-2.38-.01-4.76 0-7.13 .05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64 .07-2.99 .7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06 .71-.12 1.07-.19 .19 1.79 .09 3.58 .1 5.37v38.13c-.01 1.74 .13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32 .09-4.98-.03-.03-.39-.26-.91 .16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54 .04-.56 .02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2 .06 15.3-.12 3.36-.13 6.73 .08 10.09-.07 .12-.39 .26-.77 .37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36 .05 .72 .12 1.08 .2 .98 3.85 1.73 7.76 2.71 11.61 .36 1.42 .56 2.88 1.03 4.27 2.53 .18 5.07-.01 7.61 .05 5.16 .12 10.33 .12 15.49 .07 .76-.01 1.52 .03 2.28 .08-.04 .36-.07 .72-.1 1.08-1.82 .83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57 .17-1.12 .42-1.67 .64-.15 .55-.18 1.12-.12 1.69 .87 .48 1.82 .81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6 .38 .13 .78 .27 1.13 .49 .4 .27 .23 .79 .15 1.18-1.66 .13-3.31 .03-4.97 .04-5.17 .01-10.33-.01-15.5 .01-1.61 .03-3.22-.02-4.82 .21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36 .01-.71 .02-1.06 .06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58 .11-5.37zM65.05 168.3c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83 .96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67 .99 2.9 1.59 5.91 2.17 8.92 .15 .75 .22 1.52 .16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11 .78-8.29 .99-12.46 1.08-10.25 .24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43 .11-6.18 .25-12.37 1.07-18.5 .4-2.86 .67-5.74 1.15-8.6 .98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.7-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05 .02 1.76 .07 3.52 .11 5.29 .13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51 .25-2.99 .53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05 .63-2.87 1.04-5.78 1.52-8.68 .87-6.09 1.59-12.22 1.68-18.38 .12-6.65 .14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"], + "opencart": [640, 512, [], "f23d", "M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"], + "openid": [448, 512, [], "f19b", "M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"], + "opera": [496, 512, [], "f26a", "M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1 .3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"], + "optin-monster": [576, 512, [], "f23c", "M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7 .3-6.5 .3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8 .9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8 .5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4 .5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3 .5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1 .2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3 .3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1 .5-8.1 .8-11.6 .8-1.9-21.9-6.8-44-14.3-64.6 3.7 .3 8.1 .3 11.8 .3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1 .8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3 .3 26.6 .3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6 .8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3 .3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2 .8 2.2 .8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8 .3 1.9 .5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3 .9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5 .9-8.4-20.2-23.5-29.1-25.1z"], + "orcid": [512, 512, [], "f8d2", "M294.8 188.2h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.8h-29.84v-207.5h29.84zm-14.92-231.1a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1 -19.57 19.57zM300 369h-81V161.3h80.6c76.73 0 110.4 54.83 110.4 103.8C410 318.4 368.4 369 300 369z"], + "osi": [512, 512, [], "f41a", "M8 266.4C10.3 130.6 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0 -64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6 .6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4 .8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3 .6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"], + "padlet": [640, 512, [], "e4a0", "M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z"], + "page4": [496, 512, [], "f3d7", "M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"], + "pagelines": [384, 512, [], "f18c", "M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4 .5 1.6 .5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"], + "palfed": [576, 512, [], "f3d8", "M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8 .7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4 .9 74.4 2.7 100v.2c.2 3.4 .6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4 .2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9 .2 2.5 .4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"], + "patreon": [512, 512, [], "f3d9", "M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"], + "paypal": [384, 512, [], "f1ed", "M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4 .7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9 .7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"], + "perbyte": [448, 512, [], "e083", "M305.3 284.6H246.6V383.3h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.33T305.3 284.6zM149.4 128.7H90.72v98.72h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.34T149.4 128.7zM366.6 32H81.35A81.44 81.44 0 0 0 0 113.4V398.6A81.44 81.44 0 0 0 81.35 480H366.6A81.44 81.44 0 0 0 448 398.6V113.4A81.44 81.44 0 0 0 366.6 32zm63.63 366.6a63.71 63.71 0 0 1 -63.63 63.63H81.35a63.71 63.71 0 0 1 -63.63-63.63V113.4A63.71 63.71 0 0 1 81.35 49.72H366.6a63.71 63.71 0 0 1 63.63 63.63zM305.3 128.7H246.6v98.72h58.71q24.42 0 38.19-13.77t13.77-36.11q0-21.83-14.03-35.34T305.3 128.7z"], + "periscope": [448, 512, [], "f3da", "M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3 .1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"], + "phabricator": [496, 512, [], "f3db", "M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4 .5 .2 28.9 .2 28.9l-9.1 9.1s-29.2-.9-29.7 .4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5 .5 29.5 .5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4 .6 20.7-23.5 20.7-23.5l13.1 .2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2 .9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3 .8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1 .1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"], + "phoenix-framework": [640, 512, [], "f3dc", "M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4 .1-.8 .2-1.1 .3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8 .6-1.5 1.2-2.2 1.8 .1 .2 .1 .3 .2 .5 .8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7 .3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1 .2-.3 .3-.4 .5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6 .1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2 .1-.2 2.1 .6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4 .2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7 .3 .2 .4 .5 .7 .9-.5 0-.7 .1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1 .2-.1 .4-.2 .6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2 .1-.3 .1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7 .4-.1 .9 0 1.5 .3-.6 .4-1.2 .9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4 .6-.8 .9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5 .1-.1 .2 0 .4 .4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7 .5-.2 .8-.4 1.1-.4 13.1 .1 26.1 .7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"], + "phoenix-squadron": [512, 512, [], "f511", "M96 63.38C142.5 27.25 201.6 7.31 260.5 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.2 27 191 48.84 162.2 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3 .3a203 203 0 0 1 -35.82 15.37c-20 6.17-42.16 8.46-62.1 .78 12.79 1.73 26.06 .31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.6 526.6 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0 -51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28 .75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.6 183.6 0 0 0 -14.21-104.6c20.78 32 32.34 69.58 35.71 107.5 .49 12.73 .49 25.51 0 38.23A243.2 243.2 0 0 1 482 371.3c-26.12 47.34-68 85.63-117.2 108-78.29 36.23-174.7 31.32-248-14.68A248.3 248.3 0 0 1 25.36 366 238.3 238.3 0 0 1 0 273.1v-31.34C3.93 172 40.87 105.8 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"], + "php": [640, 512, [], "f457", "M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"], + "pied-piper": [480, 512, [], "f2ae", "M455.9 23.2C429.2 30 387.8 51.69 341.4 90.66A206 206 0 0 0 240 64C125.1 64 32 157.1 32 272s93.13 208 208 208 208-93.13 208-208a207.3 207.3 0 0 0 -58.75-144.8 155.4 155.4 0 0 0 -17 27.4A176.2 176.2 0 0 1 417.1 272c0 97.66-79.44 177.1-177.1 177.1a175.8 175.8 0 0 1 -87.63-23.4c82.94-107.3 150.8-37.77 184.3-226.6 5.79-32.62 28-94.26 126.2-160.2C471 33.45 465.4 20.8 455.9 23.2zM125 406.4A176.7 176.7 0 0 1 62.9 272C62.9 174.3 142.4 94.9 240 94.9a174 174 0 0 1 76.63 17.75C250.6 174.8 189.8 265.5 125 406.4z"], + "pied-piper-alt": [576, 512, [], "f1a8", "M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3 .9 .6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9 .6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"], + "pied-piper-hat": [640, 512, [], "f4e5", "M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9 .6 2.8 .8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1 .6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"], + "pied-piper-pp": [448, 512, [], "f1a7", "M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4 .2-9.6 .7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"], + "pinterest": [496, 512, [], "f0d2", "M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3 .8-3.4 5-20.3 6.9-28.1 .6-2.5 .3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"], + "pinterest-p": [384, 512, [], "f231", "M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"], + "pix": [512, 512, [], "e43a", "M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z"], + "playstation": [576, 512, [], "f3df", "M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9 .6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"], + "product-hunt": [512, 512, [], "f288", "M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"], + "pushed": [432, 512, [], "f3e1", "M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"], + "python": [448, 512, [], "f3e2", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4 .1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8 .1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3 .1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"], + "qq": [448, 512, [], "f1d6", "M433.8 420.4c-11.53 1.393-44.86-52.74-44.86-52.74 0 31.34-16.14 72.25-51.05 101.8 16.84 5.192 54.84 19.17 45.8 34.42-7.316 12.34-125.5 7.881-159.6 4.037-34.12 3.844-152.3 8.306-159.6-4.037-9.045-15.25 28.92-29.21 45.78-34.42-34.92-29.54-51.06-70.44-51.06-101.8 0 0-33.33 54.13-44.86 52.74-5.37-.65-12.42-29.64 9.347-99.7 10.26-33.02 21.1-60.48 40.14-105.8C60.68 98.06 108.1 .006 224 0c113.7 .006 163.2 96.13 160.3 214.1 18.12 45.22 29.91 72.85 40.14 105.8 21.77 70.06 14.72 99.05 9.346 99.7z"], + "quinscape": [512, 512, [], "f459", "M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.4 237.4 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4 .1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0 -99.2-99.2z"], + "quora": [448, 512, [], "f2c4", "M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7 .1 41.8-5.4 75.6-16.7 100.5z"], + "r-project": [581, 512, [], "f4f7", "M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"], + "raspberry-pi": [407, 512, [], "f7bb", "M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2 .7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6 .8C271.6 .6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9 .1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6 .1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7 .8 14.1 .6 23.9 .8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8 .4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2 .1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7 .9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6 .9 2.7 3.6 4.4 6.7 5.8-15.4 .9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8 .7 8.3 .1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6 .4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3 .4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6 .2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9 .5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6 .2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"], + "ravelry": [512, 512, [], "f2d9", "M498.3 234.2c-1.208-10.34-1.7-20.83-3.746-31a310.3 310.3 0 0 0 -9.622-36.6 184.1 184.1 0 0 0 -30.87-57.5 251.2 251.2 0 0 0 -18.82-21.69 237.4 237.4 0 0 0 -47.11-36.12A240.8 240.8 0 0 0 331.4 26.65c-11.02-3.1-22.27-5.431-33.51-7.615-6.78-1.314-13.75-1.667-20.63-2.482-.316-.036-.6-.358-.9-.553q-16.14 .009-32.29 .006c-2.41 .389-4.808 .925-7.236 1.15a179.3 179.3 0 0 0 -34.26 7.1 221.5 221.5 0 0 0 -39.77 16.35 281.4 281.4 0 0 0 -38.08 24.16c-6.167 4.61-12.27 9.36-17.97 14.52C96.54 88.49 86.34 97.72 76.79 107.6a243.9 243.9 0 0 0 -33.65 43.95 206.5 206.5 0 0 0 -20.49 44.6 198.2 198.2 0 0 0 -7.691 34.76A201.1 201.1 0 0 0 13.4 266.4a299.7 299.7 0 0 0 4.425 40.24 226.9 226.9 0 0 0 16.73 53.3 210.5 210.5 0 0 0 24 39.53 213.6 213.6 0 0 0 26.36 28.42A251.3 251.3 0 0 0 126.7 458.5a287.8 287.8 0 0 0 55.9 25.28 269.5 269.5 0 0 0 40.64 9.835c6.071 1.01 12.27 1.253 18.41 1.873a4.149 4.149 0 0 1 1.19 .56h32.29c2.507-.389 5-.937 7.527-1.143 16.34-1.332 32.11-5.335 47.49-10.72A219.1 219.1 0 0 0 379.1 460.3c9.749-6.447 19.4-13.08 28.74-20.1 5.785-4.348 10.99-9.5 16.3-14.46 3.964-3.7 7.764-7.578 11.51-11.5a232.2 232.2 0 0 0 31.43-41.64c9.542-16.05 17.35-32.9 22.3-50.93 2.859-10.41 4.947-21.05 7.017-31.65 1.032-5.279 1.251-10.72 1.87-16.09 .036-.317 .358-.6 .552-.9V236A9.757 9.757 0 0 1 498.3 234.2zm-161.1-1.15s-16.57-2.98-28.47-2.98c-27.2 0-33.57 14.9-33.57 37.04V360.8H201.6V170.1H275.1v31.93c8.924-26.82 26.77-36.19 62.04-36.19z"], + "react": [512, 512, [], "f41b", "M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1 .9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2 .6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6 .4 19.5 .6 29.5 .6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8 .9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"], + "reacteurope": [576, 512, [], "f75d", "M250.6 211.7l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2 .1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2 .1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0 -4.2-3.4h-6.9a3.68 3.68 0 0 0 -4 3.4l-11 59.2c-.5 2.7 .9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 .04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0 -2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0 -2-1.9h-22.2a1.62 1.62 0 0 0 -2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0 -2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0 -2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0 -2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.4 364.4 0 0 0 -35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.8 587.8 0 0 0 -84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2 .1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0 -93.9 .9 547.8 547.8 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.3 598.3 0 0 0 -50.7 64.2 569.7 569.7 0 0 0 -84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.4 695.4 0 0 0 93.9-.9 547.8 547.8 0 0 1 -42.2 52.4q5.1 5.25 10.2 10.2a588.5 588.5 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1 -10.7-5.7l-.1 .1a19.61 19.61 0 0 1 -5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1 -72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1 -6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.9 711.9 0 0 1 -112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1 -3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.8 548.8 0 0 1 -72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4 .2-8.4-1a17.58 17.58 0 0 1 -6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.6c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.7 711.7 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1 .1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.7 359.7 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0 -1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0 -1.9-1.9H309a1.81 1.81 0 0 0 -2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0 -2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0 -2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0 -2-1.9h-22.2a1.81 1.81 0 0 0 -2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0 -2-2.06zm-7.4-99.4L286 192l-7.1 .1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"], + "readme": [576, 512, [], "f4d5", "M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"], + "rebel": [512, 512, [], "f1d0", "M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1 .8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7 .8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4 .6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5 .8-2.8 .8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"], + "red-river": [448, 512, [], "f3e3", "M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"], + "reddit": [512, 512, [], "f1a1", "M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"], + "reddit-alien": [512, 512, [], "f281", "M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2 .1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"], + "redhat": [512, 512, [], "f7bc", "M341.5 285.6c33.65 0 82.34-6.94 82.34-47 .22-6.74 .86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.1 228.5 106.1M429 254.8c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.7 .08-235.9-73.65-235.9-122.3a49.55 49.55 0 0 1 4.06-19.72C58.56 200.9 0 208.9 0 260.6c0 84.67 200.6 189 359.5 189 121.8 0 152.5-55.08 152.5-98.58 0-34.21-29.59-73.05-82.93-96.24"], + "renren": [512, 512, [], "f18b", "M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"], + "replyd": [448, 512, [], "f3e6", "M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9 .5-4.4 .7-8.6 .7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"], + "researchgate": [448, 512, [], "f4f8", "M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1 .6-33.6 .8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"], + "resolving": [496, 512, [], "f3e7", "M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"], + "rev": [448, 512, [], "f5b2", "M289.7 274.9a65.57 65.57 0 1 1 -65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.6-5.05h-.13a204.7 204.7 0 0 0 -74.32-153l-45.38 26.2a157.1 157.1 0 0 1 71.81 131.8C381.2 361.5 310.7 432 224.1 432S67 361.5 67 274.9c0-81.88 63-149.3 143-156.4v39.12l108.8-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.6 0 111.6 89.12 202.3 200.1 205v.11h210.2V269.8z"], + "rocketchat": [576, 512, [], "f3e8", "M284 224.8a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 284 224.8zm-110.4 0a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 173.6 224.8zm220.9 0a34.11 34.11 0 1 0 34.32 34.11A34.22 34.22 0 0 0 394.5 224.8zm153.8-55.32c-15.53-24.17-37.31-45.57-64.68-63.62-52.89-34.82-122.4-54-195.7-54a405.1 405.1 0 0 0 -72.03 6.357 238.5 238.5 0 0 0 -49.51-36.59C99.68-11.7 40.86 .711 11.14 11.42A14.29 14.29 0 0 0 5.58 34.78C26.54 56.46 61.22 99.3 52.7 138.3c-33.14 33.9-51.11 74.78-51.11 117.3 0 43.37 17.97 84.25 51.11 118.1 8.526 38.96-26.15 81.82-47.12 103.5a14.28 14.28 0 0 0 5.555 23.34c29.72 10.71 88.55 23.15 155.3-10.2a238.7 238.7 0 0 0 49.51-36.59A405.1 405.1 0 0 0 288 460.1c73.31 0 142.8-19.16 195.7-53.97 27.37-18.05 49.15-39.43 64.68-63.62 17.31-26.92 26.07-55.92 26.07-86.13C574.4 225.4 565.6 196.4 548.3 169.5zM284.1 409.9a345.6 345.6 0 0 1 -89.45-11.5l-20.13 19.39a184.4 184.4 0 0 1 -37.14 27.58 145.8 145.8 0 0 1 -52.52 14.87c.983-1.771 1.881-3.563 2.842-5.356q30.26-55.68 16.33-100.1c-32.99-25.96-52.78-59.2-52.78-95.4 0-83.1 104.3-150.5 232.8-150.5s232.9 67.37 232.9 150.5C517.9 342.5 413.6 409.9 284.1 409.9z"], + "rockrms": [496, 512, [], "f3e9", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2 .2-74.2 .2l101.5 118.9z"], + "rust": [512, 512, [], "e07a", "M508.5 249.8 486.7 236.2c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35 7.35 0 0 0 -2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35 7.35 0 0 0 -4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35 7.35 0 0 0 -6.95-10.39l-25.82 .91q-1.79-2.22-3.61-4.4L439 81.84A7.36 7.36 0 0 0 430.2 73L405 78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35 7.35 0 0 0 -10.39-7L367.7 53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4 25.08a7.35 7.35 0 0 0 -11.54-4.79L326 35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35 7.35 0 0 0 -12.25-2.44l-17.5 18.72c-1.95-.21-3.91-.38-5.88-.55L262.3 3.48a7.35 7.35 0 0 0 -12.5 0L236.2 25.3c-2 .17-3.93 .34-5.88 .55L212.9 7.13a7.35 7.35 0 0 0 -12.25 2.44l-9 24c-1.89 .55-3.79 1.08-5.66 1.68l-20.82-15a7.35 7.35 0 0 0 -11.54 4.79l-4.15 25.41c-1.73 .9-3.45 1.79-5.16 2.73L120.9 42.55a7.35 7.35 0 0 0 -10.39 7l.92 25.81c-1.49 1.19-3 2.39-4.42 3.61L81.84 73A7.36 7.36 0 0 0 73 81.84L78.93 107c-1.23 1.45-2.43 2.93-3.62 4.41l-25.81-.91a7.42 7.42 0 0 0 -6.37 3.26 7.35 7.35 0 0 0 -.57 7.13l10.66 23.41c-.94 1.7-1.83 3.43-2.73 5.16L25.08 153.6a7.35 7.35 0 0 0 -4.79 11.54l15 20.82c-.59 1.87-1.13 3.77-1.68 5.66l-24 9a7.35 7.35 0 0 0 -2.44 12.25l18.72 17.5c-.21 1.95-.38 3.91-.55 5.88L3.48 249.8a7.35 7.35 0 0 0 0 12.5L25.3 275.8c.17 2 .34 3.92 .55 5.87L7.13 299.1a7.35 7.35 0 0 0 2.44 12.25l24 9c.55 1.89 1.08 3.78 1.68 5.65l-15 20.83a7.35 7.35 0 0 0 4.79 11.54l25.42 4.15c.9 1.72 1.79 3.45 2.73 5.14L42.56 391.1a7.35 7.35 0 0 0 .57 7.13 7.13 7.13 0 0 0 6.37 3.26l25.83-.91q1.77 2.22 3.6 4.4L73 430.2A7.36 7.36 0 0 0 81.84 439L107 433.1q2.18 1.83 4.41 3.61l-.92 25.82a7.35 7.35 0 0 0 10.39 6.95l23.43-10.68c1.69 .94 3.42 1.83 5.14 2.73l4.15 25.42a7.34 7.34 0 0 0 11.54 4.78l20.83-15c1.86 .6 3.76 1.13 5.65 1.68l9 24a7.36 7.36 0 0 0 12.25 2.44l17.5-18.72c1.95 .21 3.92 .38 5.88 .55l13.51 21.82a7.35 7.35 0 0 0 12.5 0l13.51-21.82c2-.17 3.93-.34 5.88-.56l17.5 18.73a7.36 7.36 0 0 0 12.25-2.44l9-24c1.89-.55 3.78-1.08 5.65-1.68l20.82 15a7.34 7.34 0 0 0 11.54-4.78l4.15-25.42c1.72-.9 3.45-1.79 5.15-2.73l23.42 10.68a7.35 7.35 0 0 0 10.39-6.95l-.91-25.82q2.22-1.79 4.4-3.61L430.2 439a7.36 7.36 0 0 0 8.84-8.84L433.1 405q1.83-2.17 3.61-4.4l25.82 .91a7.23 7.23 0 0 0 6.37-3.26 7.35 7.35 0 0 0 .58-7.13L458.8 367.7c.94-1.7 1.83-3.43 2.73-5.15l25.42-4.15a7.35 7.35 0 0 0 4.79-11.54l-15-20.83c.59-1.87 1.13-3.76 1.67-5.65l24-9a7.35 7.35 0 0 0 2.44-12.25l-18.72-17.5c.21-1.95 .38-3.91 .55-5.87l21.82-13.51a7.35 7.35 0 0 0 0-12.5zm-151 129.1A13.91 13.91 0 0 0 341 389.5l-7.64 35.67A187.5 187.5 0 0 1 177 424.4l-7.64-35.66a13.87 13.87 0 0 0 -16.46-10.68l-31.51 6.76a187.4 187.4 0 0 1 -16.26-19.21H258.3c1.72 0 2.89-.29 2.89-1.91V309.5c0-1.57-1.17-1.91-2.89-1.91H213.5l.05-34.35H262c4.41 0 23.66 1.28 29.79 25.87 1.91 7.55 6.17 32.14 9.06 40 2.89 8.82 14.6 26.46 27.1 26.46H407a187.3 187.3 0 0 1 -17.34 20.09zm25.77 34.49A15.24 15.24 0 1 1 368 398.1h.44A15.23 15.23 0 0 1 383.2 413.3zm-225.6-.68a15.24 15.24 0 1 1 -15.25-15.25h.45A15.25 15.25 0 0 1 157.6 412.6zM69.57 234.1l32.83-14.6a13.88 13.88 0 0 0 7.06-18.33L102.7 186h26.56V305.7H75.65A187.6 187.6 0 0 1 69.57 234.1zM58.31 198.1a15.24 15.24 0 0 1 15.23-15.25H74a15.24 15.24 0 1 1 -15.67 15.24zm155.2 24.49 .05-35.32h63.26c3.28 0 23.07 3.77 23.07 18.62 0 12.29-15.19 16.7-27.68 16.7zM399 306.7c-9.8 1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4 18.86-11.95 38.46-29.64 38.46-53.26 0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.3A187.5 187.5 0 0 1 221.2 70.06l23.47 24.6a13.82 13.82 0 0 0 19.6 .44l26.26-25a187.5 187.5 0 0 1 128.4 91.43l-18 40.57A14 14 0 0 0 408 220.4l34.59 15.33a187.1 187.1 0 0 1 .4 32.54H423.7c-1.91 0-2.69 1.27-2.69 3.13v8.82C421 301 409.3 305.6 399 306.7zM240 60.21A15.24 15.24 0 0 1 255.2 45h.45A15.24 15.24 0 1 1 240 60.21zM436.8 214a15.24 15.24 0 1 1 0-30.48h.44a15.24 15.24 0 0 1 -.44 30.48z"], + "safari": [512, 512, [], "f267", "M274.7 274.7l-37.38-37.38L166 346zM256 8C119 8 8 119 8 256S119 504 256 504 504 393 504 256 393 8 256 8zM411.9 182.8l14.78-6.13A8 8 0 0 1 437.1 181h0a8 8 0 0 1 -4.33 10.46L418 197.6a8 8 0 0 1 -10.45-4.33h0A8 8 0 0 1 411.9 182.8zM314.4 94l6.12-14.78A8 8 0 0 1 331 74.92h0a8 8 0 0 1 4.33 10.45l-6.13 14.78a8 8 0 0 1 -10.45 4.33h0A8 8 0 0 1 314.4 94zM256 60h0a8 8 0 0 1 8 8V84a8 8 0 0 1 -8 8h0a8 8 0 0 1 -8-8V68A8 8 0 0 1 256 60zM181 74.92a8 8 0 0 1 10.46 4.33L197.6 94a8 8 0 1 1 -14.78 6.12l-6.13-14.78A8 8 0 0 1 181 74.92zm-63.58 42.49h0a8 8 0 0 1 11.31 0L140 128.7A8 8 0 0 1 140 140h0a8 8 0 0 1 -11.31 0l-11.31-11.31A8 8 0 0 1 117.4 117.4zM60 256h0a8 8 0 0 1 8-8H84a8 8 0 0 1 8 8h0a8 8 0 0 1 -8 8H68A8 8 0 0 1 60 256zm40.15 73.21-14.78 6.13A8 8 0 0 1 74.92 331h0a8 8 0 0 1 4.33-10.46L94 314.4a8 8 0 0 1 10.45 4.33h0A8 8 0 0 1 100.2 329.2zm4.33-136h0A8 8 0 0 1 94 197.6l-14.78-6.12A8 8 0 0 1 74.92 181h0a8 8 0 0 1 10.45-4.33l14.78 6.13A8 8 0 0 1 104.5 193.2zM197.6 418l-6.12 14.78a8 8 0 0 1 -14.79-6.12l6.13-14.78A8 8 0 1 1 197.6 418zM264 444a8 8 0 0 1 -8 8h0a8 8 0 0 1 -8-8V428a8 8 0 0 1 8-8h0a8 8 0 0 1 8 8zm67-6.92h0a8 8 0 0 1 -10.46-4.33L314.4 418a8 8 0 0 1 4.33-10.45h0a8 8 0 0 1 10.45 4.33l6.13 14.78A8 8 0 0 1 331 437.1zm63.58-42.49h0a8 8 0 0 1 -11.31 0L372 383.3A8 8 0 0 1 372 372h0a8 8 0 0 1 11.31 0l11.31 11.31A8 8 0 0 1 394.6 394.6zM286.3 286.3 110.3 401.7 225.8 225.8 401.7 110.3zM437.1 331h0a8 8 0 0 1 -10.45 4.33l-14.78-6.13a8 8 0 0 1 -4.33-10.45h0A8 8 0 0 1 418 314.4l14.78 6.12A8 8 0 0 1 437.1 331zM444 264H428a8 8 0 0 1 -8-8h0a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8h0A8 8 0 0 1 444 264z"], + "salesforce": [640, 512, [], "f83b", "M248.9 245.6h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.7-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.2 23.76a8.63 8.63 0 0 0 -3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93 .95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.4-165.4 136.4-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.9 92.18-213.8-5.17C8.91 428.8-50.19 266.5 53.36 205.6 18.61 126.2 76 32 167.7 32a124.2 124.2 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.7 640 232zm-519.5 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17 .71 1.64-.47 .24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0 -.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1 -19-6.35c-.47-.23-1.42-.71-1.65 .71l-2.4 7.47c-.47 .94 .23 1.18 .23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0 -.24 1.41l2.59 7.06a1 1 0 0 0 1.18 .7c.65 0 6.8-4 16.93-4 4 0 7.06 .71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0 -7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61 .32-21.64-22.78-21.64zM199 200.2a1.11 1.11 0 0 0 -1.18-1.18H188a1.11 1.11 0 0 0 -1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16 .23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12 .15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76 .47-.24 .71-.71 .24-1.88l-2.35-6.83a1.26 1.26 0 0 0 -1.41-.7c-2.59 .94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18 .71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0 -.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1 -19-6.35 1 1 0 0 0 -1.65 .71l-2.35 7.52c-.47 .94 .23 1.18 .23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.1 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14 .94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17 .47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0 -1.17 1.18l-1.42 7.76c0 .7 .24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41 .71-.24 .71-2.59 6.82-2.83 7.53s0 1.41 .47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52 .09 .3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0 -1.18-1.17h-9.4a1.11 1.11 0 0 0 -1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91 .05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0 -.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94 .47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53 .23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59 .74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0 -1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76 .47-.24 .71-.71 .24-1.88l-2.36-6.83a1.26 1.26 0 0 0 -1.41-.7c-2.59 .94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01 .94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"], + "sass": [640, 512, [], "f41e", "M301.8 378.9c-.3 .6-.6 1.08 0 0zm249.1-87a131.2 131.2 0 0 0 -58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.8 122.8 0 0 0 -5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4 .8-.7 1.3-.9 1.7 .3-.5 .5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4 .3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.9-65.2-99.07-116.5 1-18.7 7.5-67.8 127.1-127.4 98-48.8 176.4-35.4 189.8-5.6 19.4 42.5-41.89 121.6-143.7 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.2-11.8 61.78-23.8 109.9-90.1 95.77-145.6C386.5 18.32 293-.18 204.6 31.22c-52.69 18.7-109.7 48.1-150.7 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.1 125.7-1.6 .9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.6-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4 .7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.2 201.2 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31 .31 0 0 0 .1 .2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.7 450.1 270 450.1 270a201.2 201.2 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.2 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.4 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9 .8-.5 1.2-.7 1.2-.7 .9-.6 1.9-1.1 2.9-1.7 8.29 30.4 .3 57.2-19.1 78.3zm134.4-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5 .1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"], + "schlix": [448, 512, [], "f3ea", "M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2 .4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"], + "screenpal": [512, 512, [], "e570", "M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z"], + "scribd": [384, 512, [], "f28a", "M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9 .6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9 .2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"], + "searchengin": [460, 512, [], "f3eb", "M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"], + "sellcast": [448, 512, [], "f2da", "M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8 .1 .1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8 .1 .1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"], + "sellsy": [640, 512, [], "f213", "M539.7 237.3c3.064-12.26 4.29-24.82 4.29-37.38C544 107.4 468.6 32 376.1 32c-77.22 0-144.6 53.01-163 127.8-15.32-13.18-34.93-20.53-55.16-20.53-46.27 0-83.96 37.69-83.96 83.96 0 7.354 .92 15.02 3.065 22.37-42.9 20.23-70.79 63.74-70.79 111.2C6.216 424.8 61.68 480 129.4 480h381.2c67.72 0 123.2-55.16 123.2-123.2 .001-56.38-38.92-106-94.07-119.5zM199.9 401.6c0 8.274-7.048 15.32-15.32 15.32H153.6c-8.274 0-15.32-7.048-15.32-15.32V290.6c0-8.273 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v110.9zm89.48 0c0 8.274-7.048 15.32-15.32 15.32h-30.95c-8.274 0-15.32-7.048-15.32-15.32V270.1c0-8.274 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v131.5zm89.48 0c0 8.274-7.047 15.32-15.32 15.32h-30.95c-8.274 0-15.32-7.048-15.32-15.32V238.8c0-8.274 7.048-15.32 15.32-15.32h30.95c8.274 0 15.32 7.048 15.32 15.32v162.7zm87.03 0c0 8.274-7.048 15.32-15.32 15.32h-28.5c-8.274 0-15.32-7.048-15.32-15.32V176.9c0-8.579 7.047-15.63 15.32-15.63h28.5c8.274 0 15.32 7.048 15.32 15.63v224.6z"], + "servicestack": [496, 512, [], "f3ec", "M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"], + "shirtsinbulk": [448, 512, [], "f214", "M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"], + "shopify": [448, 512, [], "e057", "M388.3 104.1a4.66 4.66 0 0 0 -4.4-4c-2 0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.8 472S388.7 106.5 388.3 104.1zM288.6 70.47a116.7 116.7 0 0 0 -7.21-17.61C271 32.85 255.4 22 237 22a15 15 0 0 0 -4 .4c-.4-.8-1.2-1.2-1.6-2C223.4 11.63 213 7.63 200.6 8c-24 .8-48 18-67.25 48.83-13.61 21.62-24 48.84-26.82 70.06-27.62 8.4-46.83 14.41-47.23 14.81-14 4.4-14.41 4.8-16 18-1.2 10-38 291.8-38 291.8L307.9 504V65.67a41.66 41.66 0 0 0 -4.4 .4S297.9 67.67 288.6 70.47zM233.4 87.69c-16 4.8-33.63 10.4-50.84 15.61 4.8-18.82 14.41-37.63 25.62-50 4.4-4.4 10.41-9.61 17.21-12.81C232.2 54.86 233.8 74.48 233.4 87.69zM200.6 24.44A27.49 27.49 0 0 1 215 28c-6.4 3.2-12.81 8.41-18.81 14.41-15.21 16.42-26.82 42-31.62 66.45-14.42 4.41-28.83 8.81-42 12.81C131.3 83.28 163.8 25.24 200.6 24.44zM154.1 244.6c1.6 25.61 69.25 31.22 73.25 91.66 2.8 47.64-25.22 80.06-65.65 82.47-48.83 3.2-75.65-25.62-75.65-25.62l10.4-44s26.82 20.42 48.44 18.82c14-.8 19.22-12.41 18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44 27.22-93.27 94.47-97.68 26-1.6 39.23 4.81 39.23 4.81L221.4 225.4s-17.21-8-37.63-6.4C154.1 221 153.8 239.8 154.1 244.6zM249.4 82.88c0-12-1.6-29.22-7.21-43.63 18.42 3.6 27.22 24 31.23 36.43Q262.6 78.68 249.4 82.88z"], + "shopware": [512, 512, [], "f5b5", "M403.5 455.4A246.2 246.2 0 0 1 256 504C118.8 504 8 393 8 256 8 118.8 119 8 256 8a247.4 247.4 0 0 1 165.7 63.5 3.57 3.57 0 0 1 -2.86 6.18A418.6 418.6 0 0 0 362.1 74c-129.4 0-222.4 53.47-222.4 155.4 0 109 92.13 145.9 176.8 178.7 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.1a3.64 3.64 0 0 0 -1.27-2.44c-51.76-43-93.62-60.48-144.5-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.3 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.1z"], + "simplybuilt": [512, 512, [], "f215", "M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"], + "sistrix": [448, 512, [], "f3ee", "M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"], + "sith": [448, 512, [], "f512", "M0 32l69.71 118.8-58.86-11.52 69.84 91.03a146.7 146.7 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.8-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.8 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.8 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21 .78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.2 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.2 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.9s89.65 34.18 123.8 0c34.18-34.18 34.19-89.68 0-123.9-17.09-17.09-39.5-25.61-61.92-25.61z"], + "sitrox": [448, 512, [], "e44a", "M212.4 .0085V0H448V128H64C64 57.6 141.8 .4753 212.4 .0085zM237.3 192V192C307.1 192.5 384 249.6 384 320H210.8V319.1C140.9 319.6 64 262.4 64 192H237.3zM235.6 511.1C306.3 511.5 384 454.4 384 384H0V512H235.6V511.1z"], + "sketch": [512, 512, [], "f7c6", "M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"], + "skyatlas": [640, 512, [], "f216", "M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4 .1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"], + "skype": [448, 512, [], "f17e", "M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"], + "slack": [448, 512, [62447, "slack-hash"], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.8c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.1c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.1 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.1 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.9c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.8c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], + "slideshare": [512, 512, [], "f1e7", "M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7 .1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7 .3-56.6 .3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7 .3 92.8 .3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"], + "snapchat": [512, 512, [62124, "snapchat-ghost"], "f2ab", "M496.9 366.6c-3.373-9.176-9.8-14.09-17.11-18.15-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.61-27.34-52.96-45.42a102.9 102.9 0 0 1 -9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.22 10.22 0 0 1 2.914-3.038c3.918-2.591 7.96-5.22 10.7-6.993 4.885-3.162 8.754-5.667 11.25-7.44 9.362-6.547 15.91-13.5 20-21.28a42.37 42.37 0 0 0 2.1-35.19c-6.2-16.32-21.61-26.45-40.29-26.45a55.54 55.54 0 0 0 -11.72 1.24c-1.029 .224-2.059 .459-3.063 .72 .174-11.16-.074-22.94-1.066-34.53-3.522-40.76-17.79-62.12-32.67-79.16A130.2 130.2 0 0 0 332.1 36.44C309.5 23.55 283.9 17 256 17S202.6 23.55 180 36.44a129.7 129.7 0 0 0 -33.28 26.78c-14.88 17.04-29.15 38.44-32.67 79.16-.992 11.59-1.24 23.43-1.079 34.53-1-.26-2.021-.5-3.051-.719a55.46 55.46 0 0 0 -11.72-1.24c-18.69 0-34.13 10.13-40.3 26.45a42.42 42.42 0 0 0 2.046 35.23c4.105 7.774 10.65 14.73 20.01 21.28 2.48 1.736 6.361 4.24 11.25 7.44 2.641 1.711 6.5 4.216 10.28 6.72a11.05 11.05 0 0 1 3.3 3.311c.794 1.624 .818 3.373-.36 6.6a102 102 0 0 1 -8.94 15.78c-12.08 17.67-29.36 32.65-51.43 44.64C32.35 348.6 20.2 352.8 15.07 366.7c-3.868 10.53-1.339 22.51 8.494 32.6a49.14 49.14 0 0 0 12.4 9.387 134.3 134.3 0 0 0 30.34 12.14 20.02 20.02 0 0 1 6.126 2.741c3.583 3.137 3.075 7.861 7.849 14.78a34.47 34.47 0 0 0 8.977 9.127c10.02 6.919 21.28 7.353 33.21 7.811 10.78 .41 22.99 .881 36.94 5.481 5.778 1.91 11.78 5.605 18.74 9.92C194.8 480.1 217.7 495 255.1 495s61.29-14.12 78.12-24.43c6.907-4.24 12.87-7.9 18.49-9.758 13.95-4.613 26.16-5.072 36.94-5.481 11.93-.459 23.19-.893 33.21-7.812a34.58 34.58 0 0 0 10.22-11.16c3.434-5.84 3.348-9.919 6.572-12.77a18.97 18.97 0 0 1 5.753-2.629A134.9 134.9 0 0 0 476 408.7a48.34 48.34 0 0 0 13.02-10.19l.124-.149C498.4 388.5 500.7 376.9 496.9 366.6zm-34.01 18.28c-20.75 11.46-34.53 10.23-45.26 17.14-9.114 5.865-3.72 18.51-10.34 23.08-8.134 5.617-32.18-.4-63.24 9.858-25.62 8.469-41.96 32.82-88.04 32.82s-62.04-24.3-88.08-32.88c-31-10.26-55.09-4.241-63.24-9.858-6.609-4.563-1.24-17.21-10.34-23.08-10.74-6.907-24.53-5.679-45.26-17.08-13.21-7.291-5.716-11.8-1.314-13.94 75.14-36.38 87.13-92.55 87.67-96.72 .645-5.046 1.364-9.014-4.191-14.15-5.369-4.96-29.19-19.7-35.8-24.32-10.94-7.638-15.75-15.26-12.2-24.64 2.48-6.485 8.531-8.928 14.88-8.928a27.64 27.64 0 0 1 5.965 .67c12 2.6 23.66 8.617 30.39 10.24a10.75 10.75 0 0 0 2.48 .335c3.6 0 4.86-1.811 4.612-5.927-.768-13.13-2.628-38.72-.558-62.64 2.84-32.91 13.44-49.22 26.04-63.64 6.051-6.932 34.48-36.98 88.86-36.98s82.88 29.92 88.93 36.83c12.61 14.42 23.23 30.73 26.04 63.64 2.071 23.92 .285 49.53-.558 62.64-.285 4.327 1.017 5.927 4.613 5.927a10.65 10.65 0 0 0 2.48-.335c6.745-1.624 18.4-7.638 30.4-10.24a27.64 27.64 0 0 1 5.964-.67c6.386 0 12.4 2.48 14.88 8.928 3.546 9.374-1.24 17-12.19 24.64-6.609 4.612-30.43 19.34-35.8 24.32-5.568 5.134-4.836 9.1-4.191 14.15 .533 4.228 12.51 60.4 87.67 96.72C468.6 373 476.1 377.5 462.9 384.9z"], + "soundcloud": [640, 512, [], "f1be", "M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2 .8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1 .6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7 .6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3 .1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"], + "sourcetree": [448, 512, [], "f7d3", "M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.9 202.9 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.2 203.2 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"], + "space-awesome": [512, 512, [], "e5ac", "M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z"], + "speakap": [448, 512, [], "f3f3", "M64 391.8C-15.41 303.6-8 167.4 80.64 87.64s224.8-73 304.2 15.24 72 224.4-16.64 304.1c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.9 35-346.2-67.5zm213.3-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33 .29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23 .18 96.42 .33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75 .41-23.25 31-25.37 37.53-25.26 .43 0 26.62 .26 39.62 17.37z"], + "speaker-deck": [512, 512, [], "f83c", "M213.9 296H100a100 100 0 0 1 0-200h132.8a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.8a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.9c26.48 0 26.46-40 0-40zM298 416a120.2 120.2 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0 -19.66-20H296.4a60.77 60.77 0 0 0 0-80h136.9c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"], + "spotify": [496, 512, [], "f1bc", "M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"], + "square-behance": [448, 512, ["behance-square"], "f1b5", "M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6 .1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3 .3-4.8 .3-7.2z"], + "square-dribbble": [448, 512, ["dribbble-square"], "f397", "M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"], + "square-facebook": [448, 512, ["facebook-square"], "f082", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.3V327.7h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0 -48-48z"], + "square-font-awesome": [448, 512, [], "e5ad", "M384.5 32.5h-320c-35.3 0-64 28.7-64 64v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64v-320C448.5 61.2 419.8 32.5 384.5 32.5zM336.5 312.5c-31.6 11.2-41.2 16-59.8 16c-31.4 0-43.2-16-74.6-16c-10.2 0-18.2 1.6-25.6 4v-32c7.4-2.2 15.4-4 25.6-4c31.2 0 43.2 16 74.6 16c10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6c-31.4 0-43.2-16-74.6-16c-25.4 0-37.4 10.4-57.6 14.4v153.6c0 8.8-7.2 16-16 16c-8.8 0-16-7.2-16-16v-192c0-8.8 7.2-16 16-16c8.8 0 16 7.2 16 16v6.4c20.2-4 32.2-14.4 57.6-14.4c31.2 0 43.2 16 74.6 16c18.6 0 28.2-4.8 59.8-16V312.5z"], + "square-font-awesome-stroke": [448, 512, ["font-awesome-alt"], "f35c", "M201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v192c0 .8 .1 1.6 .2 2.4c.1 .4 .1 .8 .2 1.2c1.6 7.1 8 12.4 15.6 12.4s14-5.3 15.6-12.4c.1-.4 .2-.8 .2-1.2c.1-.8 .2-1.6 .2-2.4V198.4c4-.8 7.7-1.8 11.2-3c14.3-4.7 26-11.4 46.4-11.4c31.4 0 43.2 16 74.6 16c8.9 0 15.9-1.1 24.2-3.5c1.2-.3 2.4-.7 3.6-1.1v96c-10 3.2-17.6 4.6-27.8 4.6c-31.4 0-43.4-16-74.6-16c-10.2 0-18.2 1.8-25.6 4v32c7.4-2.4 15.4-4 25.6-4c31.4 0 43.2 16 74.6 16c18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152zM384 32H64C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V96C448 60.7 419.3 32 384 32zM416 416c0 17.6-14.4 32-32 32H64c-17.6 0-32-14.4-32-32V96c0-17.6 14.4-32 32-32h320c17.6 0 32 14.4 32 32V416z"], + "square-git": [448, 512, ["git-square"], "f1d2", "M100.6 334.2c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52 .01-5.09 3.29-9.4 6.6-13.46zm27.95-116.6c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47 .75-44.47zM448 80v352a48 48 0 0 1 -48 48H48a48 48 0 0 1 -48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.6 127 243.9 127c-14.48 0-22.88 7.84-22.88 22.31zM199.2 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.2 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.4 81.53 385 127.5 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.8l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.5h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"], + "square-github": [448, 512, ["github-square"], "f092", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4 .2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9 .2 36.5 .2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9 .4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7 .6 3.9 1.9 .3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2 .2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7 .9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2 .4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8 .9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1 .9-1.1 2.8-.9 4.3 .6 1.3 1.3 1.8 3.3 .9 4.1zm-9.1-9.1c-.9 .6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9 .9-2.4 .4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5 .9-.9 2.4-.4 3.5 .6 1.1 1.3 1.3 2.8 .4 3.5zm-6.7-7.4c-.4 .9-1.7 1.1-2.8 .4-1.3-.6-1.9-1.7-1.5-2.6 .4-.6 1.5-.9 2.8-.4 1.3 .7 1.9 1.8 1.5 2.6z"], + "square-gitlab": [448, 512, ["gitlab-square"], "e5ae", "M48 32H400C426.5 32 448 53.5 448 80V432C448 458.5 426.5 480 400 480H48C21.5 480 0 458.5 0 432V80C0 53.5 21.5 32 48 32zM382.1 224.9L337.5 108.5C336.6 106.2 334.9 104.2 332.9 102.9C331.3 101.9 329.5 101.3 327.7 101.1C325.9 100.9 324 101.2 322.3 101.8C320.6 102.5 319 103.5 317.8 104.9C316.6 106.3 315.7 107.9 315.2 109.7L285 201.9H162.1L132.9 109.7C132.4 107.9 131.4 106.3 130.2 104.9C128.1 103.6 127.4 102.5 125.7 101.9C123.1 101.2 122.1 100.1 120.3 101.1C118.5 101.3 116.7 101.9 115.1 102.9C113.1 104.2 111.5 106.2 110.6 108.5L65.94 224.9L65.47 226.1C59.05 242.9 58.26 261.3 63.22 278.6C68.18 295.9 78.62 311.1 92.97 321.9L93.14 322L93.52 322.3L161.4 373.2L215.6 414.1C217.1 415.1 220.9 416.9 223.9 416.9C226.9 416.9 229.9 415.1 232.3 414.1L286.4 373.2L354.8 322L355 321.9C369.4 311 379.8 295.8 384.8 278.6C389.7 261.3 388.1 242.9 382.5 226.1L382.1 224.9z"], + "square-google-plus": [448, 512, ["google-plus-square"], "f0d4", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"], + "square-hacker-news": [448, 512, ["hacker-news-square"], "f3af", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1 .2-.3 .3-.4 0 .1 0 .3-.1 .4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"], + "square-instagram": [448, 512, ["instagram-square"], "e055", "M224 202.7A53.34 53.34 0 1 0 277.4 256 53.38 53.38 0 0 0 224 202.7zm124.7-41a54 54 0 0 0 -30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31 6.43a54 54 0 0 0 -30.41 30.41c-8.28 21-6.43 71.05-6.43 94.33S91 329.3 99.32 350.3a54 54 0 0 0 30.41 30.41c21 8.29 71 6.43 94.31 6.43s73.24 1.93 94.3-6.43a54 54 0 0 0 30.41-30.41c8.35-21 6.43-71.05 6.43-94.33S357.1 182.7 348.8 161.7zM224 338a82 82 0 1 1 82-82A81.9 81.9 0 0 1 224 338zm85.38-148.3a19.14 19.14 0 1 1 19.13-19.14A19.1 19.1 0 0 1 309.4 189.7zM400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32zM382.9 322c-1.29 25.63-7.14 48.34-25.85 67s-41.4 24.63-67 25.85c-26.41 1.49-105.6 1.49-132 0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.6 0-132 1.29-25.63 7.07-48.34 25.85-67s41.47-24.56 67-25.78c26.41-1.49 105.6-1.49 132 0 25.63 1.29 48.33 7.15 67 25.85s24.63 41.42 25.85 67.05C384.4 216.4 384.4 295.6 382.9 322z"], + "square-js": [448, 512, ["js-square"], "f3b9", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"], + "square-lastfm": [448, 512, ["lastfm-square"], "f203", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5 .1 36.7-30.7 50.6-76.1 50.6z"], + "square-odnoklassniki": [448, 512, ["odnoklassniki-square"], "f264", "M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"], + "square-pied-piper": [448, 512, ["pied-piper-square"], "e01e", "M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"], + "square-pinterest": [448, 512, ["pinterest-square"], "f0d3", "M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3 .8-3.4 5-20.1 6.8-27.8 .6-2.5 .3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2 .8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"], + "square-reddit": [448, 512, ["reddit-square"], "f1a2", "M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"], + "square-snapchat": [448, 512, ["snapchat-square"], "f2ad", "M384 32H64A64 64 0 0 0 0 96V416a64 64 0 0 0 64 64H384a64 64 0 0 0 64-64V96A64 64 0 0 0 384 32zm-3.907 319.3-.083 .1a32.36 32.36 0 0 1 -8.717 6.823 90.26 90.26 0 0 1 -20.59 8.2 12.69 12.69 0 0 0 -3.852 1.76c-2.158 1.909-2.1 4.64-4.4 8.55a23.14 23.14 0 0 1 -6.84 7.471c-6.707 4.632-14.24 4.923-22.23 5.23-7.214 .274-15.39 .581-24.73 3.669-3.761 1.245-7.753 3.694-12.38 6.533-11.27 6.9-26.68 16.35-52.3 16.35s-40.92-9.4-52.11-16.28c-4.657-2.888-8.675-5.362-12.54-6.64-9.339-3.08-17.52-3.4-24.73-3.67-7.986-.307-15.52-.6-22.23-5.229a23.08 23.08 0 0 1 -6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.43 13.43 0 0 0 -4.1-1.834 89.99 89.99 0 0 1 -20.31-8.127 32.9 32.9 0 0 1 -8.3-6.284c-6.583-6.757-8.276-14.78-5.686-21.82 3.436-9.338 11.57-12.11 19.4-16.26 14.78-8.027 26.35-18.06 34.43-29.88a68.24 68.24 0 0 0 5.985-10.57c.789-2.158 .772-3.329 .241-4.416a7.386 7.386 0 0 0 -2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.24a28.4 28.4 0 0 1 -1.369-23.58c4.134-10.92 14.47-17.71 26.98-17.71a37.14 37.14 0 0 1 7.845 .83c.689 .15 1.37 .307 2.042 .482-.108-7.43 .058-15.36 .722-23.12 2.358-27.26 11.91-41.59 21.87-52.99a86.84 86.84 0 0 1 22.28-17.93C188.3 100.4 205.3 96 224 96s35.83 4.383 50.94 13.02a87.17 87.17 0 0 1 22.24 17.9c9.961 11.41 19.52 25.71 21.87 52.99a231.2 231.2 0 0 1 .713 23.12c.673-.174 1.362-.332 2.051-.481a37.13 37.13 0 0 1 7.844-.83c12.5 0 22.82 6.782 26.97 17.71a28.37 28.37 0 0 1 -1.4 23.56c-2.74 5.2-7.123 9.861-13.39 14.24-1.668 1.187-4.258 2.864-7.529 4.981-1.835 1.187-4.541 2.947-7.164 4.682a6.856 6.856 0 0 0 -1.951 2.034c-.506 1.046-.539 2.191 .166 4.208a69.01 69.01 0 0 0 6.085 10.79c8.268 12.1 20.19 22.31 35.45 30.41 1.486 .772 2.98 1.5 4.441 2.258 .722 .332 1.569 .763 2.491 1.3 4.9 2.723 9.2 6.01 11.45 12.15C387.8 336.9 386.3 344.7 380.1 351.3zm-16.72-18.46c-50.31-24.31-58.33-61.92-58.69-64.75-.431-3.379-.921-6.035 2.806-9.472 3.594-3.328 19.54-13.19 23.97-16.28 7.33-5.114 10.53-10.22 8.16-16.5-1.66-4.316-5.686-5.976-9.961-5.976a18.5 18.5 0 0 0 -3.993 .448c-8.035 1.743-15.84 5.769-20.35 6.857a7.1 7.1 0 0 1 -1.66 .224c-2.408 0-3.279-1.071-3.088-3.968 .564-8.783 1.759-25.92 .373-41.94-1.884-22.03-8.99-32.95-17.43-42.6-4.051-4.624-23.14-24.65-59.54-24.65S168.5 134.4 164.5 139c-8.434 9.654-15.53 20.57-17.43 42.6-1.386 16.01-.141 33.15 .373 41.94 .166 2.756-.68 3.968-3.088 3.968a7.1 7.1 0 0 1 -1.66-.224c-4.507-1.087-12.31-5.113-20.35-6.856a18.49 18.49 0 0 0 -3.993-.449c-4.25 0-8.3 1.636-9.961 5.977-2.374 6.276 .847 11.38 8.168 16.49 4.425 3.088 20.37 12.96 23.97 16.28 3.719 3.437 3.237 6.093 2.805 9.471-.356 2.79-8.384 40.39-58.69 64.75-2.946 1.428-7.96 4.45 .88 9.331 13.88 7.628 23.11 6.807 30.3 11.43 6.093 3.927 2.5 12.39 6.923 15.45 5.454 3.76 21.58-.266 42.33 6.6 17.43 5.744 28.12 22.01 58.96 22.01s41.79-16.3 58.94-21.97c20.8-6.865 36.89-2.839 42.34-6.6 4.433-3.055 .822-11.52 6.923-15.45 7.181-4.624 16.41-3.8 30.3-11.47C371.4 337.4 366.3 334.3 363.4 332.8z"], + "square-steam": [448, 512, ["steam-square"], "f1b7", "M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4 .5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"], + "square-tumblr": [448, 512, ["tumblr-square"], "f174", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2 .5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2 .5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"], + "square-twitter": [448, 512, ["twitter-square"], "f081", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8 .2 5.7 .2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3 .6 10.4 .8 15.8 .8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.45 65.45 0 0 1 -29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"], + "square-viadeo": [448, 512, ["viadeo-square"], "f2aa", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4 .2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"], + "square-vimeo": [448, 512, ["vimeo-square"], "f194", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"], + "square-whatsapp": [448, 512, ["whatsapp-square"], "f40c", "M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4 .9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6 .1 2.4 .1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3 .3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9 .9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"], + "square-xing": [448, 512, ["xing-square"], "f169", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6 .2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1 .1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"], + "square-youtube": [448, 512, [61798, "youtube-square"], "f431", "M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"], + "squarespace": [512, 512, [], "f5be", "M186.1 343.3c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.2 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.1 445.1c19.27 19.29 50.53 19.31 69.82 .04l.04-.04 119.3-119.2c38.59-38.59 38.59-101.1 0-139.7-38.59-38.59-101.2-38.59-139.7 0l-157.2 157.2zm244.5-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.2c-19.27 19.29-50.53 19.31-69.82 .05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01 .01c-9.65 9.64-9.66 25.28-.02 34.93l.02 .02c38.58 38.57 101.1 38.57 139.7 0l157.2-157.2c9.65-9.65 9.65-25.29 .01-34.93zm-261.1 87.33l157.2-157.2c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.7 290.9c-19.28 19.29-50.56 19.3-69.85 .01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02 .02L28.93 186.1c-38.58 38.59-38.58 101.1 0 139.7 38.6 38.59 101.1 38.59 139.7 .01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.2-157.2c19.28-19.29 50.55-19.3 69.84-.02l.02 .02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.1-38.59-139.7 0L81.33 238.5c-9.65 9.64-9.65 25.28-.01 34.93h.01z"], + "stack-exchange": [448, 512, [], "f18d", "M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"], + "stack-overflow": [384, 512, [], "f16c", "M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"], + "stackpath": [448, 512, [], "f842", "M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.8c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18 .56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.4-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.2h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.9 325L347 186.8h-31.09L268 325zm106.5-138.2h-31.09L325.5 325h29.94z"], + "staylinked": [440, 512, [], "f3f5", "M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7 .7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3 .4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7 .9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1 .1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9 .5l160.4 159c3.7 3.5 10 3.7 14.1 .5l45.8-35.8c4.1-3.2 4.4-8.7 .7-12.2z"], + "steam": [496, 512, [], "f1b6", "M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3 .1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"], + "steam-symbol": [448, 512, [], "f3f6", "M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5 .2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9 .1 76.2-33.9 76.2-76.2z"], + "sticker-mule": [576, 512, [], "f3f7", "M561.7 199.6c-1.3 .3 .3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3 .5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8 .4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5 .5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5 .5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4 .5 1 1 2 1.5 3.5 .5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5 .5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5 .3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6 .5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3 .8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"], + "strava": [384, 512, [], "f428", "M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"], + "stripe": [640, 512, [], "f429", "M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3 .6-11.6 .6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4 .1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6 .1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4 .1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"], + "stripe-s": [384, 512, [], "f42a", "M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.1 396.1 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"], + "studiovinari": [512, 512, [], "f3f8", "M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3 .7 20.3 .7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"], + "stumbleupon": [512, 512, [], "f1a4", "M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"], + "stumbleupon-circle": [496, 512, [], "f1a3", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"], + "superpowers": [448, 512, [], "f2dd", "M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"], + "supple": [640, 512, [], "f3f9", "M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7 .4 15.5 .6 23.4 .6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6 .2 23.3 .5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"], + "suse": [640, 512, [], "f7d6", "M471.1 102.7s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.1a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2 .3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9 .5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5 .4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3 .5-76.2-25.4-81.6-28.2-.3-.4 .1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7 .8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3 .1-.1-.9-.3-.9 .7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0 -25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"], + "swift": [448, 512, [], "f8e1", "M448 156.1c0-4.51-.08-9-.2-13.52a196.3 196.3 0 0 0 -2.58-29.42 99.62 99.62 0 0 0 -9.22-28A94.08 94.08 0 0 0 394.8 44a99.17 99.17 0 0 0 -28-9.22 195 195 0 0 0 -29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.1c-4.51 0-9 .08-13.52 .2-2.45 .07-4.91 .15-7.37 .27a171.7 171.7 0 0 0 -22.06 2.32 103.1 103.1 0 0 0 -21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0 -18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0 -9.22 28 196.3 196.3 0 0 0 -2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.8c0 4.51 .08 9 .21 13.51a196.1 196.1 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5 .12 9 .17 13.52 .2H323.9c4.51 0 9-.08 13.52-.2a196.6 196.6 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.8a99.3 99.3 0 0 0 9.22-28 194.8 194.8 0 0 0 2.59-29.42c.12-4.5 .17-9 .2-13.51V172.1c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42 .25c-39.5 21-92.53 22.54-145.9-.38A234.6 234.6 0 0 1 45 290.1a230.6 230.6 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.1-147.2a197.1 197.1 0 0 1 -18.78-25.9c43.7 40 112.7 90.22 137.5 104.1-52.57-55.49-98.89-123.9-96.72-121.7 82.79 83.42 159.2 130.6 159.2 130.6 2.88 1.58 5 2.85 6.73 4a127.4 127.4 0 0 0 4.16-12.47c13.22-48.33-1.66-103.6-35.31-149.2C329.6 141.8 375 229.3 356.4 303.4c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"], + "symfony": [512, 512, [], "f83d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.7 143.5c-11.47 .41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.8 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.7-29 34.46-58.4 39.82-71.58 40.26-24.65 .85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71 .11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.3 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.2 140.1 251.9 197 262 205.3c37.17-109 100.5-105.5 102.4-105.5 25.16-.81 44.19 10.59 44.83 28.65 .25 7.69-4.17 22.59-19.52 23.13z"], + "teamspeak": [512, 512, [], "f4f9", "M244.2 346.8c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6 .6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0 -8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.6 222.6 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.6 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.3v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.8c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"], + "telegram": [496, 512, [62462, "telegram-plane"], "f2c6", "M248 8C111 8 0 119 0 256S111 504 248 504 496 392.1 496 256 384.1 8 248 8zM362.1 176.7c-3.732 39.22-19.88 134.4-28.1 178.3-3.476 18.58-10.32 24.82-16.95 25.42-14.4 1.326-25.34-9.517-39.29-18.66-21.83-14.31-34.16-23.22-55.35-37.18-24.49-16.14-8.612-25 5.342-39.5 3.652-3.793 67.11-61.51 68.33-66.75 .153-.655 .3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283 .746-104.6 69.14-14.85 10.19-26.89 9.934c-8.855-.191-25.89-5.006-38.55-9.123-15.53-5.048-27.88-7.717-26.8-16.29q.84-6.7 18.45-13.7 108.4-47.25 144.6-62.3c68.87-28.65 83.18-33.62 92.51-33.79 2.052-.034 6.639 .474 9.61 2.885a10.45 10.45 0 0 1 3.53 6.716A43.76 43.76 0 0 1 362.1 176.7z"], + "tencent-weibo": [384, 512, [], "f1d5", "M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1 .1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"], + "the-red-yeti": [512, 512, [], "f69d", "M488.2 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0 -25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5 .5a239.4 239.4 0 0 0 -68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0 -.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.3 194.3 0 0 0 -46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.2 200.2 0 0 0 -27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7 .7 3.4 1.2 5.2 0 25.5 .4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.8 181.8 0 0 0 495 255a44.74 44.74 0 0 0 -6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.4 242.4 0 0 1 -27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1 -1.7-15.2c5.4 .5 8.8 3.4 9.3 10.1 .5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8 .9-.7 14.8h-2.5a62.32 62.32 0 0 0 -8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5 .5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.7 234.7 0 0 0 -6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1 .5c-11.8 13.5-27.8 21.9-48.5 24.8a201.3 201.3 0 0 1 -23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0 -14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7 .5 1.2c2 .2 3.9 .5 6.2 .7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4 .5 13 1 19.4 1.2 6.4 0 8.4 .5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.1 141.1 0 0 1 -3 28.3 209.9 209.9 0 0 1 -16 46l2.5 .5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2 .2-.2 .2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.3-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3 .5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.6 262.6 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2 .7 89.5zm115.3-214.4l-2.5 .5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.8 214.8 0 0 1 -93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2 .4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7 .5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.2 254.2 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0 -14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2 .5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5 .5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6 .3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5 .5 .5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0 -.5-1.7 14.21 14.21 0 0 0 -13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0 -2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1 -11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9 .5 .5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1 .5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2 .5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1 .5c-5.9 1.2-12.3 4.2-19.4 8.4z"], + "themeco": [448, 512, [], "f5c6", "M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.8c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.8 503.7c-9.93 5.66-26 5.57-35.85-.21L17.86 395.1C8 389.3 0 375.4 0 364V146.7c0-11.44 8-25.36 17.91-31.08zm-77.4 199.8c-15.94 0-31.89 .14-47.83 .14v101.4H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.1 100.3l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.6h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.6-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"], + "themeisle": [512, 512, [], "f2b2", "M208 88.29c0-10 6.286-21.71 17.72-21.71 11.14 0 17.71 11.71 17.71 21.71 0 10.28-6.572 21.71-17.71 21.71C214.3 110 208 98.57 208 88.29zm304 160c0 36-11.43 102.3-36.29 129.7-22.86 24.86-87.43 61.14-120.9 70.57l-1.143 .286v32.57c0 16.29-12.57 30.57-29.14 30.57-10 0-19.43-5.714-24.57-14.29-5.427 8.572-14.86 14.29-24.86 14.29-10 0-19.43-5.714-24.86-14.29-5.142 8.572-14.57 14.29-24.57 14.29-10.29 0-19.43-5.714-24.86-14.29-5.143 8.572-14.57 14.29-24.57 14.29-18.86 0-29.43-15.71-29.43-32.86-16.29 12.28-35.72 19.43-56.57 19.43-22 0-43.43-8.285-60.29-22.86 10.28-.286 20.57-2.286 30.28-5.714-20.86-5.714-39.43-18.86-52-36.29 21.37 4.645 46.21 1.673 67.14-11.14-22-22-56.57-58.86-68.57-87.43C1.143 321.7 0 303.7 0 289.4c0-49.71 20.29-160 86.29-160 10.57 0 18.86 4.858 23.14 14.86a158.8 158.8 0 0 1 12-15.43c2-2.572 5.714-5.429 7.143-8.286 7.999-12.57 11.71-21.14 21.71-34C182.6 45.43 232 17.14 285.1 17.14c6 0 12 .285 17.71 1.143C313.7 6.571 328.9 0 344.6 0c14.57 0 29.71 6 40 16.29 .857 .858 1.428 2.286 1.428 3.428 0 3.714-10.28 13.43-12.86 16.29 4.286 1.429 15.71 6.858 15.71 12 0 2.857-2.857 5.143-4.571 7.143 31.43 27.71 49.43 67.14 56.29 108 4.286-5.143 10.28-8.572 17.14-8.572 10.57 0 20.86 7.144 28.57 14C507.1 187.1 512 221.7 512 248.3zM188 89.43c0 18.29 12.57 37.14 32.29 37.14 19.71 0 32.28-18.86 32.28-37.14 0-18-12.57-36.86-32.28-36.86-19.72 0-32.29 18.86-32.29 36.86zM237.7 194c0-19.71 3.714-39.14 8.571-58.29-52.04 79.53-13.53 184.6 68.86 184.6 21.43 0 42.57-7.714 60-20 2-7.429 3.714-14.86 3.714-22.57 0-14.29-6.286-21.43-20.57-21.43-4.571 0-9.143 .857-13.43 1.714-63.34 12.67-107.1 3.669-107.1-63.1zm-41.14 254.9c0-11.14-8.858-20.86-20.29-20.86-11.43 0-20 9.715-20 20.86v32.57c0 11.14 8.571 21.14 20 21.14 11.43 0 20.29-9.715 20.29-21.14v-32.57zm49.14 0c0-11.14-8.572-20.86-20-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.857 21.14 20.29 21.14 11.43 0 20-10 20-21.14v-32.57zm49.71 0c0-11.14-8.857-20.86-20.28-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.857 21.14 20.29 21.14 11.43 0 20.28-9.715 20.28-21.14v-32.57zm49.72 0c0-11.14-8.857-20.86-20.29-20.86-11.43 0-20.29 9.715-20.29 20.86v32.57c0 11.14 8.858 21.14 20.29 21.14 11.43 0 20.29-10 20.29-21.14v-32.57zM421.7 286c-30.86 59.14-90.29 102.6-158.6 102.6-96.57 0-160.6-84.57-160.6-176.6 0-16.86 2-33.43 6-49.71-20 33.72-29.71 72.57-29.71 111.4 0 60.29 24.86 121.7 71.43 160.9 5.143-9.714 14.86-16.29 26-16.29 10 0 19.43 5.714 24.57 14.29 5.429-8.571 14.57-14.29 24.86-14.29 10 0 19.43 5.714 24.57 14.29 5.429-8.571 14.86-14.29 24.86-14.29 10 0 19.43 5.714 24.86 14.29 5.143-8.571 14.57-14.29 24.57-14.29 10.86 0 20.86 6.572 25.71 16 43.43-36.29 68.57-92 71.43-148.3zm10.57-99.71c0-53.71-34.57-105.7-92.57-105.7-30.28 0-58.57 15.14-78.86 36.86C240.9 183.8 233.4 254 302.3 254c28.81 0 97.36-28.54 84.29 36.86 28.86-26 45.71-65.71 45.71-104.6z"], + "think-peaks": [576, 512, [], "f731", "M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5 .1-235.8-404.6z"], + "tiktok": [448, 512, [], "e07b", "M448 209.9a210.1 210.1 0 0 1 -122.8-39.25V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.62 74.62 0 1 0 52.23 71.18V0l88 0a121.2 121.2 0 0 0 1.86 22.17h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.14z"], + "trade-federation": [496, 512, [], "f513", "M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5 .1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"], + "trello": [448, 512, [], "f181", "M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8 .1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"], + "tumblr": [320, 512, [], "f173", "M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1 .8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5 .9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"], + "twitch": [512, 512, [], "f1e8", "M391.2 103.5H352.5v109.7h38.63zM285 103H246.4V212.8H285zM120.8 0 24.31 91.42V420.6H140.1V512l96.53-91.42h77.25L487.7 256V0zM449.1 237.8l-77.22 73.12H294.6l-67.6 64v-64H140.1V36.58H449.1z"], + "twitter": [512, 512, [], "f099", "M459.4 151.7c.325 4.548 .325 9.097 .325 13.65 0 138.7-105.6 298.6-298.6 298.6-59.45 0-114.7-17.22-161.1-47.11 8.447 .974 16.57 1.299 25.34 1.299 49.06 0 94.21-16.57 130.3-44.83-46.13-.975-84.79-31.19-98.11-72.77 6.498 .974 12.99 1.624 19.82 1.624 9.421 0 18.84-1.3 27.61-3.573-48.08-9.747-84.14-51.98-84.14-102.1v-1.299c13.97 7.797 30.21 12.67 47.43 13.32-28.26-18.84-46.78-51.01-46.78-87.39 0-19.49 5.197-37.36 14.29-52.95 51.65 63.67 129.3 105.3 216.4 109.8-1.624-7.797-2.599-15.92-2.599-24.04 0-57.83 46.78-104.9 104.9-104.9 30.21 0 57.5 12.67 76.67 33.14 23.72-4.548 46.46-13.32 66.6-25.34-7.798 24.37-24.37 44.83-46.13 57.83 21.12-2.273 41.58-8.122 60.43-16.24-14.29 20.79-32.16 39.31-52.63 54.25z"], + "typo3": [448, 512, [], "f42b", "M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"], + "uber": [448, 512, [], "f402", "M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"], + "ubuntu": [496, 512, [], "f7df", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1 .7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"], + "uikit": [448, 512, [], "f403", "M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"], + "umbraco": [510, 512, [], "f8e8", "M255.4 8C118.4 7.83 7.14 118.7 7 255.7c-.07 137 111 248.2 248 248.3 136.9 0 247.8-110.7 248-247.7S392.3 8.17 255.4 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78 .22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.8 224.8 0 0 1 0-30.71 418.4 418.4 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.6 380.6 0 0 0 -2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.6 242.6 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0 -2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05 .81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.7 415.7 0 0 1 3.61 43.88 228.1 228.1 0 0 1 -.04 30.73z"], + "uncharted": [448, 512, [], "e084", "M171.7 232.8A5.381 5.381 0 0 0 176.7 229.5 48.08 48.08 0 0 1 191.6 204.2c1.243-.828 1.657-2.484 1.657-4.141a4.22 4.22 0 0 0 -2.071-3.312L74.43 128.5 148.1 85a9.941 9.941 0 0 0 4.968-8.281 9.108 9.108 0 0 0 -4.968-8.281L126.6 55.6a9.748 9.748 0 0 0 -9.523 0l-100.2 57.97a9.943 9.943 0 0 0 -4.969 8.281V236.1a9.109 9.109 0 0 0 4.969 8.281L39.24 258.1a8.829 8.829 0 0 0 4.968 1.242 9.4 9.4 0 0 0 6.625-2.484 10.8 10.8 0 0 0 2.9-7.039V164.5L169.7 232.4A4.5 4.5 0 0 0 171.7 232.8zM323.3 377.7a12.48 12.48 0 0 0 -4.969 1.242l-74.53 43.06V287.9c0-2.9-2.9-5.8-6.211-4.555a53.04 53.04 0 0 1 -28.98 .414 4.86 4.86 0 0 0 -6.21 4.555V421.6l-74.53-43.06a8.83 8.83 0 0 0 -4.969-1.242 9.631 9.631 0 0 0 -9.523 9.523v26.08a9.107 9.107 0 0 0 4.969 8.281l100.2 57.55A8.829 8.829 0 0 0 223.5 480a11.03 11.03 0 0 0 4.969-1.242l100.2-57.55a9.941 9.941 0 0 0 4.968-8.281V386.8C332.8 382.3 328.2 377.7 323.3 377.7zM286 78a23 23 0 1 0 -23-23A23 23 0 0 0 286 78zm63.63-10.09a23 23 0 1 0 23 23A23 23 0 0 0 349.6 67.91zM412.8 151.6a23 23 0 1 0 -23-23A23 23 0 0 0 412.8 151.6zm-63.18-9.2a23 23 0 1 0 23 23A23 23 0 0 0 349.6 142.4zm-63.63 83.24a23 23 0 1 0 -23-23A23 23 0 0 0 286 225.6zm-62.07 36.36a23 23 0 1 0 -23-23A23 23 0 0 0 223.9 262zm188.9-82.36a23 23 0 1 0 23 23A23 23 0 0 0 412.8 179.6zm0 72.27a23 23 0 1 0 23 23A23 23 0 0 0 412.8 251.9z"], + "uniregistry": [384, 512, [], "f404", "M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5 .2-4.9 .2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"], + "unity": [448, 512, [], "e049", "M243.6 91.6L323.7 138.4C326.6 140 326.7 144.6 323.7 146.2L228.5 201.9C225.6 203.6 222.2 203.4 219.5 201.9L124.4 146.2C121.4 144.6 121.4 139.1 124.4 138.4L204.4 91.6V0L0 119.4V358.3L78.38 312.5V218.9C78.33 215.6 82.21 213.2 85.09 214.1L180.3 270.6C183.2 272.3 184.8 275.3 184.8 278.5V389.7C184.8 393 180.1 395.4 178.1 393.6L97.97 346.8L19.58 392.6L224 512L428.4 392.6L350 346.8L269.9 393.6C267.1 395.3 263.1 393.1 263.2 389.7V278.5C263.2 275.1 265.1 272.2 267.7 270.6L362.9 214.1C365.7 213.2 369.7 215.5 369.6 218.9V312.5L448 358.3V119.4L243.6 0V91.6z"], + "unsplash": [448, 512, [], "e07c", "M448 230.2V480H0V230.2H141.1V355.1H306.9V230.2zM306.9 32H141.1V156.9H306.9z"], + "untappd": [640, 512, [], "f405", "M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1 .6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4 .9-2.5 4.4-2.3 7.4 .1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4 .9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3 .5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5 .1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6 .3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6 .5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"], + "ups": [384, 512, [], "f7e0", "M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4 .6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2 .6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"], + "usb": [640, 512, [], "f287", "M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4 .8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9 .3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"], + "usps": [576, 512, [], "f7e1", "M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8 .1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"], + "ussunnah": [512, 512, [], "f407", "M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2 .8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7 .2-9.4 .5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5 .2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6 .5 9.3 .5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 .8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3 .2 .6 .5 1.4 .6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2 .3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8 .5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6 .9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"], + "vaadin": [448, 512, [], "f408", "M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"], + "viacoin": [384, 512, [], "f237", "M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"], + "viadeo": [448, 512, [], "f2a9", "M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"], + "viber": [512, 512, [], "f409", "M444 49.9C431.3 38.2 379.9 .9 265.3 .4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9 .4-85.7 .4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9 .4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9 .6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4 .7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5 .9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9 .1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7 .5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1 .8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"], + "vimeo": [448, 512, [], "f40a", "M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3 .9 49 22.5 47.1 64.7z"], + "vimeo-v": [448, 512, [], "f27d", "M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"], + "vine": [384, 512, [], "f1ca", "M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"], + "vk": [448, 512, [], "f189", "M31.49 63.49C0 94.98 0 145.7 0 247V264.1C0 366.3 0 417 31.49 448.5C62.98 480 113.7 480 215 480H232.1C334.3 480 385 480 416.5 448.5C448 417 448 366.3 448 264.1V247C448 145.7 448 94.98 416.5 63.49C385 32 334.3 32 232.1 32H215C113.7 32 62.98 32 31.49 63.49zM75.6 168.3H126.7C128.4 253.8 166.1 289.1 196 297.4V168.3H244.2V242C273.7 238.8 304.6 205.2 315.1 168.3H363.3C359.3 187.4 351.5 205.6 340.2 221.6C328.9 237.6 314.5 251.1 297.7 261.2C316.4 270.5 332.9 283.6 346.1 299.8C359.4 315.9 369 334.6 374.5 354.7H321.4C316.6 337.3 306.6 321.6 292.9 309.8C279.1 297.9 262.2 290.4 244.2 288.1V354.7H238.4C136.3 354.7 78.03 284.7 75.6 168.3z"], + "vnv": [640, 512, [], "f40b", "M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"], + "vuejs": [448, 512, [], "f41f", "M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"], + "watchman-monitoring": [512, 512, [], "e087", "M256 16C123.5 16 16 123.5 16 256S123.5 496 256 496 496 388.5 496 256 388.5 16 256 16zM121.7 429.1C70.06 388.1 36.74 326.3 36.74 256a218.5 218.5 0 0 1 9.587-64.12l102.9-17.9-.121 10.97-13.94 2.013s-.144 12.5-.144 19.55a12.78 12.78 0 0 0 4.887 10.35l9.468 7.4zm105.7-283.3 8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46 0 0 0-32.34 30.47-39.53 34.5-7.078 3.964-.144 9.344-.144 9.344l8.481 7.618-.048 4.369L75.98 131c39.64-56.94 105.5-94.3 180-94.3A218.8 218.8 0 0 1 420.9 111.8l-193.5 37.7zm34.06 329.3-33.9-250.9 9.467-7.4a12.78 12.78 0 0 0 4.888-10.35c0-7.044-.144-19.55-.144-19.55l-13.94-2.013-.116-10.47 241.7 31.39A218.9 218.9 0 0 1 475.3 256C475.3 375.1 379.8 472.2 261.4 475.1z"], + "waze": [512, 512, [], "f83f", "M502.2 201.7C516.7 287.5 471.2 369.6 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1 -51.57-49c-6.44 .19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.9c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.3C94.8 95.2 193.1 32 288.1 32c102.5 0 197.1 70.67 214.1 169.7zM373.5 388.3c42-19.18 81.33-56.71 96.29-102.1 40.48-123.1-64.15-228-181.7-228-83.45 0-170.3 55.42-186.1 136-9.53 48.91 5 131.4-68.75 131.4C58.21 358.6 91.6 378.1 127 389.5c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9 .82a51.69 51.69 0 0 1 78.78-16.42zM205.1 187.1c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.6 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.6 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06 .28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"], + "weebly": [512, 512, [], "f5cc", "M425.1 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143c0 28.96 4.18 33.27 77.17 233.5 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.6 77.5-205.6 77.5-227.2 .63-48.32-36.01-83.47-86.92-83.47zm26.34 114.8l-65.57 176.4c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.4h-.95L216.1 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.6c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.8h.95l44.66-136.8c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.8h.95l44.03-139.8c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"], + "weibo": [512, 512, [], "f18a", "M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8 .3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4 .6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"], + "weixin": [576, 512, [], "f1d7", "M385.2 167.6c6.4 0 12.6 .3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2 .1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3 .1 10-9.9 19.6-24.4 19.6z"], + "whatsapp": [448, 512, [], "f232", "M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7 .9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"], + "whmcs": [448, 512, [], "f40d", "M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6 .3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1 .5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2 .2 6.9 .1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"], + "wikipedia-w": [640, 512, [], "f266", "M640 51.2l-.3 12.2c-28.1 .8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3 .3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4 .2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5 .3v13.1c-19.4 .6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4 .3-3.6 0-10.3 .3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5 .8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1 .2 .5z"], + "windows": [448, 512, [], "f17a", "M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"], + "wirsindhandwerk": [512, 512, ["wsh"], "e2d0", "M50.77 479.8h83.36V367.8l-83.36 47.01zm329 0h82.35V414.9l-82.35-47.01zm.0057-448V251.6L256.2 179.2 134.5 251.6V31.81H50.77V392.6L256.2 270.3 462.2 392.6V31.81z"], + "wix": [640, 512, [], "f5cf", "M393.4 131.7c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.7-28.48-108.6c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.9 55.28 167.2C49.73 140.5 23.86 128.1 0 131.1l65.57 247.9s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.4 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.9c-24.42-3.07-49.82 8.93-55.3 35.27zm115.8 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.1s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.4l-.02 .01v-8.98zm163.4 84.08L640 132.8s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47 .73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.7-82.97 123.4s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.5z"], + "wizards-of-the-coast": [640, 512, [], "f730", "M219.2 345.7c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92 .26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.8 75.94c-.34 1.7-.55 1.67 .79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.3-78.03-54.73-6.02-124.4 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79 .26c63.89-58.4 131.2-77.25 184.4-73.85 58.4 3.67 100 34.04 100 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.3 240.4c.79 7.07 4.19 10.21 9.17 10.47 5.5 .26 9.43-2.62 10.47-6.55 .79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.8 89.32 13.1 226.8 .79 241.2c-1.05 .52-1.31 .79 .79 1.31 60.49 16.5 155.8 81.18 196.1 202.2l1.05 .26c55.25-69.92 140.9-128.1 236.1-128.1 80.92 0 130.1 42.16 130.1 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2 .79 .79 .79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26 .52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78 .79 3.4 2.09 9.69 2.36 14.93 0 1.05 .79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.7 176 489.4 89.32 342.3 89.32zm-99.24 289.6c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5 .28 .39 12.13 16.57-4.71 31.16zm2.09-136.4l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.6l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52 .26c1.31 1.83 2.09 2.88 3.4 4.71l-.26 .52c-1.05-.26-2.36-.79-5.24 .26-2.09 .79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83 .52 1.83 1.83 5.5l-.26 .26c-3.06 .61-4.65 .34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26 .26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76 .26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52 .26 3.14 4.98-.26 .52c-3.53-1.76-7.35 .76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26 .52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4 .79-8.9 2.62-12.83 3.93l-.26 .26c.79 2.62 3.14 9.95 4.19 13.88 .79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88 .26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26 .26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26 .26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45 .54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26 .26c-4.71 .52-14.14 2.36-22.52 4.19l-.26-.26 .79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26 .26c.52 2.36 .79 3.14 1.57 5.5l-.26 .26c-1.14-1.14-3.34-3.2-16.24-.79l-.26 .26c.26 1.57 1.05 6.55 1.57 9.95l.26 .26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26 .26c.26 2.09 1.57 9.43 2.09 12.57l.26 .26c1.15 .38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25 .02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24 .79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69 .26 2.36 .52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26 .26c-.52 1.83-1.83 6.02-1.83 6.28l-.52 .52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26 .52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69 .79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.4c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24 .59-7.27 .26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09 .79 5.5 2.09 7.59 2.88 .48 .48 .18-1.87-1.05 25.14-.24 1.81 .02 2.6 .8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27 .09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26 .26-5.76-4.45 .26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26 .26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59 .75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38 .79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.5-191.9-129.6-53.42-1.05-94.27 15.45-132.8 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05 .26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.6 101.1 231.9 93.23 231.5c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4 .52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.1-35.88 67.04 1.05 167.3 40.85 199.8 139.8 .78 2.1-.01 2.63-.79 .27zM203.5 152.4s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.8 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.4 67.07c-58.4 0-106.1 12.05-114.1 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57 .26c6.55-1.83 48.97-13.88 110.2-13.88 180.2 0 301.7 116.8 301.7 223.4v9.95c0 1.31 .79 2.62 1.05 .52 .52-2.09 .79-8.64 .79-19.64 .26-83.79-96.63-227.6-321.6-227.6zm211.1 169.7c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81 .52 13.35 6.02 14.66 3.67 1.05 8.9 .52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.6c1.83 .52 3.14 1.05 5.76 1.83 0-1.83 .52-8.38 .79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"], + "wodu": [640, 512, [], "e088", "M178.4 339.7H141.1L112.2 223.5h-.478L83.23 339.7H45.2L0 168.9H37.55L64.57 285.2h.478L94.71 168.9h35.16l29.18 117.7h.479L187.5 168.9h36.83zM271.4 212.7c38.98 0 64.1 25.83 64.1 65.29 0 39.22-25.11 65.05-64.1 65.05-38.74 0-63.85-25.83-63.85-65.05C207.5 238.5 232.7 212.7 271.4 212.7zm0 104.8c23.2 0 30.13-19.85 30.13-39.46 0-19.85-6.934-39.7-30.13-39.7-27.7 0-29.89 19.85-29.89 39.7C241.5 297.6 248.4 317.5 271.4 317.5zM435.1 323.9h-.478c-7.893 13.39-21.76 19.13-37.55 19.13-37.31 0-55.49-32.04-55.49-66.25 0-33.24 18.42-64.1 54.77-64.1 14.59 0 28.94 6.218 36.83 18.42h.24V168.9h33.96v170.8H435.1zM405.4 238.3c-22.24 0-29.89 19.13-29.89 39.46 0 19.37 8.848 39.7 29.89 39.7 22.48 0 29.18-19.61 29.18-39.94C434.6 257.4 427.4 238.3 405.4 238.3zM592.1 339.7H560.7V322.5h-.718c-8.609 13.87-23.44 20.57-37.79 20.57-36.11 0-45.2-20.33-45.2-50.94V216.1h33.96V285.9c0 20.33 5.979 30.37 21.76 30.37 18.42 0 26.31-10.28 26.31-35.39V216.1H592.1zM602.5 302.9H640v36.83H602.5z"], + "wolf-pack-battalion": [512, 512, [], "f514", "M267.7 471.5l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.1-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.2 456.4 239.7l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.2l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.8l-58 38.71-3.52 93.25L369.8 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.6 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.6-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.3 59.82-3.52-93.25-58.06-38.71C185 65.1 135.8 22.87 95.3 0c-17.54 61.12-4.4 118.8 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.4 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.2 81.37 149.1 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.1 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1 -18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.7 376.5L181.5 366c-7.47-4.36-13.76-8.42-19.35-12.32 .6 7.26 .27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94 .9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"], + "wordpress": [512, 512, [], "f19a", "M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8 .9 0 1.8 .1 2.8 .2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7 .3 13.7 .3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"], + "wordpress-simple": [512, 512, [], "f411", "M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"], + "wpbeginner": [512, 512, [], "f297", "M462.8 322.4C519 386.7 466.1 480 370.9 480c-39.6 0-78.82-17.69-100.1-50.04-6.887 .356-22.7 .356-29.59 0C219.8 462.4 180.6 480 141.1 480c-95.49 0-148.3-92.1-91.86-157.6C-29.92 190.5 80.48 32 256 32c175.6 0 285.9 158.6 206.8 290.4zm-339.6-82.97h41.53v-58.08h-41.53v58.08zm217.2 86.07v-23.84c-60.51 20.92-132.4 9.198-187.6-33.97l.246 24.9c51.1 46.37 131.7 57.88 187.3 32.91zm-150.8-86.07h166.1v-58.08H189.6v58.08z"], + "wpexplorer": [512, 512, [], "f2de", "M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"], + "wpforms": [448, 512, [], "f298", "M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2 .1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"], + "wpressr": [496, 512, ["rendact"], "f3e4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S384.1 8 248 8zm171.3 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03 .06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.8 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24 .1 28.48 .02 42.72 .05 6.24 .01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6 .23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21 .08 30.43 .02 45.64 .04 5.56 .01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33 .04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43 .05 52.86 0 79.29 .05 12.44 .02 13.93-13.65 3.9-13.64-25.26 .03-50.52 .02-75.78 .02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09 .06 25.98 .02 130.8 .03 6.08-.01 8.03 2.79 5.62 8.27z"], + "xbox": [512, 512, [], "f412", "M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7 .1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"], + "xing": [384, 512, [], "f168", "M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8 .3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1 .2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"], + "y-combinator": [448, 512, [], "f23b", "M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"], + "yahoo": [512, 512, [], "f19e", "M223.7 141.1 167 284.2 111 141.1H14.93L120.8 390.2 82.19 480h94.17L317.3 141.1zm105.4 135.8a58.22 58.22 0 1 0 58.22 58.22A58.22 58.22 0 0 0 329.1 276.9zM394.6 32l-93 223.5H406.4L499.1 32z"], + "yammer": [512, 512, [], "f840", "M500.7 159.5a12.78 12.78 0 0 0 -6.4-8.282 13.95 13.95 0 0 0 -10.08-1.125L457.8 156.7l-.043-.2-22.3 5.785-1.243 .333-.608-2.17A369 369 0 0 0 347.5 4.289a14.1 14.1 0 0 0 -19.78-.463l-102.9 102.7H24.95A24.9 24.9 0 0 0 0 131.4V380.4a24.96 24.96 0 0 0 24.92 24.9H224.1L328.1 508a13.67 13.67 0 0 0 19.33 0c.126-.126 .249-.255 .37-.385a368 368 0 0 0 69.58-107.4 403.5 403.5 0 0 0 17.3-50.8v-.028l20.41 5.336 .029-.073L483.3 362a20.25 20.25 0 0 0 2.619 .5 13.36 13.36 0 0 0 4.139-.072 13.5 13.5 0 0 0 10.52-9.924 415.9 415.9 0 0 0 .058-193zM337.1 24.65l.013 .014h-.013zm-110.2 165.2L174.3 281.1a11.34 11.34 0 0 0 -1.489 5.655v46.19a22.04 22.04 0 0 1 -22.04 22h-3.4A22.07 22.07 0 0 1 125.3 332.1V287.3a11.53 11.53 0 0 0 -1.388-5.51l-51.6-92.2a21.99 21.99 0 0 1 19.26-32.73h3.268a22.06 22.06 0 0 1 19.61 11.92l36.36 70.28 37.51-70.51a22.07 22.07 0 0 1 38.56-.695 21.7 21.7 0 0 1 0 21.97zM337.1 24.67a348.1 348.1 0 0 1 75.8 141.3l.564 1.952-114.1 29.6V131.4a25.01 25.01 0 0 0 -24.95-24.9H255.1zm60.5 367.3v-.043l-.014 .014a347.2 347.2 0 0 1 -60.18 95.23l-82.2-81.89h19.18a24.98 24.98 0 0 0 24.95-24.9v-66.2l114.6 29.86A385.2 385.2 0 0 1 397.6 391.1zm84-52.45 .015 .014-50.62-13.13L299.4 292.1V219.6l119.7-30.99 4.468-1.157 39.54-10.25 18.51-4.816A393 393 0 0 1 481.6 339.5z"], + "yandex": [256, 512, [], "f413", "M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"], + "yandex-international": [320, 512, [], "f414", "M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"], + "yarn": [496, 512, [], "f7e3", "M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4 .1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3 .8-10.8-5.7 .8-19.2 .8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3 .8 1.4 13.7 .8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2 .9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4 .2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"], + "yelp": [384, 512, [], "f1e9", "M42.9 240.3l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.5a22.79 22.79 0 0 1 -28.21-19.6 197.2 197.2 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.3a199.4 199.4 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.9 490l3.9-110.8c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.3-109.9l58.81 94a22.93 22.93 0 0 0 34 5.5 198.4 198.4 0 0 0 52.71-67.61A23 23 0 0 0 364.2 370l-105.4-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.3-132.2a197.4 197.4 0 0 0 -50.41-69.31 22.85 22.85 0 0 0 -34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.6a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0 -9.9 32l104.1 180.4c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0 -24.5-22.8 320.4 320.4 0 0 0 -112.3 30.1z"], + "yoast": [448, 512, [], "f2b1", "M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1 .6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"], + "youtube": [576, 512, [61802], "f167", "M549.7 124.1c-6.281-23.65-24.79-42.28-48.28-48.6C458.8 64 288 64 288 64S117.2 64 74.63 75.49c-23.5 6.322-42 24.95-48.28 48.6-11.41 42.87-11.41 132.3-11.41 132.3s0 89.44 11.41 132.3c6.281 23.65 24.79 41.5 48.28 47.82C117.2 448 288 448 288 448s170.8 0 213.4-11.49c23.5-6.321 42-24.17 48.28-47.82 11.41-42.87 11.41-132.3 11.41-132.3s0-89.44-11.41-132.3zm-317.5 213.5V175.2l142.7 81.21-142.7 81.2z"], + "zhihu": [640, 512, [], "f63f", "M170.5 148.1v217.5l23.43 .01 7.71 26.37 42.01-26.37h49.53V148.1H170.5zm97.75 193.9h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.8h72.82v170.3zm-118.5-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.1 0 396.3c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.1c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.1-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.4c-19.78 0-130.9 .93-131.1 .93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.2 16.49-232.4 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15 .89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.4s2.82 22.31 25.51 22.85h107.9v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08 .11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.4c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"] + }; + + bunker(function () { + defineIcons('fab', icons); + defineIcons('fa-brands', icons); + }); + +}()); diff --git a/public/css/fonts/js/brands.min.js b/public/css/fonts/js/brands.min.js new file mode 100644 index 0000000..0491ec4 --- /dev/null +++ b/public/css/fonts/js/brands.min.js @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +!function(){"use strict";var c={},z={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(z=document)}catch(c){}var l=(c.navigator||{}).userAgent,h=void 0===l?"":l,m=c,a=z;m.document,a.documentElement&&a.head&&"function"==typeof a.addEventListener&&a.createElement,~h.indexOf("MSIE")||h.indexOf("Trident/");function v(z,c){var l,h=Object.keys(z);return Object.getOwnPropertySymbols&&(l=Object.getOwnPropertySymbols(z),c&&(l=l.filter(function(c){return Object.getOwnPropertyDescriptor(z,c).enumerable})),h.push.apply(h,l)),h}function C(h){for(var c=1;cc.length)&&(z=c.length);for(var l=0,h=new Array(z);l arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var _WINDOW = {}; + var _DOCUMENT = {}; + + try { + if (typeof window !== 'undefined') _WINDOW = window; + if (typeof document !== 'undefined') _DOCUMENT = document; + } catch (e) {} + + var _ref = _WINDOW.navigator || {}, + _ref$userAgent = _ref.userAgent, + userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; + var WINDOW = _WINDOW; + var DOCUMENT = _DOCUMENT; + var IS_BROWSER = !!WINDOW.document; + var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; + var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); + + var functions = []; + + var listener = function listener() { + DOCUMENT.removeEventListener('DOMContentLoaded', listener); + loaded = 1; + functions.map(function (fn) { + return fn(); + }); + }; + + var loaded = false; + + if (IS_DOM) { + loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); + if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); + } + + function domready (fn) { + if (!IS_DOM) return; + loaded ? setTimeout(fn, 0) : functions.push(fn); + } + + function report (_ref) { + var nodesTested = _ref.nodesTested, + nodesFound = _ref.nodesFound; + var timedOutTests = {}; + + for (var key in nodesFound) { + if (!(nodesTested.conflict[key] || nodesTested.noConflict[key])) { + timedOutTests[key] = nodesFound[key]; + } + } + + var conflictsCount = Object.keys(nodesTested.conflict).length; + + if (conflictsCount > 0) { + console.info("%cConflict".concat(conflictsCount > 1 ? 's' : '', " found:"), 'color: darkred; font-size: large'); + var data = {}; + + for (var _key in nodesTested.conflict) { + var item = nodesTested.conflict[_key]; + data[_key] = { + 'tagName': item.tagName, + 'src/href': item.src || item.href || 'n/a', + 'innerText excerpt': item.innerText && item.innerText !== '' ? item.innerText.slice(0, 200) + '...' : '(empty)' + }; + } + + console.table(data); + } + + var noConflictsCount = Object.keys(nodesTested.noConflict).length; + + if (noConflictsCount > 0) { + console.info("%cNo conflict".concat(noConflictsCount > 1 ? 's' : '', " found with ").concat(noConflictsCount === 1 ? 'this' : 'these', ":"), 'color: green; font-size: large'); + var _data = {}; + + for (var _key2 in nodesTested.noConflict) { + var _item = nodesTested.noConflict[_key2]; + _data[_key2] = { + 'tagName': _item.tagName, + 'src/href': _item.src || _item.href || 'n/a', + 'innerText excerpt': _item.innerText && _item.innerText !== '' ? _item.innerText.slice(0, 200) + '...' : '(empty)' + }; + } + + console.table(_data); + } + + var timeOutCount = Object.keys(timedOutTests).length; + + if (timeOutCount > 0) { + console.info("%cLeftovers--we timed out before collecting test results for ".concat(timeOutCount === 1 ? 'this' : 'these', ":"), 'color: blue; font-size: large'); + var _data2 = {}; + + for (var _key3 in timedOutTests) { + var _item2 = timedOutTests[_key3]; + _data2[_key3] = { + 'tagName': _item2.tagName, + 'src/href': _item2.src || _item2.href || 'n/a', + 'innerText excerpt': _item2.innerText && _item2.innerText !== '' ? _item2.innerText.slice(0, 200) + '...' : '(empty)' + }; + } + + console.table(_data2); + } + } + + var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var md5 = createCommonjsModule(function (module) { + + (function ($) { + /** + * Add integers, wrapping at 2^32. + * This uses 16-bit operations internally to work around bugs in interpreters. + * + * @param {number} x First integer + * @param {number} y Second integer + * @returns {number} Sum + */ + + function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; + } + /** + * Bitwise rotate a 32-bit number to the left. + * + * @param {number} num 32-bit number + * @param {number} cnt Rotation count + * @returns {number} Rotated number + */ + + + function bitRotateLeft(num, cnt) { + return num << cnt | num >>> 32 - cnt; + } + /** + * Basic operation the algorithm uses. + * + * @param {number} q q + * @param {number} a a + * @param {number} b b + * @param {number} x x + * @param {number} s s + * @param {number} t t + * @returns {number} Result + */ + + + function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); + } + /** + * Basic operation the algorithm uses. + * + * @param {number} a a + * @param {number} b b + * @param {number} c c + * @param {number} d d + * @param {number} x x + * @param {number} s s + * @param {number} t t + * @returns {number} Result + */ + + + function md5ff(a, b, c, d, x, s, t) { + return md5cmn(b & c | ~b & d, a, b, x, s, t); + } + /** + * Basic operation the algorithm uses. + * + * @param {number} a a + * @param {number} b b + * @param {number} c c + * @param {number} d d + * @param {number} x x + * @param {number} s s + * @param {number} t t + * @returns {number} Result + */ + + + function md5gg(a, b, c, d, x, s, t) { + return md5cmn(b & d | c & ~d, a, b, x, s, t); + } + /** + * Basic operation the algorithm uses. + * + * @param {number} a a + * @param {number} b b + * @param {number} c c + * @param {number} d d + * @param {number} x x + * @param {number} s s + * @param {number} t t + * @returns {number} Result + */ + + + function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); + } + /** + * Basic operation the algorithm uses. + * + * @param {number} a a + * @param {number} b b + * @param {number} c c + * @param {number} d d + * @param {number} x x + * @param {number} s s + * @param {number} t t + * @returns {number} Result + */ + + + function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); + } + /** + * Calculate the MD5 of an array of little-endian words, and a bit length. + * + * @param {Array} x Array of little-endian words + * @param {number} len Bit length + * @returns {Array} MD5 Array + */ + + + function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << len % 32; + x[(len + 64 >>> 9 << 4) + 14] = len; + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + + return [a, b, c, d]; + } + /** + * Convert an array of little-endian words to a string + * + * @param {Array} input MD5 Array + * @returns {string} MD5 string + */ + + + function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff); + } + + return output; + } + /** + * Convert a raw string to an array of little-endian words + * Characters >255 have their high-byte silently ignored. + * + * @param {string} input Raw input string + * @returns {Array} Array of little-endian words + */ + + + function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + + var length8 = input.length * 8; + + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32; + } + + return output; + } + /** + * Calculate the MD5 of a raw string + * + * @param {string} s Input string + * @returns {string} Raw MD5 string + */ + + + function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); + } + /** + * Calculates the HMAC-MD5 of a key and some data (raw strings) + * + * @param {string} key HMAC key + * @param {string} data Raw input string + * @returns {string} Raw MD5 string + */ + + + function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); + } + /** + * Convert a raw string to a hex string + * + * @param {string} input Raw input string + * @returns {string} Hex encoded string + */ + + + function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f); + } + + return output; + } + /** + * Encode a string as UTF-8 + * + * @param {string} input Input string + * @returns {string} UTF8 string + */ + + + function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); + } + /** + * Encodes input string as raw MD5 string + * + * @param {string} s Input string + * @returns {string} Raw MD5 string + */ + + + function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); + } + /** + * Encodes input string as Hex encoded string + * + * @param {string} s Input string + * @returns {string} Hex encoded string + */ + + + function hexMD5(s) { + return rstr2hex(rawMD5(s)); + } + /** + * Calculates the raw HMAC-MD5 for the given key and data + * + * @param {string} k HMAC key + * @param {string} d Input string + * @returns {string} Raw MD5 string + */ + + + function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); + } + /** + * Calculates the Hex encoded HMAC-MD5 for the given key and data + * + * @param {string} k HMAC key + * @param {string} d Input string + * @returns {string} Raw MD5 string + */ + + + function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); + } + /** + * Calculates MD5 value for a given string. + * If a key is provided, calculates the HMAC-MD5 value. + * Returns a Hex encoded string unless the raw argument is given. + * + * @param {string} string Input string + * @param {string} [key] HMAC key + * @param {boolean} [raw] Raw output switch + * @returns {string} MD5 output + */ + + + function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + + return rawMD5(string); + } + + if (!raw) { + return hexHMACMD5(key, string); + } + + return rawHMACMD5(key, string); + } + + if (module.exports) { + module.exports = md5; + } else { + $.md5 = md5; + } + })(commonjsGlobal); + }); + + function md5ForNode(node) { + if (null === node || 'object' !== _typeof(node)) return undefined; + + if (node.src) { + return md5(node.src); + } else if (node.href) { + return md5(node.href); + } else if (node.innerText && '' !== node.innerText) { + // eslint-disable-line yoda + return md5(node.innerText); + } else { + return undefined; + } + } + + var diagScriptId = 'fa-kits-diag'; + var nodeUnderTestId = 'fa-kits-node-under-test'; + var md5Attr = 'data-md5'; + var detectionIgnoreAttr = 'data-fa-detection-ignore'; + var timeoutAttr = 'data-fa-detection-timeout'; + var resultsCollectionMaxWaitAttr = 'data-fa-detection-results-collection-max-wait'; + + var silenceErrors = function silenceErrors(e) { + e.preventDefault(); + e.stopPropagation(); + }; + + function pollUntil(_ref) { + var _ref$fn = _ref.fn, + fn = _ref$fn === void 0 ? function () { + return true; + } : _ref$fn, + _ref$initialDuration = _ref.initialDuration, + initialDuration = _ref$initialDuration === void 0 ? 1 : _ref$initialDuration, + _ref$maxDuration = _ref.maxDuration, + maxDuration = _ref$maxDuration === void 0 ? WINDOW.FontAwesomeDetection.timeout : _ref$maxDuration, + _ref$showProgress = _ref.showProgress, + showProgress = _ref$showProgress === void 0 ? false : _ref$showProgress, + progressIndicator = _ref.progressIndicator; + return new Promise(function (resolve, reject) { + // eslint-disable-line compat/compat + function poll(duration, cumulativeDuration) { + setTimeout(function () { + var result = fn(); + + if (showProgress) { + console.info(progressIndicator); + } + + if (!!result) { + // eslint-disable-line no-extra-boolean-cast + resolve(result); + } else { + var nextDuration = 250; + var nextCumulativeDuration = nextDuration + cumulativeDuration; + + if (nextCumulativeDuration <= maxDuration) { + poll(nextDuration, nextCumulativeDuration); + } else { + reject('timeout'); // eslint-disable-line prefer-promise-reject-errors + } + } + }, duration); + } + + poll(initialDuration, 0); + }); + } + + function detectWebfontConflicts() { + var linkTags = Array.from(DOCUMENT.getElementsByTagName('link')).filter(function (t) { + return !t.hasAttribute(detectionIgnoreAttr); + }); + var styleTags = Array.from(DOCUMENT.getElementsByTagName('style')).filter(function (t) { + if (t.hasAttribute(detectionIgnoreAttr)) { + return false; + } // If the browser has loaded the FA5 CSS, let's not test that + + +

max-height 300px

+ + +

no max-height

+ + + + + diff --git a/public/theme/autosize/package.json b/public/theme/autosize/package.json new file mode 100644 index 0000000..18ef012 --- /dev/null +++ b/public/theme/autosize/package.json @@ -0,0 +1,49 @@ +{ + "name": "autosize", + "description": "Autosize is a small, stand-alone script to automatically adjust textarea height to fit text.", + "version": "3.0.15", + "keywords": [ + "textarea", + "form", + "ui" + ], + "files": [ + "dist", + "src" + ], + "author": { + "name": "Jack Moore", + "url": "http://www.jacklmoore.com", + "email": "hello@jacklmoore.com" + }, + "main": "dist/autosize.js", + "license": "MIT", + "homepage": "http://www.jacklmoore.com/autosize", + "demo": "http://www.jacklmoore.com/autosize", + "repository": { + "type": "git", + "url": "http://github.com/jackmoore/autosize.git" + }, + "dependencies": {}, + "devDependencies": { + "babel": "^5.4.3", + "gaze": "^0.5.1", + "jshint": "^2.5.6", + "uglify-js": "^2.4.22" + }, + "config": { + "bower": { + "name": "autosize", + "ignore": [], + "moduleType": [ + "amd", + "node" + ] + }, + "title": "Autosize", + "filename": "autosize" + }, + "scripts": { + "build": "node build" + } +} diff --git a/public/theme/autosize/readme.md b/public/theme/autosize/readme.md new file mode 100644 index 0000000..3857829 --- /dev/null +++ b/public/theme/autosize/readme.md @@ -0,0 +1,35 @@ +## Summary + +Autosize is a small, stand-alone script to automatically adjust textarea height to fit text. + +#### Demo + +Full documentation and a demo can be found at [jacklmoore.com/autosize](http://jacklmoore.com/autosize) + +#### Install via NPM +```bash +npm install autosize +``` + +#### Browser compatibility + +Chrome | Firefox | IE | Safari | iOS Safari | Android | Opera Mini | Windows Phone IE +------ | --------|----|--------|------------|---------|------------|------------------ +yes | yes | 9 | yes | yes | 4 | ? | 8.1 + +#### Usage + +The autosize function accepts a single textarea element, or an array or array-like object (such as a NodeList or jQuery collection) of textarea elements. + +```javascript +// from a NodeList +autosize(document.querySelectorAll('textarea')); + +// from a single Node +autosize(document.querySelector('textarea')); + +// from a jQuery collection +autosize($('textarea')); +``` + +Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php) diff --git a/public/theme/autosize/src/autosize.js b/public/theme/autosize/src/autosize.js new file mode 100644 index 0000000..d0e47ce --- /dev/null +++ b/public/theme/autosize/src/autosize.js @@ -0,0 +1,218 @@ +const set = (typeof Set === "function") ? new Set() : (function () { + const list = []; + + return { + has(key) { + return Boolean(list.indexOf(key) > -1); + }, + add(key) { + list.push(key); + }, + delete(key) { + list.splice(list.indexOf(key), 1); + }, + } +})(); + +let createEvent = (name)=> new Event(name); +try { + new Event('test'); +} catch(e) { + // IE does not support `new Event()` + createEvent = (name)=> { + const evt = document.createEvent('Event'); + evt.initEvent(name, true, false); + return evt; + }; +} + +function assign(ta, {setOverflowX = true, setOverflowY = true} = {}) { + if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || set.has(ta)) return; + + let heightOffset = null; + let overflowY = null; + let clientWidth = ta.clientWidth; + + function init() { + const style = window.getComputedStyle(ta, null); + + overflowY = style.overflowY; + + if (style.resize === 'vertical') { + ta.style.resize = 'none'; + } else if (style.resize === 'both') { + ta.style.resize = 'horizontal'; + } + + if (style.boxSizing === 'content-box') { + heightOffset = -(parseFloat(style.paddingTop)+parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth)+parseFloat(style.borderBottomWidth); + } + // Fix when a textarea is not on document body and heightOffset is Not a Number + if (isNaN(heightOffset)) { + heightOffset = 0; + } + + update(); + } + + function changeOverflow(value) { + { + // Chrome/Safari-specific fix: + // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space + // made available by removing the scrollbar. The following forces the necessary text reflow. + const width = ta.style.width; + ta.style.width = '0px'; + // Force reflow: + /* jshint ignore:start */ + ta.offsetWidth; + /* jshint ignore:end */ + ta.style.width = width; + } + + overflowY = value; + + if (setOverflowY) { + ta.style.overflowY = value; + } + + resize(); + } + + function resize() { + const htmlTop = window.pageYOffset; + const bodyTop = document.body.scrollTop; + const originalHeight = ta.style.height; + + ta.style.height = 'auto'; + + let endHeight = ta.scrollHeight+heightOffset; + + if (ta.scrollHeight === 0) { + // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. + ta.style.height = originalHeight; + return; + } + + ta.style.height = endHeight+'px'; + + // used to check if an update is actually necessary on window.resize + clientWidth = ta.clientWidth; + + // prevents scroll-position jumping + document.documentElement.scrollTop = htmlTop; + document.body.scrollTop = bodyTop; + } + + function update() { + const startHeight = ta.style.height; + + resize(); + + const style = window.getComputedStyle(ta, null); + + if (style.height !== ta.style.height) { + if (overflowY !== 'visible') { + changeOverflow('visible'); + } + } else { + if (overflowY !== 'hidden') { + changeOverflow('hidden'); + } + } + + if (startHeight !== ta.style.height) { + const evt = createEvent('autosize:resized'); + ta.dispatchEvent(evt); + } + } + + const pageResize = () => { + if (ta.clientWidth !== clientWidth) { + update(); + } + }; + + const destroy = style => { + window.removeEventListener('resize', pageResize, false); + ta.removeEventListener('input', update, false); + ta.removeEventListener('keyup', update, false); + ta.removeEventListener('autosize:destroy', destroy, false); + ta.removeEventListener('autosize:update', update, false); + set.delete(ta); + + Object.keys(style).forEach(key => { + ta.style[key] = style[key]; + }); + }.bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap, + }); + + ta.addEventListener('autosize:destroy', destroy, false); + + // IE9 does not fire onpropertychange or oninput for deletions, + // so binding to onkeyup to catch most of those events. + // There is no way that I know of to detect something like 'cut' in IE9. + if ('onpropertychange' in ta && 'oninput' in ta) { + ta.addEventListener('keyup', update, false); + } + + window.addEventListener('resize', pageResize, false); + ta.addEventListener('input', update, false); + ta.addEventListener('autosize:update', update, false); + set.add(ta); + + if (setOverflowX) { + ta.style.overflowX = 'hidden'; + ta.style.wordWrap = 'break-word'; + } + + init(); +} + +function destroy(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + const evt = createEvent('autosize:destroy'); + ta.dispatchEvent(evt); +} + +function update(ta) { + if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; + const evt = createEvent('autosize:update'); + ta.dispatchEvent(evt); +} + +let autosize = null; + +// Do nothing in Node.js environment and IE8 (or lower) +if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { + autosize = el => el; + autosize.destroy = el => el; + autosize.update = el => el; +} else { + autosize = (el, options) => { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], x => assign(x, options)); + } + return el; + }; + autosize.destroy = el => { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy); + } + return el; + }; + autosize.update = el => { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update); + } + return el; + }; +} + +export default autosize; diff --git a/public/theme/bootstrap-daterangepicker/.bower.json b/public/theme/bootstrap-daterangepicker/.bower.json new file mode 100644 index 0000000..772b7ca --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/.bower.json @@ -0,0 +1,30 @@ +{ + "name": "bootstrap-daterangepicker", + "main": [ + "daterangepicker.js", + "daterangepicker.css" + ], + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "moment.js", + "moment.min.js" + ], + "dependencies": { + "jquery": "1.9.1 - 3", + "moment": ">=2.9.0" + }, + "homepage": "https://github.com/christianesperar/bootstrap-daterangepicker", + "_release": "fc748970e8", + "_resolution": { + "type": "branch", + "branch": "master", + "commit": "fc748970e8228ab271ba9ca799f57d8f8c6a5013" + }, + "_source": "git@github.com:christianesperar/bootstrap-daterangepicker.git", + "_target": "master", + "_originalSource": "git@github.com:christianesperar/bootstrap-daterangepicker.git" +} \ No newline at end of file diff --git a/public/theme/bootstrap-daterangepicker/README.md b/public/theme/bootstrap-daterangepicker/README.md new file mode 100644 index 0000000..30d3197 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/README.md @@ -0,0 +1,44 @@ +# Date Range Picker for Bootstrap + +![Improvely.com](http://i.imgur.com/LbAMf3D.png) + +This date range picker component for Bootstrap creates a dropdown menu from which a user can +select a range of dates. I created it while building the UI for [Improvely](http://www.improvely.com), +which needed a way to select date ranges for reports. + +Features include limiting the selectable date range, localizable strings and date formats, +a single date picker mode, optional time picker (for e.g. making appointments or reservations), +and styles that match the default Bootstrap 3 theme. + +## [Documentation and Live Usage Examples](http://www.daterangepicker.com) + +## [See It In a Live Application](https://awio.iljmp.com/5/drpdemogh) + +## License + +This code is made available under the same license as Bootstrap. Moment.js is included in this repository +for convenience. It is available under the [MIT license](http://www.opensource.org/licenses/mit-license.php). + +-- + +The MIT License (MIT) + +Copyright (c) 2012-2016 Dan Grossman + +Permission 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: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE 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. diff --git a/public/theme/bootstrap-daterangepicker/bower.json b/public/theme/bootstrap-daterangepicker/bower.json new file mode 100644 index 0000000..d42995a --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/bower.json @@ -0,0 +1,20 @@ +{ + "name": "bootstrap-daterangepicker", + "main": [ + "daterangepicker.js", + "daterangepicker.css" + ], + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "moment.js", + "moment.min.js" + ], + "dependencies": { + "jquery": "1.9.1 - 3", + "moment": ">=2.9.0" + } +} diff --git a/public/theme/bootstrap-daterangepicker/daterangepicker.css b/public/theme/bootstrap-daterangepicker/daterangepicker.css new file mode 100644 index 0000000..a03ff44 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/daterangepicker.css @@ -0,0 +1,269 @@ +.daterangepicker { + position: absolute; + color: inherit; + background: #fff; + border-radius: 4px; + width: 278px; + padding: 4px; + margin-top: 1px; + top: 100px; + left: 20px; + /* Calendars */ } + .daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; } + .daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; } + .daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; } + .daterangepicker.opensleft:before { + right: 9px; } + .daterangepicker.opensleft:after { + right: 10px; } + .daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; } + .daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; } + .daterangepicker.opensright:before { + left: 9px; } + .daterangepicker.opensright:after { + left: 10px; } + .daterangepicker.dropup { + margin-top: -5px; } + .daterangepicker.dropup:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; } + .daterangepicker.dropup:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; } + .daterangepicker.dropdown-menu { + max-width: none; + z-index: 3001; } + .daterangepicker.single .ranges, .daterangepicker.single .calendar { + float: none; } + .daterangepicker.show-calendar .calendar { + display: block; } + .daterangepicker .calendar { + display: none; + max-width: 270px; + margin: 4px; } + .daterangepicker .calendar.single .calendar-table { + border: none; } + .daterangepicker .calendar th, .daterangepicker .calendar td { + white-space: nowrap; + text-align: center; + min-width: 32px; } + .daterangepicker .calendar-table { + border: 1px solid #fff; + padding: 4px; + border-radius: 4px; + background: #fff; } + .daterangepicker table { + width: 100%; + margin: 0; } + .daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; } + .daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; } + .daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; } + .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; } + .daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; } + .daterangepicker td.start-date { + border-radius: 4px 0 0 4px; } + .daterangepicker td.end-date { + border-radius: 0 4px 4px 0; } + .daterangepicker td.start-date.end-date { + border-radius: 4px; } + .daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; } + .daterangepicker th.month { + width: auto; } + .daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; } + .daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; } + .daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; } + .daterangepicker select.yearselect { + width: 40%; } + .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; } + .daterangepicker .input-mini { + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + height: 30px; + line-height: 30px; + display: block; + vertical-align: middle; + margin: 0 0 5px 0; + padding: 0 6px 0 28px; + width: 100%; } + .daterangepicker .input-mini.active { + border: 1px solid #08c; + border-radius: 4px; } + .daterangepicker .daterangepicker_input { + position: relative; } + .daterangepicker .daterangepicker_input i { + position: absolute; + left: 8px; + top: 8px; } + .daterangepicker.rtl .input-mini { + padding-right: 28px; + padding-left: 6px; } + .daterangepicker.rtl .daterangepicker_input i { + left: auto; + right: 8px; } + .daterangepicker .calendar-time { + text-align: center; + margin: 5px auto; + line-height: 30px; + position: relative; + padding-left: 28px; } + .daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; } + +.ranges { + font-size: 11px; + float: none; + margin: 4px; + text-align: left; } + .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; } + .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + border-radius: 4px; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + cursor: pointer; } + .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; } + .ranges li.active { + background: #08c; + border: 1px solid #08c; + color: #fff; } + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; } + .daterangepicker .ranges ul { + width: 160px; } + .daterangepicker.single .ranges ul { + width: 100%; } + .daterangepicker.single .calendar.left { + clear: none; } + .daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .calendar { + float: left; } + .daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .calendar { + float: right; } + .daterangepicker.ltr { + direction: ltr; + text-align: left; } + .daterangepicker.ltr .calendar.left { + clear: left; + margin-right: 0; } + .daterangepicker.ltr .calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.ltr .calendar.right { + margin-left: 0; } + .daterangepicker.ltr .calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.ltr .left .daterangepicker_input { + padding-right: 12px; } + .daterangepicker.ltr .calendar.left .calendar-table { + padding-right: 12px; } + .daterangepicker.ltr .ranges, .daterangepicker.ltr .calendar { + float: left; } + .daterangepicker.rtl { + direction: rtl; + text-align: right; } + .daterangepicker.rtl .calendar.left { + clear: right; + margin-left: 0; } + .daterangepicker.rtl .calendar.left .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.rtl .calendar.right { + margin-right: 0; } + .daterangepicker.rtl .calendar.right .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.rtl .left .daterangepicker_input { + padding-left: 12px; } + .daterangepicker.rtl .calendar.left .calendar-table { + padding-left: 12px; } + .daterangepicker.rtl .ranges, .daterangepicker.rtl .calendar { + text-align: right; + float: right; } } +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; } + .daterangepicker.ltr .ranges { + float: left; } + .daterangepicker.rtl .ranges { + float: right; } + .daterangepicker .calendar.left { + clear: none !important; } } diff --git a/public/theme/bootstrap-daterangepicker/daterangepicker.js b/public/theme/bootstrap-daterangepicker/daterangepicker.js new file mode 100644 index 0000000..e0024b6 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/daterangepicker.js @@ -0,0 +1,1632 @@ +/** +* @version: 2.1.24 +* @author: Dan Grossman http://www.dangrossman.info/ +* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved. +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php +* @website: https://www.improvely.com/ +*/ +// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Make globaly available as well + define(['moment', 'jquery'], function (moment, jquery) { + return (root.daterangepicker = factory(moment, jquery)); + }); + } else if (typeof module === 'object' && module.exports) { + // Node / Browserify + //isomorphic issue + var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; + if (!jQuery) { + jQuery = require('jquery'); + if (!jQuery.fn) jQuery.fn = {}; + } + module.exports = factory(require('moment'), jQuery); + } else { + // Browser globals + root.daterangepicker = factory(root.moment, root.jQuery); + } +}(this, function(moment, $) { + var DateRangePicker = function(element, options, cb) { + + //default settings for options + this.parentEl = 'body'; + this.element = $(element); + this.startDate = moment().startOf('day'); + this.endDate = moment().endOf('day'); + this.minDate = false; + this.maxDate = false; + this.dateLimit = false; + this.autoApply = false; + this.singleDatePicker = false; + this.showDropdowns = false; + this.showWeekNumbers = false; + this.showISOWeekNumbers = false; + this.showCustomRangeLabel = true; + this.timePicker = false; + this.timePicker24Hour = false; + this.timePickerIncrement = 1; + this.timePickerSeconds = false; + this.linkedCalendars = true; + this.autoUpdateInput = true; + this.alwaysShowCalendars = false; + this.ranges = {}; + + this.opens = 'right'; + if (this.element.hasClass('pull-right')) + this.opens = 'left'; + + this.drops = 'down'; + if (this.element.hasClass('dropup')) + this.drops = 'up'; + + this.buttonClasses = 'btn btn-sm'; + this.applyClass = 'btn-success'; + this.cancelClass = 'btn-default'; + + this.locale = { + direction: 'ltr', + format: moment.localeData().longDateFormat('L'), + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + weekLabel: 'W', + customRangeLabel: 'Custom Range', + daysOfWeek: moment.weekdaysMin(), + monthNames: moment.monthsShort(), + firstDay: moment.localeData().firstDayOfWeek() + }; + + this.callback = function() { }; + + //some state information + this.isShowing = false; + this.leftCalendar = {}; + this.rightCalendar = {}; + + //custom options from user + if (typeof options !== 'object' || options === null) + options = {}; + + //allow setting options with data attributes + //data-api options will be overwritten with custom javascript options + options = $.extend(this.element.data(), options); + + //html template for the picker UI + if (typeof options.template !== 'string' && !(options.template instanceof $)) + options.template = ''; + + this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); + this.container = $(options.template).appendTo(this.parentEl); + + // + // handle all the possible options overriding defaults + // + + if (typeof options.locale === 'object') { + + if (typeof options.locale.direction === 'string') + this.locale.direction = options.locale.direction; + + if (typeof options.locale.format === 'string') + this.locale.format = options.locale.format; + + if (typeof options.locale.separator === 'string') + this.locale.separator = options.locale.separator; + + if (typeof options.locale.daysOfWeek === 'object') + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + + if (typeof options.locale.monthNames === 'object') + this.locale.monthNames = options.locale.monthNames.slice(); + + if (typeof options.locale.firstDay === 'number') + this.locale.firstDay = options.locale.firstDay; + + if (typeof options.locale.applyLabel === 'string') + this.locale.applyLabel = options.locale.applyLabel; + + if (typeof options.locale.cancelLabel === 'string') + this.locale.cancelLabel = options.locale.cancelLabel; + + if (typeof options.locale.weekLabel === 'string') + this.locale.weekLabel = options.locale.weekLabel; + + if (typeof options.locale.customRangeLabel === 'string') + this.locale.customRangeLabel = options.locale.customRangeLabel; + + } + this.container.addClass(this.locale.direction); + + if (typeof options.startDate === 'string') + this.startDate = moment(options.startDate, this.locale.format); + + if (typeof options.endDate === 'string') + this.endDate = moment(options.endDate, this.locale.format); + + if (typeof options.minDate === 'string') + this.minDate = moment(options.minDate, this.locale.format); + + if (typeof options.maxDate === 'string') + this.maxDate = moment(options.maxDate, this.locale.format); + + if (typeof options.startDate === 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate === 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate === 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate === 'object') + this.maxDate = moment(options.maxDate); + + // sanity check for bad options + if (this.minDate && this.startDate.isBefore(this.minDate)) + this.startDate = this.minDate.clone(); + + // sanity check for bad options + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate.clone(); + + if (typeof options.applyClass === 'string') + this.applyClass = options.applyClass; + + if (typeof options.cancelClass === 'string') + this.cancelClass = options.cancelClass; + + if (typeof options.dateLimit === 'object') + this.dateLimit = options.dateLimit; + + if (typeof options.opens === 'string') + this.opens = options.opens; + + if (typeof options.drops === 'string') + this.drops = options.drops; + + if (typeof options.showWeekNumbers === 'boolean') + this.showWeekNumbers = options.showWeekNumbers; + + if (typeof options.showISOWeekNumbers === 'boolean') + this.showISOWeekNumbers = options.showISOWeekNumbers; + + if (typeof options.buttonClasses === 'string') + this.buttonClasses = options.buttonClasses; + + if (typeof options.buttonClasses === 'object') + this.buttonClasses = options.buttonClasses.join(' '); + + if (typeof options.singleClasses === 'string') + this.singleClasses = options.singleClasses; + + if (typeof options.singleClasses === 'object') + this.singleClasses = options.singleClasses.join(' '); + + + if (typeof options.showDropdowns === 'boolean') + this.showDropdowns = options.showDropdowns; + + if (typeof options.showCustomRangeLabel === 'boolean') + this.showCustomRangeLabel = options.showCustomRangeLabel; + + if (typeof options.singleDatePicker === 'boolean') { + this.singleDatePicker = options.singleDatePicker; + if (this.singleDatePicker) + this.endDate = this.startDate.clone(); + } + + if (typeof options.timePicker === 'boolean') + this.timePicker = options.timePicker; + + if (typeof options.timePickerSeconds === 'boolean') + this.timePickerSeconds = options.timePickerSeconds; + + if (typeof options.timePickerIncrement === 'number') + this.timePickerIncrement = options.timePickerIncrement; + + if (typeof options.timePicker24Hour === 'boolean') + this.timePicker24Hour = options.timePicker24Hour; + + if (typeof options.autoApply === 'boolean') + this.autoApply = options.autoApply; + + if (typeof options.autoUpdateInput === 'boolean') + this.autoUpdateInput = options.autoUpdateInput; + + if (typeof options.linkedCalendars === 'boolean') + this.linkedCalendars = options.linkedCalendars; + + if (typeof options.isInvalidDate === 'function') + this.isInvalidDate = options.isInvalidDate; + + if (typeof options.isCustomDate === 'function') + this.isCustomDate = options.isCustomDate; + + if (typeof options.alwaysShowCalendars === 'boolean') + this.alwaysShowCalendars = options.alwaysShowCalendars; + + // update day names order to firstDay + if (this.locale.firstDay != 0) { + var iterator = this.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + + var start, end, range; + + //if no start/end dates set, check if an input element contains initial values + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { + if ($(this.element).is('input[type=text]')) { + var val = $(this.element).val(), + split = val.split(this.locale.separator); + + start = end = null; + + if (split.length == 2) { + start = moment(split[0], this.locale.format); + end = moment(split[1], this.locale.format); + } else if (this.singleDatePicker && val !== "") { + start = moment(val, this.locale.format); + end = moment(val, this.locale.format); + } + if (start !== null && end !== null) { + this.setStartDate(start); + this.setEndDate(end); + } + } + } + + if (typeof options.ranges === 'object') { + for (range in options.ranges) { + + if (typeof options.ranges[range][0] === 'string') + start = moment(options.ranges[range][0], this.locale.format); + else + start = moment(options.ranges[range][0]); + + if (typeof options.ranges[range][1] === 'string') + end = moment(options.ranges[range][1], this.locale.format); + else + end = moment(options.ranges[range][1]); + + // If the start or end date exceed those allowed by the minDate or dateLimit + // options, shorten the range to the allowable period. + if (this.minDate && start.isBefore(this.minDate)) + start = this.minDate.clone(); + + var maxDate = this.maxDate; + if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate)) + maxDate = start.clone().add(this.dateLimit); + if (maxDate && end.isAfter(maxDate)) + end = maxDate.clone(); + + // If the end of the range is before the minimum or the start of the range is + // after the maximum, don't display this range option at all. + if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) + || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day'))) + continue; + + //Support unicode chars in the range names. + var elem = document.createElement('textarea'); + elem.innerHTML = range; + var rangeHtml = elem.value; + + this.ranges[rangeHtml] = [start, end]; + } + + var list = '
    '; + for (range in this.ranges) { + list += '
  • ' + range + '
  • '; + } + if (this.showCustomRangeLabel) { + list += '
  • ' + this.locale.customRangeLabel + '
  • '; + } + list += '
'; + this.container.find('.ranges').prepend(list); + } + + if (typeof cb === 'function') { + this.callback = cb; + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.endOf('day'); + this.container.find('.calendar-time').hide(); + } + + //can't be used together for now + if (this.timePicker && this.autoApply) + this.autoApply = false; + + if (this.autoApply && typeof options.ranges !== 'object') { + this.container.find('.ranges').hide(); + } else if (this.autoApply) { + this.container.find('.applyBtn, .cancelBtn').addClass('hide'); + } + + if (this.singleDatePicker) { + this.container.addClass('single'); + if (this.singleClasses) { + this.container.addClass(this.singleClasses); + } + this.container.find('.calendar.left').addClass('single'); + this.container.find('.calendar.left').show(); + this.container.find('.calendar.right').hide(); + this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide(); + if (this.timePicker) { + this.container.find('.ranges ul').hide(); + } else { + this.container.find('.ranges').hide(); + } + } + + if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { + this.container.addClass('show-calendar'); + } + + this.container.addClass('opens' + this.opens); + + //swap the position of the predefined ranges if opens right + if (typeof options.ranges !== 'undefined' && this.opens == 'right') { + this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() ); + } + + //apply CSS classes and labels to buttons + this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); + if (this.applyClass.length) + this.container.find('.applyBtn').addClass(this.applyClass); + if (this.cancelClass.length) + this.container.find('.cancelBtn').addClass(this.cancelClass); + this.container.find('.applyBtn').html(this.locale.applyLabel); + this.container.find('.cancelBtn').html(this.locale.cancelLabel); + + // + // event listeners + // + + this.container.find('.calendar') + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) + .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) + .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this)) + .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this)) + .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this)) + .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)); + + this.container.find('.ranges') + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) + .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this)) + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); + + if (this.element.is('input') || this.element.is('button')) { + this.element.on({ + 'click.daterangepicker': $.proxy(this.show, this), + 'focus.daterangepicker': $.proxy(this.show, this), + 'keyup.daterangepicker': $.proxy(this.elementChanged, this), + 'keydown.daterangepicker': $.proxy(this.keydown, this) + }); + } else { + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); + } + + // + // if attached to a text input, set the initial value + // + + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + this.element.trigger('change'); + } else if (this.element.is('input') && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format)); + this.element.trigger('change'); + } + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + setStartDate: function(startDate) { + if (typeof startDate === 'string') + this.startDate = moment(startDate, this.locale.format); + + if (typeof startDate === 'object') + this.startDate = moment(startDate); + + if (!this.timePicker) + this.startDate = this.startDate.startOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.minDate && this.startDate.isBefore(this.minDate)) { + this.startDate = this.minDate.clone(); + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (this.maxDate && this.startDate.isAfter(this.maxDate)) { + this.startDate = this.maxDate.clone(); + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + setEndDate: function(endDate) { + if (typeof endDate === 'string') + this.endDate = moment(endDate, this.locale.format); + + if (typeof endDate === 'object') + this.endDate = moment(endDate); + + if (!this.timePicker) + this.endDate = this.endDate.endOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.endDate.isBefore(this.startDate)) + this.endDate = this.startDate.clone(); + + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate.clone(); + + if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate)) + this.endDate = this.startDate.clone().add(this.dateLimit); + + this.previousRightTime = this.endDate.clone(); + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + isInvalidDate: function() { + return false; + }, + + isCustomDate: function() { + return false; + }, + + updateView: function() { + if (this.timePicker) { + this.renderTimePicker('left'); + this.renderTimePicker('right'); + if (!this.endDate) { + this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled'); + } else { + this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled'); + } + } + if (this.endDate) { + this.container.find('input[name="daterangepicker_end"]').removeClass('active'); + this.container.find('input[name="daterangepicker_start"]').addClass('active'); + } else { + this.container.find('input[name="daterangepicker_end"]').addClass('active'); + this.container.find('input[name="daterangepicker_start"]').removeClass('active'); + } + this.updateMonthsInView(); + this.updateCalendars(); + this.updateFormInputs(); + }, + + updateMonthsInView: function() { + if (this.endDate) { + + //if both dates are visible already, do nothing + if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && + (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + && + (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + ) { + return; + } + + this.leftCalendar.month = this.startDate.clone().date(2); + if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { + this.rightCalendar.month = this.endDate.clone().date(2); + } else { + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + + } else { + if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { + this.leftCalendar.month = this.startDate.clone().date(2); + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + } + if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) { + this.rightCalendar.month = this.maxDate.clone().date(2); + this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month'); + } + }, + + updateCalendars: function() { + + if (this.timePicker) { + var hour, minute, second; + if (this.endDate) { + hour = parseInt(this.container.find('.left .hourselect').val(), 10); + minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } else { + hour = parseInt(this.container.find('.right .hourselect').val(), 10); + minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } + this.leftCalendar.month.hour(hour).minute(minute).second(second); + this.rightCalendar.month.hour(hour).minute(minute).second(second); + } + + this.renderCalendar('left'); + this.renderCalendar('right'); + + //highlight any predefined range matching the current start and end dates + this.container.find('.ranges li').removeClass('active'); + if (this.endDate == null) return; + + this.calculateChosenLabel(); + }, + + renderCalendar: function(side) { + + // + // Build the matrix of dates that will populate the calendar + // + + var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; + var month = calendar.month.month(); + var year = calendar.month.year(); + var hour = calendar.month.hour(); + var minute = calendar.month.minute(); + var second = calendar.month.second(); + var daysInMonth = moment([year, month]).daysInMonth(); + var firstDay = moment([year, month, 1]); + var lastDay = moment([year, month, daysInMonth]); + var lastMonth = moment(firstDay).subtract(1, 'month').month(); + var lastYear = moment(firstDay).subtract(1, 'month').year(); + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + var dayOfWeek = firstDay.day(); + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + calendar.firstDay = firstDay; + calendar.lastDay = lastDay; + + for (var i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); + + var col, row; + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { + if (i > 0 && col % 7 === 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); + curDate.hour(12); + + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { + calendar[row][col] = this.minDate.clone(); + } + + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { + calendar[row][col] = this.maxDate.clone(); + } + + } + + //make the calendar object available to hoverDate/clickDate + if (side == 'left') { + this.leftCalendar.calendar = calendar; + } else { + this.rightCalendar.calendar = calendar; + } + + // + // Display the calendar + // + + var minDate = side == 'left' ? this.minDate : this.startDate; + var maxDate = this.maxDate; + var selected = side == 'left' ? this.startDate : this.endDate; + var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'}; + + var html = ''; + html += ''; + html += ''; + + // add empty cell for week number + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += ''; + + if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { + html += ''; + } else { + html += ''; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + var currentMonth = calendar[1][1].month(); + var currentYear = calendar[1][1].year(); + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); + var minYear = (minDate && minDate.year()) || (currentYear - 50); + var inMinYear = currentYear == minYear; + var inMaxYear = currentYear == maxYear; + + var monthHtml = '"; + + var yearHtml = ''; + + dateHtml = monthHtml + yearHtml; + } + + html += ''; + if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { + html += ''; + } else { + html += ''; + } + + html += ''; + html += ''; + + // add week number label + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += ''; + + $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { + html += ''; + }); + + html += ''; + html += ''; + html += ''; + + //adjust maxDate to reflect the dateLimit setting in order to + //grey out end dates beyond the dateLimit + if (this.endDate == null && this.dateLimit) { + var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day'); + if (!maxDate || maxLimit.isBefore(maxDate)) { + maxDate = maxLimit; + } + } + + for (var row = 0; row < 6; row++) { + html += ''; + + // add week number + if (this.showWeekNumbers) + html += ''; + else if (this.showISOWeekNumbers) + html += ''; + + for (var col = 0; col < 7; col++) { + + var classes = []; + + //highlight today's date + if (calendar[row][col].isSame(new Date(), "day")) + classes.push('today'); + + //highlight weekends + if (calendar[row][col].isoWeekday() > 5) + classes.push('weekend'); + + //grey out the dates in other months displayed at beginning and end of this calendar + if (calendar[row][col].month() != calendar[1][1].month()) + classes.push('off'); + + //don't allow selection of dates before the minimum date + if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of dates after the maximum date + if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of date if a custom function decides it's invalid + if (this.isInvalidDate(calendar[row][col])) + classes.push('off', 'disabled'); + + //highlight the currently selected start date + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) + classes.push('active', 'start-date'); + + //highlight the currently selected end date + if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) + classes.push('active', 'end-date'); + + //highlight dates in-between the selected dates + if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) + classes.push('in-range'); + + //apply custom classes for this date + var isCustom = this.isCustomDate(calendar[row][col]); + if (isCustom !== false) { + if (typeof isCustom === 'string') + classes.push(isCustom); + else + Array.prototype.push.apply(classes, isCustom); + } + + var cname = '', disabled = false; + for (var i = 0; i < classes.length; i++) { + cname += classes[i] + ' '; + if (classes[i] == 'disabled') + disabled = true; + } + if (!disabled) + cname += 'available'; + + html += ''; + + } + html += ''; + } + + html += ''; + html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
'; + + this.container.find('.calendar.' + side + ' .calendar-table').html(html); + + }, + + renderTimePicker: function(side) { + + // Don't bother updating the time picker if it's currently disabled + // because an end date hasn't been clicked yet + if (side == 'right' && !this.endDate) return; + + var html, selected, minDate, maxDate = this.maxDate; + + if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate))) + maxDate = this.startDate.clone().add(this.dateLimit); + + if (side == 'left') { + selected = this.startDate.clone(); + minDate = this.minDate; + } else if (side == 'right') { + selected = this.endDate.clone(); + minDate = this.startDate; + + //Preserve the time already selected + var timeSelector = this.container.find('.calendar.right .calendar-time div'); + if (!this.endDate && timeSelector.html() != '') { + + selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour()); + selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute()); + selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second()); + + if (!this.timePicker24Hour) { + var ampm = timeSelector.find('.ampmselect option:selected').val(); + if (ampm === 'PM' && selected.hour() < 12) + selected.hour(selected.hour() + 12); + if (ampm === 'AM' && selected.hour() === 12) + selected.hour(0); + } + + } + + if (selected.isBefore(this.startDate)) + selected = this.startDate.clone(); + + if (maxDate && selected.isAfter(maxDate)) + selected = maxDate.clone(); + + } + + // + // hours + // + + html = ' '; + + // + // minutes + // + + html += ': '; + + // + // seconds + // + + if (this.timePickerSeconds) { + html += ': '; + } + + // + // AM/PM + // + + if (!this.timePicker24Hour) { + html += ''; + } + + this.container.find('.calendar.' + side + ' .calendar-time div').html(html); + + }, + + updateFormInputs: function() { + + //ignore mouse movements while an above-calendar text input has focus + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + return; + + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format)); + if (this.endDate) + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format)); + + if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { + this.container.find('button.applyBtn').removeAttr('disabled'); + } else { + this.container.find('button.applyBtn').attr('disabled', 'disabled'); + } + + }, + + move: function() { + var parentOffset = { top: 0, left: 0 }, + containerTop; + var parentRightEdge = $(window).width(); + if (!this.parentEl.is('body')) { + parentOffset = { + top: this.parentEl.offset().top - this.parentEl.scrollTop(), + left: this.parentEl.offset().left - this.parentEl.scrollLeft() + }; + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; + } + + if (this.drops == 'up') + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; + else + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; + this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup'); + + if (this.opens == 'left') { + this.container.css({ + top: containerTop, + right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), + left: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else if (this.opens == 'center') { + this.container.css({ + top: containerTop, + left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 + - this.container.outerWidth() / 2, + right: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else { + this.container.css({ + top: containerTop, + left: this.element.offset().left - parentOffset.left, + right: 'auto' + }); + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { + this.container.css({ + left: 'auto', + right: 0 + }); + } + } + }, + + show: function(e) { + if (this.isShowing) return; + + // Create a click proxy that is private to this instance of datepicker, for unbinding + this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); + + // Bind global datepicker mousedown for hiding and + $(document) + .on('mousedown.daterangepicker', this._outsideClickProxy) + // also support mobile devices + .on('touchend.daterangepicker', this._outsideClickProxy) + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) + // and also close when focus changes to outside the picker (eg. tabbing between controls) + .on('focusin.daterangepicker', this._outsideClickProxy); + + // Reposition the picker if the window is resized while it's open + $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + this.previousRightTime = this.endDate.clone(); + + this.updateView(); + this.container.show(); + this.move(); + this.element.trigger('show.daterangepicker', this); + this.isShowing = true; + }, + + hide: function(e) { + if (!this.isShowing) return; + + //incomplete date selection, revert to last values + if (!this.endDate) { + this.startDate = this.oldStartDate.clone(); + this.endDate = this.oldEndDate.clone(); + } + + //if a new date range was selected, invoke the user callback function + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.callback(this.startDate, this.endDate, this.chosenLabel); + + //if picker is attached to a text input, update it + this.updateElement(); + + $(document).off('.daterangepicker'); + $(window).off('.daterangepicker'); + this.container.hide(); + this.element.trigger('hide.daterangepicker', this); + this.isShowing = false; + }, + + toggle: function(e) { + if (this.isShowing) { + this.hide(); + } else { + this.show(); + } + }, + + outsideClick: function(e) { + var target = $(e.target); + // if the page is clicked anywhere except within the daterangerpicker/button + // itself then call this.hide() + if ( + // ie modal dialog fix + e.type == "focusin" || + target.closest(this.element).length || + target.closest(this.container).length || + target.closest('.calendar-table').length + ) return; + this.hide(); + this.element.trigger('outsideClick.daterangepicker', this); + }, + + showCalendars: function() { + this.container.addClass('show-calendar'); + this.move(); + this.element.trigger('showCalendar.daterangepicker', this); + }, + + hideCalendars: function() { + this.container.removeClass('show-calendar'); + this.element.trigger('hideCalendar.daterangepicker', this); + }, + + hoverRange: function(e) { + + //ignore mouse movements while an above-calendar text input has focus + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + return; + + var label = e.target.getAttribute('data-range-key'); + + if (label == this.locale.customRangeLabel) { + this.updateView(); + } else { + var dates = this.ranges[label]; + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format)); + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format)); + } + + }, + + clickRange: function(e) { + var label = e.target.getAttribute('data-range-key'); + this.chosenLabel = label; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.endOf('day'); + } + + if (!this.alwaysShowCalendars) + this.hideCalendars(); + this.clickApply(); + } + }, + + clickPrev: function(e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract(1, 'month'); + if (this.linkedCalendars) + this.rightCalendar.month.subtract(1, 'month'); + } else { + this.rightCalendar.month.subtract(1, 'month'); + } + this.updateCalendars(); + }, + + clickNext: function(e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add(1, 'month'); + } else { + this.rightCalendar.month.add(1, 'month'); + if (this.linkedCalendars) + this.leftCalendar.month.add(1, 'month'); + } + this.updateCalendars(); + }, + + hoverDate: function(e) { + + //ignore mouse movements while an above-calendar text input has focus + //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + // return; + + //ignore dates that can't be selected + if (!$(e.target).hasClass('available')) return; + + //have the text inputs above calendars reflect the date being hovered over + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) { + this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format)); + } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) { + this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format)); + } + + //highlight the dates between the start date and the date being hovered as a potential end date + var leftCalendar = this.leftCalendar; + var rightCalendar = this.rightCalendar; + var startDate = this.startDate; + if (!this.endDate) { + this.container.find('.calendar td').each(function(index, el) { + + //skip week numbers, only look at dates + if ($(el).hasClass('week')) return; + + var title = $(el).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(el).parents('.calendar'); + var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; + + if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) { + $(el).addClass('in-range'); + } else { + $(el).removeClass('in-range'); + } + + }); + } + + }, + + clickDate: function(e) { + + if (!$(e.target).hasClass('available')) return; + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + // + // this function needs to do a few things: + // * alternate between selecting a start and end date for the range, + // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date + // * if autoapply is enabled, and an end date was chosen, apply the selection + // * if single date picker mode, and time picker isn't enabled, apply the selection immediately + // * if one of the inputs above the calendars was focused, cancel that manual input + // + + if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start + if (this.timePicker) { + var hour = parseInt(this.container.find('.left .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.endDate = null; + this.setStartDate(date.clone()); + } else if (!this.endDate && date.isBefore(this.startDate)) { + //special case: clicking the same date for start/end, + //but the time of the end date is before the start date + this.setEndDate(this.startDate.clone()); + } else { // picking end + if (this.timePicker) { + var hour = parseInt(this.container.find('.right .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.setEndDate(date.clone()); + if (this.autoApply) { + this.calculateChosenLabel(); + this.clickApply(); + } + } + + if (this.singleDatePicker) { + this.setEndDate(this.startDate); + if (!this.timePicker) + this.clickApply(); + } + + this.updateView(); + + //This is to cancel the blur event handler if the mouse was in one of the inputs + e.stopPropagation(); + + }, + + calculateChosenLabel: function () { + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); + break; + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); + break; + } + } + i++; + } + if (customRange) { + if (this.showCustomRangeLabel) { + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); + } else { + this.chosenLabel = null; + } + this.showCalendars(); + } + }, + + clickApply: function(e) { + this.hide(); + this.element.trigger('apply.daterangepicker', this); + }, + + clickCancel: function(e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.hide(); + this.element.trigger('cancel.daterangepicker', this); + }, + + monthOrYearChanged: function(e) { + var isLeft = $(e.target).closest('.calendar').hasClass('left'), + leftOrRight = isLeft ? 'left' : 'right', + cal = this.container.find('.calendar.'+leftOrRight); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + if (!isLeft) { + if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { + month = this.startDate.month(); + year = this.startDate.year(); + } + } + + if (this.minDate) { + if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { + month = this.minDate.month(); + year = this.minDate.year(); + } + } + + if (this.maxDate) { + if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { + month = this.maxDate.month(); + year = this.maxDate.year(); + } + } + + if (isLeft) { + this.leftCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); + } else { + this.rightCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); + } + this.updateCalendars(); + }, + + timeChanged: function(e) { + + var cal = $(e.target).closest('.calendar'), + isLeft = cal.hasClass('left'); + + var hour = parseInt(cal.find('.hourselect').val(), 10); + var minute = parseInt(cal.find('.minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; + + if (!this.timePicker24Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + start.second(second); + this.setStartDate(start); + if (this.singleDatePicker) { + this.endDate = this.startDate.clone(); + } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { + this.setEndDate(start.clone()); + } + } else if (this.endDate) { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + end.second(second); + this.setEndDate(end); + } + + //update the calendars so all clickable dates reflect the new time component + this.updateCalendars(); + + //update the form inputs above the calendars with the new time + this.updateFormInputs(); + + //re-render the time pickers because changing one selection can affect what's enabled in another + this.renderTimePicker('left'); + this.renderTimePicker('right'); + + }, + + formInputsChanged: function(e) { + var isRight = $(e.target).closest('.calendar').hasClass('right'); + var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format); + var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format); + + if (start.isValid() && end.isValid()) { + + if (isRight && end.isBefore(start)) + start = end.clone(); + + this.setStartDate(start); + this.setEndDate(end); + + if (isRight) { + this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format)); + } else { + this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format)); + } + + } + + this.updateView(); + }, + + formInputsFocused: function(e) { + + // Highlight the focused input + this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active'); + $(e.target).addClass('active'); + + // Set the state such that if the user goes back to using a mouse, + // the calendars are aware we're selecting the end of the range, not + // the start. This allows someone to edit the end of a date range without + // re-selecting the beginning, by clicking on the end date input then + // using the calendar. + var isRight = $(e.target).closest('.calendar').hasClass('right'); + if (isRight) { + this.endDate = null; + this.setStartDate(this.startDate.clone()); + this.updateView(); + } + + }, + + formInputsBlurred: function(e) { + + // this function has one purpose right now: if you tab from the first + // text input to the second in the UI, the endDate is nulled so that + // you can click another, but if you tab out without clicking anything + // or changing the input value, the old endDate should be retained + + if (!this.endDate) { + var val = this.container.find('input[name="daterangepicker_end"]').val(); + var end = moment(val, this.locale.format); + if (end.isValid()) { + this.setEndDate(end); + this.updateView(); + } + } + + }, + + elementChanged: function() { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + if (this.element.val().length < this.locale.format.length) return; + + var dateString = this.element.val().split(this.locale.separator), + start = null, + end = null; + + if (dateString.length === 2) { + start = moment(dateString[0], this.locale.format); + end = moment(dateString[1], this.locale.format); + } + + if (this.singleDatePicker || start === null || end === null) { + start = moment(this.element.val(), this.locale.format); + end = start; + } + + if (!start.isValid() || !end.isValid()) return; + + this.setStartDate(start); + this.setEndDate(end); + this.updateView(); + }, + + keydown: function(e) { + //hide on tab or enter + if ((e.keyCode === 9) || (e.keyCode === 13)) { + this.hide(); + } + }, + + updateElement: function() { + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + this.element.trigger('change'); + } else if (this.element.is('input') && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format)); + this.element.trigger('change'); + } + }, + + remove: function() { + this.container.remove(); + this.element.off('.daterangepicker'); + this.element.removeData(); + } + + }; + + $.fn.daterangepicker = function(options, callback) { + this.each(function() { + var el = $(this); + if (el.data('daterangepicker')) + el.data('daterangepicker').remove(); + el.data('daterangepicker', new DateRangePicker(el, options, callback)); + }); + return this; + }; + + return DateRangePicker; + +})); diff --git a/public/theme/bootstrap-daterangepicker/daterangepicker.scss b/public/theme/bootstrap-daterangepicker/daterangepicker.scss new file mode 100644 index 0000000..b8b03e8 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/daterangepicker.scss @@ -0,0 +1,611 @@ +// +// A stylesheet for use with Bootstrap 3.x +// @author: Dan Grossman http://www.dangrossman.info/ +// @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved. +// @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php +// @website: https://www.improvely.com/ +// + +// +// VARIABLES +// + +// +// Settings + +// The class name to contain everything within. +$prefix-class: daterangepicker; +$arrow-size: 7px !default; + +// +// Colors +$daterangepicker-color: inherit !default; +$daterangepicker-bg-color: #fff !default; + +$daterangepicker-cell-color: $daterangepicker-color !default; +$daterangepicker-cell-border-color: transparent !default; +$daterangepicker-cell-bg-color: $daterangepicker-bg-color !default; + +$daterangepicker-cell-hover-color: $daterangepicker-color !default; +$daterangepicker-cell-hover-border-color: $daterangepicker-cell-border-color !default; +$daterangepicker-cell-hover-bg-color: #eee !default; + +$daterangepicker-in-range-color: #000 !default; +$daterangepicker-in-range-border-color: transparent !default; +$daterangepicker-in-range-bg-color: #ebf4f8 !default; + +$daterangepicker-active-color: #fff !default; +$daterangepicker-active-bg-color: #357ebd !default; +$daterangepicker-active-border-color: transparent !default; + +$daterangepicker-unselected-color: #999 !default; +$daterangepicker-unselected-border-color: transparent !default; +$daterangepicker-unselected-bg-color: #fff !default; + +// +// daterangepicker +$daterangepicker-width: 278px !default; +$daterangepicker-padding: 4px !default; +$daterangepicker-z-index: 3000 !default; + +$daterangepicker-border-size: 1px !default; +$daterangepicker-border-color: #ccc !default; +$daterangepicker-border-radius: 4px !default; + + +// +// Calendar +$daterangepicker-calendar-margin: $daterangepicker-padding !default; +$daterangepicker-calendar-bg-color: $daterangepicker-bg-color !default; + +$daterangepicker-calendar-border-size: 1px !default; +$daterangepicker-calendar-border-color: $daterangepicker-bg-color !default; +$daterangepicker-calendar-border-radius: $daterangepicker-border-radius !default; + +// +// Calendar Cells +$daterangepicker-cell-size: 20px !default; +$daterangepicker-cell-width: $daterangepicker-cell-size !default; +$daterangepicker-cell-height: $daterangepicker-cell-size !default; + +$daterangepicker-cell-border-radius: $daterangepicker-calendar-border-radius !default; +$daterangepicker-cell-border-size: 1px !default; + +// +// Dropdowns +$daterangepicker-dropdown-z-index: $daterangepicker-z-index + 1 !default; + +// +// Controls +$daterangepicker-control-height: 30px !default; +$daterangepicker-control-line-height: $daterangepicker-control-height !default; +$daterangepicker-control-color: #555 !default; + +$daterangepicker-control-border-size: 1px !default; +$daterangepicker-control-border-color: #ccc !default; +$daterangepicker-control-border-radius: 4px !default; + +$daterangepicker-control-active-border-size: 1px !default; +$daterangepicker-control-active-border-color: #08c !default; +$daterangepicker-control-active-border-radius: $daterangepicker-control-border-radius !default; + +$daterangepicker-control-disabled-color: #ccc !default; + +// +// Ranges +$daterangepicker-ranges-color: #08c !default; +$daterangepicker-ranges-bg-color: #f5f5f5 !default; + +$daterangepicker-ranges-border-size: 1px !default; +$daterangepicker-ranges-border-color: $daterangepicker-ranges-bg-color !default; +$daterangepicker-ranges-border-radius: $daterangepicker-border-radius !default; + +$daterangepicker-ranges-hover-color: #fff !default; +$daterangepicker-ranges-hover-bg-color: $daterangepicker-ranges-color !default; +$daterangepicker-ranges-hover-border-size: $daterangepicker-ranges-border-size !default; +$daterangepicker-ranges-hover-border-color: $daterangepicker-ranges-hover-bg-color !default; +$daterangepicker-ranges-hover-border-radius: $daterangepicker-border-radius !default; + +$daterangepicker-ranges-active-border-size: $daterangepicker-ranges-border-size !default; +$daterangepicker-ranges-active-border-color: $daterangepicker-ranges-bg-color !default; +$daterangepicker-ranges-active-border-radius: $daterangepicker-border-radius !default; + +// +// STYLESHEETS +// +.#{$prefix-class} { + position: absolute; + color: $daterangepicker-color; + background: $daterangepicker-bg-color; + border-radius: $daterangepicker-border-radius; + width: $daterangepicker-width; + padding: $daterangepicker-padding; + margin-top: $daterangepicker-border-size; + + // TODO: Should these be parameterized?? + top: 100px; + left: 20px; + + $arrow-prefix-size: $arrow-size; + $arrow-suffix-size: ($arrow-size - $daterangepicker-border-size); + + &:before, &:after { + position: absolute; + display: inline-block; + + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; + } + + &:before { + top: -$arrow-prefix-size; + + border-right: $arrow-prefix-size solid transparent; + border-left: $arrow-prefix-size solid transparent; + border-bottom: $arrow-prefix-size solid $daterangepicker-border-color; + } + + &:after { + top: -$arrow-suffix-size; + + border-right: $arrow-suffix-size solid transparent; + border-bottom: $arrow-suffix-size solid $daterangepicker-bg-color; + border-left: $arrow-suffix-size solid transparent; + } + + &.opensleft { + &:before { + // TODO: Make this relative to prefix size. + right: $arrow-prefix-size + 2px; + } + + &:after { + // TODO: Make this relative to suffix size. + right: $arrow-suffix-size + 4px; + } + } + + &.openscenter { + &:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + } + + &:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + } + } + + &.opensright { + &:before { + // TODO: Make this relative to prefix size. + left: $arrow-prefix-size + 2px; + } + + &:after { + // TODO: Make this relative to suffix size. + left: $arrow-suffix-size + 4px; + } + } + + &.dropup { + margin-top: -5px; + + // NOTE: Note sure why these are special-cased. + &:before { + top: initial; + bottom: -$arrow-prefix-size; + border-bottom: initial; + border-top: $arrow-prefix-size solid $daterangepicker-border-color; + } + + &:after { + top: initial; + bottom:-$arrow-suffix-size; + border-bottom: initial; + border-top: $arrow-suffix-size solid $daterangepicker-bg-color; + } + } + + &.dropdown-menu { + max-width: none; + z-index: $daterangepicker-dropdown-z-index; + } + + &.single { + .ranges, .calendar { + float: none; + } + } + + /* Calendars */ + &.show-calendar { + .calendar { + display: block; + } + } + + .calendar { + display: none; + max-width: $daterangepicker-width - ($daterangepicker-calendar-margin * 2); + margin: $daterangepicker-calendar-margin; + + &.single { + .calendar-table { + border: none; + } + } + + th, td { + white-space: nowrap; + text-align: center; + + // TODO: Should this actually be hard-coded? + min-width: 32px; + } + } + + .calendar-table { + border: $daterangepicker-calendar-border-size solid $daterangepicker-calendar-border-color; + padding: $daterangepicker-calendar-margin; + border-radius: $daterangepicker-calendar-border-radius; + background: $daterangepicker-calendar-bg-color; + } + + table { + width: 100%; + margin: 0; + } + + td, th { + text-align: center; + width: $daterangepicker-cell-width; + height: $daterangepicker-cell-height; + border-radius: $daterangepicker-cell-border-radius; + border: $daterangepicker-cell-border-size solid $daterangepicker-cell-border-color; + white-space: nowrap; + cursor: pointer; + + &.available { + &:hover { + background-color: $daterangepicker-cell-hover-bg-color; + border-color: $daterangepicker-cell-hover-border-color; + color: $daterangepicker-cell-hover-color; + } + } + + &.week { + font-size: 80%; + color: #ccc; + } + } + + td { + &.off { + &, &.in-range, &.start-date, &.end-date { + background-color: $daterangepicker-unselected-bg-color; + border-color: $daterangepicker-unselected-border-color; + color: $daterangepicker-unselected-color; + } + } + + // + // Date Range + &.in-range { + background-color: $daterangepicker-in-range-bg-color; + border-color: $daterangepicker-in-range-border-color; + color: $daterangepicker-in-range-color; + + // TODO: Should this be static or should it be parameterized? + border-radius: 0; + } + + &.start-date { + border-radius: $daterangepicker-cell-border-radius 0 0 $daterangepicker-cell-border-radius; + } + + &.end-date { + border-radius: 0 $daterangepicker-cell-border-radius $daterangepicker-cell-border-radius 0; + } + + &.start-date.end-date { + border-radius: $daterangepicker-cell-border-radius; + } + + &.active { + &, &:hover { + background-color: $daterangepicker-active-bg-color; + border-color: $daterangepicker-active-border-color; + color: $daterangepicker-active-color; + } + } + } + + th { + &.month { + width: auto; + } + } + + // + // Disabled Controls + // + td, option { + &.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; + } + } + + select { + &.monthselect, &.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; + } + + &.monthselect { + margin-right: 2%; + width: 56%; + } + + &.yearselect { + width: 40%; + } + + &.hourselect, &.minuteselect, &.secondselect, &.ampmselect { + width: 50px; + margin-bottom: 0; + } + } + + // + // Text Input Controls (above calendar) + // + .input-mini { + border: $daterangepicker-control-border-size solid $daterangepicker-control-border-color; + border-radius: $daterangepicker-control-border-radius; + color: $daterangepicker-control-color; + height: $daterangepicker-control-line-height; + line-height: $daterangepicker-control-height; + display: block; + vertical-align: middle; + + // TODO: Should these all be static, too?? + margin: 0 0 5px 0; + padding: 0 6px 0 28px; + width: 100%; + + &.active { + border: $daterangepicker-control-active-border-size solid $daterangepicker-control-active-border-color; + border-radius: $daterangepicker-control-active-border-radius; + } + } + + .daterangepicker_input { + position: relative; + + i { + position: absolute; + + // NOTE: These appear to be eyeballed to me... + left: 8px; + top: 8px; + } + } + &.rtl { + .input-mini { + padding-right: 28px; + padding-left: 6px; + } + .daterangepicker_input i { + left: auto; + right: 8px; + } + } + + // + // Time Picker + // + .calendar-time { + text-align: center; + margin: 5px auto; + line-height: $daterangepicker-control-line-height; + position: relative; + padding-left: 28px; + + select { + &.disabled { + color: $daterangepicker-control-disabled-color; + cursor: not-allowed; + } + } + } +} + +// +// Predefined Ranges +// + +.ranges { + font-size: 11px; + float: none; + margin: 4px; + text-align: left; + + ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; + } + + li { + font-size: 13px; + background: $daterangepicker-ranges-bg-color; + border: $daterangepicker-ranges-border-size solid $daterangepicker-ranges-border-color; + border-radius: $daterangepicker-ranges-border-radius; + color: $daterangepicker-ranges-color; + padding: 3px 12px; + margin-bottom: 8px; + cursor: pointer; + + &:hover { + background: $daterangepicker-ranges-hover-bg-color; + border: $daterangepicker-ranges-hover-border-size solid $daterangepicker-ranges-hover-border-color; + color: $daterangepicker-ranges-hover-color; + } + + &.active { + background: $daterangepicker-ranges-hover-bg-color; + border: $daterangepicker-ranges-hover-border-size solid $daterangepicker-ranges-hover-border-color; + color: $daterangepicker-ranges-hover-color; + } + } +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .#{$prefix-class} { + width: auto; + + .ranges { + ul { + width: 160px; + } + } + + &.single { + .ranges { + ul { + width: 100%; + } + } + + .calendar.left { + clear: none; + } + + &.ltr { + .ranges, .calendar { + float:left; + } + } + &.rtl { + .ranges, .calendar { + float:right; + } + } + } + + &.ltr { + direction: ltr; + text-align: left; + .calendar{ + &.left { + clear: left; + margin-right: 0; + + .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + + &.right { + margin-left: 0; + + .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } + } + + .left .daterangepicker_input { + padding-right: 12px; + } + + .calendar.left .calendar-table { + padding-right: 12px; + } + + .ranges, .calendar { + float: left; + } + } + &.rtl { + direction: rtl; + text-align: right; + .calendar{ + &.left { + clear: right; + margin-left: 0; + + .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } + + &.right { + margin-right: 0; + + .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + } + + .left .daterangepicker_input { + padding-left: 12px; + } + + .calendar.left .calendar-table { + padding-left: 12px; + } + + .ranges, .calendar { + text-align: right; + float: right; + } + } + } +} + +@media (min-width: 730px) { + .#{$prefix-class} { + .ranges { + width: auto; + } + &.ltr { + .ranges { + float: left; + } + } + &.rtl { + .ranges { + float: right; + } + } + + .calendar.left { + clear: none !important; + } + } +} diff --git a/public/theme/bootstrap-daterangepicker/demo.html b/public/theme/bootstrap-daterangepicker/demo.html new file mode 100644 index 0000000..7633ee4 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/demo.html @@ -0,0 +1,369 @@ + + + + + A date range picker for Bootstrap + + + + + + + + + + + + +
+ +

Configuration Builder

+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+ +
+

Your Date Range Picker

+ + +
+ +
+

Configuration

+ +
+ +
+
+ +
+ +
+ + + + + + + diff --git a/public/theme/bootstrap-daterangepicker/drp.png b/public/theme/bootstrap-daterangepicker/drp.png new file mode 100644 index 0000000..9eee1fa Binary files /dev/null and b/public/theme/bootstrap-daterangepicker/drp.png differ diff --git a/public/theme/bootstrap-daterangepicker/example/amd/index.html b/public/theme/bootstrap-daterangepicker/example/amd/index.html new file mode 100644 index 0000000..533c94e --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/amd/index.html @@ -0,0 +1,210 @@ + + + + + A date range picker for Bootstrap + + + + + + +
+ +

Configuration Builder

+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+ +
+

Your Date Range Picker

+ + +
+ +
+

Configuration

+ +
+ +
+
+ +
+ +
+ + + + + diff --git a/public/theme/bootstrap-daterangepicker/example/amd/main.js b/public/theme/bootstrap-daterangepicker/example/amd/main.js new file mode 100644 index 0000000..5c0f99a --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/amd/main.js @@ -0,0 +1,141 @@ +requirejs.config({ + "paths": { + "jquery": "https://code.jquery.com/jquery-1.11.3.min", + "moment": "../../moment", + "daterangepicker": "../../daterangepicker" + } +}); + +requirejs(['jquery', 'moment', 'daterangepicker'] , function ($, moment) { +$(document).ready(function() { + + $('#config-text').keyup(function() { + eval($(this).val()); + }); + + $('.configurator input, .configurator select').change(function() { + updateConfig(); + }); + + $('.demo i').click(function() { + $(this).parent().find('input').click(); + }); + + $('#startDate').daterangepicker({ + singleDatePicker: true, + startDate: moment().subtract(6, 'days') + }); + + $('#endDate').daterangepicker({ + singleDatePicker: true, + startDate: moment() + }); + + updateConfig(); + + function updateConfig() { + var options = {}; + + if ($('#singleDatePicker').is(':checked')) + options.singleDatePicker = true; + + if ($('#showDropdowns').is(':checked')) + options.showDropdowns = true; + + if ($('#showWeekNumbers').is(':checked')) + options.showWeekNumbers = true; + + if ($('#showISOWeekNumbers').is(':checked')) + options.showISOWeekNumbers = true; + + if ($('#timePicker').is(':checked')) + options.timePicker = true; + + if ($('#timePicker24Hour').is(':checked')) + options.timePicker24Hour = true; + + if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) + options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); + + if ($('#timePickerSeconds').is(':checked')) + options.timePickerSeconds = true; + + if ($('#autoApply').is(':checked')) + options.autoApply = true; + + if ($('#dateLimit').is(':checked')) + options.dateLimit = { days: 7 }; + + if ($('#ranges').is(':checked')) { + options.ranges = { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }; + } + + if ($('#locale').is(':checked')) { + options.locale = { + format: 'MM/DD/YYYY HH:mm', + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + }; + } + + if (!$('#linkedCalendars').is(':checked')) + options.linkedCalendars = false; + + if (!$('#autoUpdateInput').is(':checked')) + options.autoUpdateInput = false; + + if ($('#alwaysShowCalendars').is(':checked')) + options.alwaysShowCalendars = true; + + if ($('#parentEl').val().length) + options.parentEl = $('#parentEl').val(); + + if ($('#startDate').val().length) + options.startDate = $('#startDate').val(); + + if ($('#endDate').val().length) + options.endDate = $('#endDate').val(); + + if ($('#minDate').val().length) + options.minDate = $('#minDate').val(); + + if ($('#maxDate').val().length) + options.maxDate = $('#maxDate').val(); + + if ($('#opens').val().length && $('#opens').val() != 'right') + options.opens = $('#opens').val(); + + if ($('#drops').val().length && $('#drops').val() != 'down') + options.drops = $('#drops').val(); + + if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') + options.buttonClasses = $('#buttonClasses').val(); + + if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success') + options.applyClass = $('#applyClass').val(); + + if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default') + options.cancelClass = $('#cancelClass').val(); + + $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});"); + + $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); + + } + +}); +}); diff --git a/public/theme/bootstrap-daterangepicker/example/amd/require.js b/public/theme/bootstrap-daterangepicker/example/amd/require.js new file mode 100644 index 0000000..857eb5b --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/amd/require.js @@ -0,0 +1,36 @@ +/* + RequireJS 2.2.0 Copyright jQuery Foundation and other contributors. + Released under MIT license, http://github.com/requirejs/requirejs/LICENSE +*/ +var requirejs,require,define; +(function(ga){function ka(b,c,d,g){return g||""}function K(b){return"[object Function]"===Q.call(b)}function L(b){return"[object Array]"===Q.call(b)}function y(b,c){if(b){var d;for(d=0;dthis.depCount&&!this.defined){if(K(k)){if(this.events.error&&this.map.isDefine||g.onError!== +ha)try{h=l.execCb(c,k,b,h)}catch(d){a=d}else h=l.execCb(c,k,b,h);this.map.isDefine&&void 0===h&&((b=this.module)?h=b.exports:this.usingExports&&(h=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",A(this.error=a)}else h=k;this.exports=h;if(this.map.isDefine&&!this.ignore&&(v[c]=h,g.onResourceLoad)){var f=[];y(this.depMaps,function(a){f.push(a.normalizedMap||a)});g.onResourceLoad(l,this.map,f)}C(c); +this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}},callPlugin:function(){var a=this.map,b=a.id,d=q(a.prefix);this.depMaps.push(d);w(d,"defined",z(this,function(h){var k,f,d=e(fa,this.map.id),M=this.map.name,r=this.map.parentMap?this.map.parentMap.name:null,m=l.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(h.normalize&&(M=h.normalize(M,function(a){return c(a,r,!0)})|| +""),f=q(a.prefix+"!"+M,this.map.parentMap),w(f,"defined",z(this,function(a){this.map.normalizedMap=f;this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),h=e(t,f.id)){this.depMaps.push(f);if(this.events.error)h.on("error",z(this,function(a){this.emit("error",a)}));h.enable()}}else d?(this.map.url=l.nameToUrl(d),this.load()):(k=z(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),k.error=z(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];D(t,function(a){0=== +a.map.id.indexOf(b+"_unnormalized")&&C(a.map.id)});A(a)}),k.fromText=z(this,function(h,c){var d=a.name,f=q(d),M=S;c&&(h=c);M&&(S=!1);u(f);x(p.config,b)&&(p.config[d]=p.config[b]);try{g.exec(h)}catch(e){return A(F("fromtexteval","fromText eval for "+b+" failed: "+e,e,[b]))}M&&(S=!0);this.depMaps.push(f);l.completeLoad(d);m([d],k)}),h.load(a.name,m,k,p))}));l.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){Z[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,z(this,function(a, +b){var c,h;if("string"===typeof a){a=q(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=e(R,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;w(a,"defined",z(this,function(a){this.undefed||(this.defineDep(b,a),this.check())}));this.errback?w(a,"error",z(this,this.errback)):this.events.error&&w(a,"error",z(this,function(a){this.emit("error",a)}))}c=a.id;h=t[c];x(R,c)||!h||h.enabled||l.enable(a,this)}));D(this.pluginMaps,z(this,function(a){var b=e(t,a.id); +b&&!b.enabled&&l.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};l={config:p,contextName:b,registry:t,defined:v,urlFetched:W,defQueue:G,defQueueMap:{},Module:da,makeModuleMap:q,nextTick:g.nextTick,onError:A,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");if("string"===typeof a.urlArgs){var b= +a.urlArgs;a.urlArgs=function(a,c){return(-1===c.indexOf("?")?"?":"&")+b}}var c=p.shim,h={paths:!0,bundles:!0,config:!0,map:!0};D(a,function(a,b){h[b]?(p[b]||(p[b]={}),Y(p[b],a,!0,!0)):p[b]=a});a.bundles&&D(a.bundles,function(a,b){y(a,function(a){a!==b&&(fa[a]=b)})});a.shim&&(D(a.shim,function(a,b){L(a)&&(a={deps:a});!a.exports&&!a.init||a.exportsFn||(a.exportsFn=l.makeShimExports(a));c[b]=a}),p.shim=c);a.packages&&y(a.packages,function(a){var b;a="string"===typeof a?{name:a}:a;b=a.name;a.location&& +(p.paths[b]=a.location);p.pkgs[b]=a.name+"/"+(a.main||"main").replace(na,"").replace(U,"")});D(t,function(a,b){a.inited||a.map.unnormalized||(a.map=q(b,null,!0))});(a.deps||a.callback)&&l.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ga,arguments));return b||a.exports&&ia(a.exports)}},makeRequire:function(a,n){function m(c,d,f){var e,r;n.enableBuildCallback&&d&&K(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(K(d))return A(F("requireargs", +"Invalid require call"),f);if(a&&x(R,c))return R[c](t[a.id]);if(g.get)return g.get(l,c,a,m);e=q(c,a,!1,!0);e=e.id;return x(v,e)?v[e]:A(F("notloaded",'Module name "'+e+'" has not been loaded yet for context: '+b+(a?"":". Use require([])")))}P();l.nextTick(function(){P();r=u(q(null,a));r.skipMap=n.skipMap;r.init(c,d,f,{enabled:!0});H()});return m}n=n||{};Y(m,{isBrowser:E,toUrl:function(b){var d,f=b.lastIndexOf("."),g=b.split("/")[0];-1!==f&&("."!==g&&".."!==g||1e.attachEvent.toString().indexOf("[native code")||ca?(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)):(S=!0,e.attachEvent("onreadystatechange",b.onScriptLoad));e.src=d;if(m.onNodeCreated)m.onNodeCreated(e,m,c,d);P=e;H?C.insertBefore(e,H):C.appendChild(e);P=null;return e}if(ja)try{setTimeout(function(){}, +0),importScripts(d),b.completeLoad(c)}catch(q){b.onError(F("importscripts","importScripts failed for "+c+" at "+d,q,[c]))}};E&&!w.skipDataMain&&X(document.getElementsByTagName("script"),function(b){C||(C=b.parentNode);if(O=b.getAttribute("data-main"))return u=O,w.baseUrl||-1!==u.indexOf("!")||(I=u.split("/"),u=I.pop(),T=I.length?I.join("/")+"/":"./",w.baseUrl=T),u=u.replace(U,""),g.jsExtRegExp.test(u)&&(u=O),w.deps=w.deps?w.deps.concat(u):[u],!0});define=function(b,c,d){var e,g;"string"!==typeof b&& +(d=c,c=b,b=null);L(c)||(d=c,c=null);!c&&K(d)&&(c=[],d.length&&(d.toString().replace(qa,ka).replace(ra,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));S&&(e=P||pa())&&(b||(b=e.getAttribute("data-requiremodule")),g=J[e.getAttribute("data-requirecontext")]);g?(g.defQueue.push([b,c,d]),g.defQueueMap[b]=!0):V.push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(w)}})(this); diff --git a/public/theme/bootstrap-daterangepicker/example/browserify/README.md b/public/theme/bootstrap-daterangepicker/example/browserify/README.md new file mode 100644 index 0000000..123b093 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/browserify/README.md @@ -0,0 +1,11 @@ +# Browserify example + +Two steps need to be done for this to work + +In the project root + + npm install + +In this folder + + ../../node_modules/.bin/browserify main.js -o bundle.js diff --git a/public/theme/bootstrap-daterangepicker/example/browserify/bundle.js b/public/theme/bootstrap-daterangepicker/example/browserify/bundle.js new file mode 100644 index 0000000..e69de29 diff --git a/public/theme/bootstrap-daterangepicker/example/browserify/index.html b/public/theme/bootstrap-daterangepicker/example/browserify/index.html new file mode 100644 index 0000000..bdce82e --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/browserify/index.html @@ -0,0 +1,209 @@ + + + + + A date range picker for Bootstrap + + + + + + +
+ +

Configuration Builder

+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+ +
+

Your Date Range Picker

+ + +
+ +
+

Configuration

+ +
+ +
+
+ +
+ +
+ + + + diff --git a/public/theme/bootstrap-daterangepicker/example/browserify/main.js b/public/theme/bootstrap-daterangepicker/example/browserify/main.js new file mode 100644 index 0000000..30e92d4 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/example/browserify/main.js @@ -0,0 +1,135 @@ +require('../../daterangepicker.js'); +var $ = require('jquery'), + moment = require('moment'); + +$(document).ready(function() { + + $('#config-text').keyup(function() { + eval($(this).val()); + }); + + $('.configurator input, .configurator select').change(function() { + updateConfig(); + }); + + $('.demo i').click(function() { + $(this).parent().find('input').click(); + }); + + $('#startDate').daterangepicker({ + singleDatePicker: true, + startDate: moment().subtract(6, 'days') + }); + + $('#endDate').daterangepicker({ + singleDatePicker: true, + startDate: moment() + }); + + updateConfig(); + + function updateConfig() { + var options = {}; + + if ($('#singleDatePicker').is(':checked')) + options.singleDatePicker = true; + + if ($('#showDropdowns').is(':checked')) + options.showDropdowns = true; + + if ($('#showWeekNumbers').is(':checked')) + options.showWeekNumbers = true; + + if ($('#showISOWeekNumbers').is(':checked')) + options.showISOWeekNumbers = true; + + if ($('#timePicker').is(':checked')) + options.timePicker = true; + + if ($('#timePicker24Hour').is(':checked')) + options.timePicker24Hour = true; + + if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) + options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); + + if ($('#timePickerSeconds').is(':checked')) + options.timePickerSeconds = true; + + if ($('#autoApply').is(':checked')) + options.autoApply = true; + + if ($('#dateLimit').is(':checked')) + options.dateLimit = { days: 7 }; + + if ($('#ranges').is(':checked')) { + options.ranges = { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }; + } + + if ($('#locale').is(':checked')) { + options.locale = { + format: 'MM/DD/YYYY HH:mm', + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + }; + } + + if (!$('#linkedCalendars').is(':checked')) + options.linkedCalendars = false; + + if (!$('#autoUpdateInput').is(':checked')) + options.autoUpdateInput = false; + + if ($('#alwaysShowCalendars').is(':checked')) + options.alwaysShowCalendars = true; + + if ($('#parentEl').val().length) + options.parentEl = $('#parentEl').val(); + + if ($('#startDate').val().length) + options.startDate = $('#startDate').val(); + + if ($('#endDate').val().length) + options.endDate = $('#endDate').val(); + + if ($('#minDate').val().length) + options.minDate = $('#minDate').val(); + + if ($('#maxDate').val().length) + options.maxDate = $('#maxDate').val(); + + if ($('#opens').val().length && $('#opens').val() != 'right') + options.opens = $('#opens').val(); + + if ($('#drops').val().length && $('#drops').val() != 'down') + options.drops = $('#drops').val(); + + if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') + options.buttonClasses = $('#buttonClasses').val(); + + if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success') + options.applyClass = $('#applyClass').val(); + + if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default') + options.cancelClass = $('#cancelClass').val(); + + $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});"); + + $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); + + } + +}); diff --git a/public/theme/bootstrap-daterangepicker/package.js b/public/theme/bootstrap-daterangepicker/package.js new file mode 100644 index 0000000..8bef848 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/package.js @@ -0,0 +1,18 @@ +Package.describe({ + name: 'dangrossman:bootstrap-daterangepicker', + version: '2.1.24', + summary: 'Date range picker component for Bootstrap', + git: 'https://github.com/dangrossman/bootstrap-daterangepicker', + documentation: 'README.md' +}); + +Package.onUse(function(api) { + api.versionsFrom('METEOR@0.9.0.1'); + + api.use('twbs:bootstrap@3.3.4', ["client"], {weak: true}); + api.use('momentjs:moment@2.10.3', ["client"]); + api.use('jquery@1.11.3_2', ["client"]); + + api.addFiles('daterangepicker.js', ["client"]); + api.addFiles('daterangepicker.css', ["client"]); +}); diff --git a/public/theme/bootstrap-daterangepicker/package.json b/public/theme/bootstrap-daterangepicker/package.json new file mode 100644 index 0000000..9c06322 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/package.json @@ -0,0 +1,32 @@ +{ + "name": "bootstrap-daterangepicker", + "version": "2.1.24", + "description": "Date range picker component for Bootstrap", + "main": "daterangepicker.js", + "style": "daterangepicker.css", + "scripts": { + "scss": "node-sass daterangepicker.scss > daterangepicker.css", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/dangrossman/bootstrap-daterangepicker.git" + }, + "author": { + "name": "Dan Grossman", + "email": "dan@dangrossman.info", + "url": "http://www.dangrossman.info" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/dangrossman/bootstrap-daterangepicker/issues" + }, + "homepage": "https://github.com/dangrossman/bootstrap-daterangepicker", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + }, + "devDependencies": { + "node-sass": "^3.4.2" + } +} diff --git a/public/theme/bootstrap-daterangepicker/website/index.html b/public/theme/bootstrap-daterangepicker/website/index.html new file mode 100644 index 0000000..2389ea0 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/website/index.html @@ -0,0 +1,852 @@ + + + + + Date Range Picker for Bootstrap + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Date Range Picker

+

+ A JavaScript component for choosing date ranges. +
+ Designed to work with the Bootstrap CSS framework. +

+ +
+
+ + View on GitHub + +   + + Download ZIP + +

+ + + + + + + +
+
+
+
+ +
+
+ + + +
+ +
+ +

+ Originally built for reporting at Improvely, + the Date Range Picker can be attached to any webpage element to pop up two calendars + for selecting dates, times, or from predefined ranges like "Last 30 Days". +

+ + + +
+ +
+ +

Usage

+ +

+ Date Range Picker relies on Bootstrap, jQuery and Moment.js. + + Include the required scripts and stylesheet in your page: +

+ + + +

Then attach the picker to the element you want to trigger it:

+ + + +
+ +

+ You can customize Date Range Picker with options, and + get notified when the user chooses new dates by providing a callback function. +

+ + + +
+ +
+ +

Examples

+ +
+ +

Date Range Picker

+ +

+ The Date Range Picker is attached to a text input. It will use the current + value of the input to initialize, and update the input if new dates are chosen. +

+ +
+
+ +
+
+

Demo:

+ +
+
+ + + +
+ +
+ +

Date and Time

+ +

+ The Date Range Picker can also be used to select times. Hour, minute and (optional) + second dropdowns are added below the calendars. An option exists to set the increment + count of the minutes dropdown to e.g. offer only 15-minute or 30-minute increments. +

+ +
+
+ +
+
+

Demo:

+ +
+
+ + + +
+ +
+ +

Single Date Picker

+ +

+ The Date Range Picker can be turned into a single date picker widget with only + one calendar. In this example, dropdowns to select a month and year have also + been enabled at the top of the calendar to quickly jump to different months. +

+ +
+
+ +
+
+

Demo:

+ +
+
+ + + +
+ +
+ +

Predefined Ranges

+ +

+ This example shows the option to predefine date ranges that + the user can choose from a list. +

+ +
+
+ +
+
+

Demo:

+
+   + +
+
+
+ + + +
+ +
+ +

Input Initially Empty

+ +

+ If you're using a date range as a filter, you may want to attach a picker to an + input but leave it empty by default. This example shows how to accomplish that + using the autoUpdateInput setting, and the apply and + cancel events. +

+ +
+
+ +
+
+

Demo:

+ +
+
+ + +
+ + + +
+ + + +
+ +

Configuration Generator

+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+

Your Date Range Picker

+ + +
+ +
+

Configuration

+ +
+ +
+
+ +
+ +
+ +
+ +

Options

+ +
    +
  • + startDate (Date object, moment object or string) The start of the initially selected date range +
  • +
  • + endDate: (Date object, moment object or string) The end of the initially selected date range +
  • +
  • + minDate: (Date object, moment object or string) The earliest date a user may select +
  • +
  • + maxDate: (Date object, moment object or string) The latest date a user may select +
  • +
  • + dateLimit: (object) The maximum span between the selected start and end dates. Can have any property you can add to a moment object (i.e. days, months) +
  • +
  • + showDropdowns: (boolean) Show year and month select boxes above calendars to jump to a specific month and year +
  • +
  • + showWeekNumbers: (boolean) Show localized week numbers at the start of each week on the calendars +
  • +
  • + showISOWeekNumbers: (boolean) Show ISO week numbers at the start of each week on the calendars +
  • +
  • + timePicker: (boolean) Allow selection of dates with times, not just dates +
  • +
  • + timePickerIncrement: (number) Increment of the minutes selection list for times (i.e. 30 to allow only selection of times ending in 0 or 30) +
  • +
  • + timePicker24Hour: (boolean) Use 24-hour instead of 12-hour times, removing the AM/PM selection +
  • +
  • + timePickerSeconds: (boolean) Show seconds in the timePicker +
  • +
  • + ranges: (object) Set predefined date ranges the user can select from. Each key is the label for the range, and its value an array with two dates representing the bounds of the range +
  • +
  • + showCustomRangeLabel: (boolean) Displays an item labeled "Custom Range" at + the end of the list of predefined ranges, when the ranges option is used. + This option will be highlighted whenever the current date range selection does not match + one of the predefined ranges. Clicking it will display the calendars to select a new range. +
  • +
  • + alwaysShowCalendars: (boolean) Normally, if you use the ranges + option to specify pre-defined date ranges, calendars for choosing a custom date range are not shown until the user clicks "Custom Range". When this option is set to true, the calendars for choosing a custom date range are always shown instead. +
  • +
  • + opens: (string: 'left'/'right'/'center') Whether the picker appears aligned to the left, to the right, or centered under the HTML element it's attached to +
  • +
  • + drops: (string: 'down' or 'up') Whether the picker appears below (default) or above the HTML element it's attached to +
  • +
  • + buttonClasses: (array) CSS class names that will be added to all buttons in the picker +
  • +
  • + applyClass: (string) CSS class string that will be added to the apply button +
  • +
  • + cancelClass: (string) CSS class string that will be added to the cancel button +
  • +
  • + locale: (object) Allows you to provide localized strings for buttons and labels, customize the date format, and change the first day of week for the calendars. + Check off "locale (with example settings)" in the configuration generator to see how + to customize these options. +
  • +
  • + singleDatePicker: (boolean) Show only a single calendar to choose one date, instead of a range picker with two calendars; the start and end dates provided to your callback will be the same single date chosen +
  • +
  • + autoApply: (boolean) Hide the apply and cancel buttons, and automatically apply a new date range as soon as two dates or a predefined range is selected +
  • +
  • + linkedCalendars: (boolean) When enabled, the two calendars displayed will always be for two sequential months (i.e. January and February), and both will be advanced when clicking the left or right arrows above the calendars. When disabled, the two calendars can be individually advanced and display any month/year. +
  • +
  • + isInvalidDate: (function) A function that is passed each date in the two + calendars before they are displayed, and may return true or false to indicate whether + that date should be available for selection or not. +
  • +
  • + isCustomDate: (function) A function that is passed each date in the two + calendars before they are displayed, and may return a string or array of CSS class names + to apply to that date's calendar cell. +
  • +
  • + autoUpdateInput: (boolean) Indicates whether the date range picker should + automatically update the value of an <input> element it's attached to + at initialization and when the selected dates change. +
  • +
  • + parentEl: (string) jQuery selector of the parent element that the date range picker will be added to, if not provided this will be 'body' +
  • +
+ +
+ +
+ +

Methods

+ +

+ You can programmatically update the startDate and endDate + in the picker using the setStartDate and setEndDate methods. + You can access the Date Range Picker object and its functions and properties through + data properties of the element you attached it to. +

+ + + +
+ +
    +
  • + setStartDate(Date/moment/string): Sets the date range picker's currently selected start date to the provided date +
  • +
  • + setEndDate(Date/moment/string): Sets the date range picker's currently selected end date to the provided date +
  • +
+ +

Example usage:

+ + + +
+ +
+ +

Events

+ +

+ Several events are triggered on the element you attach the picker to, which you can listen for. +

+ +
    +
  • + show.daterangepicker: Triggered when the picker is shown +
  • +
  • + hide.daterangepicker: Triggered when the picker is hidden +
  • +
  • + showCalendar.daterangepicker: Triggered when the calendar(s) are shown +
  • +
  • + hideCalendar.daterangepicker: Triggered when the calendar(s) are hidden +
  • +
  • + apply.daterangepicker: Triggered when the apply button is clicked, + or when a predefined range is clicked +
  • +
  • + cancel.daterangepicker: Triggered when the cancel button is clicked +
  • +
+ +

+ Some applications need a "clear" instead of a "cancel" functionality, which can be achieved by changing the button label and watching for the cancel event: +

+ + + +
+ +

+ While passing in a callback to the constructor is the easiest way to listen for changes in the selected date range, you can also do something every time the apply button is clicked even if the selection hasn't changed: +

+ + + +
+ +
+ +

License

+ +

The MIT License (MIT)

+ +

Copyright (c) 2012-2015 Dan Grossman

+ +

+ Permission 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: +

+ +

+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +

+ +

+ THE 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. +

+ +
+ +
+ +

Comments

+ +
+ + + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + diff --git a/public/theme/bootstrap-daterangepicker/website/website.css b/public/theme/bootstrap-daterangepicker/website/website.css new file mode 100644 index 0000000..c556f66 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/website/website.css @@ -0,0 +1,127 @@ +body { + font-size: 15px; + line-height: 1.6em; + position: relative; + margin: 0; +} +.container { + width: 95%; + max-width: 1260px; +} +p, pre { + margin-bottom: 2em; +} +.main h2 { + font-weight: bold; + margin: 60px 0 20px 0; +} +.main h3 { + margin: 60px 0 20px 0; +} +.main h4 { + margin: 0 0 10px 0; + font-weight: bold; +} +ul.nobullets { + margin: 0; + padding: 0; + list-style-position: inside; +} +li { + padding-bottom: 1em; +} +#sidebar { + top: 20px; + width: 300px; +} +#sidebar ul { + margin-bottom: 5px; +} +#sidebar li { + margin-bottom: 0; + padding-bottom: 0; +} +#sidebar li ul { + display: none; +} +#sidebar li.active ul { + display: block; +} +#sidebar li li { + padding: 4px 0; +} +input[type="text"] { + padding: 6px; + width: 100%; + border-radius: 4px; +} +.navbar { + text-align: left; + margin: 0; + border: 0; +} +.navbar-inverse { + background: #222; +} +.navbar .container { + padding: 0 20px; +} +.navbar-nav li a:link, .navbar-nav li a:visited { + font-weight: bold; + color: #fff; + font-size: 16px; +} +.navbar-nav li { + background: #fff; +} +.navbar-nav li a:hover { + opacity: 0.8; +} +.navbar-nav li { + padding: 0; +} +.navbar-inverse .navbar-text { + margin: 18px 0 0 0; + color: #eee; +} +#footer { + background: #222; + margin-top: 80px; + padding: 30px; + color: #fff; + text-align: center; +} +#footer a:link, #footer a:visited { + color: #fff; + border-bottom: 1px dotted #fff; +} +#jumbo { + background: #f5f5f5 linear-gradient(to bottom,#eee 0,#f5f5f5 100%); + color: #000; + padding: 30px 0; + margin-bottom: 30px; +} +#jumbo .btn { + border-radius: 0; +} +#config .demo { position: relative; } +#config .demo i { position: absolute; bottom: 10px; right: 24px; top: auto; cursor: pointer; } + +#rightcol { + margin-left: 330px; +} + +#nav-spy { + float: left; + width: 300px; +} + +@media (max-width: 980px) { + #rightcol { + margin-left: 0; + } + #nav-spy { + float: none; + position: relative; + } +} \ No newline at end of file diff --git a/public/theme/bootstrap-daterangepicker/website/website.js b/public/theme/bootstrap-daterangepicker/website/website.js new file mode 100644 index 0000000..a919a36 --- /dev/null +++ b/public/theme/bootstrap-daterangepicker/website/website.js @@ -0,0 +1,146 @@ +$(document).ready(function() { + + $('#config-text').keyup(function() { + eval($(this).val()); + }); + + $('.configurator input, .configurator select').change(function() { + updateConfig(); + }); + + $('.demo i').click(function() { + $(this).parent().find('input').click(); + }); + + $('#startDate').daterangepicker({ + singleDatePicker: true, + startDate: moment().subtract(6, 'days') + }); + + $('#endDate').daterangepicker({ + singleDatePicker: true, + startDate: moment() + }); + + updateConfig(); + + function updateConfig() { + var options = {}; + + if ($('#singleDatePicker').is(':checked')) + options.singleDatePicker = true; + + if ($('#showDropdowns').is(':checked')) + options.showDropdowns = true; + + if ($('#showWeekNumbers').is(':checked')) + options.showWeekNumbers = true; + + if ($('#showISOWeekNumbers').is(':checked')) + options.showISOWeekNumbers = true; + + if ($('#timePicker').is(':checked')) + options.timePicker = true; + + if ($('#timePicker24Hour').is(':checked')) + options.timePicker24Hour = true; + + if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) + options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); + + if ($('#timePickerSeconds').is(':checked')) + options.timePickerSeconds = true; + + if ($('#autoApply').is(':checked')) + options.autoApply = true; + + if ($('#dateLimit').is(':checked')) + options.dateLimit = { days: 7 }; + + if ($('#ranges').is(':checked')) { + options.ranges = { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }; + } + + if ($('#locale').is(':checked')) { + options.locale = { + format: 'MM/DD/YYYY', + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + weekLabel: 'W', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + }; + } + + if (!$('#linkedCalendars').is(':checked')) + options.linkedCalendars = false; + + if (!$('#autoUpdateInput').is(':checked')) + options.autoUpdateInput = false; + + if (!$('#showCustomRangeLabel').is(':checked')) + options.showCustomRangeLabel = false; + + if ($('#alwaysShowCalendars').is(':checked')) + options.alwaysShowCalendars = true; + + if ($('#parentEl').val().length) + options.parentEl = $('#parentEl').val(); + + if ($('#startDate').val().length) + options.startDate = $('#startDate').val(); + + if ($('#endDate').val().length) + options.endDate = $('#endDate').val(); + + if ($('#minDate').val().length) + options.minDate = $('#minDate').val(); + + if ($('#maxDate').val().length) + options.maxDate = $('#maxDate').val(); + + if ($('#opens').val().length && $('#opens').val() != 'right') + options.opens = $('#opens').val(); + + if ($('#drops').val().length && $('#drops').val() != 'down') + options.drops = $('#drops').val(); + + if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') + options.buttonClasses = $('#buttonClasses').val(); + + if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success') + options.applyClass = $('#applyClass').val(); + + if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default') + options.cancelClass = $('#cancelClass').val(); + + $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});"); + + $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); + + } + + if ($(window).width() > 980) { + $('#sidebar').affix({ + offset: { + top: 300, + bottom: function () { + return (this.bottom = $('.footer').outerHeight(true)) + } + } + }); + } + $('body').scrollspy({ target: '#nav-spy', offset: 20 }); +}); diff --git a/public/theme/bootstrap-progressbar/.bower.json b/public/theme/bootstrap-progressbar/.bower.json new file mode 100644 index 0000000..295a4e9 --- /dev/null +++ b/public/theme/bootstrap-progressbar/.bower.json @@ -0,0 +1,38 @@ +{ + "name": "bootstrap-progressbar", + "version": "0.9.0", + "license": "MIT", + "authors": [ + { + "name": "Stephan Groß", + "homepage": "http://www.minddust.com" + } + ], + "homepage": "http://www.minddust.com/project/bootstrap-progressbar/", + "repository": { + "type": "git", + "url": "https://github.com/minddust/bootstrap-progressbar.git" + }, + "main": "./bootstrap-progressbar.js", + "ignore": [ + "**/.*", + "Gulpfile.js", + "Rakefile", + "bower_components", + "node_modules", + "resources", + "tasks" + ], + "dependencies": { + "jquery": ">= 1.9.1" + }, + "_release": "0.9.0", + "_resolution": { + "type": "version", + "tag": "v0.9.0", + "commit": "e7ac2690384024feb89bd5122fea14dc4d819567" + }, + "_source": "https://github.com/minddust/bootstrap-progressbar.git", + "_target": "^0.9.0", + "_originalSource": "bootstrap-progressbar" +} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/CHANGELOG.md b/public/theme/bootstrap-progressbar/CHANGELOG.md new file mode 100644 index 0000000..124e1ba --- /dev/null +++ b/public/theme/bootstrap-progressbar/CHANGELOG.md @@ -0,0 +1,93 @@ +# Changelog + +## 0.9.0 (2015-05-15) + +* Fix #49 runtime option override support +* Fix #48 extend bower.json + +## 0.8.5 (2015-04-04) + +* Add bootstrap 3.3.1-3.3.4 styles +* Add SCSS support (request #46) +* Fix #42 wrong version name + +## 0.8.4 (2014-11-05) + +* Add bootstrap 3.3.0 styles + +## 0.8.3 (2014-08-08) + +* Fix #39 revert low percentage styles in bootstrap 3.2 + +## 0.8.2 (2014-08-02) + +* Fix #33 pass `$this` to `update` and `done` callback + +## 0.8.1 (2014-08-01) + +* Fix #35 wrong amount calculation for `aria-valuemin` != 0 + +## 0.8.0 (2014-08-01) + +* Add bootstrap 3.2.0 styles +* Extend `amount_format` hook for min value +* Update demo page +* Remove unused travis badge +* Fix #27 switch `aria-valuetransitionsgoal` to `data-transitionsgoal` + +### 0.7.1 (2014-03-05) + +* Add bootstrap 3.1.1 styles +* Switch to Gulp +* Remove bs dotfiles +* Fix #30 compile errors with old markup +* Fix #29 wrong style generation +* Fix #28 element creation which will brick with `django-compressor` + +### 0.7.0 (2014-02-11) + +* Add bootstrap 3.0.0-3.1.0 styles +* Fix #22 wrong vertical styles for bootstrap 2.x +* Fix #18 missing css requirement documentation + +### 0.6.0 (2013-08-16) + +* Add bootstrap 3 support +* Add `noConflict` fallback +* Add striped styles +* Add custom string formatting +* Rename `filled` option to `fill` +* Switch `display_text` option dict to string setting +* Switch from `data` to `aria` attributes +* Switch license from Apache2 to MIT +* Fix some minor style issues + +### 0.5.0 (2012-08-28) + +* Add vertical progressbars +* Add right alignment +* Move styles to css/less +* Fix some code formatting +* Fix different font sizes + +### 0.4.6 (2012-06-27) + +* Fix flickering on centered text on multiple trigger (due to last fix) + +### 0.4.5 (2012-06-25) + +* Fix stacking bug on centered text on multiple trigger + +### 0.4.4 (2012-06-13) + +* Fix caching bug with data method +* Add multitrigger support + +### 0.4.3 (2012-06-11) + +* Switch from jQuery's `*.attr('data-*')` to `*.data('*')` + +### 0.4.2 (2012-06-07) + +* Start changelog +* Switch to github markdown diff --git a/public/theme/bootstrap-progressbar/CONTRIBUTORS.md b/public/theme/bootstrap-progressbar/CONTRIBUTORS.md new file mode 100644 index 0000000..155c79e --- /dev/null +++ b/public/theme/bootstrap-progressbar/CONTRIBUTORS.md @@ -0,0 +1,12 @@ +# Credits + +There are many people who helped to make bootstrap-progressbar great. + +Contributions are always welcome! + + +* Stephan Groß - [minddust](https://github.com/minddust) +* Shantibhushan Naik - [visitsb](https://github.com/visitsb) +* Maciek Gajewski - [konieczkow](https://github.com/konieczkow) +* Şəhriyar İmanov - [shehi](https://github.com/shehi) +* Henrik - [HaNdTriX](https://github.com/HaNdTriX) diff --git a/public/theme/bootstrap-progressbar/LICENSE b/public/theme/bootstrap-progressbar/LICENSE new file mode 100644 index 0000000..95d1148 --- /dev/null +++ b/public/theme/bootstrap-progressbar/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2012-2015 Stephan Groß + +Permission 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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE 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. diff --git a/public/theme/bootstrap-progressbar/README.md b/public/theme/bootstrap-progressbar/README.md new file mode 100644 index 0000000..d668be9 --- /dev/null +++ b/public/theme/bootstrap-progressbar/README.md @@ -0,0 +1,273 @@ +# bootstrap-progressbar - 0.8.5 + +`bootstrap-progressbar` is a [jQuery](http://jquery.com) plugin which extends the basic [twitter-bootstrap](https://github.com/twbs/bootstrap) progressbar. It provides the ability to animate the progressbar by adding Javascript in combination with the preexisting css transitions. Additionally you can display the current progress information in the bar or get the value via callback. + + +## What's new in v0.9.0? + +* Fix #49 runtime option override support +* Fix #48 extend bower.json + +> __Note__: this version replaces the not official supported `aria-valuetransitionsgoal` with `data-transitionsgoal` which may affect (or brick) your progressbars. + +> __Note__: Bootstrap's [low percentage styles](http://getbootstrap.com/components/#progress-low-percentages) (introduced in 3.2.0) causes flickering under some circumstances (e.g. slow transitions). To preserve correct progressbar functionality + appearance this bs feature is reverted in v0.8.3. (and reverted by bootstrap in 3.3.0) + +> __Note__: Stacked progressbars are not supported by now. + + +## Demo + +* http://www.minddust.com/project/bootstrap-progressbar/demo/ + + +## Installation + +* Download the latest release: [v0.9.0](https://github.com/minddust/bootstrap-progressbar/archive/v0.9.0.zip) +* Clone the repository: `git clone git@github.com:minddust/bootstrap-progressbar.git` +* Install with [Bower](http://bower.io): `bower install bootstrap-progressbar` + + +## Usage + +1. include `bootstrap-progressbar.js` + + ```html + + ``` + +2. activate `bootstrap-progressbar` functionality on progressbars of your choice: + + + ```javascript + $('.progress .bar').progressbar(); // bootstrap 2 + $('.progress .progress-bar').progressbar(); // bootstrap 3 + ``` + +3. set the `aria` attribute and __remove__ the `width` style attribute (alternatively you can set it to 0) + + 1. `data-transitiongoal` + + ```html +
+
+
+ ``` + + 2. `aria-valuemin` (default: 0) and `aria-valuemax` (default: 100) + + ```html +
+
+
+ ``` + + +## Usage Extended + +* Do I need the additional style file? + + * for the horizontal bar with no or filled text: __NO__ + * for any vertical bars or the horizontal bar with centered text or right aligned bar: __YES__ + + less: + + ```html + + + ``` + + or precompile it yourself. (see: [3rd party compilers](http://lesscss.org/usage/#third-party-compilers-node-js-compilers)) + + scss: + * need to precompile it yourself (see: [libsass](http://sass-lang.com/libsass)) + + css: + + ```html + + ``` + + you can find your needed css, less or scss files inside the specific subdirectories. + +* Multiple trigger + + You can trigger progressbar as much as you want. Just change your attribute(s) and trigger `.progressbar()` again. All settings made before will be kept. + + +## Settings + +### default values + +```javascript +Progressbar.defaults = { + transition_delay: 300, + refresh_speed: 50, + display_text: 'none', + use_percentage: true, + percent_format: function(percent) { return percent + '%'; }, + amount_format: function(amount_part, amount_total) { return amount_part + ' / ' + amount_total; }, + update: $.noop, + done: $.noop, + fail: $.noop +}; +``` + +### transition_delay + +Is the time in milliseconds until the animation starts. + +This could be useful to delay the start on the initial page load like: + +```javascript +$(document).ready(function() { + $('.progress .progress-bar').progressbar({ + transition_delay: 1500 + }); +}); +``` + +### refresh_speed + +Is the time in milliseconds which will elapse between every text refresh, `aria-valuenow` attribute update and `update` callback call. + +### display_text + +Determines if and where to display text on the progressbar. Possible options: + +* `none` __no text__ +* `fill` __text on filled bar__ +* `center` __text on center__ *(this mode changes css / html due to styling requirements)* + +### use_percentage + +If text will be displayed - this option determines whether to show the percentage value or the amount. + +So if `use_percentage` is false and `aria-valuemin` and `aria-valuemax` are not set (or to `0` and `100`) the value will be the same but `amount_format` will be used to format the result. + +Example: + +`
` + +with `use_percentage: true` is the final text: `75%` + +with `use_percentage: false` is the final text: `75 / 100` + +### percent_format + +Is a function which returns the text format for progressbar with `use_percentage: true`. + +It takes 1 argument which is the current percent value. + +### amount_format + +Is a function which returns the text format for progressbar with `use_percentage: false`. + +It takes 3 argument which are the current-, the max- and the min-amount. + +### update + +Is a callback function which will be called while the progressbar is transitioning ;) + +Depends on `refresh_speed`. + +It takes 2 argument which is the current percent value and a reference to the attached progressbar element. + +### done + +Is a callback function which will be called when the transition process is done. + +It takes 1 argument which is a reference to the attached progressbar element. + +### fail + +Is a callback function which will be called when an error occurs. + +It takes 1 argument which is the error message. + + +## Customisation + +### alignment +* to use a horizontal progressbar which is align to the right you have to add `right` to the `progress` element. + + ```html +
+ ``` +* to use a vertical progressbar you have to add `vertical` to the `progress` element. + + ```html +
+ ``` +* to use a vertical progressbar which is align to the bottom you have to add `vertical` and `bottom` to the `progress` element. + + ```html +
+ ``` + +### animation + +to change the animation itself you have to overwrite either less or css + +1. horizontal + * less + + ```css + .progress .bar { + .transition(width 2s ease-in-out); + } + ``` + * scss + + ```css + .progress.vertical .progress-bar { + @include transition(width 2s ease-in-out); + } + ``` + * css + + ```css + .progress .bar { + -webkit-transition: width 2s ease-in-out; + -moz-transition: width 2s ease-in-out; + -ms-transition: width 2s ease-in-out; + -o-transition: width 2s ease-in-out; + transition: width 2s ease-in-out; + } + ``` + +1. vertical + * less + + ```css + .progress.vertical .bar { + .transition(height 2s ease-in-out); + } + ``` + * scss + + ```css + .progress.vertical .bar { + @include transition(height 2s ease-in-out); + } + ``` + * css + + ```css + .progress.vertical .bar { + -webkit-transition: height 2s ease-in-out; + -moz-transition: height 2s ease-in-out; + -ms-transition: height 2s ease-in-out; + -o-transition: height 2s ease-in-out; + transition: height 2s ease-in-out; + } + ``` + +## Known Problems + +* Looks like iOS Safari is flooring the width of the transition. So if you want to display text with a correct value you have to use a full bar width **greater or equal 100px**. + +## Copyright and license + +Copyright 2013-2015 Stephan Groß, under [MIT license](https://github.com/minddust/bootstrap-progressbar/blob/master/LICENSE). + +Want to appreciate my work? [minddust at Gittip](https://www.gittip.com/minddust/) diff --git a/public/theme/bootstrap-progressbar/bootstrap-progressbar.js b/public/theme/bootstrap-progressbar/bootstrap-progressbar.js new file mode 100644 index 0000000..8b1a546 --- /dev/null +++ b/public/theme/bootstrap-progressbar/bootstrap-progressbar.js @@ -0,0 +1,168 @@ +/*! + * bootstrap-progressbar v0.9.0 by @minddust + * Copyright (c) 2012-2015 Stephan Groß + * + * http://www.minddust.com/project/bootstrap-progressbar/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ +(function($) { + + 'use strict'; + + // PROGRESSBAR CLASS DEFINITION + // ============================ + + var Progressbar = function(element, options) { + this.$element = $(element); + this.options = $.extend({}, Progressbar.defaults, options); + }; + + Progressbar.defaults = { + transition_delay: 300, + refresh_speed: 50, + display_text: 'none', + use_percentage: true, + percent_format: function(percent) { return percent + '%'; }, + amount_format: function(amount_part, amount_max, amount_min) { return amount_part + ' / ' + amount_max; }, + update: $.noop, + done: $.noop, + fail: $.noop + }; + + Progressbar.prototype.transition = function() { + var $this = this.$element; + var $parent = $this.parent(); + var $back_text = this.$back_text; + var $front_text = this.$front_text; + var options = this.options; + var data_transitiongoal = parseInt($this.attr('data-transitiongoal')); + var aria_valuemin = parseInt($this.attr('aria-valuemin')) || 0; + var aria_valuemax = parseInt($this.attr('aria-valuemax')) || 100; + var is_vertical = $parent.hasClass('vertical'); + var update = options.update && typeof options.update === 'function' ? options.update : Progressbar.defaults.update; + var done = options.done && typeof options.done === 'function' ? options.done : Progressbar.defaults.done; + var fail = options.fail && typeof options.fail === 'function' ? options.fail : Progressbar.defaults.fail; + + if (isNaN(data_transitiongoal)) { + fail('data-transitiongoal not set'); + return; + } + var percentage = Math.round(100 * (data_transitiongoal - aria_valuemin) / (aria_valuemax - aria_valuemin)); + + if (options.display_text === 'center' && !$back_text && !$front_text) { + this.$back_text = $back_text = $('').addClass('progressbar-back-text').prependTo($parent); + this.$front_text = $front_text = $('').addClass('progressbar-front-text').prependTo($this); + + var parent_size; + + if (is_vertical) { + parent_size = $parent.css('height'); + $back_text.css({height: parent_size, 'line-height': parent_size}); + $front_text.css({height: parent_size, 'line-height': parent_size}); + + $(window).resize(function() { + parent_size = $parent.css('height'); + $back_text.css({height: parent_size, 'line-height': parent_size}); + $front_text.css({height: parent_size, 'line-height': parent_size}); + }); // normal resizing would brick the structure because width is in px + } + else { + parent_size = $parent.css('width'); + $front_text.css({width: parent_size}); + + $(window).resize(function() { + parent_size = $parent.css('width'); + $front_text.css({width: parent_size}); + }); // normal resizing would brick the structure because width is in px + } + } + + setTimeout(function() { + var current_percentage; + var current_value; + var this_size; + var parent_size; + var text; + + if (is_vertical) { + $this.css('height', percentage + '%'); + } + else { + $this.css('width', percentage + '%'); + } + + var progress = setInterval(function() { + if (is_vertical) { + this_size = $this.height(); + parent_size = $parent.height(); + } + else { + this_size = $this.width(); + parent_size = $parent.width(); + } + + current_percentage = Math.round(100 * this_size / parent_size); + current_value = Math.round(aria_valuemin + this_size / parent_size * (aria_valuemax - aria_valuemin)); + + if (current_percentage >= percentage) { + current_percentage = percentage; + current_value = data_transitiongoal; + done($this); + clearInterval(progress); + } + + if (options.display_text !== 'none') { + text = options.use_percentage ? options.percent_format(current_percentage) : options.amount_format(current_value, aria_valuemax, aria_valuemin); + + if (options.display_text === 'fill') { + $this.text(text); + } + else if (options.display_text === 'center') { + $back_text.text(text); + $front_text.text(text); + } + } + $this.attr('aria-valuenow', current_value); + + update(current_percentage, $this); + }, options.refresh_speed); + }, options.transition_delay); + }; + + + // PROGRESSBAR PLUGIN DEFINITION + // ============================= + + var old = $.fn.progressbar; + + $.fn.progressbar = function(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data('bs.progressbar'); + var options = typeof option === 'object' && option; + + if (data && options) { + $.extend(data.options, options); + } + + if (!data) { + $this.data('bs.progressbar', (data = new Progressbar(this, options))); + } + data.transition(); + }); + }; + + $.fn.progressbar.Constructor = Progressbar; + + + // PROGRESSBAR NO CONFLICT + // ======================= + + $.fn.progressbar.noConflict = function () { + $.fn.progressbar = old; + return this; + }; + +})(window.jQuery); diff --git a/public/theme/bootstrap-progressbar/bootstrap-progressbar.min.js b/public/theme/bootstrap-progressbar/bootstrap-progressbar.min.js new file mode 100644 index 0000000..c7a6c67 --- /dev/null +++ b/public/theme/bootstrap-progressbar/bootstrap-progressbar.min.js @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +!function(t){"use strict";var e=function(n,s){this.$element=t(n),this.options=t.extend({},e.defaults,s)};e.defaults={transition_delay:300,refresh_speed:50,display_text:"none",use_percentage:!0,percent_format:function(t){return t+"%"},amount_format:function(t,e){return t+" / "+e},update:t.noop,done:t.noop,fail:t.noop},e.prototype.transition=function(){var n=this.$element,s=n.parent(),a=this.$back_text,r=this.$front_text,i=this.options,o=parseInt(n.attr("data-transitiongoal")),h=parseInt(n.attr("aria-valuemin"))||0,d=parseInt(n.attr("aria-valuemax"))||100,f=s.hasClass("vertical"),p=i.update&&"function"==typeof i.update?i.update:e.defaults.update,u=i.done&&"function"==typeof i.done?i.done:e.defaults.done,c=i.fail&&"function"==typeof i.fail?i.fail:e.defaults.fail;if(isNaN(o))return void c("data-transitiongoal not set");var l=Math.round(100*(o-h)/(d-h));if("center"===i.display_text&&!a&&!r){this.$back_text=a=t("").addClass("progressbar-back-text").prependTo(s),this.$front_text=r=t("").addClass("progressbar-front-text").prependTo(n);var g;f?(g=s.css("height"),a.css({height:g,"line-height":g}),r.css({height:g,"line-height":g}),t(window).resize(function(){g=s.css("height"),a.css({height:g,"line-height":g}),r.css({height:g,"line-height":g})})):(g=s.css("width"),r.css({width:g}),t(window).resize(function(){g=s.css("width"),r.css({width:g})}))}setTimeout(function(){var t,e,c,g,_;f?n.css("height",l+"%"):n.css("width",l+"%");var x=setInterval(function(){f?(c=n.height(),g=s.height()):(c=n.width(),g=s.width()),t=Math.round(100*c/g),e=Math.round(h+c/g*(d-h)),t>=l&&(t=l,e=o,u(n),clearInterval(x)),"none"!==i.display_text&&(_=i.use_percentage?i.percent_format(t):i.amount_format(e,d,h),"fill"===i.display_text?n.text(_):"center"===i.display_text&&(a.text(_),r.text(_))),n.attr("aria-valuenow",e),p(t,n)},i.refresh_speed)},i.transition_delay)};var n=t.fn.progressbar;t.fn.progressbar=function(n){return this.each(function(){var s=t(this),a=s.data("bs.progressbar"),r="object"==typeof n&&n;a&&r&&t.extend(a.options,r),a||s.data("bs.progressbar",a=new e(this,r)),a.transition()})},t.fn.progressbar.Constructor=e,t.fn.progressbar.noConflict=function(){return t.fn.progressbar=n,this}}(window.jQuery); \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/bower.json b/public/theme/bootstrap-progressbar/bower.json new file mode 100644 index 0000000..63e0bf3 --- /dev/null +++ b/public/theme/bootstrap-progressbar/bower.json @@ -0,0 +1,29 @@ +{ + "name": "bootstrap-progressbar", + "version": "0.9.0", + "license": "MIT", + "authors": [ + { + "name": "Stephan Groß", + "homepage": "http://www.minddust.com" + } + ], + "homepage": "http://www.minddust.com/project/bootstrap-progressbar/", + "repository": { + "type": "git", + "url": "https://github.com/minddust/bootstrap-progressbar.git" + }, + "main": "./bootstrap-progressbar.js", + "ignore": [ + "**/.*", + "Gulpfile.js", + "Rakefile", + "bower_components", + "node_modules", + "resources", + "tasks" + ], + "dependencies": { + "jquery": ">= 1.9.1" + } +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.css new file mode 100644 index 0000000..59a26d0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.css @@ -0,0 +1,310 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 18px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 18px; + height: 100%; + float: left; + margin-right: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -ms-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.min.css new file mode 100644 index 0000000..0de4fb7 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:18px;color:#fff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:18px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:18px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:18px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:18px;height:100%;float:left;margin-right:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-ms-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.css new file mode 100644 index 0000000..fe7581a --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.css @@ -0,0 +1,321 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} +.clearfix:after { + clear: both; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 18px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 18px; + height: 100%; + float: left; + margin-right: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -ms-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.min.css new file mode 100644 index 0000000..ebb2252 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:18px;color:#fff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:18px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:18px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:18px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:18px;height:100%;float:left;margin-right:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-ms-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.css new file mode 100644 index 0000000..d79a923 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.css @@ -0,0 +1,366 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} +.clearfix:after { + clear: both; +} +.hide-text { + overflow: hidden; + text-indent: 100%; + white-space: nowrap; +} +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + /* Make inputs at least the height of their button counterpart */ + /* Makes inputs behave like true block-level elements */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); +} +.progress-warning.progress-striped .bar { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 18px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 18px; + height: 100%; + float: left; + margin-right: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -ms-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.min.css new file mode 100644 index 0000000..2dc305a --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@-ms-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:18px;color:#fff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:18px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:18px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:18px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:18px;height:100%;float:left;margin-right:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-ms-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.css new file mode 100644 index 0000000..1cf52c5 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.css @@ -0,0 +1,376 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); +} +.progress-warning.progress-striped .bar { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 18px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 18px; + height: 100%; + float: left; + margin-right: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -ms-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.min.css new file mode 100644 index 0000000..2273999 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.3.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:18px;color:#fff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:18px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:18px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:18px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:18px;height:100%;float:left;margin-right:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-ms-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.css new file mode 100644 index 0000000..1cf52c5 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.css @@ -0,0 +1,376 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); +} +.progress-warning.progress-striped .bar { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 18px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 18px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 18px; + height: 100%; + float: left; + margin-right: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -ms-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.min.css new file mode 100644 index 0000000..2273999 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.0.4.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:18px;color:#fff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:18px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:18px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:18px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:18px;height:100%;float:left;margin-right:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-ms-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-ms-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.css new file mode 100644 index 0000000..a8410dc --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.1.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.2.2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.css new file mode 100644 index 0000000..fc99eb0 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.css @@ -0,0 +1,367 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + background-repeat: repeat; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -moz-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; + background-repeat: repeat; +} +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success.vertical .bar, +.progress.vertical .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info.vertical .bar, +.progress.vertical .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.min.css new file mode 100644 index 0000000..1fd0367 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-2.3.2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress .bar-danger,.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-success,.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-info,.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress .bar-warning,.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress{position:relative}.progress .bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);background-repeat:repeat}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .bar{width:100%;height:0;-webkit-transition:height .6s ease;-moz-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease;background-repeat:repeat}.progress.vertical.bottom .bar{position:absolute;bottom:0}.progress-danger.vertical .bar,.progress.vertical .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);background-repeat:repeat}.progress-danger.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-success.vertical .bar,.progress.vertical .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);background-repeat:repeat}.progress-success.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-info.vertical .bar,.progress.vertical .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);background-repeat:repeat}.progress-info.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)}.progress-warning.vertical .bar,.progress.vertical .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);background-repeat:repeat}.progress-warning.progress-striped.vertical .bar,.progress.progress-striped.vertical .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.css new file mode 100644 index 0000000..da3183e --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.css @@ -0,0 +1,171 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-color: #428bca; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-color: #d9534f; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-color: #5cb85c; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-color: #f0ad4e; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.min.css new file mode 100644 index 0000000..287d761 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-color:#428bca;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-color:#d9534f;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-color:#5cb85c;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-color:#f0ad4e;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.css new file mode 100644 index 0000000..0d6d119 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.css @@ -0,0 +1,158 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.min.css new file mode 100644 index 0000000..03b29ee --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0-rc2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.css new file mode 100644 index 0000000..d180fad --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.css @@ -0,0 +1,158 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.min.css new file mode 100644 index 0000000..b1776fb --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.css new file mode 100644 index 0000000..1404301 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.css @@ -0,0 +1,156 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.min.css new file mode 100644 index 0000000..8727c11 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.css new file mode 100644 index 0000000..1404301 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.css @@ -0,0 +1,156 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.min.css new file mode 100644 index 0000000..8727c11 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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);background-image:-moz-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.css new file mode 100644 index 0000000..127070d --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.css @@ -0,0 +1,130 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.min.css new file mode 100644 index 0000000..0e83658 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.0.3.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.css new file mode 100644 index 0000000..127070d --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.css @@ -0,0 +1,130 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.min.css new file mode 100644 index 0000000..0e83658 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.css new file mode 100644 index 0000000..127070d --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.css @@ -0,0 +1,130 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.min.css new file mode 100644 index 0000000..0e83658 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.1.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.css new file mode 100644 index 0000000..ae2b560 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.css @@ -0,0 +1,194 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar[aria-valuenow="1"], +.progress-bar[aria-valuenow="2"] { + min-width: 30px; +} +.progress-bar[aria-valuenow="0"] { + color: #777777; + min-width: 30px; + background-color: transparent; + background-image: none; + box-shadow: none; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} +.progress-bar[aria-valuenow="1"], +.progress-bar[aria-valuenow="2"] { + min-width: 0; +} +.progress-bar[aria-valuenow="0"] { + color: #ffffff; + min-width: 0; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} +.progress-bar[aria-valuenow="0"].progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar[aria-valuenow="0"].progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar[aria-valuenow="0"].progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar[aria-valuenow="0"].progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.min.css new file mode 100644 index 0000000..a45cdcb --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.2.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="0"]{background-image:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:0}.progress-bar[aria-valuenow="0"]{color:#fff;min-width:0;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15)}.progress-bar[aria-valuenow="0"].progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar[aria-valuenow="0"].progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar[aria-valuenow="0"].progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar[aria-valuenow="0"].progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.css new file mode 100644 index 0000000..708ae26 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.css @@ -0,0 +1,140 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.min.css new file mode 100644 index 0000000..8a3079c --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.0.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.css new file mode 100644 index 0000000..3cb8d82 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.css @@ -0,0 +1,140 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.min.css new file mode 100644 index 0000000..4a96656 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.1.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.css new file mode 100644 index 0000000..3cb8d82 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.css @@ -0,0 +1,140 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.min.css new file mode 100644 index 0000000..4a96656 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.2.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.css new file mode 100644 index 0000000..3cb8d82 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.css @@ -0,0 +1,140 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress { + position: relative; +} +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} +.progress.right .progress-bar { + right: 0; +} +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} +.progress.vertical.bottom { + position: relative; +} +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css new file mode 100644 index 0000000..4a96656 --- /dev/null +++ b/public/theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css @@ -0,0 +1,2 @@ +/*! bootstrap-progressbar v0.9.0 | Copyright (c) 2012-2015 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.progress{position:relative}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:20px;height:100%;float:left;margin-right:20px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;-o-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0} \ No newline at end of file diff --git a/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-2.x.x.less b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-2.x.x.less new file mode 100644 index 0000000..a17909d --- /dev/null +++ b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-2.x.x.less @@ -0,0 +1,121 @@ +@progressbarVerticalWidth: @baseLineHeight; +@progressbarFontSize: 12px; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .bar { + position: absolute; + overflow: hidden; + line-height: @baseLineHeight; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: @progressbarFontSize; + line-height: @baseLineHeight; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: @progressbarFontSize; + line-height: @baseLineHeight; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: @progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: @progressbarVerticalWidth; + #gradient > .vertical(#f5f5f5, #f9f9f9); + background-repeat: repeat; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .bar { + width: 100%; + height: 0; + .transition(height .6s ease); + background-repeat: repeat; +} + +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} + +// Danger (red) +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + #gradient > .vertical(#ee5f5b, #c43c35); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + #gradient > .striped(#ee5f5b); +} + +// Success (green) +.progress-success.vertical .bar, +.progress.vertical .bar-success { + #gradient > .vertical(#62c462, #57a957); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + #gradient > .striped(#62c462); +} + +// Info (teal) +.progress-info.vertical .bar, +.progress.vertical .bar-info { + #gradient > .vertical(#5bc0de, #339bb9); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + #gradient > .striped(#5bc0de); +} + +// Warning (orange) +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + #gradient > .vertical(lighten(@orange, 15%), @orange); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + #gradient > .striped(lighten(@orange, 15%)); +} diff --git a/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.0.0-3.1.x.less b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.0.0-3.1.x.less new file mode 100644 index 0000000..9594d52 --- /dev/null +++ b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.0.0-3.1.x.less @@ -0,0 +1,74 @@ +@progressbarVerticalWidth: @line-height-computed; +@progressbarFontSize: @font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: @line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: @progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: @progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + .transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.2.0.less b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.2.0.less new file mode 100644 index 0000000..61c5365 --- /dev/null +++ b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.2.0.less @@ -0,0 +1,107 @@ +@progressbarVerticalWidth: @line-height-computed; +@progressbarFontSize: @font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: @line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: @progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: @progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + .transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} + +// bootstrap-progressbar reverted low percentages styles +// ----------------------------------------------------- + +.progress-bar { + &[aria-valuenow="1"], + &[aria-valuenow="2"] { + min-width: 0; + } + + &[aria-valuenow="0"] { + color: @progress-bar-color; + min-width: 0; + background-color: @progress-bar-bg; + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + + &.progress-bar-success { + .progress-bar-variant(@progress-bar-success-bg); + } + + &.progress-bar-info { + .progress-bar-variant(@progress-bar-info-bg); + } + + &.progress-bar-warning { + .progress-bar-variant(@progress-bar-warning-bg); + } + + &.progress-bar-danger { + .progress-bar-variant(@progress-bar-danger-bg); + } + } +} diff --git a/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.3.0-3.x.x.less b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.3.0-3.x.x.less new file mode 100644 index 0000000..9594d52 --- /dev/null +++ b/public/theme/bootstrap-progressbar/less/bootstrap-progressbar-3.3.0-3.x.x.less @@ -0,0 +1,74 @@ +@progressbarVerticalWidth: @line-height-computed; +@progressbarFontSize: @font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: @line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: @progressbarFontSize; + line-height: @line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: @progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: @progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + .transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/package.json b/public/theme/bootstrap-progressbar/package.json new file mode 100644 index 0000000..dca17b1 --- /dev/null +++ b/public/theme/bootstrap-progressbar/package.json @@ -0,0 +1,29 @@ +{ + "name": "bootstrap-progressbar", + "description": "progressbar interactions for twitter bootstrap 2 & 3", + "homepage": "http://www.minddust.com", + "license": "MIT", + "version": "0.9.0", + "keywords": [ + "boostrap-progressbar", + "progressbar" + ], + "author": "Stephan Groß", + "scripts": { + "gulp": "./node_modules/.bin/gulp" + }, + "repository": { + "type": "git", + "url": "https://github.com/minddust/bootstrap-progressbar" + }, + "devDependencies": { + "gulp": "~3.5.2", + "gulp-clean": "~0.2.4", + "gulp-header": "~1.0.2", + "gulp-less": "~1.3.3", + "gulp-minify-css": "~0.3.0", + "gulp-rename": "^1.1.0", + "gulp-uglify": "~0.2.1", + "gulp-util": "~2.2.14" + } +} diff --git a/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-2.x.x.scss b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-2.x.x.scss new file mode 100644 index 0000000..739faf5 --- /dev/null +++ b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-2.x.x.scss @@ -0,0 +1,121 @@ +$progressbarVerticalWidth: $baseLineHeight; +$progressbarFontSize: 12px; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .bar { + position: absolute; + overflow: hidden; + line-height: $baseLineHeight; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: $progressbarFontSize; + line-height: $baseLineHeight; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: $progressbarFontSize; + line-height: $baseLineHeight; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: $progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: $progressbarVerticalWidth; + @include gradient-vertical(#f5f5f5, #f9f9f9); + background-repeat: repeat; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .bar { + width: 100%; + height: 0; + @include transition(height .6s ease); + background-repeat: repeat; +} + +.progress.vertical.bottom .bar { + position: absolute; + bottom: 0; +} + +// Danger (red) +.progress-danger.vertical .bar, +.progress.vertical .bar-danger { + @include gradient-vertical(#ee5f5b, #c43c35); + background-repeat: repeat; +} +.progress-danger.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-danger { + @include gradient-striped(#ee5f5b); +} + +// Success (green) +.progress-success.vertical .bar, +.progress.vertical .bar-success { + @include gradient-vertical(#62c462, #57a957); + background-repeat: repeat; +} +.progress-success.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-success { + @include gradient-striped(#62c462); +} + +// Info (teal) +.progress-info.vertical .bar, +.progress.vertical .bar-info { + @include gradient-vertical(#5bc0de, #339bb9); + background-repeat: repeat; +} +.progress-info.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-info { + @include gradient-striped(#5bc0de); +} + +// Warning (orange) +.progress-warning.vertical .bar, +.progress.vertical .bar-warning { + @include gradient-vertical(lighten($orange, 15%), $orange); + background-repeat: repeat; +} +.progress-warning.progress-striped.vertical .bar, +.progress.progress-striped.vertical .bar-warning { + @include gradient-striped(lighten($orange, 15%)); +} diff --git a/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.0.0-3.1.x.scss b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.0.0-3.1.x.scss new file mode 100644 index 0000000..b14d5ba --- /dev/null +++ b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.0.0-3.1.x.scss @@ -0,0 +1,74 @@ +$progressbarVerticalWidth: $line-height-computed; +$progressbarFontSize: $font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: $line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: $progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: $progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + @include transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.2.0.scss b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.2.0.scss new file mode 100644 index 0000000..ced685c --- /dev/null +++ b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.2.0.scss @@ -0,0 +1,107 @@ +$progressbarVerticalWidth: $line-height-computed; +$progressbarFontSize: $font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: $line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: $progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: $progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + @include transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} + +// bootstrap-progressbar reverted low percentages styles +// ----------------------------------------------------- + +.progress-bar { + &[aria-valuenow="1"], + &[aria-valuenow="2"] { + min-width: 0; + } + + &[aria-valuenow="0"] { + color: $progress-bar-color; + min-width: 0; + background-color: $progress-bar-bg; + @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + + &.progress-bar-success { + @include progress-bar-variant($progress-bar-success-bg); + } + + &.progress-bar-info { + @include progress-bar-variant($progress-bar-info-bg); + } + + &.progress-bar-warning { + @include progress-bar-variant($progress-bar-warning-bg); + } + + &.progress-bar-danger { + @include progress-bar-variant($progress-bar-danger-bg); + } + } +} diff --git a/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.3.0-3.x.x.scss b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.3.0-3.x.x.scss new file mode 100644 index 0000000..b14d5ba --- /dev/null +++ b/public/theme/bootstrap-progressbar/scss/bootstrap-progressbar-3.3.0-3.x.x.scss @@ -0,0 +1,74 @@ +$progressbarVerticalWidth: $line-height-computed; +$progressbarFontSize: $font-size-small; + +// bootstrap-progressbar global styles +// ----------------------------------- + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: $line-height-computed; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: $progressbarFontSize; + line-height: $line-height-computed; + text-align: center; +} + +// bootstrap-progressbar horizontal styles +// --------------------------------------- + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +// bootstrap-progressbar vertical styles +// ------------------------------------- + +.progress.vertical { + width: $progressbarVerticalWidth; + height: 100%; + float: left; + margin-right: $progressbarVerticalWidth; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + @include transition(height .6s ease); +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} diff --git a/public/theme/bootstrap-wysiwyg/.bower.json b/public/theme/bootstrap-wysiwyg/.bower.json new file mode 100644 index 0000000..08f7926 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/.bower.json @@ -0,0 +1,42 @@ +{ + "name": "bootstrap-wysiwyg", + "description": "A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand.", + "version": "1.0.5", + "keywords": [ + "css", + "js", + "responsive", + "front-end", + "web", + "wysiwyg", + "editor" + ], + "homepage": "https://github.com/steveathon/bootstrap-wysiwyg", + "main": [ + "js/bootstrap-wysiwyg.min.js" + ], + "ignore": [ + ".*", + "index.html", + "CHANGES", + "LICENSE", + "SUPPORTED" + ], + "license": "MIT", + "dependencies": { + "jquery": "~2.1.4", + "jquery.hotkeys": "https://github.com/jeresig/jquery.hotkeys.git#master", + "fontawesome": "~4.5.0", + "bootstrap": "~3.3.5", + "google-code-prettify": "~1.0.4" + }, + "_release": "1.0.5", + "_resolution": { + "type": "version", + "tag": "1.0.5", + "commit": "b4b774eddcc69b00778361eb98f170f633260636" + }, + "_source": "https://github.com/steveathon/bootstrap-wysiwyg.git", + "_target": "^1.0.5", + "_originalSource": "bootstrap-wysiwyg-steveathon" +} \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/README.md b/public/theme/bootstrap-wysiwyg/README.md new file mode 100644 index 0000000..1b00d2f --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/README.md @@ -0,0 +1,197 @@ +bootstrap-wysiwyg +================= +[![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/steveathon/bootstrap-wysiwyg) +[![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/steveathon/bootstrap-wysiwyg) + +A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand. + +This project was originally built for [MindMup](http://www.mindmup.com) and has now been adapted and modified to suit a wide range of projects. + +Development is active, and ongoing. + +Features +----------- + +* Automatically binds standard hotkeys for common operations on Mac and Windows +* Allows a custom built toolbar with no magic markup generators enabling the web site to use all the goodness of Bootstrap +* Does not force any styling - it's all up to you +* Uses standard browser features, no magic non-standard code, toolbar and keyboard configurable to execute any supported [browser command](https://developer.mozilla.org/en/docs/Rich-Text_Editing_in_Mozilla +) +* Does not create a separate frame, backup text areas etc - instead keeps it simple and runs everything inline in a DIV +* (Optionally) cleans up trailing whitespace and empty divs and spans +* Requires a modern browser (See SUPPORTED) +* Supports mobile devices (See SUPPORTED) +* Supports multiple instances +* HTML Sanitization +* Drag and drop files to insert images +* Supports image upload +* Supports image capture on mobile devices +* Events + +Basic Usage +----------- + +```javascript +$('#editor').wysiwyg(); +``` + +Don't forget to style your editor div: + +```css +#editor {overflow:scroll; max-height:300px} +``` + +If you want to use this for a mobile web site, make sure to read about [how to style it](https://github.com/mindmup/bootstrap-wysiwyg#styling-for-mobile-devices) to optimise mobile screen usage and experience (please note that this demo page isn't optimised for mobile access). + +Optionally, also create a toolbar (see the source of this page for an example): + +```html +
+ ... +
+``` + +In the toolbar, execute simple commands by adding a data-edit attribute to a link. + +```html +... +``` + +execute more complex commands by adding an argument after a blank or providing an input with a data-edit command (the input value is used as an argument). In case of file inputs, the file contents are read in using the FileReader API and used as the command value. + +```html +... +... + +... + +``` + +Use standard jQuery methods to access and set content and focus. You can also ask for cleaned up HTML content: + +```javascript +$('#editor').cleanHtml() +``` + +Customising +----------- +You can assign commands to hotkeys and toolbar links. For a toolbar link, just put the execCommand command name into a data-edit attribute. +For more info on execCommand, see the [QuirksMode](http://www.quirksmode.org/dom/execCommand.html) and [Mozilla Developer](https://developer.mozilla.org/en/docs/Rich-Text_Editing_in_Mozilla) documentation. + +```html +
+ +
+``` + +To pass arguments to a command, separate a command with a space. + +```html + ... +``` + +You can also use input type='text' with a data-edit attribute. When the value +is changed, the command from the data-edit attribute will be applied using the +input value as the command argument + +```html + +``` +If the input type is file, when a file is selected the contents will be read in using the FileReader API and the data URL will be used as the argument + +```html + +``` + +To change hotkeys, specify the map of hotkeys to commands in the hotKeys option. For example: + +```javascript +$('#editor').wysiwyg({ + hotKeys: { + 'ctrl+b meta+b': 'bold', + 'ctrl+i meta+i': 'italic', + 'ctrl+u meta+u': 'underline', + 'ctrl+z meta+z': 'undo', + 'ctrl+y meta+y meta+shift+z': 'redo' + } +}); +``` + +Events +------ + +#### Change +Fired whenever anything changes. See this example [events.html](examples/events.html) +```javascript +$('#editor').wysiwyg().on('change', function(){ + alert('something has been changed on the editor'); +}); +``` + +Styling for mobile devices +-------------------------- + +This editor should work pretty well with mobile devices, but you'll need to consider the following things when styling it: +- keyboards on mobile devices take a huge part of the screen +- having to scroll the screen to touch the toolbar can cause the editing component to lose focus, and the mobile device keyboard might go away +- mobile devices tend to move the screen viewport around to ensure that the focused element is shown, so it's best that the edit box is glued to the top + +For the content attachment editor on MindMup, we apply the following rules to mobile device styling: +- edit box is glued to the top, so the focus doesn't jump around +- toolbar is below the edit box +- on portrait screens, edit box size is 50% of the screen +- on landscape screens, edit box size is 30% of the screen +- as the screen gets smaller, non-critical toolbar buttons get hidden into a "other" menu + +Dependencies +------------ +* [jQuery](http://jquery.com/) +* [jQuery HotKeys](https://github.com/jeresig/jquery.hotkeys) +* [Bootstrap](http://twitter.github.com/bootstrap/) + +Thanks to +------------ +@gojko @mindmup @jordanh +@beatnbite @brutuscat @VictorBjelkholm +@mrmrs @tilleryd @pnevels + +History +------------ + +The original version of this code (below) appeared to be no longer maintained. There +were a number of outstanding changes which needed to be merged in and a few which +included performance and feature improvements. These have now been included in this +master branch. + +I'll keep an eye out for future changes/improvements and pull them in as required. + +- Steve + +Original Licence +------------ + +The original version of this tool can be found here: +[bootstrap-wysiwyg](https://github.com/mindmup/bootstrap-wysiwyg) + +The MIT License + +Copyright (c) 2013 Damjan Vujnovic, David de Florinier, Gojko Adzic + +Permission 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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE 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. diff --git a/public/theme/bootstrap-wysiwyg/bower.json b/public/theme/bootstrap-wysiwyg/bower.json new file mode 100644 index 0000000..30a6b44 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/bower.json @@ -0,0 +1,33 @@ +{ + "name": "bootstrap-wysiwyg", + "description": "A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand.", + "version": "1.0.4", + "keywords": [ + "css", + "js", + "responsive", + "front-end", + "web", + "wysiwyg", + "editor" + ], + "homepage": "https://github.com/steveathon/bootstrap-wysiwyg", + "main": [ + "js/bootstrap-wysiwyg.min.js" + ], + "ignore": [ + ".*", + "index.html", + "CHANGES", + "LICENSE", + "SUPPORTED" + ], + "license": "MIT", + "dependencies": { + "jquery": "~2.1.4", + "jquery.hotkeys": "https://github.com/jeresig/jquery.hotkeys.git#master", + "fontawesome": "~4.5.0", + "bootstrap": "~3.3.5", + "google-code-prettify": "~1.0.4" + } +} diff --git a/public/theme/bootstrap-wysiwyg/css/style.css b/public/theme/bootstrap-wysiwyg/css/style.css new file mode 100644 index 0000000..83eaf20 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/css/style.css @@ -0,0 +1,88 @@ +/* this CSS is not part of the widget, it is here just as an example of the demo page styling.... Don't copy this one, roll your own. One + * of the key things about the widget is that it allows you to do your own styling! + */ + + +#editor, #first-editor, #second-editor { + max-height: 250px; + height: 250px; + background-color: white; + border-collapse: separate; + border: 1px solid rgb(204, 204, 204); + padding: 4px; + box-sizing: content-box; + -webkit-box-shadow: rgba(0, 0, 0, 0.0745098) 0 1px 1px 0 inset; + box-shadow: rgba(0, 0, 0, 0.0745098) 0 1px 1px 0 inset; + border-top-right-radius: 3px; border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; border-top-left-radius: 3px; + overflow: scroll; + outline: none; +} +#editor:focus{ + border-color:rgba(82, 168, 236, 0.8); + outline:0; + outline:thin dotted \9; + -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); +} + +.voiceBtn { + width: 20px; + color: transparent; + background-color: transparent; + transform: scale(2.0, 2.0); + -webkit-transform: scale(2.0, 2.0); + -moz-transform: scale(2.0, 2.0); + border: transparent; + cursor: pointer; + box-shadow: none; + -webkit-box-shadow: none; +} + +div[data-role="editor-toolbar"] { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.dropdown-menu a { + cursor: pointer; +} +.btn-toolbar { + padding: 10px 0px 10px 0px; +} + +[contentEditable=true]:empty:not(:focus):before { + content:attr(data-placeholder) +} + +.placeholderText { + color: #777; +} + +.imgUpload +{ + width: 0; + height: 0; + position:absolute +} + +/* + Font Sizes + fs represents the font-size attribute; therefore, + fs-five would be the equivalent to font-size: 5; +*/ + +.fs-One { + font-size: x-small; +} + +.fs-Three { + font-size: medium; +} + +.fs-Five { + font-size: x-large; +} \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/basic.html b/public/theme/bootstrap-wysiwyg/examples/basic.html new file mode 100644 index 0000000..595a6fe --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/basic.html @@ -0,0 +1,31 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + + + + + + +
+

Basic editor, no fancy bits.

+
+
+

+ Submit +

+
+ + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/clear-formatting.html b/public/theme/bootstrap-wysiwyg/examples/clear-formatting.html new file mode 100644 index 0000000..963afe8 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/clear-formatting.html @@ -0,0 +1,85 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+ +

Simple Editor with Toolbar

+
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + +
+
+
+
+

+ Submit +

+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/events.html b/public/theme/bootstrap-wysiwyg/examples/events.html new file mode 100644 index 0000000..19589e2 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/events.html @@ -0,0 +1,88 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+

Type something to see events

+ +
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+
+

Live Preview

+
+

Events fired:

+

+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/form-post.html b/public/theme/bootstrap-wysiwyg/examples/form-post.html new file mode 100644 index 0000000..6a3a6f8 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/form-post.html @@ -0,0 +1,94 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+ +

Simple HTML Editor

+
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + +
+
+
+ +
+
+ Submit + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/formatblock-example.html b/public/theme/bootstrap-wysiwyg/examples/formatblock-example.html new file mode 100644 index 0000000..a33a98f --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/formatblock-example.html @@ -0,0 +1,97 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+ +

Simple HTML Editor

+
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ pre + address + h1 + h2 + h3 + h4 + h5 + + block + div +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + +
+
+
+
+

+ Submit +

+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/html-editor.html b/public/theme/bootstrap-wysiwyg/examples/html-editor.html new file mode 100644 index 0000000..2234477 --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/html-editor.html @@ -0,0 +1,84 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+

Simple HTML Editor

+
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + +
+
+
+
+

+ Submit +

+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/multiple-editors.html b/public/theme/bootstrap-wysiwyg/examples/multiple-editors.html new file mode 100644 index 0000000..7696ecf --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/multiple-editors.html @@ -0,0 +1,156 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+

Multiple Editors with Toolbars

+
+
+

First Editor

+
+
+ + + +
+
+   + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+ +
+
+
+ +
+

Second Editor

+ +
+
+ + + +
+
+   + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/examples/php/upload.php b/public/theme/bootstrap-wysiwyg/examples/php/upload.php new file mode 100644 index 0000000..a5836ca --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/examples/php/upload.php @@ -0,0 +1,16 @@ + + + + + + + A tiny, opensource, Bootstrap WYSIWYG rich text editor + + + + + + + +
+

Simple Editor with Toolbar

+
+
+   + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+
+
+

+ Submit +

+
+ + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/gruntfile.js b/public/theme/bootstrap-wysiwyg/gruntfile.js new file mode 100644 index 0000000..9223c9a --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/gruntfile.js @@ -0,0 +1,74 @@ +module.exports = function (grunt) { + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + jshint: { + all: ['gruntfile.js', 'gulpfile.js', 'src/**/*.js'] + }, + bootlint: { + options: {}, + files: ['*.html', 'examples/**/*.html'] + }, + checkPages: { + development: { + options: { + pageUrls: [ + 'index.html', + 'examples/basic.html', + 'examples/clear-formatting.html', + 'examples/events.html', + 'examples/form-post.html', + 'examples/formatblock-example.html', + 'examples/html-editor.html', + 'examples/multiple-editors.html', + 'examples/simple-toolbar.html' + ], + checkLinks: true, + summary: true + } + } + }, + uglify: { + options: { + banner: '/* @fileoverview \n' + + ' * Provides full Bootstrap based, multi-instance WYSIWYG editor. \n' + + ' * \n' + + ' * Name = ' + '<%= pkg.name %> \n' + + ' * Author = ' + 'Various, see LICENCE \n' + + ' * Version = ' + 'v<%= pkg.version %> \n' + + ' * About = ' + 'A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand. \n' + + '*/ \n\n' + }, + dist: { + files: { + 'js/bootstrap-wysiwyg.min.js': ['src/**/*.js'] + }, + } + }, + release: { + options: { + additionalFiles: ['bower.json', 'src/bootstrap-wysiwyg.js'], + commit: false, + npm: false, + npmTag: false, + push: false, + pushTags: false, + tag: false + } + }, + watch: { + files: ['gruntfile.js', 'gulpfile.js', 'src/**/*.js', '*.html', 'examples/**/*.html'], + tasks: ['jshint', 'bootlint', 'checkPages', 'uglify'] + } + }); + + grunt.loadNpmTasks('grunt-check-pages'); + grunt.loadNpmTasks('grunt-bootlint'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-rename'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-release'); + + grunt.registerTask('default', ['jshint', 'bootlint', 'checkPages', 'uglify', 'watch']); +}; \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/gulpfile.js b/public/theme/bootstrap-wysiwyg/gulpfile.js new file mode 100644 index 0000000..ca9f42b --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/gulpfile.js @@ -0,0 +1,67 @@ +// Include gulp +var gulp = require('gulp'); + +// Include our plugins +var jshint = require('gulp-jshint'); +var bootlint = require('gulp-bootlint'); +var uglify = require('gulp-uglify'); +var rename = require('gulp-rename'); +var bootlint = require('gulp-bootlint'); +var html5lint = require('gulp-html5-lint'); + +var checkPages = require('check-pages'); + +// Default task +gulp.task('default', ['js', 'html', 'bootstrap', 'links', 'minify']); + +// Lint our JavaScript files +gulp.task('js', function () { + return gulp.src('src/**/*.js') + .pipe(jshint()) + .pipe(jshint.reporter('default')); +}); + +gulp.task('html', function () { + return gulp.src(['*.html', 'examples/*.html']) + .pipe(html5lint()); +}); + +// Lint our Bootstrap files +gulp.task('bootstrap', function () { + return gulp.src(['*.html', 'examples/**/*.html']) + .pipe(bootlint()); +}); + +// Check for broken and invalid links in the web pages +gulp.task('links', function (callback) { + var options = { + pageUrls: [ + 'index.html', + 'examples/basic.html', + 'examples/clear-formatting.html', + 'examples/events.html', + 'examples/form-post.html', + 'examples/formatblock-example.html', + 'examples/html-editor.html', + 'examples/multiple-editors.html', + 'examples/simple-toolbar.html' + ], + checkLinks: true, + summary: true + }; + + checkPages(console, options, callback); +}); + +// Minify our JS +gulp.task('minify', function () { + return gulp.src('src/*.js') + .pipe(uglify()) + .pipe(rename('bootstrap-wysiwyg.min.js')) + .pipe(gulp.dest('js')); +}); + +// Watch files for changes +gulp.task('watch', function () { + gulp.watch(['src/*.js', 'index.html', 'examples/*.html'], ['js', 'html', 'bootstrap', 'links', 'minify']); +}); \ No newline at end of file diff --git a/public/theme/bootstrap-wysiwyg/js/bootstrap-wysiwyg.min.js b/public/theme/bootstrap-wysiwyg/js/bootstrap-wysiwyg.min.js new file mode 100644 index 0000000..110a13f --- /dev/null +++ b/public/theme/bootstrap-wysiwyg/js/bootstrap-wysiwyg.min.js @@ -0,0 +1 @@ +!function(t){"use strict";var e=function(e){var n=t.Deferred(),a=new FileReader;return a.onload=function(t){n.resolve(t.target.result)},a.onerror=n.reject,a.onprogress=n.notify,a.readAsDataURL(e),n.promise()};t.fn.cleanHtml=function(e){if(t(this).data("wysiwyg-html-mode")===!0&&(t(this).html(t(this).text()),t(this).attr("contenteditable",!0),t(this).data("wysiwyg-html-mode",!1)),e===!0&&t(this).parent().is("form")){var n=t(this).html;if(t(n).has("img").length){var a=t("img",t(n)),o=[],i=t(this).parent();t.each(a,function(e,n){t(n).attr("src").match(/^data:image\/.*$/)&&(o.push(a[e]),t(i).prepend(""),t(n).attr("src","postedimage/"+e))})}}var r=t(this).html();return r&&r.replace(/(
|\s|

<\/div>| )*$/,"")},t.fn.wysiwyg=function(n){var a,o,i,r=this,l=function(){o.activeToolbarClass&&t(o.toolbarSelector).find(i).each(function(){var e=t(this).data(o.commandRole).split(" "),n=e[0];e.length>1&&document.queryCommandEnabled(n)&&document.queryCommandValue(n)===e[1]?t(this).addClass(o.activeToolbarClass):1===e.length&&document.queryCommandEnabled(n)&&document.queryCommandState(n)?t(this).addClass(o.activeToolbarClass):t(this).removeClass(o.activeToolbarClass)})},s=function(t,e){var n=t.split(" "),a=n.shift(),o=n.join(" ")+(e||""),i=t.split("-");1===i.length?document.execCommand(a,!1,o):"format"===i[0]&&2===i.length&&document.execCommand("formatBlock",!1,i[1]),r.trigger("change"),l()},d=function(e){t.each(e,function(t,e){r.keydown(t,function(t){r.attr("contenteditable")&&r.is(":visible")&&(t.preventDefault(),t.stopPropagation(),s(e))}).keyup(t,function(t){r.attr("contenteditable")&&r.is(":visible")&&(t.preventDefault(),t.stopPropagation())})}),r.keyup(function(){r.trigger("change")})},c=function(){var t,e;return window.getSelection?(t=window.getSelection(),t.getRangeAt&&t.rangeCount&&(e=t.getRangeAt(0))):document.selection&&(e=document.selection.createRange()),e},u=function(){a=c()},m=function(){var t;if(window.getSelection||document.createRange){if(t=window.getSelection(),a){try{t.removeAllRanges()}catch(e){document.body.createTextRange().select(),document.selection.empty()}t.addRange(a)}}else document.selection&&a&&a.select()},h=function(){if(t(r).data("wysiwyg-html-mode")!==!0){var e=t(r).html(),n=t("
");t(n).append(document.createTextNode(e)),t(n).attr("contenteditable",!0),t(r).html(" "),t(r).append(t(n)),t(r).attr("contenteditable",!1),t(r).data("wysiwyg-html-mode",!0),t(n).focus()}else t(r).html(t(r).text()),t(r).attr("contenteditable",!0),t(r).data("wysiwyg-html-mode",!1),t(r).focus()},f=function(n){r.focus(),t.each(n,function(n,a){/^image\//.test(a.type)?t.when(e(a)).done(function(t){s("insertimage",t),r.trigger("image-inserted")}).fail(function(t){o.fileUploadError("file-reader",t)}):o.fileUploadError("unsupported-file-type",a.type)})},p=function(t,e){m(),document.queryCommandSupported("hiliteColor")&&document.execCommand("hiliteColor",!1,e||"transparent"),u(),t.data(o.selectionMarker,e)},g=function(e,n){e.find(i).click(function(){m(),r.focus(),"html"===t(this).data(n.commandRole)?h():s(t(this).data(n.commandRole)),u()}),e.find("[data-toggle=dropdown]").click(m),e.find("input[type=text][data-"+n.commandRole+"]").on("webkitspeechchange change",function(){var e=this.value;this.value="",m(),e&&(r.focus(),s(t(this).data(n.commandRole),e)),u()}).on("focus",function(){var e=t(this);e.data(n.selectionMarker)||(p(e,n.selectionColor),e.focus())}).on("blur",function(){var e=t(this);e.data(n.selectionMarker)&&p(e,!1)}),e.find("input[type=file][data-"+n.commandRole+"]").change(function(){m(),"file"===this.type&&this.files&&this.files.length>0&&f(this.files),u(),this.value=""})},y=function(){r.on("dragenter dragover",!1).on("drop",function(t){var e=t.originalEvent.dataTransfer;t.stopPropagation(),t.preventDefault(),e&&e.files&&e.files.length>0&&f(e.files)})};return o=t.extend(!0,{},t.fn.wysiwyg.defaults,n),i="a[data-"+o.commandRole+"],button[data-"+o.commandRole+"],input[type=button][data-"+o.commandRole+"]",d(o.hotKeys),""!==t(this).attr("placeholder")&&(t(this).addClass("placeholderText"),t(this).html(t(this).attr("placeholder")),t(this).bind("focus",function(){""!==t(this).attr("placeholder")&&t(this).text()===t(this).attr("placeholder")&&(t(this).removeClass("placeholderText"),t(this).html(""))}),t(this).bind("blur",function(){""!==t(this).attr("placeholder")&&""===t(this).text()&&(t(this).addClass("placeholderText"),t(this).html(t(this).attr("placeholder")))})),o.dragAndDropImages&&y(),g(t(o.toolbarSelector),o),r.attr("contenteditable",!0).on("mouseup keyup mouseout",function(){u(),l()}),t(window).bind("touchend",function(t){var e=r.is(t.target)||r.has(t.target).length>0,n=c(),a=n&&n.startContainer===n.endContainer&&n.startOffset===n.endOffset;(!a||e)&&(u(),l())}),this},t.fn.wysiwyg.defaults={hotKeys:{"Ctrl+b meta+b":"bold","Ctrl+i meta+i":"italic","Ctrl+u meta+u":"underline","Ctrl+z":"undo","Ctrl+y meta+y meta+shift+z":"redo","Ctrl+l meta+l":"justifyleft","Ctrl+r meta+r":"justifyright","Ctrl+e meta+e":"justifycenter","Ctrl+j meta+j":"justifyfull","Shift+tab":"outdent",tab:"indent"},toolbarSelector:"[data-role=editor-toolbar]",commandRole:"edit",activeToolbarClass:"btn-info",selectionMarker:"edit-focus-marker",selectionColor:"darkgrey",dragAndDropImages:!0,keypressTimeout:200,fileUploadError:function(t,e){console.log("File upload error",t,e)}}}(window.jQuery);
\ No newline at end of file
diff --git a/public/theme/bootstrap-wysiwyg/package.json b/public/theme/bootstrap-wysiwyg/package.json
new file mode 100644
index 0000000..24a3a0f
--- /dev/null
+++ b/public/theme/bootstrap-wysiwyg/package.json
@@ -0,0 +1,53 @@
+{
+  "name": "bootstrap-wysiwyg",
+  "version": "1.0.4",
+  "description": "A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand.",
+  "contributors": [
+    {
+      "name": "Steve King",
+      "url": "https://github.com/steveathon"
+    },
+    {
+      "name": "Tyler Hughes",
+      "url": "https://github.com/RandomlyKnighted"
+    }
+  ],
+  "dependencies": {},
+  "devDependencies": {
+    "check-pages": "^0.9.0",
+    "grunt": "^0.4.5",
+    "grunt-bootlint": "^0.9.1",
+    "grunt-bumpup": "^0.6.2",
+    "grunt-check-pages": "^0.9.0",
+    "grunt-contrib-jshint": "^0.11.2",
+    "grunt-contrib-rename": "^0.0.3",
+    "grunt-contrib-uglify": "^0.9.1",
+    "grunt-contrib-watch": "^0.6.1",
+    "grunt-release": "^0.13.0",
+    "gulp": "^3.9.0",
+    "gulp-bootlint": "^0.5.0",
+    "gulp-html5-lint": "^1.0.1",
+    "gulp-jshint": "^1.11.0",
+    "gulp-rename": "^1.2.2",
+    "gulp-uglify": "^1.2.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/steveathon/bootstrap-wysiwyg"
+  },
+  "keywords": [
+    "css",
+    "js",
+    "responsive",
+    "front-end",
+    "web",
+    "wysiwyg",
+    "editor"
+  ],
+  "license": "MIT",
+  "private": false,
+  "bugs": {
+    "url": "https://github.com/steveathon/bootstrap-wysiwyg/issues"
+  },
+  "homepage": "https://github.com/steveathon/bootstrap-wysiwyg"
+}
diff --git a/public/theme/bootstrap-wysiwyg/src/bootstrap-wysiwyg.js b/public/theme/bootstrap-wysiwyg/src/bootstrap-wysiwyg.js
new file mode 100644
index 0000000..61ae23b
--- /dev/null
+++ b/public/theme/bootstrap-wysiwyg/src/bootstrap-wysiwyg.js
@@ -0,0 +1,306 @@
+/* @fileoverview
+ * Provides full Bootstrap based, multi-instance WYSIWYG editor.
+ *
+ * "Name"    = 'bootstrap-wysiwyg'
+ * "Author"  = 'Various, see LICENSE'
+ * "Version" = '1.0.4'
+ * "About"   = 'A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand.'
+ */
+
+(function ($) {
+	'use strict';
+
+	var readFileIntoDataUrl = function (fileInfo) {
+		var loader = $.Deferred(),
+			fReader = new FileReader();
+		fReader.onload = function (e) {
+			loader.resolve(e.target.result);
+		};
+		fReader.onerror = loader.reject;
+		fReader.onprogress = loader.notify;
+		fReader.readAsDataURL(fileInfo);
+		return loader.promise();
+	};
+	$.fn.cleanHtml = function (o) {
+		if ( $(this).data("wysiwyg-html-mode") === true ) {
+			$(this).html($(this).text());
+        	$(this).attr('contenteditable',true);
+        	$(this).data('wysiwyg-html-mode',false);
+		}
+
+		// Strip the images with src="data:image/.." out;
+		if ( o === true && $(this).parent().is("form") ) {
+			var gGal = $(this).html;
+			if ( $(gGal).has( "img" ).length ) {
+				var gImages = $( "img", $(gGal));
+				var gResults = [];
+				var gEditor = $(this).parent();
+				$.each(gImages, function(i,v) {
+					if ( $(v).attr('src').match(/^data:image\/.*$/) ) {
+						gResults.push(gImages[i]);
+						$(gEditor).prepend("");
+						$(v).attr('src', 'postedimage/'+i);
+				}});
+			}
+		}
+		var html = $(this).html();
+		return html && html.replace(/(
|\s|

<\/div>| )*$/, ''); + }; + $.fn.wysiwyg = function (userOptions) { + var editor = this, + selectedRange, + options, + toolbarBtnSelector, + updateToolbar = function () { + if (options.activeToolbarClass) { + $(options.toolbarSelector).find(toolbarBtnSelector).each(function () { + var commandArr = $(this).data(options.commandRole).split(' '), + command = commandArr[0]; + + // If the command has an argument and its value matches this button. == used for string/number comparison + if (commandArr.length > 1 && document.queryCommandEnabled(command) && document.queryCommandValue(command) === commandArr[1]) { + $(this).addClass(options.activeToolbarClass); + // Else if the command has no arguments and it is active + } else if (commandArr.length === 1 && document.queryCommandEnabled(command) && document.queryCommandState(command)) { + $(this).addClass(options.activeToolbarClass); + // Else the command is not active + } else { + $(this).removeClass(options.activeToolbarClass); + } + }); + } + }, + execCommand = function (commandWithArgs, valueArg) { + var commandArr = commandWithArgs.split(' '), + command = commandArr.shift(), + args = commandArr.join(' ') + (valueArg || ''); + + var parts = commandWithArgs.split('-'); + + if ( parts.length === 1 ) { + document.execCommand(command, false, args); + } + else if ( parts[0] === 'format' && parts.length === 2 ) { + document.execCommand('formatBlock', false, parts[1] ); + } + + editor.trigger('change'); + updateToolbar(); + }, + bindHotkeys = function (hotKeys) { + $.each(hotKeys, function (hotkey, command) { + editor.keydown(hotkey, function (e) { + if (editor.attr('contenteditable') && editor.is(':visible')) { + e.preventDefault(); + e.stopPropagation(); + execCommand(command); + } + }).keyup(hotkey, function (e) { + if (editor.attr('contenteditable') && editor.is(':visible')) { + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + + editor.keyup(function(){ editor.trigger('change'); }); + }, + getCurrentRange = function () { + var sel, range; + if (window.getSelection) { + sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) { + range = sel.getRangeAt(0); + } + } else if (document.selection) { + range = document.selection.createRange(); + } return range; + }, + saveSelection = function () { + selectedRange = getCurrentRange(); + }, + restoreSelection = function () { + var selection; + if (window.getSelection || document.createRange) { + selection = window.getSelection(); + if (selectedRange) { + try { + selection.removeAllRanges(); + } catch (ex) { + document.body.createTextRange().select(); + document.selection.empty(); + } + selection.addRange(selectedRange); + } + } + else if (document.selection && selectedRange) { + selectedRange.select(); + } + }, + + // Adding Toggle HTML based on the work by @jd0000, but cleaned up a little to work in this context. + toggleHtmlEdit = function() { + if ( $(editor).data("wysiwyg-html-mode") !== true ) { + var oContent = $(editor).html(); + var editorPre = $( "
" );
+                	$(editorPre).append( document.createTextNode( oContent ) );
+                	$(editorPre).attr('contenteditable',true);
+                	$(editor).html(' ');
+                	$(editor).append($(editorPre));
+                    $(editor).attr('contenteditable', false);
+                    $(editor).data("wysiwyg-html-mode", true);
+                    $(editorPre).focus();
+                }
+                else {
+                	$(editor).html($(editor).text());
+                	$(editor).attr('contenteditable',true);
+                	$(editor).data('wysiwyg-html-mode',false);
+                    $(editor).focus();
+                }
+            },
+
+			insertFiles = function (files) {
+				editor.focus();
+				$.each(files, function (idx, fileInfo) {
+					if (/^image\//.test(fileInfo.type)) {
+						$.when(readFileIntoDataUrl(fileInfo)).done(function (dataUrl) {
+							execCommand('insertimage', dataUrl);
+							editor.trigger('image-inserted');
+						}).fail(function (e) {
+							options.fileUploadError("file-reader", e);
+						});
+					} else {
+						options.fileUploadError("unsupported-file-type", fileInfo.type);
+					}
+				});
+			},
+			markSelection = function (input, color) {
+				restoreSelection();
+				if (document.queryCommandSupported('hiliteColor')) {
+					document.execCommand('hiliteColor', false, color || 'transparent');
+				}
+				saveSelection();
+				input.data(options.selectionMarker, color);
+			},
+			bindToolbar = function (toolbar, options) {
+				toolbar.find(toolbarBtnSelector).click(function () {
+					restoreSelection();
+					editor.focus();
+
+                    if ($(this).data(options.commandRole) === 'html') {
+                        toggleHtmlEdit();
+                    }
+                    else {
+                    	execCommand($(this).data(options.commandRole));
+                    }
+					saveSelection();
+				});
+				toolbar.find('[data-toggle=dropdown]').click(restoreSelection);
+
+				toolbar.find('input[type=text][data-' + options.commandRole + ']').on('webkitspeechchange change', function () {
+					var newValue = this.value; /* ugly but prevents fake double-calls due to selection restoration */
+					this.value = '';
+					restoreSelection();
+					if (newValue) {
+						editor.focus();
+						execCommand($(this).data(options.commandRole), newValue);
+					}
+					saveSelection();
+				}).on('focus', function () {
+					var input = $(this);
+					if (!input.data(options.selectionMarker)) {
+						markSelection(input, options.selectionColor);
+						input.focus();
+					}
+				}).on('blur', function () {
+					var input = $(this);
+					if (input.data(options.selectionMarker)) {
+						markSelection(input, false);
+					}
+				});
+				toolbar.find('input[type=file][data-' + options.commandRole + ']').change(function () {
+					restoreSelection();
+					if (this.type === 'file' && this.files && this.files.length > 0) {
+						insertFiles(this.files);
+					}
+					saveSelection();
+					this.value = '';
+				});
+			},
+			initFileDrops = function () {
+				editor.on('dragenter dragover', false)
+					.on('drop', function (e) {
+						var dataTransfer = e.originalEvent.dataTransfer;
+						e.stopPropagation();
+						e.preventDefault();
+						if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
+							insertFiles(dataTransfer.files);
+						}
+					});
+			};
+		options = $.extend(true, {}, $.fn.wysiwyg.defaults, userOptions);
+		toolbarBtnSelector = 'a[data-' + options.commandRole + '],button[data-' + options.commandRole + '],input[type=button][data-' + options.commandRole + ']';
+		bindHotkeys(options.hotKeys);
+
+		// Support placeholder attribute on the DIV
+		if ($(this).attr('placeholder') !== '') {
+			$(this).addClass('placeholderText');
+			$(this).html($(this).attr('placeholder'));
+			$(this).bind('focus',function() {
+				if ( $(this).attr('placeholder') !== '' && $(this).text() === $(this).attr('placeholder') ) {
+					$(this).removeClass('placeholderText');
+					$(this).html('');
+				}
+			});
+			$(this).bind('blur',function() {
+				if ( $(this).attr('placeholder') !== '' && $(this).text() === '' ) {
+					$(this).addClass('placeholderText');
+					$(this).html($(this).attr('placeholder'));
+				}
+			});
+		}
+
+		if (options.dragAndDropImages) {
+			initFileDrops();
+		}
+		bindToolbar($(options.toolbarSelector), options);
+		editor.attr('contenteditable', true)
+			.on('mouseup keyup mouseout', function () {
+				saveSelection();
+				updateToolbar();
+			});
+		$(window).bind('touchend', function (e) {
+			var isInside = (editor.is(e.target) || editor.has(e.target).length > 0),
+				currentRange = getCurrentRange(),
+				clear = currentRange && (currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset);
+			if (!clear || isInside) {
+				saveSelection();
+				updateToolbar();
+			}
+		});
+		return this;
+	};
+	$.fn.wysiwyg.defaults = {
+		hotKeys: {
+			'Ctrl+b meta+b': 'bold',
+			'Ctrl+i meta+i': 'italic',
+			'Ctrl+u meta+u': 'underline',
+			'Ctrl+z': 'undo',
+			'Ctrl+y meta+y meta+shift+z': 'redo',
+			'Ctrl+l meta+l': 'justifyleft',
+			'Ctrl+r meta+r': 'justifyright',
+			'Ctrl+e meta+e': 'justifycenter',
+			'Ctrl+j meta+j': 'justifyfull',
+			'Shift+tab': 'outdent',
+			'tab': 'indent'
+		},
+		toolbarSelector: '[data-role=editor-toolbar]',
+		commandRole: 'edit',
+		activeToolbarClass: 'btn-info',
+		selectionMarker: 'edit-focus-marker',
+		selectionColor: 'darkgrey',
+		dragAndDropImages: true,
+		keypressTimeout: 200,
+		fileUploadError: function (reason, detail) { console.log("File upload error", reason, detail); }
+	};
+}(window.jQuery));
diff --git a/public/theme/bootstrap/.bower.json b/public/theme/bootstrap/.bower.json
new file mode 100644
index 0000000..0ee6a33
--- /dev/null
+++ b/public/theme/bootstrap/.bower.json
@@ -0,0 +1,44 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "keywords": [
+    "css",
+    "js",
+    "less",
+    "mobile-first",
+    "responsive",
+    "front-end",
+    "framework",
+    "web"
+  ],
+  "homepage": "http://getbootstrap.com",
+  "license": "MIT",
+  "moduleType": "globals",
+  "main": [
+    "less/bootstrap.less",
+    "dist/js/bootstrap.js"
+  ],
+  "ignore": [
+    "/.*",
+    "_config.yml",
+    "CNAME",
+    "composer.json",
+    "CONTRIBUTING.md",
+    "docs",
+    "js/tests",
+    "test-infra"
+  ],
+  "dependencies": {
+    "jquery": "1.9.1 - 2"
+  },
+  "version": "3.3.6",
+  "_release": "3.3.6",
+  "_resolution": {
+    "type": "version",
+    "tag": "v3.3.6",
+    "commit": "81df608a40bf0629a1dc08e584849bb1e43e0b7a"
+  },
+  "_source": "https://github.com/twbs/bootstrap.git",
+  "_target": "^3.3.6",
+  "_originalSource": "bootstrap"
+}
\ No newline at end of file
diff --git a/public/theme/bootstrap/CHANGELOG.md b/public/theme/bootstrap/CHANGELOG.md
new file mode 100644
index 0000000..b25f838
--- /dev/null
+++ b/public/theme/bootstrap/CHANGELOG.md
@@ -0,0 +1,5 @@
+Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
+
+See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
+
+Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
diff --git a/public/theme/bootstrap/Gruntfile.js b/public/theme/bootstrap/Gruntfile.js
new file mode 100644
index 0000000..4b3e122
--- /dev/null
+++ b/public/theme/bootstrap/Gruntfile.js
@@ -0,0 +1,533 @@
+/*!
+ * Bootstrap's Gruntfile
+ * http://getbootstrap.com
+ * Copyright 2013-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+module.exports = function (grunt) {
+  'use strict';
+
+  // Force use of Unix newlines
+  grunt.util.linefeed = '\n';
+
+  RegExp.quote = function (string) {
+    return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
+  };
+
+  var fs = require('fs');
+  var path = require('path');
+  var npmShrinkwrap = require('npm-shrinkwrap');
+  var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
+  var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
+  var getLessVarsData = function () {
+    var filePath = path.join(__dirname, 'less/variables.less');
+    var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
+    var parser = new BsLessdocParser(fileContent);
+    return { sections: parser.parseFile() };
+  };
+  var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
+  var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
+  var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' });
+
+  Object.keys(configBridge.paths).forEach(function (key) {
+    configBridge.paths[key].forEach(function (val, i, arr) {
+      arr[i] = path.join('./docs/assets', val);
+    });
+  });
+
+  // Project configuration.
+  grunt.initConfig({
+
+    // Metadata.
+    pkg: grunt.file.readJSON('package.json'),
+    banner: '/*!\n' +
+            ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
+            ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
+            ' * Licensed under the <%= pkg.license %> license\n' +
+            ' */\n',
+    jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
+    jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
+
+    // Task configuration.
+    clean: {
+      dist: 'dist',
+      docs: 'docs/dist'
+    },
+
+    jshint: {
+      options: {
+        jshintrc: 'js/.jshintrc'
+      },
+      grunt: {
+        options: {
+          jshintrc: 'grunt/.jshintrc'
+        },
+        src: ['Gruntfile.js', 'package.js', 'grunt/*.js']
+      },
+      core: {
+        src: 'js/*.js'
+      },
+      test: {
+        options: {
+          jshintrc: 'js/tests/unit/.jshintrc'
+        },
+        src: 'js/tests/unit/*.js'
+      },
+      assets: {
+        src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
+      }
+    },
+
+    jscs: {
+      options: {
+        config: 'js/.jscsrc'
+      },
+      grunt: {
+        src: '<%= jshint.grunt.src %>'
+      },
+      core: {
+        src: '<%= jshint.core.src %>'
+      },
+      test: {
+        src: '<%= jshint.test.src %>'
+      },
+      assets: {
+        options: {
+          requireCamelCaseOrUpperCaseIdentifiers: null
+        },
+        src: '<%= jshint.assets.src %>'
+      }
+    },
+
+    concat: {
+      options: {
+        banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
+        stripBanners: false
+      },
+      bootstrap: {
+        src: [
+          'js/transition.js',
+          'js/alert.js',
+          'js/button.js',
+          'js/carousel.js',
+          'js/collapse.js',
+          'js/dropdown.js',
+          'js/modal.js',
+          'js/tooltip.js',
+          'js/popover.js',
+          'js/scrollspy.js',
+          'js/tab.js',
+          'js/affix.js'
+        ],
+        dest: 'dist/js/<%= pkg.name %>.js'
+      }
+    },
+
+    uglify: {
+      options: {
+        compress: {
+          warnings: false
+        },
+        mangle: true,
+        preserveComments: 'some'
+      },
+      core: {
+        src: '<%= concat.bootstrap.dest %>',
+        dest: 'dist/js/<%= pkg.name %>.min.js'
+      },
+      customize: {
+        src: configBridge.paths.customizerJs,
+        dest: 'docs/assets/js/customize.min.js'
+      },
+      docsJs: {
+        src: configBridge.paths.docsJs,
+        dest: 'docs/assets/js/docs.min.js'
+      }
+    },
+
+    qunit: {
+      options: {
+        inject: 'js/tests/unit/phantom.js'
+      },
+      files: 'js/tests/index.html'
+    },
+
+    less: {
+      compileCore: {
+        options: {
+          strictMath: true,
+          sourceMap: true,
+          outputSourceFiles: true,
+          sourceMapURL: '<%= pkg.name %>.css.map',
+          sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
+        },
+        src: 'less/bootstrap.less',
+        dest: 'dist/css/<%= pkg.name %>.css'
+      },
+      compileTheme: {
+        options: {
+          strictMath: true,
+          sourceMap: true,
+          outputSourceFiles: true,
+          sourceMapURL: '<%= pkg.name %>-theme.css.map',
+          sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
+        },
+        src: 'less/theme.less',
+        dest: 'dist/css/<%= pkg.name %>-theme.css'
+      }
+    },
+
+    autoprefixer: {
+      options: {
+        browsers: configBridge.config.autoprefixerBrowsers
+      },
+      core: {
+        options: {
+          map: true
+        },
+        src: 'dist/css/<%= pkg.name %>.css'
+      },
+      theme: {
+        options: {
+          map: true
+        },
+        src: 'dist/css/<%= pkg.name %>-theme.css'
+      },
+      docs: {
+        src: ['docs/assets/css/src/docs.css']
+      },
+      examples: {
+        expand: true,
+        cwd: 'docs/examples/',
+        src: ['**/*.css'],
+        dest: 'docs/examples/'
+      }
+    },
+
+    csslint: {
+      options: {
+        csslintrc: 'less/.csslintrc'
+      },
+      dist: [
+        'dist/css/bootstrap.css',
+        'dist/css/bootstrap-theme.css'
+      ],
+      examples: [
+        'docs/examples/**/*.css'
+      ],
+      docs: {
+        options: {
+          ids: false,
+          'overqualified-elements': false
+        },
+        src: 'docs/assets/css/src/docs.css'
+      }
+    },
+
+    cssmin: {
+      options: {
+        // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released
+        //    and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
+        compatibility: 'ie8',
+        keepSpecialComments: '*',
+        sourceMap: true,
+        advanced: false
+      },
+      minifyCore: {
+        src: 'dist/css/<%= pkg.name %>.css',
+        dest: 'dist/css/<%= pkg.name %>.min.css'
+      },
+      minifyTheme: {
+        src: 'dist/css/<%= pkg.name %>-theme.css',
+        dest: 'dist/css/<%= pkg.name %>-theme.min.css'
+      },
+      docs: {
+        src: [
+          'docs/assets/css/ie10-viewport-bug-workaround.css',
+          'docs/assets/css/src/pygments-manni.css',
+          'docs/assets/css/src/docs.css'
+        ],
+        dest: 'docs/assets/css/docs.min.css'
+      }
+    },
+
+    csscomb: {
+      options: {
+        config: 'less/.csscomb.json'
+      },
+      dist: {
+        expand: true,
+        cwd: 'dist/css/',
+        src: ['*.css', '!*.min.css'],
+        dest: 'dist/css/'
+      },
+      examples: {
+        expand: true,
+        cwd: 'docs/examples/',
+        src: '**/*.css',
+        dest: 'docs/examples/'
+      },
+      docs: {
+        src: 'docs/assets/css/src/docs.css',
+        dest: 'docs/assets/css/src/docs.css'
+      }
+    },
+
+    copy: {
+      fonts: {
+        expand: true,
+        src: 'fonts/*',
+        dest: 'dist/'
+      },
+      docs: {
+        expand: true,
+        cwd: 'dist/',
+        src: [
+          '**/*'
+        ],
+        dest: 'docs/dist/'
+      }
+    },
+
+    connect: {
+      server: {
+        options: {
+          port: 3000,
+          base: '.'
+        }
+      }
+    },
+
+    jekyll: {
+      options: {
+        config: '_config.yml'
+      },
+      docs: {},
+      github: {
+        options: {
+          raw: 'github: true'
+        }
+      }
+    },
+
+    htmlmin: {
+      dist: {
+        options: {
+          collapseWhitespace: true,
+          conservativeCollapse: true,
+          minifyCSS: true,
+          minifyJS: true,
+          removeAttributeQuotes: true,
+          removeComments: true
+        },
+        expand: true,
+        cwd: '_gh_pages',
+        dest: '_gh_pages',
+        src: [
+          '**/*.html',
+          '!examples/**/*.html'
+        ]
+      }
+    },
+
+    jade: {
+      options: {
+        pretty: true,
+        data: getLessVarsData
+      },
+      customizerVars: {
+        src: 'docs/_jade/customizer-variables.jade',
+        dest: 'docs/_includes/customizer-variables.html'
+      },
+      customizerNav: {
+        src: 'docs/_jade/customizer-nav.jade',
+        dest: 'docs/_includes/nav/customize.html'
+      }
+    },
+
+    htmllint: {
+      options: {
+        ignore: [
+          'Attribute "autocomplete" not allowed on element "button" at this point.',
+          'Attribute "autocomplete" is only allowed when the input type is "color", "date", "datetime", "datetime-local", "email", "month", "number", "password", "range", "search", "tel", "text", "time", "url", or "week".',
+          'Element "img" is missing required attribute "src".'
+        ]
+      },
+      src: '_gh_pages/**/*.html'
+    },
+
+    watch: {
+      src: {
+        files: '<%= jshint.core.src %>',
+        tasks: ['jshint:core', 'qunit', 'concat']
+      },
+      test: {
+        files: '<%= jshint.test.src %>',
+        tasks: ['jshint:test', 'qunit']
+      },
+      less: {
+        files: 'less/**/*.less',
+        tasks: 'less'
+      }
+    },
+
+    sed: {
+      versionNumber: {
+        pattern: (function () {
+          var old = grunt.option('oldver');
+          return old ? RegExp.quote(old) : old;
+        })(),
+        replacement: grunt.option('newver'),
+        exclude: [
+          'dist/fonts',
+          'docs/assets',
+          'fonts',
+          'js/tests/vendor',
+          'node_modules',
+          'test-infra'
+        ],
+        recursive: true
+      }
+    },
+
+    'saucelabs-qunit': {
+      all: {
+        options: {
+          build: process.env.TRAVIS_JOB_ID,
+          throttled: 10,
+          maxRetries: 3,
+          maxPollRetries: 4,
+          urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
+          browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
+        }
+      }
+    },
+
+    exec: {
+      npmUpdate: {
+        command: 'npm update'
+      }
+    },
+
+    compress: {
+      main: {
+        options: {
+          archive: 'bootstrap-<%= pkg.version %>-dist.zip',
+          mode: 'zip',
+          level: 9,
+          pretty: true
+        },
+        files: [
+          {
+            expand: true,
+            cwd: 'dist/',
+            src: ['**'],
+            dest: 'bootstrap-<%= pkg.version %>-dist'
+          }
+        ]
+      }
+    }
+
+  });
+
+
+  // These plugins provide necessary tasks.
+  require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
+  require('time-grunt')(grunt);
+
+  // Docs HTML validation task
+  grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']);
+
+  var runSubset = function (subset) {
+    return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
+  };
+  var isUndefOrNonZero = function (val) {
+    return val === undefined || val !== '0';
+  };
+
+  // Test task.
+  var testSubtasks = [];
+  // Skip core tests if running a different subset of the test suite
+  if (runSubset('core') &&
+      // Skip core tests if this is a Savage build
+      process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
+    testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
+  }
+  // Skip HTML validation if running a different subset of the test suite
+  if (runSubset('validate-html') &&
+      // Skip HTML5 validator on Travis when [skip validator] is in the commit message
+      isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
+    testSubtasks.push('validate-html');
+  }
+  // Only run Sauce Labs tests if there's a Sauce access key
+  if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
+      // Skip Sauce if running a different subset of the test suite
+      runSubset('sauce-js-unit') &&
+      // Skip Sauce on Travis when [skip sauce] is in the commit message
+      isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
+    testSubtasks.push('connect');
+    testSubtasks.push('saucelabs-qunit');
+  }
+  grunt.registerTask('test', testSubtasks);
+  grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
+
+  // JS distribution task.
+  grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
+
+  // CSS distribution task.
+  grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
+  grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
+
+  // Full distribution task.
+  grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
+
+  // Default task.
+  grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
+
+  // Version numbering task.
+  // grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
+  // This can be overzealous, so its changes should always be manually reviewed!
+  grunt.registerTask('change-version-number', 'sed');
+
+  grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
+
+  // task for building customizer
+  grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
+  grunt.registerTask('build-customizer-html', 'jade');
+  grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
+    var banner = grunt.template.process('<%= banner %>');
+    generateRawFiles(grunt, banner);
+  });
+
+  grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
+    var srcFiles = grunt.config.get('concat.bootstrap.src');
+    var destFilepath = 'dist/js/npm.js';
+    generateCommonJSModule(grunt, srcFiles, destFilepath);
+  });
+
+  // Docs task.
+  grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']);
+  grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
+  grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
+  grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
+  grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
+
+  grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']);
+
+  // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
+  // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
+  grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
+  grunt.registerTask('_update-shrinkwrap', function () {
+    var done = this.async();
+    npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
+      if (err) {
+        grunt.fail.warn(err);
+      }
+      var dest = 'test-infra/npm-shrinkwrap.json';
+      fs.renameSync('npm-shrinkwrap.json', dest);
+      grunt.log.writeln('File ' + dest.cyan + ' updated.');
+      done();
+    });
+  });
+};
diff --git a/public/theme/bootstrap/LICENSE b/public/theme/bootstrap/LICENSE
new file mode 100644
index 0000000..f4c52d6
--- /dev/null
+++ b/public/theme/bootstrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2015 Twitter, Inc
+
+Permission 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:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE 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.
diff --git a/public/theme/bootstrap/README.md b/public/theme/bootstrap/README.md
new file mode 100644
index 0000000..c2a887b
--- /dev/null
+++ b/public/theme/bootstrap/README.md
@@ -0,0 +1,139 @@
+# [Bootstrap](http://getbootstrap.com)
+
+[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com)
+![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
+[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
+[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
+[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
+[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
+[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
+
+Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
+
+To get started, check out !
+
+
+## Table of contents
+
+* [Quick start](#quick-start)
+* [Bugs and feature requests](#bugs-and-feature-requests)
+* [Documentation](#documentation)
+* [Contributing](#contributing)
+* [Community](#community)
+* [Versioning](#versioning)
+* [Creators](#creators)
+* [Copyright and license](#copyright-and-license)
+
+
+## Quick start
+
+Several quick start options are available:
+
+* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.6.zip).
+* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
+* Install with [Bower](http://bower.io): `bower install bootstrap`.
+* Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
+* Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`.
+* Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`.
+
+Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
+
+### What's included
+
+Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
+
+```
+bootstrap/
+├── css/
+│   ├── bootstrap.css
+│   ├── bootstrap.css.map
+│   ├── bootstrap.min.css
+│   ├── bootstrap.min.css.map
+│   ├── bootstrap-theme.css
+│   ├── bootstrap-theme.css.map
+│   ├── bootstrap-theme.min.css
+│   └── bootstrap-theme.min.css.map
+├── js/
+│   ├── bootstrap.js
+│   └── bootstrap.min.js
+└── fonts/
+    ├── glyphicons-halflings-regular.eot
+    ├── glyphicons-halflings-regular.svg
+    ├── glyphicons-halflings-regular.ttf
+    ├── glyphicons-halflings-regular.woff
+    └── glyphicons-halflings-regular.woff2
+```
+
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
+
+
+## Bugs and feature requests
+
+Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
+
+
+## Documentation
+
+Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at . The docs may also be run locally.
+
+### Running documentation locally
+
+1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v3.0.x).
+   **Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
+2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
+3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
+4. Open `http://localhost:9001` in your browser, and voilà.
+
+Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
+
+### Documentation for previous releases
+
+Documentation for v2.3.2 has been made available for the time being at  while folks transition to Bootstrap 3.
+
+[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
+
+
+## Contributing
+
+Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
+
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at .
+
+
+## Community
+
+Get updates on Bootstrap's development and chat with the project maintainers and community members.
+
+* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
+* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
+* Join [the official Slack room](https://bootstrap-slack.herokuapp.com).
+* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
+* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
+* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
+
+
+## Versioning
+
+For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
+
+See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
+
+
+## Creators
+
+**Mark Otto**
+
+* 
+* 
+
+**Jacob Thornton**
+
+* 
+* 
+
+
+## Copyright and license
+
+Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
diff --git a/public/theme/bootstrap/bower.json b/public/theme/bootstrap/bower.json
new file mode 100644
index 0000000..58ae093
--- /dev/null
+++ b/public/theme/bootstrap/bower.json
@@ -0,0 +1,34 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "keywords": [
+    "css",
+    "js",
+    "less",
+    "mobile-first",
+    "responsive",
+    "front-end",
+    "framework",
+    "web"
+  ],
+  "homepage": "http://getbootstrap.com",
+  "license": "MIT",
+  "moduleType": "globals",
+  "main": [
+    "less/bootstrap.less",
+    "dist/js/bootstrap.js"
+  ],
+  "ignore": [
+    "/.*",
+    "_config.yml",
+    "CNAME",
+    "composer.json",
+    "CONTRIBUTING.md",
+    "docs",
+    "js/tests",
+    "test-infra"
+  ],
+  "dependencies": {
+    "jquery": "1.9.1 - 2"
+  }
+}
diff --git a/public/theme/bootstrap/dist/css/bootstrap-theme.css b/public/theme/bootstrap/dist/css/bootstrap-theme.css
new file mode 100644
index 0000000..31d8882
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap-theme.css
@@ -0,0 +1,587 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-default.disabled,
+.btn-primary.disabled,
+.btn-success.disabled,
+.btn-info.disabled,
+.btn-warning.disabled,
+.btn-danger.disabled,
+.btn-default[disabled],
+.btn-primary[disabled],
+.btn-success[disabled],
+.btn-info[disabled],
+.btn-warning[disabled],
+.btn-danger[disabled],
+fieldset[disabled] .btn-default,
+fieldset[disabled] .btn-primary,
+fieldset[disabled] .btn-success,
+fieldset[disabled] .btn-info,
+fieldset[disabled] .btn-warning,
+fieldset[disabled] .btn-danger {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-default .badge,
+.btn-primary .badge,
+.btn-success .badge,
+.btn-info .badge,
+.btn-warning .badge,
+.btn-danger .badge {
+  text-shadow: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+}
+.btn-default {
+  text-shadow: 0 1px 0 #fff;
+  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
+  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #dbdbdb;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+  background-color: #e0e0e0;
+  background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+  background-color: #e0e0e0;
+  border-color: #dbdbdb;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  background-color: #e0e0e0;
+  background-image: none;
+}
+.btn-primary {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #245580;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+  background-color: #265a88;
+  background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #265a88;
+  border-color: #245580;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  background-color: #265a88;
+  background-image: none;
+}
+.btn-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+  background-color: #419641;
+  background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #419641;
+  border-color: #3e8f3e;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  background-color: #419641;
+  background-image: none;
+}
+.btn-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+  background-color: #2aabd2;
+  background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #2aabd2;
+  border-color: #28a4c9;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  background-color: #2aabd2;
+  background-image: none;
+}
+.btn-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+  background-color: #eb9316;
+  background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #eb9316;
+  border-color: #e38d13;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  background-color: #eb9316;
+  background-image: none;
+}
+.btn-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+  background-color: #c12e2a;
+  background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #c12e2a;
+  border-color: #b92c28;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #c12e2a;
+  background-image: none;
+}
+.thumbnail,
+.img-thumbnail {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  background-color: #e8e8e8;
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  background-color: #2e6da4;
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+  background-repeat: repeat-x;
+}
+.navbar-default {
+  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
+  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
+  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
+  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
+  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+@media (max-width: 767px) {
+  .navbar .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+    background-repeat: repeat-x;
+  }
+}
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #b2dba1;
+}
+.alert-info {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #9acfea;
+}
+.alert-warning {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #f5e79e;
+}
+.alert-danger {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dca7a7;
+}
+.progress {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-striped {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+}
+.list-group {
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 #286090;
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #2b669a;
+}
+.list-group-item.active .badge,
+.list-group-item.active:hover .badge,
+.list-group-item.active:focus .badge {
+  text-shadow: none;
+}
+.panel {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.well {
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
+  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dcdcdc;
+  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/public/theme/bootstrap/dist/css/bootstrap-theme.css.map b/public/theme/bootstrap/dist/css/bootstrap-theme.css.map
new file mode 100644
index 0000000..d876f60
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;GAIG;ACeH;;;;;;EAME,yCAAA;EC2CA,4FAAA;EACQ,oFAAA;CFvDT;ACgBC;;;;;;;;;;;;ECsCA,yDAAA;EACQ,iDAAA;CFxCT;ACMC;;;;;;;;;;;;;;;;;;ECiCA,yBAAA;EACQ,iBAAA;CFnBT;AC/BD;;;;;;EAuBI,kBAAA;CDgBH;ACyBC;;EAEE,uBAAA;CDvBH;AC4BD;EErEI,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;EAuC2C,0BAAA;EAA2B,mBAAA;CDjBvE;ACpBC;;EAEE,0BAAA;EACA,6BAAA;CDsBH;ACnBC;;EAEE,0BAAA;EACA,sBAAA;CDqBH;ACfG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6BL;ACbD;EEtEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8DD;AC5DC;;EAEE,0BAAA;EACA,6BAAA;CD8DH;AC3DC;;EAEE,0BAAA;EACA,sBAAA;CD6DH;ACvDG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqEL;ACpDD;EEvEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsGD;ACpGC;;EAEE,0BAAA;EACA,6BAAA;CDsGH;ACnGC;;EAEE,0BAAA;EACA,sBAAA;CDqGH;AC/FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6GL;AC3FD;EExEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ID;AC5IC;;EAEE,0BAAA;EACA,6BAAA;CD8IH;AC3IC;;EAEE,0BAAA;EACA,sBAAA;CD6IH;ACvIG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqJL;AClID;EEzEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsLD;ACpLC;;EAEE,0BAAA;EACA,6BAAA;CDsLH;ACnLC;;EAEE,0BAAA;EACA,sBAAA;CDqLH;AC/KG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6LL;ACzKD;EE1EI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ND;AC5NC;;EAEE,0BAAA;EACA,6BAAA;CD8NH;AC3NC;;EAEE,0BAAA;EACA,sBAAA;CD6NH;ACvNG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqOL;AC1MD;;EClCE,mDAAA;EACQ,2CAAA;CFgPT;ACrMD;;EE3FI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF0FF,0BAAA;CD2MD;ACzMD;;;EEhGI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFgGF,0BAAA;CD+MD;ACtMD;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EH+HA,mBAAA;ECjEA,4FAAA;EACQ,oFAAA;CF8QT;ACjND;;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,yDAAA;EACQ,iDAAA;CFwRT;AC9MD;;EAEE,+CAAA;CDgND;AC5MD;EEhII,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EHkJA,mBAAA;CDkND;ACrND;;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,wDAAA;EACQ,gDAAA;CF+ST;AC/ND;;EAYI,0CAAA;CDuNH;AClND;;;EAGE,iBAAA;CDoND;AC/LD;EAfI;;;IAGE,YAAA;IE7JF,yEAAA;IACA,oEAAA;IACA,8FAAA;IAAA,uEAAA;IACA,4BAAA;IACA,uHAAA;GH+WD;CACF;AC3MD;EACE,8CAAA;EC3HA,2FAAA;EACQ,mFAAA;CFyUT;ACnMD;EEtLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+MD;AC1MD;EEvLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuND;ACjND;EExLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+ND;ACxND;EEzLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuOD;ACxND;EEjMI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH4ZH;ACrND;EE3MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHmaH;AC3ND;EE5MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH0aH;ACjOD;EE7MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHibH;ACvOD;EE9MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHwbH;AC7OD;EE/MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH+bH;AChPD;EElLI,8MAAA;EACA,yMAAA;EACA,sMAAA;CHqaH;AC5OD;EACE,mBAAA;EC9KA,mDAAA;EACQ,2CAAA;CF6ZT;AC7OD;;;EAGE,8BAAA;EEnOE,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFiOF,sBAAA;CDmPD;ACxPD;;;EAQI,kBAAA;CDqPH;AC3OD;ECnME,kDAAA;EACQ,0CAAA;CFibT;ACrOD;EE5PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHoeH;AC3OD;EE7PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH2eH;ACjPD;EE9PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHkfH;ACvPD;EE/PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHyfH;AC7PD;EEhQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHggBH;ACnQD;EEjQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHugBH;ACnQD;EExQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFsQF,sBAAA;EC3NA,0FAAA;EACQ,kFAAA;CFqeT","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    .box-shadow(none);\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: darken(@btn-color, 12%);\n      background-image: none;\n    }\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n  border-radius: @navbar-border-radius;\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file
diff --git a/public/theme/bootstrap/dist/css/bootstrap-theme.min.css b/public/theme/bootstrap/dist/css/bootstrap-theme.min.css
new file mode 100644
index 0000000..5e39401
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap-theme.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-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);background-image:-o-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);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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
+/*# sourceMappingURL=bootstrap-theme.min.css.map */
\ No newline at end of file
diff --git a/public/theme/bootstrap/dist/css/bootstrap-theme.min.css.map b/public/theme/bootstrap/dist/css/bootstrap-theme.min.css.map
new file mode 100644
index 0000000..94813e9
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap-theme.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":";;;;AAmBA,YAAA,aAAA,UAAA,aAAA,aAAA,aAME,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBDvCR,mBAAA,mBAAA,oBAAA,oBAAA,iBAAA,iBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBCsCA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBDlCR,qBAAA,sBAAA,sBAAA,uBAAA,mBAAA,oBAAA,sBAAA,uBAAA,sBAAA,uBAAA,sBAAA,uBAAA,+BAAA,gCAAA,6BAAA,gCAAA,gCAAA,gCCiCA,mBAAA,KACQ,WAAA,KDlDV,mBAAA,oBAAA,iBAAA,oBAAA,oBAAA,oBAuBI,YAAA,KAyCF,YAAA,YAEE,iBAAA,KAKJ,aErEI,YAAA,EAAA,IAAA,EAAA,KACA,iBAAA,iDACA,iBAAA,4CAAA,iBAAA,qEAEA,iBAAA,+CCnBF,OAAA,+GH4CA,OAAA,0DACA,kBAAA,SAuC2C,aAAA,QAA2B,aAAA,KArCtE,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAgBN,aEtEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAiBN,aEvEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAkBN,UExEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,gBAAA,gBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,iBAAA,iBAEE,iBAAA,QACA,aAAA,QAMA,mBAAA,0BAAA,yBAAA,0BAAA,yBAAA,yBAAA,oBAAA,2BAAA,0BAAA,2BAAA,0BAAA,0BAAA,6BAAA,oCAAA,mCAAA,oCAAA,mCAAA,mCAME,iBAAA,QACA,iBAAA,KAmBN,aEzEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAoBN,YE1EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,kBAAA,kBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAMA,qBAAA,4BAAA,2BAAA,4BAAA,2BAAA,2BAAA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,+BAAA,sCAAA,qCAAA,sCAAA,qCAAA,qCAME,iBAAA,QACA,iBAAA,KA2BN,eAAA,WClCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBD2CV,0BAAA,0BE3FI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GF0FF,kBAAA,SAEF,yBAAA,+BAAA,+BEhGI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GFgGF,kBAAA,SASF,gBE7GI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SH+HA,cAAA,ICjEA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBD6DV,sCAAA,oCE7GI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD0EV,cAAA,iBAEE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEhII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SHkJA,cAAA,IAHF,sCAAA,oCEhII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDgFV,8BAAA,iCAYI,YAAA,EAAA,KAAA,EAAA,gBAKJ,qBAAA,kBAAA,mBAGE,cAAA,EAqBF,yBAfI,mDAAA,yDAAA,yDAGE,MAAA,KE7JF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UFqKJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC3HA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBDsIV,eEtLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAKF,YEvLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAMF,eExLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAOF,cEzLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAeF,UEjMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuMJ,cE3MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFwMJ,sBE5MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyMJ,mBE7MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0MJ,sBE9MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2MJ,qBE/MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,sBElLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKFyLJ,YACE,cAAA,IC9KA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDgLV,wBAAA,8BAAA,8BAGE,YAAA,EAAA,KAAA,EAAA,QEnOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiOF,aAAA,QALF,+BAAA,qCAAA,qCAQI,YAAA,KAUJ,OCnME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBD4MV,8BE5PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyPJ,8BE7PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0PJ,8BE9PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2PJ,2BE/PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4PJ,8BEhQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6PJ,6BEjQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoQJ,MExQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsQF,aAAA,QC3NA,mBAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    .box-shadow(none);\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: darken(@btn-color, 12%);\n      background-image: none;\n    }\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n  border-radius: @navbar-border-radius;\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file
diff --git a/public/theme/bootstrap/dist/css/bootstrap.css b/public/theme/bootstrap/dist/css/bootstrap.css
new file mode 100644
index 0000000..6167622
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap.css
@@ -0,0 +1,6757 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background-color: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  .navbar {
+    display: none;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\002a";
+}
+.glyphicon-plus:before {
+  content: "\002b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.glyphicon-cd:before {
+  content: "\e201";
+}
+.glyphicon-save-file:before {
+  content: "\e202";
+}
+.glyphicon-open-file:before {
+  content: "\e203";
+}
+.glyphicon-level-up:before {
+  content: "\e204";
+}
+.glyphicon-copy:before {
+  content: "\e205";
+}
+.glyphicon-paste:before {
+  content: "\e206";
+}
+.glyphicon-alert:before {
+  content: "\e209";
+}
+.glyphicon-equalizer:before {
+  content: "\e210";
+}
+.glyphicon-king:before {
+  content: "\e211";
+}
+.glyphicon-queen:before {
+  content: "\e212";
+}
+.glyphicon-pawn:before {
+  content: "\e213";
+}
+.glyphicon-bishop:before {
+  content: "\e214";
+}
+.glyphicon-knight:before {
+  content: "\e215";
+}
+.glyphicon-baby-formula:before {
+  content: "\e216";
+}
+.glyphicon-tent:before {
+  content: "\26fa";
+}
+.glyphicon-blackboard:before {
+  content: "\e218";
+}
+.glyphicon-bed:before {
+  content: "\e219";
+}
+.glyphicon-apple:before {
+  content: "\f8ff";
+}
+.glyphicon-erase:before {
+  content: "\e221";
+}
+.glyphicon-hourglass:before {
+  content: "\231b";
+}
+.glyphicon-lamp:before {
+  content: "\e223";
+}
+.glyphicon-duplicate:before {
+  content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+  content: "\e225";
+}
+.glyphicon-scissors:before {
+  content: "\e226";
+}
+.glyphicon-bitcoin:before {
+  content: "\e227";
+}
+.glyphicon-btc:before {
+  content: "\e227";
+}
+.glyphicon-xbt:before {
+  content: "\e227";
+}
+.glyphicon-yen:before {
+  content: "\00a5";
+}
+.glyphicon-jpy:before {
+  content: "\00a5";
+}
+.glyphicon-ruble:before {
+  content: "\20bd";
+}
+.glyphicon-rub:before {
+  content: "\20bd";
+}
+.glyphicon-scale:before {
+  content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+  content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+  content: "\e232";
+}
+.glyphicon-education:before {
+  content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+  content: "\e234";
+}
+.glyphicon-option-vertical:before {
+  content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+  content: "\e236";
+}
+.glyphicon-modal-window:before {
+  content: "\e237";
+}
+.glyphicon-oil:before {
+  content: "\e238";
+}
+.glyphicon-grain:before {
+  content: "\e239";
+}
+.glyphicon-sunglasses:before {
+  content: "\e240";
+}
+.glyphicon-text-size:before {
+  content: "\e241";
+}
+.glyphicon-text-color:before {
+  content: "\e242";
+}
+.glyphicon-text-background:before {
+  content: "\e243";
+}
+.glyphicon-object-align-top:before {
+  content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+  content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+  content: "\e246";
+}
+.glyphicon-object-align-left:before {
+  content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+  content: "\e248";
+}
+.glyphicon-object-align-right:before {
+  content: "\e249";
+}
+.glyphicon-triangle-right:before {
+  content: "\e250";
+}
+.glyphicon-triangle-left:before {
+  content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+  content: "\e252";
+}
+.glyphicon-triangle-top:before {
+  content: "\e253";
+}
+.glyphicon-console:before {
+  content: "\e254";
+}
+.glyphicon-superscript:before {
+  content: "\e255";
+}
+.glyphicon-subscript:before {
+  content: "\e256";
+}
+.glyphicon-menu-left:before {
+  content: "\e257";
+}
+.glyphicon-menu-right:before {
+  content: "\e258";
+}
+.glyphicon-menu-down:before {
+  content: "\e259";
+}
+.glyphicon-menu-up:before {
+  content: "\e260";
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 10px;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #337ab7;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #23527c;
+  text-decoration: underline;
+}
+a:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+       -o-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+[role="button"] {
+  cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+mark,
+.mark {
+  padding: .2em;
+  background-color: #fcf8e3;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-nowrap {
+  white-space: nowrap;
+}
+.text-lowercase {
+  text-transform: lowercase;
+}
+.text-uppercase {
+  text-transform: uppercase;
+}
+.text-capitalize {
+  text-transform: capitalize;
+}
+.text-muted {
+  color: #777;
+}
+.text-primary {
+  color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+  color: #286090;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+  background-color: #286090;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #777;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+  padding: 0;
+  font-size: 100%;
+  font-weight: bold;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: auto;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: auto;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: auto;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: auto;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: auto;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: auto;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: auto;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: auto;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  background-color: transparent;
+}
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777;
+  text-align: left;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+.table-responsive {
+  min-height: .01%;
+  overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control::-ms-expand {
+  background-color: transparent;
+  border: 0;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  background-color: #eee;
+  opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control,
+  input[type="time"].form-control,
+  input[type="datetime-local"].form-control,
+  input[type="month"].form-control {
+    line-height: 34px;
+  }
+  input[type="date"].input-sm,
+  input[type="time"].input-sm,
+  input[type="datetime-local"].input-sm,
+  input[type="month"].input-sm,
+  .input-group-sm input[type="date"],
+  .input-group-sm input[type="time"],
+  .input-group-sm input[type="datetime-local"],
+  .input-group-sm input[type="month"] {
+    line-height: 30px;
+  }
+  input[type="date"].input-lg,
+  input[type="time"].input-lg,
+  input[type="datetime-local"].input-lg,
+  input[type="month"].input-lg,
+  .input-group-lg input[type="date"],
+  .input-group-lg input[type="time"],
+  .input-group-lg input[type="datetime-local"],
+  .input-group-lg input[type="month"] {
+    line-height: 46px;
+  }
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  min-height: 20px;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-top: 4px \9;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+  cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+  cursor: not-allowed;
+}
+.form-control-static {
+  min-height: 34px;
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.form-group-sm .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.form-group-sm select.form-control {
+  height: 30px;
+  line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+  height: auto;
+}
+.form-group-sm .form-control-static {
+  height: 30px;
+  min-height: 32px;
+  padding: 6px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.form-group-lg .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.form-group-lg select.form-control {
+  height: 46px;
+  line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+  height: auto;
+}
+.form-group-lg .form-control-static {
+  height: 46px;
+  min-height: 38px;
+  padding: 11px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+  top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .form-control-static {
+    display: inline-block;
+  }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .form-inline .input-group .input-group-addon,
+  .form-inline .input-group .input-group-btn,
+  .form-inline .input-group .form-control {
+    width: auto;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio label,
+  .form-inline .checkbox label {
+    padding-left: 0;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    padding-top: 7px;
+    margin-bottom: 0;
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 11px;
+    font-size: 18px;
+  }
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px;
+  }
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c;
+}
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85;
+}
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d;
+}
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #337ab7;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #777;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+       -o-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+tr.collapse.in {
+  display: table-row;
+}
+tbody.collapse.in {
+  display: table-row-group;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-timing-function: ease;
+       -o-transition-timing-function: ease;
+          transition-timing-function: ease;
+  -webkit-transition-duration: .35s;
+       -o-transition-duration: .35s;
+          transition-duration: .35s;
+  -webkit-transition-property: height, visibility;
+       -o-transition-property: height, visibility;
+          transition-property: height, visibility;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-top: 4px solid \9;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  text-align: left;
+  list-style: none;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #337ab7;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #777;
+  white-space: nowrap;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px dashed;
+  border-bottom: 4px solid \9;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group .form-control:focus {
+  z-index: 3;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  z-index: 2;
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.nav > li.disabled > a {
+  color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #777;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #337ab7;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #337ab7;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+.navbar-brand > img {
+  display: block;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: 0;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control-static {
+    display: inline-block;
+  }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+  .navbar-form .form-group:last-child {
+    margin-bottom: 0;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  margin-bottom: 0;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px;
+  }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333;
+    background-color: transparent;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555;
+    background-color: #e7e7e7;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #ccc;
+    background-color: transparent;
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-default .btn-link {
+  color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+  color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+  color: #ccc;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #9d9d9d;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.navbar-inverse .btn-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+  color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+  color: #444;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #777;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #337ab7;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  z-index: 2;
+  color: #23527c;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 3;
+  color: #fff;
+  cursor: default;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #5e5e5e;
+}
+.label-primary {
+  background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #286090;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-color: #777;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding-top: 30px;
+  padding-bottom: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.jumbotron > hr {
+  border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+  padding-right: 15px;
+  padding-left: 15px;
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron,
+  .container-fluid .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: border .2s ease-in-out;
+       -o-transition: border .2s ease-in-out;
+          transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #337ab7;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #337ab7;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+       -o-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+  -webkit-background-size: 40px 40px;
+          background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+       -o-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-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);
+  background-image:      -o-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);
+  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);
+}
+.media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media-body {
+  width: 10000px;
+}
+.media-object {
+  display: block;
+}
+.media-object.img-thumbnail {
+  max-width: none;
+}
+.media-right,
+.media > .pull-right {
+  padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+  padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top;
+}
+.media-middle {
+  vertical-align: middle;
+}
+.media-bottom {
+  vertical-align: bottom;
+}
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+  color: #555;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+button.list-group-item {
+  width: 100%;
+  text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+  color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+  color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+  color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+  color: #c7ddef;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.list-group + .panel-footer {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+  margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+  color: #f5f5f5;
+  background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #337ab7;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+  color: #dff0d8;
+  background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+  color: #d9edf7;
+  background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+  color: #fcf8e3;
+  background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+  color: #f2dede;
+  background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 0;
+}
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+  padding-bottom: 75%;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  overflow: hidden;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+       -o-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+       -o-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  outline: 0;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.modal-header {
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 15px;
+}
+.modal-footer {
+  padding: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 12px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  filter: alpha(opacity=0);
+  opacity: 0;
+
+  line-break: auto;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+  line-break: auto;
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+       -o-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+  .carousel-inner > .item {
+    -webkit-transition: -webkit-transform .6s ease-in-out;
+         -o-transition:      -o-transform .6s ease-in-out;
+            transition:         transform .6s ease-in-out;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+    -webkit-perspective: 1000px;
+            perspective: 1000px;
+  }
+  .carousel-inner > .item.next,
+  .carousel-inner > .item.active.right {
+    left: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+  }
+  .carousel-inner > .item.prev,
+  .carousel-inner > .item.active.left {
+    left: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+  }
+  .carousel-inner > .item.next.left,
+  .carousel-inner > .item.prev.right,
+  .carousel-inner > .item.active {
+    left: 0;
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+  }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  background-color: rgba(0, 0, 0, 0);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: 0;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+  margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+  margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+  margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  font-family: serif;
+  line-height: 1;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -10px;
+    font-size: 30px;
+  }
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .icon-prev {
+    margin-left: -10px;
+  }
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-next {
+    margin-right: -10px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-header:before,
+.modal-header:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-header:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table !important;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table !important;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table !important;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table !important;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table !important;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+.visible-print-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-block {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/public/theme/bootstrap/dist/css/bootstrap.css.map b/public/theme/bootstrap/dist/css/bootstrap.css.map
new file mode 100644
index 0000000..f010c82
--- /dev/null
+++ b/public/theme/bootstrap/dist/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,iBAAA;CH8O9C;AG7OmC;EAAW,iBAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EEnDA,2CAAA;EACA,qBAAA;CNokCD;AIvgCD;EACE,UAAA;CJygCD;AIngCD;EACE,uBAAA;CJqgCD;AIjgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CP+kCD;AIrgCD;EACE,mBAAA;CJugCD;AIjgCD;EACE,aAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CP+lCD;AIjgCD;EACE,mBAAA;CJmgCD;AI7/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJ+/BD;AIv/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJy/BD;AIj/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJm/BH;AIx+BD;EACE,gBAAA;CJ0+BD;AQjoCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR6oCD;AQlpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRmqCH;AQ/pCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRoqCD;AQxqCD;;;;;;;;;;;;EAQI,eAAA;CR8qCH;AQ3qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRgrCD;AQprCD;;;;;;;;;;;;EAQI,eAAA;CR0rCH;AQtrCD;;EAAU,gBAAA;CR0rCT;AQzrCD;;EAAU,gBAAA;CR6rCT;AQ5rCD;;EAAU,gBAAA;CRgsCT;AQ/rCD;;EAAU,gBAAA;CRmsCT;AQlsCD;;EAAU,gBAAA;CRssCT;AQrsCD;;EAAU,gBAAA;CRysCT;AQnsCD;EACE,iBAAA;CRqsCD;AQlsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRosCD;AQ/rCD;EAwOA;IA1OI,gBAAA;GRqsCD;CACF;AQ7rCD;;EAEE,eAAA;CR+rCD;AQ5rCD;;EAEE,0BAAA;EACA,cAAA;CR8rCD;AQ1rCD;EAAuB,iBAAA;CR6rCtB;AQ5rCD;EAAuB,kBAAA;CR+rCtB;AQ9rCD;EAAuB,mBAAA;CRisCtB;AQhsCD;EAAuB,oBAAA;CRmsCtB;AQlsCD;EAAuB,oBAAA;CRqsCtB;AQlsCD;EAAuB,0BAAA;CRqsCtB;AQpsCD;EAAuB,0BAAA;CRusCtB;AQtsCD;EAAuB,2BAAA;CRysCtB;AQtsCD;EACE,eAAA;CRwsCD;AQtsCD;ECrGE,eAAA;CT8yCD;AS7yCC;;EAEE,eAAA;CT+yCH;AQ1sCD;ECxGE,eAAA;CTqzCD;ASpzCC;;EAEE,eAAA;CTszCH;AQ9sCD;EC3GE,eAAA;CT4zCD;AS3zCC;;EAEE,eAAA;CT6zCH;AQltCD;EC9GE,eAAA;CTm0CD;ASl0CC;;EAEE,eAAA;CTo0CH;AQttCD;ECjHE,eAAA;CT00CD;ASz0CC;;EAEE,eAAA;CT20CH;AQttCD;EAGE,YAAA;EE3HA,0BAAA;CVk1CD;AUj1CC;;EAEE,0BAAA;CVm1CH;AQxtCD;EE9HE,0BAAA;CVy1CD;AUx1CC;;EAEE,0BAAA;CV01CH;AQ5tCD;EEjIE,0BAAA;CVg2CD;AU/1CC;;EAEE,0BAAA;CVi2CH;AQhuCD;EEpIE,0BAAA;CVu2CD;AUt2CC;;EAEE,0BAAA;CVw2CH;AQpuCD;EEvIE,0BAAA;CV82CD;AU72CC;;EAEE,0BAAA;CV+2CH;AQnuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRquCD;AQ7tCD;;EAEE,cAAA;EACA,oBAAA;CR+tCD;AQluCD;;;;EAMI,iBAAA;CRkuCH;AQ3tCD;EACE,gBAAA;EACA,iBAAA;CR6tCD;AQztCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR4tCD;AQ9tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR4tCH;AQvtCD;EACE,cAAA;EACA,oBAAA;CRytCD;AQvtCD;;EAEE,wBAAA;CRytCD;AQvtCD;EACE,kBAAA;CRytCD;AQvtCD;EACE,eAAA;CRytCD;AQhsCD;EA6EA;IAvFM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXq6CC;EQ7nCH;IAhFM,mBAAA;GRgtCH;CACF;AQvsCD;;EAGE,aAAA;EACA,kCAAA;CRwsCD;AQtsCD;EACE,eAAA;EA9IqB,0BAAA;CRu1CtB;AQpsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRssCD;AQjsCG;;;EACE,iBAAA;CRqsCL;AQ/sCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRisCH;AQ/rCG;;;EACE,uBAAA;CRmsCL;AQ3rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR6rCD;AQvrCG;;;;;;EAAW,YAAA;CR+rCd;AQ9rCG;;;;;;EACE,uBAAA;CRqsCL;AQ/rCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRisCD;AYv+CD;;;;EAIE,+DAAA;CZy+CD;AYr+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZu+CD;AYn+CD;EACE,iBAAA;EACA,eAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZq+CD;AY3+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZq+CH;AYh+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;CZk+CD;AY7+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZi+CH;AY59CD;EACE,kBAAA;EACA,mBAAA;CZ89CD;AaxhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd8hDD;AaxhDC;EAqEF;IAvEI,aAAA;Gb8hDD;CACF;Aa1hDC;EAkEF;IApEI,aAAA;GbgiDD;CACF;Aa5hDD;EA+DA;IAjEI,cAAA;GbkiDD;CACF;AazhDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdmjDD;AathDD;ECvBE,mBAAA;EACA,oBAAA;CdgjDD;AehjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfgjDL;AehiDG;EACE,YAAA;CfkiDL;Ae3hDC;EACE,YAAA;Cf6hDH;Ae9hDC;EACE,oBAAA;CfgiDH;AejiDC;EACE,oBAAA;CfmiDH;AepiDC;EACE,WAAA;CfsiDH;AeviDC;EACE,oBAAA;CfyiDH;Ae1iDC;EACE,oBAAA;Cf4iDH;Ae7iDC;EACE,WAAA;Cf+iDH;AehjDC;EACE,oBAAA;CfkjDH;AenjDC;EACE,oBAAA;CfqjDH;AetjDC;EACE,WAAA;CfwjDH;AezjDC;EACE,oBAAA;Cf2jDH;Ae5jDC;EACE,mBAAA;Cf8jDH;AehjDC;EACE,YAAA;CfkjDH;AenjDC;EACE,oBAAA;CfqjDH;AetjDC;EACE,oBAAA;CfwjDH;AezjDC;EACE,WAAA;Cf2jDH;Ae5jDC;EACE,oBAAA;Cf8jDH;Ae/jDC;EACE,oBAAA;CfikDH;AelkDC;EACE,WAAA;CfokDH;AerkDC;EACE,oBAAA;CfukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBqrED;AgBxrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,2BAAA;ChBqrEP;AgBnsED;EAoBI,uBAAA;EACA,8BAAA;ChBkrEH;AgBvsED;;;;;;EA8BQ,cAAA;ChBirEP;AgB/sED;EAoCI,2BAAA;ChB8qEH;AgBltED;EAyCI,uBAAA;ChB4qEH;AgBrqED;;;;;;EAOQ,aAAA;ChBsqEP;AgB3pED;EACE,uBAAA;ChB6pED;AgB9pED;;;;;;EAQQ,uBAAA;ChB8pEP;AgBtqED;;EAeM,yBAAA;ChB2pEL;AgBjpED;EAEI,0BAAA;ChBkpEH;AgBzoED;EAEI,0BAAA;ChB0oEH;AgBjoED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBmoED;AgB9nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBioEL;AiB7wEC;;;;;;;;;;;;EAOI,0BAAA;CjBoxEL;AiB9wEC;;;;;EAMI,0BAAA;CjB+wEL;AiBlyEC;;;;;;;;;;;;EAOI,0BAAA;CjByyEL;AiBnyEC;;;;;EAMI,0BAAA;CjBoyEL;AiBvzEC;;;;;;;;;;;;EAOI,0BAAA;CjB8zEL;AiBxzEC;;;;;EAMI,0BAAA;CjByzEL;AiB50EC;;;;;;;;;;;;EAOI,0BAAA;CjBm1EL;AiB70EC;;;;;EAMI,0BAAA;CjB80EL;AiBj2EC;;;;;;;;;;;;EAOI,0BAAA;CjBw2EL;AiBl2EC;;;;;EAMI,0BAAA;CjBm2EL;AgBjtED;EACE,iBAAA;EACA,kBAAA;ChBmtED;AgBtpED;EACA;IA3DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,uBAAA;GhBotED;EgB7pEH;IAnDM,iBAAA;GhBmtEH;EgBhqEH;;;;;;IA1CY,oBAAA;GhBktET;EgBxqEH;IAlCM,UAAA;GhB6sEH;EgB3qEH;;;;;;IAzBY,eAAA;GhB4sET;EgBnrEH;;;;;;IArBY,gBAAA;GhBgtET;EgB3rEH;;;;IARY,iBAAA;GhBysET;CACF;AkBn6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBk6ED;AkB/5ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBi6ED;AkB95ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBg6ED;AkBr5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL43ET;AkBr5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBu5ED;AkBp5ED;EACE,eAAA;ClBs5ED;AkBl5ED;EACE,eAAA;EACA,YAAA;ClBo5ED;AkBh5ED;;EAEE,aAAA;ClBk5ED;AkB94ED;;;EZrEE,2CAAA;EACA,qBAAA;CNw9ED;AkB74ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClB+4ED;AkBr3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CLwzET;AmBh8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CLy7ET;AKx5EC;EACE,YAAA;EACA,WAAA;CL05EH;AKx5EC;EAA0B,YAAA;CL25E3B;AK15EC;EAAgC,YAAA;CL65EjC;AkBj4EC;EACE,UAAA;EACA,8BAAA;ClBm4EH;AkB33EC;;;EAGE,0BAAA;EACA,WAAA;ClB63EH;AkB13EC;;EAEE,oBAAA;ClB43EH;AkBx3EC;EACE,aAAA;ClB03EH;AkB92ED;EACE,yBAAA;ClBg3ED;AkBx0ED;EAtBI;;;;IACE,kBAAA;GlBo2EH;EkBj2EC;;;;;;;;IAEE,kBAAA;GlBy2EH;EkBt2EC;;;;;;;;IAEE,kBAAA;GlB82EH;CACF;AkBp2ED;EACE,oBAAA;ClBs2ED;AkB91ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBg2ED;AkBr2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBi2EH;AkB91ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBg2ED;AkB71ED;;EAEE,iBAAA;ClB+1ED;AkB31ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB61ED;AkB31ED;;EAEE,cAAA;EACA,kBAAA;ClB61ED;AkBp1EC;;;;;;EAGE,oBAAA;ClBy1EH;AkBn1EC;;;;EAEE,oBAAA;ClBu1EH;AkBj1EC;;;;EAGI,oBAAA;ClBo1EL;AkBz0ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClBy0ED;AkBv0EC;;EAEE,gBAAA;EACA,iBAAA;ClBy0EH;AkB5zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBkkFD;AmBhkFC;EACE,aAAA;EACA,kBAAA;CnBkkFH;AmB/jFC;;EAEE,aAAA;CnBikFH;AkBx0ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClBy0EH;AkB/0ED;EASI,aAAA;EACA,kBAAA;ClBy0EH;AkBn1ED;;EAcI,aAAA;ClBy0EH;AkBv1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClBy0EH;AkBr0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBumFD;AmBrmFC;EACE,aAAA;EACA,kBAAA;CnBumFH;AmBpmFC;;EAEE,aAAA;CnBsmFH;AkBj1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBk1EH;AkBx1ED;EASI,aAAA;EACA,kBAAA;ClBk1EH;AkB51ED;;EAcI,aAAA;ClBk1EH;AkBh2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBk1EH;AkBz0ED;EAEE,mBAAA;ClB00ED;AkB50ED;EAMI,sBAAA;ClBy0EH;AkBr0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBn0ED;;;;;;;;;;EC1ZI,eAAA;CnByuFH;AkB/0ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0rFT;AmBxuFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+rFT;AkBz1ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwuFH;AkB91ED;ECtYI,eAAA;CnBuuFH;AkB91ED;;;;;;;;;;EC7ZI,eAAA;CnBuwFH;AkB12ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwtFT;AmBtwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6tFT;AkBp3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBswFH;AkBz3ED;ECzYI,eAAA;CnBqwFH;AkBz3ED;;;;;;;;;;EChaI,eAAA;CnBqyFH;AkBr4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLsvFT;AmBpyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL2vFT;AkB/4ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBoyFH;AkBp5ED;EC5YI,eAAA;CnBmyFH;AkBh5EC;EACE,UAAA;ClBk5EH;AkBh5EC;EACE,OAAA;ClBk5EH;AkBx4ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB04ED;AkBvzED;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBy3EH;EkBrvEH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBu3EH;EkB1vEH;IAxHM,sBAAA;GlBq3EH;EkB7vEH;IApHM,sBAAA;IACA,uBAAA;GlBo3EH;EkBjwEH;;;IA9GQ,YAAA;GlBo3EL;EkBtwEH;IAxGM,YAAA;GlBi3EH;EkBzwEH;IApGM,iBAAA;IACA,uBAAA;GlBg3EH;EkB7wEH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB62EH;EkBpxEH;;IAtFQ,gBAAA;GlB82EL;EkBxxEH;;IAjFM,mBAAA;IACA,eAAA;GlB62EH;EkB7xEH;IA3EM,OAAA;GlB22EH;CACF;AkBj2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClB81EH;AkBz2ED;;EAiBI,iBAAA;ClB41EH;AkB72ED;EJthBE,mBAAA;EACA,oBAAA;Cds4FD;AkB10EC;EAyBF;IAnCM,kBAAA;IACA,iBAAA;IACA,iBAAA;GlBw1EH;CACF;AkBx3ED;EAwCI,YAAA;ClBm1EH;AkBr0EC;EAUF;IAdQ,kBAAA;IACA,gBAAA;GlB60EL;CACF;AkBn0EC;EAEF;IANQ,iBAAA;IACA,gBAAA;GlB20EL;CACF;AoBp6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC0CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB+JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CL+tFT;AoBv6FG;;;;;;EdnBF,2CAAA;EACA,qBAAA;CNk8FD;AoB16FC;;;EAGE,YAAA;EACA,sBAAA;CpB46FH;AoBz6FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLi5FT;AoBz6FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL05FT;AoBz6FG;;EAEE,qBAAA;CpB26FL;AoBl6FD;EC3DE,YAAA;EACA,uBAAA;EACA,mBAAA;CrBg+FD;AqB99FC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBs+FT;AqBn+FC;;;EAGE,uBAAA;CrBq+FH;AqBh+FG;;;;;;;;;EAGE,uBAAA;EACI,mBAAA;CrBw+FT;AoBv9FD;ECZI,YAAA;EACA,uBAAA;CrBs+FH;AoBx9FD;EC9DE,YAAA;EACA,0BAAA;EACA,sBAAA;CrByhGD;AqBvhGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB+hGT;AqB5hGC;;;EAGE,uBAAA;CrB8hGH;AqBzhGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBiiGT;AoB7gGD;ECfI,eAAA;EACA,uBAAA;CrB+hGH;AoB7gGD;EClEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBklGD;AqBhlGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBwlGT;AqBrlGC;;;EAGE,uBAAA;CrBulGH;AqBllGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB0lGT;AoBlkGD;ECnBI,eAAA;EACA,uBAAA;CrBwlGH;AoBlkGD;ECtEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB2oGD;AqBzoGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBipGT;AqB9oGC;;;EAGE,uBAAA;CrBgpGH;AqB3oGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBmpGT;AoBvnGD;ECvBI,eAAA;EACA,uBAAA;CrBipGH;AoBvnGD;EC1EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBosGD;AqBlsGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB0sGT;AqBvsGC;;;EAGE,uBAAA;CrBysGH;AqBpsGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB4sGT;AoB5qGD;EC3BI,eAAA;EACA,uBAAA;CrB0sGH;AoB5qGD;EC9EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB6vGD;AqB3vGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBmwGT;AqBhwGC;;;EAGE,uBAAA;CrBkwGH;AqB7vGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBqwGT;AoBjuGD;EC/BI,eAAA;EACA,uBAAA;CrBmwGH;AoB5tGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpB8tGD;AoB5tGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLkwGT;AoB7tGC;;;;EAIE,0BAAA;CpB+tGH;AoB7tGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpB+tGH;AoB3tGG;;;;EAEE,eAAA;EACA,sBAAA;CpB+tGL;AoBttGD;;ECxEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBkyGD;AoBztGD;;EC5EE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrByyGD;AoB5tGD;;EChFE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBgzGD;AoB3tGD;EACE,eAAA;EACA,YAAA;CpB6tGD;AoBztGD;EACE,gBAAA;CpB2tGD;AoBptGC;;;EACE,YAAA;CpBwtGH;AuBl3GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLisGT;AuBr3GC;EACE,WAAA;CvBu3GH;AuBn3GD;EACE,cAAA;CvBq3GD;AuBn3GC;EAAY,eAAA;CvBs3Gb;AuBr3GC;EAAY,mBAAA;CvBw3Gb;AuBv3GC;EAAY,yBAAA;CvB03Gb;AuBv3GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CL2sGT;AwBr5GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxBu5GD;AwBn5GD;;EAEE,mBAAA;CxBq5GD;AwBj5GD;EACE,WAAA;CxBm5GD;AwB/4GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBk5GD;AwB74GC;EACE,SAAA;EACA,WAAA;CxB+4GH;AwBx6GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBo8GD;AwB96GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB84GH;AwBx4GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB04GH;AwBp4GC;;;EAGE,YAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxBs4GH;AwB73GC;;;EAGE,eAAA;CxB+3GH;AwB33GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxB63GH;AwBx3GD;EAGI,eAAA;CxBw3GH;AwB33GD;EAQI,WAAA;CxBs3GH;AwB92GD;EACE,WAAA;EACA,SAAA;CxBg3GD;AwBx2GD;EACE,QAAA;EACA,YAAA;CxB02GD;AwBt2GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBw2GD;AwBp2GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxBs2GD;AwBl2GD;EACE,SAAA;EACA,WAAA;CxBo2GD;AwB51GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxB41GH;AwBn2GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxB41GH;AwBv0GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB05GC;EwBv1GD;IA1DA,QAAA;IACA,YAAA;GxBo5GC;CACF;A2BpiHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3BsiHD;A2B1iHD;;EAMI,mBAAA;EACA,YAAA;C3BwiHH;A2BtiHG;;;;;;;;EAIE,WAAA;C3B4iHL;A2BtiHD;;;;EAKI,kBAAA;C3BuiHH;A2BliHD;EACE,kBAAA;C3BoiHD;A2BriHD;;;EAOI,YAAA;C3BmiHH;A2B1iHD;;;EAYI,iBAAA;C3BmiHH;A2B/hHD;EACE,iBAAA;C3BiiHD;A2B7hHD;EACE,eAAA;C3B+hHD;A2B9hHC;EClDA,8BAAA;EACG,2BAAA;C5BmlHJ;A2B7hHD;;EC/CE,6BAAA;EACG,0BAAA;C5BglHJ;A2B5hHD;EACE,YAAA;C3B8hHD;A2B5hHD;EACE,iBAAA;C3B8hHD;A2B5hHD;;ECnEE,8BAAA;EACG,2BAAA;C5BmmHJ;A2B3hHD;ECjEE,6BAAA;EACG,0BAAA;C5B+lHJ;A2B1hHD;;EAEE,WAAA;C3B4hHD;A2B3gHD;EACE,kBAAA;EACA,mBAAA;C3B6gHD;A2B3gHD;EACE,mBAAA;EACA,oBAAA;C3B6gHD;A2BxgHD;EtB/CE,yDAAA;EACQ,iDAAA;CL0jHT;A2BxgHC;EtBnDA,yBAAA;EACQ,iBAAA;CL8jHT;A2BrgHD;EACE,eAAA;C3BugHD;A2BpgHD;EACE,wBAAA;EACA,uBAAA;C3BsgHD;A2BngHD;EACE,wBAAA;C3BqgHD;A2B9/GD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3B+/GH;A2BtgHD;EAcM,YAAA;C3B2/GL;A2BzgHD;;;;EAsBI,iBAAA;EACA,eAAA;C3By/GH;A2Bp/GC;EACE,iBAAA;C3Bs/GH;A2Bp/GC;EC3KA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B4pHF;A2Bt/GC;EC/KA,2BAAA;EACC,0BAAA;EAOD,gCAAA;EACC,+BAAA;C5BkqHF;A2Bv/GD;EACE,iBAAA;C3By/GD;A2Bv/GD;;EC/KE,8BAAA;EACC,6BAAA;C5B0qHF;A2Bt/GD;EC7LE,2BAAA;EACC,0BAAA;C5BsrHF;A2Bl/GD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3Bo/GD;A2Bx/GD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3Bq/GH;A2B9/GD;EAYI,YAAA;C3Bq/GH;A2BjgHD;EAgBI,WAAA;C3Bo/GH;A2Bn+GD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3Bo+GL;A6B9sHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BgtHD;A6B7sHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7B+sHH;A6BxtHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7BusHH;A6BrsHG;EACE,WAAA;C7BusHL;A6B7rHD;;;EV0BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBwqHD;AmBtqHC;;;EACE,aAAA;EACA,kBAAA;CnB0qHH;AmBvqHC;;;;;;EAEE,aAAA;CnB6qHH;A6B/sHD;;;EVqBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnB+rHD;AmB7rHC;;;EACE,aAAA;EACA,kBAAA;CnBisHH;AmB9rHC;;;;;;EAEE,aAAA;CnBosHH;A6B7tHD;;;EAGE,oBAAA;C7B+tHD;A6B7tHC;;;EACE,iBAAA;C7BiuHH;A6B7tHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7B+tHD;A6B1tHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;C7B4tHD;A6BztHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6BztHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6B/uHD;;EA0BI,cAAA;C7BytHH;A6BptHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;C5Bi0HJ;A6BrtHD;EACE,gBAAA;C7ButHD;A6BrtHD;;;;;;;EDxGE,6BAAA;EACG,0BAAA;C5Bs0HJ;A6BttHD;EACE,eAAA;C7BwtHD;A6BntHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BmtHD;A6BxtHD;EAUI,mBAAA;C7BitHH;A6B3tHD;EAYM,kBAAA;C7BktHL;A6B/sHG;;;EAGE,WAAA;C7BitHL;A6B5sHC;;EAGI,mBAAA;C7B6sHL;A6B1sHC;;EAGI,WAAA;EACA,kBAAA;C7B2sHL;A8B12HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B42HD;A8B/2HD;EAOI,mBAAA;EACA,eAAA;C9B22HH;A8Bn3HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B22HL;A8B12HK;;EAEE,sBAAA;EACA,0BAAA;C9B42HP;A8Bv2HG;EACE,eAAA;C9By2HL;A8Bv2HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9By2HP;A8Bl2HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bo2HL;A8B74HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBm5HD;A8Bn5HD;EA0DI,gBAAA;C9B41HH;A8Bn1HD;EACE,8BAAA;C9Bq1HD;A8Bt1HD;EAGI,YAAA;EAEA,oBAAA;C9Bq1HH;A8B11HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bo1HL;A8Bn1HK;EACE,mCAAA;C9Bq1HP;A8B/0HK;;;EAGE,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,iCAAA;EACA,gBAAA;C9Bi1HP;A8B50HC;EAqDA,YAAA;EA8BA,iBAAA;C9B6vHD;A8Bh1HC;EAwDE,YAAA;C9B2xHH;A8Bn1HC;EA0DI,mBAAA;EACA,mBAAA;C9B4xHL;A8Bv1HC;EAgEE,UAAA;EACA,WAAA;C9B0xHH;A8B9wHD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9ByxHH;E8BztHH;IA9DQ,iBAAA;G9B0xHL;CACF;A8Bp2HC;EAuFE,gBAAA;EACA,mBAAA;C9BgxHH;A8Bx2HC;;;EA8FE,uBAAA;C9B+wHH;A8BjwHD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9B8wHH;E8B3uHH;;;IA9BM,0BAAA;G9B8wHH;CACF;A8B/2HD;EAEI,YAAA;C9Bg3HH;A8Bl3HD;EAMM,mBAAA;C9B+2HL;A8Br3HD;EASM,iBAAA;C9B+2HL;A8B12HK;;;EAGE,YAAA;EACA,0BAAA;C9B42HP;A8Bp2HD;EAEI,YAAA;C9Bq2HH;A8Bv2HD;EAIM,gBAAA;EACA,eAAA;C9Bs2HL;A8B11HD;EACE,YAAA;C9B41HD;A8B71HD;EAII,YAAA;C9B41HH;A8Bh2HD;EAMM,mBAAA;EACA,mBAAA;C9B61HL;A8Bp2HD;EAYI,UAAA;EACA,WAAA;C9B21HH;A8B/0HD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B01HH;E8B1xHH;IA9DQ,iBAAA;G9B21HL;CACF;A8Bn1HD;EACE,iBAAA;C9Bq1HD;A8Bt1HD;EAKI,gBAAA;EACA,mBAAA;C9Bo1HH;A8B11HD;;;EAYI,uBAAA;C9Bm1HH;A8Br0HD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9Bk1HH;E8B/yHH;;;IA9BM,0BAAA;G9Bk1HH;CACF;A8Bz0HD;EAEI,cAAA;C9B00HH;A8B50HD;EAKI,eAAA;C9B00HH;A8Bj0HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5B8iIF;A+BxiID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B0iID;A+BliID;EA8nBA;IAhoBI,mBAAA;G/BwiID;CACF;A+BzhID;EAgnBA;IAlnBI,YAAA;G/B+hID;CACF;A+BjhID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BkhID;A+BhhIC;EACE,iBAAA;C/BkhIH;A+Bt/HD;EA6jBA;IArlBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BkhID;E+BhhIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BkhIH;E+B/gIC;IACE,oBAAA;G/BihIH;E+B5gIC;;;IAGE,gBAAA;IACA,iBAAA;G/B8gIH;CACF;A+B1gID;;EAGI,kBAAA;C/B2gIH;A+BtgIC;EAmjBF;;IArjBM,kBAAA;G/B6gIH;CACF;A+BpgID;;;;EAII,oBAAA;EACA,mBAAA;C/BsgIH;A+BhgIC;EAgiBF;;;;IAniBM,gBAAA;IACA,eAAA;G/B0gIH;CACF;A+B9/HD;EACE,cAAA;EACA,sBAAA;C/BggID;A+B3/HD;EA8gBA;IAhhBI,iBAAA;G/BigID;CACF;A+B7/HD;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/B+/HD;A+Bz/HD;EAggBA;;IAlgBI,iBAAA;G/BggID;CACF;A+B9/HD;EACE,OAAA;EACA,sBAAA;C/BggID;A+B9/HD;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BggID;A+B1/HD;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B4/HD;A+B1/HC;;EAEE,sBAAA;C/B4/HH;A+BrgID;EAaI,eAAA;C/B2/HH;A+Bl/HD;EALI;;IAEE,mBAAA;G/B0/HH;CACF;A+Bh/HD;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/Bm/HD;A+B/+HC;EACE,WAAA;C/Bi/HH;A+B//HD;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/B++HH;A+BrgID;EAyBI,gBAAA;C/B++HH;A+Bz+HD;EAqbA;IAvbI,cAAA;G/B++HD;CACF;A+Bt+HD;EACE,oBAAA;C/Bw+HD;A+Bz+HD;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/Bw+HH;A+B58HC;EA2YF;IAjaM,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/Bs+HH;E+B3kHH;;IAxZQ,2BAAA;G/Bu+HL;E+B/kHH;IArZQ,kBAAA;G/Bu+HL;E+Bt+HK;;IAEE,uBAAA;G/Bw+HP;CACF;A+Bt9HD;EA+XA;IA1YI,YAAA;IACA,UAAA;G/Bq+HD;E+B5lHH;IAtYM,YAAA;G/Bq+HH;E+B/lHH;IApYQ,kBAAA;IACA,qBAAA;G/Bs+HL;CACF;A+B39HD;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC4vID;AkBtuHD;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBwyHH;EkBpqHH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBsyHH;EkBzqHH;IAxHM,sBAAA;GlBoyHH;EkB5qHH;IApHM,sBAAA;IACA,uBAAA;GlBmyHH;EkBhrHH;;;IA9GQ,YAAA;GlBmyHL;EkBrrHH;IAxGM,YAAA;GlBgyHH;EkBxrHH;IApGM,iBAAA;IACA,uBAAA;GlB+xHH;EkB5rHH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB4xHH;EkBnsHH;;IAtFQ,gBAAA;GlB6xHL;EkBvsHH;;IAjFM,mBAAA;IACA,eAAA;GlB4xHH;EkB5sHH;IA3EM,OAAA;GlB0xHH;CACF;A+BpgIC;EAmWF;IAzWM,mBAAA;G/B8gIH;E+B5gIG;IACE,iBAAA;G/B8gIL;CACF;A+B7/HD;EAoVA;IA5VI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLmwIP;CACF;A+BngID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B00IF;A+BngID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5By0IF;A+B//HD;EChVE,gBAAA;EACA,mBAAA;ChCk1ID;A+BhgIC;ECnVA,iBAAA;EACA,oBAAA;ChCs1ID;A+BjgIC;ECtVA,iBAAA;EACA,oBAAA;ChC01ID;A+B3/HD;EChWE,iBAAA;EACA,oBAAA;ChC81ID;A+Bv/HD;EAsSA;IA1SI,YAAA;IACA,kBAAA;IACA,mBAAA;G/B+/HD;CACF;A+Bl+HD;EAhBE;IExWA,uBAAA;GjC81IC;E+Br/HD;IE5WA,wBAAA;IF8WE,oBAAA;G/Bu/HD;E+Bz/HD;IAKI,gBAAA;G/Bu/HH;CACF;A+B9+HD;EACE,0BAAA;EACA,sBAAA;C/Bg/HD;A+Bl/HD;EAKI,YAAA;C/Bg/HH;A+B/+HG;;EAEE,eAAA;EACA,8BAAA;C/Bi/HL;A+B1/HD;EAcI,YAAA;C/B++HH;A+B7/HD;EAmBM,YAAA;C/B6+HL;A+B3+HK;;EAEE,YAAA;EACA,8BAAA;C/B6+HP;A+Bz+HK;;;EAGE,YAAA;EACA,0BAAA;C/B2+HP;A+Bv+HK;;;EAGE,YAAA;EACA,8BAAA;C/By+HP;A+BjhID;EA8CI,mBAAA;C/Bs+HH;A+Br+HG;;EAEE,uBAAA;C/Bu+HL;A+BxhID;EAoDM,uBAAA;C/Bu+HL;A+B3hID;;EA0DI,sBAAA;C/Bq+HH;A+B99HK;;;EAGE,0BAAA;EACA,YAAA;C/Bg+HP;A+B/7HC;EAoKF;IA7LU,YAAA;G/B49HP;E+B39HO;;IAEE,YAAA;IACA,8BAAA;G/B69HT;E+Bz9HO;;;IAGE,YAAA;IACA,0BAAA;G/B29HT;E+Bv9HO;;;IAGE,YAAA;IACA,8BAAA;G/By9HT;CACF;A+B3jID;EA8GI,YAAA;C/Bg9HH;A+B/8HG;EACE,YAAA;C/Bi9HL;A+BjkID;EAqHI,YAAA;C/B+8HH;A+B98HG;;EAEE,YAAA;C/Bg9HL;A+B58HK;;;;EAEE,YAAA;C/Bg9HP;A+Bx8HD;EACE,uBAAA;EACA,sBAAA;C/B08HD;A+B58HD;EAKI,eAAA;C/B08HH;A+Bz8HG;;EAEE,YAAA;EACA,8BAAA;C/B28HL;A+Bp9HD;EAcI,eAAA;C/By8HH;A+Bv9HD;EAmBM,eAAA;C/Bu8HL;A+Br8HK;;EAEE,YAAA;EACA,8BAAA;C/Bu8HP;A+Bn8HK;;;EAGE,YAAA;EACA,0BAAA;C/Bq8HP;A+Bj8HK;;;EAGE,YAAA;EACA,8BAAA;C/Bm8HP;A+B3+HD;EA+CI,mBAAA;C/B+7HH;A+B97HG;;EAEE,uBAAA;C/Bg8HL;A+Bl/HD;EAqDM,uBAAA;C/Bg8HL;A+Br/HD;;EA2DI,sBAAA;C/B87HH;A+Bx7HK;;;EAGE,0BAAA;EACA,YAAA;C/B07HP;A+Bn5HC;EAwBF;IAvDU,sBAAA;G/Bs7HP;E+B/3HH;IApDU,0BAAA;G/Bs7HP;E+Bl4HH;IAjDU,eAAA;G/Bs7HP;E+Br7HO;;IAEE,YAAA;IACA,8BAAA;G/Bu7HT;E+Bn7HO;;;IAGE,YAAA;IACA,0BAAA;G/Bq7HT;E+Bj7HO;;;IAGE,YAAA;IACA,8BAAA;G/Bm7HT;CACF;A+B3hID;EA+GI,eAAA;C/B+6HH;A+B96HG;EACE,YAAA;C/Bg7HL;A+BjiID;EAsHI,eAAA;C/B86HH;A+B76HG;;EAEE,YAAA;C/B+6HL;A+B36HK;;;;EAEE,YAAA;C/B+6HP;AkCzjJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC2jJD;AkChkJD;EAQI,sBAAA;ClC2jJH;AkCnkJD;EAWM,kBAAA;EACA,eAAA;EACA,YAAA;ClC2jJL;AkCxkJD;EAkBI,eAAA;ClCyjJH;AmC7kJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnC+kJD;AmCnlJD;EAOI,gBAAA;CnC+kJH;AmCtlJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,kBAAA;CnCglJL;AmC9kJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B2lJJ;AmC7kJG;;EPvBF,gCAAA;EACG,6BAAA;C5BwmJJ;AmCxkJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CnC4kJL;AmCtkJG;;;;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC2kJL;AmCloJD;;;;;;EAkEM,eAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;CnCwkJL;AmC/jJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpC8oJL;AoC5oJG;;ERKF,+BAAA;EACG,4BAAA;C5B2oJJ;AoC3oJG;;ERTF,gCAAA;EACG,6BAAA;C5BwpJJ;AmC1kJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpC8pJL;AoC5pJG;;ERKF,+BAAA;EACG,4BAAA;C5B2pJJ;AoC3pJG;;ERTF,gCAAA;EACG,6BAAA;C5BwqJJ;AqC3qJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrC6qJD;AqCjrJD;EAOI,gBAAA;CrC6qJH;AqCprJD;;EAUM,sBAAA;EACA,kBAAA;EACA,uBAAA;EACA,uBAAA;EACA,oBAAA;CrC8qJL;AqC5rJD;;EAmBM,sBAAA;EACA,0BAAA;CrC6qJL;AqCjsJD;;EA2BM,aAAA;CrC0qJL;AqCrsJD;;EAkCM,YAAA;CrCuqJL;AqCzsJD;;;;EA2CM,eAAA;EACA,uBAAA;EACA,oBAAA;CrCoqJL;AsCltJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCotJD;AsChtJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CtCktJL;AsC7sJC;EACE,cAAA;CtC+sJH;AsC3sJC;EACE,mBAAA;EACA,UAAA;CtC6sJH;AsCtsJD;ECtCE,0BAAA;CvC+uJD;AuC5uJG;;EAEE,0BAAA;CvC8uJL;AsCzsJD;EC1CE,0BAAA;CvCsvJD;AuCnvJG;;EAEE,0BAAA;CvCqvJL;AsC5sJD;EC9CE,0BAAA;CvC6vJD;AuC1vJG;;EAEE,0BAAA;CvC4vJL;AsC/sJD;EClDE,0BAAA;CvCowJD;AuCjwJG;;EAEE,0BAAA;CvCmwJL;AsCltJD;ECtDE,0BAAA;CvC2wJD;AuCxwJG;;EAEE,0BAAA;CvC0wJL;AsCrtJD;EC1DE,0BAAA;CvCkxJD;AuC/wJG;;EAEE,0BAAA;CvCixJL;AwCnxJD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCqxJD;AwClxJC;EACE,cAAA;CxCoxJH;AwChxJC;EACE,mBAAA;EACA,UAAA;CxCkxJH;AwC/wJC;;EAEE,OAAA;EACA,iBAAA;CxCixJH;AwC5wJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CxC8wJL;AwCzwJC;;EAEE,eAAA;EACA,uBAAA;CxC2wJH;AwCxwJC;EACE,aAAA;CxC0wJH;AwCvwJC;EACE,kBAAA;CxCywJH;AwCtwJC;EACE,iBAAA;CxCwwJH;AyCl0JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCo0JD;AyCz0JD;;EASI,eAAA;CzCo0JH;AyC70JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCm0JH;AyCl1JD;EAmBI,0BAAA;CzCk0JH;AyC/zJC;;EAEE,mBAAA;EACA,mBAAA;EACA,oBAAA;CzCi0JH;AyC31JD;EA8BI,gBAAA;CzCg0JH;AyC9yJD;EACA;IAfI,kBAAA;IACA,qBAAA;GzCg0JD;EyC9zJC;;IAEE,mBAAA;IACA,oBAAA;GzCg0JH;EyCvzJH;;IAJM,gBAAA;GzC+zJH;CACF;A0C52JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CL8rJT;A0Cx3JD;;EAaI,kBAAA;EACA,mBAAA;C1C+2JH;A0C32JC;;;EAGE,sBAAA;C1C62JH;A0Cl4JD;EA0BI,aAAA;EACA,eAAA;C1C22JH;A2Cp4JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cs4JD;A2C14JD;EAQI,cAAA;EAEA,eAAA;C3Co4JH;A2C94JD;EAeI,kBAAA;C3Ck4JH;A2Cj5JD;;EAqBI,iBAAA;C3Cg4JH;A2Cr5JD;EAyBI,gBAAA;C3C+3JH;A2Cv3JD;;EAEE,oBAAA;C3Cy3JD;A2C33JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3Cy3JH;A2Cj3JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C26JD;A2Ct3JD;EClDI,0BAAA;C5C26JH;A2Cz3JD;EC/CI,eAAA;C5C26JH;A2Cx3JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cs7JD;A2C73JD;ECtDI,0BAAA;C5Cs7JH;A2Ch4JD;ECnDI,eAAA;C5Cs7JH;A2C/3JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Ci8JD;A2Cp4JD;EC1DI,0BAAA;C5Ci8JH;A2Cv4JD;ECvDI,eAAA;C5Ci8JH;A2Ct4JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C48JD;A2C34JD;EC9DI,0BAAA;C5C48JH;A2C94JD;EC3DI,eAAA;C5C48JH;A6C98JD;EACE;IAAQ,4BAAA;G7Ci9JP;E6Ch9JD;IAAQ,yBAAA;G7Cm9JP;CACF;A6Ch9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6Cx9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6C98JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL26JT;A6C78JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CL+zJT;A6C18JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7C88JD;A6Cv8JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CLu/JT;A6Cp8JD;EErEE,0BAAA;C/C4gKD;A+CzgKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C49JH;A6Cx8JD;EEzEE,0BAAA;C/CohKD;A+CjhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co+JH;A6C58JD;EE7EE,0BAAA;C/C4hKD;A+CzhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C4+JH;A6Ch9JD;EEjFE,0BAAA;C/CoiKD;A+CjiKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co/JH;AgD5iKD;EAEE,iBAAA;ChD6iKD;AgD3iKC;EACE,cAAA;ChD6iKH;AgDziKD;;EAEE,QAAA;EACA,iBAAA;ChD2iKD;AgDxiKD;EACE,eAAA;ChD0iKD;AgDviKD;EACE,eAAA;ChDyiKD;AgDtiKC;EACE,gBAAA;ChDwiKH;AgDpiKD;;EAEE,mBAAA;ChDsiKD;AgDniKD;;EAEE,oBAAA;ChDqiKD;AgDliKD;;;EAGE,oBAAA;EACA,oBAAA;ChDoiKD;AgDjiKD;EACE,uBAAA;ChDmiKD;AgDhiKD;EACE,uBAAA;ChDkiKD;AgD9hKD;EACE,cAAA;EACA,mBAAA;ChDgiKD;AgD1hKD;EACE,gBAAA;EACA,iBAAA;ChD4hKD;AiDnlKD;EAEE,oBAAA;EACA,gBAAA;CjDolKD;AiD5kKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,uBAAA;EACA,uBAAA;CjD6kKD;AiD1kKC;ErB3BA,6BAAA;EACC,4BAAA;C5BwmKF;AiD3kKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BqmKF;AiDpkKD;;EAEE,YAAA;CjDskKD;AiDxkKD;;EAKI,YAAA;CjDukKH;AiDnkKC;;;;EAEE,sBAAA;EACA,YAAA;EACA,0BAAA;CjDukKH;AiDnkKD;EACE,YAAA;EACA,iBAAA;CjDqkKD;AiDhkKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDkkKH;AiDvkKC;;;EASI,eAAA;CjDmkKL;AiD5kKC;;;EAYI,eAAA;CjDqkKL;AiDhkKC;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;CjDkkKH;AiDxkKC;;;;;;;;;EAYI,eAAA;CjDukKL;AiDnlKC;;;EAeI,eAAA;CjDykKL;AkD3qKC;EACE,eAAA;EACA,0BAAA;ClD6qKH;AkD3qKG;;EAEE,eAAA;ClD6qKL;AkD/qKG;;EAKI,eAAA;ClD8qKP;AkD3qKK;;;;EAEE,eAAA;EACA,0BAAA;ClD+qKP;AkD7qKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDkrKP;AkDxsKC;EACE,eAAA;EACA,0BAAA;ClD0sKH;AkDxsKG;;EAEE,eAAA;ClD0sKL;AkD5sKG;;EAKI,eAAA;ClD2sKP;AkDxsKK;;;;EAEE,eAAA;EACA,0BAAA;ClD4sKP;AkD1sKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD+sKP;AkDruKC;EACE,eAAA;EACA,0BAAA;ClDuuKH;AkDruKG;;EAEE,eAAA;ClDuuKL;AkDzuKG;;EAKI,eAAA;ClDwuKP;AkDruKK;;;;EAEE,eAAA;EACA,0BAAA;ClDyuKP;AkDvuKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD4uKP;AkDlwKC;EACE,eAAA;EACA,0BAAA;ClDowKH;AkDlwKG;;EAEE,eAAA;ClDowKL;AkDtwKG;;EAKI,eAAA;ClDqwKP;AkDlwKK;;;;EAEE,eAAA;EACA,0BAAA;ClDswKP;AkDpwKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDywKP;AiDxqKD;EACE,cAAA;EACA,mBAAA;CjD0qKD;AiDxqKD;EACE,iBAAA;EACA,iBAAA;CjD0qKD;AmDpyKD;EACE,oBAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CL6uKT;AmDnyKD;EACE,cAAA;CnDqyKD;AmDhyKD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5BuzKF;AmDtyKD;EAMI,eAAA;CnDmyKH;AmD9xKD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDgyKD;AmDpyKD;;;;;EAWI,eAAA;CnDgyKH;AmD3xKD;EACE,mBAAA;EACA,0BAAA;EACA,2BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5Bs0KF;AmDrxKD;;EAGI,iBAAA;CnDsxKH;AmDzxKD;;EAMM,oBAAA;EACA,iBAAA;CnDuxKL;AmDnxKG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5B61KF;AmDjxKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B21KF;AmD1yKD;EvB1DE,2BAAA;EACC,0BAAA;C5Bu2KF;AmD7wKD;EAEI,oBAAA;CnD8wKH;AmD3wKD;EACE,oBAAA;CnD6wKD;AmDrwKD;;;EAII,iBAAA;CnDswKH;AmD1wKD;;;EAOM,mBAAA;EACA,oBAAA;CnDwwKL;AmDhxKD;;EvBzGE,6BAAA;EACC,4BAAA;C5B63KF;AmDrxKD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnDwwKP;AmD5xKD;;;;;;;;EAwBU,4BAAA;CnD8wKT;AmDtyKD;;;;;;;;EA4BU,6BAAA;CnDoxKT;AmDhzKD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bq5KF;AmDrzKD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDkxKP;AmD5zKD;;;;;;;;EA8CU,+BAAA;CnDwxKT;AmDt0KD;;;;;;;;EAkDU,gCAAA;CnD8xKT;AmDh1KD;;;;EA2DI,2BAAA;CnD2xKH;AmDt1KD;;EA+DI,cAAA;CnD2xKH;AmD11KD;;EAmEI,UAAA;CnD2xKH;AmD91KD;;;;;;;;;;;;EA0EU,eAAA;CnDkyKT;AmD52KD;;;;;;;;;;;;EA8EU,gBAAA;CnD4yKT;AmD13KD;;;;;;;;EAuFU,iBAAA;CnD6yKT;AmDp4KD;;;;;;;;EAgGU,iBAAA;CnD8yKT;AmD94KD;EAsGI,UAAA;EACA,iBAAA;CnD2yKH;AmDjyKD;EACE,oBAAA;CnDmyKD;AmDpyKD;EAKI,iBAAA;EACA,mBAAA;CnDkyKH;AmDxyKD;EASM,gBAAA;CnDkyKL;AmD3yKD;EAcI,iBAAA;CnDgyKH;AmD9yKD;;EAkBM,2BAAA;CnDgyKL;AmDlzKD;EAuBI,cAAA;CnD8xKH;AmDrzKD;EAyBM,8BAAA;CnD+xKL;AmDxxKD;EC1PE,mBAAA;CpDqhLD;AoDnhLC;EACE,eAAA;EACA,0BAAA;EACA,mBAAA;CpDqhLH;AoDxhLC;EAMI,uBAAA;CpDqhLL;AoD3hLC;EASI,eAAA;EACA,0BAAA;CpDqhLL;AoDlhLC;EAEI,0BAAA;CpDmhLL;AmDvyKD;EC7PE,sBAAA;CpDuiLD;AoDriLC;EACE,YAAA;EACA,0BAAA;EACA,sBAAA;CpDuiLH;AoD1iLC;EAMI,0BAAA;CpDuiLL;AoD7iLC;EASI,eAAA;EACA,uBAAA;CpDuiLL;AoDpiLC;EAEI,6BAAA;CpDqiLL;AmDtzKD;EChQE,sBAAA;CpDyjLD;AoDvjLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDyjLH;AoD5jLC;EAMI,0BAAA;CpDyjLL;AoD/jLC;EASI,eAAA;EACA,0BAAA;CpDyjLL;AoDtjLC;EAEI,6BAAA;CpDujLL;AmDr0KD;ECnQE,sBAAA;CpD2kLD;AoDzkLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD2kLH;AoD9kLC;EAMI,0BAAA;CpD2kLL;AoDjlLC;EASI,eAAA;EACA,0BAAA;CpD2kLL;AoDxkLC;EAEI,6BAAA;CpDykLL;AmDp1KD;ECtQE,sBAAA;CpD6lLD;AoD3lLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD6lLH;AoDhmLC;EAMI,0BAAA;CpD6lLL;AoDnmLC;EASI,eAAA;EACA,0BAAA;CpD6lLL;AoD1lLC;EAEI,6BAAA;CpD2lLL;AmDn2KD;ECzQE,sBAAA;CpD+mLD;AoD7mLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD+mLH;AoDlnLC;EAMI,0BAAA;CpD+mLL;AoDrnLC;EASI,eAAA;EACA,0BAAA;CpD+mLL;AoD5mLC;EAEI,6BAAA;CpD6mLL;AqD7nLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrD+nLD;AqDpoLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrD+nLH;AqD1nLD;EACE,uBAAA;CrD4nLD;AqDxnLD;EACE,oBAAA;CrD0nLD;AsDrpLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLgmLT;AsD/pLD;EASI,mBAAA;EACA,kCAAA;CtDypLH;AsDppLD;EACE,cAAA;EACA,mBAAA;CtDspLD;AsDppLD;EACE,aAAA;EACA,mBAAA;CtDspLD;AuD5qLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,0BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBqrLD;AuD7qLC;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtB6rLD;AuDzqLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD2qLH;AwDhsLD;EACE,iBAAA;CxDksLD;AwD9rLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxD6rLD;AwD1rLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CL6gLT;AwDhsLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CLwlLT;AwDpsLD;EACE,mBAAA;EACA,iBAAA;CxDssLD;AwDlsLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDosLD;AwDhsLD;EACE,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDksLD;AwD9rLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,uBAAA;CxDgsLD;AwD9rLC;ElCrEA,WAAA;EAGA,yBAAA;CtBowLD;AwDjsLC;ElCtEA,aAAA;EAGA,0BAAA;CtBwwLD;AwDhsLD;EACE,cAAA;EACA,iCAAA;CxDksLD;AwD9rLD;EACE,iBAAA;CxDgsLD;AwD5rLD;EACE,UAAA;EACA,wBAAA;CxD8rLD;AwDzrLD;EACE,mBAAA;EACA,cAAA;CxD2rLD;AwDvrLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxDyrLD;AwD5rLD;EAQI,iBAAA;EACA,iBAAA;CxDurLH;AwDhsLD;EAaI,kBAAA;CxDsrLH;AwDnsLD;EAiBI,eAAA;CxDqrLH;AwDhrLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDkrLD;AwDhqLD;EAZE;IACE,aAAA;IACA,kBAAA;GxD+qLD;EwD7qLD;InDvEA,kDAAA;IACQ,0CAAA;GLuvLP;EwD5qLD;IAAY,aAAA;GxD+qLX;CACF;AwD1qLD;EAFE;IAAY,aAAA;GxDgrLX;CACF;AyD/zLD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBs1LD;AyD30LC;EnCdA,aAAA;EAGA,0BAAA;CtB01LD;AyD90LC;EAAW,iBAAA;EAAmB,eAAA;CzDk1L/B;AyDj1LC;EAAW,iBAAA;EAAmB,eAAA;CzDq1L/B;AyDp1LC;EAAW,gBAAA;EAAmB,eAAA;CzDw1L/B;AyDv1LC;EAAW,kBAAA;EAAmB,eAAA;CzD21L/B;AyDv1LD;EACE,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;CzDy1LD;AyDr1LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzDu1LD;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,yBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,wBAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;A2Dl7LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,uBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLk5LT;A2D77LC;EAAY,kBAAA;C3Dg8Lb;A2D/7LC;EAAY,kBAAA;C3Dk8Lb;A2Dj8LC;EAAY,iBAAA;C3Do8Lb;A2Dn8LC;EAAY,mBAAA;C3Ds8Lb;A2Dn8LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dq8LD;A2Dl8LD;EACE,kBAAA;C3Do8LD;A2D57LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3D87LH;A2D37LD;EACE,mBAAA;C3D67LD;A2D37LD;EACE,mBAAA;EACA,YAAA;C3D67LD;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;C3D47LL;A2Dz7LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;C3D47LL;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,0BAAA;C3D47LL;A2Dx7LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D07LH;A2Dz7LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,wBAAA;EACA,cAAA;C3D27LL;A4DpjMD;EACE,mBAAA;C5DsjMD;A4DnjMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DqjMD;A4DxjMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CLy4LT;A4D/jMD;;EAcM,eAAA;C5DqjML;A4D3hMC;EA4NF;IvD3DE,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GL86LP;E4DzjMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D4jML;E4D1jMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5D6jML;E4D3jMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5D8jML;CACF;A4DpmMD;;;EA6CI,eAAA;C5D4jMH;A4DzmMD;EAiDI,QAAA;C5D2jMH;A4D5mMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D0jMH;A4DlnMD;EA4DI,WAAA;C5DyjMH;A4DrnMD;EA+DI,YAAA;C5DyjMH;A4DxnMD;;EAmEI,QAAA;C5DyjMH;A4D5nMD;EAuEI,YAAA;C5DwjMH;A4D/nMD;EA0EI,WAAA;C5DwjMH;A4DhjMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;EACA,mCAAA;C5DmjMD;A4D9iMC;EdnGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CopMH;A4DljMC;EACE,WAAA;EACA,SAAA;EdxGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9C6pMH;A4DpjMC;;EAEE,WAAA;EACA,YAAA;EACA,sBAAA;EtCvHF,aAAA;EAGA,0BAAA;CtB4qMD;A4DtlMD;;;;EAuCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DqjMH;A4DhmMD;;EA+CI,UAAA;EACA,mBAAA;C5DqjMH;A4DrmMD;;EAoDI,WAAA;EACA,oBAAA;C5DqjMH;A4D1mMD;;EAyDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DqjMH;A4DhjMG;EACE,iBAAA;C5DkjML;A4D9iMG;EACE,iBAAA;C5DgjML;A4DtiMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5DwiMD;A4DjjMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5D8hMH;A4D7jMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;C5D8hMH;A4DvhMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;C5DyhMD;A4DxhMC;EACE,kBAAA;C5D0hMH;A4Dj/LD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DmhMH;E4D3hMD;;IAYI,mBAAA;G5DmhMH;E4D/hMD;;IAgBI,oBAAA;G5DmhMH;E4D9gMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DghMD;E4D5gMD;IACE,aAAA;G5D8gMD;CACF;A6D7wMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7D6yMH;A6D3yMC;;;;;;;;;;;;;;;;EACE,YAAA;C7D4zMH;AiCp0MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9D+0MD;AiCt0MD;EACE,wBAAA;CjCw0MD;AiCt0MD;EACE,uBAAA;CjCw0MD;AiCh0MD;EACE,yBAAA;CjCk0MD;AiCh0MD;EACE,0BAAA;CjCk0MD;AiCh0MD;EACE,mBAAA;CjCk0MD;AiCh0MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D41MD;AiC9zMD;EACE,yBAAA;CjCg0MD;AiCzzMD;EACE,gBAAA;CjC2zMD;AgE51MD;EACE,oBAAA;ChE81MD;AgEx1MD;;;;ECdE,yBAAA;CjE42MD;AgEv1MD;;;;;;;;;;;;EAYE,yBAAA;ChEy1MD;AgEl1MD;EA6IA;IC7LE,0BAAA;GjEs4MC;EiEr4MD;IAAU,0BAAA;GjEw4MT;EiEv4MD;IAAU,8BAAA;GjE04MT;EiEz4MD;;IACU,+BAAA;GjE44MT;CACF;AgE51MD;EAwIA;IA1II,0BAAA;GhEk2MD;CACF;AgE51MD;EAmIA;IArII,2BAAA;GhEk2MD;CACF;AgE51MD;EA8HA;IAhII,iCAAA;GhEk2MD;CACF;AgE31MD;EAwHA;IC7LE,0BAAA;GjEo6MC;EiEn6MD;IAAU,0BAAA;GjEs6MT;EiEr6MD;IAAU,8BAAA;GjEw6MT;EiEv6MD;;IACU,+BAAA;GjE06MT;CACF;AgEr2MD;EAmHA;IArHI,0BAAA;GhE22MD;CACF;AgEr2MD;EA8GA;IAhHI,2BAAA;GhE22MD;CACF;AgEr2MD;EAyGA;IA3GI,iCAAA;GhE22MD;CACF;AgEp2MD;EAmGA;IC7LE,0BAAA;GjEk8MC;EiEj8MD;IAAU,0BAAA;GjEo8MT;EiEn8MD;IAAU,8BAAA;GjEs8MT;EiEr8MD;;IACU,+BAAA;GjEw8MT;CACF;AgE92MD;EA8FA;IAhGI,0BAAA;GhEo3MD;CACF;AgE92MD;EAyFA;IA3FI,2BAAA;GhEo3MD;CACF;AgE92MD;EAoFA;IAtFI,iCAAA;GhEo3MD;CACF;AgE72MD;EA8EA;IC7LE,0BAAA;GjEg+MC;EiE/9MD;IAAU,0BAAA;GjEk+MT;EiEj+MD;IAAU,8BAAA;GjEo+MT;EiEn+MD;;IACU,+BAAA;GjEs+MT;CACF;AgEv3MD;EAyEA;IA3EI,0BAAA;GhE63MD;CACF;AgEv3MD;EAoEA;IAtEI,2BAAA;GhE63MD;CACF;AgEv3MD;EA+DA;IAjEI,iCAAA;GhE63MD;CACF;AgEt3MD;EAyDA;ICrLE,yBAAA;GjEs/MC;CACF;AgEt3MD;EAoDA;ICrLE,yBAAA;GjE2/MC;CACF;AgEt3MD;EA+CA;ICrLE,yBAAA;GjEggNC;CACF;AgEt3MD;EA0CA;ICrLE,yBAAA;GjEqgNC;CACF;AgEn3MD;ECnJE,yBAAA;CjEygND;AgEh3MD;EA4BA;IC7LE,0BAAA;GjEqhNC;EiEphND;IAAU,0BAAA;GjEuhNT;EiEthND;IAAU,8BAAA;GjEyhNT;EiExhND;;IACU,+BAAA;GjE2hNT;CACF;AgE93MD;EACE,yBAAA;ChEg4MD;AgE33MD;EAqBA;IAvBI,0BAAA;GhEi4MD;CACF;AgE/3MD;EACE,yBAAA;ChEi4MD;AgE53MD;EAcA;IAhBI,2BAAA;GhEk4MD;CACF;AgEh4MD;EACE,yBAAA;ChEk4MD;AgE73MD;EAOA;IATI,iCAAA;GhEm4MD;CACF;AgE53MD;EACA;ICrLE,yBAAA;GjEojNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    color: #000 !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\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  img {\n    max-width: 100% !important;\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  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\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 th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .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 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .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 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .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 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  min-width: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\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  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n  min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\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}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  border-color: #3c763d;\n  background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\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}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  border-color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\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}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  border-color: #a94442;\n  background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n    margin-bottom: 0;\n    padding-top: 7px;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  color: #337ab7;\n  font-weight: normal;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\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: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  text-align: left;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #262626;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  left: auto;\n  right: 0;\n}\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    left: auto;\n    right: 0;\n  }\n  .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\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  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\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.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\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.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n  height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #fff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #ccc;\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.42857143;\n  text-decoration: none;\n  color: #337ab7;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  background-color: #fff;\n  border-color: #ddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  background-color: #fff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  line-height: 1;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-left: auto;\n  margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #3c763d;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #31708f;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n  color: #8a6d3b;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n  color: #a94442;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  text-decoration: none;\n  color: #555;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  background-color: #eeeeee;\n  color: #777777;\n  cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  border: 0;\n  margin-bottom: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\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  left: 0;\n  bottom: 0;\n  height: 100%;\n  width: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: 0;\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.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 12px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #fff;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #fff;\n  bottom: -10px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  outline: 0;\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  margin-top: -10px;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  line-height: 1;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #fff;\n  border-radius: 10px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\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.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! 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","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; // Black prints faster: h5bp.com/s\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    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\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    thead {\n        display: table-header-group; // h5bp.com/t\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    // Bootstrap specific changes start\n\n    // Bootstrap components\n    .navbar {\n        display: none;\n    }\n    .btn,\n    .dropup > .btn {\n        > .caret {\n            border-top-color: #000 !important;\n        }\n    }\n    .label {\n        border: 1px solid #000;\n    }\n\n    .table {\n        border-collapse: collapse !important;\n\n        td,\n        th {\n            background-color: #fff !important;\n        }\n    }\n    .table-bordered {\n        th,\n        td {\n            border: 1px solid #ddd !important;\n        }\n    }\n\n    // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n//  Star\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('@{icon-font-path}@{icon-font-name}.eot');\n  src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n       url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n       url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n       url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n       url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\002a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // WebKit-specific. Other browsers will keep their default outline style.\n  // (Initially tried to also force default via `outline: initial`,\n  // but that seems to erroneously remove the outline in Firefox altogether.)\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  background-color: @state-warning-bg;\n  padding: .2em;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: bold;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  floor((@gutter / 2));\n  padding-right: ceil((@gutter / 2));\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  ceil((@gutter / -2));\n  margin-right: floor((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  ceil((@grid-gutter-width / 2));\n      padding-right: floor((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n}\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n          border-color: darken(@border, 25%);\n    }\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base dashed;\n  border-top:   @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: @cursor-disabled;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    .border-top-radius(@btn-border-radius-base);\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    .border-top-radius(0);\n    .border-bottom-radius(@btn-border-radius-base);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0,0,0,0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: @cursor-disabled;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top:    @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n    padding-left:  (@grid-gutter-width / 2);\n    padding-right: (@grid-gutter-width / 2);\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on 
    ,
      , or
      .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: (@carousel-control-font-size * 1.5);\n height: (@carousel-control-font-size * 1.5);\n margin-top: (@carousel-control-font-size / -2);\n font-size: (@carousel-control-font-size * 1.5);\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: (@carousel-control-font-size / -2);\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: (@carousel-control-font-size / -2);\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\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 are clearfixed.\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// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/public/theme/bootstrap/dist/css/bootstrap.min.css b/public/theme/bootstrap/dist/css/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/public/theme/bootstrap/dist/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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);background-image:-o-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);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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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);background-image:-o-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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);background-image:-o-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);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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/public/theme/bootstrap/dist/css/bootstrap.min.css.map b/public/theme/bootstrap/dist/css/bootstrap.min.css.map new file mode 100644 index 0000000..6c7fa40 --- /dev/null +++ b/public/theme/bootstrap/dist/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/normalize.less","less/print.less","bootstrap.css","dist/css/bootstrap.css","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":";;;;4EAQA,KACE,YAAA,WACA,yBAAA,KACA,qBAAA,KAOF,KACE,OAAA,EAaF,QAAA,MAAA,QAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,KAAA,IAAA,QAAA,QAaE,QAAA,MAQF,MAAA,OAAA,SAAA,MAIE,QAAA,aACA,eAAA,SAQF,sBACE,QAAA,KACA,OAAA,EAQF,SAAA,SAEE,QAAA,KAUF,EACE,iBAAA,YAQF,SAAA,QAEE,QAAA,EAUF,YACE,cAAA,IAAA,OAOF,EAAA,OAEE,YAAA,IAOF,IACE,WAAA,OAQF,GACE,OAAA,MAAA,EACA,UAAA,IAOF,KACE,MAAA,KACA,WAAA,KAOF,MACE,UAAA,IAOF,IAAA,IAEE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IACE,IAAA,MAGF,IACE,OAAA,OAUF,IACE,OAAA,EAOF,eACE,SAAA,OAUF,OACE,OAAA,IAAA,KAOF,GACE,OAAA,EAAA,mBAAA,YAAA,gBAAA,YACA,WAAA,YAOF,IACE,SAAA,KAOF,KAAA,IAAA,IAAA,KAIE,YAAA,UAAA,UACA,UAAA,IAkBF,OAAA,MAAA,SAAA,OAAA,SAKE,OAAA,EACA,KAAA,QACA,MAAA,QAOF,OACE,SAAA,QAUF,OAAA,OAEE,eAAA,KAWF,OAAA,wBAAA,kBAAA,mBAIE,mBAAA,OACA,OAAA,QAOF,iBAAA,qBAEE,OAAA,QAOF,yBAAA,wBAEE,QAAA,EACA,OAAA,EAQF,MACE,YAAA,OAWF,qBAAA,kBAEE,mBAAA,WAAA,gBAAA,WAAA,WAAA,WACA,QAAA,EASF,8CAAA,8CAEE,OAAA,KAQF,mBACE,mBAAA,YACA,gBAAA,YAAA,WAAA,YAAA,mBAAA,UASF,iDAAA,8CAEE,mBAAA,KAOF,SACE,QAAA,MAAA,OAAA,MACA,OAAA,EAAA,IACA,OAAA,IAAA,MAAA,OAQF,OACE,QAAA,EACA,OAAA,EAOF,SACE,SAAA,KAQF,SACE,YAAA,IAUF,MACE,eAAA,EACA,gBAAA,SAGF,GAAA,GAEE,QAAA,uFCjUF,aA7FI,EAAA,OAAA,QAGI,MAAA,eACA,YAAA,eACA,WAAA,cAAA,mBAAA,eACA,WAAA,eAGJ,EAAA,UAEI,gBAAA,UAGJ,cACI,QAAA,KAAA,WAAA,IAGJ,kBACI,QAAA,KAAA,YAAA,IAKJ,6BAAA,mBAEI,QAAA,GAGJ,WAAA,IAEI,OAAA,IAAA,MAAA,KC4KL,kBAAA,MDvKK,MC0KL,QAAA,mBDrKK,IE8KN,GDLC,kBAAA,MDrKK,ICwKL,UAAA,eCUD,GF5KM,GE2KN,EF1KM,QAAA,ECuKL,OAAA,ECSD,GF3KM,GCsKL,iBAAA,MD/JK,QCkKL,QAAA,KCSD,YFtKU,oBCiKT,iBAAA,eD7JK,OCgKL,OAAA,IAAA,MAAA,KD5JK,OC+JL,gBAAA,mBCSD,UFpKU,UC+JT,iBAAA,eDzJS,mBEkKV,mBDLC,OAAA,IAAA,MAAA,gBEjPD,WACA,YAAA,uBFsPD,IAAA,+CE7OC,IAAK,sDAAuD,4BAA6B,iDAAkD,gBAAiB,gDAAiD,eAAgB,+CAAgD,mBAAoB,2EAA4E,cAE7W,WACA,SAAA,SACA,IAAA,IACA,QAAA,aACA,YAAA,uBACA,WAAA,OACA,YAAA,IACA,YAAA,EAIkC,uBAAA,YAAW,wBAAA,UACX,2BAAW,QAAA,QAEX,uBDuPlC,QAAS,QCtPyB,sBFiPnC,uBEjP8C,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,qBAAW,QAAA,QACX,0BAAW,QAAA,QACX,qBAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,sBAAW,QAAA,QACX,yBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,+BAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,gCAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,gCAAW,QAAA,QACX,gCAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,0BAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,mCAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,sBAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,0BAAW,QAAA,QACX,4BAAW,QAAA,QACX,qCAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,mCAAW,QAAA,QACX,uCAAW,QAAA,QACX,gCAAW,QAAA,QACX,oCAAW,QAAA,QACX,qCAAW,QAAA,QACX,yCAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,iCAAW,QAAA,QACX,oCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,qBAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QASX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,+BAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,mCAAW,QAAA,QACX,4BAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,kCAAW,QAAA,QACX,mCAAW,QAAA,QACX,sCAAW,QAAA,QACX,0CAAW,QAAA,QACX,oCAAW,QAAA,QACX,wCAAW,QAAA,QACX,qCAAW,QAAA,QACX,iCAAW,QAAA,QACX,gCAAW,QAAA,QACX,kCAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QCtS/C,0BCgEE,QAAA,QHi+BF,EDNC,mBAAA,WGxhCI,gBAAiB,WFiiCZ,WAAY,WGl+BZ,OADL,QJg+BJ,mBAAA,WGthCI,gBAAiB,WACpB,WAAA,WHyhCD,KGrhCC,UAAW,KAEX,4BAAA,cAEA,KACA,YAAA,iBAAA,UAAA,MAAA,WHuhCD,UAAA,KGnhCC,YAAa,WF4hCb,MAAO,KACP,iBAAkB,KExhClB,OADA,MAEA,OHqhCD,SG/gCC,YAAa,QACb,UAAA,QACA,YAAA,QAEA,EFwhCA,MAAO,QEthCL,gBAAA,KAIF,QH8gCD,QKjkCC,MAAA,QACA,gBAAA,UF6DF,QACE,QAAA,IAAA,KAAA,yBHygCD,eAAA,KGlgCC,OHqgCD,OAAA,ECSD,IACE,eAAgB,ODDjB,4BM/kCC,0BLklCF,gBKnlCE,iBADA,eH4EA,QAAS,MACT,UAAA,KHugCD,OAAA,KGhgCC,aACA,cAAA,IAEA,eACA,QAAA,aC6FA,UAAA,KACK,OAAA,KACG,QAAA,IEvLR,YAAA,WACA,iBAAA,KACA,OAAA,IAAA,MAAA,KN+lCD,cAAA,IGjgCC,mBAAoB,IAAI,IAAI,YAC5B,cAAA,IAAA,IAAA,YHmgCD,WAAA,IAAA,IAAA,YG5/BC,YACA,cAAA,IAEA,GH+/BD,WAAA,KGv/BC,cAAe,KACf,OAAA,EACA,WAAA,IAAA,MAAA,KAEA,SACA,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EHy/BD,OAAA,KGj/BC,SAAA,OF0/BA,KAAM,cEx/BJ,OAAA,EAEA,0BACA,yBACA,SAAA,OACA,MAAA,KHm/BH,OAAA,KGx+BC,OAAQ,EACR,SAAA,QH0+BD,KAAA,KCSD,cACE,OAAQ,QAQV,IACA,IMlpCE,IACA,IACA,IACA,INwoCF,GACA,GACA,GACA,GACA,GACA,GDAC,YAAA,QOlpCC,YAAa,IN2pCb,YAAa,IACb,MAAO,QAoBT,WAZA,UAaA,WAZA,UM5pCI,WN6pCJ,UM5pCI,WN6pCJ,UM5pCI,WN6pCJ,UDMC,WCLD,UACA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SMppCE,YAAa,INwqCb,YAAa,EACb,MAAO,KAGT,IMxqCE,IAJF,IN2qCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UM5qCA,WN8qCA,UACA,UANA,SM5qCI,UN8qCJ,SM3qCA,UN6qCA,SAQE,UAAW,IAGb,IMprCE,IAJF,INurCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UMvrCA,WNyrCA,UACA,UANA,SMxrCI,UN0rCJ,SMtrCA,UNwrCA,SMxrCU,UAAA,IACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KAOR,IADF,GPssCC,UAAA,KCSD,EMzsCE,OAAA,EAAA,EAAA,KAEA,MPosCD,cAAA,KO/rCC,UAAW,KAwOX,YAAa,IA1OX,YAAA,IPssCH,yBO7rCC,MNssCE,UAAW,MMjsCf,OAAA,MAEE,UAAA,IAKF,MP0rCC,KO1rCsB,QAAA,KP6rCtB,iBAAA,QO5rCsB,WP+rCtB,WAAA,KO9rCsB,YPisCtB,WAAA,MOhsCsB,aPmsCtB,WAAA,OOlsCsB,cPqsCtB,WAAA,QOlsCsB,aPqsCtB,YAAA,OOpsCsB,gBPusCtB,eAAA,UOtsCsB,gBPysCtB,eAAA,UOrsCC,iBPwsCD,eAAA,WQ3yCC,YR8yCD,MAAA,KCSD,cOpzCI,MAAA,QAHF,qBDwGF,qBP6sCC,MAAA,QCSD,cO3zCI,MAAA,QAHF,qBD2GF,qBPitCC,MAAA,QCSD,WOl0CI,MAAA,QAHF,kBD8GF,kBPqtCC,MAAA,QCSD,cOz0CI,MAAA,QAHF,qBDiHF,qBPytCC,MAAA,QCSD,aOh1CI,MAAA,QDwHF,oBAHF,oBExHE,MAAA,QACA,YR01CA,MAAO,KQx1CL,iBAAA,QAHF,mBF8HF,mBP2tCC,iBAAA,QCSD,YQ/1CI,iBAAA,QAHF,mBFiIF,mBP+tCC,iBAAA,QCSD,SQt2CI,iBAAA,QAHF,gBFoIF,gBPmuCC,iBAAA,QCSD,YQ72CI,iBAAA,QAHF,mBFuIF,mBPuuCC,iBAAA,QCSD,WQp3CI,iBAAA,QF6IF,kBADF,kBAEE,iBAAA,QPsuCD,aO7tCC,eAAgB,INsuChB,OAAQ,KAAK,EAAE,KMpuCf,cAAA,IAAA,MAAA,KAFF,GPkuCC,GCSC,WAAY,EACZ,cAAe,KM9tCf,MP0tCD,MO3tCD,MAPI,MASF,cAAA,EAIF,eALE,aAAA,EACA,WAAA,KPkuCD,aO9tCC,aAAc,EAKZ,YAAA,KACA,WAAA,KP6tCH,gBOvtCC,QAAS,aACT,cAAA,IACA,aAAA,IAEF,GNguCE,WAAY,EM9tCZ,cAAA,KAGA,GADF,GP0tCC,YAAA,WOttCC,GPytCD,YAAA,IOnnCD,GAvFM,YAAA,EAEA,yBACA,kBGtNJ,MAAA,KACA,MAAA,MACA,SAAA,OVq6CC,MAAA,KO7nCC,WAAY,MAhFV,cAAA,SPgtCH,YAAA,OOtsCD,kBNgtCE,YAAa,OM1sCjB,0BPssCC,YOrsCC,OAAA,KA9IqB,cAAA,IAAA,OAAA,KAmJvB,YACE,UAAA,IACA,eAAA,UAEA,WPssCD,QAAA,KAAA,KOjsCG,OAAA,EAAA,EAAA,KN0sCF,UAAW,OACX,YAAa,IAAI,MAAM,KMptCzB,yBP+sCC,wBO/sCD,yBNytCE,cAAe,EMnsCb,kBAFA,kBACA,iBPksCH,QAAA,MO/rCG,UAAA,INwsCF,YAAa,WACb,MAAO,KMhsCT,yBP2rCC,yBO3rCD,wBAEE,QAAA,cAEA,oBACA,sBACA,cAAA,KP6rCD,aAAA,EOvrCG,WAAA,MNgsCF,aAAc,IAAI,MAAM,KACxB,YAAa,EMhsCX,kCNksCJ,kCMnsCe,iCACX,oCNmsCJ,oCDLC,mCCUC,QAAS,GMjsCX,iCNmsCA,iCMzsCM,gCAOJ,mCNmsCF,mCDLC,kCO7rCC,QAAA,cPksCD,QWv+CC,cAAe,KVg/Cf,WAAY,OACZ,YAAa,WU7+Cb,KXy+CD,IWr+CD,IACE,KACA,YAAA,MAAA,OAAA,SAAA,cAAA,UAEA,KACA,QAAA,IAAA,IXu+CD,UAAA,IWn+CC,MAAO,QACP,iBAAA,QACA,cAAA,IAEA,IACA,QAAA,IAAA,IACA,UAAA,IV4+CA,MU5+CA,KXq+CD,iBAAA,KW3+CC,cAAe,IASb,mBAAA,MAAA,EAAA,KAAA,EAAA,gBACA,WAAA,MAAA,EAAA,KAAA,EAAA,gBAEA,QV6+CF,QU7+CE,EXq+CH,UAAA,KWh+CC,YAAa,IACb,mBAAA,KACA,WAAA,KAEA,IACA,QAAA,MACA,QAAA,MACA,OAAA,EAAA,EAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KACA,WAAA,UXk+CD,UAAA,WW7+CC,iBAAkB,QAehB,OAAA,IAAA,MAAA,KACA,cAAA,IAEA,SACA,QAAA,EACA,UAAA,QXi+CH,MAAA,QW59CC,YAAa,SACb,iBAAA,YACA,cAAA,EC1DF,gBCHE,WAAA,MACA,WAAA,OAEA,Wb8hDD,cAAA,KYxhDC,aAAA,KAqEA,aAAc,KAvEZ,YAAA,KZ+hDH,yBY1hDC,WAkEE,MAAO,OZ69CV,yBY5hDC,WA+DE,MAAO,OZk+CV,0BYzhDC,WCvBA,MAAA,QAGA,iBbmjDD,cAAA,KYthDC,aAAc,KCvBd,aAAA,KACA,YAAA,KCAE,KACE,aAAA,MAEA,YAAA,MAGA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UdgjDL,SAAA,SchiDG,WAAA,IACE,cAAA,KdkiDL,aAAA,Kc1hDG,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud6hDH,MAAA,Kc7hDG,WdgiDH,MAAA,KchiDG,WdmiDH,MAAA,acniDG,WdsiDH,MAAA,actiDG,UdyiDH,MAAA,IcziDG,Ud4iDH,MAAA,ac5iDG,Ud+iDH,MAAA,ac/iDG,UdkjDH,MAAA,IcljDG,UdqjDH,MAAA,acrjDG,UdwjDH,MAAA,acxjDG,Ud2jDH,MAAA,Ic3jDG,Ud8jDH,MAAA,ac/iDG,UdkjDH,MAAA,YcljDG,gBdqjDH,MAAA,KcrjDG,gBdwjDH,MAAA,acxjDG,gBd2jDH,MAAA,ac3jDG,ed8jDH,MAAA,Ic9jDG,edikDH,MAAA,acjkDG,edokDH,MAAA,acpkDG,edukDH,MAAA,IcvkDG,ed0kDH,MAAA,ac1kDG,ed6kDH,MAAA,ac7kDG,edglDH,MAAA,IchlDG,edmlDH,MAAA,ac9kDG,edilDH,MAAA,YchmDG,edmmDH,MAAA,KcnmDG,gBdsmDH,KAAA,KctmDG,gBdymDH,KAAA,aczmDG,gBd4mDH,KAAA,ac5mDG,ed+mDH,KAAA,Ic/mDG,edknDH,KAAA,aclnDG,edqnDH,KAAA,acrnDG,edwnDH,KAAA,IcxnDG,ed2nDH,KAAA,ac3nDG,ed8nDH,KAAA,ac9nDG,edioDH,KAAA,IcjoDG,edooDH,KAAA,ac/nDG,edkoDH,KAAA,YcnnDG,edsnDH,KAAA,KctnDG,kBdynDH,YAAA,KcznDG,kBd4nDH,YAAA,ac5nDG,kBd+nDH,YAAA,ac/nDG,iBdkoDH,YAAA,IcloDG,iBdqoDH,YAAA,acroDG,iBdwoDH,YAAA,acxoDG,iBd2oDH,YAAA,Ic3oDG,iBd8oDH,YAAA,ac9oDG,iBdipDH,YAAA,acjpDG,iBdopDH,YAAA,IcppDG,iBdupDH,YAAA,acvpDG,iBd0pDH,YAAA,Yc5rDG,iBACE,YAAA,EAOJ,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud0rDD,MAAA,Kc1rDC,Wd6rDD,MAAA,Kc7rDC,WdgsDD,MAAA,achsDC,WdmsDD,MAAA,acnsDC,UdssDD,MAAA,IctsDC,UdysDD,MAAA,aczsDC,Ud4sDD,MAAA,ac5sDC,Ud+sDD,MAAA,Ic/sDC,UdktDD,MAAA,acltDC,UdqtDD,MAAA,acrtDC,UdwtDD,MAAA,IcxtDC,Ud2tDD,MAAA,ac5sDC,Ud+sDD,MAAA,Yc/sDC,gBdktDD,MAAA,KcltDC,gBdqtDD,MAAA,acrtDC,gBdwtDD,MAAA,acxtDC,ed2tDD,MAAA,Ic3tDC,ed8tDD,MAAA,ac9tDC,ediuDD,MAAA,acjuDC,edouDD,MAAA,IcpuDC,eduuDD,MAAA,acvuDC,ed0uDD,MAAA,ac1uDC,ed6uDD,MAAA,Ic7uDC,edgvDD,MAAA,ac3uDC,ed8uDD,MAAA,Yc7vDC,edgwDD,MAAA,KchwDC,gBdmwDD,KAAA,KcnwDC,gBdswDD,KAAA,actwDC,gBdywDD,KAAA,aczwDC,ed4wDD,KAAA,Ic5wDC,ed+wDD,KAAA,ac/wDC,edkxDD,KAAA,aclxDC,edqxDD,KAAA,IcrxDC,edwxDD,KAAA,acxxDC,ed2xDD,KAAA,ac3xDC,ed8xDD,KAAA,Ic9xDC,ediyDD,KAAA,ac5xDC,ed+xDD,KAAA,YchxDC,edmxDD,KAAA,KcnxDC,kBdsxDD,YAAA,KctxDC,kBdyxDD,YAAA,aczxDC,kBd4xDD,YAAA,ac5xDC,iBd+xDD,YAAA,Ic/xDC,iBdkyDD,YAAA,aclyDC,iBdqyDD,YAAA,acryDC,iBdwyDD,YAAA,IcxyDC,iBd2yDD,YAAA,ac3yDC,iBd8yDD,YAAA,ac9yDC,iBdizDD,YAAA,IcjzDC,iBdozDD,YAAA,acpzDC,iBduzDD,YAAA,YY9yDD,iBE3CE,YAAA,GAQF,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udw1DD,MAAA,Kcx1DC,Wd21DD,MAAA,Kc31DC,Wd81DD,MAAA,ac91DC,Wdi2DD,MAAA,acj2DC,Udo2DD,MAAA,Icp2DC,Udu2DD,MAAA,acv2DC,Ud02DD,MAAA,ac12DC,Ud62DD,MAAA,Ic72DC,Udg3DD,MAAA,ach3DC,Udm3DD,MAAA,acn3DC,Uds3DD,MAAA,Ict3DC,Udy3DD,MAAA,ac12DC,Ud62DD,MAAA,Yc72DC,gBdg3DD,MAAA,Kch3DC,gBdm3DD,MAAA,acn3DC,gBds3DD,MAAA,act3DC,edy3DD,MAAA,Icz3DC,ed43DD,MAAA,ac53DC,ed+3DD,MAAA,ac/3DC,edk4DD,MAAA,Icl4DC,edq4DD,MAAA,acr4DC,edw4DD,MAAA,acx4DC,ed24DD,MAAA,Ic34DC,ed84DD,MAAA,acz4DC,ed44DD,MAAA,Yc35DC,ed85DD,MAAA,Kc95DC,gBdi6DD,KAAA,Kcj6DC,gBdo6DD,KAAA,acp6DC,gBdu6DD,KAAA,acv6DC,ed06DD,KAAA,Ic16DC,ed66DD,KAAA,ac76DC,edg7DD,KAAA,ach7DC,edm7DD,KAAA,Icn7DC,eds7DD,KAAA,act7DC,edy7DD,KAAA,acz7DC,ed47DD,KAAA,Ic57DC,ed+7DD,KAAA,ac17DC,ed67DD,KAAA,Yc96DC,edi7DD,KAAA,Kcj7DC,kBdo7DD,YAAA,Kcp7DC,kBdu7DD,YAAA,acv7DC,kBd07DD,YAAA,ac17DC,iBd67DD,YAAA,Ic77DC,iBdg8DD,YAAA,ach8DC,iBdm8DD,YAAA,acn8DC,iBds8DD,YAAA,Ict8DC,iBdy8DD,YAAA,acz8DC,iBd48DD,YAAA,ac58DC,iBd+8DD,YAAA,Ic/8DC,iBdk9DD,YAAA,acl9DC,iBdq9DD,YAAA,YYz8DD,iBE9CE,YAAA,GAQF,0BACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Uds/DD,MAAA,Kct/DC,Wdy/DD,MAAA,Kcz/DC,Wd4/DD,MAAA,ac5/DC,Wd+/DD,MAAA,ac//DC,UdkgED,MAAA,IclgEC,UdqgED,MAAA,acrgEC,UdwgED,MAAA,acxgEC,Ud2gED,MAAA,Ic3gEC,Ud8gED,MAAA,ac9gEC,UdihED,MAAA,acjhEC,UdohED,MAAA,IcphEC,UduhED,MAAA,acxgEC,Ud2gED,MAAA,Yc3gEC,gBd8gED,MAAA,Kc9gEC,gBdihED,MAAA,acjhEC,gBdohED,MAAA,acphEC,eduhED,MAAA,IcvhEC,ed0hED,MAAA,ac1hEC,ed6hED,MAAA,ac7hEC,edgiED,MAAA,IchiEC,edmiED,MAAA,acniEC,edsiED,MAAA,actiEC,edyiED,MAAA,IcziEC,ed4iED,MAAA,acviEC,ed0iED,MAAA,YczjEC,ed4jED,MAAA,Kc5jEC,gBd+jED,KAAA,Kc/jEC,gBdkkED,KAAA,aclkEC,gBdqkED,KAAA,acrkEC,edwkED,KAAA,IcxkEC,ed2kED,KAAA,ac3kEC,ed8kED,KAAA,ac9kEC,edilED,KAAA,IcjlEC,edolED,KAAA,acplEC,edulED,KAAA,acvlEC,ed0lED,KAAA,Ic1lEC,ed6lED,KAAA,acxlEC,ed2lED,KAAA,Yc5kEC,ed+kED,KAAA,Kc/kEC,kBdklED,YAAA,KcllEC,kBdqlED,YAAA,acrlEC,kBdwlED,YAAA,acxlEC,iBd2lED,YAAA,Ic3lEC,iBd8lED,YAAA,ac9lEC,iBdimED,YAAA,acjmEC,iBdomED,YAAA,IcpmEC,iBdumED,YAAA,acvmEC,iBd0mED,YAAA,ac1mEC,iBd6mED,YAAA,Ic7mEC,iBdgnED,YAAA,achnEC,iBdmnED,YAAA,YetrED,iBACA,YAAA,GAGA,MACA,iBAAA,YAEA,QfyrED,YAAA,IevrEC,eAAgB,IAChB,MAAA,KfyrED,WAAA,KelrEC,GACA,WAAA,KfsrED,OexrEC,MAAO,KdmsEP,UAAW,KACX,cAAe,KcvrET,mBd0rER,mBczrEQ,mBAHA,mBACA,mBd0rER,mBDHC,QAAA,IensEC,YAAa,WAoBX,eAAA,IACA,WAAA,IAAA,MAAA,KArBJ,mBdktEE,eAAgB,OAChB,cAAe,IAAI,MAAM,KDJ1B,uCCMD,uCcrtEA,wCdstEA,wCclrEI,2CANI,2CforEP,WAAA,EezqEG,mBf4qEH,WAAA,IAAA,MAAA,KCWD,cACE,iBAAkB,Kc/pEpB,6BdkqEA,6BcjqEE,6BAZM,6BfsqEP,6BCMD,6BDHC,QAAA,ICWD,gBACE,OAAQ,IAAI,MAAM,Kc1qEpB,4Bd6qEA,4Bc7qEA,4BAQQ,4Bf8pEP,4BCMD,4Bc7pEM,OAAA,IAAA,MAAA,KAYF,4BAFJ,4BfopEC,oBAAA,IevoEG,yCf0oEH,iBAAA,QehoEC,4BACA,iBAAA,QfooED,uBe9nEG,SAAA,OdyoEF,QAAS,acxoEL,MAAA,KAEA,sBfioEL,sBgB7wEC,SAAA,OfwxEA,QAAS,WACT,MAAO,KAST,0BerxEE,0Bf+wEF,0BAGA,0BexxEM,0BAMJ,0BfgxEF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCgBlyEC,sCAAA,oCfyyEF,sCetxEM,sCf2xEJ,iBAAkB,QASpB,2Be1yEE,2BfoyEF,2BAGA,2Be7yEM,2BAMJ,2BfqyEF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBvzEC,uCAAA,qCf8zEF,uCe3yEM,uCfgzEJ,iBAAkB,QASpB,wBe/zEE,wBfyzEF,wBAGA,wBel0EM,wBAMJ,wBf0zEF,wBAGA,wBACA,wBDNC,wBCAD,wBAGA,wBASE,iBAAkB,QDLnB,oCgB50EC,oCAAA,kCfm1EF,oCeh0EM,oCfq0EJ,iBAAkB,QASpB,2Bep1EE,2Bf80EF,2BAGA,2Bev1EM,2BAMJ,2Bf+0EF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBj2EC,uCAAA,qCfw2EF,uCer1EM,uCf01EJ,iBAAkB,QASpB,0Bez2EE,0Bfm2EF,0BAGA,0Be52EM,0BAMJ,0Bfo2EF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCehtEC,sCADF,oCdwtEA,sCe12EM,sCDoJJ,iBAAA,QA6DF,kBACE,WAAY,KA3DV,WAAA,KAEA,oCACA,kBACA,MAAA,KfotED,cAAA,Ke7pEC,WAAY,OAnDV,mBAAA,yBfmtEH,OAAA,IAAA,MAAA,KCWD,yBACE,cAAe,Ec5qEjB,qCd+qEA,qCcjtEI,qCARM,qCfktET,qCCMD,qCDHC,YAAA,OCWD,kCACE,OAAQ,EcvrEV,0Dd0rEA,0Dc1rEA,0DAzBU,0Df4sET,0DCMD,0DAME,YAAa,Ec/rEf,yDdksEA,yDclsEA,yDArBU,yDfgtET,yDCMD,yDAME,aAAc,EDLjB,yDe1sEW,yDEzNV,yDjBk6EC,yDiBj6ED,cAAA,GAMA,SjBk6ED,UAAA,EiB/5EC,QAAS,EACT,OAAA,EACA,OAAA,EAEA,OACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,cAAA,KACA,UAAA,KjBi6ED,YAAA,QiB95EC,MAAO,KACP,OAAA,EACA,cAAA,IAAA,MAAA,QAEA,MjBg6ED,QAAA,aiBr5EC,UAAW,Kb4BX,cAAA,IACG,YAAA,IJ63EJ,mBiBr5EC,mBAAoB,WhBg6EjB,gBAAiB,WgB95EpB,WAAA,WjBy5ED,qBiBv5EC,kBAGA,OAAQ,IAAI,EAAE,EACd,WAAA,MjBs5ED,YAAA,OiBj5EC,iBACA,QAAA,MAIF,kBhB25EE,QAAS,MgBz5ET,MAAA,KAIF,iBAAA,ahB05EE,OAAQ,KI99ER,uBY2EF,2BjB64EC,wBiB54EC,QAAA,IAAA,KAAA,yBACA,eAAA,KAEA,OACA,QAAA,MjB+4ED,YAAA,IiBr3EC,UAAW,KACX,YAAA,WACA,MAAA,KAEA,cACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KbxDA,iBAAA,KACQ,iBAAA,KAyHR,OAAA,IAAA,MAAA,KACK,cAAA,IACG,mBAAA,MAAA,EAAA,IAAA,IAAA,iBJwzET,WAAA,MAAA,EAAA,IAAA,IAAA,iBkBh8EC,mBAAA,aAAA,YAAA,KAAA,mBAAA,YAAA,KACE,cAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KACA,WAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KdWM,oBJy7ET,aAAA,QIx5EC,QAAA,EACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBAEF,gCAA0B,MAAA,KJ25E3B,QAAA,EI15EiC,oCJ65EjC,MAAA,KiBh4EG,yCACA,MAAA,KAQF,0BhBs4EA,iBAAkB,YAClB,OAAQ,EgBn4EN,wBjB63EH,wBiB13EC,iChBq4EA,iBAAkB,KgBn4EhB,QAAA,EAIF,wBACE,iCjB03EH,OAAA,YiB72EC,sBjBg3ED,OAAA,KiB91EG,mBhB02EF,mBAAoB,KAEtB,qDgB32EM,8BjBo2EH,8BiBj2EC,wCAAA,+BhB62EA,YAAa,KgB32EX,iCjBy2EH,iCiBt2EC,2CAAA,kChB02EF,0BACA,0BACA,oCACA,2BAKE,YAAa,KgBh3EX,iCjB82EH,iCACF,2CiBp2EC,kChBu2EA,0BACA,0BACA,oCACA,2BgBz2EA,YAAA,MhBi3EF,YgBv2EE,cAAA,KAGA,UADA,OjBi2ED,SAAA,SiBr2EC,QAAS,MhBg3ET,WAAY,KgBx2EV,cAAA,KAGA,gBADA,aAEA,WAAA,KjBi2EH,aAAA,KiB91EC,cAAe,EhBy2Ef,YAAa,IACb,OAAQ,QgBp2ER,+BjBg2ED,sCiBl2EC,yBACA,gCAIA,SAAU,ShBw2EV,WAAY,MgBt2EZ,YAAA,MAIF,oBAAA,cAEE,WAAA,KAGA,iBADA,cAEA,SAAA,SACA,QAAA,aACA,aAAA,KjB61ED,cAAA,EiB31EC,YAAa,IhBs2Eb,eAAgB,OgBp2EhB,OAAA,QAUA,kCjBo1ED,4BCWC,WAAY,EACZ,YAAa,KgBv1Eb,wCAAA,qCjBm1ED,8BCOD,+BgBh2EI,2BhB+1EJ,4BAME,OAAQ,YDNT,0BiBv1EG,uBAMF,oCAAA,iChB61EA,OAAQ,YDNT,yBiBp1EK,sBAaJ,mCAFF,gCAGE,OAAA,YAGA,qBjBy0ED,WAAA,KiBv0EC,YAAA,IhBk1EA,eAAgB,IgBh1Ed,cAAA,EjB00EH,8BiB5zED,8BCnQE,cAAA,EACA,aAAA,EAEA,UACA,OAAA,KlBkkFD,QAAA,IAAA,KkBhkFC,UAAA,KACE,YAAA,IACA,cAAA,IAGF,gBjB0kFA,OAAQ,KiBxkFN,YAAA,KD2PA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjBy0EH,QAAA,IAAA,KiB/0EC,UAAW,KAST,YAAA,IACA,cAAA,IAVJ,mChB81EE,OAAQ,KgBh1EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjBy0EH,WAAA,KiBr0EC,QAAS,IAAI,KC/Rb,UAAA,KACA,YAAA,IAEA,UACA,OAAA,KlBumFD,QAAA,KAAA,KkBrmFC,UAAA,KACE,YAAA,UACA,cAAA,IAGF,gBjB+mFA,OAAQ,KiB7mFN,YAAA,KDuRA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjBk1EH,QAAA,KAAA,KiBx1EC,UAAW,KAST,YAAA,UACA,cAAA,IAVJ,mChBu2EE,OAAQ,KgBz1EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjBk1EH,WAAA,KiBz0EC,QAAS,KAAK,KAEd,UAAA,KjB00ED,YAAA,UiBt0EG,cjBy0EH,SAAA,SiBp0EC,4BACA,cAAA,OAEA,uBACA,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,MACA,MAAA,KjBu0ED,OAAA,KiBr0EC,YAAa,KhBg1Eb,WAAY,OACZ,eAAgB,KDLjB,oDiBv0EC,uCADA,iCAGA,MAAO,KhBg1EP,OAAQ,KACR,YAAa,KDLd,oDiBv0EC,uCADA,iCAKA,MAAO,KhB80EP,OAAQ,KACR,YAAa,KAKf,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBruFG,mCAJA,yBD0ZJ,gCbvWE,MAAA,QJ2rFD,2BkBxuFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJgsFD,iCiBz1EC,aAAc,QC5YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlByuFH,gCiB91EC,MAAO,QCtYL,iBAAA,QlBuuFH,aAAA,QCWD,oCACE,MAAO,QAKT,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBnwFG,mCAJA,yBD6ZJ,gCb1WE,MAAA,QJytFD,2BkBtwFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJ8tFD,iCiBp3EC,aAAc,QC/YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBuwFH,gCiBz3EC,MAAO,QCzYL,iBAAA,QlBqwFH,aAAA,QCWD,oCACE,MAAO,QAKT,qBAEA,4BAJA,0BADA,uBAEA,kBAEA,yBDNC,0BkBjyFG,iCAJA,uBDgaJ,8Bb7WE,MAAA,QJuvFD,yBkBpyFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJ4vFD,+BiB/4EC,aAAc,QClZZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBqyFH,8BiBp5EC,MAAO,QC5YL,iBAAA,QlBmyFH,aAAA,QiB/4EG,kCjBk5EH,MAAA,QiB/4EG,2CjBk5EH,IAAA,KiBv4EC,mDACA,IAAA,EAEA,YjB04ED,QAAA,MiBvzEC,WAAY,IAwEZ,cAAe,KAtIX,MAAA,QAEA,yBjBy3EH,yBiBrvEC,QAAS,aA/HP,cAAA,EACA,eAAA,OjBw3EH,2BiB1vEC,QAAS,aAxHP,MAAA,KjBq3EH,eAAA,OiBj3EG,kCACA,QAAA,aAmHJ,0BhB4wEE,QAAS,aACT,eAAgB,OgBr3Ed,wCjB82EH,6CiBtwED,2CjBywEC,MAAA,KiB72EG,wCACA,MAAA,KAmGJ,4BhBwxEE,cAAe,EgBp3Eb,eAAA,OAGA,uBADA,oBjB82EH,QAAA,aiBpxEC,WAAY,EhB+xEZ,cAAe,EgBr3EX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB6xEC,sCiBx2EG,SAAA,SjB22EH,YAAA,EiBh2ED,kDhB42EE,IAAK,GgBl2EL,2BjB+1EH,kCiBh2EG,wBAEA,+BAXF,YAAa,IhBo3Eb,WAAY,EgBn2EV,cAAA,EJviBF,2BIshBF,wBJrhBE,WAAA,KI4jBA,6BAyBA,aAAc,MAnCV,YAAA,MAEA,yBjBw1EH,gCACF,YAAA,IiBx3EG,cAAe,EAwCf,WAAA,OAwBJ,sDAdQ,MAAA,KjB80EL,yBACF,+CiBn0EC,YAAA,KAEE,UAAW,MjBs0EZ,yBACF,+CmBp6FG,YAAa,IACf,UAAA,MAGA,KACA,QAAA,aACA,QAAA,IAAA,KAAA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,WACA,WAAA,OC0CA,YAAA,OACA,eAAA,OACA,iBAAA,aACA,aAAA,ahB+JA,OAAA,QACG,oBAAA,KACC,iBAAA,KACI,gBAAA,KJ+tFT,YAAA,KmBv6FG,iBAAA,KlBm7FF,OAAQ,IAAI,MAAM,YAClB,cAAe,IkB96Ff,kBdzBA,kBACA,WLk8FD,kBCOD,kBADA,WAME,QAAS,IAAI,KAAK,yBAClB,eAAgB,KkBh7FhB,WnBy6FD,WmB56FG,WlBw7FF,MAAO,KkBn7FL,gBAAA,Kf6BM,YADR,YJk5FD,iBAAA,KmBz6FC,QAAA,ElBq7FA,mBAAoB,MAAM,EAAE,IAAI,IAAI,iBAC5B,WAAY,MAAM,EAAE,IAAI,IAAI,iBoBh+FpC,cAGA,ejB8DA,wBACQ,OAAA,YJ05FT,OAAA,kBmBz6FG,mBAAA,KlBq7FM,WAAY,KkBn7FhB,QAAA,IASN,eC3DE,yBACA,eAAA,KpBi+FD,aoB99FC,MAAA,KnB0+FA,iBAAkB,KmBx+FhB,aAAA,KpBk+FH,mBoBh+FO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBi+FH,mBoB99FC,MAAA,KnB0+FA,iBAAkB,QAClB,aAAc,QmBt+FR,oBADJ,oBpBi+FH,mCoB99FG,MAAA,KnB0+FF,iBAAkB,QAClB,aAAc,QmBt+FN,0BnB4+FV,0BAHA,0BmB1+FM,0BnB4+FN,0BAHA,0BDFC,yCoBx+FK,yCnB4+FN,yCmBv+FE,MAAA,KnB++FA,iBAAkB,QAClB,aAAc,QmBx+FZ,oBpBg+FH,oBoBh+FG,mCnB6+FF,iBAAkB,KmBz+FV,4BnB8+FV,4BAHA,4BDHC,6BCOD,6BAHA,6BkB39FA,sCClBM,sCnB8+FN,sCmBx+FI,iBAAA,KACA,aAAA,KDcJ,oBC9DE,MAAA,KACA,iBAAA,KpB0hGD,aoBvhGC,MAAA,KnBmiGA,iBAAkB,QmBjiGhB,aAAA,QpB2hGH,mBoBzhGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB0hGH,mBoBvhGC,MAAA,KnBmiGA,iBAAkB,QAClB,aAAc,QmB/hGR,oBADJ,oBpB0hGH,mCoBvhGG,MAAA,KnBmiGF,iBAAkB,QAClB,aAAc,QmB/hGN,0BnBqiGV,0BAHA,0BmBniGM,0BnBqiGN,0BAHA,0BDFC,yCoBjiGK,yCnBqiGN,yCmBhiGE,MAAA,KnBwiGA,iBAAkB,QAClB,aAAc,QmBjiGZ,oBpByhGH,oBoBzhGG,mCnBsiGF,iBAAkB,KmBliGV,4BnBuiGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBjhGA,sCCrBM,sCnBuiGN,sCmBjiGI,iBAAA,QACA,aAAA,QDkBJ,oBClEE,MAAA,QACA,iBAAA,KpBmlGD,aoBhlGC,MAAA,KnB4lGA,iBAAkB,QmB1lGhB,aAAA,QpBolGH,mBoBllGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBmlGH,mBoBhlGC,MAAA,KnB4lGA,iBAAkB,QAClB,aAAc,QmBxlGR,oBADJ,oBpBmlGH,mCoBhlGG,MAAA,KnB4lGF,iBAAkB,QAClB,aAAc,QmBxlGN,0BnB8lGV,0BAHA,0BmB5lGM,0BnB8lGN,0BAHA,0BDFC,yCoB1lGK,yCnB8lGN,yCmBzlGE,MAAA,KnBimGA,iBAAkB,QAClB,aAAc,QmB1lGZ,oBpBklGH,oBoBllGG,mCnB+lGF,iBAAkB,KmB3lGV,4BnBgmGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBtkGA,sCCzBM,sCnBgmGN,sCmB1lGI,iBAAA,QACA,aAAA,QDsBJ,oBCtEE,MAAA,QACA,iBAAA,KpB4oGD,UoBzoGC,MAAA,KnBqpGA,iBAAkB,QmBnpGhB,aAAA,QpB6oGH,gBoB3oGO,gBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB4oGH,gBoBzoGC,MAAA,KnBqpGA,iBAAkB,QAClB,aAAc,QmBjpGR,iBADJ,iBpB4oGH,gCoBzoGG,MAAA,KnBqpGF,iBAAkB,QAClB,aAAc,QmBjpGN,uBnBupGV,uBAHA,uBmBrpGM,uBnBupGN,uBAHA,uBDFC,sCoBnpGK,sCnBupGN,sCmBlpGE,MAAA,KnB0pGA,iBAAkB,QAClB,aAAc,QmBnpGZ,iBpB2oGH,iBoB3oGG,gCnBwpGF,iBAAkB,KmBppGV,yBnBypGV,yBAHA,yBDHC,0BCOD,0BAHA,0BkB3nGA,mCC7BM,mCnBypGN,mCmBnpGI,iBAAA,QACA,aAAA,QD0BJ,iBC1EE,MAAA,QACA,iBAAA,KpBqsGD,aoBlsGC,MAAA,KnB8sGA,iBAAkB,QmB5sGhB,aAAA,QpBssGH,mBoBpsGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBqsGH,mBoBlsGC,MAAA,KnB8sGA,iBAAkB,QAClB,aAAc,QmB1sGR,oBADJ,oBpBqsGH,mCoBlsGG,MAAA,KnB8sGF,iBAAkB,QAClB,aAAc,QmB1sGN,0BnBgtGV,0BAHA,0BmB9sGM,0BnBgtGN,0BAHA,0BDFC,yCoB5sGK,yCnBgtGN,yCmB3sGE,MAAA,KnBmtGA,iBAAkB,QAClB,aAAc,QmB5sGZ,oBpBosGH,oBoBpsGG,mCnBitGF,iBAAkB,KmB7sGV,4BnBktGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBhrGA,sCCjCM,sCnBktGN,sCmB5sGI,iBAAA,QACA,aAAA,QD8BJ,oBC9EE,MAAA,QACA,iBAAA,KpB8vGD,YoB3vGC,MAAA,KnBuwGA,iBAAkB,QmBrwGhB,aAAA,QpB+vGH,kBoB7vGO,kBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB8vGH,kBoB3vGC,MAAA,KnBuwGA,iBAAkB,QAClB,aAAc,QmBnwGR,mBADJ,mBpB8vGH,kCoB3vGG,MAAA,KnBuwGF,iBAAkB,QAClB,aAAc,QmBnwGN,yBnBywGV,yBAHA,yBmBvwGM,yBnBywGN,yBAHA,yBDFC,wCoBrwGK,wCnBywGN,wCmBpwGE,MAAA,KnB4wGA,iBAAkB,QAClB,aAAc,QmBrwGZ,mBpB6vGH,mBoB7vGG,kCnB0wGF,iBAAkB,KmBtwGV,2BnB2wGV,2BAHA,2BDHC,4BCOD,4BAHA,4BkBruGA,qCCrCM,qCnB2wGN,qCmBrwGI,iBAAA,QACA,aAAA,QDuCJ,mBACE,MAAA,QACA,iBAAA,KnB+tGD,UmB5tGC,YAAA,IlBwuGA,MAAO,QACP,cAAe,EAEjB,UGzwGE,iBemCE,iBflCM,oBJkwGT,6BmB7tGC,iBAAA,YlByuGA,mBAAoB,KACZ,WAAY,KkBtuGlB,UAEF,iBAAA,gBnB6tGD,gBmB3tGG,aAAA,YnBiuGH,gBmB/tGG,gBAIA,MAAA,QlBuuGF,gBAAiB,UACjB,iBAAkB,YDNnB,0BmBhuGK,0BAUN,mCATM,mClB2uGJ,MAAO,KmB1yGP,gBAAA,KAGA,mBADA,QpBmyGD,QAAA,KAAA,KmBztGC,UAAW,KlBquGX,YAAa,UmBjzGb,cAAA,IAGA,mBADA,QpB0yGD,QAAA,IAAA,KmB5tGC,UAAW,KlBwuGX,YAAa,ImBxzGb,cAAA,IAGA,mBADA,QpBizGD,QAAA,IAAA,ImB3tGC,UAAW,KACX,YAAA,IACA,cAAA,IAIF,WACE,QAAA,MnB2tGD,MAAA,KCYD,sBACE,WAAY,IqBz3GZ,6BADF,4BtBk3GC,6BI7rGC,MAAA,KAEQ,MJisGT,QAAA,EsBr3GC,mBAAA,QAAA,KAAA,OACE,cAAA,QAAA,KAAA,OtBu3GH,WAAA,QAAA,KAAA,OsBl3GC,StBq3GD,QAAA,EsBn3Ga,UtBs3Gb,QAAA,KsBr3Ga,atBw3Gb,QAAA,MsBv3Ga,etB03Gb,QAAA,UsBt3GC,kBACA,QAAA,gBlBwKA,YACQ,SAAA,SAAA,OAAA,EAOR,SAAA,OACQ,mCAAA,KAAA,8BAAA,KAGR,2BAAA,KACQ,4BAAA,KAAA,uBAAA,KJ2sGT,oBAAA,KuBr5GC,4BAA6B,OAAQ,WACrC,uBAAA,OAAA,WACA,oBAAA,OAAA,WAEA,OACA,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,IACA,eAAA,OvBu5GD,WAAA,IAAA,OuBn5GC,WAAY,IAAI,QtBk6GhB,aAAc,IAAI,MAAM,YsBh6GxB,YAAA,IAAA,MAAA,YAKA,UADF,QvBo5GC,SAAA,SuB94GC,uBACA,QAAA,EAEA,eACA,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,IAAA,EACA,OAAA,IAAA,EAAA,EACA,UAAA,KACA,WAAA,KACA,WAAA,KnBsBA,iBAAA,KACQ,wBAAA,YmBrBR,gBAAA,YtB+5GA,OsB/5GA,IAAA,MAAA,KvBk5GD,OAAA,IAAA,MAAA,gBuB74GC,cAAA,IACE,mBAAA,EAAA,IAAA,KAAA,iBACA,WAAA,EAAA,IAAA,KAAA,iBAzBJ,0BCzBE,MAAA,EACA,KAAA,KAEA,wBxBo8GD,OAAA,IuB96GC,OAAQ,IAAI,EAmCV,SAAA,OACA,iBAAA,QAEA,oBACA,QAAA,MACA,QAAA,IAAA,KACA,MAAA,KvB84GH,YAAA,IuBx4GC,YAAA,WtBw5GA,MAAO,KsBt5GL,YAAA,OvB44GH,0BuB14GG,0BAMF,MAAA,QtBo5GA,gBAAiB,KACjB,iBAAkB,QsBj5GhB,yBAEA,+BADA,+BvBu4GH,MAAA,KuB73GC,gBAAA,KtB64GA,iBAAkB,QAClB,QAAS,EDZV,2BuB33GC,iCAAA,iCAEE,MAAA,KEzGF,iCF2GE,iCAEA,gBAAA,KvB63GH,OAAA,YuBx3GC,iBAAkB,YAGhB,iBAAA,KvBw3GH,OAAA,0DuBn3GG,qBvBs3GH,QAAA,MuB72GC,QACA,QAAA,EAQF,qBACE,MAAA,EACA,KAAA,KAIF,oBACE,MAAA,KACA,KAAA,EAEA,iBACA,QAAA,MACA,QAAA,IAAA,KvBw2GD,UAAA,KuBp2GC,YAAa,WACb,MAAA,KACA,YAAA,OAEA,mBACA,SAAA,MACA,IAAA,EvBs2GD,MAAA,EuBl2GC,OAAQ,EACR,KAAA,EACA,QAAA,IAQF,2BtB42GE,MAAO,EsBx2GL,KAAA,KAEA,eACA,sCvB41GH,QAAA,GuBn2GC,WAAY,EtBm3GZ,cAAe,IAAI,OsBx2GjB,cAAA,IAAA,QAEA,uBvB41GH,8CuBv0GC,IAAK,KAXL,OAAA,KApEA,cAAA,IvB25GC,yBuBv1GD,6BA1DA,MAAA,EACA,KAAA,KvBq5GD,kC0BpiHG,MAAO,KzBojHP,KAAM,GyBhjHR,W1BsiHD,oB0B1iHC,SAAU,SzB0jHV,QAAS,ayBpjHP,eAAA,OAGA,yB1BsiHH,gBCgBC,SAAU,SACV,MAAO,KyB7iHT,gC1BsiHC,gCCYD,+BAFA,+ByBhjHA,uBANM,uBzBujHN,sBAFA,sBAQE,QAAS,EyBljHP,qB1BuiHH,2B0BliHD,2BACE,iC1BoiHD,YAAA,KCgBD,aACE,YAAa,KDZd,kB0B1iHD,wBAAA,0BzB2jHE,MAAO,KDZR,kB0B/hHD,wBACE,0B1BiiHD,YAAA,I0B5hHC,yE1B+hHD,cAAA,E2BhlHC,4BACG,YAAA,EDsDL,mEzB6iHE,wBAAyB,E0B5lHzB,2BAAA,E3BilHD,6C0B5hHD,8CACE,uBAAA,E1B8hHD,0BAAA,E0B3hHC,sB1B8hHD,MAAA,KCgBD,8D0B/mHE,cAAA,E3BomHD,mE0B3hHD,oECjEE,wBAAA,EACG,2BAAA,EDqEL,oEzB0iHE,uBAAwB,EyBxiHxB,0BAAA,EAiBF,mCACE,iCACA,QAAA,EAEF,iCACE,cAAA,IACA,aAAA,IAKF,oCtB/CE,cAAA,KACQ,aAAA,KsBkDR,iCtBnDA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBsByDV,0CACE,mBAAA,K1BugHD,WAAA,K0BngHC,YACA,YAAA,EAGF,eACE,aAAA,IAAA,IAAA,E1BqgHD,oBAAA,ECgBD,uBACE,aAAc,EAAE,IAAI,IyB1gHlB,yBACA,+BACA,oC1B+/GH,QAAA,M0BtgHC,MAAO,KAcH,MAAA,K1B2/GL,UAAA,KCgBD,oCACE,MAAO,KyBpgHL,8BACA,oC1By/GH,oC0Bp/GC,0CACE,WAAA,K1Bs/GH,YAAA,E2B/pHC,4DACC,cAAA,EAQA,sD3B4pHF,uBAAA,I0Bt/GC,wBAAA,IC/KA,2BAAA,EACC,0BAAA,EAQA,sD3BkqHF,uBAAA,E0Bv/GC,wBAAyB,EACzB,2BAAA,I1By/GD,0BAAA,ICgBD,uE0BtrHE,cAAA,E3B2qHD,4E0Bt/GD,6EC7LE,2BAAA,EACC,0BAAA,EDoMH,6EACE,uBAAA,EACA,wBAAA,EAEA,qB1Bo/GD,QAAA,M0Bx/GC,MAAO,KzBwgHP,aAAc,MyBjgHZ,gBAAA,SAEA,0B1Bq/GH,gC0B9/GC,QAAS,WAYP,MAAA,K1Bq/GH,MAAA,G0Bj/GG,qC1Bo/GH,MAAA,KCgBD,+CACE,KAAM,KyB7+GF,gDAFA,6C1Bs+GL,2D0Br+GK,wDEzOJ,SAAU,SACV,KAAA,cACA,eAAA,K5BitHD,a4B7sHC,SAAA,SACE,QAAA,MACA,gBAAA,S5BgtHH,0B4BxtHC,MAAO,KAeL,cAAA,EACA,aAAA,EAOA,2BACA,SAAA,S5BusHH,QAAA,E4BrsHG,MAAA,KACE,MAAA,K5BusHL,cAAA,ECgBD,iCACE,QAAS,EiBnrHT,8BACA,mCACA,sCACA,OAAA,KlBwqHD,QAAA,KAAA,KkBtqHC,UAAA,KjBsrHA,YAAa,UACb,cAAe,IiBrrHb,oClB0qHH,yCkBvqHC,4CjBurHA,OAAQ,KACR,YAAa,KDTd,8C4B/sHD,mDAAA,sD3B0tHA,sCACA,2CiBzrHI,8CjB8rHF,OAAQ,KiB1sHR,8BACA,mCACA,sCACA,OAAA,KlB+rHD,QAAA,IAAA,KkB7rHC,UAAA,KjB6sHA,YAAa,IACb,cAAe,IiB5sHb,oClBisHH,yCkB9rHC,4CjB8sHA,OAAQ,KACR,YAAa,KDTd,8C4B7tHD,mDAAA,sD3BwuHA,sCACA,2CiBhtHI,8CjBqtHF,OAAQ,K2BzuHR,2B5B6tHD,mB4B7tHC,iB3B8uHA,QAAS,W2BzuHX,8D5B6tHC,sD4B7tHD,oDAEE,cAAA,EAEA,mB5B+tHD,iB4B1tHC,MAAO,GACP,YAAA,OACA,eAAA,OAEA,mBACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,K5B4tHD,WAAA,O4BztHC,iBAAA,KACE,OAAA,IAAA,MAAA,KACA,cAAA,I5B4tHH,4B4BztHC,QAAA,IAAA,KACE,UAAA,KACA,cAAA,I5B4tHH,4B4B/uHC,QAAS,KAAK,K3B+vHd,UAAW,K2BruHT,cAAA,IAKJ,wCAAA,qC3BquHE,WAAY,EAEd,uCACA,+BACA,kC0B70HE,6CACG,8CC4GL,6D5BqtHC,wE4BptHC,wBAAA,E5ButHD,2BAAA,ECgBD,+BACE,aAAc,EAEhB,sCACA,8B2BhuHA,+D5BstHC,oDCWD,iC0Bl1HE,4CACG,6CCiHH,uBAAA,E5BwtHD,0BAAA,E4BltHC,8BAGA,YAAA,E5BotHD,iB4BxtHC,SAAU,SAUR,UAAA,E5BitHH,YAAA,O4B/sHK,sB5BktHL,SAAA,SCgBD,2BACE,YAAa,K2BxtHb,6BAAA,4B5B4sHD,4B4BzsHK,QAAA,EAGJ,kCAAA,wCAGI,aAAA,K5B4sHL,iC6B12HD,uCACE,QAAA,EACA,YAAA,K7B62HD,K6B/2HC,aAAc,EAOZ,cAAA,EACA,WAAA,KARJ,QAWM,SAAA,SACA,QAAA,M7B42HL,U6B12HK,SAAA,S5B03HJ,QAAS,M4Bx3HH,QAAA,KAAA,KAMJ,gB7Bu2HH,gB6Bt2HK,gBAAA,K7By2HL,iBAAA,KCgBD,mB4Br3HQ,MAAA,KAGA,yBADA,yB7B02HP,MAAA,K6Bl2HG,gBAAA,K5Bk3HF,OAAQ,YACR,iBAAkB,Y4B/2Hd,aAzCN,mB7B64HC,mBwBh5HC,iBAAA,KACA,aAAA,QAEA,kBxBm5HD,OAAA,I6Bn5HC,OAAQ,IAAI,EA0DV,SAAA,O7B41HH,iBAAA,Q6Bl1HC,c7Bq1HD,UAAA,K6Bn1HG,UAEA,cAAA,IAAA,MAAA,KALJ,aASM,MAAA,KACA,cAAA,KAEA,e7Bo1HL,aAAA,I6Bn1HK,YAAA,WACE,OAAA,IAAA,MAAA,Y7Bq1HP,cAAA,IAAA,IAAA,EAAA,ECgBD,qBACE,aAAc,KAAK,KAAK,K4B51HlB,sBAEA,4BADA,4BAEA,MAAA,K7Bi1HP,OAAA,Q6B50HC,iBAAA,KAqDA,OAAA,IAAA,MAAA,KA8BA,oBAAA,YAnFA,wBAwDE,MAAA,K7B2xHH,cAAA,E6BzxHK,2BACA,MAAA,KA3DJ,6BAgEE,cAAA,IACA,WAAA,OAYJ,iDA0DE,IAAK,KAjED,KAAA,K7B0xHH,yB6BztHD,2BA9DM,QAAA,W7B0xHL,MAAA,G6Bn2HD,6BAuFE,cAAA,GAvFF,6B5Bw3HA,aAAc,EACd,cAAe,IDZhB,kC6BtuHD,wCA3BA,wCATM,OAAA,IAAA,MAAA,K7B+wHH,yB6B3uHD,6B5B2vHE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,kC6B92HD,wC7B+2HD,wC6B72HG,oBAAA,MAIE,c7B+2HL,MAAA,K6B52HK,gB7B+2HL,cAAA,ICgBD,iBACE,YAAa,I4Bv3HP,uBAQR,6B7Bo2HC,6B6Bl2HG,MAAA,K7Bq2HH,iBAAA,Q6Bn2HK,gBACA,MAAA,KAYN,mBACE,WAAA,I7B41HD,YAAA,E6Bz1HG,e7B41HH,MAAA,K6B11HK,kBACA,MAAA,KAPN,oBAYI,cAAA,IACA,WAAA,OAYJ,wCA0DE,IAAK,KAjED,KAAA,K7B21HH,yB6B1xHD,kBA9DM,QAAA,W7B21HL,MAAA,G6Bl1HD,oBACA,cAAA,GAIE,oBACA,cAAA,EANJ,yB5B02HE,aAAc,EACd,cAAe,IDZhB,8B6B1yHD,oCA3BA,oCATM,OAAA,IAAA,MAAA,K7Bm1HH,yB6B/yHD,yB5B+zHE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,8B6Bx0HD,oC7By0HD,oC6Bv0HG,oBAAA,MAGA,uB7B00HH,QAAA,K6B/zHC,qBF3OA,QAAA,M3B+iID,yB8BxiIC,WAAY,KACZ,uBAAA,EACA,wBAAA,EAEA,Q9B0iID,SAAA,S8BliIC,WAAY,KA8nBZ,cAAe,KAhoBb,OAAA,IAAA,MAAA,Y9ByiIH,yB8BzhIC,QAgnBE,cAAe,K9B86GlB,yB8BjhIC,eACA,MAAA,MAGA,iBACA,cAAA,KAAA,aAAA,KAEA,WAAA,Q9BkhID,2BAAA,M8BhhIC,WAAA,IAAA,MAAA,YACE,mBAAA,MAAA,EAAA,IAAA,EAAA,qB9BkhIH,WAAA,MAAA,EAAA,IAAA,EAAA,qB8Bz7GD,oBArlBI,WAAA,KAEA,yBAAA,iB9BkhID,MAAA,K8BhhIC,WAAA,EACE,mBAAA,KACA,WAAA,KAEA,0B9BkhIH,QAAA,gB8B/gIC,OAAA,eACE,eAAA,E9BihIH,SAAA,kBCkBD,oBACE,WAAY,QDZf,sC8B/gIK,mC9B8gIH,oC8BzgIC,cAAe,E7B4hIf,aAAc,G6Bj+GlB,sCAnjBE,mC7ByhIA,WAAY,MDdX,4D8BngID,sC9BogID,mCCkBG,WAAY,O6B3gId,kCANE,gC9BsgIH,4B8BvgIG,0BAuiBF,aAAc,M7Bm/Gd,YAAa,MAEf,yBDZC,kC8B3gIK,gC9B0gIH,4B8B3gIG,0BAcF,aAAc,EAChB,YAAA,GAMF,mBA8gBE,QAAS,KAhhBP,aAAA,EAAA,EAAA,I9BkgIH,yB8B7/HC,mB7B+gIE,cAAe,G6B1gIjB,qBADA,kB9BggID,SAAA,M8Bz/HC,MAAO,EAggBP,KAAM,E7B4gHN,QAAS,KDdR,yB8B7/HD,qB9B8/HD,kB8B7/HC,cAAA,GAGF,kBACE,IAAA,EACA,aAAA,EAAA,EAAA,I9BigID,qB8B1/HC,OAAQ,EACR,cAAA,EACA,aAAA,IAAA,EAAA,EAEA,cACA,MAAA,K9B4/HD,OAAA,K8B1/HC,QAAA,KAAA,K7B4gIA,UAAW,K6B1gIT,YAAA,KAIA,oBAbJ,oB9BwgIC,gBAAA,K8Bv/HG,kB7B0gIF,QAAS,MDdR,yBACF,iC8Bh/HC,uCACA,YAAA,OAGA,eC9LA,SAAA,SACA,MAAA,MD+LA,QAAA,IAAA,KACA,WAAA,IACA,aAAA,KACA,cAAA,I9Bm/HD,iBAAA,Y8B/+HC,iBAAA,KACE,OAAA,IAAA,MAAA,Y9Bi/HH,cAAA,I8B5+HG,qBACA,QAAA,EAEA,yB9B++HH,QAAA,M8BrgIC,MAAO,KAyBL,OAAA,I9B++HH,cAAA,I8BpjHD,mCAvbI,WAAA,I9Bg/HH,yB8Bt+HC,eACA,QAAA,MAGE,YACA,OAAA,MAAA,M9By+HH,iB8B58HC,YAAA,KA2YA,eAAgB,KAjaZ,YAAA,KAEA,yBACA,iCACA,SAAA,OACA,MAAA,KACA,MAAA,KAAA,WAAA,E9Bs+HH,iBAAA,Y8B3kHC,OAAQ,E7B8lHR,mBAAoB,K6Bt/HhB,WAAA,KAGA,kDAqZN,sC9BklHC,QAAA,IAAA,KAAA,IAAA,KCmBD,sC6Bv/HQ,YAAA,KAmBR,4C9Bs9HD,4C8BvlHG,iBAAkB,M9B4lHnB,yB8B5lHD,YAtYI,MAAA,K9Bq+HH,OAAA,E8Bn+HK,eACA,MAAA,K9Bu+HP,iB8B39HG,YAAa,KACf,eAAA,MAGA,aACA,QAAA,KAAA,K1B9NA,WAAA,IACQ,aAAA,M2B/DR,cAAA,IACA,YAAA,M/B4vID,WAAA,IAAA,MAAA,YiBtuHC,cAAe,IAAI,MAAM,YAwEzB,mBAAoB,MAAM,EAAE,IAAI,EAAE,qBAAyB,EAAE,IAAI,EAAE,qBAtI/D,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,qBAEA,yBjBwyHH,yBiBpqHC,QAAS,aA/HP,cAAA,EACA,eAAA,OjBuyHH,2BiBzqHC,QAAS,aAxHP,MAAA,KjBoyHH,eAAA,OiBhyHG,kCACA,QAAA,aAmHJ,0BhBmsHE,QAAS,aACT,eAAgB,OgB5yHd,wCjB6xHH,6CiBrrHD,2CjBwrHC,MAAA,KiB5xHG,wCACA,MAAA,KAmGJ,4BhB+sHE,cAAe,EgB3yHb,eAAA,OAGA,uBADA,oBjB6xHH,QAAA,aiBnsHC,WAAY,EhBstHZ,cAAe,EgB5yHX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB4sHC,sCiBvxHG,SAAA,SjB0xHH,YAAA,E8BngID,kDAmWE,IAAK,GAvWH,yBACE,yB9B8gIL,cAAA,I8B5/HD,oCAoVE,cAAe,GA1Vf,yBACA,aACA,MAAA,KACA,YAAA,E1BzPF,eAAA,EACQ,aAAA,EJmwIP,YAAA,EACF,OAAA,E8BngIG,mBAAoB,KACtB,WAAA,M9BugID,8B8BngIC,WAAY,EACZ,uBAAA,EHzUA,wBAAA,EAQA,mDACC,cAAA,E3By0IF,uBAAA,I8B//HC,wBAAyB,IChVzB,2BAAA,EACA,0BAAA,EDkVA,YCnVA,WAAA,IACA,cAAA,IDqVA,mBCtVA,WAAA,KACA,cAAA,KD+VF,mBChWE,WAAA,KACA,cAAA,KDuWF,aAsSE,WAAY,KA1SV,cAAA,KAEA,yB9B+/HD,aACF,MAAA,K8Bl+HG,aAAc,KAhBhB,YAAA,MACA,yBE5WA,aF8WE,MAAA,eAFF,cAKI,MAAA,gB9Bu/HH,aAAA,M8B7+HD,4BACA,aAAA,GADF,gBAKI,iBAAA,Q9Bg/HH,aAAA,QCmBD,8B6BhgIM,MAAA,KARN,oC9B0/HC,oC8B5+HG,MAAA,Q9B++HH,iBAAA,Y8B1+HK,6B9B6+HL,MAAA,KCmBD,iC6B5/HQ,MAAA,KAKF,uC9By+HL,uCCmBC,MAAO,KACP,iBAAkB,Y6Bz/HZ,sCAIF,4C9Bu+HL,4CCmBC,MAAO,KACP,iBAAkB,Q6Bv/HZ,wCAxCR,8C9BihIC,8C8Bn+HG,MAAA,K9Bs+HH,iBAAA,YCmBD,+B6Bt/HM,aAAA,KAGA,qCApDN,qC9B2hIC,iBAAA,KCmBD,yC6Bp/HI,iBAAA,KAOE,iCAAA,6B7Bk/HJ,aAAc,Q6B9+HR,oCAiCN,0C9B+7HD,0C8B3xHC,MAAO,KA7LC,iBAAA,QACA,yB7B8+HR,sD6B5+HU,MAAA,KAKF,4D9By9HP,4DCmBC,MAAO,KACP,iBAAkB,Y6Bz+HV,2DAIF,iE9Bu9HP,iECmBC,MAAO,KACP,iBAAkB,Q6Bv+HV,6D9B09HX,mEADE,mE8B1jIC,MAAO,KA8GP,iBAAA,aAEE,6B9Bi9HL,MAAA,K8B58HG,mC9B+8HH,MAAA,KCmBD,0B6B/9HM,MAAA,KAIA,gCAAA,gC7Bg+HJ,MAAO,K6Bt9HT,0CARQ,0CASN,mD9Bu8HD,mD8Bt8HC,MAAA,KAFF,gBAKI,iBAAA,K9B08HH,aAAA,QCmBD,8B6B19HM,MAAA,QARN,oC9Bo9HC,oC8Bt8HG,MAAA,K9By8HH,iBAAA,Y8Bp8HK,6B9Bu8HL,MAAA,QCmBD,iC6Bt9HQ,MAAA,QAKF,uC9Bm8HL,uCCmBC,MAAO,KACP,iBAAkB,Y6Bn9HZ,sCAIF,4C9Bi8HL,4CCmBC,MAAO,KACP,iBAAkB,Q6Bj9HZ,wCAxCR,8C9B2+HC,8C8B57HG,MAAA,K9B+7HH,iBAAA,YCmBD,+B6B/8HM,aAAA,KAGA,qCArDN,qC9Bq/HC,iBAAA,KCmBD,yC6B78HI,iBAAA,KAME,iCAAA,6B7B48HJ,aAAc,Q6Bx8HR,oCAuCN,0C9Bm5HD,0C8B33HC,MAAO,KAvDC,iBAAA,QAuDV,yBApDU,kE9Bs7HP,aAAA,Q8Bn7HO,0D9Bs7HP,iBAAA,QCmBD,sD6Bt8HU,MAAA,QAKF,4D9Bm7HP,4DCmBC,MAAO,KACP,iBAAkB,Y6Bn8HV,2DAIF,iE9Bi7HP,iECmBC,MAAO,KACP,iBAAkB,Q6Bj8HV,6D9Bo7HX,mEADE,mE8B1hIC,MAAO,KA+GP,iBAAA,aAEE,6B9Bg7HL,MAAA,Q8B36HG,mC9B86HH,MAAA,KCmBD,0B6B97HM,MAAA,QAIA,gCAAA,gC7B+7HJ,MAAO,KgCvkJT,0CH0oBQ,0CGzoBN,mDjCwjJD,mDiCvjJC,MAAA,KAEA,YACA,QAAA,IAAA,KjC2jJD,cAAA,KiChkJC,WAAY,KAQV,iBAAA,QjC2jJH,cAAA,IiCxjJK,eACA,QAAA,ajC4jJL,yBiCxkJC,QAAS,EAAE,IAkBT,MAAA,KjCyjJH,QAAA,SkC5kJC,oBACA,MAAA,KAEA,YlC+kJD,QAAA,akCnlJC,aAAc,EAOZ,OAAA,KAAA,ElC+kJH,cAAA,ICmBD,eiC/lJM,QAAA,OAEA,iBACA,oBACA,SAAA,SACA,MAAA,KACA,QAAA,IAAA,KACA,YAAA,KACA,YAAA,WlCglJL,MAAA,QkC9kJG,gBAAA,KjCimJF,iBAAkB,KiC9lJZ,OAAA,IAAA,MAAA,KPVH,6B3B2lJJ,gCkC7kJG,YAAA,EjCgmJF,uBAAwB,I0BvnJxB,0BAAA,I3BymJD,4BkCxkJG,+BjC2lJF,wBAAyB,IACzB,2BAA4B,IiCxlJxB,uBAFA,uBAGA,0BAFA,0BlC8kJL,QAAA,EkCtkJG,MAAA,QjCylJF,iBAAkB,KAClB,aAAc,KAEhB,sBiCvlJM,4BAFA,4BjC0lJN,yBiCvlJM,+BAFA,+BAGA,QAAA,ElC2kJL,MAAA,KkCloJC,OAAQ,QjCqpJR,iBAAkB,QAClB,aAAc,QiCnlJV,wBAEA,8BADA,8BjColJN,2BiCtlJM,iCjCulJN,iCDZC,MAAA,KkC/jJC,OAAQ,YjCklJR,iBAAkB,KkC7pJd,aAAA,KAEA,oBnC8oJL,uBmC5oJG,QAAA,KAAA,KlC+pJF,UAAW,K0B1pJX,YAAA,U3B4oJD,gCmC3oJG,mClC8pJF,uBAAwB,I0BvqJxB,0BAAA,I3BypJD,+BkC1kJD,kCjC6lJE,wBAAyB,IkC7qJrB,2BAAA,IAEA,oBnC8pJL,uBmC5pJG,QAAA,IAAA,KlC+qJF,UAAW,K0B1qJX,YAAA,I3B4pJD,gCmC3pJG,mClC8qJF,uBAAwB,I0BvrJxB,0BAAA,I3ByqJD,+BoC3qJD,kCACE,wBAAA,IACA,2BAAA,IAEA,OpC6qJD,aAAA,EoCjrJC,OAAQ,KAAK,EAOX,WAAA,OpC6qJH,WAAA,KCmBD,UmC7rJM,QAAA,OAEA,YACA,eACA,QAAA,apC8qJL,QAAA,IAAA,KoC5rJC,iBAAkB,KnC+sJlB,OAAQ,IAAI,MAAM,KmC5rJd,cAAA,KAnBN,kBpCisJC,kBCmBC,gBAAiB,KmCzrJb,iBAAA,KA3BN,eAAA,kBAkCM,MAAA,MAlCN,mBAAA,sBnC6tJE,MAAO,KmClrJH,mBAEA,yBADA,yBpCqqJL,sBqCltJC,MAAO,KACP,OAAA,YACA,iBAAA,KAEA,OACA,QAAA,OACA,QAAA,KAAA,KAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,MAAA,KrCotJD,WAAA,OqChtJG,YAAA,OpCmuJF,eAAgB,SoCjuJZ,cAAA,MrCotJL,cqCltJK,cAKJ,MAAA,KACE,gBAAA,KrC+sJH,OAAA,QqC1sJG,aACA,QAAA,KAOJ,YCtCE,SAAA,StC+uJD,IAAA,KCmBD,eqC7vJM,iBAAA,KALJ,2BD0CF,2BrC4sJC,iBAAA,QCmBD,eqCpwJM,iBAAA,QALJ,2BD8CF,2BrC+sJC,iBAAA,QCmBD,eqC3wJM,iBAAA,QALJ,2BDkDF,2BrCktJC,iBAAA,QCmBD,YqClxJM,iBAAA,QALJ,wBDsDF,wBrCqtJC,iBAAA,QCmBD,eqCzxJM,iBAAA,QALJ,2BD0DF,2BrCwtJC,iBAAA,QCmBD,cqChyJM,iBAAA,QCDJ,0BADF,0BAEE,iBAAA,QAEA,OACA,QAAA,aACA,UAAA,KACA,QAAA,IAAA,IACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OvCqxJD,YAAA,OuClxJC,eAAA,OACE,iBAAA,KvCoxJH,cAAA,KuC/wJG,aACA,QAAA,KAGF,YtCkyJA,SAAU,SsChyJR,IAAA,KAMA,0BvC4wJH,eCmBC,IAAK,EsC7xJD,QAAA,IAAA,IvCgxJL,cuC9wJK,cAKJ,MAAA,KtC4xJA,gBAAiB,KsC1xJf,OAAA,QvC4wJH,+BuCxwJC,4BACE,MAAA,QvC0wJH,iBAAA,KuCtwJG,wBvCywJH,MAAA,MuCrwJG,+BvCwwJH,aAAA,IwCj0JC,uBACA,YAAA,IAEA,WACA,YAAA,KxCo0JD,eAAA,KwCz0JC,cAAe,KvC41Jf,MAAO,QuCn1JL,iBAAA,KAIA,eAbJ,cAcI,MAAA,QxCo0JH,awCl1JC,cAAe,KAmBb,UAAA,KxCk0JH,YAAA,ICmBD,cuCh1JI,iBAAA,QAEA,sBxCi0JH,4BwC31JC,cAAe,KA8Bb,aAAA,KxCg0JH,cAAA,IwC7yJD,sBAfI,UAAA,KxCi0JD,oCwC9zJC,WvCi1JA,YAAa,KuC/0JX,eAAA,KxCi0JH,sBwCvzJD,4BvC00JE,cAAe,KuC90Jb,aAAA,KC5CJ,ezC42JD,cyC32JC,UAAA,MAGA,WACA,QAAA,MACA,QAAA,IACA,cAAA,KrCiLA,YAAA,WACK,iBAAA,KACG,OAAA,IAAA,MAAA,KJ8rJT,cAAA,IyCx3JC,mBAAoB,OAAO,IAAI,YxC24J1B,cAAe,OAAO,IAAI,YwC93J7B,WAAA,OAAA,IAAA,YAKF,iBzC22JD,eCmBC,aAAc,KACd,YAAa,KwCv3JX,mBA1BJ,kBzCk4JC,kByCv2JG,aAAA,QCzBJ,oBACE,QAAA,IACA,MAAA,KAEA,O1Cs4JD,QAAA,K0C14JC,cAAe,KAQb,OAAA,IAAA,MAAA,YAEA,cAAA,IAVJ,UAeI,WAAA,E1Ck4JH,MAAA,QCmBD,mByC/4JI,YAAA,IArBJ,SAyBI,U1C+3JH,cAAA,ECmBD,WyCx4JE,WAAA,IAFF,mBAAA,mBAMI,cAAA,KAEA,0BACA,0B1Cy3JH,SAAA,S0Cj3JC,IAAK,KCvDL,MAAA,MACA,MAAA,Q3C46JD,e0Ct3JC,MAAO,QClDL,iBAAA,Q3C26JH,aAAA,Q2Cx6JG,kB3C26JH,iBAAA,Q2Cn7JC,2BACA,MAAA,Q3Cu7JD,Y0C73JC,MAAO,QCtDL,iBAAA,Q3Cs7JH,aAAA,Q2Cn7JG,e3Cs7JH,iBAAA,Q2C97JC,wBACA,MAAA,Q3Ck8JD,e0Cp4JC,MAAO,QC1DL,iBAAA,Q3Ci8JH,aAAA,Q2C97JG,kB3Ci8JH,iBAAA,Q2Cz8JC,2BACA,MAAA,Q3C68JD,c0C34JC,MAAO,QC9DL,iBAAA,Q3C48JH,aAAA,Q2Cz8JG,iB3C48JH,iBAAA,Q4C78JC,0BAAQ,MAAA,QACR,wCAAQ,K5Cm9JP,oBAAA,KAAA,E4C/8JD,GACA,oBAAA,EAAA,GACA,mCAAQ,K5Cq9JP,oBAAA,KAAA,E4Cv9JD,GACA,oBAAA,EAAA,GACA,gCAAQ,K5Cq9JP,oBAAA,KAAA,E4C78JD,GACA,oBAAA,EAAA,GAGA,UACA,OAAA,KxCsCA,cAAA,KACQ,SAAA,OJ26JT,iBAAA,Q4C78JC,cAAe,IACf,mBAAA,MAAA,EAAA,IAAA,IAAA,eACA,WAAA,MAAA,EAAA,IAAA,IAAA,eAEA,cACA,MAAA,KACA,MAAA,EACA,OAAA,KACA,UAAA,KxCyBA,YAAA,KACQ,MAAA,KAyHR,WAAA,OACK,iBAAA,QACG,mBAAA,MAAA,EAAA,KAAA,EAAA,gBJ+zJT,WAAA,MAAA,EAAA,KAAA,EAAA,gB4C18JC,mBAAoB,MAAM,IAAI,K3Cq+JzB,cAAe,MAAM,IAAI,K4Cp+J5B,WAAA,MAAA,IAAA,KDEF,sBCAE,gCDAF,iBAAA,yK5C88JD,iBAAA,oK4Cv8JC,iBAAiB,iK3Cm+JjB,wBAAyB,KAAK,KG/gK9B,gBAAA,KAAA,KJy/JD,qBIv/JS,+BwCmDR,kBAAmB,qBAAqB,GAAG,OAAO,SErElD,aAAA,qBAAA,GAAA,OAAA,S9C4gKD,UAAA,qBAAA,GAAA,OAAA,S6Cz9JG,sBACA,iBAAA,Q7C69JH,wC4Cx8JC,iBAAkB,yKEzElB,iBAAA,oK9CohKD,iBAAA,iK6Cj+JG,mBACA,iBAAA,Q7Cq+JH,qC4C58JC,iBAAkB,yKE7ElB,iBAAA,oK9C4hKD,iBAAA,iK6Cz+JG,sBACA,iBAAA,Q7C6+JH,wC4Ch9JC,iBAAkB,yKEjFlB,iBAAA,oK9CoiKD,iBAAA,iK6Cj/JG,qBACA,iBAAA,Q7Cq/JH,uC+C5iKC,iBAAkB,yKAElB,iBAAA,oK/C6iKD,iBAAA,iK+C1iKG,O/C6iKH,WAAA,KC4BD,mB8CnkKE,WAAA,E/C4iKD,O+CxiKD,YACE,SAAA,O/C0iKD,KAAA,E+CtiKC,Y/CyiKD,MAAA,Q+CriKG,c/CwiKH,QAAA,MC4BD,4B8C9jKE,UAAA,KAGF,aAAA,mBAEE,aAAA,KAGF,YAAA,kB9C+jKE,cAAe,K8CxjKjB,YAHE,Y/CoiKD,a+ChiKC,QAAA,W/CmiKD,eAAA,I+C/hKC,c/CkiKD,eAAA,O+C7hKC,cACA,eAAA,OAMF,eACE,WAAA,EACA,cAAA,ICvDF,YAEE,aAAA,EACA,WAAA,KAQF,YACE,aAAA,EACA,cAAA,KAGA,iBACA,SAAA,SACA,QAAA,MhD6kKD,QAAA,KAAA,KgD1kKC,cAAA,KrB3BA,iBAAA,KACC,OAAA,IAAA,MAAA,KqB6BD,6BACE,uBAAA,IrBvBF,wBAAA,I3BsmKD,4BgDpkKC,cAAe,E/CgmKf,2BAA4B,I+C9lK5B,0BAAA,IAFF,kBAAA,uBAKI,MAAA,KAIF,2CAAA,gD/CgmKA,MAAO,K+C5lKL,wBAFA,wBhDykKH,6BgDxkKG,6BAKF,MAAO,KACP,gBAAA,KACA,iBAAA,QAKA,uB/C4lKA,MAAO,KACP,WAAY,K+CzlKV,0BhDmkKH,gCgDlkKG,gCALF,MAAA,K/CmmKA,OAAQ,YACR,iBAAkB,KDxBnB,mDgD5kKC,yDAAA,yD/CymKA,MAAO,QDxBR,gDgDhkKC,sDAAA,sD/C6lKA,MAAO,K+CzlKL,wBAEA,8BADA,8BhDmkKH,QAAA,EgDxkKC,MAAA,K/ComKA,iBAAkB,QAClB,aAAc,QAEhB,iDDpBC,wDCuBD,uDADA,uD+CzmKE,8DAYI,6D/C4lKN,uD+CxmKE,8D/C2mKF,6DAKE,MAAO,QDxBR,8CiD1qKG,oDADF,oDAEE,MAAA,QAEA,yBhDusKF,MAAO,QgDrsKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhDwsKJ,MAAO,QDtBR,gCiDhrKO,gCAGF,qCAFE,qChD2sKN,MAAO,QACP,iBAAkB,QAEpB,iCgDvsKQ,uCAFA,uChD0sKR,sCDtBC,4CiDnrKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,sBhDouKF,MAAO,QgDluKH,iBAAA,QAFF,uBAAA,4BAKI,MAAA,QAGF,gDAAA,qDhDquKJ,MAAO,QDtBR,6BiD7sKO,6BAGF,kCAFE,kChDwuKN,MAAO,QACP,iBAAkB,QAEpB,8BgDpuKQ,oCAFA,oChDuuKR,mCDtBC,yCiDhtKO,yCArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,yBhDiwKF,MAAO,QgD/vKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhDkwKJ,MAAO,QDtBR,gCiD1uKO,gCAGF,qCAFE,qChDqwKN,MAAO,QACP,iBAAkB,QAEpB,iCgDjwKQ,uCAFA,uChDowKR,sCDtBC,4CiD7uKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,wBhD8xKF,MAAO,QgD5xKH,iBAAA,QAFF,yBAAA,8BAKI,MAAA,QAGF,kDAAA,uDhD+xKJ,MAAO,QDtBR,+BiDvwKO,+BAGF,oCAFE,oChDkyKN,MAAO,QACP,iBAAkB,QAEpB,gCgD9xKQ,sCAFA,sChDiyKR,qCDtBC,2CiD1wKO,2CDkGN,MAAO,KACP,iBAAA,QACA,aAAA,QAEF,yBACE,WAAA,EACA,cAAA,IE1HF,sBACE,cAAA,EACA,YAAA,IAEA,O9C0DA,cAAA,KACQ,iBAAA,KJ6uKT,OAAA,IAAA,MAAA,YkDnyKC,cAAe,IACf,mBAAA,EAAA,IAAA,IAAA,gBlDqyKD,WAAA,EAAA,IAAA,IAAA,gBkD/xKC,YACA,QAAA,KvBnBC,e3BuzKF,QAAA,KAAA,KkDtyKC,cAAe,IAAI,MAAM,YAMvB,uBAAA,IlDmyKH,wBAAA,IkD7xKC,0CACA,MAAA,QAEA,alDgyKD,WAAA,EkDpyKC,cAAe,EjDg0Kf,UAAW,KACX,MAAO,QDtBR,oBkD1xKC,sBjDkzKF,eiDxzKI,mBAKJ,qBAEE,MAAA,QvBvCA,cACC,QAAA,KAAA,K3Bs0KF,iBAAA,QkDrxKC,WAAY,IAAI,MAAM,KjDizKtB,2BAA4B,IiD9yK1B,0BAAA,IAHJ,mBAAA,mCAMM,cAAA,ElDwxKL,oCkDnxKG,oDjD+yKF,aAAc,IAAI,EiD7yKZ,cAAA,EvBtEL,4D3B61KF,4EkDjxKG,WAAA,EjD6yKF,uBAAwB,IiD3yKlB,wBAAA,IvBtEL,0D3B21KF,0EkD1yKC,cAAe,EvB1Df,2BAAA,IACC,0BAAA,IuB0FH,+EAEI,uBAAA,ElD8wKH,wBAAA,EkD1wKC,wDlD6wKD,iBAAA,EC4BD,0BACE,iBAAkB,EiDlyKpB,8BlD0wKC,ckD1wKD,gCjDuyKE,cAAe,EiDvyKjB,sCAQM,sBlDwwKL,wCC4BC,cAAe,K0Br5Kf,aAAA,KuByGF,wDlDqxKC,0BC4BC,uBAAwB,IACxB,wBAAyB,IiDlzK3B,yFAoBQ,yFlDwwKP,2DkDzwKO,2DjDqyKN,uBAAwB,IACxB,wBAAyB,IAK3B,wGiD9zKA,wGjD4zKA,wGDtBC,wGCuBD,0EiD7zKA,0EjD2zKA,0EiDnyKU,0EjD2yKR,uBAAwB,IAK1B,uGiDx0KA,uGjDs0KA,uGDtBC,uGCuBD,yEiDv0KA,yEjDq0KA,yEiDzyKU,yEvB7HR,wBAAA,IuBiGF,sDlDqzKC,yBC4BC,2BAA4B,IAC5B,0BAA2B,IiDxyKrB,qFA1CR,qFAyCQ,wDlDmxKP,wDC4BC,2BAA4B,IAC5B,0BAA2B,IAG7B,oGDtBC,oGCwBD,oGiD91KA,oGjD21KA,uEiD7yKU,uEjD+yKV,uEiD71KA,uEjDm2KE,0BAA2B,IAG7B,mGDtBC,mGCwBD,mGiDx2KA,mGjDq2KA,sEiDnzKU,sEjDqzKV,sEiDv2KA,sEjD62KE,2BAA4B,IiDlzK1B,0BlD2xKH,qCkDt1KD,0BAAA,qCA+DI,WAAA,IAAA,MAAA,KA/DJ,kDAAA,kDAmEI,WAAA,EAnEJ,uBAAA,yCjD23KE,OAAQ,EiDjzKA,+CjDqzKV,+CiD/3KA,+CjDi4KA,+CAEA,+CANA,+CDjBC,iECoBD,iEiDh4KA,iEjDk4KA,iEAEA,iEANA,iEAWE,YAAa,EiD3zKL,8CjD+zKV,8CiD74KA,8CjD+4KA,8CAEA,8CANA,8CDjBC,gECoBD,gEiD94KA,gEjDg5KA,gEAEA,gEANA,gEAWE,aAAc,EAIhB,+CiD35KA,+CjDy5KA,+CiDl0KU,+CjDq0KV,iEiD55KA,iEjD05KA,iEDtBC,iEC6BC,cAAe,EAEjB,8CiDn0KU,8CjDq0KV,8CiDr6KA,8CjDo6KA,gEDtBC,gECwBD,gEiDh0KI,gEACA,cAAA,EAUJ,yBACE,cAAA,ElDmyKD,OAAA,EkD/xKG,aACA,cAAA,KANJ,oBASM,cAAA,ElDkyKL,cAAA,IkD7xKG,2BlDgyKH,WAAA,IC4BD,4BiDxzKM,cAAA,EAKF,wDAvBJ,wDlDqzKC,WAAA,IAAA,MAAA,KkD5xKK,2BlD+xKL,WAAA,EmDlhLC,uDnDqhLD,cAAA,IAAA,MAAA,KmDlhLG,eACA,aAAA,KnDshLH,8BmDxhLC,MAAA,KAMI,iBAAA,QnDqhLL,aAAA,KmDlhLK,0DACA,iBAAA,KAGJ,qCAEI,MAAA,QnDmhLL,iBAAA,KmDpiLC,yDnDuiLD,oBAAA,KmDpiLG,eACA,aAAA,QnDwiLH,8BmD1iLC,MAAA,KAMI,iBAAA,QnDuiLL,aAAA,QmDpiLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDqiLL,iBAAA,KmDtjLC,yDnDyjLD,oBAAA,QmDtjLG,eACA,aAAA,QnD0jLH,8BmD5jLC,MAAA,QAMI,iBAAA,QnDyjLL,aAAA,QmDtjLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDujLL,iBAAA,QmDxkLC,yDnD2kLD,oBAAA,QmDxkLG,YACA,aAAA,QnD4kLH,2BmD9kLC,MAAA,QAMI,iBAAA,QnD2kLL,aAAA,QmDxkLK,uDACA,iBAAA,QAGJ,kCAEI,MAAA,QnDykLL,iBAAA,QmD1lLC,sDnD6lLD,oBAAA,QmD1lLG,eACA,aAAA,QnD8lLH,8BmDhmLC,MAAA,QAMI,iBAAA,QnD6lLL,aAAA,QmD1lLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnD2lLL,iBAAA,QmD5mLC,yDnD+mLD,oBAAA,QmD5mLG,cACA,aAAA,QnDgnLH,6BmDlnLC,MAAA,QAMI,iBAAA,QnD+mLL,aAAA,QmD5mLK,yDACA,iBAAA,QAGJ,oCAEI,MAAA,QnD6mLL,iBAAA,QoD5nLC,wDACA,oBAAA,QAEA,kBACA,SAAA,SpD+nLD,QAAA,MoDpoLC,OAAQ,EnDgqLR,QAAS,EACT,SAAU,OAEZ,yCmDtpLI,wBADA,yBAEA,yBACA,wBACA,SAAA,SACA,IAAA,EACA,OAAA,EpD+nLH,KAAA,EoD1nLC,MAAO,KACP,OAAA,KpD4nLD,OAAA,EoDvnLC,wBpD0nLD,eAAA,OqDppLC,uBACA,eAAA,IAEA,MACA,WAAA,KACA,QAAA,KjDwDA,cAAA,KACQ,iBAAA,QJgmLT,OAAA,IAAA,MAAA,QqD/pLC,cAAe,IASb,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAKJ,iBACE,aAAA,KACA,aAAA,gBAEF,SACE,QAAA,KACA,cAAA,ICtBF,SACE,QAAA,IACA,cAAA,IAEA,OACA,MAAA,MACA,UAAA,KjCRA,YAAA,IAGA,YAAA,ErBqrLD,MAAA,KsD7qLC,YAAA,EAAA,IAAA,EAAA,KrDysLA,OAAQ,kBqDvsLN,QAAA,GjCbF,aiCeE,ajCZF,MAAA,KrB6rLD,gBAAA,KsDzqLC,OAAA,QACE,OAAA,kBACA,QAAA,GAEA,aACA,mBAAA,KtD2qLH,QAAA,EuDhsLC,OAAQ,QACR,WAAA,IvDksLD,OAAA,EuD7rLC,YACA,SAAA,OAEA,OACA,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EAIA,QAAA,KvD6rLD,QAAA,KuD1rLC,SAAA,OnD+GA,2BAAA,MACI,QAAA,EAEI,0BAkER,mBAAA,kBAAA,IAAA,SAEK,cAAA,aAAA,IAAA,SACG,WAAA,UAAA,IAAA,SJ6gLT,kBAAA,kBuDhsLC,cAAA,kBnD2GA,aAAA,kBACI,UAAA,kBAEI,wBJwlLT,kBAAA,euDpsLK,cAAe,eACnB,aAAA,eACA,UAAA,eAIF,mBACE,WAAA,OACA,WAAA,KvDqsLD,cuDhsLC,SAAU,SACV,MAAA,KACA,OAAA,KAEA,eACA,SAAA,SnDaA,iBAAA,KACQ,wBAAA,YmDZR,gBAAA,YtD4tLA,OsD5tLA,IAAA,MAAA,KAEA,OAAA,IAAA,MAAA,evDksLD,cAAA,IuD9rLC,QAAS,EACT,mBAAA,EAAA,IAAA,IAAA,eACA,WAAA,EAAA,IAAA,IAAA,eAEA,gBACA,SAAA,MACA,IAAA,EACA,MAAA,EvDgsLD,OAAA,EuD9rLC,KAAA,ElCrEA,QAAA,KAGA,iBAAA,KkCmEA,qBlCtEA,OAAA,iBAGA,QAAA,EkCwEF,mBACE,OAAA,kBACA,QAAA,GAIF,cACE,QAAA,KvDgsLD,cAAA,IAAA,MAAA,QuD3rLC,qBACA,WAAA,KAKF,aACE,OAAA,EACA,YAAA,WAIF,YACE,SAAA,SACA,QAAA,KvD0rLD,cuD5rLC,QAAS,KAQP,WAAA,MACA,WAAA,IAAA,MAAA,QATJ,wBAaI,cAAA,EvDsrLH,YAAA,IuDlrLG,mCvDqrLH,YAAA,KuD/qLC,oCACA,YAAA,EAEA,yBACA,SAAA,SvDkrLD,IAAA,QuDhqLC,MAAO,KAZP,OAAA,KACE,SAAA,OvDgrLD,yBuD7qLD,cnDvEA,MAAA,MACQ,OAAA,KAAA,KmD2ER,eAAY,mBAAA,EAAA,IAAA,KAAA,evD+qLX,WAAA,EAAA,IAAA,KAAA,euDzqLD,UAFA,MAAA,OvDirLD,yBwD/zLC,UACA,MAAA,OCNA,SAEA,SAAA,SACA,QAAA,KACA,QAAA,MACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,ODHA,WAAA,OnCVA,aAAA,OAGA,UAAA,OrBs1LD,YAAA,OwD30LC,OAAA,iBnCdA,QAAA,ErB61LD,WAAA,KwD90LY,YAAmB,OAAA,kBxDk1L/B,QAAA,GwDj1LY,aAAmB,QAAA,IAAA,ExDq1L/B,WAAA,KwDp1LY,eAAmB,QAAA,EAAA,IxDw1L/B,YAAA,IwDv1LY,gBAAmB,QAAA,IAAA,ExD21L/B,WAAA,IwDt1LC,cACA,QAAA,EAAA,IACA,YAAA,KAEA,eACA,UAAA,MxDy1LD,QAAA,IAAA,IwDr1LC,MAAO,KACP,WAAA,OACA,iBAAA,KACA,cAAA,IAEA,exDu1LD,SAAA,SwDn1LC,MAAA,EACE,OAAA,EACA,aAAA,YACA,aAAA,MAEA,4BxDq1LH,OAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,iCxDq1LH,MAAA,IwDn1LC,OAAA,EACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,kCxDq1LH,OAAA,EwDn1LC,KAAA,IACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,8BxDq1LH,IAAA,IwDn1LC,KAAA,EACE,WAAA,KACA,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KAEA,6BxDq1LH,IAAA,IwDn1LC,MAAA,EACE,WAAA,KACA,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAEA,+BxDq1LH,IAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,oCxDq1LH,IAAA,EwDn1LC,MAAA,IACE,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,qCxDq1LH,IAAA,E0Dl7LC,KAAM,IACN,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,SACA,SAAA,SACA,IAAA,EDXA,KAAA,EAEA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,IACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KCAA,eAAA,OAEA,WAAA,OACA,aAAA,OAAA,UAAA,OACA,YAAA,OACA,iBAAA,KACA,wBAAA,YtD8CA,gBAAA,YACQ,OAAA,IAAA,MAAA,KJk5LT,OAAA,IAAA,MAAA,e0D77LC,cAAA,IAAY,mBAAA,EAAA,IAAA,KAAA,e1Dg8Lb,WAAA,EAAA,IAAA,KAAA,e0D/7La,WAAA,KACZ,aAAY,WAAA,MACZ,eAAY,YAAA,KAGd,gBACE,WAAA,KAEA,cACA,YAAA,MAEA,e1Dq8LD,QAAA,IAAA,K0Dl8LC,OAAQ,EACR,UAAA,K1Do8LD,iBAAA,Q0D57LC,cAAA,IAAA,MAAA,QzDy9LA,cAAe,IAAI,IAAI,EAAE,EyDt9LvB,iBACA,QAAA,IAAA,KAEA,gBACA,sB1D87LH,SAAA,S0D37LC,QAAS,MACT,MAAA,E1D67LD,OAAA,E0D37LC,aAAc,YACd,aAAA,M1D87LD,gB0Dz7LC,aAAA,KAEE,sBACA,QAAA,GACA,aAAA,KAEA,oB1D27LH,OAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,KACA,iBAAA,gBACA,oBAAA,E1D67LL,0B0Dz7LC,OAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,KACA,oBAAA,EAEA,sB1D27LH,IAAA,I0D17LG,KAAA,MACE,WAAA,MACA,mBAAA,KACA,mBAAA,gBACA,kBAAA,E1D67LL,4B0Dz7LC,OAAA,MACE,KAAA,IACA,QAAA,IACA,mBAAA,KACA,kBAAA,EAEA,uB1D27LH,IAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,EACA,oBAAA,KACA,oBAAA,gB1D67LL,6B0Dx7LC,IAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,EACA,oBAAA,KAEA,qB1D07LH,IAAA,I0Dz7LG,MAAA,MACE,WAAA,MACA,mBAAA,EACA,kBAAA,KACA,kBAAA,gB1D47LL,2B2DpjMC,MAAO,IACP,OAAA,M3DsjMD,QAAA,I2DnjMC,mBAAoB,EACpB,kBAAA,KAEA,U3DqjMD,SAAA,S2DljMG,gBACA,SAAA,SvD6KF,MAAA,KACK,SAAA,OJ04LN,sB2D/jMC,SAAU,S1D4lMV,QAAS,K0D9kML,mBAAA,IAAA,YAAA,K3DqjML,cAAA,IAAA,YAAA,K2D3hMC,WAAA,IAAA,YAAA,KvDmKK,4BAFL,0BAGQ,YAAA,EA3JA,qDA+GR,sBAEQ,mBAAA,kBAAA,IAAA,YJ86LP,cAAA,aAAA,IAAA,Y2DzjMG,WAAA,UAAA,IAAA,YvDmHJ,4BAAA,OACQ,oBAAA,OuDjHF,oBAAA,O3D4jML,YAAA,OI58LD,mCHs+LA,2BGr+LQ,KAAA,EuD5GF,kBAAA,sB3D6jML,UAAA,sBC2BD,kCADA,2BG5+LA,KAAA,EACQ,kBAAA,uBuDtGF,UAAA,uBArCN,6B3DomMD,gC2DpmMC,iC1D+nME,KAAM,E0DllMN,kBAAA,mB3D4jMH,UAAA,oBAGA,wB2D5mMD,sBAAA,sBAsDI,QAAA,MAEA,wB3D0jMH,KAAA,E2DtjMG,sB3DyjMH,sB2DrnMC,SAAU,SA+DR,IAAA,E3DyjMH,MAAA,KC0BD,sB0D/kMI,KAAA,KAnEJ,sBAuEI,KAAA,MAvEJ,2BA0EI,4B3DwjMH,KAAA,E2D/iMC,6BACA,KAAA,MAEA,8BACA,KAAA,KtC3FA,kBsC6FA,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,I3DmjMD,UAAA,K2D9iMC,MAAA,KdnGE,WAAA,OACA,YAAA,EAAA,IAAA,IAAA,eACA,iBAAA,cAAA,OAAA,kBACA,QAAA,G7CqpMH,uB2DljMC,iBAAA,sEACE,iBAAA,iEACA,iBAAA,uFdxGA,iBAAA,kEACA,OAAA,+GACA,kBAAA,SACA,wBACA,MAAA,E7C6pMH,KAAA,K2DpjMC,iBAAA,sE1DglMA,iBAAiB,iE0D9kMf,iBAAA,uFACA,iBAAA,kEACA,OAAA,+GtCvHF,kBAAA,SsCyFF,wB3DslMC,wBC4BC,MAAO,KACP,gBAAiB,KACjB,OAAQ,kB0D7kMN,QAAA,EACA,QAAA,G3DwjMH,0C2DhmMD,2CA2CI,6BADA,6B1DklMF,SAAU,S0D7kMR,IAAA,IACA,QAAA,E3DqjMH,QAAA,a2DrmMC,WAAY,MAqDV,0CADA,6B3DsjMH,KAAA,I2D1mMC,YAAa,MA0DX,2CADA,6BAEA,MAAA,IACA,aAAA,MAME,6BADF,6B3DmjMH,MAAA,K2D9iMG,OAAA,KACE,YAAA,M3DgjML,YAAA,E2DriMC,oCACA,QAAA,QAEA,oCACA,QAAA,QAEA,qBACA,SAAA,SACA,OAAA,K3DwiMD,KAAA,I2DjjMC,QAAS,GAYP,MAAA,IACA,aAAA,EACA,YAAA,KACA,WAAA,OACA,WAAA,KAEA,wBACA,QAAA,aAWA,MAAA,KACA,OAAA,K3D8hMH,OAAA,I2D7jMC,YAAa,OAkCX,OAAA,QACA,iBAAA,OACA,iBAAA,cACA,OAAA,IAAA,MAAA,K3D8hMH,cAAA,K2DthMC,6BACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,iBAAA,KAEA,kBACA,SAAA,SACA,MAAA,IACA,OAAA,K3DyhMD,KAAA,I2DxhMC,QAAA,GACE,YAAA,K3D0hMH,eAAA,K2Dj/LC,MAAO,KAhCP,WAAA,O1D8iMA,YAAa,EAAE,IAAI,IAAI,eAEzB,uB0D3iMM,YAAA,KAEA,oCACA,0C3DmhMH,2C2D3hMD,6BAAA,6BAYI,MAAA,K3DmhMH,OAAA,K2D/hMD,WAAA,M1D2jME,UAAW,KDxBZ,0C2D9gMD,6BACE,YAAA,MAEA,2C3DghMD,6B2D5gMD,aAAA,M3D+gMC,kBACF,MAAA,I4D7wMC,KAAA,I3DyyME,eAAgB,KAElB,qBACE,OAAQ,MAkBZ,qCADA,sCADA,mBADA,oBAXA,gBADA,iBAOA,uBADA,wBADA,iBADA,kBADA,wBADA,yBASA,mCADA,oC2DpzME,oBAAA,qBAAA,oBAAA,qB3D2zMF,WADA,YAOA,uBADA,wBADA,qBADA,sBADA,cADA,e2D/zMI,a3Dq0MJ,cDvBC,kB4D7yMG,mB3DqzMJ,WADA,YAwBE,QAAS,MACT,QAAS,IASX,qCADA,mBANA,gBAGA,uBADA,iBADA,wBAIA,mCDhBC,oB6D/0MC,oB5Dk2MF,W+B51MA,uBhCo0MC,qB4D5zMG,cChBF,aACA,kB5D+1MF,W+Br1ME,MAAO,KhCy0MR,cgCt0MC,QAAS,MACT,aAAA,KhCw0MD,YAAA,KgC/zMC,YhCk0MD,MAAA,gBgC/zMC,WhCk0MD,MAAA,egC/zMC,MhCk0MD,QAAA,e8Dz1MC,MACA,QAAA,gBAEA,WACA,WAAA,O9B8BF,WACE,KAAA,EAAA,EAAA,EhCg0MD,MAAA,YgCzzMC,YAAa,KACb,iBAAA,YhC2zMD,OAAA,E+D31MC,Q/D81MD,QAAA,eC4BD,OACE,SAAU,M+Dn4MV,chE42MD,MAAA,aC+BD,YADA,YADA,YADA,YAIE,QAAS,e+Dp5MT,kBhEs4MC,mBgEr4MD,yBhEi4MD,kB+Dl1MD,mBA6IA,yB9D4tMA,kBACA,mB8Dj3ME,yB9D62MF,kBACA,mBACA,yB+Dv5MY,QAAA,eACV,yBAAU,YhE04MT,QAAA,gBC4BD,iB+Dp6MU,QAAA,gBhE64MX,c+D51MG,QAAS,oB/Dg2MV,c+Dl2MC,c/Dm2MH,QAAA,sB+D91MG,yB/Dk2MD,kBACF,QAAA,iB+D91MG,yB/Dk2MD,mBACF,QAAA,kBgEh6MC,yBhEo6MC,yBgEn6MD,QAAA,wBACA,+CAAU,YhEw6MT,QAAA,gBC4BD,iB+Dl8MU,QAAA,gBhE26MX,c+Dr2MG,QAAS,oB/Dy2MV,c+D32MC,c/D42MH,QAAA,sB+Dv2MG,+C/D22MD,kBACF,QAAA,iB+Dv2MG,+C/D22MD,mBACF,QAAA,kBgE97MC,+ChEk8MC,yBgEj8MD,QAAA,wBACA,gDAAU,YhEs8MT,QAAA,gBC4BD,iB+Dh+MU,QAAA,gBhEy8MX,c+D92MG,QAAS,oB/Dk3MV,c+Dp3MC,c/Dq3MH,QAAA,sB+Dh3MG,gD/Do3MD,kBACF,QAAA,iB+Dh3MG,gD/Do3MD,mBACF,QAAA,kBgE59MC,gDhEg+MC,yBgE/9MD,QAAA,wBACA,0BAAU,YhEo+MT,QAAA,gBC4BD,iB+D9/MU,QAAA,gBhEu+MX,c+Dv3MG,QAAS,oB/D23MV,c+D73MC,c/D83MH,QAAA,sB+Dz3MG,0B/D63MD,kBACF,QAAA,iB+Dz3MG,0B/D63MD,mBACF,QAAA,kBgEl/MC,0BhEs/MC,yBACF,QAAA,wBgEv/MC,yBhE2/MC,WACF,QAAA,gBgE5/MC,+ChEggNC,WACF,QAAA,gBgEjgNC,gDhEqgNC,WACF,QAAA,gBAGA,0B+Dh3MC,WA4BE,QAAS,gBC5LX,eAAU,QAAA,eACV,aAAU,ehEyhNT,QAAA,gBC4BD,oB+DnjNU,QAAA,gBhE4hNX,iB+D93MG,QAAS,oBAMX,iB/D23MD,iB+Dt2MG,QAAS,sB/D22MZ,qB+D/3MC,QAAS,e/Dk4MV,a+D53MC,qBAcE,QAAS,iB/Dm3MZ,sB+Dh4MC,QAAS,e/Dm4MV,a+D73MC,sBAOE,QAAS,kB/D23MZ,4B+D53MC,QAAS,eCpLT,ahEojNC,4BACF,QAAA,wBC6BD,aACE,cACE,QAAS","sourcesContent":["/*! 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","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\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 // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\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 thead {\n display: table-header-group; // h5bp.com/t\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 // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\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 img {\n max-width: 100% !important;\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 .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\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 th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\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 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\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}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\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}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\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}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\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: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\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 margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\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.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\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.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\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}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\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 left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\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.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\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.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n margin: .67em 0;\n font-size: 2em;\n}\nmark {\n color: #000;\n background: #ff0;\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}\nsup {\n top: -.5em;\n}\nsub {\n bottom: -.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n font: inherit;\n color: inherit;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n padding: .35em .625em .75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\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 img {\n max-width: 100% !important;\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 .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\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 th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all .2s ease-in-out;\n -o-transition: all .2s ease-in-out;\n transition: all .2s ease-in-out;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: .2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: .01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity .15s linear;\n -o-transition: opacity .15s linear;\n transition: opacity .15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: .35s;\n -o-transition-duration: .35s;\n transition-duration: .35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\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: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\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 margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\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.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\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.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.nav > li.disabled > a {\n color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border .2s ease-in-out;\n -o-transition: border .2s ease-in-out;\n transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n float: left;\n width: 0;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n -webkit-transition: width .6s ease;\n -o-transition: width .6s ease;\n transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-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-image: -o-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-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 -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-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-image: -o-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-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}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-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-image: -o-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-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}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-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-image: -o-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-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}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-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-image: -o-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-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}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\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.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: .2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: .5;\n}\nbutton.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n.modal-open {\n overflow: hidden;\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 -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform .3s ease-out;\n -o-transition: -o-transform .3s ease-out;\n transition: transform .3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\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.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\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 word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\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 word-wrap: normal;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n line-break: auto;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, .25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, .25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: .6s ease-in-out left;\n -o-transition: .6s ease-in-out left;\n transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform .6s ease-in-out;\n -o-transition: -o-transform .6s ease-in-out;\n transition: transform .6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\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 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\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.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
        ,
          , or
          .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: (@carousel-control-font-size * 1.5);\n height: (@carousel-control-font-size * 1.5);\n margin-top: (@carousel-control-font-size / -2);\n font-size: (@carousel-control-font-size * 1.5);\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: (@carousel-control-font-size / -2);\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: (@carousel-control-font-size / -2);\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\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 are clearfixed.\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// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.eot differ diff --git a/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf differ diff --git a/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff differ diff --git a/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/public/theme/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/public/theme/bootstrap/dist/js/bootstrap.js b/public/theme/bootstrap/dist/js/bootstrap.js new file mode 100644 index 0000000..01fbbcb --- /dev/null +++ b/public/theme/bootstrap/dist/js/bootstrap.js @@ -0,0 +1,2363 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.6 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.6 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.6' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.6 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.6' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.6 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.6' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.6 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.6' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.6' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.6 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.6' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.6 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.6' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.6 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.6' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.6 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.6' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.6 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.6' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.6 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.6' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/dist/js/bootstrap.min.js b/public/theme/bootstrap/dist/js/bootstrap.min.js new file mode 100644 index 0000000..e79c065 --- /dev/null +++ b/public/theme/bootstrap/dist/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
          ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/public/theme/bootstrap/dist/js/npm.js b/public/theme/bootstrap/dist/js/npm.js new file mode 100644 index 0000000..bf6aa80 --- /dev/null +++ b/public/theme/bootstrap/dist/js/npm.js @@ -0,0 +1,13 @@ +// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. +require('../../js/transition.js') +require('../../js/alert.js') +require('../../js/button.js') +require('../../js/carousel.js') +require('../../js/collapse.js') +require('../../js/dropdown.js') +require('../../js/modal.js') +require('../../js/tooltip.js') +require('../../js/popover.js') +require('../../js/scrollspy.js') +require('../../js/tab.js') +require('../../js/affix.js') \ No newline at end of file diff --git a/public/theme/bootstrap/fonts/glyphicons-halflings-regular.eot b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.eot differ diff --git a/public/theme/bootstrap/fonts/glyphicons-halflings-regular.svg b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/theme/bootstrap/fonts/glyphicons-halflings-regular.ttf b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.ttf differ diff --git a/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff differ diff --git a/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/public/theme/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/public/theme/bootstrap/grunt/.jshintrc b/public/theme/bootstrap/grunt/.jshintrc new file mode 100644 index 0000000..0ea0495 --- /dev/null +++ b/public/theme/bootstrap/grunt/.jshintrc @@ -0,0 +1,7 @@ +{ + "extends" : "../js/.jshintrc", + "asi" : false, + "browser" : false, + "es3" : false, + "node" : true +} diff --git a/public/theme/bootstrap/grunt/bs-commonjs-generator.js b/public/theme/bootstrap/grunt/bs-commonjs-generator.js new file mode 100644 index 0000000..0b4ebbf --- /dev/null +++ b/public/theme/bootstrap/grunt/bs-commonjs-generator.js @@ -0,0 +1,30 @@ +/*! + * Bootstrap Grunt task for the CommonJS module generation + * http://getbootstrap.com + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +'use strict'; + +var fs = require('fs'); +var path = require('path'); + +var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n'; + +module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) { + var destDir = path.dirname(destFilepath); + + function srcPathToDestRequire(srcFilepath) { + var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); + return 'require(\'' + requirePath + '\')'; + } + + var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); + try { + fs.writeFileSync(destFilepath, moduleOutputJs); + } catch (err) { + grunt.fail.warn(err); + } + grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); +}; diff --git a/public/theme/bootstrap/grunt/bs-glyphicons-data-generator.js b/public/theme/bootstrap/grunt/bs-glyphicons-data-generator.js new file mode 100644 index 0000000..af2a82e --- /dev/null +++ b/public/theme/bootstrap/grunt/bs-glyphicons-data-generator.js @@ -0,0 +1,42 @@ +/*! + * Bootstrap Grunt task for Glyphicons data generation + * http://getbootstrap.com + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +'use strict'; + +var fs = require('fs'); + +module.exports = function generateGlyphiconsData(grunt) { + // Pass encoding, utf8, so `readFileSync` will return a string instead of a + // buffer + var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8'); + var glyphiconsLines = glyphiconsFile.split('\n'); + + // Use any line that starts with ".glyphicon-" and capture the class name + var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/; + var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' + + '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n'; + var glyphiconsYml = 'docs/_data/glyphicons.yml'; + for (var i = 0, len = glyphiconsLines.length; i < len; i++) { + var match = glyphiconsLines[i].match(iconClassName); + + if (match !== null) { + glyphiconsData += '- ' + match[1] + '\n'; + } + } + + // Create the `_data` directory if it doesn't already exist + if (!fs.existsSync('docs/_data')) { + fs.mkdirSync('docs/_data'); + } + + try { + fs.writeFileSync(glyphiconsYml, glyphiconsData); + } catch (err) { + grunt.fail.warn(err); + } + grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.'); +}; diff --git a/public/theme/bootstrap/grunt/bs-lessdoc-parser.js b/public/theme/bootstrap/grunt/bs-lessdoc-parser.js new file mode 100644 index 0000000..5a9ed2b --- /dev/null +++ b/public/theme/bootstrap/grunt/bs-lessdoc-parser.js @@ -0,0 +1,237 @@ +/*! + * Bootstrap Grunt task for parsing Less docstrings + * http://getbootstrap.com + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +'use strict'; + +var Markdown = require('markdown-it'); + +function markdown2html(markdownString) { + var md = new Markdown(); + + // the slice removes the

          ...

          wrapper output by Markdown processor + return md.render(markdownString.trim()).slice(3, -5); +} + + +/* +Mini-language: + //== This is a normal heading, which starts a section. Sections group variables together. + //## Optional description for the heading + + //=== This is a subheading. + + //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `` stuff. + @foo: #fff; + + //-- This is a heading for a section whose variables shouldn't be customizable + + All other lines are ignored completely. +*/ + + +var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/; +var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/; +var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/; +var SECTION_DOCSTRING = /^[/]{2}#{2}(.+)$/; +var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]*);[ ]*$/; +var VAR_DOCSTRING = /^[/]{2}[*]{2}(.+)$/; + +function Section(heading, customizable) { + this.heading = heading.trim(); + this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); + this.customizable = customizable; + this.docstring = null; + this.subsections = []; +} + +Section.prototype.addSubSection = function (subsection) { + this.subsections.push(subsection); +}; + +function SubSection(heading) { + this.heading = heading.trim(); + this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); + this.variables = []; +} + +SubSection.prototype.addVar = function (variable) { + this.variables.push(variable); +}; + +function VarDocstring(markdownString) { + this.html = markdown2html(markdownString); +} + +function SectionDocstring(markdownString) { + this.html = markdown2html(markdownString); +} + +function Variable(name, defaultValue) { + this.name = name; + this.defaultValue = defaultValue; + this.docstring = null; +} + +function Tokenizer(fileContent) { + this._lines = fileContent.split('\n'); + this._next = undefined; +} + +Tokenizer.prototype.unshift = function (token) { + if (this._next !== undefined) { + throw new Error('Attempted to unshift twice!'); + } + this._next = token; +}; + +Tokenizer.prototype._shift = function () { + // returning null signals EOF + // returning undefined means the line was ignored + if (this._next !== undefined) { + var result = this._next; + this._next = undefined; + return result; + } + if (this._lines.length <= 0) { + return null; + } + var line = this._lines.shift(); + var match = null; + match = SUBSECTION_HEADING.exec(line); + if (match !== null) { + return new SubSection(match[1]); + } + match = CUSTOMIZABLE_HEADING.exec(line); + if (match !== null) { + return new Section(match[1], true); + } + match = UNCUSTOMIZABLE_HEADING.exec(line); + if (match !== null) { + return new Section(match[1], false); + } + match = SECTION_DOCSTRING.exec(line); + if (match !== null) { + return new SectionDocstring(match[1]); + } + match = VAR_DOCSTRING.exec(line); + if (match !== null) { + return new VarDocstring(match[1]); + } + var commentStart = line.lastIndexOf('//'); + var varLine = commentStart === -1 ? line : line.slice(0, commentStart); + match = VAR_ASSIGNMENT.exec(varLine); + if (match !== null) { + return new Variable(match[1], match[2]); + } + return undefined; +}; + +Tokenizer.prototype.shift = function () { + while (true) { + var result = this._shift(); + if (result === undefined) { + continue; + } + return result; + } +}; + +function Parser(fileContent) { + this._tokenizer = new Tokenizer(fileContent); +} + +Parser.prototype.parseFile = function () { + var sections = []; + while (true) { + var section = this.parseSection(); + if (section === null) { + if (this._tokenizer.shift() !== null) { + throw new Error('Unexpected unparsed section of file remains!'); + } + return sections; + } + sections.push(section); + } +}; + +Parser.prototype.parseSection = function () { + var section = this._tokenizer.shift(); + if (section === null) { + return null; + } + if (!(section instanceof Section)) { + throw new Error('Expected section heading; got: ' + JSON.stringify(section)); + } + var docstring = this._tokenizer.shift(); + if (docstring instanceof SectionDocstring) { + section.docstring = docstring; + } else { + this._tokenizer.unshift(docstring); + } + this.parseSubSections(section); + + return section; +}; + +Parser.prototype.parseSubSections = function (section) { + while (true) { + var subsection = this.parseSubSection(); + if (subsection === null) { + if (section.subsections.length === 0) { + // Presume an implicit initial subsection + subsection = new SubSection(''); + this.parseVars(subsection); + } else { + break; + } + } + section.addSubSection(subsection); + } + + if (section.subsections.length === 1 && !section.subsections[0].heading && section.subsections[0].variables.length === 0) { + // Ignore lone empty implicit subsection + section.subsections = []; + } +}; + +Parser.prototype.parseSubSection = function () { + var subsection = this._tokenizer.shift(); + if (subsection instanceof SubSection) { + this.parseVars(subsection); + return subsection; + } + this._tokenizer.unshift(subsection); + return null; +}; + +Parser.prototype.parseVars = function (subsection) { + while (true) { + var variable = this.parseVar(); + if (variable === null) { + return; + } + subsection.addVar(variable); + } +}; + +Parser.prototype.parseVar = function () { + var docstring = this._tokenizer.shift(); + if (!(docstring instanceof VarDocstring)) { + this._tokenizer.unshift(docstring); + docstring = null; + } + var variable = this._tokenizer.shift(); + if (variable instanceof Variable) { + variable.docstring = docstring; + return variable; + } + this._tokenizer.unshift(variable); + return null; +}; + + +module.exports = Parser; diff --git a/public/theme/bootstrap/grunt/bs-raw-files-generator.js b/public/theme/bootstrap/grunt/bs-raw-files-generator.js new file mode 100644 index 0000000..39224e4 --- /dev/null +++ b/public/theme/bootstrap/grunt/bs-raw-files-generator.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap Grunt task for generating raw-files.min.js for the Customizer + * http://getbootstrap.com + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +'use strict'; + +var fs = require('fs'); +var btoa = require('btoa'); +var glob = require('glob'); + +function getFiles(type) { + var files = {}; + var recursive = type === 'less'; + var globExpr = recursive ? '/**/*' : '/*'; + glob.sync(type + globExpr) + .filter(function (path) { + return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); + }) + .forEach(function (fullPath) { + var relativePath = fullPath.replace(/^[^/]+\//, ''); + files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'); + }); + return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; +} + +module.exports = function generateRawFilesJs(grunt, banner) { + if (!banner) { + banner = ''; + } + var dirs = ['js', 'less', 'fonts']; + var files = banner + dirs.map(getFiles).reduce(function (combined, file) { + return combined + file; + }, ''); + var rawFilesJs = 'docs/assets/js/raw-files.min.js'; + try { + fs.writeFileSync(rawFilesJs, files); + } catch (err) { + grunt.fail.warn(err); + } + grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.'); +}; diff --git a/public/theme/bootstrap/grunt/configBridge.json b/public/theme/bootstrap/grunt/configBridge.json new file mode 100644 index 0000000..94a8cba --- /dev/null +++ b/public/theme/bootstrap/grunt/configBridge.json @@ -0,0 +1,46 @@ +{ + "paths": { + "customizerJs": [ + "../assets/js/vendor/autoprefixer.js", + "../assets/js/vendor/less.min.js", + "../assets/js/vendor/jszip.min.js", + "../assets/js/vendor/uglify.min.js", + "../assets/js/vendor/Blob.js", + "../assets/js/vendor/FileSaver.js", + "../assets/js/raw-files.min.js", + "../assets/js/src/customizer.js" + ], + "docsJs": [ + "../assets/js/vendor/holder.min.js", + "../assets/js/vendor/ZeroClipboard.min.js", + "../assets/js/vendor/anchor.js", + "../assets/js/src/application.js" + ] + }, + "config": { + "autoprefixerBrowsers": [ + "Android 2.3", + "Android >= 4", + "Chrome >= 20", + "Firefox >= 24", + "Explorer >= 8", + "iOS >= 6", + "Opera >= 12", + "Safari >= 6" + ], + "jqueryCheck": [ + "if (typeof jQuery === 'undefined') {", + " throw new Error('Bootstrap\\'s JavaScript requires jQuery')", + "}\n" + ], + "jqueryVersionCheck": [ + "+function ($) {", + " 'use strict';", + " var version = $.fn.jquery.split(' ')[0].split('.')", + " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {", + " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')", + " }", + "}(jQuery);\n\n" + ] + } +} diff --git a/public/theme/bootstrap/grunt/sauce_browsers.yml b/public/theme/bootstrap/grunt/sauce_browsers.yml new file mode 100644 index 0000000..6267f35 --- /dev/null +++ b/public/theme/bootstrap/grunt/sauce_browsers.yml @@ -0,0 +1,82 @@ +[ + # Docs: https://saucelabs.com/docs/platforms/webdriver + + { + browserName: "safari", + platform: "OS X 10.10" + }, + { + browserName: "chrome", + platform: "OS X 10.10" + }, + { + browserName: "firefox", + platform: "OS X 10.10" + }, + + # Mac Opera not currently supported by Sauce Labs + + { + browserName: "internet explorer", + version: "11", + platform: "Windows 8.1" + }, + { + browserName: "internet explorer", + version: "10", + platform: "Windows 8" + }, + { + browserName: "internet explorer", + version: "9", + platform: "Windows 7" + }, + { + browserName: "internet explorer", + version: "8", + platform: "Windows 7" + }, + + # { # Unofficial + # browserName: "internet explorer", + # version: "7", + # platform: "Windows XP" + # }, + + { + browserName: "chrome", + platform: "Windows 8.1" + }, + { + browserName: "firefox", + platform: "Windows 8.1" + }, + + # Win Opera 15+ not currently supported by Sauce Labs + + { + browserName: "iphone", + platform: "OS X 10.10", + version: "8.2" + }, + + # iOS Chrome not currently supported by Sauce Labs + + # Linux (unofficial) + { + browserName: "chrome", + platform: "Linux" + }, + { + browserName: "firefox", + platform: "Linux" + } + + # Android Chrome not currently supported by Sauce Labs + + # { # Android Browser (super-unofficial) + # browserName: "android", + # version: "4.0", + # platform: "Linux" + # } +] diff --git a/public/theme/bootstrap/js/.jscsrc b/public/theme/bootstrap/js/.jscsrc new file mode 100644 index 0000000..9544d2d --- /dev/null +++ b/public/theme/bootstrap/js/.jscsrc @@ -0,0 +1,42 @@ +{ + "disallowEmptyBlocks": true, + "disallowKeywords": ["with"], + "disallowMixedSpacesAndTabs": true, + "disallowMultipleLineStrings": true, + "disallowMultipleVarDecl": true, + "disallowQuotedKeysInObjects": "allButReserved", + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "disallowSpaceBeforeBinaryOperators": [","], + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "disallowSpacesInsideArrayBrackets": true, + "disallowSpacesInsideParentheses": true, + "disallowTrailingComma": true, + "disallowTrailingWhitespace": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "requireCapitalizedConstructors": true, + "requireCommaBeforeLineBreak": true, + "requireDollarBeforejQueryAssignment": true, + "requireDotNotation": true, + "requireLineFeedAtFileEnd": true, + "requirePaddingNewLinesAfterUseStrict": true, + "requirePaddingNewLinesBeforeExport": true, + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "requireSpaceAfterLineComment": true, + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], + "requireSpaceBetweenArguments": true, + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true }, + "requireSpacesInConditionalExpression": true, + "requireSpacesInForStatement": true, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "requireSpacesInsideObjectBrackets": "allButNested", + "validateAlignedFunctionParameters": true, + "validateIndentation": 2, + "validateLineBreaks": "LF", + "validateNewlineAfterArrayElements": true, + "validateQuoteMarks": "'" +} diff --git a/public/theme/bootstrap/js/.jshintrc b/public/theme/bootstrap/js/.jshintrc new file mode 100644 index 0000000..a59e1d0 --- /dev/null +++ b/public/theme/bootstrap/js/.jshintrc @@ -0,0 +1,15 @@ +{ + "asi" : true, + "browser" : true, + "eqeqeq" : false, + "eqnull" : true, + "es3" : true, + "expr" : true, + "jquery" : true, + "latedef" : true, + "laxbreak" : true, + "nonbsp" : true, + "strict" : true, + "undef" : true, + "unused" : true +} diff --git a/public/theme/bootstrap/js/affix.js b/public/theme/bootstrap/js/affix.js new file mode 100644 index 0000000..2c5d5d6 --- /dev/null +++ b/public/theme/bootstrap/js/affix.js @@ -0,0 +1,162 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.6 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.6' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/alert.js b/public/theme/bootstrap/js/alert.js new file mode 100644 index 0000000..5536755 --- /dev/null +++ b/public/theme/bootstrap/js/alert.js @@ -0,0 +1,94 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.3.6 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.6' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); diff --git a/public/theme/bootstrap/js/button.js b/public/theme/bootstrap/js/button.js new file mode 100644 index 0000000..0f36e41 --- /dev/null +++ b/public/theme/bootstrap/js/button.js @@ -0,0 +1,120 @@ +/* ======================================================================== + * Bootstrap: button.js v3.3.6 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.6' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/carousel.js b/public/theme/bootstrap/js/carousel.js new file mode 100644 index 0000000..6cdbc79 --- /dev/null +++ b/public/theme/bootstrap/js/carousel.js @@ -0,0 +1,237 @@ +/* ======================================================================== + * Bootstrap: carousel.js v3.3.6 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.6' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/collapse.js b/public/theme/bootstrap/js/collapse.js new file mode 100644 index 0000000..9e26465 --- /dev/null +++ b/public/theme/bootstrap/js/collapse.js @@ -0,0 +1,211 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.3.6 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.6' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/dropdown.js b/public/theme/bootstrap/js/dropdown.js new file mode 100644 index 0000000..df6be86 --- /dev/null +++ b/public/theme/bootstrap/js/dropdown.js @@ -0,0 +1,165 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.6' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); diff --git a/public/theme/bootstrap/js/modal.js b/public/theme/bootstrap/js/modal.js new file mode 100644 index 0000000..5049ccc --- /dev/null +++ b/public/theme/bootstrap/js/modal.js @@ -0,0 +1,337 @@ +/* ======================================================================== + * Bootstrap: modal.js v3.3.6 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.6' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/popover.js b/public/theme/bootstrap/js/popover.js new file mode 100644 index 0000000..f2362e0 --- /dev/null +++ b/public/theme/bootstrap/js/popover.js @@ -0,0 +1,108 @@ +/* ======================================================================== + * Bootstrap: popover.js v3.3.6 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.6' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); diff --git a/public/theme/bootstrap/js/scrollspy.js b/public/theme/bootstrap/js/scrollspy.js new file mode 100644 index 0000000..5970b06 --- /dev/null +++ b/public/theme/bootstrap/js/scrollspy.js @@ -0,0 +1,172 @@ +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.6 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.6' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/public/theme/bootstrap/js/tab.js b/public/theme/bootstrap/js/tab.js new file mode 100644 index 0000000..7d533e8 --- /dev/null +++ b/public/theme/bootstrap/js/tab.js @@ -0,0 +1,155 @@ +/* ======================================================================== + * Bootstrap: tab.js v3.3.6 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.6' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); diff --git a/public/theme/bootstrap/js/tooltip.js b/public/theme/bootstrap/js/tooltip.js new file mode 100644 index 0000000..7094b34 --- /dev/null +++ b/public/theme/bootstrap/js/tooltip.js @@ -0,0 +1,514 @@ +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.6 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.6' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); diff --git a/public/theme/bootstrap/js/transition.js b/public/theme/bootstrap/js/transition.js new file mode 100644 index 0000000..fae36ed --- /dev/null +++ b/public/theme/bootstrap/js/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.3.6 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); diff --git a/public/theme/bootstrap/less/.csscomb.json b/public/theme/bootstrap/less/.csscomb.json new file mode 100644 index 0000000..40695a4 --- /dev/null +++ b/public/theme/bootstrap/less/.csscomb.json @@ -0,0 +1,304 @@ +{ + "always-semicolon": true, + "block-indent": 2, + "color-case": "lower", + "color-shorthand": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "space-after-colon": 1, + "space-after-combinator": 1, + "space-before-selector-delimiter": 0, + "space-between-declarations": "\n", + "space-after-opening-brace": "\n", + "space-before-closing-brace": "\n", + "space-before-colon": 0, + "space-before-combinator": 1, + "space-before-opening-brace": 1, + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ + [ + "position", + "top", + "right", + "bottom", + "left", + "z-index", + "display", + "float", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "-webkit-appearance", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "overflow", + "overflow-x", + "overflow-y", + "-webkit-overflow-scrolling", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-overflow-style", + "clip", + "clear", + "font", + "font-family", + "font-size", + "font-style", + "font-weight", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "-webkit-hyphens", + "-moz-hyphens", + "hyphens", + "line-height", + "color", + "text-align", + "-webkit-text-align-last", + "-moz-text-align-last", + "-ms-text-align-last", + "text-align-last", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-decoration", + "text-indent", + "text-justify", + "text-outline", + "-ms-text-overflow", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-shadow", + "text-transform", + "text-wrap", + "-webkit-text-size-adjust", + "-ms-text-size-adjust", + "letter-spacing", + "-ms-word-break", + "word-break", + "word-spacing", + "-ms-word-wrap", + "word-wrap", + "-moz-tab-size", + "-o-tab-size", + "tab-size", + "white-space", + "vertical-align", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + "pointer-events", + "-ms-touch-action", + "touch-action", + "cursor", + "visibility", + "zoom", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "-webkit-user-select", + "-moz-user-select", + "-ms-user-select", + "-o-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "background", + "background-color", + "background-image", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "filter", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "-webkit-background-clip", + "-moz-background-clip", + "background-clip", + "background-origin", + "-webkit-background-size", + "-moz-background-size", + "-o-background-size", + "background-size", + "border", + "border-color", + "border-style", + "border-width", + "border-top", + "border-top-color", + "border-top-style", + "border-top-width", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom", + "border-bottom-color", + "border-bottom-style", + "border-bottom-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "-webkit-border-image", + "-moz-border-image", + "-o-border-image", + "border-image", + "-webkit-border-image-source", + "-moz-border-image-source", + "-o-border-image-source", + "border-image-source", + "-webkit-border-image-slice", + "-moz-border-image-slice", + "-o-border-image-slice", + "border-image-slice", + "-webkit-border-image-width", + "-moz-border-image-width", + "-o-border-image-width", + "border-image-width", + "-webkit-border-image-outset", + "-moz-border-image-outset", + "-o-border-image-outset", + "border-image-outset", + "-webkit-border-image-repeat", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "-webkit-box-shadow", + "-moz-box-shadow", + "box-shadow", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "opacity", + "-ms-interpolation-mode", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction" + ] + ] +} diff --git a/public/theme/bootstrap/less/.csslintrc b/public/theme/bootstrap/less/.csslintrc new file mode 100644 index 0000000..005b862 --- /dev/null +++ b/public/theme/bootstrap/less/.csslintrc @@ -0,0 +1,19 @@ +{ + "adjoining-classes": false, + "box-sizing": false, + "box-model": false, + "compatible-vendor-prefixes": false, + "floats": false, + "font-sizes": false, + "gradients": false, + "important": false, + "known-properties": false, + "outline-none": false, + "qualified-headings": false, + "regex-selectors": false, + "shorthand": false, + "text-indent": false, + "unique-headings": false, + "universal-selector": false, + "unqualified-attributes": false +} diff --git a/public/theme/bootstrap/less/alerts.less b/public/theme/bootstrap/less/alerts.less new file mode 100644 index 0000000..c4199db --- /dev/null +++ b/public/theme/bootstrap/less/alerts.less @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: @alert-padding; + margin-bottom: @line-height-computed; + border: 1px solid transparent; + border-radius: @alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing @headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: @alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: (@alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); +} + +.alert-info { + .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); +} + +.alert-warning { + .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); +} + +.alert-danger { + .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); +} diff --git a/public/theme/bootstrap/less/badges.less b/public/theme/bootstrap/less/badges.less new file mode 100644 index 0000000..6ee16dc --- /dev/null +++ b/public/theme/bootstrap/less/badges.less @@ -0,0 +1,66 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: @font-size-small; + font-weight: @badge-font-weight; + color: @badge-color; + line-height: @badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: @badge-bg; + border-radius: @badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // Hover state, but only for links + a& { + &:hover, + &:focus { + color: @badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: @badge-active-color; + background-color: @badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} diff --git a/public/theme/bootstrap/less/bootstrap.less b/public/theme/bootstrap/less/bootstrap.less new file mode 100644 index 0000000..1c04778 --- /dev/null +++ b/public/theme/bootstrap/less/bootstrap.less @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset and dependencies +@import "normalize.less"; +@import "print.less"; +@import "glyphicons.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components +@import "component-animations.less"; +@import "dropdowns.less"; +@import "button-groups.less"; +@import "input-groups.less"; +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; +@import "labels.less"; +@import "badges.less"; +@import "jumbotron.less"; +@import "thumbnails.less"; +@import "alerts.less"; +@import "progress-bars.less"; +@import "media.less"; +@import "list-group.less"; +@import "panels.less"; +@import "responsive-embed.less"; +@import "wells.less"; +@import "close.less"; + +// Components w/ JavaScript +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; +@import "carousel.less"; + +// Utility classes +@import "utilities.less"; +@import "responsive-utilities.less"; diff --git a/public/theme/bootstrap/less/breadcrumbs.less b/public/theme/bootstrap/less/breadcrumbs.less new file mode 100644 index 0000000..cb01d50 --- /dev/null +++ b/public/theme/bootstrap/less/breadcrumbs.less @@ -0,0 +1,26 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; + margin-bottom: @line-height-computed; + list-style: none; + background-color: @breadcrumb-bg; + border-radius: @border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: @breadcrumb-color; + } + } + + > .active { + color: @breadcrumb-active-color; + } +} diff --git a/public/theme/bootstrap/less/button-groups.less b/public/theme/bootstrap/less/button-groups.less new file mode 100644 index 0000000..293245a --- /dev/null +++ b/public/theme/bootstrap/less/button-groups.less @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + &:extend(.clearfix all); + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + .border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { &:extend(.btn-xs); } +.btn-group-sm > .btn { &:extend(.btn-sm); } +.btn-group-lg > .btn { &:extend(.btn-lg); } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + .box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: @caret-width-large @caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 @caret-width-large @caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + &:extend(.clearfix all); + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + .border-top-radius(@btn-border-radius-base); + .border-bottom-radius(0); + } + &:last-child:not(:first-child) { + .border-top-radius(0); + .border-bottom-radius(@btn-border-radius-base); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/public/theme/bootstrap/less/buttons.less b/public/theme/bootstrap/less/buttons.less new file mode 100644 index 0000000..9cbb8f4 --- /dev/null +++ b/public/theme/bootstrap/less/buttons.less @@ -0,0 +1,166 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: @btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base); + .user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + .tab-focus(); + } + } + + &:hover, + &:focus, + &.focus { + color: @btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: @cursor-disabled; + .opacity(.65); + .box-shadow(none); + } + + a& { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `
          ` elements + } + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); +} +.btn-primary { + .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); +} +// Success appears as green +.btn-success { + .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); +} +// Info appears as blue-green +.btn-info { + .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); +} +// Warning appears as orange +.btn-warning { + .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: @link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + .box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: @link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); +} +.btn-xs { + .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/public/theme/bootstrap/less/carousel.less b/public/theme/bootstrap/less/carousel.less new file mode 100644 index 0000000..252011e --- /dev/null +++ b/public/theme/bootstrap/less/carousel.less @@ -0,0 +1,270 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + &:extend(.img-responsive); + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + .transition-transform(~'0.6s ease-in-out'); + .backface-visibility(~'hidden'); + .perspective(1000px); + + &.next, + &.active.right { + .translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + .translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + .translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: @carousel-control-width; + .opacity(@carousel-control-opacity); + font-size: @carousel-control-font-size; + color: @carousel-control-color; + text-align: center; + text-shadow: @carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: @carousel-control-color; + text-decoration: none; + .opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid @carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: @carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: @carousel-caption-color; + text-align: center; + text-shadow: @carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: @screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: (@carousel-control-font-size * 1.5); + height: (@carousel-control-font-size * 1.5); + margin-top: (@carousel-control-font-size / -2); + font-size: (@carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: (@carousel-control-font-size / -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: (@carousel-control-font-size / -2); + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/public/theme/bootstrap/less/close.less b/public/theme/bootstrap/less/close.less new file mode 100644 index 0000000..6d5bfe0 --- /dev/null +++ b/public/theme/bootstrap/less/close.less @@ -0,0 +1,34 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: (@font-size-base * 1.5); + font-weight: @close-font-weight; + line-height: 1; + color: @close-color; + text-shadow: @close-text-shadow; + .opacity(.2); + + &:hover, + &:focus { + color: @close-color; + text-decoration: none; + cursor: pointer; + .opacity(.5); + } + + // Additional properties for button version + // iOS requires the button element instead of an anchor tag. + // If you want the anchor version, it requires `href="#"`. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + button& { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + } +} diff --git a/public/theme/bootstrap/less/code.less b/public/theme/bootstrap/less/code.less new file mode 100644 index 0000000..a08b4d4 --- /dev/null +++ b/public/theme/bootstrap/less/code.less @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: @font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: @code-color; + background-color: @code-bg; + border-radius: @border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: @kbd-color; + background-color: @kbd-bg; + border-radius: @border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: ((@line-height-computed - 1) / 2); + margin: 0 0 (@line-height-computed / 2); + font-size: (@font-size-base - 1); // 14px to 13px + line-height: @line-height-base; + word-break: break-all; + word-wrap: break-word; + color: @pre-color; + background-color: @pre-bg; + border: 1px solid @pre-border-color; + border-radius: @border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: @pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/public/theme/bootstrap/less/component-animations.less b/public/theme/bootstrap/less/component-animations.less new file mode 100644 index 0000000..0bcee91 --- /dev/null +++ b/public/theme/bootstrap/less/component-animations.less @@ -0,0 +1,33 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + tr&.in { display: table-row; } + tbody&.in { display: table-row-group; } +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + .transition-property(~"height, visibility"); + .transition-duration(.35s); + .transition-timing-function(ease); +} diff --git a/public/theme/bootstrap/less/dropdowns.less b/public/theme/bootstrap/less/dropdowns.less new file mode 100644 index 0000000..f6876c1 --- /dev/null +++ b/public/theme/bootstrap/less/dropdowns.less @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: @caret-width-base dashed; + border-top: @caret-width-base solid ~"\9"; // IE8 + border-right: @caret-width-base solid transparent; + border-left: @caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: @font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: @dropdown-bg; + border: 1px solid @dropdown-fallback-border; // IE8 fallback + border: 1px solid @dropdown-border; + border-radius: @border-radius-base; + .box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @line-height-base; + color: @dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: @dropdown-link-hover-color; + background-color: @dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: @dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: @dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: @dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: @cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: @font-size-small; + line-height: @line-height-base; + color: @dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: (@zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: @caret-width-base dashed; + border-bottom: @caret-width-base solid ~"\9"; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: @grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + .dropdown-menu-right(); + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + .dropdown-menu-left(); + } + } +} diff --git a/public/theme/bootstrap/less/forms.less b/public/theme/bootstrap/less/forms.less new file mode 100644 index 0000000..e8b071a --- /dev/null +++ b/public/theme/bootstrap/less/forms.less @@ -0,0 +1,613 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + line-height: inherit; + color: @legend-color; + border: 0; + border-bottom: 1px solid @legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + .box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + +// Adjust output element +output { + display: block; + padding-top: (@padding-base-vertical + 1); + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; + background-color: @input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid @input-border; + border-radius: @input-border-radius; // Note: This has no effect on s in CSS. + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); + + // Customize the `:focus` state to imitate native WebKit styles. + .form-control-focus(); + + // Placeholder + .placeholder(); + + // Unstyle the caret on `` +// element gets special love because it's special, and that's a fact! +.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + height: @input-height; + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + border-radius: @border-radius; + + select& { + height: @input-height; + line-height: @input-height; + } + + textarea&, + select[multiple]& { + height: auto; + } +} diff --git a/public/theme/bootstrap/less/mixins/gradients.less b/public/theme/bootstrap/less/mixins/gradients.less new file mode 100644 index 0000000..0b88a89 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/gradients.less @@ -0,0 +1,59 @@ +// Gradients + +#gradient { + + // Horizontal gradient, from left to right + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12 + background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + // Vertical gradient, from top to bottom + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12 + background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + .directional(@start-color: #555; @end-color: #333; @deg: 45deg) { + background-repeat: repeat-x; + background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+ + background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12 + background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + } + .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@inner-color: #555; @outer-color: #333) { + background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); + background-image: radial-gradient(circle, @inner-color, @outer-color); + background-repeat: no-repeat; + } + .striped(@color: rgba(255,255,255,.15); @angle: 45deg) { + background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + } +} diff --git a/public/theme/bootstrap/less/mixins/grid-framework.less b/public/theme/bootstrap/less/mixins/grid-framework.less new file mode 100644 index 0000000..8c23eed --- /dev/null +++ b/public/theme/bootstrap/less/mixins/grid-framework.less @@ -0,0 +1,91 @@ +// Framework grid generation +// +// Used only by Bootstrap to generate the correct number of grid classes given +// any value of `@grid-columns`. + +.make-grid-columns() { + // Common styles for all sizes of grid columns, widths 1-12 + .col(@index) { // initial + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: ceil((@grid-gutter-width / 2)); + padding-right: floor((@grid-gutter-width / 2)); + } + } + .col(1); // kickstart it +} + +.float-grid-columns(@class) { + .col(@index) { // initial + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + float: left; + } + } + .col(1); // kickstart it +} + +.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { + .col-@{class}-@{index} { + width: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) { + .col-@{class}-push-@{index} { + left: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) { + .col-@{class}-push-0 { + left: auto; + } +} +.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) { + .col-@{class}-pull-@{index} { + right: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) { + .col-@{class}-pull-0 { + right: auto; + } +} +.calc-grid-column(@index, @class, @type) when (@type = offset) { + .col-@{class}-offset-@{index} { + margin-left: percentage((@index / @grid-columns)); + } +} + +// Basic looping in LESS +.loop-grid-columns(@index, @class, @type) when (@index >= 0) { + .calc-grid-column(@index, @class, @type); + // next iteration + .loop-grid-columns((@index - 1), @class, @type); +} + +// Create grid for specific class +.make-grid(@class) { + .float-grid-columns(@class); + .loop-grid-columns(@grid-columns, @class, width); + .loop-grid-columns(@grid-columns, @class, pull); + .loop-grid-columns(@grid-columns, @class, push); + .loop-grid-columns(@grid-columns, @class, offset); +} diff --git a/public/theme/bootstrap/less/mixins/grid.less b/public/theme/bootstrap/less/mixins/grid.less new file mode 100644 index 0000000..df496d0 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/grid.less @@ -0,0 +1,122 @@ +// Grid system +// +// Generate semantic grid columns with these mixins. + +// Centered container element +.container-fixed(@gutter: @grid-gutter-width) { + margin-right: auto; + margin-left: auto; + padding-left: floor((@gutter / 2)); + padding-right: ceil((@gutter / 2)); + &:extend(.clearfix all); +} + +// Creates a wrapper for a series of columns +.make-row(@gutter: @grid-gutter-width) { + margin-left: ceil((@gutter / -2)); + margin-right: floor((@gutter / -2)); + &:extend(.clearfix all); +} + +// Generate the extra small columns +.make-xs-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + float: left; + width: percentage((@columns / @grid-columns)); + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); +} +.make-xs-column-offset(@columns) { + margin-left: percentage((@columns / @grid-columns)); +} +.make-xs-column-push(@columns) { + left: percentage((@columns / @grid-columns)); +} +.make-xs-column-pull(@columns) { + right: percentage((@columns / @grid-columns)); +} + +// Generate the small columns +.make-sm-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-sm-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-offset(@columns) { + @media (min-width: @screen-sm-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-push(@columns) { + @media (min-width: @screen-sm-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-pull(@columns) { + @media (min-width: @screen-sm-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium columns +.make-md-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-md-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-md-column-offset(@columns) { + @media (min-width: @screen-md-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-push(@columns) { + @media (min-width: @screen-md-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-pull(@columns) { + @media (min-width: @screen-md-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the large columns +.make-lg-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-lg-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-offset(@columns) { + @media (min-width: @screen-lg-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-push(@columns) { + @media (min-width: @screen-lg-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-pull(@columns) { + @media (min-width: @screen-lg-min) { + right: percentage((@columns / @grid-columns)); + } +} diff --git a/public/theme/bootstrap/less/mixins/hide-text.less b/public/theme/bootstrap/less/mixins/hide-text.less new file mode 100644 index 0000000..2bb84a3 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/hide-text.less @@ -0,0 +1,21 @@ +// CSS image replacement +// +// Heads up! v3 launched with only `.hide-text()`, but per our pattern for +// mixins being reused as classes with the same name, this doesn't hold up. As +// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. +// +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 + +// Deprecated as of v3.0.1 (has been removed in v4) +.hide-text() { + font: ~"0/0" a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +// New mixin to use as of v3.0.1 +.text-hide() { + .hide-text(); +} diff --git a/public/theme/bootstrap/less/mixins/image.less b/public/theme/bootstrap/less/mixins/image.less new file mode 100644 index 0000000..f233cb3 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/image.less @@ -0,0 +1,33 @@ +// Image Mixins +// - Responsive image +// - Retina image + + +// Responsive image +// +// Keep images from scaling beyond the width of their parents. +.img-responsive(@display: block) { + display: @display; + max-width: 100%; // Part 1: Set a maximum relative to the parent + height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching +} + + +// Retina image +// +// Short retina mixin for setting background-image and -size. Note that the +// spelling of `min--moz-device-pixel-ratio` is intentional. +.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { + background-image: url("@{file-1x}"); + + @media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), + only screen and ( min-resolution: 2dppx) { + background-image: url("@{file-2x}"); + background-size: @width-1x @height-1x; + } +} diff --git a/public/theme/bootstrap/less/mixins/labels.less b/public/theme/bootstrap/less/mixins/labels.less new file mode 100644 index 0000000..9f7a67e --- /dev/null +++ b/public/theme/bootstrap/less/mixins/labels.less @@ -0,0 +1,12 @@ +// Labels + +.label-variant(@color) { + background-color: @color; + + &[href] { + &:hover, + &:focus { + background-color: darken(@color, 10%); + } + } +} diff --git a/public/theme/bootstrap/less/mixins/list-group.less b/public/theme/bootstrap/less/mixins/list-group.less new file mode 100644 index 0000000..03aa190 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/list-group.less @@ -0,0 +1,30 @@ +// List Groups + +.list-group-item-variant(@state; @background; @color) { + .list-group-item-@{state} { + color: @color; + background-color: @background; + + a&, + button& { + color: @color; + + .list-group-item-heading { + color: inherit; + } + + &:hover, + &:focus { + color: @color; + background-color: darken(@background, 5%); + } + &.active, + &.active:hover, + &.active:focus { + color: #fff; + background-color: @color; + border-color: @color; + } + } + } +} diff --git a/public/theme/bootstrap/less/mixins/nav-divider.less b/public/theme/bootstrap/less/mixins/nav-divider.less new file mode 100644 index 0000000..feb1e9e --- /dev/null +++ b/public/theme/bootstrap/less/mixins/nav-divider.less @@ -0,0 +1,10 @@ +// Horizontal dividers +// +// Dividers (basically an hr) within dropdowns and nav lists + +.nav-divider(@color: #e5e5e5) { + height: 1px; + margin: ((@line-height-computed / 2) - 1) 0; + overflow: hidden; + background-color: @color; +} diff --git a/public/theme/bootstrap/less/mixins/nav-vertical-align.less b/public/theme/bootstrap/less/mixins/nav-vertical-align.less new file mode 100644 index 0000000..d458c78 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/nav-vertical-align.less @@ -0,0 +1,9 @@ +// Navbar vertical align +// +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. + +.navbar-vertical-align(@element-height) { + margin-top: ((@navbar-height - @element-height) / 2); + margin-bottom: ((@navbar-height - @element-height) / 2); +} diff --git a/public/theme/bootstrap/less/mixins/opacity.less b/public/theme/bootstrap/less/mixins/opacity.less new file mode 100644 index 0000000..33ed25c --- /dev/null +++ b/public/theme/bootstrap/less/mixins/opacity.less @@ -0,0 +1,8 @@ +// Opacity + +.opacity(@opacity) { + opacity: @opacity; + // IE8 filter + @opacity-ie: (@opacity * 100); + filter: ~"alpha(opacity=@{opacity-ie})"; +} diff --git a/public/theme/bootstrap/less/mixins/pagination.less b/public/theme/bootstrap/less/mixins/pagination.less new file mode 100644 index 0000000..618804f --- /dev/null +++ b/public/theme/bootstrap/less/mixins/pagination.less @@ -0,0 +1,24 @@ +// Pagination + +.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + > li { + > a, + > span { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + } + &:first-child { + > a, + > span { + .border-left-radius(@border-radius); + } + } + &:last-child { + > a, + > span { + .border-right-radius(@border-radius); + } + } + } +} diff --git a/public/theme/bootstrap/less/mixins/panels.less b/public/theme/bootstrap/less/mixins/panels.less new file mode 100644 index 0000000..49ee10d --- /dev/null +++ b/public/theme/bootstrap/less/mixins/panels.less @@ -0,0 +1,24 @@ +// Panels + +.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { + border-color: @border; + + & > .panel-heading { + color: @heading-text-color; + background-color: @heading-bg-color; + border-color: @heading-border; + + + .panel-collapse > .panel-body { + border-top-color: @border; + } + .badge { + color: @heading-bg-color; + background-color: @heading-text-color; + } + } + & > .panel-footer { + + .panel-collapse > .panel-body { + border-bottom-color: @border; + } + } +} diff --git a/public/theme/bootstrap/less/mixins/progress-bar.less b/public/theme/bootstrap/less/mixins/progress-bar.less new file mode 100644 index 0000000..f07996a --- /dev/null +++ b/public/theme/bootstrap/less/mixins/progress-bar.less @@ -0,0 +1,10 @@ +// Progress bars + +.progress-bar-variant(@color) { + background-color: @color; + + // Deprecated parent class requirement as of v3.2.0 + .progress-striped & { + #gradient > .striped(); + } +} diff --git a/public/theme/bootstrap/less/mixins/reset-filter.less b/public/theme/bootstrap/less/mixins/reset-filter.less new file mode 100644 index 0000000..68cdb5e --- /dev/null +++ b/public/theme/bootstrap/less/mixins/reset-filter.less @@ -0,0 +1,8 @@ +// Reset filters for IE +// +// When you need to remove a gradient background, do not forget to use this to reset +// the IE filter for IE9 and below. + +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} diff --git a/public/theme/bootstrap/less/mixins/reset-text.less b/public/theme/bootstrap/less/mixins/reset-text.less new file mode 100644 index 0000000..58dd4d1 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/reset-text.less @@ -0,0 +1,18 @@ +.reset-text() { + font-family: @font-family-base; + // We deliberately do NOT reset font-size. + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: @line-height-base; + text-align: left; // Fallback for where `start` is not supported + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; +} diff --git a/public/theme/bootstrap/less/mixins/resize.less b/public/theme/bootstrap/less/mixins/resize.less new file mode 100644 index 0000000..3acd3af --- /dev/null +++ b/public/theme/bootstrap/less/mixins/resize.less @@ -0,0 +1,6 @@ +// Resize anything + +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` +} diff --git a/public/theme/bootstrap/less/mixins/responsive-visibility.less b/public/theme/bootstrap/less/mixins/responsive-visibility.less new file mode 100644 index 0000000..ecf1e97 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/responsive-visibility.less @@ -0,0 +1,15 @@ +// Responsive utilities + +// +// More easily include all the states for responsive-utilities.less. +.responsive-visibility() { + display: block !important; + table& { display: table !important; } + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} + +.responsive-invisibility() { + display: none !important; +} diff --git a/public/theme/bootstrap/less/mixins/size.less b/public/theme/bootstrap/less/mixins/size.less new file mode 100644 index 0000000..a8be650 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/size.less @@ -0,0 +1,10 @@ +// Sizing shortcuts + +.size(@width; @height) { + width: @width; + height: @height; +} + +.square(@size) { + .size(@size; @size); +} diff --git a/public/theme/bootstrap/less/mixins/tab-focus.less b/public/theme/bootstrap/less/mixins/tab-focus.less new file mode 100644 index 0000000..1f1f05a --- /dev/null +++ b/public/theme/bootstrap/less/mixins/tab-focus.less @@ -0,0 +1,9 @@ +// WebKit-style focus + +.tab-focus() { + // Default + outline: thin dotted; + // WebKit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} diff --git a/public/theme/bootstrap/less/mixins/table-row.less b/public/theme/bootstrap/less/mixins/table-row.less new file mode 100644 index 0000000..0f287f1 --- /dev/null +++ b/public/theme/bootstrap/less/mixins/table-row.less @@ -0,0 +1,28 @@ +// Tables + +.table-row-variant(@state; @background) { + // Exact selectors below required to override `.table-striped` and prevent + // inheritance to nested tables. + .table > thead > tr, + .table > tbody > tr, + .table > tfoot > tr { + > td.@{state}, + > th.@{state}, + &.@{state} > td, + &.@{state} > th { + background-color: @background; + } + } + + // Hover states for `.table-hover` + // Note: this is not available for cells or rows within `thead` or `tfoot`. + .table-hover > tbody > tr { + > td.@{state}:hover, + > th.@{state}:hover, + &.@{state}:hover > td, + &:hover > .@{state}, + &.@{state}:hover > th { + background-color: darken(@background, 5%); + } + } +} diff --git a/public/theme/bootstrap/less/mixins/text-emphasis.less b/public/theme/bootstrap/less/mixins/text-emphasis.less new file mode 100644 index 0000000..9e8a77a --- /dev/null +++ b/public/theme/bootstrap/less/mixins/text-emphasis.less @@ -0,0 +1,9 @@ +// Typography + +.text-emphasis-variant(@color) { + color: @color; + a&:hover, + a&:focus { + color: darken(@color, 10%); + } +} diff --git a/public/theme/bootstrap/less/mixins/text-overflow.less b/public/theme/bootstrap/less/mixins/text-overflow.less new file mode 100644 index 0000000..c11ad2f --- /dev/null +++ b/public/theme/bootstrap/less/mixins/text-overflow.less @@ -0,0 +1,8 @@ +// Text overflow +// Requires inline-block or block for proper styling + +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/public/theme/bootstrap/less/mixins/vendor-prefixes.less b/public/theme/bootstrap/less/mixins/vendor-prefixes.less new file mode 100644 index 0000000..2b5e74b --- /dev/null +++ b/public/theme/bootstrap/less/mixins/vendor-prefixes.less @@ -0,0 +1,227 @@ +// Vendor Prefixes +// +// All vendor mixins are deprecated as of v3.2.0 due to the introduction of +// Autoprefixer in our Gruntfile. They have been removed in v4. + +// - Animations +// - Backface visibility +// - Box shadow +// - Box sizing +// - Content columns +// - Hyphens +// - Placeholder text +// - Transformations +// - Transitions +// - User Select + + +// Animations +.animation(@animation) { + -webkit-animation: @animation; + -o-animation: @animation; + animation: @animation; +} +.animation-name(@name) { + -webkit-animation-name: @name; + animation-name: @name; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + animation-duration: @duration; +} +.animation-timing-function(@timing-function) { + -webkit-animation-timing-function: @timing-function; + animation-timing-function: @timing-function; +} +.animation-delay(@delay) { + -webkit-animation-delay: @delay; + animation-delay: @delay; +} +.animation-iteration-count(@iteration-count) { + -webkit-animation-iteration-count: @iteration-count; + animation-iteration-count: @iteration-count; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + animation-direction: @direction; +} +.animation-fill-mode(@fill-mode) { + -webkit-animation-fill-mode: @fill-mode; + animation-fill-mode: @fill-mode; +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden` + +.backface-visibility(@visibility) { + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Drop shadows +// +// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's +// supported browsers that have box shadow capabilities now support it. + +.box-shadow(@shadow) { + -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 + box-shadow: @shadow; +} + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// CSS3 Content Columns +.content-columns(@column-count; @column-gap: @grid-gutter-width) { + -webkit-column-count: @column-count; + -moz-column-count: @column-count; + column-count: @column-count; + -webkit-column-gap: @column-gap; + -moz-column-gap: @column-gap; + column-gap: @column-gap; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; // IE10+ + -o-hyphens: @mode; + hyphens: @mode; +} + +// Placeholder text +.placeholder(@color: @input-color-placeholder) { + // Firefox + &::-moz-placeholder { + color: @color; + opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526 + } + &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ + &::-webkit-input-placeholder { color: @color; } // Safari and Chrome +} + +// Transformations +.scale(@ratio) { + -webkit-transform: scale(@ratio); + -ms-transform: scale(@ratio); // IE9 only + -o-transform: scale(@ratio); + transform: scale(@ratio); +} +.scale(@ratioX; @ratioY) { + -webkit-transform: scale(@ratioX, @ratioY); + -ms-transform: scale(@ratioX, @ratioY); // IE9 only + -o-transform: scale(@ratioX, @ratioY); + transform: scale(@ratioX, @ratioY); +} +.scaleX(@ratio) { + -webkit-transform: scaleX(@ratio); + -ms-transform: scaleX(@ratio); // IE9 only + -o-transform: scaleX(@ratio); + transform: scaleX(@ratio); +} +.scaleY(@ratio) { + -webkit-transform: scaleY(@ratio); + -ms-transform: scaleY(@ratio); // IE9 only + -o-transform: scaleY(@ratio); + transform: scaleY(@ratio); +} +.skew(@x; @y) { + -webkit-transform: skewX(@x) skewY(@y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ + -o-transform: skewX(@x) skewY(@y); + transform: skewX(@x) skewY(@y); +} +.translate(@x; @y) { + -webkit-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); // IE9 only + -o-transform: translate(@x, @y); + transform: translate(@x, @y); +} +.translate3d(@x; @y; @z) { + -webkit-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); // IE9 only + -o-transform: rotate(@degrees); + transform: rotate(@degrees); +} +.rotateX(@degrees) { + -webkit-transform: rotateX(@degrees); + -ms-transform: rotateX(@degrees); // IE9 only + -o-transform: rotateX(@degrees); + transform: rotateX(@degrees); +} +.rotateY(@degrees) { + -webkit-transform: rotateY(@degrees); + -ms-transform: rotateY(@degrees); // IE9 only + -o-transform: rotateY(@degrees); + transform: rotateY(@degrees); +} +.perspective(@perspective) { + -webkit-perspective: @perspective; + -moz-perspective: @perspective; + perspective: @perspective; +} +.perspective-origin(@perspective) { + -webkit-perspective-origin: @perspective; + -moz-perspective-origin: @perspective; + perspective-origin: @perspective; +} +.transform-origin(@origin) { + -webkit-transform-origin: @origin; + -moz-transform-origin: @origin; + -ms-transform-origin: @origin; // IE9 only + transform-origin: @origin; +} + + +// Transitions + +.transition(@transition) { + -webkit-transition: @transition; + -o-transition: @transition; + transition: @transition; +} +.transition-property(@transition-property) { + -webkit-transition-property: @transition-property; + transition-property: @transition-property; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} +.transition-timing-function(@timing-function) { + -webkit-transition-timing-function: @timing-function; + transition-timing-function: @timing-function; +} +.transition-transform(@transition) { + -webkit-transition: -webkit-transform @transition; + -moz-transition: -moz-transform @transition; + -o-transition: -o-transform @transition; + transition: transform @transition; +} + + +// User select +// For selecting text on the page + +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; // IE10+ + user-select: @select; +} diff --git a/public/theme/bootstrap/less/modals.less b/public/theme/bootstrap/less/modals.less new file mode 100644 index 0000000..767ce36 --- /dev/null +++ b/public/theme/bootstrap/less/modals.less @@ -0,0 +1,150 @@ +// +// Modals +// -------------------------------------------------- + +// .modal-open - body class for killing the scroll +// .modal - container to scroll within +// .modal-dialog - positioning shell for the actual modal +// .modal-content - actual modal w/ bg and corners and shit + +// Kill the scroll on the body +.modal-open { + overflow: hidden; +} + +// Container that the modal scrolls within +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindex-modal; + -webkit-overflow-scrolling: touch; + + // Prevent Chrome on Windows from adding a focus outline. For details, see + // https://github.com/twbs/bootstrap/pull/10951. + outline: 0; + + // When fading in the modal, animate it to slide down + &.fade .modal-dialog { + .translate(0, -25%); + .transition-transform(~"0.3s ease-out"); + } + &.in .modal-dialog { .translate(0, 0) } +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +// Shell div to position the modal with bottom padding +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +// Actual modal +.modal-content { + position: relative; + background-color: @modal-content-bg; + border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) + border: 1px solid @modal-content-border-color; + border-radius: @border-radius-large; + .box-shadow(0 3px 9px rgba(0,0,0,.5)); + background-clip: padding-box; + // Remove focus outline from opened modal + outline: 0; +} + +// Modal background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindex-modal-background; + background-color: @modal-backdrop-bg; + // Fade for backdrop + &.fade { .opacity(0); } + &.in { .opacity(@modal-backdrop-opacity); } +} + +// Modal header +// Top section of the modal w/ title and dismiss +.modal-header { + padding: @modal-title-padding; + border-bottom: 1px solid @modal-header-border-color; + &:extend(.clearfix all); +} +// Close icon +.modal-header .close { + margin-top: -2px; +} + +// Title text within header +.modal-title { + margin: 0; + line-height: @modal-title-line-height; +} + +// Modal body +// Where all modal content resides (sibling of .modal-header and .modal-footer) +.modal-body { + position: relative; + padding: @modal-inner-padding; +} + +// Footer (for actions) +.modal-footer { + padding: @modal-inner-padding; + text-align: right; // right align buttons + border-top: 1px solid @modal-footer-border-color; + &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } + // and override it for block buttons as well + .btn-block + .btn-block { + margin-left: 0; + } +} + +// Measure scrollbar width for padding body during modal show/hide +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +// Scale up the modal +@media (min-width: @screen-sm-min) { + // Automatically set modal's width for larger viewports + .modal-dialog { + width: @modal-md; + margin: 30px auto; + } + .modal-content { + .box-shadow(0 5px 15px rgba(0,0,0,.5)); + } + + // Modal sizes + .modal-sm { width: @modal-sm; } +} + +@media (min-width: @screen-md-min) { + .modal-lg { width: @modal-lg; } +} diff --git a/public/theme/bootstrap/less/navbar.less b/public/theme/bootstrap/less/navbar.less new file mode 100644 index 0000000..6d751bb --- /dev/null +++ b/public/theme/bootstrap/less/navbar.less @@ -0,0 +1,660 @@ +// +// Navbars +// -------------------------------------------------- + + +// Wrapper and base class +// +// Provide a static navbar from which we expand to create full-width, fixed, and +// other navbar variations. + +.navbar { + position: relative; + min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) + margin-bottom: @navbar-margin-bottom; + border: 1px solid transparent; + + // Prevent floats from breaking the navbar + &:extend(.clearfix all); + + @media (min-width: @grid-float-breakpoint) { + border-radius: @navbar-border-radius; + } +} + + +// Navbar heading +// +// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy +// styling of responsive aspects. + +.navbar-header { + &:extend(.clearfix all); + + @media (min-width: @grid-float-breakpoint) { + float: left; + } +} + + +// Navbar collapse (body) +// +// Group your navbar content into this for easy collapsing and expanding across +// various device sizes. By default, this content is collapsed when <768px, but +// will expand past that for a horizontal display. +// +// To start (on mobile devices) the navbar links, forms, and buttons are stacked +// vertically and include a `max-height` to overflow in case you have too much +// content for the user's viewport. + +.navbar-collapse { + overflow-x: visible; + padding-right: @navbar-padding-horizontal; + padding-left: @navbar-padding-horizontal; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255,255,255,.1); + &:extend(.clearfix all); + -webkit-overflow-scrolling: touch; + + &.in { + overflow-y: auto; + } + + @media (min-width: @grid-float-breakpoint) { + width: auto; + border-top: 0; + box-shadow: none; + + &.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; // Override default setting + overflow: visible !important; + } + + &.in { + overflow-y: visible; + } + + // Undo the collapse side padding for navbars with containers to ensure + // alignment of right-aligned contents. + .navbar-fixed-top &, + .navbar-static-top &, + .navbar-fixed-bottom & { + padding-left: 0; + padding-right: 0; + } + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + .navbar-collapse { + max-height: @navbar-collapse-max-height; + + @media (max-device-width: @screen-xs-min) and (orientation: landscape) { + max-height: 200px; + } + } +} + + +// Both navbar header and collapse +// +// When a container is present, change the behavior of the header and collapse. + +.container, +.container-fluid { + > .navbar-header, + > .navbar-collapse { + margin-right: -@navbar-padding-horizontal; + margin-left: -@navbar-padding-horizontal; + + @media (min-width: @grid-float-breakpoint) { + margin-right: 0; + margin-left: 0; + } + } +} + + +// +// Navbar alignment options +// +// Display the navbar across the entirety of the page or fixed it to the top or +// bottom of the page. + +// Static top (unfixed, but 100% wide) navbar +.navbar-static-top { + z-index: @zindex-navbar; + border-width: 0 0 1px; + + @media (min-width: @grid-float-breakpoint) { + border-radius: 0; + } +} + +// Fix the top/bottom navbars when screen real estate supports it +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindex-navbar-fixed; + + // Undo the rounded corners + @media (min-width: @grid-float-breakpoint) { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; // override .navbar defaults + border-width: 1px 0 0; +} + + +// Brand/project name + +.navbar-brand { + float: left; + padding: @navbar-padding-vertical @navbar-padding-horizontal; + font-size: @font-size-large; + line-height: @line-height-computed; + height: @navbar-height; + + &:hover, + &:focus { + text-decoration: none; + } + + > img { + display: block; + } + + @media (min-width: @grid-float-breakpoint) { + .navbar > .container &, + .navbar > .container-fluid & { + margin-left: -@navbar-padding-horizontal; + } + } +} + + +// Navbar toggle +// +// Custom button for toggling the `.navbar-collapse`, powered by the collapse +// JavaScript plugin. + +.navbar-toggle { + position: relative; + float: right; + margin-right: @navbar-padding-horizontal; + padding: 9px 10px; + .navbar-vertical-align(34px); + background-color: transparent; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + border-radius: @border-radius-base; + + // We remove the `outline` here, but later compensate by attaching `:hover` + // styles to `:focus`. + &:focus { + outline: 0; + } + + // Bars + .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .icon-bar + .icon-bar { + margin-top: 4px; + } + + @media (min-width: @grid-float-breakpoint) { + display: none; + } +} + + +// Navbar nav links +// +// Builds on top of the `.nav` components with its own modifier class to make +// the nav the full height of the horizontal nav (above 768px). + +.navbar-nav { + margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal; + + > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: @line-height-computed; + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + > li > a, + .dropdown-header { + padding: 5px 15px 5px 25px; + } + > li > a { + line-height: @line-height-computed; + &:hover, + &:focus { + background-image: none; + } + } + } + } + + // Uncollapse the nav + @media (min-width: @grid-float-breakpoint) { + float: left; + margin: 0; + + > li { + float: left; + > a { + padding-top: @navbar-padding-vertical; + padding-bottom: @navbar-padding-vertical; + } + } + } +} + + +// Navbar form +// +// Extension of the `.form-inline` with some extra flavor for optimum display in +// our navbars. + +.navbar-form { + margin-left: -@navbar-padding-horizontal; + margin-right: -@navbar-padding-horizontal; + padding: 10px @navbar-padding-horizontal; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); + .box-shadow(@shadow); + + // Mixin behavior for optimum display + .form-inline(); + + .form-group { + @media (max-width: @grid-float-breakpoint-max) { + margin-bottom: 5px; + + &:last-child { + margin-bottom: 0; + } + } + } + + // Vertically center in expanded, horizontal navbar + .navbar-vertical-align(@input-height-base); + + // Undo 100% width for pull classes + @media (min-width: @grid-float-breakpoint) { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + .box-shadow(none); + } +} + + +// Dropdown menus + +// Menu position and menu carets +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + .border-top-radius(0); +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + .border-top-radius(@navbar-border-radius); + .border-bottom-radius(0); +} + + +// Buttons in navbars +// +// Vertically center a button within a navbar (when *not* in a form). + +.navbar-btn { + .navbar-vertical-align(@input-height-base); + + &.btn-sm { + .navbar-vertical-align(@input-height-small); + } + &.btn-xs { + .navbar-vertical-align(22); + } +} + + +// Text in navbars +// +// Add a class to make any element properly align itself vertically within the navbars. + +.navbar-text { + .navbar-vertical-align(@line-height-computed); + + @media (min-width: @grid-float-breakpoint) { + float: left; + margin-left: @navbar-padding-horizontal; + margin-right: @navbar-padding-horizontal; + } +} + + +// Component alignment +// +// Repurpose the pull utilities as their own navbar utilities to avoid specificity +// issues with parents and chaining. Only do this when the navbar is uncollapsed +// though so that navbar contents properly stack and align in mobile. +// +// Declared after the navbar components to ensure more specificity on the margins. + +@media (min-width: @grid-float-breakpoint) { + .navbar-left { .pull-left(); } + .navbar-right { + .pull-right(); + margin-right: -@navbar-padding-horizontal; + + ~ .navbar-right { + margin-right: 0; + } + } +} + + +// Alternate navbars +// -------------------------------------------------- + +// Default navbar +.navbar-default { + background-color: @navbar-default-bg; + border-color: @navbar-default-border; + + .navbar-brand { + color: @navbar-default-brand-color; + &:hover, + &:focus { + color: @navbar-default-brand-hover-color; + background-color: @navbar-default-brand-hover-bg; + } + } + + .navbar-text { + color: @navbar-default-color; + } + + .navbar-nav { + > li > a { + color: @navbar-default-link-color; + + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + background-color: @navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-active-color; + background-color: @navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + background-color: @navbar-default-link-disabled-bg; + } + } + } + + .navbar-toggle { + border-color: @navbar-default-toggle-border-color; + &:hover, + &:focus { + background-color: @navbar-default-toggle-hover-bg; + } + .icon-bar { + background-color: @navbar-default-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: @navbar-default-border; + } + + // Dropdown menu items + .navbar-nav { + // Remove background color from open dropdown + > .open > a { + &, + &:hover, + &:focus { + background-color: @navbar-default-link-active-bg; + color: @navbar-default-link-active-color; + } + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + > li > a { + color: @navbar-default-link-color; + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + background-color: @navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-active-color; + background-color: @navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + background-color: @navbar-default-link-disabled-bg; + } + } + } + } + } + + + // Links in navbars + // + // Add a class to ensure links outside the navbar nav are colored correctly. + + .navbar-link { + color: @navbar-default-link-color; + &:hover { + color: @navbar-default-link-hover-color; + } + } + + .btn-link { + color: @navbar-default-link-color; + &:hover, + &:focus { + color: @navbar-default-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @navbar-default-link-disabled-color; + } + } + } +} + +// Inverse navbar + +.navbar-inverse { + background-color: @navbar-inverse-bg; + border-color: @navbar-inverse-border; + + .navbar-brand { + color: @navbar-inverse-brand-color; + &:hover, + &:focus { + color: @navbar-inverse-brand-hover-color; + background-color: @navbar-inverse-brand-hover-bg; + } + } + + .navbar-text { + color: @navbar-inverse-color; + } + + .navbar-nav { + > li > a { + color: @navbar-inverse-link-color; + + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + background-color: @navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-active-color; + background-color: @navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + background-color: @navbar-inverse-link-disabled-bg; + } + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border-color: @navbar-inverse-toggle-border-color; + &:hover, + &:focus { + background-color: @navbar-inverse-toggle-hover-bg; + } + .icon-bar { + background-color: @navbar-inverse-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: darken(@navbar-inverse-bg, 7%); + } + + // Dropdowns + .navbar-nav { + > .open > a { + &, + &:hover, + &:focus { + background-color: @navbar-inverse-link-active-bg; + color: @navbar-inverse-link-active-color; + } + } + + @media (max-width: @grid-float-breakpoint-max) { + // Dropdowns get custom display + .open .dropdown-menu { + > .dropdown-header { + border-color: @navbar-inverse-border; + } + .divider { + background-color: @navbar-inverse-border; + } + > li > a { + color: @navbar-inverse-link-color; + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + background-color: @navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-active-color; + background-color: @navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + background-color: @navbar-inverse-link-disabled-bg; + } + } + } + } + } + + .navbar-link { + color: @navbar-inverse-link-color; + &:hover { + color: @navbar-inverse-link-hover-color; + } + } + + .btn-link { + color: @navbar-inverse-link-color; + &:hover, + &:focus { + color: @navbar-inverse-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @navbar-inverse-link-disabled-color; + } + } + } +} diff --git a/public/theme/bootstrap/less/navs.less b/public/theme/bootstrap/less/navs.less new file mode 100644 index 0000000..a3d11b1 --- /dev/null +++ b/public/theme/bootstrap/less/navs.less @@ -0,0 +1,242 @@ +// +// Navs +// -------------------------------------------------- + + +// Base class +// -------------------------------------------------- + +.nav { + margin-bottom: 0; + padding-left: 0; // Override default ul/ol + list-style: none; + &:extend(.clearfix all); + + > li { + position: relative; + display: block; + + > a { + position: relative; + display: block; + padding: @nav-link-padding; + &:hover, + &:focus { + text-decoration: none; + background-color: @nav-link-hover-bg; + } + } + + // Disabled state sets text to gray and nukes hover/tab effects + &.disabled > a { + color: @nav-disabled-link-color; + + &:hover, + &:focus { + color: @nav-disabled-link-hover-color; + text-decoration: none; + background-color: transparent; + cursor: @cursor-disabled; + } + } + } + + // Open dropdowns + .open > a { + &, + &:hover, + &:focus { + background-color: @nav-link-hover-bg; + border-color: @link-color; + } + } + + // Nav dividers (deprecated with v3.0.1) + // + // This should have been removed in v3 with the dropping of `.nav-list`, but + // we missed it. We don't currently support this anywhere, but in the interest + // of maintaining backward compatibility in case you use it, it's deprecated. + .nav-divider { + .nav-divider(); + } + + // Prevent IE8 from misplacing imgs + // + // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 + > li > a > img { + max-width: none; + } +} + + +// Tabs +// ------------------------- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid @nav-tabs-border-color; + > li { + float: left; + // Make the list-items overlay the bottom border + margin-bottom: -1px; + + // Actual tabs (as links) + > a { + margin-right: 2px; + line-height: @line-height-base; + border: 1px solid transparent; + border-radius: @border-radius-base @border-radius-base 0 0; + &:hover { + border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color; + } + } + + // Active state, and its :hover to override normal :hover + &.active > a { + &, + &:hover, + &:focus { + color: @nav-tabs-active-link-hover-color; + background-color: @nav-tabs-active-link-hover-bg; + border: 1px solid @nav-tabs-active-link-hover-border-color; + border-bottom-color: transparent; + cursor: default; + } + } + } + // pulling this in mainly for less shorthand + &.nav-justified { + .nav-justified(); + .nav-tabs-justified(); + } +} + + +// Pills +// ------------------------- +.nav-pills { + > li { + float: left; + + // Links rendered as pills + > a { + border-radius: @nav-pills-border-radius; + } + + li { + margin-left: 2px; + } + + // Active state + &.active > a { + &, + &:hover, + &:focus { + color: @nav-pills-active-link-hover-color; + background-color: @nav-pills-active-link-hover-bg; + } + } + } +} + + +// Stacked pills +.nav-stacked { + > li { + float: none; + + li { + margin-top: 2px; + margin-left: 0; // no need for this gap between nav items + } + } +} + + +// Nav variations +// -------------------------------------------------- + +// Justified nav links +// ------------------------- + +.nav-justified { + width: 100%; + + > li { + float: none; + > a { + text-align: center; + margin-bottom: 5px; + } + } + + > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + + @media (min-width: @screen-sm-min) { + > li { + display: table-cell; + width: 1%; + > a { + margin-bottom: 0; + } + } + } +} + +// Move borders to anchors instead of bottom of list +// +// Mixin for adding on top the shared `.nav-justified` styles for our tabs +.nav-tabs-justified { + border-bottom: 0; + + > li > a { + // Override margin from .nav-tabs + margin-right: 0; + border-radius: @border-radius-base; + } + + > .active > a, + > .active > a:hover, + > .active > a:focus { + border: 1px solid @nav-tabs-justified-link-border-color; + } + + @media (min-width: @screen-sm-min) { + > li > a { + border-bottom: 1px solid @nav-tabs-justified-link-border-color; + border-radius: @border-radius-base @border-radius-base 0 0; + } + > .active > a, + > .active > a:hover, + > .active > a:focus { + border-bottom-color: @nav-tabs-justified-active-link-border-color; + } + } +} + + +// Tabbable tabs +// ------------------------- + +// Hide tabbable panes to start, show them when `.active` +.tab-content { + > .tab-pane { + display: none; + } + > .active { + display: block; + } +} + + +// Dropdowns +// ------------------------- + +// Specific dropdowns +.nav-tabs .dropdown-menu { + // make dropdown border overlap tab border + margin-top: -1px; + // Remove the top rounded corners here since there is a hard edge above the menu + .border-top-radius(0); +} diff --git a/public/theme/bootstrap/less/normalize.less b/public/theme/bootstrap/less/normalize.less new file mode 100644 index 0000000..9dddf73 --- /dev/null +++ b/public/theme/bootstrap/less/normalize.less @@ -0,0 +1,424 @@ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + +// +// 1. Set default font family to sans-serif. +// 2. Prevent iOS and IE text size adjust after device orientation change, +// without disabling user zoom. +// + +html { + font-family: sans-serif; // 1 + -ms-text-size-adjust: 100%; // 2 + -webkit-text-size-adjust: 100%; // 2 +} + +// +// Remove default margin. +// + +body { + margin: 0; +} + +// HTML5 display definitions +// ========================================================================== + +// +// Correct `block` display not defined for any HTML5 element in IE 8/9. +// Correct `block` display not defined for `details` or `summary` in IE 10/11 +// and Firefox. +// Correct `block` display not defined for `main` in IE 11. +// + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +// +// 1. Correct `inline-block` display not defined in IE 8/9. +// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. +// + +audio, +canvas, +progress, +video { + display: inline-block; // 1 + vertical-align: baseline; // 2 +} + +// +// Prevent modern browsers from displaying `audio` without controls. +// Remove excess height in iOS 5 devices. +// + +audio:not([controls]) { + display: none; + height: 0; +} + +// +// Address `[hidden]` styling not present in IE 8/9/10. +// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. +// + +[hidden], +template { + display: none; +} + +// Links +// ========================================================================== + +// +// Remove the gray background color from active links in IE 10. +// + +a { + background-color: transparent; +} + +// +// Improve readability of focused elements when they are also in an +// active/hover state. +// + +a:active, +a:hover { + outline: 0; +} + +// Text-level semantics +// ========================================================================== + +// +// Address styling not present in IE 8/9/10/11, Safari, and Chrome. +// + +abbr[title] { + border-bottom: 1px dotted; +} + +// +// Address style set to `bolder` in Firefox 4+, Safari, and Chrome. +// + +b, +strong { + font-weight: bold; +} + +// +// Address styling not present in Safari and Chrome. +// + +dfn { + font-style: italic; +} + +// +// Address variable `h1` font-size and margin within `section` and `article` +// contexts in Firefox 4+, Safari, and Chrome. +// + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +// +// Address styling not present in IE 8/9. +// + +mark { + background: #ff0; + color: #000; +} + +// +// Address inconsistent and variable font size in all browsers. +// + +small { + font-size: 80%; +} + +// +// Prevent `sub` and `sup` affecting `line-height` in all browsers. +// + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +// Embedded content +// ========================================================================== + +// +// Remove border when inside `a` element in IE 8/9/10. +// + +img { + border: 0; +} + +// +// Correct overflow not hidden in IE 9/10/11. +// + +svg:not(:root) { + overflow: hidden; +} + +// Grouping content +// ========================================================================== + +// +// Address margin not present in IE 8/9 and Safari. +// + +figure { + margin: 1em 40px; +} + +// +// Address differences between Firefox and other browsers. +// + +hr { + box-sizing: content-box; + height: 0; +} + +// +// Contain overflow in all browsers. +// + +pre { + overflow: auto; +} + +// +// Address odd `em`-unit font size rendering in all browsers. +// + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +// Forms +// ========================================================================== + +// +// Known limitation: by default, Chrome and Safari on OS X allow very limited +// styling of `select`, unless a `border` property is set. +// + +// +// 1. Correct color not being inherited. +// Known issue: affects color of disabled elements. +// 2. Correct font properties not being inherited. +// 3. Address margins set differently in Firefox 4+, Safari, and Chrome. +// + +button, +input, +optgroup, +select, +textarea { + color: inherit; // 1 + font: inherit; // 2 + margin: 0; // 3 +} + +// +// Address `overflow` set to `hidden` in IE 8/9/10/11. +// + +button { + overflow: visible; +} + +// +// Address inconsistent `text-transform` inheritance for `button` and `select`. +// All other form control elements do not inherit `text-transform` values. +// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. +// Correct `select` style inheritance in Firefox. +// + +button, +select { + text-transform: none; +} + +// +// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` +// and `video` controls. +// 2. Correct inability to style clickable `input` types in iOS. +// 3. Improve usability and consistency of cursor style between image-type +// `input` and others. +// + +button, +html input[type="button"], // 1 +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; // 2 + cursor: pointer; // 3 +} + +// +// Re-set default cursor for disabled elements. +// + +button[disabled], +html input[disabled] { + cursor: default; +} + +// +// Remove inner padding and border in Firefox 4+. +// + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +// +// Address Firefox 4+ setting `line-height` on `input` using `!important` in +// the UA stylesheet. +// + +input { + line-height: normal; +} + +// +// It's recommended that you don't attempt to style these elements. +// Firefox's implementation doesn't respect box-sizing, padding, or width. +// +// 1. Address box sizing set to `content-box` in IE 8/9/10. +// 2. Remove excess padding in IE 8/9/10. +// + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; // 1 + padding: 0; // 2 +} + +// +// Fix the cursor style for Chrome's increment/decrement buttons. For certain +// `font-size` values of the `input`, it causes the cursor style of the +// decrement button to change from `default` to `text`. +// + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +// +// 1. Address `appearance` set to `searchfield` in Safari and Chrome. +// 2. Address `box-sizing` set to `border-box` in Safari and Chrome. +// + +input[type="search"] { + -webkit-appearance: textfield; // 1 + box-sizing: content-box; //2 +} + +// +// Remove inner padding and search cancel button in Safari and Chrome on OS X. +// Safari (but not Chrome) clips the cancel button when the search input has +// padding (and `textfield` appearance). +// + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +// +// Define consistent border, margin, and padding. +// + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +// +// 1. Correct `color` not being inherited in IE 8/9/10/11. +// 2. Remove padding so people aren't caught out if they zero out fieldsets. +// + +legend { + border: 0; // 1 + padding: 0; // 2 +} + +// +// Remove default vertical scrollbar in IE 8/9/10/11. +// + +textarea { + overflow: auto; +} + +// +// Don't inherit the `font-weight` (applied by a rule above). +// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. +// + +optgroup { + font-weight: bold; +} + +// Tables +// ========================================================================== + +// +// Remove most spacing between table cells. +// + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/public/theme/bootstrap/less/pager.less b/public/theme/bootstrap/less/pager.less new file mode 100644 index 0000000..41abaaa --- /dev/null +++ b/public/theme/bootstrap/less/pager.less @@ -0,0 +1,54 @@ +// +// Pager pagination +// -------------------------------------------------- + + +.pager { + padding-left: 0; + margin: @line-height-computed 0; + list-style: none; + text-align: center; + &:extend(.clearfix all); + li { + display: inline; + > a, + > span { + display: inline-block; + padding: 5px 14px; + background-color: @pager-bg; + border: 1px solid @pager-border; + border-radius: @pager-border-radius; + } + + > a:hover, + > a:focus { + text-decoration: none; + background-color: @pager-hover-bg; + } + } + + .next { + > a, + > span { + float: right; + } + } + + .previous { + > a, + > span { + float: left; + } + } + + .disabled { + > a, + > a:hover, + > a:focus, + > span { + color: @pager-disabled-color; + background-color: @pager-bg; + cursor: @cursor-disabled; + } + } +} diff --git a/public/theme/bootstrap/less/pagination.less b/public/theme/bootstrap/less/pagination.less new file mode 100644 index 0000000..31f77aa --- /dev/null +++ b/public/theme/bootstrap/less/pagination.less @@ -0,0 +1,89 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- +.pagination { + display: inline-block; + padding-left: 0; + margin: @line-height-computed 0; + border-radius: @border-radius-base; + + > li { + display: inline; // Remove list-style and block-level defaults + > a, + > span { + position: relative; + float: left; // Collapse white-space + padding: @padding-base-vertical @padding-base-horizontal; + line-height: @line-height-base; + text-decoration: none; + color: @pagination-color; + background-color: @pagination-bg; + border: 1px solid @pagination-border; + margin-left: -1px; + } + &:first-child { + > a, + > span { + margin-left: 0; + .border-left-radius(@border-radius-base); + } + } + &:last-child { + > a, + > span { + .border-right-radius(@border-radius-base); + } + } + } + + > li > a, + > li > span { + &:hover, + &:focus { + z-index: 2; + color: @pagination-hover-color; + background-color: @pagination-hover-bg; + border-color: @pagination-hover-border; + } + } + + > .active > a, + > .active > span { + &, + &:hover, + &:focus { + z-index: 3; + color: @pagination-active-color; + background-color: @pagination-active-bg; + border-color: @pagination-active-border; + cursor: default; + } + } + + > .disabled { + > span, + > span:hover, + > span:focus, + > a, + > a:hover, + > a:focus { + color: @pagination-disabled-color; + background-color: @pagination-disabled-bg; + border-color: @pagination-disabled-border; + cursor: @cursor-disabled; + } + } +} + +// Sizing +// -------------------------------------------------- + +// Large +.pagination-lg { + .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); +} + +// Small +.pagination-sm { + .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} diff --git a/public/theme/bootstrap/less/panels.less b/public/theme/bootstrap/less/panels.less new file mode 100644 index 0000000..425eb5e --- /dev/null +++ b/public/theme/bootstrap/less/panels.less @@ -0,0 +1,271 @@ +// +// Panels +// -------------------------------------------------- + + +// Base class +.panel { + margin-bottom: @line-height-computed; + background-color: @panel-bg; + border: 1px solid transparent; + border-radius: @panel-border-radius; + .box-shadow(0 1px 1px rgba(0,0,0,.05)); +} + +// Panel contents +.panel-body { + padding: @panel-body-padding; + &:extend(.clearfix all); +} + +// Optional heading +.panel-heading { + padding: @panel-heading-padding; + border-bottom: 1px solid transparent; + .border-top-radius((@panel-border-radius - 1)); + + > .dropdown .dropdown-toggle { + color: inherit; + } +} + +// Within heading, strip any `h*` tag of its default margins for spacing. +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: ceil((@font-size-base * 1.125)); + color: inherit; + + > a, + > small, + > .small, + > small > a, + > .small > a { + color: inherit; + } +} + +// Optional footer (stays gray in every modifier class) +.panel-footer { + padding: @panel-footer-padding; + background-color: @panel-footer-bg; + border-top: 1px solid @panel-inner-border; + .border-bottom-radius((@panel-border-radius - 1)); +} + + +// List groups in panels +// +// By default, space out list group content from panel headings to account for +// any kind of custom content between the two. + +.panel { + > .list-group, + > .panel-collapse > .list-group { + margin-bottom: 0; + + .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + + // Add border top radius for first one + &:first-child { + .list-group-item:first-child { + border-top: 0; + .border-top-radius((@panel-border-radius - 1)); + } + } + + // Add border bottom radius for last one + &:last-child { + .list-group-item:last-child { + border-bottom: 0; + .border-bottom-radius((@panel-border-radius - 1)); + } + } + } + > .panel-heading + .panel-collapse > .list-group { + .list-group-item:first-child { + .border-top-radius(0); + } + } +} +// Collapse space between when there's no additional content. +.panel-heading + .list-group { + .list-group-item:first-child { + border-top-width: 0; + } +} +.list-group + .panel-footer { + border-top-width: 0; +} + +// Tables in panels +// +// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and +// watch it go full width. + +.panel { + > .table, + > .table-responsive > .table, + > .panel-collapse > .table { + margin-bottom: 0; + + caption { + padding-left: @panel-body-padding; + padding-right: @panel-body-padding; + } + } + // Add border top radius for first one + > .table:first-child, + > .table-responsive:first-child > .table:first-child { + .border-top-radius((@panel-border-radius - 1)); + + > thead:first-child, + > tbody:first-child { + > tr:first-child { + border-top-left-radius: (@panel-border-radius - 1); + border-top-right-radius: (@panel-border-radius - 1); + + td:first-child, + th:first-child { + border-top-left-radius: (@panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-top-right-radius: (@panel-border-radius - 1); + } + } + } + } + // Add border bottom radius for last one + > .table:last-child, + > .table-responsive:last-child > .table:last-child { + .border-bottom-radius((@panel-border-radius - 1)); + + > tbody:last-child, + > tfoot:last-child { + > tr:last-child { + border-bottom-left-radius: (@panel-border-radius - 1); + border-bottom-right-radius: (@panel-border-radius - 1); + + td:first-child, + th:first-child { + border-bottom-left-radius: (@panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-bottom-right-radius: (@panel-border-radius - 1); + } + } + } + } + > .panel-body + .table, + > .panel-body + .table-responsive, + > .table + .panel-body, + > .table-responsive + .panel-body { + border-top: 1px solid @table-border-color; + } + > .table > tbody:first-child > tr:first-child th, + > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + > .table-bordered, + > .table-responsive > .table-bordered { + border: 0; + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + > thead, + > tbody { + > tr:first-child { + > td, + > th { + border-bottom: 0; + } + } + } + > tbody, + > tfoot { + > tr:last-child { + > td, + > th { + border-bottom: 0; + } + } + } + } + > .table-responsive { + border: 0; + margin-bottom: 0; + } +} + + +// Collapsable panels (aka, accordion) +// +// Wrap a series of panels in `.panel-group` to turn them into an accordion with +// the help of our collapse JavaScript plugin. + +.panel-group { + margin-bottom: @line-height-computed; + + // Tighten up margin so it's only between panels + .panel { + margin-bottom: 0; + border-radius: @panel-border-radius; + + + .panel { + margin-top: 5px; + } + } + + .panel-heading { + border-bottom: 0; + + + .panel-collapse > .panel-body, + + .panel-collapse > .list-group { + border-top: 1px solid @panel-inner-border; + } + } + + .panel-footer { + border-top: 0; + + .panel-collapse .panel-body { + border-bottom: 1px solid @panel-inner-border; + } + } +} + + +// Contextual variations +.panel-default { + .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border); +} +.panel-primary { + .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border); +} +.panel-success { + .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border); +} +.panel-info { + .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border); +} +.panel-warning { + .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border); +} +.panel-danger { + .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border); +} diff --git a/public/theme/bootstrap/less/popovers.less b/public/theme/bootstrap/less/popovers.less new file mode 100644 index 0000000..3a62a64 --- /dev/null +++ b/public/theme/bootstrap/less/popovers.less @@ -0,0 +1,131 @@ +// +// Popovers +// -------------------------------------------------- + + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: @zindex-popover; + display: none; + max-width: @popover-max-width; + padding: 1px; + // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + .reset-text(); + font-size: @font-size-base; + + background-color: @popover-bg; + background-clip: padding-box; + border: 1px solid @popover-fallback-border-color; + border: 1px solid @popover-border-color; + border-radius: @border-radius-large; + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + + // Offset the popover to account for the popover arrow + &.top { margin-top: -@popover-arrow-width; } + &.right { margin-left: @popover-arrow-width; } + &.bottom { margin-top: @popover-arrow-width; } + &.left { margin-left: -@popover-arrow-width; } +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: @font-size-base; + background-color: @popover-title-bg; + border-bottom: 1px solid darken(@popover-title-bg, 5%); + border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +// Arrows +// +// .arrow is outer, .arrow:after is inner + +.popover > .arrow { + &, + &:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +} +.popover > .arrow { + border-width: @popover-arrow-outer-width; +} +.popover > .arrow:after { + border-width: @popover-arrow-width; + content: ""; +} + +.popover { + &.top > .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-bottom-width: 0; + border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-top-color: @popover-arrow-outer-color; + bottom: -@popover-arrow-outer-width; + &:after { + content: " "; + bottom: 1px; + margin-left: -@popover-arrow-width; + border-bottom-width: 0; + border-top-color: @popover-arrow-color; + } + } + &.right > .arrow { + top: 50%; + left: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-left-width: 0; + border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-right-color: @popover-arrow-outer-color; + &:after { + content: " "; + left: 1px; + bottom: -@popover-arrow-width; + border-left-width: 0; + border-right-color: @popover-arrow-color; + } + } + &.bottom > .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-top-width: 0; + border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-bottom-color: @popover-arrow-outer-color; + top: -@popover-arrow-outer-width; + &:after { + content: " "; + top: 1px; + margin-left: -@popover-arrow-width; + border-top-width: 0; + border-bottom-color: @popover-arrow-color; + } + } + + &.left > .arrow { + top: 50%; + right: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-right-width: 0; + border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback + border-left-color: @popover-arrow-outer-color; + &:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: @popover-arrow-color; + bottom: -@popover-arrow-width; + } + } +} diff --git a/public/theme/bootstrap/less/print.less b/public/theme/bootstrap/less/print.less new file mode 100644 index 0000000..66e54ab --- /dev/null +++ b/public/theme/bootstrap/less/print.less @@ -0,0 +1,101 @@ +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + +// ========================================================================== +// Print styles. +// Inlined to avoid the additional HTTP request: h5bp.com/r +// ========================================================================== + +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; // Black prints faster: h5bp.com/s + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + // Don't show links that are fragment identifiers, + // or use the `javascript:` pseudo protocol + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; // h5bp.com/t + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + // Bootstrap specific changes start + + // Bootstrap components + .navbar { + display: none; + } + .btn, + .dropup > .btn { + > .caret { + border-top-color: #000 !important; + } + } + .label { + border: 1px solid #000; + } + + .table { + border-collapse: collapse !important; + + td, + th { + background-color: #fff !important; + } + } + .table-bordered { + th, + td { + border: 1px solid #ddd !important; + } + } + + // Bootstrap specific changes end +} diff --git a/public/theme/bootstrap/less/progress-bars.less b/public/theme/bootstrap/less/progress-bars.less new file mode 100644 index 0000000..8868a1f --- /dev/null +++ b/public/theme/bootstrap/less/progress-bars.less @@ -0,0 +1,87 @@ +// +// Progress bars +// -------------------------------------------------- + + +// Bar animations +// ------------------------- + +// WebKit +@-webkit-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Spec and IE10+ +@keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + + +// Bar itself +// ------------------------- + +// Outer container +.progress { + overflow: hidden; + height: @line-height-computed; + margin-bottom: @line-height-computed; + background-color: @progress-bg; + border-radius: @progress-border-radius; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); +} + +// Bar of progress +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: @font-size-small; + line-height: @line-height-computed; + color: @progress-bar-color; + text-align: center; + background-color: @progress-bar-bg; + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + .transition(width .6s ease); +} + +// Striped bars +// +// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar-striped` class, which you just add to an existing +// `.progress-bar`. +.progress-striped .progress-bar, +.progress-bar-striped { + #gradient > .striped(); + background-size: 40px 40px; +} + +// Call animation for the active one +// +// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar.active` approach. +.progress.active .progress-bar, +.progress-bar.active { + .animation(progress-bar-stripes 2s linear infinite); +} + + +// Variations +// ------------------------- + +.progress-bar-success { + .progress-bar-variant(@progress-bar-success-bg); +} + +.progress-bar-info { + .progress-bar-variant(@progress-bar-info-bg); +} + +.progress-bar-warning { + .progress-bar-variant(@progress-bar-warning-bg); +} + +.progress-bar-danger { + .progress-bar-variant(@progress-bar-danger-bg); +} diff --git a/public/theme/bootstrap/less/responsive-embed.less b/public/theme/bootstrap/less/responsive-embed.less new file mode 100644 index 0000000..080a511 --- /dev/null +++ b/public/theme/bootstrap/less/responsive-embed.less @@ -0,0 +1,35 @@ +// Embeds responsive +// +// Credit: Nicolas Gallagher and SUIT CSS. + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + + .embed-responsive-item, + iframe, + embed, + object, + video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; + } +} + +// Modifier class for 16:9 aspect ratio +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} + +// Modifier class for 4:3 aspect ratio +.embed-responsive-4by3 { + padding-bottom: 75%; +} diff --git a/public/theme/bootstrap/less/responsive-utilities.less b/public/theme/bootstrap/less/responsive-utilities.less new file mode 100644 index 0000000..b1db31d --- /dev/null +++ b/public/theme/bootstrap/less/responsive-utilities.less @@ -0,0 +1,194 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + + +// IE10 in Windows (Phone) 8 +// +// Support for responsive views via media queries is kind of borked in IE10, for +// Surface/desktop in split view and for Windows Phone 8. This particular fix +// must be accompanied by a snippet of JavaScript to sniff the user agent and +// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at +// our Getting Started page for more information on this bug. +// +// For more information, see the following: +// +// Issue: https://github.com/twbs/bootstrap/issues/10497 +// Docs: http://getbootstrap.com/getting-started/#support-ie10-width +// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ + +@-ms-viewport { + width: device-width; +} + + +// Visibility utilities +// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + .responsive-invisibility(); +} + +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} + +.visible-xs { + @media (max-width: @screen-xs-max) { + .responsive-visibility(); + } +} +.visible-xs-block { + @media (max-width: @screen-xs-max) { + display: block !important; + } +} +.visible-xs-inline { + @media (max-width: @screen-xs-max) { + display: inline !important; + } +} +.visible-xs-inline-block { + @media (max-width: @screen-xs-max) { + display: inline-block !important; + } +} + +.visible-sm { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .responsive-visibility(); + } +} +.visible-sm-block { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: block !important; + } +} +.visible-sm-inline { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: inline !important; + } +} +.visible-sm-inline-block { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + display: inline-block !important; + } +} + +.visible-md { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + .responsive-visibility(); + } +} +.visible-md-block { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: block !important; + } +} +.visible-md-inline { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: inline !important; + } +} +.visible-md-inline-block { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + display: inline-block !important; + } +} + +.visible-lg { + @media (min-width: @screen-lg-min) { + .responsive-visibility(); + } +} +.visible-lg-block { + @media (min-width: @screen-lg-min) { + display: block !important; + } +} +.visible-lg-inline { + @media (min-width: @screen-lg-min) { + display: inline !important; + } +} +.visible-lg-inline-block { + @media (min-width: @screen-lg-min) { + display: inline-block !important; + } +} + +.hidden-xs { + @media (max-width: @screen-xs-max) { + .responsive-invisibility(); + } +} +.hidden-sm { + @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { + .responsive-invisibility(); + } +} +.hidden-md { + @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { + .responsive-invisibility(); + } +} +.hidden-lg { + @media (min-width: @screen-lg-min) { + .responsive-invisibility(); + } +} + + +// Print utilities +// +// Media queries are placed on the inside to be mixin-friendly. + +// Note: Deprecated .visible-print as of v3.2.0 +.visible-print { + .responsive-invisibility(); + + @media print { + .responsive-visibility(); + } +} +.visible-print-block { + display: none !important; + + @media print { + display: block !important; + } +} +.visible-print-inline { + display: none !important; + + @media print { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; + + @media print { + display: inline-block !important; + } +} + +.hidden-print { + @media print { + .responsive-invisibility(); + } +} diff --git a/public/theme/bootstrap/less/scaffolding.less b/public/theme/bootstrap/less/scaffolding.less new file mode 100644 index 0000000..1929bfc --- /dev/null +++ b/public/theme/bootstrap/less/scaffolding.less @@ -0,0 +1,161 @@ +// +// Scaffolding +// -------------------------------------------------- + + +// Reset the box-sizing +// +// Heads up! This reset may cause conflicts with some third-party widgets. +// For recommendations on resolving such conflicts, see +// http://getbootstrap.com/getting-started/#third-box-sizing +* { + .box-sizing(border-box); +} +*:before, +*:after { + .box-sizing(border-box); +} + + +// Body reset + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + +body { + font-family: @font-family-base; + font-size: @font-size-base; + line-height: @line-height-base; + color: @text-color; + background-color: @body-bg; +} + +// Reset fonts for relevant elements +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + + +// Links + +a { + color: @link-color; + text-decoration: none; + + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: @link-hover-decoration; + } + + &:focus { + .tab-focus(); + } +} + + +// Figures +// +// We reset this here because previously Normalize had no `figure` margins. This +// ensures we don't break anyone's use of the element. + +figure { + margin: 0; +} + + +// Images + +img { + vertical-align: middle; +} + +// Responsive images (ensure images don't scale beyond their parents) +.img-responsive { + .img-responsive(); +} + +// Rounded corners +.img-rounded { + border-radius: @border-radius-large; +} + +// Image thumbnails +// +// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. +.img-thumbnail { + padding: @thumbnail-padding; + line-height: @line-height-base; + background-color: @thumbnail-bg; + border: 1px solid @thumbnail-border; + border-radius: @thumbnail-border-radius; + .transition(all .2s ease-in-out); + + // Keep them at most 100% wide + .img-responsive(inline-block); +} + +// Perfect circle +.img-circle { + border-radius: 50%; // set radius in percents +} + + +// Horizontal rules + +hr { + margin-top: @line-height-computed; + margin-bottom: @line-height-computed; + border: 0; + border-top: 1px solid @hr-border; +} + + +// Only display content to screen readers +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// Credit: HTML5 Boilerplate + +.sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} + + +// iOS "clickable elements" fix for role="button" +// +// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) +// for traditionally non-focusable elements with role="button" +// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +[role="button"] { + cursor: pointer; +} diff --git a/public/theme/bootstrap/less/tables.less b/public/theme/bootstrap/less/tables.less new file mode 100644 index 0000000..2242c03 --- /dev/null +++ b/public/theme/bootstrap/less/tables.less @@ -0,0 +1,234 @@ +// +// Tables +// -------------------------------------------------- + + +table { + background-color: @table-bg; +} +caption { + padding-top: @table-cell-padding; + padding-bottom: @table-cell-padding; + color: @text-muted; + text-align: left; +} +th { + text-align: left; +} + + +// Baseline styles + +.table { + width: 100%; + max-width: 100%; + margin-bottom: @line-height-computed; + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: @table-cell-padding; + line-height: @line-height-base; + vertical-align: top; + border-top: 1px solid @table-border-color; + } + } + } + // Bottom align for column headings + > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid @table-border-color; + } + // Remove top border from thead by default + > caption + thead, + > colgroup + thead, + > thead:first-child { + > tr:first-child { + > th, + > td { + border-top: 0; + } + } + } + // Account for multiple tbody instances + > tbody + tbody { + border-top: 2px solid @table-border-color; + } + + // Nesting + .table { + background-color: @body-bg; + } +} + + +// Condensed table w/ half padding + +.table-condensed { + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: @table-condensed-cell-padding; + } + } + } +} + + +// Bordered version +// +// Add borders all around the table and between all the columns. + +.table-bordered { + border: 1px solid @table-border-color; + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border: 1px solid @table-border-color; + } + } + } + > thead > tr { + > th, + > td { + border-bottom-width: 2px; + } + } +} + + +// Zebra-striping +// +// Default zebra-stripe styles (alternating gray and transparent backgrounds) + +.table-striped { + > tbody > tr:nth-of-type(odd) { + background-color: @table-bg-accent; + } +} + + +// Hover effect +// +// Placed here since it has to come after the potential zebra striping + +.table-hover { + > tbody > tr:hover { + background-color: @table-bg-hover; + } +} + + +// Table cell sizing +// +// Reset default table behavior + +table col[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-column; +} +table { + td, + th { + &[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-cell; + } + } +} + + +// Table backgrounds +// +// Exact selectors below required to override `.table-striped` and prevent +// inheritance to nested tables. + +// Generate the contextual variants +.table-row-variant(active; @table-bg-active); +.table-row-variant(success; @state-success-bg); +.table-row-variant(info; @state-info-bg); +.table-row-variant(warning; @state-warning-bg); +.table-row-variant(danger; @state-danger-bg); + + +// Responsive tables +// +// Wrap your tables in `.table-responsive` and we'll make them mobile friendly +// by enabling horizontal scrolling. Only applies <768px. Everything above that +// will display normally. + +.table-responsive { + overflow-x: auto; + min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) + + @media screen and (max-width: @screen-xs-max) { + width: 100%; + margin-bottom: (@line-height-computed * 0.75); + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid @table-border-color; + + // Tighten up spacing + > .table { + margin-bottom: 0; + + // Ensure the content doesn't wrap + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + white-space: nowrap; + } + } + } + } + + // Special overrides for the bordered tables + > .table-bordered { + border: 0; + + // Nuke the appropriate borders so that the parent can handle them + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + + // Only nuke the last row's bottom-border in `tbody` and `tfoot` since + // chances are there will be only one `tr` in a `thead` and that would + // remove the border altogether. + > tbody, + > tfoot { + > tr:last-child { + > th, + > td { + border-bottom: 0; + } + } + } + + } + } +} diff --git a/public/theme/bootstrap/less/theme.less b/public/theme/bootstrap/less/theme.less new file mode 100644 index 0000000..8f51d91 --- /dev/null +++ b/public/theme/bootstrap/less/theme.less @@ -0,0 +1,291 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// +// Load core variables and mixins +// -------------------------------------------------- + +@import "variables.less"; +@import "mixins.less"; + + +// +// Buttons +// -------------------------------------------------- + +// Common styles +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0,0,0,.2); + @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); + .box-shadow(@shadow); + + // Reset the shadow + &:active, + &.active { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + .box-shadow(none); + } + + .badge { + text-shadow: none; + } +} + +// Mixin for generating new styles +.btn-styles(@btn-color: #555) { + #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%)); + .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 + background-repeat: repeat-x; + border-color: darken(@btn-color, 14%); + + &:hover, + &:focus { + background-color: darken(@btn-color, 12%); + background-position: 0 -15px; + } + + &:active, + &.active { + background-color: darken(@btn-color, 12%); + border-color: darken(@btn-color, 14%); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: darken(@btn-color, 12%); + background-image: none; + } + } +} + +// Common styles +.btn { + // Remove the gradient for the pressed/active state + &:active, + &.active { + background-image: none; + } +} + +// Apply the mixin to the buttons +.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } +.btn-primary { .btn-styles(@btn-primary-bg); } +.btn-success { .btn-styles(@btn-success-bg); } +.btn-info { .btn-styles(@btn-info-bg); } +.btn-warning { .btn-styles(@btn-warning-bg); } +.btn-danger { .btn-styles(@btn-danger-bg); } + + +// +// Images +// -------------------------------------------------- + +.thumbnail, +.img-thumbnail { + .box-shadow(0 1px 2px rgba(0,0,0,.075)); +} + + +// +// Dropdowns +// -------------------------------------------------- + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); + background-color: darken(@dropdown-link-hover-bg, 5%); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); + background-color: darken(@dropdown-link-active-bg, 5%); +} + + +// +// Navbar +// -------------------------------------------------- + +// Default navbar +.navbar-default { + #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg); + .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered + border-radius: @navbar-border-radius; + @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); + .box-shadow(@shadow); + + .navbar-nav > .open > a, + .navbar-nav > .active > a { + #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%)); + .box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); + } +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255,255,255,.25); +} + +// Inverted navbar +.navbar-inverse { + #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); + .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 + border-radius: @navbar-border-radius; + .navbar-nav > .open > a, + .navbar-nav > .active > a { + #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); + .box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); + } + + .navbar-brand, + .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } +} + +// Undo rounded corners in static and fixed navbars +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +// Fix active state of dropdown items in collapsed mode +@media (max-width: @grid-float-breakpoint-max) { + .navbar .navbar-nav .open .dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: #fff; + #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); + } + } +} + + +// +// Alerts +// -------------------------------------------------- + +// Common styles +.alert { + text-shadow: 0 1px 0 rgba(255,255,255,.2); + @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); + .box-shadow(@shadow); +} + +// Mixin for generating new styles +.alert-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%)); + border-color: darken(@color, 15%); +} + +// Apply the mixin to the alerts +.alert-success { .alert-styles(@alert-success-bg); } +.alert-info { .alert-styles(@alert-info-bg); } +.alert-warning { .alert-styles(@alert-warning-bg); } +.alert-danger { .alert-styles(@alert-danger-bg); } + + +// +// Progress bars +// -------------------------------------------------- + +// Give the progress background some depth +.progress { + #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg) +} + +// Mixin for generating new styles +.progress-bar-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%)); +} + +// Apply the mixin to the progress bars +.progress-bar { .progress-bar-styles(@progress-bar-bg); } +.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); } +.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); } +.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); } +.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); } + +// Reset the striped class because our mixins don't do multiple gradients and +// the above custom styles override the new `.progress-bar-striped` in v3.2.0. +.progress-bar-striped { + #gradient > .striped(); +} + + +// +// List groups +// -------------------------------------------------- + +.list-group { + border-radius: @border-radius-base; + .box-shadow(0 1px 2px rgba(0,0,0,.075)); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%); + #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%)); + border-color: darken(@list-group-active-border, 7.5%); + + .badge { + text-shadow: none; + } +} + + +// +// Panels +// -------------------------------------------------- + +// Common styles +.panel { + .box-shadow(0 1px 2px rgba(0,0,0,.05)); +} + +// Mixin for generating new styles +.panel-heading-styles(@color) { + #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%)); +} + +// Apply the mixin to the panel headings only +.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); } +.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); } +.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); } +.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); } +.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); } +.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); } + + +// +// Wells +// -------------------------------------------------- + +.well { + #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg); + border-color: darken(@well-bg, 10%); + @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); + .box-shadow(@shadow); +} diff --git a/public/theme/bootstrap/less/thumbnails.less b/public/theme/bootstrap/less/thumbnails.less new file mode 100644 index 0000000..0713e67 --- /dev/null +++ b/public/theme/bootstrap/less/thumbnails.less @@ -0,0 +1,36 @@ +// +// Thumbnails +// -------------------------------------------------- + + +// Mixin and adjust the regular image class +.thumbnail { + display: block; + padding: @thumbnail-padding; + margin-bottom: @line-height-computed; + line-height: @line-height-base; + background-color: @thumbnail-bg; + border: 1px solid @thumbnail-border; + border-radius: @thumbnail-border-radius; + .transition(border .2s ease-in-out); + + > img, + a > img { + &:extend(.img-responsive); + margin-left: auto; + margin-right: auto; + } + + // Add a hover state for linked versions only + a&:hover, + a&:focus, + a&.active { + border-color: @link-color; + } + + // Image captions + .caption { + padding: @thumbnail-caption-padding; + color: @thumbnail-caption-color; + } +} diff --git a/public/theme/bootstrap/less/tooltip.less b/public/theme/bootstrap/less/tooltip.less new file mode 100644 index 0000000..b48d63e --- /dev/null +++ b/public/theme/bootstrap/less/tooltip.less @@ -0,0 +1,101 @@ +// +// Tooltips +// -------------------------------------------------- + + +// Base class +.tooltip { + position: absolute; + z-index: @zindex-tooltip; + display: block; + // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + .reset-text(); + font-size: @font-size-small; + + .opacity(0); + + &.in { .opacity(@tooltip-opacity); } + &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } + &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } + &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } + &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: @tooltip-max-width; + padding: 3px 8px; + color: @tooltip-color; + text-align: center; + background-color: @tooltip-bg; + border-radius: @border-radius-base; +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.top-left .tooltip-arrow { + bottom: 0; + right: @tooltip-arrow-width; + margin-bottom: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.top-right .tooltip-arrow { + bottom: 0; + left: @tooltip-arrow-width; + margin-bottom: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; + border-right-color: @tooltip-arrow-color; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; + border-left-color: @tooltip-arrow-color; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } + &.bottom-left .tooltip-arrow { + top: 0; + right: @tooltip-arrow-width; + margin-top: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } + &.bottom-right .tooltip-arrow { + top: 0; + left: @tooltip-arrow-width; + margin-top: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } +} diff --git a/public/theme/bootstrap/less/type.less b/public/theme/bootstrap/less/type.less new file mode 100644 index 0000000..0d4fee4 --- /dev/null +++ b/public/theme/bootstrap/less/type.less @@ -0,0 +1,302 @@ +// +// Typography +// -------------------------------------------------- + + +// Headings +// ------------------------- + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: @headings-font-family; + font-weight: @headings-font-weight; + line-height: @headings-line-height; + color: @headings-color; + + small, + .small { + font-weight: normal; + line-height: 1; + color: @headings-small-color; + } +} + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: @line-height-computed; + margin-bottom: (@line-height-computed / 2); + + small, + .small { + font-size: 65%; + } +} +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: (@line-height-computed / 2); + margin-bottom: (@line-height-computed / 2); + + small, + .small { + font-size: 75%; + } +} + +h1, .h1 { font-size: @font-size-h1; } +h2, .h2 { font-size: @font-size-h2; } +h3, .h3 { font-size: @font-size-h3; } +h4, .h4 { font-size: @font-size-h4; } +h5, .h5 { font-size: @font-size-h5; } +h6, .h6 { font-size: @font-size-h6; } + + +// Body text +// ------------------------- + +p { + margin: 0 0 (@line-height-computed / 2); +} + +.lead { + margin-bottom: @line-height-computed; + font-size: floor((@font-size-base * 1.15)); + font-weight: 300; + line-height: 1.4; + + @media (min-width: @screen-sm-min) { + font-size: (@font-size-base * 1.5); + } +} + + +// Emphasis & misc +// ------------------------- + +// Ex: (12px small font / 14px base font) * 100% = about 85% +small, +.small { + font-size: floor((100% * @font-size-small / @font-size-base)); +} + +mark, +.mark { + background-color: @state-warning-bg; + padding: .2em; +} + +// Alignment +.text-left { text-align: left; } +.text-right { text-align: right; } +.text-center { text-align: center; } +.text-justify { text-align: justify; } +.text-nowrap { white-space: nowrap; } + +// Transformation +.text-lowercase { text-transform: lowercase; } +.text-uppercase { text-transform: uppercase; } +.text-capitalize { text-transform: capitalize; } + +// Contextual colors +.text-muted { + color: @text-muted; +} +.text-primary { + .text-emphasis-variant(@brand-primary); +} +.text-success { + .text-emphasis-variant(@state-success-text); +} +.text-info { + .text-emphasis-variant(@state-info-text); +} +.text-warning { + .text-emphasis-variant(@state-warning-text); +} +.text-danger { + .text-emphasis-variant(@state-danger-text); +} + +// Contextual backgrounds +// For now we'll leave these alongside the text classes until v4 when we can +// safely shift things around (per SemVer rules). +.bg-primary { + // Given the contrast here, this is the only class to have its color inverted + // automatically. + color: #fff; + .bg-variant(@brand-primary); +} +.bg-success { + .bg-variant(@state-success-bg); +} +.bg-info { + .bg-variant(@state-info-bg); +} +.bg-warning { + .bg-variant(@state-warning-bg); +} +.bg-danger { + .bg-variant(@state-danger-bg); +} + + +// Page header +// ------------------------- + +.page-header { + padding-bottom: ((@line-height-computed / 2) - 1); + margin: (@line-height-computed * 2) 0 @line-height-computed; + border-bottom: 1px solid @page-header-border-color; +} + + +// Lists +// ------------------------- + +// Unordered and Ordered lists +ul, +ol { + margin-top: 0; + margin-bottom: (@line-height-computed / 2); + ul, + ol { + margin-bottom: 0; + } +} + +// List options + +// Unstyled keeps list items block level, just removes default browser padding and list-style +.list-unstyled { + padding-left: 0; + list-style: none; +} + +// Inline turns list items into inline-block +.list-inline { + .list-unstyled(); + margin-left: -5px; + + > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; + } +} + +// Description Lists +dl { + margin-top: 0; // Remove browser default + margin-bottom: @line-height-computed; +} +dt, +dd { + line-height: @line-height-base; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; // Undo browser default +} + +// Horizontal description lists +// +// Defaults to being stacked without any of the below styles applied, until the +// grid breakpoint is reached (default of ~768px). + +.dl-horizontal { + dd { + &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present + } + + @media (min-width: @dl-horizontal-breakpoint) { + dt { + float: left; + width: (@dl-horizontal-offset - 20); + clear: left; + text-align: right; + .text-overflow(); + } + dd { + margin-left: @dl-horizontal-offset; + } + } +} + + +// Misc +// ------------------------- + +// Abbreviations and acronyms +abbr[title], +// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted @abbr-border-color; +} +.initialism { + font-size: 90%; + .text-uppercase(); +} + +// Blockquotes +blockquote { + padding: (@line-height-computed / 2) @line-height-computed; + margin: 0 0 @line-height-computed; + font-size: @blockquote-font-size; + border-left: 5px solid @blockquote-border-color; + + p, + ul, + ol { + &:last-child { + margin-bottom: 0; + } + } + + // Note: Deprecated small and .small as of v3.1.0 + // Context: https://github.com/twbs/bootstrap/issues/11660 + footer, + small, + .small { + display: block; + font-size: 80%; // back to default font-size + line-height: @line-height-base; + color: @blockquote-small-color; + + &:before { + content: '\2014 \00A0'; // em dash, nbsp + } + } +} + +// Opposite alignment of blockquote +// +// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid @blockquote-border-color; + border-left: 0; + text-align: right; + + // Account for citation + footer, + small, + .small { + &:before { content: ''; } + &:after { + content: '\00A0 \2014'; // nbsp, em dash + } + } +} + +// Addresses +address { + margin-bottom: @line-height-computed; + font-style: normal; + line-height: @line-height-base; +} diff --git a/public/theme/bootstrap/less/utilities.less b/public/theme/bootstrap/less/utilities.less new file mode 100644 index 0000000..7a8ca27 --- /dev/null +++ b/public/theme/bootstrap/less/utilities.less @@ -0,0 +1,55 @@ +// +// Utility classes +// -------------------------------------------------- + + +// Floats +// ------------------------- + +.clearfix { + .clearfix(); +} +.center-block { + .center-block(); +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} + + +// Toggling content +// ------------------------- + +// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + .text-hide(); +} + + +// Hide from screenreaders and browsers +// +// Credit: HTML5 Boilerplate + +.hidden { + display: none !important; +} + + +// For Affix plugin +// ------------------------- + +.affix { + position: fixed; +} diff --git a/public/theme/bootstrap/less/variables.less b/public/theme/bootstrap/less/variables.less new file mode 100644 index 0000000..b057ef5 --- /dev/null +++ b/public/theme/bootstrap/less/variables.less @@ -0,0 +1,869 @@ +// +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +@gray-base: #000; +@gray-darker: lighten(@gray-base, 13.5%); // #222 +@gray-dark: lighten(@gray-base, 20%); // #333 +@gray: lighten(@gray-base, 33.5%); // #555 +@gray-light: lighten(@gray-base, 46.7%); // #777 +@gray-lighter: lighten(@gray-base, 93.5%); // #eee + +@brand-primary: darken(#428bca, 6.5%); // #337ab7 +@brand-success: #5cb85c; +@brand-info: #5bc0de; +@brand-warning: #f0ad4e; +@brand-danger: #d9534f; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +@body-bg: #fff; +//** Global text color on ``. +@text-color: @gray-dark; + +//** Global textual link color. +@link-color: @brand-primary; +//** Link hover color set via `darken()` function. +@link-hover-color: darken(@link-color, 15%); +//** Link hover decoration. +@link-hover-decoration: underline; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
          `.
          +@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
          +@font-family-base:        @font-family-sans-serif;
          +
          +@font-size-base:          14px;
          +@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
          +@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
          +
          +@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
          +@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
          +@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
          +@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
          +@font-size-h5:            @font-size-base;
          +@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
          +
          +//** Unit-less `line-height` for use in components like buttons.
          +@line-height-base:        1.428571429; // 20/14
          +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
          +@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
          +
          +//** By default, this inherits from the ``.
          +@headings-font-family:    inherit;
          +@headings-font-weight:    500;
          +@headings-line-height:    1.1;
          +@headings-color:          inherit;
          +
          +
          +//== Iconography
          +//
          +//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
          +
          +//** Load fonts from this directory.
          +@icon-font-path:          "../fonts/";
          +//** File name for all font files.
          +@icon-font-name:          "glyphicons-halflings-regular";
          +//** Element ID within SVG icon file.
          +@icon-font-svg-id:        "glyphicons_halflingsregular";
          +
          +
          +//== Components
          +//
          +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
          +
          +@padding-base-vertical:     6px;
          +@padding-base-horizontal:   12px;
          +
          +@padding-large-vertical:    10px;
          +@padding-large-horizontal:  16px;
          +
          +@padding-small-vertical:    5px;
          +@padding-small-horizontal:  10px;
          +
          +@padding-xs-vertical:       1px;
          +@padding-xs-horizontal:     5px;
          +
          +@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
          +@line-height-small:         1.5;
          +
          +@border-radius-base:        4px;
          +@border-radius-large:       6px;
          +@border-radius-small:       3px;
          +
          +//** Global color for active items (e.g., navs or dropdowns).
          +@component-active-color:    #fff;
          +//** Global background color for active items (e.g., navs or dropdowns).
          +@component-active-bg:       @brand-primary;
          +
          +//** Width of the `border` for generating carets that indicator dropdowns.
          +@caret-width-base:          4px;
          +//** Carets increase slightly in size for larger components.
          +@caret-width-large:         5px;
          +
          +
          +//== Tables
          +//
          +//## Customizes the `.table` component with basic values, each used across all table variations.
          +
          +//** Padding for ``s and ``s.
          +@table-cell-padding:            8px;
          +//** Padding for cells in `.table-condensed`.
          +@table-condensed-cell-padding:  5px;
          +
          +//** Default background color used for all tables.
          +@table-bg:                      transparent;
          +//** Background color used for `.table-striped`.
          +@table-bg-accent:               #f9f9f9;
          +//** Background color used for `.table-hover`.
          +@table-bg-hover:                #f5f5f5;
          +@table-bg-active:               @table-bg-hover;
          +
          +//** Border color for table and cell borders.
          +@table-border-color:            #ddd;
          +
          +
          +//== Buttons
          +//
          +//## For each of Bootstrap's buttons, define text, background and border color.
          +
          +@btn-font-weight:                normal;
          +
          +@btn-default-color:              #333;
          +@btn-default-bg:                 #fff;
          +@btn-default-border:             #ccc;
          +
          +@btn-primary-color:              #fff;
          +@btn-primary-bg:                 @brand-primary;
          +@btn-primary-border:             darken(@btn-primary-bg, 5%);
          +
          +@btn-success-color:              #fff;
          +@btn-success-bg:                 @brand-success;
          +@btn-success-border:             darken(@btn-success-bg, 5%);
          +
          +@btn-info-color:                 #fff;
          +@btn-info-bg:                    @brand-info;
          +@btn-info-border:                darken(@btn-info-bg, 5%);
          +
          +@btn-warning-color:              #fff;
          +@btn-warning-bg:                 @brand-warning;
          +@btn-warning-border:             darken(@btn-warning-bg, 5%);
          +
          +@btn-danger-color:               #fff;
          +@btn-danger-bg:                  @brand-danger;
          +@btn-danger-border:              darken(@btn-danger-bg, 5%);
          +
          +@btn-link-disabled-color:        @gray-light;
          +
          +// Allows for customizing button radius independently from global border radius
          +@btn-border-radius-base:         @border-radius-base;
          +@btn-border-radius-large:        @border-radius-large;
          +@btn-border-radius-small:        @border-radius-small;
          +
          +
          +//== Forms
          +//
          +//##
          +
          +//** `` background color
          +@input-bg:                       #fff;
          +//** `` background color
          +@input-bg-disabled:              @gray-lighter;
          +
          +//** Text color for ``s
          +@input-color:                    @gray;
          +//** `` border color
          +@input-border:                   #ccc;
          +
          +// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
          +//** Default `.form-control` border radius
          +// This has no effect on ``s in CSS.
          +@input-border-radius:            @border-radius-base;
          +//** Large `.form-control` border radius
          +@input-border-radius-large:      @border-radius-large;
          +//** Small `.form-control` border radius
          +@input-border-radius-small:      @border-radius-small;
          +
          +//** Border color for inputs on focus
          +@input-border-focus:             #66afe9;
          +
          +//** Placeholder text color
          +@input-color-placeholder:        #999;
          +
          +//** Default `.form-control` height
          +@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
          +//** Large `.form-control` height
          +@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
          +//** Small `.form-control` height
          +@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
          +
          +//** `.form-group` margin
          +@form-group-margin-bottom:       15px;
          +
          +@legend-color:                   @gray-dark;
          +@legend-border-color:            #e5e5e5;
          +
          +//** Background color for textual input addons
          +@input-group-addon-bg:           @gray-lighter;
          +//** Border color for textual input addons
          +@input-group-addon-border-color: @input-border;
          +
          +//** Disabled cursor for form controls and buttons.
          +@cursor-disabled:                not-allowed;
          +
          +
          +//== Dropdowns
          +//
          +//## Dropdown menu container and contents.
          +
          +//** Background for the dropdown menu.
          +@dropdown-bg:                    #fff;
          +//** Dropdown menu `border-color`.
          +@dropdown-border:                rgba(0,0,0,.15);
          +//** Dropdown menu `border-color` **for IE8**.
          +@dropdown-fallback-border:       #ccc;
          +//** Divider color for between dropdown items.
          +@dropdown-divider-bg:            #e5e5e5;
          +
          +//** Dropdown link text color.
          +@dropdown-link-color:            @gray-dark;
          +//** Hover color for dropdown links.
          +@dropdown-link-hover-color:      darken(@gray-dark, 5%);
          +//** Hover background for dropdown links.
          +@dropdown-link-hover-bg:         #f5f5f5;
          +
          +//** Active dropdown menu item text color.
          +@dropdown-link-active-color:     @component-active-color;
          +//** Active dropdown menu item background color.
          +@dropdown-link-active-bg:        @component-active-bg;
          +
          +//** Disabled dropdown menu item background color.
          +@dropdown-link-disabled-color:   @gray-light;
          +
          +//** Text color for headers within dropdown menus.
          +@dropdown-header-color:          @gray-light;
          +
          +//** Deprecated `@dropdown-caret-color` as of v3.1.0
          +@dropdown-caret-color:           #000;
          +
          +
          +//-- Z-index master list
          +//
          +// Warning: Avoid customizing these values. They're used for a bird's eye view
          +// of components dependent on the z-axis and are designed to all work together.
          +//
          +// Note: These variables are not generated into the Customizer.
          +
          +@zindex-navbar:            1000;
          +@zindex-dropdown:          1000;
          +@zindex-popover:           1060;
          +@zindex-tooltip:           1070;
          +@zindex-navbar-fixed:      1030;
          +@zindex-modal-background:  1040;
          +@zindex-modal:             1050;
          +
          +
          +//== Media queries breakpoints
          +//
          +//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
          +
          +// Extra small screen / phone
          +//** Deprecated `@screen-xs` as of v3.0.1
          +@screen-xs:                  480px;
          +//** Deprecated `@screen-xs-min` as of v3.2.0
          +@screen-xs-min:              @screen-xs;
          +//** Deprecated `@screen-phone` as of v3.0.1
          +@screen-phone:               @screen-xs-min;
          +
          +// Small screen / tablet
          +//** Deprecated `@screen-sm` as of v3.0.1
          +@screen-sm:                  768px;
          +@screen-sm-min:              @screen-sm;
          +//** Deprecated `@screen-tablet` as of v3.0.1
          +@screen-tablet:              @screen-sm-min;
          +
          +// Medium screen / desktop
          +//** Deprecated `@screen-md` as of v3.0.1
          +@screen-md:                  992px;
          +@screen-md-min:              @screen-md;
          +//** Deprecated `@screen-desktop` as of v3.0.1
          +@screen-desktop:             @screen-md-min;
          +
          +// Large screen / wide desktop
          +//** Deprecated `@screen-lg` as of v3.0.1
          +@screen-lg:                  1200px;
          +@screen-lg-min:              @screen-lg;
          +//** Deprecated `@screen-lg-desktop` as of v3.0.1
          +@screen-lg-desktop:          @screen-lg-min;
          +
          +// So media queries don't overlap when required, provide a maximum
          +@screen-xs-max:              (@screen-sm-min - 1);
          +@screen-sm-max:              (@screen-md-min - 1);
          +@screen-md-max:              (@screen-lg-min - 1);
          +
          +
          +//== Grid system
          +//
          +//## Define your custom responsive grid.
          +
          +//** Number of columns in the grid.
          +@grid-columns:              12;
          +//** Padding between columns. Gets divided in half for the left and right.
          +@grid-gutter-width:         30px;
          +// Navbar collapse
          +//** Point at which the navbar becomes uncollapsed.
          +@grid-float-breakpoint:     @screen-sm-min;
          +//** Point at which the navbar begins collapsing.
          +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
          +
          +
          +//== Container sizes
          +//
          +//## Define the maximum width of `.container` for different screen sizes.
          +
          +// Small screen / tablet
          +@container-tablet:             (720px + @grid-gutter-width);
          +//** For `@screen-sm-min` and up.
          +@container-sm:                 @container-tablet;
          +
          +// Medium screen / desktop
          +@container-desktop:            (940px + @grid-gutter-width);
          +//** For `@screen-md-min` and up.
          +@container-md:                 @container-desktop;
          +
          +// Large screen / wide desktop
          +@container-large-desktop:      (1140px + @grid-gutter-width);
          +//** For `@screen-lg-min` and up.
          +@container-lg:                 @container-large-desktop;
          +
          +
          +//== Navbar
          +//
          +//##
          +
          +// Basics of a navbar
          +@navbar-height:                    50px;
          +@navbar-margin-bottom:             @line-height-computed;
          +@navbar-border-radius:             @border-radius-base;
          +@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
          +@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
          +@navbar-collapse-max-height:       340px;
          +
          +@navbar-default-color:             #777;
          +@navbar-default-bg:                #f8f8f8;
          +@navbar-default-border:            darken(@navbar-default-bg, 6.5%);
          +
          +// Navbar links
          +@navbar-default-link-color:                #777;
          +@navbar-default-link-hover-color:          #333;
          +@navbar-default-link-hover-bg:             transparent;
          +@navbar-default-link-active-color:         #555;
          +@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);
          +@navbar-default-link-disabled-color:       #ccc;
          +@navbar-default-link-disabled-bg:          transparent;
          +
          +// Navbar brand label
          +@navbar-default-brand-color:               @navbar-default-link-color;
          +@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
          +@navbar-default-brand-hover-bg:            transparent;
          +
          +// Navbar toggle
          +@navbar-default-toggle-hover-bg:           #ddd;
          +@navbar-default-toggle-icon-bar-bg:        #888;
          +@navbar-default-toggle-border-color:       #ddd;
          +
          +
          +//=== Inverted navbar
          +// Reset inverted navbar basics
          +@navbar-inverse-color:                      lighten(@gray-light, 15%);
          +@navbar-inverse-bg:                         #222;
          +@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
          +
          +// Inverted navbar links
          +@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
          +@navbar-inverse-link-hover-color:           #fff;
          +@navbar-inverse-link-hover-bg:              transparent;
          +@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
          +@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
          +@navbar-inverse-link-disabled-color:        #444;
          +@navbar-inverse-link-disabled-bg:           transparent;
          +
          +// Inverted navbar brand label
          +@navbar-inverse-brand-color:                @navbar-inverse-link-color;
          +@navbar-inverse-brand-hover-color:          #fff;
          +@navbar-inverse-brand-hover-bg:             transparent;
          +
          +// Inverted navbar toggle
          +@navbar-inverse-toggle-hover-bg:            #333;
          +@navbar-inverse-toggle-icon-bar-bg:         #fff;
          +@navbar-inverse-toggle-border-color:        #333;
          +
          +
          +//== Navs
          +//
          +//##
          +
          +//=== Shared nav styles
          +@nav-link-padding:                          10px 15px;
          +@nav-link-hover-bg:                         @gray-lighter;
          +
          +@nav-disabled-link-color:                   @gray-light;
          +@nav-disabled-link-hover-color:             @gray-light;
          +
          +//== Tabs
          +@nav-tabs-border-color:                     #ddd;
          +
          +@nav-tabs-link-hover-border-color:          @gray-lighter;
          +
          +@nav-tabs-active-link-hover-bg:             @body-bg;
          +@nav-tabs-active-link-hover-color:          @gray;
          +@nav-tabs-active-link-hover-border-color:   #ddd;
          +
          +@nav-tabs-justified-link-border-color:            #ddd;
          +@nav-tabs-justified-active-link-border-color:     @body-bg;
          +
          +//== Pills
          +@nav-pills-border-radius:                   @border-radius-base;
          +@nav-pills-active-link-hover-bg:            @component-active-bg;
          +@nav-pills-active-link-hover-color:         @component-active-color;
          +
          +
          +//== Pagination
          +//
          +//##
          +
          +@pagination-color:                     @link-color;
          +@pagination-bg:                        #fff;
          +@pagination-border:                    #ddd;
          +
          +@pagination-hover-color:               @link-hover-color;
          +@pagination-hover-bg:                  @gray-lighter;
          +@pagination-hover-border:              #ddd;
          +
          +@pagination-active-color:              #fff;
          +@pagination-active-bg:                 @brand-primary;
          +@pagination-active-border:             @brand-primary;
          +
          +@pagination-disabled-color:            @gray-light;
          +@pagination-disabled-bg:               #fff;
          +@pagination-disabled-border:           #ddd;
          +
          +
          +//== Pager
          +//
          +//##
          +
          +@pager-bg:                             @pagination-bg;
          +@pager-border:                         @pagination-border;
          +@pager-border-radius:                  15px;
          +
          +@pager-hover-bg:                       @pagination-hover-bg;
          +
          +@pager-active-bg:                      @pagination-active-bg;
          +@pager-active-color:                   @pagination-active-color;
          +
          +@pager-disabled-color:                 @pagination-disabled-color;
          +
          +
          +//== Jumbotron
          +//
          +//##
          +
          +@jumbotron-padding:              30px;
          +@jumbotron-color:                inherit;
          +@jumbotron-bg:                   @gray-lighter;
          +@jumbotron-heading-color:        inherit;
          +@jumbotron-font-size:            ceil((@font-size-base * 1.5));
          +@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));
          +
          +
          +//== Form states and alerts
          +//
          +//## Define colors for form feedback states and, by default, alerts.
          +
          +@state-success-text:             #3c763d;
          +@state-success-bg:               #dff0d8;
          +@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
          +
          +@state-info-text:                #31708f;
          +@state-info-bg:                  #d9edf7;
          +@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
          +
          +@state-warning-text:             #8a6d3b;
          +@state-warning-bg:               #fcf8e3;
          +@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
          +
          +@state-danger-text:              #a94442;
          +@state-danger-bg:                #f2dede;
          +@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
          +
          +
          +//== Tooltips
          +//
          +//##
          +
          +//** Tooltip max width
          +@tooltip-max-width:           200px;
          +//** Tooltip text color
          +@tooltip-color:               #fff;
          +//** Tooltip background color
          +@tooltip-bg:                  #000;
          +@tooltip-opacity:             .9;
          +
          +//** Tooltip arrow width
          +@tooltip-arrow-width:         5px;
          +//** Tooltip arrow color
          +@tooltip-arrow-color:         @tooltip-bg;
          +
          +
          +//== Popovers
          +//
          +//##
          +
          +//** Popover body background color
          +@popover-bg:                          #fff;
          +//** Popover maximum width
          +@popover-max-width:                   276px;
          +//** Popover border color
          +@popover-border-color:                rgba(0,0,0,.2);
          +//** Popover fallback border color
          +@popover-fallback-border-color:       #ccc;
          +
          +//** Popover title background color
          +@popover-title-bg:                    darken(@popover-bg, 3%);
          +
          +//** Popover arrow width
          +@popover-arrow-width:                 10px;
          +//** Popover arrow color
          +@popover-arrow-color:                 @popover-bg;
          +
          +//** Popover outer arrow width
          +@popover-arrow-outer-width:           (@popover-arrow-width + 1);
          +//** Popover outer arrow color
          +@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
          +//** Popover outer arrow fallback color
          +@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
          +
          +
          +//== Labels
          +//
          +//##
          +
          +//** Default label background color
          +@label-default-bg:            @gray-light;
          +//** Primary label background color
          +@label-primary-bg:            @brand-primary;
          +//** Success label background color
          +@label-success-bg:            @brand-success;
          +//** Info label background color
          +@label-info-bg:               @brand-info;
          +//** Warning label background color
          +@label-warning-bg:            @brand-warning;
          +//** Danger label background color
          +@label-danger-bg:             @brand-danger;
          +
          +//** Default label text color
          +@label-color:                 #fff;
          +//** Default text color of a linked label
          +@label-link-hover-color:      #fff;
          +
          +
          +//== Modals
          +//
          +//##
          +
          +//** Padding applied to the modal body
          +@modal-inner-padding:         15px;
          +
          +//** Padding applied to the modal title
          +@modal-title-padding:         15px;
          +//** Modal title line-height
          +@modal-title-line-height:     @line-height-base;
          +
          +//** Background color of modal content area
          +@modal-content-bg:                             #fff;
          +//** Modal content border color
          +@modal-content-border-color:                   rgba(0,0,0,.2);
          +//** Modal content border color **for IE8**
          +@modal-content-fallback-border-color:          #999;
          +
          +//** Modal backdrop background color
          +@modal-backdrop-bg:           #000;
          +//** Modal backdrop opacity
          +@modal-backdrop-opacity:      .5;
          +//** Modal header border color
          +@modal-header-border-color:   #e5e5e5;
          +//** Modal footer border color
          +@modal-footer-border-color:   @modal-header-border-color;
          +
          +@modal-lg:                    900px;
          +@modal-md:                    600px;
          +@modal-sm:                    300px;
          +
          +
          +//== Alerts
          +//
          +//## Define alert colors, border radius, and padding.
          +
          +@alert-padding:               15px;
          +@alert-border-radius:         @border-radius-base;
          +@alert-link-font-weight:      bold;
          +
          +@alert-success-bg:            @state-success-bg;
          +@alert-success-text:          @state-success-text;
          +@alert-success-border:        @state-success-border;
          +
          +@alert-info-bg:               @state-info-bg;
          +@alert-info-text:             @state-info-text;
          +@alert-info-border:           @state-info-border;
          +
          +@alert-warning-bg:            @state-warning-bg;
          +@alert-warning-text:          @state-warning-text;
          +@alert-warning-border:        @state-warning-border;
          +
          +@alert-danger-bg:             @state-danger-bg;
          +@alert-danger-text:           @state-danger-text;
          +@alert-danger-border:         @state-danger-border;
          +
          +
          +//== Progress bars
          +//
          +//##
          +
          +//** Background color of the whole progress component
          +@progress-bg:                 #f5f5f5;
          +//** Progress bar text color
          +@progress-bar-color:          #fff;
          +//** Variable for setting rounded corners on progress bar.
          +@progress-border-radius:      @border-radius-base;
          +
          +//** Default progress bar color
          +@progress-bar-bg:             @brand-primary;
          +//** Success progress bar color
          +@progress-bar-success-bg:     @brand-success;
          +//** Warning progress bar color
          +@progress-bar-warning-bg:     @brand-warning;
          +//** Danger progress bar color
          +@progress-bar-danger-bg:      @brand-danger;
          +//** Info progress bar color
          +@progress-bar-info-bg:        @brand-info;
          +
          +
          +//== List group
          +//
          +//##
          +
          +//** Background color on `.list-group-item`
          +@list-group-bg:                 #fff;
          +//** `.list-group-item` border color
          +@list-group-border:             #ddd;
          +//** List group border radius
          +@list-group-border-radius:      @border-radius-base;
          +
          +//** Background color of single list items on hover
          +@list-group-hover-bg:           #f5f5f5;
          +//** Text color of active list items
          +@list-group-active-color:       @component-active-color;
          +//** Background color of active list items
          +@list-group-active-bg:          @component-active-bg;
          +//** Border color of active list elements
          +@list-group-active-border:      @list-group-active-bg;
          +//** Text color for content within active list items
          +@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
          +
          +//** Text color of disabled list items
          +@list-group-disabled-color:      @gray-light;
          +//** Background color of disabled list items
          +@list-group-disabled-bg:         @gray-lighter;
          +//** Text color for content within disabled list items
          +@list-group-disabled-text-color: @list-group-disabled-color;
          +
          +@list-group-link-color:         #555;
          +@list-group-link-hover-color:   @list-group-link-color;
          +@list-group-link-heading-color: #333;
          +
          +
          +//== Panels
          +//
          +//##
          +
          +@panel-bg:                    #fff;
          +@panel-body-padding:          15px;
          +@panel-heading-padding:       10px 15px;
          +@panel-footer-padding:        @panel-heading-padding;
          +@panel-border-radius:         @border-radius-base;
          +
          +//** Border color for elements within panels
          +@panel-inner-border:          #ddd;
          +@panel-footer-bg:             #f5f5f5;
          +
          +@panel-default-text:          @gray-dark;
          +@panel-default-border:        #ddd;
          +@panel-default-heading-bg:    #f5f5f5;
          +
          +@panel-primary-text:          #fff;
          +@panel-primary-border:        @brand-primary;
          +@panel-primary-heading-bg:    @brand-primary;
          +
          +@panel-success-text:          @state-success-text;
          +@panel-success-border:        @state-success-border;
          +@panel-success-heading-bg:    @state-success-bg;
          +
          +@panel-info-text:             @state-info-text;
          +@panel-info-border:           @state-info-border;
          +@panel-info-heading-bg:       @state-info-bg;
          +
          +@panel-warning-text:          @state-warning-text;
          +@panel-warning-border:        @state-warning-border;
          +@panel-warning-heading-bg:    @state-warning-bg;
          +
          +@panel-danger-text:           @state-danger-text;
          +@panel-danger-border:         @state-danger-border;
          +@panel-danger-heading-bg:     @state-danger-bg;
          +
          +
          +//== Thumbnails
          +//
          +//##
          +
          +//** Padding around the thumbnail image
          +@thumbnail-padding:           4px;
          +//** Thumbnail background color
          +@thumbnail-bg:                @body-bg;
          +//** Thumbnail border color
          +@thumbnail-border:            #ddd;
          +//** Thumbnail border radius
          +@thumbnail-border-radius:     @border-radius-base;
          +
          +//** Custom text color for thumbnail captions
          +@thumbnail-caption-color:     @text-color;
          +//** Padding around the thumbnail caption
          +@thumbnail-caption-padding:   9px;
          +
          +
          +//== Wells
          +//
          +//##
          +
          +@well-bg:                     #f5f5f5;
          +@well-border:                 darken(@well-bg, 7%);
          +
          +
          +//== Badges
          +//
          +//##
          +
          +@badge-color:                 #fff;
          +//** Linked badge text color on hover
          +@badge-link-hover-color:      #fff;
          +@badge-bg:                    @gray-light;
          +
          +//** Badge text color in active nav link
          +@badge-active-color:          @link-color;
          +//** Badge background color in active nav link
          +@badge-active-bg:             #fff;
          +
          +@badge-font-weight:           bold;
          +@badge-line-height:           1;
          +@badge-border-radius:         10px;
          +
          +
          +//== Breadcrumbs
          +//
          +//##
          +
          +@breadcrumb-padding-vertical:   8px;
          +@breadcrumb-padding-horizontal: 15px;
          +//** Breadcrumb background color
          +@breadcrumb-bg:                 #f5f5f5;
          +//** Breadcrumb text color
          +@breadcrumb-color:              #ccc;
          +//** Text color of current page in the breadcrumb
          +@breadcrumb-active-color:       @gray-light;
          +//** Textual separator for between breadcrumb elements
          +@breadcrumb-separator:          "/";
          +
          +
          +//== Carousel
          +//
          +//##
          +
          +@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
          +
          +@carousel-control-color:                      #fff;
          +@carousel-control-width:                      15%;
          +@carousel-control-opacity:                    .5;
          +@carousel-control-font-size:                  20px;
          +
          +@carousel-indicator-active-bg:                #fff;
          +@carousel-indicator-border-color:             #fff;
          +
          +@carousel-caption-color:                      #fff;
          +
          +
          +//== Close
          +//
          +//##
          +
          +@close-font-weight:           bold;
          +@close-color:                 #000;
          +@close-text-shadow:           0 1px 0 #fff;
          +
          +
          +//== Code
          +//
          +//##
          +
          +@code-color:                  #c7254e;
          +@code-bg:                     #f9f2f4;
          +
          +@kbd-color:                   #fff;
          +@kbd-bg:                      #333;
          +
          +@pre-bg:                      #f5f5f5;
          +@pre-color:                   @gray-dark;
          +@pre-border-color:            #ccc;
          +@pre-scrollable-max-height:   340px;
          +
          +
          +//== Type
          +//
          +//##
          +
          +//** Horizontal offset for forms and lists.
          +@component-offset-horizontal: 180px;
          +//** Text muted color
          +@text-muted:                  @gray-light;
          +//** Abbreviations and acronyms border color
          +@abbr-border-color:           @gray-light;
          +//** Headings small color
          +@headings-small-color:        @gray-light;
          +//** Blockquote small color
          +@blockquote-small-color:      @gray-light;
          +//** Blockquote font size
          +@blockquote-font-size:        (@font-size-base * 1.25);
          +//** Blockquote border color
          +@blockquote-border-color:     @gray-lighter;
          +//** Page header border color
          +@page-header-border-color:    @gray-lighter;
          +//** Width of horizontal description list titles
          +@dl-horizontal-offset:        @component-offset-horizontal;
          +//** Point at which .dl-horizontal becomes horizontal
          +@dl-horizontal-breakpoint:    @grid-float-breakpoint;
          +//** Horizontal line color.
          +@hr-border:                   @gray-lighter;
          diff --git a/public/theme/bootstrap/less/wells.less b/public/theme/bootstrap/less/wells.less
          new file mode 100644
          index 0000000..15d072b
          --- /dev/null
          +++ b/public/theme/bootstrap/less/wells.less
          @@ -0,0 +1,29 @@
          +//
          +// Wells
          +// --------------------------------------------------
          +
          +
          +// Base class
          +.well {
          +  min-height: 20px;
          +  padding: 19px;
          +  margin-bottom: 20px;
          +  background-color: @well-bg;
          +  border: 1px solid @well-border;
          +  border-radius: @border-radius-base;
          +  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
          +  blockquote {
          +    border-color: #ddd;
          +    border-color: rgba(0,0,0,.15);
          +  }
          +}
          +
          +// Sizes
          +.well-lg {
          +  padding: 24px;
          +  border-radius: @border-radius-large;
          +}
          +.well-sm {
          +  padding: 9px;
          +  border-radius: @border-radius-small;
          +}
          diff --git a/public/theme/bootstrap/nuget/MyGet.ps1 b/public/theme/bootstrap/nuget/MyGet.ps1
          new file mode 100644
          index 0000000..ad17dea
          --- /dev/null
          +++ b/public/theme/bootstrap/nuget/MyGet.ps1
          @@ -0,0 +1,8 @@
          +$nuget = $env:NuGet
          +
          +#parse the version number out of package.json
          +$bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version
          +
          +#create packages
          +& $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
          +& $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
          \ No newline at end of file
          diff --git a/public/theme/bootstrap/nuget/bootstrap.less.nuspec b/public/theme/bootstrap/nuget/bootstrap.less.nuspec
          new file mode 100644
          index 0000000..ec302c0
          --- /dev/null
          +++ b/public/theme/bootstrap/nuget/bootstrap.less.nuspec
          @@ -0,0 +1,28 @@
          +
          +
          +  
          +    bootstrap.less
          +    3.3
          +    Bootstrap Less
          +    Twitter, Inc.
          +    bootstrap
          +	The most popular front-end framework for developing responsive, mobile first projects on the web.
          +    http://blog.getbootstrap.com
          +	Bootstrap framework in Less. Includes fonts and JavaScript
          +	en-us
          +	http://getbootstrap.com
          +    http://getbootstrap.com/apple-touch-icon.png
          +	https://github.com/twbs/bootstrap/blob/master/LICENSE
          +    Copyright 2015
          +    false
          +    
          +      
          +    
          +	css js less mobile-first responsive front-end framework web
          +  
          +  
          +    
          +    
          +    
          +  
          +
          \ No newline at end of file
          diff --git a/public/theme/bootstrap/nuget/bootstrap.nuspec b/public/theme/bootstrap/nuget/bootstrap.nuspec
          new file mode 100644
          index 0000000..50557cc
          --- /dev/null
          +++ b/public/theme/bootstrap/nuget/bootstrap.nuspec
          @@ -0,0 +1,28 @@
          +
          +
          +  
          +    bootstrap
          +    3.3
          +    Bootstrap CSS
          +    Twitter, Inc.
          +    bootstrap
          +	The most popular front-end framework for developing responsive, mobile first projects on the web.
          +	http://blog.getbootstrap.com
          +	Bootstrap framework in CSS. Includes fonts and JavaScript
          +	en-us
          +	http://getbootstrap.com
          +    http://getbootstrap.com/apple-touch-icon.png
          +	https://github.com/twbs/bootstrap/blob/master/LICENSE
          +    Copyright 2015
          +    false
          +    
          +      
          +    
          +	css js less mobile-first responsive front-end framework web
          +  
          +  
          +    
          +    
          +    
          +  
          +
          \ No newline at end of file
          diff --git a/public/theme/bootstrap/package.js b/public/theme/bootstrap/package.js
          new file mode 100644
          index 0000000..0d8990b
          --- /dev/null
          +++ b/public/theme/bootstrap/package.js
          @@ -0,0 +1,32 @@
          +// package metadata file for Meteor.js
          +
          +/* jshint strict:false */
          +/* global Package:true */
          +
          +Package.describe({
          +  name: 'twbs:bootstrap',  // http://atmospherejs.com/twbs/bootstrap
          +  summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
          +  version: '3.3.6',
          +  git: 'https://github.com/twbs/bootstrap.git'
          +});
          +
          +Package.onUse(function (api) {
          +  api.versionsFrom('METEOR@1.0');
          +  api.use('jquery', 'client');
          +  var assets = [
          +    'dist/fonts/glyphicons-halflings-regular.eot',
          +    'dist/fonts/glyphicons-halflings-regular.svg',
          +    'dist/fonts/glyphicons-halflings-regular.ttf',
          +    'dist/fonts/glyphicons-halflings-regular.woff',
          +    'dist/fonts/glyphicons-halflings-regular.woff2'
          +  ];
          +  if (api.addAssets) {
          +    api.addAssets(assets, 'client');
          +  } else {
          +    api.addFiles(assets, 'client', { isAsset: true });
          +  }
          +  api.addFiles([
          +    'dist/css/bootstrap.css',
          +    'dist/js/bootstrap.js'
          +  ], 'client');
          +});
          diff --git a/public/theme/bootstrap/package.json b/public/theme/bootstrap/package.json
          new file mode 100644
          index 0000000..998088b
          --- /dev/null
          +++ b/public/theme/bootstrap/package.json
          @@ -0,0 +1,87 @@
          +{
          +  "name": "bootstrap",
          +  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
          +  "version": "3.3.6",
          +  "keywords": [
          +    "css",
          +    "less",
          +    "mobile-first",
          +    "responsive",
          +    "front-end",
          +    "framework",
          +    "web"
          +  ],
          +  "homepage": "http://getbootstrap.com",
          +  "author": "Twitter, Inc.",
          +  "scripts": {
          +    "test": "grunt test"
          +  },
          +  "style": "dist/css/bootstrap.css",
          +  "less": "less/bootstrap.less",
          +  "main": "./dist/js/npm",
          +  "repository": {
          +    "type": "git",
          +    "url": "https://github.com/twbs/bootstrap.git"
          +  },
          +  "bugs": {
          +    "url": "https://github.com/twbs/bootstrap/issues"
          +  },
          +  "license": "MIT",
          +  "devDependencies": {
          +    "btoa": "~1.1.2",
          +    "glob": "~6.0.1",
          +    "grunt": "~0.4.5",
          +    "grunt-autoprefixer": "~3.0.3",
          +    "grunt-contrib-clean": "~0.6.0",
          +    "grunt-contrib-compress": "~0.14.0",
          +    "grunt-contrib-concat": "~0.5.1",
          +    "grunt-contrib-connect": "~0.11.2",
          +    "grunt-contrib-copy": "~0.8.0",
          +    "grunt-contrib-csslint": "~0.5.0",
          +    "grunt-contrib-cssmin": "~0.14.0",
          +    "grunt-contrib-htmlmin": "~0.6.0",
          +    "grunt-contrib-jade": "~0.15.0",
          +    "grunt-contrib-jshint": "~0.11.2",
          +    "grunt-contrib-less": "~1.1.0",
          +    "grunt-contrib-qunit": "~0.7.0",
          +    "grunt-contrib-uglify": "~0.9.2",
          +    "grunt-contrib-watch": "~0.6.1",
          +    "grunt-csscomb": "~3.1.0",
          +    "grunt-exec": "~0.4.6",
          +    "grunt-html": "~5.0.1",
          +    "grunt-jekyll": "~0.4.2",
          +    "grunt-jscs": "~2.3.0",
          +    "grunt-saucelabs": "~8.6.1",
          +    "grunt-sed": "twbs/grunt-sed#v0.2.0",
          +    "load-grunt-tasks": "~3.3.0",
          +    "markdown-it": "^5.0.0",
          +    "npm-shrinkwrap": "^200.4.0",
          +    "time-grunt": "^1.2.1"
          +  },
          +  "engines": {
          +    "node": ">=0.10.1"
          +  },
          +  "files": [
          +    "dist",
          +    "fonts",
          +    "grunt",
          +    "js/*.js",
          +    "less/**/*.less",
          +    "Gruntfile.js",
          +    "LICENSE"
          +  ],
          +  "jspm": {
          +    "main": "js/bootstrap",
          +    "shim": {
          +      "js/bootstrap": {
          +        "deps": "jquery",
          +        "exports": "$"
          +      }
          +    },
          +    "files": [
          +      "css",
          +      "fonts",
          +      "js"
          +    ]
          +  }
          +}
          diff --git a/public/theme/build/css/custom.css b/public/theme/build/css/custom.css
          new file mode 100644
          index 0000000..6d6f7e3
          --- /dev/null
          +++ b/public/theme/build/css/custom.css
          @@ -0,0 +1,4241 @@
          +
          +html , body{
          +	
          + height:100%;
          + 
          +}
          + 
          +.full-width {
          +	
          + width:100%;
          + 
          + }
          + 
          +.full-height{
          + height:100%;
          + }
          +
          +.daterangepicker .ranges li {
          +    color: #73879C
          +}
          +.daterangepicker .ranges li.active,
          +.daterangepicker .ranges li:hover {
          +    background: #536A7F;
          +    border: 1px solid #536A7F;
          +    color: #fff
          +}
          +.daterangepicker .input-mini {
          +    background-color: #eee;
          +    border: 1px solid #ccc;
          +    box-shadow: none !important
          +}
          +.daterangepicker .input-mini.active {
          +    border: 1px solid #ccc
          +}
          +.daterangepicker select.monthselect,
          +.daterangepicker select.yearselect,
          +.daterangepicker select.hourselect,
          +.daterangepicker select.minuteselect,
          +.daterangepicker select.secondselect,
          +.daterangepicker select.ampmselect {
          +    font-size: 12px;
          +    padding: 1px;
          +    height: auto;
          +    margin: 0;
          +    cursor: default;
          +    height: 30px;
          +    border: 1px solid #ADB2B5;
          +    line-height: 30px;
          +    border-radius: 0px !important
          +}
          +.daterangepicker select.monthselect {
          +    margin-right: 2%
          +}
          +.daterangepicker td.in-range {
          +    background: #E4E7EA;
          +    color: #73879C
          +}
          +.daterangepicker td.active,
          +.daterangepicker td.active:hover {
          +    background-color: #536A7F;
          +    color: #fff
          +}
          +.daterangepicker th.available:hover {
          +    background: #eee;
          +    color: #34495E
          +}
          +.daterangepicker:before,
          +.daterangepicker:after {
          +    content: none
          +}
          +.daterangepicker .calendar.single {
          +    margin: 0 0 4px 0
          +}
          +.daterangepicker .calendar.single .calendar-table {
          +    width: 224px;
          +    padding: 0 0 4px 0 !important
          +}
          +.daterangepicker .calendar.single .calendar-table thead tr:first-child th {
          +    padding: 8px 5px
          +}
          +.daterangepicker .calendar.single .calendar-table thead th {
          +    border-radius: 0
          +}
          +.daterangepicker.picker_1 {
          +    color: #fff;
          +    background: #34495E
          +}
          +.daterangepicker.picker_1 .calendar-table {
          +    background: #34495E
          +}
          +.daterangepicker.picker_1 .calendar-table thead tr {
          +    background: #213345
          +}
          +.daterangepicker.picker_1 .calendar-table thead tr:first-child {
          +    background: #1ABB9C
          +}
          +.daterangepicker.picker_1 .calendar-table td.off {
          +    background: #34495E;
          +    color: #999
          +}
          +.daterangepicker.picker_1 .calendar-table td.available:hover {
          +    color: #34495E
          +}
          +.daterangepicker.picker_2 .calendar-table thead tr {
          +    color: #1ABB9C
          +}
          +.daterangepicker.picker_2 .calendar-table thead tr:first-child {
          +    color: #73879C
          +}
          +.daterangepicker.picker_3 .calendar-table thead tr:first-child {
          +    color: #fff;
          +    background: #1ABB9C
          +}
          +.daterangepicker.picker_4 .calendar-table thead tr:first-child {
          +    color: #fff;
          +    background: #34495E
          +}
          +.daterangepicker.picker_4 .calendar-table td,
          +.daterangepicker.picker_4 .calendar-table td.off {
          +    background: #ECF0F1;
          +    border: 1px solid #fff;
          +    border-radius: 0
          +}
          +.daterangepicker.picker_4 .calendar-table td.active {
          +    background: #34495E
          +}
          +.calendar-exibit .show-calendar {
          +    float: none;
          +    display: block;
          +    position: relative;
          +    background-color: #fff;
          +    border: 1px solid #ccc;
          +    margin-bottom: 20px;
          +    border: 1px solid rgba(0, 0, 0, 0.15);
          +    overflow: hidden
          +}
          +.calendar-exibit .show-calendar .calendar {
          +    margin: 0 0 4px 0
          +}
          +.calendar-exibit .show-calendar.picker_1 {
          +    background: #34495E
          +}
          +.calendar-exibit .calendar-table {
          +    padding: 0 0 4px 0
          +}
          +.left_col {
          +    background: #2A3F54
          +}
          +.nav-sm .container.body .col-md-3.left_col {
          +    min-height: 100%;
          +    width: 70px;
          +    padding: 0;
          +    z-index: 9999;
          +    position: absolute
          +}
          +.nav-sm .container.body .col-md-3.left_col.menu_fixed {
          +    position: fixed;
          +    height: 100%
          +}
          +.nav-sm .container.body .col-md-3.left_col .mCSB_container,
          +.nav-sm .container.body .col-md-3.left_col .mCustomScrollBox {
          +    overflow: visible
          +}
          +.nav-sm .hidden-small {
          +    visibility: hidden
          +}
          +.nav-sm .container.body .right_col {
          +    padding: 10px 20px;
          +    margin-left: 70px;
          +    z-index: 2
          +}
          +.nav-sm .navbar.nav_title {
          +    width: 70px
          +}
          +.nav-sm .navbar.nav_title a span {
          +    display: none
          +}
          +.nav-sm .navbar.nav_title a i {
          +    font-size: 27px;
          +    margin: 13px 0 0 3px
          +}
          +.site_title i {
          +    border: 1px solid #EAEAEA;
          +    padding: 5px 6px;
          +    border-radius: 50%
          +}
          +.nav-sm .main_container .top_nav {
          +    display: block;
          +    margin-left: 70px;
          +    z-index: 2
          +}
          +.nav-sm .nav.side-menu li a {
          +    text-align: center !important;
          +    font-weight: 400;
          +    font-size: 10px;
          +    padding: 10px 5px
          +}
          +.nav-sm .nav.child_menu li.active,
          +.nav-sm .nav.side-menu li.active-sm {
          +    border-right: 5px solid #1ABB9C
          +}
          +.nav-sm ul.nav.child_menu ul,
          +.nav-sm .nav.side-menu li.active-sm ul ul {
          +    position: static;
          +    width: 200px;
          +    background: none
          +}
          +.nav-sm>.nav.side-menu>li.active-sm>a {
          +    color: #1ABB9C !important
          +}
          +.nav-sm .nav.side-menu li a i.toggle-up {
          +    display: none !important
          +}
          +.nav-sm .nav.side-menu li a i {
          +    font-size: 25px !important;
          +    text-align: center;
          +    width: 100% !important;
          +    margin-bottom: 5px
          +}
          +.nav-sm ul.nav.child_menu {
          +    left: 100%;
          +    position: absolute;
          +    top: 0;
          +    width: 210px;
          +    z-index: 4000;
          +    background: #3E5367;
          +    display: none
          +}
          +.nav-sm ul.nav.child_menu li {
          +    padding: 0 10px
          +}
          +.nav-sm ul.nav.child_menu li a {
          +    text-align: left !important
          +}
          +.nav-sm .profile {
          +    display: none
          +}
          +.menu_section {
          +    margin-bottom: 35px
          +}
          +.menu_section h3 {
          +    padding-left: 15px;
          +    color: #fff;
          +    text-transform: uppercase;
          +    letter-spacing: .5px;
          +    font-weight: bold;
          +    font-size: 11px;
          +    margin-bottom: 0;
          +    margin-top: 0;
          +    text-shadow: 1px 1px #000
          +}
          +.menu_section>ul {
          +    margin-top: 10px
          +}
          +.profile_pic {
          +    width: 35%;
          +    float: left
          +}
          +.img-circle.profile_img {
          +    width: 70%;
          +    background: #fff;
          +    margin-left: 15%;
          +    z-index: 1000;
          +    position: inherit;
          +    margin-top: 20px;
          +    border: 1px solid rgba(52, 73, 94, 0.44);
          +    padding: 4px
          +}
          +.profile_info {
          +    padding: 25px 10px 10px;
          +    width: 65%;
          +    float: left
          +}
          +.profile_info span {
          +    font-size: 13px;
          +    line-height: 30px;
          +    color: #BAB8B8
          +}
          +.profile_info h2 {
          +    font-size: 14px;
          +    color: #ECF0F1;
          +    margin: 0;
          +    font-weight: 300
          +}
          +.profile.img_2 {
          +    text-align: center
          +}
          +.profile.img_2 .profile_pic {
          +    width: 100%
          +}
          +.profile.img_2 .profile_pic .img-circle.profile_img {
          +    width: 50%;
          +    margin: 10px 0 0
          +}
          +.profile.img_2 .profile_info {
          +    padding: 15px 10px 0;
          +    width: 100%;
          +    margin-bottom: 10px;
          +    float: left
          +}
          +.main_menu span.fa {
          +    float: right;
          +    text-align: center;
          +    margin-top: 5px;
          +    font-size: 10px;
          +    min-width: inherit;
          +    color: #C4CFDA
          +}
          +.active a span.fa {
          +    text-align: right !important;
          +    margin-right: 4px
          +}
          +.nav-sm .menu_section {
          +    margin: 0
          +}
          +.nav-sm span.fa,
          +.nav-sm .menu_section h3 {
          +    display: none
          +}
          +.nav-sm li li span.fa {
          +    display: inline-block
          +}
          +.nav_menu {
          +    float: left;
          +    background: #EDEDED;
          +    border-bottom: 1px solid #D9DEE4;
          +    margin-bottom: 10px;
          +    width: 100%;
          +    position: relative
          +}
          +@media (min-width: 480px) {
          +    .nav_menu {
          +        position: static
          +    }
          +}
          +.nav-md .container.body .col-md-3.left_col {
          +    min-height: 100%;
          +    width: 230px;
          +    padding: 0;
          +    position: absolute;
          +    display: -ms-flexbox;
          +    display: flex;
          +    z-index: 1
          +}
          +.nav-md .container.body .col-md-3.left_col.menu_fixed {
          +    height: 100%;
          +    position: fixed
          +}
          +body .container.body .right_col {
          +    background: #F7F7F7
          +}
          +.nav-md .container.body .right_col {
          +    padding: 10px 20px 0;
          +    margin-left: 230px
          +}
          +.nav_title {
          +    width: 230px;
          +    float: left;
          +    background: #2A3F54;
          +    border-radius: 0;
          +    height: 57px
          +}
          +@media (max-width: 991px) {
          +    .nav-md .container.body .right_col,
          +    .nav-md .container.body .top_nav {
          +        width: 100%;
          +        margin: 0
          +    }
          +    .nav-md .container.body .col-md-3.left_col {
          +        display: none
          +    }
          +    .nav-md .container.body .right_col {
          +        width: 100%;
          +        padding-right: 0
          +    }
          +    .right_col {
          +        padding: 10px !important
          +    }
          +}
          +@media (max-width: 1200px) {
          +    .x_title h2 {
          +        width: 62%;
          +        font-size: 17px
          +    }
          +    .tile,
          +    .graph {
          +        zoom: 85%;
          +        height: inherit
          +    }
          +}
          +@media (max-width: 1270px) and (min-width: 192px) {
          +    .x_title h2 small {
          +        display: none
          +    }
          +}
          +.left_col .mCSB_scrollTools {
          +    width: 6px
          +}
          +.left_col .mCSB_dragger {
          +    max-height: 400px !important
          +}
          +.blue {
          +    color: #3498DB
          +}
          +.purple {
          +    color: #9B59B6
          +}
          +.green {
          +    color: #1ABB9C
          +}
          +.aero {
          +    color: #9CC2CB
          +}
          +.red {
          +    color: #E74C3C
          +}
          +.dark {
          +    color: #34495E
          +}
          +.border-blue {
          +    border-color: #3498DB !important
          +}
          +.border-purple {
          +    border-color: #9B59B6 !important
          +}
          +.border-green {
          +    border-color: #1ABB9C !important
          +}
          +.border-aero {
          +    border-color: #9CC2CB !important
          +}
          +.border-red {
          +    border-color: #E74C3C !important
          +}
          +.border-dark {
          +    border-color: #34495E !important
          +}
          +.bg-white {
          +    background: #fff !important;
          +    border: 1px solid #fff !important;
          +    color: #73879C
          +}
          +.bg-green {
          +    background: #1ABB9C !important;
          +    border: 1px solid #1ABB9C !important;
          +    color: #fff
          +}
          +.bg-red {
          +    background: #E74C3C !important;
          +    border: 1px solid #E74C3C !important;
          +    color: #fff
          +}
          +.bg-blue {
          +    background: #3498DB !important;
          +    border: 1px solid #3498DB !important;
          +    color: #fff
          +}
          +.bg-orange {
          +    background: #F39C12 !important;
          +    border: 1px solid #F39C12 !important;
          +    color: #fff
          +}
          +.bg-purple {
          +    background: #9B59B6 !important;
          +    border: 1px solid #9B59B6 !important;
          +    color: #fff
          +}
          +.bg-blue-sky {
          +    background: #50C1CF !important;
          +    border: 1px solid #50C1CF !important;
          +    color: #fff
          +}
          +.container {
          +    width: 100%;
          +    padding: 0
          +}
          +.navbar-nav>li>a,
          +.navbar-brand,
          +.navbar-nav>li>a {
          +    color: #fff !important
          +}
          +.top_nav .nav>li>a:focus,
          +.top_nav .nav>li>a:hover,
          +.top_nav .nav .open>a,
          +.top_nav .nav .open>a:focus,
          +.top_nav .nav .open>a:hover {
          +    background: #D9DEE4
          +}
          +body {
          +    color: #73879C;
          +    background: #2A3F54;
          +    font-family: "Helvetica Neue", Roboto, Arial, "Droid Sans", sans-serif;
          +    font-size: 13px;
          +    font-weight: 400;
          +    line-height: 1.471
          +}
          +.main_container .top_nav {
          +    display: block;
          +    margin-left: 230px
          +}
          +.no-padding {
          +    padding: 0 !important
          +}
          +.page-title {
          +    width: 100%;
          +    height: 65px;
          +    padding: 10px 0
          +}
          +.page-title .title_left {
          +    width: 45%;
          +    float: left;
          +    display: block
          +}
          +.page-title .title_left h3 {
          +    margin: 9px 0
          +}
          +.page-title .title_right {
          +    width: 55%;
          +    float: left;
          +    display: block
          +}
          +.page-title .title_right .pull-right {
          +    margin: 10px 0
          +}
          +.fixed_height_320 {
          +    height: 320px
          +}
          +.fixed_height_390 {
          +    height: 390px
          +}
          +.fixed_height_200 {
          +    height: 200px
          +}
          +.overflow_hidden {
          +    overflow: hidden
          +}
          +.progress-bar-dark {
          +    background-color: #34495E !important
          +}
          +.progress-bar-gray {
          +    background-color: #BDC3C7 !important
          +}
          +table.no-margin .progress {
          +    margin-bottom: 0
          +}
          +.main_content {
          +    padding: 10px 20px
          +}
          +.col-md-55 {
          +    width: 50%;
          +    margin-bottom: 10px
          +}
          +@media (min-width: 768px) {
          +    .col-md-55 {
          +        width: 20%
          +    }
          +}
          +@media (min-width: 992px) {
          +    .col-md-55 {
          +        width: 20%
          +    }
          +}
          +@media (min-width: 1200px) {
          +    .col-md-55 {
          +        width: 20%
          +    }
          +}
          +@media (min-width: 192px) and (max-width: 1270px) {
          +    table.tile_info span.right {
          +        margin-right: 7px;
          +        float: left
          +    }
          +}
          +.center-margin {
          +    margin: 0 auto;
          +    float: none !important
          +}
          +.col-md-55,
          +.col-xs-1,
          +.col-sm-1,
          +.col-md-1,
          +.col-lg-1,
          +.col-xs-2,
          +.col-sm-2,
          +.col-md-2,
          +.col-lg-2,
          +.col-xs-3,
          +.col-sm-3,
          +.col-md-3,
          +.col-lg-3,
          +.col-xs-4,
          +.col-sm-4,
          +.col-md-4,
          +.col-lg-4,
          +.col-xs-5,
          +.col-sm-5,
          +.col-md-5,
          +.col-lg-5,
          +.col-xs-6,
          +.col-sm-6,
          +.col-md-6,
          +.col-lg-6,
          +.col-xs-7,
          +.col-sm-7,
          +.col-md-7,
          +.col-lg-7,
          +.col-xs-8,
          +.col-sm-8,
          +.col-md-8,
          +.col-lg-8,
          +.col-xs-9,
          +.col-sm-9,
          +.col-md-9,
          +.col-lg-9,
          +.col-xs-10,
          +.col-sm-10,
          +.col-md-10,
          +.col-lg-10,
          +.col-xs-11,
          +.col-sm-11,
          +.col-md-11,
          +.col-lg-11,
          +.col-xs-12,
          +.col-sm-12,
          +.col-md-12,
          +.col-lg-12 {
          +    position: relative;
          +    min-height: 1px;
          +    float: left;
          +    padding-right: 10px;
          +    padding-left: 10px
          +}
          +.row {
          +    margin-right: -10px;
          +    margin-left: -10px
          +}
          +.grid_slider .col-md-6 {
          +    padding: 0 40px
          +}
          +h1,
          +.h1,
          +h2,
          +.h2,
          +h3,
          +.h3 {
          +    margin-top: 10px;
          +    margin-bottom: 10px
          +}
          +a {
          +    color: #5A738E;
          +    text-decoration: none
          +}
          +a,
          +a:visited,
          +a:focus,
          +a:active,
          +:visited,
          +:focus,
          +:active,
          +.btn:focus,
          +.btn:active:focus,
          +.btn.active:focus,
          +.btn.focus,
          +.btn:active.focus,
          +.btn.active.focus {
          +    outline: 0
          +}
          +a:hover,
          +a:focus {
          +    text-decoration: none
          +}
          +.navbar {
          +    margin-bottom: 0
          +}
          +.navbar-header {
          +    background: #34495E
          +}
          +.navbar-right {
          +    margin-right: 0
          +}
          +.top_nav .navbar-right {
          +    margin: 0;
          +    width: 70%;
          +    float: right
          +}
          +.top_nav .navbar-right li {
          +    display: inline-block;
          +    float: right;
          +    position: static
          +}
          +@media (min-width: 480px) {
          +    .top_nav .navbar-right li {
          +        position: relative
          +    }
          +}
          +.top_nav .dropdown-menu li {
          +    width: 100%
          +}
          +.top_nav .dropdown-menu li a {
          +    width: 100%;
          +    padding: 12px 20px
          +}
          +.top_nav li a i {
          +    font-size: 15px
          +}
          +.navbar-static-top {
          +    position: fixed;
          +    top: 0;
          +    width: 100%
          +}
          +.sidebar-header {
          +    border-bottom: 0;
          +    margin-top: 46px
          +}
          +.sidebar-header:first-of-type {
          +    margin-top: 0
          +}
          +.nav.side-menu>li {
          +    position: relative;
          +    display: block;
          +    cursor: pointer
          +}
          +.nav.side-menu>li>a {
          +    margin-bottom: 6px
          +}
          +.nav.side-menu>li>a:hover {
          +    color: #F2F5F7 !important
          +}
          +.nav.side-menu>li>a:hover,
          +.nav>li>a:focus {
          +    text-decoration: none;
          +    background: transparent
          +}
          +.nav.child_menu {
          +    display: none
          +}
          +.nav.child_menu li:hover,
          +.nav.child_menu li.active {
          +    background-color: rgba(255, 255, 255, 0.06)
          +}
          +.nav.child_menu li {
          +    padding-left: 36px
          +}
          +.nav-md ul.nav.child_menu li:before {
          +    background: #425668;
          +    bottom: auto;
          +    content: "";
          +    height: 8px;
          +    left: 23px;
          +    margin-top: 15px;
          +    position: absolute;
          +    right: auto;
          +    width: 8px;
          +    z-index: 1;
          +    border-radius: 50%
          +}
          +.nav-md ul.nav.child_menu li:after {
          +    border-left: 1px solid #425668;
          +    bottom: 0;
          +    content: "";
          +    left: 27px;
          +    position: absolute;
          +    top: 0
          +}
          +.nav.side-menu>li>a,
          +.nav.child_menu>li>a {
          +    color: #E7E7E7;
          +    font-weight: 500
          +}
          +.nav.child_menu li li:hover,
          +.nav.child_menu li li.active {
          +    background: none
          +}
          +.nav.child_menu li li a:hover,
          +.nav.child_menu li li a.active {
          +    color: #fff
          +}
          +.nav>li>a {
          +    position: relative;
          +    display: block;
          +    padding: 13px 15px 12px
          +}
          +.nav.side-menu>li.current-page,
          +.nav.side-menu>li.active {
          +    border-right: 5px solid #1ABB9C
          +}
          +.nav li.current-page {
          +    background: rgba(255, 255, 255, 0.05)
          +}
          +.nav li li li.current-page {
          +    background: none
          +}
          +.nav li li.current-page a {
          +    color: #fff
          +}
          +.nav.side-menu>li.active>a {
          +    text-shadow: rgba(0, 0, 0, 0.25) 0 -1px 0;
          +    background: linear-gradient(#334556, #2C4257), #2A3F54;
          +    box-shadow: rgba(0, 0, 0, 0.25) 0 1px 0, inset rgba(255, 255, 255, 0.16) 0 1px 0
          +}
          +.navbar-brand,
          +.navbar-nav>li>a {
          +    font-weight: 500;
          +    color: #ECF0F1 !important;
          +    margin-left: 0 !important;
          +    line-height: 32px
          +}
          +.site_title {
          +    text-overflow: ellipsis;
          +    overflow: hidden;
          +    font-weight: 400;
          +    font-size: 22px;
          +    width: 100%;
          +    color: #ECF0F1 !important;
          +    margin-left: 0 !important;
          +    line-height: 59px;
          +    display: block;
          +    height: 55px;
          +    margin: 0;
          +    padding-left: 10px
          +}
          +.site_title:hover,
          +.site_title:focus {
          +    text-decoration: none
          +}
          +.nav.navbar-nav>li>a {
          +    color: #515356 !important
          +}
          +.nav.top_menu>li>a {
          +    position: relative;
          +    display: block;
          +    padding: 10px 15px;
          +    color: #34495E !important
          +}
          +.nav>li>a:hover,
          +.nav>li>a:focus {
          +    background-color: transparent
          +}
          +.top_search {
          +    padding: 0
          +}
          +.top_search .form-control {
          +    border-right: 0;
          +    box-shadow: inset 0 1px 0px rgba(0, 0, 0, 0.075);
          +    border-radius: 25px 0px 0px 25px;
          +    padding-left: 20px;
          +    border: 1px solid rgba(221, 226, 232, 0.49)
          +}
          +.top_search .form-control:focus {
          +    border: 1px solid rgba(221, 226, 232, 0.49);
          +    border-right: 0
          +}
          +.top_search .input-group-btn button {
          +    border-radius: 0px 25px 25px 0px;
          +    border: 1px solid rgba(221, 226, 232, 0.49);
          +    border-left: 0;
          +    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          +    color: #93A2B2;
          +    margin-bottom: 0 !important
          +}
          +.toggle {
          +    float: left;
          +    margin: 0;
          +    padding-top: 16px;
          +    width: 70px
          +}
          +.toggle a {
          +    padding: 15px 15px 0;
          +    margin: 0;
          +    cursor: pointer
          +}
          +.toggle a i {
          +    font-size: 26px
          +}
          +.nav.child_menu>li>a {
          +    color: rgba(255, 255, 255, 0.75);
          +    font-size: 12px;
          +    padding: 9px
          +}
          +.panel_toolbox {
          +    float: right;
          +    min-width: 70px
          +}
          +.panel_toolbox>li {
          +    float: left;
          +    cursor: pointer
          +}
          +.panel_toolbox>li>a {
          +    padding: 5px;
          +    color: #C5C7CB;
          +    font-size: 14px
          +}
          +.panel_toolbox>li>a:hover {
          +    background: #F5F7FA
          +}
          +.line_30 {
          +    line-height: 30px
          +}
          +.main_menu_side {
          +    padding: 0
          +}
          +.bs-docs-sidebar .nav>li>a {
          +    display: block;
          +    padding: 4px 6px
          +}
          +footer {
          +    background: #fff;
          +    padding: 15px 20px;
          +    display: block
          +}
          +.nav-sm footer {
          +    margin-left: 70px
          +}
          +.footer_fixed footer {
          +    position: fixed;
          +    left: 0px;
          +    bottom: 0px;
          +    width: 100%
          +}
          +@media (min-width: 768px) {
          +    .footer_fixed footer {
          +        margin-left: 0
          +    }
          +}
          +@media (min-width: 768px) {
          +    .footer_fixed .nav-sm footer {
          +        margin-left: 0
          +    }
          +}
          +.tile-stats.sparkline {
          +    padding: 10px;
          +    text-align: center
          +}
          +.jqstooltip {
          +    background: #34495E !important;
          +    width: 30px !important;
          +    height: 22px !important;
          +    text-decoration: none
          +}
          +.tooltip {
          +    display: block !important
          +}
          +.tiles {
          +    border-top: 1px solid #ccc;
          +    margin-top: 15px;
          +    padding-top: 5px;
          +    margin-bottom: 0
          +}
          +.tile {
          +    overflow: hidden
          +}
          +.top_tiles {
          +    margin-bottom: 0
          +}
          +.top_tiles .tile h2 {
          +    font-size: 30px;
          +    line-height: 30px;
          +    margin: 3px 0 7px;
          +    font-weight: bold
          +}
          +article.media {
          +    width: 100%
          +}
          +*,
          +*:before,
          +*:after {
          +    box-sizing: border-box
          +}
          +#integration-list {
          +    width: 100%;
          +    margin: 0 auto;
          +    display: table
          +}
          +#integration-list ul {
          +    padding: 0;
          +    margin: 20px 0;
          +    color: #555
          +}
          +#integration-list ul>li {
          +    list-style: none;
          +    border-top: 1px solid #ddd;
          +    display: block;
          +    padding: 15px;
          +    overflow: hidden
          +}
          +#integration-list ul:last-child {
          +    border-bottom: 1px solid #ddd
          +}
          +#integration-list ul>li:hover {
          +    background: #efefef
          +}
          +.expand {
          +    display: block;
          +    text-decoration: none;
          +    color: #555;
          +    cursor: pointer
          +}
          +.expand h2 {
          +    width: 85%;
          +    float: left
          +}
          +h2 {
          +    font-size: 18px;
          +    font-weight: 400
          +}
          +#left,
          +#right {
          +    display: table
          +}
          +#sup {
          +    display: table-cell;
          +    vertical-align: middle;
          +    width: 80%
          +}
          +.detail a {
          +    text-decoration: none;
          +    color: #C0392B;
          +    border: 1px solid #C0392B;
          +    padding: 6px 10px 5px;
          +    font-size: 13px;
          +    margin-right: 7px
          +}
          +.detail {
          +    margin: 10px 0 10px 0px;
          +    display: none;
          +    line-height: 22px;
          +    height: 150px
          +}
          +.detail span {
          +    margin: 0
          +}
          +.right-arrow {
          +    width: 10px;
          +    float: right;
          +    font-weight: bold;
          +    font-size: 20px
          +}
          +.accordion .panel {
          +    margin-bottom: 5px;
          +    border-radius: 0;
          +    border-bottom: 1px solid #efefef
          +}
          +.accordion .panel-heading {
          +    background: #F2F5F7;
          +    padding: 13px;
          +    width: 100%;
          +    display: block
          +}
          +.accordion .panel:hover {
          +    background: #F2F5F7
          +}
          +.x_panel {
          +    position: relative;
          +    width: 100%;
          +    margin-bottom: 10px;
          +    padding: 10px 17px;
          +    display: inline-block;
          +    background: #fff;
          +    border: 1px solid #E6E9ED;
          +    -webkit-column-break-inside: avoid;
          +    -moz-column-break-inside: avoid;
          +    column-break-inside: avoid;
          +    opacity: 1;
          +    transition: all .2s ease
          +}
          +.x_title {
          +    border-bottom: 2px solid #E6E9ED;
          +    padding: 1px 5px 6px;
          +    margin-bottom: 10px
          +}
          +.x_title .filter {
          +    width: 40%;
          +    float: right
          +}
          +.x_title h2 {
          +    margin: 5px 0 6px;
          +    float: left;
          +    display: block;
          +    text-overflow: ellipsis;
          +    overflow: hidden;
          +    white-space: nowrap
          +}
          +.x_title h2 small {
          +    margin-left: 10px
          +}
          +.x_title span {
          +    color: #BDBDBD
          +}
          +.x_content {
          +    padding: 0 5px 6px;
          +    position: relative;
          +    width: 100%;
          +    float: left;
          +    clear: both;
          +    margin-top: 5px
          +}
          +.x_content h4 {
          +    font-size: 16px;
          +    font-weight: 500
          +}
          +legend {
          +    padding-bottom: 7px
          +}
          +.demo-placeholder {
          +    height: 280px
          +}
          +.profile_details:nth-child(3n) {
          +    clear: both
          +}
          +.profile_details .profile_view {
          +    display: inline-block;
          +    padding: 10px 0 0;
          +    background: #fff
          +}
          +.profile_details .profile_view .divider {
          +    border-top: 1px solid #e5e5e5;
          +    padding-top: 5px;
          +    margin-top: 5px
          +}
          +.profile_details .profile_view .ratings {
          +    margin-bottom: 0
          +}
          +.profile_details .profile_view .bottom {
          +    background: #F2F5F7;
          +    padding: 9px 0;
          +    border-top: 1px solid #E6E9ED
          +}
          +.profile_details .profile_view .left {
          +    margin-top: 20px
          +}
          +.profile_details .profile_view .left p {
          +    margin-bottom: 3px
          +}
          +.profile_details .profile_view .right {
          +    margin-top: 0px;
          +    padding: 10px
          +}
          +.profile_details .profile_view .img-circle {
          +    border: 1px solid #E6E9ED;
          +    padding: 2px
          +}
          +.profile_details .profile_view h2 {
          +    margin: 5px 0
          +}
          +.profile_details .profile_view .ratings {
          +    text-align: left;
          +    font-size: 16px
          +}
          +.profile_details .profile_view .brief {
          +    margin: 0;
          +    font-weight: 300
          +}
          +.profile_details .profile_left {
          +    background: white
          +}
          +.pagination.pagination-split li {
          +    display: inline-block;
          +    margin-right: 3px
          +}
          +.pagination.pagination-split li a {
          +    border-radius: 4px;
          +    color: #768399;
          +    -moz-border-radius: 4px;
          +    -webkit-border-radius: 4px
          +}
          +table.tile h3,
          +table.tile h4,
          +table.tile span {
          +    font-weight: bold;
          +    vertical-align: middle !important
          +}
          +table.tile th,
          +table.tile td {
          +    text-align: center
          +}
          +table.tile th {
          +    border-bottom: 1px solid #E6ECEE
          +}
          +table.tile td {
          +    padding: 5px 0
          +}
          +table.tile td ul {
          +    text-align: left;
          +    padding-left: 0
          +}
          +table.tile td ul li {
          +    list-style: none;
          +    width: 100%
          +}
          +table.tile td ul li a {
          +    width: 100%
          +}
          +table.tile td ul li a big {
          +    right: 0;
          +    float: right;
          +    margin-right: 13px
          +}
          +table.tile_info {
          +    width: 100%
          +}
          +table.tile_info td {
          +    text-align: left;
          +    padding: 1px;
          +    font-size: 15px
          +}
          +table.tile_info td p {
          +    white-space: nowrap;
          +    overflow: hidden;
          +    text-overflow: ellipsis;
          +    margin: 0;
          +    line-height: 28px
          +}
          +table.tile_info td i {
          +    margin-right: 8px;
          +    font-size: 17px;
          +    float: left;
          +    width: 18px;
          +    line-height: 28px
          +}
          +table.tile_info td:first-child {
          +    width: 83%
          +}
          +td span {
          +    line-height: 28px
          +}
          +.sidebar-widget {
          +    overflow: hidden
          +}
          +.error-number {
          +    font-size: 90px;
          +    line-height: 90px;
          +    margin: 20px 0
          +}
          +.col-middle {
          +    margin-top: 5%
          +}
          +.mid_center {
          +    width: 370px;
          +    margin: 0 auto;
          +    text-align: center;
          +    padding: 10px 20px
          +}
          +h3.degrees {
          +    font-size: 22px;
          +    font-weight: 400;
          +    text-align: center
          +}
          +.degrees:after {
          +    content: "o";
          +    position: relative;
          +    top: -12px;
          +    font-size: 13px;
          +    font-weight: 300
          +}
          +.daily-weather .day {
          +    font-size: 14px;
          +    border-top: 2px solid rgba(115, 135, 156, 0.36);
          +    text-align: center;
          +    border-bottom: 2px solid rgba(115, 135, 156, 0.36);
          +    padding: 5px 0
          +}
          +.weather-days .col-sm-2 {
          +    overflow: hidden;
          +    width: 16.66666667%
          +}
          +.weather .row {
          +    margin-bottom: 0
          +}
          +.bulk-actions {
          +    display: none
          +}
          +table.countries_list {
          +    width: 100%
          +}
          +table.countries_list td {
          +    padding: 0 10px;
          +    line-height: 30px;
          +    border-top: 1px solid #eeeeee
          +}
          +.dataTables_paginate a {
          +    padding: 6px 9px !important;
          +    background: #ddd !important;
          +    border-color: #ddd !important
          +}
          +.paging_full_numbers a.paginate_active {
          +    background-color: rgba(38, 185, 154, 0.59) !important;
          +    border-color: rgba(38, 185, 154, 0.59) !important
          +}
          +button.DTTT_button,
          +div.DTTT_button,
          +a.DTTT_button {
          +    border: 1px solid #E7E7E7 !important;
          +    background: #E7E7E7 !important;
          +    box-shadow: none !important
          +}
          +table.jambo_table {
          +    border: 1px solid rgba(221, 221, 221, 0.78)
          +}
          +table.jambo_table thead {
          +    background: rgba(52, 73, 94, 0.94);
          +    color: #ECF0F1
          +}
          +table.jambo_table tbody tr:hover td {
          +    background: rgba(38, 185, 154, 0.07);
          +    border-top: 1px solid rgba(38, 185, 154, 0.11);
          +    border-bottom: 1px solid rgba(38, 185, 154, 0.11)
          +}
          +table.jambo_table tbody tr.selected {
          +    background: rgba(38, 185, 154, 0.16)
          +}
          +table.jambo_table tbody tr.selected td {
          +    border-top: 1px solid rgba(38, 185, 154, 0.4);
          +    border-bottom: 1px solid rgba(38, 185, 154, 0.4)
          +}
          +.dataTables_paginate a {
          +    background: #ff0000
          +}
          +.dataTables_wrapper {
          +    position: relative;
          +    clear: both;
          +    zoom: 1
          +}
          +.dataTables_processing {
          +    position: absolute;
          +    top: 50%;
          +    left: 50%;
          +    width: 250px;
          +    height: 30px;
          +    margin-left: -125px;
          +    margin-top: -15px;
          +    padding: 14px 0 2px 0;
          +    border: 1px solid #ddd;
          +    text-align: center;
          +    color: #999;
          +    font-size: 14px;
          +    background-color: white
          +}
          +.dataTables_length {
          +    width: 40%;
          +    float: left
          +}
          +.dataTables_filter {
          +    width: 50%;
          +    float: right;
          +    text-align: right
          +}
          +.dataTables_info {
          +    width: 60%;
          +    float: left
          +}
          +.dataTables_paginate {
          +    float: right;
          +    text-align: right
          +}
          +table.dataTable th.focus,
          +table.dataTable td.focus {
          +    outline: 2px solid #1ABB9C !important;
          +    outline-offset: -1px
          +}
          +table.display {
          +    margin: 0 auto;
          +    clear: both;
          +    width: 100%
          +}
          +table.display thead th {
          +    padding: 8px 18px 8px 10px;
          +    border-bottom: 1px solid black;
          +    font-weight: bold;
          +    cursor: pointer
          +}
          +table.display tfoot th {
          +    padding: 3px 18px 3px 10px;
          +    border-top: 1px solid black;
          +    font-weight: bold
          +}
          +table.display tr.heading2 td {
          +    border-bottom: 1px solid #aaa
          +}
          +table.display td {
          +    padding: 3px 10px
          +}
          +table.display td.center {
          +    text-align: center
          +}
          +table.display thead th:active,
          +table.display thead td:active {
          +    outline: none
          +}
          +.dataTables_scroll {
          +    clear: both
          +}
          +.dataTables_scrollBody {
          +    *margin-top: -1px;
          +    -webkit-overflow-scrolling: touch
          +}
          +.top .dataTables_info {
          +    float: none
          +}
          +.clear {
          +    clear: both
          +}
          +.dataTables_empty {
          +    text-align: center
          +}
          +tfoot input {
          +    margin: 0.5em 0;
          +    width: 100%;
          +    color: #444
          +}
          +tfoot input.search_init {
          +    color: #999
          +}
          +td.group {
          +    background-color: #d1cfd0;
          +    border-bottom: 2px solid #A19B9E;
          +    border-top: 2px solid #A19B9E
          +}
          +td.details {
          +    background-color: #d1cfd0;
          +    border: 2px solid #A19B9E
          +}
          +.example_alt_pagination div.dataTables_info {
          +    width: 40%
          +}
          +.paging_full_numbers {
          +    width: 400px;
          +    height: 22px;
          +    line-height: 22px
          +}
          +.paging_full_numbers a:active {
          +    outline: none
          +}
          +.paging_full_numbers a:hover {
          +    text-decoration: none
          +}
          +.paging_full_numbers a.paginate_button,
          +.paging_full_numbers a.paginate_active {
          +    border: 1px solid #aaa;
          +    -webkit-border-radius: 5px;
          +    -moz-border-radius: 5px;
          +    padding: 2px 5px;
          +    margin: 0 3px;
          +    cursor: pointer
          +}
          +.paging_full_numbers a.paginate_button {
          +    background-color: #ddd
          +}
          +.paging_full_numbers a.paginate_button:hover {
          +    background-color: #ccc;
          +    text-decoration: none !important
          +}
          +.paging_full_numbers a.paginate_active {
          +    background-color: #99B3FF
          +}
          +table.display tr.even.row_selected td {
          +    background-color: #B0BED9
          +}
          +table.display tr.odd.row_selected td {
          +    background-color: #9FAFD1
          +}
          +div.box {
          +    height: 100px;
          +    padding: 10px;
          +    overflow: auto;
          +    border: 1px solid #8080FF;
          +    background-color: #E5E5FF
          +}
          +ul.msg_list li {
          +    background: #f7f7f7;
          +    padding: 5px;
          +    display: -ms-flexbox;
          +    display: flex;
          +    margin: 6px 6px 0;
          +    width: 96% !important
          +}
          +ul.msg_list li:last-child {
          +    margin-bottom: 6px;
          +    padding: 10px
          +}
          +ul.msg_list li a {
          +    padding: 3px 5px !important
          +}
          +ul.msg_list li a .image img {
          +    border-radius: 2px 2px 2px 2px;
          +    -webkit-border-radius: 2px 2px 2px 2px;
          +    float: left;
          +    margin-right: 10px;
          +    width: 11%
          +}
          +ul.msg_list li a .time {
          +    font-size: 11px;
          +    font-style: italic;
          +    font-weight: bold;
          +    position: absolute;
          +    right: 35px
          +}
          +ul.msg_list li a .message {
          +    display: block !important;
          +    font-size: 11px
          +}
          +.dropdown-menu.msg_list span {
          +    white-space: normal
          +}
          +.dropdown-menu {
          +    border: medium none;
          +    box-shadow: none;
          +    display: none;
          +    float: left;
          +    font-size: 12px;
          +    left: 0;
          +    list-style: none outside none;
          +    padding: 0;
          +    position: absolute;
          +    text-shadow: none;
          +    top: 100%;
          +    z-index: 9998;
          +    border: 1px solid #D9DEE4;
          +    border-top-left-radius: 0;
          +    border-top-right-radius: 0
          +}
          +.dropdown-menu>li>a {
          +    color: #5A738E
          +}
          +.navbar-nav .open .dropdown-menu {
          +    position: absolute;
          +    background: #fff;
          +    margin-top: 0;
          +    border: 1px solid #D9DEE4;
          +    -webkit-box-shadow: none;
          +    right: 0;
          +    left: auto;
          +    width: 220px
          +}
          +.navbar-nav .open .dropdown-menu.msg_list {
          +    width: 300px
          +}
          +.info-number .badge {
          +    font-size: 10px;
          +    font-weight: normal;
          +    line-height: 13px;
          +    padding: 2px 6px;
          +    position: absolute;
          +    right: 2px;
          +    top: 8px
          +}
          +ul.to_do {
          +    padding: 0
          +}
          +ul.to_do li {
          +    background: #f3f3f3;
          +    border-radius: 3px;
          +    position: relative;
          +    padding: 7px;
          +    margin-bottom: 5px;
          +    list-style: none
          +}
          +ul.to_do p {
          +    margin: 0
          +}
          +.dashboard-widget {
          +    background: #f6f6f6;
          +    border-top: 5px solid #79C3DF;
          +    border-radius: 3px;
          +    padding: 5px 10px 10px
          +}
          +.dashboard-widget .dashboard-widget-title {
          +    font-weight: normal;
          +    border-bottom: 1px solid #c1cdcd;
          +    margin: 0 0 10px 0;
          +    padding-bottom: 5px;
          +    padding-left: 40px;
          +    line-height: 30px
          +}
          +.dashboard-widget .dashboard-widget-title i {
          +    font-size: 100%;
          +    margin-left: -35px;
          +    margin-right: 10px;
          +    color: #33a1c9;
          +    padding: 3px 6px;
          +    border: 1px solid #abd9ea;
          +    border-radius: 5px;
          +    background: #fff
          +}
          +ul.quick-list {
          +    width: 45%;
          +    padding-left: 0;
          +    display: inline-block
          +}
          +ul.quick-list li {
          +    padding-left: 10px;
          +    list-style: none;
          +    margin: 0;
          +    padding-bottom: 6px;
          +    padding-top: 4px;
          +    white-space: nowrap;
          +    text-overflow: ellipsis;
          +    overflow: hidden
          +}
          +ul.quick-list li i {
          +    padding-right: 10px;
          +    color: #757679
          +}
          +.dashboard-widget-content {
          +    padding-top: 9px
          +}
          +.dashboard-widget-content .sidebar-widget {
          +    width: 50%;
          +    display: inline-block;
          +    vertical-align: top;
          +    background: #fff;
          +    border: 1px solid #abd9ea;
          +    border-radius: 5px;
          +    text-align: center;
          +    float: right;
          +    padding: 2px;
          +    margin-top: 10px
          +}
          +.widget_summary {
          +    width: 100%;
          +    display: -ms-inline-flexbox;
          +    display: inline-flex
          +}
          +.widget_summary .w_left {
          +    float: left;
          +    text-align: left
          +}
          +.widget_summary .w_center {
          +    float: left
          +}
          +.widget_summary .w_right {
          +    float: left;
          +    text-align: right
          +}
          +.widget_summary .w_right span {
          +    font-size: 20px
          +}
          +.w_20 {
          +    width: 20%
          +}
          +.w_25 {
          +    width: 25%
          +}
          +.w_55 {
          +    width: 55%
          +}
          +h5.graph_title {
          +    text-align: left;
          +    margin-left: 10px
          +}
          +h5.graph_title i {
          +    margin-right: 10px;
          +    font-size: 17px
          +}
          +span.right {
          +    float: right;
          +    font-size: 14px !important
          +}
          +.tile_info a {
          +    text-overflow: ellipsis
          +}
          +.sidebar-footer {
          +    bottom: 0px;
          +    clear: both;
          +    display: block;
          +    padding: 5px 0 0 0;
          +    position: fixed;
          +    width: 230px;
          +    background: #2A3F54;
          +	z-index:999;
          +}
          +.sidebar-footer a {
          +    padding: 7px 0 3px;
          +    text-align: center;
          +    width: 25%;
          +    font-size: 17px;
          +    display: block;
          +    float: left;
          +    background: #172D44;
          +    cursor: pointer;
          +}
          +.sidebar-footer a:hover {
          +    background: #425567
          +}
          +.tile_count {
          +    margin-bottom: 20px;
          +    margin-top: 20px
          +}
          +.tile_count .tile_stats_count {
          +    border-bottom: 1px solid #D9DEE4;
          +    padding: 0 10px 0 20px;
          +    text-overflow: ellipsis;
          +    overflow: hidden;
          +    white-space: nowrap;
          +    position: relative
          +}
          +@media (min-width: 992px) {
          +    footer {
          +        margin-left: 230px
          +    }
          +}
          +@media (min-width: 992px) {
          +    .tile_count .tile_stats_count {
          +        margin-bottom: 10px;
          +        border-bottom: 0;
          +        padding-bottom: 10px
          +    }
          +}
          +.tile_count .tile_stats_count:before {
          +    content: "";
          +    position: absolute;
          +    left: 0;
          +    height: 65px;
          +    border-left: 2px solid #ADB2B5;
          +    margin-top: 10px
          +}
          +@media (min-width: 992px) {
          +    .tile_count .tile_stats_count:first-child:before {
          +        border-left: 0
          +    }
          +}
          +.tile_count .tile_stats_count .count {
          +    font-size: 30px;
          +    line-height: 47px;
          +    font-weight: 600
          +}
          +@media (min-width: 768px) {
          +    .tile_count .tile_stats_count .count {
          +        font-size: 40px
          +    }
          +}
          +@media (min-width: 992px) and (max-width: 1100px) {
          +    .tile_count .tile_stats_count .count {
          +        font-size: 30px
          +    }
          +}
          +.tile_count .tile_stats_count span {
          +    font-size: 12px
          +}
          +@media (min-width: 768px) {
          +    .tile_count .tile_stats_count span {
          +        font-size: 13px
          +    }
          +}
          +.tile_count .tile_stats_count .count_bottom i {
          +    width: 12px
          +}
          +.dashboard_graph {
          +    background: #fff;
          +    padding: 7px 10px
          +}
          +.dashboard_graph .col-md-9,
          +.dashboard_graph .col-md-3 {
          +    padding: 0
          +}
          +a.user-profile {
          +    color: #5E6974 !important
          +}
          +.user-profile img {
          +    width: 29px;
          +    height: 29px;
          +    border-radius: 50%;
          +    margin-right: 10px
          +}
          +ul.top_profiles {
          +    height: 330px;
          +    width: 100%
          +}
          +ul.top_profiles li {
          +    margin: 0;
          +    padding: 3px 5px
          +}
          +ul.top_profiles li:nth-child(odd) {
          +    background-color: #eee
          +}
          +.media .profile_thumb {
          +    border: 1px solid;
          +    width: 50px;
          +    height: 50px;
          +    margin: 5px 10px 5px 0;
          +    border-radius: 50%;
          +    padding: 9px 12px
          +}
          +.media .profile_thumb i {
          +    font-size: 30px
          +}
          +.media .date {
          +    background: #ccc;
          +    width: 52px;
          +    margin-right: 10px;
          +    border-radius: 10px;
          +    padding: 5px
          +}
          +.media .date .month {
          +    margin: 0;
          +    text-align: center;
          +    color: #fff
          +}
          +.media .date .day {
          +    text-align: center;
          +    color: #fff;
          +    font-size: 27px;
          +    margin: 0;
          +    line-height: 27px;
          +    font-weight: bold
          +}
          +.event .media-body a.title {
          +    font-weight: bold
          +}
          +.event .media-body p {
          +    margin-bottom: 0
          +}
          +h4.graph_title {
          +    margin: 7px;
          +    text-align: center
          +}
          +.fontawesome-icon-list .fa-hover a:hover {
          +    background-color: #ddd;
          +    color: #fff;
          +    text-decoration: none
          +}
          +.fontawesome-icon-list .fa-hover a {
          +    display: block;
          +    line-height: 32px;
          +    height: 32px;
          +    padding-left: 10px;
          +    border-radius: 4px
          +}
          +.fontawesome-icon-list .fa-hover a:hover .fa {
          +    font-size: 28px;
          +    vertical-align: -6px
          +}
          +.fontawesome-icon-list .fa-hover a .fa {
          +    width: 32px;
          +    font-size: 16px;
          +    display: inline-block;
          +    text-align: right;
          +    margin-right: 10px
          +}
          +.main_menu .fa {
          +    width: 26px;
          +    opacity: .99;
          +    display: inline-block;
          +    font-family: FontAwesome;
          +    font-style: normal;
          +    font-weight: normal;
          +    font-size: 18px;
          +    -webkit-font-smoothing: antialiased;
          +    -moz-osx-font-smoothing: grayscale
          +}
          +.tile-stats {
          +    position: relative;
          +    display: block;
          +    margin-bottom: 12px;
          +    border: 1px solid #E4E4E4;
          +    -webkit-border-radius: 5px;
          +    overflow: hidden;
          +    padding-bottom: 5px;
          +    -webkit-background-clip: padding-box;
          +    -moz-border-radius: 5px;
          +    -moz-background-clip: padding;
          +    border-radius: 5px;
          +    background-clip: padding-box;
          +    background: #FFF;
          +    transition: all 300ms ease-in-out
          +}
          +.tile-stats:hover .icon i {
          +    animation-name: tansformAnimation;
          +    animation-duration: .5s;
          +    animation-iteration-count: 1;
          +    color: rgba(58, 58, 58, 0.41);
          +    animation-timing-function: ease;
          +    animation-fill-mode: forwards;
          +    -webkit-animation-name: tansformAnimation;
          +    -webkit-animation-duration: .5s;
          +    -webkit-animation-iteration-count: 1;
          +    -webkit-animation-timing-function: ease;
          +    -webkit-animation-fill-mode: forwards;
          +    -moz-animation-name: tansformAnimation;
          +    -moz-animation-duration: .5s;
          +    -moz-animation-iteration-count: 1;
          +    -moz-animation-timing-function: ease;
          +    -moz-animation-fill-mode: forwards
          +}
          +.tile-stats .icon {
          +    width: 20px;
          +    height: 20px;
          +    color: #BAB8B8;
          +    position: absolute;
          +    right: 53px;
          +    top: 22px;
          +    z-index: 1
          +}
          +.tile-stats .icon i {
          +    margin: 0;
          +    font-size: 60px;
          +    line-height: 0;
          +    vertical-align: bottom;
          +    padding: 0
          +}
          +.tile-stats .count {
          +    font-size: 38px;
          +    font-weight: bold;
          +    line-height: 1.65857
          +}
          +.tile-stats .count,
          +.tile-stats h3,
          +.tile-stats p {
          +    position: relative;
          +    margin: 0;
          +    margin-left: 10px;
          +    z-index: 5;
          +    padding: 0
          +}
          +.tile-stats h3 {
          +    color: #BAB8B8
          +}
          +.tile-stats p {
          +    margin-top: 5px;
          +    font-size: 12px
          +}
          +.tile-stats>.dash-box-footer {
          +    position: relative;
          +    text-align: center;
          +    margin-top: 5px;
          +    padding: 3px 0;
          +    color: #fff;
          +    color: rgba(255, 255, 255, 0.8);
          +    display: block;
          +    z-index: 10;
          +    background: rgba(0, 0, 0, 0.1);
          +    text-decoration: none
          +}
          +.tile-stats>.dash-box-footer:hover {
          +    color: #fff;
          +    background: rgba(0, 0, 0, 0.15)
          +}
          +.tile-stats>.dash-box-footer:hover {
          +    color: #fff;
          +    background: rgba(0, 0, 0, 0.15)
          +}
          +table.tile_info {
          +    padding: 10px 15px
          +}
          +table.tile_info span.right {
          +    margin-right: 0;
          +    float: right;
          +    position: absolute;
          +    right: 4%
          +}
          +.tile:hover {
          +    text-decoration: none
          +}
          +.tile_header {
          +    border-bottom: transparent;
          +    padding: 7px 15px;
          +    margin-bottom: 15px;
          +    background: #E7E7E7
          +}
          +.tile_head h4 {
          +    margin-top: 0;
          +    margin-bottom: 5px
          +}
          +.tiles-bottom {
          +    padding: 5px 10px;
          +    margin-top: 10px;
          +    background: rgba(194, 194, 194, 0.3);
          +    text-align: left
          +}
          +a.star {
          +    color: #428bca !important
          +}
          +.mail_content {
          +    background: none repeat scroll 0 0 #FFFFFF;
          +    border-radius: 4px;
          +    margin-top: 20px;
          +    min-height: 500px;
          +    padding: 10px 11px;
          +    width: 100%
          +}
          +.list-btn-mail {
          +    margin-bottom: 15px
          +}
          +.list-btn-mail.active {
          +    border-bottom: 1px solid #39B3D7;
          +    padding: 0 0 14px
          +}
          +.list-btn-mail>i {
          +    float: left;
          +    font-size: 18px;
          +    font-style: normal;
          +    width: 33px
          +}
          +.list-btn-mail>.cn {
          +    background: none repeat scroll 0 0 #39B3D7;
          +    border-radius: 12px;
          +    color: #FFFFFF;
          +    float: right;
          +    font-style: normal;
          +    padding: 0 5px
          +}
          +.button-mail {
          +    margin: 0 0 15px !important;
          +    text-align: left;
          +    width: 100%
          +}
          +button,
          +.buttons,
          +.btn,
          +.modal-footer .btn+.btn {
          +    margin-bottom: 5px;
          +    margin-right: 5px
          +}
          +.btn-group-vertical .btn,
          +.btn-group .btn {
          +    margin-bottom: 0;
          +    margin-right: 0
          +}
          +.mail_list_column {
          +    border-left: 1px solid #DBDBDB
          +}
          +.mail_view {
          +    border-left: 1px solid #DBDBDB
          +}
          +.mail_list {
          +    width: 100%;
          +    border-bottom: 1px solid #DBDBDB;
          +    margin-bottom: 2px;
          +    display: inline-block
          +}
          +.mail_list .left {
          +    width: 5%;
          +    float: left;
          +    margin-right: 3%
          +}
          +.mail_list .right {
          +    width: 90%;
          +    float: left
          +}
          +.mail_list h3 {
          +    font-size: 15px;
          +    font-weight: bold;
          +    margin: 0px 0 6px
          +}
          +.mail_list h3 small {
          +    float: right;
          +    color: #ADABAB;
          +    font-size: 11px;
          +    line-height: 20px
          +}
          +.mail_list .badge {
          +    padding: 3px 6px;
          +    font-size: 8px;
          +    background: #BAB7B7
          +}
          +@media (max-width: 767px) {
          +    .mail_list {
          +        margin-bottom: 5px;
          +        display: inline-block
          +    }
          +}
          +.mail_heading h4 {
          +    font-size: 18px;
          +    border-bottom: 1px solid #ddd;
          +    padding-bottom: 10px;
          +    margin-top: 20px
          +}
          +.attachment {
          +    margin-top: 30px
          +}
          +.attachment ul {
          +    width: 100%;
          +    list-style: none;
          +    padding-left: 0;
          +    display: inline-block;
          +    margin-bottom: 30px
          +}
          +.attachment ul li {
          +    float: left;
          +    width: 150px;
          +    margin-right: 10px;
          +    margin-bottom: 10px
          +}
          +.attachment ul li img {
          +    height: 150px;
          +    border: 1px solid #ddd;
          +    padding: 5px;
          +    margin-bottom: 10px
          +}
          +.attachment ul li span {
          +    float: right
          +}
          +.attachment .file-name {
          +    float: left
          +}
          +.attachment .links {
          +    width: 100%;
          +    display: inline-block
          +}
          +.compose {
          +    padding: 0;
          +    position: fixed;
          +    bottom: 0;
          +    right: 0;
          +    background: #fff;
          +    border: 1px solid #D9DEE4;
          +    border-right: 0;
          +    border-bottom: 0;
          +    border-top-left-radius: 5px;
          +    z-index: 9999;
          +    display: none
          +}
          +.compose .compose-header {
          +    padding: 5px;
          +    background: #169F85;
          +    color: #fff;
          +    border-top-left-radius: 5px
          +}
          +.compose .compose-header .close {
          +    text-shadow: 0 1px 0 #ffffff;
          +    line-height: .8
          +}
          +.compose .compose-body .editor.btn-toolbar {
          +    margin: 0
          +}
          +.compose .compose-body .editor-wrapper {
          +    height: 100%;
          +    min-height: 50px;
          +    max-height: 180px;
          +    border-radius: 0;
          +    border-left: none;
          +    border-right: none;
          +    overflow: auto
          +}
          +.compose .compose-footer {
          +    padding: 10px
          +}
          +.editor.btn-toolbar {
          +    zoom: 1;
          +    background: #F7F7F7;
          +    margin: 5px 2px;
          +    padding: 3px 0;
          +    border: 1px solid #EFEFEF
          +}
          +.input-group {
          +    margin-bottom: 10px
          +}
          +.ln_solid {
          +    border-top: 1px solid #e5e5e5;
          +    color: #ffffff;
          +    background-color: #ffffff;
          +    height: 1px;
          +    margin: 20px 0
          +}
          +span.section {
          +    display: block;
          +    width: 100%;
          +    padding: 0;
          +    margin-bottom: 20px;
          +    font-size: 21px;
          +    line-height: inherit;
          +    color: #333;
          +    border: 0;
          +    border-bottom: 1px solid #e5e5e5
          +}
          +.form-control {
          +    border-radius: 0;
          +    width: 100%
          +}
          +.form-horizontal .control-label {
          +    padding-top: 8px
          +}
          +.form-control:focus {
          +    border-color: #CCD0D7;
          +    box-shadow: none !important
          +}
          +legend {
          +    font-size: 18px;
          +    color: inherit
          +}
          +.form-horizontal .form-group {
          +    margin-right: 0;
          +    margin-left: 0
          +}
          +.form-control-feedback {
          +    margin-top: 8px;
          +    height: 23px;
          +    color: #bbb;
          +    line-height: 24px;
          +    font-size: 15px
          +}
          +.form-control-feedback.left {
          +    border-right: 1px solid #ccc;
          +    left: 13px
          +}
          +.form-control-feedback.right {
          +    border-left: 1px solid #ccc;
          +    right: 13px
          +}
          +.form-control.has-feedback-left {
          +    padding-left: 45px
          +}
          +.form-control.has-feedback-right {
          +    padding-right: 45px
          +}
          +.form-group {
          +    margin-bottom: 10px
          +}
          +.validate {
          +    margin-top: 10px
          +}
          +.invalid-form-error-message {
          +    margin-top: 10px;
          +    padding: 5px
          +}
          +.invalid-form-error-message.filled {
          +    border-left: 2px solid #E74C3C
          +}
          +p.parsley-success {
          +    color: #468847;
          +    background-color: #DFF0D8;
          +    border: 1px solid #D6E9C6
          +}
          +p.parsley-error {
          +    color: #B94A48;
          +    background-color: #F2DEDE;
          +    border: 1px solid #EED3D7
          +}
          +ul.parsley-errors-list {
          +    list-style: none;
          +    color: #E74C3C;
          +    padding-left: 0
          +}
          +input.parsley-error,
          +textarea.parsley-error,
          +select.parsley-error {
          +    background: #FAEDEC;
          +    border: 1px solid #E85445
          +}
          +.btn-group .parsley-errors-list {
          +    display: none
          +}
          +.bad input,
          +.bad select,
          +.bad textarea {
          +    border: 1px solid #CE5454;
          +    box-shadow: 0 0 4px -2px #CE5454;
          +    position: relative;
          +    left: 0;
          +    -moz-animation: .7s 1 shake linear;
          +    -webkit-animation: 0.7s 1 shake linear
          +}
          +.item input,
          +.item textarea {
          +    transition: 0.42s
          +}
          +.item .alert {
          +    float: left;
          +    margin: 0 0 0 20px;
          +    padding: 3px 10px;
          +    color: #FFF;
          +    border-radius: 3px 4px 4px 3px;
          +    background-color: #CE5454;
          +    max-width: 170px;
          +    white-space: pre;
          +    position: relative;
          +    left: -15px;
          +    opacity: 0;
          +    z-index: 1;
          +    transition: 0.15s ease-out
          +}
          +.item .alert::after {
          +    content: '';
          +    display: block;
          +    height: 0;
          +    width: 0;
          +    border-color: transparent #CE5454 transparent transparent;
          +    border-style: solid;
          +    border-width: 11px 7px;
          +    position: absolute;
          +    left: -13px;
          +    top: 1px
          +}
          +.item.bad .alert {
          +    left: 0;
          +    opacity: 1
          +}
          +.inl-bl {
          +    display: inline-block
          +}
          +.well .markup {
          +    background: #fff;
          +    color: #777;
          +    position: relative;
          +    padding: 45px 15px 15px;
          +    margin: 15px 0 0 0;
          +    background-color: #fff;
          +    border-radius: 0 0 4px 4px;
          +    box-shadow: none
          +}
          +.well .markup::after {
          +    content: "Example";
          +    position: absolute;
          +    top: 15px;
          +    left: 15px;
          +    font-size: 12px;
          +    font-weight: bold;
          +    color: #bbb;
          +    text-transform: uppercase;
          +    letter-spacing: 1px
          +}
          +.autocomplete-suggestions {
          +    border: 1px solid #e4e4e4;
          +    background: #F4F4F4;
          +    cursor: default;
          +    overflow: auto
          +}
          +.autocomplete-suggestion {
          +    padding: 2px 5px;
          +    font-size: 1.2em;
          +    white-space: nowrap;
          +    overflow: hidden
          +}
          +.autocomplete-selected {
          +    background: #f0f0f0
          +}
          +.autocomplete-suggestions strong {
          +    font-weight: normal;
          +    color: #3399ff;
          +    font-weight: bolder
          +}
          +.btn {
          +    border-radius: 3px
          +}
          +a.btn-success,
          +a.btn-primary,
          +a.btn-warning,
          +a.btn-danger {
          +    color: #fff
          +}
          +.btn-success {
          +    background: #26B99A;
          +    border: 1px solid #169F85
          +}
          +.btn-success:hover,
          +.btn-success:focus,
          +.btn-success:active,
          +.btn-success.active,
          +.open .dropdown-toggle.btn-success {
          +    background: #169F85
          +}
          +.btn-dark {
          +    color: #E9EDEF;
          +    background-color: #4B5F71;
          +    border-color: #364B5F
          +}
          +.btn-dark:hover,
          +.btn-dark:focus,
          +.btn-dark:active,
          +.btn-dark.active,
          +.open .dropdown-toggle.btn-dark {
          +    color: #FFFFFF;
          +    background-color: #394D5F;
          +    border-color: #394D5F
          +}
          +.btn-round {
          +    border-radius: 30px
          +}
          +.btn.btn-app {
          +    position: relative;
          +    padding: 15px 5px;
          +    margin: 0 0 10px 10px;
          +    min-width: 80px;
          +    height: 60px;
          +    box-shadow: none;
          +    border-radius: 0;
          +    text-align: center;
          +    color: #666;
          +    border: 1px solid #ddd;
          +    background-color: #fafafa;
          +    font-size: 12px
          +}
          +.btn.btn-app>.fa,
          +.btn.btn-app>.glyphicon,
          +.btn.btn-app>.ion {
          +    font-size: 20px;
          +    display: block
          +}
          +.btn.btn-app:hover {
          +    background: #f4f4f4;
          +    color: #444;
          +    border-color: #aaa
          +}
          +.btn.btn-app:active,
          +.btn.btn-app:focus {
          +    box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
          +}
          +.btn.btn-app>.badge {
          +    position: absolute;
          +    top: -3px;
          +    right: -10px;
          +    font-size: 10px;
          +    font-weight: 400
          +}
          +textarea {
          +    padding: 10px;
          +    vertical-align: top;
          +    width: 200px
          +}
          +textarea:focus {
          +    outline-style: solid;
          +    outline-width: 2px
          +}
          +.btn_ {
          +    display: inline-block;
          +    padding: 3px 9px;
          +    margin-bottom: 0;
          +    font-size: 14px;
          +    line-height: 20px;
          +    text-align: center;
          +    vertical-align: middle;
          +    cursor: pointer;
          +    color: #333333;
          +    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
          +    background-color: #f5f5f5;
          +    background-image: linear-gradient(to bottom, #fff, #e6e6e6);
          +    background-repeat: repeat-x;
          +    filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
          +    border-color: #e6e6e6 #e6e6e6 #bfbfbf;
          +    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
          +    filter: progid: DXImageTransform.Microsoft.gradient(enabled=false);
          +    border: 1px solid #cccccc;
          +    border-bottom-color: #b3b3b3;
          +    border-radius: 4px;
          +    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05)
          +}
          +.bs-glyphicons {
          +    margin: 0 -10px 20px;
          +    overflow: hidden
          +}
          +.bs-glyphicons-list {
          +    padding-left: 0;
          +    list-style: none
          +}
          +.bs-glyphicons li {
          +    float: left;
          +    width: 25%;
          +    height: 115px;
          +    padding: 10px;
          +    font-size: 10px;
          +    line-height: 1.4;
          +    text-align: center;
          +    background-color: #f9f9f9;
          +    border: 1px solid #fff
          +}
          +.bs-glyphicons .glyphicon {
          +    margin-top: 5px;
          +    margin-bottom: 10px;
          +    font-size: 24px
          +}
          +.bs-glyphicons .glyphicon-class {
          +    display: block;
          +    text-align: center;
          +    word-wrap: break-word
          +}
          +.bs-glyphicons li:hover {
          +    color: #fff;
          +    background-color: #1ABB9C
          +}
          +@media (min-width: 768px) {
          +    .bs-glyphicons {
          +        margin-right: 0;
          +        margin-left: 0
          +    }
          +    .bs-glyphicons li {
          +        width: 12.5%;
          +        font-size: 12px
          +    }
          +}
          +.tagsinput {
          +    border: 1px solid #CCC;
          +    background: #FFF;
          +    padding: 6px 6px 0;
          +    width: 300px;
          +    overflow-y: auto
          +}
          +span.tag {
          +    -moz-border-radius: 2px;
          +    -webkit-border-radius: 2px;
          +    display: block;
          +    float: left;
          +    padding: 5px 9px;
          +    text-decoration: none;
          +    background: #1ABB9C;
          +    color: #F1F6F7;
          +    margin-right: 5px;
          +    font-weight: 500;
          +    margin-bottom: 5px;
          +    font-family: helvetica
          +}
          +span.tag a {
          +    color: #F1F6F7 !important
          +}
          +.tagsinput span.tag a {
          +    font-weight: bold;
          +    color: #82ad2b;
          +    text-decoration: none;
          +    font-size: 11px
          +}
          +.tagsinput input {
          +    width: 80px;
          +    margin: 0px;
          +    font-family: helvetica;
          +    font-size: 13px;
          +    border: 1px solid transparent;
          +    padding: 3px;
          +    background: transparent;
          +    color: #000;
          +    outline: 0px
          +}
          +.tagsinput div {
          +    display: block;
          +    float: left
          +}
          +.tags_clear {
          +    clear: both;
          +    width: 100%;
          +    height: 0px
          +}
          +.not_valid {
          +    background: #FBD8DB !important;
          +    color: #90111A !important
          +}
          +ul.bar_tabs {
          +    overflow: visible;
          +    background: #F5F7FA;
          +    height: 25px;
          +    margin: 21px 0 14px;
          +    padding-left: 14px;
          +    position: relative;
          +    z-index: 1;
          +    width: 100%;
          +    border-bottom: 1px solid #E6E9ED
          +}
          +ul.bar_tabs>li {
          +    border: 1px solid #E6E9ED;
          +    color: #333 !important;
          +    margin-top: -17px;
          +    margin-left: 8px;
          +    background: #fff;
          +    border-bottom: none;
          +    border-radius: 4px 4px 0 0
          +}
          +ul.bar_tabs>li.active {
          +    border-right: 6px solid #D3D6DA;
          +    border-top: 0;
          +    margin-top: -15px
          +}
          +ul.bar_tabs>li a {
          +    padding: 10px 17px;
          +    background: #F5F7FA;
          +    margin: 0;
          +    border-top-right-radius: 0
          +}
          +ul.bar_tabs>li a:hover {
          +    border: 1px solid transparent
          +}
          +ul.bar_tabs>li.active a {
          +    border-bottom: none
          +}
          +ul.bar_tabs.right {
          +    padding-right: 14px
          +}
          +ul.bar_tabs.right li {
          +    float: right
          +}
          +a:focus {
          +    outline: none
          +}
          +ul.timeline li {
          +    position: relative;
          +    border-bottom: 1px solid #e8e8e8;
          +    clear: both
          +}
          +.timeline .block {
          +    margin: 0;
          +    border-left: 3px solid #e8e8e8;
          +    overflow: visible;
          +    padding: 10px 15px;
          +    margin-left: 105px
          +}
          +.timeline.widget {
          +    min-width: 0;
          +    max-width: inherit
          +}
          +.timeline.widget .block {
          +    margin-left: 5px
          +}
          +.timeline .tags {
          +    position: absolute;
          +    top: 15px;
          +    left: 0;
          +    width: 84px
          +}
          +.timeline .tag {
          +    display: block;
          +    height: 30px;
          +    font-size: 13px;
          +    padding: 8px
          +}
          +.timeline .tag span {
          +    display: block;
          +    overflow: hidden;
          +    width: 100%;
          +    white-space: nowrap;
          +    text-overflow: ellipsis
          +}
          +.tag {
          +    line-height: 1;
          +    background: #1ABB9C;
          +    color: #fff !important
          +}
          +.tag:after {
          +    content: " ";
          +    height: 30px;
          +    width: 0;
          +    position: absolute;
          +    left: 100%;
          +    top: 0;
          +    margin: 0;
          +    pointer-events: none;
          +    border-top: 14px solid transparent;
          +    border-bottom: 14px solid transparent;
          +    border-left: 11px solid #1ABB9C
          +}
          +.timeline h2.title {
          +    position: relative;
          +    font-size: 16px;
          +    margin: 0
          +}
          +.timeline h2.title:before {
          +    content: "";
          +    position: absolute;
          +    left: -23px;
          +    top: 3px;
          +    display: block;
          +    width: 14px;
          +    height: 14px;
          +    border: 3px solid #d2d3d2;
          +    border-radius: 14px;
          +    background: #f9f9f9
          +}
          +.timeline .byline {
          +    padding: .25em 0
          +}
          +.byline {
          +    -webkit-font-smoothing: antialiased;
          +    font-style: italic;
          +    font-size: .9375em;
          +    line-height: 1.3;
          +    color: #aab6aa
          +}
          +ul.social li {
          +    border: 0
          +}
          +.social-sidebar,
          +.social-body {
          +    float: right
          +}
          +.social-sidebar {
          +    background: #EDEDED;
          +    width: 22%
          +}
          +.social-body {
          +    border: 1px solid #ccc;
          +    width: 78%
          +}
          +.thumb img {
          +    width: 50px;
          +    height: 50px;
          +    border-radius: 50%
          +}
          +.chat .thumb img {
          +    width: 27px;
          +    height: 27px;
          +    border-radius: 50%
          +}
          +.chat .status {
          +    float: left;
          +    margin: 16px 0 0 -16px;
          +    font-size: 14px;
          +    font-weight: bold;
          +    width: 12px;
          +    height: 12px;
          +    display: block;
          +    border: 2px solid #FFF;
          +    z-index: 12312;
          +    border-radius: 50%
          +}
          +.chat .status.online {
          +    background: #1ABB9C
          +}
          +.chat .status.away {
          +    background: #F39C12
          +}
          +.chat .status.offline {
          +    background: #ccc
          +}
          +.chat .media-body {
          +    padding-top: 5px
          +}
          +.dashboard_graph .x_title {
          +    padding: 5px 5px 7px
          +}
          +.dashboard_graph .x_title h3 {
          +    margin: 0;
          +    font-weight: normal
          +}
          +.chart {
          +    position: relative;
          +    display: inline-block;
          +    width: 110px;
          +    height: 110px;
          +    margin-top: 5px;
          +    margin-bottom: 5px;
          +    text-align: center
          +}
          +.chart canvas {
          +    position: absolute;
          +    top: 0;
          +    left: 0
          +}
          +.percent {
          +    display: inline-block;
          +    line-height: 110px;
          +    z-index: 2;
          +    font-size: 18px
          +}
          +.percent:after {
          +    content: '%';
          +    margin-left: 0.1em;
          +    font-size: .8em
          +}
          +.angular {
          +    margin-top: 100px
          +}
          +.angular .chart {
          +    margin-top: 0
          +}
          +.widget {
          +    min-width: 250px;
          +    max-width: 310px
          +}
          +.widget_tally_box .btn-group button {
          +    text-align: center
          +}
          +.widget_tally_box .btn-group button {
          +    color: inherit;
          +    font-weight: 500;
          +    background-color: #f5f5f5;
          +    border: 1px solid #e7e7e7
          +}
          +ul.widget_tally,
          +ul.widget_tally li {
          +    width: 100%
          +}
          +ul.widget_tally li {
          +    padding: 2px 10px;
          +    border-bottom: 1px solid #ECECEC;
          +    padding-bottom: 4px
          +}
          +ul.widget_tally .month {
          +    width: 70%;
          +    float: left
          +}
          +ul.widget_tally .count {
          +    width: 30%;
          +    float: left;
          +    text-align: right
          +}
          +.pie_bg {
          +    border-bottom: 1px solid rgba(101, 204, 182, 0.16);
          +    padding-bottom: 15px;
          +    border-radius: 4px;
          +    filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
          +    filter: progid: DXImageTransform.Microsoft.gradient(enabled=false);
          +    padding-bottom: 10px;
          +    box-shadow: 0 4px 6px -6px #222
          +}
          +.widget_tally_box .flex {
          +    display: -ms-flexbox;
          +    display: flex
          +}
          +ul.widget_profile_box {
          +    width: 100%;
          +    height: 42px;
          +    padding: 3px;
          +    background: #ececec;
          +    margin-top: 40px;
          +    margin-left: 1px
          +}
          +ul.widget_profile_box li:first-child {
          +    width: 25%;
          +    float: left
          +}
          +ul.widget_profile_box li:first-child a {
          +    float: left
          +}
          +ul.widget_profile_box li:last-child {
          +    width: 25%;
          +    float: right
          +}
          +ul.widget_profile_box li:last-child a {
          +    float: right
          +}
          +ul.widget_profile_box li a {
          +    font-size: 22px;
          +    text-align: center;
          +    width: 35px;
          +    height: 35px;
          +    border: 1px solid rgba(52, 73, 94, 0.44);
          +    display: block;
          +    border-radius: 50%;
          +    padding: 0px
          +}
          +ul.widget_profile_box li a:hover {
          +    color: #1ABB9C !important;
          +    border: 1px solid #26b99a
          +}
          +ul.widget_profile_box li .profile_img {
          +    width: 85px;
          +    height: 85px;
          +    margin: 0;
          +    margin-top: -28px
          +}
          +.widget_tally_box p,
          +.widget_tally_box span {
          +    text-align: center
          +}
          +.widget_tally_box .name {
          +    text-align: center;
          +    margin: 25px
          +}
          +.widget_tally_box .name_title {
          +    text-align: center;
          +    margin: 5px
          +}
          +.widget_tally_box ul.legend {
          +    margin: 0
          +}
          +.widget_tally_box ul.legend p,
          +.widget_tally_box ul.legend span {
          +    text-align: left
          +}
          +.widget_tally_box ul.legend li .icon {
          +    font-size: 20px;
          +    float: left;
          +    width: 14px
          +}
          +.widget_tally_box ul.legend li .name {
          +    font-size: 14px;
          +    margin: 5px 0 0 14px;
          +    text-overflow: ellipsis;
          +    float: left
          +}
          +.widget_tally_box ul.legend p {
          +    display: inline-block;
          +    margin: 0
          +}
          +.widget_tally_box ul.verticle_bars li {
          +    height: 140px;
          +    width: 23%
          +}
          +.widget .verticle_bars li .progress.vertical.progress_wide {
          +    width: 65%
          +}
          +ul.count2 {
          +    width: 100%;
          +    margin-left: 1px;
          +    border: 1px solid #ddd;
          +    border-left: 0;
          +    border-right: 0;
          +    padding: 10px 0
          +}
          +ul.count2 li {
          +    width: 30%;
          +    text-align: center
          +}
          +ul.count2 li h3 {
          +    font-weight: 400;
          +    margin: 0
          +}
          +ul.count2 li span {
          +    font-weight: 300
          +}
          +.divider {
          +    border-bottom: 1px solid #ddd;
          +    margin: 10px
          +}
          +.divider-dashed {
          +    border-top: 1px dashed #e7eaec;
          +    background-color: #ffffff;
          +    height: 1px;
          +    margin: 10px 0
          +}
          +ul.messages {
          +    padding: 0;
          +    list-style: none
          +}
          +ul.messages li,
          +.tasks li {
          +    border-bottom: 1px dotted #e6e6e6;
          +    padding: 8px 0
          +}
          +ul.messages li img.avatar,
          +img.avatar {
          +    height: 32px;
          +    width: 32px;
          +    float: left;
          +    display: inline-block;
          +    border-radius: 2px;
          +    padding: 2px;
          +    background: #f7f7f7;
          +    border: 1px solid #e6e6e6
          +}
          +ul.messages li .message_date {
          +    float: right;
          +    text-align: right
          +}
          +ul.messages li .message_wrapper {
          +    margin-left: 50px;
          +    margin-right: 40px
          +}
          +ul.messages li .message_wrapper h4.heading {
          +    font-weight: 600;
          +    margin: 0;
          +    cursor: pointer;
          +    margin-bottom: 10px;
          +    line-height: 100%
          +}
          +ul.messages li .message_wrapper blockquote {
          +    padding: 0px 10px;
          +    margin: 0;
          +    border-left: 5px solid #eee
          +}
          +ul.user_data li {
          +    margin-bottom: 6px
          +}
          +ul.user_data li p {
          +    margin-bottom: 0
          +}
          +ul.user_data li .progress {
          +    width: 90%
          +}
          +.project_progress .progress {
          +    margin-bottom: 3px !important;
          +    margin-top: 5px
          +}
          +.projects .list-inline {
          +    margin: 0
          +}
          +.profile_title {
          +    background: #F5F7FA;
          +    border: 0;
          +    padding: 7px 0;
          +    display: -ms-flexbox;
          +    display: flex
          +}
          +ul.stats-overview {
          +    border-bottom: 1px solid #e8e8e8;
          +    padding-bottom: 10px;
          +    margin-bottom: 10px
          +}
          +ul.stats-overview li {
          +    display: inline-block;
          +    text-align: center;
          +    padding: 0 15px;
          +    width: 30%;
          +    font-size: 14px;
          +    border-right: 1px solid #e8e8e8
          +}
          +ul.stats-overview li:last-child {
          +    border-right: 0
          +}
          +ul.stats-overview li .name {
          +    font-size: 12px
          +}
          +ul.stats-overview li .value {
          +    font-size: 14px;
          +    font-weight: bold;
          +    display: block
          +}
          +ul.stats-overview li:first-child {
          +    padding-left: 0
          +}
          +ul.project_files li {
          +    margin-bottom: 5px
          +}
          +ul.project_files li a i {
          +    width: 20px
          +}
          +.project_detail p {
          +    margin-bottom: 10px
          +}
          +.project_detail p.title {
          +    font-weight: bold;
          +    margin-bottom: 0
          +}
          +.avatar img {
          +    border-radius: 50%;
          +    max-width: 45px
          +}
          +.pricing {
          +    background: #fff
          +}
          +.pricing .title {
          +    background: #1ABB9C;
          +    height: 110px;
          +    color: #fff;
          +    padding: 15px 0 0;
          +    text-align: center
          +}
          +.pricing .title h2 {
          +    text-transform: capitalize;
          +    font-size: 18px;
          +    border-radius: 5px 5px 0 0;
          +    margin: 0;
          +    font-weight: 400
          +}
          +.pricing .title h1 {
          +    font-size: 30px;
          +    margin: 12px
          +}
          +.pricing .title span {
          +    background: rgba(51, 51, 51, 0.28);
          +    padding: 2px 5px
          +}
          +.pricing_features {
          +    background: #FAFAFA;
          +    padding: 20px 15px;
          +    min-height: 230px;
          +    font-size: 13.5px
          +}
          +.pricing_features ul li {
          +    margin-top: 10px
          +}
          +.pricing_footer {
          +    padding: 10px 15px;
          +    background-color: #f5f5f5;
          +    border-top: 1px solid #ddd;
          +    text-align: center;
          +    border-bottom-right-radius: 3px;
          +    border-bottom-left-radius: 3px
          +}
          +.pricing_footer p {
          +    font-size: 13px;
          +    padding: 10px 0 2px;
          +    display: block
          +}
          +.ui-ribbon-container {
          +    position: relative
          +}
          +.ui-ribbon-container .ui-ribbon-wrapper {
          +    position: absolute;
          +    overflow: hidden;
          +    width: 85px;
          +    height: 88px;
          +    top: -3px;
          +    right: -3px
          +}
          +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon {
          +    background-color: #5b90bf
          +}
          +.ui-ribbon-container .ui-ribbon {
          +    position: relative;
          +    display: block;
          +    text-align: center;
          +    font-size: 15px;
          +    font-weight: 700;
          +    color: #fff;
          +    transform: rotate(45deg);
          +    padding: 7px 0;
          +    left: -5px;
          +    top: 15px;
          +    width: 120px;
          +    line-height: 20px;
          +    background-color: #555;
          +    box-shadow: 0 0 3px rgba(0, 0, 0, 0.3)
          +}
          +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:after,
          +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:before {
          +    border-top: 2px solid #5b90bf
          +}
          +.ui-ribbon-container .ui-ribbon:before {
          +    left: 0;
          +    bottom: -1px
          +}
          +.ui-ribbon-container .ui-ribbon:before {
          +    right: 0
          +}
          +.ui-ribbon-container .ui-ribbon:after,
          +.ui-ribbon-container .ui-ribbon:before {
          +    position: absolute;
          +    content: " ";
          +    line-height: 0;
          +    border-top: 2px solid #555;
          +    border-left: 2px solid transparent;
          +    border-right: 2px solid transparent
          +}
          +.thumbnail .image {
          +    height: 120px;
          +    overflow: hidden
          +}
          +.caption {
          +    padding: 9px 5px;
          +    background: #F7F7F7
          +}
          +.caption p {
          +    margin-bottom: 5px
          +}
          +.thumbnail {
          +    height: 190px;
          +    overflow: hidden
          +}
          +.view {
          +    overflow: hidden;
          +    position: relative;
          +    text-align: center;
          +    box-shadow: 1px 1px 2px #e6e6e6;
          +    cursor: default
          +}
          +.view .mask,
          +.view .content {
          +    position: absolute;
          +    width: 100%;
          +    overflow: hidden;
          +    top: 0;
          +    left: 0
          +}
          +.view img {
          +    display: block;
          +    position: relative
          +}
          +.view .tools {
          +    text-transform: uppercase;
          +    color: #fff;
          +    text-align: center;
          +    position: relative;
          +    font-size: 17px;
          +    padding: 3px;
          +    background: rgba(0, 0, 0, 0.35);
          +    margin: 43px 0 0 0
          +}
          +.mask.no-caption .tools {
          +    margin: 90px 0 0 0
          +}
          +.view .tools a {
          +    display: inline-block;
          +    color: #FFF;
          +    font-size: 18px;
          +    font-weight: 400;
          +    padding: 0 4px
          +}
          +.view p {
          +    font-family: Georgia, serif;
          +    font-style: italic;
          +    font-size: 12px;
          +    position: relative;
          +    color: #fff;
          +    padding: 10px 20px 20px;
          +    text-align: center
          +}
          +.view a.info {
          +    display: inline-block;
          +    text-decoration: none;
          +    padding: 7px 14px;
          +    background: #000;
          +    color: #fff;
          +    text-transform: uppercase;
          +    box-shadow: 0 0 1px #000
          +}
          +.view-first img {
          +    transition: all 0.2s linear
          +}
          +.view-first .mask {
          +    opacity: 0;
          +    background-color: rgba(0, 0, 0, 0.5);
          +    transition: all 0.4s ease-in-out
          +}
          +.view-first .tools {
          +    transform: translateY(-100px);
          +    opacity: 0;
          +    transition: all 0.2s ease-in-out
          +}
          +.view-first p {
          +    transform: translateY(100px);
          +    opacity: 0;
          +    transition: all 0.2s linear
          +}
          +.view-first:hover img {
          +    transform: scale(1.1)
          +}
          +.view-first:hover .mask {
          +    opacity: 1
          +}
          +.view-first:hover .tools,
          +.view-first:hover p {
          +    opacity: 1;
          +    transform: translateY(0px)
          +}
          +.view-first:hover p {
          +    transition-delay: 0.1s
          +}
          +.form-group.has-feedback span {
          +    display: block !important;
          +}
          +.form-group .btn {
          +    margin-bottom: -6px;
          +}
          +
          +.input-group-btn .btn { margin-bottom:0; }
          +
          +/*!
          + * bootstrap-vertical-tabs - v1.2.1
          + * https://dbtek.github.io/bootstrap-vertical-tabs
          + * 2014-11-07
          + * Copyright (c) 2014 İsmail Demirbilek
          + * License: MIT
          + */
          +
          +.tabs-left,
          +.tabs-right {
          +    border-bottom: none;
          +    padding-top: 2px
          +}
          +.tabs-left {
          +    border-right: 1px solid #F7F7F7
          +}
          +.tabs-right {
          +    border-left: 1px solid #F7F7F7
          +}
          +.tabs-left>li,
          +.tabs-right>li {
          +    float: none;
          +    margin-bottom: 2px
          +}
          +.tabs-left>li {
          +    margin-right: -1px
          +}
          +.tabs-right>li {
          +    margin-left: -1px
          +}
          +.tabs-left>li.active>a,
          +.tabs-left>li.active>a:hover,
          +.tabs-left>li.active>a:focus {
          +    border-bottom-color: #F7F7F7;
          +    border-right-color: transparent
          +}
          +.tabs-right>li.active>a,
          +.tabs-right>li.active>a:hover,
          +.tabs-right>li.active>a:focus {
          +    border-bottom: 1px solid #F7F7F7;
          +    border-left-color: transparent
          +}
          +.tabs-left>li>a {
          +    border-radius: 4px 0 0 4px;
          +    margin-right: 0;
          +    display: block;
          +    background: #F7F7F7;
          +    text-overflow: ellipsis;
          +    overflow: hidden
          +}
          +.tabs-right>li>a {
          +    border-radius: 0 4px 4px 0;
          +    margin-right: 0;
          +    background: #F7F7F7;
          +    text-overflow: ellipsis;
          +    overflow: hidden
          +}
          +.sideways {
          +    margin-top: 50px;
          +    border: none;
          +    position: relative
          +}
          +.sideways>li {
          +    height: 20px;
          +    width: 120px;
          +    margin-bottom: 100px
          +}
          +.sideways>li>a {
          +    border-bottom: 1px solid #ddd;
          +    border-right-color: transparent;
          +    text-align: center;
          +    border-radius: 4px 4px 0px 0px
          +}
          +.sideways>li.active>a,
          +.sideways>li.active>a:hover,
          +.sideways>li.active>a:focus {
          +    border-bottom-color: transparent;
          +    border-right-color: #ddd;
          +    border-left-color: #ddd
          +}
          +.sideways.tabs-left {
          +    left: -50px
          +}
          +.sideways.tabs-right {
          +    right: -50px
          +}
          +.sideways.tabs-right>li {
          +    transform: rotate(90deg)
          +}
          +.sideways.tabs-left>li {
          +    transform: rotate(-90deg)
          +}
          +.morris-hover {
          +    position: absolute;
          +    z-index: 1000
          +}
          +.morris-hover.morris-default-style {
          +    padding: 6px;
          +    color: #666;
          +    background: rgba(243, 242, 243, 0.8);
          +    border: solid 2px rgba(195, 194, 196, 0.8);
          +    font-family: sans-serif;
          +    font-size: 12px;
          +    text-align: center
          +}
          +.morris-hover.morris-default-style .morris-hover-row-label {
          +    font-weight: bold;
          +    margin: 0.25em 0
          +}
          +.morris-hover.morris-default-style .morris-hover-point {
          +    white-space: nowrap;
          +    margin: 0.1em 0
          +}
          +.price {
          +    font-size: 40px;
          +    font-weight: 400;
          +    color: #26B99A;
          +    margin: 0
          +}
          +.prod_title {
          +    border-bottom: 1px solid #DFDFDF;
          +    padding-bottom: 5px;
          +    margin: 30px 0;
          +    font-size: 20px;
          +    font-weight: 400
          +}
          +.product-image img {
          +    width: 90%
          +}
          +.prod_color li {
          +    margin: 0 10px
          +}
          +.prod_color li p {
          +    margin-bottom: 0
          +}
          +.prod_size li {
          +    padding: 0
          +}
          +.prod_color .color {
          +    width: 25px;
          +    height: 25px;
          +    border: 2px solid rgba(51, 51, 51, 0.28) !important;
          +    padding: 2px;
          +    border-radius: 50px
          +}
          +.product_gallery a {
          +    width: 100px;
          +    height: 100px;
          +    float: left;
          +    margin: 10px;
          +    border: 1px solid #e5e5e5
          +}
          +.product_gallery a img {
          +    width: 100%;
          +    margin-top: 15px
          +}
          +.product_price {
          +    margin: 20px 0;
          +    padding: 5px 10px;
          +    background-color: #FFFFFF;
          +    text-align: left;
          +    border: 2px dashed #E0E0E0
          +}
          +.price-tax {
          +    font-size: 18px
          +}
          +.product_social {
          +    margin: 20px 0
          +}
          +.product_social ul li a i {
          +    font-size: 35px
          +}
          +.login {
          +    background: #F7F7F7
          +}
          +.login .fa-paw {
          +    font-size: 26px
          +}
          +a.hiddenanchor {
          +    display: none
          +}
          +.login_wrapper {
          +    right: 0px;
          +    margin: 0px auto;
          +    margin-top: 5%;
          +    max-width: 350px;
          +    position: relative
          +}
          +.registration_form,
          +.login_form {
          +    position: absolute;
          +    top: 0px;
          +    width: 100%
          +}
          +.registration_form {
          +    z-index: 21;
          +    opacity: 0;
          +    width: 100%
          +}
          +.login_form {
          +    z-index: 22
          +}
          +#signup:target ~ .login_wrapper .registration_form,
          +#signin:target ~ .login_wrapper .login_form {
          +    z-index: 22;
          +    animation-name: fadeInLeft;
          +    animation-delay: .1s
          +}
          +#signup:target ~ .login_wrapper .login_form,
          +#signin:target ~ .login_wrapper .registration_form {
          +    animation-name: fadeOutLeft
          +}
          +.animate {
          +    -webkit-animation-duration: 0.5s;
          +    -webkit-animation-timing-function: ease;
          +    -webkit-animation-fill-mode: both;
          +    -moz-animation-duration: 0.5s;
          +    -moz-animation-timing-function: ease;
          +    -moz-animation-fill-mode: both;
          +    -o-animation-duration: 0.5s;
          +    -o-animation-timing-function: ease;
          +    -o-animation-fill-mode: both;
          +    -ms-animation-duration: 0.5s;
          +    -ms-animation-timing-function: ease;
          +    -ms-animation-fill-mode: both;
          +    animation-duration: 0.5s;
          +    animation-timing-function: ease;
          +    animation-fill-mode: both
          +}
          +.login_box {
          +    padding: 20px;
          +    margin: auto
          +}
          +.left {
          +    float: left
          +}
          +.alignleft {
          +    float: left;
          +    margin-right: 15px
          +}
          +.alignright {
          +    float: right;
          +    margin-left: 15px
          +}
          +.clearfix:after,
          +form:after {
          +    content: ".";
          +    display: block;
          +    height: 0;
          +    clear: both;
          +    visibility: hidden
          +}
          +.login_content {
          +    margin: 0 auto;
          +    padding: 25px 0 0;
          +    position: relative;
          +    text-align: center;
          +    text-shadow: 0 1px 0 #fff;
          +    min-width: 280px
          +}
          +.login_content a,
          +.login_content .btn-default:hover {
          +    text-decoration: none
          +}
          +.login_content a:hover {
          +    text-decoration: underline
          +}
          +.login_content h1 {
          +    font: normal 25px Helvetica, Arial, sans-serif;
          +    letter-spacing: -0.05em;
          +    line-height: 20px;
          +    margin: 10px 0 30px
          +}
          +.login_content h1:before,
          +.login_content h1:after {
          +    content: "";
          +    height: 1px;
          +    position: absolute;
          +    top: 10px;
          +    width: 27%
          +}
          +.login_content h1:after {
          +    background: #7e7e7e;
          +    background: linear-gradient(left, #7e7e7e 0%, #fff 100%);
          +    right: 0
          +}
          +.login_content h1:before {
          +    background: #7e7e7e;
          +    background: linear-gradient(right, #7e7e7e 0%, #fff 100%);
          +    left: 0
          +}
          +.login_content h1:before,
          +.login_content h1:after {
          +    content: "";
          +    height: 1px;
          +    position: absolute;
          +    top: 10px;
          +    width: 20%
          +}
          +.login_content h1:after {
          +    background: #7e7e7e;
          +    background: linear-gradient(left, #7e7e7e 0%, #fff 100%);
          +    right: 0
          +}
          +.login_content h1:before {
          +    background: #7e7e7e;
          +    background: linear-gradient(right, #7e7e7e 0%, #fff 100%);
          +    left: 0
          +}
          +.login_content form {
          +    margin: 20px 0;
          +    position: relative
          +}
          +.login_content form input[type="text"],
          +.login_content form input[type="email"],
          +.login_content form input[type="password"] {
          +    border-radius: 3px;
          +    -ms-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset;
          +    -o-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset;
          +    box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset;
          +    border: 1px solid #c8c8c8;
          +    color: #777;
          +    margin: 0 0 10px;
          +    width: 100%
          +}
          +.login_content form input[type="text"]:focus,
          +.login_content form input[type="email"]:focus,
          +.login_content form input[type="password"]:focus {
          +    -ms-box-shadow: 0 0 2px #ed1c24 inset;
          +    -o-box-shadow: 0 0 2px #ed1c24 inset;
          +    box-shadow: 0 0 2px #A97AAD inset;
          +    background-color: #fff;
          +    border: 1px solid #A878AF;
          +    outline: none
          +}
          +#username {
          +    background-position: 10px 10px !important
          +}
          +#password {
          +    background-position: 10px -53px !important
          +}
          +.login_content form div a {
          +    font-size: 12px;
          +    margin: 10px 15px 0 0
          +}
          +.reset_pass {
          +    margin-top: 10px !important
          +}
          +.login_content div .reset_pass {
          +    margin-top: 13px !important;
          +    margin-right: 39px;
          +    float: right
          +}
          +.separator {
          +    border-top: 1px solid #D8D8D8;
          +    margin-top: 10px;
          +    padding-top: 10px
          +}
          +.button {
          +    background: #f7f9fa;
          +    background: linear-gradient(top, #f7f9fa 0%, #f0f0f0 100%);
          +    filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0', GradientType=0);
          +    -ms-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
          +    -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
          +    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
          +    border-radius: 0 0 5px 5px;
          +    border-top: 1px solid #CFD5D9;
          +    padding: 15px 0
          +}
          +.login_content form input[type="submit"],
          +#content form .submit {
          +    float: left;
          +    margin-left: 38px
          +}
          +.button a {
          +    background: url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat;
          +    color: #7E7E7E;
          +    font-size: 17px;
          +    padding: 2px 0 2px 40px;
          +    text-decoration: none;
          +    transition: all 0.3s ease
          +}
          +.button a:hover {
          +    background-position: 0 -135px;
          +    color: #00aeef
          +}
          +header {
          +    width: 100%
          +}
          +#nprogress .bar {
          +    background: #1ABB9C
          +}
          +#nprogress .peg {
          +    box-shadow: 0 0 10px #1ABB9C, 0 0 5px #1ABB9C
          +}
          +#nprogress .spinner-icon {
          +    border-top-color: #1ABB9C;
          +    border-left-color: #1ABB9C
          +}
          +.editor-wrapper {
          +    min-height: 250px;
          +    background-color: white;
          +    border-collapse: separate;
          +    border: 1px solid #ccc;
          +    padding: 4px;
          +    box-sizing: content-box;
          +    box-shadow: rgba(0, 0, 0, 0.07451) 0px 1px 1px 0px inset;
          +    border-top-right-radius: 3px;
          +    border-bottom-right-radius: 3px;
          +    border-bottom-left-radius: 3px;
          +    border-top-left-radius: 3px;
          +    overflow: scroll;
          +    outline: none
          +}
          +.voiceBtn {
          +    width: 20px;
          +    color: transparent;
          +    background-color: transparent;
          +    transform: scale(2, 2);
          +    -webkit-transform: scale(2, 2);
          +    -moz-transform: scale(2, 2);
          +    border: transparent;
          +    cursor: pointer;
          +    box-shadow: none;
          +    -webkit-box-shadow: none
          +}
          +div[data-role="editor-toolbar"] {
          +    -webkit-user-select: none;
          +    -moz-user-select: none;
          +    -ms-user-select: none;
          +    user-select: none
          +}
          +.dropdown-menu a {
          +    cursor: pointer
          +}
          +.select2-container--default .select2-selection--single,
          +.select2-container--default .select2-selection--multiple {
          +    background-color: #fff;
          +    border: 1px solid #ccc;
          +    border-radius: 0;
          +    min-height: 38px
          +}
          +.select2-container--default .select2-selection--single .select2-selection__rendered {
          +    color: #73879C;
          +    padding-top: 5px
          +}
          +.select2-container--default .select2-selection--multiple .select2-selection__rendered {
          +    padding-top: 3px
          +}
          +.select2-container--default .select2-selection--single .select2-selection__arrow {
          +    height: 36px
          +}
          +.select2-container--default .select2-selection--multiple .select2-selection__choice,
          +.select2-container--default .select2-selection--multiple .select2-selection__clear {
          +    margin-top: 2px;
          +    border: none;
          +    border-radius: 0;
          +    padding: 3px 5px
          +}
          +.select2-container--default.select2-container--focus .select2-selection--multiple {
          +    border: 1px solid #ccc
          +}
          +.switchery {
          +    width: 32px;
          +    height: 20px
          +}
          +.switchery>small {
          +    width: 20px;
          +    height: 20px
          +}
          +fieldset {
          +    border: none;
          +    margin: 0;
          +    padding: 0
          +}
          +.cropper .img-container,
          +.cropper .img-preview {
          +    background-color: #f7f7f7;
          +    width: 100%;
          +    text-align: center
          +}
          +.cropper .img-container {
          +    min-height: 200px;
          +    max-height: 516px;
          +    margin-bottom: 20px
          +}
          +@media (min-width: 768px) {
          +    .cropper .img-container {
          +        min-height: 516px
          +    }
          +}
          +.cropper .img-container>img {
          +    max-width: 100%
          +}
          +.cropper .docs-preview {
          +    margin-right: -15px
          +}
          +.cropper .img-preview {
          +    float: left;
          +    margin-right: 10px;
          +    margin-bottom: 10px;
          +    overflow: hidden
          +}
          +.cropper .img-preview>img {
          +    max-width: 100%
          +}
          +.cropper .preview-lg {
          +    width: 263px;
          +    height: 148px
          +}
          +.cropper .preview-md {
          +    width: 139px;
          +    height: 78px
          +}
          +.cropper .preview-sm {
          +    width: 69px;
          +    height: 39px
          +}
          +.cropper .preview-xs {
          +    width: 35px;
          +    height: 20px;
          +    margin-right: 0
          +}
          +.cropper .docs-data>.input-group {
          +    margin-bottom: 10px
          +}
          +.cropper .docs-data>.input-group>label {
          +    min-width: 80px
          +}
          +.cropper .docs-data>.input-group>span {
          +    min-width: 50px
          +}
          +.cropper .docs-buttons>.btn,
          +.cropper .docs-buttons>.btn-group,
          +.cropper .docs-buttons>.form-control {
          +    margin-right: 5px;
          +    margin-bottom: 10px
          +}
          +.cropper .docs-toggles>.btn,
          +.cropper .docs-toggles>.btn-group,
          +.cropper .docs-toggles>.dropdown {
          +    margin-bottom: 10px
          +}
          +.cropper .docs-tooltip {
          +    display: block;
          +    margin: -6px -12px;
          +    padding: 6px 12px
          +}
          +.cropper .docs-tooltip>.icon {
          +    margin: 0 -3px;
          +    vertical-align: top
          +}
          +.cropper .tooltip-inner {
          +    white-space: normal
          +}
          +.cropper .btn-upload .tooltip-inner,
          +.cropper .btn-toggle .tooltip-inner {
          +    white-space: nowrap
          +}
          +.cropper .btn-toggle {
          +    padding: 6px
          +}
          +.cropper .btn-toggle>.docs-tooltip {
          +    margin: -6px;
          +    padding: 6px
          +}
          +@media (max-width: 400px) {
          +    .cropper .btn-group-crop {
          +        margin-right: -15px !important
          +    }
          +    .cropper .btn-group-crop>.btn {
          +        padding-left: 5px;
          +        padding-right: 5px
          +    }
          +    .cropper .btn-group-crop .docs-tooltip {
          +        margin-left: -5px;
          +        margin-right: -5px;
          +        padding-left: 5px;
          +        padding-right: 5px
          +    }
          +}
          +.cropper .docs-options .dropdown-menu {
          +    width: 100%
          +}
          +.cropper .docs-options .dropdown-menu>li {
          +    padding: 3px 20px
          +}
          +.cropper .docs-options .dropdown-menu>li:hover {
          +    background-color: #f7f7f7
          +}
          +.cropper .docs-options .dropdown-menu>li>label {
          +    display: block
          +}
          +.cropper .docs-cropped .modal-body {
          +    text-align: center
          +}
          +.cropper .docs-cropped .modal-body>img,
          +.cropper .docs-cropped .modal-body>canvas {
          +    max-width: 100%
          +}
          +.cropper .docs-diagram .modal-dialog {
          +    max-width: 352px
          +}
          +.cropper .docs-cropped canvas {
          +    max-width: 100%
          +}
          +.form_wizard .stepContainer {
          +    display: block;
          +    position: relative;
          +    margin: 0;
          +    padding: 0;
          +    border: 0 solid #CCC;
          +    overflow-x: hidden
          +}
          +.wizard_horizontal ul.wizard_steps {
          +    display: table;
          +    list-style: none;
          +    position: relative;
          +    width: 100%;
          +    margin: 0 0 20px
          +}
          +.wizard_horizontal ul.wizard_steps li {
          +    display: table-cell;
          +    text-align: center
          +}
          +.wizard_horizontal ul.wizard_steps li a,
          +.wizard_horizontal ul.wizard_steps li:hover {
          +    display: block;
          +    position: relative;
          +    -moz-opacity: 1;
          +    filter: alpha(opacity=100);
          +    opacity: 1;
          +    color: #666
          +}
          +.wizard_horizontal ul.wizard_steps li a:before {
          +    content: "";
          +    position: absolute;
          +    height: 4px;
          +    background: #ccc;
          +    top: 20px;
          +    width: 100%;
          +    z-index: 4;
          +    left: 0
          +}
          +.wizard_horizontal ul.wizard_steps li a.disabled .step_no {
          +    background: #ccc
          +}
          +.wizard_horizontal ul.wizard_steps li a .step_no {
          +    width: 40px;
          +    height: 40px;
          +    line-height: 40px;
          +    border-radius: 100px;
          +    display: block;
          +    margin: 0 auto 5px;
          +    font-size: 16px;
          +    text-align: center;
          +    position: relative;
          +    z-index: 5
          +}
          +.wizard_horizontal ul.wizard_steps li a.selected:before,
          +.step_no {
          +    background: #34495E;
          +    color: #fff
          +}
          +.wizard_horizontal ul.wizard_steps li a.done:before,
          +.wizard_horizontal ul.wizard_steps li a.done .step_no {
          +    background: #1ABB9C;
          +    color: #fff
          +}
          +.wizard_horizontal ul.wizard_steps li:first-child a:before {
          +    left: 50%
          +}
          +.wizard_horizontal ul.wizard_steps li:last-child a:before {
          +    right: 50%;
          +    width: 50%;
          +    left: auto
          +}
          +.wizard_verticle .stepContainer {
          +    width: 80%;
          +    float: left;
          +    padding: 0 10px
          +}
          +.actionBar {
          +    width: 100%;
          +    border-top: 1px solid #ddd;
          +    padding: 10px 5px;
          +    text-align: right;
          +    margin-top: 10px
          +}
          +.actionBar .buttonDisabled {
          +    cursor: not-allowed;
          +    pointer-events: none;
          +    opacity: .65;
          +    filter: alpha(opacity=65);
          +    box-shadow: none
          +}
          +.actionBar a {
          +    margin: 0 3px
          +}
          +.wizard_verticle .wizard_content {
          +    width: 80%;
          +    float: left;
          +    padding-left: 20px
          +}
          +.wizard_verticle ul.wizard_steps {
          +    display: table;
          +    list-style: none;
          +    position: relative;
          +    width: 20%;
          +    float: left;
          +    margin: 0 0 20px
          +}
          +.wizard_verticle ul.wizard_steps li {
          +    display: list-item;
          +    text-align: center
          +}
          +.wizard_verticle ul.wizard_steps li a {
          +    height: 80px
          +}
          +.wizard_verticle ul.wizard_steps li a:first-child {
          +    margin-top: 20px
          +}
          +.wizard_verticle ul.wizard_steps li a,
          +.wizard_verticle ul.wizard_steps li:hover {
          +    display: block;
          +    position: relative;
          +    -moz-opacity: 1;
          +    filter: alpha(opacity=100);
          +    opacity: 1;
          +    color: #666
          +}
          +.wizard_verticle ul.wizard_steps li a:before {
          +    content: "";
          +    position: absolute;
          +    height: 100%;
          +    background: #ccc;
          +    top: 20px;
          +    width: 4px;
          +    z-index: 4;
          +    left: 49%
          +}
          +.wizard_verticle ul.wizard_steps li a.disabled .step_no {
          +    background: #ccc
          +}
          +.wizard_verticle ul.wizard_steps li a .step_no {
          +    width: 40px;
          +    height: 40px;
          +    line-height: 40px;
          +    border-radius: 100px;
          +    display: block;
          +    margin: 0 auto 5px;
          +    font-size: 16px;
          +    text-align: center;
          +    position: relative;
          +    z-index: 5
          +}
          +.wizard_verticle ul.wizard_steps li a.selected:before,
          +.step_no {
          +    background: #34495E;
          +    color: #fff
          +}
          +.wizard_verticle ul.wizard_steps li a.done:before,
          +.wizard_verticle ul.wizard_steps li a.done .step_no {
          +    background: #1ABB9C;
          +    color: #fff
          +}
          +.wizard_verticle ul.wizard_steps li:first-child a:before {
          +    left: 49%
          +}
          +.wizard_verticle ul.wizard_steps li:last-child a:before {
          +    left: 49%;
          +    left: auto;
          +    width: 0
          +}
          +.form_wizard .loader {
          +    display: none
          +}
          +.form_wizard .msgBox {
          +    display: none
          +}
          +.progress {
          +    border-radius: 0
          +}
          +.progress-bar-info {
          +    background-color: #3498DB
          +}
          +.progress-bar-success {
          +    background-color: #26B99A
          +}
          +.progress_summary .progress {
          +    margin: 5px 0 12px !important
          +}
          +.progress_summary .row {
          +    margin-bottom: 5px
          +}
          +.progress_summary .row .col-xs-2 {
          +    padding: 0
          +}
          +.progress_summary .more_info span {
          +    text-align: right;
          +    float: right
          +}
          +.progress_summary .data span {
          +    text-align: right;
          +    float: right
          +}
          +.progress_summary p {
          +    margin-bottom: 3px;
          +    width: 100%
          +}
          +.progress_title .left {
          +    float: left;
          +    text-align: left
          +}
          +.progress_title .right {
          +    float: right;
          +    text-align: right;
          +    font-weight: 300
          +}
          +.progress.progress_sm {
          +    border-radius: 0;
          +    margin-bottom: 18px;
          +    height: 10px !important
          +}
          +.progress.progress_sm .progress-bar {
          +    height: 10px !important
          +}
          +.dashboard_graph p {
          +    margin: 0 0 4px
          +}
          +ul.verticle_bars {
          +    width: 100%
          +}
          +ul.verticle_bars li {
          +    width: 23%;
          +    height: 200px;
          +    margin: 0
          +}
          +.progress.vertical.progress_wide {
          +    width: 35px
          +}
          +.alert-success {
          +    color: #ffffff;
          +    background-color: rgba(38, 185, 154, 0.88);
          +    border-color: rgba(38, 185, 154, 0.88)
          +}
          +.alert-info {
          +    color: #E9EDEF;
          +    background-color: rgba(52, 152, 219, 0.88);
          +    border-color: rgba(52, 152, 219, 0.88)
          +}
          +.alert-warning {
          +    color: #E9EDEF;
          +    background-color: rgba(243, 156, 18, 0.88);
          +    border-color: rgba(243, 156, 18, 0.88)
          +}
          +.alert-danger,
          +.alert-error {
          +    color: #E9EDEF;
          +    background-color: rgba(231, 76, 60, 0.88);
          +    border-color: rgba(231, 76, 60, 0.88)
          +}
          +.ui-pnotify.dark .ui-pnotify-container {
          +    color: #E9EDEF;
          +    background-color: rgba(52, 73, 94, 0.88);
          +    border-color: rgba(52, 73, 94, 0.88)
          +}
          +.custom-notifications {
          +    position: fixed;
          +    margin: 15px;
          +    right: 0;
          +    float: right;
          +    width: 400px;
          +    z-index: 4000;
          +    bottom: 0
          +}
          +ul.notifications {
          +    float: right;
          +    display: block;
          +    margin-bottom: 7px;
          +    padding: 0;
          +    width: 100%
          +}
          +.notifications li {
          +    float: right;
          +    margin: 3px;
          +    width: 36px;
          +    box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3)
          +}
          +.notifications li:last-child {
          +    margin-left: 0
          +}
          +.notifications a {
          +    display: block;
          +    text-align: center;
          +    text-decoration: none;
          +    text-transform: uppercase;
          +    padding: 9px 8px
          +}
          +.tabbed_notifications .text {
          +    padding: 5px 15px;
          +    height: 140px;
          +    border-radius: 7px;
          +    box-shadow: 6px 6px 6px rgba(0, 0, 0, 0.3)
          +}
          +.tabbed_notifications div p {
          +    display: inline-block
          +}
          +.tabbed_notifications h2 {
          +    font-weight: bold;
          +    text-transform: uppercase;
          +    width: 80%;
          +    float: left;
          +    height: 20px;
          +    text-overflow: ellipsis;
          +    overflow: hidden;
          +    display: block
          +}
          +.tabbed_notifications .close {
          +    padding: 5px;
          +    color: #E9EDEF;
          +    float: right;
          +    opacity: 1
          +}
          +.fc-state-default {
          +    background: #f5f5f5;
          +    color: #73879C
          +}
          +.fc-state-down,
          +.fc-state-active {
          +    color: #333;
          +    background: #ccc
          +}
          +.dropzone {
          +    min-height: 300px;
          +    border: 1px solid #e5e5e5
          +}
          +
          +/*
          +.x_content {
          +    direction: rtl;
          +}
          +*/
          +
          +.main_menu .label {
          +    line-height: 11px;
          +    margin-top: 4px;
          +}
          +@media (max-width: 460px) {
          +    .dataTables_wrapper .col-sm-6 {
          +        width: 100%;
          +        margin-bottom: 5px;
          +    }
          +    .dataTables_wrapper .col-sm-6 .dataTables_filter {
          +        float: none;
          +    }
          +}
          +
          +
          +@media (max-width: 767px) {
          +   .dataTables_length { float:none; }
          +}
          +
          +
          +
          +
          +/* CSS3 Checkbox */
          +/*
          +.checkbox-input { display:block;position:relative; }
          +.checkbox-input:before { display:block;content:"";position:absolute;top:2px;left:0;height:20px;width:20px;background:red;border-radius:3px; }
          +
          +
          + #input + label:after {
          +    content: 'click my input';
          +    color: blue;
          +  }
          +
          +  #input:focus + label:after {
          +    content: 'not valid yet';
          +    color: blue;
          +  }
          +
          +  #input:valid + label:after {
          +    content: 'looks good';
          +    color: red;
          +  }
          +
          +/* CSS3 Checkbox - end */
          +/*
          +
          +/*
          +.checkbox 																										{ display: block;position:relative;cursor:pointer; }
          +.checkbox input 																								{ position:absolute;z-index:-1;opacity:0;left:0;top:0; }
          +.checkbox div 																									{ position:absolute;top:2px;left:0;height:20px;width:20px;background:#e6e6e6;border-radius:3px; }
          +.checkbox input:checked ~ div 																			{ background: #1ABC9C; }
          +.checkbox:hover input:not([disabled]):checked ~ div,
          +.checkbox input:checked:focus ~ div 																	{ background: #1ABC9C; }
          +.checkbox input:disabled ~ div 																			{ background: #1ABC9C;opacity: 0.6;pointer-events: none; }
          +.checkbox div:after 																							{ content: '';position: absolute;display: none; }
          +.checkbox input:checked ~ div:after 																	{ display: block; }
          +.checkbox-wp div:after 																					{ left: 7px;top: 3px;width: 7px;height: 11px;border: solid #fff;border-width: 0 2px 2px 0;transform: rotate(40deg); }
          +.checkbox-wp input:disabled ~ div:after 																{ border-color: #F2F2F2; }
          +
          +
          +.checkbox-radio div 																							{ border-radius: 50%; }
          +.checkbox-radio div:after 																					{ left: 7px;top: 7px;height: 6px;width: 6px;border-radius: 50%;background: #fff; }
          +.checkbox-radio input:disabled ~ div:after 															{ background: #F2F2F2; }
          +
          +
          +.checkbox, .radio { margin-top:-3px; }
          +
          +table thead .checkbox { margin-top:-7px;margin-top:-21px; }
          +table thead .checkbox.radio { margin-top:-7px;margin-top:-21px; }
          +*/
          +			
          +.daterangepicker.xdisplay { width:228px; }
          +
          +.dataTables_wrapper > .row{
          +  overflow:auto !important; /*prevent datatables overflowing its container*/
          +}
          diff --git a/public/theme/build/css/custom.min.css b/public/theme/build/css/custom.min.css
          new file mode 100644
          index 0000000..df48f55
          --- /dev/null
          +++ b/public/theme/build/css/custom.min.css
          @@ -0,0 +1,11 @@
          +.x_title h2,table.tile_info td p{white-space:nowrap;text-overflow:ellipsis}.site_title,.x_title h2,table.tile_info td p{text-overflow:ellipsis}.detail a,.expand,.jqstooltip,.paging_full_numbers a:hover,.site_title:focus,.site_title:hover,a,a:focus,a:hover{text-decoration:none}.byline,.main_menu .fa{-webkit-font-smoothing:antialiased}.daterangepicker .ranges li{color:#73879C}.daterangepicker .ranges li.active,.daterangepicker .ranges li:hover{background:#536A7F;border:1px solid #536A7F;color:#fff}.daterangepicker .input-mini{background-color:#eee;border:1px solid #ccc;box-shadow:none!important}.daterangepicker .input-mini.active{border:1px solid #ccc}.daterangepicker select.ampmselect,.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.monthselect,.daterangepicker select.secondselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;margin:0;cursor:default;height:30px;border:1px solid #ADB2B5;line-height:30px;border-radius:0!important}.daterangepicker select.monthselect{margin-right:2%}.daterangepicker td.in-range{background:#E4E7EA;color:#73879C}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#536A7F;color:#fff}.daterangepicker th.available:hover{background:#eee;color:#34495E}.daterangepicker:after,.daterangepicker:before{content:none}.daterangepicker .calendar.single{margin:0 0 4px}.daterangepicker .calendar.single .calendar-table{width:224px;padding:0 0 4px!important}.daterangepicker .calendar.single .calendar-table thead tr:first-child th{padding:8px 5px}.daterangepicker .calendar.single .calendar-table thead th{border-radius:0}.daterangepicker.picker_1{color:#fff;background:#34495E}.daterangepicker.picker_1 .calendar-table{background:#34495E}.daterangepicker.picker_1 .calendar-table thead tr{background:#213345}.daterangepicker.picker_1 .calendar-table thead tr:first-child{background:#1ABB9C}.daterangepicker.picker_1 .calendar-table td.off{background:#34495E;color:#999}.daterangepicker.picker_1 .calendar-table td.available:hover{color:#34495E}.daterangepicker.picker_2 .calendar-table thead tr{color:#1ABB9C}.daterangepicker.picker_2 .calendar-table thead tr:first-child{color:#73879C}.daterangepicker.picker_3 .calendar-table thead tr:first-child{color:#fff;background:#1ABB9C}.daterangepicker.picker_4 .calendar-table thead tr:first-child{color:#fff;background:#34495E}.daterangepicker.picker_4 .calendar-table td,.daterangepicker.picker_4 .calendar-table td.off{background:#ECF0F1;border:1px solid #fff;border-radius:0}.daterangepicker.picker_4 .calendar-table td.active{background:#34495E}.calendar-exibit .show-calendar{float:none;display:block;position:relative;background-color:#fff;border:1px solid #ccc;margin-bottom:20px;border:1px solid rgba(0,0,0,.15);overflow:hidden}.calendar-exibit .show-calendar .calendar{margin:0 0 4px}.calendar-exibit .show-calendar.picker_1{background:#34495E}.calendar-exibit .calendar-table{padding:0 0 4px}.left_col{background:#2A3F54}.nav-sm .container.body .col-md-3.left_col{min-height:100%;width:70px;padding:0;z-index:9999;position:absolute}.nav-sm .container.body .col-md-3.left_col.menu_fixed{position:fixed;height:100%}.nav-sm .container.body .col-md-3.left_col .mCSB_container,.nav-sm .container.body .col-md-3.left_col .mCustomScrollBox{overflow:visible}.overflow_hidden,.sidebar-widget,.site_title,.tile,.weather-days .col-sm-2,.x_title h2,table.tile_info td p{overflow:hidden}.nav-sm .hidden-small{visibility:hidden}.nav-sm .container.body .right_col{padding:10px 20px;margin-left:70px;z-index:2}.nav-sm .navbar.nav_title{width:70px}.nav-sm .navbar.nav_title a span{display:none}.nav-sm .navbar.nav_title a i{font-size:27px;margin:13px 0 0 3px}.site_title i{border:1px solid #EAEAEA;padding:5px 6px;border-radius:50%}.nav-sm .main_container .top_nav{display:block;margin-left:70px;z-index:2}.nav-sm .nav.side-menu li a{text-align:center!important;font-weight:400;font-size:10px;padding:10px 5px}.nav-sm .nav.child_menu li.active,.nav-sm .nav.side-menu li.active-sm{border-right:5px solid #1ABB9C}.nav-sm .nav.side-menu li.active-sm ul ul,.nav-sm ul.nav.child_menu ul{position:static;width:200px;background:0 0}.nav-sm>.nav.side-menu>li.active-sm>a{color:#1ABB9C!important}.nav-sm .nav.side-menu li a i.toggle-up{display:none!important}.nav-sm .menu_section h3,.nav-sm .profile,.nav-sm span.fa{display:none}.nav-sm .nav.side-menu li a i{font-size:25px!important;text-align:center;width:100%!important;margin-bottom:5px}.nav-sm ul.nav.child_menu{left:100%;position:absolute;top:0;width:210px;z-index:4000;background:#3E5367;display:none}.nav-sm ul.nav.child_menu li{padding:0 10px}.nav-sm ul.nav.child_menu li a{text-align:left!important}.menu_section{margin-bottom:35px}.menu_section h3{padding-left:15px;color:#fff;text-transform:uppercase;letter-spacing:.5px;font-weight:700;font-size:11px;margin-bottom:0;margin-top:0;text-shadow:1px 1px #000}.menu_section>ul{margin-top:10px}.profile_pic{width:35%;float:left}.img-circle.profile_img{width:70%;background:#fff;margin-left:15%;z-index:1000;position:inherit;margin-top:20px;border:1px solid rgba(52,73,94,.44);padding:4px}.profile_info{padding:25px 10px 10px;width:65%;float:left}.profile_info span{font-size:13px;line-height:30px;color:#BAB8B8}.profile_info h2{font-size:14px;color:#ECF0F1;margin:0;font-weight:300}.profile.img_2{text-align:center}.profile.img_2 .profile_pic{width:100%}.profile.img_2 .profile_pic .img-circle.profile_img{width:50%;margin:10px 0 0}.profile.img_2 .profile_info{padding:15px 10px 0;width:100%;margin-bottom:10px;float:left}.main_menu span.fa{float:right;text-align:center;margin-top:5px;font-size:10px;min-width:inherit;color:#C4CFDA}.active a span.fa{text-align:right!important;margin-right:4px}.nav-sm .menu_section{margin:0}.nav-sm li li span.fa{display:inline-block}.nav_menu{float:left;background:#EDEDED;border-bottom:1px solid #D9DEE4;margin-bottom:10px;width:100%;position:relative}@media (min-width:480px){.nav_menu{position:static}}.nav-md .container.body .col-md-3.left_col{min-height:100%;width:230px;padding:0;position:absolute;display:-ms-flexbox;display:flex;z-index:1}.nav-md .container.body .col-md-3.left_col.menu_fixed{height:100%;position:fixed}body .container.body .right_col{background:#F7F7F7}.nav-md .container.body .right_col{padding:10px 20px 0;margin-left:230px}.nav_title{width:230px;float:left;background:#2A3F54;border-radius:0;height:57px}@media (max-width:991px){.nav-md .container.body .right_col,.nav-md .container.body .top_nav{width:100%;margin:0}.nav-md .container.body .col-md-3.left_col{display:none}.nav-md .container.body .right_col{width:100%;padding-right:0}.right_col{padding:10px!important}}@media (max-width:1200px){.x_title h2{width:62%;font-size:17px}.graph,.tile{zoom:85%;height:inherit}}@media (max-width:1270px) and (min-width:192px){.x_title h2 small{display:none}}.left_col .mCSB_scrollTools{width:6px}.left_col .mCSB_dragger{max-height:400px!important}.blue{color:#3498DB}.purple{color:#9B59B6}.green{color:#1ABB9C}.aero{color:#9CC2CB}.red{color:#E74C3C}.dark{color:#34495E}.border-blue{border-color:#3498DB!important}.border-purple{border-color:#9B59B6!important}.border-green{border-color:#1ABB9C!important}.border-aero{border-color:#9CC2CB!important}.border-red{border-color:#E74C3C!important}.border-dark{border-color:#34495E!important}.bg-white{background:#fff!important;border:1px solid #fff!important;color:#73879C}.bg-green{background:#1ABB9C!important;border:1px solid #1ABB9C!important;color:#fff}.bg-red{background:#E74C3C!important;border:1px solid #E74C3C!important;color:#fff}.bg-blue{background:#3498DB!important;border:1px solid #3498DB!important;color:#fff}.bg-orange{background:#F39C12!important;border:1px solid #F39C12!important;color:#fff}.bg-purple{background:#9B59B6!important;border:1px solid #9B59B6!important;color:#fff}.bg-blue-sky{background:#50C1CF!important;border:1px solid #50C1CF!important;color:#fff}.container{width:100%;padding:0}.top_nav .nav .open>a,.top_nav .nav .open>a:focus,.top_nav .nav .open>a:hover,.top_nav .nav>li>a:focus,.top_nav .nav>li>a:hover{background:#D9DEE4}body{color:#73879C;background:#2A3F54;font-family:"Helvetica Neue",Roboto,Arial,"Droid Sans",sans-serif;font-size:13px;font-weight:400;line-height:1.471}.main_container .top_nav{display:block;margin-left:230px}.no-padding{padding:0!important}.page-title{width:100%;height:65px;padding:10px 0}.page-title .title_left{width:45%;float:left;display:block}.page-title .title_left h3{margin:9px 0}.page-title .title_right{width:55%;float:left;display:block}.page-title .title_right .pull-right{margin:10px 0}.fixed_height_320{height:320px}.fixed_height_390{height:390px}.fixed_height_200{height:200px}.progress-bar-dark{background-color:#34495E!important}.progress-bar-gray{background-color:#BDC3C7!important}table.no-margin .progress{margin-bottom:0}.main_content{padding:10px 20px}.col-md-55{width:50%;margin-bottom:10px}@media (min-width:768px){.col-md-55{width:20%}}@media (min-width:992px){.col-md-55{width:20%}}@media (min-width:1200px){.col-md-55{width:20%}}@media (min-width:192px) and (max-width:1270px){table.tile_info span.right{margin-right:7px;float:left}}.center-margin{margin:0 auto;float:none!important}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-55,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;float:left;padding-right:10px;padding-left:10px}.row{margin-right:-10px;margin-left:-10px}.grid_slider .col-md-6{padding:0 40px}.h1,.h2,.h3,h1,h2,h3{margin-top:10px;margin-bottom:10px}a{color:#5A738E}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus,:active,:focus,:visited,a,a:active,a:focus,a:visited{outline:0}.navbar{margin-bottom:0}.navbar-header{background:#34495E}.navbar-right{margin-right:0}.top_nav .navbar-right{margin:0;width:70%;float:right}.top_nav .navbar-right li{display:inline-block;float:right;position:static}@media (min-width:480px){.top_nav .navbar-right li{position:relative}}.top_nav .dropdown-menu li{width:100%}.top_nav .dropdown-menu li a{width:100%;padding:12px 20px}.top_nav li a i{font-size:15px}.navbar-static-top{position:fixed;top:0;width:100%}.sidebar-header{border-bottom:0;margin-top:46px}.sidebar-header:first-of-type{margin-top:0}.nav.side-menu>li{position:relative;display:block;cursor:pointer}.nav.side-menu>li>a{margin-bottom:6px}.nav.side-menu>li>a:hover{color:#F2F5F7!important}.nav.side-menu>li>a:hover,.nav>li>a:focus{text-decoration:none;background:0 0}.nav.child_menu{display:none}.nav.child_menu li.active,.nav.child_menu li:hover{background-color:rgba(255,255,255,.06)}.nav.child_menu li{padding-left:36px}.nav-md ul.nav.child_menu li:before{background:#425668;bottom:auto;content:"";height:8px;left:23px;margin-top:15px;position:absolute;right:auto;width:8px;z-index:1;border-radius:50%}.nav-md ul.nav.child_menu li:after{border-left:1px solid #425668;bottom:0;content:"";left:27px;position:absolute;top:0}.nav.top_menu>li>a,.nav>li>a{position:relative;display:block}.nav.child_menu>li>a,.nav.side-menu>li>a{color:#E7E7E7;font-weight:500}.nav li li.current-page a,.nav.child_menu li li a.active,.nav.child_menu li li a:hover{color:#fff}.nav.child_menu li li.active,.nav.child_menu li li:hover{background:0 0}.nav>li>a{padding:13px 15px 12px}.nav.side-menu>li.active,.nav.side-menu>li.current-page{border-right:5px solid #1ABB9C}.nav li.current-page{background:rgba(255,255,255,.05)}.nav li li li.current-page{background:0 0}.navbar-brand,.navbar-nav>li>a,.site_title{color:#ECF0F1!important;margin-left:0!important}.nav.side-menu>li.active>a{text-shadow:rgba(0,0,0,.25) 0 -1px 0;background:linear-gradient(#334556,#2C4257),#2A3F54;box-shadow:rgba(0,0,0,.25) 0 1px 0,inset rgba(255,255,255,.16) 0 1px 0}.navbar-brand,.navbar-nav>li>a{font-weight:500;line-height:32px}.site_title{font-weight:400;font-size:22px;width:100%;line-height:59px;display:block;height:55px;margin:0;padding-left:10px}.nav.navbar-nav>li>a{color:#515356!important}.nav.top_menu>li>a{padding:10px 15px;color:#34495E!important}.nav>li>a:focus,.nav>li>a:hover{background-color:transparent}.top_search{padding:0}.top_search .form-control{box-shadow:inset 0 1px 0 rgba(0,0,0,.075);border-radius:25px 0 0 25px;padding-left:20px;border:1px solid rgba(221,226,232,.49)}.top_search .form-control:focus{border:1px solid rgba(221,226,232,.49);border-right:0}.top_search .input-group-btn button{border-radius:0 25px 25px 0;border:1px solid rgba(221,226,232,.49);border-left:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#93A2B2;margin-bottom:0!important}.tiles,.top_tiles{margin-bottom:0}.toggle{float:left;margin:0;padding-top:16px;width:70px}.toggle a{padding:15px 15px 0;margin:0;cursor:pointer}.toggle a i{font-size:26px}.nav.child_menu>li>a{color:rgba(255,255,255,.75);font-size:12px;padding:9px}.panel_toolbox{float:right;min-width:70px}.panel_toolbox>li{float:left;cursor:pointer}.panel_toolbox>li>a{padding:5px;color:#C5C7CB;font-size:14px}.panel_toolbox>li>a:hover{background:#F5F7FA}.line_30{line-height:30px}.main_menu_side{padding:0}.bs-docs-sidebar .nav>li>a{display:block;padding:4px 6px}footer{background:#fff;padding:15px 20px;display:block}.nav-sm footer{margin-left:70px}.footer_fixed footer{position:fixed;left:0;bottom:0;width:100%}.degrees:after,.x_content,.x_panel{position:relative}@media (min-width:768px){.footer_fixed .nav-sm footer,.footer_fixed footer{margin-left:0}}.tile-stats.sparkline{padding:10px;text-align:center}.jqstooltip{background:#34495E!important;width:30px!important;height:22px!important}.tooltip{display:block!important}.tiles{border-top:1px solid #ccc;margin-top:15px;padding-top:5px}.top_tiles .tile h2{font-size:30px;line-height:30px;margin:3px 0 7px;font-weight:700}article.media{width:100%}*,:after,:before{box-sizing:border-box}#integration-list{width:100%;margin:0 auto;display:table}#integration-list ul{padding:0;margin:20px 0;color:#555}#integration-list ul>li{list-style:none;border-top:1px solid #ddd;display:block;padding:15px;overflow:hidden}#integration-list ul:last-child{border-bottom:1px solid #ddd}#integration-list ul>li:hover{background:#efefef}.expand{display:block;color:#555;cursor:pointer}.expand h2{width:85%;float:left}h2{font-size:18px;font-weight:400}#left,#right{display:table}#sup{display:table-cell;vertical-align:middle;width:80%}.detail a{color:#C0392B;border:1px solid #C0392B;padding:6px 10px 5px;font-size:13px;margin-right:7px}.detail{margin:10px 0;display:none;line-height:22px;height:150px}.detail span{margin:0}.right-arrow{width:10px;float:right;font-weight:700;font-size:20px}.accordion .panel{margin-bottom:5px;border-radius:0;border-bottom:1px solid #efefef}.x_panel,.x_title{margin-bottom:10px}.accordion .panel-heading{background:#F2F5F7;padding:13px;width:100%;display:block}.accordion .panel:hover{background:#F2F5F7}.x_panel{width:100%;padding:10px 17px;display:inline-block;background:#fff;border:1px solid #E6E9ED;-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;column-break-inside:avoid;opacity:1;transition:all .2s ease}.x_title{border-bottom:2px solid #E6E9ED;padding:1px 5px 6px}.x_title .filter{width:40%;float:right}.x_content,table.tile td ul li a,table.tile_info{width:100%}.x_title h2{margin:5px 0 6px;float:left;display:block}.x_title h2 small{margin-left:10px}.x_title span{color:#BDBDBD}.x_content{padding:0 5px 6px;float:left;clear:both;margin-top:5px}.x_content h4{font-size:16px;font-weight:500}legend{padding-bottom:7px}.demo-placeholder{height:280px}.profile_details:nth-child(3n){clear:both}.profile_details .profile_view{display:inline-block;padding:10px 0 0;background:#fff}.profile_details .profile_view .divider{border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.profile_details .profile_view .ratings{margin-bottom:0;text-align:left;font-size:16px}.profile_details .profile_view .bottom{background:#F2F5F7;padding:9px 0;border-top:1px solid #E6E9ED}.profile_details .profile_view .left{margin-top:20px}.profile_details .profile_view .left p{margin-bottom:3px}.profile_details .profile_view .right{margin-top:0;padding:10px}.profile_details .profile_view .img-circle{border:1px solid #E6E9ED;padding:2px}.profile_details .profile_view h2{margin:5px 0}.profile_details .profile_view .brief{margin:0;font-weight:300}.profile_details .profile_left{background:#fff}.pagination.pagination-split li{display:inline-block;margin-right:3px}.pagination.pagination-split li a{border-radius:4px;color:#768399;-moz-border-radius:4px;-webkit-border-radius:4px}table.tile h3,table.tile h4,table.tile span{font-weight:700;vertical-align:middle!important}table.tile td,table.tile th{text-align:center}table.tile th{border-bottom:1px solid #E6ECEE}table.tile td{padding:5px 0}table.tile td ul{text-align:left;padding-left:0}table.tile td ul li{list-style:none;width:100%}table.tile td ul li a big{right:0;float:right;margin-right:13px}table.tile_info td{text-align:left;padding:1px;font-size:15px}table.tile_info td p{margin:0;line-height:28px}table.tile_info td i{margin-right:8px;font-size:17px;float:left;width:18px;line-height:28px}table.tile_info td:first-child{width:83%}td span{line-height:28px}.error-number{font-size:90px;line-height:90px;margin:20px 0}.col-middle{margin-top:5%}.mid_center{width:370px;margin:0 auto;text-align:center;padding:10px 20px}h3.degrees{font-size:22px;font-weight:400;text-align:center}.degrees:after{content:"o";top:-12px;font-size:13px;font-weight:300}.daily-weather .day{font-size:14px;border-top:2px solid rgba(115,135,156,.36);text-align:center;border-bottom:2px solid rgba(115,135,156,.36);padding:5px 0}.weather-days .col-sm-2{width:16.66666667%}.weather .row{margin-bottom:0}.bulk-actions{display:none}table.countries_list{width:100%}table.countries_list td{padding:0 10px;line-height:30px;border-top:1px solid #eee}.dataTables_paginate a{padding:6px 9px!important;background:#ddd!important;border-color:#ddd!important}.paging_full_numbers a.paginate_active{background-color:rgba(38,185,154,.59)!important;border-color:rgba(38,185,154,.59)!important}a.DTTT_button,button.DTTT_button,div.DTTT_button{border:1px solid #E7E7E7!important;background:#E7E7E7!important;box-shadow:none!important}table.jambo_table{border:1px solid rgba(221,221,221,.78)}table.jambo_table thead{background:rgba(52,73,94,.94);color:#ECF0F1}table.jambo_table tbody tr:hover td{background:rgba(38,185,154,.07);border-top:1px solid rgba(38,185,154,.11);border-bottom:1px solid rgba(38,185,154,.11)}table.jambo_table tbody tr.selected{background:rgba(38,185,154,.16)}table.jambo_table tbody tr.selected td{border-top:1px solid rgba(38,185,154,.4);border-bottom:1px solid rgba(38,185,154,.4)}.dataTables_wrapper{position:relative;clear:both;zoom:1}.dataTables_processing{position:absolute;top:50%;left:50%;width:250px;height:30px;margin-left:-125px;margin-top:-15px;padding:14px 0 2px;border:1px solid #ddd;text-align:center;color:#999;font-size:14px;background-color:#fff}td.details,td.group{background-color:#d1cfd0}.dataTables_length{width:40%;float:left}.dataTables_filter{width:50%;float:right;text-align:right}.dataTables_info{width:60%;float:left}.dataTables_paginate{float:right;text-align:right}.dataTables_empty,table.display td.center{text-align:center}table.dataTable td.focus,table.dataTable th.focus{outline:#1ABB9C solid 2px!important;outline-offset:-1px}.paging_full_numbers a:active,table.display thead td:active,table.display thead th:active{outline:0}table.display{margin:0 auto;clear:both;width:100%}table.display thead th{padding:8px 18px 8px 10px;border-bottom:1px solid #000;font-weight:700;cursor:pointer}table.display tfoot th{padding:3px 18px 3px 10px;border-top:1px solid #000;font-weight:700}table.display tr.heading2 td{border-bottom:1px solid #aaa}table.display td{padding:3px 10px}.dataTables_scroll{clear:both}.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.top .dataTables_info{float:none}.clear{clear:both}tfoot input{margin:.5em 0;width:100%;color:#444}tfoot input.search_init{color:#999}td.group{border-bottom:2px solid #A19B9E;border-top:2px solid #A19B9E}td.details{border:2px solid #A19B9E}.example_alt_pagination div.dataTables_info{width:40%}.paging_full_numbers{width:400px;height:22px;line-height:22px}.paging_full_numbers a.paginate_active,.paging_full_numbers a.paginate_button{border:1px solid #aaa;-webkit-border-radius:5px;-moz-border-radius:5px;padding:2px 5px;margin:0 3px;cursor:pointer}.paging_full_numbers a.paginate_button{background-color:#ddd}.paging_full_numbers a.paginate_button:hover{background-color:#ccc;text-decoration:none!important}.login_content .btn-default:hover,.login_content a,.tagsinput span.tag a,.tile-stats>.dash-box-footer,.tile:hover,.view a.info,span.tag{text-decoration:none}table.display tr.even.row_selected td{background-color:#B0BED9}table.display tr.odd.row_selected td{background-color:#9FAFD1}div.box{height:100px;padding:10px;overflow:auto;border:1px solid #8080FF;background-color:#E5E5FF}ul.msg_list li{background:#f7f7f7;padding:5px;display:-ms-flexbox;display:flex;margin:6px 6px 0;width:96%!important}ul.msg_list li:last-child{margin-bottom:6px;padding:10px}ul.msg_list li a{padding:3px 5px!important}ul.msg_list li a .image img{border-radius:2px;-webkit-border-radius:2px;float:left;margin-right:10px;width:11%}ul.msg_list li a .time{font-size:11px;font-style:italic;font-weight:700;position:absolute;right:35px}ul.msg_list li a .message{display:block!important;font-size:11px}.dropdown-menu.msg_list span{white-space:normal}.tile_count .tile_stats_count,ul.quick-list li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-menu{box-shadow:none;display:none;float:left;font-size:12px;left:0;list-style:none;padding:0;position:absolute;text-shadow:none;top:100%;z-index:9998;border:1px solid #D9DEE4;border-top-left-radius:0;border-top-right-radius:0}.dropdown-menu>li>a{color:#5A738E}.navbar-nav .open .dropdown-menu{position:absolute;background:#fff;margin-top:0;border:1px solid #D9DEE4;-webkit-box-shadow:none;right:0;left:auto;width:220px}.navbar-nav .open .dropdown-menu.msg_list{width:300px}.info-number .badge{font-size:10px;font-weight:400;line-height:13px;padding:2px 6px;position:absolute;right:2px;top:8px}ul.to_do{padding:0}ul.to_do li{background:#f3f3f3;border-radius:3px;position:relative;padding:7px;margin-bottom:5px;list-style:none}ul.to_do p{margin:0}.dashboard-widget{background:#f6f6f6;border-top:5px solid #79C3DF;border-radius:3px;padding:5px 10px 10px}.dashboard-widget .dashboard-widget-title{font-weight:400;border-bottom:1px solid #c1cdcd;margin:0 0 10px;padding-bottom:5px;padding-left:40px;line-height:30px}.dashboard-widget .dashboard-widget-title i{font-size:100%;margin-left:-35px;margin-right:10px;color:#33a1c9;padding:3px 6px;border:1px solid #abd9ea;border-radius:5px;background:#fff}ul.quick-list{width:45%;padding-left:0;display:inline-block}ul.quick-list li{padding-left:10px;list-style:none;margin:0;padding-bottom:6px;padding-top:4px}ul.quick-list li i{padding-right:10px;color:#757679}.dashboard-widget-content{padding-top:9px}.dashboard-widget-content .sidebar-widget{width:50%;display:inline-block;vertical-align:top;background:#fff;border:1px solid #abd9ea;border-radius:5px;text-align:center;float:right;padding:2px;margin-top:10px}.widget_summary{width:100%;display:-ms-inline-flexbox;display:inline-flex}.widget_summary .w_left{float:left;text-align:left}.widget_summary .w_center{float:left}.widget_summary .w_right{float:left;text-align:right}.widget_summary .w_right span{font-size:20px}.w_20{width:20%}.w_25{width:25%}.w_55{width:55%}h5.graph_title{text-align:left;margin-left:10px}h5.graph_title i{margin-right:10px;font-size:17px}span.right{float:right;font-size:14px!important}.tile_info a{text-overflow:ellipsis}.sidebar-footer{bottom:0;clear:both;display:block;padding:5px 0 0;position:fixed;width:230px;background:#2A3F54;z-index:999}.sidebar-footer a{padding:7px 0 3px;text-align:center;width:25%;font-size:17px;display:block;float:left;background:#172D44;cursor:pointer}.sidebar-footer a:hover{background:#425567}.tile_count{margin-bottom:20px;margin-top:20px}.tile_count .tile_stats_count{border-bottom:1px solid #D9DEE4;padding:0 10px 0 20px;position:relative}.tile_count .tile_stats_count:before{content:"";position:absolute;left:0;height:65px;border-left:2px solid #ADB2B5;margin-top:10px}@media (min-width:992px){footer{margin-left:230px}.tile_count .tile_stats_count{margin-bottom:10px;border-bottom:0;padding-bottom:10px}.tile_count .tile_stats_count:first-child:before{border-left:0}}.tile_count .tile_stats_count .count{font-size:30px;line-height:47px;font-weight:600}@media (min-width:768px){.tile_count .tile_stats_count .count{font-size:40px}}@media (min-width:992px) and (max-width:1100px){.tile_count .tile_stats_count .count{font-size:30px}}.tile_count .tile_stats_count span{font-size:12px}@media (min-width:768px){.tile_count .tile_stats_count span{font-size:13px}}.tile_count .tile_stats_count .count_bottom i{width:12px}.dashboard_graph{background:#fff;padding:7px 10px}.dashboard_graph .col-md-3,.dashboard_graph .col-md-9{padding:0}a.user-profile{color:#5E6974!important}.user-profile img{width:29px;height:29px;border-radius:50%;margin-right:10px}ul.top_profiles{height:330px;width:100%}ul.top_profiles li{margin:0;padding:3px 5px}ul.top_profiles li:nth-child(odd){background-color:#eee}.media .profile_thumb{border:1px solid;width:50px;height:50px;margin:5px 10px 5px 0;border-radius:50%;padding:9px 12px}.media .profile_thumb i{font-size:30px}.media .date{background:#ccc;width:52px;margin-right:10px;border-radius:10px;padding:5px}.media .date .day,.media .date .month{margin:0;text-align:center;color:#fff}.media .date .day{font-size:27px;line-height:27px;font-weight:700}.event .media-body a.title{font-weight:700}.event .media-body p{margin-bottom:0}h4.graph_title{margin:7px;text-align:center}.fontawesome-icon-list .fa-hover a:hover{background-color:#ddd;color:#fff;text-decoration:none}.fontawesome-icon-list .fa-hover a{display:block;line-height:32px;height:32px;padding-left:10px;border-radius:4px}.fontawesome-icon-list .fa-hover a:hover .fa{font-size:28px;vertical-align:-6px}.fontawesome-icon-list .fa-hover a .fa{width:32px;font-size:16px;display:inline-block;text-align:right;margin-right:10px}.main_menu .fa{width:26px;opacity:.99;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;font-size:18px;-moz-osx-font-smoothing:grayscale}.tile-stats{position:relative;display:block;margin-bottom:12px;border:1px solid #E4E4E4;-webkit-border-radius:5px;overflow:hidden;padding-bottom:5px;-webkit-background-clip:padding-box;-moz-border-radius:5px;-moz-background-clip:padding;border-radius:5px;background:#FFF;transition:all .3s ease-in-out}.tile-stats:hover .icon i{animation-name:tansformAnimation;animation-duration:.5s;animation-iteration-count:1;color:rgba(58,58,58,.41);animation-timing-function:ease;animation-fill-mode:forwards;-webkit-animation-name:tansformAnimation;-webkit-animation-duration:.5s;-webkit-animation-iteration-count:1;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-name:tansformAnimation;-moz-animation-duration:.5s;-moz-animation-iteration-count:1;-moz-animation-timing-function:ease;-moz-animation-fill-mode:forwards}.tile-stats .icon{width:20px;height:20px;color:#BAB8B8;position:absolute;right:53px;top:22px;z-index:1}.tile-stats .icon i{margin:0;font-size:60px;line-height:0;vertical-align:bottom;padding:0}.tile-stats .count{font-size:38px;font-weight:700;line-height:1.65857}.tile-stats .count,.tile-stats h3,.tile-stats p{position:relative;margin:0 0 0 10px;z-index:5;padding:0}.tile-stats h3{color:#BAB8B8}.tile-stats p{margin-top:5px;font-size:12px}.tile-stats>.dash-box-footer{position:relative;text-align:center;margin-top:5px;padding:3px 0;color:#fff;color:rgba(255,255,255,.8);display:block;z-index:10;background:rgba(0,0,0,.1)}.tile-stats>.dash-box-footer:hover{color:#fff;background:rgba(0,0,0,.15)}table.tile_info{padding:10px 15px}table.tile_info span.right{margin-right:0;float:right;position:absolute;right:4%}.tile_header{border-bottom:transparent;padding:7px 15px;margin-bottom:15px;background:#E7E7E7}.tile_head h4{margin-top:0;margin-bottom:5px}.tiles-bottom{padding:5px 10px;margin-top:10px;background:rgba(194,194,194,.3);text-align:left}a.star{color:#428bca!important}.mail_content{background:#FFF;border-radius:4px;margin-top:20px;min-height:500px;padding:10px 11px;width:100%}.list-btn-mail{margin-bottom:15px}.list-btn-mail.active{border-bottom:1px solid #39B3D7;padding:0 0 14px}.list-btn-mail>i{float:left;font-size:18px;font-style:normal;width:33px}.list-btn-mail>.cn{background:#39B3D7;border-radius:12px;color:#FFF;float:right;font-style:normal;padding:0 5px}.byline,.view p{font-style:italic}.button-mail{margin:0 0 15px!important;text-align:left;width:100%}.btn,.buttons,.modal-footer .btn+.btn,button{margin-bottom:5px;margin-right:5px}.btn-group .btn,.btn-group-vertical .btn{margin-bottom:0;margin-right:0}.mail_list_column,.mail_view{border-left:1px solid #DBDBDB}.mail_list{width:100%;border-bottom:1px solid #DBDBDB;margin-bottom:2px;display:inline-block}.mail_list .left{width:5%;float:left;margin-right:3%}.mail_list .right{width:90%;float:left}.mail_list h3{font-size:15px;font-weight:700;margin:0 0 6px}.mail_list h3 small{float:right;color:#ADABAB;font-size:11px;line-height:20px}.mail_list .badge{padding:3px 6px;font-size:8px;background:#BAB7B7}@media (max-width:767px){.mail_list{margin-bottom:5px;display:inline-block}}.mail_heading h4{font-size:18px;border-bottom:1px solid #ddd;padding-bottom:10px;margin-top:20px}.attachment{margin-top:30px}.attachment ul{width:100%;list-style:none;padding-left:0;display:inline-block;margin-bottom:30px}.attachment ul li{float:left;width:150px;margin-right:10px;margin-bottom:10px}.attachment ul li img{height:150px;border:1px solid #ddd;padding:5px;margin-bottom:10px}.attachment ul li span{float:right}.attachment .file-name{float:left}.attachment .links{width:100%;display:inline-block}.compose{padding:0;position:fixed;bottom:0;right:0;background:#fff;border:1px solid #D9DEE4;border-right:0;border-bottom:0;border-top-left-radius:5px;z-index:9999;display:none}.compose .compose-header{padding:5px;background:#169F85;color:#fff;border-top-left-radius:5px}.compose .compose-header .close{text-shadow:0 1px 0 #fff;line-height:.8}.compose .compose-body .editor.btn-toolbar{margin:0}.compose .compose-body .editor-wrapper{height:100%;min-height:50px;max-height:180px;border-radius:0;border-left:none;border-right:none;overflow:auto}.compose .compose-footer{padding:10px}.editor.btn-toolbar{zoom:1;background:#F7F7F7;margin:5px 2px;padding:3px 0;border:1px solid #EFEFEF}.input-group{margin-bottom:10px}.ln_solid{border-top:1px solid #e5e5e5;color:#fff;background-color:#fff;height:1px;margin:20px 0}span.section{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.form-control{border-radius:0;width:100%}.form-horizontal .control-label{padding-top:8px}.form-control:focus{border-color:#CCD0D7;box-shadow:none!important}legend{font-size:18px;color:inherit}.form-horizontal .form-group{margin-right:0;margin-left:0}.form-control-feedback{margin-top:8px;height:23px;color:#bbb;line-height:24px;font-size:15px}.form-control-feedback.left{border-right:1px solid #ccc;left:13px}.form-control-feedback.right{border-left:1px solid #ccc;right:13px}.form-control.has-feedback-left{padding-left:45px}.form-control.has-feedback-right{padding-right:45px}.form-group{margin-bottom:10px}.validate{margin-top:10px}.invalid-form-error-message{margin-top:10px;padding:5px}.invalid-form-error-message.filled{border-left:2px solid #E74C3C}p.parsley-success{color:#468847;background-color:#DFF0D8;border:1px solid #D6E9C6}p.parsley-error{color:#B94A48;background-color:#F2DEDE;border:1px solid #EED3D7}ul.parsley-errors-list{list-style:none;color:#E74C3C;padding-left:0}input.parsley-error,select.parsley-error,textarea.parsley-error{background:#FAEDEC;border:1px solid #E85445}.btn-group .parsley-errors-list{display:none}.bad input,.bad select,.bad textarea{border:1px solid #CE5454;box-shadow:0 0 4px -2px #CE5454;position:relative;left:0;-moz-animation:.7s 1 shake linear;-webkit-animation:.7s 1 shake linear}.item input,.item textarea{transition:.42s}.item .alert{float:left;margin:0 0 0 20px;padding:3px 10px;color:#FFF;border-radius:3px 4px 4px 3px;background-color:#CE5454;max-width:170px;white-space:pre;position:relative;left:-15px;opacity:0;z-index:1;transition:.15s ease-out}.item .alert::after{content:'';display:block;height:0;width:0;border-color:transparent #CE5454 transparent transparent;border-style:solid;border-width:11px 7px;position:absolute;left:-13px;top:1px}.item.bad .alert{left:0;opacity:1}.inl-bl{display:inline-block}.well .markup{background:#fff;color:#777;position:relative;padding:45px 15px 15px;margin:15px 0 0;border-radius:0 0 4px 4px;box-shadow:none}.well .markup::after{content:"Example";position:absolute;top:15px;left:15px;font-size:12px;font-weight:700;color:#bbb;text-transform:uppercase;letter-spacing:1px}.autocomplete-suggestions{border:1px solid #e4e4e4;background:#F4F4F4;cursor:default;overflow:auto}.autocomplete-suggestion{padding:2px 5px;font-size:1.2em;white-space:nowrap;overflow:hidden}.autocomplete-selected{background:#f0f0f0}.autocomplete-suggestions strong{color:#39f;font-weight:bolder}.btn{border-radius:3px}a.btn-danger,a.btn-primary,a.btn-success,a.btn-warning{color:#fff}.btn-success{background:#26B99A;border:1px solid #169F85}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{background:#169F85}.btn-dark{color:#E9EDEF;background-color:#4B5F71;border-color:#364B5F}.btn-dark.active,.btn-dark:active,.btn-dark:focus,.btn-dark:hover,.open .dropdown-toggle.btn-dark{color:#FFF;background-color:#394D5F;border-color:#394D5F}.btn-round{border-radius:30px}.btn.btn-app{position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;box-shadow:none;border-radius:0;text-align:center;color:#666;border:1px solid #ddd;background-color:#fafafa;font-size:12px}.btn.btn-app>.fa,.btn.btn-app>.glyphicon,.btn.btn-app>.ion{font-size:20px;display:block}.btn.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn.btn-app:active,.btn.btn-app:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}textarea{padding:10px;vertical-align:top;width:200px}textarea:focus{outline-style:solid;outline-width:2px}.btn_{display:inline-block;padding:3px 9px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f5f5f5;background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid: DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #ccc;border-bottom-color:#b3b3b3;border-radius:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bs-glyphicons{margin:0 -10px 20px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;background-color:#f9f9f9;border:1px solid #fff}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#1ABB9C}@media (min-width:768px){.bs-glyphicons{margin-right:0;margin-left:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.tagsinput{border:1px solid #CCC;background:#FFF;padding:6px 6px 0;width:300px;overflow-y:auto}span.tag{-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:5px 9px;background:#1ABB9C;color:#F1F6F7;margin-right:5px;font-weight:500;margin-bottom:5px;font-family:helvetica}span.tag a{color:#F1F6F7!important}.tagsinput span.tag a{font-weight:700;color:#82ad2b;font-size:11px}.tagsinput input{width:80px;margin:0;font-family:helvetica;font-size:13px;border:1px solid transparent;padding:3px;background:0 0;color:#000;outline:0}.tagsinput div{display:block;float:left}.social-body,.social-sidebar,ul.bar_tabs.right li{float:right}.tags_clear{clear:both;width:100%;height:0}.not_valid{background:#FBD8DB!important;color:#90111A!important}ul.bar_tabs{overflow:visible;background:#F5F7FA;height:25px;margin:21px 0 14px;padding-left:14px;position:relative;z-index:1;width:100%;border-bottom:1px solid #E6E9ED}ul.bar_tabs>li{border:1px solid #E6E9ED;color:#333!important;margin-top:-17px;margin-left:8px;background:#fff;border-bottom:none;border-radius:4px 4px 0 0}ul.bar_tabs>li.active{border-right:6px solid #D3D6DA;border-top:0;margin-top:-15px}ul.bar_tabs>li a{padding:10px 17px;background:#F5F7FA;margin:0;border-top-right-radius:0}ul.bar_tabs>li a:hover{border:1px solid transparent}ul.bar_tabs>li.active a{border-bottom:none}ul.bar_tabs.right{padding-right:14px}a:focus{outline:0}ul.timeline li{position:relative;border-bottom:1px solid #e8e8e8;clear:both}.timeline .block{margin:0 0 0 105px;border-left:3px solid #e8e8e8;overflow:visible;padding:10px 15px}.timeline.widget{min-width:0;max-width:inherit}.timeline.widget .block{margin-left:5px}.timeline .tags{position:absolute;top:15px;left:0;width:84px}.timeline .tag{display:block;height:30px;font-size:13px;padding:8px}.timeline .tag span{display:block;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}.tag{line-height:1;background:#1ABB9C;color:#fff!important}.tag:after{content:" ";height:30px;width:0;position:absolute;left:100%;top:0;margin:0;pointer-events:none;border-top:14px solid transparent;border-bottom:14px solid transparent;border-left:11px solid #1ABB9C}.timeline h2.title{position:relative;font-size:16px;margin:0}.timeline h2.title:before{content:"";position:absolute;left:-23px;top:3px;display:block;width:14px;height:14px;border:3px solid #d2d3d2;border-radius:14px;background:#f9f9f9}.timeline .byline{padding:.25em 0}.byline{font-size:.9375em;line-height:1.3;color:#aab6aa}ul.social li{border:0}.social-sidebar{background:#EDEDED;width:22%}.social-body{border:1px solid #ccc;width:78%}.thumb img{width:50px;height:50px;border-radius:50%}.chat .thumb img{width:27px;height:27px;border-radius:50%}.chat .status{float:left;margin:16px 0 0 -16px;font-size:14px;font-weight:700;width:12px;height:12px;display:block;border:2px solid #FFF;z-index:12312;border-radius:50%}.chart,.percent{display:inline-block}.chat .status.online{background:#1ABB9C}.chat .status.away{background:#F39C12}.chat .status.offline{background:#ccc}.chat .media-body{padding-top:5px}.dashboard_graph .x_title{padding:5px 5px 7px}.dashboard_graph .x_title h3{margin:0;font-weight:400}.chart{position:relative;width:110px;height:110px;margin-top:5px;margin-bottom:5px;text-align:center}.chart canvas{position:absolute;top:0;left:0}.percent{line-height:110px;z-index:2;font-size:18px}.percent:after{content:'%';margin-left:.1em;font-size:.8em}.angular{margin-top:100px}.angular .chart{margin-top:0}.widget{min-width:250px;max-width:310px}.widget_tally_box .btn-group button{text-align:center;color:inherit;font-weight:500;background-color:#f5f5f5;border:1px solid #e7e7e7}ul.widget_tally,ul.widget_tally li{width:100%}ul.widget_tally li{padding:2px 10px 4px;border-bottom:1px solid #ECECEC}ul.widget_tally .month{width:70%;float:left}ul.widget_tally .count{width:30%;float:left;text-align:right}.pie_bg{border-bottom:1px solid rgba(101,204,182,.16);border-radius:4px;filter:progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);filter:progid: DXImageTransform.Microsoft.gradient(enabled=false);padding-bottom:10px;box-shadow:0 4px 6px -6px #222}.widget_tally_box .flex{display:-ms-flexbox;display:flex}ul.widget_profile_box{width:100%;height:42px;padding:3px;background:#ececec;margin-top:40px;margin-left:1px}ul.widget_profile_box li:first-child{width:25%;float:left}ul.widget_profile_box li:first-child a{float:left}ul.widget_profile_box li:last-child{width:25%;float:right}ul.widget_profile_box li:last-child a{float:right}ul.widget_profile_box li a{font-size:22px;text-align:center;width:35px;height:35px;border:1px solid rgba(52,73,94,.44);display:block;border-radius:50%;padding:0}ul.widget_profile_box li a:hover{color:#1ABB9C!important;border:1px solid #26b99a}ul.widget_profile_box li .profile_img{width:85px;height:85px;margin:-28px 0 0}.widget_tally_box p,.widget_tally_box span{text-align:center}.widget_tally_box .name{text-align:center;margin:25px}.widget_tally_box .name_title{text-align:center;margin:5px}.widget_tally_box ul.legend{margin:0}.widget_tally_box ul.legend p,.widget_tally_box ul.legend span{text-align:left}.widget_tally_box ul.legend li .icon{font-size:20px;float:left;width:14px}.widget_tally_box ul.legend li .name{font-size:14px;margin:5px 0 0 14px;text-overflow:ellipsis;float:left}.widget_tally_box ul.legend p{display:inline-block;margin:0}.widget_tally_box ul.verticle_bars li{height:140px;width:23%}.widget .verticle_bars li .progress.vertical.progress_wide{width:65%}ul.count2{width:100%;margin-left:1px;border:1px solid #ddd;border-left:0;border-right:0;padding:10px 0}ul.count2 li{width:30%;text-align:center}ul.count2 li h3{font-weight:400;margin:0}ul.count2 li span{font-weight:300}.divider{border-bottom:1px solid #ddd;margin:10px}.divider-dashed{border-top:1px dashed #e7eaec;background-color:#fff;height:1px;margin:10px 0}ul.messages{padding:0;list-style:none}.tasks li,ul.messages li{border-bottom:1px dotted #e6e6e6;padding:8px 0}img.avatar,ul.messages li img.avatar{height:32px;width:32px;float:left;display:inline-block;border-radius:2px;padding:2px;background:#f7f7f7;border:1px solid #e6e6e6}ul.messages li .message_date{float:right;text-align:right}ul.messages li .message_wrapper{margin-left:50px;margin-right:40px}ul.messages li .message_wrapper h4.heading{font-weight:600;margin:0 0 10px;cursor:pointer;line-height:100%}ul.messages li .message_wrapper blockquote{padding:0 10px;margin:0;border-left:5px solid #eee}ul.user_data li{margin-bottom:6px}ul.user_data li p{margin-bottom:0}ul.user_data li .progress{width:90%}.project_progress .progress{margin-bottom:3px!important;margin-top:5px}.projects .list-inline{margin:0}.profile_title{background:#F5F7FA;border:0;padding:7px 0;display:-ms-flexbox;display:flex}ul.stats-overview{border-bottom:1px solid #e8e8e8;padding-bottom:10px;margin-bottom:10px}ul.stats-overview li{display:inline-block;text-align:center;padding:0 15px;width:30%;font-size:14px;border-right:1px solid #e8e8e8}ul.stats-overview li:last-child{border-right:0}ul.stats-overview li .name{font-size:12px}ul.stats-overview li .value{font-size:14px;font-weight:700;display:block}ul.stats-overview li:first-child{padding-left:0}ul.project_files li{margin-bottom:5px}ul.project_files li a i{width:20px}.project_detail p{margin-bottom:10px}.project_detail p.title{font-weight:700;margin-bottom:0}.avatar img{border-radius:50%;max-width:45px}.pricing{background:#fff}.pricing .title{background:#1ABB9C;height:110px;color:#fff;padding:15px 0 0;text-align:center}.pricing .title h2{text-transform:capitalize;font-size:18px;border-radius:5px 5px 0 0;margin:0;font-weight:400}.notifications a,.tabbed_notifications h2,.view .tools,.view a.info{text-transform:uppercase}.pricing .title h1{font-size:30px;margin:12px}.pricing .title span{background:rgba(51,51,51,.28);padding:2px 5px}.pricing_features{background:#FAFAFA;padding:20px 15px;min-height:230px;font-size:13.5px}.pricing_features ul li{margin-top:10px}.pricing_footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;text-align:center;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.pricing_footer p{font-size:13px;padding:10px 0 2px;display:block}.ui-ribbon-container{position:relative}.ui-ribbon-container .ui-ribbon-wrapper{position:absolute;overflow:hidden;width:85px;height:88px;top:-3px;right:-3px}.ui-ribbon-container.ui-ribbon-primary .ui-ribbon{background-color:#5b90bf}.ui-ribbon-container .ui-ribbon{position:relative;display:block;text-align:center;font-size:15px;font-weight:700;color:#fff;transform:rotate(45deg);padding:7px 0;left:-5px;top:15px;width:120px;line-height:20px;background-color:#555;box-shadow:0 0 3px rgba(0,0,0,.3)}.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:after,.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:before{border-top:2px solid #5b90bf}.ui-ribbon-container .ui-ribbon:before{left:0;bottom:-1px;right:0}.ui-ribbon-container .ui-ribbon:after,.ui-ribbon-container .ui-ribbon:before{position:absolute;content:" ";line-height:0;border-top:2px solid #555;border-left:2px solid transparent;border-right:2px solid transparent}.thumbnail .image{height:120px;overflow:hidden}.caption{padding:9px 5px;background:#F7F7F7}.caption p{margin-bottom:5px}.thumbnail{height:190px;overflow:hidden}.view{overflow:hidden;position:relative;text-align:center;box-shadow:1px 1px 2px #e6e6e6;cursor:default}.dropdown-menu a,.voiceBtn{cursor:pointer}.view .content,.view .mask{position:absolute;width:100%;overflow:hidden;top:0;left:0}.sideways,.view .tools,.view img,.view p{position:relative}.view img{display:block}.view .tools{color:#fff;text-align:center;font-size:17px;padding:3px;background:rgba(0,0,0,.35);margin:43px 0 0}.mask.no-caption .tools{margin:90px 0 0}.view .tools a{display:inline-block;color:#FFF;font-size:18px;font-weight:400;padding:0 4px}.view p{font-family:Georgia,serif;font-size:12px;color:#fff;padding:10px 20px 20px;text-align:center}.view a.info{display:inline-block;padding:7px 14px;background:#000;color:#fff;box-shadow:0 0 1px #000}.view-first img{transition:all .2s linear}.view-first .mask{opacity:0;background-color:rgba(0,0,0,.5);transition:all .4s ease-in-out}.view-first .tools{transform:translateY(-100px);opacity:0;transition:all .2s ease-in-out}.view-first p{transform:translateY(100px);opacity:0;transition:all .2s linear}.view-first:hover img{transform:scale(1.1)}.view-first:hover .mask{opacity:1}.view-first:hover .tools,.view-first:hover p{opacity:1;transform:translateY(0)}.view-first:hover p{transition-delay:.1s}.form-group.has-feedback span{display:block!important}.form-group .btn{margin-bottom:-6px}.input-group-btn .btn{margin-bottom:0}/*!
          + * bootstrap-vertical-tabs - v1.2.1
          + * https://dbtek.github.io/bootstrap-vertical-tabs
          + * 2014-11-07
          + * Copyright (c) 2014 İsmail Demirbilek
          + * License: MIT
          + */.tabs-left,.tabs-right{border-bottom:none;padding-top:2px}.tabs-left{border-right:1px solid #F7F7F7}.tabs-right{border-left:1px solid #F7F7F7}.tabs-left>li,.tabs-right>li{float:none;margin-bottom:2px}.alignleft,.left{float:left}.tabs-left>li{margin-right:-1px}.tabs-left>li>a,.tabs-right>li>a{margin-right:0;background:#F7F7F7;overflow:hidden;text-overflow:ellipsis}.tabs-right>li{margin-left:-1px}.tabs-left>li.active>a,.tabs-left>li.active>a:focus,.tabs-left>li.active>a:hover{border-bottom-color:#F7F7F7;border-right-color:transparent}.tabs-right>li.active>a,.tabs-right>li.active>a:focus,.tabs-right>li.active>a:hover{border-bottom:1px solid #F7F7F7;border-left-color:transparent}.tabs-left>li>a{border-radius:4px 0 0 4px;display:block}.tabs-right>li>a{border-radius:0 4px 4px 0}.sideways{margin-top:50px;border:none}.sideways>li{height:20px;width:120px;margin-bottom:100px}.sideways>li>a{border-bottom:1px solid #ddd;border-right-color:transparent;text-align:center;border-radius:4px 4px 0 0}.sideways>li.active>a,.sideways>li.active>a:focus,.sideways>li.active>a:hover{border-bottom-color:transparent;border-right-color:#ddd;border-left-color:#ddd}.sideways.tabs-left{left:-50px}.sideways.tabs-right{right:-50px}.sideways.tabs-right>li{transform:rotate(90deg)}.sideways.tabs-left>li{transform:rotate(-90deg)}.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{padding:6px;color:#666;background:rgba(243,242,243,.8);border:2px solid rgba(195,194,196,.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:700;margin:.25em 0}.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:.1em 0}.price{font-size:40px;font-weight:400;color:#26B99A;margin:0}.prod_title{border-bottom:1px solid #DFDFDF;padding-bottom:5px;margin:30px 0;font-size:20px;font-weight:400}.product-image img{width:90%}.prod_color li{margin:0 10px}.prod_color li p{margin-bottom:0}.prod_size li{padding:0}.prod_color .color{width:25px;height:25px;border:2px solid rgba(51,51,51,.28)!important;padding:2px;border-radius:50px}.product_gallery a{width:100px;height:100px;float:left;margin:10px;border:1px solid #e5e5e5}.product_gallery a img{width:100%;margin-top:15px}.product_price{margin:20px 0;padding:5px 10px;background-color:#FFF;text-align:left;border:2px dashed #E0E0E0}.price-tax{font-size:18px}.product_social{margin:20px 0}.product_social ul li a i{font-size:35px}.login{background:#F7F7F7}.login .fa-paw{font-size:26px}a.hiddenanchor{display:none}.login_wrapper{right:0;margin:5% auto 0;max-width:350px;position:relative}.cropper .docs-cropped .modal-body>canvas,.cropper .docs-cropped .modal-body>img,.cropper .img-container>img,.cropper .img-preview>img{max-width:100%}.login_form,.registration_form{position:absolute;top:0;width:100%}.registration_form{z-index:21;opacity:0;width:100%}.login_form{z-index:22}#signin:target~.login_wrapper .login_form,#signup:target~.login_wrapper .registration_form{z-index:22;animation-name:fadeInLeft;animation-delay:.1s}#signin:target~.login_wrapper .registration_form,#signup:target~.login_wrapper .login_form{animation-name:fadeOutLeft}.animate{-webkit-animation-duration:.5s;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:both;-moz-animation-duration:.5s;-moz-animation-timing-function:ease;-moz-animation-fill-mode:both;-o-animation-duration:.5s;-o-animation-timing-function:ease;-o-animation-fill-mode:both;-ms-animation-duration:.5s;-ms-animation-timing-function:ease;-ms-animation-fill-mode:both;animation-duration:.5s;animation-timing-function:ease;animation-fill-mode:both}.login_box{padding:20px;margin:auto}.alignleft{margin-right:15px}.alignright{float:right;margin-left:15px}.clearfix:after,form:after{content:".";display:block;height:0;clear:both;visibility:hidden}.login_content{margin:0 auto;padding:25px 0 0;position:relative;text-align:center;text-shadow:0 1px 0 #fff;min-width:280px}.login_content a:hover{text-decoration:underline}.login_content h1{font:400 25px Helvetica,Arial,sans-serif;letter-spacing:-.05em;line-height:20px;margin:10px 0 30px}.login_content h1:after,.login_content h1:before{content:"";height:1px;position:absolute;top:10px;width:20%}.login_content h1:after{background:#7e7e7e;background:linear-gradient(left,#7e7e7e 0,#fff 100%);right:0}.login_content h1:before{background:#7e7e7e;background:linear-gradient(right,#7e7e7e 0,#fff 100%);left:0}.login_content form{margin:20px 0;position:relative}.login_content form input[type=text],.login_content form input[type=email],.login_content form input[type=password]{border-radius:3px;-ms-box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;-o-box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;border:1px solid #c8c8c8;color:#777;margin:0 0 20px;width:100%}.login_content form input[type=text]:focus,.login_content form input[type=email]:focus,.login_content form input[type=password]:focus{-ms-box-shadow:0 0 2px #ed1c24 inset;-o-box-shadow:0 0 2px #ed1c24 inset;box-shadow:0 0 2px #A97AAD inset;background-color:#fff;border:1px solid #A878AF;outline:0}#username{background-position:10px 10px!important}#password{background-position:10px -53px!important}.login_content form div a{font-size:12px;margin:10px 15px 0 0}.reset_pass{margin-top:10px!important}.login_content div .reset_pass{margin-top:13px!important;margin-right:39px;float:right}.separator{border-top:1px solid #D8D8D8;margin-top:10px;padding-top:10px}.button{background:#f7f9fa;background:linear-gradient(top,#f7f9fa 0,#f0f0f0 100%);filter:progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0', GradientType=0);-ms-box-shadow:0 1px 2px rgba(0,0,0,.1) inset;-o-box-shadow:0 1px 2px rgba(0,0,0,.1) inset;box-shadow:0 1px 2px rgba(0,0,0,.1) inset;border-radius:0 0 5px 5px;border-top:1px solid #CFD5D9;padding:15px 0}#content form .submit,.login_content form input[type=submit]{float:left;margin-left:38px}.button a{background:url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat;color:#7E7E7E;font-size:17px;padding:2px 0 2px 40px;text-decoration:none;transition:all .3s ease}.button a:hover{background-position:0 -135px;color:#00aeef}header{width:100%}#nprogress .bar{background:#1ABB9C}#nprogress .peg{box-shadow:0 0 10px #1ABB9C,0 0 5px #1ABB9C}#nprogress .spinner-icon{border-top-color:#1ABB9C;border-left-color:#1ABB9C}.editor-wrapper{min-height:250px;background-color:#fff;border-collapse:separate;border:1px solid #ccc;padding:4px;box-sizing:content-box;box-shadow:rgba(0,0,0,.07451) 0 1px 1px 0 inset;overflow:scroll;outline:0;border-radius:3px}.voiceBtn{width:20px;color:transparent;background-color:transparent;transform:scale(2,2);-webkit-transform:scale(2,2);-moz-transform:scale(2,2);border:transparent;box-shadow:none;-webkit-box-shadow:none}div[data-role=editor-toolbar]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #ccc;border-radius:0;min-height:38px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#73879C;padding-top:5px}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-top:3px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:36px}.select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-selection--multiple .select2-selection__clear{margin-top:2px;border:none;border-radius:0;padding:3px 5px}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #ccc}.switchery{width:32px;height:20px}.switchery>small{width:20px;height:20px}fieldset{border:none;margin:0;padding:0}.cropper .img-container,.cropper .img-preview{background-color:#f7f7f7;width:100%;text-align:center}.cropper .img-container{min-height:200px;max-height:516px;margin-bottom:20px}.cropper .docs-data>.input-group,.cropper .docs-toggles>.btn,.cropper .docs-toggles>.btn-group,.cropper .docs-toggles>.dropdown,.cropper .img-preview{margin-bottom:10px}@media (min-width:768px){.cropper .img-container{min-height:516px}}.cropper .docs-preview{margin-right:-15px}.cropper .img-preview{float:left;margin-right:10px;overflow:hidden}.cropper .preview-lg{width:263px;height:148px}.cropper .preview-md{width:139px;height:78px}.cropper .preview-sm{width:69px;height:39px}.cropper .preview-xs{width:35px;height:20px;margin-right:0}.cropper .docs-data>.input-group>label{min-width:80px}.cropper .docs-data>.input-group>span{min-width:50px}.cropper .docs-buttons>.btn,.cropper .docs-buttons>.btn-group,.cropper .docs-buttons>.form-control{margin-right:5px;margin-bottom:10px}.cropper .docs-tooltip{display:block;margin:-6px -12px;padding:6px 12px}.cropper .docs-tooltip>.icon{margin:0 -3px;vertical-align:top}.cropper .tooltip-inner{white-space:normal}.cropper .btn-toggle .tooltip-inner,.cropper .btn-upload .tooltip-inner{white-space:nowrap}.cropper .btn-toggle{padding:6px}.cropper .btn-toggle>.docs-tooltip{margin:-6px;padding:6px}@media (max-width:400px){.cropper .btn-group-crop{margin-right:-15px!important}.cropper .btn-group-crop>.btn{padding-left:5px;padding-right:5px}.cropper .btn-group-crop .docs-tooltip{margin-left:-5px;margin-right:-5px;padding-left:5px;padding-right:5px}}.cropper .docs-options .dropdown-menu{width:100%}.cropper .docs-options .dropdown-menu>li{padding:3px 20px}.cropper .docs-options .dropdown-menu>li:hover{background-color:#f7f7f7}.cropper .docs-options .dropdown-menu>li>label{display:block}.cropper .docs-cropped .modal-body{text-align:center}.cropper .docs-diagram .modal-dialog{max-width:352px}.cropper .docs-cropped canvas{max-width:100%}.form_wizard .stepContainer{display:block;position:relative;margin:0;padding:0;border:0 solid #CCC;overflow-x:hidden}.wizard_horizontal ul.wizard_steps{display:table;list-style:none;position:relative;width:100%;margin:0 0 20px}.wizard_horizontal ul.wizard_steps li{display:table-cell;text-align:center}.wizard_horizontal ul.wizard_steps li a,.wizard_horizontal ul.wizard_steps li:hover{display:block;position:relative;-moz-opacity:1;filter:alpha(opacity=100);opacity:1;color:#666}.wizard_horizontal ul.wizard_steps li a:before{content:"";position:absolute;height:4px;background:#ccc;top:20px;width:100%;z-index:4;left:0}.wizard_horizontal ul.wizard_steps li a.disabled .step_no{background:#ccc}.wizard_horizontal ul.wizard_steps li a .step_no{width:40px;height:40px;line-height:40px;border-radius:100px;display:block;margin:0 auto 5px;font-size:16px;text-align:center;position:relative;z-index:5}.step_no,.wizard_horizontal ul.wizard_steps li a.selected:before{background:#34495E;color:#fff}.wizard_horizontal ul.wizard_steps li a.done .step_no,.wizard_horizontal ul.wizard_steps li a.done:before{background:#1ABB9C;color:#fff}.wizard_horizontal ul.wizard_steps li:first-child a:before{left:50%}.wizard_horizontal ul.wizard_steps li:last-child a:before{right:50%;width:50%;left:auto}.wizard_verticle .stepContainer{width:80%;float:left;padding:0 10px}.actionBar{width:100%;border-top:1px solid #ddd;padding:10px 5px;text-align:right;margin-top:10px}.actionBar .buttonDisabled{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.actionBar a{margin:0 3px}.wizard_verticle .wizard_content{width:80%;float:left;padding-left:20px}.wizard_verticle ul.wizard_steps{display:table;list-style:none;position:relative;width:20%;float:left;margin:0 0 20px}.wizard_verticle ul.wizard_steps li{display:list-item;text-align:center}.wizard_verticle ul.wizard_steps li a{height:80px}.wizard_verticle ul.wizard_steps li a:first-child{margin-top:20px}.wizard_verticle ul.wizard_steps li a,.wizard_verticle ul.wizard_steps li:hover{display:block;position:relative;-moz-opacity:1;filter:alpha(opacity=100);opacity:1;color:#666}.wizard_verticle ul.wizard_steps li a:before{content:"";position:absolute;height:100%;background:#ccc;top:20px;width:4px;z-index:4;left:49%}.wizard_verticle ul.wizard_steps li a.disabled .step_no{background:#ccc}.wizard_verticle ul.wizard_steps li a .step_no{width:40px;height:40px;line-height:40px;border-radius:100px;display:block;margin:0 auto 5px;font-size:16px;text-align:center;position:relative;z-index:5}.progress.progress_sm,.progress.progress_sm .progress-bar{height:10px!important}.step_no,.wizard_verticle ul.wizard_steps li a.selected:before{background:#34495E;color:#fff}.wizard_verticle ul.wizard_steps li a.done .step_no,.wizard_verticle ul.wizard_steps li a.done:before{background:#1ABB9C;color:#fff}.wizard_verticle ul.wizard_steps li:first-child a:before{left:49%}.wizard_verticle ul.wizard_steps li:last-child a:before{left:49%;left:auto;width:0}.form_wizard .loader,.form_wizard .msgBox{display:none}.progress{border-radius:0}.progress-bar-info{background-color:#3498DB}.progress-bar-success{background-color:#26B99A}.progress_summary .progress{margin:5px 0 12px!important}.progress_summary .row{margin-bottom:5px}.progress_summary .row .col-xs-2{padding:0}.progress_summary .data span,.progress_summary .more_info span{text-align:right;float:right}.progress_summary p{margin-bottom:3px;width:100%}.progress_title .left{float:left;text-align:left}.progress_title .right{float:right;text-align:right;font-weight:300}.progress.progress_sm{border-radius:0;margin-bottom:18px}.dashboard_graph p{margin:0 0 4px}ul.verticle_bars{width:100%}ul.verticle_bars li{width:23%;height:200px;margin:0}.progress.vertical.progress_wide{width:35px}.alert-success{color:#fff;background-color:rgba(38,185,154,.88);border-color:rgba(38,185,154,.88)}.alert-info{color:#E9EDEF;background-color:rgba(52,152,219,.88);border-color:rgba(52,152,219,.88)}.alert-warning{color:#E9EDEF;background-color:rgba(243,156,18,.88);border-color:rgba(243,156,18,.88)}.alert-danger,.alert-error{color:#E9EDEF;background-color:rgba(231,76,60,.88);border-color:rgba(231,76,60,.88)}.ui-pnotify.dark .ui-pnotify-container{color:#E9EDEF;background-color:rgba(52,73,94,.88);border-color:rgba(52,73,94,.88)}.custom-notifications{position:fixed;margin:15px;right:0;float:right;width:400px;z-index:4000;bottom:0}ul.notifications{float:right;display:block;margin-bottom:7px;padding:0;width:100%}.notifications li{float:right;margin:3px;width:36px;box-shadow:3px 3px 3px rgba(0,0,0,.3)}.notifications li:last-child{margin-left:0}.notifications a{display:block;text-align:center;text-decoration:none;padding:9px 8px}.tabbed_notifications .text{padding:5px 15px;height:140px;border-radius:7px;box-shadow:6px 6px 6px rgba(0,0,0,.3)}.tabbed_notifications div p{display:inline-block}.tabbed_notifications h2{font-weight:700;width:80%;float:left;height:20px;text-overflow:ellipsis;overflow:hidden;display:block}.tabbed_notifications .close{padding:5px;color:#E9EDEF;float:right;opacity:1}.fc-state-default{background:#f5f5f5;color:#73879C}.fc-state-active,.fc-state-down{color:#333;background:#ccc}.dropzone{min-height:300px;border:1px solid #e5e5e5}.main_menu .label{line-height:11px;margin-top:4px}@media (max-width:460px){.dataTables_wrapper .col-sm-6{width:100%;margin-bottom:5px}.dataTables_wrapper .col-sm-6 .dataTables_filter{float:none}}@media (max-width:767px){.dataTables_length{float:none}}.daterangepicker.xdisplay{width:228px}.dataTables_wrapper>.row{overflow:auto!important}
          +
          +
          +
          + td, th { text-align: center !important; padding: 3px 0px !important; vertical-align:middle !important;}
          \ No newline at end of file
          diff --git a/public/theme/build/js/custom.js b/public/theme/build/js/custom.js
          new file mode 100644
          index 0000000..16d5117
          --- /dev/null
          +++ b/public/theme/build/js/custom.js
          @@ -0,0 +1,5067 @@
          +/**
          + * Resize function without multiple trigger
          + * 
          + * Usage:
          + * $(window).smartresize(function(){  
          + *     // code here
          + * });
          + */
          +(function($,sr){
          +    // debouncing function from John Hann
          +    // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
          +    var debounce = function (func, threshold, execAsap) {
          +      var timeout;
          +
          +        return function debounced () {
          +            var obj = this, args = arguments;
          +            function delayed () {
          +                if (!execAsap)
          +                    func.apply(obj, args); 
          +                timeout = null; 
          +            }
          +
          +            if (timeout)
          +                clearTimeout(timeout);
          +            else if (execAsap)
          +                func.apply(obj, args);
          +
          +            timeout = setTimeout(delayed, threshold || 100); 
          +        };
          +    };
          +
          +    // smartresize 
          +    jQuery.fn[sr] = function(fn){  return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
          +
          +})(jQuery,'smartresize');
          +/**
          + * To change this license header, choose License Headers in Project Properties.
          + * To change this template file, choose Tools | Templates
          + * and open the template in the editor.
          + */
          +
          +var CURRENT_URL = window.location.href.split('#')[0].split('?')[0],
          +    $BODY = $('body'),
          +    $MENU_TOGGLE = $('#menu_toggle'),
          +    $SIDEBAR_MENU = $('#sidebar-menu'),
          +    $SIDEBAR_FOOTER = $('.sidebar-footer'),
          +    $LEFT_COL = $('.left_col'),
          +    $RIGHT_COL = $('.right_col'),
          +    $NAV_MENU = $('.nav_menu'),
          +    $FOOTER = $('footer');
          +
          +	
          +	
          +// Sidebar
          +function init_sidebar() {
          +// TODO: This is some kind of easy fix, maybe we can improve this
          +var setContentHeight = function () {
          +	// reset height
          +	$RIGHT_COL.css('min-height', $(window).height());
          +
          +	var bodyHeight = $BODY.outerHeight(),
          +		footerHeight = $BODY.hasClass('footer_fixed') ? -10 : $FOOTER.height(),
          +		leftColHeight = $LEFT_COL.eq(1).height() + $SIDEBAR_FOOTER.height(),
          +		contentHeight = bodyHeight < leftColHeight ? leftColHeight : bodyHeight;
          +
          +	// normalize content
          +	contentHeight -= $NAV_MENU.height() + footerHeight;
          +
          +	$RIGHT_COL.css('min-height', contentHeight);
          +};
          +
          +  $SIDEBAR_MENU.find('a').on('click', function(ev) {
          +	  console.log('clicked - sidebar_menu');
          +        var $li = $(this).parent();
          +
          +        if ($li.is('.active')) {
          +            $li.removeClass('active active-sm');
          +            $('ul:first', $li).slideUp(function() {
          +                setContentHeight();
          +            });
          +        } else {
          +            // prevent closing menu if we are on child menu
          +            if (!$li.parent().is('.child_menu')) {
          +                $SIDEBAR_MENU.find('li').removeClass('active active-sm');
          +                $SIDEBAR_MENU.find('li ul').slideUp();
          +            }else
          +            {
          +				if ( $BODY.is( ".nav-sm" ) )
          +				{
          +					$SIDEBAR_MENU.find( "li" ).removeClass( "active active-sm" );
          +					$SIDEBAR_MENU.find( "li ul" ).slideUp();
          +				}
          +			}
          +            $li.addClass('active');
          +
          +            $('ul:first', $li).slideDown(function() {
          +                setContentHeight();
          +            });
          +        }
          +    });
          +
          +// toggle small or large menu 
          +$MENU_TOGGLE.on('click', function() {
          +		console.log('clicked - menu toggle');
          +		
          +		if ($BODY.hasClass('nav-md')) {
          +			$SIDEBAR_MENU.find('li.active ul').hide();
          +			$SIDEBAR_MENU.find('li.active').addClass('active-sm').removeClass('active');
          +		} else {
          +			$SIDEBAR_MENU.find('li.active-sm ul').show();
          +			$SIDEBAR_MENU.find('li.active-sm').addClass('active').removeClass('active-sm');
          +		}
          +
          +	$BODY.toggleClass('nav-md nav-sm');
          +
          +	setContentHeight();
          +});
          +
          +	// check active menu
          +	$SIDEBAR_MENU.find('a[href="' + CURRENT_URL + '"]').parent('li').addClass('current-page');
          +
          +	$SIDEBAR_MENU.find('a').filter(function () {
          +		return this.href == CURRENT_URL;
          +	}).parent('li').addClass('current-page').parents('ul').slideDown(function() {
          +		setContentHeight();
          +	}).parent().addClass('active');
          +
          +	// recompute content when resizing
          +	$(window).smartresize(function(){  
          +		setContentHeight();
          +	});
          +
          +	setContentHeight();
          +
          +	// fixed sidebar
          +	if ($.fn.mCustomScrollbar) {
          +		$('.menu_fixed').mCustomScrollbar({
          +			autoHideScrollbar: true,
          +			theme: 'minimal',
          +			mouseWheel:{ preventDefault: true }
          +		});
          +	}
          +};
          +// /Sidebar
          +
          +	var randNum = function() {
          +	  return (Math.floor(Math.random() * (1 + 40 - 20))) + 20;
          +	};
          +
          +
          +// Panel toolbox
          +$(document).ready(function() {
          +    $('.collapse-link').on('click', function() {
          +        var $BOX_PANEL = $(this).closest('.x_panel'),
          +            $ICON = $(this).find('i'),
          +            $BOX_CONTENT = $BOX_PANEL.find('.x_content');
          +        
          +        // fix for some div with hardcoded fix class
          +        if ($BOX_PANEL.attr('style')) {
          +            $BOX_CONTENT.slideToggle(200, function(){
          +                $BOX_PANEL.removeAttr('style');
          +            });
          +        } else {
          +            $BOX_CONTENT.slideToggle(200); 
          +            $BOX_PANEL.css('height', 'auto');  
          +        }
          +
          +        $ICON.toggleClass('fa-chevron-up fa-chevron-down');
          +    });
          +
          +    $('.close-link').click(function () {
          +        var $BOX_PANEL = $(this).closest('.x_panel');
          +
          +        $BOX_PANEL.remove();
          +    });
          +});
          +// /Panel toolbox
          +
          +// Tooltip
          +$(document).ready(function() {
          +    $('[data-toggle="tooltip"]').tooltip({
          +        container: 'body'
          +    });
          +});
          +// /Tooltip
          +
          +// Progressbar
          +if ($(".progress .progress-bar")[0]) {
          +    $('.progress .progress-bar').progressbar();
          +}
          +// /Progressbar
          +
          +// Switchery
          +$(document).ready(function() {
          +    if ($(".js-switch")[0]) {
          +        var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch'));
          +        elems.forEach(function (html) {
          +            var switchery = new Switchery(html, {
          +                color: '#26B99A'
          +            });
          +        });
          +    }
          +});
          +// /Switchery
          +
          +
          +// iCheck
          +$(document).ready(function() {
          +    if ($("input.flat")[0]) {
          +        $(document).ready(function () {
          +            $('input.flat').iCheck({
          +                checkboxClass: 'icheckbox_flat-green',
          +                radioClass: 'iradio_flat-green'
          +            });
          +        });
          +    }
          +});
          +// /iCheck
          +
          +// Table
          +$('table input').on('ifChecked', function () {
          +    checkState = '';
          +    $(this).parent().parent().parent().addClass('selected');
          +    countChecked();
          +});
          +$('table input').on('ifUnchecked', function () {
          +    checkState = '';
          +    $(this).parent().parent().parent().removeClass('selected');
          +    countChecked();
          +});
          +
          +var checkState = '';
          +
          +$('.bulk_action input').on('ifChecked', function () {
          +    checkState = '';
          +    $(this).parent().parent().parent().addClass('selected');
          +    countChecked();
          +});
          +$('.bulk_action input').on('ifUnchecked', function () {
          +    checkState = '';
          +    $(this).parent().parent().parent().removeClass('selected');
          +    countChecked();
          +});
          +$('.bulk_action input#check-all').on('ifChecked', function () {
          +    checkState = 'all';
          +    countChecked();
          +});
          +$('.bulk_action input#check-all').on('ifUnchecked', function () {
          +    checkState = 'none';
          +    countChecked();
          +});
          +
          +function countChecked() {
          +    if (checkState === 'all') {
          +        $(".bulk_action input[name='table_records']").iCheck('check');
          +    }
          +    if (checkState === 'none') {
          +        $(".bulk_action input[name='table_records']").iCheck('uncheck');
          +    }
          +
          +    var checkCount = $(".bulk_action input[name='table_records']:checked").length;
          +
          +    if (checkCount) {
          +        $('.column-title').hide();
          +        $('.bulk-actions').show();
          +        $('.action-cnt').html(checkCount + ' Records Selected');
          +    } else {
          +        $('.column-title').show();
          +        $('.bulk-actions').hide();
          +    }
          +}
          +
          +
          +
          +// Accordion
          +$(document).ready(function() {
          +    $(".expand").on("click", function () {
          +        $(this).next().slideToggle(200);
          +        $expand = $(this).find(">:first-child");
          +
          +        if ($expand.text() == "+") {
          +            $expand.text("-");
          +        } else {
          +            $expand.text("+");
          +        }
          +    });
          +});
          +
          +// NProgress
          +if (typeof NProgress != 'undefined') {
          +    $(document).ready(function () {
          +        NProgress.start();
          +    });
          +
          +    $(window).load(function () {
          +        NProgress.done();
          +    });
          +}
          +
          +	
          +	  //hover and retain popover when on popover content
          +        var originalLeave = $.fn.popover.Constructor.prototype.leave;
          +        $.fn.popover.Constructor.prototype.leave = function(obj) {
          +          var self = obj instanceof this.constructor ?
          +            obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
          +          var container, timeout;
          +
          +          originalLeave.call(this, obj);
          +
          +          if (obj.currentTarget) {
          +            container = $(obj.currentTarget).siblings('.popover');
          +            timeout = self.timeout;
          +            container.one('mouseenter', function() {
          +              //We entered the actual popover – call off the dogs
          +              clearTimeout(timeout);
          +              //Let's monitor popover content instead
          +              container.one('mouseleave', function() {
          +                $.fn.popover.Constructor.prototype.leave.call(self, self);
          +              });
          +            });
          +          }
          +        };
          +
          +        $('body').popover({
          +          selector: '[data-popover]',
          +          trigger: 'click hover',
          +          delay: {
          +            show: 50,
          +            hide: 400
          +          }
          +        });
          +
          +
          +	function gd(year, month, day) {
          +		return new Date(year, month - 1, day).getTime();
          +	}
          +	  
          +	
          +	function init_flot_chart(){
          +		
          +		if( typeof ($.plot) === 'undefined'){ return; }
          +		
          +		console.log('init_flot_chart');
          +		
          +		
          +		
          +		var arr_data1 = [
          +			[gd(2012, 1, 1), 17],
          +			[gd(2012, 1, 2), 74],
          +			[gd(2012, 1, 3), 6],
          +			[gd(2012, 1, 4), 39],
          +			[gd(2012, 1, 5), 20],
          +			[gd(2012, 1, 6), 85],
          +			[gd(2012, 1, 7), 7]
          +		];
          +
          +		var arr_data2 = [
          +		  [gd(2012, 1, 1), 82],
          +		  [gd(2012, 1, 2), 23],
          +		  [gd(2012, 1, 3), 66],
          +		  [gd(2012, 1, 4), 9],
          +		  [gd(2012, 1, 5), 119],
          +		  [gd(2012, 1, 6), 6],
          +		  [gd(2012, 1, 7), 9]
          +		];
          +		
          +		var arr_data3 = [
          +			[0, 1],
          +			[1, 9],
          +			[2, 6],
          +			[3, 10],
          +			[4, 5],
          +			[5, 17],
          +			[6, 6],
          +			[7, 10],
          +			[8, 7],
          +			[9, 11],
          +			[10, 35],
          +			[11, 9],
          +			[12, 12],
          +			[13, 5],
          +			[14, 3],
          +			[15, 4],
          +			[16, 9]
          +		];
          +		
          +		var chart_plot_02_data = [];
          +		
          +		var chart_plot_03_data = [
          +			[0, 1],
          +			[1, 9],
          +			[2, 6],
          +			[3, 10],
          +			[4, 5],
          +			[5, 17],
          +			[6, 6],
          +			[7, 10],
          +			[8, 7],
          +			[9, 11],
          +			[10, 35],
          +			[11, 9],
          +			[12, 12],
          +			[13, 5],
          +			[14, 3],
          +			[15, 4],
          +			[16, 9]
          +		];
          +		
          +		
          +		for (var i = 0; i < 30; i++) {
          +		  chart_plot_02_data.push([new Date(Date.today().add(i).days()).getTime(), randNum() + i + i + 10]);
          +		}
          +		
          +		
          +		var chart_plot_01_settings = {
          +          series: {
          +            lines: {
          +              show: false,
          +              fill: true
          +            },
          +            splines: {
          +              show: true,
          +              tension: 0.4,
          +              lineWidth: 1,
          +              fill: 0.4
          +            },
          +            points: {
          +              radius: 0,
          +              show: true
          +            },
          +            shadowSize: 2
          +          },
          +          grid: {
          +            verticalLines: true,
          +            hoverable: true,
          +            clickable: true,
          +            tickColor: "#d5d5d5",
          +            borderWidth: 1,
          +            color: '#fff'
          +          },
          +          colors: ["rgba(38, 185, 154, 0.38)", "rgba(3, 88, 106, 0.38)"],
          +          xaxis: {
          +            tickColor: "rgba(51, 51, 51, 0.06)",
          +            mode: "time",
          +            tickSize: [1, "day"],
          +            //tickLength: 10,
          +            axisLabel: "Date",
          +            axisLabelUseCanvas: true,
          +            axisLabelFontSizePixels: 12,
          +            axisLabelFontFamily: 'Verdana, Arial',
          +            axisLabelPadding: 10
          +          },
          +          yaxis: {
          +            ticks: 8,
          +            tickColor: "rgba(51, 51, 51, 0.06)",
          +          },
          +          tooltip: false
          +        }
          +		
          +		var chart_plot_02_settings = {
          +			grid: {
          +				show: true,
          +				aboveData: true,
          +				color: "#3f3f3f",
          +				labelMargin: 10,
          +				axisMargin: 0,
          +				borderWidth: 0,
          +				borderColor: null,
          +				minBorderMargin: 5,
          +				clickable: true,
          +				hoverable: true,
          +				autoHighlight: true,
          +				mouseActiveRadius: 100
          +			},
          +			series: {
          +				lines: {
          +					show: true,
          +					fill: true,
          +					lineWidth: 2,
          +					steps: false
          +				},
          +				points: {
          +					show: true,
          +					radius: 4.5,
          +					symbol: "circle",
          +					lineWidth: 3.0
          +				}
          +			},
          +			legend: {
          +				position: "ne",
          +				margin: [0, -25],
          +				noColumns: 0,
          +				labelBoxBorderColor: null,
          +				labelFormatter: function(label, series) {
          +					return label + '  ';
          +				},
          +				width: 40,
          +				height: 1
          +			},
          +			colors: ['#96CA59', '#3F97EB', '#72c380', '#6f7a8a', '#f7cb38', '#5a8022', '#2c7282'],
          +			shadowSize: 0,
          +			tooltip: true,
          +			tooltipOpts: {
          +				content: "%s: %y.0",
          +				xDateFormat: "%d/%m",
          +			shifts: {
          +				x: -30,
          +				y: -50
          +			},
          +			defaultTheme: false
          +			},
          +			yaxis: {
          +				min: 0
          +			},
          +			xaxis: {
          +				mode: "time",
          +				minTickSize: [1, "day"],
          +				timeformat: "%d/%m/%y",
          +				min: chart_plot_02_data[0][0],
          +				max: chart_plot_02_data[20][0]
          +			}
          +		};	
          +	
          +		var chart_plot_03_settings = {
          +			series: {
          +				curvedLines: {
          +					apply: true,
          +					active: true,
          +					monotonicFit: true
          +				}
          +			},
          +			colors: ["#26B99A"],
          +			grid: {
          +				borderWidth: {
          +					top: 0,
          +					right: 0,
          +					bottom: 1,
          +					left: 1
          +				},
          +				borderColor: {
          +					bottom: "#7F8790",
          +					left: "#7F8790"
          +				}
          +			}
          +		};
          +        
          +		
          +        if ($("#chart_plot_01").length){
          +			console.log('Plot1');
          +			
          +			$.plot( $("#chart_plot_01"), [ arr_data1, arr_data2 ],  chart_plot_01_settings );
          +		}
          +		
          +		
          +		if ($("#chart_plot_02").length){
          +			console.log('Plot2');
          +			
          +			$.plot( $("#chart_plot_02"), 
          +			[{ 
          +				label: "Email Sent", 
          +				data: chart_plot_02_data, 
          +				lines: { 
          +					fillColor: "rgba(150, 202, 89, 0.12)" 
          +				}, 
          +				points: { 
          +					fillColor: "#fff" } 
          +			}], chart_plot_02_settings);
          +			
          +		}
          +		
          +		if ($("#chart_plot_03").length){
          +			console.log('Plot3');
          +			
          +			
          +			$.plot($("#chart_plot_03"), [{
          +				label: "Registrations",
          +				data: chart_plot_03_data,
          +				lines: {
          +					fillColor: "rgba(150, 202, 89, 0.12)"
          +				}, 
          +				points: {
          +					fillColor: "#fff"
          +				}
          +			}], chart_plot_03_settings);
          +			
          +		};
          +	  
          +	} 
          +	
          +		
          +	/* STARRR */
          +			
          +	function init_starrr() {
          +		
          +		if( typeof (starrr) === 'undefined'){ return; }
          +		console.log('init_starrr');
          +		
          +		$(".stars").starrr();
          +
          +		$('.stars-existing').starrr({
          +		  rating: 4
          +		});
          +
          +		$('.stars').on('starrr:change', function (e, value) {
          +		  $('.stars-count').html(value);
          +		});
          +
          +		$('.stars-existing').on('starrr:change', function (e, value) {
          +		  $('.stars-count-existing').html(value);
          +		});
          +		
          +	  };
          +	
          +	
          +	function init_JQVmap(){
          +
          +		//console.log('check init_JQVmap [' + typeof (VectorCanvas) + '][' + typeof (jQuery.fn.vectorMap) + ']' );	
          +		
          +		if(typeof (jQuery.fn.vectorMap) === 'undefined'){ return; }
          +		
          +		console.log('init_JQVmap');
          +	     
          +			if ($('#world-map-gdp').length ){
          +		 
          +				$('#world-map-gdp').vectorMap({
          +					map: 'world_en',
          +					backgroundColor: null,
          +					color: '#ffffff',
          +					hoverOpacity: 0.7,
          +					selectedColor: '#666666',
          +					enableZoom: true,
          +					showTooltip: true,
          +					values: sample_data,
          +					scaleColors: ['#E6F2F0', '#149B7E'],
          +					normalizeFunction: 'polynomial'
          +				});
          +			
          +			}
          +			
          +			if ($('#usa_map').length ){
          +			
          +				$('#usa_map').vectorMap({
          +					map: 'usa_en',
          +					backgroundColor: null,
          +					color: '#ffffff',
          +					hoverOpacity: 0.7,
          +					selectedColor: '#666666',
          +					enableZoom: true,
          +					showTooltip: true,
          +					values: sample_data,
          +					scaleColors: ['#E6F2F0', '#149B7E'],
          +					normalizeFunction: 'polynomial'
          +				});
          +			
          +			}
          +			
          +	};
          +			
          +	    
          +	function init_skycons(){
          +				
          +			if( typeof (Skycons) === 'undefined'){ return; }
          +			console.log('init_skycons');
          +		
          +			var icons = new Skycons({
          +				"color": "#73879C"
          +			  }),
          +			  list = [
          +				"clear-day", "clear-night", "partly-cloudy-day",
          +				"partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind",
          +				"fog"
          +			  ],
          +			  i;
          +
          +			for (i = list.length; i--;)
          +			  icons.set(list[i], list[i]);
          +
          +			icons.play();
          +	
          +	}  
          +	   
          +	   
          +	function init_chart_doughnut(){
          +				
          +		if( typeof (Chart) === 'undefined'){ return; }
          +		
          +		console.log('init_chart_doughnut');
          +	 
          +		if ($('.canvasDoughnut').length){
          +			
          +		var chart_doughnut_settings = {
          +				type: 'doughnut',
          +				tooltipFillColor: "rgba(51, 51, 51, 0.55)",
          +				data: {
          +					labels: [
          +						"Symbian",
          +						"Blackberry",
          +						"Other",
          +						"Android",
          +						"IOS"
          +					],
          +					datasets: [{
          +						data: [15, 20, 30, 10, 30],
          +						backgroundColor: [
          +							"#BDC3C7",
          +							"#9B59B6",
          +							"#E74C3C",
          +							"#26B99A",
          +							"#3498DB"
          +						],
          +						hoverBackgroundColor: [
          +							"#CFD4D8",
          +							"#B370CF",
          +							"#E95E4F",
          +							"#36CAAB",
          +							"#49A9EA"
          +						]
          +					}]
          +				},
          +				options: { 
          +					legend: false, 
          +					responsive: false 
          +				}
          +			}
          +		
          +			$('.canvasDoughnut').each(function(){
          +				
          +				var chart_element = $(this);
          +				var chart_doughnut = new Chart( chart_element, chart_doughnut_settings);
          +				
          +			});			
          +		
          +		}  
          +	   
          +	}
          +	   
          +	function init_gauge() {
          +			
          +		if( typeof (Gauge) === 'undefined'){ return; }
          +		
          +		console.log('init_gauge [' + $('.gauge-chart').length + ']');
          +		
          +		console.log('init_gauge');
          +		
          +
          +		  var chart_gauge_settings = {
          +		  lines: 12,
          +		  angle: 0,
          +		  lineWidth: 0.4,
          +		  pointer: {
          +			  length: 0.75,
          +			  strokeWidth: 0.042,
          +			  color: '#1D212A'
          +		  },
          +		  limitMax: 'false',
          +		  colorStart: '#1ABC9C',
          +		  colorStop: '#1ABC9C',
          +		  strokeColor: '#F0F3F3',
          +		  generateGradient: true
          +	  };
          +		
          +		
          +		if ($('#chart_gauge_01').length){ 
          +		
          +			var chart_gauge_01_elem = document.getElementById('chart_gauge_01');
          +			var chart_gauge_01 = new Gauge(chart_gauge_01_elem).setOptions(chart_gauge_settings);
          +			
          +		}	
          +		
          +		
          +		if ($('#gauge-text').length){ 
          +		
          +			chart_gauge_01.maxValue = 6000;
          +			chart_gauge_01.animationSpeed = 32;
          +			chart_gauge_01.set(3200);
          +			chart_gauge_01.setTextField(document.getElementById("gauge-text"));
          +		
          +		}
          +		
          +		if ($('#chart_gauge_02').length){
          +		
          +			var chart_gauge_02_elem = document.getElementById('chart_gauge_02');
          +			var chart_gauge_02 = new Gauge(chart_gauge_02_elem).setOptions(chart_gauge_settings);
          +			
          +		}
          +		
          +		
          +		if ($('#gauge-text2').length){
          +			
          +			chart_gauge_02.maxValue = 9000;
          +			chart_gauge_02.animationSpeed = 32;
          +			chart_gauge_02.set(2400);
          +			chart_gauge_02.setTextField(document.getElementById("gauge-text2"));
          +		
          +		}
          +	
          +	
          +	}   
          +	   	   
          +	/* SPARKLINES */
          +			
          +		function init_sparklines() {
          +			
          +			if(typeof (jQuery.fn.sparkline) === 'undefined'){ return; }
          +			console.log('init_sparklines'); 
          +			
          +			
          +			$(".sparkline_one").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
          +				type: 'bar',
          +				height: '125',
          +				barWidth: 13,
          +				colorMap: {
          +					'7': '#a1a1a1'
          +				},
          +				barSpacing: 2,
          +				barColor: '#26B99A'
          +			});
          +			
          +			
          +			$(".sparkline_two").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
          +				type: 'bar',
          +				height: '40',
          +				barWidth: 9,
          +				colorMap: {
          +					'7': '#a1a1a1'	
          +				},
          +				barSpacing: 2,
          +				barColor: '#26B99A'
          +			});
          +			
          +			
          +			$(".sparkline_three").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
          +				type: 'line',
          +				width: '200',
          +				height: '40',
          +				lineColor: '#26B99A',
          +				fillColor: 'rgba(223, 223, 223, 0.57)',
          +				lineWidth: 2,
          +				spotColor: '#26B99A',
          +				minSpotColor: '#26B99A'
          +			});
          +			
          +			
          +			$(".sparkline11").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3], {
          +				type: 'bar',
          +				height: '40',
          +				barWidth: 8,
          +				colorMap: {
          +					'7': '#a1a1a1'
          +				},
          +				barSpacing: 2,
          +				barColor: '#26B99A'
          +			});
          +			
          +			
          +			$(".sparkline22").sparkline([2, 4, 3, 4, 7, 5, 4, 3, 5, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6], {
          +				type: 'line',
          +				height: '40',
          +				width: '200',
          +				lineColor: '#26B99A',
          +				fillColor: '#ffffff',
          +				lineWidth: 3,
          +				spotColor: '#34495E',
          +				minSpotColor: '#34495E'
          +			});
          +	
          +	
          +			$(".sparkline_bar").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
          +				type: 'bar',
          +				colorMap: {
          +					'7': '#a1a1a1'
          +				},
          +				barColor: '#26B99A'
          +			});
          +			
          +			
          +			$(".sparkline_area").sparkline([5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7], {
          +				type: 'line',
          +				lineColor: '#26B99A',
          +				fillColor: '#26B99A',
          +				spotColor: '#4578a0',
          +				minSpotColor: '#728fb2',
          +				maxSpotColor: '#6d93c4',
          +				highlightSpotColor: '#ef5179',
          +				highlightLineColor: '#8ba8bf',
          +				spotRadius: 2.5,
          +				width: 85
          +			});
          +			
          +			
          +			$(".sparkline_line").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
          +				type: 'line',
          +				lineColor: '#26B99A',
          +				fillColor: '#ffffff',
          +				width: 85,
          +				spotColor: '#34495E',
          +				minSpotColor: '#34495E'
          +			});
          +			
          +			
          +			$(".sparkline_pie").sparkline([1, 1, 2, 1], {
          +				type: 'pie',
          +				sliceColors: ['#26B99A', '#ccc', '#75BCDD', '#D66DE2']
          +			});
          +			
          +			
          +			$(".sparkline_discreet").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 2, 4, 3, 7, 8, 9, 7, 6, 4, 3], {
          +				type: 'discrete',
          +				barWidth: 3,
          +				lineColor: '#26B99A',
          +				width: '85',
          +			});
          +
          +			
          +		};   
          +	   
          +	   
          +	   /* AUTOCOMPLETE */
          +			
          +		function init_autocomplete() {
          +			
          +			if( typeof (autocomplete) === 'undefined'){ return; }
          +			console.log('init_autocomplete');
          +			
          +			var countries = { AD:"Andorra",A2:"Andorra Test",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AN:"Netherlands Antilles",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Åland Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barthélemy",BM:"Bermuda",BN:"Brunei",BO:"Bolivia",BQ:"British Antarctic Territory",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos [Keeling] Islands",CD:"Congo - Kinshasa",CF:"Central African Republic",CG:"Congo - Brazzaville",CH:"Switzerland",CI:"Côte d’Ivoire",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CS:"Serbia and Montenegro",CT:"Canton and Enderbury Islands",CU:"Cuba",CV:"Cape Verde",CX:"Christmas Island",CY:"Cyprus",CZ:"Czech Republic",DD:"East Germany",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Faroe Islands",FQ:"French Southern and Antarctic Territories",FR:"France",FX:"Metropolitan France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong SAR China",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",JT:"Johnston Island",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Laos",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MI:"Midway Islands",MK:"Macedonia",ML:"Mali",MM:"Myanmar [Burma]",MN:"Mongolia",MO:"Macau SAR China",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NQ:"Dronning Maud Land",NR:"Nauru",NT:"Neutral Zone",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PC:"Pacific Islands Trust Territory",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn Islands",PR:"Puerto Rico",PS:"Palestinian Territories",PT:"Portugal",PU:"U.S. Miscellaneous Pacific Islands",PW:"Palau",PY:"Paraguay",PZ:"Panama Canal Zone",QA:"Qatar",RE:"Réunion",RO:"Romania",RS:"Serbia",RU:"Russia",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",ST:"São Tomé and Príncipe",SU:"Union of Soviet Socialist Republics",SV:"El Salvador",SY:"Syria",SZ:"Swaziland",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania",UA:"Ukraine",UG:"Uganda",UM:"U.S. Minor Outlying Islands",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VA:"Vatican City",VC:"Saint Vincent and the Grenadines",VD:"North Vietnam",VE:"Venezuela",VG:"British Virgin Islands",VI:"U.S. Virgin Islands",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WK:"Wake Island",WS:"Samoa",YD:"People's Democratic Republic of Yemen",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown or Invalid Region" };
          +
          +			var countriesArray = $.map(countries, function(value, key) {
          +			  return {
          +				value: value,
          +				data: key
          +			  };
          +			});
          +
          +			// initialize autocomplete with custom appendTo
          +			$('#autocomplete-custom-append').autocomplete({
          +			  lookup: countriesArray
          +			});
          +			
          +		};
          +	   
          +	 /* AUTOSIZE */
          +			
          +		function init_autosize() {
          +			
          +			if(typeof $.fn.autosize !== 'undefined'){
          +			
          +			autosize($('.resizable_textarea'));
          +			
          +			}
          +			
          +		};  
          +	   
          +	   /* PARSLEY */
          +			
          +		function init_parsley() {
          +			
          +			if( typeof (parsley) === 'undefined'){ return; }
          +			console.log('init_parsley');
          +			
          +			$/*.listen*/('parsley:field:validate', function() {
          +			  validateFront();
          +			});
          +			$('#demo-form .btn').on('click', function() {
          +			  $('#demo-form').parsley().validate();
          +			  validateFront();
          +			});
          +			var validateFront = function() {
          +			  if (true === $('#demo-form').parsley().isValid()) {
          +				$('.bs-callout-info').removeClass('hidden');
          +				$('.bs-callout-warning').addClass('hidden');
          +			  } else {
          +				$('.bs-callout-info').addClass('hidden');
          +				$('.bs-callout-warning').removeClass('hidden');
          +			  }
          +			};
          +		  
          +			$/*.listen*/('parsley:field:validate', function() {
          +			  validateFront();
          +			});
          +			$('#demo-form2 .btn').on('click', function() {
          +			  $('#demo-form2').parsley().validate();
          +			  validateFront();
          +			});
          +			var validateFront = function() {
          +			  if (true === $('#demo-form2').parsley().isValid()) {
          +				$('.bs-callout-info').removeClass('hidden');
          +				$('.bs-callout-warning').addClass('hidden');
          +			  } else {
          +				$('.bs-callout-info').addClass('hidden');
          +				$('.bs-callout-warning').removeClass('hidden');
          +			  }
          +			};
          +			
          +			  try {
          +				hljs.initHighlightingOnLoad();
          +			  } catch (err) {}
          +			
          +		};
          +	   
          +		
          +		  /* INPUTS */
          +		  
          +			function onAddTag(tag) {
          +				alert("Added a tag: " + tag);
          +			  }
          +
          +			  function onRemoveTag(tag) {
          +				alert("Removed a tag: " + tag);
          +			  }
          +
          +			  function onChangeTag(input, tag) {
          +				alert("Changed a tag: " + tag);
          +			  }
          +
          +			  //tags input
          +			function init_TagsInput() {
          +				  
          +				if(typeof $.fn.tagsInput !== 'undefined'){	
          +				 
          +				$('#tags_1').tagsInput({
          +				  width: 'auto'
          +				});
          +				
          +				}
          +				
          +		    };
          +	   
          +		/* SELECT2 */
          +	  
          +		function init_select2() {
          +			 
          +			if( typeof (select2) === 'undefined'){ return; }
          +			console.log('init_toolbox');
          +			 
          +			$(".select2_single").select2({
          +			  placeholder: "Select a state",
          +			  allowClear: true
          +			});
          +			$(".select2_group").select2({});
          +			$(".select2_multiple").select2({
          +			  maximumSelectionLength: 4,
          +			  placeholder: "With Max Selection limit 4",
          +			  allowClear: true
          +			});
          +			
          +		};
          +	   
          +	   /* WYSIWYG EDITOR */
          +
          +		function init_wysiwyg() {
          +			
          +		if( typeof ($.fn.wysiwyg) === 'undefined'){ return; }
          +		console.log('init_wysiwyg');	
          +			
          +        function init_ToolbarBootstrapBindings() {
          +          var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier',
          +              'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times',
          +              'Times New Roman', 'Verdana'
          +            ],
          +            fontTarget = $('[title=Font]').siblings('.dropdown-menu');
          +          $.each(fonts, function(idx, fontName) {
          +            fontTarget.append($('
        1. ' + fontName + '
        2. ')); + }); + $('a[title]').tooltip({ + container: 'body' + }); + $('.dropdown-menu input').click(function() { + return false; + }) + .change(function() { + $(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle'); + }) + .keydown('esc', function() { + this.value = ''; + $(this).change(); + }); + + $('[data-role=magic-overlay]').each(function() { + var overlay = $(this), + target = $(overlay.data('target')); + overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight()); + }); + + if ("onwebkitspeechchange" in document.createElement("input")) { + var editorOffset = $('#editor').offset(); + + $('.voiceBtn').css('position', 'absolute').offset({ + top: editorOffset.top, + left: editorOffset.left + $('#editor').innerWidth() - 35 + }); + } else { + $('.voiceBtn').hide(); + } + } + + function showErrorAlert(reason, detail) { + var msg = ''; + if (reason === 'unsupported-file-type') { + msg = "Unsupported format " + detail; + } else { + console.log("error uploading file", reason, detail); + } + $('
          ' + + 'File upload error ' + msg + '
          ').prependTo('#alerts'); + } + + $('.editor-wrapper').each(function(){ + var id = $(this).attr('id'); //editor-one + + $(this).wysiwyg({ + toolbarSelector: '[data-target="#' + id + '"]', + fileUploadError: showErrorAlert + }); + }); + + + window.prettyPrint; + prettyPrint(); + + }; + + /* CROPPER */ + + function init_cropper() { + + + if( typeof ($.fn.cropper) === 'undefined'){ return; } + console.log('init_cropper'); + + var $image = $('#image'); + var $download = $('#download'); + var $dataX = $('#dataX'); + var $dataY = $('#dataY'); + var $dataHeight = $('#dataHeight'); + var $dataWidth = $('#dataWidth'); + var $dataRotate = $('#dataRotate'); + var $dataScaleX = $('#dataScaleX'); + var $dataScaleY = $('#dataScaleY'); + var options = { + aspectRatio: 16 / 9, + preview: '.img-preview', + crop: function (e) { + $dataX.val(Math.round(e.x)); + $dataY.val(Math.round(e.y)); + $dataHeight.val(Math.round(e.height)); + $dataWidth.val(Math.round(e.width)); + $dataRotate.val(e.rotate); + $dataScaleX.val(e.scaleX); + $dataScaleY.val(e.scaleY); + } + }; + + + // Tooltip + $('[data-toggle="tooltip"]').tooltip(); + + + // Cropper + $image.on({ + 'build.cropper': function (e) { + console.log(e.type); + }, + 'built.cropper': function (e) { + console.log(e.type); + }, + 'cropstart.cropper': function (e) { + console.log(e.type, e.action); + }, + 'cropmove.cropper': function (e) { + console.log(e.type, e.action); + }, + 'cropend.cropper': function (e) { + console.log(e.type, e.action); + }, + 'crop.cropper': function (e) { + console.log(e.type, e.x, e.y, e.width, e.height, e.rotate, e.scaleX, e.scaleY); + }, + 'zoom.cropper': function (e) { + console.log(e.type, e.ratio); + } + }).cropper(options); + + + // Buttons + if (!$.isFunction(document.createElement('canvas').getContext)) { + $('button[data-method="getCroppedCanvas"]').prop('disabled', true); + } + + if (typeof document.createElement('cropper').style.transition === 'undefined') { + $('button[data-method="rotate"]').prop('disabled', true); + $('button[data-method="scale"]').prop('disabled', true); + } + + + // Download + if (typeof $download[0].download === 'undefined') { + $download.addClass('disabled'); + } + + + // Options + $('.docs-toggles').on('change', 'input', function () { + var $this = $(this); + var name = $this.attr('name'); + var type = $this.prop('type'); + var cropBoxData; + var canvasData; + + if (!$image.data('cropper')) { + return; + } + + if (type === 'checkbox') { + options[name] = $this.prop('checked'); + cropBoxData = $image.cropper('getCropBoxData'); + canvasData = $image.cropper('getCanvasData'); + + options.built = function () { + $image.cropper('setCropBoxData', cropBoxData); + $image.cropper('setCanvasData', canvasData); + }; + } else if (type === 'radio') { + options[name] = $this.val(); + } + + $image.cropper('destroy').cropper(options); + }); + + + // Methods + $('.docs-buttons').on('click', '[data-method]', function () { + var $this = $(this); + var data = $this.data(); + var $target; + var result; + + if ($this.prop('disabled') || $this.hasClass('disabled')) { + return; + } + + if ($image.data('cropper') && data.method) { + data = $.extend({}, data); // Clone a new one + + if (typeof data.target !== 'undefined') { + $target = $(data.target); + + if (typeof data.option === 'undefined') { + try { + data.option = JSON.parse($target.val()); + } catch (e) { + console.log(e.message); + } + } + } + + result = $image.cropper(data.method, data.option, data.secondOption); + + switch (data.method) { + case 'scaleX': + case 'scaleY': + $(this).data('option', -data.option); + break; + + case 'getCroppedCanvas': + if (result) { + + // Bootstrap's Modal + $('#getCroppedCanvasModal').modal().find('.modal-body').html(result); + + if (!$download.hasClass('disabled')) { + $download.attr('href', result.toDataURL()); + } + } + + break; + } + + if ($.isPlainObject(result) && $target) { + try { + $target.val(JSON.stringify(result)); + } catch (e) { + console.log(e.message); + } + } + + } + }); + + // Keyboard + $(document.body).on('keydown', function (e) { + if (!$image.data('cropper') || this.scrollTop > 300) { + return; + } + + switch (e.which) { + case 37: + e.preventDefault(); + $image.cropper('move', -1, 0); + break; + + case 38: + e.preventDefault(); + $image.cropper('move', 0, -1); + break; + + case 39: + e.preventDefault(); + $image.cropper('move', 1, 0); + break; + + case 40: + e.preventDefault(); + $image.cropper('move', 0, 1); + break; + } + }); + + // Import image + var $inputImage = $('#inputImage'); + var URL = window.URL || window.webkitURL; + var blobURL; + + if (URL) { + $inputImage.change(function () { + var files = this.files; + var file; + + if (!$image.data('cropper')) { + return; + } + + if (files && files.length) { + file = files[0]; + + if (/^image\/\w+$/.test(file.type)) { + blobURL = URL.createObjectURL(file); + $image.one('built.cropper', function () { + + // Revoke when load complete + URL.revokeObjectURL(blobURL); + }).cropper('reset').cropper('replace', blobURL); + $inputImage.val(''); + } else { + window.alert('Please choose an image file.'); + } + } + }); + } else { + $inputImage.prop('disabled', true).parent().addClass('disabled'); + } + + + }; + + /* CROPPER --- end */ + + /* KNOB */ + + function init_knob() { + + if( typeof ($.fn.knob) === 'undefined'){ return; } + console.log('init_knob'); + + $(".knob").knob({ + change: function(value) { + //console.log("change : " + value); + }, + release: function(value) { + //console.log(this.$.attr('value')); + console.log("release : " + value); + }, + cancel: function() { + console.log("cancel : ", this); + }, + /*format : function (value) { + return value + '%'; + },*/ + draw: function() { + + // "tron" case + if (this.$.data('skin') == 'tron') { + + this.cursorExt = 0.3; + + var a = this.arc(this.cv) // Arc + , + pa // Previous arc + , r = 1; + + this.g.lineWidth = this.lineWidth; + + if (this.o.displayPrevious) { + pa = this.arc(this.v); + this.g.beginPath(); + this.g.strokeStyle = this.pColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, pa.s, pa.e, pa.d); + this.g.stroke(); + } + + this.g.beginPath(); + this.g.strokeStyle = r ? this.o.fgColor : this.fgColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d); + this.g.stroke(); + + this.g.lineWidth = 2; + this.g.beginPath(); + this.g.strokeStyle = this.o.fgColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false); + this.g.stroke(); + + return false; + } + } + + }); + + // Example of infinite knob, iPod click wheel + var v, up = 0, + down = 0, + i = 0, + $idir = $("div.idir"), + $ival = $("div.ival"), + incr = function() { + i++; + $idir.show().html("+").fadeOut(); + $ival.html(i); + }, + decr = function() { + i--; + $idir.show().html("-").fadeOut(); + $ival.html(i); + }; + $("input.infinite").knob({ + min: 0, + max: 20, + stopper: false, + change: function() { + if (v > this.cv) { + if (up) { + decr(); + up = 0; + } else { + up = 1; + down = 0; + } + } else { + if (v < this.cv) { + if (down) { + incr(); + down = 0; + } else { + down = 1; + up = 0; + } + } + } + v = this.cv; + } + }); + + }; + + /* INPUT MASK */ + + function init_InputMask() { + + if( typeof ($.fn.inputmask) === 'undefined'){ return; } + console.log('init_InputMask'); + + $(":input").inputmask(); + + }; + + /* COLOR PICKER */ + + function init_ColorPicker() { + + if( typeof ($.fn.colorpicker) === 'undefined'){ return; } + console.log('init_ColorPicker'); + + $('.demo1').colorpicker(); + $('.demo2').colorpicker(); + + $('#demo_forceformat').colorpicker({ + format: 'rgba', + horizontal: true + }); + + $('#demo_forceformat3').colorpicker({ + format: 'rgba', + }); + + $('.demo-auto').colorpicker(); + + }; + + + /* ION RANGE SLIDER */ + + function init_IonRangeSlider() { + + if( typeof ($.fn.ionRangeSlider) === 'undefined'){ return; } + console.log('init_IonRangeSlider'); + + $("#range_27").ionRangeSlider({ + type: "double", + min: 1000000, + max: 2000000, + grid: true, + force_edges: true + }); + $("#range").ionRangeSlider({ + hide_min_max: true, + keyboard: true, + min: 0, + max: 5000, + from: 1000, + to: 4000, + type: 'double', + step: 1, + prefix: "$", + grid: true + }); + $("#range_25").ionRangeSlider({ + type: "double", + min: 1000000, + max: 2000000, + grid: true + }); + $("#range_26").ionRangeSlider({ + type: "double", + min: 0, + max: 10000, + step: 500, + grid: true, + grid_snap: true + }); + $("#range_31").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + from_fixed: true + }); + $(".range_min_max").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + max_interval: 50 + }); + $(".range_time24").ionRangeSlider({ + min: +moment().subtract(12, "hours").format("X"), + max: +moment().format("X"), + from: +moment().subtract(6, "hours").format("X"), + grid: true, + force_edges: true, + prettify: function(num) { + var m = moment(num, "X"); + return m.format("Do MMMM, HH:mm"); + } + }); + + }; + + + /* DATERANGEPICKER */ + + function init_daterangepicker() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker'); + + var cb = function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); + }; + + var optionSet1 = { + startDate: moment().subtract(29, 'days'), + endDate: moment(), + minDate: '01/01/2012', + maxDate: '12/31/2015', + dateLimit: { + days: 60 + }, + showDropdowns: true, + showWeekNumbers: true, + timePicker: false, + timePickerIncrement: 1, + timePicker12Hour: true, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }, + opens: 'left', + buttonClasses: ['btn btn-default'], + applyClass: 'btn-small btn-primary', + cancelClass: 'btn-small', + format: 'MM/DD/YYYY', + separator: ' to ', + locale: { + applyLabel: 'Submit', + cancelLabel: 'Clear', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + } + }; + + $('#reportrange span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY')); + $('#reportrange').daterangepicker(optionSet1, cb); + $('#reportrange').on('show.daterangepicker', function() { + console.log("show event fired"); + }); + $('#reportrange').on('hide.daterangepicker', function() { + console.log("hide event fired"); + }); + $('#reportrange').on('apply.daterangepicker', function(ev, picker) { + console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY')); + }); + $('#reportrange').on('cancel.daterangepicker', function(ev, picker) { + console.log("cancel event fired"); + }); + $('#options1').click(function() { + $('#reportrange').data('daterangepicker').setOptions(optionSet1, cb); + }); + $('#options2').click(function() { + $('#reportrange').data('daterangepicker').setOptions(optionSet2, cb); + }); + $('#destroy').click(function() { + $('#reportrange').data('daterangepicker').remove(); + }); + + } + + function init_daterangepicker_right() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_right'); + + var cb = function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + $('#reportrange_right span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); + }; + + var optionSet1 = { + startDate: moment().subtract(29, 'days'), + endDate: moment(), + minDate: '01/01/2012', + maxDate: '12/31/2020', + dateLimit: { + days: 60 + }, + showDropdowns: true, + showWeekNumbers: true, + timePicker: false, + timePickerIncrement: 1, + timePicker12Hour: true, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }, + opens: 'right', + buttonClasses: ['btn btn-default'], + applyClass: 'btn-small btn-primary', + cancelClass: 'btn-small', + format: 'MM/DD/YYYY', + separator: ' to ', + locale: { + applyLabel: 'Submit', + cancelLabel: 'Clear', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + } + }; + + $('#reportrange_right span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY')); + + $('#reportrange_right').daterangepicker(optionSet1, cb); + + $('#reportrange_right').on('show.daterangepicker', function() { + console.log("show event fired"); + }); + $('#reportrange_right').on('hide.daterangepicker', function() { + console.log("hide event fired"); + }); + $('#reportrange_right').on('apply.daterangepicker', function(ev, picker) { + console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY')); + }); + $('#reportrange_right').on('cancel.daterangepicker', function(ev, picker) { + console.log("cancel event fired"); + }); + + $('#options1').click(function() { + $('#reportrange_right').data('daterangepicker').setOptions(optionSet1, cb); + }); + + $('#options2').click(function() { + $('#reportrange_right').data('daterangepicker').setOptions(optionSet2, cb); + }); + + $('#destroy').click(function() { + $('#reportrange_right').data('daterangepicker').remove(); + }); + + } + + function init_daterangepicker_single_call() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_single_call'); + + $('#single_cal1').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_1" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal2').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_2" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal3').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_3" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal4').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_4" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + + + } + + + function init_daterangepicker_reservation() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_reservation'); + + $('#reservation').daterangepicker(null, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + + $('#reservation-time').daterangepicker({ + timePicker: true, + timePickerIncrement: 30, + locale: { + format: 'MM/DD/YYYY h:mm A' + } + }); + + } + + /* SMART WIZARD */ + + function init_SmartWizard() { + + if( typeof ($.fn.smartWizard) === 'undefined'){ return; } + console.log('init_SmartWizard'); + + $('#wizard').smartWizard(); + + $('#wizard_verticle').smartWizard({ + transitionEffect: 'slide' + }); + + $('.buttonNext').addClass('btn btn-success'); + $('.buttonPrevious').addClass('btn btn-primary'); + $('.buttonFinish').addClass('btn btn-default'); + + }; + + + /* VALIDATOR */ + + function init_validator () { + + if( typeof (validator) === 'undefined'){ return; } + console.log('init_validator'); + + // initialize the validator function + validator.message.date = 'not a real date'; + + // validate a field on "blur" event, a 'select' on 'change' event & a '.reuired' classed multifield on 'keyup': + $('form') + .on('blur', 'input[required], input.optional, select.required', validator.checkField) + .on('change', 'select.required', validator.checkField) + .on('keypress', 'input[required][pattern]', validator.keypress); + + $('.multi.required').on('keyup blur', 'input', function() { + validator.checkField.apply($(this).siblings().last()[0]); + }); + + $('form').submit(function(e) { + e.preventDefault(); + var submit = true; + + // evaluate the form using generic validaing + if (!validator.checkAll($(this))) { + submit = false; + } + + if (submit) + this.submit(); + + return false; + }); + + }; + + /* PNotify */ + + function init_PNotify() { + + if( typeof (PNotify) === 'undefined'){ return; } + console.log('init_PNotify'); + + new PNotify({ + title: "PNotify", + type: "info", + text: "Welcome. Try hovering over me. You can click things behind me, because I'm non-blocking.", + nonblock: { + nonblock: true + }, + addclass: 'dark', + styling: 'bootstrap3', + hide: false, + before_close: function(PNotify) { + PNotify.update({ + title: PNotify.options.title + " - Enjoy your Stay", + before_close: null + }); + + PNotify.queueRemove(); + + return false; + } + }); + + }; + + + /* CUSTOM NOTIFICATION */ + + function init_CustomNotification() { + + console.log('run_customtabs'); + + if( typeof (CustomTabs) === 'undefined'){ return; } + console.log('init_CustomTabs'); + + var cnt = 10; + + TabbedNotification = function(options) { + var message = ""; + + if (!document.getElementById('custom_notifications')) { + alert('doesnt exists'); + } else { + $('#custom_notifications ul.notifications').append("
        3. "); + $('#custom_notifications #notif-group').append(message); + cnt++; + CustomTabs(options); + } + }; + + CustomTabs = function(options) { + $('.tabbed_notifications > div').hide(); + $('.tabbed_notifications > div:first-of-type').show(); + $('#custom_notifications').removeClass('dsp_none'); + $('.notifications a').click(function(e) { + e.preventDefault(); + var $this = $(this), + tabbed_notifications = '#' + $this.parents('.notifications').data('tabbed_notifications'), + others = $this.closest('li').siblings().children('a'), + target = $this.attr('href'); + others.removeClass('active'); + $this.addClass('active'); + $(tabbed_notifications).children('div').hide(); + $(target).show(); + }); + }; + + CustomTabs(); + + var tabid = idname = ''; + + $(document).on('click', '.notification_close', function(e) { + idname = $(this).parent().parent().attr("id"); + tabid = idname.substr(-2); + $('#ntf' + tabid).remove(); + $('#ntlink' + tabid).parent().remove(); + $('.notifications a').first().addClass('active'); + $('#notif-group div').first().css('display', 'block'); + }); + + }; + + /* EASYPIECHART */ + + function init_EasyPieChart() { + + if( typeof ($.fn.easyPieChart) === 'undefined'){ return; } + console.log('init_EasyPieChart'); + + $('.chart').easyPieChart({ + easing: 'easeOutElastic', + delay: 3000, + barColor: '#26B99A', + trackColor: '#fff', + scaleColor: false, + lineWidth: 20, + trackWidth: 16, + lineCap: 'butt', + onStep: function(from, to, percent) { + $(this.el).find('.percent').text(Math.round(percent)); + } + }); + var chart = window.chart = $('.chart').data('easyPieChart'); + $('.js_update').on('click', function() { + chart.update(Math.random() * 200 - 100); + }); + + //hover and retain popover when on popover content + var originalLeave = $.fn.popover.Constructor.prototype.leave; + $.fn.popover.Constructor.prototype.leave = function(obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type); + var container, timeout; + + originalLeave.call(this, obj); + + if (obj.currentTarget) { + container = $(obj.currentTarget).siblings('.popover'); + timeout = self.timeout; + container.one('mouseenter', function() { + //We entered the actual popover – call off the dogs + clearTimeout(timeout); + //Let's monitor popover content instead + container.one('mouseleave', function() { + $.fn.popover.Constructor.prototype.leave.call(self, self); + }); + }); + } + }; + + $('body').popover({ + selector: '[data-popover]', + trigger: 'click hover', + delay: { + show: 50, + hide: 400 + } + }); + + }; + + + function init_charts() { + + console.log('run_charts typeof [' + typeof (Chart) + ']'); + + if( typeof (Chart) === 'undefined'){ return; } + + console.log('init_charts'); + + + Chart.defaults.global.legend = { + enabled: false + }; + + + + if ($('#canvas_line').length ){ + + var canvas_line_00 = new Chart(document.getElementById("canvas_line"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line1').length ){ + + var canvas_line_01 = new Chart(document.getElementById("canvas_line1"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line2').length ){ + + var canvas_line_02 = new Chart(document.getElementById("canvas_line2"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line3').length ){ + + var canvas_line_03 = new Chart(document.getElementById("canvas_line3"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line4').length ){ + + var canvas_line_04 = new Chart(document.getElementById("canvas_line4"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + // Line chart + + if ($('#lineChart').length ){ + + var ctx = document.getElementById("lineChart"); + var lineChart = new Chart(ctx, { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + // Bar chart + + if ($('#mybarChart').length ){ + + var ctx = document.getElementById("mybarChart"); + var mybarChart = new Chart(ctx, { + type: 'bar', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: '# of Votes', + backgroundColor: "#26B99A", + data: [51, 30, 40, 28, 92, 50, 45] + }, { + label: '# of Votes', + backgroundColor: "#03586A", + data: [41, 56, 25, 48, 72, 34, 12] + }] + }, + + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + + } + + + // Doughnut chart + + if ($('#canvasDoughnut').length ){ + + var ctx = document.getElementById("canvasDoughnut"); + var data = { + labels: [ + "Dark Grey", + "Purple Color", + "Gray Color", + "Green Color", + "Blue Color" + ], + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + hoverBackgroundColor: [ + "#34495E", + "#B370CF", + "#CFD4D8", + "#36CAAB", + "#49A9EA" + ] + + }] + }; + + var canvasDoughnut = new Chart(ctx, { + type: 'doughnut', + tooltipFillColor: "rgba(51, 51, 51, 0.55)", + data: data + }); + + } + + // Radar chart + + if ($('#canvasRadar').length ){ + + var ctx = document.getElementById("canvasRadar"); + var data = { + labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(3, 88, 106, 0.2)", + borderColor: "rgba(3, 88, 106, 0.80)", + pointBorderColor: "rgba(3, 88, 106, 0.80)", + pointBackgroundColor: "rgba(3, 88, 106, 0.80)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + data: [65, 59, 90, 81, 56, 55, 40] + }, { + label: "My Second dataset", + backgroundColor: "rgba(38, 185, 154, 0.2)", + borderColor: "rgba(38, 185, 154, 0.85)", + pointColor: "rgba(38, 185, 154, 0.85)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 96, 27, 100] + }] + }; + + var canvasRadar = new Chart(ctx, { + type: 'radar', + data: data, + }); + + } + + + // Pie chart + if ($('#pieChart').length ){ + + var ctx = document.getElementById("pieChart"); + var data = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + label: 'My dataset' // for legend + }], + labels: [ + "Dark Gray", + "Purple", + "Gray", + "Green", + "Blue" + ] + }; + + var pieChart = new Chart(ctx, { + data: data, + type: 'pie', + otpions: { + legend: false + } + }); + + } + + + // PolarArea chart + + if ($('#polarArea').length ){ + + var ctx = document.getElementById("polarArea"); + var data = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + label: 'My dataset' + }], + labels: [ + "Dark Gray", + "Purple", + "Gray", + "Green", + "Blue" + ] + }; + + var polarArea = new Chart(ctx, { + data: data, + type: 'polarArea', + options: { + scale: { + ticks: { + beginAtZero: true + } + } + } + }); + + } + } + + /* COMPOSE */ + + function init_compose() { + + if( typeof ($.fn.slideToggle) === 'undefined'){ return; } + console.log('init_compose'); + + $('#compose, .compose-close').click(function(){ + $('.compose').slideToggle(); + }); + + }; + + /* CALENDAR */ + + function init_calendar() { + + if( typeof ($.fn.fullCalendar) === 'undefined'){ return; } + console.log('init_calendar'); + + var date = new Date(), + d = date.getDate(), + m = date.getMonth(), + y = date.getFullYear(), + started, + categoryClass; + + var calendar = $('#calendar').fullCalendar({ + header: { + left: 'prev,next today', + center: 'title', + right: 'month,agendaWeek,agendaDay,listMonth' + }, + selectable: true, + selectHelper: true, + select: function(start, end, allDay) { + $('#fc_create').click(); + + started = start; + ended = end; + + $(".antosubmit").on("click", function() { + var title = $("#title").val(); + if (end) { + ended = end; + } + + categoryClass = $("#event_type").val(); + + if (title) { + calendar.fullCalendar('renderEvent', { + title: title, + start: started, + end: end, + allDay: allDay + }, + true // make the event "stick" + ); + } + + $('#title').val(''); + + calendar.fullCalendar('unselect'); + + $('.antoclose').click(); + + return false; + }); + }, + eventClick: function(calEvent, jsEvent, view) { + $('#fc_edit').click(); + $('#title2').val(calEvent.title); + + categoryClass = $("#event_type").val(); + + $(".antosubmit2").on("click", function() { + calEvent.title = $("#title2").val(); + + calendar.fullCalendar('updateEvent', calEvent); + $('.antoclose2').click(); + }); + + calendar.fullCalendar('unselect'); + }, + editable: true, + events: [{ + title: 'All Day Event', + start: new Date(y, m, 1) + }, { + title: 'Long Event', + start: new Date(y, m, d - 5), + end: new Date(y, m, d - 2) + }, { + title: 'Meeting', + start: new Date(y, m, d, 10, 30), + allDay: false + }, { + title: 'Lunch', + start: new Date(y, m, d + 14, 12, 0), + end: new Date(y, m, d, 14, 0), + allDay: false + }, { + title: 'Birthday Party', + start: new Date(y, m, d + 1, 19, 0), + end: new Date(y, m, d + 1, 22, 30), + allDay: false + }, { + title: 'Click for Google', + start: new Date(y, m, 28), + end: new Date(y, m, 29), + url: 'http://google.com/' + }] + }); + + }; + + /* DATA TABLES */ + + function init_DataTables() { + + console.log('run_datatables'); + + if( typeof ($.fn.DataTable) === 'undefined'){ return; } + console.log('init_DataTables'); + + var handleDataTableButtons = function() { + if ($("#datatable-buttons").length) { + $("#datatable-buttons").DataTable({ + dom: "Bfrtip", + buttons: [ + { + extend: "copy", + className: "btn-sm" + }, + { + extend: "csv", + className: "btn-sm" + }, + { + extend: "excel", + className: "btn-sm" + }, + { + extend: "pdfHtml5", + className: "btn-sm" + }, + { + extend: "print", + className: "btn-sm" + }, + ], + responsive: true + }); + } + }; + + TableManageButtons = function() { + "use strict"; + return { + init: function() { + handleDataTableButtons(); + } + }; + }(); + + $('#datatable').dataTable(); + + $('#datatable-keytable').DataTable({ + keys: true + }); + + $('#datatable-responsive').DataTable(); + + $('#datatable-scroller').DataTable({ + ajax: "js/datatables/json/scroller-demo.json", + deferRender: true, + scrollY: 380, + scrollCollapse: true, + scroller: true + }); + + $('#datatable-fixed-header').DataTable({ + fixedHeader: true + }); + + var $datatable = $('#datatable-checkbox'); + + $datatable.dataTable({ + 'order': [[ 1, 'asc' ]], + 'columnDefs': [ + { orderable: false, targets: [0] } + ] + }); + $datatable.on('draw.dt', function() { + $('checkbox input').iCheck({ + checkboxClass: 'icheckbox_flat-green' + }); + }); + + TableManageButtons.init(); + + }; + + /* CHART - MORRIS */ + + function init_morris_charts() { + + if( typeof (Morris) === 'undefined'){ return; } + console.log('init_morris_charts'); + + if ($('#graph_bar').length){ + + Morris.Bar({ + element: 'graph_bar', + data: [ + {device: 'iPhone 4', geekbench: 380}, + {device: 'iPhone 4S', geekbench: 655}, + {device: 'iPhone 3GS', geekbench: 275}, + {device: 'iPhone 5', geekbench: 1571}, + {device: 'iPhone 5S', geekbench: 655}, + {device: 'iPhone 6', geekbench: 2154}, + {device: 'iPhone 6 Plus', geekbench: 1144}, + {device: 'iPhone 6S', geekbench: 2371}, + {device: 'iPhone 6S Plus', geekbench: 1471}, + {device: 'Other', geekbench: 1371} + ], + xkey: 'device', + ykeys: ['geekbench'], + labels: ['Geekbench'], + barRatio: 0.4, + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + xLabelAngle: 35, + hideHover: 'auto', + resize: true + }); + + } + + if ($('#graph_bar_group').length ){ + + Morris.Bar({ + element: 'graph_bar_group', + data: [ + {"period": "2016-10-01", "licensed": 807, "sorned": 660}, + {"period": "2016-09-30", "licensed": 1251, "sorned": 729}, + {"period": "2016-09-29", "licensed": 1769, "sorned": 1018}, + {"period": "2016-09-20", "licensed": 2246, "sorned": 1461}, + {"period": "2016-09-19", "licensed": 2657, "sorned": 1967}, + {"period": "2016-09-18", "licensed": 3148, "sorned": 2627}, + {"period": "2016-09-17", "licensed": 3471, "sorned": 3740}, + {"period": "2016-09-16", "licensed": 2871, "sorned": 2216}, + {"period": "2016-09-15", "licensed": 2401, "sorned": 1656}, + {"period": "2016-09-10", "licensed": 2115, "sorned": 1022} + ], + xkey: 'period', + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + ykeys: ['licensed', 'sorned'], + labels: ['Licensed', 'SORN'], + hideHover: 'auto', + xLabelAngle: 60, + resize: true + }); + + } + + if ($('#graphx').length ){ + + Morris.Bar({ + element: 'graphx', + data: [ + {x: '2015 Q1', y: 2, z: 3, a: 4}, + {x: '2015 Q2', y: 3, z: 5, a: 6}, + {x: '2015 Q3', y: 4, z: 3, a: 2}, + {x: '2015 Q4', y: 2, z: 4, a: 5} + ], + xkey: 'x', + ykeys: ['y', 'z', 'a'], + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + hideHover: 'auto', + labels: ['Y', 'Z', 'A'], + resize: true + }).on('click', function (i, row) { + console.log(i, row); + }); + + } + + if ($('#graph_area').length ){ + + Morris.Area({ + element: 'graph_area', + data: [ + {period: '2014 Q1', iphone: 2666, ipad: null, itouch: 2647}, + {period: '2014 Q2', iphone: 2778, ipad: 2294, itouch: 2441}, + {period: '2014 Q3', iphone: 4912, ipad: 1969, itouch: 2501}, + {period: '2014 Q4', iphone: 3767, ipad: 3597, itouch: 5689}, + {period: '2015 Q1', iphone: 6810, ipad: 1914, itouch: 2293}, + {period: '2015 Q2', iphone: 5670, ipad: 4293, itouch: 1881}, + {period: '2015 Q3', iphone: 4820, ipad: 3795, itouch: 1588}, + {period: '2015 Q4', iphone: 15073, ipad: 5967, itouch: 5175}, + {period: '2016 Q1', iphone: 10687, ipad: 4460, itouch: 2028}, + {period: '2016 Q2', iphone: 8432, ipad: 5713, itouch: 1791} + ], + xkey: 'period', + ykeys: ['iphone', 'ipad', 'itouch'], + lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + labels: ['iPhone', 'iPad', 'iPod Touch'], + pointSize: 2, + hideHover: 'auto', + resize: true + }); + + } + + if ($('#graph_donut').length ){ + + Morris.Donut({ + element: 'graph_donut', + data: [ + {label: 'Jam', value: 25}, + {label: 'Frosted', value: 40}, + {label: 'Custard', value: 25}, + {label: 'Sugar', value: 10} + ], + colors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + formatter: function (y) { + return y + "%"; + }, + resize: true + }); + + } + + if ($('#graph_line').length ){ + + Morris.Line({ + element: 'graph_line', + xkey: 'year', + ykeys: ['value'], + labels: ['Value'], + hideHover: 'auto', + lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + data: [ + {year: '2012', value: 20}, + {year: '2013', value: 10}, + {year: '2014', value: 5}, + {year: '2015', value: 5}, + {year: '2016', value: 20} + ], + resize: true + }); + + $MENU_TOGGLE.on('click', function() { + $(window).resize(); + }); + + } + + }; + + + + /* ECHRTS */ + + + function init_echarts() { + + if( typeof (echarts) === 'undefined'){ return; } + console.log('init_echarts'); + + + var theme = { + color: [ + '#26B99A', '#34495E', '#BDC3C7', '#3498DB', + '#9B59B6', '#8abb6f', '#759c6a', '#bfd3b7' + ], + + title: { + itemGap: 8, + textStyle: { + fontWeight: 'normal', + color: '#408829' + } + }, + + dataRange: { + color: ['#1f610a', '#97b58d'] + }, + + toolbox: { + color: ['#408829', '#408829', '#408829', '#408829'] + }, + + tooltip: { + backgroundColor: 'rgba(0,0,0,0.5)', + axisPointer: { + type: 'line', + lineStyle: { + color: '#408829', + type: 'dashed' + }, + crossStyle: { + color: '#408829' + }, + shadowStyle: { + color: 'rgba(200,200,200,0.3)' + } + } + }, + + dataZoom: { + dataBackgroundColor: '#eee', + fillerColor: 'rgba(64,136,41,0.2)', + handleColor: '#408829' + }, + grid: { + borderWidth: 0 + }, + + categoryAxis: { + axisLine: { + lineStyle: { + color: '#408829' + } + }, + splitLine: { + lineStyle: { + color: ['#eee'] + } + } + }, + + valueAxis: { + axisLine: { + lineStyle: { + color: '#408829' + } + }, + splitArea: { + show: true, + areaStyle: { + color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)'] + } + }, + splitLine: { + lineStyle: { + color: ['#eee'] + } + } + }, + timeline: { + lineStyle: { + color: '#408829' + }, + controlStyle: { + normal: {color: '#408829'}, + emphasis: {color: '#408829'} + } + }, + + k: { + itemStyle: { + normal: { + color: '#68a54a', + color0: '#a9cba2', + lineStyle: { + width: 1, + color: '#408829', + color0: '#86b379' + } + } + } + }, + map: { + itemStyle: { + normal: { + areaStyle: { + color: '#ddd' + }, + label: { + textStyle: { + color: '#c12e34' + } + } + }, + emphasis: { + areaStyle: { + color: '#99d2dd' + }, + label: { + textStyle: { + color: '#c12e34' + } + } + } + } + }, + force: { + itemStyle: { + normal: { + linkStyle: { + strokeColor: '#408829' + } + } + } + }, + chord: { + padding: 4, + itemStyle: { + normal: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + }, + chordStyle: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + } + } + }, + emphasis: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + }, + chordStyle: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + } + } + } + } + }, + gauge: { + startAngle: 225, + endAngle: -45, + axisLine: { + show: true, + lineStyle: { + color: [[0.2, '#86b379'], [0.8, '#68a54a'], [1, '#408829']], + width: 8 + } + }, + axisTick: { + splitNumber: 10, + length: 12, + lineStyle: { + color: 'auto' + } + }, + axisLabel: { + textStyle: { + color: 'auto' + } + }, + splitLine: { + length: 18, + lineStyle: { + color: 'auto' + } + }, + pointer: { + length: '90%', + color: 'auto' + }, + title: { + textStyle: { + color: '#333' + } + }, + detail: { + textStyle: { + color: 'auto' + } + } + }, + textStyle: { + fontFamily: 'Arial, Verdana, sans-serif' + } + }; + + + //echart Bar + + if ($('#mainb').length ){ + + var echartBar = echarts.init(document.getElementById('mainb'), theme); + + echartBar.setOption({ + title: { + text: 'Graph title', + subtext: 'Graph Sub-text' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['sales', 'purchases'] + }, + toolbox: { + show: false + }, + calculable: false, + xAxis: [{ + type: 'category', + data: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'] + }], + yAxis: [{ + type: 'value' + }], + series: [{ + name: 'sales', + type: 'bar', + data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], + markPoint: { + data: [{ + type: 'max', + name: '???' + }, { + type: 'min', + name: '???' + }] + }, + markLine: { + data: [{ + type: 'average', + name: '???' + }] + } + }, { + name: 'purchases', + type: 'bar', + data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], + markPoint: { + data: [{ + name: 'sales', + value: 182.2, + xAxis: 7, + yAxis: 183, + }, { + name: 'purchases', + value: 2.3, + xAxis: 11, + yAxis: 3 + }] + }, + markLine: { + data: [{ + type: 'average', + name: '???' + }] + } + }] + }); + + } + + + + + //echart Radar + + if ($('#echart_sonar').length ){ + + var echartRadar = echarts.init(document.getElementById('echart_sonar'), theme); + + echartRadar.setOption({ + title: { + text: 'Budget vs spending', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'item' + }, + legend: { + orient: 'vertical', + x: 'right', + y: 'bottom', + data: ['Allocated Budget', 'Actual Spending'] + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + polar: [{ + indicator: [{ + text: 'Sales', + max: 6000 + }, { + text: 'Administration', + max: 16000 + }, { + text: 'Information Techology', + max: 30000 + }, { + text: 'Customer Support', + max: 38000 + }, { + text: 'Development', + max: 52000 + }, { + text: 'Marketing', + max: 25000 + }] + }], + calculable: true, + series: [{ + name: 'Budget vs spending', + type: 'radar', + data: [{ + value: [4300, 10000, 28000, 35000, 50000, 19000], + name: 'Allocated Budget' + }, { + value: [5000, 14000, 28000, 31000, 42000, 21000], + name: 'Actual Spending' + }] + }] + }); + + } + + //echart Funnel + + if ($('#echart_pyramid').length ){ + + var echartFunnel = echarts.init(document.getElementById('echart_pyramid'), theme); + + echartFunnel.setOption({ + title: { + text: 'Echart Pyramid Graph', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'item', + formatter: "{a}
          {b} : {c}%" + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + legend: { + data: ['Something #1', 'Something #2', 'Something #3', 'Something #4', 'Something #5'], + orient: 'vertical', + x: 'left', + y: 'bottom' + }, + calculable: true, + series: [{ + name: '漏斗图', + type: 'funnel', + width: '40%', + data: [{ + value: 60, + name: 'Something #1' + }, { + value: 40, + name: 'Something #2' + }, { + value: 20, + name: 'Something #3' + }, { + value: 80, + name: 'Something #4' + }, { + value: 100, + name: 'Something #5' + }] + }] + }); + + } + + //echart Gauge + + if ($('#echart_gauge').length ){ + + var echartGauge = echarts.init(document.getElementById('echart_gauge'), theme); + + echartGauge.setOption({ + tooltip: { + formatter: "{a}
          {b} : {c}%" + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: 'Performance', + type: 'gauge', + center: ['50%', '50%'], + startAngle: 140, + endAngle: -140, + min: 0, + max: 100, + precision: 0, + splitNumber: 10, + axisLine: { + show: true, + lineStyle: { + color: [ + [0.2, 'lightgreen'], + [0.4, 'orange'], + [0.8, 'skyblue'], + [1, '#ff4500'] + ], + width: 30 + } + }, + axisTick: { + show: true, + splitNumber: 5, + length: 8, + lineStyle: { + color: '#eee', + width: 1, + type: 'solid' + } + }, + axisLabel: { + show: true, + formatter: function(v) { + switch (v + '') { + case '10': + return 'a'; + case '30': + return 'b'; + case '60': + return 'c'; + case '90': + return 'd'; + default: + return ''; + } + }, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + length: 30, + lineStyle: { + color: '#eee', + width: 2, + type: 'solid' + } + }, + pointer: { + length: '80%', + width: 8, + color: 'auto' + }, + title: { + show: true, + offsetCenter: ['-65%', -10], + textStyle: { + color: '#333', + fontSize: 15 + } + }, + detail: { + show: true, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 0, + borderColor: '#ccc', + width: 100, + height: 40, + offsetCenter: ['-60%', 10], + formatter: '{value}%', + textStyle: { + color: 'auto', + fontSize: 30 + } + }, + data: [{ + value: 50, + name: 'Performance' + }] + }] + }); + + } + + //echart Line + + if ($('#echart_line').length ){ + + var echartLine = echarts.init(document.getElementById('echart_line'), theme); + + echartLine.setOption({ + title: { + text: 'Line Graph', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + x: 220, + y: 40, + data: ['Intent', 'Pre-order', 'Deal'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + title: { + line: 'Line', + bar: 'Bar', + stack: 'Stack', + tiled: 'Tiled' + }, + type: ['line', 'bar', 'stack', 'tiled'] + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + }], + yAxis: [{ + type: 'value' + }], + series: [{ + name: 'Deal', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [10, 12, 21, 54, 260, 830, 710] + }, { + name: 'Pre-order', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [30, 182, 434, 791, 390, 30, 10] + }, { + name: 'Intent', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [1320, 1132, 601, 234, 120, 90, 20] + }] + }); + + } + + //echart Scatter + + if ($('#echart_scatter').length ){ + + var echartScatter = echarts.init(document.getElementById('echart_scatter'), theme); + + echartScatter.setOption({ + title: { + text: 'Scatter Graph', + subtext: 'Heinz 2003' + }, + tooltip: { + trigger: 'axis', + showDelay: 0, + axisPointer: { + type: 'cross', + lineStyle: { + type: 'dashed', + width: 1 + } + } + }, + legend: { + data: ['Data2', 'Data1'] + }, + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + xAxis: [{ + type: 'value', + scale: true, + axisLabel: { + formatter: '{value} cm' + } + }], + yAxis: [{ + type: 'value', + scale: true, + axisLabel: { + formatter: '{value} kg' + } + }], + series: [{ + name: 'Data1', + type: 'scatter', + tooltip: { + trigger: 'item', + formatter: function(params) { + if (params.value.length > 1) { + return params.seriesName + ' :
          ' + params.value[0] + 'cm ' + params.value[1] + 'kg '; + } else { + return params.seriesName + ' :
          ' + params.name + ' : ' + params.value + 'kg '; + } + } + }, + data: [ + [161.2, 51.6], + [167.5, 59.0], + [159.5, 49.2], + [157.0, 63.0], + [155.8, 53.6], + [170.0, 59.0], + [159.1, 47.6], + [166.0, 69.8], + [176.2, 66.8], + [160.2, 75.2], + [172.5, 55.2], + [170.9, 54.2], + [172.9, 62.5], + [153.4, 42.0], + [160.0, 50.0], + [147.2, 49.8], + [168.2, 49.2], + [175.0, 73.2], + [157.0, 47.8], + [167.6, 68.8], + [159.5, 50.6], + [175.0, 82.5], + [166.8, 57.2], + [176.5, 87.8], + [170.2, 72.8], + [174.0, 54.5], + [173.0, 59.8], + [179.9, 67.3], + [170.5, 67.8], + [160.0, 47.0], + [154.4, 46.2], + [162.0, 55.0], + [176.5, 83.0], + [160.0, 54.4], + [152.0, 45.8], + [162.1, 53.6], + [170.0, 73.2], + [160.2, 52.1], + [161.3, 67.9], + [166.4, 56.6], + [168.9, 62.3], + [163.8, 58.5], + [167.6, 54.5], + [160.0, 50.2], + [161.3, 60.3], + [167.6, 58.3], + [165.1, 56.2], + [160.0, 50.2], + [170.0, 72.9], + [157.5, 59.8], + [167.6, 61.0], + [160.7, 69.1], + [163.2, 55.9], + [152.4, 46.5], + [157.5, 54.3], + [168.3, 54.8], + [180.3, 60.7], + [165.5, 60.0], + [165.0, 62.0], + [164.5, 60.3], + [156.0, 52.7], + [160.0, 74.3], + [163.0, 62.0], + [165.7, 73.1], + [161.0, 80.0], + [162.0, 54.7], + [166.0, 53.2], + [174.0, 75.7], + [172.7, 61.1], + [167.6, 55.7], + [151.1, 48.7], + [164.5, 52.3], + [163.5, 50.0], + [152.0, 59.3], + [169.0, 62.5], + [164.0, 55.7], + [161.2, 54.8], + [155.0, 45.9], + [170.0, 70.6], + [176.2, 67.2], + [170.0, 69.4], + [162.5, 58.2], + [170.3, 64.8], + [164.1, 71.6], + [169.5, 52.8], + [163.2, 59.8], + [154.5, 49.0], + [159.8, 50.0], + [173.2, 69.2], + [170.0, 55.9], + [161.4, 63.4], + [169.0, 58.2], + [166.2, 58.6], + [159.4, 45.7], + [162.5, 52.2], + [159.0, 48.6], + [162.8, 57.8], + [159.0, 55.6], + [179.8, 66.8], + [162.9, 59.4], + [161.0, 53.6], + [151.1, 73.2], + [168.2, 53.4], + [168.9, 69.0], + [173.2, 58.4], + [171.8, 56.2], + [178.0, 70.6], + [164.3, 59.8], + [163.0, 72.0], + [168.5, 65.2], + [166.8, 56.6], + [172.7, 105.2], + [163.5, 51.8], + [169.4, 63.4], + [167.8, 59.0], + [159.5, 47.6], + [167.6, 63.0], + [161.2, 55.2], + [160.0, 45.0], + [163.2, 54.0], + [162.2, 50.2], + [161.3, 60.2], + [149.5, 44.8], + [157.5, 58.8], + [163.2, 56.4], + [172.7, 62.0], + [155.0, 49.2], + [156.5, 67.2], + [164.0, 53.8], + [160.9, 54.4], + [162.8, 58.0], + [167.0, 59.8], + [160.0, 54.8], + [160.0, 43.2], + [168.9, 60.5], + [158.2, 46.4], + [156.0, 64.4], + [160.0, 48.8], + [167.1, 62.2], + [158.0, 55.5], + [167.6, 57.8], + [156.0, 54.6], + [162.1, 59.2], + [173.4, 52.7], + [159.8, 53.2], + [170.5, 64.5], + [159.2, 51.8], + [157.5, 56.0], + [161.3, 63.6], + [162.6, 63.2], + [160.0, 59.5], + [168.9, 56.8], + [165.1, 64.1], + [162.6, 50.0], + [165.1, 72.3], + [166.4, 55.0], + [160.0, 55.9], + [152.4, 60.4], + [170.2, 69.1], + [162.6, 84.5], + [170.2, 55.9], + [158.8, 55.5], + [172.7, 69.5], + [167.6, 76.4], + [162.6, 61.4], + [167.6, 65.9], + [156.2, 58.6], + [175.2, 66.8], + [172.1, 56.6], + [162.6, 58.6], + [160.0, 55.9], + [165.1, 59.1], + [182.9, 81.8], + [166.4, 70.7], + [165.1, 56.8], + [177.8, 60.0], + [165.1, 58.2], + [175.3, 72.7], + [154.9, 54.1], + [158.8, 49.1], + [172.7, 75.9], + [168.9, 55.0], + [161.3, 57.3], + [167.6, 55.0], + [165.1, 65.5], + [175.3, 65.5], + [157.5, 48.6], + [163.8, 58.6], + [167.6, 63.6], + [165.1, 55.2], + [165.1, 62.7], + [168.9, 56.6], + [162.6, 53.9], + [164.5, 63.2], + [176.5, 73.6], + [168.9, 62.0], + [175.3, 63.6], + [159.4, 53.2], + [160.0, 53.4], + [170.2, 55.0], + [162.6, 70.5], + [167.6, 54.5], + [162.6, 54.5], + [160.7, 55.9], + [160.0, 59.0], + [157.5, 63.6], + [162.6, 54.5], + [152.4, 47.3], + [170.2, 67.7], + [165.1, 80.9], + [172.7, 70.5], + [165.1, 60.9], + [170.2, 63.6], + [170.2, 54.5], + [170.2, 59.1], + [161.3, 70.5], + [167.6, 52.7], + [167.6, 62.7], + [165.1, 86.3], + [162.6, 66.4], + [152.4, 67.3], + [168.9, 63.0], + [170.2, 73.6], + [175.2, 62.3], + [175.2, 57.7], + [160.0, 55.4], + [165.1, 104.1], + [174.0, 55.5], + [170.2, 77.3], + [160.0, 80.5], + [167.6, 64.5], + [167.6, 72.3], + [167.6, 61.4], + [154.9, 58.2], + [162.6, 81.8], + [175.3, 63.6], + [171.4, 53.4], + [157.5, 54.5], + [165.1, 53.6], + [160.0, 60.0], + [174.0, 73.6], + [162.6, 61.4], + [174.0, 55.5], + [162.6, 63.6], + [161.3, 60.9], + [156.2, 60.0], + [149.9, 46.8], + [169.5, 57.3], + [160.0, 64.1], + [175.3, 63.6], + [169.5, 67.3], + [160.0, 75.5], + [172.7, 68.2], + [162.6, 61.4], + [157.5, 76.8], + [176.5, 71.8], + [164.4, 55.5], + [160.7, 48.6], + [174.0, 66.4], + [163.8, 67.3] + ], + markPoint: { + data: [{ + type: 'max', + name: 'Max' + }, { + type: 'min', + name: 'Min' + }] + }, + markLine: { + data: [{ + type: 'average', + name: 'Mean' + }] + } + }, { + name: 'Data2', + type: 'scatter', + tooltip: { + trigger: 'item', + formatter: function(params) { + if (params.value.length > 1) { + return params.seriesName + ' :
          ' + params.value[0] + 'cm ' + params.value[1] + 'kg '; + } else { + return params.seriesName + ' :
          ' + params.name + ' : ' + params.value + 'kg '; + } + } + }, + data: [ + [174.0, 65.6], + [175.3, 71.8], + [193.5, 80.7], + [186.5, 72.6], + [187.2, 78.8], + [181.5, 74.8], + [184.0, 86.4], + [184.5, 78.4], + [175.0, 62.0], + [184.0, 81.6], + [180.0, 76.6], + [177.8, 83.6], + [192.0, 90.0], + [176.0, 74.6], + [174.0, 71.0], + [184.0, 79.6], + [192.7, 93.8], + [171.5, 70.0], + [173.0, 72.4], + [176.0, 85.9], + [176.0, 78.8], + [180.5, 77.8], + [172.7, 66.2], + [176.0, 86.4], + [173.5, 81.8], + [178.0, 89.6], + [180.3, 82.8], + [180.3, 76.4], + [164.5, 63.2], + [173.0, 60.9], + [183.5, 74.8], + [175.5, 70.0], + [188.0, 72.4], + [189.2, 84.1], + [172.8, 69.1], + [170.0, 59.5], + [182.0, 67.2], + [170.0, 61.3], + [177.8, 68.6], + [184.2, 80.1], + [186.7, 87.8], + [171.4, 84.7], + [172.7, 73.4], + [175.3, 72.1], + [180.3, 82.6], + [182.9, 88.7], + [188.0, 84.1], + [177.2, 94.1], + [172.1, 74.9], + [167.0, 59.1], + [169.5, 75.6], + [174.0, 86.2], + [172.7, 75.3], + [182.2, 87.1], + [164.1, 55.2], + [163.0, 57.0], + [171.5, 61.4], + [184.2, 76.8], + [174.0, 86.8], + [174.0, 72.2], + [177.0, 71.6], + [186.0, 84.8], + [167.0, 68.2], + [171.8, 66.1], + [182.0, 72.0], + [167.0, 64.6], + [177.8, 74.8], + [164.5, 70.0], + [192.0, 101.6], + [175.5, 63.2], + [171.2, 79.1], + [181.6, 78.9], + [167.4, 67.7], + [181.1, 66.0], + [177.0, 68.2], + [174.5, 63.9], + [177.5, 72.0], + [170.5, 56.8], + [182.4, 74.5], + [197.1, 90.9], + [180.1, 93.0], + [175.5, 80.9], + [180.6, 72.7], + [184.4, 68.0], + [175.5, 70.9], + [180.6, 72.5], + [177.0, 72.5], + [177.1, 83.4], + [181.6, 75.5], + [176.5, 73.0], + [175.0, 70.2], + [174.0, 73.4], + [165.1, 70.5], + [177.0, 68.9], + [192.0, 102.3], + [176.5, 68.4], + [169.4, 65.9], + [182.1, 75.7], + [179.8, 84.5], + [175.3, 87.7], + [184.9, 86.4], + [177.3, 73.2], + [167.4, 53.9], + [178.1, 72.0], + [168.9, 55.5], + [157.2, 58.4], + [180.3, 83.2], + [170.2, 72.7], + [177.8, 64.1], + [172.7, 72.3], + [165.1, 65.0], + [186.7, 86.4], + [165.1, 65.0], + [174.0, 88.6], + [175.3, 84.1], + [185.4, 66.8], + [177.8, 75.5], + [180.3, 93.2], + [180.3, 82.7], + [177.8, 58.0], + [177.8, 79.5], + [177.8, 78.6], + [177.8, 71.8], + [177.8, 116.4], + [163.8, 72.2], + [188.0, 83.6], + [198.1, 85.5], + [175.3, 90.9], + [166.4, 85.9], + [190.5, 89.1], + [166.4, 75.0], + [177.8, 77.7], + [179.7, 86.4], + [172.7, 90.9], + [190.5, 73.6], + [185.4, 76.4], + [168.9, 69.1], + [167.6, 84.5], + [175.3, 64.5], + [170.2, 69.1], + [190.5, 108.6], + [177.8, 86.4], + [190.5, 80.9], + [177.8, 87.7], + [184.2, 94.5], + [176.5, 80.2], + [177.8, 72.0], + [180.3, 71.4], + [171.4, 72.7], + [172.7, 84.1], + [172.7, 76.8], + [177.8, 63.6], + [177.8, 80.9], + [182.9, 80.9], + [170.2, 85.5], + [167.6, 68.6], + [175.3, 67.7], + [165.1, 66.4], + [185.4, 102.3], + [181.6, 70.5], + [172.7, 95.9], + [190.5, 84.1], + [179.1, 87.3], + [175.3, 71.8], + [170.2, 65.9], + [193.0, 95.9], + [171.4, 91.4], + [177.8, 81.8], + [177.8, 96.8], + [167.6, 69.1], + [167.6, 82.7], + [180.3, 75.5], + [182.9, 79.5], + [176.5, 73.6], + [186.7, 91.8], + [188.0, 84.1], + [188.0, 85.9], + [177.8, 81.8], + [174.0, 82.5], + [177.8, 80.5], + [171.4, 70.0], + [185.4, 81.8], + [185.4, 84.1], + [188.0, 90.5], + [188.0, 91.4], + [182.9, 89.1], + [176.5, 85.0], + [175.3, 69.1], + [175.3, 73.6], + [188.0, 80.5], + [188.0, 82.7], + [175.3, 86.4], + [170.5, 67.7], + [179.1, 92.7], + [177.8, 93.6], + [175.3, 70.9], + [182.9, 75.0], + [170.8, 93.2], + [188.0, 93.2], + [180.3, 77.7], + [177.8, 61.4], + [185.4, 94.1], + [168.9, 75.0], + [185.4, 83.6], + [180.3, 85.5], + [174.0, 73.9], + [167.6, 66.8], + [182.9, 87.3], + [160.0, 72.3], + [180.3, 88.6], + [167.6, 75.5], + [186.7, 101.4], + [175.3, 91.1], + [175.3, 67.3], + [175.9, 77.7], + [175.3, 81.8], + [179.1, 75.5], + [181.6, 84.5], + [177.8, 76.6], + [182.9, 85.0], + [177.8, 102.5], + [184.2, 77.3], + [179.1, 71.8], + [176.5, 87.9], + [188.0, 94.3], + [174.0, 70.9], + [167.6, 64.5], + [170.2, 77.3], + [167.6, 72.3], + [188.0, 87.3], + [174.0, 80.0], + [176.5, 82.3], + [180.3, 73.6], + [167.6, 74.1], + [188.0, 85.9], + [180.3, 73.2], + [167.6, 76.3], + [183.0, 65.9], + [183.0, 90.9], + [179.1, 89.1], + [170.2, 62.3], + [177.8, 82.7], + [179.1, 79.1], + [190.5, 98.2], + [177.8, 84.1], + [180.3, 83.2], + [180.3, 83.2] + ], + markPoint: { + data: [{ + type: 'max', + name: 'Max' + }, { + type: 'min', + name: 'Min' + }] + }, + markLine: { + data: [{ + type: 'average', + name: 'Mean' + }] + } + }] + }); + + } + + //echart Bar Horizontal + + if ($('#echart_bar_horizontal').length ){ + + var echartBar = echarts.init(document.getElementById('echart_bar_horizontal'), theme); + + echartBar.setOption({ + title: { + text: 'Bar Graph', + subtext: 'Graph subtitle' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + x: 100, + data: ['2015', '2016'] + }, + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + xAxis: [{ + type: 'value', + boundaryGap: [0, 0.01] + }], + yAxis: [{ + type: 'category', + data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] + }], + series: [{ + name: '2015', + type: 'bar', + data: [18203, 23489, 29034, 104970, 131744, 630230] + }, { + name: '2016', + type: 'bar', + data: [19325, 23438, 31000, 121594, 134141, 681807] + }] + }); + + } + + //echart Pie Collapse + + if ($('#echart_pie2').length ){ + + var echartPieCollapse = echarts.init(document.getElementById('echart_pie2'), theme); + + echartPieCollapse.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + x: 'center', + y: 'bottom', + data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'] + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + series: [{ + name: 'Area Mode', + type: 'pie', + radius: [25, 90], + center: ['50%', 170], + roseType: 'area', + x: '50%', + max: 40, + sort: 'ascending', + data: [{ + value: 10, + name: 'rose1' + }, { + value: 5, + name: 'rose2' + }, { + value: 15, + name: 'rose3' + }, { + value: 25, + name: 'rose4' + }, { + value: 20, + name: 'rose5' + }, { + value: 35, + name: 'rose6' + }] + }] + }); + + } + + //echart Donut + + if ($('#echart_donut').length ){ + + var echartDonut = echarts.init(document.getElementById('echart_donut'), theme); + + echartDonut.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
          {b} : {c} ({d}%)" + }, + calculable: true, + legend: { + x: 'center', + y: 'bottom', + data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'], + option: { + funnel: { + x: '25%', + width: '50%', + funnelAlign: 'center', + max: 1548 + } + } + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: 'Access to the resource', + type: 'pie', + radius: ['35%', '55%'], + itemStyle: { + normal: { + label: { + show: true + }, + labelLine: { + show: true + } + }, + emphasis: { + label: { + show: true, + position: 'center', + textStyle: { + fontSize: '14', + fontWeight: 'normal' + } + } + } + }, + data: [{ + value: 335, + name: 'Direct Access' + }, { + value: 310, + name: 'E-mail Marketing' + }, { + value: 234, + name: 'Union Ad' + }, { + value: 135, + name: 'Video Ads' + }, { + value: 1548, + name: 'Search Engine' + }] + }] + }); + + } + + //echart Pie + + if ($('#echart_pie').length ){ + + var echartPie = echarts.init(document.getElementById('echart_pie'), theme); + + echartPie.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + x: 'center', + y: 'bottom', + data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'], + option: { + funnel: { + x: '25%', + width: '50%', + funnelAlign: 'left', + max: 1548 + } + } + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + series: [{ + name: '访问来源', + type: 'pie', + radius: '55%', + center: ['50%', '48%'], + data: [{ + value: 335, + name: 'Direct Access' + }, { + value: 310, + name: 'E-mail Marketing' + }, { + value: 234, + name: 'Union Ad' + }, { + value: 135, + name: 'Video Ads' + }, { + value: 1548, + name: 'Search Engine' + }] + }] + }); + + var dataStyle = { + normal: { + label: { + show: false + }, + labelLine: { + show: false + } + } + }; + + var placeHolderStyle = { + normal: { + color: 'rgba(0,0,0,0)', + label: { + show: false + }, + labelLine: { + show: false + } + }, + emphasis: { + color: 'rgba(0,0,0,0)' + } + }; + + } + + //echart Mini Pie + + if ($('#echart_mini_pie').length ){ + + var echartMiniPie = echarts.init(document.getElementById('echart_mini_pie'), theme); + + echartMiniPie .setOption({ + title: { + text: 'Chart #2', + subtext: 'From ExcelHome', + sublink: 'http://e.weibo.com/1341556070/AhQXtjbqh', + x: 'center', + y: 'center', + itemGap: 20, + textStyle: { + color: 'rgba(30,144,255,0.8)', + fontFamily: '微软雅黑', + fontSize: 35, + fontWeight: 'bolder' + } + }, + tooltip: { + show: true, + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + orient: 'vertical', + x: 170, + y: 45, + itemGap: 12, + data: ['68%Something #1', '29%Something #2', '3%Something #3'], + }, + toolbox: { + show: true, + feature: { + mark: { + show: true + }, + dataView: { + show: true, + title: "Text View", + lang: [ + "Text View", + "Close", + "Refresh", + ], + readOnly: false + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: '1', + type: 'pie', + clockWise: false, + radius: [105, 130], + itemStyle: dataStyle, + data: [{ + value: 68, + name: '68%Something #1' + }, { + value: 32, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }, { + name: '2', + type: 'pie', + clockWise: false, + radius: [80, 105], + itemStyle: dataStyle, + data: [{ + value: 29, + name: '29%Something #2' + }, { + value: 71, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }, { + name: '3', + type: 'pie', + clockWise: false, + radius: [25, 80], + itemStyle: dataStyle, + data: [{ + value: 3, + name: '3%Something #3' + }, { + value: 97, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }] + }); + + } + + //echart Map + + if ($('#echart_world_map').length ){ + + var echartMap = echarts.init(document.getElementById('echart_world_map'), theme); + + + echartMap.setOption({ + title: { + text: 'World Population (2010)', + subtext: 'from United Nations, Total population, both sexes combined, as of 1 July (thousands)', + x: 'center', + y: 'top' + }, + tooltip: { + trigger: 'item', + formatter: function(params) { + var value = (params.value + '').split('.'); + value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + '.' + value[1]; + return params.seriesName + '
          ' + params.name + ' : ' + value; + } + }, + toolbox: { + show: true, + orient: 'vertical', + x: 'right', + y: 'center', + feature: { + mark: { + show: true + }, + dataView: { + show: true, + title: "Text View", + lang: [ + "Text View", + "Close", + "Refresh", + ], + readOnly: false + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + dataRange: { + min: 0, + max: 1000000, + text: ['High', 'Low'], + realtime: false, + calculable: true, + color: ['#087E65', '#26B99A', '#CBEAE3'] + }, + series: [{ + name: 'World Population (2010)', + type: 'map', + mapType: 'world', + roam: false, + mapLocation: { + y: 60 + }, + itemStyle: { + emphasis: { + label: { + show: true + } + } + }, + data: [{ + name: 'Afghanistan', + value: 28397.812 + }, { + name: 'Angola', + value: 19549.124 + }, { + name: 'Albania', + value: 3150.143 + }, { + name: 'United Arab Emirates', + value: 8441.537 + }, { + name: 'Argentina', + value: 40374.224 + }, { + name: 'Armenia', + value: 2963.496 + }, { + name: 'French Southern and Antarctic Lands', + value: 268.065 + }, { + name: 'Australia', + value: 22404.488 + }, { + name: 'Austria', + value: 8401.924 + }, { + name: 'Azerbaijan', + value: 9094.718 + }, { + name: 'Burundi', + value: 9232.753 + }, { + name: 'Belgium', + value: 10941.288 + }, { + name: 'Benin', + value: 9509.798 + }, { + name: 'Burkina Faso', + value: 15540.284 + }, { + name: 'Bangladesh', + value: 151125.475 + }, { + name: 'Bulgaria', + value: 7389.175 + }, { + name: 'The Bahamas', + value: 66402.316 + }, { + name: 'Bosnia and Herzegovina', + value: 3845.929 + }, { + name: 'Belarus', + value: 9491.07 + }, { + name: 'Belize', + value: 308.595 + }, { + name: 'Bermuda', + value: 64.951 + }, { + name: 'Bolivia', + value: 716.939 + }, { + name: 'Brazil', + value: 195210.154 + }, { + name: 'Brunei', + value: 27.223 + }, { + name: 'Bhutan', + value: 716.939 + }, { + name: 'Botswana', + value: 1969.341 + }, { + name: 'Central African Republic', + value: 4349.921 + }, { + name: 'Canada', + value: 34126.24 + }, { + name: 'Switzerland', + value: 7830.534 + }, { + name: 'Chile', + value: 17150.76 + }, { + name: 'China', + value: 1359821.465 + }, { + name: 'Ivory Coast', + value: 60508.978 + }, { + name: 'Cameroon', + value: 20624.343 + }, { + name: 'Democratic Republic of the Congo', + value: 62191.161 + }, { + name: 'Republic of the Congo', + value: 3573.024 + }, { + name: 'Colombia', + value: 46444.798 + }, { + name: 'Costa Rica', + value: 4669.685 + }, { + name: 'Cuba', + value: 11281.768 + }, { + name: 'Northern Cyprus', + value: 1.468 + }, { + name: 'Cyprus', + value: 1103.685 + }, { + name: 'Czech Republic', + value: 10553.701 + }, { + name: 'Germany', + value: 83017.404 + }, { + name: 'Djibouti', + value: 834.036 + }, { + name: 'Denmark', + value: 5550.959 + }, { + name: 'Dominican Republic', + value: 10016.797 + }, { + name: 'Algeria', + value: 37062.82 + }, { + name: 'Ecuador', + value: 15001.072 + }, { + name: 'Egypt', + value: 78075.705 + }, { + name: 'Eritrea', + value: 5741.159 + }, { + name: 'Spain', + value: 46182.038 + }, { + name: 'Estonia', + value: 1298.533 + }, { + name: 'Ethiopia', + value: 87095.281 + }, { + name: 'Finland', + value: 5367.693 + }, { + name: 'Fiji', + value: 860.559 + }, { + name: 'Falkland Islands', + value: 49.581 + }, { + name: 'France', + value: 63230.866 + }, { + name: 'Gabon', + value: 1556.222 + }, { + name: 'United Kingdom', + value: 62066.35 + }, { + name: 'Georgia', + value: 4388.674 + }, { + name: 'Ghana', + value: 24262.901 + }, { + name: 'Guinea', + value: 10876.033 + }, { + name: 'Gambia', + value: 1680.64 + }, { + name: 'Guinea Bissau', + value: 10876.033 + }, { + name: 'Equatorial Guinea', + value: 696.167 + }, { + name: 'Greece', + value: 11109.999 + }, { + name: 'Greenland', + value: 56.546 + }, { + name: 'Guatemala', + value: 14341.576 + }, { + name: 'French Guiana', + value: 231.169 + }, { + name: 'Guyana', + value: 786.126 + }, { + name: 'Honduras', + value: 7621.204 + }, { + name: 'Croatia', + value: 4338.027 + }, { + name: 'Haiti', + value: 9896.4 + }, { + name: 'Hungary', + value: 10014.633 + }, { + name: 'Indonesia', + value: 240676.485 + }, { + name: 'India', + value: 1205624.648 + }, { + name: 'Ireland', + value: 4467.561 + }, { + name: 'Iran', + value: 240676.485 + }, { + name: 'Iraq', + value: 30962.38 + }, { + name: 'Iceland', + value: 318.042 + }, { + name: 'Israel', + value: 7420.368 + }, { + name: 'Italy', + value: 60508.978 + }, { + name: 'Jamaica', + value: 2741.485 + }, { + name: 'Jordan', + value: 6454.554 + }, { + name: 'Japan', + value: 127352.833 + }, { + name: 'Kazakhstan', + value: 15921.127 + }, { + name: 'Kenya', + value: 40909.194 + }, { + name: 'Kyrgyzstan', + value: 5334.223 + }, { + name: 'Cambodia', + value: 14364.931 + }, { + name: 'South Korea', + value: 51452.352 + }, { + name: 'Kosovo', + value: 97.743 + }, { + name: 'Kuwait', + value: 2991.58 + }, { + name: 'Laos', + value: 6395.713 + }, { + name: 'Lebanon', + value: 4341.092 + }, { + name: 'Liberia', + value: 3957.99 + }, { + name: 'Libya', + value: 6040.612 + }, { + name: 'Sri Lanka', + value: 20758.779 + }, { + name: 'Lesotho', + value: 2008.921 + }, { + name: 'Lithuania', + value: 3068.457 + }, { + name: 'Luxembourg', + value: 507.885 + }, { + name: 'Latvia', + value: 2090.519 + }, { + name: 'Morocco', + value: 31642.36 + }, { + name: 'Moldova', + value: 103.619 + }, { + name: 'Madagascar', + value: 21079.532 + }, { + name: 'Mexico', + value: 117886.404 + }, { + name: 'Macedonia', + value: 507.885 + }, { + name: 'Mali', + value: 13985.961 + }, { + name: 'Myanmar', + value: 51931.231 + }, { + name: 'Montenegro', + value: 620.078 + }, { + name: 'Mongolia', + value: 2712.738 + }, { + name: 'Mozambique', + value: 23967.265 + }, { + name: 'Mauritania', + value: 3609.42 + }, { + name: 'Malawi', + value: 15013.694 + }, { + name: 'Malaysia', + value: 28275.835 + }, { + name: 'Namibia', + value: 2178.967 + }, { + name: 'New Caledonia', + value: 246.379 + }, { + name: 'Niger', + value: 15893.746 + }, { + name: 'Nigeria', + value: 159707.78 + }, { + name: 'Nicaragua', + value: 5822.209 + }, { + name: 'Netherlands', + value: 16615.243 + }, { + name: 'Norway', + value: 4891.251 + }, { + name: 'Nepal', + value: 26846.016 + }, { + name: 'New Zealand', + value: 4368.136 + }, { + name: 'Oman', + value: 2802.768 + }, { + name: 'Pakistan', + value: 173149.306 + }, { + name: 'Panama', + value: 3678.128 + }, { + name: 'Peru', + value: 29262.83 + }, { + name: 'Philippines', + value: 93444.322 + }, { + name: 'Papua New Guinea', + value: 6858.945 + }, { + name: 'Poland', + value: 38198.754 + }, { + name: 'Puerto Rico', + value: 3709.671 + }, { + name: 'North Korea', + value: 1.468 + }, { + name: 'Portugal', + value: 10589.792 + }, { + name: 'Paraguay', + value: 6459.721 + }, { + name: 'Qatar', + value: 1749.713 + }, { + name: 'Romania', + value: 21861.476 + }, { + name: 'Russia', + value: 21861.476 + }, { + name: 'Rwanda', + value: 10836.732 + }, { + name: 'Western Sahara', + value: 514.648 + }, { + name: 'Saudi Arabia', + value: 27258.387 + }, { + name: 'Sudan', + value: 35652.002 + }, { + name: 'South Sudan', + value: 9940.929 + }, { + name: 'Senegal', + value: 12950.564 + }, { + name: 'Solomon Islands', + value: 526.447 + }, { + name: 'Sierra Leone', + value: 5751.976 + }, { + name: 'El Salvador', + value: 6218.195 + }, { + name: 'Somaliland', + value: 9636.173 + }, { + name: 'Somalia', + value: 9636.173 + }, { + name: 'Republic of Serbia', + value: 3573.024 + }, { + name: 'Suriname', + value: 524.96 + }, { + name: 'Slovakia', + value: 5433.437 + }, { + name: 'Slovenia', + value: 2054.232 + }, { + name: 'Sweden', + value: 9382.297 + }, { + name: 'Swaziland', + value: 1193.148 + }, { + name: 'Syria', + value: 7830.534 + }, { + name: 'Chad', + value: 11720.781 + }, { + name: 'Togo', + value: 6306.014 + }, { + name: 'Thailand', + value: 66402.316 + }, { + name: 'Tajikistan', + value: 7627.326 + }, { + name: 'Turkmenistan', + value: 5041.995 + }, { + name: 'East Timor', + value: 10016.797 + }, { + name: 'Trinidad and Tobago', + value: 1328.095 + }, { + name: 'Tunisia', + value: 10631.83 + }, { + name: 'Turkey', + value: 72137.546 + }, { + name: 'United Republic of Tanzania', + value: 44973.33 + }, { + name: 'Uganda', + value: 33987.213 + }, { + name: 'Ukraine', + value: 46050.22 + }, { + name: 'Uruguay', + value: 3371.982 + }, { + name: 'United States of America', + value: 312247.116 + }, { + name: 'Uzbekistan', + value: 27769.27 + }, { + name: 'Venezuela', + value: 236.299 + }, { + name: 'Vietnam', + value: 89047.397 + }, { + name: 'Vanuatu', + value: 236.299 + }, { + name: 'West Bank', + value: 13.565 + }, { + name: 'Yemen', + value: 22763.008 + }, { + name: 'South Africa', + value: 51452.352 + }, { + name: 'Zambia', + value: 13216.985 + }, { + name: 'Zimbabwe', + value: 13076.978 + }] + }] + }); + + } + + } + + + $(document).ready(function() { + + init_sparklines(); + init_flot_chart(); + init_sidebar(); + init_wysiwyg(); + init_InputMask(); + init_JQVmap(); + init_cropper(); + init_knob(); + init_IonRangeSlider(); + init_ColorPicker(); + init_TagsInput(); + init_parsley(); + init_daterangepicker(); + init_daterangepicker_right(); + init_daterangepicker_single_call(); + init_daterangepicker_reservation(); + init_SmartWizard(); + init_EasyPieChart(); + init_charts(); + init_echarts(); + init_morris_charts(); + init_skycons(); + init_select2(); + init_validator(); + init_DataTables(); + init_chart_doughnut(); + init_gauge(); + init_PNotify(); + init_starrr(); + init_calendar(); + init_compose(); + init_CustomNotification(); + init_autosize(); + init_autocomplete(); + + }); + + diff --git a/public/theme/build/js/custom.min.js b/public/theme/build/js/custom.min.js new file mode 100644 index 0000000..ed8c5b0 --- /dev/null +++ b/public/theme/build/js/custom.min.js @@ -0,0 +1,4209 @@ +function init_sidebar() { + var a = function() { + $RIGHT_COL.css("min-height", $(window).height()); + var a = $BODY.outerHeight(), + b = $BODY.hasClass("footer_fixed") ? -10 : $FOOTER.height(), + c = $LEFT_COL.eq(1).height() + $SIDEBAR_FOOTER.height(), + d = a < c ? c : a; + d -= $NAV_MENU.height() + b, $RIGHT_COL.css("min-height", d) + }; + $SIDEBAR_MENU.find("a").on("click", function(b) { + var c = $(this).parent(); + c.is(".active") ? (c.removeClass("active active-sm"), $("ul:first", c).slideUp(function() { + a() + })) : (c.parent().is(".child_menu") ? $BODY.is(".nav-sm") && ($SIDEBAR_MENU.find("li").removeClass("active active-sm"), $SIDEBAR_MENU.find("li ul").slideUp()) : ($SIDEBAR_MENU.find("li").removeClass("active active-sm"), $SIDEBAR_MENU.find("li ul").slideUp()), c.addClass("active"), $("ul:first", c).slideDown(function() { + a() + })) + }), $MENU_TOGGLE.on("click", function() { + $BODY.hasClass("nav-md") ? ($SIDEBAR_MENU.find("li.active ul").hide(), $SIDEBAR_MENU.find("li.active").addClass("active-sm").removeClass("active")) : ($SIDEBAR_MENU.find("li.active-sm ul").show(), $SIDEBAR_MENU.find("li.active-sm").addClass("active").removeClass("active-sm")), $BODY.toggleClass("nav-md nav-sm"), a() + }), $SIDEBAR_MENU.find('a[href="' + CURRENT_URL + '"]').parent("li").addClass("current-page"), $SIDEBAR_MENU.find("a").filter(function() { + return this.href == CURRENT_URL + }).parent("li").addClass("current-page").parents("ul").slideDown(function() { + a() + }).parent().addClass("active"), $(window).smartresize(function() { + a() + }), a(), $.fn.mCustomScrollbar && $(".menu_fixed").mCustomScrollbar({ + autoHideScrollbar: !0, + theme: "minimal", + mouseWheel: { + preventDefault: !0 + } + }) +} + +function countChecked() { + "all" === checkState && $(".bulk_action input[name='table_records']").iCheck("check"), "none" === checkState && $(".bulk_action input[name='table_records']").iCheck("uncheck"); + var a = $(".bulk_action input[name='table_records']:checked").length; + a ? ($(".column-title").hide(), $(".bulk-actions").show(), $(".action-cnt").html(a + " Records Selected")) : ($(".column-title").show(), $(".bulk-actions").hide()) +} + +function gd(a, b, c) { + return new Date(a, b - 1, c).getTime() +} + +function init_flot_chart() { + if ("undefined" != typeof $.plot) { + console.log("init_flot_chart"); + for (var a = [ + [gd(2012, 1, 1), 17], + [gd(2012, 1, 2), 74], + [gd(2012, 1, 3), 6], + [gd(2012, 1, 4), 39], + [gd(2012, 1, 5), 20], + [gd(2012, 1, 6), 85], + [gd(2012, 1, 7), 7] + ], b = [ + [gd(2012, 1, 1), 82], + [gd(2012, 1, 2), 23], + [gd(2012, 1, 3), 66], + [gd(2012, 1, 4), 9], + [gd(2012, 1, 5), 119], + [gd(2012, 1, 6), 6], + [gd(2012, 1, 7), 9] + ], d = [], e = [ + [0, 1], + [1, 9], + [2, 6], + [3, 10], + [4, 5], + [5, 17], + [6, 6], + [7, 10], + [8, 7], + [9, 11], + [10, 35], + [11, 9], + [12, 12], + [13, 5], + [14, 3], + [15, 4], + [16, 9] + ], f = 0; f < 30; f++) d.push([new Date(Date.today().add(f).days()).getTime(), randNum() + f + f + 10]); + var g = { + series: { + lines: { + show: !1, + fill: !0 + }, + splines: { + show: !0, + tension: .4, + lineWidth: 1, + fill: .4 + }, + points: { + radius: 0, + show: !0 + }, + shadowSize: 2 + }, + grid: { + verticalLines: !0, + hoverable: !0, + clickable: !0, + tickColor: "#d5d5d5", + borderWidth: 1, + color: "#fff" + }, + colors: ["rgba(38, 185, 154, 0.38)", "rgba(3, 88, 106, 0.38)"], + xaxis: { + tickColor: "rgba(51, 51, 51, 0.06)", + mode: "time", + tickSize: [1, "day"], + axisLabel: "Date", + axisLabelUseCanvas: !0, + axisLabelFontSizePixels: 12, + axisLabelFontFamily: "Verdana, Arial", + axisLabelPadding: 10 + }, + yaxis: { + ticks: 8, + tickColor: "rgba(51, 51, 51, 0.06)" + }, + tooltip: !1 + }, + h = { + grid: { + show: !0, + aboveData: !0, + color: "#3f3f3f", + labelMargin: 10, + axisMargin: 0, + borderWidth: 0, + borderColor: null, + minBorderMargin: 5, + clickable: !0, + hoverable: !0, + autoHighlight: !0, + mouseActiveRadius: 100 + }, + series: { + lines: { + show: !0, + fill: !0, + lineWidth: 2, + steps: !1 + }, + points: { + show: !0, + radius: 4.5, + symbol: "circle", + lineWidth: 3 + } + }, + legend: { + position: "ne", + margin: [0, -25], + noColumns: 0, + labelBoxBorderColor: null, + labelFormatter: function(a, b) { + return a + "  " + }, + width: 40, + height: 1 + }, + colors: ["#96CA59", "#3F97EB", "#72c380", "#6f7a8a", "#f7cb38", "#5a8022", "#2c7282"], + shadowSize: 0, + tooltip: !0, + tooltipOpts: { + content: "%s: %y.0", + xDateFormat: "%d/%m", + shifts: { + x: -30, + y: -50 + }, + defaultTheme: !1 + }, + yaxis: { + min: 0 + }, + xaxis: { + mode: "time", + minTickSize: [1, "day"], + timeformat: "%d/%m/%y", + min: d[0][0], + max: d[20][0] + } + }, + i = { + series: { + curvedLines: { + apply: !0, + active: !0, + monotonicFit: !0 + } + }, + colors: ["#26B99A"], + grid: { + borderWidth: { + top: 0, + right: 0, + bottom: 1, + left: 1 + }, + borderColor: { + bottom: "#7F8790", + left: "#7F8790" + } + } + }; + $("#chart_plot_01").length && (console.log("Plot1"), $.plot($("#chart_plot_01"), [a, b], g)), $("#chart_plot_02").length && (console.log("Plot2"), $.plot($("#chart_plot_02"), [{ + label: "Email Sent", + data: d, + lines: { + fillColor: "rgba(150, 202, 89, 0.12)" + }, + points: { + fillColor: "#fff" + } + }], h)), $("#chart_plot_03").length && (console.log("Plot3"), $.plot($("#chart_plot_03"), [{ + label: "Registrations", + data: e, + lines: { + fillColor: "rgba(150, 202, 89, 0.12)" + }, + points: { + fillColor: "#fff" + } + }], i)) + } +} + +function init_starrr() { + "undefined" != typeof starrr && (console.log("init_starrr"), $(".stars").starrr(), $(".stars-existing").starrr({ + rating: 4 + }), $(".stars").on("starrr:change", function(a, b) { + $(".stars-count").html(b) + }), $(".stars-existing").on("starrr:change", function(a, b) { + $(".stars-count-existing").html(b) + })) +} + +function init_JQVmap() { + "undefined" != typeof jQuery.fn.vectorMap && (console.log("init_JQVmap"), $("#world-map-gdp").length && $("#world-map-gdp").vectorMap({ + map: "world_en", + backgroundColor: null, + color: "#ffffff", + hoverOpacity: .7, + selectedColor: "#666666", + enableZoom: !0, + showTooltip: !0, + values: sample_data, + scaleColors: ["#E6F2F0", "#149B7E"], + normalizeFunction: "polynomial" + }), $("#usa_map").length && $("#usa_map").vectorMap({ + map: "usa_en", + backgroundColor: null, + color: "#ffffff", + hoverOpacity: .7, + selectedColor: "#666666", + enableZoom: !0, + showTooltip: !0, + values: sample_data, + scaleColors: ["#E6F2F0", "#149B7E"], + normalizeFunction: "polynomial" + })) +} + +function init_skycons() { + if ("undefined" != typeof Skycons) { + console.log("init_skycons"); + var c, a = new Skycons({ + color: "#73879C" + }), + b = ["clear-day", "clear-night", "partly-cloudy-day", "partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind", "fog"]; + for (c = b.length; c--;) a.set(b[c], b[c]); + a.play() + } +} + +function init_chart_doughnut() { + if ("undefined" != typeof Chart && (console.log("init_chart_doughnut"), $(".canvasDoughnut").length)) { + var a = { + type: "doughnut", + tooltipFillColor: "rgba(51, 51, 51, 0.55)", + data: { + labels: ["Symbian", "Blackberry", "Other", "Android", "IOS"], + datasets: [{ + data: [15, 20, 30, 10, 30], + backgroundColor: ["#BDC3C7", "#9B59B6", "#E74C3C", "#26B99A", "#3498DB"], + hoverBackgroundColor: ["#CFD4D8", "#B370CF", "#E95E4F", "#36CAAB", "#49A9EA"] + }] + }, + options: { + legend: !1, + responsive: !1 + } + }; + $(".canvasDoughnut").each(function() { + var b = $(this); + new Chart(b, a) + }) + } +} + +function init_gauge() { + if ("undefined" != typeof Gauge) { + console.log("init_gauge [" + $(".gauge-chart").length + "]"), console.log("init_gauge"); + var a = { + lines: 12, + angle: 0, + lineWidth: .4, + pointer: { + length: .75, + strokeWidth: .042, + color: "#1D212A" + }, + limitMax: "false", + colorStart: "#1ABC9C", + colorStop: "#1ABC9C", + strokeColor: "#F0F3F3", + generateGradient: !0 + }; + if ($("#chart_gauge_01").length) var b = document.getElementById("chart_gauge_01"), + c = new Gauge(b).setOptions(a); + if ($("#gauge-text").length && (c.maxValue = 6e3, c.animationSpeed = 32, c.set(3200), c.setTextField(document.getElementById("gauge-text"))), $("#chart_gauge_02").length) var d = document.getElementById("chart_gauge_02"), + e = new Gauge(d).setOptions(a); + $("#gauge-text2").length && (e.maxValue = 9e3, e.animationSpeed = 32, e.set(2400), e.setTextField(document.getElementById("gauge-text2"))) + } +} + +function init_sparklines() { + "undefined" != typeof jQuery.fn.sparkline && (console.log("init_sparklines"), $(".sparkline_one").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: "bar", + height: "125", + barWidth: 13, + colorMap: { + 7: "#a1a1a1" + }, + barSpacing: 2, + barColor: "#26B99A" + }), $(".sparkline_two").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: "bar", + height: "40", + barWidth: 9, + colorMap: { + 7: "#a1a1a1" + }, + barSpacing: 2, + barColor: "#26B99A" + }), $(".sparkline_three").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: "line", + width: "200", + height: "40", + lineColor: "#26B99A", + fillColor: "rgba(223, 223, 223, 0.57)", + lineWidth: 2, + spotColor: "#26B99A", + minSpotColor: "#26B99A" + }), $(".sparkline11").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3], { + type: "bar", + height: "40", + barWidth: 8, + colorMap: { + 7: "#a1a1a1" + }, + barSpacing: 2, + barColor: "#26B99A" + }), $(".sparkline22").sparkline([2, 4, 3, 4, 7, 5, 4, 3, 5, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6], { + type: "line", + height: "40", + width: "200", + lineColor: "#26B99A", + fillColor: "#ffffff", + lineWidth: 3, + spotColor: "#34495E", + minSpotColor: "#34495E" + }), $(".sparkline_bar").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], { + type: "bar", + colorMap: { + 7: "#a1a1a1" + }, + barColor: "#26B99A" + }), $(".sparkline_area").sparkline([5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7], { + type: "line", + lineColor: "#26B99A", + fillColor: "#26B99A", + spotColor: "#4578a0", + minSpotColor: "#728fb2", + maxSpotColor: "#6d93c4", + highlightSpotColor: "#ef5179", + highlightLineColor: "#8ba8bf", + spotRadius: 2.5, + width: 85 + }), $(".sparkline_line").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], { + type: "line", + lineColor: "#26B99A", + fillColor: "#ffffff", + width: 85, + spotColor: "#34495E", + minSpotColor: "#34495E" + }), $(".sparkline_pie").sparkline([1, 1, 2, 1], { + type: "pie", + sliceColors: ["#26B99A", "#ccc", "#75BCDD", "#D66DE2"] + }), $(".sparkline_discreet").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 2, 4, 3, 7, 8, 9, 7, 6, 4, 3], { + type: "discrete", + barWidth: 3, + lineColor: "#26B99A", + width: "85" + })) +} + +function init_autocomplete() { + if ("undefined" != typeof autocomplete) { + console.log("init_autocomplete"); + var a = { + AD: "Andorra", + A2: "Andorra Test", + AE: "United Arab Emirates", + AF: "Afghanistan", + AG: "Antigua and Barbuda", + AI: "Anguilla", + AL: "Albania", + AM: "Armenia", + AN: "Netherlands Antilles", + AO: "Angola", + AQ: "Antarctica", + AR: "Argentina", + AS: "American Samoa", + AT: "Austria", + AU: "Australia", + AW: "Aruba", + AX: "Åland Islands", + AZ: "Azerbaijan", + BA: "Bosnia and Herzegovina", + BB: "Barbados", + BD: "Bangladesh", + BE: "Belgium", + BF: "Burkina Faso", + BG: "Bulgaria", + BH: "Bahrain", + BI: "Burundi", + BJ: "Benin", + BL: "Saint Barthélemy", + BM: "Bermuda", + BN: "Brunei", + BO: "Bolivia", + BQ: "British Antarctic Territory", + BR: "Brazil", + BS: "Bahamas", + BT: "Bhutan", + BV: "Bouvet Island", + BW: "Botswana", + BY: "Belarus", + BZ: "Belize", + CA: "Canada", + CC: "Cocos [Keeling] Islands", + CD: "Congo - Kinshasa", + CF: "Central African Republic", + CG: "Congo - Brazzaville", + CH: "Switzerland", + CI: "Côte d’Ivoire", + CK: "Cook Islands", + CL: "Chile", + CM: "Cameroon", + CN: "China", + CO: "Colombia", + CR: "Costa Rica", + CS: "Serbia and Montenegro", + CT: "Canton and Enderbury Islands", + CU: "Cuba", + CV: "Cape Verde", + CX: "Christmas Island", + CY: "Cyprus", + CZ: "Czech Republic", + DD: "East Germany", + DE: "Germany", + DJ: "Djibouti", + DK: "Denmark", + DM: "Dominica", + DO: "Dominican Republic", + DZ: "Algeria", + EC: "Ecuador", + EE: "Estonia", + EG: "Egypt", + EH: "Western Sahara", + ER: "Eritrea", + ES: "Spain", + ET: "Ethiopia", + FI: "Finland", + FJ: "Fiji", + FK: "Falkland Islands", + FM: "Micronesia", + FO: "Faroe Islands", + FQ: "French Southern and Antarctic Territories", + FR: "France", + FX: "Metropolitan France", + GA: "Gabon", + GB: "United Kingdom", + GD: "Grenada", + GE: "Georgia", + GF: "French Guiana", + GG: "Guernsey", + GH: "Ghana", + GI: "Gibraltar", + GL: "Greenland", + GM: "Gambia", + GN: "Guinea", + GP: "Guadeloupe", + GQ: "Equatorial Guinea", + GR: "Greece", + GS: "South Georgia and the South Sandwich Islands", + GT: "Guatemala", + GU: "Guam", + GW: "Guinea-Bissau", + GY: "Guyana", + HK: "Hong Kong SAR China", + HM: "Heard Island and McDonald Islands", + HN: "Honduras", + HR: "Croatia", + HT: "Haiti", + HU: "Hungary", + ID: "Indonesia", + IE: "Ireland", + IL: "Israel", + IM: "Isle of Man", + IN: "India", + IO: "British Indian Ocean Territory", + IQ: "Iraq", + IR: "Iran", + IS: "Iceland", + IT: "Italy", + JE: "Jersey", + JM: "Jamaica", + JO: "Jordan", + JP: "Japan", + JT: "Johnston Island", + KE: "Kenya", + KG: "Kyrgyzstan", + KH: "Cambodia", + KI: "Kiribati", + KM: "Comoros", + KN: "Saint Kitts and Nevis", + KP: "North Korea", + KR: "South Korea", + KW: "Kuwait", + KY: "Cayman Islands", + KZ: "Kazakhstan", + LA: "Laos", + LB: "Lebanon", + LC: "Saint Lucia", + LI: "Liechtenstein", + LK: "Sri Lanka", + LR: "Liberia", + LS: "Lesotho", + LT: "Lithuania", + LU: "Luxembourg", + LV: "Latvia", + LY: "Libya", + MA: "Morocco", + MC: "Monaco", + MD: "Moldova", + ME: "Montenegro", + MF: "Saint Martin", + MG: "Madagascar", + MH: "Marshall Islands", + MI: "Midway Islands", + MK: "Macedonia", + ML: "Mali", + MM: "Myanmar [Burma]", + MN: "Mongolia", + MO: "Macau SAR China", + MP: "Northern Mariana Islands", + MQ: "Martinique", + MR: "Mauritania", + MS: "Montserrat", + MT: "Malta", + MU: "Mauritius", + MV: "Maldives", + MW: "Malawi", + MX: "Mexico", + MY: "Malaysia", + MZ: "Mozambique", + NA: "Namibia", + NC: "New Caledonia", + NE: "Niger", + NF: "Norfolk Island", + NG: "Nigeria", + NI: "Nicaragua", + NL: "Netherlands", + NO: "Norway", + NP: "Nepal", + NQ: "Dronning Maud Land", + NR: "Nauru", + NT: "Neutral Zone", + NU: "Niue", + NZ: "New Zealand", + OM: "Oman", + PA: "Panama", + PC: "Pacific Islands Trust Territory", + PE: "Peru", + PF: "French Polynesia", + PG: "Papua New Guinea", + PH: "Philippines", + PK: "Pakistan", + PL: "Poland", + PM: "Saint Pierre and Miquelon", + PN: "Pitcairn Islands", + PR: "Puerto Rico", + PS: "Palestinian Territories", + PT: "Portugal", + PU: "U.S. Miscellaneous Pacific Islands", + PW: "Palau", + PY: "Paraguay", + PZ: "Panama Canal Zone", + QA: "Qatar", + RE: "Réunion", + RO: "Romania", + RS: "Serbia", + RU: "Russia", + RW: "Rwanda", + SA: "Saudi Arabia", + SB: "Solomon Islands", + SC: "Seychelles", + SD: "Sudan", + SE: "Sweden", + SG: "Singapore", + SH: "Saint Helena", + SI: "Slovenia", + SJ: "Svalbard and Jan Mayen", + SK: "Slovakia", + SL: "Sierra Leone", + SM: "San Marino", + SN: "Senegal", + SO: "Somalia", + SR: "Suriname", + ST: "São Tomé and Príncipe", + SU: "Union of Soviet Socialist Republics", + SV: "El Salvador", + SY: "Syria", + SZ: "Swaziland", + TC: "Turks and Caicos Islands", + TD: "Chad", + TF: "French Southern Territories", + TG: "Togo", + TH: "Thailand", + TJ: "Tajikistan", + TK: "Tokelau", + TL: "Timor-Leste", + TM: "Turkmenistan", + TN: "Tunisia", + TO: "Tonga", + TR: "Turkey", + TT: "Trinidad and Tobago", + TV: "Tuvalu", + TW: "Taiwan", + TZ: "Tanzania", + UA: "Ukraine", + UG: "Uganda", + UM: "U.S. Minor Outlying Islands", + US: "United States", + UY: "Uruguay", + UZ: "Uzbekistan", + VA: "Vatican City", + VC: "Saint Vincent and the Grenadines", + VD: "North Vietnam", + VE: "Venezuela", + VG: "British Virgin Islands", + VI: "U.S. Virgin Islands", + VN: "Vietnam", + VU: "Vanuatu", + WF: "Wallis and Futuna", + WK: "Wake Island", + WS: "Samoa", + YD: "People's Democratic Republic of Yemen", + YE: "Yemen", + YT: "Mayotte", + ZA: "South Africa", + ZM: "Zambia", + ZW: "Zimbabwe", + ZZ: "Unknown or Invalid Region" + }, + b = $.map(a, function(a, b) { + return { + value: a, + data: b + } + }); + $("#autocomplete-custom-append").autocomplete({ + lookup: b + }) + } +} + +function init_autosize() { + "undefined" != typeof $.fn.autosize && autosize($(".resizable_textarea")) +} + +function init_parsley() { + if ("undefined" != typeof parsley) { + console.log("init_parsley"), $("parsley:field:validate", function() { + a() + }), $("#demo-form .btn").on("click", function() { + $("#demo-form").parsley().validate(), a() + }); + var a = function() { + !0 === $("#demo-form").parsley().isValid() ? ($(".bs-callout-info").removeClass("hidden"), $(".bs-callout-warning").addClass("hidden")) : ($(".bs-callout-info").addClass("hidden"), $(".bs-callout-warning").removeClass("hidden")) + }; + $("parsley:field:validate", function() { + a() + }), $("#demo-form2 .btn").on("click", function() { + $("#demo-form2").parsley().validate(), a() + }); + var a = function() { + !0 === $("#demo-form2").parsley().isValid() ? ($(".bs-callout-info").removeClass("hidden"), $(".bs-callout-warning").addClass("hidden")) : ($(".bs-callout-info").addClass("hidden"), $(".bs-callout-warning").removeClass("hidden")) + }; + try { + hljs.initHighlightingOnLoad() + } catch (a) {} + } +} + +function onAddTag(a) { + alert("Added a tag: " + a) +} + +function onRemoveTag(a) { + alert("Removed a tag: " + a) +} + +function onChangeTag(a, b) { + alert("Changed a tag: " + b) +} + +function init_TagsInput() { + "undefined" != typeof $.fn.tagsInput && $("#tags_1").tagsInput({ + width: "auto" + }) +} + +function init_select2() { + "undefined" != typeof select2 && (console.log("init_toolbox"), $(".select2_single").select2({ + placeholder: "Select a state", + allowClear: !0 + }), $(".select2_group").select2({}), $(".select2_multiple").select2({ + maximumSelectionLength: 4, + placeholder: "With Max Selection limit 4", + allowClear: !0 + })) +} + +function init_wysiwyg() { + + function b(a, b) { + var c = ""; + "unsupported-file-type" === a ? c = "Unsupported format " + b : console.log("error uploading file", a, b), $('
          File upload error ' + c + "
          ").prependTo("#alerts") + } + "undefined" != typeof $.fn.wysiwyg && (console.log("init_wysiwyg"), $(".editor-wrapper").each(function() { + var a = $(this).attr("id"); + $(this).wysiwyg({ + toolbarSelector: '[data-target="#' + a + '"]', + fileUploadError: b + }) + }), window.prettyPrint, prettyPrint()) +} + +function init_cropper() { + if ("undefined" != typeof $.fn.cropper) { + console.log("init_cropper"); + var a = $("#image"), + b = $("#download"), + c = $("#dataX"), + d = $("#dataY"), + e = $("#dataHeight"), + f = $("#dataWidth"), + g = $("#dataRotate"), + h = $("#dataScaleX"), + i = $("#dataScaleY"), + j = { + aspectRatio: 16 / 9, + preview: ".img-preview", + crop: function(a) { + c.val(Math.round(a.x)), d.val(Math.round(a.y)), e.val(Math.round(a.height)), f.val(Math.round(a.width)), g.val(a.rotate), h.val(a.scaleX), i.val(a.scaleY) + } + }; + $('[data-toggle="tooltip"]').tooltip(), a.on({ + "build.cropper": function(a) { + console.log(a.type) + }, + "built.cropper": function(a) { + console.log(a.type) + }, + "cropstart.cropper": function(a) { + console.log(a.type, a.action) + }, + "cropmove.cropper": function(a) { + console.log(a.type, a.action) + }, + "cropend.cropper": function(a) { + console.log(a.type, a.action) + }, + "crop.cropper": function(a) { + console.log(a.type, a.x, a.y, a.width, a.height, a.rotate, a.scaleX, a.scaleY) + }, + "zoom.cropper": function(a) { + console.log(a.type, a.ratio) + } + }).cropper(j), $.isFunction(document.createElement("canvas").getContext) || $('button[data-method="getCroppedCanvas"]').prop("disabled", !0), "undefined" == typeof document.createElement("cropper").style.transition && ($('button[data-method="rotate"]').prop("disabled", !0), $('button[data-method="scale"]').prop("disabled", !0)), "undefined" == typeof b[0].download && b.addClass("disabled"), $(".docs-toggles").on("change", "input", function() { + var e, f, b = $(this), + c = b.attr("name"), + d = b.prop("type"); + a.data("cropper") && ("checkbox" === d ? (j[c] = b.prop("checked"), e = a.cropper("getCropBoxData"), f = a.cropper("getCanvasData"), j.built = function() { + a.cropper("setCropBoxData", e), a.cropper("setCanvasData", f) + }) : "radio" === d && (j[c] = b.val()), a.cropper("destroy").cropper(j)) + }), $(".docs-buttons").on("click", "[data-method]", function() { + var e, f, c = $(this), + d = c.data(); + if (!c.prop("disabled") && !c.hasClass("disabled") && a.data("cropper") && d.method) { + if (d = $.extend({}, d), "undefined" != typeof d.target && (e = $(d.target), "undefined" == typeof d.option)) try { + d.option = JSON.parse(e.val()) + } catch (a) { + console.log(a.message) + } + switch (f = a.cropper(d.method, d.option, d.secondOption), d.method) { + case "scaleX": + case "scaleY": + $(this).data("option", -d.option); + break; + case "getCroppedCanvas": + f && ($("#getCroppedCanvasModal").modal().find(".modal-body").html(f), b.hasClass("disabled") || b.attr("href", f.toDataURL())) + } + if ($.isPlainObject(f) && e) try { + e.val(JSON.stringify(f)) + } catch (a) { + console.log(a.message) + } + } + }), $(document.body).on("keydown", function(b) { + if (a.data("cropper") && !(this.scrollTop > 300)) switch (b.which) { + case 37: + b.preventDefault(), a.cropper("move", -1, 0); + break; + case 38: + b.preventDefault(), a.cropper("move", 0, -1); + break; + case 39: + b.preventDefault(), a.cropper("move", 1, 0); + break; + case 40: + b.preventDefault(), a.cropper("move", 0, 1) + } + }); + var m, k = $("#inputImage"), + l = window.URL || window.webkitURL; + l ? k.change(function() { + var c, b = this.files; + a.data("cropper") && b && b.length && (c = b[0], /^image\/\w+$/.test(c.type) ? (m = l.createObjectURL(c), a.one("built.cropper", function() { + l.revokeObjectURL(m) + }).cropper("reset").cropper("replace", m), k.val("")) : window.alert("Please choose an image file.")) + }) : k.prop("disabled", !0).parent().addClass("disabled") + } +} + +function init_knob() { + if ("undefined" != typeof $.fn.knob) { + console.log("init_knob"), $(".knob").knob({ + change: function(a) {}, + release: function(a) { + console.log("release : " + a) + }, + cancel: function() { + console.log("cancel : ", this) + }, + draw: function() { + if ("tron" == this.$.data("skin")) { + this.cursorExt = .3; + var b, a = this.arc(this.cv), + c = 1; + return this.g.lineWidth = this.lineWidth, this.o.displayPrevious && (b = this.arc(this.v), this.g.beginPath(), this.g.strokeStyle = this.pColor, this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, b.s, b.e, b.d), this.g.stroke()), this.g.beginPath(), this.g.strokeStyle = c ? this.o.fgColor : this.fgColor, this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d), this.g.stroke(), this.g.lineWidth = 2, this.g.beginPath(), this.g.strokeStyle = this.o.fgColor, this.g.arc(this.xy, this.xy, this.radius - this.lineWidth + 1 + 2 * this.lineWidth / 3, 0, 2 * Math.PI, !1), this.g.stroke(), !1 + } + } + }); + var a, b = 0, + c = 0, + d = 0, + e = $("div.idir"), + f = $("div.ival"), + g = function() { + d++, e.show().html("+").fadeOut(), f.html(d) + }, + h = function() { + d--, e.show().html("-").fadeOut(), f.html(d) + }; + $("input.infinite").knob({ + min: 0, + max: 20, + stopper: !1, + change: function() { + a > this.cv ? b ? (h(), b = 0) : (b = 1, c = 0) : a < this.cv && (c ? (g(), c = 0) : (c = 1, b = 0)), a = this.cv + } + }) + } +} + +function init_InputMask() { + "undefined" != typeof $.fn.inputmask && (console.log("init_InputMask"), $(":input").inputmask()) +} + +function init_ColorPicker() { + "undefined" != typeof $.fn.colorpicker && (console.log("init_ColorPicker"), $(".demo1").colorpicker(), $(".demo2").colorpicker(), $("#demo_forceformat").colorpicker({ + format: "rgba", + horizontal: !0 + }), $("#demo_forceformat3").colorpicker({ + format: "rgba" + }), $(".demo-auto").colorpicker()) +} + +function init_IonRangeSlider() { + + "undefined" != typeof $.fn.ionRangeSlider && (console.log("init_IonRangeSlider"), $("#range_27").ionRangeSlider({ + type: "double", + min: 1e6, + max: 2e6, + grid: !0, + force_edges: !0 + }), $("#range").ionRangeSlider({ + hide_min_max: !0, + keyboard: !0, + min: 0, + max: 5e3, + from: 1e3, + to: 4e3, + type: "double", + step: 1, + prefix: "$", + grid: !0 + }), $("#range_25").ionRangeSlider({ + type: "double", + min: 1e6, + max: 2e6, + grid: !0 + }), $("#range_26").ionRangeSlider({ + type: "double", + min: 0, + max: 1e4, + step: 500, + grid: !0, + grid_snap: !0 + }), $("#range_31").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + from_fixed: !0 + }), $(".range_min_max").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + max_interval: 50 + }), $(".range_time24").ionRangeSlider({ + min: +moment().subtract(12, "hours").format("X"), + max: +moment().format("X"), + from: +moment().subtract(6, "hours").format("X"), + grid: !0, + force_edges: !0, + prettify: function(a) { + var b = moment(a, "X"); + return b.format("Do MMMM, HH:mm") + } + })) +} + +function init_daterangepicker() { + if ("undefined" != typeof $.fn.daterangepicker) { + console.log("init_daterangepicker"); + var a = function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c), $("#reportrange span").html(a.format("MMMM D, YYYY") + " - " + b.format("MMMM D, YYYY")) + }, + b = { + startDate: moment().subtract(29, "days"), + endDate: moment(), + minDate: "01/01/2012", + maxDate: "12/31/2015", + dateLimit: { + days: 60 + }, + showDropdowns: !0, + showWeekNumbers: !0, + timePicker: !1, + timePickerIncrement: 1, + timePicker12Hour: !0, + ranges: { + Today: [moment(), moment()], + Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + }, + opens: "left", + buttonClasses: ["btn btn-default"], + applyClass: "btn-small btn-primary", + cancelClass: "btn-small", + format: "MM/DD/YYYY", + separator: " to ", + locale: { + applyLabel: "Submit", + cancelLabel: "Clear", + fromLabel: "From", + toLabel: "To", + customRangeLabel: "Custom", + daysOfWeek: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + firstDay: 1 + } + }; + $("#reportrange span").html(moment().subtract(29, "days").format("MMMM D, YYYY") + " - " + moment().format("MMMM D, YYYY")), $("#reportrange").daterangepicker(b, a), $("#reportrange").on("show.daterangepicker", function() { + console.log("show event fired") + }), $("#reportrange").on("hide.daterangepicker", function() { + console.log("hide event fired") + }), $("#reportrange").on("apply.daterangepicker", function(a, b) { + console.log("apply event fired, start/end dates are " + b.startDate.format("MMMM D, YYYY") + " to " + b.endDate.format("MMMM D, YYYY")) + }), $("#reportrange").on("cancel.daterangepicker", function(a, b) { + console.log("cancel event fired") + }), $("#options1").click(function() { + $("#reportrange").data("daterangepicker").setOptions(b, a) + }), $("#options2").click(function() { + $("#reportrange").data("daterangepicker").setOptions(optionSet2, a) + }), $("#destroy").click(function() { + $("#reportrange").data("daterangepicker").remove() + }) + } +} + +function init_daterangepicker_right() { + if ("undefined" != typeof $.fn.daterangepicker) { + console.log("init_daterangepicker_right"); + var a = function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c), $("#reportrange_right span").html(a.format("MMMM D, YYYY") + " - " + b.format("MMMM D, YYYY")) + }, + b = { + startDate: moment().subtract(29, "days"), + endDate: moment(), + minDate: "01/01/2012", + maxDate: "12/31/2020", + dateLimit: { + days: 60 + }, + showDropdowns: !0, + showWeekNumbers: !0, + timePicker: !1, + timePickerIncrement: 1, + timePicker12Hour: !0, + ranges: { + Today: [moment(), moment()], + Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + }, + opens: "right", + buttonClasses: ["btn btn-default"], + applyClass: "btn-small btn-primary", + cancelClass: "btn-small", + format: "MM/DD/YYYY", + separator: " to ", + locale: { + applyLabel: "Submit", + cancelLabel: "Clear", + fromLabel: "From", + toLabel: "To", + customRangeLabel: "Custom", + daysOfWeek: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + firstDay: 1 + } + }; + $("#reportrange_right span").html(moment().subtract(29, "days").format("MMMM D, YYYY") + " - " + moment().format("MMMM D, YYYY")), $("#reportrange_right").daterangepicker(b, a), $("#reportrange_right").on("show.daterangepicker", function() { + console.log("show event fired") + }), $("#reportrange_right").on("hide.daterangepicker", function() { + console.log("hide event fired") + }), $("#reportrange_right").on("apply.daterangepicker", function(a, b) { + console.log("apply event fired, start/end dates are " + b.startDate.format("MMMM D, YYYY") + " to " + b.endDate.format("MMMM D, YYYY")) + }), $("#reportrange_right").on("cancel.daterangepicker", function(a, b) { + console.log("cancel event fired") + }), $("#options1").click(function() { + $("#reportrange_right").data("daterangepicker").setOptions(b, a) + }), $("#options2").click(function() { + $("#reportrange_right").data("daterangepicker").setOptions(optionSet2, a) + }), $("#destroy").click(function() { + $("#reportrange_right").data("daterangepicker").remove() + }) + } +} + +function init_daterangepicker_single_call() { + "undefined" != typeof $.fn.daterangepicker && (console.log("init_daterangepicker_single_call"), $("#single_cal1").daterangepicker({ + singleDatePicker: !0, + singleClasses: "picker_1" + }, function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c) + }), $("#single_cal2").daterangepicker({ + singleDatePicker: !0, + singleClasses: "picker_2" + }, function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c) + }), $("#single_cal3").daterangepicker({ + singleDatePicker: !0, + singleClasses: "picker_3" + }, function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c) + }), $("#single_cal4").daterangepicker({ + singleDatePicker: !0, + singleClasses: "picker_4" + }, function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c) + })) +} + +function init_daterangepicker_reservation() { + "undefined" != typeof $.fn.daterangepicker && (console.log("init_daterangepicker_reservation"), $("#reservation").daterangepicker(null, function(a, b, c) { + console.log(a.toISOString(), b.toISOString(), c) + }), $("#reservation-time").daterangepicker({ + timePicker: !0, + timePickerIncrement: 30, + locale: { + format: "MM/DD/YYYY h:mm A" + } + })) +} + +function init_SmartWizard() { + "undefined" != typeof $.fn.smartWizard && (console.log("init_SmartWizard"), $("#wizard").smartWizard(), $("#wizard_verticle").smartWizard({ + transitionEffect: "slide" + }), $(".buttonNext").addClass("btn btn-success"), $(".buttonPrevious").addClass("btn btn-primary"), $(".buttonFinish").addClass("btn btn-default")) +} + +function init_validator() { + "undefined" != typeof validator && (console.log("init_validator"), validator.message.date = "not a real date", $("form").on("blur", "input[required], input.optional, select.required", validator.checkField).on("change", "select.required", validator.checkField).on("keypress", "input[required][pattern]", validator.keypress), $(".multi.required").on("keyup blur", "input", function() { + validator.checkField.apply($(this).siblings().last()[0]) + }), $("form").submit(function(a) { + a.preventDefault(); + var b = !0; + return validator.checkAll($(this)) || (b = !1), b && this.submit(), !1 + })) +} + +function init_PNotify() { + "undefined" != typeof PNotify && (console.log("init_PNotify"), new PNotify({ + title: "PNotify", + type: "info", + text: "Welcome. Try hovering over me. You can click things behind me, because I'm non-blocking.", + nonblock: { + nonblock: !0 + }, + addclass: "dark", + styling: "bootstrap3", + hide: !1, + before_close: function(a) { + return a.update({ + title: a.options.title + " - Enjoy your Stay", + before_close: null + }), a.queueRemove(), !1 + } + })) +} + +function init_CustomNotification() { + if (console.log("run_customtabs"), "undefined" != typeof CustomTabs) { + console.log("init_CustomTabs"); + var a = 10; + TabbedNotification = function(b) { + var c = ""; + document.getElementById("custom_notifications") ? ($("#custom_notifications ul.notifications").append("
        4. "), $("#custom_notifications #notif-group").append(c), a++, CustomTabs(b)) : alert("doesnt exists") + }, CustomTabs = function(a) { + $(".tabbed_notifications > div").hide(), $(".tabbed_notifications > div:first-of-type").show(), $("#custom_notifications").removeClass("dsp_none"), $(".notifications a").click(function(a) { + a.preventDefault(); + var b = $(this), + c = "#" + b.parents(".notifications").data("tabbed_notifications"), + d = b.closest("li").siblings().children("a"), + e = b.attr("href"); + d.removeClass("active"), b.addClass("active"), $(c).children("div").hide(), $(e).show() + }) + }, CustomTabs(); + var b = idname = ""; + $(document).on("click", ".notification_close", function(a) { + idname = $(this).parent().parent().attr("id"), b = idname.substr(-2), $("#ntf" + b).remove(), $("#ntlink" + b).parent().remove(), $(".notifications a").first().addClass("active"), $("#notif-group div").first().css("display", "block") + }) + } +} + +function init_EasyPieChart() { + if ("undefined" != typeof $.fn.easyPieChart) { + console.log("init_EasyPieChart"), $(".chart").easyPieChart({ + easing: "easeOutElastic", + delay: 3e3, + barColor: "#26B99A", + trackColor: "#fff", + scaleColor: !1, + lineWidth: 20, + trackWidth: 16, + lineCap: "butt", + onStep: function(a, b, c) { + $(this.el).find(".percent").text(Math.round(c)) + } + }); + var a = window.chart = $(".chart").data("easyPieChart"); + $(".js_update").on("click", function() { + a.update(200 * Math.random() - 100) + }); + var b = $.fn.popover.Constructor.prototype.leave; + $.fn.popover.Constructor.prototype.leave = function(a) { + var d, e, c = a instanceof this.constructor ? a : $(a.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type); + b.call(this, a), a.currentTarget && (d = $(a.currentTarget).siblings(".popover"), e = c.timeout, d.one("mouseenter", function() { + clearTimeout(e), d.one("mouseleave", function() { + $.fn.popover.Constructor.prototype.leave.call(c, c) + }) + })) + }, $("body").popover({ + selector: "[data-popover]", + trigger: "click hover", + delay: { + show: 50, + hide: 400 + } + }) + } +} + +function init_charts() { + if (console.log("run_charts typeof [" + typeof Chart + "]"), "undefined" != typeof Chart) { + if (console.log("init_charts"), Chart.defaults.global.legend = { + enabled: !1 + }, $("#canvas_line").length) { + new Chart(document.getElementById("canvas_line"), { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#canvas_line1").length) { + new Chart(document.getElementById("canvas_line1"), { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#canvas_line2").length) { + new Chart(document.getElementById("canvas_line2"), { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#canvas_line3").length) { + new Chart(document.getElementById("canvas_line3"), { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#canvas_line4").length) { + new Chart(document.getElementById("canvas_line4"), { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#lineChart").length) { + var f = document.getElementById("lineChart"); + new Chart(f, { + type: "line", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + } + }) + } + if ($("#mybarChart").length) { + var f = document.getElementById("mybarChart"); + new Chart(f, { + type: "bar", + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "# of Votes", + backgroundColor: "#26B99A", + data: [51, 30, 40, 28, 92, 50, 45] + }, { + label: "# of Votes", + backgroundColor: "#03586A", + data: [41, 56, 25, 48, 72, 34, 12] + }] + }, + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: !0 + } + }] + } + } + }) + } + if ($("#canvasDoughnut").length) { + var f = document.getElementById("canvasDoughnut"), + i = { + labels: ["Dark Grey", "Purple Color", "Gray Color", "Green Color", "Blue Color"], + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"], + hoverBackgroundColor: ["#34495E", "#B370CF", "#CFD4D8", "#36CAAB", "#49A9EA"] + }] + }; + new Chart(f, { + type: "doughnut", + tooltipFillColor: "rgba(51, 51, 51, 0.55)", + data: i + }) + } + if ($("#canvasRadar").length) { + var f = document.getElementById("canvasRadar"), + i = { + labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(3, 88, 106, 0.2)", + borderColor: "rgba(3, 88, 106, 0.80)", + pointBorderColor: "rgba(3, 88, 106, 0.80)", + pointBackgroundColor: "rgba(3, 88, 106, 0.80)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + data: [65, 59, 90, 81, 56, 55, 40] + }, { + label: "My Second dataset", + backgroundColor: "rgba(38, 185, 154, 0.2)", + borderColor: "rgba(38, 185, 154, 0.85)", + pointColor: "rgba(38, 185, 154, 0.85)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 96, 27, 100] + }] + }; + new Chart(f, { + type: "radar", + data: i + }) + } + if ($("#pieChart").length) { + var f = document.getElementById("pieChart"), + i = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"], + label: "My dataset" + }], + labels: ["Dark Gray", "Purple", "Gray", "Green", "Blue"] + }; + new Chart(f, { + data: i, + type: "pie", + otpions: { + legend: !1 + } + }) + } + if ($("#polarArea").length) { + var f = document.getElementById("polarArea"), + i = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"], + label: "My dataset" + }], + labels: ["Dark Gray", "Purple", "Gray", "Green", "Blue"] + }; + new Chart(f, { + data: i, + type: "polarArea", + options: { + scale: { + ticks: { + beginAtZero: !0 + } + } + } + }) + } + } +} + +function init_compose() { + "undefined" != typeof $.fn.slideToggle && (console.log("init_compose"), $("#compose, .compose-close").click(function() { + $(".compose").slideToggle() + })) +} + +function init_calendar() { + if ("undefined" != typeof $.fn.fullCalendar) { + console.log("init_calendar"); + var e, f, a = new Date, + b = a.getDate(), + c = a.getMonth(), + d = a.getFullYear(), + g = $("#calendar").fullCalendar({ + header: { + left: "prev,next today", + center: "title", + right: "month,agendaWeek,agendaDay,listMonth" + }, + selectable: !0, + selectHelper: !0, + select: function(a, b, c) { + $("#fc_create").click(), e = a, ended = b, $(".antosubmit").on("click", function() { + var a = $("#title").val(); + return b && (ended = b), f = $("#event_type").val(), a && g.fullCalendar("renderEvent", { + title: a, + start: e, + end: b, + allDay: c + }, !0), $("#title").val(""), g.fullCalendar("unselect"), $(".antoclose").click(), !1 + }) + }, + eventClick: function(a, b, c) { + $("#fc_edit").click(), $("#title2").val(a.title), f = $("#event_type").val(), $(".antosubmit2").on("click", function() { + a.title = $("#title2").val(), g.fullCalendar("updateEvent", a), $(".antoclose2").click() + }), g.fullCalendar("unselect") + }, + editable: !0, + events: [{ + title: "All Day Event", + start: new Date(d, c, 1) + }, { + title: "Long Event", + start: new Date(d, c, b - 5), + end: new Date(d, c, b - 2) + }, { + title: "Meeting", + start: new Date(d, c, b, 10, 30), + allDay: !1 + }, { + title: "Lunch", + start: new Date(d, c, b + 14, 12, 0), + end: new Date(d, c, b, 14, 0), + allDay: !1 + }, { + title: "Birthday Party", + start: new Date(d, c, b + 1, 19, 0), + end: new Date(d, c, b + 1, 22, 30), + allDay: !1 + }, { + title: "Click for Google", + start: new Date(d, c, 28), + end: new Date(d, c, 29), + url: "http://google.com/" + }] + }) + } +} + +function init_DataTables() { + /*if (console.log("run_datatables"), "undefined" != typeof $.fn.DataTable) { + console.log("init_DataTables"); + var a = function() { + $("#datatable-buttons").length && $("#datatable-buttons").DataTable({ + dom: "Bfrtip", + buttons: [{ + extend: "copy", + className: "btn-sm" + }, { + extend: "csv", + className: "btn-sm" + }, { + extend: "excel", + className: "btn-sm" + }, { + extend: "pdfHtml5", + className: "btn-sm" + }, { + extend: "print", + className: "btn-sm" + }], + responsive: !0 + }) + }; + TableManageButtons = function() { + "use strict"; + return { + init: function() { + a() + } + } + }(), + + //$("#datatable").dataTable(), $("#datatable-keytable").DataTable({ + // keys: !0 + //}), + //$("#datatable-responsive").DataTable(), $("#datatable-scroller").DataTable({ + // ajax: "js/datatables/json/scroller-demo.json", + // deferRender: !0, + // scrollY: 380, + // scrollCollapse: !0, + // scroller: !0 + //}), + //$("#datatable-fixed-header").DataTable({ + // fixedHeader: !0 + //}); + //var b = $("#datatable-checkbox"); + //b.dataTable({ + // order: [ + // [1, "asc"] + // ], + // columnDefs: [{ + // orderable: !1, + // targets: [0] + // }] + //}), b.on("draw.dt", function() { + // $("checkbox input").iCheck({ + // checkboxClass: "icheckbox_flat-green" + // }) + //}), TableManageButtons.init() + } */ +} + +function init_morris_charts() { + "undefined" != typeof Morris && (console.log("init_morris_charts"), $("#graph_bar").length && Morris.Bar({ + element: "graph_bar", + data: [{ + device: "iPhone 4", + geekbench: 380 + }, { + device: "iPhone 4S", + geekbench: 655 + }, { + device: "iPhone 3GS", + geekbench: 275 + }, { + device: "iPhone 5", + geekbench: 1571 + }, { + device: "iPhone 5S", + geekbench: 655 + }, { + device: "iPhone 6", + geekbench: 2154 + }, { + device: "iPhone 6 Plus", + geekbench: 1144 + }, { + device: "iPhone 6S", + geekbench: 2371 + }, { + device: "iPhone 6S Plus", + geekbench: 1471 + }, { + device: "Other", + geekbench: 1371 + }], + xkey: "device", + ykeys: ["geekbench"], + labels: ["Geekbench"], + barRatio: .4, + barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + xLabelAngle: 35, + hideHover: "auto", + resize: !0 + }), $("#graph_bar_group").length && Morris.Bar({ + element: "graph_bar_group", + data: [{ + period: "2016-10-01", + licensed: 807, + sorned: 660 + }, { + period: "2016-09-30", + licensed: 1251, + sorned: 729 + }, { + period: "2016-09-29", + licensed: 1769, + sorned: 1018 + }, { + period: "2016-09-20", + licensed: 2246, + sorned: 1461 + }, { + period: "2016-09-19", + licensed: 2657, + sorned: 1967 + }, { + period: "2016-09-18", + licensed: 3148, + sorned: 2627 + }, { + period: "2016-09-17", + licensed: 3471, + sorned: 3740 + }, { + period: "2016-09-16", + licensed: 2871, + sorned: 2216 + }, { + period: "2016-09-15", + licensed: 2401, + sorned: 1656 + }, { + period: "2016-09-10", + licensed: 2115, + sorned: 1022 + }], + xkey: "period", + barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + ykeys: ["licensed", "sorned"], + labels: ["Licensed", "SORN"], + hideHover: "auto", + xLabelAngle: 60, + resize: !0 + }), $("#graphx").length && Morris.Bar({ + element: "graphx", + data: [{ + x: "2015 Q1", + y: 2, + z: 3, + a: 4 + }, { + x: "2015 Q2", + y: 3, + z: 5, + a: 6 + }, { + x: "2015 Q3", + y: 4, + z: 3, + a: 2 + }, { + x: "2015 Q4", + y: 2, + z: 4, + a: 5 + }], + xkey: "x", + ykeys: ["y", "z", "a"], + barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + hideHover: "auto", + labels: ["Y", "Z", "A"], + resize: !0 + }).on("click", function(a, b) { + console.log(a, b) + }), $("#graph_area").length && Morris.Area({ + element: "graph_area", + data: [{ + period: "2014 Q1", + iphone: 2666, + ipad: null, + itouch: 2647 + }, { + period: "2014 Q2", + iphone: 2778, + ipad: 2294, + itouch: 2441 + }, { + period: "2014 Q3", + iphone: 4912, + ipad: 1969, + itouch: 2501 + }, { + period: "2014 Q4", + iphone: 3767, + ipad: 3597, + itouch: 5689 + }, { + period: "2015 Q1", + iphone: 6810, + ipad: 1914, + itouch: 2293 + }, { + period: "2015 Q2", + iphone: 5670, + ipad: 4293, + itouch: 1881 + }, { + period: "2015 Q3", + iphone: 4820, + ipad: 3795, + itouch: 1588 + }, { + period: "2015 Q4", + iphone: 15073, + ipad: 5967, + itouch: 5175 + }, { + period: "2016 Q1", + iphone: 10687, + ipad: 4460, + itouch: 2028 + }, { + period: "2016 Q2", + iphone: 8432, + ipad: 5713, + itouch: 1791 + }], + xkey: "period", + ykeys: ["iphone", "ipad", "itouch"], + lineColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + labels: ["iPhone", "iPad", "iPod Touch"], + pointSize: 2, + hideHover: "auto", + resize: !0 + }), $("#graph_donut").length && Morris.Donut({ + element: "graph_donut", + data: [{ + label: "Jam", + value: 25 + }, { + label: "Frosted", + value: 40 + }, { + label: "Custard", + value: 25 + }, { + label: "Sugar", + value: 10 + }], + colors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + formatter: function(a) { + return a + "%" + }, + resize: !0 + }), $("#graph_line").length && (Morris.Line({ + element: "graph_line", + xkey: "year", + ykeys: ["value"], + labels: ["Value"], + hideHover: "auto", + lineColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"], + data: [{ + year: "2012", + value: 20 + }, { + year: "2013", + value: 10 + }, { + year: "2014", + value: 5 + }, { + year: "2015", + value: 5 + }, { + year: "2016", + value: 20 + }], + resize: !0 + }), $MENU_TOGGLE.on("click", function() { + $(window).resize() + }))) +} + +function init_echarts() { + if ("undefined" != typeof echarts) { + console.log("init_echarts"); + var a = { + color: ["#26B99A", "#34495E", "#BDC3C7", "#3498DB", "#9B59B6", "#8abb6f", "#759c6a", "#bfd3b7"], + title: { + itemGap: 8, + textStyle: { + fontWeight: "normal", + color: "#408829" + } + }, + dataRange: { + color: ["#1f610a", "#97b58d"] + }, + toolbox: { + color: ["#408829", "#408829", "#408829", "#408829"] + }, + tooltip: { + backgroundColor: "rgba(0,0,0,0.5)", + axisPointer: { + type: "line", + lineStyle: { + color: "#408829", + type: "dashed" + }, + crossStyle: { + color: "#408829" + }, + shadowStyle: { + color: "rgba(200,200,200,0.3)" + } + } + }, + dataZoom: { + dataBackgroundColor: "#eee", + fillerColor: "rgba(64,136,41,0.2)", + handleColor: "#408829" + }, + grid: { + borderWidth: 0 + }, + categoryAxis: { + axisLine: { + lineStyle: { + color: "#408829" + } + }, + splitLine: { + lineStyle: { + color: ["#eee"] + } + } + }, + valueAxis: { + axisLine: { + lineStyle: { + color: "#408829" + } + }, + splitArea: { + show: !0, + areaStyle: { + color: ["rgba(250,250,250,0.1)", "rgba(200,200,200,0.1)"] + } + }, + splitLine: { + lineStyle: { + color: ["#eee"] + } + } + }, + timeline: { + lineStyle: { + color: "#408829" + }, + controlStyle: { + normal: { + color: "#408829" + }, + emphasis: { + color: "#408829" + } + } + }, + k: { + itemStyle: { + normal: { + color: "#68a54a", + color0: "#a9cba2", + lineStyle: { + width: 1, + color: "#408829", + color0: "#86b379" + } + } + } + }, + map: { + itemStyle: { + normal: { + areaStyle: { + color: "#ddd" + }, + label: { + textStyle: { + color: "#c12e34" + } + } + }, + emphasis: { + areaStyle: { + color: "#99d2dd" + }, + label: { + textStyle: { + color: "#c12e34" + } + } + } + } + }, + force: { + itemStyle: { + normal: { + linkStyle: { + strokeColor: "#408829" + } + } + } + }, + chord: { + padding: 4, + itemStyle: { + normal: { + lineStyle: { + width: 1, + color: "rgba(128, 128, 128, 0.5)" + }, + chordStyle: { + lineStyle: { + width: 1, + color: "rgba(128, 128, 128, 0.5)" + } + } + }, + emphasis: { + lineStyle: { + width: 1, + color: "rgba(128, 128, 128, 0.5)" + }, + chordStyle: { + lineStyle: { + width: 1, + color: "rgba(128, 128, 128, 0.5)" + } + } + } + } + }, + gauge: { + startAngle: 225, + endAngle: -45, + axisLine: { + show: !0, + lineStyle: { + color: [ + [.2, "#86b379"], + [.8, "#68a54a"], + [1, "#408829"] + ], + width: 8 + } + }, + axisTick: { + splitNumber: 10, + length: 12, + lineStyle: { + color: "auto" + } + }, + axisLabel: { + textStyle: { + color: "auto" + } + }, + splitLine: { + length: 18, + lineStyle: { + color: "auto" + } + }, + pointer: { + length: "90%", + color: "auto" + }, + title: { + textStyle: { + color: "#333" + } + }, + detail: { + textStyle: { + color: "auto" + } + } + }, + textStyle: { + fontFamily: "Arial, Verdana, sans-serif" + } + }; + if ($("#mainb").length) { + var b = echarts.init(document.getElementById("mainb"), a); + b.setOption({ + title: { + text: "Graph title", + subtext: "Graph Sub-text" + }, + tooltip: { + trigger: "axis" + }, + legend: { + data: ["sales", "purchases"] + }, + toolbox: { + show: !1 + }, + calculable: !1, + xAxis: [{ + type: "category", + data: ["1?", "2?", "3?", "4?", "5?", "6?", "7?", "8?", "9?", "10?", "11?", "12?"] + }], + yAxis: [{ + type: "value" + }], + series: [{ + name: "sales", + type: "bar", + data: [2, 4.9, 7, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20, 6.4, 3.3], + markPoint: { + data: [{ + type: "max", + name: "???" + }, { + type: "min", + name: "???" + }] + }, + markLine: { + data: [{ + type: "average", + name: "???" + }] + } + }, { + name: "purchases", + type: "bar", + data: [2.6, 5.9, 9, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6, 2.3], + markPoint: { + data: [{ + name: "sales", + value: 182.2, + xAxis: 7, + yAxis: 183 + }, { + name: "purchases", + value: 2.3, + xAxis: 11, + yAxis: 3 + }] + }, + markLine: { + data: [{ + type: "average", + name: "???" + }] + } + }] + }) + } + if ($("#echart_sonar").length) { + var c = echarts.init(document.getElementById("echart_sonar"), a); + c.setOption({ + title: { + text: "Budget vs spending", + subtext: "Subtitle" + }, + tooltip: { + trigger: "item" + }, + legend: { + orient: "vertical", + x: "right", + y: "bottom", + data: ["Allocated Budget", "Actual Spending"] + }, + toolbox: { + show: !0, + feature: { + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + polar: [{ + indicator: [{ + text: "Sales", + max: 6e3 + }, { + text: "Administration", + max: 16e3 + }, { + text: "Information Techology", + max: 3e4 + }, { + text: "Customer Support", + max: 38e3 + }, { + text: "Development", + max: 52e3 + }, { + text: "Marketing", + max: 25e3 + }] + }], + calculable: !0, + series: [{ + name: "Budget vs spending", + type: "radar", + data: [{ + value: [4300, 1e4, 28e3, 35e3, 5e4, 19e3], + name: "Allocated Budget" + }, { + value: [5e3, 14e3, 28e3, 31e3, 42e3, 21e3], + name: "Actual Spending" + }] + }] + }) + } + if ($("#echart_pyramid").length) { + var d = echarts.init(document.getElementById("echart_pyramid"), a); + d.setOption({ + title: { + text: "Echart Pyramid Graph", + subtext: "Subtitle" + }, + tooltip: { + trigger: "item", + formatter: "{a}
          {b} : {c}%" + }, + toolbox: { + show: !0, + feature: { + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + legend: { + data: ["Something #1", "Something #2", "Something #3", "Something #4", "Something #5"], + orient: "vertical", + x: "left", + y: "bottom" + }, + calculable: !0, + series: [{ + name: "漏斗图", + type: "funnel", + width: "40%", + data: [{ + value: 60, + name: "Something #1" + }, { + value: 40, + name: "Something #2" + }, { + value: 20, + name: "Something #3" + }, { + value: 80, + name: "Something #4" + }, { + value: 100, + name: "Something #5" + }] + }] + }) + } + if ($("#echart_gauge").length) { + var e = echarts.init(document.getElementById("echart_gauge"), a); + e.setOption({ + tooltip: { + formatter: "{a}
          {b} : {c}%" + }, + toolbox: { + show: !0, + feature: { + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + series: [{ + name: "Performance", + type: "gauge", + center: ["50%", "50%"], + startAngle: 140, + endAngle: -140, + min: 0, + max: 100, + precision: 0, + splitNumber: 10, + axisLine: { + show: !0, + lineStyle: { + color: [ + [.2, "lightgreen"], + [.4, "orange"], + [.8, "skyblue"], + [1, "#ff4500"] + ], + width: 30 + } + }, + axisTick: { + show: !0, + splitNumber: 5, + length: 8, + lineStyle: { + color: "#eee", + width: 1, + type: "solid" + } + }, + axisLabel: { + show: !0, + formatter: function(a) { + switch (a + "") { + case "10": + return "a"; + case "30": + return "b"; + case "60": + return "c"; + case "90": + return "d"; + default: + return "" + } + }, + textStyle: { + color: "#333" + } + }, + splitLine: { + show: !0, + length: 30, + lineStyle: { + color: "#eee", + width: 2, + type: "solid" + } + }, + pointer: { + length: "80%", + width: 8, + color: "auto" + }, + title: { + show: !0, + offsetCenter: ["-65%", -10], + textStyle: { + color: "#333", + fontSize: 15 + } + }, + detail: { + show: !0, + backgroundColor: "rgba(0,0,0,0)", + borderWidth: 0, + borderColor: "#ccc", + width: 100, + height: 40, + offsetCenter: ["-60%", 10], + formatter: "{value}%", + textStyle: { + color: "auto", + fontSize: 30 + } + }, + data: [{ + value: 50, + name: "Performance" + }] + }] + }) + } + if ($("#echart_line").length) { + var f = echarts.init(document.getElementById("echart_line"), a); + f.setOption({ + title: { + text: "Line Graph", + subtext: "Subtitle" + }, + tooltip: { + trigger: "axis" + }, + legend: { + x: 220, + y: 40, + data: ["Intent", "Pre-order", "Deal"] + }, + toolbox: { + show: !0, + feature: { + magicType: { + show: !0, + title: { + line: "Line", + bar: "Bar", + stack: "Stack", + tiled: "Tiled" + }, + type: ["line", "bar", "stack", "tiled"] + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + calculable: !0, + xAxis: [{ + type: "category", + boundaryGap: !1, + data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] + }], + yAxis: [{ + type: "value" + }], + series: [{ + name: "Deal", + type: "line", + smooth: !0, + itemStyle: { + normal: { + areaStyle: { + type: "default" + } + } + }, + data: [10, 12, 21, 54, 260, 830, 710] + }, { + name: "Pre-order", + type: "line", + smooth: !0, + itemStyle: { + normal: { + areaStyle: { + type: "default" + } + } + }, + data: [30, 182, 434, 791, 390, 30, 10] + }, { + name: "Intent", + type: "line", + smooth: !0, + itemStyle: { + normal: { + areaStyle: { + type: "default" + } + } + }, + data: [1320, 1132, 601, 234, 120, 90, 20] + }] + }) + } + if ($("#echart_scatter").length) { + var g = echarts.init(document.getElementById("echart_scatter"), a); + g.setOption({ + title: { + text: "Scatter Graph", + subtext: "Heinz 2003" + }, + tooltip: { + trigger: "axis", + showDelay: 0, + axisPointer: { + type: "cross", + lineStyle: { + type: "dashed", + width: 1 + } + } + }, + legend: { + data: ["Data2", "Data1"] + }, + toolbox: { + show: !0, + feature: { + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + xAxis: [{ + type: "value", + scale: !0, + axisLabel: { + formatter: "{value} cm" + } + }], + yAxis: [{ + type: "value", + scale: !0, + axisLabel: { + formatter: "{value} kg" + } + }], + series: [{ + name: "Data1", + type: "scatter", + tooltip: { + trigger: "item", + formatter: function(a) { + return a.value.length > 1 ? a.seriesName + " :
          " + a.value[0] + "cm " + a.value[1] + "kg " : a.seriesName + " :
          " + a.name + " : " + a.value + "kg " + } + }, + data: [ + [161.2, 51.6], + [167.5, 59], + [159.5, 49.2], + [157, 63], + [155.8, 53.6], + [170, 59], + [159.1, 47.6], + [166, 69.8], + [176.2, 66.8], + [160.2, 75.2], + [172.5, 55.2], + [170.9, 54.2], + [172.9, 62.5], + [153.4, 42], + [160, 50], + [147.2, 49.8], + [168.2, 49.2], + [175, 73.2], + [157, 47.8], + [167.6, 68.8], + [159.5, 50.6], + [175, 82.5], + [166.8, 57.2], + [176.5, 87.8], + [170.2, 72.8], + [174, 54.5], + [173, 59.8], + [179.9, 67.3], + [170.5, 67.8], + [160, 47], + [154.4, 46.2], + [162, 55], + [176.5, 83], + [160, 54.4], + [152, 45.8], + [162.1, 53.6], + [170, 73.2], + [160.2, 52.1], + [161.3, 67.9], + [166.4, 56.6], + [168.9, 62.3], + [163.8, 58.5], + [167.6, 54.5], + [160, 50.2], + [161.3, 60.3], + [167.6, 58.3], + [165.1, 56.2], + [160, 50.2], + [170, 72.9], + [157.5, 59.8], + [167.6, 61], + [160.7, 69.1], + [163.2, 55.9], + [152.4, 46.5], + [157.5, 54.3], + [168.3, 54.8], + [180.3, 60.7], + [165.5, 60], + [165, 62], + [164.5, 60.3], + [156, 52.7], + [160, 74.3], + [163, 62], + [165.7, 73.1], + [161, 80], + [162, 54.7], + [166, 53.2], + [174, 75.7], + [172.7, 61.1], + [167.6, 55.7], + [151.1, 48.7], + [164.5, 52.3], + [163.5, 50], + [152, 59.3], + [169, 62.5], + [164, 55.7], + [161.2, 54.8], + [155, 45.9], + [170, 70.6], + [176.2, 67.2], + [170, 69.4], + [162.5, 58.2], + [170.3, 64.8], + [164.1, 71.6], + [169.5, 52.8], + [163.2, 59.8], + [154.5, 49], + [159.8, 50], + [173.2, 69.2], + [170, 55.9], + [161.4, 63.4], + [169, 58.2], + [166.2, 58.6], + [159.4, 45.7], + [162.5, 52.2], + [159, 48.6], + [162.8, 57.8], + [159, 55.6], + [179.8, 66.8], + [162.9, 59.4], + [161, 53.6], + [151.1, 73.2], + [168.2, 53.4], + [168.9, 69], + [173.2, 58.4], + [171.8, 56.2], + [178, 70.6], + [164.3, 59.8], + [163, 72], + [168.5, 65.2], + [166.8, 56.6], + [172.7, 105.2], + [163.5, 51.8], + [169.4, 63.4], + [167.8, 59], + [159.5, 47.6], + [167.6, 63], + [161.2, 55.2], + [160, 45], + [163.2, 54], + [162.2, 50.2], + [161.3, 60.2], + [149.5, 44.8], + [157.5, 58.8], + [163.2, 56.4], + [172.7, 62], + [155, 49.2], + [156.5, 67.2], + [164, 53.8], + [160.9, 54.4], + [162.8, 58], + [167, 59.8], + [160, 54.8], + [160, 43.2], + [168.9, 60.5], + [158.2, 46.4], + [156, 64.4], + [160, 48.8], + [167.1, 62.2], + [158, 55.5], + [167.6, 57.8], + [156, 54.6], + [162.1, 59.2], + [173.4, 52.7], + [159.8, 53.2], + [170.5, 64.5], + [159.2, 51.8], + [157.5, 56], + [161.3, 63.6], + [162.6, 63.2], + [160, 59.5], + [168.9, 56.8], + [165.1, 64.1], + [162.6, 50], + [165.1, 72.3], + [166.4, 55], + [160, 55.9], + [152.4, 60.4], + [170.2, 69.1], + [162.6, 84.5], + [170.2, 55.9], + [158.8, 55.5], + [172.7, 69.5], + [167.6, 76.4], + [162.6, 61.4], + [167.6, 65.9], + [156.2, 58.6], + [175.2, 66.8], + [172.1, 56.6], + [162.6, 58.6], + [160, 55.9], + [165.1, 59.1], + [182.9, 81.8], + [166.4, 70.7], + [165.1, 56.8], + [177.8, 60], + [165.1, 58.2], + [175.3, 72.7], + [154.9, 54.1], + [158.8, 49.1], + [172.7, 75.9], + [168.9, 55], + [161.3, 57.3], + [167.6, 55], + [165.1, 65.5], + [175.3, 65.5], + [157.5, 48.6], + [163.8, 58.6], + [167.6, 63.6], + [165.1, 55.2], + [165.1, 62.7], + [168.9, 56.6], + [162.6, 53.9], + [164.5, 63.2], + [176.5, 73.6], + [168.9, 62], + [175.3, 63.6], + [159.4, 53.2], + [160, 53.4], + [170.2, 55], + [162.6, 70.5], + [167.6, 54.5], + [162.6, 54.5], + [160.7, 55.9], + [160, 59], + [157.5, 63.6], + [162.6, 54.5], + [152.4, 47.3], + [170.2, 67.7], + [165.1, 80.9], + [172.7, 70.5], + [165.1, 60.9], + [170.2, 63.6], + [170.2, 54.5], + [170.2, 59.1], + [161.3, 70.5], + [167.6, 52.7], + [167.6, 62.7], + [165.1, 86.3], + [162.6, 66.4], + [152.4, 67.3], + [168.9, 63], + [170.2, 73.6], + [175.2, 62.3], + [175.2, 57.7], + [160, 55.4], + [165.1, 104.1], + [174, 55.5], + [170.2, 77.3], + [160, 80.5], + [167.6, 64.5], + [167.6, 72.3], + [167.6, 61.4], + [154.9, 58.2], + [162.6, 81.8], + [175.3, 63.6], + [171.4, 53.4], + [157.5, 54.5], + [165.1, 53.6], + [160, 60], + [174, 73.6], + [162.6, 61.4], + [174, 55.5], + [162.6, 63.6], + [161.3, 60.9], + [156.2, 60], + [149.9, 46.8], + [169.5, 57.3], + [160, 64.1], + [175.3, 63.6], + [169.5, 67.3], + [160, 75.5], + [172.7, 68.2], + [162.6, 61.4], + [157.5, 76.8], + [176.5, 71.8], + [164.4, 55.5], + [160.7, 48.6], + [174, 66.4], + [163.8, 67.3] + ], + markPoint: { + data: [{ + type: "max", + name: "Max" + }, { + type: "min", + name: "Min" + }] + }, + markLine: { + data: [{ + type: "average", + name: "Mean" + }] + } + }, { + name: "Data2", + type: "scatter", + tooltip: { + trigger: "item", + formatter: function(a) { + return a.value.length > 1 ? a.seriesName + " :
          " + a.value[0] + "cm " + a.value[1] + "kg " : a.seriesName + " :
          " + a.name + " : " + a.value + "kg " + } + }, + data: [ + [174, 65.6], + [175.3, 71.8], + [193.5, 80.7], + [186.5, 72.6], + [187.2, 78.8], + [181.5, 74.8], + [184, 86.4], + [184.5, 78.4], + [175, 62], + [184, 81.6], + [180, 76.6], + [177.8, 83.6], + [192, 90], + [176, 74.6], + [174, 71], + [184, 79.6], + [192.7, 93.8], + [171.5, 70], + [173, 72.4], + [176, 85.9], + [176, 78.8], + [180.5, 77.8], + [172.7, 66.2], + [176, 86.4], + [173.5, 81.8], + [178, 89.6], + [180.3, 82.8], + [180.3, 76.4], + [164.5, 63.2], + [173, 60.9], + [183.5, 74.8], + [175.5, 70], + [188, 72.4], + [189.2, 84.1], + [172.8, 69.1], + [170, 59.5], + [182, 67.2], + [170, 61.3], + [177.8, 68.6], + [184.2, 80.1], + [186.7, 87.8], + [171.4, 84.7], + [172.7, 73.4], + [175.3, 72.1], + [180.3, 82.6], + [182.9, 88.7], + [188, 84.1], + [177.2, 94.1], + [172.1, 74.9], + [167, 59.1], + [169.5, 75.6], + [174, 86.2], + [172.7, 75.3], + [182.2, 87.1], + [164.1, 55.2], + [163, 57], + [171.5, 61.4], + [184.2, 76.8], + [174, 86.8], + [174, 72.2], + [177, 71.6], + [186, 84.8], + [167, 68.2], + [171.8, 66.1], + [182, 72], + [167, 64.6], + [177.8, 74.8], + [164.5, 70], + [192, 101.6], + [175.5, 63.2], + [171.2, 79.1], + [181.6, 78.9], + [167.4, 67.7], + [181.1, 66], + [177, 68.2], + [174.5, 63.9], + [177.5, 72], + [170.5, 56.8], + [182.4, 74.5], + [197.1, 90.9], + [180.1, 93], + [175.5, 80.9], + [180.6, 72.7], + [184.4, 68], + [175.5, 70.9], + [180.6, 72.5], + [177, 72.5], + [177.1, 83.4], + [181.6, 75.5], + [176.5, 73], + [175, 70.2], + [174, 73.4], + [165.1, 70.5], + [177, 68.9], + [192, 102.3], + [176.5, 68.4], + [169.4, 65.9], + [182.1, 75.7], + [179.8, 84.5], + [175.3, 87.7], + [184.9, 86.4], + [177.3, 73.2], + [167.4, 53.9], + [178.1, 72], + [168.9, 55.5], + [157.2, 58.4], + [180.3, 83.2], + [170.2, 72.7], + [177.8, 64.1], + [172.7, 72.3], + [165.1, 65], + [186.7, 86.4], + [165.1, 65], + [174, 88.6], + [175.3, 84.1], + [185.4, 66.8], + [177.8, 75.5], + [180.3, 93.2], + [180.3, 82.7], + [177.8, 58], + [177.8, 79.5], + [177.8, 78.6], + [177.8, 71.8], + [177.8, 116.4], + [163.8, 72.2], + [188, 83.6], + [198.1, 85.5], + [175.3, 90.9], + [166.4, 85.9], + [190.5, 89.1], + [166.4, 75], + [177.8, 77.7], + [179.7, 86.4], + [172.7, 90.9], + [190.5, 73.6], + [185.4, 76.4], + [168.9, 69.1], + [167.6, 84.5], + [175.3, 64.5], + [170.2, 69.1], + [190.5, 108.6], + [177.8, 86.4], + [190.5, 80.9], + [177.8, 87.7], + [184.2, 94.5], + [176.5, 80.2], + [177.8, 72], + [180.3, 71.4], + [171.4, 72.7], + [172.7, 84.1], + [172.7, 76.8], + [177.8, 63.6], + [177.8, 80.9], + [182.9, 80.9], + [170.2, 85.5], + [167.6, 68.6], + [175.3, 67.7], + [165.1, 66.4], + [185.4, 102.3], + [181.6, 70.5], + [172.7, 95.9], + [190.5, 84.1], + [179.1, 87.3], + [175.3, 71.8], + [170.2, 65.9], + [193, 95.9], + [171.4, 91.4], + [177.8, 81.8], + [177.8, 96.8], + [167.6, 69.1], + [167.6, 82.7], + [180.3, 75.5], + [182.9, 79.5], + [176.5, 73.6], + [186.7, 91.8], + [188, 84.1], + [188, 85.9], + [177.8, 81.8], + [174, 82.5], + [177.8, 80.5], + [171.4, 70], + [185.4, 81.8], + [185.4, 84.1], + [188, 90.5], + [188, 91.4], + [182.9, 89.1], + [176.5, 85], + [175.3, 69.1], + [175.3, 73.6], + [188, 80.5], + [188, 82.7], + [175.3, 86.4], + [170.5, 67.7], + [179.1, 92.7], + [177.8, 93.6], + [175.3, 70.9], + [182.9, 75], + [170.8, 93.2], + [188, 93.2], + [180.3, 77.7], + [177.8, 61.4], + [185.4, 94.1], + [168.9, 75], + [185.4, 83.6], + [180.3, 85.5], + [174, 73.9], + [167.6, 66.8], + [182.9, 87.3], + [160, 72.3], + [180.3, 88.6], + [167.6, 75.5], + [186.7, 101.4], + [175.3, 91.1], + [175.3, 67.3], + [175.9, 77.7], + [175.3, 81.8], + [179.1, 75.5], + [181.6, 84.5], + [177.8, 76.6], + [182.9, 85], + [177.8, 102.5], + [184.2, 77.3], + [179.1, 71.8], + [176.5, 87.9], + [188, 94.3], + [174, 70.9], + [167.6, 64.5], + [170.2, 77.3], + [167.6, 72.3], + [188, 87.3], + [174, 80], + [176.5, 82.3], + [180.3, 73.6], + [167.6, 74.1], + [188, 85.9], + [180.3, 73.2], + [167.6, 76.3], + [183, 65.9], + [183, 90.9], + [179.1, 89.1], + [170.2, 62.3], + [177.8, 82.7], + [179.1, 79.1], + [190.5, 98.2], + [177.8, 84.1], + [180.3, 83.2], + [180.3, 83.2] + ], + markPoint: { + data: [{ + type: "max", + name: "Max" + }, { + type: "min", + name: "Min" + }] + }, + markLine: { + data: [{ + type: "average", + name: "Mean" + }] + } + }] + }) + } + if ($("#echart_bar_horizontal").length) { + var b = echarts.init(document.getElementById("echart_bar_horizontal"), a); + b.setOption({ + title: { + text: "Bar Graph", + subtext: "Graph subtitle" + }, + tooltip: { + trigger: "axis" + }, + legend: { + x: 100, + data: ["2015", "2016"] + }, + toolbox: { + show: !0, + feature: { + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + calculable: !0, + xAxis: [{ + type: "value", + boundaryGap: [0, .01] + }], + yAxis: [{ + type: "category", + data: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] + }], + series: [{ + name: "2015", + type: "bar", + data: [18203, 23489, 29034, 104970, 131744, 630230] + }, { + name: "2016", + type: "bar", + data: [19325, 23438, 31e3, 121594, 134141, 681807] + }] + }) + } + if ($("#echart_pie2").length) { + var h = echarts.init(document.getElementById("echart_pie2"), a); + h.setOption({ + tooltip: { + trigger: "item", + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + x: "center", + y: "bottom", + data: ["rose1", "rose2", "rose3", "rose4", "rose5", "rose6"] + }, + toolbox: { + show: !0, + feature: { + magicType: { + show: !0, + type: ["pie", "funnel"] + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + calculable: !0, + series: [{ + name: "Area Mode", + type: "pie", + radius: [25, 90], + center: ["50%", 170], + roseType: "area", + x: "50%", + max: 40, + sort: "ascending", + data: [{ + value: 10, + name: "rose1" + }, { + value: 5, + name: "rose2" + }, { + value: 15, + name: "rose3" + }, { + value: 25, + name: "rose4" + }, { + value: 20, + name: "rose5" + }, { + value: 35, + name: "rose6" + }] + }] + }) + } + if ($("#echart_donut").length) { + var i = echarts.init(document.getElementById("echart_donut"), a); + i.setOption({ + tooltip: { + trigger: "item", + formatter: "{a}
          {b} : {c} ({d}%)" + }, + calculable: !0, + legend: { + x: "center", + y: "bottom", + data: ["Direct Access", "E-mail Marketing", "Union Ad", "Video Ads", "Search Engine"] + }, + toolbox: { + show: !0, + feature: { + magicType: { + show: !0, + type: ["pie", "funnel"], + option: { + funnel: { + x: "25%", + width: "50%", + funnelAlign: "center", + max: 1548 + } + } + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + series: [{ + name: "Access to the resource", + type: "pie", + radius: ["35%", "55%"], + itemStyle: { + normal: { + label: { + show: !0 + }, + labelLine: { + show: !0 + } + }, + emphasis: { + label: { + show: !0, + position: "center", + textStyle: { + fontSize: "14", + fontWeight: "normal" + } + } + } + }, + data: [{ + value: 335, + name: "Direct Access" + }, { + value: 310, + name: "E-mail Marketing" + }, { + value: 234, + name: "Union Ad" + }, { + value: 135, + name: "Video Ads" + }, { + value: 1548, + name: "Search Engine" + }] + }] + }) + } + if ($("#echart_pie").length) { + var j = echarts.init(document.getElementById("echart_pie"), a); + j.setOption({ + tooltip: { + trigger: "item", + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + x: "center", + y: "bottom", + data: ["Direct Access", "E-mail Marketing", "Union Ad", "Video Ads", "Search Engine"] + }, + toolbox: { + show: !0, + feature: { + magicType: { + show: !0, + type: ["pie", "funnel"], + option: { + funnel: { + x: "25%", + width: "50%", + funnelAlign: "left", + max: 1548 + } + } + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + calculable: !0, + series: [{ + name: "访问来源", + type: "pie", + radius: "55%", + center: ["50%", "48%"], + data: [{ + value: 335, + name: "Direct Access" + }, { + value: 310, + name: "E-mail Marketing" + }, { + value: 234, + name: "Union Ad" + }, { + value: 135, + name: "Video Ads" + }, { + value: 1548, + name: "Search Engine" + }] + }] + }); + var k = { + normal: { + label: { + show: !1 + }, + labelLine: { + show: !1 + } + } + }, + l = { + normal: { + color: "rgba(0,0,0,0)", + label: { + show: !1 + }, + labelLine: { + show: !1 + } + }, + emphasis: { + color: "rgba(0,0,0,0)" + } + } + } + if ($("#echart_mini_pie").length) { + var m = echarts.init(document.getElementById("echart_mini_pie"), a); + m.setOption({ + title: { + text: "Chart #2", + subtext: "From ExcelHome", + sublink: "http://e.weibo.com/1341556070/AhQXtjbqh", + x: "center", + y: "center", + itemGap: 20, + textStyle: { + color: "rgba(30,144,255,0.8)", + fontFamily: "微软雅黑", + fontSize: 35, + fontWeight: "bolder" + } + }, + tooltip: { + show: !0, + formatter: "{a}
          {b} : {c} ({d}%)" + }, + legend: { + orient: "vertical", + x: 170, + y: 45, + itemGap: 12, + data: ["68%Something #1", "29%Something #2", "3%Something #3"] + }, + toolbox: { + show: !0, + feature: { + mark: { + show: !0 + }, + dataView: { + show: !0, + title: "Text View", + lang: ["Text View", "Close", "Refresh"], + readOnly: !1 + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + series: [{ + name: "1", + type: "pie", + clockWise: !1, + radius: [105, 130], + itemStyle: k, + data: [{ + value: 68, + name: "68%Something #1" + }, { + value: 32, + name: "invisible", + itemStyle: l + }] + }, { + name: "2", + type: "pie", + clockWise: !1, + radius: [80, 105], + itemStyle: k, + data: [{ + value: 29, + name: "29%Something #2" + }, { + value: 71, + name: "invisible", + itemStyle: l + }] + }, { + name: "3", + type: "pie", + clockWise: !1, + radius: [25, 80], + itemStyle: k, + data: [{ + value: 3, + name: "3%Something #3" + }, { + value: 97, + name: "invisible", + itemStyle: l + }] + }] + }) + } + if ($("#echart_world_map").length) { + var n = echarts.init(document.getElementById("echart_world_map"), a); + n.setOption({ + title: { + text: "World Population (2010)", + subtext: "from United Nations, Total population, both sexes combined, as of 1 July (thousands)", + x: "center", + y: "top" + }, + tooltip: { + trigger: "item", + formatter: function(a) { + var b = (a.value + "").split("."); + return b = b[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + "." + b[1], a.seriesName + "
          " + a.name + " : " + b + } + }, + toolbox: { + show: !0, + orient: "vertical", + x: "right", + y: "center", + feature: { + mark: { + show: !0 + }, + dataView: { + show: !0, + title: "Text View", + lang: ["Text View", "Close", "Refresh"], + readOnly: !1 + }, + restore: { + show: !0, + title: "Restore" + }, + saveAsImage: { + show: !0, + title: "Save Image" + } + } + }, + dataRange: { + min: 0, + max: 1e6, + text: ["High", "Low"], + realtime: !1, + calculable: !0, + color: ["#087E65", "#26B99A", "#CBEAE3"] + }, + series: [{ + name: "World Population (2010)", + type: "map", + mapType: "world", + roam: !1, + mapLocation: { + y: 60 + }, + itemStyle: { + emphasis: { + label: { + show: !0 + } + } + }, + data: [{ + name: "Afghanistan", + value: 28397.812 + }, { + name: "Angola", + value: 19549.124 + }, { + name: "Albania", + value: 3150.143 + }, { + name: "United Arab Emirates", + value: 8441.537 + }, { + name: "Argentina", + value: 40374.224 + }, { + name: "Armenia", + value: 2963.496 + }, { + name: "French Southern and Antarctic Lands", + value: 268.065 + }, { + name: "Australia", + value: 22404.488 + }, { + name: "Austria", + value: 8401.924 + }, { + name: "Azerbaijan", + value: 9094.718 + }, { + name: "Burundi", + value: 9232.753 + }, { + name: "Belgium", + value: 10941.288 + }, { + name: "Benin", + value: 9509.798 + }, { + name: "Burkina Faso", + value: 15540.284 + }, { + name: "Bangladesh", + value: 151125.475 + }, { + name: "Bulgaria", + value: 7389.175 + }, { + name: "The Bahamas", + value: 66402.316 + }, { + name: "Bosnia and Herzegovina", + value: 3845.929 + }, { + name: "Belarus", + value: 9491.07 + }, { + name: "Belize", + value: 308.595 + }, { + name: "Bermuda", + value: 64.951 + }, { + name: "Bolivia", + value: 716.939 + }, { + name: "Brazil", + value: 195210.154 + }, { + name: "Brunei", + value: 27.223 + }, { + name: "Bhutan", + value: 716.939 + }, { + name: "Botswana", + value: 1969.341 + }, { + name: "Central African Republic", + value: 4349.921 + }, { + name: "Canada", + value: 34126.24 + }, { + name: "Switzerland", + value: 7830.534 + }, { + name: "Chile", + value: 17150.76 + }, { + name: "China", + value: 1359821.465 + }, { + name: "Ivory Coast", + value: 60508.978 + }, { + name: "Cameroon", + value: 20624.343 + }, { + name: "Democratic Republic of the Congo", + value: 62191.161 + }, { + name: "Republic of the Congo", + value: 3573.024 + }, { + name: "Colombia", + value: 46444.798 + }, { + name: "Costa Rica", + value: 4669.685 + }, { + name: "Cuba", + value: 11281.768 + }, { + name: "Northern Cyprus", + value: 1.468 + }, { + name: "Cyprus", + value: 1103.685 + }, { + name: "Czech Republic", + value: 10553.701 + }, { + name: "Germany", + value: 83017.404 + }, { + name: "Djibouti", + value: 834.036 + }, { + name: "Denmark", + value: 5550.959 + }, { + name: "Dominican Republic", + value: 10016.797 + }, { + name: "Algeria", + value: 37062.82 + }, { + name: "Ecuador", + value: 15001.072 + }, { + name: "Egypt", + value: 78075.705 + }, { + name: "Eritrea", + value: 5741.159 + }, { + name: "Spain", + value: 46182.038 + }, { + name: "Estonia", + value: 1298.533 + }, { + name: "Ethiopia", + value: 87095.281 + }, { + name: "Finland", + value: 5367.693 + }, { + name: "Fiji", + value: 860.559 + }, { + name: "Falkland Islands", + value: 49.581 + }, { + name: "France", + value: 63230.866 + }, { + name: "Gabon", + value: 1556.222 + }, { + name: "United Kingdom", + value: 62066.35 + }, { + name: "Georgia", + value: 4388.674 + }, { + name: "Ghana", + value: 24262.901 + }, { + name: "Guinea", + value: 10876.033 + }, { + name: "Gambia", + value: 1680.64 + }, { + name: "Guinea Bissau", + value: 10876.033 + }, { + name: "Equatorial Guinea", + value: 696.167 + }, { + name: "Greece", + value: 11109.999 + }, { + name: "Greenland", + value: 56.546 + }, { + name: "Guatemala", + value: 14341.576 + }, { + name: "French Guiana", + value: 231.169 + }, { + name: "Guyana", + value: 786.126 + }, { + name: "Honduras", + value: 7621.204 + }, { + name: "Croatia", + value: 4338.027 + }, { + name: "Haiti", + value: 9896.4 + }, { + name: "Hungary", + value: 10014.633 + }, { + name: "Indonesia", + value: 240676.485 + }, { + name: "India", + value: 1205624.648 + }, { + name: "Ireland", + value: 4467.561 + }, { + name: "Iran", + value: 240676.485 + }, { + name: "Iraq", + value: 30962.38 + }, { + name: "Iceland", + value: 318.042 + }, { + name: "Israel", + value: 7420.368 + }, { + name: "Italy", + value: 60508.978 + }, { + name: "Jamaica", + value: 2741.485 + }, { + name: "Jordan", + value: 6454.554 + }, { + name: "Japan", + value: 127352.833 + }, { + name: "Kazakhstan", + value: 15921.127 + }, { + name: "Kenya", + value: 40909.194 + }, { + name: "Kyrgyzstan", + value: 5334.223 + }, { + name: "Cambodia", + value: 14364.931 + }, { + name: "South Korea", + value: 51452.352 + }, { + name: "Kosovo", + value: 97.743 + }, { + name: "Kuwait", + value: 2991.58 + }, { + name: "Laos", + value: 6395.713 + }, { + name: "Lebanon", + value: 4341.092 + }, { + name: "Liberia", + value: 3957.99 + }, { + name: "Libya", + value: 6040.612 + }, { + name: "Sri Lanka", + value: 20758.779 + }, { + name: "Lesotho", + value: 2008.921 + }, { + name: "Lithuania", + value: 3068.457 + }, { + name: "Luxembourg", + value: 507.885 + }, { + name: "Latvia", + value: 2090.519 + }, { + name: "Morocco", + value: 31642.36 + }, { + name: "Moldova", + value: 103.619 + }, { + name: "Madagascar", + value: 21079.532 + }, { + name: "Mexico", + value: 117886.404 + }, { + name: "Macedonia", + value: 507.885 + }, { + name: "Mali", + value: 13985.961 + }, { + name: "Myanmar", + value: 51931.231 + }, { + name: "Montenegro", + value: 620.078 + }, { + name: "Mongolia", + value: 2712.738 + }, { + name: "Mozambique", + value: 23967.265 + }, { + name: "Mauritania", + value: 3609.42 + }, { + name: "Malawi", + value: 15013.694 + }, { + name: "Malaysia", + value: 28275.835 + }, { + name: "Namibia", + value: 2178.967 + }, { + name: "New Caledonia", + value: 246.379 + }, { + name: "Niger", + value: 15893.746 + }, { + name: "Nigeria", + value: 159707.78 + }, { + name: "Nicaragua", + value: 5822.209 + }, { + name: "Netherlands", + value: 16615.243 + }, { + name: "Norway", + value: 4891.251 + }, { + name: "Nepal", + value: 26846.016 + }, { + name: "New Zealand", + value: 4368.136 + }, { + name: "Oman", + value: 2802.768 + }, { + name: "Pakistan", + value: 173149.306 + }, { + name: "Panama", + value: 3678.128 + }, { + name: "Peru", + value: 29262.83 + }, { + name: "Philippines", + value: 93444.322 + }, { + name: "Papua New Guinea", + value: 6858.945 + }, { + name: "Poland", + value: 38198.754 + }, { + name: "Puerto Rico", + value: 3709.671 + }, { + name: "North Korea", + value: 1.468 + }, { + name: "Portugal", + value: 10589.792 + }, { + name: "Paraguay", + value: 6459.721 + }, { + name: "Qatar", + value: 1749.713 + }, { + name: "Romania", + value: 21861.476 + }, { + name: "Russia", + value: 21861.476 + }, { + name: "Rwanda", + value: 10836.732 + }, { + name: "Western Sahara", + value: 514.648 + }, { + name: "Saudi Arabia", + value: 27258.387 + }, { + name: "Sudan", + value: 35652.002 + }, { + name: "South Sudan", + value: 9940.929 + }, { + name: "Senegal", + value: 12950.564 + }, { + name: "Solomon Islands", + value: 526.447 + }, { + name: "Sierra Leone", + value: 5751.976 + }, { + name: "El Salvador", + value: 6218.195 + }, { + name: "Somaliland", + value: 9636.173 + }, { + name: "Somalia", + value: 9636.173 + }, { + name: "Republic of Serbia", + value: 3573.024 + }, { + name: "Suriname", + value: 524.96 + }, { + name: "Slovakia", + value: 5433.437 + }, { + name: "Slovenia", + value: 2054.232 + }, { + name: "Sweden", + value: 9382.297 + }, { + name: "Swaziland", + value: 1193.148 + }, { + name: "Syria", + value: 7830.534 + }, { + name: "Chad", + value: 11720.781 + }, { + name: "Togo", + value: 6306.014 + }, { + name: "Thailand", + value: 66402.316 + }, { + name: "Tajikistan", + value: 7627.326 + }, { + name: "Turkmenistan", + value: 5041.995 + }, { + name: "East Timor", + value: 10016.797 + }, { + name: "Trinidad and Tobago", + value: 1328.095 + }, { + name: "Tunisia", + value: 10631.83 + }, { + name: "Turkey", + value: 72137.546 + }, { + name: "United Republic of Tanzania", + value: 44973.33 + }, { + name: "Uganda", + value: 33987.213 + }, { + name: "Ukraine", + value: 46050.22 + }, { + name: "Uruguay", + value: 3371.982 + }, { + name: "United States of America", + value: 312247.116 + }, { + name: "Uzbekistan", + value: 27769.27 + }, { + name: "Venezuela", + value: 236.299 + }, { + name: "Vietnam", + value: 89047.397 + }, { + name: "Vanuatu", + value: 236.299 + }, { + name: "West Bank", + value: 13.565 + }, { + name: "Yemen", + value: 22763.008 + }, { + name: "South Africa", + value: 51452.352 + }, { + name: "Zambia", + value: 13216.985 + }, { + name: "Zimbabwe", + value: 13076.978 + }] + }] + }) + } + } +}! function(a, b) { + var c = function(a, b, c) { + var d; + return function() { + function h() { + c || a.apply(f, g), d = null + } + var f = this, + g = arguments; + d ? clearTimeout(d) : c && a.apply(f, g), d = setTimeout(h, b || 100) + } + }; + jQuery.fn[b] = function(a) { + return a ? this.bind("resize", c(a)) : this.trigger(b) + } +}(jQuery, "smartresize"); +var CURRENT_URL = window.location.href.split("#")[0].split("?")[0], + $BODY = $("body"), + $MENU_TOGGLE = $("#menu_toggle"), + $SIDEBAR_MENU = $("#sidebar-menu"), + $SIDEBAR_FOOTER = $(".sidebar-footer"), + $LEFT_COL = $(".left_col"), + $RIGHT_COL = $(".right_col"), + $NAV_MENU = $(".nav_menu"), + $FOOTER = $("footer"), + randNum = function() { + return Math.floor(21 * Math.random()) + 20 + }; +$(document).ready(function() { + $(".collapse-link").on("click", function() { + var a = $(this).closest(".x_panel"), + b = $(this).find("i"), + c = a.find(".x_content"); + a.attr("style") ? c.slideToggle(200, function() { + a.removeAttr("style") + }) : (c.slideToggle(200), a.css("height", "auto")), b.toggleClass("fa-chevron-up fa-chevron-down") + }), $(".close-link").click(function() { + var a = $(this).closest(".x_panel"); + a.remove() + }) +}), $(document).ready(function() { + $('[data-toggle="tooltip"]').tooltip({ + container: "body" + }) +}), $(".progress .progress-bar")[0] && $(".progress .progress-bar").progressbar(), $(document).ready(function() { + if ($(".js-switch")[0]) { + var a = Array.prototype.slice.call(document.querySelectorAll(".js-switch")); + a.forEach(function(a) { + new Switchery(a, { + color: "#26B99A" + }) + }) + } +}), $(document).ready(function() { + $("input.flat")[0] && $(document).ready(function() { + $("input.flat").iCheck({ + checkboxClass: "icheckbox_flat-green", + radioClass: "iradio_flat-green" + }) + }) +}), $("table input").on("ifChecked", function() { + checkState = "", $(this).parent().parent().parent().addClass("selected"), countChecked() +}), $("table input").on("ifUnchecked", function() { + checkState = "", $(this).parent().parent().parent().removeClass("selected"), countChecked() +}); +var checkState = ""; +$(".bulk_action input").on("ifChecked", function() { + checkState = "", $(this).parent().parent().parent().addClass("selected"), countChecked() +}), $(".bulk_action input").on("ifUnchecked", function() { + checkState = "", $(this).parent().parent().parent().removeClass("selected"), countChecked() +}), $(".bulk_action input#check-all").on("ifChecked", function() { + checkState = "all", countChecked() +}), $(".bulk_action input#check-all").on("ifUnchecked", function() { + checkState = "none", countChecked() +}), $(document).ready(function() { + $(".expand").on("click", function() { + $(this).next().slideToggle(200), $expand = $(this).find(">:first-child"), "+" == $expand.text() ? $expand.text("-") : $expand.text("+") + }) +}), "undefined" != typeof NProgress && ($(document).ready(function() { + NProgress.start() +}), $(window).load(function() { + NProgress.done() +})); +var originalLeave = $.fn.popover.Constructor.prototype.leave; +$.fn.popover.Constructor.prototype.leave = function(a) { + var c, d, b = a instanceof this.constructor ? a : $(a.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type); + originalLeave.call(this, a), a.currentTarget && (c = $(a.currentTarget).siblings(".popover"), d = b.timeout, c.one("mouseenter", function() { + clearTimeout(d), c.one("mouseleave", function() { + $.fn.popover.Constructor.prototype.leave.call(b, b) + }) + })) +}, $("body").popover({ + selector: "[data-popover]", + trigger: "click hover", + delay: { + show: 50, + hide: 400 + } +}), $(document).ready(function() { + //init_sparklines(), + //init_flot_chart(), + init_sidebar(), + init_wysiwyg(), + init_InputMask(), + init_JQVmap(), + init_cropper(), + init_knob(), + //init_IonRangeSlider(), + init_ColorPicker(), + init_TagsInput(), + init_parsley(), + init_daterangepicker(), + init_daterangepicker_right(), + init_daterangepicker_single_call(), + init_daterangepicker_reservation(), + init_SmartWizard(), + //init_EasyPieChart(), + //init_charts(), + //init_echarts(), + //init_morris_charts(), + init_skycons(), + init_select2(), + init_validator(), + init_DataTables(), + init_chart_doughnut(), + init_gauge(), + init_PNotify(), + init_starrr(), + init_calendar(), + //init_compose(), + //init_CustomNotification(), + init_autosize(), + init_autocomplete() +}); + +$(document).ready(function() { + +if( $('#category_menu').length > 0){ + + $('.dropdown-submenu a.test').click( function(e){ + alery('ff'); + $(this).next('ul').toggle(); + e.stopPropagation(); + e.preventDefault(); + }); + +} +}); diff --git a/public/theme/fastclick/.bower.json b/public/theme/fastclick/.bower.json new file mode 100644 index 0000000..8a69aef --- /dev/null +++ b/public/theme/fastclick/.bower.json @@ -0,0 +1,23 @@ +{ + "name": "fastclick", + "main": "lib/fastclick.js", + "ignore": [ + "**/.*", + "component.json", + "package.json", + "Makefile", + "tests", + "examples" + ], + "homepage": "https://github.com/ftlabs/fastclick", + "version": "1.0.6", + "_release": "1.0.6", + "_resolution": { + "type": "version", + "tag": "v1.0.6", + "commit": "2ac7258407619398005ca720596f0d36ce66a6c8" + }, + "_source": "https://github.com/ftlabs/fastclick.git", + "_target": "^1.0.6", + "_originalSource": "fastclick" +} \ No newline at end of file diff --git a/public/theme/fastclick/LICENSE b/public/theme/fastclick/LICENSE new file mode 100644 index 0000000..459a20d --- /dev/null +++ b/public/theme/fastclick/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2014 The Financial Times Ltd. + +Permission 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: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE 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. diff --git a/public/theme/fastclick/README.md b/public/theme/fastclick/README.md new file mode 100644 index 0000000..074895d --- /dev/null +++ b/public/theme/fastclick/README.md @@ -0,0 +1,140 @@ +# FastClick # + +FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a `click` event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic. + +FastClick is developed by [FT Labs](http://labs.ft.com/), part of the Financial Times. + +[Explication en français](http://maxime.sh/2013/02/supprimer-le-lag-des-clics-sur-mobile-avec-fastclick/). + +[日本語で説明](https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Apps/Tips_and_techniques#Make_events_immediate)。 + +## Why does the delay exist? ## + +According to [Google](https://developers.google.com/mobile/articles/fast_buttons): + +> ...mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click event. The reason for this is that the browser is waiting to see if you are actually performing a double tap. + +## Compatibility ## + +The library has been deployed as part of the [FT Web App](http://app.ft.com/) and is tried and tested on the following mobile browsers: + +* Mobile Safari on iOS 3 and upwards +* Chrome on iOS 5 and upwards +* Chrome on Android (ICS) +* Opera Mobile 11.5 and upwards +* Android Browser since Android 2 +* PlayBook OS 1 and upwards + +## When it isn't needed ## + +FastClick doesn't attach any listeners on desktop browsers. + +Chrome 32+ on Android with `width=device-width` in the [viewport meta tag](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag) doesn't have a 300ms delay, therefore listeners aren't attached. + +```html + +``` + +Same goes for Chrome on Android (all versions) with `user-scalable=no` in the viewport meta tag. But be aware that `user-scalable=no` also disables pinch zooming, which may be an accessibility concern. + +For IE11+, you can use `touch-action: manipulation;` to disable double-tap-to-zoom on certain elements (like links and buttons). For IE10 use `-ms-touch-action: manipulation`. + +## Usage ## + +Include fastclick.js in your JavaScript bundle or add it to your HTML page like this: + +```html + +``` + +The script must be loaded prior to instantiating FastClick on any element of the page. + +To instantiate FastClick on the `body`, which is the recommended method of use: + +```js +if ('addEventListener' in document) { + document.addEventListener('DOMContentLoaded', function() { + FastClick.attach(document.body); + }, false); +} +``` + +Or, if you're using jQuery: + +```js +$(function() { + FastClick.attach(document.body); +}); +``` + +If you're using Browserify or another CommonJS-style module system, the `FastClick.attach` function will be returned when you call `require('fastclick')`. As a result, the easiest way to use FastClick with these loaders is as follows: + +```js +var attachFastClick = require('fastclick'); +attachFastClick(document.body); +``` + +### Minified ### + +Run `make` to build a minified version of FastClick using the Closure Compiler REST API. The minified file is saved to `build/fastclick.min.js` or you can [download a pre-minified version](http://build.origami.ft.com/bundles/js?modules=fastclick). + +Note: the pre-minified version is built using [our build service](http://origami.ft.com/docs/developer-guide/build-service/) which exposes the `FastClick` object through `Origami.fastclick` and will have the Browserify/CommonJS API (see above). + +```js +var attachFastClick = Origami.fastclick; +attachFastClick(document.body); +``` + +### AMD ### + +FastClick has AMD (Asynchronous Module Definition) support. This allows it to be lazy-loaded with an AMD loader, such as [RequireJS](http://requirejs.org/). Note that when using the AMD style require, the full `FastClick` object will be returned, _not_ `FastClick.attach` + +```js +var FastClick = require('fastclick'); +FastClick.attach(document.body, options); +``` + +### Package managers ### + +You can install FastClick using [Component](https://github.com/component/component), [npm](https://npmjs.org/package/fastclick) or [Bower](http://bower.io/). + +For Ruby, there's a third-party gem called [fastclick-rails](http://rubygems.org/gems/fastclick-rails). For .NET there's a [NuGet package](http://nuget.org/packages/FastClick). + +## Advanced ## + +### Ignore certain elements with `needsclick` ### + +Sometimes you need FastClick to ignore certain elements. You can do this easily by adding the `needsclick` class. +```html +Ignored by FastClick +``` + +#### Use case 1: non-synthetic click required #### + +Internally, FastClick uses `document.createEvent` to fire a synthetic `click` event as soon as `touchend` is fired by the browser. It then suppresses the additional `click` event created by the browser after that. In some cases, the non-synthetic `click` event created by the browser is required, as described in the [triggering focus example](http://ftlabs.github.com/fastclick/examples/focus.html). + +This is where the `needsclick` class comes in. Add the class to any element that requires a non-synthetic click. + +#### Use case 2: Twitter Bootstrap 2.2.2 dropdowns #### + +Another example of when to use the `needsclick` class is with dropdowns in Twitter Bootstrap 2.2.2. Bootstrap add its own `touchstart` listener for dropdowns, so you want to tell FastClick to ignore those. If you don't, touch devices will automatically close the dropdown as soon as it is clicked, because both FastClick and Bootstrap execute the synthetic click, one opens the dropdown, the second closes it immediately after. + +```html +Dropdown +``` + +## Examples ## + +FastClick is designed to cope with many different browser oddities. Here are some examples to illustrate this: + +* [basic use](http://ftlabs.github.com/fastclick/examples/layer.html) showing the increase in perceived responsiveness +* [triggering focus](http://ftlabs.github.com/fastclick/examples/focus.html) on an input element from a `click` handler +* [input element](http://ftlabs.github.com/fastclick/examples/input.html) which never receives clicks but gets fast focus + +## Tests ## + +There are no automated tests. The files in `tests/` are manual reduced test cases. We've had a think about how best to test these cases, but they tend to be very browser/device specific and sometimes subjective which means it's not so trivial to test. + +## Credits and collaboration ## + +FastClick is maintained by [Rowan Beentje](http://twitter.com/rowanbeentje), [Matthew Caruana Galizia](http://twitter.com/mcaruanagalizia) and [Matthew Andrews](http://twitter.com/andrewsmatt) at [FT Labs](http://labs.ft.com). All open source code released by FT Labs is licenced under the MIT licence. We welcome comments, feedback and suggestions. Please feel free to raise an issue or pull request. diff --git a/public/theme/fastclick/bower.json b/public/theme/fastclick/bower.json new file mode 100644 index 0000000..18e1abd --- /dev/null +++ b/public/theme/fastclick/bower.json @@ -0,0 +1,12 @@ +{ + "name": "fastclick", + "main": "lib/fastclick.js", + "ignore": [ + "**/.*", + "component.json", + "package.json", + "Makefile", + "tests", + "examples" + ] +} diff --git a/public/theme/fastclick/lib/fastclick.js b/public/theme/fastclick/lib/fastclick.js new file mode 100644 index 0000000..3af4f9d --- /dev/null +++ b/public/theme/fastclick/lib/fastclick.js @@ -0,0 +1,841 @@ +;(function () { + 'use strict'; + + /** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ + + /*jslint browser:true, node:true*/ + /*global define, Event, Node*/ + + + /** + * Instantiate fast-clicking listeners on the specified layer. + * + * @constructor + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + function FastClick(layer, options) { + var oldOnClick; + + options = options || {}; + + /** + * Whether a click is currently being tracked. + * + * @type boolean + */ + this.trackingClick = false; + + + /** + * Timestamp for when click tracking started. + * + * @type number + */ + this.trackingClickStart = 0; + + + /** + * The element being tracked for a click. + * + * @type EventTarget + */ + this.targetElement = null; + + + /** + * X-coordinate of touch start event. + * + * @type number + */ + this.touchStartX = 0; + + + /** + * Y-coordinate of touch start event. + * + * @type number + */ + this.touchStartY = 0; + + + /** + * ID of the last touch, retrieved from Touch.identifier. + * + * @type number + */ + this.lastTouchIdentifier = 0; + + + /** + * Touchmove boundary, beyond which a click will be cancelled. + * + * @type number + */ + this.touchBoundary = options.touchBoundary || 10; + + + /** + * The FastClick layer. + * + * @type Element + */ + this.layer = layer; + + /** + * The minimum time between tap(touchstart and touchend) events + * + * @type number + */ + this.tapDelay = options.tapDelay || 200; + + /** + * The maximum time for a tap + * + * @type number + */ + this.tapTimeout = options.tapTimeout || 700; + + if (FastClick.notNeeded(layer)) { + return; + } + + // Some old versions of Android don't have Function.prototype.bind + function bind(method, context) { + return function() { return method.apply(context, arguments); }; + } + + + var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; + var context = this; + for (var i = 0, l = methods.length; i < l; i++) { + context[methods[i]] = bind(context[methods[i]], context); + } + + // Set up event handlers as required + if (deviceIsAndroid) { + layer.addEventListener('mouseover', this.onMouse, true); + layer.addEventListener('mousedown', this.onMouse, true); + layer.addEventListener('mouseup', this.onMouse, true); + } + + layer.addEventListener('click', this.onClick, true); + layer.addEventListener('touchstart', this.onTouchStart, false); + layer.addEventListener('touchmove', this.onTouchMove, false); + layer.addEventListener('touchend', this.onTouchEnd, false); + layer.addEventListener('touchcancel', this.onTouchCancel, false); + + // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick + // layer when they are cancelled. + if (!Event.prototype.stopImmediatePropagation) { + layer.removeEventListener = function(type, callback, capture) { + var rmv = Node.prototype.removeEventListener; + if (type === 'click') { + rmv.call(layer, type, callback.hijacked || callback, capture); + } else { + rmv.call(layer, type, callback, capture); + } + }; + + layer.addEventListener = function(type, callback, capture) { + var adv = Node.prototype.addEventListener; + if (type === 'click') { + adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { + if (!event.propagationStopped) { + callback(event); + } + }), capture); + } else { + adv.call(layer, type, callback, capture); + } + }; + } + + // If a handler is already declared in the element's onclick attribute, it will be fired before + // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and + // adding it as listener. + if (typeof layer.onclick === 'function') { + + // Android browser on at least 3.2 requires a new reference to the function in layer.onclick + // - the old one won't work if passed to addEventListener directly. + oldOnClick = layer.onclick; + layer.addEventListener('click', function(event) { + oldOnClick(event); + }, false); + layer.onclick = null; + } + } + + /** + * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. + * + * @type boolean + */ + var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; + + /** + * Android requires exceptions. + * + * @type boolean + */ + var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; + + + /** + * iOS requires exceptions. + * + * @type boolean + */ + var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; + + + /** + * iOS 4 requires an exception for select elements. + * + * @type boolean + */ + var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); + + + /** + * iOS 6.0-7.* requires the target element to be manually derived + * + * @type boolean + */ + var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); + + /** + * BlackBerry requires exceptions. + * + * @type boolean + */ + var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; + + /** + * Determine whether a given element requires a native click. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element needs a native click + */ + FastClick.prototype.needsClick = function(target) { + switch (target.nodeName.toLowerCase()) { + + // Don't send a synthetic click to disabled inputs (issue #62) + case 'button': + case 'select': + case 'textarea': + if (target.disabled) { + return true; + } + + break; + case 'input': + + // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) + if ((deviceIsIOS && target.type === 'file') || target.disabled) { + return true; + } + + break; + case 'label': + case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames + case 'video': + return true; + } + + return (/\bneedsclick\b/).test(target.className); + }; + + + /** + * Determine whether a given element requires a call to focus to simulate click into element. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. + */ + FastClick.prototype.needsFocus = function(target) { + switch (target.nodeName.toLowerCase()) { + case 'textarea': + return true; + case 'select': + return !deviceIsAndroid; + case 'input': + switch (target.type) { + case 'button': + case 'checkbox': + case 'file': + case 'image': + case 'radio': + case 'submit': + return false; + } + + // No point in attempting to focus disabled inputs + return !target.disabled && !target.readOnly; + default: + return (/\bneedsfocus\b/).test(target.className); + } + }; + + + /** + * Send a click event to the specified element. + * + * @param {EventTarget|Element} targetElement + * @param {Event} event + */ + FastClick.prototype.sendClick = function(targetElement, event) { + var clickEvent, touch; + + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + + touch = event.changedTouches[0]; + + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); + }; + + FastClick.prototype.determineEventType = function(targetElement) { + + //Issue #159: Android Chrome Select Box does not open with a synthetic click event + if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { + return 'mousedown'; + } + + return 'click'; + }; + + + /** + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.focus = function(targetElement) { + var length; + + // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. + if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { + length = targetElement.value.length; + targetElement.setSelectionRange(length, length); + } else { + targetElement.focus(); + } + }; + + + /** + * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. + * + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.updateScrollParent = function(targetElement) { + var scrollParent, parentElement; + + scrollParent = targetElement.fastClickScrollParent; + + // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the + // target element was moved to another parent. + if (!scrollParent || !scrollParent.contains(targetElement)) { + parentElement = targetElement; + do { + if (parentElement.scrollHeight > parentElement.offsetHeight) { + scrollParent = parentElement; + targetElement.fastClickScrollParent = parentElement; + break; + } + + parentElement = parentElement.parentElement; + } while (parentElement); + } + + // Always update the scroll top tracker if possible. + if (scrollParent) { + scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; + } + }; + + + /** + * @param {EventTarget} targetElement + * @returns {Element|EventTarget} + */ + FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { + + // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. + if (eventTarget.nodeType === Node.TEXT_NODE) { + return eventTarget.parentNode; + } + + return eventTarget; + }; + + + /** + * On touch start, record the position and scroll offset. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchStart = function(event) { + var targetElement, touch, selection; + + // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). + if (event.targetTouches.length > 1) { + return true; + } + + targetElement = this.getTargetElementFromEventTarget(event.target); + touch = event.targetTouches[0]; + + if (deviceIsIOS) { + + // Only trusted events will deselect text on iOS (issue #49) + selection = window.getSelection(); + if (selection.rangeCount && !selection.isCollapsed) { + return true; + } + + if (!deviceIsIOS4) { + + // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): + // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched + // with the same identifier as the touch event that previously triggered the click that triggered the alert. + // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an + // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. + // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, + // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, + // random integers, it's safe to to continue if the identifier is 0 here. + if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { + event.preventDefault(); + return false; + } + + this.lastTouchIdentifier = touch.identifier; + + // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: + // 1) the user does a fling scroll on the scrollable layer + // 2) the user stops the fling scroll with another tap + // then the event.target of the last 'touchend' event will be the element that was under the user's finger + // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check + // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). + this.updateScrollParent(targetElement); + } + } + + this.trackingClick = true; + this.trackingClickStart = event.timeStamp; + this.targetElement = targetElement; + + this.touchStartX = touch.pageX; + this.touchStartY = touch.pageY; + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + event.preventDefault(); + } + + return true; + }; + + + /** + * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.touchHasMoved = function(event) { + var touch = event.changedTouches[0], boundary = this.touchBoundary; + + if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { + return true; + } + + return false; + }; + + + /** + * Update the last position. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchMove = function(event) { + if (!this.trackingClick) { + return true; + } + + // If the touch has moved, cancel the click tracking + if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { + this.trackingClick = false; + this.targetElement = null; + } + + return true; + }; + + + /** + * Attempt to find the labelled control for the given label element. + * + * @param {EventTarget|HTMLLabelElement} labelElement + * @returns {Element|null} + */ + FastClick.prototype.findControl = function(labelElement) { + + // Fast path for newer browsers supporting the HTML5 control attribute + if (labelElement.control !== undefined) { + return labelElement.control; + } + + // All browsers under test that support touch events also support the HTML5 htmlFor attribute + if (labelElement.htmlFor) { + return document.getElementById(labelElement.htmlFor); + } + + // If no for attribute exists, attempt to retrieve the first labellable descendant element + // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label + return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); + }; + + + /** + * On touch end, determine whether to send a click event at once. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchEnd = function(event) { + var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; + + if (!this.trackingClick) { + return true; + } + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + this.cancelNextClick = true; + return true; + } + + if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { + return true; + } + + // Reset to prevent wrong click cancel on input (issue #156). + this.cancelNextClick = false; + + this.lastClickTime = event.timeStamp; + + trackingClickStart = this.trackingClickStart; + this.trackingClick = false; + this.trackingClickStart = 0; + + // On some iOS devices, the targetElement supplied with the event is invalid if the layer + // is performing a transition or scroll, and has to be re-detected manually. Note that + // for this to function correctly, it must be called *after* the event target is checked! + // See issue #57; also filed as rdar://13048589 . + if (deviceIsIOSWithBadTarget) { + touch = event.changedTouches[0]; + + // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null + targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; + targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; + } + + targetTagName = targetElement.tagName.toLowerCase(); + if (targetTagName === 'label') { + forElement = this.findControl(targetElement); + if (forElement) { + this.focus(targetElement); + if (deviceIsAndroid) { + return false; + } + + targetElement = forElement; + } + } else if (this.needsFocus(targetElement)) { + + // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. + // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). + if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { + this.targetElement = null; + return false; + } + + this.focus(targetElement); + this.sendClick(targetElement, event); + + // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. + // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) + if (!deviceIsIOS || targetTagName !== 'select') { + this.targetElement = null; + event.preventDefault(); + } + + return false; + } + + if (deviceIsIOS && !deviceIsIOS4) { + + // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled + // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). + scrollParent = targetElement.fastClickScrollParent; + if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { + return true; + } + } + + // Prevent the actual click from going though - unless the target node is marked as requiring + // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. + if (!this.needsClick(targetElement)) { + event.preventDefault(); + this.sendClick(targetElement, event); + } + + return false; + }; + + + /** + * On touch cancel, stop tracking the click. + * + * @returns {void} + */ + FastClick.prototype.onTouchCancel = function() { + this.trackingClick = false; + this.targetElement = null; + }; + + + /** + * Determine mouse events which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onMouse = function(event) { + + // If a target element was never set (because a touch event was never fired) allow the event + if (!this.targetElement) { + return true; + } + + if (event.forwardedTouchEvent) { + return true; + } + + // Programmatically generated events targeting a specific element should be permitted + if (!event.cancelable) { + return true; + } + + // Derive and check the target element to see whether the mouse event needs to be permitted; + // unless explicitly enabled, prevent non-touch click events from triggering actions, + // to prevent ghost/doubleclicks. + if (!this.needsClick(this.targetElement) || this.cancelNextClick) { + + // Prevent any user-added listeners declared on FastClick element from being fired. + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + + // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + event.propagationStopped = true; + } + + // Cancel the event + event.stopPropagation(); + event.preventDefault(); + + return false; + } + + // If the mouse event is permitted, return true for the action to go through. + return true; + }; + + + /** + * On actual clicks, determine whether this is a touch-generated click, a click action occurring + * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or + * an actual click which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onClick = function(event) { + var permitted; + + // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. + if (this.trackingClick) { + this.targetElement = null; + this.trackingClick = false; + return true; + } + + // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. + if (event.target.type === 'submit' && event.detail === 0) { + return true; + } + + permitted = this.onMouse(event); + + // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. + if (!permitted) { + this.targetElement = null; + } + + // If clicks are permitted, return true for the action to go through. + return permitted; + }; + + + /** + * Remove all FastClick's event listeners. + * + * @returns {void} + */ + FastClick.prototype.destroy = function() { + var layer = this.layer; + + if (deviceIsAndroid) { + layer.removeEventListener('mouseover', this.onMouse, true); + layer.removeEventListener('mousedown', this.onMouse, true); + layer.removeEventListener('mouseup', this.onMouse, true); + } + + layer.removeEventListener('click', this.onClick, true); + layer.removeEventListener('touchstart', this.onTouchStart, false); + layer.removeEventListener('touchmove', this.onTouchMove, false); + layer.removeEventListener('touchend', this.onTouchEnd, false); + layer.removeEventListener('touchcancel', this.onTouchCancel, false); + }; + + + /** + * Check whether FastClick is needed. + * + * @param {Element} layer The layer to listen on + */ + FastClick.notNeeded = function(layer) { + var metaViewport; + var chromeVersion; + var blackberryVersion; + var firefoxVersion; + + // Devices that don't support touch don't need FastClick + if (typeof window.ontouchstart === 'undefined') { + return true; + } + + // Chrome version - zero for other browsers + chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (chromeVersion) { + + if (deviceIsAndroid) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // Chrome 32 and above with width=device-width or less don't need FastClick + if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + + // Chrome desktop doesn't need FastClick (issue #15) + } else { + return true; + } + } + + if (deviceIsBlackBerry10) { + blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); + + // BlackBerry 10.3+ does not require Fastclick library. + // https://github.com/ftlabs/fastclick/issues/251 + if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // user-scalable=no eliminates click delay. + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // width=device-width (or less than device-width) eliminates click delay. + if (document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + } + } + + // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) + if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + // Firefox version - zero for other browsers + firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (firefoxVersion >= 27) { + // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 + + metaViewport = document.querySelector('meta[name=viewport]'); + if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { + return true; + } + } + + // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version + // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx + if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + return false; + }; + + + /** + * Factory method for creating a FastClick object + * + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + FastClick.attach = function(layer, options) { + return new FastClick(layer, options); + }; + + + if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { + + // AMD. Register as an anonymous module. + define(function() { + return FastClick; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = FastClick.attach; + module.exports.FastClick = FastClick; + } else { + window.FastClick = FastClick; + } +}()); diff --git a/public/theme/font-awesome/.bower.json b/public/theme/font-awesome/.bower.json new file mode 100644 index 0000000..80a0161 --- /dev/null +++ b/public/theme/font-awesome/.bower.json @@ -0,0 +1,36 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": [ + "OFL-1.1", + "MIT", + "CC-BY-3.0" + ], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ], + "version": "4.6.3", + "_release": "4.6.3", + "_resolution": { + "type": "version", + "tag": "v4.6.3", + "commit": "0f618911b105195c931ec5d5bef425a2a2806cab" + }, + "_source": "https://github.com/FortAwesome/Font-Awesome.git", + "_target": "^4.6.1", + "_originalSource": "fontawesome" +} \ No newline at end of file diff --git a/public/theme/font-awesome/.gitignore b/public/theme/font-awesome/.gitignore new file mode 100644 index 0000000..39c4f20 --- /dev/null +++ b/public/theme/font-awesome/.gitignore @@ -0,0 +1,33 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version +.bundle diff --git a/public/theme/font-awesome/.npmignore b/public/theme/font-awesome/.npmignore new file mode 100644 index 0000000..54a691f --- /dev/null +++ b/public/theme/font-awesome/.npmignore @@ -0,0 +1,42 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version + +# don't need these in the npm package. +src/ +_config.yml +bower.json +component.json +composer.json +CONTRIBUTING.md +Gemfile +Gemfile.lock diff --git a/public/theme/font-awesome/HELP-US-OUT.txt b/public/theme/font-awesome/HELP-US-OUT.txt new file mode 100644 index 0000000..83d083d --- /dev/null +++ b/public/theme/font-awesome/HELP-US-OUT.txt @@ -0,0 +1,7 @@ +I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, +Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, +comprehensive icon sets or copy and paste your own. + +Please. Check it out. + +-Dave Gandy diff --git a/public/theme/font-awesome/bower.json b/public/theme/font-awesome/bower.json new file mode 100644 index 0000000..9e21126 --- /dev/null +++ b/public/theme/font-awesome/bower.json @@ -0,0 +1,22 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ] +} diff --git a/public/theme/font-awesome/css/font-awesome.css b/public/theme/font-awesome/css/font-awesome.css new file mode 100644 index 0000000..4ccd997 --- /dev/null +++ b/public/theme/font-awesome/css/font-awesome.css @@ -0,0 +1,2199 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/public/theme/font-awesome/css/font-awesome.css.map b/public/theme/font-awesome/css/font-awesome.css.map new file mode 100644 index 0000000..60763a8 --- /dev/null +++ b/public/theme/font-awesome/css/font-awesome.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";;;;;;;AAGA,UAUC;EATC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,+CAAgE;EACrE,GAAG,EAAE,ySAAmG;EAKxG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;ACTpB,GAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uCAAwD;EAC9D,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACN5B,MAAsB;EACpB,SAAS,EAAE,SAAS;EACpB,WAAW,EAAE,MAAS;EACtB,cAAc,EAAE,IAAI;;AAEtB,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;ACVtC,MAAsB;EACpB,KAAK,EAAE,SAAW;EAClB,UAAU,EAAE,MAAM;;ACDpB,MAAsB;EACpB,YAAY,EAAE,CAAC;EACf,WAAW,ECKU,SAAS;EDJ9B,eAAe,EAAE,IAAI;EACrB,WAAK;IAAE,QAAQ,EAAE,QAAQ;;AAE3B,MAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,UAAa;EACnB,KAAK,ECFgB,SAAS;EDG9B,GAAG,EAAE,SAAU;EACf,UAAU,EAAE,MAAM;EAClB,YAAuB;IACrB,IAAI,EAAE,UAA0B;;AEbpC,UAA0B;EACxB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,iBAA4B;EACpC,aAAa,EAAE,IAAI;;AAGrB,WAAY;EAAE,KAAK,EAAE,KAAK;;AAC1B,UAAW;EAAE,KAAK,EAAE,IAAI;;AAGtB,aAAY;EAAE,YAAY,EAAE,IAAI;AAChC,cAAa;EAAE,WAAW,EAAE,IAAI;;ACXlC,QAAwB;EACtB,iBAAiB,EAAE,0BAA0B;EACrC,SAAS,EAAE,0BAA0B;;AAG/C,SAAyB;EACvB,iBAAiB,EAAE,4BAA4B;EACvC,SAAS,EAAE,4BAA4B;;AAGjD,0BASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AAIrC,kBASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AC5BrC,aAA8B;ECY5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,aAAgB;EAC/B,aAAa,EAAE,aAAgB;EAC3B,SAAS,EAAE,aAAgB;;ADdrC,cAA8B;ECW5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADbrC,cAA8B;ECU5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADXrC,mBAAmC;ECejC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADjBzC,iBAAmC;ECcjC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADZzC;;;;uBAIuC;EACrC,MAAM,EAAE,IAAI;;AEfd,SAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAExB,0BAAyD;EACvD,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;;AAEpB,YAA4B;EAAE,WAAW,EAAE,OAAO;;AAClD,YAA4B;EAAE,SAAS,EAAE,GAAG;;AAC5C,WAA2B;EAAE,KAAK,ELVZ,IAAI;;;;AMN1B,gBAAgC;EAAE,OAAO,ENoQ1B,GAAO;;AMnQtB,gBAAgC;EAAE,OAAO,EN0W1B,GAAO;;AMzWtB,iBAAiC;EAAE,OAAO,ENmb1B,GAAO;;AMlbvB,qBAAqC;EAAE,OAAO,ENmL1B,GAAO;;AMlL3B,gBAAgC;EAAE,OAAO,ENkR1B,GAAO;;AMjRtB,eAA+B;EAAE,OAAO,ENke1B,GAAO;;AMjerB,iBAAiC;EAAE,OAAO,ENse1B,GAAO;;AMrevB,eAA+B;EAAE,OAAO,EN+iB1B,GAAO;;AM9iBrB,eAA+B;EAAE,OAAO,ENyN1B,GAAO;;AMxNrB,mBAAmC;EAAE,OAAO,ENggB1B,GAAO;;AM/fzB,aAA6B;EAAE,OAAO,EN8f1B,GAAO;;AM7fnB,kBAAkC;EAAE,OAAO,EN+f1B,GAAO;;AM9fxB,gBAAgC;EAAE,OAAO,ENoG1B,GAAO;;AMnGtB;;gBAEgC;EAAE,OAAO,ENkgB1B,GAAO;;AMjgBtB,sBAAsC;EAAE,OAAO,ENua1B,GAAO;;AMta5B,uBAAuC;EAAE,OAAO,ENqa1B,GAAO;;AMpa7B,oBAAoC;EAAE,OAAO,EN+X1B,GAAO;;AM9X1B,iBAAiC;EAAE,OAAO,ENsb1B,GAAO;;AMrbvB;cAC8B;EAAE,OAAO,ENwH1B,GAAO;;AMvHpB,kBAAkC;EAAE,OAAO,ENygB1B,GAAO;;AMxgBxB,eAA+B;EAAE,OAAO,ENmQ1B,GAAO;;AMlQrB,iBAAiC;EAAE,OAAO,EN6L1B,GAAO;;AM5LvB,kBAAkC;EAAE,OAAO,EN0G1B,GAAO;;AMzGxB,eAA+B;EAAE,OAAO,EN+Y1B,GAAO;;AM9YrB,mBAAmC;EAAE,OAAO,ENiJ1B,GAAO;;AMhJzB,8BAA8C;EAAE,OAAO,ENI1B,GAAO;;AMHpC,4BAA4C;EAAE,OAAO,ENM1B,GAAO;;AMLlC,gBAAgC;EAAE,OAAO,ENkQ1B,GAAO;;AMjQtB,wBAAwC;EAAE,OAAO,EN4W1B,GAAO;;AM3W9B;iBACiC;EAAE,OAAO,ENmY1B,GAAO;;AMlYvB,kBAAkC;EAAE,OAAO,EN8X1B,GAAO;;AM7XxB,mBAAmC;EAAE,OAAO,ENiS1B,GAAO;;AMhSzB,eAA+B;EAAE,OAAO,ENoS1B,GAAO;;AMnSrB,eAA+B;EAAE,OAAO,ENgM1B,GAAO;;AM/LrB,qBAAqC;EAAE,OAAO,EN+O1B,GAAO;;AM9O3B,qBAAqC;EAAE,OAAO,EN8hB1B,GAAO;;AM7hB3B,sBAAsC;EAAE,OAAO,EN4hB1B,GAAO;;AM3hB5B,oBAAoC;EAAE,OAAO,EN6hB1B,GAAO;;AM5hB1B,iBAAiC;EAAE,OAAO,EN2W1B,GAAO;;AM1WvB,kBAAkC;EAAE,OAAO,ENW1B,GAAO;;AMVxB,cAA8B;EAAE,OAAO,ENod1B,GAAO;;AMndpB,eAA+B;EAAE,OAAO,ENod1B,GAAO;;AMndrB,eAA+B;EAAE,OAAO,EN2B1B,GAAO;;AM1BrB,mBAAmC;EAAE,OAAO,EN2B1B,GAAO;;AM1BzB,gBAAgC;EAAE,OAAO,ENkW1B,GAAO;;AMjWtB,iBAAiC;EAAE,OAAO,ENwC1B,GAAO;;AMvCvB,eAA+B;EAAE,OAAO,EN8L1B,GAAO;;AM7LrB,eAA+B;EAAE,OAAO,ENmB1B,GAAO;;AMlBrB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB,sBAAsC;EAAE,OAAO,ENid1B,GAAO;;AMhd5B,qBAAqC;EAAE,OAAO,ENid1B,GAAO;;AMhd3B,qBAAqC;EAAE,OAAO,EN1C1B,GAAO;;AM2C3B,uBAAuC;EAAE,OAAO,EN7C1B,GAAO;;AM8C7B,sBAAsC;EAAE,OAAO,EN3C1B,GAAO;;AM4C5B,wBAAwC;EAAE,OAAO,EN9C1B,GAAO;;AM+C9B,eAA+B;EAAE,OAAO,ENwQ1B,GAAO;;AMvQrB;kBACkC;EAAE,OAAO,ENmT1B,GAAO;;AMlTxB,iBAAiC;EAAE,OAAO,ENmO1B,GAAO;;AMlOvB,uBAAuC;EAAE,OAAO,ENigB1B,GAAO;;AMhgB7B;;oBAEoC;EAAE,OAAO,EN+T1B,GAAO;;AM9T1B,iBAAiC;EAAE,OAAO,ENwT1B,GAAO;;AMvTvB,qBAAqC;EAAE,OAAO,EN+Q1B,GAAO;;AM9Q3B,iBAAiC;EAAE,OAAO,EN5D1B,GAAO;;AM6DvB,eAA+B;EAAE,OAAO,EN8c1B,GAAO;;AM7crB;0BAC0C;EAAE,OAAO,ENqT1B,GAAO;;AMpThC,yBAAyC;EAAE,OAAO,ENuX1B,GAAO;;AMtX/B,yBAAyC;EAAE,OAAO,EN0C1B,GAAO;;AMzC/B,iBAAiC;EAAE,OAAO,ENjC1B,GAAO;;AMkCvB,wBAAwC;EAAE,OAAO,ENma1B,GAAO;;AMla9B,wBAAwC;EAAE,OAAO,EN4H1B,GAAO;;AM3H9B,mBAAmC;EAAE,OAAO,EN7B1B,GAAO;;AM8BzB,eAA+B;EAAE,OAAO,EN0T1B,GAAO;;AMzTrB,gBAAgC;EAAE,OAAO,ENwS1B,GAAO;;AMvStB,eAA+B;EAAE,OAAO,ENia1B,GAAO;;AMharB,kBAAkC;EAAE,OAAO,ENgK1B,GAAO;;AM/JxB,uBAAuC;EAAE,OAAO,ENuH1B,GAAO;;AMtH7B,uBAAuC;EAAE,OAAO,EN4Z1B,GAAO;;AM3Z7B,gBAAgC;EAAE,OAAO,EN4F1B,GAAO;;AM3FtB,uBAAuC;EAAE,OAAO,ENoC1B,GAAO;;AMnC7B,wBAAwC;EAAE,OAAO,ENoC1B,GAAO;;AMnC9B,sBAAsC;EAAE,OAAO,ENsT1B,GAAO;;AMrT5B,uBAAuC;EAAE,OAAO,ENyQ1B,GAAO;;AMxQ7B,uBAAuC;EAAE,OAAO,ENwb1B,GAAO;;AMvb7B,uBAAuC;EAAE,OAAO,ENsB1B,GAAO;;AMrB7B,0BAA0C;EAAE,OAAO,EN2T1B,GAAO;;AM1ThC,sBAAsC;EAAE,OAAO,ENsM1B,GAAO;;AMrM5B,qBAAqC;EAAE,OAAO,EN6D1B,GAAO;;AM5D3B,yBAAyC;EAAE,OAAO,ENob1B,GAAO;;AMnb/B,yBAAyC;EAAE,OAAO,ENkB1B,GAAO;;AMjB/B,cAA8B;EAAE,OAAO,EN/C1B,GAAO;;AMgDpB,qBAAqC;EAAE,OAAO,EN3D1B,GAAO;;AM4D3B,sBAAsC;EAAE,OAAO,EN3D1B,GAAO;;AM4D5B,mBAAmC;EAAE,OAAO,EN3D1B,GAAO;;AM4DzB,qBAAqC;EAAE,OAAO,EN/D1B,GAAO;;AMgE3B;gBACgC;EAAE,OAAO,ENqV1B,GAAO;;AMpVtB,iBAAiC;EAAE,OAAO,ENuF1B,GAAO;;AMtFvB,mBAAmC;EAAE,OAAO,EN4C1B,GAAO;;AM3CzB,eAA+B;EAAE,OAAO,ENmS1B,GAAO;;AMlSrB,gBAAgC;EAAE,OAAO,ENsP1B,GAAO;;AMrPtB,mBAAmC;EAAE,OAAO,EN9D1B,GAAO;;AM+DzB,6BAA6C;EAAE,OAAO,ENgF1B,GAAO;;AM/EnC,eAA+B;EAAE,OAAO,EN+I1B,GAAO;;AM9IrB,eAA+B;EAAE,OAAO,ENoM1B,GAAO;;AMnMrB,eAA+B;EAAE,OAAO,ENmH1B,GAAO;;AMlHrB,cAA8B;EAAE,OAAO,ENiF1B,GAAO;;AMhFpB,oBAAoC;EAAE,OAAO,ENiF1B,GAAO;;AMhF1B;+BAC+C;EAAE,OAAO,EN0E1B,GAAO;;AMzErC,gBAAgC;EAAE,OAAO,ENmR1B,GAAO;;AMlRtB,mBAAmC;EAAE,OAAO,EN/B1B,GAAO;;AMgCzB,iBAAiC;EAAE,OAAO,ENoS1B,GAAO;;AMnSvB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,iBAAiC;EAAE,OAAO,ENqN1B,GAAO;;AMpNvB,qBAAqC;EAAE,OAAO,ENE1B,GAAO;;AMD3B,uBAAuC;EAAE,OAAO,ENF1B,GAAO;;AMG7B,kBAAkC;EAAE,OAAO,EN2S1B,GAAO;;AM1SxB,wBAAwC;EAAE,OAAO,ENyU1B,GAAO;;AMxU9B,iBAAiC;EAAE,OAAO,EN8G1B,GAAO;;AM7GvB,sBAAsC;EAAE,OAAO,EN+G1B,GAAO;;AM9G5B,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,mBAAmC;EAAE,OAAO,ENrF1B,GAAO;;AMsFzB;oBACoC;EAAE,OAAO,EN/E1B,GAAO;;AMgF1B,yBAAyC;EAAE,OAAO,ENua1B,GAAO;;AMta/B,0BAA0C;EAAE,OAAO,ENmE1B,GAAO;;AMlEhC,uBAAuC;EAAE,OAAO,EN5C1B,GAAO;;AM6C7B,cAA8B;EAAE,OAAO,ENqK1B,GAAO;;AMpKpB;eAC+B;EAAE,OAAO,ENK1B,GAAO;;AMJrB,mBAAmC;EAAE,OAAO,ENQ1B,GAAO;;AMPzB,sBAAsC;EAAE,OAAO,ENmY1B,GAAO;;AMlY5B,wBAAwC;EAAE,OAAO,ENiY1B,GAAO;;AMhY9B,oBAAoC;EAAE,OAAO,EN2V1B,GAAO;;AM1V1B,kBAAkC;EAAE,OAAO,ENyI1B,GAAO;;AMxIxB,mBAAmC;EAAE,OAAO,ENyT1B,GAAO;;AMxTzB,0BAA0C;EAAE,OAAO,ENiL1B,GAAO;;AMhLhC,qBAAqC;EAAE,OAAO,EN0X1B,GAAO;;AMzX3B,wBAAwC;EAAE,OAAO,EN8C1B,GAAO;;AM7C9B,kBAAkC;EAAE,OAAO,ENoT1B,GAAO;;AMnTxB,iBAAiC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YvB,wBAAwC;EAAE,OAAO,EN6G1B,GAAO;;AM5G9B,iBAAiC;EAAE,OAAO,EN8Z1B,GAAO;;AM7ZvB,kBAAkC;EAAE,OAAO,EN+J1B,GAAO;;AM9JxB,gBAAgC;EAAE,OAAO,ENsO1B,GAAO;;AMrOtB,mBAAmC;EAAE,OAAO,EN2U1B,GAAO;;AM1UzB,qBAAqC;EAAE,OAAO,EN/E1B,GAAO;;AMgF3B,uBAAuC;EAAE,OAAO,ENoO1B,GAAO;;AMnO7B,kBAAkC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YxB;mBACmC;EAAE,OAAO,ENuC1B,GAAO;;AMtCzB,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,iBAAiC;EAAE,OAAO,ENiZ1B,GAAO;;AMhZvB,sBAAsC;EAAE,OAAO,ENR1B,GAAO;;AMS5B,cAA8B;EAAE,OAAO,EN4Q1B,GAAO;;AM3QpB,gBAAgC;EAAE,OAAO,ENgH1B,GAAO;;AM/GtB,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,eAA+B;EAAE,OAAO,ENzG1B,GAAO;;AM0GrB,sBAAsC;EAAE,OAAO,ENzD1B,GAAO;;AM0D5B,uBAAuC;EAAE,OAAO,EN0G1B,GAAO;;AMzG7B,sBAAsC;EAAE,OAAO,ENwG1B,GAAO;;AMvG5B,oBAAoC;EAAE,OAAO,ENyG1B,GAAO;;AMxG1B,sBAAsC;EAAE,OAAO,ENqG1B,GAAO;;AMpG5B,4BAA4C;EAAE,OAAO,EN5I1B,GAAO;;AM6IlC,6BAA6C;EAAE,OAAO,ENxI1B,GAAO;;AMyInC,0BAA0C;EAAE,OAAO,ENxI1B,GAAO;;AMyIhC,4BAA4C;EAAE,OAAO,ENhJ1B,GAAO;;AMiJlC,gBAAgC;EAAE,OAAO,ENsF1B,GAAO;;AMrFtB,iBAAiC;EAAE,OAAO,ENia1B,GAAO;;AMhavB,gBAAgC;EAAE,OAAO,ENiV1B,GAAO;;AMhVtB,iBAAiC;EAAE,OAAO,ENgD1B,GAAO;;AM/CvB,oBAAoC;EAAE,OAAO,ENvG1B,GAAO;;AMwG1B,qBAAqC;EAAE,OAAO,ENzI1B,GAAO;;AM0I3B;gBACgC;EAAE,OAAO,ENqY1B,GAAO;;AMpYtB;eAC+B;EAAE,OAAO,ENuI1B,GAAO;;AMtIrB,gBAAgC;EAAE,OAAO,ENpD1B,GAAO;;AMqDtB,gBAAgC;EAAE,OAAO,EN+C1B,GAAO;;AM9CtB;mBACmC;EAAE,OAAO,ENwP1B,GAAO;;AMvPzB;kBACkC;EAAE,OAAO,ENkC1B,GAAO;;AMjCxB,oBAAoC;EAAE,OAAO,ENsL1B,GAAO;;AMrL1B;mBACmC;EAAE,OAAO,EN0C1B,GAAO;;AMzCzB,iBAAiC;EAAE,OAAO,ENiS1B,GAAO;;AMhSvB;;eAE+B;EAAE,OAAO,EN9I1B,GAAO;;AM+IrB,kBAAkC;EAAE,OAAO,ENgI1B,GAAO;;AM/HxB,kBAAkC;EAAE,OAAO,EN8H1B,GAAO;;AM7HxB,wBAAwC;EAAE,OAAO,EN4S1B,GAAO;;AM3S9B,oBAAoC;EAAE,OAAO,ENoW1B,GAAO;;AMnW1B,gBAAgC;EAAE,OAAO,ENmT1B,GAAO;;AMlTtB,gBAAgC;EAAE,OAAO,ENkI1B,GAAO;;AMjItB,gBAAgC;EAAE,OAAO,ENuV1B,GAAO;;AMtVtB,oBAAoC;EAAE,OAAO,ENwL1B,GAAO;;AMvL1B,2BAA2C;EAAE,OAAO,ENyL1B,GAAO;;AMxLjC,6BAA6C;EAAE,OAAO,ENyD1B,GAAO;;AMxDnC,sBAAsC;EAAE,OAAO,ENuD1B,GAAO;;AMtD5B,gBAAgC;EAAE,OAAO,ENsJ1B,GAAO;;AMrJtB,qBAAqC;EAAE,OAAO,ENtH1B,GAAO;;AMuH3B,mBAAmC;EAAE,OAAO,ENhH1B,GAAO;;AMiHzB,qBAAqC;EAAE,OAAO,ENvH1B,GAAO;;AMwH3B,sBAAsC;EAAE,OAAO,ENvH1B,GAAO;;AMwH5B,kBAAkC;EAAE,OAAO,ENvE1B,GAAO;;AMwExB;eAC+B;EAAE,OAAO,EN2P1B,GAAO;;AM1PrB;oBACoC;EAAE,OAAO,EN+P1B,GAAO;;AM9P1B;mBACmC;EAAE,OAAO,EN4P1B,GAAO;;AM3PzB,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,mBAAmC;EAAE,OAAO,ENkG1B,GAAO;;AMjGzB;eAC+B;EAAE,OAAO,EN8U1B,GAAO;;AM7UrB;gBACgC;EAAE,OAAO,ENqB1B,GAAO;;AMpBtB;qBACqC;EAAE,OAAO,EN2R1B,GAAO;;AM1R3B,oBAAoC;EAAE,OAAO,ENpF1B,GAAO;;AMqF1B,qBAAqC;EAAE,OAAO,ENnF1B,GAAO;;AMoF3B;eAC+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,kBAAkC;EAAE,OAAO,ENkO1B,GAAO;;AMjOxB,mBAAmC;EAAE,OAAO,ENkU1B,GAAO;;AMjUzB;oBACoC;EAAE,OAAO,EN1G1B,GAAO;;AM2G1B,sBAAsC;EAAE,OAAO,ENgF1B,GAAO;;AM/E5B,mBAAmC;EAAE,OAAO,ENnD1B,GAAO;;AMoDzB,yBAAyC;EAAE,OAAO,ENzG1B,GAAO;;AM0G/B,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,kBAAkC;EAAE,OAAO,ENsU1B,GAAO;;AMrUxB,sBAAsC;EAAE,OAAO,EN+P1B,GAAO;;AM9P5B,mBAAmC;EAAE,OAAO,ENsQ1B,GAAO;;AMrQzB,iBAAiC;EAAE,OAAO,ENvL1B,GAAO;;AMwLvB,iBAAiC;EAAE,OAAO,ENzG1B,GAAO;;AM0GvB,kBAAkC;EAAE,OAAO,ENtF1B,GAAO;;AMuFxB,sBAAsC;EAAE,OAAO,EN3B1B,GAAO;;AM4B5B,qBAAqC;EAAE,OAAO,ENxK1B,GAAO;;AMyK3B,qBAAqC;EAAE,OAAO,ENkC1B,GAAO;;AMjC3B,oBAAoC;EAAE,OAAO,EN3O1B,GAAO;;AM4O1B,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,sBAAsC;EAAE,OAAO,EN/C1B,GAAO;;AMgD5B,eAA+B;EAAE,OAAO,ENpM1B,GAAO;;AMqMrB,mBAAmC;EAAE,OAAO,ENe1B,GAAO;;AMdzB,sBAAsC;EAAE,OAAO,ENgJ1B,GAAO;;AM/I5B,4BAA4C;EAAE,OAAO,EN5O1B,GAAO;;AM6OlC,6BAA6C;EAAE,OAAO,EN5O1B,GAAO;;AM6OnC,0BAA0C;EAAE,OAAO,EN5O1B,GAAO;;AM6OhC,4BAA4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC,qBAAqC;EAAE,OAAO,EN5O1B,GAAO;;AM6O3B,sBAAsC;EAAE,OAAO,EN5O1B,GAAO;;AM6O5B,mBAAmC;EAAE,OAAO,EN5O1B,GAAO;;AM6OzB,qBAAqC;EAAE,OAAO,ENhP1B,GAAO;;AMiP3B,kBAAkC;EAAE,OAAO,ENlG1B,GAAO;;AMmGxB,iBAAiC;EAAE,OAAO,ENuC1B,GAAO;;AMtCvB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB;iBACiC;EAAE,OAAO,ENyF1B,GAAO;;AMxFvB,mBAAmC;EAAE,OAAO,EN9I1B,GAAO;;AM+IzB,qBAAqC;EAAE,OAAO,EN0I1B,GAAO;;AMzI3B,sBAAsC;EAAE,OAAO,EN0I1B,GAAO;;AMzI5B,kBAAkC;EAAE,OAAO,ENgN1B,GAAO;;AM/MxB,iBAAiC;EAAE,OAAO,ENnJ1B,GAAO;;AMoJvB;gBACgC;EAAE,OAAO,ENkJ1B,GAAO;;AMjJtB,qBAAqC;EAAE,OAAO,ENnB1B,GAAO;;AMoB3B,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,wBAAwC;EAAE,OAAO,ENvC1B,GAAO;;AMwC9B,kBAAkC;EAAE,OAAO,EN0L1B,GAAO;;AMzLxB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,gBAAgC;EAAE,OAAO,ENoE1B,GAAO;;AMnEtB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,iBAAiC;EAAE,OAAO,ENrD1B,GAAO;;AMsDvB,yBAAyC;EAAE,OAAO,ENvD1B,GAAO;;AMwD/B,mBAAmC;EAAE,OAAO,ENuO1B,GAAO;;AMtOzB,eAA+B;EAAE,OAAO,ENtJ1B,GAAO;;AMuJrB;oBACoC;EAAE,OAAO,ENqI1B,GAAO;;AMpI1B;;sBAEsC;EAAE,OAAO,ENuM1B,GAAO;;AMtM5B,yBAAyC;EAAE,OAAO,ENkC1B,GAAO;;AMjC/B,eAA+B;EAAE,OAAO,EN5I1B,GAAO;;AM6IrB,oBAAoC;EAAE,OAAO,EN7J1B,GAAO;;AM8J1B;uBACuC;EAAE,OAAO,EN1L1B,GAAO;;AM2L7B,mBAAmC;EAAE,OAAO,EN4G1B,GAAO;;AM3GzB,eAA+B;EAAE,OAAO,ENT1B,GAAO;;AMUrB,sBAAsC;EAAE,OAAO,ENhH1B,GAAO;;AMiH5B,sBAAsC;EAAE,OAAO,EN8M1B,GAAO;;AM7M5B,oBAAoC;EAAE,OAAO,ENyM1B,GAAO;;AMxM1B,iBAAiC;EAAE,OAAO,ENvH1B,GAAO;;AMwHvB,uBAAuC;EAAE,OAAO,ENmG1B,GAAO;;AMlG7B,qBAAqC;EAAE,OAAO,EN8C1B,GAAO;;AM7C3B,2BAA2C;EAAE,OAAO,EN8C1B,GAAO;;AM7CjC,iBAAiC;EAAE,OAAO,ENgJ1B,GAAO;;AM/IvB,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,4BAA4C;EAAE,OAAO,ENjF1B,GAAO;;AMkFlC,iBAAiC;EAAE,OAAO,ENoH1B,GAAO;;AMnHvB,iBAAiC;EAAE,OAAO,ENkC1B,GAAO;;AMjCvB,8BAA8C;EAAE,OAAO,ENlM1B,GAAO;;AMmMpC,+BAA+C;EAAE,OAAO,ENlM1B,GAAO;;AMmMrC,4BAA4C;EAAE,OAAO,ENlM1B,GAAO;;AMmMlC,8BAA8C;EAAE,OAAO,ENtM1B,GAAO;;AMuMpC,gBAAgC;EAAE,OAAO,EN/B1B,GAAO;;AMgCtB,eAA+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,iBAAiC;EAAE,OAAO,EN9S1B,GAAO;;AM+SvB,qBAAqC;EAAE,OAAO,ENmP1B,GAAO;;AMlP3B,mBAAmC;EAAE,OAAO,EN9O1B,GAAO;;AM+OzB,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN4G1B,GAAO;;AM3G3B,sBAAsC;EAAE,OAAO,ENsE1B,GAAO;;AMrE5B,iBAAiC;EAAE,OAAO,EN2M1B,GAAO;;AM1MvB,uBAAuC;EAAE,OAAO,EN6B1B,GAAO;;AM5B7B,yBAAyC;EAAE,OAAO,EN6B1B,GAAO;;AM5B/B,mBAAmC;EAAE,OAAO,ENhB1B,GAAO;;AMiBzB,qBAAqC;EAAE,OAAO,ENlB1B,GAAO;;AMmB3B,uBAAuC;EAAE,OAAO,ENvN1B,GAAO;;AMwN7B,wBAAwC;EAAE,OAAO,ENiD1B,GAAO;;AMhD9B,+BAA+C;EAAE,OAAO,EN3I1B,GAAO;;AM4IrC,uBAAuC;EAAE,OAAO,ENkH1B,GAAO;;AMjH7B,kBAAkC;EAAE,OAAO,EN1L1B,GAAO;;AM2LxB;8BAC8C;EAAE,OAAO,ENjP1B,GAAO;;AMkPpC;4BAC4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC;+BAC+C;EAAE,OAAO,ENnP1B,GAAO;;AMoPrC;cAC8B;EAAE,OAAO,EN7J1B,GAAO;;AM8JpB,cAA8B;EAAE,OAAO,EN/F1B,GAAO;;AMgGpB;cAC8B;EAAE,OAAO,EN4N1B,GAAO;;AM3NpB;cAC8B;EAAE,OAAO,ENvD1B,GAAO;;AMwDpB;;;cAG8B;EAAE,OAAO,ENrD1B,GAAO;;AMsDpB;;cAE8B;EAAE,OAAO,EN8E1B,GAAO;;AM7EpB;cAC8B;EAAE,OAAO,ENtD1B,GAAO;;AMuDpB;cAC8B;EAAE,OAAO,ENzR1B,GAAO;;AM0RpB,eAA+B;EAAE,OAAO,ENzJ1B,GAAO;;AM0JrB,oBAAoC;EAAE,OAAO,EN7I1B,GAAO;;AM8I1B,yBAAyC;EAAE,OAAO,EN2G1B,GAAO;;AM1G/B,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,2BAA2C;EAAE,OAAO,EN2G1B,GAAO;;AM1GjC,2BAA2C;EAAE,OAAO,EN8G1B,GAAO;;AM7GjC,4BAA4C;EAAE,OAAO,EN8G1B,GAAO;;AM7GlC,oBAAoC;EAAE,OAAO,ENgK1B,GAAO;;AM/J1B,sBAAsC;EAAE,OAAO,EN4J1B,GAAO;;AM3J5B,yBAAyC;EAAE,OAAO,ENwO1B,GAAO;;AMvO/B,kBAAkC;EAAE,OAAO,ENqO1B,GAAO;;AMpOxB,eAA+B;EAAE,OAAO,EN+N1B,GAAO;;AM9NrB,sBAAsC;EAAE,OAAO,EN+N1B,GAAO;;AM9N5B,uBAAuC;EAAE,OAAO,ENmO1B,GAAO;;AMlO7B,kBAAkC;EAAE,OAAO,ENxM1B,GAAO;;AMyMxB,yBAAyC;EAAE,OAAO,EN+G1B,GAAO;;AM9G/B,oBAAoC;EAAE,OAAO,ENnF1B,GAAO;;AMoF1B,iBAAiC;EAAE,OAAO,EN/I1B,GAAO;;AMgJvB,cAA8B;EAAE,OAAO,ENhX1B,GAAO;;AMiXpB,oBAAoC;EAAE,OAAO,ENxT1B,GAAO;;AMyT1B,2BAA2C;EAAE,OAAO,ENxT1B,GAAO;;AMyTjC,iBAAiC;EAAE,OAAO,ENyK1B,GAAO;;AMxKvB,wBAAwC;EAAE,OAAO,ENyK1B,GAAO;;AMxK9B,0BAA0C;EAAE,OAAO,ENtD1B,GAAO;;AMuDhC,wBAAwC;EAAE,OAAO,ENpD1B,GAAO;;AMqD9B,0BAA0C;EAAE,OAAO,ENvD1B,GAAO;;AMwDhC,2BAA2C;EAAE,OAAO,ENvD1B,GAAO;;AMwDjC,gBAAgC;EAAE,OAAO,ENxW1B,GAAO;;AMyWtB,kBAAkC;EAAE,OAAO,EN0M1B,GAAO;;AMzMxB,kBAAkC;EAAE,OAAO,ENpX1B,GAAO;;AMqXxB,gBAAgC;EAAE,OAAO,ENpE1B,GAAO;;AMqEtB,mBAAmC;EAAE,OAAO,EN1N1B,GAAO;;AM2NzB,gBAAgC;EAAE,OAAO,ENqE1B,GAAO;;AMpEtB,qBAAqC;EAAE,OAAO,ENtJ1B,GAAO;;AMuJ3B,iBAAiC;EAAE,OAAO,ENuJ1B,GAAO;;AMtJvB,iBAAiC;EAAE,OAAO,EN/L1B,GAAO;;AMgMvB,eAA+B;EAAE,OAAO,EN1D1B,GAAO;;AM2DrB;mBACmC;EAAE,OAAO,ENnI1B,GAAO;;AMoIzB,gBAAgC;EAAE,OAAO,EN2G1B,GAAO;;AM1GtB,iBAAiC;EAAE,OAAO,ENxC1B,GAAO;;AMyCvB,kBAAkC;EAAE,OAAO,ENrX1B,GAAO;;AMsXxB,cAA8B;EAAE,OAAO,ENpU1B,GAAO;;AMqUpB,aAA6B;EAAE,OAAO,ENgL1B,GAAO;;AM/KnB,gBAAgC;EAAE,OAAO,ENqL1B,GAAO;;AMpLtB,iBAAiC;EAAE,OAAO,ENa1B,GAAO;;AMZvB,oBAAoC;EAAE,OAAO,ENrC1B,GAAO;;AMsC1B,yBAAyC;EAAE,OAAO,EN8E1B,GAAO;;AM7E/B,+BAA+C;EAAE,OAAO,ENtX1B,GAAO;;AMuXrC,8BAA8C;EAAE,OAAO,ENxX1B,GAAO;;AMyXpC;8BAC8C;EAAE,OAAO,EN3T1B,GAAO;;AM4TpC,uBAAuC;EAAE,OAAO,ENjP1B,GAAO;;AMkP7B,qBAAqC;EAAE,OAAO,EN+K1B,GAAO;;AM9K3B,uBAAuC;EAAE,OAAO,ENmK1B,GAAO;;AMlK7B;cAC8B;EAAE,OAAO,ENoI1B,GAAO;;AMnIpB,wBAAwC;EAAE,OAAO,ENjB1B,GAAO;;AMkB9B,wBAAwC;EAAE,OAAO,EN6D1B,GAAO;;AM5D9B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,0BAA0C;EAAE,OAAO,EN7O1B,GAAO;;AM8OhC,oBAAoC;EAAE,OAAO,EN2K1B,GAAO;;AM1K1B,iBAAiC;EAAE,OAAO,ENvD1B,GAAO;;AMwDvB;;qBAEqC;EAAE,OAAO,ENsI1B,GAAO;;AMrI3B;yBACyC;EAAE,OAAO,ENjK1B,GAAO;;AMkK/B,gBAAgC;EAAE,OAAO,ENwK1B,GAAO;;AMvKtB,iBAAiC;EAAE,OAAO,ENvK1B,GAAO;;AMwKvB,iBAAiC;EAAE,OAAO,ENhB1B,GAAO;;AMiBvB,wBAAwC;EAAE,OAAO,ENhB1B,GAAO;;AMiB9B,6BAA6C;EAAE,OAAO,ENsE1B,GAAO;;AMrEnC,sBAAsC;EAAE,OAAO,ENoE1B,GAAO;;AMnE5B,oBAAoC;EAAE,OAAO,EN7Q1B,GAAO;;AM8Q1B,eAA+B;EAAE,OAAO,EN1Q1B,GAAO;;AM2QrB,qBAAqC;EAAE,OAAO,ENjD1B,GAAO;;AMkD3B,yBAAyC;EAAE,OAAO,ENjD1B,GAAO;;AMkD/B,iBAAiC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQvB,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,mBAAmC;EAAE,OAAO,ENzI1B,GAAO;;AM0IzB,cAA8B;EAAE,OAAO,EN9O1B,GAAO;;AM+OpB,mBAAmC;EAAE,OAAO,EN3W1B,GAAO;;AM4WzB,gBAAgC;EAAE,OAAO,EN9T1B,GAAO;;AM+TtB,cAA8B;EAAE,OAAO,ENnE1B,GAAO;;AMoEpB,gBAAgC;EAAE,OAAO,ENoC1B,GAAO;;AMnCtB,eAA+B;EAAE,OAAO,ENjS1B,GAAO;;AMkSrB,gBAAgC;EAAE,OAAO,ENjS1B,GAAO;;AMkStB,kBAAkC;EAAE,OAAO,ENtY1B,GAAO;;AMuYxB,yBAAyC;EAAE,OAAO,ENtY1B,GAAO;;AMuY/B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,uBAAuC;EAAE,OAAO,EN2C1B,GAAO;;AM1C7B,kBAAkC;EAAE,OAAO,ENvC1B,GAAO;;AMwCxB;cAC8B;EAAE,OAAO,EN3W1B,GAAO;;AM4WpB;eAC+B;EAAE,OAAO,EN2D1B,GAAO;;AM1DrB,eAA+B;EAAE,OAAO,ENuF1B,GAAO;;AMtFrB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,qBAAqC;EAAE,OAAO,ENpS1B,GAAO;;AMqS3B,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,mBAAmC;EAAE,OAAO,EN1S1B,GAAO;;AM2SzB,qBAAqC;EAAE,OAAO,ENxP1B,GAAO;;AMyP3B,sBAAsC;EAAE,OAAO,ENjP1B,GAAO;;AMkP5B,uBAAuC;EAAE,OAAO,EN9P1B,GAAO;;AM+P7B,4BAA4C;EAAE,OAAO,ENxP1B,GAAO;;AMyPlC;;uBAEuC;EAAE,OAAO,ENjQ1B,GAAO;;AMkQ7B;yBACyC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQ/B;uBACuC;EAAE,OAAO,ENxQ1B,GAAO;;AMyQ7B;uBACuC;EAAE,OAAO,EN7P1B,GAAO;;AM8P7B,sBAAsC;EAAE,OAAO,EN1Q1B,GAAO;;AM2Q5B,eAA+B;EAAE,OAAO,ENsG1B,GAAO;;AMrGrB,kBAAkC;EAAE,OAAO,ENlV1B,GAAO;;AMmVxB,mBAAmC;EAAE,OAAO,ENnL1B,GAAO;;AMoLzB;;;;oBAIoC;EAAE,OAAO,ENxK1B,GAAO;;AMyK1B,yBAAyC;EAAE,OAAO,ENpW1B,GAAO;;AMqW/B;gBACgC;EAAE,OAAO,EN1E1B,GAAO;;AM2EtB;iBACiC;EAAE,OAAO,ENpT1B,GAAO;;AMqTvB,qBAAqC;EAAE,OAAO,EN1O1B,GAAO;;AM2O3B,cAA8B;EAAE,OAAO,EN5O1B,GAAO;;AM6OpB,sBAAsC;EAAE,OAAO,EN7N1B,GAAO;;AM8N5B,wBAAwC;EAAE,OAAO,ENwB1B,GAAO;;AMvB9B,aAA6B;EAAE,OAAO,ENzF1B,GAAO;;AM0FnB;iBACiC;EAAE,OAAO,EN2F1B,GAAO;;AM1FvB;sBACsC;EAAE,OAAO,EN9H1B,GAAO;;AM+H5B;wBACwC;EAAE,OAAO,EN/H1B,GAAO;;AMgI9B,kBAAkC;EAAE,OAAO,EN3N1B,GAAO;;AM4NxB;sBACsC;EAAE,OAAO,ENrX1B,GAAO;;AMsX5B,iBAAiC;EAAE,OAAO,ENnO1B,GAAO;;AMoOvB,oBAAoC;EAAE,OAAO,ENlI1B,GAAO;;AMmI1B,kBAAkC;EAAE,OAAO,EN1C1B,GAAO;;AM2CxB,oBAAoC;EAAE,OAAO,EN7D1B,GAAO;;AM8D1B,2BAA2C;EAAE,OAAO,EN7D1B,GAAO;;AM8DjC,eAA+B;EAAE,OAAO,ENpb1B,GAAO;;AMqbrB;mBACmC;EAAE,OAAO,ENzQ1B,GAAO;;AM0QzB,cAA8B;EAAE,OAAO,ENsC1B,GAAO;;AMrCpB,qBAAqC;EAAE,OAAO,EN/b1B,GAAO;;AMgc3B,eAA+B;EAAE,OAAO,ENrH1B,GAAO;;AMsHrB,qBAAqC;EAAE,OAAO,ENlD1B,GAAO;;AMmD3B,iBAAiC;EAAE,OAAO,ENsC1B,GAAO;;AMrCvB,eAA+B;EAAE,OAAO,ENiF1B,GAAO;;AMhFrB,sBAAsC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ5B,eAA+B;EAAE,OAAO,ENuE1B,GAAO;;AMtErB,qBAAqC;EAAE,OAAO,ENjb1B,GAAO;;AMkb3B,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,wBAAwC;EAAE,OAAO,ENhQ1B,GAAO;;AMiQ9B,kBAAkC;EAAE,OAAO,EN9Z1B,GAAO;;AM+ZxB,wBAAwC;EAAE,OAAO,ENla1B,GAAO;;AMma9B,sBAAsC;EAAE,OAAO,ENpa1B,GAAO;;AMqa5B,kBAAkC;EAAE,OAAO,ENta1B,GAAO;;AMuaxB,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,qBAAqC;EAAE,OAAO,ENld1B,GAAO;;AMmd3B,uBAAuC;EAAE,OAAO,ENld1B,GAAO;;AMmd7B,gBAAgC;EAAE,OAAO,ENY1B,GAAO;;AMXtB,oBAAoC;EAAE,OAAO,EN3X1B,GAAO;;AM4X1B,aAA6B;EAAE,OAAO,ENre1B,GAAO;;AMsenB,qBAAqC;EAAE,OAAO,ENjV1B,GAAO;;AMkV3B,sBAAsC;EAAE,OAAO,ENpK1B,GAAO;;AMqK5B,wBAAwC;EAAE,OAAO,ENrd1B,GAAO;;AMsd9B,qBAAqC;EAAE,OAAO,EN3f1B,GAAO;;AM4f3B,oBAAoC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ1B,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,iBAAiC;EAAE,OAAO,EN1O1B,GAAO;;AM2OvB,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,qBAAqC;EAAE,OAAO,ENN1B,GAAO;;AMO3B,oBAAoC;EAAE,OAAO,ENN1B,GAAO;;AMO1B,kBAAkC;EAAE,OAAO,EN/d1B,GAAO;;AMgexB,cAA8B;EAAE,OAAO,EN7c1B,GAAO;;AM8cpB,kBAAkC;EAAE,OAAO,EN1P1B,GAAO;;AM2PxB,oBAAoC;EAAE,OAAO,ENhhB1B,GAAO;;AMihB1B,aAA6B;EAAE,OAAO,EN7b1B,GAAO;;AM8bnB;;cAE8B;EAAE,OAAO,ENxQ1B,GAAO;;AMyQpB,mBAAmC;EAAE,OAAO,EN7M1B,GAAO;;AM8MzB,qBAAqC;EAAE,OAAO,ENpd1B,GAAO;;AMqd3B,yBAAyC;EAAE,OAAO,ENnZ1B,GAAO;;AMoZ/B,mBAAmC;EAAE,OAAO,ENxY1B,GAAO;;AMyYzB,mBAAmC;EAAE,OAAO,EN1T1B,GAAO;;AM2TzB,kBAAkC;EAAE,OAAO,ENxP1B,GAAO;;AMyPxB,iBAAiC;EAAE,OAAO,ENrH1B,GAAO;;AMsHvB,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,sBAAsC;EAAE,OAAO,ENrG1B,GAAO;;AMsG5B,mBAAmC;EAAE,OAAO,ENpG1B,GAAO;;AMqGzB,oBAAoC;EAAE,OAAO,EN5c1B,GAAO;;AM6c1B,0BAA0C;EAAE,OAAO,EN9c1B,GAAO;;AM+chC,kBAAkC;EAAE,OAAO,EN3Y1B,GAAO;;AM4YxB,eAA+B;EAAE,OAAO,ENhH1B,GAAO;;AMiHrB,sBAAsC;EAAE,OAAO,ENI1B,GAAO;;AMH5B,qBAAqC;EAAE,OAAO,EN5M1B,GAAO;;AM6M3B,sBAAsC;EAAE,OAAO,ENpE1B,GAAO;;AMqE5B,oBAAoC;EAAE,OAAO,ENhS1B,GAAO;;AMiS1B,gBAAgC;EAAE,OAAO,ENG1B,GAAO;;AMFtB,eAA+B;EAAE,OAAO,ENtO1B,GAAO;;AMuOrB,kBAAkC;EAAE,OAAO,EN7N1B,GAAO;;AM8NxB,sBAAsC;EAAE,OAAO,ENhC1B,GAAO;;AMiC5B,0BAA0C;EAAE,OAAO,ENhC1B,GAAO;;AMiChC,uBAAuC;EAAE,OAAO,END1B,GAAO;;AME7B,sBAAsC;EAAE,OAAO,EN1O1B,GAAO;;AM2O5B,qBAAqC;EAAE,OAAO,ENF1B,GAAO;;AMG3B,sBAAsC;EAAE,OAAO,EN3O1B,GAAO;;AM4O5B,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,wBAAwC;EAAE,OAAO,EN5O1B,GAAO;;AM6O9B,iBAAiC;EAAE,OAAO,ENvN1B,GAAO;;AMwNvB,4BAA4C;EAAE,OAAO,EN9X1B,GAAO;;AM+XlC,sBAAsC;EAAE,OAAO,ENhM1B,GAAO;;AMiM5B,mBAAmC;EAAE,OAAO,ENI1B,GAAO;;AMHzB,iBAAiC;EAAE,OAAO,EN7I1B,GAAO;;AM8IvB,oBAAoC;EAAE,OAAO,ENjB1B,GAAO;;AMkB1B,qBAAqC;EAAE,OAAO,ENhB1B,GAAO;;AMiB3B;cAC8B;EAAE,OAAO,ENphB1B,GAAO;;AMqhBpB,kBAAkC;EAAE,OAAO,ENd1B,GAAO;;AMexB,gBAAgC;EAAE,OAAO,ENnD1B,GAAO;;AMoDtB,iBAAiC;EAAE,OAAO,ENvF1B,GAAO;;AMwFvB,iBAAiC;EAAE,OAAO,ENrP1B,GAAO", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], +"names": [], +"file": "font-awesome.css" +} diff --git a/public/theme/font-awesome/css/font-awesome.min.css b/public/theme/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000..9b27f8e --- /dev/null +++ b/public/theme/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/public/theme/font-awesome/fonts/FontAwesome.otf b/public/theme/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/public/theme/font-awesome/fonts/FontAwesome.otf differ diff --git a/public/theme/font-awesome/fonts/fontawesome-webfont.eot b/public/theme/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/public/theme/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/public/theme/font-awesome/fonts/fontawesome-webfont.svg b/public/theme/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/public/theme/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/theme/font-awesome/fonts/fontawesome-webfont.ttf b/public/theme/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/public/theme/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/public/theme/font-awesome/fonts/fontawesome-webfont.woff b/public/theme/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/public/theme/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/public/theme/font-awesome/fonts/fontawesome-webfont.woff2 b/public/theme/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/public/theme/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/public/theme/font-awesome/less/animated.less b/public/theme/font-awesome/less/animated.less new file mode 100644 index 0000000..66ad52a --- /dev/null +++ b/public/theme/font-awesome/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/public/theme/font-awesome/less/bordered-pulled.less b/public/theme/font-awesome/less/bordered-pulled.less new file mode 100644 index 0000000..f1c8ad7 --- /dev/null +++ b/public/theme/font-awesome/less/bordered-pulled.less @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/public/theme/font-awesome/less/core.less b/public/theme/font-awesome/less/core.less new file mode 100644 index 0000000..c577ac8 --- /dev/null +++ b/public/theme/font-awesome/less/core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/public/theme/font-awesome/less/fixed-width.less b/public/theme/font-awesome/less/fixed-width.less new file mode 100644 index 0000000..110289f --- /dev/null +++ b/public/theme/font-awesome/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/public/theme/font-awesome/less/font-awesome.less b/public/theme/font-awesome/less/font-awesome.less new file mode 100644 index 0000000..c44e5f4 --- /dev/null +++ b/public/theme/font-awesome/less/font-awesome.less @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; +@import "screen-reader.less"; diff --git a/public/theme/font-awesome/less/icons.less b/public/theme/font-awesome/less/icons.less new file mode 100644 index 0000000..ba21b22 --- /dev/null +++ b/public/theme/font-awesome/less/icons.less @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-feed:before, +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } diff --git a/public/theme/font-awesome/less/larger.less b/public/theme/font-awesome/less/larger.less new file mode 100644 index 0000000..c9d6467 --- /dev/null +++ b/public/theme/font-awesome/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/public/theme/font-awesome/less/list.less b/public/theme/font-awesome/less/list.less new file mode 100644 index 0000000..0b44038 --- /dev/null +++ b/public/theme/font-awesome/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/public/theme/font-awesome/less/mixins.less b/public/theme/font-awesome/less/mixins.less new file mode 100644 index 0000000..beef231 --- /dev/null +++ b/public/theme/font-awesome/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/public/theme/font-awesome/less/path.less b/public/theme/font-awesome/less/path.less new file mode 100644 index 0000000..835be41 --- /dev/null +++ b/public/theme/font-awesome/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/public/theme/font-awesome/less/rotated-flipped.less b/public/theme/font-awesome/less/rotated-flipped.less new file mode 100644 index 0000000..f6ba814 --- /dev/null +++ b/public/theme/font-awesome/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/public/theme/font-awesome/less/screen-reader.less b/public/theme/font-awesome/less/screen-reader.less new file mode 100644 index 0000000..11c1881 --- /dev/null +++ b/public/theme/font-awesome/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/public/theme/font-awesome/less/stacked.less b/public/theme/font-awesome/less/stacked.less new file mode 100644 index 0000000..fc53fb0 --- /dev/null +++ b/public/theme/font-awesome/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/public/theme/font-awesome/less/variables.less b/public/theme/font-awesome/less/variables.less new file mode 100644 index 0000000..2b33819 --- /dev/null +++ b/public/theme/font-awesome/less/variables.less @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.6.3"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-500px: "\f26e"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; +@fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-safari: "\f267"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-television: "\f26c"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; +@fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/public/theme/font-awesome/scss/_animated.scss b/public/theme/font-awesome/scss/_animated.scss new file mode 100644 index 0000000..8a020db --- /dev/null +++ b/public/theme/font-awesome/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/public/theme/font-awesome/scss/_bordered-pulled.scss b/public/theme/font-awesome/scss/_bordered-pulled.scss new file mode 100644 index 0000000..d4b85a0 --- /dev/null +++ b/public/theme/font-awesome/scss/_bordered-pulled.scss @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/public/theme/font-awesome/scss/_core.scss b/public/theme/font-awesome/scss/_core.scss new file mode 100644 index 0000000..7425ef8 --- /dev/null +++ b/public/theme/font-awesome/scss/_core.scss @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/public/theme/font-awesome/scss/_fixed-width.scss b/public/theme/font-awesome/scss/_fixed-width.scss new file mode 100644 index 0000000..b221c98 --- /dev/null +++ b/public/theme/font-awesome/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/public/theme/font-awesome/scss/_icons.scss b/public/theme/font-awesome/scss/_icons.scss new file mode 100644 index 0000000..2944344 --- /dev/null +++ b/public/theme/font-awesome/scss/_icons.scss @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-feed:before, +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } diff --git a/public/theme/font-awesome/scss/_larger.scss b/public/theme/font-awesome/scss/_larger.scss new file mode 100644 index 0000000..41e9a81 --- /dev/null +++ b/public/theme/font-awesome/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/public/theme/font-awesome/scss/_list.scss b/public/theme/font-awesome/scss/_list.scss new file mode 100644 index 0000000..7d1e4d5 --- /dev/null +++ b/public/theme/font-awesome/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/public/theme/font-awesome/scss/_mixins.scss b/public/theme/font-awesome/scss/_mixins.scss new file mode 100644 index 0000000..c3bbd57 --- /dev/null +++ b/public/theme/font-awesome/scss/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/public/theme/font-awesome/scss/_path.scss b/public/theme/font-awesome/scss/_path.scss new file mode 100644 index 0000000..bb457c2 --- /dev/null +++ b/public/theme/font-awesome/scss/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/public/theme/font-awesome/scss/_rotated-flipped.scss b/public/theme/font-awesome/scss/_rotated-flipped.scss new file mode 100644 index 0000000..a3558fd --- /dev/null +++ b/public/theme/font-awesome/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/public/theme/font-awesome/scss/_screen-reader.scss b/public/theme/font-awesome/scss/_screen-reader.scss new file mode 100644 index 0000000..637426f --- /dev/null +++ b/public/theme/font-awesome/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/public/theme/font-awesome/scss/_stacked.scss b/public/theme/font-awesome/scss/_stacked.scss new file mode 100644 index 0000000..aef7403 --- /dev/null +++ b/public/theme/font-awesome/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/public/theme/font-awesome/scss/_variables.scss b/public/theme/font-awesome/scss/_variables.scss new file mode 100644 index 0000000..a5a89ef --- /dev/null +++ b/public/theme/font-awesome/scss/_variables.scss @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.6.3" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-500px: "\f26e"; +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; +$fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; +$fa-var-ban: "\f05e"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; +$fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; +$fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; +$fa-var-edit: "\f044"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; +$fa-var-eraser: "\f12d"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; +$fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map: "\f279"; +$fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; +$fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f2ae"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-safari: "\f267"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; +$fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-television: "\f26c"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; +$fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpforms: "\f298"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; +$fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/public/theme/font-awesome/scss/font-awesome.scss b/public/theme/font-awesome/scss/font-awesome.scss new file mode 100644 index 0000000..2308b14 --- /dev/null +++ b/public/theme/font-awesome/scss/font-awesome.scss @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; +@import "screen-reader"; diff --git a/public/theme/fullcalendar/.bower.json b/public/theme/fullcalendar/.bower.json new file mode 100644 index 0000000..3faadc7 --- /dev/null +++ b/public/theme/fullcalendar/.bower.json @@ -0,0 +1,60 @@ +{ + "name": "fullcalendar", + "title": "FullCalendar", + "version": "2.7.3", + "description": "Full-sized drag & drop event calendar", + "keywords": [ + "calendar", + "event", + "full-sized", + "jquery-plugin" + ], + "homepage": "http://fullcalendar.io/", + "bugs": "http://fullcalendar.io/wiki/Reporting-Bugs/", + "repository": { + "type": "git", + "url": "https://github.com/fullcalendar/fullcalendar.git" + }, + "license": "MIT", + "author": { + "name": "Adam Shaw", + "email": "arshaw@arshaw.com", + "url": "http://arshaw.com/" + }, + "copyright": "2016 Adam Shaw", + "dependencies": { + "jquery": ">=1.7.1", + "moment": ">=2.5.0" + }, + "devDependencies": { + "jquery-ui": ">=1.11.1", + "jquery-simulate": "~1.0.1", + "jasmine-jquery": "~2.0.3", + "jasmine-fixture": "~1.2.0", + "moment-timezone": "~0.2.1", + "bootstrap": "~3.2.0", + "jquery-mockjax": "~2.1.1" + }, + "main": [ + "dist/fullcalendar.js", + "dist/fullcalendar.css" + ], + "ignore": [ + "*", + "**/.*", + "!/dist/**", + "!/README.*", + "!/LICENSE.*", + "!/CHANGELOG.*", + "!/CONTRIBUTING.*" + ], + "_release": "2.7.3", + "_resolution": { + "type": "version", + "tag": "v2.7.3", + "commit": "87dcd3f73c21d91c296830c7589b77c4fc8f386e" + }, + "_source": "https://github.com/arshaw/fullcalendar.git", + "_target": "^2.6.1", + "_originalSource": "fullcalendar" +} \ No newline at end of file diff --git a/public/theme/fullcalendar/CHANGELOG.md b/public/theme/fullcalendar/CHANGELOG.md new file mode 100644 index 0000000..32559a8 --- /dev/null +++ b/public/theme/fullcalendar/CHANGELOG.md @@ -0,0 +1,964 @@ + +v2.7.3 (2016-06-02) +------------------- + +internal enhancements that plugins can benefit from: +- EventEmitter not correctly working with stopListeningTo +- normalizeEvent hook for manipulating event data + + +v2.7.2 (2016-05-20) +------------------- + +- fixed desktops/laptops with touch support not accepting mouse events for + dayClick/dragging/resizing (#3154, #3149) +- fixed dayClick incorrectly triggered on touch scroll (#3152) +- fixed touch event dragging wrongfully beginning upon scrolling document (#3160) +- fixed minified JS still contained comments +- UI change: mouse users must hover over an event to reveal its resizers + + +v2.7.1 (2016-05-01) +------------------- + +- dayClick not firing on touch devices (#3138) +- icons for prev/next not working in MS Edge (#2852) +- fix bad languages troubles with firewalls (#3133, #3132) +- update all dev dependencies (#3145, #3010, #2901, #251) +- git-ignore npm debug logs (#3011) +- misc automated test updates (#3139, #3147) +- Google Calendar htmlLink not always defined (#2844) + + +v2.7.0 (2016-04-23) +------------------- + +touch device support (#994): + - smoother scrolling + - interactions initiated via "long press": + - event drag-n-drop + - event resize + - time-range selecting + - `longPressDelay` + + +v2.6.1 (2016-02-17) +------------------- + +- make `nowIndicator` positioning refresh on window resize + + +v2.6.0 (2016-01-07) +------------------- + +- current time indicator (#414) +- bundled with most recent version of moment (2.11.0) +- UMD wrapper around lang files now handles commonjs (#2918) +- fix bug where external event dragging would not respect eventOverlap +- fix bug where external event dropping would not render the whole-day highlight + + +v2.5.0 (2015-11-30) +------------------- + +- internal timezone refactor. fixes #2396, #2900, #2945, #2711 +- internal "grid" system refactor. improved API for plugins. + + +v2.4.0 (2015-08-16) +------------------- + +- add new buttons to the header via `customButtons` ([225]) +- control stacking order of events via `eventOrder` ([364]) +- control frequency of slot text via `slotLabelInterval` ([946]) +- `displayEventTime` ([1904]) +- `on` and `off` methods ([1910]) +- renamed `axisFormat` to `slotLabelFormat` + +[225]: https://code.google.com/p/fullcalendar/issues/detail?id=225 +[364]: https://code.google.com/p/fullcalendar/issues/detail?id=364 +[946]: https://code.google.com/p/fullcalendar/issues/detail?id=946 +[1904]: https://code.google.com/p/fullcalendar/issues/detail?id=1904 +[1910]: https://code.google.com/p/fullcalendar/issues/detail?id=1910 + + +v2.3.2 (2015-06-14) +------------------- + +- minor code adjustment in preparation for plugins + + +v2.3.1 (2015-03-08) +------------------- + +- Fix week view column title for en-gb ([PR220]) +- Publish to NPM ([2447]) +- Detangle bower from npm package ([PR179]) + +[PR220]: https://github.com/arshaw/fullcalendar/pull/220 +[2447]: https://code.google.com/p/fullcalendar/issues/detail?id=2447 +[PR179]: https://github.com/arshaw/fullcalendar/pull/179 + + +v2.3.0 (2015-02-21) +------------------- + +- internal refactoring in preparation for other views +- businessHours now renders on whole-days in addition to timed areas +- events in "more" popover not sorted by time ([2385]) +- avoid using moment's deprecated zone method ([2443]) +- destroying the calendar sometimes causes all window resize handlers to be unbound ([2432]) +- multiple calendars on one page, can't accept external elements after navigating ([2433]) +- accept external events from jqui sortable ([1698]) +- external jqui drop processed before reverting ([1661]) +- IE8 fix: month view renders incorrectly ([2428]) +- IE8 fix: eventLimit:true wouldn't activate "more" link ([2330]) +- IE8 fix: dragging an event with an href +- IE8 fix: invisible element while dragging agenda view events +- IE8 fix: erratic external element dragging + +[2385]: https://code.google.com/p/fullcalendar/issues/detail?id=2385 +[2443]: https://code.google.com/p/fullcalendar/issues/detail?id=2443 +[2432]: https://code.google.com/p/fullcalendar/issues/detail?id=2432 +[2433]: https://code.google.com/p/fullcalendar/issues/detail?id=2433 +[1698]: https://code.google.com/p/fullcalendar/issues/detail?id=1698 +[1661]: https://code.google.com/p/fullcalendar/issues/detail?id=1661 +[2428]: https://code.google.com/p/fullcalendar/issues/detail?id=2428 +[2330]: https://code.google.com/p/fullcalendar/issues/detail?id=2330 + + +v2.2.7 (2015-02-10) +------------------- + +- view.title wasn't defined in viewRender callback ([2407]) +- FullCalendar versions >= 2.2.5 brokenness with Moment versions <= 2.8.3 ([2417]) +- Support Bokmal Norwegian language specifically ([2427]) + +[2407]: https://code.google.com/p/fullcalendar/issues/detail?id=2407 +[2417]: https://code.google.com/p/fullcalendar/issues/detail?id=2417 +[2427]: https://code.google.com/p/fullcalendar/issues/detail?id=2427 + + +v2.2.6 (2015-01-11) +------------------- + +- Compatibility with Moment v2.9. Was breaking GCal plugin ([2408]) +- View object's `title` property mistakenly omitted ([2407]) +- Single-day views with hiddens days could cause prev/next misbehavior ([2406]) +- Don't let the current date ever be a hidden day (solves [2395]) +- Hebrew locale ([2157]) + +[2408]: https://code.google.com/p/fullcalendar/issues/detail?id=2408 +[2407]: https://code.google.com/p/fullcalendar/issues/detail?id=2407 +[2406]: https://code.google.com/p/fullcalendar/issues/detail?id=2406 +[2395]: https://code.google.com/p/fullcalendar/issues/detail?id=2395 +[2157]: https://code.google.com/p/fullcalendar/issues/detail?id=2157 + + +v2.2.5 (2014-12-30) +------------------- + +- `buttonText` specified for custom views via the `views` option + - bugfix: wrong default value, couldn't override default + - feature: default value taken from locale + + +v2.2.4 (2014-12-29) +------------------- + +- Arbitrary durations for basic/agenda views with the `views` option ([692]) +- Specify view-specific options using the `views` option. fixes [2283] +- Deprecate view-option-hashes +- Formalize and expose View API ([1055]) +- updateEvent method, more intuitive behavior. fixes [2194] + +[692]: https://code.google.com/p/fullcalendar/issues/detail?id=692 +[2283]: https://code.google.com/p/fullcalendar/issues/detail?id=2283 +[1055]: https://code.google.com/p/fullcalendar/issues/detail?id=1055 +[2194]: https://code.google.com/p/fullcalendar/issues/detail?id=2194 + + +v2.2.3 (2014-11-26) +------------------- + +- removeEventSource with Google Calendar object source, would not remove ([2368]) +- Events with invalid end dates are still accepted and rendered ([2350], [2237], [2296]) +- Bug when rendering business hours and navigating away from original view ([2365]) +- Links to Google Calendar events will use current timezone ([2122]) +- Google Calendar plugin works with timezone names that have spaces +- Google Calendar plugin accepts person email addresses as calendar IDs +- Internally use numeric sort instead of alphanumeric sort ([2370]) + +[2368]: https://code.google.com/p/fullcalendar/issues/detail?id=2368 +[2350]: https://code.google.com/p/fullcalendar/issues/detail?id=2350 +[2237]: https://code.google.com/p/fullcalendar/issues/detail?id=2237 +[2296]: https://code.google.com/p/fullcalendar/issues/detail?id=2296 +[2365]: https://code.google.com/p/fullcalendar/issues/detail?id=2365 +[2122]: https://code.google.com/p/fullcalendar/issues/detail?id=2122 +[2370]: https://code.google.com/p/fullcalendar/issues/detail?id=2370 + + +v2.2.2 (2014-11-19) +------------------- + +- Fixes to Google Calendar API V3 code + - wouldn't recognize a lone-string Google Calendar ID if periods before the @ symbol + - removeEventSource wouldn't work when given a Google Calendar ID + + +v2.2.1 (2014-11-19) +------------------- + +- Migrate Google Calendar plugin to use V3 of the API ([1526]) + +[1526]: https://code.google.com/p/fullcalendar/issues/detail?id=1526 + + +v2.2.0 (2014-11-14) +------------------- + +- Background events. Event object's `rendering` property ([144], [1286]) +- `businessHours` option ([144]) +- Controlling where events can be dragged/resized and selections can go ([396], [1286], [2253]) + - `eventOverlap`, `selectOverlap`, and similar + - `eventConstraint`, `selectConstraint`, and similar +- Improvements to dragging and dropping external events ([2004]) + - Associating with real event data. used with `eventReceive` + - Associating a `duration` +- Performance boost for moment creation + - Be aware, FullCalendar-specific methods now attached directly to global moment.fn + - Helps with [issue 2259][2259] +- Reintroduced forgotten `dropAccept` option ([2312]) + +[144]: https://code.google.com/p/fullcalendar/issues/detail?id=144 +[396]: https://code.google.com/p/fullcalendar/issues/detail?id=396 +[1286]: https://code.google.com/p/fullcalendar/issues/detail?id=1286 +[2004]: https://code.google.com/p/fullcalendar/issues/detail?id=2004 +[2253]: https://code.google.com/p/fullcalendar/issues/detail?id=2253 +[2259]: https://code.google.com/p/fullcalendar/issues/detail?id=2259 +[2312]: https://code.google.com/p/fullcalendar/issues/detail?id=2312 + + +v2.1.1 (2014-08-29) +------------------- + +- removeEventSource not working with array ([2203]) +- mouseout not triggered after mouseover+updateEvent ([829]) +- agenda event's render with no href, not clickable ([2263]) + +[2203]: https://code.google.com/p/fullcalendar/issues/detail?id=2203 +[829]: https://code.google.com/p/fullcalendar/issues/detail?id=829 +[2263]: https://code.google.com/p/fullcalendar/issues/detail?id=2263 + + +v2.1.0 (2014-08-25) +------------------- + +Large code refactor with better OOP, better code reuse, and more comments. +**No more reliance on jQuery UI** for event dragging, resizing, or anything else. + +Significant changes to HTML/CSS skeleton: +- Leverages tables for liquid rendering of days and events. No costly manual repositioning ([809]) +- **Backwards-incompatibilities**: + - **Many classNames have changed. Custom CSS will likely need to be adjusted.** + - IE7 definitely not supported anymore + - In `eventRender` callback, `element` will not be attached to DOM yet + - Events are styled to be one line by default ([1992]). Can be undone through custom CSS, + but not recommended (might get gaps [like this][111] in certain situations). + +A "more..." link when there are too many events on a day ([304]). Works with month and basic views +as well as the all-day section of the agenda views. New options: +- `eventLimit`. a number or `true` +- `eventLimitClick`. the `"popover`" value will reveal all events in a raised panel (the default) +- `eventLimitText` +- `dayPopoverFormat` + +Changes related to height and scrollbars: +- `aspectRatio`/`height`/`contentHeight` values will be honored *no matter what* + - If too many events causing too much vertical space, scrollbars will be used ([728]). + This is default behavior for month view (**backwards-incompatibility**) + - If too few slots in agenda view, view will stretch to be the correct height ([2196]) +- `'auto'` value for `height`/`contentHeight` options. If content is too tall, the view will + vertically stretch to accomodate and no scrollbars will be used ([521]). +- Tall weeks in month view will borrow height from other weeks ([243]) +- Automatically scroll the view then dragging/resizing an event ([1025], [2078]) +- New `fixedWeekCount` option to determines the number of weeks in month view + - Supersedes `weekMode` (**deprecated**). Instead, use a combination of `fixedWeekCount` and + one of the height options, possibly with an `'auto'` value + +Much nicer, glitch-free rendering of calendar *for printers* ([35]). Things you might not expect: +- Buttons will become hidden +- Agenda views display a flat list of events where the time slots would be + +Other issues resolved along the way: +- Space on right side of agenda events configurable through CSS ([204]) +- Problem with window resize ([259]) +- Events sorting stays consistent across weeks ([510]) +- Agenda's columns misaligned on wide screens ([511]) +- Run `selectHelper` through `eventRender` callbacks ([629]) +- Keyboard access, tabbing ([637]) +- Run resizing events through `eventRender` ([714]) +- Resize an event to a different day in agenda views ([736]) +- Allow selection across days in agenda views ([778]) +- Mouseenter delegated event not working on event elements ([936]) +- Agenda event dragging, snapping to different columns is erratic ([1101]) +- Android browser cuts off Day view at 8 PM with no scroll bar ([1203]) +- Don't fire `eventMouseover`/`eventMouseout` while dragging/resizing ([1297]) +- Customize the resize handle text ("=") ([1326]) +- If agenda event is too short, don't overwrite `.fc-event-time` ([1700]) +- Zooming calendar causes events to misalign ([1996]) +- Event destroy callback on event removal ([2017]) +- Agenda views, when RTL, should have axis on right ([2132]) +- Make header buttons more accessibile ([2151]) +- daySelectionMousedown should interpret OSX ctrl+click as a right mouse click ([2169]) +- Best way to display time text on multi-day events *with times* ([2172]) +- Eliminate table use for header layout ([2186]) +- Event delegation used for event-related callbacks (like `eventClick`). Speedier. + +[35]: https://code.google.com/p/fullcalendar/issues/detail?id=35 +[204]: https://code.google.com/p/fullcalendar/issues/detail?id=204 +[243]: https://code.google.com/p/fullcalendar/issues/detail?id=243 +[259]: https://code.google.com/p/fullcalendar/issues/detail?id=259 +[304]: https://code.google.com/p/fullcalendar/issues/detail?id=304 +[510]: https://code.google.com/p/fullcalendar/issues/detail?id=510 +[511]: https://code.google.com/p/fullcalendar/issues/detail?id=511 +[521]: https://code.google.com/p/fullcalendar/issues/detail?id=521 +[629]: https://code.google.com/p/fullcalendar/issues/detail?id=629 +[637]: https://code.google.com/p/fullcalendar/issues/detail?id=637 +[714]: https://code.google.com/p/fullcalendar/issues/detail?id=714 +[728]: https://code.google.com/p/fullcalendar/issues/detail?id=728 +[736]: https://code.google.com/p/fullcalendar/issues/detail?id=736 +[778]: https://code.google.com/p/fullcalendar/issues/detail?id=778 +[809]: https://code.google.com/p/fullcalendar/issues/detail?id=809 +[936]: https://code.google.com/p/fullcalendar/issues/detail?id=936 +[1025]: https://code.google.com/p/fullcalendar/issues/detail?id=1025 +[1101]: https://code.google.com/p/fullcalendar/issues/detail?id=1101 +[1203]: https://code.google.com/p/fullcalendar/issues/detail?id=1203 +[1297]: https://code.google.com/p/fullcalendar/issues/detail?id=1297 +[1326]: https://code.google.com/p/fullcalendar/issues/detail?id=1326 +[1700]: https://code.google.com/p/fullcalendar/issues/detail?id=1700 +[1992]: https://code.google.com/p/fullcalendar/issues/detail?id=1992 +[1996]: https://code.google.com/p/fullcalendar/issues/detail?id=1996 +[2017]: https://code.google.com/p/fullcalendar/issues/detail?id=2017 +[2078]: https://code.google.com/p/fullcalendar/issues/detail?id=2078 +[2132]: https://code.google.com/p/fullcalendar/issues/detail?id=2132 +[2151]: https://code.google.com/p/fullcalendar/issues/detail?id=2151 +[2169]: https://code.google.com/p/fullcalendar/issues/detail?id=2169 +[2172]: https://code.google.com/p/fullcalendar/issues/detail?id=2172 +[2186]: https://code.google.com/p/fullcalendar/issues/detail?id=2186 +[2196]: https://code.google.com/p/fullcalendar/issues/detail?id=2196 +[111]: https://code.google.com/p/fullcalendar/issues/detail?id=111 + + +v2.0.3 (2014-08-15) +------------------- + +- moment-2.8.1 compatibility ([2221]) +- relative path in bower.json ([PR 117]) +- upgraded jquery-ui and misc dev dependencies + +[2221]: https://code.google.com/p/fullcalendar/issues/detail?id=2221 +[PR 117]: https://github.com/arshaw/fullcalendar/pull/177 + + +v2.0.2 (2014-06-24) +------------------- + +- bug with persisting addEventSource calls ([2191]) +- bug with persisting removeEvents calls with an array source ([2187]) +- bug with removeEvents method when called with 0 removes all events ([2082]) + +[2191]: https://code.google.com/p/fullcalendar/issues/detail?id=2191 +[2187]: https://code.google.com/p/fullcalendar/issues/detail?id=2187 +[2082]: https://code.google.com/p/fullcalendar/issues/detail?id=2082 + + +v2.0.1 (2014-06-15) +------------------- + +- `delta` parameters reintroduced in `eventDrop` and `eventResize` handlers ([2156]) + - **Note**: this changes the argument order for `revertFunc` +- wrongfully triggering a windowResize when resizing an agenda view event ([1116]) +- `this` values in event drag-n-drop/resize handlers consistently the DOM node ([1177]) +- `displayEventEnd` - v2 workaround to force display of an end time ([2090]) +- don't modify passed-in eventSource items ([954]) +- destroy method now removes fc-ltr class ([2033]) +- weeks of last/next month still visible when weekends are hidden ([2095]) +- fixed memory leak when destroying calendar with selectable/droppable ([2137]) +- Icelandic language ([2180]) +- Bahasa Indonesia language ([PR 172]) + +[1116]: https://code.google.com/p/fullcalendar/issues/detail?id=1116 +[1177]: https://code.google.com/p/fullcalendar/issues/detail?id=1177 +[2090]: https://code.google.com/p/fullcalendar/issues/detail?id=2090 +[954]: https://code.google.com/p/fullcalendar/issues/detail?id=954 +[2033]: https://code.google.com/p/fullcalendar/issues/detail?id=2033 +[2095]: https://code.google.com/p/fullcalendar/issues/detail?id=2095 +[2137]: https://code.google.com/p/fullcalendar/issues/detail?id=2137 +[2156]: https://code.google.com/p/fullcalendar/issues/detail?id=2156 +[2180]: https://code.google.com/p/fullcalendar/issues/detail?id=2180 +[PR 172]: https://github.com/arshaw/fullcalendar/pull/172 + + +v2.0.0 (2014-06-01) +------------------- + +Internationalization support, timezone support, and [MomentJS] integration. Extensive changes, many +of which are backwards incompatible. + +[Full list of changes][Upgrading-to-v2] | [Affected Issues][Date-Milestone] + +An automated testing framework has been set up ([Karma] + [Jasmine]) and tests have been written +which cover about half of FullCalendar's functionality. Special thanks to @incre-d, @vidbina, and +@sirrocco for the help. + +In addition, the main development repo has been repurposed to also include the built distributable +JS/CSS for the project and will serve as the new [Bower] endpoint. + +[MomentJS]: http://momentjs.com/ +[Upgrading-to-v2]: http://arshaw.com/fullcalendar/wiki/Upgrading-to-v2/ +[Date-Milestone]: https://code.google.com/p/fullcalendar/issues/list?can=1&q=milestone%3Ddate +[Karma]: http://karma-runner.github.io/ +[Jasmine]: http://jasmine.github.io/ +[Bower]: http://bower.io/ + + +v1.6.4 (2013-09-01) +------------------- + +- better algorithm for positioning timed agenda events ([1115]) +- `slotEventOverlap` option to tweak timed agenda event overlapping ([218]) +- selection bug when slot height is customized ([1035]) +- supply view argument in `loading` callback ([1018]) +- fixed week number not displaying in agenda views ([1951]) +- fixed fullCalendar not initializing with no options ([1356]) +- NPM's `package.json`, no more warnings or errors ([1762]) +- building the bower component should output `bower.json` instead of `component.json` ([PR 125]) +- use bower internally for fetching new versions of jQuery and jQuery UI + +[1115]: https://code.google.com/p/fullcalendar/issues/detail?id=1115 +[218]: https://code.google.com/p/fullcalendar/issues/detail?id=218 +[1035]: https://code.google.com/p/fullcalendar/issues/detail?id=1035 +[1018]: https://code.google.com/p/fullcalendar/issues/detail?id=1018 +[1951]: https://code.google.com/p/fullcalendar/issues/detail?id=1951 +[1356]: https://code.google.com/p/fullcalendar/issues/detail?id=1356 +[1762]: https://code.google.com/p/fullcalendar/issues/detail?id=1762 +[PR 125]: https://github.com/arshaw/fullcalendar/pull/125 + + +v1.6.3 (2013-08-10) +------------------- + +- `viewRender` callback ([PR 15]) +- `viewDestroy` callback ([PR 15]) +- `eventDestroy` callback ([PR 111]) +- `handleWindowResize` option ([PR 54]) +- `eventStartEditable`/`startEditable` options ([PR 49]) +- `eventDurationEditable`/`durationEditable` options ([PR 49]) +- specify function for `$.ajax` `data` parameter for JSON event sources ([PR 59]) +- fixed bug with agenda event dropping in wrong column ([PR 55]) +- easier event element z-index customization ([PR 58]) +- classNames on past/future days ([PR 88]) +- allow `null`/`undefined` event titles ([PR 84]) +- small optimize for agenda event rendering ([PR 56]) +- deprecated: + - `viewDisplay` + - `disableDragging` + - `disableResizing` +- bundled with latest jQuery (1.10.2) and jQuery UI (1.10.3) + +[PR 15]: https://github.com/arshaw/fullcalendar/pull/15 +[PR 111]: https://github.com/arshaw/fullcalendar/pull/111 +[PR 54]: https://github.com/arshaw/fullcalendar/pull/54 +[PR 49]: https://github.com/arshaw/fullcalendar/pull/49 +[PR 59]: https://github.com/arshaw/fullcalendar/pull/59 +[PR 55]: https://github.com/arshaw/fullcalendar/pull/55 +[PR 58]: https://github.com/arshaw/fullcalendar/pull/58 +[PR 88]: https://github.com/arshaw/fullcalendar/pull/88 +[PR 84]: https://github.com/arshaw/fullcalendar/pull/84 +[PR 56]: https://github.com/arshaw/fullcalendar/pull/56 + + +v1.6.2 (2013-07-18) +------------------- + +- `hiddenDays` option ([686]) +- bugfix: when `eventRender` returns `false`, incorrect stacking of events ([762]) +- bugfix: couldn't change `event.backgroundImage` when calling `updateEvent` (thx @stephenharris) + +[686]: https://code.google.com/p/fullcalendar/issues/detail?id=686 +[762]: https://code.google.com/p/fullcalendar/issues/detail?id=762 + + +v1.6.1 (2013-04-14) +------------------- + +- fixed event inner content overflow bug ([1783]) +- fixed table header className bug [1772] +- removed text-shadow on events (better for general use, thx @tkrotoff) + +[1783]: https://code.google.com/p/fullcalendar/issues/detail?id=1783 +[1772]: https://code.google.com/p/fullcalendar/issues/detail?id=1772 + + +v1.6.0 (2013-03-18) +------------------- + +- visual facelift, with bootstrap-inspired buttons and colors +- simplified HTML/CSS for events and buttons +- `dayRender`, for modifying a day cell ([191], thx @althaus) +- week numbers on side of calendar ([295]) + - `weekNumber` + - `weekNumberCalculation` + - `weekNumberTitle` + - `W` formatting variable +- finer snapping granularity for agenda view events ([495], thx @ms-doodle-com) +- `eventAfterAllRender` ([753], thx @pdrakeweb) +- `eventDataTransform` (thx @joeyspo) +- `data-date` attributes on cells (thx @Jae) +- expose `$.fullCalendar.dateFormatters` +- when clicking fast on buttons, prevent text selection +- bundled with latest jQuery (1.9.1) and jQuery UI (1.10.2) +- Grunt/Lumbar build system for internal development +- build for Bower package manager +- build for jQuery plugin site + +[191]: https://code.google.com/p/fullcalendar/issues/detail?id=191 +[295]: https://code.google.com/p/fullcalendar/issues/detail?id=295 +[495]: https://code.google.com/p/fullcalendar/issues/detail?id=495 +[753]: https://code.google.com/p/fullcalendar/issues/detail?id=753 + + +v1.5.4 (2012-09-05) +------------------- + +- made compatible with jQuery 1.8.* (thx @archaeron) +- bundled with jQuery 1.8.1 and jQuery UI 1.8.23 + + +v1.5.3 (2012-02-06) +------------------- + +- fixed dragging issue with jQuery UI 1.8.16 ([1168]) +- bundled with jQuery 1.7.1 and jQuery UI 1.8.17 + +[1168]: https://code.google.com/p/fullcalendar/issues/detail?id=1168 + + +v1.5.2 (2011-08-21) +------------------- + +- correctly process UTC "Z" ISO8601 date strings ([750]) + +[750]: https://code.google.com/p/fullcalendar/issues/detail?id=750 + + +v1.5.1 (2011-04-09) +------------------- + +- more flexible ISO8601 date parsing ([814]) +- more flexible parsing of UNIX timestamps ([826]) +- FullCalendar now buildable from source on a Mac ([795]) +- FullCalendar QA'd in FF4 ([883]) +- upgraded to jQuery 1.5.2 (which supports IE9) and jQuery UI 1.8.11 + +[814]: https://code.google.com/p/fullcalendar/issues/detail?id=814 +[826]: https://code.google.com/p/fullcalendar/issues/detail?id=826 +[795]: https://code.google.com/p/fullcalendar/issues/detail?id=795 +[883]: https://code.google.com/p/fullcalendar/issues/detail?id=883 + + +v1.5 (2011-03-19) +----------------- + +- slicker default styling for buttons +- reworked a lot of the calendar's HTML and accompanying CSS (solves [327] and [395]) +- more printer-friendly (fullcalendar-print.css) +- fullcalendar now inherits styles from jquery-ui themes differently. + styles for buttons are distinct from styles for calendar cells. + (solves [299]) +- can now color events through FullCalendar options and Event-Object properties ([117]) + THIS IS NOW THE PREFERRED METHOD OF COLORING EVENTS (as opposed to using className and CSS) + - FullCalendar options: + - eventColor (changes both background and border) + - eventBackgroundColor + - eventBorderColor + - eventTextColor + - Event-Object options: + - color (changes both background and border) + - backgroundColor + - borderColor + - textColor +- can now specify an event source as an *object* with a `url` property (json feed) or + an `events` property (function or array) with additional properties that will + be applied to the entire event source: + - color (changes both background and border) + - backgroudColor + - borderColor + - textColor + - className + - editable + - allDayDefault + - ignoreTimezone + - startParam (for a feed) + - endParam (for a feed) + - ANY OF THE JQUERY $.ajax OPTIONS + allows for easily changing from GET to POST and sending additional parameters ([386]) + allows for easily attaching ajax handlers such as `error` ([754]) + allows for turning caching on ([355]) +- Google Calendar feeds are now specified differently: + - specify a simple string of your feed's URL + - specify an *object* with a `url` property of your feed's URL. + you can include any of the new Event-Source options in this object. + - the old `$.fullCalendar.gcalFeed` method still works +- no more IE7 SSL popup ([504]) +- remove `cacheParam` - use json event source `cache` option instead +- latest jquery/jquery-ui + +[327]: https://code.google.com/p/fullcalendar/issues/detail?id=327 +[395]: https://code.google.com/p/fullcalendar/issues/detail?id=395 +[299]: https://code.google.com/p/fullcalendar/issues/detail?id=299 +[117]: https://code.google.com/p/fullcalendar/issues/detail?id=117 +[386]: https://code.google.com/p/fullcalendar/issues/detail?id=386 +[754]: https://code.google.com/p/fullcalendar/issues/detail?id=754 +[355]: https://code.google.com/p/fullcalendar/issues/detail?id=355 +[504]: https://code.google.com/p/fullcalendar/issues/detail?id=504 + + +v1.4.11 (2011-02-22) +-------------------- + +- fixed rerenderEvents bug ([790]) +- fixed bug with faulty dragging of events from all-day slot in agenda views +- bundled with jquery 1.5 and jquery-ui 1.8.9 + +[790]: https://code.google.com/p/fullcalendar/issues/detail?id=790 + + +v1.4.10 (2011-01-02) +-------------------- + +- fixed bug with resizing event to different week in 5-day month view ([740]) +- fixed bug with events not sticking after a removeEvents call ([757]) +- fixed bug with underlying parseTime method, and other uses of parseInt ([688]) + +[740]: https://code.google.com/p/fullcalendar/issues/detail?id=740 +[757]: https://code.google.com/p/fullcalendar/issues/detail?id=757 +[688]: https://code.google.com/p/fullcalendar/issues/detail?id=688 + + +v1.4.9 (2010-11-16) +------------------- + +- new algorithm for vertically stacking events ([111]) +- resizing an event to a different week ([306]) +- bug: some events not rendered with consecutive calls to addEventSource ([679]) + +[111]: https://code.google.com/p/fullcalendar/issues/detail?id=111 +[306]: https://code.google.com/p/fullcalendar/issues/detail?id=306 +[679]: https://code.google.com/p/fullcalendar/issues/detail?id=679 + + +v1.4.8 (2010-10-16) +------------------- + +- ignoreTimezone option (set to `false` to process UTC offsets in ISO8601 dates) +- bugfixes + - event refetching not being called under certain conditions ([417], [554]) + - event refetching being called multiple times under certain conditions ([586], [616]) + - selection cannot be triggered by right mouse button ([558]) + - agenda view left axis sized incorrectly ([465]) + - IE js error when calendar is too narrow ([517]) + - agenda view looks strange when no scrollbars ([235]) + - improved parsing of ISO8601 dates with UTC offsets +- $.fullCalendar.version +- an internal refactor of the code, for easier future development and modularity + +[417]: https://code.google.com/p/fullcalendar/issues/detail?id=417 +[554]: https://code.google.com/p/fullcalendar/issues/detail?id=554 +[586]: https://code.google.com/p/fullcalendar/issues/detail?id=586 +[616]: https://code.google.com/p/fullcalendar/issues/detail?id=616 +[558]: https://code.google.com/p/fullcalendar/issues/detail?id=558 +[465]: https://code.google.com/p/fullcalendar/issues/detail?id=465 +[517]: https://code.google.com/p/fullcalendar/issues/detail?id=517 +[235]: https://code.google.com/p/fullcalendar/issues/detail?id=235 + + +v1.4.7 (2010-07-05) +------------------- + +- "dropping" external objects onto the calendar + - droppable (boolean, to turn on/off) + - dropAccept (to filter which events the calendar will accept) + - drop (trigger) +- selectable options can now be specified with a View Option Hash +- bugfixes + - dragged & reverted events having wrong time text ([406]) + - bug rendering events that have an endtime with seconds, but no hours/minutes ([477]) + - gotoDate date overflow bug ([429]) + - wrong date reported when clicking on edge of last column in agenda views [412] +- support newlines in event titles +- select/unselect callbacks now passes native js event + +[406]: https://code.google.com/p/fullcalendar/issues/detail?id=406 +[477]: https://code.google.com/p/fullcalendar/issues/detail?id=477 +[429]: https://code.google.com/p/fullcalendar/issues/detail?id=429 +[412]: https://code.google.com/p/fullcalendar/issues/detail?id=412 + + +v1.4.6 (2010-05-31) +------------------- + +- "selecting" days or timeslots + - options: selectable, selectHelper, unselectAuto, unselectCancel + - callbacks: select, unselect + - methods: select, unselect +- when dragging an event, the highlighting reflects the duration of the event +- code compressing by Google Closure Compiler +- bundled with jQuery 1.4.2 and jQuery UI 1.8.1 + + +v1.4.5 (2010-02-21) +------------------- + +- lazyFetching option, which can force the calendar to fetch events on every view/date change +- scroll state of agenda views are preserved when switching back to view +- bugfixes + - calling methods on an uninitialized fullcalendar throws error + - IE6/7 bug where an entire view becomes invisible ([320]) + - error when rendering a hidden calendar (in jquery ui tabs for example) in IE ([340]) + - interconnected bugs related to calendar resizing and scrollbars + - when switching views or clicking prev/next, calendar would "blink" ([333]) + - liquid-width calendar's events shifted (depending on initial height of browser) ([341]) + - more robust underlying algorithm for calendar resizing + +[320]: https://code.google.com/p/fullcalendar/issues/detail?id=320 +[340]: https://code.google.com/p/fullcalendar/issues/detail?id=340 +[333]: https://code.google.com/p/fullcalendar/issues/detail?id=333 +[341]: https://code.google.com/p/fullcalendar/issues/detail?id=341 + + +v1.4.4 (2010-02-03) +------------------- + +- optimized event rendering in all views (events render in 1/10 the time) +- gotoDate() does not force the calendar to unnecessarily rerender +- render() method now correctly readjusts height + + +v1.4.3 (2009-12-22) +------------------- + +- added destroy method +- Google Calendar event pages respect currentTimezone +- caching now handled by jQuery's ajax +- protection from setting aspectRatio to zero +- bugfixes + - parseISO8601 and DST caused certain events to display day before + - button positioning problem in IE6 + - ajax event source removed after recently being added, events still displayed + - event not displayed when end is an empty string + - dynamically setting calendar height when no events have been fetched, throws error + + +v1.4.2 (2009-12-02) +------------------- + +- eventAfterRender trigger +- getDate & getView methods +- height & contentHeight options (explicitly sets the pixel height) +- minTime & maxTime options (restricts shown hours in agenda view) +- getters [for all options] and setters [for height, contentHeight, and aspectRatio ONLY! stay tuned..] +- render method now readjusts calendar's size +- bugfixes + - lightbox scripts that use iframes (like fancybox) + - day-of-week classNames were off when firstDay=1 + - guaranteed space on right side of agenda events (even when stacked) + - accepts ISO8601 dates with a space (instead of 'T') + + +v1.4.1 (2009-10-31) +------------------- + +- can exclude weekends with new 'weekends' option +- gcal feed 'currentTimezone' option +- bugfixes + - year/month/date option sometimes wouldn't set correctly (depending on current date) + - daylight savings issue caused agenda views to start at 1am (for BST users) +- cleanup of gcal.js code + + +v1.4 (2009-10-19) +----------------- + +- agendaWeek and agendaDay views +- added some options for agenda views: + - allDaySlot + - allDayText + - firstHour + - slotMinutes + - defaultEventMinutes + - axisFormat +- modified some existing options/triggers to work with agenda views: + - dragOpacity and timeFormat can now accept a "View Hash" (a new concept) + - dayClick now has an allDay parameter + - eventDrop now has an an allDay parameter + (this will affect those who use revertFunc, adjust parameter list) +- added 'prevYear' and 'nextYear' for buttons in header +- minor change for theme users, ui-state-hover not applied to active/inactive buttons +- added event-color-changing example in docs +- better defaults for right-to-left themed button icons + + +v1.3.2 (2009-10-13) +------------------- + +- Bugfixes (please upgrade from 1.3.1!) + - squashed potential infinite loop when addMonths and addDays + is called with an invalid date + - $.fullCalendar.parseDate() now correctly parses IETF format + - when switching views, the 'today' button sticks inactive, fixed +- gotoDate now can accept a single Date argument +- documentation for changes in 1.3.1 and 1.3.2 now on website + + +v1.3.1 (2009-09-30) +------------------- + +- Important Bugfixes (please upgrade from 1.3!) + - When current date was late in the month, for long months, and prev/next buttons + were clicked in month-view, some months would be skipped/repeated + - In certain time zones, daylight savings time would cause certain days + to be misnumbered in month-view +- Subtle change in way week interval is chosen when switching from month to basicWeek/basicDay view +- Added 'allDayDefault' option +- Added 'changeView' and 'render' methods + + +v1.3 (2009-09-21) +----------------- + +- different 'views': month/basicWeek/basicDay +- more flexible 'header' system for buttons +- themable by jQuery UI themes +- resizable events (require jQuery UI resizable plugin) +- rescoped & rewritten CSS, enhanced default look +- cleaner css & rendering techniques for right-to-left +- reworked options & API to support multiple views / be consistent with jQuery UI +- refactoring of entire codebase + - broken into different JS & CSS files, assembled w/ build scripts + - new test suite for new features, uses firebug-lite +- refactored docs +- Options + - + date + - + defaultView + - + aspectRatio + - + disableResizing + - + monthNames (use instead of $.fullCalendar.monthNames) + - + monthNamesShort (use instead of $.fullCalendar.monthAbbrevs) + - + dayNames (use instead of $.fullCalendar.dayNames) + - + dayNamesShort (use instead of $.fullCalendar.dayAbbrevs) + - + theme + - + buttonText + - + buttonIcons + - x draggable -> editable/disableDragging + - x fixedWeeks -> weekMode + - x abbrevDayHeadings -> columnFormat + - x buttons/title -> header + - x eventDragOpacity -> dragOpacity + - x eventRevertDuration -> dragRevertDuration + - x weekStart -> firstDay + - x rightToLeft -> isRTL + - x showTime (use 'allDay' CalEvent property instead) +- Triggered Actions + - + eventResizeStart + - + eventResizeStop + - + eventResize + - x monthDisplay -> viewDisplay + - x resize -> windowResize + - 'eventDrop' params changed, can revert if ajax cuts out +- CalEvent Properties + - x showTime -> allDay + - x draggable -> editable + - 'end' is now INCLUSIVE when allDay=true + - 'url' now produces a real tag, more native clicking/tab behavior +- Methods: + - + renderEvent + - x prevMonth -> prev + - x nextMonth -> next + - x prevYear/nextYear -> moveDate + - x refresh -> rerenderEvents/refetchEvents + - x removeEvent -> removeEvents + - x getEventsByID -> clientEvents +- Utilities: + - 'formatDate' format string completely changed (inspired by jQuery UI datepicker + datejs) + - 'formatDates' added to support date-ranges +- Google Calendar Options: + - x draggable -> editable +- Bugfixes + - gcal extension fetched 25 results max, now fetches all + + +v1.2.1 (2009-06-29) +------------------- + +- bugfixes + - allows and corrects invalid end dates for events + - doesn't throw an error in IE while rendering when display:none + - fixed 'loading' callback when used w/ multiple addEventSource calls + - gcal className can now be an array + + +v1.2 (2009-05-31) +----------------- + +- expanded API + - 'className' CalEvent attribute + - 'source' CalEvent attribute + - dynamically get/add/remove/update events of current month + - locale improvements: change month/day name text + - better date formatting ($.fullCalendar.formatDate) + - multiple 'event sources' allowed + - dynamically add/remove event sources +- options for prevYear and nextYear buttons +- docs have been reworked (include addition of Google Calendar docs) +- changed behavior of parseDate for number strings + (now interpets as unix timestamp, not MS times) +- bugfixes + - rightToLeft month start bug + - off-by-one errors with month formatting commands + - events from previous months sticking when clicking prev/next quickly +- Google Calendar API changed to work w/ multiple event sources + - can also provide 'className' and 'draggable' options +- date utilties moved from $ to $.fullCalendar +- more documentation in source code +- minified version of fullcalendar.js +- test suit (available from svn) +- top buttons now use `' + ) + .click(function(ev) { + // don't process clicks for disabled buttons + if (!button.hasClass(tm + '-state-disabled')) { + + buttonClick(ev); + + // after the click action, if the button becomes the "active" tab, or disabled, + // it should never have a hover class, so remove it now. + if ( + button.hasClass(tm + '-state-active') || + button.hasClass(tm + '-state-disabled') + ) { + button.removeClass(tm + '-state-hover'); + } + } + }) + .mousedown(function() { + // the *down* effect (mouse pressed in). + // only on buttons that are not the "active" tab, or disabled + button + .not('.' + tm + '-state-active') + .not('.' + tm + '-state-disabled') + .addClass(tm + '-state-down'); + }) + .mouseup(function() { + // undo the *down* effect + button.removeClass(tm + '-state-down'); + }) + .hover( + function() { + // the *hover* effect. + // only on buttons that are not the "active" tab, or disabled + button + .not('.' + tm + '-state-active') + .not('.' + tm + '-state-disabled') + .addClass(tm + '-state-hover'); + }, + function() { + // undo the *hover* effect + button + .removeClass(tm + '-state-hover') + .removeClass(tm + '-state-down'); // if mouseleave happens before mouseup + } + ); + + groupChildren = groupChildren.add(button); + } + } + }); + + if (isOnlyButtons) { + groupChildren + .first().addClass(tm + '-corner-left').end() + .last().addClass(tm + '-corner-right').end(); + } + + if (groupChildren.length > 1) { + groupEl = $('
          '); + if (isOnlyButtons) { + groupEl.addClass('fc-button-group'); + } + groupEl.append(groupChildren); + sectionEl.append(groupEl); + } + else { + sectionEl.append(groupChildren); // 1 or 0 children + } + }); + } + + return sectionEl; + } + + + function updateTitle(text) { + if (el) { + el.find('h2').text(text); + } + } + + + function activateButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .addClass(tm + '-state-active'); + } + } + + + function deactivateButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .removeClass(tm + '-state-active'); + } + } + + + function disableButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .prop('disabled', true) + .addClass(tm + '-state-disabled'); + } + } + + + function enableButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .prop('disabled', false) + .removeClass(tm + '-state-disabled'); + } + } + + + function getViewsWithButtons() { + return viewsWithButtons; + } + +} + +;; + +var Calendar = FC.Calendar = Class.extend({ + + dirDefaults: null, // option defaults related to LTR or RTL + localeDefaults: null, // option defaults related to current locale + overrides: null, // option overrides given to the fullCalendar constructor + dynamicOverrides: null, // options set with dynamic setter method. higher precedence than view overrides. + options: null, // all defaults combined with overrides + viewSpecCache: null, // cache of view definitions + view: null, // current View object + header: null, + footer: null, + loadingLevel: 0, // number of simultaneous loading tasks + + + // a lot of this class' OOP logic is scoped within this constructor function, + // but in the future, write individual methods on the prototype. + constructor: Calendar_constructor, + + + // Subclasses can override this for initialization logic after the constructor has been called + initialize: function() { + }, + + + // Computes the flattened options hash for the calendar and assigns to `this.options`. + // Assumes this.overrides and this.dynamicOverrides have already been initialized. + populateOptionsHash: function() { + var locale, localeDefaults; + var isRTL, dirDefaults; + + locale = firstDefined( // explicit locale option given? + this.dynamicOverrides.locale, + this.overrides.locale + ); + localeDefaults = localeOptionHash[locale]; + if (!localeDefaults) { // explicit locale option not given or invalid? + locale = Calendar.defaults.locale; + localeDefaults = localeOptionHash[locale] || {}; + } + + isRTL = firstDefined( // based on options computed so far, is direction RTL? + this.dynamicOverrides.isRTL, + this.overrides.isRTL, + localeDefaults.isRTL, + Calendar.defaults.isRTL + ); + dirDefaults = isRTL ? Calendar.rtlDefaults : {}; + + this.dirDefaults = dirDefaults; + this.localeDefaults = localeDefaults; + this.options = mergeOptions([ // merge defaults and overrides. lowest to highest precedence + Calendar.defaults, // global defaults + dirDefaults, + localeDefaults, + this.overrides, + this.dynamicOverrides + ]); + populateInstanceComputableOptions(this.options); // fill in gaps with computed options + }, + + + // Gets information about how to create a view. Will use a cache. + getViewSpec: function(viewType) { + var cache = this.viewSpecCache; + + return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType)); + }, + + + // Given a duration singular unit, like "week" or "day", finds a matching view spec. + // Preference is given to views that have corresponding buttons. + getUnitViewSpec: function(unit) { + var viewTypes; + var i; + var spec; + + if ($.inArray(unit, intervalUnits) != -1) { + + // put views that have buttons first. there will be duplicates, but oh well + viewTypes = this.header.getViewsWithButtons(); // TODO: include footer as well? + $.each(FC.views, function(viewType) { // all views + viewTypes.push(viewType); + }); + + for (i = 0; i < viewTypes.length; i++) { + spec = this.getViewSpec(viewTypes[i]); + if (spec) { + if (spec.singleUnit == unit) { + return spec; + } + } + } + } + }, + + + // Builds an object with information on how to create a given view + buildViewSpec: function(requestedViewType) { + var viewOverrides = this.overrides.views || {}; + var specChain = []; // for the view. lowest to highest priority + var defaultsChain = []; // for the view. lowest to highest priority + var overridesChain = []; // for the view. lowest to highest priority + var viewType = requestedViewType; + var spec; // for the view + var overrides; // for the view + var duration; + var unit; + + // iterate from the specific view definition to a more general one until we hit an actual View class + while (viewType) { + spec = fcViews[viewType]; + overrides = viewOverrides[viewType]; + viewType = null; // clear. might repopulate for another iteration + + if (typeof spec === 'function') { // TODO: deprecate + spec = { 'class': spec }; + } + + if (spec) { + specChain.unshift(spec); + defaultsChain.unshift(spec.defaults || {}); + duration = duration || spec.duration; + viewType = viewType || spec.type; + } + + if (overrides) { + overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level + duration = duration || overrides.duration; + viewType = viewType || overrides.type; + } + } + + spec = mergeProps(specChain); + spec.type = requestedViewType; + if (!spec['class']) { + return false; + } + + if (duration) { + duration = moment.duration(duration); + if (duration.valueOf()) { // valid? + spec.duration = duration; + unit = computeIntervalUnit(duration); + + // view is a single-unit duration, like "week" or "day" + // incorporate options for this. lowest priority + if (duration.as(unit) === 1) { + spec.singleUnit = unit; + overridesChain.unshift(viewOverrides[unit] || {}); + } + } + } + + spec.defaults = mergeOptions(defaultsChain); + spec.overrides = mergeOptions(overridesChain); + + this.buildViewSpecOptions(spec); + this.buildViewSpecButtonText(spec, requestedViewType); + + return spec; + }, + + + // Builds and assigns a view spec's options object from its already-assigned defaults and overrides + buildViewSpecOptions: function(spec) { + spec.options = mergeOptions([ // lowest to highest priority + Calendar.defaults, // global defaults + spec.defaults, // view's defaults (from ViewSubclass.defaults) + this.dirDefaults, + this.localeDefaults, // locale and dir take precedence over view's defaults! + this.overrides, // calendar's overrides (options given to constructor) + spec.overrides, // view's overrides (view-specific options) + this.dynamicOverrides // dynamically set via setter. highest precedence + ]); + populateInstanceComputableOptions(spec.options); + }, + + + // Computes and assigns a view spec's buttonText-related options + buildViewSpecButtonText: function(spec, requestedViewType) { + + // given an options object with a possible `buttonText` hash, lookup the buttonText for the + // requested view, falling back to a generic unit entry like "week" or "day" + function queryButtonText(options) { + var buttonText = options.buttonText || {}; + return buttonText[requestedViewType] || + // view can decide to look up a certain key + (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) || + // a key like "month" + (spec.singleUnit ? buttonText[spec.singleUnit] : null); + } + + // highest to lowest priority + spec.buttonTextOverride = + queryButtonText(this.dynamicOverrides) || + queryButtonText(this.overrides) || // constructor-specified buttonText lookup hash takes precedence + spec.overrides.buttonText; // `buttonText` for view-specific options is a string + + // highest to lowest priority. mirrors buildViewSpecOptions + spec.buttonTextDefault = + queryButtonText(this.localeDefaults) || + queryButtonText(this.dirDefaults) || + spec.defaults.buttonText || // a single string. from ViewSubclass.defaults + queryButtonText(Calendar.defaults) || + (spec.duration ? this.humanizeDuration(spec.duration) : null) || // like "3 days" + requestedViewType; // fall back to given view name + }, + + + // Given a view name for a custom view or a standard view, creates a ready-to-go View object + instantiateView: function(viewType) { + var spec = this.getViewSpec(viewType); + + return new spec['class'](this, viewType, spec.options, spec.duration); + }, + + + // Returns a boolean about whether the view is okay to instantiate at some point + isValidViewType: function(viewType) { + return Boolean(this.getViewSpec(viewType)); + }, + + + // Should be called when any type of async data fetching begins + pushLoading: function() { + if (!(this.loadingLevel++)) { + this.publiclyTrigger('loading', null, true, this.view); + } + }, + + + // Should be called when any type of async data fetching completes + popLoading: function() { + if (!(--this.loadingLevel)) { + this.publiclyTrigger('loading', null, false, this.view); + } + }, + + + // Given arguments to the select method in the API, returns a span (unzoned start/end and other info) + buildSelectSpan: function(zonedStartInput, zonedEndInput) { + var start = this.moment(zonedStartInput).stripZone(); + var end; + + if (zonedEndInput) { + end = this.moment(zonedEndInput).stripZone(); + } + else if (start.hasTime()) { + end = start.clone().add(this.defaultTimedEventDuration); + } + else { + end = start.clone().add(this.defaultAllDayEventDuration); + } + + return { start: start, end: end }; + } + +}); + + +Calendar.mixin(EmitterMixin); + + +function Calendar_constructor(element, overrides) { + var t = this; + + + // Exports + // ----------------------------------------------------------------------------------- + + t.render = render; + t.destroy = destroy; + t.rerenderEvents = rerenderEvents; + t.changeView = renderView; // `renderView` will switch to another view + t.select = select; + t.unselect = unselect; + t.prev = prev; + t.next = next; + t.prevYear = prevYear; + t.nextYear = nextYear; + t.today = today; + t.gotoDate = gotoDate; + t.incrementDate = incrementDate; + t.zoomTo = zoomTo; + t.getDate = getDate; + t.getCalendar = getCalendar; + t.getView = getView; + t.option = option; // getter/setter method + t.publiclyTrigger = publiclyTrigger; + + + // Options + // ----------------------------------------------------------------------------------- + + t.dynamicOverrides = {}; + t.viewSpecCache = {}; + t.optionHandlers = {}; // for Calendar.options.js + t.overrides = $.extend({}, overrides); // make a copy + + t.populateOptionsHash(); // sets this.options + + + + // Locale-data Internals + // ----------------------------------------------------------------------------------- + // Apply overrides to the current locale's data + + var localeData; + + // Called immediately, and when any of the options change. + // Happens before any internal objects rebuild or rerender, because this is very core. + t.bindOptions([ + 'locale', 'monthNames', 'monthNamesShort', 'dayNames', 'dayNamesShort', 'firstDay', 'weekNumberCalculation' + ], function(locale, monthNames, monthNamesShort, dayNames, dayNamesShort, firstDay, weekNumberCalculation) { + + // normalize + if (weekNumberCalculation === 'iso') { + weekNumberCalculation = 'ISO'; // normalize + } + + localeData = createObject( // make a cheap copy + getMomentLocaleData(locale) // will fall back to en + ); + + if (monthNames) { + localeData._months = monthNames; + } + if (monthNamesShort) { + localeData._monthsShort = monthNamesShort; + } + if (dayNames) { + localeData._weekdays = dayNames; + } + if (dayNamesShort) { + localeData._weekdaysShort = dayNamesShort; + } + + if (firstDay == null && weekNumberCalculation === 'ISO') { + firstDay = 1; + } + if (firstDay != null) { + var _week = createObject(localeData._week); // _week: { dow: # } + _week.dow = firstDay; + localeData._week = _week; + } + + if ( // whitelist certain kinds of input + weekNumberCalculation === 'ISO' || + weekNumberCalculation === 'local' || + typeof weekNumberCalculation === 'function' + ) { + localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it + } + + // If the internal current date object already exists, move to new locale. + // We do NOT need to do this technique for event dates, because this happens when converting to "segments". + if (date) { + localizeMoment(date); // sets to localeData + } + }); + + + // Calendar-specific Date Utilities + // ----------------------------------------------------------------------------------- + + + t.defaultAllDayEventDuration = moment.duration(t.options.defaultAllDayEventDuration); + t.defaultTimedEventDuration = moment.duration(t.options.defaultTimedEventDuration); + + + // Builds a moment using the settings of the current calendar: timezone and locale. + // Accepts anything the vanilla moment() constructor accepts. + t.moment = function() { + var mom; + + if (t.options.timezone === 'local') { + mom = FC.moment.apply(null, arguments); + + // Force the moment to be local, because FC.moment doesn't guarantee it. + if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone + mom.local(); + } + } + else if (t.options.timezone === 'UTC') { + mom = FC.moment.utc.apply(null, arguments); // process as UTC + } + else { + mom = FC.moment.parseZone.apply(null, arguments); // let the input decide the zone + } + + localizeMoment(mom); + + return mom; + }; + + + // Updates the given moment's locale settings to the current calendar locale settings. + function localizeMoment(mom) { + mom._locale = localeData; + } + t.localizeMoment = localizeMoment; + + + // Returns a boolean about whether or not the calendar knows how to calculate + // the timezone offset of arbitrary dates in the current timezone. + t.getIsAmbigTimezone = function() { + return t.options.timezone !== 'local' && t.options.timezone !== 'UTC'; + }; + + + // Returns a copy of the given date in the current timezone. Has no effect on dates without times. + t.applyTimezone = function(date) { + if (!date.hasTime()) { + return date.clone(); + } + + var zonedDate = t.moment(date.toArray()); + var timeAdjust = date.time() - zonedDate.time(); + var adjustedZonedDate; + + // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396) + if (timeAdjust) { // is the time result different than expected? + adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds + if (date.time() - adjustedZonedDate.time() === 0) { // does it match perfectly now? + zonedDate = adjustedZonedDate; + } + } + + return zonedDate; + }; + + + // Returns a moment for the current date, as defined by the client's computer or from the `now` option. + // Will return an moment with an ambiguous timezone. + t.getNow = function() { + var now = t.options.now; + if (typeof now === 'function') { + now = now(); + } + return t.moment(now).stripZone(); + }; + + + // Get an event's normalized end date. If not present, calculate it from the defaults. + t.getEventEnd = function(event) { + if (event.end) { + return event.end.clone(); + } + else { + return t.getDefaultEventEnd(event.allDay, event.start); + } + }; + + + // Given an event's allDay status and start date, return what its fallback end date should be. + // TODO: rename to computeDefaultEventEnd + t.getDefaultEventEnd = function(allDay, zonedStart) { + var end = zonedStart.clone(); + + if (allDay) { + end.stripTime().add(t.defaultAllDayEventDuration); + } + else { + end.add(t.defaultTimedEventDuration); + } + + if (t.getIsAmbigTimezone()) { + end.stripZone(); // we don't know what the tzo should be + } + + return end; + }; + + + // Produces a human-readable string for the given duration. + // Side-effect: changes the locale of the given duration. + t.humanizeDuration = function(duration) { + return duration.locale(t.options.locale).humanize(); + }; + + + + // Imports + // ----------------------------------------------------------------------------------- + + + EventManager.call(t); + + + + // Locals + // ----------------------------------------------------------------------------------- + + + var _element = element[0]; + var toolbarsManager; + var header; + var footer; + var content; + var tm; // for making theme classes + var currentView; // NOTE: keep this in sync with this.view + var viewsByType = {}; // holds all instantiated view instances, current or not + var suggestedViewHeight; + var windowResizeProxy; // wraps the windowResize function + var ignoreWindowResize = 0; + var date; // unzoned + + + + // Main Rendering + // ----------------------------------------------------------------------------------- + + + // compute the initial ambig-timezone date + if (t.options.defaultDate != null) { + date = t.moment(t.options.defaultDate).stripZone(); + } + else { + date = t.getNow(); // getNow already returns unzoned + } + + + function render() { + if (!content) { + initialRender(); + } + else if (elementVisible()) { + // mainly for the public API + calcSize(); + renderView(); + } + } + + + function initialRender() { + element.addClass('fc'); + + // event delegation for nav links + element.on('click.fc', 'a[data-goto]', function(ev) { + var anchorEl = $(this); + var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON + var date = t.moment(gotoOptions.date); + var viewType = gotoOptions.type; + + // property like "navLinkDayClick". might be a string or a function + var customAction = currentView.opt('navLink' + capitaliseFirstLetter(viewType) + 'Click'); + + if (typeof customAction === 'function') { + customAction(date, ev); + } + else { + if (typeof customAction === 'string') { + viewType = customAction; + } + zoomTo(date, viewType); + } + }); + + // called immediately, and upon option change + t.bindOption('theme', function(theme) { + tm = theme ? 'ui' : 'fc'; // affects a larger scope + element.toggleClass('ui-widget', theme); + element.toggleClass('fc-unthemed', !theme); + }); + + // called immediately, and upon option change. + // HACK: locale often affects isRTL, so we explicitly listen to that too. + t.bindOptions([ 'isRTL', 'locale' ], function(isRTL) { + element.toggleClass('fc-ltr', !isRTL); + element.toggleClass('fc-rtl', isRTL); + }); + + content = $("
          ").prependTo(element); + + var toolbars = buildToolbars(); + toolbarsManager = new Iterator(toolbars); + + header = t.header = toolbars[0]; + footer = t.footer = toolbars[1]; + + renderHeader(); + renderFooter(); + renderView(t.options.defaultView); + + if (t.options.handleWindowResize) { + windowResizeProxy = debounce(windowResize, t.options.windowResizeDelay); // prevents rapid calls + $(window).resize(windowResizeProxy); + } + } + + + function destroy() { + + if (currentView) { + currentView.removeElement(); + + // NOTE: don't null-out currentView/t.view in case API methods are called after destroy. + // It is still the "current" view, just not rendered. + } + + toolbarsManager.proxyCall('removeElement'); + content.remove(); + element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget'); + + element.off('.fc'); // unbind nav link handlers + + if (windowResizeProxy) { + $(window).unbind('resize', windowResizeProxy); + } + } + + + function elementVisible() { + return element.is(':visible'); + } + + + + // View Rendering + // ----------------------------------------------------------------------------------- + + + // Renders a view because of a date change, view-type change, or for the first time. + // If not given a viewType, keep the current view but render different dates. + // Accepts an optional scroll state to restore to. + function renderView(viewType, forcedScroll) { + ignoreWindowResize++; + + var needsClearView = currentView && viewType && currentView.type !== viewType; + + // if viewType is changing, remove the old view's rendering + if (needsClearView) { + freezeContentHeight(); // prevent a scroll jump when view element is removed + clearView(); + } + + // if viewType changed, or the view was never created, create a fresh view + if (!currentView && viewType) { + currentView = t.view = + viewsByType[viewType] || + (viewsByType[viewType] = t.instantiateView(viewType)); + + currentView.setElement( + $("
          ").appendTo(content) + ); + toolbarsManager.proxyCall('activateButton', viewType); + } + + if (currentView) { + + // in case the view should render a period of time that is completely hidden + date = currentView.massageCurrentDate(date); + + // render or rerender the view + if ( + !currentView.isDateSet || + !( // NOT within interval range signals an implicit date window change + date >= currentView.intervalStart && + date < currentView.intervalEnd + ) + ) { + if (elementVisible()) { + + if (forcedScroll) { + currentView.captureInitialScroll(forcedScroll); + } + + currentView.setDate(date, forcedScroll); + + if (forcedScroll) { + currentView.releaseScroll(); + } + + // need to do this after View::render, so dates are calculated + // NOTE: view updates title text proactively + updateToolbarsTodayButton(); + } + } + } + + if (needsClearView) { + thawContentHeight(); + } + + ignoreWindowResize--; + } + + + // Unrenders the current view and reflects this change in the Header. + // Unregsiters the `currentView`, but does not remove from viewByType hash. + function clearView() { + toolbarsManager.proxyCall('deactivateButton', currentView.type); + currentView.removeElement(); + currentView = t.view = null; + } + + + // Destroys the view, including the view object. Then, re-instantiates it and renders it. + // Maintains the same scroll state. + // TODO: maintain any other user-manipulated state. + function reinitView() { + ignoreWindowResize++; + freezeContentHeight(); + + var viewType = currentView.type; + var scrollState = currentView.queryScroll(); + clearView(); + calcSize(); + renderView(viewType, scrollState); + + thawContentHeight(); + ignoreWindowResize--; + } + + + + // Resizing + // ----------------------------------------------------------------------------------- + + + t.getSuggestedViewHeight = function() { + if (suggestedViewHeight === undefined) { + calcSize(); + } + return suggestedViewHeight; + }; + + + t.isHeightAuto = function() { + return t.options.contentHeight === 'auto' || t.options.height === 'auto'; + }; + + + function updateSize(shouldRecalc) { + if (elementVisible()) { + + if (shouldRecalc) { + _calcSize(); + } + + ignoreWindowResize++; + currentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto() + ignoreWindowResize--; + + return true; // signal success + } + } + + + function calcSize() { + if (elementVisible()) { + _calcSize(); + } + } + + + function _calcSize() { // assumes elementVisible + var contentHeightInput = t.options.contentHeight; + var heightInput = t.options.height; + + if (typeof contentHeightInput === 'number') { // exists and not 'auto' + suggestedViewHeight = contentHeightInput; + } + else if (typeof contentHeightInput === 'function') { // exists and is a function + suggestedViewHeight = contentHeightInput(); + } + else if (typeof heightInput === 'number') { // exists and not 'auto' + suggestedViewHeight = heightInput - queryToolbarsHeight(); + } + else if (typeof heightInput === 'function') { // exists and is a function + suggestedViewHeight = heightInput() - queryToolbarsHeight(); + } + else if (heightInput === 'parent') { // set to height of parent element + suggestedViewHeight = element.parent().height() - queryToolbarsHeight(); + } + else { + suggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5)); + } + } + + + function queryToolbarsHeight() { + return toolbarsManager.items.reduce(function(accumulator, toolbar) { + var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin + return accumulator + toolbarHeight; + }, 0); + } + + + function windowResize(ev) { + if ( + !ignoreWindowResize && + ev.target === window && // so we don't process jqui "resize" events that have bubbled up + currentView.start // view has already been rendered + ) { + if (updateSize(true)) { + currentView.publiclyTrigger('windowResize', _element); + } + } + } + + + + /* Event Rendering + -----------------------------------------------------------------------------*/ + + + function rerenderEvents() { // API method. destroys old events if previously rendered. + if (elementVisible()) { + t.reportEventChange(); // will re-trasmit events to the view, causing a rerender + } + } + + + + /* Toolbars + -----------------------------------------------------------------------------*/ + + + function buildToolbars() { + return [ + new Toolbar(t, computeHeaderOptions()), + new Toolbar(t, computeFooterOptions()) + ]; + } + + + function computeHeaderOptions() { + return { + extraClasses: 'fc-header-toolbar', + layout: t.options.header + }; + } + + + function computeFooterOptions() { + return { + extraClasses: 'fc-footer-toolbar', + layout: t.options.footer + }; + } + + + // can be called repeatedly and Header will rerender + function renderHeader() { + header.setToolbarOptions(computeHeaderOptions()); + header.render(); + if (header.el) { + element.prepend(header.el); + } + } + + + // can be called repeatedly and Footer will rerender + function renderFooter() { + footer.setToolbarOptions(computeFooterOptions()); + footer.render(); + if (footer.el) { + element.append(footer.el); + } + } + + + t.setToolbarsTitle = function(title) { + toolbarsManager.proxyCall('updateTitle', title); + }; + + + function updateToolbarsTodayButton() { + var now = t.getNow(); + if (now >= currentView.intervalStart && now < currentView.intervalEnd) { + toolbarsManager.proxyCall('disableButton', 'today'); + } + else { + toolbarsManager.proxyCall('enableButton', 'today'); + } + } + + + + /* Selection + -----------------------------------------------------------------------------*/ + + + // this public method receives start/end dates in any format, with any timezone + function select(zonedStartInput, zonedEndInput) { + currentView.select( + t.buildSelectSpan.apply(t, arguments) + ); + } + + + function unselect() { // safe to be called before renderView + if (currentView) { + currentView.unselect(); + } + } + + + + /* Date + -----------------------------------------------------------------------------*/ + + + function prev() { + date = currentView.computePrevDate(date); + renderView(); + } + + + function next() { + date = currentView.computeNextDate(date); + renderView(); + } + + + function prevYear() { + date.add(-1, 'years'); + renderView(); + } + + + function nextYear() { + date.add(1, 'years'); + renderView(); + } + + + function today() { + date = t.getNow(); + renderView(); + } + + + function gotoDate(zonedDateInput) { + date = t.moment(zonedDateInput).stripZone(); + renderView(); + } + + + function incrementDate(delta) { + date.add(moment.duration(delta)); + renderView(); + } + + + // Forces navigation to a view for the given date. + // `viewType` can be a specific view name or a generic one like "week" or "day". + function zoomTo(newDate, viewType) { + var spec; + + viewType = viewType || 'day'; // day is default zoom + spec = t.getViewSpec(viewType) || t.getUnitViewSpec(viewType); + + date = newDate.clone(); + renderView(spec ? spec.type : null); + } + + + // for external API + function getDate() { + return t.applyTimezone(date); // infuse the calendar's timezone + } + + + + /* Height "Freezing" + -----------------------------------------------------------------------------*/ + + + t.freezeContentHeight = freezeContentHeight; + t.thawContentHeight = thawContentHeight; + + var freezeContentHeightDepth = 0; + + + function freezeContentHeight() { + if (!(freezeContentHeightDepth++)) { + content.css({ + width: '100%', + height: content.height(), + overflow: 'hidden' + }); + } + } + + + function thawContentHeight() { + if (!(--freezeContentHeightDepth)) { + content.css({ + width: '', + height: '', + overflow: '' + }); + } + } + + + + /* Misc + -----------------------------------------------------------------------------*/ + + + function getCalendar() { + return t; + } + + + function getView() { + return currentView; + } + + + function option(name, value) { + var newOptionHash; + + if (typeof name === 'string') { + if (value === undefined) { // getter + return t.options[name]; + } + else { // setter for individual option + newOptionHash = {}; + newOptionHash[name] = value; + setOptions(newOptionHash); + } + } + else if (typeof name === 'object') { // compound setter with object input + setOptions(name); + } + } + + + function setOptions(newOptionHash) { + var optionCnt = 0; + var optionName; + + for (optionName in newOptionHash) { + t.dynamicOverrides[optionName] = newOptionHash[optionName]; + } + + t.viewSpecCache = {}; // the dynamic override invalidates the options in this cache, so just clear it + t.populateOptionsHash(); // this.options needs to be recomputed after the dynamic override + + // trigger handlers after this.options has been updated + for (optionName in newOptionHash) { + t.triggerOptionHandlers(optionName); // recall bindOption/bindOptions + optionCnt++; + } + + // special-case handling of single option change. + // if only one option change, `optionName` will be its name. + if (optionCnt === 1) { + if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') { + updateSize(true); // true = allow recalculation of height + return; + } + else if (optionName === 'defaultDate') { + return; // can't change date this way. use gotoDate instead + } + else if (optionName === 'businessHours') { + if (currentView) { + currentView.unrenderBusinessHours(); + currentView.renderBusinessHours(); + } + return; + } + else if (optionName === 'timezone') { + t.rezoneArrayEventSources(); + t.refetchEvents(); + return; + } + } + + // catch-all. rerender the header and footer and rebuild/rerender the current view + renderHeader(); + renderFooter(); + viewsByType = {}; // even non-current views will be affected by this option change. do before rerender + reinitView(); + } + + + function publiclyTrigger(name, thisObj) { + var args = Array.prototype.slice.call(arguments, 2); + + thisObj = thisObj || _element; + this.triggerWith(name, thisObj, args); // Emitter's method + + if (t.options[name]) { + return t.options[name].apply(thisObj, args); + } + } + + t.initialize(); +} + +;; +/* +Options binding/triggering system. +*/ +Calendar.mixin({ + + // A map of option names to arrays of handler objects. Initialized to {} in Calendar. + // Format for a handler object: + // { + // func // callback function to be called upon change + // names // option names whose values should be given to func + // } + optionHandlers: null, + + // Calls handlerFunc immediately, and when the given option has changed. + // handlerFunc will be given the option value. + bindOption: function(optionName, handlerFunc) { + this.bindOptions([ optionName ], handlerFunc); + }, + + // Calls handlerFunc immediately, and when any of the given options change. + // handlerFunc will be given each option value as ordered function arguments. + bindOptions: function(optionNames, handlerFunc) { + var handlerObj = { func: handlerFunc, names: optionNames }; + var i; + + for (i = 0; i < optionNames.length; i++) { + this.registerOptionHandlerObj(optionNames[i], handlerObj); + } + + this.triggerOptionHandlerObj(handlerObj); + }, + + // Puts the given handler object into the internal hash + registerOptionHandlerObj: function(optionName, handlerObj) { + (this.optionHandlers[optionName] || (this.optionHandlers[optionName] = [])) + .push(handlerObj); + }, + + // Reports that the given option has changed, and calls all appropriate handlers. + triggerOptionHandlers: function(optionName) { + var handlerObjs = this.optionHandlers[optionName] || []; + var i; + + for (i = 0; i < handlerObjs.length; i++) { + this.triggerOptionHandlerObj(handlerObjs[i]); + } + }, + + // Calls the callback for a specific handler object, passing in the appropriate arguments. + triggerOptionHandlerObj: function(handlerObj) { + var optionNames = handlerObj.names; + var optionValues = []; + var i; + + for (i = 0; i < optionNames.length; i++) { + optionValues.push(this.options[optionNames[i]]); + } + + handlerObj.func.apply(this, optionValues); // maintain the Calendar's `this` context + } + +}); + +;; + +Calendar.defaults = { + + titleRangeSeparator: ' \u2013 ', // en dash + monthYearFormat: 'MMMM YYYY', // required for en. other locales rely on datepicker computable option + + defaultTimedEventDuration: '02:00:00', + defaultAllDayEventDuration: { days: 1 }, + forceEventDuration: false, + nextDayThreshold: '09:00:00', // 9am + + // display + defaultView: 'month', + aspectRatio: 1.35, + header: { + left: 'title', + center: '', + right: 'today prev,next' + }, + weekends: true, + weekNumbers: false, + + weekNumberTitle: 'W', + weekNumberCalculation: 'local', + + //editable: false, + + //nowIndicator: false, + + scrollTime: '06:00:00', + + // event ajax + lazyFetching: true, + startParam: 'start', + endParam: 'end', + timezoneParam: 'timezone', + + timezone: false, + + //allDayDefault: undefined, + + // locale + isRTL: false, + buttonText: { + prev: "prev", + next: "next", + prevYear: "prev year", + nextYear: "next year", + year: 'year', // TODO: locale files need to specify this + today: 'today', + month: 'month', + week: 'week', + day: 'day' + }, + + buttonIcons: { + prev: 'left-single-arrow', + next: 'right-single-arrow', + prevYear: 'left-double-arrow', + nextYear: 'right-double-arrow' + }, + + allDayText: 'all-day', + + // jquery-ui theming + theme: false, + themeButtonIcons: { + prev: 'circle-triangle-w', + next: 'circle-triangle-e', + prevYear: 'seek-prev', + nextYear: 'seek-next' + }, + + //eventResizableFromStart: false, + dragOpacity: .75, + dragRevertDuration: 500, + dragScroll: true, + + //selectable: false, + unselectAuto: true, + + dropAccept: '*', + + eventOrder: 'title', + //eventRenderWait: null, + + eventLimit: false, + eventLimitText: 'more', + eventLimitClick: 'popover', + dayPopoverFormat: 'LL', + + handleWindowResize: true, + windowResizeDelay: 100, // milliseconds before an updateSize happens + + longPressDelay: 1000 + +}; + + +Calendar.englishDefaults = { // used by locale.js + dayPopoverFormat: 'dddd, MMMM D' +}; + + +Calendar.rtlDefaults = { // right-to-left defaults + header: { // TODO: smarter solution (first/center/last ?) + left: 'next,prev today', + center: '', + right: 'title' + }, + buttonIcons: { + prev: 'right-single-arrow', + next: 'left-single-arrow', + prevYear: 'right-double-arrow', + nextYear: 'left-double-arrow' + }, + themeButtonIcons: { + prev: 'circle-triangle-e', + next: 'circle-triangle-w', + nextYear: 'seek-prev', + prevYear: 'seek-next' + } +}; + +;; + +var localeOptionHash = FC.locales = {}; // initialize and expose + + +// TODO: document the structure and ordering of a FullCalendar locale file + + +// Initialize jQuery UI datepicker translations while using some of the translations +// Will set this as the default locales for datepicker. +FC.datepickerLocale = function(localeCode, dpLocaleCode, dpOptions) { + + // get the FullCalendar internal option hash for this locale. create if necessary + var fcOptions = localeOptionHash[localeCode] || (localeOptionHash[localeCode] = {}); + + // transfer some simple options from datepicker to fc + fcOptions.isRTL = dpOptions.isRTL; + fcOptions.weekNumberTitle = dpOptions.weekHeader; + + // compute some more complex options from datepicker + $.each(dpComputableOptions, function(name, func) { + fcOptions[name] = func(dpOptions); + }); + + // is jQuery UI Datepicker is on the page? + if ($.datepicker) { + + // Register the locale data. + // FullCalendar and MomentJS use locale codes like "pt-br" but Datepicker + // does it like "pt-BR" or if it doesn't have the locale, maybe just "pt". + // Make an alias so the locale can be referenced either way. + $.datepicker.regional[dpLocaleCode] = + $.datepicker.regional[localeCode] = // alias + dpOptions; + + // Alias 'en' to the default locale data. Do this every time. + $.datepicker.regional.en = $.datepicker.regional['']; + + // Set as Datepicker's global defaults. + $.datepicker.setDefaults(dpOptions); + } +}; + + +// Sets FullCalendar-specific translations. Will set the locales as the global default. +FC.locale = function(localeCode, newFcOptions) { + var fcOptions; + var momOptions; + + // get the FullCalendar internal option hash for this locale. create if necessary + fcOptions = localeOptionHash[localeCode] || (localeOptionHash[localeCode] = {}); + + // provided new options for this locales? merge them in + if (newFcOptions) { + fcOptions = localeOptionHash[localeCode] = mergeOptions([ fcOptions, newFcOptions ]); + } + + // compute locale options that weren't defined. + // always do this. newFcOptions can be undefined when initializing from i18n file, + // so no way to tell if this is an initialization or a default-setting. + momOptions = getMomentLocaleData(localeCode); // will fall back to en + $.each(momComputableOptions, function(name, func) { + if (fcOptions[name] == null) { + fcOptions[name] = func(momOptions, fcOptions); + } + }); + + // set it as the default locale for FullCalendar + Calendar.defaults.locale = localeCode; +}; + + +// NOTE: can't guarantee any of these computations will run because not every locale has datepicker +// configs, so make sure there are English fallbacks for these in the defaults file. +var dpComputableOptions = { + + buttonText: function(dpOptions) { + return { + // the translations sometimes wrongly contain HTML entities + prev: stripHtmlEntities(dpOptions.prevText), + next: stripHtmlEntities(dpOptions.nextText), + today: stripHtmlEntities(dpOptions.currentText) + }; + }, + + // Produces format strings like "MMMM YYYY" -> "September 2014" + monthYearFormat: function(dpOptions) { + return dpOptions.showMonthAfterYear ? + 'YYYY[' + dpOptions.yearSuffix + '] MMMM' : + 'MMMM YYYY[' + dpOptions.yearSuffix + ']'; + } + +}; + +var momComputableOptions = { + + // Produces format strings like "ddd M/D" -> "Fri 9/15" + dayOfMonthFormat: function(momOptions, fcOptions) { + var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY" + + // strip the year off the edge, as well as other misc non-whitespace chars + format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, ''); + + if (fcOptions.isRTL) { + format += ' ddd'; // for RTL, add day-of-week to end + } + else { + format = 'ddd ' + format; // for LTR, add day-of-week to beginning + } + return format; + }, + + // Produces format strings like "h:mma" -> "6:00pm" + mediumTimeFormat: function(momOptions) { // can't be called `timeFormat` because collides with option + return momOptions.longDateFormat('LT') + .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand + }, + + // Produces format strings like "h(:mm)a" -> "6pm" / "6:30pm" + smallTimeFormat: function(momOptions) { + return momOptions.longDateFormat('LT') + .replace(':mm', '(:mm)') + .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales + .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand + }, + + // Produces format strings like "h(:mm)t" -> "6p" / "6:30p" + extraSmallTimeFormat: function(momOptions) { + return momOptions.longDateFormat('LT') + .replace(':mm', '(:mm)') + .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales + .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand + }, + + // Produces format strings like "ha" / "H" -> "6pm" / "18" + hourFormat: function(momOptions) { + return momOptions.longDateFormat('LT') + .replace(':mm', '') + .replace(/(\Wmm)$/, '') // like above, but for foreign locales + .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand + }, + + // Produces format strings like "h:mm" -> "6:30" (with no AM/PM) + noMeridiemTimeFormat: function(momOptions) { + return momOptions.longDateFormat('LT') + .replace(/\s*a$/i, ''); // remove trailing AM/PM + } + +}; + + +// options that should be computed off live calendar options (considers override options) +// TODO: best place for this? related to locale? +// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it +var instanceComputableOptions = { + + // Produces format strings for results like "Mo 16" + smallDayDateFormat: function(options) { + return options.isRTL ? + 'D dd' : + 'dd D'; + }, + + // Produces format strings for results like "Wk 5" + weekFormat: function(options) { + return options.isRTL ? + 'w[ ' + options.weekNumberTitle + ']' : + '[' + options.weekNumberTitle + ' ]w'; + }, + + // Produces format strings for results like "Wk5" + smallWeekFormat: function(options) { + return options.isRTL ? + 'w[' + options.weekNumberTitle + ']' : + '[' + options.weekNumberTitle + ']w'; + } + +}; + +function populateInstanceComputableOptions(options) { + $.each(instanceComputableOptions, function(name, func) { + if (options[name] == null) { + options[name] = func(options); + } + }); +} + + +// Returns moment's internal locale data. If doesn't exist, returns English. +function getMomentLocaleData(localeCode) { + return moment.localeData(localeCode) || moment.localeData('en'); +} + + +// Initialize English by forcing computation of moment-derived options. +// Also, sets it as the default. +FC.locale('en', Calendar.englishDefaults); + +;; + +FC.sourceNormalizers = []; +FC.sourceFetchers = []; + +var ajaxDefaults = { + dataType: 'json', + cache: false +}; + +var eventGUID = 1; + + +function EventManager() { // assumed to be a calendar + var t = this; + + + // exports + t.requestEvents = requestEvents; + t.reportEventChange = reportEventChange; + t.isFetchNeeded = isFetchNeeded; + t.fetchEvents = fetchEvents; + t.fetchEventSources = fetchEventSources; + t.refetchEvents = refetchEvents; + t.refetchEventSources = refetchEventSources; + t.getEventSources = getEventSources; + t.getEventSourceById = getEventSourceById; + t.addEventSource = addEventSource; + t.removeEventSource = removeEventSource; + t.removeEventSources = removeEventSources; + t.updateEvent = updateEvent; + t.updateEvents = updateEvents; + t.renderEvent = renderEvent; + t.renderEvents = renderEvents; + t.removeEvents = removeEvents; + t.clientEvents = clientEvents; + t.mutateEvent = mutateEvent; + t.normalizeEventDates = normalizeEventDates; + t.normalizeEventTimes = normalizeEventTimes; + + + // locals + var stickySource = { events: [] }; + var sources = [ stickySource ]; + var rangeStart, rangeEnd; + var pendingSourceCnt = 0; // outstanding fetch requests, max one per source + var cache = []; // holds events that have already been expanded + var prunedCache; // like cache, but only events that intersect with rangeStart/rangeEnd + + + $.each( + (t.options.events ? [ t.options.events ] : []).concat(t.options.eventSources || []), + function(i, sourceInput) { + var source = buildEventSource(sourceInput); + if (source) { + sources.push(source); + } + } + ); + + + + function requestEvents(start, end) { + if (!t.options.lazyFetching || isFetchNeeded(start, end)) { + return fetchEvents(start, end); + } + else { + return Promise.resolve(prunedCache); + } + } + + + function reportEventChange() { + prunedCache = filterEventsWithinRange(cache); + t.trigger('eventsReset', prunedCache); + } + + + function filterEventsWithinRange(events) { + var filteredEvents = []; + var i, event; + + for (i = 0; i < events.length; i++) { + event = events[i]; + + if ( + event.start.clone().stripZone() < rangeEnd && + t.getEventEnd(event).stripZone() > rangeStart + ) { + filteredEvents.push(event); + } + } + + return filteredEvents; + } + + + t.getEventCache = function() { + return cache; + }; + + + t.getPrunedEventCache = function() { + return prunedCache; + }; + + + + /* Fetching + -----------------------------------------------------------------------------*/ + + + // start and end are assumed to be unzoned + function isFetchNeeded(start, end) { + return !rangeStart || // nothing has been fetched yet? + start < rangeStart || end > rangeEnd; // is part of the new range outside of the old range? + } + + + function fetchEvents(start, end) { + rangeStart = start; + rangeEnd = end; + return refetchEvents(); + } + + + // poorly named. fetches all sources with current `rangeStart` and `rangeEnd`. + function refetchEvents() { + return fetchEventSources(sources, 'reset'); + } + + + // poorly named. fetches a subset of event sources. + function refetchEventSources(matchInputs) { + return fetchEventSources(getEventSourcesByMatchArray(matchInputs)); + } + + + // expects an array of event source objects (the originals, not copies) + // `specialFetchType` is an optimization parameter that affects purging of the event cache. + function fetchEventSources(specificSources, specialFetchType) { + var i, source; + + if (specialFetchType === 'reset') { + cache = []; + } + else if (specialFetchType !== 'add') { + cache = excludeEventsBySources(cache, specificSources); + } + + for (i = 0; i < specificSources.length; i++) { + source = specificSources[i]; + + // already-pending sources have already been accounted for in pendingSourceCnt + if (source._status !== 'pending') { + pendingSourceCnt++; + } + + source._fetchId = (source._fetchId || 0) + 1; + source._status = 'pending'; + } + + for (i = 0; i < specificSources.length; i++) { + source = specificSources[i]; + tryFetchEventSource(source, source._fetchId); + } + + if (pendingSourceCnt) { + return new Promise(function(resolve) { + t.one('eventsReceived', resolve); // will send prunedCache + }); + } + else { // executed all synchronously, or no sources at all + return Promise.resolve(prunedCache); + } + } + + + // fetches an event source and processes its result ONLY if it is still the current fetch. + // caller is responsible for incrementing pendingSourceCnt first. + function tryFetchEventSource(source, fetchId) { + _fetchEventSource(source, function(eventInputs) { + var isArraySource = $.isArray(source.events); + var i, eventInput; + var abstractEvent; + + if ( + // is this the source's most recent fetch? + // if not, rely on an upcoming fetch of this source to decrement pendingSourceCnt + fetchId === source._fetchId && + // event source no longer valid? + source._status !== 'rejected' + ) { + source._status = 'resolved'; + + if (eventInputs) { + for (i = 0; i < eventInputs.length; i++) { + eventInput = eventInputs[i]; + + if (isArraySource) { // array sources have already been convert to Event Objects + abstractEvent = eventInput; + } + else { + abstractEvent = buildEventFromInput(eventInput, source); + } + + if (abstractEvent) { // not false (an invalid event) + cache.push.apply( // append + cache, + expandEvent(abstractEvent) // add individual expanded events to the cache + ); + } + } + } + + decrementPendingSourceCnt(); + } + }); + } + + + function rejectEventSource(source) { + var wasPending = source._status === 'pending'; + + source._status = 'rejected'; + + if (wasPending) { + decrementPendingSourceCnt(); + } + } + + + function decrementPendingSourceCnt() { + pendingSourceCnt--; + if (!pendingSourceCnt) { + reportEventChange(cache); // updates prunedCache + t.trigger('eventsReceived', prunedCache); + } + } + + + function _fetchEventSource(source, callback) { + var i; + var fetchers = FC.sourceFetchers; + var res; + + for (i=0; i= eventStart && innerSpan.end <= eventEnd; +}; + + +// Returns a list of events that the given event should be compared against when being considered for a move to +// the specified span. Attached to the Calendar's prototype because EventManager is a mixin for a Calendar. +Calendar.prototype.getPeerEvents = function(span, event) { + var cache = this.getEventCache(); + var peerEvents = []; + var i, otherEvent; + + for (i = 0; i < cache.length; i++) { + otherEvent = cache[i]; + if ( + !event || + event._id !== otherEvent._id // don't compare the event to itself or other related [repeating] events + ) { + peerEvents.push(otherEvent); + } + } + + return peerEvents; +}; + + +// updates the "backup" properties, which are preserved in order to compute diffs later on. +function backupEventDates(event) { + event._allDay = event.allDay; + event._start = event.start.clone(); + event._end = event.end ? event.end.clone() : null; +} + + +/* Overlapping / Constraining +-----------------------------------------------------------------------------------------*/ + + +// Determines if the given event can be relocated to the given span (unzoned start/end with other misc data) +Calendar.prototype.isEventSpanAllowed = function(span, event) { + var source = event.source || {}; + + var constraint = firstDefined( + event.constraint, + source.constraint, + this.options.eventConstraint + ); + + var overlap = firstDefined( + event.overlap, + source.overlap, + this.options.eventOverlap + ); + + return this.isSpanAllowed(span, constraint, overlap, event) && + (!this.options.eventAllow || this.options.eventAllow(span, event) !== false); +}; + + +// Determines if an external event can be relocated to the given span (unzoned start/end with other misc data) +Calendar.prototype.isExternalSpanAllowed = function(eventSpan, eventLocation, eventProps) { + var eventInput; + var event; + + // note: very similar logic is in View's reportExternalDrop + if (eventProps) { + eventInput = $.extend({}, eventProps, eventLocation); + event = this.expandEvent( + this.buildEventFromInput(eventInput) + )[0]; + } + + if (event) { + return this.isEventSpanAllowed(eventSpan, event); + } + else { // treat it as a selection + + return this.isSelectionSpanAllowed(eventSpan); + } +}; + + +// Determines the given span (unzoned start/end with other misc data) can be selected. +Calendar.prototype.isSelectionSpanAllowed = function(span) { + return this.isSpanAllowed(span, this.options.selectConstraint, this.options.selectOverlap) && + (!this.options.selectAllow || this.options.selectAllow(span) !== false); +}; + + +// Returns true if the given span (caused by an event drop/resize or a selection) is allowed to exist +// according to the constraint/overlap settings. +// `event` is not required if checking a selection. +Calendar.prototype.isSpanAllowed = function(span, constraint, overlap, event) { + var constraintEvents; + var anyContainment; + var peerEvents; + var i, peerEvent; + var peerOverlap; + + // the range must be fully contained by at least one of produced constraint events + if (constraint != null) { + + // not treated as an event! intermediate data structure + // TODO: use ranges in the future + constraintEvents = this.constraintToEvents(constraint); + if (constraintEvents) { // not invalid + + anyContainment = false; + for (i = 0; i < constraintEvents.length; i++) { + if (this.spanContainsSpan(constraintEvents[i], span)) { + anyContainment = true; + break; + } + } + + if (!anyContainment) { + return false; + } + } + } + + peerEvents = this.getPeerEvents(span, event); + + for (i = 0; i < peerEvents.length; i++) { + peerEvent = peerEvents[i]; + + // there needs to be an actual intersection before disallowing anything + if (this.eventIntersectsRange(peerEvent, span)) { + + // evaluate overlap for the given range and short-circuit if necessary + if (overlap === false) { + return false; + } + // if the event's overlap is a test function, pass the peer event in question as the first param + else if (typeof overlap === 'function' && !overlap(peerEvent, event)) { + return false; + } + + // if we are computing if the given range is allowable for an event, consider the other event's + // EventObject-specific or Source-specific `overlap` property + if (event) { + peerOverlap = firstDefined( + peerEvent.overlap, + (peerEvent.source || {}).overlap + // we already considered the global `eventOverlap` + ); + if (peerOverlap === false) { + return false; + } + // if the peer event's overlap is a test function, pass the subject event as the first param + if (typeof peerOverlap === 'function' && !peerOverlap(event, peerEvent)) { + return false; + } + } + } + } + + return true; +}; + + +// Given an event input from the API, produces an array of event objects. Possible event inputs: +// 'businessHours' +// An event ID (number or string) +// An object with specific start/end dates or a recurring event (like what businessHours accepts) +Calendar.prototype.constraintToEvents = function(constraintInput) { + + if (constraintInput === 'businessHours') { + return this.getCurrentBusinessHourEvents(); + } + + if (typeof constraintInput === 'object') { + if (constraintInput.start != null) { // needs to be event-like input + return this.expandEvent(this.buildEventFromInput(constraintInput)); + } + else { + return null; // invalid + } + } + + return this.clientEvents(constraintInput); // probably an ID +}; + + +// Does the event's date range intersect with the given range? +// start/end already assumed to have stripped zones :( +Calendar.prototype.eventIntersectsRange = function(event, range) { + var eventStart = event.start.clone().stripZone(); + var eventEnd = this.getEventEnd(event).stripZone(); + + return range.start < eventEnd && range.end > eventStart; +}; + + +/* Business Hours +-----------------------------------------------------------------------------------------*/ + +var BUSINESS_HOUR_EVENT_DEFAULTS = { + id: '_fcBusinessHours', // will relate events from different calls to expandEvent + start: '09:00', + end: '17:00', + dow: [ 1, 2, 3, 4, 5 ], // monday - friday + rendering: 'inverse-background' + // classNames are defined in businessHoursSegClasses +}; + +// Return events objects for business hours within the current view. +// Abuse of our event system :( +Calendar.prototype.getCurrentBusinessHourEvents = function(wholeDay) { + return this.computeBusinessHourEvents(wholeDay, this.options.businessHours); +}; + +// Given a raw input value from options, return events objects for business hours within the current view. +Calendar.prototype.computeBusinessHourEvents = function(wholeDay, input) { + if (input === true) { + return this.expandBusinessHourEvents(wholeDay, [ {} ]); + } + else if ($.isPlainObject(input)) { + return this.expandBusinessHourEvents(wholeDay, [ input ]); + } + else if ($.isArray(input)) { + return this.expandBusinessHourEvents(wholeDay, input, true); + } + else { + return []; + } +}; + +// inputs expected to be an array of objects. +// if ignoreNoDow is true, will ignore entries that don't specify a day-of-week (dow) key. +Calendar.prototype.expandBusinessHourEvents = function(wholeDay, inputs, ignoreNoDow) { + var view = this.getView(); + var events = []; + var i, input; + + for (i = 0; i < inputs.length; i++) { + input = inputs[i]; + + if (ignoreNoDow && !input.dow) { + continue; + } + + // give defaults. will make a copy + input = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, input); + + // if a whole-day series is requested, clear the start/end times + if (wholeDay) { + input.start = null; + input.end = null; + } + + events.push.apply(events, // append + this.expandEvent( + this.buildEventFromInput(input), + view.start, + view.end + ) + ); + } + + return events; +}; + +;; + +/* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells. +----------------------------------------------------------------------------------------------------------------------*/ +// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. +// It is responsible for managing width/height. + +var BasicView = FC.BasicView = View.extend({ + + scroller: null, + + dayGridClass: DayGrid, // class the dayGrid will be instantiated from (overridable by subclasses) + dayGrid: null, // the main subcomponent that does most of the heavy lifting + + dayNumbersVisible: false, // display day numbers on each day cell? + colWeekNumbersVisible: false, // display week numbers along the side? + cellWeekNumbersVisible: false, // display week numbers in day cell? + + weekNumberWidth: null, // width of all the week-number cells running down the side + + headContainerEl: null, // div that hold's the dayGrid's rendered date header + headRowEl: null, // the fake row element of the day-of-week header + + + initialize: function() { + this.dayGrid = this.instantiateDayGrid(); + + this.scroller = new Scroller({ + overflowX: 'hidden', + overflowY: 'auto' + }); + }, + + + // Generates the DayGrid object this view needs. Draws from this.dayGridClass + instantiateDayGrid: function() { + // generate a subclass on the fly with BasicView-specific behavior + // TODO: cache this subclass + var subclass = this.dayGridClass.extend(basicDayGridMethods); + + return new subclass(this); + }, + + + // Sets the display range and computes all necessary dates + setRange: function(range) { + View.prototype.setRange.call(this, range); // call the super-method + + this.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange + this.dayGrid.setRange(range); + }, + + + // Compute the value to feed into setRange. Overrides superclass. + computeRange: function(date) { + var range = View.prototype.computeRange.call(this, date); // get value from the super-method + + // year and month views should be aligned with weeks. this is already done for week + if (/year|month/.test(range.intervalUnit)) { + range.start.startOf('week'); + range.start = this.skipHiddenDays(range.start); + + // make end-of-week if not already + if (range.end.weekday()) { + range.end.add(1, 'week').startOf('week'); + range.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards + } + } + + return range; + }, + + + // Renders the view into `this.el`, which should already be assigned + renderDates: function() { + + this.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible + if (this.opt('weekNumbers')) { + if (this.opt('weekNumbersWithinDays')) { + this.cellWeekNumbersVisible = true; + this.colWeekNumbersVisible = false; + } + else { + this.cellWeekNumbersVisible = false; + this.colWeekNumbersVisible = true; + }; + } + this.dayGrid.numbersVisible = this.dayNumbersVisible || + this.cellWeekNumbersVisible || this.colWeekNumbersVisible; + + this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml()); + this.renderHead(); + + this.scroller.render(); + var dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container'); + var dayGridEl = $('
          ').appendTo(dayGridContainerEl); + this.el.find('.fc-body > tr > td').append(dayGridContainerEl); + + this.dayGrid.setElement(dayGridEl); + this.dayGrid.renderDates(this.hasRigidRows()); + }, + + + // render the day-of-week headers + renderHead: function() { + this.headContainerEl = + this.el.find('.fc-head-container') + .html(this.dayGrid.renderHeadHtml()); + this.headRowEl = this.headContainerEl.find('.fc-row'); + }, + + + // Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering, + // always completely kill the dayGrid's rendering. + unrenderDates: function() { + this.dayGrid.unrenderDates(); + this.dayGrid.removeElement(); + this.scroller.destroy(); + }, + + + renderBusinessHours: function() { + this.dayGrid.renderBusinessHours(); + }, + + + unrenderBusinessHours: function() { + this.dayGrid.unrenderBusinessHours(); + }, + + + // Builds the HTML skeleton for the view. + // The day-grid component will render inside of a container defined by this HTML. + renderSkeletonHtml: function() { + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
          '; + }, + + + // Generates an HTML attribute string for setting the width of the week number column, if it is known + weekNumberStyleAttr: function() { + if (this.weekNumberWidth !== null) { + return 'style="width:' + this.weekNumberWidth + 'px"'; + } + return ''; + }, + + + // Determines whether each row should have a constant height + hasRigidRows: function() { + var eventLimit = this.opt('eventLimit'); + return eventLimit && typeof eventLimit !== 'number'; + }, + + + /* Dimensions + ------------------------------------------------------------------------------------------------------------------*/ + + + // Refreshes the horizontal dimensions of the view + updateWidth: function() { + if (this.colWeekNumbersVisible) { + // Make sure all week number cells running down the side have the same width. + // Record the width for cells created later. + this.weekNumberWidth = matchCellWidths( + this.el.find('.fc-week-number') + ); + } + }, + + + // Adjusts the vertical dimensions of the view to the specified values + setHeight: function(totalHeight, isAuto) { + var eventLimit = this.opt('eventLimit'); + var scrollerHeight; + var scrollbarWidths; + + // reset all heights to be natural + this.scroller.clear(); + uncompensateScroll(this.headRowEl); + + this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed + + // is the event limit a constant level number? + if (eventLimit && typeof eventLimit === 'number') { + this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after + } + + // distribute the height to the rows + // (totalHeight is a "recommended" value if isAuto) + scrollerHeight = this.computeScrollerHeight(totalHeight); + this.setGridHeight(scrollerHeight, isAuto); + + // is the event limit dynamically calculated? + if (eventLimit && typeof eventLimit !== 'number') { + this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set + } + + if (!isAuto) { // should we force dimensions of the scroll container? + + this.scroller.setHeight(scrollerHeight); + scrollbarWidths = this.scroller.getScrollbarWidths(); + + if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? + + compensateScroll(this.headRowEl, scrollbarWidths); + + // doing the scrollbar compensation might have created text overflow which created more height. redo + scrollerHeight = this.computeScrollerHeight(totalHeight); + this.scroller.setHeight(scrollerHeight); + } + + // guarantees the same scrollbar widths + this.scroller.lockOverflow(scrollbarWidths); + } + }, + + + // given a desired total height of the view, returns what the height of the scroller should be + computeScrollerHeight: function(totalHeight) { + return totalHeight - + subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller + }, + + + // Sets the height of just the DayGrid component in this view + setGridHeight: function(height, isAuto) { + if (isAuto) { + undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding + } + else { + distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows + } + }, + + + /* Scroll + ------------------------------------------------------------------------------------------------------------------*/ + + + computeInitialScroll: function() { + return { top: 0 }; + }, + + + queryScroll: function() { + return { top: this.scroller.getScrollTop() }; + }, + + + setScroll: function(scroll) { + this.scroller.setScrollTop(scroll.top); + }, + + + /* Hit Areas + ------------------------------------------------------------------------------------------------------------------*/ + // forward all hit-related method calls to dayGrid + + + prepareHits: function() { + this.dayGrid.prepareHits(); + }, + + + releaseHits: function() { + this.dayGrid.releaseHits(); + }, + + + queryHit: function(left, top) { + return this.dayGrid.queryHit(left, top); + }, + + + getHitSpan: function(hit) { + return this.dayGrid.getHitSpan(hit); + }, + + + getHitEl: function(hit) { + return this.dayGrid.getHitEl(hit); + }, + + + /* Events + ------------------------------------------------------------------------------------------------------------------*/ + + + // Renders the given events onto the view and populates the segments array + renderEvents: function(events) { + this.dayGrid.renderEvents(events); + + this.updateHeight(); // must compensate for events that overflow the row + }, + + + // Retrieves all segment objects that are rendered in the view + getEventSegs: function() { + return this.dayGrid.getEventSegs(); + }, + + + // Unrenders all event elements and clears internal segment data + unrenderEvents: function() { + this.dayGrid.unrenderEvents(); + + // we DON'T need to call updateHeight() because + // a renderEvents() call always happens after this, which will eventually call updateHeight() + }, + + + /* Dragging (for both events and external elements) + ------------------------------------------------------------------------------------------------------------------*/ + + + // A returned value of `true` signals that a mock "helper" event has been rendered. + renderDrag: function(dropLocation, seg) { + return this.dayGrid.renderDrag(dropLocation, seg); + }, + + + unrenderDrag: function() { + this.dayGrid.unrenderDrag(); + }, + + + /* Selection + ------------------------------------------------------------------------------------------------------------------*/ + + + // Renders a visual indication of a selection + renderSelection: function(span) { + this.dayGrid.renderSelection(span); + }, + + + // Unrenders a visual indications of a selection + unrenderSelection: function() { + this.dayGrid.unrenderSelection(); + } + +}); + + +// Methods that will customize the rendering behavior of the BasicView's dayGrid +var basicDayGridMethods = { + + + // Generates the HTML that will go before the day-of week header cells + renderHeadIntroHtml: function() { + var view = this.view; + + if (view.colWeekNumbersVisible) { + return '' + + '' + + '' + // needed for matchCellWidths + htmlEscape(view.opt('weekNumberTitle')) + + '' + + ''; + } + + return ''; + }, + + + // Generates the HTML that will go before content-skeleton cells that display the day/week numbers + renderNumberIntroHtml: function(row) { + var view = this.view; + var weekStart = this.getCellDate(row, 0); + + if (view.colWeekNumbersVisible) { + return '' + + '' + + view.buildGotoAnchorHtml( // aside from link, important for matchCellWidths + { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, + weekStart.format('w') // inner HTML + ) + + ''; + } + + return ''; + }, + + + // Generates the HTML that goes before the day bg cells for each day-row + renderBgIntroHtml: function() { + var view = this.view; + + if (view.colWeekNumbersVisible) { + return ''; + } + + return ''; + }, + + + // Generates the HTML that goes before every other type of row generated by DayGrid. + // Affects helper-skeleton and highlight-skeleton rows. + renderIntroHtml: function() { + var view = this.view; + + if (view.colWeekNumbersVisible) { + return ''; + } + + return ''; + } + +}; + +;; + +/* A month view with day cells running in rows (one-per-week) and columns +----------------------------------------------------------------------------------------------------------------------*/ + +var MonthView = FC.MonthView = BasicView.extend({ + + // Produces information about what range to display + computeRange: function(date) { + var range = BasicView.prototype.computeRange.call(this, date); // get value from super-method + var rowCnt; + + // ensure 6 weeks + if (this.isFixedWeeks()) { + rowCnt = Math.ceil(range.end.diff(range.start, 'weeks', true)); // could be partial weeks due to hiddenDays + range.end.add(6 - rowCnt, 'weeks'); + } + + return range; + }, + + + // Overrides the default BasicView behavior to have special multi-week auto-height logic + setGridHeight: function(height, isAuto) { + + // if auto, make the height of each row the height that it would be if there were 6 weeks + if (isAuto) { + height *= this.rowCnt / 6; + } + + distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows + }, + + + isFixedWeeks: function() { + return this.opt('fixedWeekCount'); + } + +}); + +;; + +fcViews.basic = { + 'class': BasicView +}; + +fcViews.basicDay = { + type: 'basic', + duration: { days: 1 } +}; + +fcViews.basicWeek = { + type: 'basic', + duration: { weeks: 1 } +}; + +fcViews.month = { + 'class': MonthView, + duration: { months: 1 }, // important for prev/next + defaults: { + fixedWeekCount: true + } +}; +;; + +/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically. +----------------------------------------------------------------------------------------------------------------------*/ +// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on). +// Responsible for managing width/height. + +var AgendaView = FC.AgendaView = View.extend({ + + scroller: null, + + timeGridClass: TimeGrid, // class used to instantiate the timeGrid. subclasses can override + timeGrid: null, // the main time-grid subcomponent of this view + + dayGridClass: DayGrid, // class used to instantiate the dayGrid. subclasses can override + dayGrid: null, // the "all-day" subcomponent. if all-day is turned off, this will be null + + axisWidth: null, // the width of the time axis running down the side + + headContainerEl: null, // div that hold's the timeGrid's rendered date header + noScrollRowEls: null, // set of fake row elements that must compensate when scroller has scrollbars + + // when the time-grid isn't tall enough to occupy the given height, we render an
          underneath + bottomRuleEl: null, + + + initialize: function() { + this.timeGrid = this.instantiateTimeGrid(); + + if (this.opt('allDaySlot')) { // should we display the "all-day" area? + this.dayGrid = this.instantiateDayGrid(); // the all-day subcomponent of this view + } + + this.scroller = new Scroller({ + overflowX: 'hidden', + overflowY: 'auto' + }); + }, + + + // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass + instantiateTimeGrid: function() { + var subclass = this.timeGridClass.extend(agendaTimeGridMethods); + + return new subclass(this); + }, + + + // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass + instantiateDayGrid: function() { + var subclass = this.dayGridClass.extend(agendaDayGridMethods); + + return new subclass(this); + }, + + + /* Rendering + ------------------------------------------------------------------------------------------------------------------*/ + + + // Sets the display range and computes all necessary dates + setRange: function(range) { + View.prototype.setRange.call(this, range); // call the super-method + + this.timeGrid.setRange(range); + if (this.dayGrid) { + this.dayGrid.setRange(range); + } + }, + + + // Renders the view into `this.el`, which has already been assigned + renderDates: function() { + + this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml()); + this.renderHead(); + + this.scroller.render(); + var timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container'); + var timeGridEl = $('
          ').appendTo(timeGridWrapEl); + this.el.find('.fc-body > tr > td').append(timeGridWrapEl); + + this.timeGrid.setElement(timeGridEl); + this.timeGrid.renderDates(); + + // the
          that sometimes displays under the time-grid + this.bottomRuleEl = $('
          ') + .appendTo(this.timeGrid.el); // inject it into the time-grid + + if (this.dayGrid) { + this.dayGrid.setElement(this.el.find('.fc-day-grid')); + this.dayGrid.renderDates(); + + // have the day-grid extend it's coordinate area over the
          dividing the two grids + this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight(); + } + + this.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller + }, + + + // render the day-of-week headers + renderHead: function() { + this.headContainerEl = + this.el.find('.fc-head-container') + .html(this.timeGrid.renderHeadHtml()); + }, + + + // Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering, + // always completely kill each grid's rendering. + unrenderDates: function() { + this.timeGrid.unrenderDates(); + this.timeGrid.removeElement(); + + if (this.dayGrid) { + this.dayGrid.unrenderDates(); + this.dayGrid.removeElement(); + } + + this.scroller.destroy(); + }, + + + // Builds the HTML skeleton for the view. + // The day-grid and time-grid components will render inside containers defined by this HTML. + renderSkeletonHtml: function() { + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
          ' + + (this.dayGrid ? + '
          ' + + '
          ' : + '' + ) + + '
          '; + }, + + + // Generates an HTML attribute string for setting the width of the axis, if it is known + axisStyleAttr: function() { + if (this.axisWidth !== null) { + return 'style="width:' + this.axisWidth + 'px"'; + } + return ''; + }, + + + /* Business Hours + ------------------------------------------------------------------------------------------------------------------*/ + + + renderBusinessHours: function() { + this.timeGrid.renderBusinessHours(); + + if (this.dayGrid) { + this.dayGrid.renderBusinessHours(); + } + }, + + + unrenderBusinessHours: function() { + this.timeGrid.unrenderBusinessHours(); + + if (this.dayGrid) { + this.dayGrid.unrenderBusinessHours(); + } + }, + + + /* Now Indicator + ------------------------------------------------------------------------------------------------------------------*/ + + + getNowIndicatorUnit: function() { + return this.timeGrid.getNowIndicatorUnit(); + }, + + + renderNowIndicator: function(date) { + this.timeGrid.renderNowIndicator(date); + }, + + + unrenderNowIndicator: function() { + this.timeGrid.unrenderNowIndicator(); + }, + + + /* Dimensions + ------------------------------------------------------------------------------------------------------------------*/ + + + updateSize: function(isResize) { + this.timeGrid.updateSize(isResize); + + View.prototype.updateSize.call(this, isResize); // call the super-method + }, + + + // Refreshes the horizontal dimensions of the view + updateWidth: function() { + // make all axis cells line up, and record the width so newly created axis cells will have it + this.axisWidth = matchCellWidths(this.el.find('.fc-axis')); + }, + + + // Adjusts the vertical dimensions of the view to the specified values + setHeight: function(totalHeight, isAuto) { + var eventLimit; + var scrollerHeight; + var scrollbarWidths; + + // reset all dimensions back to the original state + this.bottomRuleEl.hide(); // .show() will be called later if this
          is necessary + this.scroller.clear(); // sets height to 'auto' and clears overflow + uncompensateScroll(this.noScrollRowEls); + + // limit number of events in the all-day area + if (this.dayGrid) { + this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed + + eventLimit = this.opt('eventLimit'); + if (eventLimit && typeof eventLimit !== 'number') { + eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number + } + if (eventLimit) { + this.dayGrid.limitRows(eventLimit); + } + } + + if (!isAuto) { // should we force dimensions of the scroll container? + + scrollerHeight = this.computeScrollerHeight(totalHeight); + this.scroller.setHeight(scrollerHeight); + scrollbarWidths = this.scroller.getScrollbarWidths(); + + if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? + + // make the all-day and header rows lines up + compensateScroll(this.noScrollRowEls, scrollbarWidths); + + // the scrollbar compensation might have changed text flow, which might affect height, so recalculate + // and reapply the desired height to the scroller. + scrollerHeight = this.computeScrollerHeight(totalHeight); + this.scroller.setHeight(scrollerHeight); + } + + // guarantees the same scrollbar widths + this.scroller.lockOverflow(scrollbarWidths); + + // if there's any space below the slats, show the horizontal rule. + // this won't cause any new overflow, because lockOverflow already called. + if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) { + this.bottomRuleEl.show(); + } + } + }, + + + // given a desired total height of the view, returns what the height of the scroller should be + computeScrollerHeight: function(totalHeight) { + return totalHeight - + subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller + }, + + + /* Scroll + ------------------------------------------------------------------------------------------------------------------*/ + + + // Computes the initial pre-configured scroll state prior to allowing the user to change it + computeInitialScroll: function() { + var scrollTime = moment.duration(this.opt('scrollTime')); + var top = this.timeGrid.computeTimeTop(scrollTime); + + // zoom can give weird floating-point values. rather scroll a little bit further + top = Math.ceil(top); + + if (top) { + top++; // to overcome top border that slots beyond the first have. looks better + } + + return { top: top }; + }, + + + queryScroll: function() { + return { top: this.scroller.getScrollTop() }; + }, + + + setScroll: function(scroll) { + this.scroller.setScrollTop(scroll.top); + }, + + + /* Hit Areas + ------------------------------------------------------------------------------------------------------------------*/ + // forward all hit-related method calls to the grids (dayGrid might not be defined) + + + prepareHits: function() { + this.timeGrid.prepareHits(); + if (this.dayGrid) { + this.dayGrid.prepareHits(); + } + }, + + + releaseHits: function() { + this.timeGrid.releaseHits(); + if (this.dayGrid) { + this.dayGrid.releaseHits(); + } + }, + + + queryHit: function(left, top) { + var hit = this.timeGrid.queryHit(left, top); + + if (!hit && this.dayGrid) { + hit = this.dayGrid.queryHit(left, top); + } + + return hit; + }, + + + getHitSpan: function(hit) { + // TODO: hit.component is set as a hack to identify where the hit came from + return hit.component.getHitSpan(hit); + }, + + + getHitEl: function(hit) { + // TODO: hit.component is set as a hack to identify where the hit came from + return hit.component.getHitEl(hit); + }, + + + /* Events + ------------------------------------------------------------------------------------------------------------------*/ + + + // Renders events onto the view and populates the View's segment array + renderEvents: function(events) { + var dayEvents = []; + var timedEvents = []; + var daySegs = []; + var timedSegs; + var i; + + // separate the events into all-day and timed + for (i = 0; i < events.length; i++) { + if (events[i].allDay) { + dayEvents.push(events[i]); + } + else { + timedEvents.push(events[i]); + } + } + + // render the events in the subcomponents + timedSegs = this.timeGrid.renderEvents(timedEvents); + if (this.dayGrid) { + daySegs = this.dayGrid.renderEvents(dayEvents); + } + + // the all-day area is flexible and might have a lot of events, so shift the height + this.updateHeight(); + }, + + + // Retrieves all segment objects that are rendered in the view + getEventSegs: function() { + return this.timeGrid.getEventSegs().concat( + this.dayGrid ? this.dayGrid.getEventSegs() : [] + ); + }, + + + // Unrenders all event elements and clears internal segment data + unrenderEvents: function() { + + // unrender the events in the subcomponents + this.timeGrid.unrenderEvents(); + if (this.dayGrid) { + this.dayGrid.unrenderEvents(); + } + + // we DON'T need to call updateHeight() because + // a renderEvents() call always happens after this, which will eventually call updateHeight() + }, + + + /* Dragging (for events and external elements) + ------------------------------------------------------------------------------------------------------------------*/ + + + // A returned value of `true` signals that a mock "helper" event has been rendered. + renderDrag: function(dropLocation, seg) { + if (dropLocation.start.hasTime()) { + return this.timeGrid.renderDrag(dropLocation, seg); + } + else if (this.dayGrid) { + return this.dayGrid.renderDrag(dropLocation, seg); + } + }, + + + unrenderDrag: function() { + this.timeGrid.unrenderDrag(); + if (this.dayGrid) { + this.dayGrid.unrenderDrag(); + } + }, + + + /* Selection + ------------------------------------------------------------------------------------------------------------------*/ + + + // Renders a visual indication of a selection + renderSelection: function(span) { + if (span.start.hasTime() || span.end.hasTime()) { + this.timeGrid.renderSelection(span); + } + else if (this.dayGrid) { + this.dayGrid.renderSelection(span); + } + }, + + + // Unrenders a visual indications of a selection + unrenderSelection: function() { + this.timeGrid.unrenderSelection(); + if (this.dayGrid) { + this.dayGrid.unrenderSelection(); + } + } + +}); + + +// Methods that will customize the rendering behavior of the AgendaView's timeGrid +// TODO: move into TimeGrid +var agendaTimeGridMethods = { + + + // Generates the HTML that will go before the day-of week header cells + renderHeadIntroHtml: function() { + var view = this.view; + var weekText; + + if (view.opt('weekNumbers')) { + weekText = this.start.format(view.opt('smallWeekFormat')); + + return '' + + '' + + view.buildGotoAnchorHtml( // aside from link, important for matchCellWidths + { date: this.start, type: 'week', forceOff: this.colCnt > 1 }, + htmlEscape(weekText) // inner HTML + ) + + ''; + } + else { + return ''; + } + }, + + + // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column. + renderBgIntroHtml: function() { + var view = this.view; + + return ''; + }, + + + // Generates the HTML that goes before all other types of cells. + // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. + renderIntroHtml: function() { + var view = this.view; + + return ''; + } + +}; + + +// Methods that will customize the rendering behavior of the AgendaView's dayGrid +var agendaDayGridMethods = { + + + // Generates the HTML that goes before the all-day cells + renderBgIntroHtml: function() { + var view = this.view; + + return '' + + '' + + '' + // needed for matchCellWidths + view.getAllDayHtml() + + '' + + ''; + }, + + + // Generates the HTML that goes before all other types of cells. + // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. + renderIntroHtml: function() { + var view = this.view; + + return ''; + } + +}; + +;; + +var AGENDA_ALL_DAY_EVENT_LIMIT = 5; + +// potential nice values for the slot-duration and interval-duration +// from largest to smallest +var AGENDA_STOCK_SUB_DURATIONS = [ + { hours: 1 }, + { minutes: 30 }, + { minutes: 15 }, + { seconds: 30 }, + { seconds: 15 } +]; + +fcViews.agenda = { + 'class': AgendaView, + defaults: { + allDaySlot: true, + slotDuration: '00:30:00', + minTime: '00:00:00', + maxTime: '24:00:00', + slotEventOverlap: true // a bad name. confused with overlap/constraint system + } +}; + +fcViews.agendaDay = { + type: 'agenda', + duration: { days: 1 } +}; + +fcViews.agendaWeek = { + type: 'agenda', + duration: { weeks: 1 } +}; +;; + +/* +Responsible for the scroller, and forwarding event-related actions into the "grid" +*/ +var ListView = View.extend({ + + grid: null, + scroller: null, + + initialize: function() { + this.grid = new ListViewGrid(this); + this.scroller = new Scroller({ + overflowX: 'hidden', + overflowY: 'auto' + }); + }, + + setRange: function(range) { + View.prototype.setRange.call(this, range); // super + + this.grid.setRange(range); // needs to process range-related options + }, + + renderSkeleton: function() { + this.el.addClass( + 'fc-list-view ' + + this.widgetContentClass + ); + + this.scroller.render(); + this.scroller.el.appendTo(this.el); + + this.grid.setElement(this.scroller.scrollEl); + }, + + unrenderSkeleton: function() { + this.scroller.destroy(); // will remove the Grid too + }, + + setHeight: function(totalHeight, isAuto) { + this.scroller.setHeight(this.computeScrollerHeight(totalHeight)); + }, + + computeScrollerHeight: function(totalHeight) { + return totalHeight - + subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller + }, + + renderEvents: function(events) { + this.grid.renderEvents(events); + }, + + unrenderEvents: function() { + this.grid.unrenderEvents(); + }, + + isEventResizable: function(event) { + return false; + }, + + isEventDraggable: function(event) { + return false; + } + +}); + +/* +Responsible for event rendering and user-interaction. +Its "el" is the inner-content of the above view's scroller. +*/ +var ListViewGrid = Grid.extend({ + + segSelector: '.fc-list-item', // which elements accept event actions + hasDayInteractions: false, // no day selection or day clicking + + // slices by day + spanToSegs: function(span) { + var view = this.view; + var dayStart = view.start.clone().time(0); // timed, so segs get times! + var dayIndex = 0; + var seg; + var segs = []; + + while (dayStart < view.end) { + + seg = intersectRanges(span, { + start: dayStart, + end: dayStart.clone().add(1, 'day') + }); + + if (seg) { + seg.dayIndex = dayIndex; + segs.push(seg); + } + + dayStart.add(1, 'day'); + dayIndex++; + + // detect when span won't go fully into the next day, + // and mutate the latest seg to the be the end. + if ( + seg && !seg.isEnd && span.end.hasTime() && + span.end < dayStart.clone().add(this.view.nextDayThreshold) + ) { + seg.end = span.end.clone(); + seg.isEnd = true; + break; + } + } + + return segs; + }, + + // like "4:00am" + computeEventTimeFormat: function() { + return this.view.opt('mediumTimeFormat'); + }, + + // for events with a url, the whole should be clickable, + // but it's impossible to wrap with an tag. simulate this. + handleSegClick: function(seg, ev) { + var url; + + Grid.prototype.handleSegClick.apply(this, arguments); // super. might prevent the default action + + // not clicking on or within an with an href + if (!$(ev.target).closest('a[href]').length) { + url = seg.event.url; + if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler + window.location.href = url; // simulate link click + } + } + }, + + // returns list of foreground segs that were actually rendered + renderFgSegs: function(segs) { + segs = this.renderFgSegEls(segs); // might filter away hidden events + + if (!segs.length) { + this.renderEmptyMessage(); + } + else { + this.renderSegList(segs); + } + + return segs; + }, + + renderEmptyMessage: function() { + this.el.html( + '
          ' + // TODO: try less wraps + '
          ' + + '
          ' + + htmlEscape(this.view.opt('noEventsMessage')) + + '
          ' + + '
          ' + + '
          ' + ); + }, + + // render the event segments in the view + renderSegList: function(allSegs) { + var segsByDay = this.groupSegsByDay(allSegs); // sparse array + var dayIndex; + var daySegs; + var i; + var tableEl = $('
          '); + var tbodyEl = tableEl.find('tbody'); + + for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) { + daySegs = segsByDay[dayIndex]; + if (daySegs) { // sparse array, so might be undefined + + // append a day header + tbodyEl.append(this.dayHeaderHtml( + this.view.start.clone().add(dayIndex, 'days') + )); + + this.sortEventSegs(daySegs); + + for (i = 0; i < daySegs.length; i++) { + tbodyEl.append(daySegs[i].el); // append event row + } + } + } + + this.el.empty().append(tableEl); + }, + + // Returns a sparse array of arrays, segs grouped by their dayIndex + groupSegsByDay: function(segs) { + var segsByDay = []; // sparse array + var i, seg; + + for (i = 0; i < segs.length; i++) { + seg = segs[i]; + (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = [])) + .push(seg); + } + + return segsByDay; + }, + + // generates the HTML for the day headers that live amongst the event rows + dayHeaderHtml: function(dayDate) { + var view = this.view; + var mainFormat = view.opt('listDayFormat'); + var altFormat = view.opt('listDayAltFormat'); + + return '' + + '' + + (mainFormat ? + view.buildGotoAnchorHtml( + dayDate, + { 'class': 'fc-list-heading-main' }, + htmlEscape(dayDate.format(mainFormat)) // inner HTML + ) : + '') + + (altFormat ? + view.buildGotoAnchorHtml( + dayDate, + { 'class': 'fc-list-heading-alt' }, + htmlEscape(dayDate.format(altFormat)) // inner HTML + ) : + '') + + '' + + ''; + }, + + // generates the HTML for a single event row + fgSegHtml: function(seg) { + var view = this.view; + var classes = [ 'fc-list-item' ].concat(this.getSegCustomClasses(seg)); + var bgColor = this.getSegBackgroundColor(seg); + var event = seg.event; + var url = event.url; + var timeHtml; + + if (event.allDay) { + timeHtml = view.getAllDayHtml(); + } + else if (view.isMultiDayEvent(event)) { // if the event appears to span more than one day + if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day + timeHtml = htmlEscape(this.getEventTimeText(seg)); + } + else { // inner segment that lasts the whole day + timeHtml = view.getAllDayHtml(); + } + } + else { + // Display the normal time text for the *event's* times + timeHtml = htmlEscape(this.getEventTimeText(event)); + } + + if (url) { + classes.push('fc-has-url'); + } + + return '' + + (this.displayEventTime ? + '' + + (timeHtml || '') + + '' : + '') + + '' + + '' + + '' + + '' + + '' + + htmlEscape(seg.event.title || '') + + '
          ' + + '' + + ''; + } + +}); + +;; + +fcViews.list = { + 'class': ListView, + buttonTextKey: 'list', // what to lookup in locale files + defaults: { + buttonText: 'list', // text to display for English + listDayFormat: 'LL', // like "January 1, 2016" + noEventsMessage: 'No events to display' + } +}; + +fcViews.listDay = { + type: 'list', + duration: { days: 1 }, + defaults: { + listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header + } +}; + +fcViews.listWeek = { + type: 'list', + duration: { weeks: 1 }, + defaults: { + listDayFormat: 'dddd', // day-of-week is more important + listDayAltFormat: 'LL' + } +}; + +fcViews.listMonth = { + type: 'list', + duration: { month: 1 }, + defaults: { + listDayAltFormat: 'dddd' // day-of-week is nice-to-have + } +}; + +fcViews.listYear = { + type: 'list', + duration: { year: 1 }, + defaults: { + listDayAltFormat: 'dddd' // day-of-week is nice-to-have + } +}; + +;; + +return FC; // export for Node/CommonJS +}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/fullcalendar.min.css b/public/theme/fullcalendar/dist/fullcalendar.min.css new file mode 100644 index 0000000..1339120 --- /dev/null +++ b/public/theme/fullcalendar/dist/fullcalendar.min.css @@ -0,0 +1,5 @@ +/*! + * FullCalendar v3.1.0 Stylesheet + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */.fc-icon,body .fc{font-size:1em}.fc-button-group,.fc-icon{display:inline-block}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-icon,.fc-unselectable{-khtml-user-select:none;-webkit-touch-callout:none}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view td.fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-icon{height:1em;line-height:1em;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a[data-goto]{cursor:pointer}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;font-weight:400}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fc-toolbar.fc-header-toolbar{margin-bottom:1em}.fc-toolbar.fc-footer-toolbar{margin-top:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item:hover td{background-color:#f5f5f5}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee} \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/fullcalendar.min.js b/public/theme/fullcalendar/dist/fullcalendar.min.js new file mode 100644 index 0000000..8484b7c --- /dev/null +++ b/public/theme/fullcalendar/dist/fullcalendar.min.js @@ -0,0 +1,10 @@ +/*! + * FullCalendar v3.1.0 + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ +!function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):"object"==typeof exports?module.exports=t(require("jquery"),require("moment")):t(jQuery,moment)}(function(t,e){function n(t){return q(t,$t)}function i(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function r(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function s(){t("body").addClass("fc-not-allowed")}function o(){t("body").removeClass("fc-not-allowed")}function l(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],u=[],c=0;a(e),e.each(function(n,i){var a=n===e.length-1?s:r,d=t(i).outerHeight(!0);d *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function c(t,e){var n,i=t.add(e);return i.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:"",left:""}),n}function d(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function h(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+y(t,"border-left-width")+i.left-(e?e.left:0),s=n.top+y(t,"border-top-width")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+y(t,"border-left-width")+y(t,"padding-left")-(e?e.left:0),r=n.top+y(t,"border-top-width")+y(t,"padding-top")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e=t.innerWidth()-t[0].clientWidth,n={left:0,right:0,top:0,bottom:t.innerHeight()-t[0].clientHeight};return v()&&"rtl"==t.css("direction")?n.left=e:n.right=e,n}function v(){return null===Qt&&(Qt=m()),Qt}function m(){var e=t("
          ").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function y(t,e){return parseFloat(t.css(e))||0}function S(t){return 1==t.which&&!t.ctrlKey}function w(t){if(void 0!==t.pageX)return t.pageX;var e=t.originalEvent.touches;return e?e[0].pageX:void 0}function E(t){if(void 0!==t.pageY)return t.pageY;var e=t.originalEvent.touches;return e?e[0].pageY:void 0}function b(t){return/^touch/.test(t.type)}function D(t){t.addClass("fc-unselectable").on("selectstart",T)}function T(t){t.preventDefault()}function C(t){return!!window.addEventListener&&(window.addEventListener("scroll",t,!0),!0)}function H(t){return!!window.removeEventListener&&(window.removeEventListener("scroll",t,!0),!0)}function R(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.lefta&&o=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),l<=u?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function N(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function G(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function O(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function A(t,e){var n,i,r;for(n=0;n=1&&ot(r)));n++);return i}function V(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function P(t,e,n){var i;return W(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&ot(i)?e.diff(t,"months",!0)/i:e.diff(t,"days",!0)/n.asDays())}function _(t,e){var n,i;return W(t)||W(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&ot(n)&&Math.abs(i)>=1&&ot(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return W(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&ot(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function W(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function U(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function j(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function q(t,e){var n,i,r,s,o,l,a={};if(e)for(n=0;n=0;s--)if(o=t[s][i],"object"==typeof o)r.unshift(o);else if(void 0!==o){a[i]=o;break}r.length&&(a[i]=q(r))}for(n=t.length-1;n>=0;n--){l=t[n];for(i in l)i in a||(a[i]=l[i])}return a}function Z(t){var e=function(){};return e.prototype=t,new e}function $(t,e){for(var n in t)Q(t,n)&&(e[n]=t[n])}function Q(t,e){return Jt.call(t,e)}function X(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function K(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"
          ")}function et(t){return t.replace(/&.*?;/g,"")}function nt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+":"+e)}),n.join(";")}function it(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'="'+tt(e)+'"')}),n.join(" ")}function rt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function st(t,e){return t-e}function ot(t){return t%1===0}function lt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function at(t,e,n){var i,r,s,o,l,a=function(){var u=+new Date-o;uo&&(s=vt(t,e,u,c,n[l]),s!==!1);l--)h=s+h;for(a=o;a<=l;a++)f+=ft(t,n[a]),g+=ft(e,n[a]);return(f||g)&&(p=r?g+i+f:f+i+g),d+p+h}function vt(t,e,n,i,r){var s,o;return"string"==typeof r?r:!!((s=r.token)&&(o=oe[s.charAt(0)],o&&n.isSame(i,o)))&&ct(t,s)}function mt(t){return t in le?le[t]:le[t]=yt(t)}function yt(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:yt(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function St(){}function wt(t,e){var n;return Q(e,"constructor")&&(n=e.constructor),"function"!=typeof n&&(n=e.constructor=function(){t.apply(this,arguments)}),n.prototype=Z(t.prototype),$(e,n.prototype),$(t,n),n}function Et(t,e){$(e,t.prototype)}function bt(e){var n=t.Deferred(),i=n.promise();if("function"==typeof e&&e(function(t){bt.immediate&&(i._value=t),n.resolve(t)},function(){n.reject()}),bt.immediate){var r=i.then;i.then=function(t,e){var n=i.state();if("resolved"===n){if("function"==typeof t)return bt.resolve(t(i._value))}else if("rejected"===n&&"function"==typeof e)return e(),i;return r.call(i,t,e)}}return i}function Dt(t){function e(t){return new bt(function(e){var i=function(){bt.resolve(t()).then(e).then(function(){n.shift(),n.length&&n[0]()})};n.push(i),1===n.length&&i()})}var n=[];this.add="number"==typeof t?at(e,t):e,this.addQuickly=e}function Tt(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&Ct(t,e)&&Ct(e,t))}function Ct(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}function Ht(t){return{start:t.start.clone(),end:t.end?t.end.clone():null,allDay:t.allDay}}function Rt(t){var e=It(t);return"background"===e||"inverse-background"===e}function xt(t){return"inverse-background"===It(t)}function It(t){return J((t.source||{}).rendering,t.rendering)}function kt(t){var e,n,i={};for(e=0;e=t.leftCol)return!0;return!1}function zt(t,e){return t.leftCol-e.leftCol}function Ft(t){var e,n,i,r=[];for(e=0;ee.top&&t.top"),g.append(o("left")).append(o("right")).append(o("center")).append('
          ')):s()}function s(){g&&(g.remove(),g=f.el=null)}function o(i){var r=t('
          '),s=n.layout[i];return s&&t.each(s.split(" "),function(n){var i,s=t(),o=!0;t.each(this.split(","),function(n,i){var r,l,a,u,c,d,h,f,g,m;"title"==i?(s=s.add(t("

           

          ")),o=!1):((r=(e.options.customButtons||{})[i])?(a=function(t){r.click&&r.click.call(m[0],t)},u="",c=r.text):(l=e.getViewSpec(i))?(a=function(){e.changeView(i)},v.push(i),u=l.buttonTextOverride,c=l.buttonTextDefault):e[i]&&(a=function(){e[i]()},u=(e.overrides.buttonText||{})[i],c=e.options.buttonText[i]),a&&(d=r?r.themeIcon:e.options.themeButtonIcons[i],h=r?r.icon:e.options.buttonIcons[i],f=u?tt(u):d&&e.options.theme?"":h&&!e.options.theme?"":tt(c),g=["fc-"+i+"-button",p+"-button",p+"-state-default"],m=t('").click(function(t){m.hasClass(p+"-state-disabled")||(a(t),(m.hasClass(p+"-state-active")||m.hasClass(p+"-state-disabled"))&&m.removeClass(p+"-state-hover"))}).mousedown(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-down")}).mouseup(function(){m.removeClass(p+"-state-down")}).hover(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-hover")},function(){m.removeClass(p+"-state-hover").removeClass(p+"-state-down")}),s=s.add(m)))}),o&&s.first().addClass(p+"-corner-left").end().last().addClass(p+"-corner-right").end(),s.length>1?(i=t("
          "),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function l(t){g&&g.find("h2").text(t)}function a(t){g&&g.find(".fc-"+t+"-button").addClass(p+"-state-active")}function u(t){g&&g.find(".fc-"+t+"-button").removeClass(p+"-state-active")}function c(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!0).addClass(p+"-state-disabled")}function d(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(p+"-state-disabled")}function h(){return v}var f=this;f.setToolbarOptions=i,f.render=r,f.removeElement=s,f.updateTitle=l,f.activateButton=a,f.deactivateButton=u,f.disableButton=c,f.enableButton=d,f.getViewsWithButtons=h,f.el=null;var g,p,v=[]}function _t(n,i){function r(t){t._locale=Y}function s(){q?a()&&(f(),u()):o()}function o(){n.addClass("fc"),n.on("click.fc","a[data-goto]",function(e){var n=t(this),i=n.data("goto"),r=_.moment(i.date),s=i.type,o=Q.opt("navLink"+rt(s)+"Click");"function"==typeof o?o(r,e):("string"==typeof o&&(s=o),B(r,s))}),_.bindOption("theme",function(t){$=t?"ui":"fc",n.toggleClass("ui-widget",t),n.toggleClass("fc-unthemed",!t)}),_.bindOptions(["isRTL","locale"],function(t){n.toggleClass("fc-ltr",!t),n.toggleClass("fc-rtl",t)}),q=t("
          ").prependTo(n);var e=y();W=new Vt(e),U=_.header=e[0],j=_.footer=e[1],E(),b(),u(_.options.defaultView),_.options.handleWindowResize&&(K=at(v,_.options.windowResizeDelay),t(window).resize(K))}function l(){Q&&Q.removeElement(),W.proxyCall("removeElement"),q.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),n.off(".fc"),K&&t(window).unbind("resize",K)}function a(){return n.is(":visible")}function u(e,n){nt++;var i=Q&&e&&Q.type!==e;i&&(F(),c()),!Q&&e&&(Q=_.view=et[e]||(et[e]=_.instantiateView(e)),Q.setElement(t("
          ").appendTo(q)),W.proxyCall("activateButton",e)),Q&&(J=Q.massageCurrentDate(J),Q.isDateSet&&J>=Q.intervalStart&&J=Q.intervalStart&&tq&&i.push(n);return i}function s(t,e){return!q||tZ}function o(t,e){return q=t,Z=e,l()}function l(){return u(tt,"reset")}function a(t){return u(E(t))}function u(t,e){var n,i;for("reset"===e?nt=[]:"add"!==e&&(nt=C(nt,t)),n=0;nr.value)&&(r=i));return r?r.unit:null},qt.Class=St,St.extend=function(){var t,e,n=arguments.length;for(t=0;t').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),"mousedown",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),"mousedown")},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),c=t(window),h=d(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,h.is(window)||h.is(document)?(h=c,e=0,n=0):(i=h.offset(),e=i.top,n=i.left),e+=c.scrollTop(),n+=c.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+h.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+h.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),fe=qt.CoordCache=St.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,l=s.outerWidth();e.push(o),n.push(o+l)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,l=s.outerHeight();e.push(o),n.push(o+l)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e=n[e]&&t=n[e]&&t0&&(t=d(this.els.eq(0)),!t.is(document))?f(t):null},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t=this.boundingRect.top&&t=r*r&&this.handleDistanceSurpassed(t)),this.isDragging&&this.handleDrag(n,i,t)},handleDrag:function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger("dragEnd",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+t]&&this["_"+t].apply(this,Array.prototype.slice.call(arguments,1))}});ge.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",at(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=h(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(E(t)-o.top))/s,n=(s-(o.bottom-E(t)))/s,i=(s-(w(t)-o.left))/s,r=(s-(o.right-w(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),i>=0&&i<=1?a=i*this.scrollSpeed*-1:r>=0&&r<=1&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(lt(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var pe=ge.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){ge.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.computeCoords(),t?(n={left:w(t),top:E(t)},i=n,r&&(e=h(r),i=x(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=R(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),ge.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(t){var e;ge.prototype.handleDragStart.apply(this,arguments),e=this.queryHit(w(t),E(t)),e&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;ge.prototype.handleDrag.apply(this,arguments),i=this.queryHit(w(n),E(n)),Tt(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),ge.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=Tt(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){ge.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){ge.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}}),ve=St.extend(ce,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=E(e),this.x0=w(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),b(e)?this.listenTo(t(document),"touchmove",this.handleMove):this.listenTo(t(document),"mousemove",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=E(t)-this.y0,this.leftDelta=w(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),me=qt.Grid=St.extend(ce,de,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt("eventTimeFormat")||n.opt("timeFormat")||this.computeEventTimeFormat(),t=n.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?O(t,e,this.largeUnit):N(t,e)},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(D(t),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+","+i.segSelector+" *,.fc-more,a[data-goto]"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){this.isIgnoringMouse||this.dayDragListener.startInteraction(t,{})},dayTouchStart:function(t){var e=this.view,n=e.opt("selectLongPressDelay");(e.isSelected||e.selectedEvent)&&this.tempIgnoreMouse(),null==n&&(n=e.opt("longPressDelay")),this.dayDragListener.startInteraction(t,{delay:n})},buildDayDragListener:function(){var t,e,n=this,i=this.view,r=i.opt("selectable"),l=new pe(this,{scroll:i.opt("dragScroll"),interactionStart:function(){t=l.origHit,e=null},dragStart:function(){i.unselect()},hitOver:function(i,o,l){l&&(o||(t=null),r&&(e=n.computeSelection(n.getHitSpan(l),n.getHitSpan(i)),e?n.renderSelection(e):e===!1&&s()))},hitOut:function(){t=null,e=null,n.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(r,s){s||(t&&!n.isIgnoringMouse&&i.triggerDayClick(n.getHitSpan(t),n.getHitEl(t),r),e&&i.reportSelection(e,r))}});return l},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?Z(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(st),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill("highlight",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;i"},getDayClasses:function(t,e){var n=this.view,i=n.calendar.getNow(),r=["fc-"+Xt[t.day()]];return 1==n.intervalDuration.as("months")&&t.month()!=n.intervalStart.month()&&r.push("fc-other-month"),t.isSame(i,"day")?(r.push("fc-today"),e!==!0&&r.push(n.highlightStateClass)):t *",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;el&&o.push({start:l,end:n.start}),l=n.end;return l=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,l=this.view.computeDayRange(t),a=this.getDateDayIndex(l.start),u=this.getDateDayIndex(l.end.clone().subtract(1,"days")),c=[];for(e=0;e'+this.renderHeadTrHtml()+"
          "},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return""+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+""},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},tt(t.format(this.colHeadFormat)))+""},renderBgTrHtml:function(t){return""+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+""},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},Se=qt.DayGrid=me.extend(ye,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o="";for(e=0;e
          '+this.renderBgTrHtml(t)+'
          '+(this.numbersVisible?""+this.renderNumberTrHtml(t)+"":"")+"
          "},renderNumberTrHtml:function(t){return""+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+""},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e',this.view.cellWeekNumbersVisible&&t.day()==n&&(i+=this.view.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),this.view.dayNumbersVisible&&(i+=this.view.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.date())),i+=""):""},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n,i){var r,s,o,l=[];for(n=this.renderFillSegEls(e,n),r=0;r
          '),s=r.find("tr"),l>0&&s.append(''),s.append(n.el.attr("colspan",a-l)),a'),this.bookendCells(s),r}});Se.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),me.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return me.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return me.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n'+tt(n)+"")),i=''+(tt(s.title||"")||" ")+"",'
          '+(this.isRTL?i+" "+d:d+" "+i)+"
          "+(l?'
          ':"")+(a?'
          ':"")+""},renderSegRow:function(e,n){function i(e){for(;o"),l.append(c)),v[r][o]=c,m[r][o]=c,o++}var r,s,o,l,a,u,c,d=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t(""),p=[],v=[],m=[];for(r=0;r"),p.push([]),v.push([]),m.push([]),s)for(a=0;a').append(u.el),u.leftCol!=u.rightCol?c.attr("colspan",u.rightCol-u.leftCol+1):m[r][o]=c;o<=u.rightCol;)v[r][o]=c,p[r][o]=u,o++;l.append(c)}i(d),this.bookendCells(l),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e td > :first-child").each(n),r.position().top+s>l)return i;return!1},limitRow:function(e,n){function i(i){for(;b").append(y),h.append(m),E.push(m[0])),b++}var r,s,o,l,a,u,c,d,h,f,g,p,v,m,y,S=this,w=this.rowStructs[e],E=[],b=0;if(n&&n').attr("rowspan",f),u=d[p],y=this.renderMoreLink(e,a.leftCol+p,[a].concat(u)),m=t("
          ").append(y),v.append(m),g.push(v[0]),E.push(v[0]);h.addClass("fc-limited").after(t(g)),o.push(h[0])}}i(this.colCnt),w.moreEls=t(E),w.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('').text(this.getMoreLinkText(i.length)).on("click",function(o){var l=s.opt("eventLimitClick"),a=r.getCellDate(e,n),u=t(this),c=r.getCellEl(e,n),d=r.getCellSegs(e,n),h=r.resliceDaySegs(d,a),f=r.resliceDaySegs(i,a);"function"==typeof l&&(l=s.publiclyTrigger("eventLimitClick",null,{date:a,dayEl:c,moreEl:u,segs:h,hiddenSegs:f},o)),"popover"===l?r.showSegPopover(e,n,u,h):"string"==typeof l&&s.calendar.zoomTo(a,l)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==this.rowCnt?l.el:this.rowEls.eq(t),s={className:"fc-more-popover",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt("popoverViewportConstrain"),hide:function(){if(o.popoverSegs)for(var t,e=0;e'+tt(l)+'
          '),u=a.find(".fc-event-container");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r'+this.renderBgTrHtml(0)+'
          "},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=e.duration(+this.minTime);l"+(n?""+tt(t.format(this.labelFormat))+"":"")+"",o+='"+(s?"":i)+''+(s?i:"")+"",l.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt("slotDuration"),s=i.opt("snapDuration");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,this.minTime=e.duration(i.opt("minTime")),this.maxTime=e.duration(i.opt("maxTime")),n=i.opt("slotLabelFormat"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt("smallTimeFormat"),n=i.opt("slotLabelInterval"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=Oe.length-1;n>=0;n--)if(i=e.duration(Oe[n]),r=_(i,t),ot(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var l=r.getTopOffset(o),a=r.getHeight(o),u=(e-l)/a,c=Math.floor(u*n),d=o*n+c,h=l+c/n*a,f=l+(c+1)/n*a;return{col:s,snap:d,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:h,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e
          ').css("top",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('
          ').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});we.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i="";for(e=0;e
          ';n=t('
          '+i+"
          "),this.colContainerEls=n.find(".fc-content-col"),this.helperContainerEls=n.find(".fc-helper-container"),this.fgContainerEls=n.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=n.find(".fc-bgevent-container"),this.highlightContainerEls=n.find(".fc-highlight-container"),this.businessContainerEls=n.find(".fc-business-container"),this.bookendCells(n.find("tr")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i
          '+(n?'
          '+tt(n)+"
          ":"")+(o.title?'
          '+tt(o.title)+"
          ":"")+'
          '+(u?'
          ':"")+""},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n;for(e=0;e1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),gt(t.start,i,e,n,this.opt("isRTL"))},getAllDayHtml:function(){return this.opt("allDayHtml")||tt(this.opt("allDayText"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,l;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=qt.moment(r),l={date:r.format("YYYY-MM-DD"),type:s||"day"},"string"==typeof n&&(i=n,n=null),n=n?" "+it(n):"",i=i||"",!o&&this.opt("navLinks")?"'+i+"":""+i+""},setElement:function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton()},removeElement:function(){this.unsetDate(),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(t){var e=this.isDateSet;this.isDateSet=!0,this.handleDate(t,e),this.trigger(e?"dateReset":"dateSet",t)},unsetDate:function(){this.isDateSet&&(this.isDateSet=!1,this.handleDateUnset(),this.trigger("dateUnset"))},handleDate:function(t,e){var n=this;this.unbindEvents(),this.requestDateRender(t).then(function(){n.bindEvents()})},handleDateUnset:function(){this.unbindEvents(),this.requestDateUnrender()},requestDateRender:function(t){var e=this;return this.dateRenderQueue.add(function(){return e.executeDateRender(t)})},requestDateUnrender:function(){var t=this;return this.dateRenderQueue.add(function(){return t.executeDateUnrender()})},executeDateRender:function(t){var e=this;return t?this.captureInitialScroll():this.captureScroll(),this.freezeHeight(),this.executeDateUnrender().then(function(){t&&e.setRange(e.computeRange(t)),e.render&&e.render(),e.renderDates(),e.updateSize(),e.renderBusinessHours(),e.startNowIndicator(),e.thawHeight(),e.releaseScroll(),e.isDateRendered=!0,e.onDateRender(),e.trigger("dateRender")})},executeDateUnrender:function(){var t=this;return t.isDateRendered?this.requestEventsUnrender().then(function(){t.unselect(),t.stopNowIndicator(),t.triggerUnrender(),t.unrenderBusinessHours(),t.unrenderDates(),t.destroy&&t.destroy(),t.isDateRendered=!1,t.trigger("dateUnrender")}):bt.resolve()},onDateRender:function(){this.triggerRender()},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.publiclyTrigger("viewRender",this,this,this.el); +},triggerUnrender:function(){this.publiclyTrigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(t(document),"mousedown",this.handleDocumentMousedown),this.listenTo(t(document),"touchstart",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},initThemingProps:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit(),t&&(n=lt(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){t&&this.captureScroll(),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.releaseScroll()},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},capturedScroll:null,capturedScrollDepth:0,captureScroll:function(){return!this.capturedScrollDepth++&&(this.capturedScroll=this.isDateRendered?this.queryScroll():{},!0)},captureInitialScroll:function(e){this.captureScroll()&&(this.capturedScroll.isInitial=!0,e?t.extend(this.capturedScroll,e):this.capturedScroll.isComputed=!0)},releaseScroll:function(){var e=this.capturedScroll,n=this.discardScroll();e.isComputed&&(n?t.extend(e,this.computeInitialScroll()):e=null),e&&(e.isInitial?this.hardSetScroll(e):this.setScroll(e))},discardScroll:function(){return!--this.capturedScrollDepth&&(this.capturedScroll=null,!0)},computeInitialScroll:function(){return{}},queryScroll:function(){return{}},hardSetScroll:function(t){var e=this,n=function(){e.setScroll(t)};n(),setTimeout(n,0)},setScroll:function(t){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},bindEvents:function(){var t=this;this.isEventsBound||(this.isEventsBound=!0,this.rejectOn("eventsUnbind",this.requestEvents()).then(function(e){t.listenTo(t.calendar,"eventsReset",t.setEvents),t.setEvents(e)}))},unbindEvents:function(){this.isEventsBound&&(this.isEventsBound=!1,this.stopListeningTo(this.calendar,"eventsReset"),this.unsetEvents(),this.trigger("eventsUnbind"))},setEvents:function(t){var e=this.isEventSet;this.isEventsSet=!0,this.handleEvents(t,e),this.trigger(e?"eventsReset":"eventsSet",t)},unsetEvents:function(){this.isEventsSet&&(this.isEventsSet=!1,this.handleEventsUnset(),this.trigger("eventsUnset"))},whenEventsSet:function(){var t=this;return this.isEventsSet?bt.resolve(this.getCurrentEvents()):new bt(function(e){t.one("eventsSet",e)})},handleEvents:function(t,e){this.requestEventsRender(t)},handleEventsUnset:function(){this.requestEventsUnrender()},requestEventsRender:function(t){var e=this;return this.eventRenderQueue.add(function(){return e.executeEventsRender(t)})},requestEventsUnrender:function(){var t=this;return this.isEventsRendered?this.eventRenderQueue.addQuickly(function(){return t.executeEventsUnrender()}):bt.resolve()},requestCurrentEventsRender:function(){return this.isEventsSet?void this.requestEventsRender(this.getCurrentEvents()):bt.reject()},executeEventsRender:function(t){var e=this;return this.captureScroll(),this.freezeHeight(),this.executeEventsUnrender().then(function(){e.renderEvents(t),e.thawHeight(),e.releaseScroll(),e.isEventsRendered=!0,e.onEventsRender(),e.trigger("eventsRender")})},executeEventsUnrender:function(){return this.isEventsRendered&&(this.onBeforeEventsUnrender(),this.captureScroll(),this.freezeHeight(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.thawHeight(),this.releaseScroll(),this.isEventsRendered=!1,this.trigger("eventsUnrender")),bt.resolve()},onEventsRender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventAfterRender",t.event,t.event,t.el)}),this.publiclyTrigger("eventAfterAllRender")},onBeforeEventsUnrender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventDestroy",t.event,t.event,t.el)})},renderEvents:function(t){},unrenderEvents:function(){},requestEvents:function(){return this.calendar.requestEvents(this.start,this.end)},getCurrentEvents:function(){return this.calendar.getPrunedEventCache()},resolveEventEl:function(e,n){var i=this.publiclyTrigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","hidden")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n=this.nextDayThreshold&&r.add(1,"days")),(!i||r<=n)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}}),be=qt.Scroller=St.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(t){t=t||{},this.overflowX=t.overflowX||t.overflow||"auto",this.overflowY=t.overflowY||t.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=t('
          ')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}});Vt.prototype.proxyCall=function(t){var e=Array.prototype.slice.call(arguments,1),n=[];return this.items.forEach(function(i){n.push(i[t].apply(i,e))}),n};var De=qt.Calendar=St.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,footer:null,loadingLevel:0,constructor:_t,initialize:function(){},populateOptionsHash:function(){var t,e,i,r;t=J(this.dynamicOverrides.locale,this.overrides.locale),e=Te[t],e||(t=De.defaults.locale,e=Te[t]||{}),i=J(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,De.defaults.isRTL),r=i?De.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,this.options=n([De.defaults,r,e,this.overrides,this.dynamicOverrides]),Yt(this.options)},getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(t.inArray(e,Kt)!=-1)for(n=this.header.getViewsWithButtons(),t.each(qt.views,function(t){n.push(t)}),i=0;i=n&&e.end<=i},De.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;nn};var ke={id:"_fcBusinessHours",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"};De.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.options.businessHours)},De.prototype.computeBusinessHourEvents=function(e,n){return n===!0?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},De.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),l=[];for(r=0;r1,this.opt("weekNumbers")&&(this.opt("weekNumbersWithinDays")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-day-grid-container"),n=t('
          ').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'
          '},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,s,o=this.opt("eventLimit");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&"number"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&"number"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},setGridHeight:function(t,e){e?a(this.dayGrid.rowEls):l(this.dayGrid.rowEls,t,!0)},computeInitialScroll:function(){return{top:0}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(t){this.scroller.setScrollTop(t.top)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Me={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'"+tt(t.opt("weekNumberTitle"))+"":""},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"":""},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'":""},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'":""}},Be=qt.MonthView=Le.extend({computeRange:function(t){var e,n=Le.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&(e=Math.ceil(n.end.diff(n.start,"weeks",!0)),n.end.add(6-e,"weeks")),n},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),l(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt("fixedWeekCount")}});Zt.basic={class:Le},Zt.basicDay={type:"basic",duration:{days:1}},Zt.basicWeek={type:"basic",duration:{weeks:1}},Zt.month={class:Be,duration:{months:1},defaults:{fixedWeekCount:!0}};var ze=qt.AgendaView=Ee.extend({scroller:null,timeGridClass:we,timeGrid:null,dayGridClass:Se,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new be({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var t=this.timeGridClass.extend(Fe);return new t(this)},instantiateDayGrid:function(){var t=this.dayGridClass.extend(Ne);return new t(this)},setRange:function(t){Ee.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-time-grid-container"),n=t('
          ').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('
          ').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'
          '+(this.dayGrid?'

          ':"")+"
          "},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),Ee.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=Ge),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()"+e.buildGotoAnchorHtml({date:this.start,type:"week",forceOff:this.colCnt>1},tt(t))+""):'"},renderBgIntroHtml:function(){var t=this.view;return'"},renderIntroHtml:function(){var t=this.view;return'"}},Ne={renderBgIntroHtml:function(){var t=this.view;return'"+t.getAllDayHtml()+""},renderIntroHtml:function(){var t=this.view;return'"}},Ge=5,Oe=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];Zt.agenda={class:ze,defaults:{allDaySlot:!0,slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Zt.agendaDay={type:"agenda",duration:{days:1}},Zt.agendaWeek={type:"agenda",duration:{weeks:1}};var Ae=Ee.extend({grid:null,scroller:null,initialize:function(){this.grid=new Ve(this),this.scroller=new be({overflowX:"hidden",overflowY:"auto"})},setRange:function(t){Ee.prototype.setRange.call(this,t),this.grid.setRange(t)},renderSkeleton:function(){this.el.addClass("fc-list-view "+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el); +},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),Ve=me.extend({segSelector:".fc-list-item",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.start.clone().time(0),r=0,s=[];i
          '+tt(this.view.opt("noEventsMessage"))+"
          ")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('
          '),l=o.find("tbody");for(n=0;n'+(n?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},tt(t.format(n))):"")+(i?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},tt(t.format(i))):"")+""},fgSegHtml:function(t){var e,n=this.view,i=["fc-list-item"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?tt(this.getEventTimeText(t)):n.getAllDayHtml():tt(this.getEventTimeText(s)),o&&i.push("fc-has-url"),''+(this.displayEventTime?''+(e||"")+"":"")+'"+tt(t.event.title||"")+""}});return Zt.list={class:Ae,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}},Zt.listDay={type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}},Zt.listWeek={type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}},Zt.listMonth={type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}},Zt.listYear={type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}},qt}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/fullcalendar.print.css b/public/theme/fullcalendar/dist/fullcalendar.print.css new file mode 100644 index 0000000..11b823f --- /dev/null +++ b/public/theme/fullcalendar/dist/fullcalendar.print.css @@ -0,0 +1,208 @@ +/*! + * FullCalendar v2.7.3 Print Stylesheet + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ + +/* + * Include this stylesheet on your page to get a more printer-friendly calendar. + * When including this stylesheet, use the media='print' attribute of the tag. + * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. + */ + +.fc { + max-width: 100% !important; +} + + +/* Global Event Restyling +--------------------------------------------------------------------------------------------------*/ + +.fc-event { + background: #fff !important; + color: #000 !important; + page-break-inside: avoid; +} + +.fc-event .fc-resizer { + display: none; +} + + +/* Table & Day-Row Restyling +--------------------------------------------------------------------------------------------------*/ + +th, +td, +hr, +thead, +tbody, +.fc-row { + border-color: #ccc !important; + background: #fff !important; +} + +/* kill the overlaid, absolutely-positioned components */ +/* common... */ +.fc-bg, +.fc-bgevent-skeleton, +.fc-highlight-skeleton, +.fc-helper-skeleton, +/* for timegrid. within cells within table skeletons... */ +.fc-bgevent-container, +.fc-business-container, +.fc-highlight-container, +.fc-helper-container { + display: none; +} + +/* don't force a min-height on rows (for DayGrid) */ +.fc tbody .fc-row { + height: auto !important; /* undo height that JS set in distributeHeight */ + min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */ +} + +.fc tbody .fc-row .fc-content-skeleton { + position: static; /* undo .fc-rigid */ + padding-bottom: 0 !important; /* use a more border-friendly method for this... */ +} + +.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */ + padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */ +} + +.fc tbody .fc-row .fc-content-skeleton table { + /* provides a min-height for the row, but only effective for IE, which exaggerates this value, + making it look more like 3em. for other browers, it will already be this tall */ + height: 1em; +} + + +/* Undo month-view event limiting. Display all events and hide the "more" links +--------------------------------------------------------------------------------------------------*/ + +.fc-more-cell, +.fc-more { + display: none !important; +} + +.fc tr.fc-limited { + display: table-row !important; +} + +.fc td.fc-limited { + display: table-cell !important; +} + +.fc-popover { + display: none; /* never display the "more.." popover in print mode */ +} + + +/* TimeGrid Restyling +--------------------------------------------------------------------------------------------------*/ + +/* undo the min-height 100% trick used to fill the container's height */ +.fc-time-grid { + min-height: 0 !important; +} + +/* don't display the side axis at all ("all-day" and time cells) */ +.fc-agenda-view .fc-axis { + display: none; +} + +/* don't display the horizontal lines */ +.fc-slats, +.fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */ + display: none !important; /* important overrides inline declaration */ +} + +/* let the container that holds the events be naturally positioned and create real height */ +.fc-time-grid .fc-content-skeleton { + position: static; +} + +/* in case there are no events, we still want some height */ +.fc-time-grid .fc-content-skeleton table { + height: 4em; +} + +/* kill the horizontal spacing made by the event container. event margins will be done below */ +.fc-time-grid .fc-event-container { + margin: 0 !important; +} + + +/* TimeGrid *Event* Restyling +--------------------------------------------------------------------------------------------------*/ + +/* naturally position events, vertically stacking them */ +.fc-time-grid .fc-event { + position: static !important; + margin: 3px 2px !important; +} + +/* for events that continue to a future day, give the bottom border back */ +.fc-time-grid .fc-event.fc-not-end { + border-bottom-width: 1px !important; +} + +/* indicate the event continues via "..." text */ +.fc-time-grid .fc-event.fc-not-end:after { + content: "..."; +} + +/* for events that are continuations from previous days, give the top border back */ +.fc-time-grid .fc-event.fc-not-start { + border-top-width: 1px !important; +} + +/* indicate the event is a continuation via "..." text */ +.fc-time-grid .fc-event.fc-not-start:before { + content: "..."; +} + +/* time */ + +/* undo a previous declaration and let the time text span to a second line */ +.fc-time-grid .fc-event .fc-time { + white-space: normal !important; +} + +/* hide the the time that is normally displayed... */ +.fc-time-grid .fc-event .fc-time span { + display: none; +} + +/* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ +.fc-time-grid .fc-event .fc-time:after { + content: attr(data-full); +} + + +/* Vertical Scroller & Containers +--------------------------------------------------------------------------------------------------*/ + +/* kill the scrollbars and allow natural height */ +.fc-scroller, +.fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */ +.fc-time-grid-container { /* */ + overflow: visible !important; + height: auto !important; +} + +/* kill the horizontal border/padding used to compensate for scrollbars */ +.fc-row { + border: 0 !important; + margin: 0 !important; +} + + +/* Button Controls +--------------------------------------------------------------------------------------------------*/ + +.fc-button-group, +.fc button { + display: none; /* don't display any button-related controls */ +} diff --git a/public/theme/fullcalendar/dist/gcal.js b/public/theme/fullcalendar/dist/gcal.js new file mode 100644 index 0000000..58b85c1 --- /dev/null +++ b/public/theme/fullcalendar/dist/gcal.js @@ -0,0 +1,180 @@ +/*! + * FullCalendar v2.7.3 Google Calendar Plugin + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ + +(function(factory) { + if (typeof define === 'function' && define.amd) { + define([ 'jquery' ], factory); + } + else if (typeof exports === 'object') { // Node/CommonJS + module.exports = factory(require('jquery')); + } + else { + factory(jQuery); + } +})(function($) { + + +var API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; +var FC = $.fullCalendar; +var applyAll = FC.applyAll; + + +FC.sourceNormalizers.push(function(sourceOptions) { + var googleCalendarId = sourceOptions.googleCalendarId; + var url = sourceOptions.url; + var match; + + // if the Google Calendar ID hasn't been explicitly defined + if (!googleCalendarId && url) { + + // detect if the ID was specified as a single string. + // will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars. + if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { + googleCalendarId = url; + } + // try to scrape it out of a V1 or V3 API feed URL + else if ( + (match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || + (match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url)) + ) { + googleCalendarId = decodeURIComponent(match[1]); + } + + if (googleCalendarId) { + sourceOptions.googleCalendarId = googleCalendarId; + } + } + + + if (googleCalendarId) { // is this a Google Calendar? + + // make each Google Calendar source uneditable by default + if (sourceOptions.editable == null) { + sourceOptions.editable = false; + } + + // We want removeEventSource to work, but it won't know about the googleCalendarId primitive. + // Shoehorn it into the url, which will function as the unique primitive. Won't cause side effects. + // This hack is obsolete since 2.2.3, but keep it so this plugin file is compatible with old versions. + sourceOptions.url = googleCalendarId; + } +}); + + +FC.sourceFetchers.push(function(sourceOptions, start, end, timezone) { + if (sourceOptions.googleCalendarId) { + return transformOptions(sourceOptions, start, end, timezone, this); // `this` is the calendar + } +}); + + +function transformOptions(sourceOptions, start, end, timezone, calendar) { + var url = API_BASE + '/' + encodeURIComponent(sourceOptions.googleCalendarId) + '/events?callback=?'; // jsonp + var apiKey = sourceOptions.googleCalendarApiKey || calendar.options.googleCalendarApiKey; + var success = sourceOptions.success; + var data; + var timezoneArg; // populated when a specific timezone. escaped to Google's liking + + function reportError(message, apiErrorObjs) { + var errorObjs = apiErrorObjs || [ { message: message } ]; // to be passed into error handlers + + // call error handlers + (sourceOptions.googleCalendarError || $.noop).apply(calendar, errorObjs); + (calendar.options.googleCalendarError || $.noop).apply(calendar, errorObjs); + + // print error to debug console + FC.warn.apply(null, [ message ].concat(apiErrorObjs || [])); + } + + if (!apiKey) { + reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"); + return {}; // an empty source to use instead. won't fetch anything. + } + + // The API expects an ISO8601 datetime with a time and timezone part. + // Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each + // side, guaranteeing we will receive all events in the desired range, albeit a superset. + // .utc() will set a zone and give it a 00:00:00 time. + if (!start.hasZone()) { + start = start.clone().utc().add(-1, 'day'); + } + if (!end.hasZone()) { + end = end.clone().utc().add(1, 'day'); + } + + // when sending timezone names to Google, only accepts underscores, not spaces + if (timezone && timezone != 'local') { + timezoneArg = timezone.replace(' ', '_'); + } + + data = $.extend({}, sourceOptions.data || {}, { + key: apiKey, + timeMin: start.format(), + timeMax: end.format(), + timeZone: timezoneArg, + singleEvents: true, + maxResults: 9999 + }); + + return $.extend({}, sourceOptions, { + googleCalendarId: null, // prevents source-normalizing from happening again + url: url, + data: data, + startParam: false, // `false` omits this parameter. we already included it above + endParam: false, // same + timezoneParam: false, // same + success: function(data) { + var events = []; + var successArgs; + var successRes; + + if (data.error) { + reportError('Google Calendar API: ' + data.error.message, data.error.errors); + } + else if (data.items) { + $.each(data.items, function(i, entry) { + var url = entry.htmlLink || null; + + // make the URLs for each event show times in the correct timezone + if (timezoneArg && url !== null) { + url = injectQsComponent(url, 'ctz=' + timezoneArg); + } + + events.push({ + id: entry.id, + title: entry.summary, + start: entry.start.dateTime || entry.start.date, // try timed. will fall back to all-day + end: entry.end.dateTime || entry.end.date, // same + url: url, + location: entry.location, + description: entry.description + }); + }); + + // call the success handler(s) and allow it to return a new events array + successArgs = [ events ].concat(Array.prototype.slice.call(arguments, 1)); // forward other jq args + successRes = applyAll(success, this, successArgs); + if ($.isArray(successRes)) { + return successRes; + } + } + + return events; + } + }); +} + + +// Injects a string like "arg=value" into the querystring of a URL +function injectQsComponent(url, component) { + // inject it after the querystring but before the fragment + return url.replace(/(\?.*?)?(#|$)/, function(whole, qs, hash) { + return (qs ? qs + '&' : '?') + component + hash; + }); +} + + +}); diff --git a/public/theme/fullcalendar/dist/lang-all.js b/public/theme/fullcalendar/dist/lang-all.js new file mode 100644 index 0000000..7d7e251 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang-all.js @@ -0,0 +1,4 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return a}(),a.fullCalendar.datepickerLang("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=(b.defineLocale||b.lang).call(b,"ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},e={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},f=function(a){return function(b,c,f,g){var h=d(b),i=e[a][d(b)];return 2===h&&(i=i[c?0:1]),i.replace(/%d/i,b)}},g=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],h=(b.defineLocale||b.lang).call(b,"ar",{months:g,monthsShort:g,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return h}(),a.fullCalendar.datepickerLang("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(a){return"+още "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return"w"!==b&&"W"!==b||(c="a"),a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més"})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a&&1!==~~(a/10)}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(a(b)?"minuty":"minut"):f+"minutami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodin"):f+"hodinami";case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(a(b)?"dny":"dní"):f+"dny";case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(a(b)?"měsíce":"měsíců"):f+"měsíci";case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(a(b)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),f=(b.defineLocale||b.lang).call(b,"cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(e),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(d),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(a){return"+další: "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere"})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}var c=(b.defineLocale||b.lang).call(b,"el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(b,c){var d=this._calendarEl[b],e=c&&c.hours();return a(d)&&(d=d.apply(c)),d.replace("{}",e%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-au")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}});return a}(),a.fullCalendar.lang("en-ca")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-gb")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.lang("en-ie")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-nz")}(),function(){!function(){"use strict";var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=(b.defineLocale||b.lang).call(b,"es",{ +months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo
          el día",eventLimitText:"más"})}(),function(){!function(){"use strict";var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},d=(b.defineLocale||b.lang).call(b,"fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(a){return"بیش از "+a}})}(),function(){!function(){"use strict";function a(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]],f=(b.defineLocale||b.lang).call(b,"fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}});return a}(),a.fullCalendar.datepickerLang("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ca",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ch",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return 5>a?"לפנות בוקר":10>a?"בבוקר":12>a?c?'לפנה"צ':"לפני הצהריים":18>a?c?'אחה"צ':"אחרי הצהריים":"בערב"}});return a}(),a.fullCalendar.datepickerLang("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("he",{defaultButtonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},weekNumberTitle:"שבוע",allDayText:"כל היום",eventLimitText:"אחר"})}(),function(){!function(){"use strict";var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=(b.defineLocale||b.lang).call(b,"hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}});return d}(),a.fullCalendar.datepickerLang("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(a){return"+अधिक "+a}})}(),function(){!function(){"use strict";function a(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=(b.defineLocale||b.lang).call(b,"hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(a){return"+ još "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),e=(b.defineLocale||b.lang).call(b,"hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari
          penuh",eventLimitText:"lebih"})}(),function(){!function(){"use strict";function a(a){return a%100===11?!0:a%10!==1}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return a(b)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return a(b)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return a(b)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return a(b)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return a(b)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}var d=(b.defineLocale||b.lang).call(b,"is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan
          daginn",eventLimitText:"meira"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il
          giorno",eventLimitText:function(a){return"+altri "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(a){return"他 "+a+" 件"}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}});return a}(),a.fullCalendar.datepickerLang("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),a.fullCalendar.lang("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개"})}(),function(){!function(){"use strict";function a(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return g[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}var g={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes", +h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h=(b.defineLocale||b.lang).call(b,"lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_")},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});return h}(),a.fullCalendar.datepickerLang("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau"})}(),function(){!function(){"use strict";function a(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function c(b,c,d){return b+" "+a(f[d],b,c)}function d(b,c,d){return a(f[d],b,c)}function e(a,b){return b?"dažas sekundes":"dažām sekundēm"}var f={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},g=(b.defineLocale||b.lang).call(b,"lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:e,m:d,mm:c,h:d,hh:c,d:d,dd:c,M:d,MM:c,y:d,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g}(),a.fullCalendar.datepickerLang("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(a){return"+vēl "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til"})}(),function(){!function(){"use strict";var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),d=(b.defineLocale||b.lang).call(b,"nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra"})}(),function(){!function(){"use strict";function a(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(b,c,d){var e=b+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(a(b)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(a(b)?"godziny":"godzin");case"MM":return e+(a(b)?"miesiące":"miesięcy");case"yy":return e+(a(b)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),f=(b.defineLocale||b.lang).call(b,"pl",{months:function(a,b){return""===b?"("+e[a.month()]+"|"+d[a.month()]+")":/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return a}(),a.fullCalendar.datepickerLang("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(a){return"mais +"+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais"})}(),function(){!function(){"use strict";function a(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}var c=(b.defineLocale||b.lang).call(b,"ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(a){return"+alte "+a}})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":b+" "+a(e[d],+b)}var d=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],e=(b.defineLocale||b.lang).call(b,"ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,monthsRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsShortRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsStrictRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|марта?|июн[яь]|июл[яь]|ма[яй])/i,monthsShortStrictRegex:/^(нояб\.|февр\.|сент\.|июль|янв\.|июн[яь]|мар[.т]|авг\.|апр\.|окт\.|дек\.|ма[яй])/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(a){return"+ ещё "+a}})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(a(b)?"minúty":"minút"):f+"minútami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodín"):f+"hodinami";case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(a(b)?"dni":"dní"):f+"dňami";case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(a(b)?"mesiace":"mesiacov"):f+"mesiacmi";case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(a(b)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),f=(b.defineLocale||b.lang).call(b,"sk",{months:d,monthsShort:e,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(a){return"+ďalšie: "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}var c=(b.defineLocale||b.lang).call(b,"sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več"})}(),function(){!function(){"use strict";var a={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), +monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return a}(),a.fullCalendar.datepickerLang("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม"})}(),function(){!function(){"use strict";var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},c=(b.defineLocale||b.lang).call(b,"tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(b){if(0===b)return b+"'ıncı";var c=b%10,d=b%100-c,e=b>=100?100:null;return b+(a[c]||a[d]||a[e])},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla"})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:c?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":b+" "+a(e[d],+b)}function d(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function e(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var f=(b.defineLocale||b.lang).call(b,"uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:d,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:e("[Сьогодні "),nextDay:e("[Завтра "),lastDay:e("[Вчора "),nextWeek:e("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[Минулої] dddd [").call(this);case 1:case 2:case 4:return e("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});return f}(),a.fullCalendar.datepickerLang("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(a){return"+ще "+a+"..."}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(a){return"+ thêm "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,c;return a=b().startOf("week"),c=this.diff(a,"days")>=7?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var a,c;return a=b().startOf("week"),c=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1分鐘",mm:"%d分鐘",h:"1小時",hh:"%d小時",d:"1天",dd:"%d天",M:"1個月",MM:"%d個月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多"})}(),(b.locale||b.lang).call(b,"en"),a.fullCalendar.lang("en"),a.datepicker&&a.datepicker.setDefaults(a.datepicker.regional[""])}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ar-ma.js b/public/theme/fullcalendar/dist/lang/ar-ma.js new file mode 100644 index 0000000..1679699 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ar-ma.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return a}(),a.fullCalendar.datepickerLang("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ar-sa.js b/public/theme/fullcalendar/dist/lang/ar-sa.js new file mode 100644 index 0000000..012368e --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ar-sa.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=(b.defineLocale||b.lang).call(b,"ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ar-tn.js b/public/theme/fullcalendar/dist/lang/ar-tn.js new file mode 100644 index 0000000..17620b6 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ar-tn.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ar.js b/public/theme/fullcalendar/dist/lang/ar.js new file mode 100644 index 0000000..63ac583 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ar.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},e={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},f=function(a){return function(b,c,f,g){var h=d(b),i=e[a][d(b)];return 2===h&&(i=i[c?0:1]),i.replace(/%d/i,b)}},g=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],h=(b.defineLocale||b.lang).call(b,"ar",{months:g,monthsShort:g,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return h}(),a.fullCalendar.datepickerLang("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/bg.js b/public/theme/fullcalendar/dist/lang/bg.js new file mode 100644 index 0000000..35783b7 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/bg.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(a){return"+още "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ca.js b/public/theme/fullcalendar/dist/lang/ca.js new file mode 100644 index 0000000..641b020 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ca.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return"w"!==b&&"W"!==b||(c="a"),a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/cs.js b/public/theme/fullcalendar/dist/lang/cs.js new file mode 100644 index 0000000..e4bcd9b --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/cs.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a){return a>1&&5>a&&1!==~~(a/10)}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(a(b)?"minuty":"minut"):f+"minutami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodin"):f+"hodinami";case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(a(b)?"dny":"dní"):f+"dny";case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(a(b)?"měsíce":"měsíců"):f+"měsíci";case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(a(b)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),f=(b.defineLocale||b.lang).call(b,"cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(e),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(d),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(a){return"+další: "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/da.js b/public/theme/fullcalendar/dist/lang/da.js new file mode 100644 index 0000000..10d6ffb --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/da.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/de-at.js b/public/theme/fullcalendar/dist/lang/de-at.js new file mode 100644 index 0000000..80f80b0 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/de-at.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/de.js b/public/theme/fullcalendar/dist/lang/de.js new file mode 100644 index 0000000..241aeb3 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/de.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/el.js b/public/theme/fullcalendar/dist/lang/el.js new file mode 100644 index 0000000..85bc603 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/el.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}var c=(b.defineLocale||b.lang).call(b,"el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(b,c){var d=this._calendarEl[b],e=c&&c.hours();return a(d)&&(d=d.apply(c)),d.replace("{}",e%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/en-au.js b/public/theme/fullcalendar/dist/lang/en-au.js new file mode 100644 index 0000000..8bab41f --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/en-au.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-au")}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/en-ca.js b/public/theme/fullcalendar/dist/lang/en-ca.js new file mode 100644 index 0000000..1f4c0cf --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/en-ca.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}});return a}(),a.fullCalendar.lang("en-ca")}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/en-gb.js b/public/theme/fullcalendar/dist/lang/en-gb.js new file mode 100644 index 0000000..ebd570d --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/en-gb.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-gb")}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/en-ie.js b/public/theme/fullcalendar/dist/lang/en-ie.js new file mode 100644 index 0000000..1937a51 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/en-ie.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.lang("en-ie")}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/en-nz.js b/public/theme/fullcalendar/dist/lang/en-nz.js new file mode 100644 index 0000000..ec70ad8 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/en-nz.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-nz")}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/es.js b/public/theme/fullcalendar/dist/lang/es.js new file mode 100644 index 0000000..e20a545 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/es.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=(b.defineLocale||b.lang).call(b,"es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo
          el día",eventLimitText:"más"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/fa.js b/public/theme/fullcalendar/dist/lang/fa.js new file mode 100644 index 0000000..97dbd26 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/fa.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},d=(b.defineLocale||b.lang).call(b,"fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(a){return"بیش از "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/fi.js b/public/theme/fullcalendar/dist/lang/fi.js new file mode 100644 index 0000000..601943b --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/fi.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]],f=(b.defineLocale||b.lang).call(b,"fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/fr-ca.js b/public/theme/fullcalendar/dist/lang/fr-ca.js new file mode 100644 index 0000000..3b0e298 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/fr-ca.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}});return a}(),a.fullCalendar.datepickerLang("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ca",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/fr-ch.js b/public/theme/fullcalendar/dist/lang/fr-ch.js new file mode 100644 index 0000000..b8c523d --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/fr-ch.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ch",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/fr.js b/public/theme/fullcalendar/dist/lang/fr.js new file mode 100644 index 0000000..f3c2eb8 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/fr.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la
          journée",eventLimitText:"en plus"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/he.js b/public/theme/fullcalendar/dist/lang/he.js new file mode 100644 index 0000000..0612cc0 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/he.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return 5>a?"לפנות בוקר":10>a?"בבוקר":12>a?c?'לפנה"צ':"לפני הצהריים":18>a?c?'אחה"צ':"אחרי הצהריים":"בערב"}});return a}(),a.fullCalendar.datepickerLang("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("he",{defaultButtonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},weekNumberTitle:"שבוע",allDayText:"כל היום",eventLimitText:"אחר"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/hi.js b/public/theme/fullcalendar/dist/lang/hi.js new file mode 100644 index 0000000..f9a1e9c --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/hi.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=(b.defineLocale||b.lang).call(b,"hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}});return d}(),a.fullCalendar.datepickerLang("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(a){return"+अधिक "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/hr.js b/public/theme/fullcalendar/dist/lang/hr.js new file mode 100644 index 0000000..9ac4e7d --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/hr.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=(b.defineLocale||b.lang).call(b,"hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(a){return"+ još "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/hu.js b/public/theme/fullcalendar/dist/lang/hu.js new file mode 100644 index 0000000..34ce7fe --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/hu.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),e=(b.defineLocale||b.lang).call(b,"hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/id.js b/public/theme/fullcalendar/dist/lang/id.js new file mode 100644 index 0000000..a11aa1b --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/id.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari
          penuh",eventLimitText:"lebih"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/is.js b/public/theme/fullcalendar/dist/lang/is.js new file mode 100644 index 0000000..8a68dac --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/is.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a){return a%100===11?!0:a%10!==1}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return a(b)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return a(b)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return a(b)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return a(b)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return a(b)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}var d=(b.defineLocale||b.lang).call(b,"is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan
          daginn",eventLimitText:"meira"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/it.js b/public/theme/fullcalendar/dist/lang/it.js new file mode 100644 index 0000000..21ec787 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/it.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il
          giorno",eventLimitText:function(a){return"+altri "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ja.js b/public/theme/fullcalendar/dist/lang/ja.js new file mode 100644 index 0000000..3997e88 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ja.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(a){return"他 "+a+" 件"}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ko.js b/public/theme/fullcalendar/dist/lang/ko.js new file mode 100644 index 0000000..7cd235d --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ko.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}});return a}(),a.fullCalendar.datepickerLang("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),a.fullCalendar.lang("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/lt.js b/public/theme/fullcalendar/dist/lang/lt.js new file mode 100644 index 0000000..2389bf6 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/lt.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return g[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}var g={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h=(b.defineLocale||b.lang).call(b,"lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_")},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});return h}(),a.fullCalendar.datepickerLang("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/lv.js b/public/theme/fullcalendar/dist/lang/lv.js new file mode 100644 index 0000000..b27c6ff --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/lv.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function c(b,c,d){return b+" "+a(f[d],b,c)}function d(b,c,d){return a(f[d],b,c)}function e(a,b){return b?"dažas sekundes":"dažām sekundēm"}var f={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},g=(b.defineLocale||b.lang).call(b,"lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:e,m:d,mm:c,h:d,hh:c,d:d,dd:c,M:d,MM:c,y:d,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g}(),a.fullCalendar.datepickerLang("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(a){return"+vēl "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/nb.js b/public/theme/fullcalendar/dist/lang/nb.js new file mode 100644 index 0000000..2996958 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/nb.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/nl.js b/public/theme/fullcalendar/dist/lang/nl.js new file mode 100644 index 0000000..52a3549 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/nl.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),d=(b.defineLocale||b.lang).call(b,"nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/pl.js b/public/theme/fullcalendar/dist/lang/pl.js new file mode 100644 index 0000000..7fd6f98 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/pl.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(b,c,d){var e=b+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(a(b)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(a(b)?"godziny":"godzin");case"MM":return e+(a(b)?"miesiące":"miesięcy");case"yy":return e+(a(b)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),f=(b.defineLocale||b.lang).call(b,"pl",{months:function(a,b){return""===b?"("+e[a.month()]+"|"+d[a.month()]+")":/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/pt-br.js b/public/theme/fullcalendar/dist/lang/pt-br.js new file mode 100644 index 0000000..ad64773 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/pt-br.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return a}(),a.fullCalendar.datepickerLang("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(a){return"mais +"+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/pt.js b/public/theme/fullcalendar/dist/lang/pt.js new file mode 100644 index 0000000..652ffc5 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/pt.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ro.js b/public/theme/fullcalendar/dist/lang/ro.js new file mode 100644 index 0000000..69859ac --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ro.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}var c=(b.defineLocale||b.lang).call(b,"ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(a){return"+alte "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/ru.js b/public/theme/fullcalendar/dist/lang/ru.js new file mode 100644 index 0000000..0b6db7e --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/ru.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":b+" "+a(e[d],+b)}var d=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],e=(b.defineLocale||b.lang).call(b,"ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,monthsRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsShortRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsStrictRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|марта?|июн[яь]|июл[яь]|ма[яй])/i,monthsShortStrictRegex:/^(нояб\.|февр\.|сент\.|июль|янв\.|июн[яь]|мар[.т]|авг\.|апр\.|окт\.|дек\.|ма[яй])/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(a){return"+ ещё "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/sk.js b/public/theme/fullcalendar/dist/lang/sk.js new file mode 100644 index 0000000..991ca49 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/sk.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a){return a>1&&5>a}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(a(b)?"minúty":"minút"):f+"minútami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodín"):f+"hodinami";case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(a(b)?"dni":"dní"):f+"dňami";case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(a(b)?"mesiace":"mesiacov"):f+"mesiacmi";case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(a(b)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),f=(b.defineLocale||b.lang).call(b,"sk",{months:d,monthsShort:e,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(a){return"+ďalšie: "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/sl.js b/public/theme/fullcalendar/dist/lang/sl.js new file mode 100644 index 0000000..619142c --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/sl.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}var c=(b.defineLocale||b.lang).call(b,"sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/sr-cyrl.js b/public/theme/fullcalendar/dist/lang/sr-cyrl.js new file mode 100644 index 0000000..08e8087 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/sr-cyrl.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/sr.js b/public/theme/fullcalendar/dist/lang/sr.js new file mode 100644 index 0000000..3cc4a57 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/sr.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/sv.js b/public/theme/fullcalendar/dist/lang/sv.js new file mode 100644 index 0000000..95abfaf --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/sv.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/th.js b/public/theme/fullcalendar/dist/lang/th.js new file mode 100644 index 0000000..bd37235 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/th.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return a}(),a.fullCalendar.datepickerLang("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/tr.js b/public/theme/fullcalendar/dist/lang/tr.js new file mode 100644 index 0000000..413d5c5 --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/tr.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},c=(b.defineLocale||b.lang).call(b,"tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(b){if(0===b)return b+"'ıncı";var c=b%10,d=b%100-c,e=b>=100?100:null;return b+(a[c]||a[d]||a[e])},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla"})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/uk.js b/public/theme/fullcalendar/dist/lang/uk.js new file mode 100644 index 0000000..ccb756a --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/uk.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:c?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":b+" "+a(e[d],+b)}function d(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function e(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var f=(b.defineLocale||b.lang).call(b,"uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:d,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:e("[Сьогодні "),nextDay:e("[Завтра "),lastDay:e("[Вчора "),nextWeek:e("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[Минулої] dddd [").call(this);case 1:case 2:case 4:return e("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});return f}(),a.fullCalendar.datepickerLang("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(a){return"+ще "+a+"..."}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/vi.js b/public/theme/fullcalendar/dist/lang/vi.js new file mode 100644 index 0000000..ec2369b --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/vi.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(a){return"+ thêm "+a}})}); \ No newline at end of file diff --git a/public/theme/fullcalendar/dist/lang/zh-cn.js b/public/theme/fullcalendar/dist/lang/zh-cn.js new file mode 100644 index 0000000..78096fd --- /dev/null +++ b/public/theme/fullcalendar/dist/lang/zh-cn.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,c;return a=b().startOf("week"),c=this.diff(a,"days")>=7?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var a,c;return a=b().startOf("week"),c=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1分鐘",mm:"%d分鐘",h:"1小時",hh:"%d小時",d:"1天",dd:"%d天",M:"1個月",MM:"%d個月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多"})}); \ No newline at end of file diff --git a/public/theme/google-code-prettify/.bower.json b/public/theme/google-code-prettify/.bower.json new file mode 100644 index 0000000..51d2060 --- /dev/null +++ b/public/theme/google-code-prettify/.bower.json @@ -0,0 +1,26 @@ +{ + "name": "google-code-prettify", + "version": "1.0.4", + "main": [ + "./bin/prettify.min.css", + "./bin/prettify.min.js" + ], + "dependencies": {}, + "ignore": [ + "closure-compiler", + "js-modules", + "tests", + "yui-compressor", + "Makefile" + ], + "homepage": "https://github.com/tcollard/google-code-prettify", + "_release": "1.0.4", + "_resolution": { + "type": "version", + "tag": "v1.0.4", + "commit": "80478ff92dec68d56498bad7451546d11c15e541" + }, + "_source": "https://github.com/tcollard/google-code-prettify.git", + "_target": "~1.0.4", + "_originalSource": "google-code-prettify" +} \ No newline at end of file diff --git a/public/theme/google-code-prettify/CHANGES.html b/public/theme/google-code-prettify/CHANGES.html new file mode 100644 index 0000000..de9e2b7 --- /dev/null +++ b/public/theme/google-code-prettify/CHANGES.html @@ -0,0 +1,172 @@ + + + + Change Log + + + README + +

          Known Issues

          +
            +
          • Perl formatting is really crappy. Partly because the author is lazy and + partly because Perl is + hard to parse. +
          • On some browsers, <code> elements with newlines in the text + which use CSS to specify white-space:pre will have the newlines + improperly stripped if the element is not attached to the document at the time + the stripping is done. Also, on IE 6, all newlines will be stripped from + <code> elements because of the way IE6 produces + innerHTML. Workaround: use <pre> for code with + newlines. +
          + +

          Change Log

          +

          29 March 2007

          +
            +
          • Added tests for PHP support + to address + issue 3. +
          • Fixed + bug: prettyPrintOne was not halting. This was not + reachable through the normal entry point. +
          • Fixed + bug: recursing into a script block or PHP tag that was not properly + closed would not silently drop the content. + (test) +
          • Fixed + bug: was eating tabs + (test) +
          • Fixed entity handling so that the caveat +
            +

            Caveats: please properly escape less-thans. x&lt;y + instead of x<y, and use " instead of + &quot; for string delimiters.

            +
            + is no longer applicable. +
          • Added noisefree's C# + patch +
          • Added a distribution that has comments and + whitespace removed to reduce download size from 45.5kB to 12.8kB. +
          +

          4 Jul 2008

          +
            +
          • Added language specific formatters that are triggered by the presence + of a lang-<language-file-extension>
          • +
          • Fixed bug: python handling of '''string''' +
          • Fixed bug: / in regex [charsets] should not end regex +
          +

          5 Jul 2008

          +
            +
          • Defined language extensions for Lisp and Lua +
          +

          14 Jul 2008

          +
            +
          • Language handlers for F#, OCAML, SQL +
          • Support for nocode spans to allow embedding of line + numbers and code annotations which should not be styled or otherwise + affect the tokenization of prettified code. + See the issue 22 + testcase. +
          +

          6 Jan 2009

          +
            +
          • Language handlers for Visual Basic, Haskell, CSS, and WikiText
          • +
          • Added .mxml extension to the markup style handler for + Flex MXML files. See + issue 37. +
          • Added .m extension to the C style handler so that Objective + C source files properly highlight. See + issue 58. +
          • Changed HTML lexer to use the same embedded source mechanism as the + wiki language handler, and changed to use the registered + CSS handler for STYLE element content. +
          +

          21 May 2009

          +
            +
          • Rewrote to improve performance on large files. + See benchmarks.
          • +
          • Fixed bugs with highlighting of Haskell line comments, Lisp + number literals, Lua strings, C preprocessor directives, + newlines in Wiki code on Windows, and newlines in IE6.
          • +
          +

          14 August 2009

          +
            +
          • Fixed prettifying of <code> blocks with embedded newlines. +
          +

          3 October 2009

          +
            +
          • Fixed prettifying of XML/HTML tags that contain uppercase letters. +
          +

          19 July 2010

          +
            +
          • Added support for line numbers. Bug + 22
          • +
          • Added YAML support. Bug + 123
          • +
          • Added VHDL support courtesy Le Poussin.
          • +
          • IE performance improvements. Bug + 102 courtesy jacobly.
          • +
          • A variety of markup formatting fixes courtesy smain and thezbyg.
          • +
          • Fixed copy and paste in IE[678]. +
          • Changed output to use &#160; instead of + &nbsp; so that the output works when embedded in XML. + Bug + 108.
          • +
          +

          7 September 2010

          +
            +
          • Added support for coffeescript courtesy Cezary Bartoszuk.
          • +
          +

          4 March 2011

          +
            +
          • Added a themes + gallery to showcase contributed styles.
          • +
          • Added support for XQuery courtesy Patrick Wied, Nemerle + courtesy Zimin A.V., and Latex support courtesy Martin S.
          • +
          +

          29 March 2011

          +
            +
          • Fixed IE newline issues, and copying/pasting of prettified + source code from IE. This required significant internal changes + but involves no API changes. + Caveat: prettyPrintOne injects the HTML + passed to it into a <pre> element. + If the HTML comes from a trusted source, this may allow XSS. + Do not do this. This should not be a problem for existing apps + since the standard usage is to rewrite the HTML and then inject + it, so anyone doing that with untrusted HTML already has an XSS + vulnerability. If you sanitize and prettify HTML from an + untrusted source, sanitize first. +
          +

          4 February 2013

          +
            +
          • Language handlers for Dart, Erlang, Mumps, TCL, R, S., and others
          • +
          • Bug fix: VB REM style comments.
          • +
          • Bug fix: CSS color literals / ID selector confusion.
          • +
          • Bug fix: IE8 line breaks.
          • +
          +

          24 February 2013

          +
            +
          • Added a one script autoload&run mechanism and a way to + embed hints in processing instructions/comments. + See example. +
          +

          4 March 2013

          +
            +
          • Matlab language handler courtesy Amro³
          • +
          + + diff --git a/public/theme/google-code-prettify/COPYING b/public/theme/google-code-prettify/COPYING new file mode 100644 index 0000000..b7f86df --- /dev/null +++ b/public/theme/google-code-prettify/COPYING @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2011 Mike Samuel et al + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/public/theme/google-code-prettify/README-zh-Hans.html b/public/theme/google-code-prettify/README-zh-Hans.html new file mode 100644 index 0000000..b92e3c0 --- /dev/null +++ b/public/theme/google-code-prettify/README-zh-Hans.html @@ -0,0 +1,143 @@ + + + + + + Javascript code prettifier + + + + + + + + + +

          Javascript code prettifier

          +

          Javascript 代码美容师

          +

          安装使用

          +
            +
          1. 下载 文件 +
          2. 在你的文件中包含这儿的脚本和样式表(你要保证这儿的 css 和 js 文件按在你的服务器上, 并且调整在 scriptlink标签中的路径) +
            +<link href="prettify.css" type="text/css" rel="stylesheet" />
            +<script type="text/javascript" src="prettify.js"></script>
            +
          3. 添加onload="prettyPrint()" 到你的文件的 body 标签中. +
          4. 修改样式表,使用你自己喜欢的颜色.
          5. +
          + +

          使用方法

          +

          在 + <pre class="prettyprint">...</pre><code class="prettyprint">...</code> + 中间放上代码片段,它就会自动被美化了. + + + + +
          The original + Prettier +
          class Voila {
          +public:
          +  // Voila
          +  static const string VOILA = "Voila";
          +
          +  // will not interfere with embedded tags.
          +}
          + +
          class Voila {
          +public:
          +  // Voila
          +  static const string VOILA = "Voila";
          +
          +  // will not interfere with embedded tags.
          +}
          +
          + + +

          常见问题

          +

          它是为什么语言工作的?

          +

          prettify.js中的注释是权威的,但是它的语法分析程序可以在很多语言中使用,包括 C , + Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, 和 Makefiles. + 它在 Ruby, PHP, VB, 和 Awk 中还算可以,而且也可以在 Perl 和 Ruby的合适子集中起作用,但是, 因为注释的约定,它对 + Smalltalk, 或 CAML类似的语言起作用.

          + + +

          LISP系列的语言可以使用一个拓展lang-lisp.js.

          对于 CSS, + Haskell, + Lua, + OCAML, SML, F#, + Visual Basic, + SQL, + Protocol Buffers, 和 + WikiText..也是类似的

          如果你想给你喜欢的语言写个拓展版本, 请参阅src/lang-lisp.js ,并写一个包括你的语言的拓展的 发布 和一个测试用例.

          + +

          如何指定我的代码在哪种语言里?

          +

          你不需要指定语言环境,因为 prettyprint() + 会对此进行猜测. 你可以使用 prettyprint 这个类通过指定语言的拓展名来指定语言,就像这样:

          +
          <pre class="prettyprint lang-html">
          +  The lang-* class specifies the language file extensions.
          +  File extensions supported by default include
          +    "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
          +    "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
          +    "xhtml", "xml", "xsl".
          +</pre>
          + +

          它在混淆代码例子上不起作用吗?

          +

          是的. 美化混淆代码就像给小猪涂口红,也就是不在这个工具的范围内.

          + +

          它可以在那些浏览器上工作?

          +

          这个工具已经在 IE 6, Firefox 1.5 & 2, 和 Safari 2.0.4 上测试通过. 打开 测试页面 ,看看它能不能在你的浏览器上起作用.

          + +

          有什么改变?

          +

          查看 变化日志

          + +

           为什么Prettyprinting 对WordPress中的字符串没用?

          +

          很显然,wordpress 在 "smart quoting" 时会改变关闭符号. + 这使得关闭符号跟开始符号不配套. +

          这和复制粘贴代码一样,破坏了美化作用. 去 + WordPress's help center 查看更多关于如何关闭插入代码段时的"smart quoting"的信息.

          + +

          如何在我的代码中加入行号? (Out of date -- see English version)

          +

          你可以使用 nocode 类来标记 span 标记不是代码. +

          <pre class=prettyprint>
          +<span class="nocode">1:</span> /* This is line 1 of my code
          +<span class="nocode">2:</span>  * and here's line 2 */
          +<span class="nocode">3:</span> print("I'm line number 3");
          +</pre>
          得到 +
          +1: /* This is line 1 of my code
          +2:  * and here's line 2 */
          +3: print("I'm line number 3");
          +
          + +

          查看一个更完整的例子: issue22 + testcase.

          + +

          我得到了这样一条错误信息 "a is not a function" 或 "opt_whenDone is not a function"

          +

          如果你通过事件句柄条用 prettyPrint , 把它隐藏到一个函数中.

          不要这么写 +

          + addEventListener('load', prettyPrint, false); +
          而要这么写 +
          + addEventListener('load', function (event) { prettyPrint() }, false); +
          这样的话,浏览器就不会把时间对象传递给 prettyPrint ,事件对象会让它困惑的. + +


          + + + + diff --git a/public/theme/google-code-prettify/README.html b/public/theme/google-code-prettify/README.html new file mode 100644 index 0000000..d1fd4a1 --- /dev/null +++ b/public/theme/google-code-prettify/README.html @@ -0,0 +1,233 @@ + + + + + Javascript code prettifier + + + + + + + + + + Languages : CH +

          Javascript code prettifier

          + +

          Setup

          +
            +
          1. Download a distribution +
          2. Include the script tag below in your document +
            +>script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js></script>
            +
          3. See Getting Started to configure that URL with options you need. +
          4. Look at the skin gallery and pick styles that suit you.
          5. +
          + +

          Usage

          +

          Put code snippets in + <pre class="prettyprint">...</pre> + or <code class="prettyprint">...</code> + and it will automatically be pretty printed. + + + + +
          The original + Prettier +
          class Voila {
          +public:
          +  // Voila
          +  static const string VOILA = "Voila";
          +
          +  // will not interfere with embedded tags.
          +}
          + +
          class Voila {
          +public:
          +  // Voila
          +  static const string VOILA = "Voila";
          +
          +  // will not interfere with embedded tags.
          +}
          +
          + +

          FAQ

          +

          For which languages does it work?

          +

          The comments in prettify.js are authoritative but the lexer + should work on a number of languages including C and friends, + Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, Makefiles, + and Rust. + It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl + and Ruby, but, because of commenting conventions, but doesn't work on + Smalltalk.

          + +

          Other languages are supported via extensions: +

          + +

          If you'd like to add an extension for your favorite language, please + look at src/lang-lisp.js and file an + issue including your language extension, and a testcase.

          + +

          How do I specify the language of my code?

          +

          You don't need to specify the language since prettyprint() + will guess. You can specify a language by specifying the language extension + along with the prettyprint class like so:

          +
          <pre class="prettyprint lang-html">
          +  The lang-* class specifies the language file extensions.
          +  File extensions supported by default include
          +    "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
          +    "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
          +    "xhtml", "xml", "xsl".
          +</pre>
          + +

          You may also use the + HTML 5 convention of embedding a code element inside the + PRE and using language-java style classes. + E.g.

          <pre class="prettyprint"><code class="language-java">...</code></pre> + +

          It doesn't work on <obfuscated code sample>?

          +

          Yes. Prettifying obfuscated code is like putting lipstick on a pig + — i.e. outside the scope of this tool.

          + +

          Which browsers does it work with?

          +

          It's been tested with IE 6, Firefox 1.5 & 2, and Safari 2.0.4. + Look at the test page to see if it + works in your browser.

          + +

          What's changed?

          +

          See the change log

          + +

          Why doesn't Prettyprinting of strings work on WordPress?

          +

          Apparently wordpress does "smart quoting" which changes close quotes. + This causes end quotes to not match up with open quotes. +

          This breaks prettifying as well as copying and pasting of code samples. + See + WordPress's help center for info on how to stop smart quoting of code + snippets.

          + +

          How do I put line numbers in my code?

          +

          You can use the linenums class to turn on line + numbering. If your code doesn't start at line number 1, you can + add a colon and a line number to the end of that class as in + linenums:52. + +

          For example +

          <pre class="prettyprint linenums:4"
          +>// This is line 4.
          +foo();
          +bar();
          +baz();
          +boo();
          +far();
          +faz();
          +<pre>
          + produces +
          // This is line 4.
          +foo();
          +bar();
          +baz();
          +boo();
          +far();
          +faz();
          +
          + +

          How do I prevent a portion of markup from being marked as code?

          +

          You can use the nocode class to identify a span of markup + that is not code. +

          <pre class=prettyprint>
          +int x = foo();  /* This is a comment  <span class="nocode">This is not code</span>
          +  Continuation of comment */
          +int y = bar();
          +</pre>
          +produces +
          +int x = foo();  /* This is a comment  This is not code
          +  Continuation of comment */
          +int y = bar();
          +
          + +

          For a more complete example see the issue22 + testcase.

          + +

          I get an error message "a is not a function" or "opt_whenDone is not a function"

          +

          If you are calling prettyPrint via an event handler, wrap it in a function. + Instead of doing +

          + addEventListener('load', prettyPrint, false); +
          + wrap it in a closure like +
          + addEventListener('load', function (event) { prettyPrint() }, false); +
          + so that the browser does not pass an event object to prettyPrint which + will confuse it. + +

          How can I customize the colors and styles of my code?

          +

          + Prettify adds <span> with classes describing + the kind of code. You can create CSS styles to matches these + classes. + See the + + theme gallery for examples. +

          + +

          I can't add classes to my code (because it comes from Markdown, etc.)

          +

          + Instead of <pre class="prettyprint ..."> you can use a + comment or processing instructions that survives processing instructions : + <?prettify ...?> works as explained in + Getting Started

          + +


          + + + + diff --git a/public/theme/google-code-prettify/README.md b/public/theme/google-code-prettify/README.md new file mode 100644 index 0000000..51e0fac --- /dev/null +++ b/public/theme/google-code-prettify/README.md @@ -0,0 +1,54 @@ +# Google Code Prettify + +Direct port of svn into git from http://google-code-prettify.googlecode.com/svn/trunk/ + +## Install + +via [Bower](http://twitter.github.com/bower/) + + bower install google-code-prettify + +or [Yeoman](http://yeoman.io/) + + yeoman install google-code-prettify + + +## Usage + +The prettify script is AMD compatible and can be used modularly. Here is an example of it in an AMD module: + +```javascript +define(['jquery', 'prettify'], function($, prettify){ + var code = null; + $('pre').addClass('prettyprint').each(function(idx, el){ + code = el.firstChild; + code.innerHTML = prettify.prettyPrintOne(code.innerHTML); + }) + ); +}); +``` + +This version of google-code-prettify defines an anonymous module, which is more flexible. To allow your AMD loader to find google-code-prettify with a more convenient name, map a path to it as follows: + +```js +// using RequireJS +require.config({ + prettify: 'bower_components/google-code-prettify/prettify' +}); + +// using curl.js +curl.config({ + prettify: 'bower_components/google-code-prettify/prettify' +}); +``` + +Or it may just be used in a global context like the following: + +```javascript +(function(){ + $('pre').addClass('prettyprint'); + prettyPrint(); +})(); +``` + +More information can be found in the original [README.html](http://google-code-prettify.googlecode.com/svn/trunk/README.html) \ No newline at end of file diff --git a/public/theme/google-code-prettify/bin/prettify.min.css b/public/theme/google-code-prettify/bin/prettify.min.css new file mode 100644 index 0000000..d44b3a2 --- /dev/null +++ b/public/theme/google-code-prettify/bin/prettify.min.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/public/theme/google-code-prettify/bin/prettify.min.js b/public/theme/google-code-prettify/bin/prettify.min.js new file mode 100644 index 0000000..7b99049 --- /dev/null +++ b/public/theme/google-code-prettify/bin/prettify.min.js @@ -0,0 +1,30 @@ +!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a= +b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;ah[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com", +/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+ +s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/, +q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d= +c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"], +O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/, +V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-", +/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/], +["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}), +["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q, +hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]); +p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="
          "+a+"
          ";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1}); +return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D= +[],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]- +a[0]||a[1]-f[1]});b=[];g=[];for(a=0;ak[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y, +g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, +r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/, +r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+ +("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, +r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}} +function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"], +L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/, +S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-", +/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/], +["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}), +["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N, +hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]); +i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="
          "+a+"
          ";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML}, +prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p + + + +Making Quines Prettier + + + + + + +

          Making Quines Prettier

          + +

          +Below is the content of this page prettified. The <pre> +element is prettified because it has class="prettyprint" and +because the sourced script loads a JavaScript library that styles source +code. +

          + +

          +The line numbers to the left appear because the preceding comment +<?prettify lang=html linenums=true?> turns on +line-numbering and the +stylesheet +(see skin=sunburst in the <script src>) +specifies that every fifth line should be numbered. +

          + + + +
          
          +
          +
          +
          diff --git a/public/theme/google-code-prettify/src/lang-apollo.js b/public/theme/google-code-prettify/src/lang-apollo.js
          new file mode 100644
          index 0000000..9fa1d24
          --- /dev/null
          +++ b/public/theme/google-code-prettify/src/lang-apollo.js
          @@ -0,0 +1,51 @@
          +// Copyright (C) 2009 Onno Hommes.
          +//
          +// Licensed under the Apache License, Version 2.0 (the "License");
          +// you may not use this file except in compliance with the License.
          +// You may obtain a copy of the License at
          +//
          +//      http://www.apache.org/licenses/LICENSE-2.0
          +//
          +// Unless required by applicable law or agreed to in writing, software
          +// distributed under the License is distributed on an "AS IS" BASIS,
          +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          +// See the License for the specific language governing permissions and
          +// limitations under the License.
          +
          +
          +/**
          + * @fileoverview
          + * Registers a language handler for the AGC/AEA Assembly Language as described
          + * at http://virtualagc.googlecode.com
          + * 

          + * This file could be used by goodle code to allow syntax highlight for + * Virtual AGC SVN repository or if you don't want to commonize + * the header for the agc/aea html assembly listing. + * + * @author ohommes@alumni.cmu.edu + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // A line comment that starts with ; + [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'], + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double quoted, possibly multi-line, string. + [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] + ], + [ + [PR['PR_KEYWORD'], /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null], + [PR['PR_TYPE'], /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null], + // A single quote possibly followed by a word that optionally ends with + // = ! or ?. + [PR['PR_LITERAL'], + /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], + // Any word including labels that optionally ends with = ! or ?. + [PR['PR_PLAIN'], + /^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], + // A printable non-space non-special character + [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/] + ]), + ['apollo', 'agc', 'aea']); diff --git a/public/theme/google-code-prettify/src/lang-basic.js b/public/theme/google-code-prettify/src/lang-basic.js new file mode 100644 index 0000000..b3c33fd --- /dev/null +++ b/public/theme/google-code-prettify/src/lang-basic.js @@ -0,0 +1,32 @@ +// Contributed by peter dot kofler at code minus cop dot org + +/** + * @fileoverview + * Registers a language handler for Basic. + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *

          (my BASIC code)
          + * + * @author peter dot kofler at code minus cop dot org + */ + +PR.registerLangHandler( + PR.createSimpleLexer( + [ // shortcutStylePatterns + // "single-line-string" + [PR.PR_STRING, /^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/, null, '"'], + // Whitespace + [PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0'] + ], + [ // fallthroughStylePatterns + // A line comment that starts with REM + [PR.PR_COMMENT, /^REM[^\r\n]*/, null], + [PR.PR_KEYWORD, /^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/, null], + [PR.PR_PLAIN, /^[A-Z][A-Z0-9]?(?:\$|%)?/i, null], + // Literals .0, 0, 0.0 0E13 + [PR.PR_LITERAL, /^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i, null, '0123456789'], + [PR.PR_PUNCTUATION, /^.[^\s\w\.$%"]*/, null] + // [PR.PR_PUNCTUATION, /^[-,:;!<>=\+^\/\*]+/] + ]), + ['basic','cbm']); diff --git a/public/theme/google-code-prettify/src/lang-clj.js b/public/theme/google-code-prettify/src/lang-clj.js new file mode 100644 index 0000000..0758335 --- /dev/null +++ b/public/theme/google-code-prettify/src/lang-clj.js @@ -0,0 +1,64 @@ +/** + * @license Copyright (C) 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview + * Registers a language handler for Clojure. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
          (my lisp code)
          + * The lang-cl class identifies the language as common lisp. + * This file supports the following language extensions: + * lang-clj - Clojure + * + * + * I used lang-lisp.js as the basis for this adding the clojure specific + * keywords and syntax. + * + * "Name" = 'Clojure' + * "Author" = 'Rich Hickey' + * "Version" = '1.2' + * "About" = 'Clojure is a lisp for the jvm with concurrency primitives and a richer set of types.' + * + * + * I used Clojure.org Reference as + * the basis for the reserved word list. + * + * + * @author jwall@google.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // clojure has more paren types than minimal lisp. + ['opn', /^[\(\{\[]+/, null, '([{'], + ['clo', /^[\)\}\]]+/, null, ')]}'], + // A line comment that starts with ; + [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'], + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double quoted, possibly multi-line, string. + [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] + ], + [ + // clojure has a much larger set of keywords + [PR['PR_KEYWORD'], /^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/, null], + [PR['PR_TYPE'], /^:[0-9a-zA-Z\-]+/] + ]), + ['clj']); diff --git a/public/theme/google-code-prettify/src/lang-css.js b/public/theme/google-code-prettify/src/lang-css.js new file mode 100644 index 0000000..879dad2 --- /dev/null +++ b/public/theme/google-code-prettify/src/lang-css.js @@ -0,0 +1,159 @@ +// Copyright (C) 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for CSS. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
          
          + *
          + *
          + * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
          + * grammar.  This scheme does not recognize keywords containing escapes.
          + *
          + * @author mikesamuel@gmail.com
          + */
          +
          +// This file is a call to a function defined in prettify.js which defines a
          +// lexical scanner for CSS and maps tokens to styles.
          +
          +// The call to PR['registerLangHandler'] is quoted so that Closure Compiler
          +// will not rename the call so that this language extensions can be
          +// compiled/minified separately from one another.  Other symbols defined in
          +// prettify.js are similarly quoted.
          +
          +// The call is structured thus:
          +// PR['registerLangHandler'](
          +//    PR['createSimpleLexer'](
          +//        shortcutPatterns,
          +//        fallThroughPatterns),
          +//    [languageId0, ..., languageIdN])
          +
          +// Langugage IDs
          +// =============
          +// The language IDs are typically the file extensions of source files for
          +// that language so that users can syntax highlight arbitrary files based
          +// on just the extension.  This is heuristic, but works pretty well in
          +// practice.
          +
          +// Patterns
          +// ========
          +// Lexers are typically implemented as a set of regular expressions.
          +// The SimpleLexer function takes regular expressions, styles, and some
          +// pragma-info and produces a lexer.  A token description looks like
          +//   [STYLE_NAME, /regular-expression/, pragmas]
          +
          +// Initially, simple lexer's inner loop looked like:
          +
          +//    while sourceCode is not empty:
          +//      try each regular expression in order until one matches
          +//      remove the matched portion from sourceCode
          +
          +// This was really slow for large files because some JS interpreters
          +// do a buffer copy on the matched portion which is O(n*n)
          +
          +// The current loop now looks like
          +
          +//    1. use js-modules/combinePrefixPatterns.js to 
          +//       combine all regular expressions into one 
          +//    2. use a single global regular expresion match to extract all tokens
          +//    3. for each token try regular expressions in order until one matches it
          +//       and classify it using the associated style
          +
          +// This is a lot more efficient but it does mean that lookahead and lookbehind
          +// can't be used across boundaries to classify tokens.
          +
          +// Sometimes we need lookahead and lookbehind and sometimes we want to handle
          +// embedded language -- JavaScript or CSS embedded in HTML, or inline assembly
          +// in C.
          +
          +// If a particular pattern has a numbered group, and its style pattern starts
          +// with "lang-" as in
          +//    ['lang-js', /}
          + * 
        5. define style rules. See the example page for examples. + *
        6. mark the {@code
          } and {@code } tags in your source with
          + *    {@code class=prettyprint.}
          + *    You can also use the (html deprecated) {@code } tag, but the pretty
          + *    printer needs to do more substantial DOM manipulations to support that, so
          + *    some css styles may not be preserved.
          + * </ol>
          + * That's it.  I wanted to keep the API as simple as possible, so there's no
          + * need to specify which language the code is in, but if you wish, you can add
          + * another class to the {@code <pre>} or {@code <code>} element to specify the
          + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
          + * starts with "lang-" followed by a file extension, specifies the file type.
          + * See the "lang-*.js" files in this directory for code that implements
          + * per-language file handlers.
          + * <p>
          + * Change log:<br>
          + * cbeust, 2006/08/22
          + * <blockquote>
          + *   Java annotations (start with "@") are now captured as literals ("lit")
          + * </blockquote>
          + * @requires console
          + */
          +
          +// JSLint declarations
          +/*global console, document, navigator, setTimeout, window, define */
          +
          +/** @define {boolean} */
          +var IN_GLOBAL_SCOPE = true;
          +
          +/**
          + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
          + * UI events.
          + * If set to {@code false}, {@code prettyPrint()} is synchronous.
          + */
          +window['PR_SHOULD_USE_CONTINUATION'] = true;
          +
          +/**
          + * Pretty print a chunk of code.
          + * @param {string} sourceCodeHtml The HTML to pretty print.
          + * @param {string} opt_langExtension The language name to use.
          + *     Typically, a filename extension like 'cpp' or 'java'.
          + * @param {number|boolean} opt_numberLines True to number lines,
          + *     or the 1-indexed number of the first line in sourceCodeHtml.
          + * @return {string} code as html, but prettier
          + */
          +var prettyPrintOne;
          +/**
          + * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
          + * {@code class=prettyprint} and prettify them.
          + *
          + * @param {Function} opt_whenDone called when prettifying is done.
          + * @param {HTMLElement|HTMLDocument} opt_root an element or document
          + *   containing all the elements to pretty print.
          + *   Defaults to {@code document.body}.
          + */
          +var prettyPrint;
          +
          +
          +(function () {
          +  var win = window;
          +  // Keyword lists for various languages.
          +  // We use things that coerce to strings to make them compact when minified
          +  // and to defeat aggressive optimizers that fold large string constants.
          +  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
          +  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
          +      "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
          +      "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
          +  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
          +      "new,operator,private,protected,public,this,throw,true,try,typeof"];
          +  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
          +      "concept,concept_map,const_cast,constexpr,decltype,delegate," +
          +      "dynamic_cast,explicit,export,friend,generic,late_check," +
          +      "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
          +      "static_cast,template,typeid,typename,using,virtual,where"];
          +  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
          +      "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
          +      "instanceof,interface,null,native,package,strictfp,super,synchronized," +
          +      "throws,transient"];
          +  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
          +      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
          +      "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
          +      "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
          +      "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
          +      "var,virtual,where"];
          +  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
          +      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
          +      "throw,true,try,unless,until,when,while,yes";
          +  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
          +      "debugger,eval,export,function,get,null,set,undefined,var,with," +
          +      "Infinity,NaN"];
          +  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
          +      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
          +      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
          +  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
          +      "elif,except,exec,finally,from,global,import,in,is,lambda," +
          +      "nonlocal,not,or,pass,print,raise,try,with,yield," +
          +      "False,True,None"];
          +  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
          +      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
          +      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
          +      "BEGIN,END"];
          +   var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
          +      "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
          +      "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
          +  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
          +      "function,in,local,set,then,until"];
          +  var ALL_KEYWORDS = [
          +      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
          +      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
          +  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
          +
          +  // token style names.  correspond to css classes
          +  /**
          +   * token style for a string literal
          +   * @const
          +   */
          +  var PR_STRING = 'str';
          +  /**
          +   * token style for a keyword
          +   * @const
          +   */
          +  var PR_KEYWORD = 'kwd';
          +  /**
          +   * token style for a comment
          +   * @const
          +   */
          +  var PR_COMMENT = 'com';
          +  /**
          +   * token style for a type
          +   * @const
          +   */
          +  var PR_TYPE = 'typ';
          +  /**
          +   * token style for a literal value.  e.g. 1, null, true.
          +   * @const
          +   */
          +  var PR_LITERAL = 'lit';
          +  /**
          +   * token style for a punctuation string.
          +   * @const
          +   */
          +  var PR_PUNCTUATION = 'pun';
          +  /**
          +   * token style for plain text.
          +   * @const
          +   */
          +  var PR_PLAIN = 'pln';
          +
          +  /**
          +   * token style for an sgml tag.
          +   * @const
          +   */
          +  var PR_TAG = 'tag';
          +  /**
          +   * token style for a markup declaration such as a DOCTYPE.
          +   * @const
          +   */
          +  var PR_DECLARATION = 'dec';
          +  /**
          +   * token style for embedded source.
          +   * @const
          +   */
          +  var PR_SOURCE = 'src';
          +  /**
          +   * token style for an sgml attribute name.
          +   * @const
          +   */
          +  var PR_ATTRIB_NAME = 'atn';
          +  /**
          +   * token style for an sgml attribute value.
          +   * @const
          +   */
          +  var PR_ATTRIB_VALUE = 'atv';
          +
          +  /**
          +   * A class that indicates a section of markup that is not code, e.g. to allow
          +   * embedding of line numbers within code listings.
          +   * @const
          +   */
          +  var PR_NOCODE = 'nocode';
          +
          +  
          +  
          +  /**
          +   * A set of tokens that can precede a regular expression literal in
          +   * javascript
          +   * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
          +   * has the full list, but I've removed ones that might be problematic when
          +   * seen in languages that don't support regular expression literals.
          +   *
          +   * <p>Specifically, I've removed any keywords that can't precede a regexp
          +   * literal in a syntactically legal javascript program, and I've removed the
          +   * "in" keyword since it's not a keyword in many languages, and might be used
          +   * as a count of inches.
          +   *
          +   * <p>The link above does not accurately describe EcmaScript rules since
          +   * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
          +   * very well in practice.
          +   *
          +   * @private
          +   * @const
          +   */
          +  var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
          +  
          +  // CAVEAT: this does not properly handle the case where a regular
          +  // expression immediately follows another since a regular expression may
          +  // have flags for case-sensitivity and the like.  Having regexp tokens
          +  // adjacent is not valid in any language I'm aware of, so I'm punting.
          +  // TODO: maybe style special characters inside a regexp as punctuation.
          +
          +  /**
          +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
          +   * matches the union of the sets of strings matched by the input RegExp.
          +   * Since it matches globally, if the input strings have a start-of-input
          +   * anchor (/^.../), it is ignored for the purposes of unioning.
          +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
          +   * @return {RegExp} a global regex.
          +   */
          +  function combinePrefixPatterns(regexs) {
          +    var capturedGroupIndex = 0;
          +  
          +    var needToFoldCase = false;
          +    var ignoreCase = false;
          +    for (var i = 0, n = regexs.length; i < n; ++i) {
          +      var regex = regexs[i];
          +      if (regex.ignoreCase) {
          +        ignoreCase = true;
          +      } else if (/[a-z]/i.test(regex.source.replace(
          +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
          +        needToFoldCase = true;
          +        ignoreCase = false;
          +        break;
          +      }
          +    }
          +  
          +    var escapeCharToCodeUnit = {
          +      'b': 8,
          +      't': 9,
          +      'n': 0xa,
          +      'v': 0xb,
          +      'f': 0xc,
          +      'r': 0xd
          +    };
          +  
          +    function decodeEscape(charsetPart) {
          +      var cc0 = charsetPart.charCodeAt(0);
          +      if (cc0 !== 92 /* \\ */) {
          +        return cc0;
          +      }
          +      var c1 = charsetPart.charAt(1);
          +      cc0 = escapeCharToCodeUnit[c1];
          +      if (cc0) {
          +        return cc0;
          +      } else if ('0' <= c1 && c1 <= '7') {
          +        return parseInt(charsetPart.substring(1), 8);
          +      } else if (c1 === 'u' || c1 === 'x') {
          +        return parseInt(charsetPart.substring(2), 16);
          +      } else {
          +        return charsetPart.charCodeAt(1);
          +      }
          +    }
          +  
          +    function encodeEscape(charCode) {
          +      if (charCode < 0x20) {
          +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
          +      }
          +      var ch = String.fromCharCode(charCode);
          +      return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
          +          ? "\\" + ch : ch;
          +    }
          +  
          +    function caseFoldCharset(charSet) {
          +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
          +          new RegExp(
          +              '\\\\u[0-9A-Fa-f]{4}'
          +              + '|\\\\x[0-9A-Fa-f]{2}'
          +              + '|\\\\[0-3][0-7]{0,2}'
          +              + '|\\\\[0-7]{1,2}'
          +              + '|\\\\[\\s\\S]'
          +              + '|-'
          +              + '|[^-\\\\]',
          +              'g'));
          +      var ranges = [];
          +      var inverse = charsetParts[0] === '^';
          +  
          +      var out = ['['];
          +      if (inverse) { out.push('^'); }
          +  
          +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
          +        var p = charsetParts[i];
          +        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
          +          out.push(p);
          +        } else {
          +          var start = decodeEscape(p);
          +          var end;
          +          if (i + 2 < n && '-' === charsetParts[i + 1]) {
          +            end = decodeEscape(charsetParts[i + 2]);
          +            i += 2;
          +          } else {
          +            end = start;
          +          }
          +          ranges.push([start, end]);
          +          // If the range might intersect letters, then expand it.
          +          // This case handling is too simplistic.
          +          // It does not deal with non-latin case folding.
          +          // It works for latin source code identifiers though.
          +          if (!(end < 65 || start > 122)) {
          +            if (!(end < 65 || start > 90)) {
          +              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
          +            }
          +            if (!(end < 97 || start > 122)) {
          +              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
          +            }
          +          }
          +        }
          +      }
          +  
          +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
          +      // -> [[1, 12], [14, 14], [16, 17]]
          +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
          +      var consolidatedRanges = [];
          +      var lastRange = [];
          +      for (var i = 0; i < ranges.length; ++i) {
          +        var range = ranges[i];
          +        if (range[0] <= lastRange[1] + 1) {
          +          lastRange[1] = Math.max(lastRange[1], range[1]);
          +        } else {
          +          consolidatedRanges.push(lastRange = range);
          +        }
          +      }
          +  
          +      for (var i = 0; i < consolidatedRanges.length; ++i) {
          +        var range = consolidatedRanges[i];
          +        out.push(encodeEscape(range[0]));
          +        if (range[1] > range[0]) {
          +          if (range[1] + 1 > range[0]) { out.push('-'); }
          +          out.push(encodeEscape(range[1]));
          +        }
          +      }
          +      out.push(']');
          +      return out.join('');
          +    }
          +  
          +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
          +      // Split into character sets, escape sequences, punctuation strings
          +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
          +      // include any of the above.
          +      var parts = regex.source.match(
          +          new RegExp(
          +              '(?:'
          +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
          +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
          +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
          +              + '|\\\\[0-9]+'  // a back-reference or octal escape
          +              + '|\\\\[^ux0-9]'  // other escape sequence
          +              + '|\\(\\?[:!=]'  // start of a non-capturing group
          +              + '|[\\(\\)\\^]'  // start/end of a group, or line start
          +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
          +              + ')',
          +              'g'));
          +      var n = parts.length;
          +  
          +      // Maps captured group numbers to the number they will occupy in
          +      // the output or to -1 if that has not been determined, or to
          +      // undefined if they need not be capturing in the output.
          +      var capturedGroups = [];
          +  
          +      // Walk over and identify back references to build the capturedGroups
          +      // mapping.
          +      for (var i = 0, groupIndex = 0; i < n; ++i) {
          +        var p = parts[i];
          +        if (p === '(') {
          +          // groups are 1-indexed, so max group index is count of '('
          +          ++groupIndex;
          +        } else if ('\\' === p.charAt(0)) {
          +          var decimalValue = +p.substring(1);
          +          if (decimalValue) {
          +            if (decimalValue <= groupIndex) {
          +              capturedGroups[decimalValue] = -1;
          +            } else {
          +              // Replace with an unambiguous escape sequence so that
          +              // an octal escape sequence does not turn into a backreference
          +              // to a capturing group from an earlier regex.
          +              parts[i] = encodeEscape(decimalValue);
          +            }
          +          }
          +        }
          +      }
          +  
          +      // Renumber groups and reduce capturing groups to non-capturing groups
          +      // where possible.
          +      for (var i = 1; i < capturedGroups.length; ++i) {
          +        if (-1 === capturedGroups[i]) {
          +          capturedGroups[i] = ++capturedGroupIndex;
          +        }
          +      }
          +      for (var i = 0, groupIndex = 0; i < n; ++i) {
          +        var p = parts[i];
          +        if (p === '(') {
          +          ++groupIndex;
          +          if (!capturedGroups[groupIndex]) {
          +            parts[i] = '(?:';
          +          }
          +        } else if ('\\' === p.charAt(0)) {
          +          var decimalValue = +p.substring(1);
          +          if (decimalValue && decimalValue <= groupIndex) {
          +            parts[i] = '\\' + capturedGroups[decimalValue];
          +          }
          +        }
          +      }
          +  
          +      // Remove any prefix anchors so that the output will match anywhere.
          +      // ^^ really does mean an anchored match though.
          +      for (var i = 0; i < n; ++i) {
          +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
          +      }
          +  
          +      // Expand letters to groups to handle mixing of case-sensitive and
          +      // case-insensitive patterns if necessary.
          +      if (regex.ignoreCase && needToFoldCase) {
          +        for (var i = 0; i < n; ++i) {
          +          var p = parts[i];
          +          var ch0 = p.charAt(0);
          +          if (p.length >= 2 && ch0 === '[') {
          +            parts[i] = caseFoldCharset(p);
          +          } else if (ch0 !== '\\') {
          +            // TODO: handle letters in numeric escapes.
          +            parts[i] = p.replace(
          +                /[a-zA-Z]/g,
          +                function (ch) {
          +                  var cc = ch.charCodeAt(0);
          +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
          +                });
          +          }
          +        }
          +      }
          +  
          +      return parts.join('');
          +    }
          +  
          +    var rewritten = [];
          +    for (var i = 0, n = regexs.length; i < n; ++i) {
          +      var regex = regexs[i];
          +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
          +      rewritten.push(
          +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
          +    }
          +  
          +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
          +  }
          +
          +  /**
          +   * Split markup into a string of source code and an array mapping ranges in
          +   * that string to the text nodes in which they appear.
          +   *
          +   * <p>
          +   * The HTML DOM structure:</p>
          +   * <pre>
          +   * (Element   "p"
          +   *   (Element "b"
          +   *     (Text  "print "))       ; #1
          +   *   (Text    "'Hello '")      ; #2
          +   *   (Element "br")            ; #3
          +   *   (Text    "  + 'World';")) ; #4
          +   * </pre>
          +   * <p>
          +   * corresponds to the HTML
          +   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
          +   *
          +   * <p>
          +   * It will produce the output:</p>
          +   * <pre>
          +   * {
          +   *   sourceCode: "print 'Hello '\n  + 'World';",
          +   *   //                     1          2
          +   *   //           012345678901234 5678901234567
          +   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
          +   * }
          +   * </pre>
          +   * <p>
          +   * where #1 is a reference to the {@code "print "} text node above, and so
          +   * on for the other text nodes.
          +   * </p>
          +   *
          +   * <p>
          +   * The {@code} spans array is an array of pairs.  Even elements are the start
          +   * indices of substrings, and odd elements are the text nodes (or BR elements)
          +   * that contain the text for those substrings.
          +   * Substrings continue until the next index or the end of the source.
          +   * </p>
          +   *
          +   * @param {Node} node an HTML DOM subtree containing source-code.
          +   * @param {boolean} isPreformatted true if white-space in text nodes should
          +   *    be considered significant.
          +   * @return {Object} source code and the text nodes in which they occur.
          +   */
          +  function extractSourceSpans(node, isPreformatted) {
          +    var nocode = /(?:^|\s)nocode(?:\s|$)/;
          +  
          +    var chunks = [];
          +    var length = 0;
          +    var spans = [];
          +    var k = 0;
          +  
          +    function walk(node) {
          +      var type = node.nodeType;
          +      if (type == 1) {  // Element
          +        if (nocode.test(node.className)) { return; }
          +        for (var child = node.firstChild; child; child = child.nextSibling) {
          +          walk(child);
          +        }
          +        var nodeName = node.nodeName.toLowerCase();
          +        if ('br' === nodeName || 'li' === nodeName) {
          +          chunks[k] = '\n';
          +          spans[k << 1] = length++;
          +          spans[(k++ << 1) | 1] = node;
          +        }
          +      } else if (type == 3 || type == 4) {  // Text
          +        var text = node.nodeValue;
          +        if (text.length) {
          +          if (!isPreformatted) {
          +            text = text.replace(/[ \t\r\n]+/g, ' ');
          +          } else {
          +            text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
          +          }
          +          // TODO: handle tabs here?
          +          chunks[k] = text;
          +          spans[k << 1] = length;
          +          length += text.length;
          +          spans[(k++ << 1) | 1] = node;
          +        }
          +      }
          +    }
          +  
          +    walk(node);
          +  
          +    return {
          +      sourceCode: chunks.join('').replace(/\n$/, ''),
          +      spans: spans
          +    };
          +  }
          +
          +  /**
          +   * Apply the given language handler to sourceCode and add the resulting
          +   * decorations to out.
          +   * @param {number} basePos the index of sourceCode within the chunk of source
          +   *    whose decorations are already present on out.
          +   */
          +  function appendDecorations(basePos, sourceCode, langHandler, out) {
          +    if (!sourceCode) { return; }
          +    var job = {
          +      sourceCode: sourceCode,
          +      basePos: basePos
          +    };
          +    langHandler(job);
          +    out.push.apply(out, job.decorations);
          +  }
          +
          +  var notWs = /\S/;
          +
          +  /**
          +   * Given an element, if it contains only one child element and any text nodes
          +   * it contains contain only space characters, return the sole child element.
          +   * Otherwise returns undefined.
          +   * <p>
          +   * This is meant to return the CODE element in {@code <pre><code ...>} when
          +   * there is a single child element that contains all the non-space textual
          +   * content, but not to return anything where there are multiple child elements
          +   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
          +   * is textual content.
          +   */
          +  function childContentWrapper(element) {
          +    var wrapper = undefined;
          +    for (var c = element.firstChild; c; c = c.nextSibling) {
          +      var type = c.nodeType;
          +      wrapper = (type === 1)  // Element Node
          +          ? (wrapper ? element : c)
          +          : (type === 3)  // Text Node
          +          ? (notWs.test(c.nodeValue) ? element : wrapper)
          +          : wrapper;
          +    }
          +    return wrapper === element ? undefined : wrapper;
          +  }
          +
          +  /** Given triples of [style, pattern, context] returns a lexing function,
          +    * The lexing function interprets the patterns to find token boundaries and
          +    * returns a decoration list of the form
          +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
          +    * where index_n is an index into the sourceCode, and style_n is a style
          +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
          +    * all characters in sourceCode[index_n-1:index_n].
          +    *
          +    * The stylePatterns is a list whose elements have the form
          +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
          +    *
          +    * Style is a style constant like PR_PLAIN, or can be a string of the
          +    * form 'lang-FOO', where FOO is a language extension describing the
          +    * language of the portion of the token in $1 after pattern executes.
          +    * E.g., if style is 'lang-lisp', and group 1 contains the text
          +    * '(hello (world))', then that portion of the token will be passed to the
          +    * registered lisp handler for formatting.
          +    * The text before and after group 1 will be restyled using this decorator
          +    * so decorators should take care that this doesn't result in infinite
          +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
          +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
          +    * '<script>foo()<\/script>', which would cause the current decorator to
          +    * be called with '<script>' which would not match the same rule since
          +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
          +    * the generic tag rule.  The handler registered for the 'js' extension would
          +    * then be called with 'foo()', and finally, the current decorator would
          +    * be called with '<\/script>' which would not match the original rule and
          +    * so the generic tag rule would identify it as a tag.
          +    *
          +    * Pattern must only match prefixes, and if it matches a prefix, then that
          +    * match is considered a token with the same style.
          +    *
          +    * Context is applied to the last non-whitespace, non-comment token
          +    * recognized.
          +    *
          +    * Shortcut is an optional string of characters, any of which, if the first
          +    * character, gurantee that this pattern and only this pattern matches.
          +    *
          +    * @param {Array} shortcutStylePatterns patterns that always start with
          +    *   a known character.  Must have a shortcut string.
          +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
          +    *   order if the shortcut ones fail.  May have shortcuts.
          +    *
          +    * @return {function (Object)} a
          +    *   function that takes source code and returns a list of decorations.
          +    */
          +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
          +    var shortcuts = {};
          +    var tokenizer;
          +    (function () {
          +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
          +      var allRegexs = [];
          +      var regexKeys = {};
          +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
          +        var patternParts = allPatterns[i];
          +        var shortcutChars = patternParts[3];
          +        if (shortcutChars) {
          +          for (var c = shortcutChars.length; --c >= 0;) {
          +            shortcuts[shortcutChars.charAt(c)] = patternParts;
          +          }
          +        }
          +        var regex = patternParts[1];
          +        var k = '' + regex;
          +        if (!regexKeys.hasOwnProperty(k)) {
          +          allRegexs.push(regex);
          +          regexKeys[k] = null;
          +        }
          +      }
          +      allRegexs.push(/[\0-\uffff]/);
          +      tokenizer = combinePrefixPatterns(allRegexs);
          +    })();
          +
          +    var nPatterns = fallthroughStylePatterns.length;
          +
          +    /**
          +     * Lexes job.sourceCode and produces an output array job.decorations of
          +     * style classes preceded by the position at which they start in
          +     * job.sourceCode in order.
          +     *
          +     * @param {Object} job an object like <pre>{
          +     *    sourceCode: {string} sourceText plain text,
          +     *    basePos: {int} position of job.sourceCode in the larger chunk of
          +     *        sourceCode.
          +     * }</pre>
          +     */
          +    var decorate = function (job) {
          +      var sourceCode = job.sourceCode, basePos = job.basePos;
          +      /** Even entries are positions in source in ascending order.  Odd enties
          +        * are style markers (e.g., PR_COMMENT) that run from that position until
          +        * the end.
          +        * @type {Array.<number|string>}
          +        */
          +      var decorations = [basePos, PR_PLAIN];
          +      var pos = 0;  // index into sourceCode
          +      var tokens = sourceCode.match(tokenizer) || [];
          +      var styleCache = {};
          +
          +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
          +        var token = tokens[ti];
          +        var style = styleCache[token];
          +        var match = void 0;
          +
          +        var isEmbedded;
          +        if (typeof style === 'string') {
          +          isEmbedded = false;
          +        } else {
          +          var patternParts = shortcuts[token.charAt(0)];
          +          if (patternParts) {
          +            match = token.match(patternParts[1]);
          +            style = patternParts[0];
          +          } else {
          +            for (var i = 0; i < nPatterns; ++i) {
          +              patternParts = fallthroughStylePatterns[i];
          +              match = token.match(patternParts[1]);
          +              if (match) {
          +                style = patternParts[0];
          +                break;
          +              }
          +            }
          +
          +            if (!match) {  // make sure that we make progress
          +              style = PR_PLAIN;
          +            }
          +          }
          +
          +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
          +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
          +            isEmbedded = false;
          +            style = PR_SOURCE;
          +          }
          +
          +          if (!isEmbedded) { styleCache[token] = style; }
          +        }
          +
          +        var tokenStart = pos;
          +        pos += token.length;
          +
          +        if (!isEmbedded) {
          +          decorations.push(basePos + tokenStart, style);
          +        } else {  // Treat group 1 as an embedded block of source code.
          +          var embeddedSource = match[1];
          +          var embeddedSourceStart = token.indexOf(embeddedSource);
          +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
          +          if (match[2]) {
          +            // If embeddedSource can be blank, then it would match at the
          +            // beginning which would cause us to infinitely recurse on the
          +            // entire token, so we catch the right context in match[2].
          +            embeddedSourceEnd = token.length - match[2].length;
          +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
          +          }
          +          var lang = style.substring(5);
          +          // Decorate the left of the embedded source
          +          appendDecorations(
          +              basePos + tokenStart,
          +              token.substring(0, embeddedSourceStart),
          +              decorate, decorations);
          +          // Decorate the embedded source
          +          appendDecorations(
          +              basePos + tokenStart + embeddedSourceStart,
          +              embeddedSource,
          +              langHandlerForExtension(lang, embeddedSource),
          +              decorations);
          +          // Decorate the right of the embedded section
          +          appendDecorations(
          +              basePos + tokenStart + embeddedSourceEnd,
          +              token.substring(embeddedSourceEnd),
          +              decorate, decorations);
          +        }
          +      }
          +      job.decorations = decorations;
          +    };
          +    return decorate;
          +  }
          +
          +  /** returns a function that produces a list of decorations from source text.
          +    *
          +    * This code treats ", ', and ` as string delimiters, and \ as a string
          +    * escape.  It does not recognize perl's qq() style strings.
          +    * It has no special handling for double delimiter escapes as in basic, or
          +    * the tripled delimiters used in python, but should work on those regardless
          +    * although in those cases a single string literal may be broken up into
          +    * multiple adjacent string literals.
          +    *
          +    * It recognizes C, C++, and shell style comments.
          +    *
          +    * @param {Object} options a set of optional parameters.
          +    * @return {function (Object)} a function that examines the source code
          +    *     in the input job and builds the decoration list.
          +    */
          +  function sourceDecorator(options) {
          +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
          +    if (options['tripleQuotedStrings']) {
          +      // '''multi-line-string''', 'single-line-string', and double-quoted
          +      shortcutStylePatterns.push(
          +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
          +           null, '\'"']);
          +    } else if (options['multiLineStrings']) {
          +      // 'multi-line-string', "multi-line-string"
          +      shortcutStylePatterns.push(
          +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
          +           null, '\'"`']);
          +    } else {
          +      // 'single-line-string', "single-line-string"
          +      shortcutStylePatterns.push(
          +          [PR_STRING,
          +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
          +           null, '"\'']);
          +    }
          +    if (options['verbatimStrings']) {
          +      // verbatim-string-literal production from the C# grammar.  See issue 93.
          +      fallthroughStylePatterns.push(
          +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
          +    }
          +    var hc = options['hashComments'];
          +    if (hc) {
          +      if (options['cStyleComments']) {
          +        if (hc > 1) {  // multiline hash comments
          +          shortcutStylePatterns.push(
          +              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
          +        } else {
          +          // Stop C preprocessor declarations at an unclosed open comment
          +          shortcutStylePatterns.push(
          +              [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
          +               null, '#']);
          +        }
          +        // #include <stdio.h>
          +        fallthroughStylePatterns.push(
          +            [PR_STRING,
          +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
          +             null]);
          +      } else {
          +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
          +      }
          +    }
          +    if (options['cStyleComments']) {
          +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
          +      fallthroughStylePatterns.push(
          +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
          +    }
          +    var regexLiterals = options['regexLiterals'];
          +    if (regexLiterals) {
          +      /**
          +       * @const
          +       */
          +      var regexExcls = regexLiterals > 1
          +        ? ''  // Multiline regex literals
          +        : '\n\r';
          +      /**
          +       * @const
          +       */
          +      var regexAny = regexExcls ? '.' : '[\\S\\s]';
          +      /**
          +       * @const
          +       */
          +      var REGEX_LITERAL = (
          +          // A regular expression literal starts with a slash that is
          +          // not followed by * or / so that it is not confused with
          +          // comments.
          +          '/(?=[^/*' + regexExcls + '])'
          +          // and then contains any number of raw characters,
          +          + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
          +          // escape sequences (\x5C),
          +          +    '|\\x5C' + regexAny
          +          // or non-nesting character sets (\x5B\x5D);
          +          +    '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
          +          +             '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
          +          // finally closed by a /.
          +          + '/');
          +      fallthroughStylePatterns.push(
          +          ['lang-regex',
          +           RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
          +           ]);
          +    }
          +
          +    var types = options['types'];
          +    if (types) {
          +      fallthroughStylePatterns.push([PR_TYPE, types]);
          +    }
          +
          +    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
          +    if (keywords.length) {
          +      fallthroughStylePatterns.push(
          +          [PR_KEYWORD,
          +           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
          +           null]);
          +    }
          +
          +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
          +
          +    var punctuation =
          +      // The Bash man page says
          +
          +      // A word is a sequence of characters considered as a single
          +      // unit by GRUB. Words are separated by metacharacters,
          +      // which are the following plus space, tab, and newline: { }
          +      // | & $ ; < >
          +      // ...
          +      
          +      // A word beginning with # causes that word and all remaining
          +      // characters on that line to be ignored.
          +
          +      // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
          +      // comment but empirically
          +      // $ echo {#}
          +      // {#}
          +      // $ echo \$#
          +      // $#
          +      // $ echo }#
          +      // }#
          +
          +      // so /(?:^|[|&;<>\s])/ is more appropriate.
          +
          +      // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
          +      // suggests that this definition is compatible with a
          +      // default mode that tries to use a single token definition
          +      // to recognize both bash/python style comments and C
          +      // preprocessor directives.
          +
          +      // This definition of punctuation does not include # in the list of
          +      // follow-on exclusions, so # will not be broken before if preceeded
          +      // by a punctuation character.  We could try to exclude # after
          +      // [|&;<>] but that doesn't seem to cause many major problems.
          +      // If that does turn out to be a problem, we should change the below
          +      // when hc is truthy to include # in the run of punctuation characters
          +      // only when not followint [|&;<>].
          +      '^.[^\\s\\w.$@\'"`/\\\\]*';
          +    if (options['regexLiterals']) {
          +      punctuation += '(?!\s*\/)';
          +    }
          +
          +    fallthroughStylePatterns.push(
          +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
          +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
          +        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
          +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
          +        [PR_LITERAL,
          +         new RegExp(
          +             '^(?:'
          +             // A hex number
          +             + '0x[a-f0-9]+'
          +             // or an octal or decimal number,
          +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
          +             // possibly in scientific notation
          +             + '(?:e[+\\-]?\\d+)?'
          +             + ')'
          +             // with an optional modifier like UL for unsigned long
          +             + '[a-z]*', 'i'),
          +         null, '0123456789'],
          +        // Don't treat escaped quotes in bash as starting strings.
          +        // See issue 144.
          +        [PR_PLAIN,       /^\\[\s\S]?/, null],
          +        [PR_PUNCTUATION, new RegExp(punctuation), null]);
          +
          +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
          +  }
          +
          +  var decorateSource = sourceDecorator({
          +        'keywords': ALL_KEYWORDS,
          +        'hashComments': true,
          +        'cStyleComments': true,
          +        'multiLineStrings': true,
          +        'regexLiterals': true
          +      });
          +
          +  /**
          +   * Given a DOM subtree, wraps it in a list, and puts each line into its own
          +   * list item.
          +   *
          +   * @param {Node} node modified in place.  Its content is pulled into an
          +   *     HTMLOListElement, and each line is moved into a separate list item.
          +   *     This requires cloning elements, so the input might not have unique
          +   *     IDs after numbering.
          +   * @param {boolean} isPreformatted true iff white-space in text nodes should
          +   *     be treated as significant.
          +   */
          +  function numberLines(node, opt_startLineNum, isPreformatted) {
          +    var nocode = /(?:^|\s)nocode(?:\s|$)/;
          +    var lineBreak = /\r\n?|\n/;
          +  
          +    var document = node.ownerDocument;
          +  
          +    var li = document.createElement('li');
          +    while (node.firstChild) {
          +      li.appendChild(node.firstChild);
          +    }
          +    // An array of lines.  We split below, so this is initialized to one
          +    // un-split line.
          +    var listItems = [li];
          +  
          +    function walk(node) {
          +      var type = node.nodeType;
          +      if (type == 1 && !nocode.test(node.className)) {  // Element
          +        if ('br' === node.nodeName) {
          +          breakAfter(node);
          +          // Discard the <BR> since it is now flush against a </LI>.
          +          if (node.parentNode) {
          +            node.parentNode.removeChild(node);
          +          }
          +        } else {
          +          for (var child = node.firstChild; child; child = child.nextSibling) {
          +            walk(child);
          +          }
          +        }
          +      } else if ((type == 3 || type == 4) && isPreformatted) {  // Text
          +        var text = node.nodeValue;
          +        var match = text.match(lineBreak);
          +        if (match) {
          +          var firstLine = text.substring(0, match.index);
          +          node.nodeValue = firstLine;
          +          var tail = text.substring(match.index + match[0].length);
          +          if (tail) {
          +            var parent = node.parentNode;
          +            parent.insertBefore(
          +              document.createTextNode(tail), node.nextSibling);
          +          }
          +          breakAfter(node);
          +          if (!firstLine) {
          +            // Don't leave blank text nodes in the DOM.
          +            node.parentNode.removeChild(node);
          +          }
          +        }
          +      }
          +    }
          +  
          +    // Split a line after the given node.
          +    function breakAfter(lineEndNode) {
          +      // If there's nothing to the right, then we can skip ending the line
          +      // here, and move root-wards since splitting just before an end-tag
          +      // would require us to create a bunch of empty copies.
          +      while (!lineEndNode.nextSibling) {
          +        lineEndNode = lineEndNode.parentNode;
          +        if (!lineEndNode) { return; }
          +      }
          +  
          +      function breakLeftOf(limit, copy) {
          +        // Clone shallowly if this node needs to be on both sides of the break.
          +        var rightSide = copy ? limit.cloneNode(false) : limit;
          +        var parent = limit.parentNode;
          +        if (parent) {
          +          // We clone the parent chain.
          +          // This helps us resurrect important styling elements that cross lines.
          +          // E.g. in <i>Foo<br>Bar</i>
          +          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
          +          var parentClone = breakLeftOf(parent, 1);
          +          // Move the clone and everything to the right of the original
          +          // onto the cloned parent.
          +          var next = limit.nextSibling;
          +          parentClone.appendChild(rightSide);
          +          for (var sibling = next; sibling; sibling = next) {
          +            next = sibling.nextSibling;
          +            parentClone.appendChild(sibling);
          +          }
          +        }
          +        return rightSide;
          +      }
          +  
          +      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
          +  
          +      // Walk the parent chain until we reach an unattached LI.
          +      for (var parent;
          +           // Check nodeType since IE invents document fragments.
          +           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
          +        copiedListItem = parent;
          +      }
          +      // Put it on the list of lines for later processing.
          +      listItems.push(copiedListItem);
          +    }
          +  
          +    // Split lines while there are lines left to split.
          +    for (var i = 0;  // Number of lines that have been split so far.
          +         i < listItems.length;  // length updated by breakAfter calls.
          +         ++i) {
          +      walk(listItems[i]);
          +    }
          +  
          +    // Make sure numeric indices show correctly.
          +    if (opt_startLineNum === (opt_startLineNum|0)) {
          +      listItems[0].setAttribute('value', opt_startLineNum);
          +    }
          +  
          +    var ol = document.createElement('ol');
          +    ol.className = 'linenums';
          +    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
          +    for (var i = 0, n = listItems.length; i < n; ++i) {
          +      li = listItems[i];
          +      // Stick a class on the LIs so that stylesheets can
          +      // color odd/even rows, or any other row pattern that
          +      // is co-prime with 10.
          +      li.className = 'L' + ((i + offset) % 10);
          +      if (!li.firstChild) {
          +        li.appendChild(document.createTextNode('\xA0'));
          +      }
          +      ol.appendChild(li);
          +    }
          +  
          +    node.appendChild(ol);
          +  }
          +  /**
          +   * Breaks {@code job.sourceCode} around style boundaries in
          +   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
          +   * @param {Object} job like <pre>{
          +   *    sourceCode: {string} source as plain text,
          +   *    sourceNode: {HTMLElement} the element containing the source,
          +   *    spans: {Array.<number|Node>} alternating span start indices into source
          +   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
          +   *       span.
          +   *    decorations: {Array.<number|string} an array of style classes preceded
          +   *       by the position at which they start in job.sourceCode in order
          +   * }</pre>
          +   * @private
          +   */
          +  function recombineTagsAndDecorations(job) {
          +    var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
          +    isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
          +    var newlineRe = /\n/g;
          +  
          +    var source = job.sourceCode;
          +    var sourceLength = source.length;
          +    // Index into source after the last code-unit recombined.
          +    var sourceIndex = 0;
          +  
          +    var spans = job.spans;
          +    var nSpans = spans.length;
          +    // Index into spans after the last span which ends at or before sourceIndex.
          +    var spanIndex = 0;
          +  
          +    var decorations = job.decorations;
          +    var nDecorations = decorations.length;
          +    // Index into decorations after the last decoration which ends at or before
          +    // sourceIndex.
          +    var decorationIndex = 0;
          +  
          +    // Remove all zero-length decorations.
          +    decorations[nDecorations] = sourceLength;
          +    var decPos, i;
          +    for (i = decPos = 0; i < nDecorations;) {
          +      if (decorations[i] !== decorations[i + 2]) {
          +        decorations[decPos++] = decorations[i++];
          +        decorations[decPos++] = decorations[i++];
          +      } else {
          +        i += 2;
          +      }
          +    }
          +    nDecorations = decPos;
          +  
          +    // Simplify decorations.
          +    for (i = decPos = 0; i < nDecorations;) {
          +      var startPos = decorations[i];
          +      // Conflate all adjacent decorations that use the same style.
          +      var startDec = decorations[i + 1];
          +      var end = i + 2;
          +      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
          +        end += 2;
          +      }
          +      decorations[decPos++] = startPos;
          +      decorations[decPos++] = startDec;
          +      i = end;
          +    }
          +  
          +    nDecorations = decorations.length = decPos;
          +  
          +    var sourceNode = job.sourceNode;
          +    var oldDisplay;
          +    if (sourceNode) {
          +      oldDisplay = sourceNode.style.display;
          +      sourceNode.style.display = 'none';
          +    }
          +    try {
          +      var decoration = null;
          +      while (spanIndex < nSpans) {
          +        var spanStart = spans[spanIndex];
          +        var spanEnd = spans[spanIndex + 2] || sourceLength;
          +  
          +        var decEnd = decorations[decorationIndex + 2] || sourceLength;
          +  
          +        var end = Math.min(spanEnd, decEnd);
          +  
          +        var textNode = spans[spanIndex + 1];
          +        var styledText;
          +        if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
          +            // Don't introduce spans around empty text nodes.
          +            && (styledText = source.substring(sourceIndex, end))) {
          +          // This may seem bizarre, and it is.  Emitting LF on IE causes the
          +          // code to display with spaces instead of line breaks.
          +          // Emitting Windows standard issue linebreaks (CRLF) causes a blank
          +          // space to appear at the beginning of every line but the first.
          +          // Emitting an old Mac OS 9 line separator makes everything spiffy.
          +          if (isIE8OrEarlier) {
          +            styledText = styledText.replace(newlineRe, '\r');
          +          }
          +          textNode.nodeValue = styledText;
          +          var document = textNode.ownerDocument;
          +          var span = document.createElement('span');
          +          span.className = decorations[decorationIndex + 1];
          +          var parentNode = textNode.parentNode;
          +          parentNode.replaceChild(span, textNode);
          +          span.appendChild(textNode);
          +          if (sourceIndex < spanEnd) {  // Split off a text node.
          +            spans[spanIndex + 1] = textNode
          +                // TODO: Possibly optimize by using '' if there's no flicker.
          +                = document.createTextNode(source.substring(end, spanEnd));
          +            parentNode.insertBefore(textNode, span.nextSibling);
          +          }
          +        }
          +  
          +        sourceIndex = end;
          +  
          +        if (sourceIndex >= spanEnd) {
          +          spanIndex += 2;
          +        }
          +        if (sourceIndex >= decEnd) {
          +          decorationIndex += 2;
          +        }
          +      }
          +    } finally {
          +      if (sourceNode) {
          +        sourceNode.style.display = oldDisplay;
          +      }
          +    }
          +  }
          +
          +  /** Maps language-specific file extensions to handlers. */
          +  var langHandlerRegistry = {};
          +  /** Register a language handler for the given file extensions.
          +    * @param {function (Object)} handler a function from source code to a list
          +    *      of decorations.  Takes a single argument job which describes the
          +    *      state of the computation.   The single parameter has the form
          +    *      {@code {
          +    *        sourceCode: {string} as plain text.
          +    *        decorations: {Array.<number|string>} an array of style classes
          +    *                     preceded by the position at which they start in
          +    *                     job.sourceCode in order.
          +    *                     The language handler should assigned this field.
          +    *        basePos: {int} the position of source in the larger source chunk.
          +    *                 All positions in the output decorations array are relative
          +    *                 to the larger source chunk.
          +    *      } }
          +    * @param {Array.<string>} fileExtensions
          +    */
          +  function registerLangHandler(handler, fileExtensions) {
          +    for (var i = fileExtensions.length; --i >= 0;) {
          +      var ext = fileExtensions[i];
          +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
          +        langHandlerRegistry[ext] = handler;
          +      } else if (win['console']) {
          +        console['warn']('cannot override language handler %s', ext);
          +      }
          +    }
          +  }
          +  function langHandlerForExtension(extension, source) {
          +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
          +      // Treat it as markup if the first non whitespace character is a < and
          +      // the last non-whitespace character is a >.
          +      extension = /^\s*</.test(source)
          +          ? 'default-markup'
          +          : 'default-code';
          +    }
          +    return langHandlerRegistry[extension];
          +  }
          +  registerLangHandler(decorateSource, ['default-code']);
          +  registerLangHandler(
          +      createSimpleLexer(
          +          [],
          +          [
          +           [PR_PLAIN,       /^[^<?]+/],
          +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
          +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
          +           // Unescaped content in an unknown language
          +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
          +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
          +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
          +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
          +           // Unescaped content in javascript.  (Or possibly vbscript).
          +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
          +           // Contains unescaped stylesheet content
          +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
          +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
          +          ]),
          +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
          +  registerLangHandler(
          +      createSimpleLexer(
          +          [
          +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
          +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
          +           ],
          +          [
          +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
          +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
          +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
          +           [PR_PUNCTUATION,  /^[=<>\/]+/],
          +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
          +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
          +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
          +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
          +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
          +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
          +           ]),
          +      ['in.tag']);
          +  registerLangHandler(
          +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': CPP_KEYWORDS,
          +          'hashComments': true,
          +          'cStyleComments': true,
          +          'types': C_TYPES
          +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': 'null,true,false'
          +        }), ['json']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': CSHARP_KEYWORDS,
          +          'hashComments': true,
          +          'cStyleComments': true,
          +          'verbatimStrings': true,
          +          'types': C_TYPES
          +        }), ['cs']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': JAVA_KEYWORDS,
          +          'cStyleComments': true
          +        }), ['java']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': SH_KEYWORDS,
          +          'hashComments': true,
          +          'multiLineStrings': true
          +        }), ['bash', 'bsh', 'csh', 'sh']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': PYTHON_KEYWORDS,
          +          'hashComments': true,
          +          'multiLineStrings': true,
          +          'tripleQuotedStrings': true
          +        }), ['cv', 'py', 'python']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': PERL_KEYWORDS,
          +          'hashComments': true,
          +          'multiLineStrings': true,
          +          'regexLiterals': 2  // multiline regex literals
          +        }), ['perl', 'pl', 'pm']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': RUBY_KEYWORDS,
          +          'hashComments': true,
          +          'multiLineStrings': true,
          +          'regexLiterals': true
          +        }), ['rb', 'ruby']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': JSCRIPT_KEYWORDS,
          +          'cStyleComments': true,
          +          'regexLiterals': true
          +        }), ['javascript', 'js']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': COFFEE_KEYWORDS,
          +          'hashComments': 3,  // ### style block comments
          +          'cStyleComments': true,
          +          'multilineStrings': true,
          +          'tripleQuotedStrings': true,
          +          'regexLiterals': true
          +        }), ['coffee']);
          +  registerLangHandler(sourceDecorator({
          +          'keywords': RUST_KEYWORDS,
          +          'cStyleComments': true,
          +          'multilineStrings': true
          +        }), ['rc', 'rs', 'rust']);
          +  registerLangHandler(
          +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
          +
          +  function applyDecorator(job) {
          +    var opt_langExtension = job.langExtension;
          +
          +    try {
          +      // Extract tags, and convert the source code to plain text.
          +      var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
          +      /** Plain text. @type {string} */
          +      var source = sourceAndSpans.sourceCode;
          +      job.sourceCode = source;
          +      job.spans = sourceAndSpans.spans;
          +      job.basePos = 0;
          +
          +      // Apply the appropriate language handler
          +      langHandlerForExtension(opt_langExtension, source)(job);
          +
          +      // Integrate the decorations and tags back into the source code,
          +      // modifying the sourceNode in place.
          +      recombineTagsAndDecorations(job);
          +    } catch (e) {
          +      if (win['console']) {
          +        console['log'](e && e['stack'] || e);
          +      }
          +    }
          +  }
          +
          +  /**
          +   * Pretty print a chunk of code.
          +   * @param sourceCodeHtml {string} The HTML to pretty print.
          +   * @param opt_langExtension {string} The language name to use.
          +   *     Typically, a filename extension like 'cpp' or 'java'.
          +   * @param opt_numberLines {number|boolean} True to number lines,
          +   *     or the 1-indexed number of the first line in sourceCodeHtml.
          +   */
          +  function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
          +    var container = document.createElement('div');
          +    // This could cause images to load and onload listeners to fire.
          +    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
          +    // We assume that the inner HTML is from a trusted source.
          +    // The pre-tag is required for IE8 which strips newlines from innerHTML
          +    // when it is injected into a <pre> tag.
          +    // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
          +    // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
          +    container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
          +    container = container.firstChild;
          +    if (opt_numberLines) {
          +      numberLines(container, opt_numberLines, true);
          +    }
          +
          +    var job = {
          +      langExtension: opt_langExtension,
          +      numberLines: opt_numberLines,
          +      sourceNode: container,
          +      pre: 1
          +    };
          +    applyDecorator(job);
          +    return container.innerHTML;
          +  }
          +
          +   /**
          +    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
          +    * {@code class=prettyprint} and prettify them.
          +    *
          +    * @param {Function} opt_whenDone called when prettifying is done.
          +    * @param {HTMLElement|HTMLDocument} opt_root an element or document
          +    *   containing all the elements to pretty print.
          +    *   Defaults to {@code document.body}.
          +    */
          +  function $prettyPrint(opt_whenDone, opt_root) {
          +    var root = opt_root || document.body;
          +    var doc = root.ownerDocument || document;
          +    function byTagName(tn) { return root.getElementsByTagName(tn); }
          +    // fetch a list of nodes to rewrite
          +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
          +    var elements = [];
          +    for (var i = 0; i < codeSegments.length; ++i) {
          +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
          +        elements.push(codeSegments[i][j]);
          +      }
          +    }
          +    codeSegments = null;
          +
          +    var clock = Date;
          +    if (!clock['now']) {
          +      clock = { 'now': function () { return +(new Date); } };
          +    }
          +
          +    // The loop is broken into a series of continuations to make sure that we
          +    // don't make the browser unresponsive when rewriting a large page.
          +    var k = 0;
          +    var prettyPrintingJob;
          +
          +    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
          +    var prettyPrintRe = /\bprettyprint\b/;
          +    var prettyPrintedRe = /\bprettyprinted\b/;
          +    var preformattedTagNameRe = /pre|xmp/i;
          +    var codeRe = /^code$/i;
          +    var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
          +    var EMPTY = {};
          +
          +    function doWork() {
          +      var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
          +                     clock['now']() + 250 /* ms */ :
          +                     Infinity);
          +      for (; k < elements.length && clock['now']() < endTime; k++) {
          +        var cs = elements[k];
          +
          +        // Look for a preceding comment like
          +        // <?prettify lang="..." linenums="..."?>
          +        var attrs = EMPTY;
          +        {
          +          for (var preceder = cs; (preceder = preceder.previousSibling);) {
          +            var nt = preceder.nodeType;
          +            // <?foo?> is parsed by HTML 5 to a comment node (8)
          +            // like <!--?foo?-->, but in XML is a processing instruction
          +            var value = (nt === 7 || nt === 8) && preceder.nodeValue;
          +            if (value
          +                ? !/^\??prettify\b/.test(value)
          +                : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
          +              // Skip over white-space text nodes but not others.
          +              break;
          +            }
          +            if (value) {
          +              attrs = {};
          +              value.replace(
          +                  /\b(\w+)=([\w:.%+-]+)/g,
          +                function (_, name, value) { attrs[name] = value; });
          +              break;
          +            }
          +          }
          +        }
          +
          +        var className = cs.className;
          +        if ((attrs !== EMPTY || prettyPrintRe.test(className))
          +            // Don't redo this if we've already done it.
          +            // This allows recalling pretty print to just prettyprint elements
          +            // that have been added to the page since last call.
          +            && !prettyPrintedRe.test(className)) {
          +
          +          // make sure this is not nested in an already prettified element
          +          var nested = false;
          +          for (var p = cs.parentNode; p; p = p.parentNode) {
          +            var tn = p.tagName;
          +            if (preCodeXmpRe.test(tn)
          +                && p.className && prettyPrintRe.test(p.className)) {
          +              nested = true;
          +              break;
          +            }
          +          }
          +          if (!nested) {
          +            // Mark done.  If we fail to prettyprint for whatever reason,
          +            // we shouldn't try again.
          +            cs.className += ' prettyprinted';
          +
          +            // If the classes includes a language extensions, use it.
          +            // Language extensions can be specified like
          +            //     <pre class="prettyprint lang-cpp">
          +            // the language extension "cpp" is used to find a language handler
          +            // as passed to PR.registerLangHandler.
          +            // HTML5 recommends that a language be specified using "language-"
          +            // as the prefix instead.  Google Code Prettify supports both.
          +            // http://dev.w3.org/html5/spec-author-view/the-code-element.html
          +            var langExtension = attrs['lang'];
          +            if (!langExtension) {
          +              langExtension = className.match(langExtensionRe);
          +              // Support <pre class="prettyprint"><code class="language-c">
          +              var wrapper;
          +              if (!langExtension && (wrapper = childContentWrapper(cs))
          +                  && codeRe.test(wrapper.tagName)) {
          +                langExtension = wrapper.className.match(langExtensionRe);
          +              }
          +
          +              if (langExtension) { langExtension = langExtension[1]; }
          +            }
          +
          +            var preformatted;
          +            if (preformattedTagNameRe.test(cs.tagName)) {
          +              preformatted = 1;
          +            } else {
          +              var currentStyle = cs['currentStyle'];
          +              var defaultView = doc.defaultView;
          +              var whitespace = (
          +                  currentStyle
          +                  ? currentStyle['whiteSpace']
          +                  : (defaultView
          +                     && defaultView.getComputedStyle)
          +                  ? defaultView.getComputedStyle(cs, null)
          +                  .getPropertyValue('white-space')
          +                  : 0);
          +              preformatted = whitespace
          +                  && 'pre' === whitespace.substring(0, 3);
          +            }
          +
          +            // Look for a class like linenums or linenums:<n> where <n> is the
          +            // 1-indexed number of the first line.
          +            var lineNums = attrs['linenums'];
          +            if (!(lineNums = lineNums === 'true' || +lineNums)) {
          +              lineNums = className.match(/\blinenums\b(?::(\d+))?/);
          +              lineNums =
          +                lineNums
          +                ? lineNums[1] && lineNums[1].length
          +                  ? +lineNums[1] : true
          +                : false;
          +            }
          +            if (lineNums) { numberLines(cs, lineNums, preformatted); }
          +
          +            // do the pretty printing
          +            prettyPrintingJob = {
          +              langExtension: langExtension,
          +              sourceNode: cs,
          +              numberLines: lineNums,
          +              pre: preformatted
          +            };
          +            applyDecorator(prettyPrintingJob);
          +          }
          +        }
          +      }
          +      if (k < elements.length) {
          +        // finish up in a continuation
          +        setTimeout(doWork, 250);
          +      } else if ('function' === typeof opt_whenDone) {
          +        opt_whenDone();
          +      }
          +    }
          +
          +    doWork();
          +  }
          +
          +  /**
          +   * Contains functions for creating and registering new language handlers.
          +   * @type {Object}
          +   */
          +  var PR = win['PR'] = {
          +        'createSimpleLexer': createSimpleLexer,
          +        'registerLangHandler': registerLangHandler,
          +        'sourceDecorator': sourceDecorator,
          +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
          +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
          +        'PR_COMMENT': PR_COMMENT,
          +        'PR_DECLARATION': PR_DECLARATION,
          +        'PR_KEYWORD': PR_KEYWORD,
          +        'PR_LITERAL': PR_LITERAL,
          +        'PR_NOCODE': PR_NOCODE,
          +        'PR_PLAIN': PR_PLAIN,
          +        'PR_PUNCTUATION': PR_PUNCTUATION,
          +        'PR_SOURCE': PR_SOURCE,
          +        'PR_STRING': PR_STRING,
          +        'PR_TAG': PR_TAG,
          +        'PR_TYPE': PR_TYPE,
          +        'prettyPrintOne':
          +           IN_GLOBAL_SCOPE
          +             ? (win['prettyPrintOne'] = $prettyPrintOne)
          +             : (prettyPrintOne = $prettyPrintOne),
          +        'prettyPrint': prettyPrint =
          +           IN_GLOBAL_SCOPE
          +             ? (win['prettyPrint'] = $prettyPrint)
          +             : (prettyPrint = $prettyPrint)
          +      };
          +
          +  // Make PR available via the Asynchronous Module Definition (AMD) API.
          +  // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
          +  // The Asynchronous Module Definition (AMD) API specifies a
          +  // mechanism for defining modules such that the module and its
          +  // dependencies can be asynchronously loaded.
          +  // ...
          +  // To allow a clear indicator that a global define function (as
          +  // needed for script src browser loading) conforms to the AMD API,
          +  // any global define function SHOULD have a property called "amd"
          +  // whose value is an object. This helps avoid conflict with any
          +  // other existing JavaScript code that could have defined a define()
          +  // function that does not conform to the AMD API.
          +  if (typeof define === "function" && define['amd']) {
          +    define("google-code-prettify", [], function () {
          +      return PR; 
          +    });
          +  }
          +})();
          diff --git a/public/theme/google-code-prettify/src/run_prettify.js b/public/theme/google-code-prettify/src/run_prettify.js
          new file mode 100644
          index 0000000..dd136b9
          --- /dev/null
          +++ b/public/theme/google-code-prettify/src/run_prettify.js
          @@ -0,0 +1,1905 @@
          +// Copyright (C) 2013 Google Inc.
          +//
          +// Licensed under the Apache License, Version 2.0 (the "License");
          +// you may not use this file except in compliance with the License.
          +// You may obtain a copy of the License at
          +//
          +//      http://www.apache.org/licenses/LICENSE-2.0
          +//
          +// Unless required by applicable law or agreed to in writing, software
          +// distributed under the License is distributed on an "AS IS" BASIS,
          +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          +// See the License for the specific language governing permissions and
          +// limitations under the License.
          +
          +
          +// Looks at query parameters to decide which language handlers and style-sheets
          +// to load.
          +
          +// Query Parameter     Format           Effect                        Default
          +// +------------------+---------------+------------------------------+--------+
          +// | autorun=         | true | false  | If true then prettyPrint()   | "true" |
          +// |                  |               | is called on page load.      |        |
          +// +------------------+---------------+------------------------------+--------+
          +// | lang=            | language name | Loads the language handler   | Can    |
          +// |                  |               | named "lang-<NAME>.js".      | appear |
          +// |                  |               | See available handlers at    | many   |
          +// |                  |               | http://code.google.com/p/    | times. |
          +// |                  |               | google-code-prettify/source/ |        |
          +// |                  |               | browse/trunk/src             |        |
          +// +------------------+---------------+------------------------------+--------+
          +// | skin=            | skin name     | Loads the skin stylesheet    | none.  |
          +// |                  |               | named "<NAME>.css".          |        |
          +// |                  |               | http://code.google.com/p/    |        |
          +// |                  |               | google-code-prettify/source/ |        |
          +// |                  |               | browse/trunk/styles          |        |
          +// +------------------+---------------+------------------------------+--------+
          +// | callback=        | JS identifier | When "prettyPrint" finishes  | none   |
          +// |                  |               | window.exports[js_ident] is  |        |
          +// |                  |               | called.                      |        |
          +// |                  |               | The callback must be under   |        |
          +// |                  |               | exports to reduce the risk   |        |
          +// |                  |               | of XSS via query parameter   |        |
          +// |                  |               | injection.                   |        |
          +// +------------------+---------------+------------------------------+--------+
          +
          +// Exmaples
          +// .../prettify.js?lang=css&skin=sunburst
          +//   1. Loads the CSS language handler which can be used to prettify CSS
          +//      stylesheets, HTML <style> element bodies and style="..." attributes
          +//      values.
          +//   2. Loads the sunburst.css stylesheet instead of the default prettify.css
          +//      stylesheet.
          +//      A gallery of stylesheets is available at
          +//      https://google-code-prettify.googlecode.com/svn/trunk/styles/index.html
          +//   3. Since autorun=false is not specified, calls prettyPrint() on page load.
          +
          +
          +/** @define {boolean} */
          +var IN_GLOBAL_SCOPE = false;
          +
          +(function () {
          +  "use strict";
          +
          +  var win = window;
          +  var setTimeout = win.setTimeout;
          +  var doc = document;
          +  var root = doc.documentElement;
          +  var head = doc['head'] || doc.getElementsByTagName("head")[0] || root;
          +
          +  // From http://javascript.nwbox.com/ContentLoaded/contentloaded.js
          +  // Author: Diego Perini (diego.perini at gmail.com)
          +  // Summary: cross-browser wrapper for DOMContentLoaded
          +  // Updated: 20101020
          +  // License: MIT
          +  // Version: 1.2
          +  function contentLoaded(callback) {
          +    var addEventListener = doc['addEventListener'];
          +    var done = false, top = true,
          +        add = addEventListener ? 'addEventListener' : 'attachEvent',
          +        rem = addEventListener ? 'removeEventListener' : 'detachEvent',
          +        pre = addEventListener ? '' : 'on',
          +
          +        init = function(e) {
          +          if (e.type == 'readystatechange' && doc.readyState != 'complete') {
          +            return;
          +          }
          +          (e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);
          +          if (!done && (done = true)) { callback.call(win, e.type || e); }
          +        },
          +
          +        poll = function() {
          +          try {
          +            root.doScroll('left');
          +          } catch(e) {
          +            setTimeout(poll, 50);
          +            return;
          +          }
          +          init('poll');
          +        };
          +
          +    if (doc.readyState == 'complete') {
          +      callback.call(win, 'lazy');
          +    } else {
          +      if (doc.createEventObject && root.doScroll) {
          +        try { top = !win.frameElement; } catch(e) { }
          +        if (top) { poll(); }
          +      }
          +      doc[add](pre + 'DOMContentLoaded', init, false);
          +      doc[add](pre + 'readystatechange', init, false);
          +      win[add](pre + 'load', init, false);
          +    }
          +  }
          +
          +  // Given a list of URLs to stylesheets, loads the first that loads without
          +  // triggering an error event.
          +  function loadStylesheetsFallingBack(stylesheets) {
          +    var n = stylesheets.length;
          +    function load(i) {
          +      if (i === n) { return; }
          +      var link = doc.createElement('link');
          +      link.rel = 'stylesheet';
          +      link.type = 'text/css';
          +      if (i + 1 < n) {
          +        // http://pieisgood.org/test/script-link-events/ indicates that many
          +        // versions of IE do not support onerror on <link>s, though
          +        // http://msdn.microsoft.com/en-us/library/ie/ms535848(v=vs.85).aspx
          +        // indicates that recent IEs do support error.
          +        link.error = link.onerror = function () { load(i + 1); };
          +      }
          +      link.href = stylesheets[i];
          +      head.appendChild(link);
          +    }
          +    load(0);
          +  }
          +
          +  var scriptQuery = '';
          +  // Look for the <script> node that loads this script to get its parameters.
          +  // This starts looking at the end instead of just considering the last
          +  // because deferred and async scripts run out of order.
          +  // If the script is loaded twice, then this will run in reverse order.
          +  for (var scripts = doc.scripts, i = scripts.length; --i >= 0;) {
          +    var script = scripts[i];
          +    var match = script.src.match(
          +        /^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);
          +    if (match) {
          +      scriptQuery = match[1] || '';
          +      // Remove the script from the DOM so that multiple runs at least run
          +      // multiple times even if parameter sets are interpreted in reverse
          +      // order.
          +      script.parentNode.removeChild(script);
          +      break;
          +    }
          +  }
          +
          +  // Pull parameters into local variables.
          +  var autorun = true;
          +  var langs = [];
          +  var skins = [];
          +  var callbacks = [];
          +  scriptQuery.replace(
          +      /[?&]([^&=]+)=([^&]+)/g,
          +      function (_, name, value) {
          +        value = decodeURIComponent(value);
          +        name = decodeURIComponent(name);
          +        if (name == 'autorun')   { autorun = !/^[0fn]/i.test(value); } else
          +        if (name == 'lang')      { langs.push(value);                } else
          +        if (name == 'skin')      { skins.push(value);                } else
          +        if (name == 'callback')  { callbacks.push(value);            }
          +      });
          +
          +  // Use https to avoid mixed content warnings in client pages and to
          +  // prevent a MITM from rewrite prettify mid-flight.
          +  // This only works if this script is loaded via https : something
          +  // over which we exercise no control.
          +  var LOADER_BASE_URL =
          +     'https://google-code-prettify.googlecode.com/svn/loader';
          +
          +  for (var i = 0, n = langs.length; i < n; ++i) (function (lang) {
          +    var script = doc.createElement("script");
          +
          +    // Excerpted from jQuery.ajaxTransport("script") to fire events when
          +    // a script is finished loading.
          +    // Attach handlers for each script
          +    script.onload = script.onerror = script.onreadystatechange = function () {
          +      if (script && (
          +            !script.readyState || /loaded|complete/.test(script.readyState))) {
          +        // Handle memory leak in IE
          +        script.onerror = script.onload = script.onreadystatechange = null;
          +
          +        --pendingLanguages;
          +        checkPendingLanguages();
          +
          +        // Remove the script
          +        if (script.parentNode) {
          +          script.parentNode.removeChild(script);
          +        }
          +
          +        script = null;
          +      }
          +    };
          +
          +    script.type = 'text/javascript';
          +    script.src = LOADER_BASE_URL
          +      + '/lang-' + encodeURIComponent(langs[i]) + '.js';
          +
          +    // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
          +    head.insertBefore(script, head.firstChild);
          +  })(langs[i]);
          +
          +  var pendingLanguages = langs.length;
          +  function checkPendingLanguages() {
          +    if (!pendingLanguages) {
          +      setTimeout(onLangsLoaded, 0);
          +    }
          +  }
          +
          +  var skinUrls = [];
          +  for (var i = 0, n = skins.length; i < n; ++i) {
          +    skinUrls.push(LOADER_BASE_URL
          +        + '/skins/' + encodeURIComponent(skins[i]) + '.css');
          +  }
          +  skinUrls.push(LOADER_BASE_URL + '/prettify.css');
          +  loadStylesheetsFallingBack(skinUrls);
          +
          +  var prettyPrint = (function () {
          +    // Copyright (C) 2006 Google Inc.
          +    //
          +    // Licensed under the Apache License, Version 2.0 (the "License");
          +    // you may not use this file except in compliance with the License.
          +    // You may obtain a copy of the License at
          +    //
          +    //      http://www.apache.org/licenses/LICENSE-2.0
          +    //
          +    // Unless required by applicable law or agreed to in writing, software
          +    // distributed under the License is distributed on an "AS IS" BASIS,
          +    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          +    // See the License for the specific language governing permissions and
          +    // limitations under the License.
          +    
          +    
          +    /**
          +     * @fileoverview
          +     * some functions for browser-side pretty printing of code contained in html.
          +     *
          +     * <p>
          +     * For a fairly comprehensive set of languages see the
          +     * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
          +     * file that came with this source.  At a minimum, the lexer should work on a
          +     * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
          +     * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk
          +     * and a subset of Perl, but, because of commenting conventions, doesn't work on
          +     * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
          +     * <p>
          +     * Usage: <ol>
          +     * <li> include this source file in an html page via
          +     *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
          +     * <li> define style rules.  See the example page for examples.
          +     * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
          +     *    {@code class=prettyprint.}
          +     *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
          +     *    printer needs to do more substantial DOM manipulations to support that, so
          +     *    some css styles may not be preserved.
          +     * </ol>
          +     * That's it.  I wanted to keep the API as simple as possible, so there's no
          +     * need to specify which language the code is in, but if you wish, you can add
          +     * another class to the {@code <pre>} or {@code <code>} element to specify the
          +     * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
          +     * starts with "lang-" followed by a file extension, specifies the file type.
          +     * See the "lang-*.js" files in this directory for code that implements
          +     * per-language file handlers.
          +     * <p>
          +     * Change log:<br>
          +     * cbeust, 2006/08/22
          +     * <blockquote>
          +     *   Java annotations (start with "@") are now captured as literals ("lit")
          +     * </blockquote>
          +     * @requires console
          +     */
          +    
          +    // JSLint declarations
          +    /*global console, document, navigator, setTimeout, window, define */
          +    
          +    /**
          +     * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
          +     * UI events.
          +     * If set to {@code false}, {@code prettyPrint()} is synchronous.
          +     */
          +    window['PR_SHOULD_USE_CONTINUATION'] = true;
          +    
          +    /**
          +     * Pretty print a chunk of code.
          +     * @param {string} sourceCodeHtml The HTML to pretty print.
          +     * @param {string} opt_langExtension The language name to use.
          +     *     Typically, a filename extension like 'cpp' or 'java'.
          +     * @param {number|boolean} opt_numberLines True to number lines,
          +     *     or the 1-indexed number of the first line in sourceCodeHtml.
          +     * @return {string} code as html, but prettier
          +     */
          +    var prettyPrintOne;
          +    /**
          +     * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
          +     * {@code class=prettyprint} and prettify them.
          +     *
          +     * @param {Function} opt_whenDone called when prettifying is done.
          +     * @param {HTMLElement|HTMLDocument} opt_root an element or document
          +     *   containing all the elements to pretty print.
          +     *   Defaults to {@code document.body}.
          +     */
          +    var prettyPrint;
          +    
          +    
          +    (function () {
          +      var win = window;
          +      // Keyword lists for various languages.
          +      // We use things that coerce to strings to make them compact when minified
          +      // and to defeat aggressive optimizers that fold large string constants.
          +      var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
          +      var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
          +          "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
          +          "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
          +      var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
          +          "new,operator,private,protected,public,this,throw,true,try,typeof"];
          +      var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
          +          "concept,concept_map,const_cast,constexpr,decltype,delegate," +
          +          "dynamic_cast,explicit,export,friend,generic,late_check," +
          +          "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
          +          "static_cast,template,typeid,typename,using,virtual,where"];
          +      var JAVA_KEYWORDS = [COMMON_KEYWORDS,
          +          "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
          +          "instanceof,interface,null,native,package,strictfp,super,synchronized," +
          +          "throws,transient"];
          +      var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
          +          "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
          +          "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
          +          "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
          +          "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
          +          "var,virtual,where"];
          +      var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
          +          "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
          +          "throw,true,try,unless,until,when,while,yes";
          +      var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
          +          "debugger,eval,export,function,get,null,set,undefined,var,with," +
          +          "Infinity,NaN"];
          +      var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
          +          "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
          +          "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
          +      var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
          +          "elif,except,exec,finally,from,global,import,in,is,lambda," +
          +          "nonlocal,not,or,pass,print,raise,try,with,yield," +
          +          "False,True,None"];
          +      var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
          +          "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
          +          "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
          +          "BEGIN,END"];
          +       var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
          +          "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
          +          "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
          +      var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
          +          "function,in,local,set,then,until"];
          +      var ALL_KEYWORDS = [
          +          CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
          +          PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
          +      var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
          +    
          +      // token style names.  correspond to css classes
          +      /**
          +       * token style for a string literal
          +       * @const
          +       */
          +      var PR_STRING = 'str';
          +      /**
          +       * token style for a keyword
          +       * @const
          +       */
          +      var PR_KEYWORD = 'kwd';
          +      /**
          +       * token style for a comment
          +       * @const
          +       */
          +      var PR_COMMENT = 'com';
          +      /**
          +       * token style for a type
          +       * @const
          +       */
          +      var PR_TYPE = 'typ';
          +      /**
          +       * token style for a literal value.  e.g. 1, null, true.
          +       * @const
          +       */
          +      var PR_LITERAL = 'lit';
          +      /**
          +       * token style for a punctuation string.
          +       * @const
          +       */
          +      var PR_PUNCTUATION = 'pun';
          +      /**
          +       * token style for plain text.
          +       * @const
          +       */
          +      var PR_PLAIN = 'pln';
          +    
          +      /**
          +       * token style for an sgml tag.
          +       * @const
          +       */
          +      var PR_TAG = 'tag';
          +      /**
          +       * token style for a markup declaration such as a DOCTYPE.
          +       * @const
          +       */
          +      var PR_DECLARATION = 'dec';
          +      /**
          +       * token style for embedded source.
          +       * @const
          +       */
          +      var PR_SOURCE = 'src';
          +      /**
          +       * token style for an sgml attribute name.
          +       * @const
          +       */
          +      var PR_ATTRIB_NAME = 'atn';
          +      /**
          +       * token style for an sgml attribute value.
          +       * @const
          +       */
          +      var PR_ATTRIB_VALUE = 'atv';
          +    
          +      /**
          +       * A class that indicates a section of markup that is not code, e.g. to allow
          +       * embedding of line numbers within code listings.
          +       * @const
          +       */
          +      var PR_NOCODE = 'nocode';
          +    
          +      
          +      
          +      /**
          +       * A set of tokens that can precede a regular expression literal in
          +       * javascript
          +       * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
          +       * has the full list, but I've removed ones that might be problematic when
          +       * seen in languages that don't support regular expression literals.
          +       *
          +       * <p>Specifically, I've removed any keywords that can't precede a regexp
          +       * literal in a syntactically legal javascript program, and I've removed the
          +       * "in" keyword since it's not a keyword in many languages, and might be used
          +       * as a count of inches.
          +       *
          +       * <p>The link above does not accurately describe EcmaScript rules since
          +       * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
          +       * very well in practice.
          +       *
          +       * @private
          +       * @const
          +       */
          +      var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
          +      
          +      // CAVEAT: this does not properly handle the case where a regular
          +      // expression immediately follows another since a regular expression may
          +      // have flags for case-sensitivity and the like.  Having regexp tokens
          +      // adjacent is not valid in any language I'm aware of, so I'm punting.
          +      // TODO: maybe style special characters inside a regexp as punctuation.
          +    
          +      /**
          +       * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
          +       * matches the union of the sets of strings matched by the input RegExp.
          +       * Since it matches globally, if the input strings have a start-of-input
          +       * anchor (/^.../), it is ignored for the purposes of unioning.
          +       * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
          +       * @return {RegExp} a global regex.
          +       */
          +      function combinePrefixPatterns(regexs) {
          +        var capturedGroupIndex = 0;
          +      
          +        var needToFoldCase = false;
          +        var ignoreCase = false;
          +        for (var i = 0, n = regexs.length; i < n; ++i) {
          +          var regex = regexs[i];
          +          if (regex.ignoreCase) {
          +            ignoreCase = true;
          +          } else if (/[a-z]/i.test(regex.source.replace(
          +                         /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
          +            needToFoldCase = true;
          +            ignoreCase = false;
          +            break;
          +          }
          +        }
          +      
          +        var escapeCharToCodeUnit = {
          +          'b': 8,
          +          't': 9,
          +          'n': 0xa,
          +          'v': 0xb,
          +          'f': 0xc,
          +          'r': 0xd
          +        };
          +      
          +        function decodeEscape(charsetPart) {
          +          var cc0 = charsetPart.charCodeAt(0);
          +          if (cc0 !== 92 /* \\ */) {
          +            return cc0;
          +          }
          +          var c1 = charsetPart.charAt(1);
          +          cc0 = escapeCharToCodeUnit[c1];
          +          if (cc0) {
          +            return cc0;
          +          } else if ('0' <= c1 && c1 <= '7') {
          +            return parseInt(charsetPart.substring(1), 8);
          +          } else if (c1 === 'u' || c1 === 'x') {
          +            return parseInt(charsetPart.substring(2), 16);
          +          } else {
          +            return charsetPart.charCodeAt(1);
          +          }
          +        }
          +      
          +        function encodeEscape(charCode) {
          +          if (charCode < 0x20) {
          +            return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
          +          }
          +          var ch = String.fromCharCode(charCode);
          +          return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
          +              ? "\\" + ch : ch;
          +        }
          +      
          +        function caseFoldCharset(charSet) {
          +          var charsetParts = charSet.substring(1, charSet.length - 1).match(
          +              new RegExp(
          +                  '\\\\u[0-9A-Fa-f]{4}'
          +                  + '|\\\\x[0-9A-Fa-f]{2}'
          +                  + '|\\\\[0-3][0-7]{0,2}'
          +                  + '|\\\\[0-7]{1,2}'
          +                  + '|\\\\[\\s\\S]'
          +                  + '|-'
          +                  + '|[^-\\\\]',
          +                  'g'));
          +          var ranges = [];
          +          var inverse = charsetParts[0] === '^';
          +      
          +          var out = ['['];
          +          if (inverse) { out.push('^'); }
          +      
          +          for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
          +            var p = charsetParts[i];
          +            if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
          +              out.push(p);
          +            } else {
          +              var start = decodeEscape(p);
          +              var end;
          +              if (i + 2 < n && '-' === charsetParts[i + 1]) {
          +                end = decodeEscape(charsetParts[i + 2]);
          +                i += 2;
          +              } else {
          +                end = start;
          +              }
          +              ranges.push([start, end]);
          +              // If the range might intersect letters, then expand it.
          +              // This case handling is too simplistic.
          +              // It does not deal with non-latin case folding.
          +              // It works for latin source code identifiers though.
          +              if (!(end < 65 || start > 122)) {
          +                if (!(end < 65 || start > 90)) {
          +                  ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
          +                }
          +                if (!(end < 97 || start > 122)) {
          +                  ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
          +                }
          +              }
          +            }
          +          }
          +      
          +          // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
          +          // -> [[1, 12], [14, 14], [16, 17]]
          +          ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
          +          var consolidatedRanges = [];
          +          var lastRange = [];
          +          for (var i = 0; i < ranges.length; ++i) {
          +            var range = ranges[i];
          +            if (range[0] <= lastRange[1] + 1) {
          +              lastRange[1] = Math.max(lastRange[1], range[1]);
          +            } else {
          +              consolidatedRanges.push(lastRange = range);
          +            }
          +          }
          +      
          +          for (var i = 0; i < consolidatedRanges.length; ++i) {
          +            var range = consolidatedRanges[i];
          +            out.push(encodeEscape(range[0]));
          +            if (range[1] > range[0]) {
          +              if (range[1] + 1 > range[0]) { out.push('-'); }
          +              out.push(encodeEscape(range[1]));
          +            }
          +          }
          +          out.push(']');
          +          return out.join('');
          +        }
          +      
          +        function allowAnywhereFoldCaseAndRenumberGroups(regex) {
          +          // Split into character sets, escape sequences, punctuation strings
          +          // like ('(', '(?:', ')', '^'), and runs of characters that do not
          +          // include any of the above.
          +          var parts = regex.source.match(
          +              new RegExp(
          +                  '(?:'
          +                  + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
          +                  + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
          +                  + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
          +                  + '|\\\\[0-9]+'  // a back-reference or octal escape
          +                  + '|\\\\[^ux0-9]'  // other escape sequence
          +                  + '|\\(\\?[:!=]'  // start of a non-capturing group
          +                  + '|[\\(\\)\\^]'  // start/end of a group, or line start
          +                  + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
          +                  + ')',
          +                  'g'));
          +          var n = parts.length;
          +      
          +          // Maps captured group numbers to the number they will occupy in
          +          // the output or to -1 if that has not been determined, or to
          +          // undefined if they need not be capturing in the output.
          +          var capturedGroups = [];
          +      
          +          // Walk over and identify back references to build the capturedGroups
          +          // mapping.
          +          for (var i = 0, groupIndex = 0; i < n; ++i) {
          +            var p = parts[i];
          +            if (p === '(') {
          +              // groups are 1-indexed, so max group index is count of '('
          +              ++groupIndex;
          +            } else if ('\\' === p.charAt(0)) {
          +              var decimalValue = +p.substring(1);
          +              if (decimalValue) {
          +                if (decimalValue <= groupIndex) {
          +                  capturedGroups[decimalValue] = -1;
          +                } else {
          +                  // Replace with an unambiguous escape sequence so that
          +                  // an octal escape sequence does not turn into a backreference
          +                  // to a capturing group from an earlier regex.
          +                  parts[i] = encodeEscape(decimalValue);
          +                }
          +              }
          +            }
          +          }
          +      
          +          // Renumber groups and reduce capturing groups to non-capturing groups
          +          // where possible.
          +          for (var i = 1; i < capturedGroups.length; ++i) {
          +            if (-1 === capturedGroups[i]) {
          +              capturedGroups[i] = ++capturedGroupIndex;
          +            }
          +          }
          +          for (var i = 0, groupIndex = 0; i < n; ++i) {
          +            var p = parts[i];
          +            if (p === '(') {
          +              ++groupIndex;
          +              if (!capturedGroups[groupIndex]) {
          +                parts[i] = '(?:';
          +              }
          +            } else if ('\\' === p.charAt(0)) {
          +              var decimalValue = +p.substring(1);
          +              if (decimalValue && decimalValue <= groupIndex) {
          +                parts[i] = '\\' + capturedGroups[decimalValue];
          +              }
          +            }
          +          }
          +      
          +          // Remove any prefix anchors so that the output will match anywhere.
          +          // ^^ really does mean an anchored match though.
          +          for (var i = 0; i < n; ++i) {
          +            if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
          +          }
          +      
          +          // Expand letters to groups to handle mixing of case-sensitive and
          +          // case-insensitive patterns if necessary.
          +          if (regex.ignoreCase && needToFoldCase) {
          +            for (var i = 0; i < n; ++i) {
          +              var p = parts[i];
          +              var ch0 = p.charAt(0);
          +              if (p.length >= 2 && ch0 === '[') {
          +                parts[i] = caseFoldCharset(p);
          +              } else if (ch0 !== '\\') {
          +                // TODO: handle letters in numeric escapes.
          +                parts[i] = p.replace(
          +                    /[a-zA-Z]/g,
          +                    function (ch) {
          +                      var cc = ch.charCodeAt(0);
          +                      return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
          +                    });
          +              }
          +            }
          +          }
          +      
          +          return parts.join('');
          +        }
          +      
          +        var rewritten = [];
          +        for (var i = 0, n = regexs.length; i < n; ++i) {
          +          var regex = regexs[i];
          +          if (regex.global || regex.multiline) { throw new Error('' + regex); }
          +          rewritten.push(
          +              '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
          +        }
          +      
          +        return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
          +      }
          +    
          +      /**
          +       * Split markup into a string of source code and an array mapping ranges in
          +       * that string to the text nodes in which they appear.
          +       *
          +       * <p>
          +       * The HTML DOM structure:</p>
          +       * <pre>
          +       * (Element   "p"
          +       *   (Element "b"
          +       *     (Text  "print "))       ; #1
          +       *   (Text    "'Hello '")      ; #2
          +       *   (Element "br")            ; #3
          +       *   (Text    "  + 'World';")) ; #4
          +       * </pre>
          +       * <p>
          +       * corresponds to the HTML
          +       * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
          +       *
          +       * <p>
          +       * It will produce the output:</p>
          +       * <pre>
          +       * {
          +       *   sourceCode: "print 'Hello '\n  + 'World';",
          +       *   //                     1          2
          +       *   //           012345678901234 5678901234567
          +       *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
          +       * }
          +       * </pre>
          +       * <p>
          +       * where #1 is a reference to the {@code "print "} text node above, and so
          +       * on for the other text nodes.
          +       * </p>
          +       *
          +       * <p>
          +       * The {@code} spans array is an array of pairs.  Even elements are the start
          +       * indices of substrings, and odd elements are the text nodes (or BR elements)
          +       * that contain the text for those substrings.
          +       * Substrings continue until the next index or the end of the source.
          +       * </p>
          +       *
          +       * @param {Node} node an HTML DOM subtree containing source-code.
          +       * @param {boolean} isPreformatted true if white-space in text nodes should
          +       *    be considered significant.
          +       * @return {Object} source code and the text nodes in which they occur.
          +       */
          +      function extractSourceSpans(node, isPreformatted) {
          +        var nocode = /(?:^|\s)nocode(?:\s|$)/;
          +      
          +        var chunks = [];
          +        var length = 0;
          +        var spans = [];
          +        var k = 0;
          +      
          +        function walk(node) {
          +          var type = node.nodeType;
          +          if (type == 1) {  // Element
          +            if (nocode.test(node.className)) { return; }
          +            for (var child = node.firstChild; child; child = child.nextSibling) {
          +              walk(child);
          +            }
          +            var nodeName = node.nodeName.toLowerCase();
          +            if ('br' === nodeName || 'li' === nodeName) {
          +              chunks[k] = '\n';
          +              spans[k << 1] = length++;
          +              spans[(k++ << 1) | 1] = node;
          +            }
          +          } else if (type == 3 || type == 4) {  // Text
          +            var text = node.nodeValue;
          +            if (text.length) {
          +              if (!isPreformatted) {
          +                text = text.replace(/[ \t\r\n]+/g, ' ');
          +              } else {
          +                text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
          +              }
          +              // TODO: handle tabs here?
          +              chunks[k] = text;
          +              spans[k << 1] = length;
          +              length += text.length;
          +              spans[(k++ << 1) | 1] = node;
          +            }
          +          }
          +        }
          +      
          +        walk(node);
          +      
          +        return {
          +          sourceCode: chunks.join('').replace(/\n$/, ''),
          +          spans: spans
          +        };
          +      }
          +    
          +      /**
          +       * Apply the given language handler to sourceCode and add the resulting
          +       * decorations to out.
          +       * @param {number} basePos the index of sourceCode within the chunk of source
          +       *    whose decorations are already present on out.
          +       */
          +      function appendDecorations(basePos, sourceCode, langHandler, out) {
          +        if (!sourceCode) { return; }
          +        var job = {
          +          sourceCode: sourceCode,
          +          basePos: basePos
          +        };
          +        langHandler(job);
          +        out.push.apply(out, job.decorations);
          +      }
          +    
          +      var notWs = /\S/;
          +    
          +      /**
          +       * Given an element, if it contains only one child element and any text nodes
          +       * it contains contain only space characters, return the sole child element.
          +       * Otherwise returns undefined.
          +       * <p>
          +       * This is meant to return the CODE element in {@code <pre><code ...>} when
          +       * there is a single child element that contains all the non-space textual
          +       * content, but not to return anything where there are multiple child elements
          +       * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
          +       * is textual content.
          +       */
          +      function childContentWrapper(element) {
          +        var wrapper = undefined;
          +        for (var c = element.firstChild; c; c = c.nextSibling) {
          +          var type = c.nodeType;
          +          wrapper = (type === 1)  // Element Node
          +              ? (wrapper ? element : c)
          +              : (type === 3)  // Text Node
          +              ? (notWs.test(c.nodeValue) ? element : wrapper)
          +              : wrapper;
          +        }
          +        return wrapper === element ? undefined : wrapper;
          +      }
          +    
          +      /** Given triples of [style, pattern, context] returns a lexing function,
          +        * The lexing function interprets the patterns to find token boundaries and
          +        * returns a decoration list of the form
          +        * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
          +        * where index_n is an index into the sourceCode, and style_n is a style
          +        * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
          +        * all characters in sourceCode[index_n-1:index_n].
          +        *
          +        * The stylePatterns is a list whose elements have the form
          +        * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
          +        *
          +        * Style is a style constant like PR_PLAIN, or can be a string of the
          +        * form 'lang-FOO', where FOO is a language extension describing the
          +        * language of the portion of the token in $1 after pattern executes.
          +        * E.g., if style is 'lang-lisp', and group 1 contains the text
          +        * '(hello (world))', then that portion of the token will be passed to the
          +        * registered lisp handler for formatting.
          +        * The text before and after group 1 will be restyled using this decorator
          +        * so decorators should take care that this doesn't result in infinite
          +        * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
          +        * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
          +        * '<script>foo()<\/script>', which would cause the current decorator to
          +        * be called with '<script>' which would not match the same rule since
          +        * group 1 must not be empty, so it would be instead styled as PR_TAG by
          +        * the generic tag rule.  The handler registered for the 'js' extension would
          +        * then be called with 'foo()', and finally, the current decorator would
          +        * be called with '<\/script>' which would not match the original rule and
          +        * so the generic tag rule would identify it as a tag.
          +        *
          +        * Pattern must only match prefixes, and if it matches a prefix, then that
          +        * match is considered a token with the same style.
          +        *
          +        * Context is applied to the last non-whitespace, non-comment token
          +        * recognized.
          +        *
          +        * Shortcut is an optional string of characters, any of which, if the first
          +        * character, gurantee that this pattern and only this pattern matches.
          +        *
          +        * @param {Array} shortcutStylePatterns patterns that always start with
          +        *   a known character.  Must have a shortcut string.
          +        * @param {Array} fallthroughStylePatterns patterns that will be tried in
          +        *   order if the shortcut ones fail.  May have shortcuts.
          +        *
          +        * @return {function (Object)} a
          +        *   function that takes source code and returns a list of decorations.
          +        */
          +      function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
          +        var shortcuts = {};
          +        var tokenizer;
          +        (function () {
          +          var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
          +          var allRegexs = [];
          +          var regexKeys = {};
          +          for (var i = 0, n = allPatterns.length; i < n; ++i) {
          +            var patternParts = allPatterns[i];
          +            var shortcutChars = patternParts[3];
          +            if (shortcutChars) {
          +              for (var c = shortcutChars.length; --c >= 0;) {
          +                shortcuts[shortcutChars.charAt(c)] = patternParts;
          +              }
          +            }
          +            var regex = patternParts[1];
          +            var k = '' + regex;
          +            if (!regexKeys.hasOwnProperty(k)) {
          +              allRegexs.push(regex);
          +              regexKeys[k] = null;
          +            }
          +          }
          +          allRegexs.push(/[\0-\uffff]/);
          +          tokenizer = combinePrefixPatterns(allRegexs);
          +        })();
          +    
          +        var nPatterns = fallthroughStylePatterns.length;
          +    
          +        /**
          +         * Lexes job.sourceCode and produces an output array job.decorations of
          +         * style classes preceded by the position at which they start in
          +         * job.sourceCode in order.
          +         *
          +         * @param {Object} job an object like <pre>{
          +         *    sourceCode: {string} sourceText plain text,
          +         *    basePos: {int} position of job.sourceCode in the larger chunk of
          +         *        sourceCode.
          +         * }</pre>
          +         */
          +        var decorate = function (job) {
          +          var sourceCode = job.sourceCode, basePos = job.basePos;
          +          /** Even entries are positions in source in ascending order.  Odd enties
          +            * are style markers (e.g., PR_COMMENT) that run from that position until
          +            * the end.
          +            * @type {Array.<number|string>}
          +            */
          +          var decorations = [basePos, PR_PLAIN];
          +          var pos = 0;  // index into sourceCode
          +          var tokens = sourceCode.match(tokenizer) || [];
          +          var styleCache = {};
          +    
          +          for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
          +            var token = tokens[ti];
          +            var style = styleCache[token];
          +            var match = void 0;
          +    
          +            var isEmbedded;
          +            if (typeof style === 'string') {
          +              isEmbedded = false;
          +            } else {
          +              var patternParts = shortcuts[token.charAt(0)];
          +              if (patternParts) {
          +                match = token.match(patternParts[1]);
          +                style = patternParts[0];
          +              } else {
          +                for (var i = 0; i < nPatterns; ++i) {
          +                  patternParts = fallthroughStylePatterns[i];
          +                  match = token.match(patternParts[1]);
          +                  if (match) {
          +                    style = patternParts[0];
          +                    break;
          +                  }
          +                }
          +    
          +                if (!match) {  // make sure that we make progress
          +                  style = PR_PLAIN;
          +                }
          +              }
          +    
          +              isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
          +              if (isEmbedded && !(match && typeof match[1] === 'string')) {
          +                isEmbedded = false;
          +                style = PR_SOURCE;
          +              }
          +    
          +              if (!isEmbedded) { styleCache[token] = style; }
          +            }
          +    
          +            var tokenStart = pos;
          +            pos += token.length;
          +    
          +            if (!isEmbedded) {
          +              decorations.push(basePos + tokenStart, style);
          +            } else {  // Treat group 1 as an embedded block of source code.
          +              var embeddedSource = match[1];
          +              var embeddedSourceStart = token.indexOf(embeddedSource);
          +              var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
          +              if (match[2]) {
          +                // If embeddedSource can be blank, then it would match at the
          +                // beginning which would cause us to infinitely recurse on the
          +                // entire token, so we catch the right context in match[2].
          +                embeddedSourceEnd = token.length - match[2].length;
          +                embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
          +              }
          +              var lang = style.substring(5);
          +              // Decorate the left of the embedded source
          +              appendDecorations(
          +                  basePos + tokenStart,
          +                  token.substring(0, embeddedSourceStart),
          +                  decorate, decorations);
          +              // Decorate the embedded source
          +              appendDecorations(
          +                  basePos + tokenStart + embeddedSourceStart,
          +                  embeddedSource,
          +                  langHandlerForExtension(lang, embeddedSource),
          +                  decorations);
          +              // Decorate the right of the embedded section
          +              appendDecorations(
          +                  basePos + tokenStart + embeddedSourceEnd,
          +                  token.substring(embeddedSourceEnd),
          +                  decorate, decorations);
          +            }
          +          }
          +          job.decorations = decorations;
          +        };
          +        return decorate;
          +      }
          +    
          +      /** returns a function that produces a list of decorations from source text.
          +        *
          +        * This code treats ", ', and ` as string delimiters, and \ as a string
          +        * escape.  It does not recognize perl's qq() style strings.
          +        * It has no special handling for double delimiter escapes as in basic, or
          +        * the tripled delimiters used in python, but should work on those regardless
          +        * although in those cases a single string literal may be broken up into
          +        * multiple adjacent string literals.
          +        *
          +        * It recognizes C, C++, and shell style comments.
          +        *
          +        * @param {Object} options a set of optional parameters.
          +        * @return {function (Object)} a function that examines the source code
          +        *     in the input job and builds the decoration list.
          +        */
          +      function sourceDecorator(options) {
          +        var shortcutStylePatterns = [], fallthroughStylePatterns = [];
          +        if (options['tripleQuotedStrings']) {
          +          // '''multi-line-string''', 'single-line-string', and double-quoted
          +          shortcutStylePatterns.push(
          +              [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
          +               null, '\'"']);
          +        } else if (options['multiLineStrings']) {
          +          // 'multi-line-string', "multi-line-string"
          +          shortcutStylePatterns.push(
          +              [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
          +               null, '\'"`']);
          +        } else {
          +          // 'single-line-string', "single-line-string"
          +          shortcutStylePatterns.push(
          +              [PR_STRING,
          +               /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
          +               null, '"\'']);
          +        }
          +        if (options['verbatimStrings']) {
          +          // verbatim-string-literal production from the C# grammar.  See issue 93.
          +          fallthroughStylePatterns.push(
          +              [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
          +        }
          +        var hc = options['hashComments'];
          +        if (hc) {
          +          if (options['cStyleComments']) {
          +            if (hc > 1) {  // multiline hash comments
          +              shortcutStylePatterns.push(
          +                  [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
          +            } else {
          +              // Stop C preprocessor declarations at an unclosed open comment
          +              shortcutStylePatterns.push(
          +                  [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
          +                   null, '#']);
          +            }
          +            // #include <stdio.h>
          +            fallthroughStylePatterns.push(
          +                [PR_STRING,
          +                 /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
          +                 null]);
          +          } else {
          +            shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
          +          }
          +        }
          +        if (options['cStyleComments']) {
          +          fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
          +          fallthroughStylePatterns.push(
          +              [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
          +        }
          +        var regexLiterals = options['regexLiterals'];
          +        if (regexLiterals) {
          +          /**
          +           * @const
          +           */
          +          var regexExcls = regexLiterals > 1
          +            ? ''  // Multiline regex literals
          +            : '\n\r';
          +          /**
          +           * @const
          +           */
          +          var regexAny = regexExcls ? '.' : '[\\S\\s]';
          +          /**
          +           * @const
          +           */
          +          var REGEX_LITERAL = (
          +              // A regular expression literal starts with a slash that is
          +              // not followed by * or / so that it is not confused with
          +              // comments.
          +              '/(?=[^/*' + regexExcls + '])'
          +              // and then contains any number of raw characters,
          +              + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
          +              // escape sequences (\x5C),
          +              +    '|\\x5C' + regexAny
          +              // or non-nesting character sets (\x5B\x5D);
          +              +    '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
          +              +             '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
          +              // finally closed by a /.
          +              + '/');
          +          fallthroughStylePatterns.push(
          +              ['lang-regex',
          +               RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
          +               ]);
          +        }
          +    
          +        var types = options['types'];
          +        if (types) {
          +          fallthroughStylePatterns.push([PR_TYPE, types]);
          +        }
          +    
          +        var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
          +        if (keywords.length) {
          +          fallthroughStylePatterns.push(
          +              [PR_KEYWORD,
          +               new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
          +               null]);
          +        }
          +    
          +        shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
          +    
          +        var punctuation =
          +          // The Bash man page says
          +    
          +          // A word is a sequence of characters considered as a single
          +          // unit by GRUB. Words are separated by metacharacters,
          +          // which are the following plus space, tab, and newline: { }
          +          // | & $ ; < >
          +          // ...
          +          
          +          // A word beginning with # causes that word and all remaining
          +          // characters on that line to be ignored.
          +    
          +          // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
          +          // comment but empirically
          +          // $ echo {#}
          +          // {#}
          +          // $ echo \$#
          +          // $#
          +          // $ echo }#
          +          // }#
          +    
          +          // so /(?:^|[|&;<>\s])/ is more appropriate.
          +    
          +          // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
          +          // suggests that this definition is compatible with a
          +          // default mode that tries to use a single token definition
          +          // to recognize both bash/python style comments and C
          +          // preprocessor directives.
          +    
          +          // This definition of punctuation does not include # in the list of
          +          // follow-on exclusions, so # will not be broken before if preceeded
          +          // by a punctuation character.  We could try to exclude # after
          +          // [|&;<>] but that doesn't seem to cause many major problems.
          +          // If that does turn out to be a problem, we should change the below
          +          // when hc is truthy to include # in the run of punctuation characters
          +          // only when not followint [|&;<>].
          +          '^.[^\\s\\w.$@\'"`/\\\\]*';
          +        if (options['regexLiterals']) {
          +          punctuation += '(?!\s*\/)';
          +        }
          +    
          +        fallthroughStylePatterns.push(
          +            // TODO(mikesamuel): recognize non-latin letters and numerals in idents
          +            [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
          +            [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
          +            [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
          +            [PR_LITERAL,
          +             new RegExp(
          +                 '^(?:'
          +                 // A hex number
          +                 + '0x[a-f0-9]+'
          +                 // or an octal or decimal number,
          +                 + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
          +                 // possibly in scientific notation
          +                 + '(?:e[+\\-]?\\d+)?'
          +                 + ')'
          +                 // with an optional modifier like UL for unsigned long
          +                 + '[a-z]*', 'i'),
          +             null, '0123456789'],
          +            // Don't treat escaped quotes in bash as starting strings.
          +            // See issue 144.
          +            [PR_PLAIN,       /^\\[\s\S]?/, null],
          +            [PR_PUNCTUATION, new RegExp(punctuation), null]);
          +    
          +        return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
          +      }
          +    
          +      var decorateSource = sourceDecorator({
          +            'keywords': ALL_KEYWORDS,
          +            'hashComments': true,
          +            'cStyleComments': true,
          +            'multiLineStrings': true,
          +            'regexLiterals': true
          +          });
          +    
          +      /**
          +       * Given a DOM subtree, wraps it in a list, and puts each line into its own
          +       * list item.
          +       *
          +       * @param {Node} node modified in place.  Its content is pulled into an
          +       *     HTMLOListElement, and each line is moved into a separate list item.
          +       *     This requires cloning elements, so the input might not have unique
          +       *     IDs after numbering.
          +       * @param {boolean} isPreformatted true iff white-space in text nodes should
          +       *     be treated as significant.
          +       */
          +      function numberLines(node, opt_startLineNum, isPreformatted) {
          +        var nocode = /(?:^|\s)nocode(?:\s|$)/;
          +        var lineBreak = /\r\n?|\n/;
          +      
          +        var document = node.ownerDocument;
          +      
          +        var li = document.createElement('li');
          +        while (node.firstChild) {
          +          li.appendChild(node.firstChild);
          +        }
          +        // An array of lines.  We split below, so this is initialized to one
          +        // un-split line.
          +        var listItems = [li];
          +      
          +        function walk(node) {
          +          var type = node.nodeType;
          +          if (type == 1 && !nocode.test(node.className)) {  // Element
          +            if ('br' === node.nodeName) {
          +              breakAfter(node);
          +              // Discard the <BR> since it is now flush against a </LI>.
          +              if (node.parentNode) {
          +                node.parentNode.removeChild(node);
          +              }
          +            } else {
          +              for (var child = node.firstChild; child; child = child.nextSibling) {
          +                walk(child);
          +              }
          +            }
          +          } else if ((type == 3 || type == 4) && isPreformatted) {  // Text
          +            var text = node.nodeValue;
          +            var match = text.match(lineBreak);
          +            if (match) {
          +              var firstLine = text.substring(0, match.index);
          +              node.nodeValue = firstLine;
          +              var tail = text.substring(match.index + match[0].length);
          +              if (tail) {
          +                var parent = node.parentNode;
          +                parent.insertBefore(
          +                  document.createTextNode(tail), node.nextSibling);
          +              }
          +              breakAfter(node);
          +              if (!firstLine) {
          +                // Don't leave blank text nodes in the DOM.
          +                node.parentNode.removeChild(node);
          +              }
          +            }
          +          }
          +        }
          +      
          +        // Split a line after the given node.
          +        function breakAfter(lineEndNode) {
          +          // If there's nothing to the right, then we can skip ending the line
          +          // here, and move root-wards since splitting just before an end-tag
          +          // would require us to create a bunch of empty copies.
          +          while (!lineEndNode.nextSibling) {
          +            lineEndNode = lineEndNode.parentNode;
          +            if (!lineEndNode) { return; }
          +          }
          +      
          +          function breakLeftOf(limit, copy) {
          +            // Clone shallowly if this node needs to be on both sides of the break.
          +            var rightSide = copy ? limit.cloneNode(false) : limit;
          +            var parent = limit.parentNode;
          +            if (parent) {
          +              // We clone the parent chain.
          +              // This helps us resurrect important styling elements that cross lines.
          +              // E.g. in <i>Foo<br>Bar</i>
          +              // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
          +              var parentClone = breakLeftOf(parent, 1);
          +              // Move the clone and everything to the right of the original
          +              // onto the cloned parent.
          +              var next = limit.nextSibling;
          +              parentClone.appendChild(rightSide);
          +              for (var sibling = next; sibling; sibling = next) {
          +                next = sibling.nextSibling;
          +                parentClone.appendChild(sibling);
          +              }
          +            }
          +            return rightSide;
          +          }
          +      
          +          var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
          +      
          +          // Walk the parent chain until we reach an unattached LI.
          +          for (var parent;
          +               // Check nodeType since IE invents document fragments.
          +               (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
          +            copiedListItem = parent;
          +          }
          +          // Put it on the list of lines for later processing.
          +          listItems.push(copiedListItem);
          +        }
          +      
          +        // Split lines while there are lines left to split.
          +        for (var i = 0;  // Number of lines that have been split so far.
          +             i < listItems.length;  // length updated by breakAfter calls.
          +             ++i) {
          +          walk(listItems[i]);
          +        }
          +      
          +        // Make sure numeric indices show correctly.
          +        if (opt_startLineNum === (opt_startLineNum|0)) {
          +          listItems[0].setAttribute('value', opt_startLineNum);
          +        }
          +      
          +        var ol = document.createElement('ol');
          +        ol.className = 'linenums';
          +        var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
          +        for (var i = 0, n = listItems.length; i < n; ++i) {
          +          li = listItems[i];
          +          // Stick a class on the LIs so that stylesheets can
          +          // color odd/even rows, or any other row pattern that
          +          // is co-prime with 10.
          +          li.className = 'L' + ((i + offset) % 10);
          +          if (!li.firstChild) {
          +            li.appendChild(document.createTextNode('\xA0'));
          +          }
          +          ol.appendChild(li);
          +        }
          +      
          +        node.appendChild(ol);
          +      }    
          +      /**
          +       * Breaks {@code job.sourceCode} around style boundaries in
          +       * {@code job.decorations} and modifies {@code job.sourceNode} in place.
          +       * @param {Object} job like <pre>{
          +       *    sourceCode: {string} source as plain text,
          +       *    sourceNode: {HTMLElement} the element containing the source,
          +       *    spans: {Array.<number|Node>} alternating span start indices into source
          +       *       and the text node or element (e.g. {@code <BR>}) corresponding to that
          +       *       span.
          +       *    decorations: {Array.<number|string} an array of style classes preceded
          +       *       by the position at which they start in job.sourceCode in order
          +       * }</pre>
          +       * @private
          +       */
          +      function recombineTagsAndDecorations(job) {
          +        var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
          +        isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
          +        var newlineRe = /\n/g;
          +      
          +        var source = job.sourceCode;
          +        var sourceLength = source.length;
          +        // Index into source after the last code-unit recombined.
          +        var sourceIndex = 0;
          +      
          +        var spans = job.spans;
          +        var nSpans = spans.length;
          +        // Index into spans after the last span which ends at or before sourceIndex.
          +        var spanIndex = 0;
          +      
          +        var decorations = job.decorations;
          +        var nDecorations = decorations.length;
          +        // Index into decorations after the last decoration which ends at or before
          +        // sourceIndex.
          +        var decorationIndex = 0;
          +      
          +        // Remove all zero-length decorations.
          +        decorations[nDecorations] = sourceLength;
          +        var decPos, i;
          +        for (i = decPos = 0; i < nDecorations;) {
          +          if (decorations[i] !== decorations[i + 2]) {
          +            decorations[decPos++] = decorations[i++];
          +            decorations[decPos++] = decorations[i++];
          +          } else {
          +            i += 2;
          +          }
          +        }
          +        nDecorations = decPos;
          +      
          +        // Simplify decorations.
          +        for (i = decPos = 0; i < nDecorations;) {
          +          var startPos = decorations[i];
          +          // Conflate all adjacent decorations that use the same style.
          +          var startDec = decorations[i + 1];
          +          var end = i + 2;
          +          while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
          +            end += 2;
          +          }
          +          decorations[decPos++] = startPos;
          +          decorations[decPos++] = startDec;
          +          i = end;
          +        }
          +      
          +        nDecorations = decorations.length = decPos;
          +      
          +        var sourceNode = job.sourceNode;
          +        var oldDisplay;
          +        if (sourceNode) {
          +          oldDisplay = sourceNode.style.display;
          +          sourceNode.style.display = 'none';
          +        }
          +        try {
          +          var decoration = null;
          +          while (spanIndex < nSpans) {
          +            var spanStart = spans[spanIndex];
          +            var spanEnd = spans[spanIndex + 2] || sourceLength;
          +      
          +            var decEnd = decorations[decorationIndex + 2] || sourceLength;
          +      
          +            var end = Math.min(spanEnd, decEnd);
          +      
          +            var textNode = spans[spanIndex + 1];
          +            var styledText;
          +            if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
          +                // Don't introduce spans around empty text nodes.
          +                && (styledText = source.substring(sourceIndex, end))) {
          +              // This may seem bizarre, and it is.  Emitting LF on IE causes the
          +              // code to display with spaces instead of line breaks.
          +              // Emitting Windows standard issue linebreaks (CRLF) causes a blank
          +              // space to appear at the beginning of every line but the first.
          +              // Emitting an old Mac OS 9 line separator makes everything spiffy.
          +              if (isIE8OrEarlier) {
          +                styledText = styledText.replace(newlineRe, '\r');
          +              }
          +              textNode.nodeValue = styledText;
          +              var document = textNode.ownerDocument;
          +              var span = document.createElement('span');
          +              span.className = decorations[decorationIndex + 1];
          +              var parentNode = textNode.parentNode;
          +              parentNode.replaceChild(span, textNode);
          +              span.appendChild(textNode);
          +              if (sourceIndex < spanEnd) {  // Split off a text node.
          +                spans[spanIndex + 1] = textNode
          +                    // TODO: Possibly optimize by using '' if there's no flicker.
          +                    = document.createTextNode(source.substring(end, spanEnd));
          +                parentNode.insertBefore(textNode, span.nextSibling);
          +              }
          +            }
          +      
          +            sourceIndex = end;
          +      
          +            if (sourceIndex >= spanEnd) {
          +              spanIndex += 2;
          +            }
          +            if (sourceIndex >= decEnd) {
          +              decorationIndex += 2;
          +            }
          +          }
          +        } finally {
          +          if (sourceNode) {
          +            sourceNode.style.display = oldDisplay;
          +          }
          +        }
          +      }
          +    
          +      /** Maps language-specific file extensions to handlers. */
          +      var langHandlerRegistry = {};
          +      /** Register a language handler for the given file extensions.
          +        * @param {function (Object)} handler a function from source code to a list
          +        *      of decorations.  Takes a single argument job which describes the
          +        *      state of the computation.   The single parameter has the form
          +        *      {@code {
          +        *        sourceCode: {string} as plain text.
          +        *        decorations: {Array.<number|string>} an array of style classes
          +        *                     preceded by the position at which they start in
          +        *                     job.sourceCode in order.
          +        *                     The language handler should assigned this field.
          +        *        basePos: {int} the position of source in the larger source chunk.
          +        *                 All positions in the output decorations array are relative
          +        *                 to the larger source chunk.
          +        *      } }
          +        * @param {Array.<string>} fileExtensions
          +        */
          +      function registerLangHandler(handler, fileExtensions) {
          +        for (var i = fileExtensions.length; --i >= 0;) {
          +          var ext = fileExtensions[i];
          +          if (!langHandlerRegistry.hasOwnProperty(ext)) {
          +            langHandlerRegistry[ext] = handler;
          +          } else if (win['console']) {
          +            console['warn']('cannot override language handler %s', ext);
          +          }
          +        }
          +      }
          +      function langHandlerForExtension(extension, source) {
          +        if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
          +          // Treat it as markup if the first non whitespace character is a < and
          +          // the last non-whitespace character is a >.
          +          extension = /^\s*</.test(source)
          +              ? 'default-markup'
          +              : 'default-code';
          +        }
          +        return langHandlerRegistry[extension];
          +      }
          +      registerLangHandler(decorateSource, ['default-code']);
          +      registerLangHandler(
          +          createSimpleLexer(
          +              [],
          +              [
          +               [PR_PLAIN,       /^[^<?]+/],
          +               [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
          +               [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
          +               // Unescaped content in an unknown language
          +               ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
          +               ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
          +               [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
          +               ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
          +               // Unescaped content in javascript.  (Or possibly vbscript).
          +               ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
          +               // Contains unescaped stylesheet content
          +               ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
          +               ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
          +              ]),
          +          ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
          +      registerLangHandler(
          +          createSimpleLexer(
          +              [
          +               [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
          +               [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
          +               ],
          +              [
          +               [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
          +               [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
          +               ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
          +               [PR_PUNCTUATION,  /^[=<>\/]+/],
          +               ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
          +               ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
          +               ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
          +               ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
          +               ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
          +               ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
          +               ]),
          +          ['in.tag']);
          +      registerLangHandler(
          +          createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': CPP_KEYWORDS,
          +              'hashComments': true,
          +              'cStyleComments': true,
          +              'types': C_TYPES
          +            }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': 'null,true,false'
          +            }), ['json']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': CSHARP_KEYWORDS,
          +              'hashComments': true,
          +              'cStyleComments': true,
          +              'verbatimStrings': true,
          +              'types': C_TYPES
          +            }), ['cs']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': JAVA_KEYWORDS,
          +              'cStyleComments': true
          +            }), ['java']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': SH_KEYWORDS,
          +              'hashComments': true,
          +              'multiLineStrings': true
          +            }), ['bash', 'bsh', 'csh', 'sh']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': PYTHON_KEYWORDS,
          +              'hashComments': true,
          +              'multiLineStrings': true,
          +              'tripleQuotedStrings': true
          +            }), ['cv', 'py', 'python']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': PERL_KEYWORDS,
          +              'hashComments': true,
          +              'multiLineStrings': true,
          +              'regexLiterals': 2  // multiline regex literals
          +            }), ['perl', 'pl', 'pm']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': RUBY_KEYWORDS,
          +              'hashComments': true,
          +              'multiLineStrings': true,
          +              'regexLiterals': true
          +            }), ['rb', 'ruby']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': JSCRIPT_KEYWORDS,
          +              'cStyleComments': true,
          +              'regexLiterals': true
          +            }), ['javascript', 'js']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': COFFEE_KEYWORDS,
          +              'hashComments': 3,  // ### style block comments
          +              'cStyleComments': true,
          +              'multilineStrings': true,
          +              'tripleQuotedStrings': true,
          +              'regexLiterals': true
          +            }), ['coffee']);
          +      registerLangHandler(sourceDecorator({
          +              'keywords': RUST_KEYWORDS,
          +              'cStyleComments': true,
          +              'multilineStrings': true
          +            }), ['rc', 'rs', 'rust']);
          +      registerLangHandler(
          +          createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
          +    
          +      function applyDecorator(job) {
          +        var opt_langExtension = job.langExtension;
          +    
          +        try {
          +          // Extract tags, and convert the source code to plain text.
          +          var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
          +          /** Plain text. @type {string} */
          +          var source = sourceAndSpans.sourceCode;
          +          job.sourceCode = source;
          +          job.spans = sourceAndSpans.spans;
          +          job.basePos = 0;
          +    
          +          // Apply the appropriate language handler
          +          langHandlerForExtension(opt_langExtension, source)(job);
          +    
          +          // Integrate the decorations and tags back into the source code,
          +          // modifying the sourceNode in place.
          +          recombineTagsAndDecorations(job);
          +        } catch (e) {
          +          if (win['console']) {
          +            console['log'](e && e['stack'] || e);
          +          }
          +        }
          +      }
          +    
          +      /**
          +       * Pretty print a chunk of code.
          +       * @param sourceCodeHtml {string} The HTML to pretty print.
          +       * @param opt_langExtension {string} The language name to use.
          +       *     Typically, a filename extension like 'cpp' or 'java'.
          +       * @param opt_numberLines {number|boolean} True to number lines,
          +       *     or the 1-indexed number of the first line in sourceCodeHtml.
          +       */
          +      function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
          +        var container = document.createElement('div');
          +        // This could cause images to load and onload listeners to fire.
          +        // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
          +        // We assume that the inner HTML is from a trusted source.
          +        // The pre-tag is required for IE8 which strips newlines from innerHTML
          +        // when it is injected into a <pre> tag.
          +        // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
          +        // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
          +        container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
          +        container = container.firstChild;
          +        if (opt_numberLines) {
          +          numberLines(container, opt_numberLines, true);
          +        }
          +    
          +        var job = {
          +          langExtension: opt_langExtension,
          +          numberLines: opt_numberLines,
          +          sourceNode: container,
          +          pre: 1
          +        };
          +        applyDecorator(job);
          +        return container.innerHTML;
          +      }
          +    
          +       /**
          +        * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
          +        * {@code class=prettyprint} and prettify them.
          +        *
          +        * @param {Function} opt_whenDone called when prettifying is done.
          +        * @param {HTMLElement|HTMLDocument} opt_root an element or document
          +        *   containing all the elements to pretty print.
          +        *   Defaults to {@code document.body}.
          +        */
          +      function $prettyPrint(opt_whenDone, opt_root) {
          +        var root = opt_root || document.body;
          +        var doc = root.ownerDocument || document;
          +        function byTagName(tn) { return root.getElementsByTagName(tn); }
          +        // fetch a list of nodes to rewrite
          +        var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
          +        var elements = [];
          +        for (var i = 0; i < codeSegments.length; ++i) {
          +          for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
          +            elements.push(codeSegments[i][j]);
          +          }
          +        }
          +        codeSegments = null;
          +    
          +        var clock = Date;
          +        if (!clock['now']) {
          +          clock = { 'now': function () { return +(new Date); } };
          +        }
          +    
          +        // The loop is broken into a series of continuations to make sure that we
          +        // don't make the browser unresponsive when rewriting a large page.
          +        var k = 0;
          +        var prettyPrintingJob;
          +    
          +        var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
          +        var prettyPrintRe = /\bprettyprint\b/;
          +        var prettyPrintedRe = /\bprettyprinted\b/;
          +        var preformattedTagNameRe = /pre|xmp/i;
          +        var codeRe = /^code$/i;
          +        var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
          +        var EMPTY = {};
          +    
          +        function doWork() {
          +          var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
          +                         clock['now']() + 250 /* ms */ :
          +                         Infinity);
          +          for (; k < elements.length && clock['now']() < endTime; k++) {
          +            var cs = elements[k];
          +    
          +            // Look for a preceding comment like
          +            // <?prettify lang="..." linenums="..."?>
          +            var attrs = EMPTY;
          +            {
          +              for (var preceder = cs; (preceder = preceder.previousSibling);) {
          +                var nt = preceder.nodeType;
          +                // <?foo?> is parsed by HTML 5 to a comment node (8)
          +                // like <!--?foo?-->, but in XML is a processing instruction
          +                var value = (nt === 7 || nt === 8) && preceder.nodeValue;
          +                if (value
          +                    ? !/^\??prettify\b/.test(value)
          +                    : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
          +                  // Skip over white-space text nodes but not others.
          +                  break;
          +                }
          +                if (value) {
          +                  attrs = {};
          +                  value.replace(
          +                      /\b(\w+)=([\w:.%+-]+)/g,
          +                    function (_, name, value) { attrs[name] = value; });
          +                  break;
          +                }
          +              }
          +            }
          +    
          +            var className = cs.className;
          +            if ((attrs !== EMPTY || prettyPrintRe.test(className))
          +                // Don't redo this if we've already done it.
          +                // This allows recalling pretty print to just prettyprint elements
          +                // that have been added to the page since last call.
          +                && !prettyPrintedRe.test(className)) {
          +    
          +              // make sure this is not nested in an already prettified element
          +              var nested = false;
          +              for (var p = cs.parentNode; p; p = p.parentNode) {
          +                var tn = p.tagName;
          +                if (preCodeXmpRe.test(tn)
          +                    && p.className && prettyPrintRe.test(p.className)) {
          +                  nested = true;
          +                  break;
          +                }
          +              }
          +              if (!nested) {
          +                // Mark done.  If we fail to prettyprint for whatever reason,
          +                // we shouldn't try again.
          +                cs.className += ' prettyprinted';
          +    
          +                // If the classes includes a language extensions, use it.
          +                // Language extensions can be specified like
          +                //     <pre class="prettyprint lang-cpp">
          +                // the language extension "cpp" is used to find a language handler
          +                // as passed to PR.registerLangHandler.
          +                // HTML5 recommends that a language be specified using "language-"
          +                // as the prefix instead.  Google Code Prettify supports both.
          +                // http://dev.w3.org/html5/spec-author-view/the-code-element.html
          +                var langExtension = attrs['lang'];
          +                if (!langExtension) {
          +                  langExtension = className.match(langExtensionRe);
          +                  // Support <pre class="prettyprint"><code class="language-c">
          +                  var wrapper;
          +                  if (!langExtension && (wrapper = childContentWrapper(cs))
          +                      && codeRe.test(wrapper.tagName)) {
          +                    langExtension = wrapper.className.match(langExtensionRe);
          +                  }
          +    
          +                  if (langExtension) { langExtension = langExtension[1]; }
          +                }
          +    
          +                var preformatted;
          +                if (preformattedTagNameRe.test(cs.tagName)) {
          +                  preformatted = 1;
          +                } else {
          +                  var currentStyle = cs['currentStyle'];
          +                  var defaultView = doc.defaultView;
          +                  var whitespace = (
          +                      currentStyle
          +                      ? currentStyle['whiteSpace']
          +                      : (defaultView
          +                         && defaultView.getComputedStyle)
          +                      ? defaultView.getComputedStyle(cs, null)
          +                      .getPropertyValue('white-space')
          +                      : 0);
          +                  preformatted = whitespace
          +                      && 'pre' === whitespace.substring(0, 3);
          +                }
          +    
          +                // Look for a class like linenums or linenums:<n> where <n> is the
          +                // 1-indexed number of the first line.
          +                var lineNums = attrs['linenums'];
          +                if (!(lineNums = lineNums === 'true' || +lineNums)) {
          +                  lineNums = className.match(/\blinenums\b(?::(\d+))?/);
          +                  lineNums =
          +                    lineNums
          +                    ? lineNums[1] && lineNums[1].length
          +                      ? +lineNums[1] : true
          +                    : false;
          +                }
          +                if (lineNums) { numberLines(cs, lineNums, preformatted); }
          +    
          +                // do the pretty printing
          +                prettyPrintingJob = {
          +                  langExtension: langExtension,
          +                  sourceNode: cs,
          +                  numberLines: lineNums,
          +                  pre: preformatted
          +                };
          +                applyDecorator(prettyPrintingJob);
          +              }
          +            }
          +          }
          +          if (k < elements.length) {
          +            // finish up in a continuation
          +            setTimeout(doWork, 250);
          +          } else if ('function' === typeof opt_whenDone) {
          +            opt_whenDone();
          +          }
          +        }
          +    
          +        doWork();
          +      }
          +    
          +      /**
          +       * Contains functions for creating and registering new language handlers.
          +       * @type {Object}
          +       */
          +      var PR = win['PR'] = {
          +            'createSimpleLexer': createSimpleLexer,
          +            'registerLangHandler': registerLangHandler,
          +            'sourceDecorator': sourceDecorator,
          +            'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
          +            'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
          +            'PR_COMMENT': PR_COMMENT,
          +            'PR_DECLARATION': PR_DECLARATION,
          +            'PR_KEYWORD': PR_KEYWORD,
          +            'PR_LITERAL': PR_LITERAL,
          +            'PR_NOCODE': PR_NOCODE,
          +            'PR_PLAIN': PR_PLAIN,
          +            'PR_PUNCTUATION': PR_PUNCTUATION,
          +            'PR_SOURCE': PR_SOURCE,
          +            'PR_STRING': PR_STRING,
          +            'PR_TAG': PR_TAG,
          +            'PR_TYPE': PR_TYPE,
          +            'prettyPrintOne':
          +               IN_GLOBAL_SCOPE
          +                 ? (win['prettyPrintOne'] = $prettyPrintOne)
          +                 : (prettyPrintOne = $prettyPrintOne),
          +            'prettyPrint': prettyPrint =
          +               IN_GLOBAL_SCOPE
          +                 ? (win['prettyPrint'] = $prettyPrint)
          +                 : (prettyPrint = $prettyPrint)
          +          };
          +    
          +      // Make PR available via the Asynchronous Module Definition (AMD) API.
          +      // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
          +      // The Asynchronous Module Definition (AMD) API specifies a
          +      // mechanism for defining modules such that the module and its
          +      // dependencies can be asynchronously loaded.
          +      // ...
          +      // To allow a clear indicator that a global define function (as
          +      // needed for script src browser loading) conforms to the AMD API,
          +      // any global define function SHOULD have a property called "amd"
          +      // whose value is an object. This helps avoid conflict with any
          +      // other existing JavaScript code that could have defined a define()
          +      // function that does not conform to the AMD API.
          +      if (typeof define === "function" && define['amd']) {
          +        define("google-code-prettify", [], function () {
          +          return PR; 
          +        });
          +      }
          +    })();
          +    return prettyPrint;
          +  })();
          +
          +  // If this script is deferred or async and the document is already
          +  // loaded we need to wait for language handlers to load before performing
          +  // any autorun.
          +  function onLangsLoaded() {
          +    if (autorun) {
          +      contentLoaded(
          +        function () {
          +          var n = callbacks.length;
          +          var callback = n ? function () {
          +            for (var i = 0; i < n; ++i) {
          +              (function (i) {
          +                 setTimeout(
          +                   function () {
          +                     win['exports'][callbacks[i]].apply(win, arguments);
          +                   }, 0);
          +               })(i);
          +            }
          +          } : void 0;
          +          prettyPrint(callback);
          +        });
          +    }
          +  }
          +  checkPendingLanguages();
          +
          +}());
          diff --git a/public/theme/google-code-prettify/styles/demo.html b/public/theme/google-code-prettify/styles/demo.html
          new file mode 100644
          index 0000000..9c9acad
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/demo.html
          @@ -0,0 +1,61 @@
          +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
          +<html><head>
          +<script src="../src/prettify.js"></script>
          +<script src="../src/lang-css.js"></script>
          +<style>
          +body { margin: 0; padding: 0 }
          +pre { margin: 0 }
          +</style>
          +</head>
          +<script>
          +// This page displays some code styled using a theme named in the
          +// query part of the URL.
          +var themeName = decodeURIComponent(document.location.search.replace(/^\?/, ''));
          +
          +// Call out to the parent so that it can resize the iframe once this
          +// document's body is loaded.
          +function adjustHeightInParent() {
          +  if (parent !== window) {
          +    try {
          +      var div = document.body.getElementsByTagName('div')[0];
          +      parent.adjustChildIframeSize(
          +          themeName, div.offsetWidth, div.offsetHeight);
          +    } catch (ex) {
          +      // Can happen when this page is opened in its own tab.
          +    }
          +  }
          +}
          +
          +// Load the necessary CSS
          +(function () {
          +  document.title = 'Theme ' + themeName;
          +  // Load the stylesheet that we're demoing.
          +  var link = document.createElement('link');
          +  link.rel = 'stylesheet';
          +  link.type = 'text/css';
          +  link.href = themeName === 'default'
          +      ? '../src/prettify.css' : themeName + '.css';
          +  document.getElementsByTagName('head')[0].appendChild(link);
          +})();
          +</script>
          +
          +<body onload="prettyPrint(); adjustHeightInParent()">
          +<div style="width: 40em; display: inline-block">
          +<pre class="prettyprint lang-html linenums">
          +&lt;script type="text/javascript"&gt;
          +// Say hello world until the user starts questioning
          +// the meaningfulness of their existence.
          +function helloWorld(world) {
          +  for (var i = 42; --i &gt;= 0;) {
          +    alert('Hello ' + String(world));
          +  }
          +}
          +&lt;/script&gt;
          +&lt;style&gt;
          +p { color: pink }
          +b { color: blue }
          +u { color: "umber" }
          +&lt;/style&gt;
          +</pre>
          +</div>
          +</body></html>
          diff --git a/public/theme/google-code-prettify/styles/desert.css b/public/theme/google-code-prettify/styles/desert.css
          new file mode 100644
          index 0000000..b2b73cd
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/desert.css
          @@ -0,0 +1,34 @@
          +/* desert scheme ported from vim to google prettify */
          +pre.prettyprint { display: block; background-color: #333 }
          +pre .nocode { background-color: none; color: #000 }
          +pre .str { color: #ffa0a0 } /* string  - pink */
          +pre .kwd { color: #f0e68c; font-weight: bold }
          +pre .com { color: #87ceeb } /* comment - skyblue */
          +pre .typ { color: #98fb98 } /* type    - lightgreen */
          +pre .lit { color: #cd5c5c } /* literal - darkred */
          +pre .pun { color: #fff }    /* punctuation */
          +pre .pln { color: #fff }    /* plaintext */
          +pre .tag { color: #f0e68c; font-weight: bold } /* html/xml tag    - lightyellow */
          +pre .atn { color: #bdb76b; font-weight: bold } /* attribute name  - khaki */
          +pre .atv { color: #ffa0a0 } /* attribute value - pink */
          +pre .dec { color: #98fb98 } /* decimal         - lightgreen */
          +
          +/* Specify class=linenums on a pre to get line numbering */
          +ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE } /* IE indents via margin-left */
          +li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
          +/* Alternate shading for lines */
          +li.L1,li.L3,li.L5,li.L7,li.L9 { }
          +
          +@media print {
          +  pre.prettyprint { background-color: none }
          +  pre .str, code .str { color: #060 }
          +  pre .kwd, code .kwd { color: #006; font-weight: bold }
          +  pre .com, code .com { color: #600; font-style: italic }
          +  pre .typ, code .typ { color: #404; font-weight: bold }
          +  pre .lit, code .lit { color: #044 }
          +  pre .pun, code .pun { color: #440 }
          +  pre .pln, code .pln { color: #000 }
          +  pre .tag, code .tag { color: #006; font-weight: bold }
          +  pre .atn, code .atn { color: #404 }
          +  pre .atv, code .atv { color: #060 }
          +}
          diff --git a/public/theme/google-code-prettify/styles/doxy.css b/public/theme/google-code-prettify/styles/doxy.css
          new file mode 100644
          index 0000000..bf3a266
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/doxy.css
          @@ -0,0 +1,64 @@
          +/* Doxy pretty-printing styles. Used with prettify.js.  */
          +
          +pre .str, code .str { color: #fec243; } /* string  - eggyolk gold */
          +pre .kwd, code .kwd { color: #8470FF; } /* keyword - light slate blue */
          +pre .com, code .com { color: #32cd32; font-style: italic; } /* comment - green */
          +pre .typ, code .typ { color: #6ecbcc; } /* type - turq green */
          +pre .lit, code .lit { color: #d06; } /* literal - cherry red */
          +pre .pun, code .pun { color: #8B8970;  } /* punctuation - lemon chiffon4  */
          +pre .pln, code .pln { color: #f0f0f0; } /* plaintext - white */
          +pre .tag, code .tag { color: #9c9cff; } /* html/xml tag  (bluey)  */
          +pre .htm, code .htm { color: #dda0dd; } /* html tag  light purply*/
          +pre .xsl, code .xsl { color: #d0a0d0; } /* xslt tag  light purply*/
          +pre .atn, code .atn { color: #46eeee; font-weight: normal;} /* html/xml attribute name  - lt turquoise */
          +pre .atv, code .atv { color: #EEB4B4; } /* html/xml attribute value - rosy brown2 */
          +pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
          +
          +a {
          +  text-decoration: none;
          +}
          +pre.prettyprint, code.prettyprint {
          +  font-family:'Droid Sans Mono','CPMono_v07 Bold','Droid Sans';
          +  font-weight: bold;
          +  font-size: 9pt;
          +  background-color: #0f0f0f;
          +  -moz-border-radius: 8px;
          +  -webkit-border-radius: 8px;
          +  -o-border-radius: 8px;
          +  -ms-border-radius: 8px;
          +  -khtml-border-radius: 8px;
          +  border-radius: 8px;
          +}  /*  background is black (well, just a tad less dark )  */
          +
          +pre.prettyprint {
          +  width: 95%;
          +  margin: 1em auto;
          +  padding: 1em;
          +  white-space: pre-wrap;
          +}
          +
          +pre.prettyprint a, code.prettyprint a {
          +   text-decoration:none;
          +}
          +/* Specify class=linenums on a pre to get line numbering; line numbers themselves are the same color as punctuation */
          +ol.linenums { margin-top: 0; margin-bottom: 0; color: #8B8970; } /* IE indents via margin-left */
          +li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
          +/* Alternate shading for lines */
          +li.L1,li.L3,li.L5,li.L7,li.L9 { }
          +
          +/* print is mostly unchanged from default at present  */
          +@media print {
          +  pre.prettyprint, code.prettyprint { background-color: #fff;  }
          +  pre .str, code .str { color: #088; }
          +  pre .kwd, code .kwd { color: #006; font-weight: bold; }
          +  pre .com, code .com { color: #0C3; font-style: italic; }
          +  pre .typ, code .typ { color: #404; font-weight: bold; }
          +  pre .lit, code .lit { color: #044; }
          +  pre .pun, code .pun { color: #440; }
          +  pre .pln, code .pln { color: #000; }
          +  pre .tag, code .tag { color: #b66ff7; font-weight: bold; }
          +  pre .htm, code .htm { color: #606; font-weight: bold; }
          +  pre .xsl, code .xsl { color: #606; font-weight: bold; }
          +  pre .atn, code .atn { color: #c71585;  font-weight: normal; }
          +  pre .atv, code .atv { color: #088;  font-weight: normal; }
          +}
          diff --git a/public/theme/google-code-prettify/styles/index.html b/public/theme/google-code-prettify/styles/index.html
          new file mode 100644
          index 0000000..abd6ef5
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/index.html
          @@ -0,0 +1,89 @@
          +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
          +<html><head>
          +<title>Prettify Themes Gallery</title>
          +<style type="text/css">
          +iframe { width: 100%; border-style: none; margin: 0; padding: 0 }
          +</style>
          +<script>
          +var allThemes = [
          +  { name: 'default' },
          +  { name: 'desert',
          +    authorHtml: '<a href="http://code.google.com/u/@VhJeSlJYBhVMWgF7/">'
          +        + 'techto&hellip;@<\/a>' },
          +  { name: 'sunburst', authorHtml: 'David Leibovic' },
          +  { name: 'sons-of-obsidian',
          +    authorHtml: '<a href="http://CodeTunnel.com/blog/post/71'
          +        + '/google-code-prettify-obsidian-theme">Alex Ford<\/a>' },
          +  { name: 'doxy', authorHtml: 'Robert Sperberg' },
          +];
          +
          +// Called by the demo.html frames loaded per theme to
          +// size the iframes properly and to allow them to tile
          +// the page nicely.
          +function adjustChildIframeSize(themeName, width, height) {
          +  if (typeof console != 'undefined') {
          +    try {
          +      console.log('adjusting ' + themeName + ' to ' + width + 'x' + height);
          +    } catch (ex) {
          +      // Don't bother logging log failure.
          +    }
          +  }
          +
          +  var container = document.getElementById(themeName).parentNode;
          +  container.style.width = (+width + 16) + 'px';
          +  container.style.display = 'inline-block';
          +  var iframe = container.getElementsByTagName('iframe')[0];
          +  iframe.style.height = (+height + 16) + 'px';
          +}
          +</script>
          +</head>
          +
          +<body>
          +<noscript>This page requires JavaScript</noscript>
          +
          +<h1>Gallery of themes for
          +<a href="http://code.google.com/p/google-code-prettify/">code prettify</a></h1>
          +<p>
          +Click on a theme name for a link to the file in revision control.
          +Print preview this page to see how the themes work on the printed page.
          +</p>
          +<script>(function () {
          +  // Produce an iframe per theme.
          +  // We pass the threme name to the iframe via its URI query, and
          +  // it loads prettify and the theme CSS, and calls back to this page
          +  // to resize the iframe.
          +  for (var i = 0, n = allThemes.length; i < n; ++i) {
          +    var theme = allThemes[i];
          +    if (!theme) { continue; }
          +    var iframe = document.createElement('iframe');
          +    iframe.name = theme.name;
          +    iframe.src = 'demo.html?' + encodeURIComponent(theme.name);
          +    var header = document.createElement('h2');
          +    header.id = theme.name;
          +    var linkToThemeSrc = document.createElement('a');
          +    linkToThemeSrc.href = (
          +        'http://code.google.com/p/google-code-prettify/source/browse/trunk/' +
          +        (theme.name === 'default'
          +         ? 'src/prettify.css'
          +         : 'styles/' + encodeURIComponent(theme.name) + '.css'));
          +    linkToThemeSrc.appendChild(document.createTextNode(
          +       theme.name.replace(/\b[a-z]/g,  // Capitalize first letter of each word
          +       function (letter) { return letter.toUpperCase(); })));
          +    header.appendChild(linkToThemeSrc);
          +
          +    var attribution;
          +    if (theme.authorHtml) {
          +      attribution = document.createElement('span');
          +      attribution.className = 'attribution';
          +      attribution.innerHTML = 'by ' + theme.authorHtml;
          +    }
          +
          +    var div = document.createElement('div');
          +    div.appendChild(header);
          +    if (attribution) { div.appendChild(attribution); }
          +    div.appendChild(iframe);
          +    document.body.appendChild(div);
          +  }
          +})()</script>
          +
          +</body></html>
          diff --git a/public/theme/google-code-prettify/styles/sons-of-obsidian.css b/public/theme/google-code-prettify/styles/sons-of-obsidian.css
          new file mode 100644
          index 0000000..8553db6
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/sons-of-obsidian.css
          @@ -0,0 +1,118 @@
          +/*
          + * Derived from einaros's Sons of Obsidian theme at
          + * http://studiostyl.es/schemes/son-of-obsidian by
          + * Alex Ford of CodeTunnel:
          + * http://CodeTunnel.com/blog/post/71/google-code-prettify-obsidian-theme
          + */
          +
          +.str
          +{
          +    color: #EC7600;
          +}
          +.kwd
          +{
          +    color: #93C763;
          +}
          +.com
          +{
          +    color: #66747B;
          +}
          +.typ
          +{
          +    color: #678CB1;
          +}
          +.lit
          +{
          +    color: #FACD22;
          +}
          +.pun
          +{
          +    color: #F1F2F3;
          +}
          +.pln
          +{
          +    color: #F1F2F3;
          +}
          +.tag
          +{
          +    color: #8AC763;
          +}
          +.atn
          +{
          +    color: #E0E2E4;
          +}
          +.atv
          +{
          +    color: #EC7600;
          +}
          +.dec
          +{
          +    color: purple;
          +}
          +pre.prettyprint
          +{
          +    border: 0px solid #888;
          +}
          +ol.linenums
          +{
          +    margin-top: 0;
          +    margin-bottom: 0;
          +}
          +.prettyprint {
          +    background: #000;
          +}
          +li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9
          +{
          +    color: #555;
          +    list-style-type: decimal;
          +}
          +li.L1, li.L3, li.L5, li.L7, li.L9 {
          +    background: #111;
          +}
          +@media print
          +{
          +    .str
          +    {
          +        color: #060;
          +    }
          +    .kwd
          +    {
          +        color: #006;
          +        font-weight: bold;
          +    }
          +    .com
          +    {
          +        color: #600;
          +        font-style: italic;
          +    }
          +    .typ
          +    {
          +        color: #404;
          +        font-weight: bold;
          +    }
          +    .lit
          +    {
          +        color: #044;
          +    }
          +    .pun
          +    {
          +        color: #440;
          +    }
          +    .pln
          +    {
          +        color: #000;
          +    }
          +    .tag
          +    {
          +        color: #006;
          +        font-weight: bold;
          +    }
          +    .atn
          +    {
          +        color: #404;
          +    }
          +    .atv
          +    {
          +        color: #060;
          +    }
          +}
          diff --git a/public/theme/google-code-prettify/styles/sunburst.css b/public/theme/google-code-prettify/styles/sunburst.css
          new file mode 100644
          index 0000000..011d33e
          --- /dev/null
          +++ b/public/theme/google-code-prettify/styles/sunburst.css
          @@ -0,0 +1,51 @@
          +/* Pretty printing styles. Used with prettify.js. */
          +/* Vim sunburst theme by David Leibovic */
          +
          +pre .str, code .str { color: #65B042; } /* string  - green */
          +pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
          +pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
          +pre .typ, code .typ { color: #89bdff; } /* type - light blue */
          +pre .lit, code .lit { color: #3387CC; } /* literal - blue */
          +pre .pun, code .pun { color: #fff; } /* punctuation - white */
          +pre .pln, code .pln { color: #fff; } /* plaintext - white */
          +pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
          +pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
          +pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
          +pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
          +
          +pre.prettyprint, code.prettyprint {
          +	background-color: #000;
          +	-moz-border-radius: 8px;
          +	-webkit-border-radius: 8px;
          +	-o-border-radius: 8px;
          +	-ms-border-radius: 8px;
          +	-khtml-border-radius: 8px;
          +	border-radius: 8px;
          +}
          +
          +pre.prettyprint {
          +	width: 95%;
          +	margin: 1em auto;
          +	padding: 1em;
          +	white-space: pre-wrap;
          +}
          +
          +
          +/* Specify class=linenums on a pre to get line numbering */
          +ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
          +li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
          +/* Alternate shading for lines */
          +li.L1,li.L3,li.L5,li.L7,li.L9 { }
          +
          +@media print {
          +  pre .str, code .str { color: #060; }
          +  pre .kwd, code .kwd { color: #006; font-weight: bold; }
          +  pre .com, code .com { color: #600; font-style: italic; }
          +  pre .typ, code .typ { color: #404; font-weight: bold; }
          +  pre .lit, code .lit { color: #044; }
          +  pre .pun, code .pun { color: #440; }
          +  pre .pln, code .pln { color: #000; }
          +  pre .tag, code .tag { color: #006; font-weight: bold; }
          +  pre .atn, code .atn { color: #404; }
          +  pre .atv, code .atv { color: #060; }
          +}
          diff --git a/public/theme/jQuery-Smart-Wizard/.bower.json b/public/theme/jQuery-Smart-Wizard/.bower.json
          new file mode 100644
          index 0000000..b2ccb70
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/.bower.json
          @@ -0,0 +1,14 @@
          +{
          +  "name": "jQuery-Smart-Wizard",
          +  "homepage": "https://github.com/mstratman/jQuery-Smart-Wizard",
          +  "version": "3.3.1",
          +  "_release": "3.3.1",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "3.3.1",
          +    "commit": "c12c06ba452805cebb5922abb9a5e43b6b22b567"
          +  },
          +  "_source": "https://github.com/mstratman/jQuery-Smart-Wizard.git",
          +  "_target": "^3.3.1",
          +  "_originalSource": "jQuery-Smart-Wizard"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jQuery-Smart-Wizard/README.md b/public/theme/jQuery-Smart-Wizard/README.md
          new file mode 100644
          index 0000000..ea4a52a
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/README.md
          @@ -0,0 +1,553 @@
          +# jQuery Smart Wizard
          +
          +Version 3 and later at
          +http://mstratman.github.com/jQuery-Smart-Wizard/
          +
          +Original version 2 and earlier are from
          +http://www.techlaboratory.net/products.php?product=smartwizard
          +
          +Licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
          +http://creativecommons.org/licenses/by-sa/3.0/
          +
          +## Getting Started
          +
          +Basic Usage:
          +
          +```javascript
          +$('#wizard').smartWizard();
          +```
          +
          +Using with option parameters:
          +
          +```javascript
          +$('#wizard').smartWizard({
          +  // Properties
          +    selected: 0,  // Selected Step, 0 = first step   
          +    keyNavigation: true, // Enable/Disable key navigation(left and right keys are used if enabled)
          +    enableAllSteps: false,  // Enable/Disable all steps on first load
          +    transitionEffect: 'fade', // Effect on navigation, none/fade/slide/slideleft
          +    contentURL:null, // specifying content url enables ajax content loading
          +    contentURLData:null, // override ajax query parameters
          +    contentCache:true, // cache step contents, if false content is fetched always from ajax url
          +    cycleSteps: false, // cycle step navigation
          +    enableFinishButton: false, // makes finish button enabled always
          +	hideButtonsOnDisabled: false, // when the previous/next/finish buttons are disabled, hide them instead
          +    errorSteps:[],    // array of step numbers to highlighting as error steps
          +    labelNext:'Next', // label for Next button
          +    labelPrevious:'Previous', // label for Previous button
          +    labelFinish:'Finish',  // label for Finish button        
          +    noForwardJumping:false,
          +  // Events
          +    onLeaveStep: null, // triggers when leaving a step
          +    onShowStep: null,  // triggers when showing a step
          +    onFinish: null  // triggers when Finish button is clicked
          +}); 
          +```
          +
          +Parameters and Events are describing on the table below.
          +
          +## Installing Smart Wizard 3
          +
          +### Step 1: Include Files
          +
          +Include the following JavaScript and css files on your page. 
          +
          +1. jQuery Library file (Don't include if you already have it on your page) 
          +2. CSS(Style Sheet) file for Smart Wizard 
          +3. JavaScript plug-in file for Smart Wizard
          +
          +To include the files copy and paste the below lines inside the head tag (`<head> </head>`) of your page. 
          +Make sure the paths to the files are correct with your working environment.
          +
          +```html
          +<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
          +<link href="smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="jquery.smartWizard.js"></script>
          +```
          +
          +### Step 2: The JavaScript
          +
          +Inititialize the Smart Wizard, copy and paste the below lines inside the head tag (`<head> </head>`) of your page
          +
          +```html
          +<script type="text/javascript">
          +  $(document).ready(function() {
          +      // Initialize Smart Wizard
          +        $('#wizard').smartWizard();
          +  }); 
          +</script>
          +```
          +
          +### Step 3: The HTML
          +
          +Finally the html, below shows the HTML markup for the Smart Wizard, You can customize it by including your on contents for each steps. 
          +Copy and paste the below html inside the body tag (`<body></body>`) of your page.
          +
          +```html
          +<div id="wizard" class="swMain">
          +  <ul>
          +    <li><a href="#step-1">
          +          <label class="stepNumber">1</label>
          +          <span class="stepDesc">
          +             Step 1<br />
          +             <small>Step 1 description</small>
          +          </span>
          +      </a></li>
          +    <li><a href="#step-2">
          +          <label class="stepNumber">2</label>
          +          <span class="stepDesc">
          +             Step 2<br />
          +             <small>Step 2 description</small>
          +          </span>
          +      </a></li>
          +    <li><a href="#step-3">
          +          <label class="stepNumber">3</label>
          +          <span class="stepDesc">
          +             Step 3<br />
          +             <small>Step 3 description</small>
          +          </span>                   
          +       </a></li>
          +    <li><a href="#step-4">
          +          <label class="stepNumber">4</label>
          +          <span class="stepDesc">
          +             Step 4<br />
          +             <small>Step 4 description</small>
          +          </span>                   
          +      </a></li>
          +  </ul>
          +  <div id="step-1">   
          +      <h2 class="StepTitle">Step 1 Content</h2>
          +       <!-- step content -->
          +  </div>
          +  <div id="step-2">
          +      <h2 class="StepTitle">Step 2 Content</h2> 
          +       <!-- step content -->
          +  </div>                      
          +  <div id="step-3">
          +      <h2 class="StepTitle">Step 3 Title</h2>   
          +       <!-- step content -->
          +  </div>
          +  <div id="step-4">
          +      <h2 class="StepTitle">Step 4 Title</h2>   
          +       <!-- step content -->                         
          +  </div>
          +</div>
          +```
          +
          +## More details & descriptions:
          +
          +### Load ajax content
          +
          +To load the content via ajax call you need to specify the property "*contentURL*". 
          +
          +example:
          +
          +```html
          +<script type="text/javascript">
          +  $(document).ready(function() {
          +      // Initialize Smart Wizard with ajax content load
          +        $('#wizard').smartWizard({contentURL:'services/ajaxcontents.php'});
          +  }); 
          +</script>
          +```
          +
          +When a step got focus the SmartWizard will post the step number to this contentURL and so you can write server side logic to format the content with the step number to be shown next. The response to this call should be the content of that step in HTML format. 
          +
          +To get the step number in php:
          +
          +```php
          +$step_number = $_REQUEST["step_number"];
          +```
          +
          +By default the SmartWizard will fetch the step content only on the first focus of the step, and cache the content and use it on the further focus of that step. But you can turn off the content cache by specifying the property "*contentCache*" to false. 
          +
          +example:
          +
          +```html
          +<script type="text/javascript">
          +  $(document).ready(function() {
          +      // Initialize Smart Wizard with ajax content load and cache disabled
          +        $('#wizard').smartWizard({contentURL:'services/ajaxcontents.php',contentCache:false});
          +  }); 
          +</script>
          +```
          +
          +Please see the ajax contents demo and following files on the source code to know how ajax content loading is implemented.
          +
          +1. *smartwizard2-ajax.htm*
          +2. *services/service.php*
          +
          +### Input validation
          +
          +Smart Wizard 3 does not have in-built form validation, but you can call you own validation function for each steps or for all steps with the events. Smart Wizard 3 has three events (*onLeaveStep*, *onShowStep*, *onFinish*). So you can write your step validation login in "*onLeaveStep*" event and on validation fail you can stay on that step by cancelling that event. Validation logic for all steps can be write on "*onFinish*" event and so you can avoid submitting the form with errors. 
          +
          +example:
          +
          +```html
          +<script type="text/javascript">
          +$(document).ready(function(){
          +    // Smart Wizard         
          +    $('#wizard').smartWizard({
          +        onLeaveStep:leaveAStepCallback,
          +        onFinish:onFinishCallback
          +    });
          +
          +    function leaveAStepCallback(obj, context){
          +        alert("Leaving step " + context.fromStep + " to go to step " + context.toStep);
          +        return validateSteps(context.fromStep); // return false to stay on step and true to continue navigation 
          +    }
          +
          +    function onFinishCallback(objs, context){
          +        if(validateAllSteps()){
          +            $('form').submit();
          +        }
          +    }
          +
          +    // Your Step validation logic
          +    function validateSteps(stepnumber){
          +        var isStepValid = true;
          +        // validate step 1
          +        if(stepnumber == 1){
          +            // Your step validation logic
          +            // set isStepValid = false if has errors
          +        }
          +        // ...      
          +    }
          +    function validateAllSteps(){
          +        var isStepValid = true;
          +        // all step validation logic     
          +        return isStepValid;
          +    }          
          +});
          +</script>
          +```
          +
          +Please see the step validation demo and *smartwizard2-validation.php* in the source code to know how step input validation is implemented.
          +
          +### Highlight error steps
          +
          +Highlighting error steps in Smart Wizard is easy
          +
          +```javascript
          +$('#wizard').smartWizard('setError',{stepnum:3,iserror:true});
          +```
          +
          +It takes two arguments 
          +
          +1. stepnum :- Step number to which is highlighted as error 
          +2. iserror :- true = set the step as error step and false = remove the error highlighting 
          +
          +example:
          +
          +```html
          +<script type="text/javascript">
          +    $(document).ready(function() {
          +        // Initialize Smart Wizard
          +        $('#wizard').smartWizard();
          +
          +        function setError(stepnumber){
          +            $('#wizard').smartWizard('setError',{stepnum:stepnumber,iserror:true});
          +        }
          +    }); 
          +</script>
          +```
          +
          +### Show message inside the wizard
          +
          +An in-built message box is available with Smart Wizard 3 and you can call it as like below
          +
          +```javascript
          +$('#wizard').smartWizard('showMessage','Hello! World');
          +```
          +
          +example:
          +
          +```html
          +<script type="text/javascript">
          +    $(document).ready(function() {
          +        // Initialize Smart Wizard
          +        $('#wizard').smartWizard();
          +
          +        function showWizardMessage(){
          +            var myMessage = 'Hello this is my message';
          +            // You can call this line wherever to show message inside the wizard
          +            $('#wizard').smartWizard('showMessage',myMessage);
          +        }
          +    }); 
          +</script>
          +```
          +
          +## Parameter Description:
          +
          +<table>
          +    <tr>
          +        <th>Parameter Name</th>
          +        <th>Description</th>
          +        <th>Values</th>
          +        <th>Default Value</th>
          +    </tr>
          +    <tr>
          +        <td><strong>selected</strong></td>
          +        <td>specify the initially-selected step</td>
          +        <td>integer</td>
          +        <td>0</td>
          +    </tr>
          +    <tr>
          +        <td><strong>keyNavigation</strong></td>
          +        <td>
          +            enable/disable key navigation.
          +            <br />
          +            left/right keys are used if enabled
          +        </td>
          +        <td>
          +            true = enabled
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>true</td>
          +    </tr>
          +    <tr>
          +        <td><strong>enableAllSteps</strong></td>
          +        <td>Enable/Disable all steps on first load</td>
          +        <td>
          +            true = enabled 
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>false</td>
          +    </tr>
          +    <tr>
          +        <td><strong>transitionEffect</strong></td>
          +        <td>Animation effect on step navigation</td>
          +        <td>none/fade/slide/slideleft</td>
          +        <td>fade</td>
          +    </tr>
          +    <tr>
          +        <td><strong>contentURL</strong></td>
          +        <td>Setting this property will enable ajax content loading, setting null will disable ajax contents</td>
          +        <td>null or a valid url</td>
          +        <td>null</td>
          +     <tr>
          +        <td><strong>contentURLData</strong></td>
          +        <td>with ContentURL set, use this property to override the ajax query parameters used when loading contents</td>
          +        <td>null or a function that takes the new step number and returns an object to override ajax parameters</td>
          +        <td>null</td>
          +    </tr>
          +    </tr>
          +    <tr>
          +        <td><strong>contentCache</strong></td>
          +        <td>This property will enable caching of the content on ajax content mode. So the contents are fetched from the url only on first load of the step</td>
          +        <td>
          +            true = enabled
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>true</td>
          +    </tr>
          +    <tr>
          +        <td><strong>cycleSteps</strong></td>
          +        <td>This property allows to cycle the navigation of steps</td>
          +        <td>
          +            true = enabled
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>false</td>
          +    </tr>
          +    <tr>
          +        <td><strong>enableFinishButton</strong></td>
          +        <td>This property will make the finish button enabled always</td>
          +        <td>
          +            true = enabled
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>false</td>
          +    </tr>
          +    <tr>
          +        <td><strong>hideButtonsOnDisabled</strong></td>
          +        <td>This property will hide the disabled buttons instead of just disabling them</td>
          +        <td>
          +            true = enabled
          +            <br />
          +            false= disabled
          +        </td>
          +        <td>false</td>
          +    </tr>
          +    <tr>
          +        <td><strong>errorSteps</strong></td>
          +        <td>an array of step numbers to highlighting as error steps</td>
          +        <td>
          +            array of integers
          +            <br />
          +            ex: [2,4]
          +        </td>
          +        <td>[]</td>
          +    </tr>
          +    <tr>
          +        <td><strong>labelNext</strong></td>
          +        <td>Label for Next button</td>
          +        <td>String</td>
          +        <td>Next</td>
          +    </tr>
          +    <tr>
          +        <td><strong>labelPrevious</strong></td>
          +        <td>Label for Previous button</td>
          +        <td>String</td>
          +        <td>Previous</td>
          +    </tr>
          +    <tr>
          +        <td><strong>labelFinish</strong></td>
          +        <td>Label for Finish button</td>
          +        <td>String</td>
          +        <td>Finish</td>
          +    </tr>
          +    <tr>
          +        <td><strong>noForwardJumping</strong></td>
          +        <td>If true, automatically disable all steps following the current step.
          +        <br />
          +        <br />
          +        e.g. If I am on step 4, and click step 1, steps 2-4 will be disabled and I cannot jump back to 3 or 4, and can only proceed "next" to step 2.</td>
          +        <td>Boolean</td>
          +        <td>false</td>
          +    </tr>
          +</table>
          + 
          +## Event Description:
          +
          +<table>
          +    <tr>
          +        <th>Event Name</th>
          +        <th>Description</th>
          +        <th>Parameters</th>
          +    </tr>
          +    <tr>
          +        <td><strong>onLeaveStep</strong></td>
          +        <td>
          +            Triggers when leaving a step.
          +            <br />
          +            <br />
          +            This is a decision making event, based on its function return value (true/false) the current step navigation can be cancelled.
          +        </td>
          +        <td>
          +            <strong>Object</strong>: object of the step anchor element.
          +            You can access the step number and step body element using this object.
          +            <br />
          +            <strong>Object</strong>: Context information with keys: <em>fromStep</em> and <em>toStep</em>
          +        </td>
          +    </tr>
          +    <tr>
          +        <td><strong>onShowStep</strong></td>
          +        <td>Triggers when showing a step.</td>
          +        <td>
          +            <strong>Object</strong>: object of the step anchor element.
          +            You can access the step number and step body element using this object.
          +            <br />
          +            <strong>Object</strong>: Context information with keys: <em>fromStep</em> and <em>toStep</em>
          +        </td>
          +    </tr>
          +    <tr>
          +        <td><strong>onFinish</strong></td>
          +        <td>
          +            Triggers when the Finish button is clicked.
          +            <br />
          +            <br />
          +            This is a decision making event, based on its function return value (true/false) the further actions can be cancelled.
          +            <br />
          +            <br />
          +            e.g.: If the validation fails we can cancel form submitting and can show an error message. Please see the form validation example for the implementation
          +            <br />
          +            <br />
          +            If this callback is not set, clicking the finish button will submit the form in which the wizard is placed, and do nothing if a parent form is not found.
          +        </td>
          +        <td>
          +            <strong>Object Array</strong>: an array of the object of all the step anchor elements
          +            <strong>Object</strong>: Context information with key: <em>fromStep</em> indicating which step the user was on when they clicked the finish button.
          +        </td>
          +    </tr>
          +</table>
          +
          +## Public methods:
          +
          +Methods can be called by calling `smartWizard("method_name", arguments)`
          +
          +For example, calling the *showMessage* method to display "Hello, World!" would
          +look like this:
          +
          +```javascript
          +$("#your_wizard").smartWizard('showMessage', 'Hello, World!');
          +```
          +
          +Here are the available methods:
          +<table>
          +    <tr>
          +        <th>Method Name</th>
          +        <th>Arguments</th>
          +        <th>Description</th>
          +    </tr>
          +    <tr>
          +        <td><strong>showMessage</strong></td>
          +        <td><strong>String</strong>: the message to show.</td>
          +        <td>Show a message in the action bar</td>
          +    </tr>
          +    <tr>
          +        <td><strong>hideMessage</strong></td>
          +        <td>None</td>
          +        <td>Hide the message in the action bar</td>
          +    </tr>
          +    <tr>
          +        <td><strong>showError</strong></td>
          +        <td><strong>Integer</strong>: the step number to highlight with an error.</td>
          +        <td>This is a convenience wrapper around <em>setError</em>.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>hideError</strong></td>
          +        <td><strong>Integer</strong>: the step number to un-highlight with an error.</td>
          +        <td>This is a convenience wrapper around <em>setError</em>.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>setError</strong></td>
          +        <td><strong>Object</strong>: with keys <em>stepnum</em> and <em>iserror</em>.</td>
          +        <td>Set or unset error status on a particular step. Passing <em>iserror</em> as true sets the error. Passing in a false value turns off the error.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>goForward</strong></td>
          +        <td>None</td>
          +        <td>Load the next step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>goBackward</strong></td>
          +        <td>None</td>
          +        <td>Load the previous step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>goToStep</strong></td>
          +        <td><strong>Integer</strong> - the step number to load</td>
          +        <td>Load the specified step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>enableStep</strong></td>
          +        <td><strong>Integer</strong> - the step number to enable</td>
          +        <td>Enable the specified step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>disableStep</strong></td>
          +        <td><strong>Integer</strong> - the step number to disable</td>
          +        <td>Disable the specified step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>currentStep</strong></td>
          +        <td>None</td>
          +        <td>Returns the number of the current step.</td>
          +    </tr>
          +    <tr>
          +        <td><strong>fixHeight</strong></td>
          +        <td>None</td>
          +        <td>
          +            Adjusts the height of the step contents for the current step.
          +            In general you won't need this, but it's useful if you are
          +            dynamically setting the contents.
          +        </td>
          +    </tr>
          +</table>
          + 
          diff --git a/public/theme/jQuery-Smart-Wizard/images/loader.gif b/public/theme/jQuery-Smart-Wizard/images/loader.gif
          new file mode 100644
          index 0000000..7e717cd
          Binary files /dev/null and b/public/theme/jQuery-Smart-Wizard/images/loader.gif differ
          diff --git a/public/theme/jQuery-Smart-Wizard/index.htm b/public/theme/jQuery-Smart-Wizard/index.htm
          new file mode 100644
          index 0000000..45b1c23
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/index.htm
          @@ -0,0 +1,191 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Basic Example  - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +    $(document).ready(function(){
          +    	// Smart Wizard 	
          +  		$('#wizard').smartWizard();
          +      
          +      function onFinishCallback(){
          +        $('#wizard').smartWizard('showMessage','Finish Clicked');
          +        //alert('Finish Clicked');
          +      }     
          +		});
          +</script>
          +
          +</head><body>
          +
          +<div class="demoHead">   
          +  <div>
          +    <div style="float:left;">
          +      <h1>Smart Wizard 3</h1>
          +      <h2>a javascript jQuery wizard control plugin</h2>
          +    </div>
          +    <div style="float:right;" class="demoNavLinks">
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master" class="btn">Download</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/blob/master/README.md" class="btn">Documentation</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard" class="btn">Github</a>
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +  <div style="margin-top:15px;">
          +    <div style="float:left"><h3>Examples:</h3></div>
          +    <div style="float:left" class="demoExampleLinks">
          +      <a href="index.htm" class="btn selected">Basic Example</a>
          +      <a href="smartwizard2-vertical.htm" class="btn">Vertical Style</a>
          +      <a href="smartwizard2-multiple.htm" class="btn">Multiple Wizards</a>
          +      <a href="smartwizard2-ajax.htm" class="btn">Ajax Contents</a>
          +      <a href="smartwizard2-validation.htm" class="btn">Step Validation</a>  
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td> 
          +<!-- Smart Wizard -->
          +        <h2>Example: Basic Wizard</h2> 
          +  		<div id="wizard" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Step 1<br />
          +                   <small>Step 1 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Step 2<br />
          +                   <small>Step 2 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Step 3<br />
          +                   <small>Step 3 description</small>
          +                </span>                   
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">4</label>
          +                <span class="stepDesc">
          +                   Step 4<br />
          +                   <small>Step 4 description</small>
          +                </span>                   
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1 Content</h2>
          +            <ul type="disk">
          +  				    <li>List 1</li>
          +  				    <li>List 2</li>
          +            </ul>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p> 
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>                			
          +        </div>
          +  		</div>
          +<!-- End SmartWizard Content -->  		
          + 		
          +</td></tr>
          +</table>
          +    		
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/js/jquery-1.4.2.min.js b/public/theme/jQuery-Smart-Wizard/js/jquery-1.4.2.min.js
          new file mode 100644
          index 0000000..7c24308
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/js/jquery-1.4.2.min.js
          @@ -0,0 +1,154 @@
          +/*!
          + * jQuery JavaScript Library v1.4.2
          + * http://jquery.com/
          + *
          + * Copyright 2010, John Resig
          + * Dual licensed under the MIT or GPL Version 2 licenses.
          + * http://jquery.org/license
          + *
          + * Includes Sizzle.js
          + * http://sizzlejs.com/
          + * Copyright 2010, The Dojo Foundation
          + * Released under the MIT, BSD, and GPL Licenses.
          + *
          + * Date: Sat Feb 13 22:33:48 2010 -0500
          + */
          +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
          +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
          +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
          +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
          +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
          +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
          +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
          +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
          +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
          +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
          +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
          +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
          +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
          +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
          +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
          +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
          +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
          +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
          +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
          +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
          +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
          +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
          +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
          +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
          +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
          +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
          +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
          +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
          +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
          +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
          +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
          +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
          +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
          +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
          +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
          +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
          +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
          +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
          +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
          +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
          +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
          +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
          +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
          +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
          +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
          +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
          +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
          +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
          +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
          +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
          +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
          +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
          +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
          +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
          +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
          +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
          +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
          +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
          +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
          +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
          +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
          +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
          +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
          +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
          +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
          +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
          +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
          +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
          +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
          +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
          +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
          +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
          +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
          +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
          +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
          +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
          +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
          +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
          +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
          +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
          +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
          +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
          +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
          +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
          +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
          +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
          +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
          +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
          +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
          +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
          +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
          +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
          +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
          +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
          +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
          +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
          +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
          +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
          +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
          +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
          +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
          +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
          +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
          +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
          +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
          +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
          +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
          +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
          +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
          +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
          +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
          +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
          +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
          +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
          +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
          +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
          +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
          +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
          +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
          +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
          +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
          +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
          +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
          +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
          +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
          +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
          +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
          +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
          +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
          +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
          +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
          +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
          +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
          +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
          +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
          +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
          +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
          +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
          +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
          diff --git a/public/theme/jQuery-Smart-Wizard/js/jquery.smartWizard.js b/public/theme/jQuery-Smart-Wizard/js/jquery.smartWizard.js
          new file mode 100644
          index 0000000..5f6b70c
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/js/jquery.smartWizard.js
          @@ -0,0 +1,449 @@
          +/*
          + * SmartWizard 3.3.1 plugin
          + * jQuery Wizard control Plugin
          + * by Dipu
          + *
          + * Refactored and extended:
          + * https://github.com/mstratman/jQuery-Smart-Wizard
          + *
          + * Original URLs:
          + * http://www.techlaboratory.net
          + * http://tech-laboratory.blogspot.com
          + */
          +
          +function SmartWizard(target, options) {
          +    this.target       = target;
          +    this.options      = options;
          +    this.curStepIdx   = options.selected;
          +    this.steps        = $(target).children("ul").children("li").children("a"); // Get all anchors
          +    this.contentWidth = 0;
          +    this.msgBox = $('<div class="msgBox"><div class="content"></div><a href="#" class="close">X</a></div>');
          +    this.elmStepContainer = $('<div></div>').addClass("stepContainer");
          +    this.loader = $('<div>Loading</div>').addClass("loader");
          +    this.buttons = {
          +        next : $('<a>'+options.labelNext+'</a>').attr("href","#").addClass("buttonNext"),
          +        previous : $('<a>'+options.labelPrevious+'</a>').attr("href","#").addClass("buttonPrevious"),
          +        finish  : $('<a>'+options.labelFinish+'</a>').attr("href","#").addClass("buttonFinish")
          +    };
          +
          +    /*
          +     * Private functions
          +     */
          +
          +    var _init = function($this) {
          +        var elmActionBar = $('<div></div>').addClass("actionBar");
          +        elmActionBar.append($this.msgBox);
          +        $('.close',$this.msgBox).click(function() {
          +            $this.msgBox.fadeOut("normal");
          +            return false;
          +        });
          +
          +        var allDivs = $this.target.children('div');
          +        $this.target.children('ul').addClass("anchor");
          +        allDivs.addClass("content");
          +
          +        // highlight steps with errors
          +        if($this.options.errorSteps && $this.options.errorSteps.length>0){
          +            $.each($this.options.errorSteps, function(i, n){
          +                $this.setError({ stepnum: n, iserror:true });
          +            });
          +        }
          +
          +        $this.elmStepContainer.append(allDivs);
          +        elmActionBar.append($this.loader);
          +        $this.target.append($this.elmStepContainer);
          +        elmActionBar.append($this.buttons.finish)
          +                    .append($this.buttons.next)
          +                    .append($this.buttons.previous);
          +        $this.target.append(elmActionBar);
          +        this.contentWidth = $this.elmStepContainer.width();
          +
          +        $($this.buttons.next).click(function() {
          +            $this.goForward();
          +            return false;
          +        });
          +        $($this.buttons.previous).click(function() {
          +            $this.goBackward();
          +            return false;
          +        });
          +        $($this.buttons.finish).click(function() {
          +            if(!$(this).hasClass('buttonDisabled')){
          +                if($.isFunction($this.options.onFinish)) {
          +                    var context = { fromStep: $this.curStepIdx + 1 };
          +                    if(!$this.options.onFinish.call(this,$($this.steps), context)){
          +                        return false;
          +                    }
          +                }else{
          +                    var frm = $this.target.parents('form');
          +                    if(frm && frm.length){
          +                        frm.submit();
          +                    }
          +                }
          +            }
          +            return false;
          +        });
          +
          +        $($this.steps).bind("click", function(e){
          +            if($this.steps.index(this) == $this.curStepIdx){
          +                return false;
          +            }
          +            var nextStepIdx = $this.steps.index(this);
          +            var isDone = $this.steps.eq(nextStepIdx).attr("isDone") - 0;
          +            if(isDone == 1){
          +                _loadContent($this, nextStepIdx);
          +            }
          +            return false;
          +        });
          +
          +        // Enable keyboard navigation
          +        if($this.options.keyNavigation){
          +            $(document).keyup(function(e){
          +                if(e.which==39){ // Right Arrow
          +                    $this.goForward();
          +                }else if(e.which==37){ // Left Arrow
          +                    $this.goBackward();
          +                }
          +            });
          +        }
          +        //  Prepare the steps
          +        _prepareSteps($this);
          +        // Show the first slected step
          +        _loadContent($this, $this.curStepIdx);
          +    };
          +
          +    var _prepareSteps = function($this) {
          +        if(! $this.options.enableAllSteps){
          +            $($this.steps, $this.target).removeClass("selected").removeClass("done").addClass("disabled");
          +            $($this.steps, $this.target).attr("isDone",0);
          +        }else{
          +            $($this.steps, $this.target).removeClass("selected").removeClass("disabled").addClass("done");
          +            $($this.steps, $this.target).attr("isDone",1);
          +        }
          +
          +        $($this.steps, $this.target).each(function(i){
          +            $($(this).attr("href").replace(/^.+#/, '#'), $this.target).hide();
          +            $(this).attr("rel",i+1);
          +        });
          +    };
          +
          +    var _step = function ($this, selStep) {
          +        return $(
          +            $(selStep, $this.target).attr("href").replace(/^.+#/, '#'),
          +            $this.target
          +        );
          +    };
          +
          +    var _loadContent = function($this, stepIdx) {
          +        var selStep = $this.steps.eq(stepIdx);
          +        var ajaxurl = $this.options.contentURL;
          +        var ajaxurl_data = $this.options.contentURLData;
          +        var hasContent = selStep.data('hasContent');
          +        var stepNum = stepIdx+1;
          +        if (ajaxurl && ajaxurl.length>0) {
          +            if ($this.options.contentCache && hasContent) {
          +                _showStep($this, stepIdx);
          +            } else {
          +                var ajax_args = {
          +                    url: ajaxurl,
          +                    type: "POST",
          +                    data: ({step_number : stepNum}),
          +                    dataType: "text",
          +                    beforeSend: function(){
          +                        $this.loader.show();
          +                    },
          +                    error: function(){
          +                        $this.loader.hide();
          +                    },
          +                    success: function(res){
          +                        $this.loader.hide();
          +                        if(res && res.length>0){
          +                            selStep.data('hasContent',true);
          +                            _step($this, selStep).html(res);
          +                            _showStep($this, stepIdx);
          +                        }
          +                    }
          +                };
          +                if (ajaxurl_data) {
          +                    ajax_args = $.extend(ajax_args, ajaxurl_data(stepNum));
          +                }
          +                $.ajax(ajax_args);
          +            }
          +        }else{
          +            _showStep($this,stepIdx);
          +        }
          +    };
          +
          +    var _showStep = function($this, stepIdx) {
          +        var selStep = $this.steps.eq(stepIdx);
          +        var curStep = $this.steps.eq($this.curStepIdx);
          +        if(stepIdx != $this.curStepIdx){
          +            if($.isFunction($this.options.onLeaveStep)) {
          +                var context = { fromStep: $this.curStepIdx+1, toStep: stepIdx+1 };
          +                if (! $this.options.onLeaveStep.call($this,$(curStep), context)){
          +                    return false;
          +                }
          +            }
          +        }
          +        $this.elmStepContainer.height(_step($this, selStep).outerHeight());
          +        var prevCurStepIdx = $this.curStepIdx;
          +        $this.curStepIdx =  stepIdx;
          +        if ($this.options.transitionEffect == 'slide'){
          +            _step($this, curStep).slideUp("fast",function(e){
          +                _step($this, selStep).slideDown("fast");
          +                _setupStep($this,curStep,selStep);
          +            });
          +        } else if ($this.options.transitionEffect == 'fade'){
          +            _step($this, curStep).fadeOut("fast",function(e){
          +                _step($this, selStep).fadeIn("fast");
          +                _setupStep($this,curStep,selStep);
          +            });
          +        } else if ($this.options.transitionEffect == 'slideleft'){
          +            var nextElmLeft = 0;
          +            var nextElmLeft1 = null;
          +            var nextElmLeft = null;
          +            var curElementLeft = 0;
          +            if(stepIdx > prevCurStepIdx){
          +                nextElmLeft1 = $this.contentWidth + 10;
          +                nextElmLeft2 = 0;
          +                curElementLeft = 0 - _step($this, curStep).outerWidth();
          +            } else {
          +                nextElmLeft1 = 0 - _step($this, selStep).outerWidth() + 20;
          +                nextElmLeft2 = 0;
          +                curElementLeft = 10 + _step($this, curStep).outerWidth();
          +            }
          +            if (stepIdx == prevCurStepIdx) {
          +                nextElmLeft1 = $($(selStep, $this.target).attr("href"), $this.target).outerWidth() + 20;
          +                nextElmLeft2 = 0;
          +                curElementLeft = 0 - $($(curStep, $this.target).attr("href"), $this.target).outerWidth();
          +            } else {
          +                $($(curStep, $this.target).attr("href"), $this.target).animate({left:curElementLeft},"fast",function(e){
          +                    $($(curStep, $this.target).attr("href"), $this.target).hide();
          +                });
          +            }
          +
          +            _step($this, selStep).css("left",nextElmLeft1).show().animate({left:nextElmLeft2},"fast",function(e){
          +                _setupStep($this,curStep,selStep);
          +            });
          +        } else {
          +            _step($this, curStep).hide();
          +            _step($this, selStep).show();
          +            _setupStep($this,curStep,selStep);
          +        }
          +        return true;
          +    };
          +
          +    var _setupStep = function($this, curStep, selStep) {
          +        $(curStep, $this.target).removeClass("selected");
          +        $(curStep, $this.target).addClass("done");
          +
          +        $(selStep, $this.target).removeClass("disabled");
          +        $(selStep, $this.target).removeClass("done");
          +        $(selStep, $this.target).addClass("selected");
          +
          +        $(selStep, $this.target).attr("isDone",1);
          +
          +        _adjustButton($this);
          +
          +        if($.isFunction($this.options.onShowStep)) {
          +            var context = { fromStep: parseInt($(curStep).attr('rel')), toStep: parseInt($(selStep).attr('rel')) };
          +            if(! $this.options.onShowStep.call(this,$(selStep),context)){
          +                return false;
          +            }
          +        }
          +        if ($this.options.noForwardJumping) {
          +            // +2 == +1 (for index to step num) +1 (for next step)
          +            for (var i = $this.curStepIdx + 2; i <= $this.steps.length; i++) {
          +                $this.disableStep(i);
          +            }
          +        }
          +    };
          +
          +    var _adjustButton = function($this) {
          +        if (! $this.options.cycleSteps){
          +            if (0 >= $this.curStepIdx) {
          +                $($this.buttons.previous).addClass("buttonDisabled");
          +				if ($this.options.hideButtonsOnDisabled) {
          +                    $($this.buttons.previous).hide();
          +                }
          +            }else{
          +                $($this.buttons.previous).removeClass("buttonDisabled");
          +                if ($this.options.hideButtonsOnDisabled) {
          +                    $($this.buttons.previous).show();
          +                }
          +            }
          +            if (($this.steps.length-1) <= $this.curStepIdx){
          +                $($this.buttons.next).addClass("buttonDisabled");
          +                if ($this.options.hideButtonsOnDisabled) {
          +                    $($this.buttons.next).hide();
          +                }
          +            }else{
          +                $($this.buttons.next).removeClass("buttonDisabled");
          +                if ($this.options.hideButtonsOnDisabled) {
          +                    $($this.buttons.next).show();
          +                }
          +            }
          +        }
          +        // Finish Button
          +        if (! $this.steps.hasClass('disabled') || $this.options.enableFinishButton){
          +            $($this.buttons.finish).removeClass("buttonDisabled");
          +            if ($this.options.hideButtonsOnDisabled) {
          +                $($this.buttons.finish).show();
          +            }
          +        }else{
          +            $($this.buttons.finish).addClass("buttonDisabled");
          +            if ($this.options.hideButtonsOnDisabled) {
          +                $($this.buttons.finish).hide();
          +            }
          +        }
          +    };
          +
          +    /*
          +     * Public methods
          +     */
          +
          +    SmartWizard.prototype.goForward = function(){
          +        var nextStepIdx = this.curStepIdx + 1;
          +        if (this.steps.length <= nextStepIdx){
          +            if (! this.options.cycleSteps){
          +                return false;
          +            }
          +            nextStepIdx = 0;
          +        }
          +        _loadContent(this, nextStepIdx);
          +    };
          +
          +    SmartWizard.prototype.goBackward = function(){
          +        var nextStepIdx = this.curStepIdx-1;
          +        if (0 > nextStepIdx){
          +            if (! this.options.cycleSteps){
          +                return false;
          +            }
          +            nextStepIdx = this.steps.length - 1;
          +        }
          +        _loadContent(this, nextStepIdx);
          +    };
          +
          +    SmartWizard.prototype.goToStep = function(stepNum){
          +        var stepIdx = stepNum - 1;
          +        if (stepIdx >= 0 && stepIdx < this.steps.length) {
          +            _loadContent(this, stepIdx);
          +        }
          +    };
          +    SmartWizard.prototype.enableStep = function(stepNum) {
          +        var stepIdx = stepNum - 1;
          +        if (stepIdx == this.curStepIdx || stepIdx < 0 || stepIdx >= this.steps.length) {
          +            return false;
          +        }
          +        var step = this.steps.eq(stepIdx);
          +        $(step, this.target).attr("isDone",1);
          +        $(step, this.target).removeClass("disabled").removeClass("selected").addClass("done");
          +    }
          +    SmartWizard.prototype.disableStep = function(stepNum) {
          +        var stepIdx = stepNum - 1;
          +        if (stepIdx == this.curStepIdx || stepIdx < 0 || stepIdx >= this.steps.length) {
          +            return false;
          +        }
          +        var step = this.steps.eq(stepIdx);
          +        $(step, this.target).attr("isDone",0);
          +        $(step, this.target).removeClass("done").removeClass("selected").addClass("disabled");
          +    }
          +    SmartWizard.prototype.currentStep = function() {
          +        return this.curStepIdx + 1;
          +    }
          +
          +    SmartWizard.prototype.showMessage = function (msg) {
          +        $('.content', this.msgBox).html(msg);
          +        this.msgBox.show();
          +    }
          +    SmartWizard.prototype.hideMessage = function () {
          +        this.msgBox.fadeOut("normal");
          +    }
          +    SmartWizard.prototype.showError = function(stepnum) {
          +        this.setError(stepnum, true);
          +    }
          +    SmartWizard.prototype.hideError = function(stepnum) {
          +        this.setError(stepnum, false);
          +    }
          +    SmartWizard.prototype.setError = function(stepnum,iserror) {
          +        if (typeof stepnum == "object") {
          +            iserror = stepnum.iserror;
          +            stepnum = stepnum.stepnum;
          +        }
          +
          +        if (iserror){
          +            $(this.steps.eq(stepnum-1), this.target).addClass('error')
          +        }else{
          +            $(this.steps.eq(stepnum-1), this.target).removeClass("error");
          +        }
          +    }
          +
          +    SmartWizard.prototype.fixHeight = function(){
          +        var height = 0;
          +
          +        var selStep = this.steps.eq(this.curStepIdx);
          +        var stepContainer = _step(this, selStep);
          +        stepContainer.children().each(function() {
          +            height += $(this).outerHeight();
          +        });
          +
          +        // These values (5 and 20) are experimentally chosen.
          +        stepContainer.height(height + 5);
          +        this.elmStepContainer.height(height + 20);
          +    }
          +
          +    _init(this);
          +};
          +
          +
          +
          +(function($){
          +
          +$.fn.smartWizard = function(method) {
          +    var args = arguments;
          +    var rv = undefined;
          +    var allObjs = this.each(function() {
          +        var wiz = $(this).data('smartWizard');
          +        if (typeof method == 'object' || ! method || ! wiz) {
          +            var options = $.extend({}, $.fn.smartWizard.defaults, method || {});
          +            if (! wiz) {
          +                wiz = new SmartWizard($(this), options);
          +                $(this).data('smartWizard', wiz);
          +            }
          +        } else {
          +            if (typeof SmartWizard.prototype[method] == "function") {
          +                rv = SmartWizard.prototype[method].apply(wiz, Array.prototype.slice.call(args, 1));
          +                return rv;
          +            } else {
          +                $.error('Method ' + method + ' does not exist on jQuery.smartWizard');
          +            }
          +        }
          +    });
          +    if (rv === undefined) {
          +        return allObjs;
          +    } else {
          +        return rv;
          +    }
          +};
          +
          +// Default Properties and Events
          +$.fn.smartWizard.defaults = {
          +    selected: 0,  // Selected Step, 0 = first step
          +    keyNavigation: true, // Enable/Disable key navigation(left and right keys are used if enabled)
          +    enableAllSteps: false,
          +    transitionEffect: 'fade', // Effect on navigation, none/fade/slide/slideleft
          +    contentURL:null, // content url, Enables Ajax content loading
          +    contentCache:true, // cache step contents, if false content is fetched always from ajax url
          +    cycleSteps: false, // cycle step navigation
          +    enableFinishButton: false, // make finish button enabled always
          +	hideButtonsOnDisabled: false, // when the previous/next/finish buttons are disabled, hide them instead?
          +    errorSteps:[],    // Array Steps with errors
          +    labelNext:'Next',
          +    labelPrevious:'Previous',
          +    labelFinish:'Finish',
          +    noForwardJumping: false,
          +    onLeaveStep: null, // triggers when leaving a step
          +    onShowStep: null,  // triggers when showing a step
          +    onFinish: null  // triggers when Finish button is clicked
          +};
          +
          +})(jQuery);
          diff --git a/public/theme/jQuery-Smart-Wizard/more_examples/services/service.php b/public/theme/jQuery-Smart-Wizard/more_examples/services/service.php
          new file mode 100644
          index 0000000..576c99d
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/more_examples/services/service.php
          @@ -0,0 +1,65 @@
          +<?
          +  $action = $_REQUEST["action"];
          +  switch($action){
          +      case "1":
          +          getContent();
          +        break;                     
          +      default:
          +        break;
          +  }
          +
          + function getContent(){
          +   //sleep(1); 
          +   $step_number = $_REQUEST["step_number"]; 
          +   $html = '<h2 class="StepTitle">Step '.$step_number.' Content</h2>';
          +   if($step_number == 1){
          +      $html .='<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>';
          +   }elseif($step_number == 2){
          +      $html .='<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>';
          +   }elseif($step_number == 3){
          +      $html .='<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>';
          +   }else{
          +      $html .='<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>';
          +   }
          +   echo $html;
          + }
          +
          +?>
          \ No newline at end of file
          diff --git a/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-ajax.htm b/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-ajax.htm
          new file mode 100644
          index 0000000..57d65c1
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-ajax.htm
          @@ -0,0 +1,163 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Ajax Contents Example - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +    $(document).ready(function(){
          +    	// Smart Wizard    	
          +  		$('#wizard').smartWizard({contentURL:'services/service.php?action=1',transitionEffect:'slideleft',onFinish:onFinishCallback});
          +      
          +      function onFinishCallback(){
          +        alert('Finish Called');
          +      }     
          +		});
          +</script>
          +</head><body>
          +
          +<div class="demoHead">   
          +  <h2>Ajax Contents Example</h2> 
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td> 
          +<!-- Smart Wizard -->
          +  		<div id="wizard" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Step 1<br />
          +                   <small>Step 1 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Step 2<br />
          +                   <small>Step 2 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Step 3<br />
          +                   <small>Step 3 description</small>
          +                </span>                   
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">4</label>
          +                <span class="stepDesc">
          +                   Step 4<br />
          +                   <small>Step 4 description</small>
          +                </span>                   
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1 Content</h2>
          +            <ul type="disk">
          +  				    <li>List 1</li>
          +  				    <li>List 2</li>
          +            </ul>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p> 
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>                			
          +        </div>
          +  		</div>
          +<!-- End SmartWizard Content -->  		
          +
          +</td></tr>
          +</table>  		
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-validation.php b/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-validation.php
          new file mode 100644
          index 0000000..f97b7c0
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/more_examples/smartwizard2-validation.php
          @@ -0,0 +1,319 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Step Validation Example - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard-2.0.min.js"></script>
          +
          +<script type="text/javascript">
          +   
          +    $(document).ready(function(){
          +    	// Smart Wizard     	
          +  		$('#wizard').smartWizard({transitionEffect:'slideleft',onLeaveStep:leaveAStepCallback,onFinish:onFinishCallback,enableFinishButton:true});
          +
          +      function leaveAStepCallback(obj){
          +        var step_num= obj.attr('rel');
          +        return validateSteps(step_num);
          +      }
          +      
          +      function onFinishCallback(){
          +       if(validateAllSteps()){
          +        $('form').submit();
          +       }
          +      }
          +            
          +		});
          +	   
          +    function validateAllSteps(){
          +       var isStepValid = true;
          +       
          +       if(validateStep1() == false){
          +         isStepValid = false;
          +         $('#wizard').smartWizard('setError',{stepnum:1,iserror:true});         
          +       }else{
          +         $('#wizard').smartWizard('setError',{stepnum:1,iserror:false});
          +       }
          +       
          +       if(validateStep3() == false){
          +         isStepValid = false;
          +         $('#wizard').smartWizard('setError',{stepnum:3,iserror:true});         
          +       }else{
          +         $('#wizard').smartWizard('setError',{stepnum:3,iserror:false});
          +       }
          +       
          +       if(!isStepValid){
          +          $('#wizard').smartWizard('showMessage','Please correct the errors in the steps and continue');
          +       }
          +              
          +       return isStepValid;
          +    } 	
          +		
          +		
          +		function validateSteps(step){
          +		  var isStepValid = true;
          +      // validate step 1
          +      if(step == 1){
          +        if(validateStep1() == false ){
          +          isStepValid = false; 
          +          $('#wizard').smartWizard('showMessage','Please correct the errors in step'+step+ ' and click next.');
          +          $('#wizard').smartWizard('setError',{stepnum:step,iserror:true});         
          +        }else{
          +          $('#wizard').smartWizard('setError',{stepnum:step,iserror:false});
          +        }
          +      }
          +      
          +      // validate step3
          +      if(step == 3){
          +        if(validateStep3() == false ){
          +          isStepValid = false; 
          +          $('#wizard').smartWizard('showMessage','Please correct the errors in step'+step+ ' and click next.');
          +          $('#wizard').smartWizard('setError',{stepnum:step,iserror:true});         
          +        }else{
          +          $('#wizard').smartWizard('setError',{stepnum:step,iserror:false});
          +        }
          +      }
          +      
          +      return isStepValid;
          +    }
          +		
          +		function validateStep1(){
          +       var isValid = true; 
          +       // Validate Username
          +       var un = $('#username').val();
          +       if(!un && un.length <= 0){
          +         isValid = false;
          +         $('#msg_username').html('Please fill username').show();
          +       }else{
          +         $('#msg_username').html('').hide();
          +       }
          +       
          +       // validate password
          +       var pw = $('#password').val();
          +       if(!pw && pw.length <= 0){
          +         isValid = false;
          +         $('#msg_password').html('Please fill password').show();         
          +       }else{
          +         $('#msg_password').html('').hide();
          +       }
          +       
          +       // validate confirm password
          +       var cpw = $('#cpassword').val();
          +       if(!cpw && cpw.length <= 0){
          +         isValid = false;
          +         $('#msg_cpassword').html('Please fill confirm password').show();         
          +       }else{
          +         $('#msg_cpassword').html('').hide();
          +       }  
          +       
          +       // validate password match
          +       if(pw && pw.length > 0 && cpw && cpw.length > 0){
          +         if(pw != cpw){
          +           isValid = false;
          +           $('#msg_cpassword').html('Password mismatch').show();            
          +         }else{
          +           $('#msg_cpassword').html('').hide();
          +         }
          +       }
          +       return isValid;
          +    }
          +    
          +    function validateStep3(){
          +      var isValid = true;    
          +      //validate email  email
          +      var email = $('#email').val();
          +       if(email && email.length > 0){
          +         if(!isValidEmailAddress(email)){
          +           isValid = false;
          +           $('#msg_email').html('Email is invalid').show();           
          +         }else{
          +          $('#msg_email').html('').hide();
          +         }
          +       }else{
          +         isValid = false;
          +         $('#msg_email').html('Please enter email').show();
          +       }       
          +      return isValid;
          +    }
          +    
          +    // Email Validation
          +    function isValidEmailAddress(emailAddress) {
          +      var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
          +      return pattern.test(emailAddress);
          +    } 
          +		
          +		
          +</script>
          +</head><body>
          +
          +<div class="demoHead">   
          +  <h2>Step Validation Example</h2>
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td>
          +<?
          +   if(isset($_REQUEST['issubmit'])){
          +      echo "<strong>form is sumbitted</strong>";
          +   }
          +
          +?>
          + 
          +<form action="#" method="POST">
          +  <input type='hidden' name="issubmit" value="1">
          +<!-- Tabs -->
          +  		<div id="wizard" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Account Details<br />
          +                   <small>Fill your account details</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Profile Details<br />
          +                   <small>Fill your profile details</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Contact Details<br />
          +                   <small>Fill your contact details</small>
          +                </span>
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Other Details<br />
          +                   <small>Fill your other details</small>
          +                </span>
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1: Account Details</h2>
          +            <table cellspacing="3" cellpadding="3" align="center">
          +          			<tr>
          +                    	<td align="center" colspan="3">&nbsp;</td>
          +          			</tr>        
          +          			<tr>
          +                    	<td align="right">Username :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="username" name="username" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_username"></span>&nbsp;</td>
          +          			</tr>
          +          			<tr>
          +                    	<td align="right">Password :</td>
          +                    	<td align="left">
          +                    	  <input type="password" id="password" name="password" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_password"></span>&nbsp;</td>
          +          			</tr> 
          +                <tr>
          +                    	<td align="right">Confirm Password :</td>
          +                    	<td align="left">
          +                    	  <input type="password" id="cpassword" name="cpassword" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_cpassword"></span>&nbsp;</td>
          +          			</tr>                                   			
          +  			   </table>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2: Profile Details</h2>	
          +            <table cellspacing="3" cellpadding="3" align="center">
          +          			<tr>
          +                    	<td align="center" colspan="3">&nbsp;</td>
          +          			</tr>        
          +          			<tr>
          +                    	<td align="right">First Name :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="firstname" name="firstname" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_firstname"></span>&nbsp;</td>
          +          			</tr>
          +          			<tr>
          +                    	<td align="right">Last Name :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="lastname" name="lastname" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_lastname"></span>&nbsp;</td>
          +          			</tr> 
          +          			<tr>
          +                    	<td align="right">Gender :</td>
          +                    	<td align="left">
          +                        <select id="gender" name="gender" class="txtBox">
          +                          <option value="">-select-</option>
          +                          <option value="Female">Female</option>
          +                          <option value="Male">Male</option>                 
          +                        </select>
          +                      </td>
          +                    	<td align="left"><span id="msg_gender"></span>&nbsp;</td>
          +          			</tr>                                   			
          +  			   </table>        
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3: Contact Details</h2>	
          +            <table cellspacing="3" cellpadding="3" align="center">
          +          			<tr>
          +                    	<td align="center" colspan="3">&nbsp;</td>
          +          			</tr>        
          +          			<tr>
          +                    	<td align="right">Email :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="email" name="email" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_email"></span>&nbsp;</td>
          +          			</tr>
          +          			<tr>
          +                    	<td align="right">Phone :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="phone" name="phone" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_phone"></span>&nbsp;</td>
          +          			</tr>          			
          +          			<tr>
          +                    	<td align="right">Address :</td>
          +                    	<td align="left">
          +                            <textarea name="address" id="address" class="txtBox" rows="3"></textarea>
          +                      </td>
          +                    	<td align="left"><span id="msg_address"></span>&nbsp;</td>
          +          			</tr>                                   			
          +  			   </table>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4: Other Details</h2>	
          +            <table cellspacing="3" cellpadding="3" align="center">
          +          			<tr>
          +                    	<td align="center" colspan="3">&nbsp;</td>
          +          			</tr>        
          +          			<tr>
          +                    	<td align="right">Hobbies :</td>
          +                    	<td align="left">
          +                    	  <input type="text" id="phone" name="phone" value="" class="txtBox">
          +                      </td>
          +                    	<td align="left"><span id="msg_phone"></span>&nbsp;</td>
          +          			</tr>          			
          +          			<tr>
          +                    	<td align="right">About You :</td>
          +                    	<td align="left">
          +                            <textarea name="address" id="address" class="txtBox" rows="5"></textarea>
          +                      </td>
          +                    	<td align="left"><span id="msg_address"></span>&nbsp;</td>
          +          			</tr>                                   			
          +  			   </table>                 			
          +        </div>
          +  		</div>
          +<!-- End SmartWizard Content -->  		
          +</form> 
          +  		
          +</td></tr>
          +</table> 
          +
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/smartwizard2-ajax.htm b/public/theme/jQuery-Smart-Wizard/smartwizard2-ajax.htm
          new file mode 100644
          index 0000000..e6076bd
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/smartwizard2-ajax.htm
          @@ -0,0 +1,59 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Basic Example  - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +</script>
          +
          +</head><body>
          +
          +<div class="demoHead">   
          +  <div>
          +    <div style="float:left;">
          +      <h1>Smart Wizard 3</h1>
          +      <h2>a javascript jQuery wizard control plugin</h2>
          +    </div>
          +    <div style="float:right;" class="demoNavLinks">
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master" class="btn">Download</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/blob/master/README.md" class="btn">Documentation</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard" class="btn">Github</a>
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +  <div style="margin-top:15px;">
          +    <div style="float:left"><h3>Examples:</h3></div>
          +    <div style="float:left" class="demoExampleLinks">
          +      <a href="index.htm" class="btn">Basic Example</a>
          +      <a href="smartwizard2-vertical.htm" class="btn">Vertical Style</a>
          +      <a href="smartwizard2-multiple.htm" class="btn">Multiple Wizards</a>
          +      <a href="smartwizard2-ajax.htm" class="btn selected">Ajax Contents</a>
          +      <a href="smartwizard2-validation.htm" class="btn">Step Validation</a>  
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td> 
          +        <h2>Example: Ajax Contents</h2>
          +        <p>
          +            Please
          +            <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master">download</a>
          +            and look in the
          +            <code><a href="https://github.com/mstratman/jQuery-Smart-Wizard/tree/master/more_examples">more_examples</a></code>
          +            folder for an example of using Ajax to populate the contents of the
          +            wizard.
          +        </p>
          +</td></tr>
          +</table>
          +    		
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/smartwizard2-multiple.htm b/public/theme/jQuery-Smart-Wizard/smartwizard2-multiple.htm
          new file mode 100644
          index 0000000..477b314
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/smartwizard2-multiple.htm
          @@ -0,0 +1,325 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Multiple Wizard Example - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +    $(document).ready(function(){
          +    	//  Wizard 1  	
          +  		$('#wizard1').smartWizard({transitionEffect:'fade',onFinish:onFinishCallback});
          +    	//  Wizard 2
          +      $('#wizard2').smartWizard({transitionEffect:'slide',onFinish:onFinishCallback});
          +      function onFinishCallback(){
          +        alert('Finish Called');
          +      }     
          +		});
          +</script>
          +
          +</head><body>
          +
          +
          +<div class="demoHead">   
          +  <div>
          +    <div style="float:left;">
          +      <h1>Smart Wizard 3</h1>
          +      <h2>a javascript jQuery wizard control plugin</h2>
          +    </div>
          +    <div style="float:right;" class="demoNavLinks">
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master" class="btn">Download</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/blob/master/README.md" class="btn">Documentation</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard" class="btn">Github</a>
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +  <div style="margin-top:15px;">
          +    <div style="float:left"><h3>Examples:</h3></div>
          +    <div style="float:left" class="demoExampleLinks">
          +      <a href="index.htm" class="btn">Basic Example</a>
          +      <a href="smartwizard2-vertical.htm" class="btn">Vertical Style</a>
          +      <a href="smartwizard2-multiple.htm" class="btn selected">Multiple Wizards</a>
          +      <a href="smartwizard2-ajax.htm" class="btn">Ajax Contents</a>
          +      <a href="smartwizard2-validation.htm" class="btn">Step Validation</a>  
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td>
          +        <h2>Example: Multiple Wizards</h2>
          +<!-- Smart Wizard wizard1-->
          +<h3>Wizard 1</h3> 
          +  		<div id="wizard1" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Step 1<br />
          +                   <small>Step 1 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Step 2<br />
          +                   <small>Step 2 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Step 3<br />
          +                   <small>Step 3 description</small>
          +                </span>                   
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">4</label>
          +                <span class="stepDesc">
          +                   Step 4<br />
          +                   <small>Step 4 description</small>
          +                </span>                   
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1 Content</h2>
          +            <ul type="disk">
          +  				    <li>List 1</li>
          +  				    <li>List 2</li>
          +            </ul>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p> 
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>                			
          +        </div>
          +  		</div>
          +<!-- End SmartWizard Content 1 -->
          +<br />  &nbsp;
          +<h3>Wizard 2</h3>
          +
          +<!-- Smart Wizard wizard2-->
          +  		<div id="wizard2" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Step 1<br />
          +                   <small>Step 1 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Step 2<br />
          +                   <small>Step 2 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Step 3<br />
          +                   <small>Step 3 description</small>
          +                </span>                   
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">4</label>
          +                <span class="stepDesc">
          +                   Step 4<br />
          +                   <small>Step 4 description</small>
          +                </span>                   
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1 Content</h2>
          +            <ul type="disk">
          +  				    <li>List 1</li>
          +  				    <li>List 2</li>
          +            </ul>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p> 
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>                			
          +        </div>
          +  		</div>
          +<!-- End SmartWizard Content 2 -->  
          +
          +</td></tr>
          +</table>  		
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/smartwizard2-validation.htm b/public/theme/jQuery-Smart-Wizard/smartwizard2-validation.htm
          new file mode 100644
          index 0000000..8a1e037
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/smartwizard2-validation.htm
          @@ -0,0 +1,58 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Basic Example  - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +</script>
          +
          +</head><body>
          +
          +<div class="demoHead">   
          +  <div>
          +    <div style="float:left;">
          +      <h1>Smart Wizard 3</h1>
          +      <h2>a javascript jQuery wizard control plugin</h2>
          +    </div>
          +    <div style="float:right;" class="demoNavLinks">
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master" class="btn">Download</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/blob/master/README.md" class="btn">Documentation</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard" class="btn">Github</a>
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +  <div style="margin-top:15px;">
          +    <div style="float:left"><h3>Examples:</h3></div>
          +    <div style="float:left" class="demoExampleLinks">
          +      <a href="index.htm" class="btn">Basic Example</a>
          +      <a href="smartwizard2-vertical.htm" class="btn">Vertical Style</a>
          +      <a href="smartwizard2-multiple.htm" class="btn">Multiple Wizards</a>
          +      <a href="smartwizard2-ajax.htm" class="btn">Ajax Contents</a>
          +      <a href="smartwizard2-validation.htm" class="btn selected">Step Validation</a>  
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td> 
          +        <h2>Example: Step validation</h2>
          +        <p>
          +            Please
          +            <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master">download</a>
          +            and look in the
          +            <code><a href="https://github.com/mstratman/jQuery-Smart-Wizard/tree/master/more_examples">more_examples</a></code>
          +            folder for an example of validating the steps of the wizard.
          +        </p>
          +</td></tr>
          +</table>
          +    		
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/smartwizard2-vertical.htm b/public/theme/jQuery-Smart-Wizard/smartwizard2-vertical.htm
          new file mode 100644
          index 0000000..231d1f1
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/smartwizard2-vertical.htm
          @@ -0,0 +1,196 @@
          +<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          +<html xmlns="http://www.w3.org/1999/xhtml"><head>
          +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +<title>Smart Wizard 2 - Vertical Style Example - a javascript jQuery wizard control plugin</title>
          +<link href="styles/demo_style.css" rel="stylesheet" type="text/css">
          +
          +<link href="styles/smart_wizard_vertical.css" rel="stylesheet" type="text/css">
          +<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
          +<script type="text/javascript" src="js/jquery.smartWizard.js"></script>
          +
          +<script type="text/javascript">
          +   
          +    $(document).ready(function(){
          +    	// Smart Wizard	
          +  		$('#wizard').smartWizard({transitionEffect:'slide'});
          +     
          +		});
          +</script>
          +
          +</head><body>
          +
          +<div class="demoHead">   
          +  <div>
          +    <div style="float:left;">
          +      <h1>Smart Wizard 3</h1>
          +      <h2>a javascript jQuery wizard control plugin</h2>
          +    </div>
          +    <div style="float:right;" class="demoNavLinks">
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/tarball/master" class="btn">Download</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard/blob/master/README.md" class="btn">Documentation</a>
          +      <a href="https://github.com/mstratman/jQuery-Smart-Wizard" class="btn">Github</a>
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +  <div style="margin-top:15px;">
          +    <div style="float:left"><h3>Examples:</h3></div>
          +    <div style="float:left" class="demoExampleLinks">
          +      <a href="index.htm" class="btn">Basic Example</a>
          +      <a href="smartwizard2-vertical.htm" class="btn selected">Vertical Style</a>
          +      <a href="smartwizard2-multiple.htm" class="btn">Multiple Wizards</a>
          +      <a href="smartwizard2-ajax.htm" class="btn">Ajax Contents</a>
          +      <a href="smartwizard2-validation.htm" class="btn">Step Validation</a>  
          +    </div>
          +    <div style="clear:both;"></div>
          +  </div>
          +
          +</div>
          +
          +<table align="center" border="0" cellpadding="0" cellspacing="0">
          +<tr><td> 
          +       <h2>Example: Vertical Style</h2> 
          +<!-- Tabs -->
          +  		<div id="wizard" class="swMain">
          +  			<ul>
          +  				<li><a href="#step-1">
          +                <label class="stepNumber">1</label>
          +                <span class="stepDesc">
          +                   Step 1<br />
          +                   <small>Step 1 description</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-2">
          +                <label class="stepNumber">2</label>
          +                <span class="stepDesc">
          +                   Step 2<br />
          +                   <small>Step 2 description having some more text</small>
          +                </span>
          +            </a></li>
          +  				<li><a href="#step-3">
          +                <label class="stepNumber">3</label>
          +                <span class="stepDesc">
          +                   Step 3<br />
          +                   <small>Step 3 description</small>
          +                </span>                   
          +             </a></li>
          +  				<li><a href="#step-4">
          +                <label class="stepNumber">4</label>
          +                <span class="stepDesc">
          +                   Step 4<br />
          +                   <small>Step 4 description</small>
          +                </span>                   
          +            </a></li>
          +  			</ul>
          +  			<div id="step-1">	
          +            <h2 class="StepTitle">Step 1 Content</h2>
          +            <ul type="disk">
          +  				    <li>List 1</li>
          +  				    <li>List 2</li>
          +            </ul>
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>          			
          +        </div>
          +  			<div id="step-2">
          +            <h2 class="StepTitle">Step 2 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p> 
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>            
          +        </div>                      
          +  			<div id="step-3">
          +            <h2 class="StepTitle">Step 3 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>               				          
          +        </div>
          +  			<div id="step-4">
          +            <h2 class="StepTitle">Step 4 Content</h2>	
          +            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>
          +            <p>
          +            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          +            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
          +            quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
          +            Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
          +            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          +            </p>                			
          +        </div>
          +  		</div>
          +  		
          +<!-- End SmartWizard Content -->  		
          +  		
          +</td></tr>
          +</table>   	
          +	
          +</body>
          +</html>
          diff --git a/public/theme/jQuery-Smart-Wizard/styles/demo_style.css b/public/theme/jQuery-Smart-Wizard/styles/demo_style.css
          new file mode 100644
          index 0000000..cc7e488
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/styles/demo_style.css
          @@ -0,0 +1,73 @@
          +body {
          +  margin:0;
          +  padding:0;      
          +}
          +.demoHead { 
          +  display:block;  
          +  margin-bottom:10px;   
          +  border: 0;
          +  padding: 0;
          +  padding-top: 8px;
          +  padding-bottom:10px;    
          +  border-bottom: 1px solid #CCC;
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif; 
          +  color: #5A5655;   
          +  background-color: #FAFAFA;    
          +}
          +.demoHead .demoExampleLinks {
          +  text-align:center;
          +}
          +.demoHead h1,.demoHead h2,.demoHead h3{
          +  margin-top:0;
          +  margin-bottom:0;
          +  margin-left:25px;
          +  padding-top:0;
          +  padding-bottom:0;
          +}
          +.demoHead h1{
          +  font: bold 22px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.demoHead h2{
          +  font: bold 18px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.demoHead h3{
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.demoHead a.btn{
          +  -moz-border-radius    : 5px;
          +  -webkit-border-radius : 5px;
          +  background            : #7D7D7D;
          +  color                 : #FFF;
          +  margin                : 2px 2px 0px 2px;
          +  padding               : 5px 12px 5px 12px;
          +  text-align            : center;
          +  border                : 1px solid #7D7D7D;    
          +  text-decoration       : none; 
          +}
          +.demoHead .demoNavLinks a.btn {
          +  color:#FFF;
          +  background: #8CC63F;
          +  border: 1px solid #8CC63F;
          +}
          +.demoHead a.btn:hover{
          +  background      : #EA8511;
          +  color           : #FFFFFF;
          +  border          : 1px solid #EA8511; 
          +  text-decoration : none; 
          +}
          +.demoHead .demoNavLinks a.btn:hover {
          +  color:#5A5655;
          +  background: #8CC63F;
          +  border: 1px solid #5A5655;
          +}
          +.demoHead a.selected{
          +  -moz-border-radius    : 5px;
          +  -webkit-border-radius : 5px;
          +  background            : #EA8511;
          +  color                 : #FFFFFF;
          +  margin                : 2px 2px 0px 2px;
          +  padding               : 5px 12px 5px 12px;
          +  text-align            : center;
          +  border                : 1px solid #EA8511;    
          +  text-decoration       : none; 
          +}
          diff --git a/public/theme/jQuery-Smart-Wizard/styles/smart_wizard.css b/public/theme/jQuery-Smart-Wizard/styles/smart_wizard.css
          new file mode 100644
          index 0000000..94e4da8
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/styles/smart_wizard.css
          @@ -0,0 +1,305 @@
          +/*   
          +  SmartWizard 2.0 plugin 
          +  jQuery Wizard control Plugin
          +  by Dipu
          +  
          +  http://www.techlaboratory.net
          +  http://tech-laboratory.blogspot.com
          +*/
          +.swMain {
          +  position:relative;
          +  display:block;
          +  margin:0;
          +  padding:0;
          +  border: 0px solid #CCC;
          +  overflow:visible;
          +  float:left;
          +  width:980px;
          +}
          +.swMain .stepContainer {
          +  display:block;
          +  position: relative;
          +  margin: 0;
          +  padding:0;    
          +  border: 0px solid #CCC;    
          +  overflow:hidden;
          +  clear:both;
          +  height:300px;
          +}
          +
          +.swMain .stepContainer div.content {
          +  display:block;
          +  position: absolute;  
          +  float:left;
          +  margin: 0;
          +  padding:5px;    
          +  border: 1px solid #CCC; 
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;   
          +  background-color:#F8F8F8;  
          +  height:300px;
          +  text-align:left;
          +  overflow:visible;    
          +  z-index:88; 
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;
          +  width:968px;
          +  clear:both;
          +}
          +
          +.swMain div.actionBar {
          +  display:block;
          +  position: relative; 
          +  clear:both;
          +  margin:             3px 0 0 0;   
          +  border:             1px solid #CCC;
          +  padding:            0;    
          +  color:              #5A5655;   
          +  background-color:   #F8F8F8;
          +  height:40px;
          +  text-align:left;
          +  overflow:auto;    
          +  z-index:88; 
          +
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;
          +  left:0;
          +}
          +
          +.swMain .stepContainer .StepTitle {
          +  display:block;
          +  position: relative;
          +  margin:0;   
          +  border:1px solid #E0E0E0;
          +  padding:5px;   
          +  font: bold 16px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;   
          +  background-color:#E0E0E0;
          +  clear:both;
          +  text-align:left; 
          +  z-index:88;
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;    
          +}
          +.swMain ul.anchor {
          +  position: relative;
          +  display:block;
          +  float:left;
          +  list-style: none;
          +  padding: 0px;  
          +  margin: 10px 0;      
          +  clear: both;
          +  border: 0px solid #CCCCCC;    
          +  background: transparent; /*#EEEEEE */
          +}
          +.swMain ul.anchor li{ 
          +  position: relative; 
          +  display:block;
          +  margin: 0;
          +  padding: 0; 
          +  padding-left:3px;
          +  padding-right: 3px;
          +  border: 0px solid #E0E0E0;      
          +  float: left;
          +}
          +/* Anchor Element Style */
          +.swMain ul.anchor li a {
          +  display:block;
          +  position:relative;
          +  float:left;
          +  margin:0;
          +  padding:3px;
          +  height:60px;
          +  width:230px;
          +  text-decoration: none;
          +  outline-style:none;
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:99;
          +}
          +.swMain ul.anchor li a .stepNumber{
          +  position:relative;
          +  float:left;
          +  width:30px;
          +  text-align: center;
          +  padding:5px;
          +  padding-top:0;
          +  font: bold 45px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a .stepDesc{
          +  position:relative;
          +  display:block;
          +  float:left;
          +  text-align: left;
          +  padding:5px;
          +
          +  font: bold 20px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a .stepDesc small{
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a.selected{
          +  color:#F8F8F8;
          +  background: #EA8511;  /* EA8511 */
          +  border: 1px solid #EA8511;
          +  cursor:text;
          +  -moz-box-shadow: 5px 5px 8px #888;
          +  -webkit-box-shadow: 5px 5px 8px #888;
          +  box-shadow: 5px 5px 8px #888;
          +}
          +.swMain ul.anchor li a.selected:hover {
          +  color:#F8F8F8;  
          +  background: #EA8511;  
          +}
          +
          +.swMain ul.anchor li a.done { 
          +  position:relative;
          +  color:#FFF;  
          +  background: #8CC63F;  
          +  border: 1px solid #8CC63F;   
          +  z-index:99;
          +}
          +.swMain ul.anchor li a.done:hover {
          +  color:#5A5655;  
          +  background: #8CC63F; 
          +  border: 1px solid #5A5655;   
          +}
          +.swMain ul.anchor li a.disabled {
          +  color:#CCCCCC;  
          +  background: #F8F8F8;
          +  border: 1px solid #CCC;  
          +  cursor:text;   
          +}
          +.swMain ul.anchor li a.disabled:hover {
          +  color:#CCCCCC;  
          +  background: #F8F8F8;     
          +}
          +
          +.swMain ul.anchor li a.error {
          +  color:#6c6c6c !important;  
          +  background: #f08f75 !important;
          +  border: 1px solid #fb3500 !important;      
          +}
          +.swMain ul.anchor li a.error:hover {
          +  color:#000 !important;       
          +}
          +
          +.swMain .buttonNext {
          +  display:block;
          +  float:right;
          +  margin:5px 3px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +.swMain .buttonDisabled {
          +  color:#F8F8F8  !important;
          +  background-color: #CCCCCC !important;
          +  border: 1px solid #CCCCCC  !important;
          +  cursor:text;    
          +}
          +.swMain .buttonPrevious {
          +  display:block;
          +  float:right;
          +  margin:5px 3px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +.swMain .buttonFinish {
          +  display:block;
          +  float:right;
          +  margin:5px 10px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +
          +/* Form Styles */
          +
          +.txtBox {
          +  border:1px solid #CCCCCC;
          +  color:#5A5655;
          +  font:13px Verdana,Arial,Helvetica,sans-serif;
          +  padding:2px;
          +  width:430px;
          +}
          +.txtBox:focus {
          +  border:1px solid #EA8511;
          +}
          +
          +.swMain .loader {
          +  position:relative;  
          +  display:none;
          +  float:left;  
          +  margin: 2px 0 0 2px;
          +  padding:8px 10px 8px 40px;
          +  border: 1px solid #FFD700; 
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;       
          +  background: #FFF url(../images/loader.gif) no-repeat 5px;  
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:998;
          +}
          +.swMain .msgBox {
          +  position:relative;  
          +  display:none;
          +  float:left;
          +  margin: 4px 0 0 5px;
          +  padding:5px;
          +  border: 1px solid #FFD700; 
          +  background-color: #FFFFDD;  
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;         
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:999;
          +  min-width:200px;  
          +}
          +.swMain .msgBox .content {
          +  font: normal 12px Verdana,Arial,Helvetica,sans-serif;
          +  padding: 0px;
          +  float:left;
          +}
          +.swMain .msgBox .close {
          +  border: 1px solid #CCC;
          +  border-radius: 3px;
          +  color: #CCC;
          +  display: block;
          +  float: right;
          +  margin: 0 0 0 5px;
          +  outline-style: none;
          +  padding: 0 2px 0 2px;
          +  position: relative;
          +  text-align: center;
          +  text-decoration: none;
          +}
          +.swMain .msgBox .close:hover{
          +  color: #EA8511;
          +  border: 1px solid #EA8511;  
          +}
          \ No newline at end of file
          diff --git a/public/theme/jQuery-Smart-Wizard/styles/smart_wizard_vertical.css b/public/theme/jQuery-Smart-Wizard/styles/smart_wizard_vertical.css
          new file mode 100644
          index 0000000..2df4b31
          --- /dev/null
          +++ b/public/theme/jQuery-Smart-Wizard/styles/smart_wizard_vertical.css
          @@ -0,0 +1,306 @@
          +/*   
          +  SmartWizard 2.0 plugin 
          +  jQuery Wizard control Plugin
          +  by Dipu
          +  
          +  http://www.techlaboratory.net
          +  http://tech-laboratory.blogspot.com
          +*/
          +.swMain {
          +  position:relative;
          +  display:block;
          +  margin:0;
          +  padding:0;
          +  border: 0px solid #CCC;
          +  overflow:visible;
          +  float:left;
          +  width:980px;/* */
          +}
          +.swMain .stepContainer {
          +  display:block;
          +  position: relative;
          +  margin: 0;
          +  padding:0;    
          +  border: 0px solid #CCC;    
          +  overflow:hidden;
          +  clear:right;
          +  height:300px;
          +}
          +
          +.swMain .stepContainer div.content {
          +  display:block;
          +  position: absolute;  
          +  float:left;
          +  margin: 0;
          +  padding:5px;    
          +  border: 1px solid #CCC; 
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;   
          +  background-color:#F8F8F8;  
          +  height:300px;
          +  text-align:left;
          +  overflow:auto;    
          +  z-index:88; 
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;
          +  width:720px;
          +  clear:both;
          +}
          +
          +.swMain div.actionBar {
          +  display:block;
          +  position: relative; 
          +  clear:right;
          +  margin:             3px 0 0 0;   
          +  border:             1px solid #CCC;
          +  padding:            0;    
          +  color:              #5A5655;   
          +  background-color:   #F8F8F8;
          +  height:40px;
          +/*  width:730px; 
          +  float:right; */  
          +  text-align:left;
          +  overflow:auto;    
          +  z-index:88; 
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;
          +
          +}
          +
          +.swMain .stepContainer .StepTitle {
          +  display:block;
          +  position: relative;
          +  margin:0;   
          +  border:1px solid #E0E0E0;
          +  padding:5px;   
          +  font: bold 16px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;   
          +  background-color:#E0E0E0;
          +  clear:both;
          +  text-align:left; 
          +  z-index:88;
          +  -webkit-border-radius: 5px;
          +  -moz-border-radius  : 5px;    
          +}
          +.swMain ul.anchor {
          +  position: relative;
          +  display:block;
          +  float:left;
          +  list-style: none;
          +  padding: 0px;  
          +  margin: 5px 10px 0 0;
          +  border: 0px solid #CCCCCC;    
          +  background: transparent; /*#EEEEEE */
          +}
          +.swMain ul.anchor li{ 
          +  position: relative; 
          +  display:block;
          +  margin: 0;
          +  padding: 0; 
          +  padding-top:3px;
          +  padding-bottom: 3px;
          +  border: 0px solid #E0E0E0;      
          +  float: left;
          +  clear:both;
          +}
          +/* Anchor Element Style */
          +.swMain ul.anchor li a {
          +  display:block;
          +  position:relative;
          +  float:left;
          +  margin:0;
          +  padding:3px;
          +  height:70px;
          +  width:230px;
          +  text-decoration: none;
          +  outline-style:none;
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:99;
          +}
          +.swMain ul.anchor li a .stepNumber{
          +  position:relative;
          +  float:left;
          +  width:30px;
          +  text-align: center;
          +  padding:5px;
          +  padding-top:0;
          +  font: bold 45px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a .stepDesc{
          +  position:relative;
          +  display:block;
          +  float:left;
          +  text-align: left;
          +  padding:5px;
          +  width:70%;
          +  font: bold 20px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a .stepDesc small{
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif;
          +}
          +.swMain ul.anchor li a.selected{
          +  color:#F8F8F8;
          +  background: #EA8511;  /* EA8511 */
          +  border: 1px solid #EA8511;
          +  cursor:text;
          +  -moz-box-shadow: 1px 5px 10px #888;
          +  -webkit-box-shadow: 1px 5px 10px #888;
          +  box-shadow: 1px 5px 10px #888;
          +}
          +.swMain ul.anchor li a.selected:hover {
          +  color:#F8F8F8;  
          +  background: #EA8511;  
          +}
          +
          +.swMain ul.anchor li a.done { 
          +  position:relative;
          +  color:#FFF;  
          +  background: #8CC63F;  
          +  border: 1px solid #8CC63F;   
          +  z-index:99;
          +}
          +.swMain ul.anchor li a.done:hover {
          +  color:#5A5655;  
          +  background: #8CC63F; 
          +  border: 1px solid #5A5655;   
          +}
          +.swMain ul.anchor li a.disabled {
          +  color:#CCCCCC;  
          +  background: #F8F8F8;
          +  border: 1px solid #CCC;  
          +  cursor:text;   
          +}
          +.swMain ul.anchor li a.disabled:hover {
          +  color:#CCCCCC;  
          +  background: #F8F8F8;     
          +}
          +
          +.swMain ul.anchor li a.error {
          +  color:#6c6c6c !important;  
          +  background: #f08f75 !important;
          +  border: 1px solid #fb3500 !important;      
          +}
          +.swMain ul.anchor li a.error:hover {
          +  color:#000 !important;       
          +}
          +
          +.swMain .buttonNext {
          +  display:block;
          +  float:right;
          +  margin:5px 3px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +.swMain .buttonDisabled {
          +  color:#F8F8F8  !important;
          +  background-color: #CCCCCC !important;
          +  border: 1px solid #CCCCCC  !important;
          +  cursor:text;    
          +}
          +.swMain .buttonPrevious {
          +  display:block;
          +  float:right;
          +  margin:5px 3px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +.swMain .buttonFinish {
          +  display:block;
          +  float:right;
          +  margin:5px 10px 0 3px;
          +  padding:5px;
          +  text-decoration: none;
          +  text-align: center;
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif;
          +  width:100px;
          +  color:#FFF;
          +  outline-style:none;
          +  background-color:   #5A5655;
          +  border: 1px solid #5A5655;
          +  -moz-border-radius  : 5px; 
          +  -webkit-border-radius: 5px;    
          +}
          +
          +/* Form Styles */
          +
          +.txtBox {
          +  border:1px solid #CCCCCC;
          +  color:#5A5655;
          +  font:13px Verdana,Arial,Helvetica,sans-serif;
          +  padding:2px;
          +  width:430px;
          +}
          +.txtBox:focus {
          +  border:1px solid #EA8511;
          +}
          +
          +.swMain .loader {
          +  position:relative;  
          +  display:none;
          +  float:left;  
          +  margin: 2px 0 0 2px;
          +  padding:8px 10px 8px 40px;
          +  border: 1px solid #FFD700; 
          +  font: bold 13px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;       
          +  background: #FFF url(../images/loader.gif) no-repeat 5px;  
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:998;
          +}
          +.swMain .msgBox {
          +  position:relative;  
          +  display:none;
          +  float:left;
          +  margin: 4px 0 0 5px;
          +  padding:5px;
          +  border: 1px solid #FFD700; 
          +  background-color: #FFFFDD;  
          +  font: normal 12px Verdana, Arial, Helvetica, sans-serif; 
          +  color:#5A5655;         
          +  -moz-border-radius  : 5px;
          +  -webkit-border-radius: 5px;
          +  z-index:999;
          +  min-width:200px;  
          +}
          +.swMain .msgBox .content {
          +  font: normal 12px Verdana,Arial,Helvetica,sans-serif;
          +  padding: 0px;
          +  float:left;
          +}
          +.swMain .msgBox .close {
          +  border: 1px solid #CCC;
          +  border-radius: 3px;
          +  color: #CCC;
          +  display: block;
          +  float: right;
          +  margin: 0 0 0 5px;
          +  outline-style: none;
          +  padding: 0 2px 0 2px;
          +  position: relative;
          +  text-align: center;
          +  text-decoration: none;
          +}
          +.swMain .msgBox .close:hover{
          +  color: #EA8511;
          +  border: 1px solid #EA8511;  
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery-knob/.bower.json b/public/theme/jquery-knob/.bower.json
          new file mode 100644
          index 0000000..4b3a60b
          --- /dev/null
          +++ b/public/theme/jquery-knob/.bower.json
          @@ -0,0 +1,22 @@
          +{
          +  "name": "jquery-knob",
          +  "version": "1.2.13",
          +  "main": "js/jquery.knob.js",
          +  "description": "Nice, downward compatible, touchable, jQuery dial.",
          +  "license": "MIT",
          +  "ignore": [],
          +  "dependencies": {
          +    "jquery": ">=1.7.0"
          +  },
          +  "devDependencies": {},
          +  "homepage": "https://github.com/aterrien/jQuery-Knob",
          +  "_release": "1.2.13",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "1.2.13",
          +    "commit": "755309e933d326ffaa5a2d758dc377147b766515"
          +  },
          +  "_source": "https://github.com/aterrien/jQuery-Knob.git",
          +  "_target": "^1.2.13",
          +  "_originalSource": "jquery-knob"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery-knob/.gitignore b/public/theme/jquery-knob/.gitignore
          new file mode 100644
          index 0000000..c094bf5
          --- /dev/null
          +++ b/public/theme/jquery-knob/.gitignore
          @@ -0,0 +1 @@
          +nbproject/
          \ No newline at end of file
          diff --git a/public/theme/jquery-knob/LICENSE b/public/theme/jquery-knob/LICENSE
          new file mode 100644
          index 0000000..f5db321
          --- /dev/null
          +++ b/public/theme/jquery-knob/LICENSE
          @@ -0,0 +1,20 @@
          +The MIT License (MIT)
          +
          +Copyright (c) 2013 Anthony Terrien
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be included in all
          +copies or substantial portions of the Software.
          +
          +THE 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.
          diff --git a/public/theme/jquery-knob/README.md b/public/theme/jquery-knob/README.md
          new file mode 100644
          index 0000000..2257ff4
          --- /dev/null
          +++ b/public/theme/jquery-knob/README.md
          @@ -0,0 +1,148 @@
          +jQuery Knob
          +=============
          +
          +- canvas based ; no png or jpg sprites.
          +- touch, mouse and mousewheel, keyboard events implemented.
          +- downward compatible ; overloads an input element.
          +
          +Example
          +-------
          +
          +```html
          +<input type="text" value="75" class="dial">
          +
          +<script>
          +    $(function() {
          +        $(".dial").knob();
          +    });
          +</script>
          +```
          +
          +Options
          +-------
          +
          +Options are provided as attributes 'data-option':
          +
          +```html
          +<input type="text" class="dial" data-min="-50" data-max="50">
          +```
          +
          +... or in the "knob()" call :
          +
          +```javascript
          +$(".dial").knob({
          +    'min':-50,
          +    'max':50
          +});
          +```
          +
          +The following options are supported :
          +
          +Behaviors :
          +* min : min value | default=0.
          +* max : max value | default=100.
          +* step : step size | default=1.
          +* angleOffset : starting angle in degrees | default=0.
          +* angleArc : arc size in degrees | default=360.
          +* stopper : stop at min & max on keydown/mousewheel | default=true.
          +* readOnly : disable input and events | default=false.
          +* rotation : direction of progression | default=clockwise.
          +
          +UI :
          +* cursor : display mode "cursor", cursor size could be changed passing a numeric value to the option, default width is used when passing boolean value "true" | default=gauge.
          +* thickness : gauge thickness.
          +* lineCap : gauge stroke endings. | default=butt, round=rounded line endings
          +* width : dial width.
          +* height : dial height.
          +* displayInput : default=true | false=hide input.
          +* displayPrevious : default=false | true=displays the previous value with transparency.
          +* fgColor : foreground color.
          +* inputColor : input value (number) color.
          +* font : font family.
          +* fontWeight : font weight.
          +* bgColor : background color.
          +
          +Hooks
          +-------
          +
          +```html
          +<script>
          +    $(".dial").knob({
          +        'release' : function (v) { /*make something*/ }
          +    });
          +</script>
          +```
          +
          +* 'release' : executed on release
          +
          +    Parameters :
          +    + value : int, current value
          +
          +* 'change' : executed at each change of the value
          +
          +    Parameters :
          +    + value : int, current value
          +
          +* 'draw' : when drawing the canvas
          +
          +    Context :
          +    - this.g : canvas context 2D (see Canvas documentation)
          +    - this.$ : jQuery wrapped element
          +    - this.o : options
          +    - this.i : input
          +    - ... console.log(this);
          +
          +* 'cancel' : triggered on [esc] keydown
          +
          +* 'format' : allows to format output (add unit %, ms ...)
          +
          +The scope (this) of each hook function is the current Knob instance (refer to the demo code).
          +
          +Example
          +-------
          +
          +```html
          +<input type="text" value="75" class="dial">
          +
          +<script>
          +    $(".dial").knob({
          +        'change' : function (v) { console.log(v); }
          +    });
          +</script>
          +```
          +
          +Dynamically configure
          +-------
          +
          +```html
          +<script>
          +    $('.dial').trigger(
          +        'configure',
          +        {
          +            "min":10,
          +            "max":40,
          +            "fgColor":"#FF0000",
          +            "skin":"tron",
          +            "cursor":true
          +        }
          +    );
          +</script>
          +```
          +
          +Set the value
          +-------
          +
          +```html
          +<script>
          +    $('.dial')
          +        .val(27)
          +        .trigger('change');
          +</script>
          +```
          +
          +Supported browser
          +-------
          +
          +Tested on Chrome, Safari, Firefox, IE>=8.0 (IE8.0 with excanvas).
          +
          +![secretplan](https://raw.github.com/aterrien/jQuery-Knob/master/secretplan.jpg)
          diff --git a/public/theme/jquery-knob/bower.json b/public/theme/jquery-knob/bower.json
          new file mode 100644
          index 0000000..1eeb316
          --- /dev/null
          +++ b/public/theme/jquery-knob/bower.json
          @@ -0,0 +1,13 @@
          +{
          +  "name": "jquery-knob",
          +  "version": "1.2.13",
          +  "main": "js/jquery.knob.js",
          +  "description": "Nice, downward compatible, touchable, jQuery dial.",
          +  "license": "MIT",
          +  "ignore": [],
          +  "dependencies": {
          +    "jquery": ">=1.7.0"
          +  },
          +  "devDependencies": {}
          +}
          +
          diff --git a/public/theme/jquery-knob/dist/jquery.knob.min.js b/public/theme/jquery-knob/dist/jquery.knob.min.js
          new file mode 100644
          index 0000000..72d6ed2
          --- /dev/null
          +++ b/public/theme/jquery-knob/dist/jquery.knob.min.js
          @@ -0,0 +1 @@
          +(function(e){if(typeof define==="function"&&define.amd){define(["jquery"],e)}else{e(jQuery)}})(function(e){"use strict";var t={},n=Math.max,r=Math.min;t.c={};t.c.d=e(document);t.c.t=function(e){return e.originalEvent.touches.length-1};t.o=function(){var n=this;this.o=null;this.$=null;this.i=null;this.g=null;this.v=null;this.cv=null;this.x=0;this.y=0;this.w=0;this.h=0;this.$c=null;this.c=null;this.t=0;this.isInit=false;this.fgColor=null;this.pColor=null;this.dH=null;this.cH=null;this.eH=null;this.rH=null;this.scale=1;this.relative=false;this.relativeWidth=false;this.relativeHeight=false;this.$div=null;this.run=function(){var t=function(e,t){var r;for(r in t){n.o[r]=t[r]}n._carve().init();n._configure()._draw()};if(this.$.data("kontroled"))return;this.$.data("kontroled",true);this.extend();this.o=e.extend({min:this.$.data("min")!==undefined?this.$.data("min"):0,max:this.$.data("max")!==undefined?this.$.data("max"):100,stopper:true,readOnly:this.$.data("readonly")||this.$.attr("readonly")==="readonly",cursor:this.$.data("cursor")===true&&30||this.$.data("cursor")||0,thickness:this.$.data("thickness")&&Math.max(Math.min(this.$.data("thickness"),1),.01)||.35,lineCap:this.$.data("linecap")||"butt",width:this.$.data("width")||200,height:this.$.data("height")||200,displayInput:this.$.data("displayinput")==null||this.$.data("displayinput"),displayPrevious:this.$.data("displayprevious"),fgColor:this.$.data("fgcolor")||"#87CEEB",inputColor:this.$.data("inputcolor"),font:this.$.data("font")||"Arial",fontWeight:this.$.data("font-weight")||"bold",inline:false,step:this.$.data("step")||1,rotation:this.$.data("rotation"),draw:null,change:null,cancel:null,release:null,format:function(e){return e},parse:function(e){return parseFloat(e)}},this.o);this.o.flip=this.o.rotation==="anticlockwise"||this.o.rotation==="acw";if(!this.o.inputColor){this.o.inputColor=this.o.fgColor}if(this.$.is("fieldset")){this.v={};this.i=this.$.find("input");this.i.each(function(t){var r=e(this);n.i[t]=r;n.v[t]=n.o.parse(r.val());r.bind("change blur",function(){var e={};e[t]=r.val();n.val(n._validate(e))})});this.$.find("legend").remove()}else{this.i=this.$;this.v=this.o.parse(this.$.val());this.v===""&&(this.v=this.o.min);this.$.bind("change blur",function(){n.val(n._validate(n.o.parse(n.$.val())))})}!this.o.displayInput&&this.$.hide();this.$c=e(document.createElement("canvas")).attr({width:this.o.width,height:this.o.height});this.$div=e('<div style="'+(this.o.inline?"display:inline;":"")+"width:"+this.o.width+"px;height:"+this.o.height+"px;"+'"></div>');this.$.wrap(this.$div).before(this.$c);this.$div=this.$.parent();if(typeof G_vmlCanvasManager!=="undefined"){G_vmlCanvasManager.initElement(this.$c[0])}this.c=this.$c[0].getContext?this.$c[0].getContext("2d"):null;if(!this.c){throw{name:"CanvasNotSupportedException",message:"Canvas not supported. Please use excanvas on IE8.0.",toString:function(){return this.name+": "+this.message}}}this.scale=(window.devicePixelRatio||1)/(this.c.webkitBackingStorePixelRatio||this.c.mozBackingStorePixelRatio||this.c.msBackingStorePixelRatio||this.c.oBackingStorePixelRatio||this.c.backingStorePixelRatio||1);this.relativeWidth=this.o.width%1!==0&&this.o.width.indexOf("%");this.relativeHeight=this.o.height%1!==0&&this.o.height.indexOf("%");this.relative=this.relativeWidth||this.relativeHeight;this._carve();if(this.v instanceof Object){this.cv={};this.copy(this.v,this.cv)}else{this.cv=this.v}this.$.bind("configure",t).parent().bind("configure",t);this._listen()._configure()._xy().init();this.isInit=true;this.$.val(this.o.format(this.v));this._draw();return this};this._carve=function(){if(this.relative){var e=this.relativeWidth?this.$div.parent().width()*parseInt(this.o.width)/100:this.$div.parent().width(),t=this.relativeHeight?this.$div.parent().height()*parseInt(this.o.height)/100:this.$div.parent().height();this.w=this.h=Math.min(e,t)}else{this.w=this.o.width;this.h=this.o.height}this.$div.css({width:this.w+"px",height:this.h+"px"});this.$c.attr({width:this.w,height:this.h});if(this.scale!==1){this.$c[0].width=this.$c[0].width*this.scale;this.$c[0].height=this.$c[0].height*this.scale;this.$c.width(this.w);this.$c.height(this.h)}return this};this._draw=function(){var e=true;n.g=n.c;n.clear();n.dH&&(e=n.dH());e!==false&&n.draw()};this._touch=function(e){var r=function(e){var t=n.xy2val(e.originalEvent.touches[n.t].pageX,e.originalEvent.touches[n.t].pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};this.t=t.c.t(e);r(e);t.c.d.bind("touchmove.k",r).bind("touchend.k",function(){t.c.d.unbind("touchmove.k touchend.k");n.val(n.cv)});return this};this._mouse=function(e){var r=function(e){var t=n.xy2val(e.pageX,e.pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};r(e);t.c.d.bind("mousemove.k",r).bind("keyup.k",function(e){if(e.keyCode===27){t.c.d.unbind("mouseup.k mousemove.k keyup.k");if(n.eH&&n.eH()===false)return;n.cancel()}}).bind("mouseup.k",function(e){t.c.d.unbind("mousemove.k mouseup.k keyup.k");n.val(n.cv)});return this};this._xy=function(){var e=this.$c.offset();this.x=e.left;this.y=e.top;return this};this._listen=function(){if(!this.o.readOnly){this.$c.bind("mousedown",function(e){e.preventDefault();n._xy()._mouse(e)}).bind("touchstart",function(e){e.preventDefault();n._xy()._touch(e)});this.listen()}else{this.$.attr("readonly","readonly")}if(this.relative){e(window).resize(function(){n._carve().init();n._draw()})}return this};this._configure=function(){if(this.o.draw)this.dH=this.o.draw;if(this.o.change)this.cH=this.o.change;if(this.o.cancel)this.eH=this.o.cancel;if(this.o.release)this.rH=this.o.release;if(this.o.displayPrevious){this.pColor=this.h2rgba(this.o.fgColor,"0.4");this.fgColor=this.h2rgba(this.o.fgColor,"0.6")}else{this.fgColor=this.o.fgColor}return this};this._clear=function(){this.$c[0].width=this.$c[0].width};this._validate=function(e){var t=~~((e<0?-.5:.5)+e/this.o.step)*this.o.step;return Math.round(t*100)/100};this.listen=function(){};this.extend=function(){};this.init=function(){};this.change=function(e){};this.val=function(e){};this.xy2val=function(e,t){};this.draw=function(){};this.clear=function(){this._clear()};this.h2rgba=function(e,t){var n;e=e.substring(1,7);n=[parseInt(e.substring(0,2),16),parseInt(e.substring(2,4),16),parseInt(e.substring(4,6),16)];return"rgba("+n[0]+","+n[1]+","+n[2]+","+t+")"};this.copy=function(e,t){for(var n in e){t[n]=e[n]}}};t.Dial=function(){t.o.call(this);this.startAngle=null;this.xy=null;this.radius=null;this.lineWidth=null;this.cursorExt=null;this.w2=null;this.PI2=2*Math.PI;this.extend=function(){this.o=e.extend({bgColor:this.$.data("bgcolor")||"#EEEEEE",angleOffset:this.$.data("angleoffset")||0,angleArc:this.$.data("anglearc")||360,inline:true},this.o)};this.val=function(e,t){if(null!=e){e=this.o.parse(e);if(t!==false&&e!=this.v&&this.rH&&this.rH(e)===false){return}this.cv=this.o.stopper?n(r(e,this.o.max),this.o.min):e;this.v=this.cv;this.$.val(this.o.format(this.v));this._draw()}else{return this.v}};this.xy2val=function(e,t){var i,s;i=Math.atan2(e-(this.x+this.w2),-(t-this.y-this.w2))-this.angleOffset;if(this.o.flip){i=this.angleArc-i-this.PI2}if(this.angleArc!=this.PI2&&i<0&&i>-.5){i=0}else if(i<0){i+=this.PI2}s=i*(this.o.max-this.o.min)/this.angleArc+this.o.min;this.o.stopper&&(s=n(r(s,this.o.max),this.o.min));return s};this.listen=function(){var t=this,i,s,o=function(e){e.preventDefault();var o=e.originalEvent,u=o.detail||o.wheelDeltaX,a=o.detail||o.wheelDeltaY,f=t._validate(t.o.parse(t.$.val()))+(u>0||a>0?t.o.step:u<0||a<0?-t.o.step:0);f=n(r(f,t.o.max),t.o.min);t.val(f,false);if(t.rH){clearTimeout(i);i=setTimeout(function(){t.rH(f);i=null},100);if(!s){s=setTimeout(function(){if(i)t.rH(f);s=null},200)}}},u,a,f=1,l={37:-t.o.step,38:t.o.step,39:t.o.step,40:-t.o.step};this.$.bind("keydown",function(i){var s=i.keyCode;if(s>=96&&s<=105){s=i.keyCode=s-48}u=parseInt(String.fromCharCode(s));if(isNaN(u)){s!==13&&s!==8&&s!==9&&s!==189&&(s!==190||t.$.val().match(/\./))&&i.preventDefault();if(e.inArray(s,[37,38,39,40])>-1){i.preventDefault();var o=t.o.parse(t.$.val())+l[s]*f;t.o.stopper&&(o=n(r(o,t.o.max),t.o.min));t.change(t._validate(o));t._draw();a=window.setTimeout(function(){f*=2},30)}}}).bind("keyup",function(e){if(isNaN(u)){if(a){window.clearTimeout(a);a=null;f=1;t.val(t.$.val())}}else{t.$.val()>t.o.max&&t.$.val(t.o.max)||t.$.val()<t.o.min&&t.$.val(t.o.min)}});this.$c.bind("mousewheel DOMMouseScroll",o);this.$.bind("mousewheel DOMMouseScroll",o)};this.init=function(){if(this.v<this.o.min||this.v>this.o.max){this.v=this.o.min}this.$.val(this.v);this.w2=this.w/2;this.cursorExt=this.o.cursor/100;this.xy=this.w2*this.scale;this.lineWidth=this.xy*this.o.thickness;this.lineCap=this.o.lineCap;this.radius=this.xy-this.lineWidth/2;this.o.angleOffset&&(this.o.angleOffset=isNaN(this.o.angleOffset)?0:this.o.angleOffset);this.o.angleArc&&(this.o.angleArc=isNaN(this.o.angleArc)?this.PI2:this.o.angleArc);this.angleOffset=this.o.angleOffset*Math.PI/180;this.angleArc=this.o.angleArc*Math.PI/180;this.startAngle=1.5*Math.PI+this.angleOffset;this.endAngle=1.5*Math.PI+this.angleOffset+this.angleArc;var e=n(String(Math.abs(this.o.max)).length,String(Math.abs(this.o.min)).length,2)+2;this.o.displayInput&&this.i.css({width:(this.w/2+4>>0)+"px",height:(this.w/3>>0)+"px",position:"absolute","vertical-align":"middle","margin-top":(this.w/3>>0)+"px","margin-left":"-"+(this.w*3/4+2>>0)+"px",border:0,background:"none",font:this.o.fontWeight+" "+(this.w/e>>0)+"px "+this.o.font,"text-align":"center",color:this.o.inputColor||this.o.fgColor,padding:"0px","-webkit-appearance":"none"})||this.i.css({width:"0px",visibility:"hidden"})};this.change=function(e){this.cv=e;this.$.val(this.o.format(e))};this.angle=function(e){return(e-this.o.min)*this.angleArc/(this.o.max-this.o.min)};this.arc=function(e){var t,n;e=this.angle(e);if(this.o.flip){t=this.endAngle+1e-5;n=t-e-1e-5}else{t=this.startAngle-1e-5;n=t+e+1e-5}this.o.cursor&&(t=n-this.cursorExt)&&(n=n+this.cursorExt);return{s:t,e:n,d:this.o.flip&&!this.o.cursor}};this.draw=function(){var e=this.g,t=this.arc(this.cv),n,r=1;e.lineWidth=this.lineWidth;e.lineCap=this.lineCap;if(this.o.bgColor!=="none"){e.beginPath();e.strokeStyle=this.o.bgColor;e.arc(this.xy,this.xy,this.radius,this.endAngle-1e-5,this.startAngle+1e-5,true);e.stroke()}if(this.o.displayPrevious){n=this.arc(this.v);e.beginPath();e.strokeStyle=this.pColor;e.arc(this.xy,this.xy,this.radius,n.s,n.e,n.d);e.stroke();r=this.cv==this.v}e.beginPath();e.strokeStyle=r?this.o.fgColor:this.fgColor;e.arc(this.xy,this.xy,this.radius,t.s,t.e,t.d);e.stroke()};this.cancel=function(){this.val(this.v)}};e.fn.dial=e.fn.knob=function(n){return this.each(function(){var r=new t.Dial;r.o=n;r.$=e(this);r.run()}).parent()}})
          \ No newline at end of file
          diff --git a/public/theme/jquery-knob/excanvas.js b/public/theme/jquery-knob/excanvas.js
          new file mode 100644
          index 0000000..367764b
          --- /dev/null
          +++ b/public/theme/jquery-knob/excanvas.js
          @@ -0,0 +1,924 @@
          +// Copyright 2006 Google Inc.
          +//
          +// Licensed under the Apache License, Version 2.0 (the "License");
          +// you may not use this file except in compliance with the License.
          +// You may obtain a copy of the License at
          +//
          +//   http://www.apache.org/licenses/LICENSE-2.0
          +//
          +// Unless required by applicable law or agreed to in writing, software
          +// distributed under the License is distributed on an "AS IS" BASIS,
          +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          +// See the License for the specific language governing permissions and
          +// limitations under the License.
          +
          +
          +// Known Issues:
          +//
          +// * Patterns are not implemented.
          +// * Radial gradient are not implemented. The VML version of these look very
          +//   different from the canvas one.
          +// * Clipping paths are not implemented.
          +// * Coordsize. The width and height attribute have higher priority than the
          +//   width and height style values which isn't correct.
          +// * Painting mode isn't implemented.
          +// * Canvas width/height should is using content-box by default. IE in
          +//   Quirks mode will draw the canvas using border-box. Either change your
          +//   doctype to HTML5
          +//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
          +//   or use Box Sizing Behavior from WebFX
          +//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
          +// * Non uniform scaling does not correctly scale strokes.
          +// * Optimize. There is always room for speed improvements.
          +
          +// Only add this code if we do not already have a canvas implementation
          +if (!document.createElement('canvas').getContext) {
          +
          +(function() {
          +
          +  // alias some functions to make (compiled) code shorter
          +  var m = Math;
          +  var mr = m.round;
          +  var ms = m.sin;
          +  var mc = m.cos;
          +  var abs = m.abs;
          +  var sqrt = m.sqrt;
          +
          +  // this is used for sub pixel precision
          +  var Z = 10;
          +  var Z2 = Z / 2;
          +
          +  /**
          +   * This funtion is assigned to the <canvas> elements as element.getContext().
          +   * @this {HTMLElement}
          +   * @return {CanvasRenderingContext2D_}
          +   */
          +  function getContext() {
          +    return this.context_ ||
          +        (this.context_ = new CanvasRenderingContext2D_(this));
          +  }
          +
          +  var slice = Array.prototype.slice;
          +
          +  /**
          +   * Binds a function to an object. The returned function will always use the
          +   * passed in {@code obj} as {@code this}.
          +   *
          +   * Example:
          +   *
          +   *   g = bind(f, obj, a, b)
          +   *   g(c, d) // will do f.call(obj, a, b, c, d)
          +   *
          +   * @param {Function} f The function to bind the object to
          +   * @param {Object} obj The object that should act as this when the function
          +   *     is called
          +   * @param {*} var_args Rest arguments that will be used as the initial
          +   *     arguments when the function is called
          +   * @return {Function} A new function that has bound this
          +   */
          +  function bind(f, obj, var_args) {
          +    var a = slice.call(arguments, 2);
          +    return function() {
          +      return f.apply(obj, a.concat(slice.call(arguments)));
          +    };
          +  }
          +
          +  var G_vmlCanvasManager_ = {
          +    init: function(opt_doc) {
          +      if (/MSIE/.test(navigator.userAgent) && !window.opera) {
          +        var doc = opt_doc || document;
          +        // Create a dummy element so that IE will allow canvas elements to be
          +        // recognized.
          +        doc.createElement('canvas');
          +        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
          +      }
          +    },
          +
          +    init_: function(doc) {
          +      // create xmlns
          +      if (!doc.namespaces['g_vml_']) {
          +        doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',
          +                           '#default#VML');
          +
          +      }
          +      if (!doc.namespaces['g_o_']) {
          +        doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',
          +                           '#default#VML');
          +      }
          +
          +      // Setup default CSS.  Only add one style sheet per document
          +      if (!doc.styleSheets['ex_canvas_']) {
          +        var ss = doc.createStyleSheet();
          +        ss.owningElement.id = 'ex_canvas_';
          +        ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
          +            // default size is 300x150 in Gecko and Opera
          +            'text-align:left;width:300px;height:150px}' +
          +            'g_vml_\\:*{behavior:url(#default#VML)}' +
          +            'g_o_\\:*{behavior:url(#default#VML)}';
          +
          +      }
          +
          +      // find all canvas elements
          +      var els = doc.getElementsByTagName('canvas');
          +      for (var i = 0; i < els.length; i++) {
          +        this.initElement(els[i]);
          +      }
          +    },
          +
          +    /**
          +     * Public initializes a canvas element so that it can be used as canvas
          +     * element from now on. This is called automatically before the page is
          +     * loaded but if you are creating elements using createElement you need to
          +     * make sure this is called on the element.
          +     * @param {HTMLElement} el The canvas element to initialize.
          +     * @return {HTMLElement} the element that was created.
          +     */
          +    initElement: function(el) {
          +      if (!el.getContext) {
          +
          +        el.getContext = getContext;
          +
          +        // Remove fallback content. There is no way to hide text nodes so we
          +        // just remove all childNodes. We could hide all elements and remove
          +        // text nodes but who really cares about the fallback content.
          +        el.innerHTML = '';
          +
          +        // do not use inline function because that will leak memory
          +        el.attachEvent('onpropertychange', onPropertyChange);
          +        el.attachEvent('onresize', onResize);
          +
          +        var attrs = el.attributes;
          +        if (attrs.width && attrs.width.specified) {
          +          // TODO: use runtimeStyle and coordsize
          +          // el.getContext().setWidth_(attrs.width.nodeValue);
          +          el.style.width = attrs.width.nodeValue + 'px';
          +        } else {
          +          el.width = el.clientWidth;
          +        }
          +        if (attrs.height && attrs.height.specified) {
          +          // TODO: use runtimeStyle and coordsize
          +          // el.getContext().setHeight_(attrs.height.nodeValue);
          +          el.style.height = attrs.height.nodeValue + 'px';
          +        } else {
          +          el.height = el.clientHeight;
          +        }
          +        //el.getContext().setCoordsize_()
          +      }
          +      return el;
          +    }
          +  };
          +
          +  function onPropertyChange(e) {
          +    var el = e.srcElement;
          +
          +    switch (e.propertyName) {
          +      case 'width':
          +        el.style.width = el.attributes.width.nodeValue + 'px';
          +        el.getContext().clearRect();
          +        break;
          +      case 'height':
          +        el.style.height = el.attributes.height.nodeValue + 'px';
          +        el.getContext().clearRect();
          +        break;
          +    }
          +  }
          +
          +  function onResize(e) {
          +    var el = e.srcElement;
          +    if (el.firstChild) {
          +      el.firstChild.style.width =  el.clientWidth + 'px';
          +      el.firstChild.style.height = el.clientHeight + 'px';
          +    }
          +  }
          +
          +  G_vmlCanvasManager_.init();
          +
          +  // precompute "00" to "FF"
          +  var dec2hex = [];
          +  for (var i = 0; i < 16; i++) {
          +    for (var j = 0; j < 16; j++) {
          +      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);
          +    }
          +  }
          +
          +  function createMatrixIdentity() {
          +    return [
          +      [1, 0, 0],
          +      [0, 1, 0],
          +      [0, 0, 1]
          +    ];
          +  }
          +
          +  function matrixMultiply(m1, m2) {
          +    var result = createMatrixIdentity();
          +
          +    for (var x = 0; x < 3; x++) {
          +      for (var y = 0; y < 3; y++) {
          +        var sum = 0;
          +
          +        for (var z = 0; z < 3; z++) {
          +          sum += m1[x][z] * m2[z][y];
          +        }
          +
          +        result[x][y] = sum;
          +      }
          +    }
          +    return result;
          +  }
          +
          +  function copyState(o1, o2) {
          +    o2.fillStyle     = o1.fillStyle;
          +    o2.lineCap       = o1.lineCap;
          +    o2.lineJoin      = o1.lineJoin;
          +    o2.lineWidth     = o1.lineWidth;
          +    o2.miterLimit    = o1.miterLimit;
          +    o2.shadowBlur    = o1.shadowBlur;
          +    o2.shadowColor   = o1.shadowColor;
          +    o2.shadowOffsetX = o1.shadowOffsetX;
          +    o2.shadowOffsetY = o1.shadowOffsetY;
          +    o2.strokeStyle   = o1.strokeStyle;
          +    o2.globalAlpha   = o1.globalAlpha;
          +    o2.arcScaleX_    = o1.arcScaleX_;
          +    o2.arcScaleY_    = o1.arcScaleY_;
          +    o2.lineScale_    = o1.lineScale_;
          +  }
          +
          +  function processStyle(styleString) {
          +    var str, alpha = 1;
          +
          +    styleString = String(styleString);
          +    if (styleString.substring(0, 3) == 'rgb') {
          +      var start = styleString.indexOf('(', 3);
          +      var end = styleString.indexOf(')', start + 1);
          +      var guts = styleString.substring(start + 1, end).split(',');
          +
          +      str = '#';
          +      for (var i = 0; i < 3; i++) {
          +        str += dec2hex[Number(guts[i])];
          +      }
          +
          +      if (guts.length == 4 && styleString.substr(3, 1) == 'a') {
          +        alpha = guts[3];
          +      }
          +    } else {
          +      str = styleString;
          +    }
          +
          +    return {color: str, alpha: alpha};
          +  }
          +
          +  function processLineCap(lineCap) {
          +    switch (lineCap) {
          +      case 'butt':
          +        return 'flat';
          +      case 'round':
          +        return 'round';
          +      case 'square':
          +      default:
          +        return 'square';
          +    }
          +  }
          +
          +  /**
          +   * This class implements CanvasRenderingContext2D interface as described by
          +   * the WHATWG.
          +   * @param {HTMLElement} surfaceElement The element that the 2D context should
          +   * be associated with
          +   */
          +  function CanvasRenderingContext2D_(surfaceElement) {
          +    this.m_ = createMatrixIdentity();
          +
          +    this.mStack_ = [];
          +    this.aStack_ = [];
          +    this.currentPath_ = [];
          +
          +    // Canvas context properties
          +    this.strokeStyle = '#000';
          +    this.fillStyle = '#000';
          +
          +    this.lineWidth = 1;
          +    this.lineJoin = 'miter';
          +    this.lineCap = 'butt';
          +    this.miterLimit = Z * 1;
          +    this.globalAlpha = 1;
          +    this.canvas = surfaceElement;
          +
          +    var el = surfaceElement.ownerDocument.createElement('div');
          +    el.style.width =  surfaceElement.clientWidth + 'px';
          +    el.style.height = surfaceElement.clientHeight + 'px';
          +    el.style.overflow = 'hidden';
          +    el.style.position = 'absolute';
          +    surfaceElement.appendChild(el);
          +
          +    this.element_ = el;
          +    this.arcScaleX_ = 1;
          +    this.arcScaleY_ = 1;
          +    this.lineScale_ = 1;
          +  }
          +
          +  var contextPrototype = CanvasRenderingContext2D_.prototype;
          +  contextPrototype.clearRect = function() {
          +    this.element_.innerHTML = '';
          +  };
          +
          +  contextPrototype.beginPath = function() {
          +    // TODO: Branch current matrix so that save/restore has no effect
          +    //       as per safari docs.
          +    this.currentPath_ = [];
          +  };
          +
          +  contextPrototype.moveTo = function(aX, aY) {
          +    var p = this.getCoords_(aX, aY);
          +    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
          +    this.currentX_ = p.x;
          +    this.currentY_ = p.y;
          +  };
          +
          +  contextPrototype.lineTo = function(aX, aY) {
          +    var p = this.getCoords_(aX, aY);
          +    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
          +
          +    this.currentX_ = p.x;
          +    this.currentY_ = p.y;
          +  };
          +
          +  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
          +                                            aCP2x, aCP2y,
          +                                            aX, aY) {
          +    var p = this.getCoords_(aX, aY);
          +    var cp1 = this.getCoords_(aCP1x, aCP1y);
          +    var cp2 = this.getCoords_(aCP2x, aCP2y);
          +    bezierCurveTo(this, cp1, cp2, p);
          +  };
          +
          +  // Helper function that takes the already fixed cordinates.
          +  function bezierCurveTo(self, cp1, cp2, p) {
          +    self.currentPath_.push({
          +      type: 'bezierCurveTo',
          +      cp1x: cp1.x,
          +      cp1y: cp1.y,
          +      cp2x: cp2.x,
          +      cp2y: cp2.y,
          +      x: p.x,
          +      y: p.y
          +    });
          +    self.currentX_ = p.x;
          +    self.currentY_ = p.y;
          +  }
          +
          +  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
          +    // the following is lifted almost directly from
          +    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
          +
          +    var cp = this.getCoords_(aCPx, aCPy);
          +    var p = this.getCoords_(aX, aY);
          +
          +    var cp1 = {
          +      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
          +      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
          +    };
          +    var cp2 = {
          +      x: cp1.x + (p.x - this.currentX_) / 3.0,
          +      y: cp1.y + (p.y - this.currentY_) / 3.0
          +    };
          +
          +    bezierCurveTo(this, cp1, cp2, p);
          +  };
          +
          +  contextPrototype.arc = function(aX, aY, aRadius,
          +                                  aStartAngle, aEndAngle, aClockwise) {
          +    aRadius *= Z;
          +    var arcType = aClockwise ? 'at' : 'wa';
          +
          +    var xStart = aX + mc(aStartAngle) * aRadius - Z2;
          +    var yStart = aY + ms(aStartAngle) * aRadius - Z2;
          +
          +    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
          +    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
          +
          +    // IE won't render arches drawn counter clockwise if xStart == xEnd.
          +    if (xStart == xEnd && !aClockwise) {
          +      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
          +                       // that can be represented in binary
          +    }
          +
          +    var p = this.getCoords_(aX, aY);
          +    var pStart = this.getCoords_(xStart, yStart);
          +    var pEnd = this.getCoords_(xEnd, yEnd);
          +
          +    this.currentPath_.push({type: arcType,
          +                           x: p.x,
          +                           y: p.y,
          +                           radius: aRadius,
          +                           xStart: pStart.x,
          +                           yStart: pStart.y,
          +                           xEnd: pEnd.x,
          +                           yEnd: pEnd.y});
          +
          +  };
          +
          +  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
          +    this.moveTo(aX, aY);
          +    this.lineTo(aX + aWidth, aY);
          +    this.lineTo(aX + aWidth, aY + aHeight);
          +    this.lineTo(aX, aY + aHeight);
          +    this.closePath();
          +  };
          +
          +  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
          +    var oldPath = this.currentPath_;
          +    this.beginPath();
          +
          +    this.moveTo(aX, aY);
          +    this.lineTo(aX + aWidth, aY);
          +    this.lineTo(aX + aWidth, aY + aHeight);
          +    this.lineTo(aX, aY + aHeight);
          +    this.closePath();
          +    this.stroke();
          +
          +    this.currentPath_ = oldPath;
          +  };
          +
          +  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
          +    var oldPath = this.currentPath_;
          +    this.beginPath();
          +
          +    this.moveTo(aX, aY);
          +    this.lineTo(aX + aWidth, aY);
          +    this.lineTo(aX + aWidth, aY + aHeight);
          +    this.lineTo(aX, aY + aHeight);
          +    this.closePath();
          +    this.fill();
          +
          +    this.currentPath_ = oldPath;
          +  };
          +
          +  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
          +    var gradient = new CanvasGradient_('gradient');
          +    gradient.x0_ = aX0;
          +    gradient.y0_ = aY0;
          +    gradient.x1_ = aX1;
          +    gradient.y1_ = aY1;
          +    return gradient;
          +  };
          +
          +  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
          +                                                   aX1, aY1, aR1) {
          +    var gradient = new CanvasGradient_('gradientradial');
          +    gradient.x0_ = aX0;
          +    gradient.y0_ = aY0;
          +    gradient.r0_ = aR0;
          +    gradient.x1_ = aX1;
          +    gradient.y1_ = aY1;
          +    gradient.r1_ = aR1;
          +    return gradient;
          +  };
          +
          +  contextPrototype.drawImage = function(image, var_args) {
          +    var dx, dy, dw, dh, sx, sy, sw, sh;
          +
          +    // to find the original width we overide the width and height
          +    var oldRuntimeWidth = image.runtimeStyle.width;
          +    var oldRuntimeHeight = image.runtimeStyle.height;
          +    image.runtimeStyle.width = 'auto';
          +    image.runtimeStyle.height = 'auto';
          +
          +    // get the original size
          +    var w = image.width;
          +    var h = image.height;
          +
          +    // and remove overides
          +    image.runtimeStyle.width = oldRuntimeWidth;
          +    image.runtimeStyle.height = oldRuntimeHeight;
          +
          +    if (arguments.length == 3) {
          +      dx = arguments[1];
          +      dy = arguments[2];
          +      sx = sy = 0;
          +      sw = dw = w;
          +      sh = dh = h;
          +    } else if (arguments.length == 5) {
          +      dx = arguments[1];
          +      dy = arguments[2];
          +      dw = arguments[3];
          +      dh = arguments[4];
          +      sx = sy = 0;
          +      sw = w;
          +      sh = h;
          +    } else if (arguments.length == 9) {
          +      sx = arguments[1];
          +      sy = arguments[2];
          +      sw = arguments[3];
          +      sh = arguments[4];
          +      dx = arguments[5];
          +      dy = arguments[6];
          +      dw = arguments[7];
          +      dh = arguments[8];
          +    } else {
          +      throw Error('Invalid number of arguments');
          +    }
          +
          +    var d = this.getCoords_(dx, dy);
          +
          +    var w2 = sw / 2;
          +    var h2 = sh / 2;
          +
          +    var vmlStr = [];
          +
          +    var W = 10;
          +    var H = 10;
          +
          +    // For some reason that I've now forgotten, using divs didn't work
          +    vmlStr.push(' <g_vml_:group',
          +                ' coordsize="', Z * W, ',', Z * H, '"',
          +                ' coordorigin="0,0"' ,
          +                ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
          +
          +    // If filters are necessary (rotation exists), create them
          +    // filters are bog-slow, so only create them if abbsolutely necessary
          +    // The following check doesn't account for skews (which don't exist
          +    // in the canvas spec (yet) anyway.
          +
          +    if (this.m_[0][0] != 1 || this.m_[0][1]) {
          +      var filter = [];
          +
          +      // Note the 12/21 reversal
          +      filter.push('M11=', this.m_[0][0], ',',
          +                  'M12=', this.m_[1][0], ',',
          +                  'M21=', this.m_[0][1], ',',
          +                  'M22=', this.m_[1][1], ',',
          +                  'Dx=', mr(d.x / Z), ',',
          +                  'Dy=', mr(d.y / Z), '');
          +
          +      // Bounding box calculation (need to minimize displayed area so that
          +      // filters don't waste time on unused pixels.
          +      var max = d;
          +      var c2 = this.getCoords_(dx + dw, dy);
          +      var c3 = this.getCoords_(dx, dy + dh);
          +      var c4 = this.getCoords_(dx + dw, dy + dh);
          +
          +      max.x = m.max(max.x, c2.x, c3.x, c4.x);
          +      max.y = m.max(max.y, c2.y, c3.y, c4.y);
          +
          +      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
          +                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
          +                  filter.join(''), ", sizingmethod='clip');")
          +    } else {
          +      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
          +    }
          +
          +    vmlStr.push(' ">' ,
          +                '<g_vml_:image src="', image.src, '"',
          +                ' style="width:', Z * dw, 'px;',
          +                ' height:', Z * dh, 'px;"',
          +                ' cropleft="', sx / w, '"',
          +                ' croptop="', sy / h, '"',
          +                ' cropright="', (w - sx - sw) / w, '"',
          +                ' cropbottom="', (h - sy - sh) / h, '"',
          +                ' />',
          +                '</g_vml_:group>');
          +
          +    this.element_.insertAdjacentHTML('BeforeEnd',
          +                                    vmlStr.join(''));
          +  };
          +
          +  contextPrototype.stroke = function(aFill) {
          +    var lineStr = [];
          +    var lineOpen = false;
          +    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);
          +    var color = a.color;
          +    var opacity = a.alpha * this.globalAlpha;
          +
          +    var W = 10;
          +    var H = 10;
          +
          +    lineStr.push('<g_vml_:shape',
          +                 ' filled="', !!aFill, '"',
          +                 ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
          +                 ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"',
          +                 ' stroked="', !aFill, '"',
          +                 ' path="');
          +
          +    var newSeq = false;
          +    var min = {x: null, y: null};
          +    var max = {x: null, y: null};
          +
          +    for (var i = 0; i < this.currentPath_.length; i++) {
          +      var p = this.currentPath_[i];
          +      var c;
          +
          +      switch (p.type) {
          +        case 'moveTo':
          +          c = p;
          +          lineStr.push(' m ', mr(p.x), ',', mr(p.y));
          +          break;
          +        case 'lineTo':
          +          lineStr.push(' l ', mr(p.x), ',', mr(p.y));
          +          break;
          +        case 'close':
          +          lineStr.push(' x ');
          +          p = null;
          +          break;
          +        case 'bezierCurveTo':
          +          lineStr.push(' c ',
          +                       mr(p.cp1x), ',', mr(p.cp1y), ',',
          +                       mr(p.cp2x), ',', mr(p.cp2y), ',',
          +                       mr(p.x), ',', mr(p.y));
          +          break;
          +        case 'at':
          +        case 'wa':
          +          lineStr.push(' ', p.type, ' ',
          +                       mr(p.x - this.arcScaleX_ * p.radius), ',',
          +                       mr(p.y - this.arcScaleY_ * p.radius), ' ',
          +                       mr(p.x + this.arcScaleX_ * p.radius), ',',
          +                       mr(p.y + this.arcScaleY_ * p.radius), ' ',
          +                       mr(p.xStart), ',', mr(p.yStart), ' ',
          +                       mr(p.xEnd), ',', mr(p.yEnd));
          +          break;
          +      }
          +
          +
          +      // TODO: Following is broken for curves due to
          +      //       move to proper paths.
          +
          +      // Figure out dimensions so we can do gradient fills
          +      // properly
          +      if (p) {
          +        if (min.x == null || p.x < min.x) {
          +          min.x = p.x;
          +        }
          +        if (max.x == null || p.x > max.x) {
          +          max.x = p.x;
          +        }
          +        if (min.y == null || p.y < min.y) {
          +          min.y = p.y;
          +        }
          +        if (max.y == null || p.y > max.y) {
          +          max.y = p.y;
          +        }
          +      }
          +    }
          +    lineStr.push(' ">');
          +
          +    if (!aFill) {
          +      var lineWidth = this.lineScale_ * this.lineWidth;
          +
          +      // VML cannot correctly render a line if the width is less than 1px.
          +      // In that case, we dilute the color to make the line look thinner.
          +      if (lineWidth < 1) {
          +        opacity *= lineWidth;
          +      }
          +
          +      lineStr.push(
          +        '<g_vml_:stroke',
          +        ' opacity="', opacity, '"',
          +        ' joinstyle="', this.lineJoin, '"',
          +        ' miterlimit="', this.miterLimit, '"',
          +        ' endcap="', processLineCap(this.lineCap), '"',
          +        ' weight="', lineWidth, 'px"',
          +        ' color="', color, '" />'
          +      );
          +    } else if (typeof this.fillStyle == 'object') {
          +      var fillStyle = this.fillStyle;
          +      var angle = 0;
          +      var focus = {x: 0, y: 0};
          +
          +      // additional offset
          +      var shift = 0;
          +      // scale factor for offset
          +      var expansion = 1;
          +
          +      if (fillStyle.type_ == 'gradient') {
          +        var x0 = fillStyle.x0_ / this.arcScaleX_;
          +        var y0 = fillStyle.y0_ / this.arcScaleY_;
          +        var x1 = fillStyle.x1_ / this.arcScaleX_;
          +        var y1 = fillStyle.y1_ / this.arcScaleY_;
          +        var p0 = this.getCoords_(x0, y0);
          +        var p1 = this.getCoords_(x1, y1);
          +        var dx = p1.x - p0.x;
          +        var dy = p1.y - p0.y;
          +        angle = Math.atan2(dx, dy) * 180 / Math.PI;
          +
          +        // The angle should be a non-negative number.
          +        if (angle < 0) {
          +          angle += 360;
          +        }
          +
          +        // Very small angles produce an unexpected result because they are
          +        // converted to a scientific notation string.
          +        if (angle < 1e-6) {
          +          angle = 0;
          +        }
          +      } else {
          +        var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);
          +        var width  = max.x - min.x;
          +        var height = max.y - min.y;
          +        focus = {
          +          x: (p0.x - min.x) / width,
          +          y: (p0.y - min.y) / height
          +        };
          +
          +        width  /= this.arcScaleX_ * Z;
          +        height /= this.arcScaleY_ * Z;
          +        var dimension = m.max(width, height);
          +        shift = 2 * fillStyle.r0_ / dimension;
          +        expansion = 2 * fillStyle.r1_ / dimension - shift;
          +      }
          +
          +      // We need to sort the color stops in ascending order by offset,
          +      // otherwise IE won't interpret it correctly.
          +      var stops = fillStyle.colors_;
          +      stops.sort(function(cs1, cs2) {
          +        return cs1.offset - cs2.offset;
          +      });
          +
          +      var length = stops.length;
          +      var color1 = stops[0].color;
          +      var color2 = stops[length - 1].color;
          +      var opacity1 = stops[0].alpha * this.globalAlpha;
          +      var opacity2 = stops[length - 1].alpha * this.globalAlpha;
          +
          +      var colors = [];
          +      for (var i = 0; i < length; i++) {
          +        var stop = stops[i];
          +        colors.push(stop.offset * expansion + shift + ' ' + stop.color);
          +      }
          +
          +      // When colors attribute is used, the meanings of opacity and o:opacity2
          +      // are reversed.
          +      lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
          +                   ' method="none" focus="100%"',
          +                   ' color="', color1, '"',
          +                   ' color2="', color2, '"',
          +                   ' colors="', colors.join(','), '"',
          +                   ' opacity="', opacity2, '"',
          +                   ' g_o_:opacity2="', opacity1, '"',
          +                   ' angle="', angle, '"',
          +                   ' focusposition="', focus.x, ',', focus.y, '" />');
          +    } else {
          +      lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
          +                   '" />');
          +    }
          +
          +    lineStr.push('</g_vml_:shape>');
          +
          +    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
          +  };
          +
          +  contextPrototype.fill = function() {
          +    this.stroke(true);
          +  }
          +
          +  contextPrototype.closePath = function() {
          +    this.currentPath_.push({type: 'close'});
          +  };
          +
          +  /**
          +   * @private
          +   */
          +  contextPrototype.getCoords_ = function(aX, aY) {
          +    var m = this.m_;
          +    return {
          +      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
          +      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
          +    }
          +  };
          +
          +  contextPrototype.save = function() {
          +    var o = {};
          +    copyState(this, o);
          +    this.aStack_.push(o);
          +    this.mStack_.push(this.m_);
          +    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
          +  };
          +
          +  contextPrototype.restore = function() {
          +    copyState(this.aStack_.pop(), this);
          +    this.m_ = this.mStack_.pop();
          +  };
          +
          +  function matrixIsFinite(m) {
          +    for (var j = 0; j < 3; j++) {
          +      for (var k = 0; k < 2; k++) {
          +        if (!isFinite(m[j][k]) || isNaN(m[j][k])) {
          +          return false;
          +        }
          +      }
          +    }
          +    return true;
          +  }
          +
          +  function setM(ctx, m, updateLineScale) {
          +    if (!matrixIsFinite(m)) {
          +      return;
          +    }
          +    ctx.m_ = m;
          +
          +    if (updateLineScale) {
          +      // Get the line scale.
          +      // Determinant of this.m_ means how much the area is enlarged by the
          +      // transformation. So its square root can be used as a scale factor
          +      // for width.
          +      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
          +      ctx.lineScale_ = sqrt(abs(det));
          +    }
          +  }
          +
          +  contextPrototype.translate = function(aX, aY) {
          +    var m1 = [
          +      [1,  0,  0],
          +      [0,  1,  0],
          +      [aX, aY, 1]
          +    ];
          +
          +    setM(this, matrixMultiply(m1, this.m_), false);
          +  };
          +
          +  contextPrototype.rotate = function(aRot) {
          +    var c = mc(aRot);
          +    var s = ms(aRot);
          +
          +    var m1 = [
          +      [c,  s, 0],
          +      [-s, c, 0],
          +      [0,  0, 1]
          +    ];
          +
          +    setM(this, matrixMultiply(m1, this.m_), false);
          +  };
          +
          +  contextPrototype.scale = function(aX, aY) {
          +    this.arcScaleX_ *= aX;
          +    this.arcScaleY_ *= aY;
          +    var m1 = [
          +      [aX, 0,  0],
          +      [0,  aY, 0],
          +      [0,  0,  1]
          +    ];
          +
          +    setM(this, matrixMultiply(m1, this.m_), true);
          +  };
          +
          +  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
          +    var m1 = [
          +      [m11, m12, 0],
          +      [m21, m22, 0],
          +      [dx,  dy,  1]
          +    ];
          +
          +    setM(this, matrixMultiply(m1, this.m_), true);
          +  };
          +
          +  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
          +    var m = [
          +      [m11, m12, 0],
          +      [m21, m22, 0],
          +      [dx,  dy,  1]
          +    ];
          +
          +    setM(this, m, true);
          +  };
          +
          +  /******** STUBS ********/
          +  contextPrototype.clip = function() {
          +    // TODO: Implement
          +  };
          +
          +  contextPrototype.arcTo = function() {
          +    // TODO: Implement
          +  };
          +
          +  contextPrototype.createPattern = function() {
          +    return new CanvasPattern_;
          +  };
          +
          +  // Gradient / Pattern Stubs
          +  function CanvasGradient_(aType) {
          +    this.type_ = aType;
          +    this.x0_ = 0;
          +    this.y0_ = 0;
          +    this.r0_ = 0;
          +    this.x1_ = 0;
          +    this.y1_ = 0;
          +    this.r1_ = 0;
          +    this.colors_ = [];
          +  }
          +
          +  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
          +    aColor = processStyle(aColor);
          +    this.colors_.push({offset: aOffset,
          +                       color: aColor.color,
          +                       alpha: aColor.alpha});
          +  };
          +
          +  function CanvasPattern_() {}
          +
          +  // set up externs
          +  G_vmlCanvasManager = G_vmlCanvasManager_;
          +  CanvasRenderingContext2D = CanvasRenderingContext2D_;
          +  CanvasGradient = CanvasGradient_;
          +  CanvasPattern = CanvasPattern_;
          +
          +})();
          +
          +} // if
          diff --git a/public/theme/jquery-knob/index.html b/public/theme/jquery-knob/index.html
          new file mode 100644
          index 0000000..f5ecfc7
          --- /dev/null
          +++ b/public/theme/jquery-knob/index.html
          @@ -0,0 +1,303 @@
          +<!DOCTYPE html>
          +<html>
          +    <head>
          +        <title>jQuery Knob demo</title>
          +        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
          +        <!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->
          +        <script src="dist/jquery.knob.min.js"></script>
          +        <script>
          +            $(function($) {
          +
          +                $(".knob").knob({
          +                    change : function (value) {
          +                        //console.log("change : " + value);
          +                    },
          +                    release : function (value) {
          +                        //console.log(this.$.attr('value'));
          +                        console.log("release : " + value);
          +                    },
          +                    cancel : function () {
          +                        console.log("cancel : ", this);
          +                    },
          +                    /*format : function (value) {
          +                        return value + '%';
          +                    },*/
          +                    draw : function () {
          +
          +                        // "tron" case
          +                        if(this.$.data('skin') == 'tron') {
          +
          +                            this.cursorExt = 0.3;
          +
          +                            var a = this.arc(this.cv)  // Arc
          +                                , pa                   // Previous arc
          +                                , r = 1;
          +
          +                            this.g.lineWidth = this.lineWidth;
          +
          +                            if (this.o.displayPrevious) {
          +                                pa = this.arc(this.v);
          +                                this.g.beginPath();
          +                                this.g.strokeStyle = this.pColor;
          +                                this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, pa.s, pa.e, pa.d);
          +                                this.g.stroke();
          +                            }
          +
          +                            this.g.beginPath();
          +                            this.g.strokeStyle = r ? this.o.fgColor : this.fgColor ;
          +                            this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d);
          +                            this.g.stroke();
          +
          +                            this.g.lineWidth = 2;
          +                            this.g.beginPath();
          +                            this.g.strokeStyle = this.o.fgColor;
          +                            this.g.arc( this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false);
          +                            this.g.stroke();
          +
          +                            return false;
          +                        }
          +                    }
          +                });
          +
          +                // Example of infinite knob, iPod click wheel
          +                var v, up=0,down=0,i=0
          +                    ,$idir = $("div.idir")
          +                    ,$ival = $("div.ival")
          +                    ,incr = function() { i++; $idir.show().html("+").fadeOut(); $ival.html(i); }
          +                    ,decr = function() { i--; $idir.show().html("-").fadeOut(); $ival.html(i); };
          +                $("input.infinite").knob(
          +                                    {
          +                                    min : 0
          +                                    , max : 20
          +                                    , stopper : false
          +                                    , change : function () {
          +                                                    if(v > this.cv){
          +                                                        if(up){
          +                                                            decr();
          +                                                            up=0;
          +                                                        }else{up=1;down=0;}
          +                                                    } else {
          +                                                        if(v < this.cv){
          +                                                            if(down){
          +                                                                incr();
          +                                                                down=0;
          +                                                            }else{down=1;up=0;}
          +                                                        }
          +                                                    }
          +                                                    v = this.cv;
          +                                                }
          +                                    });
          +            });
          +        </script>
          +        <style>
          +            body{
          +              padding: 0;
          +              margin: 0px 50px;
          +              font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
          +              font-weight: 300;
          +              text-rendering: optimizelegibility;
          +            }
          +            p{font-size: 30px; line-height: 30px}
          +            div.demo{text-align: center; width: 280px; float: left}
          +            div.demo > p{font-size: 20px}
          +        </style>
          +    </head>
          +    <body>
          +        <div style="width:100%;font-size:40px;letter-spacing:-8px;line-height:40px;">
          +            <h1>jQuery Knob</h1>
          +        </div>
          +        <div>
          +            <p>Nice, downward compatible, touchable, jQuery dial. <a href="http://flattr.com/thing/674900/jQuery-Knob" target="_blank"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></p>
          +            <p style="font-size: 20px">* implemented interactions : mouse click and wheel mouse, keyboard (on focus) and fingers (touch events)</p>
          +        </div>
          +        <div class="demo">
          +            <p>&#215; Disable display input</p>
          +            <pre>
          +data-width="100"
          +data-displayInput=false
          +            </pre>
          +            <input class="knob" data-width="100" data-displayInput=false value="35">
          +        </div>
          +        <div class="demo">
          +            <p>&#215; 'cursor' mode</p>
          +            <pre>
          +data-width="150"
          +data-cursor=true
          +data-thickness=.3
          +data-fgColor="#222222"
          +            </pre>
          +            <input class="knob" data-width="150" data-cursor=true data-fgColor="#222222" data-thickness=.3 value="29">
          +        </div>
          +        <div class="demo" >
          +            <p>&#215; Display previous value</p>
          +            <pre>
          +data-displayPrevious=true
          +data-min="-100"
          +            </pre>
          +            <input class="knob" data-width="200" data-min="-100" data-displayPrevious=true value="44">
          +        </div>
          +        <div style="clear:both"></div>
          +        <div class="demo">
          +            <p>&#215; Angle offset</p>
          +            <pre>
          +data-angleOffset=90
          +data-linecap=round
          +            </pre>
          +            <input class="knob" data-angleOffset=90 data-linecap=round value="35">
          +        </div>
          +        <div class="demo">
          +            <p>&#215; Angle offset and arc</p>
          +            <pre>
          +data-fgColor="#66CC66"
          +data-angleOffset=-125
          +data-angleArc=250
          +data-rotation=anticlockwise
          +            </pre>
          +            <input class="knob" data-angleOffset=-125 data-angleArc=250 data-fgColor="#66EE66" data-rotation="anticlockwise" value="35">
          +        </div>
          +        <div class="demo" >
          +            <p>&#215; 4-digit, step 0.1</p>
          +            <pre>
          +data-step=".1"
          +data-min="-10000"
          +data-max="10000"
          +value="0"
          +data-displayPrevious=true
          +            </pre>
          +            <input class="knob" data-min="-10000" data-displayPrevious=true data-max="10000" data-step=".1" value="0">
          +        </div>
          +        <div style="clear:both"></div>
          +        <div style="text-align: center">
          +            <p style="font-size: 20px">&#215; Overloaded 'draw' method</p>
          +        </div>
          +        <div style="background-color: #222; height: 340px">
          +            <div class="demo" style="background-color:#222; color:#FFF;">
          +                <pre>
          +    data-width="75"
          +    data-fgColor="#ffec03"
          +    data-skin="tron"
          +    data-thickness=".2"
          +    data-displayPrevious=true
          +                </pre>
          +                <input class="knob" data-width="75" data-displayPrevious=true data-fgColor="#ffec03" data-skin="tron" data-cursor=true value="75" data-thickness=".2">
          +            </div>
          +            <div class="demo" style="background-color:#222; color:#FFF;">
          +                <pre>
          +    data-width="150"
          +    data-fgColor="#ffec03"
          +    data-skin="tron"
          +    data-thickness=".2"
          +    data-displayPrevious=true
          +                </pre>
          +                <input class="knob" data-width="150" data-displayPrevious=true data-fgColor="#ffec03" data-skin="tron" data-thickness=".2" value="75">
          +            </div>
          +            <div class="demo" style="background-color:#222; color:#FFF;">
          +                <pre>
          +    data-width="150"
          +    data-fgColor="#C0ffff"
          +    data-skin="tron"
          +    data-thickness=".1"
          +    data-angleOffset="180"
          +                </pre>
          +                <input class="knob" data-width="150" data-angleOffset="180" data-fgColor="#C0ffff" data-skin="tron" data-thickness=".1" value="35">
          +            </div>
          +        </div>
          +        <div style="clear:both"></div>
          +        <div class="demo" style="width:100%">
          +            <p>&#215; Responsive</p>
          +            <pre>
          +data-width="80%"
          +            </pre>
          +            <div style="width: 30%; border: 3px dashed; margin-bottom: 20px">
          +                <i>
          +                    Current div width is 30% of window width.<br>
          +                    Knob width is 80% of current div.<br>
          +                    Knob width is 80% of 30% of window width.<br>
          +                    Test resizing window.
          +                </i>
          +                <br>
          +                <br>
          +                <input class="knob" data-width="80%" value="35">
          +            </div>
          +        </div>
          +        <div style="clear:both"></div>
          +        <script>
          +        function clock() {
          +            var $s = $(".second"),
          +                $m = $(".minute"),
          +                $h = $(".hour");
          +                d = new Date(),
          +                s = d.getSeconds(),
          +                m = d.getMinutes(),
          +                h = d.getHours();
          +            $s.val(s).trigger("change");
          +            $m.val(m).trigger("change");
          +            $h.val(h).trigger("change");
          +            setTimeout("clock()", 1000);
          +        }
          +        clock();
          +        </script>
          +        <div class="demo" style="color:#EEE;background:#222;height:420px;width:100%">
          +            <p>&#215; Superpose (clock)</p>
          +            <div style="position:relative;width:350px;margin:auto">
          +                <div style="position:absolute;left:10px;top:10px">
          +                    <input class="knob hour" data-min="0" data-max="24" data-bgColor="#333" data-fgColor="#ffec03" data-displayInput=false data-width="300" data-height="300" data-thickness=".3">
          +                </div>
          +                <div style="position:absolute;left:60px;top:60px">
          +                    <input class="knob minute" data-min="0" data-max="60" data-bgColor="#333" data-displayInput=false data-width="200" data-height="200" data-thickness=".45">
          +                </div>
          +                <div style="position:absolute;left:110px;top:110px">
          +                    <input class="knob second" data-min="0" data-max="60" data-bgColor="#333" data-fgColor="rgb(127, 255, 0)" data-displayInput=false data-width="100" data-height="100" data-thickness=".3">
          +                </div>
          +            </div>
          +        </div>
          +        <div style="clear:both"></div>
          +        <div class="demo">
          +            <p>&#215; Readonly</p>
          +            <pre>
          +readonly (or data-readOnly=true)
          +data-thickness=".4"
          +data-fgColor="chartreuse"
          +            </pre>
          +            <input class="knob" data-fgColor="chartreuse" data-thickness=".4" readonly value="22">
          +        </div>
          +        <div class="demo">
          +            <p>&#215; Dynamic</p>
          +            <pre>
          +data-width="200"
          +            </pre>
          +            <input type="button" onclick="$('.knob-dyn').knob();" value="knobify!">
          +            <input type="text" class="knob-dyn" data-width="200" data-cursor=true value="56">
          +            <pre>
          +data-width="50"
          +data-cursor=true
          +            </pre>
          +            <input type="button" onclick="$('.knob-dyn2').knob();" value="knobify!">
          +            <input type="text" class="knob-dyn2" data-width="50" data-thickness=".4" value="56">
          +        </div>
          +        <div class="demo" style="height:440px;width:300px">
          +            <p>&#215; Infinite || iPod click wheel</p>
          +            <div style="float:left;width:180px;height:320px;padding:20px;background-color:#EEEEEE;text-align:center;">
          +                <pre>
          +data-width="150"
          +data-cursor=true
          +data-thickness=".5"
          +data-fgColor="#AAAAAA"
          +data-bgColor="#FFFFFF"
          +data-displayInput="false"
          ++ some code
          +                </pre>
          +                <input class="infinite" value="0" data-width="150" data-thickness=".5" data-fgColor="#AAAAAA" data-bgColor="#FFFFFF" data-displayInput="false" data-cursor=true>
          +            </div>
          +            <div style="float:left;margin-top:200px;">
          +                <div class="ival" style="width:80px;text-align:center;font-size:50px;color:#AAA">0</div>
          +                <div class="idir" style="width:80px;text-align:center;font-size:50px;"></div>
          +            </div>
          +        </div>
          +        <div style="clear:both"></div>
          +        <div style="margin-top:30px;text-align:center">
          +            <img src="https://raw.github.com/aterrien/jQuery-Knob/master/secretplan.jpg">
          +            <p style="font-size:20px;">jQuery Knob is &copy; 2012 Anthony Terrien - MIT License</p>
          +        </div>
          +    </body>
          +</html>
          diff --git a/public/theme/jquery-knob/js/jquery.knob.js b/public/theme/jquery-knob/js/jquery.knob.js
          new file mode 100644
          index 0000000..792313c
          --- /dev/null
          +++ b/public/theme/jquery-knob/js/jquery.knob.js
          @@ -0,0 +1,805 @@
          +/*!jQuery Knob*/
          +/**
          + * Downward compatible, touchable dial
          + *
          + * Version: 1.2.12
          + * Requires: jQuery v1.7+
          + *
          + * Copyright (c) 2012 Anthony Terrien
          + * Under MIT License (http://www.opensource.org/licenses/mit-license.php)
          + *
          + * Thanks to vor, eskimoblood, spiffistan, FabrizioC
          + */
          +(function (factory) {
          +    if (typeof exports === 'object') {
          +        // CommonJS
          +        module.exports = factory(require('jquery'));
          +    } else if (typeof define === 'function' && define.amd) {
          +        // AMD. Register as an anonymous module.
          +        define(['jquery'], factory);
          +    } else {
          +        // Browser globals
          +        factory(jQuery);
          +    }
          +}(function ($) {
          +
          +    /**
          +     * Kontrol library
          +     */
          +    "use strict";
          +
          +    /**
          +     * Definition of globals and core
          +     */
          +    var k = {}, // kontrol
          +        max = Math.max,
          +        min = Math.min;
          +
          +    k.c = {};
          +    k.c.d = $(document);
          +    k.c.t = function (e) {
          +        return e.originalEvent.touches.length - 1;
          +    };
          +
          +    /**
          +     * Kontrol Object
          +     *
          +     * Definition of an abstract UI control
          +     *
          +     * Each concrete component must call this one.
          +     * <code>
          +     * k.o.call(this);
          +     * </code>
          +     */
          +    k.o = function () {
          +        var s = this;
          +
          +        this.o = null; // array of options
          +        this.$ = null; // jQuery wrapped element
          +        this.i = null; // mixed HTMLInputElement or array of HTMLInputElement
          +        this.g = null; // deprecated 2D graphics context for 'pre-rendering'
          +        this.v = null; // value ; mixed array or integer
          +        this.cv = null; // change value ; not commited value
          +        this.x = 0; // canvas x position
          +        this.y = 0; // canvas y position
          +        this.w = 0; // canvas width
          +        this.h = 0; // canvas height
          +        this.$c = null; // jQuery canvas element
          +        this.c = null; // rendered canvas context
          +        this.t = 0; // touches index
          +        this.isInit = false;
          +        this.fgColor = null; // main color
          +        this.pColor = null; // previous color
          +        this.dH = null; // draw hook
          +        this.cH = null; // change hook
          +        this.eH = null; // cancel hook
          +        this.rH = null; // release hook
          +        this.scale = 1; // scale factor
          +        this.relative = false;
          +        this.relativeWidth = false;
          +        this.relativeHeight = false;
          +        this.$div = null; // component div
          +
          +        this.run = function () {
          +            var cf = function (e, conf) {
          +                var k;
          +                for (k in conf) {
          +                    s.o[k] = conf[k];
          +                }
          +                s._carve().init();
          +                s._configure()
          +                 ._draw();
          +            };
          +
          +            if (this.$.data('kontroled')) return;
          +            this.$.data('kontroled', true);
          +
          +            this.extend();
          +            this.o = $.extend({
          +                    // Config
          +                    min: this.$.data('min') !== undefined ? this.$.data('min') : 0,
          +                    max: this.$.data('max') !== undefined ? this.$.data('max') : 100,
          +                    stopper: true,
          +                    readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'),
          +
          +                    // UI
          +                    cursor: this.$.data('cursor') === true && 30
          +                            || this.$.data('cursor') || 0,
          +                    thickness: this.$.data('thickness')
          +                               && Math.max(Math.min(this.$.data('thickness'), 1), 0.01)
          +                               || 0.35,
          +                    lineCap: this.$.data('linecap') || 'butt',
          +                    width: this.$.data('width') || 200,
          +                    height: this.$.data('height') || 200,
          +                    displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'),
          +                    displayPrevious: this.$.data('displayprevious'),
          +                    fgColor: this.$.data('fgcolor') || '#87CEEB',
          +                    inputColor: this.$.data('inputcolor'),
          +                    font: this.$.data('font') || 'Arial',
          +                    fontWeight: this.$.data('font-weight') || 'bold',
          +                    inline: false,
          +                    step: this.$.data('step') || 1,
          +                    rotation: this.$.data('rotation'),
          +
          +                    // Hooks
          +                    draw: null, // function () {}
          +                    change: null, // function (value) {}
          +                    cancel: null, // function () {}
          +                    release: null, // function (value) {}
          +
          +                    // Output formatting, allows to add unit: %, ms ...
          +                    format: function(v) {
          +                        return v;
          +                    },
          +                    parse: function (v) {
          +                        return parseFloat(v);
          +                    }
          +                }, this.o
          +            );
          +
          +            // finalize options
          +            this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw';
          +            if (!this.o.inputColor) {
          +                this.o.inputColor = this.o.fgColor;
          +            }
          +
          +            // routing value
          +            if (this.$.is('fieldset')) {
          +
          +                // fieldset = array of integer
          +                this.v = {};
          +                this.i = this.$.find('input');
          +                this.i.each(function(k) {
          +                    var $this = $(this);
          +                    s.i[k] = $this;
          +                    s.v[k] = s.o.parse($this.val());
          +
          +                    $this.bind(
          +                        'change blur',
          +                        function () {
          +                            var val = {};
          +                            val[k] = $this.val();
          +                            s.val(s._validate(val));
          +                        }
          +                    );
          +                });
          +                this.$.find('legend').remove();
          +            } else {
          +
          +                // input = integer
          +                this.i = this.$;
          +                this.v = this.o.parse(this.$.val());
          +                this.v === '' && (this.v = this.o.min);
          +                this.$.bind(
          +                    'change blur',
          +                    function () {
          +                        s.val(s._validate(s.o.parse(s.$.val())));
          +                    }
          +                );
          +
          +            }
          +
          +            !this.o.displayInput && this.$.hide();
          +
          +            // adds needed DOM elements (canvas, div)
          +            this.$c = $(document.createElement('canvas')).attr({
          +                width: this.o.width,
          +                height: this.o.height
          +            });
          +
          +            // wraps all elements in a div
          +            // add to DOM before Canvas init is triggered
          +            this.$div = $('<div style="'
          +                + (this.o.inline ? 'display:inline;' : '')
          +                + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;'
          +                + '"></div>');
          +
          +            this.$.wrap(this.$div).before(this.$c);
          +            this.$div = this.$.parent();
          +
          +            if (typeof G_vmlCanvasManager !== 'undefined') {
          +                G_vmlCanvasManager.initElement(this.$c[0]);
          +            }
          +
          +            this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null;
          +
          +            if (!this.c) {
          +                throw {
          +                    name:        "CanvasNotSupportedException",
          +                    message:     "Canvas not supported. Please use excanvas on IE8.0.",
          +                    toString:    function(){return this.name + ": " + this.message}
          +                }
          +            }
          +
          +            // hdpi support
          +            this.scale = (window.devicePixelRatio || 1) / (
          +                            this.c.webkitBackingStorePixelRatio ||
          +                            this.c.mozBackingStorePixelRatio ||
          +                            this.c.msBackingStorePixelRatio ||
          +                            this.c.oBackingStorePixelRatio ||
          +                            this.c.backingStorePixelRatio || 1
          +                         );
          +
          +            // detects relative width / height
          +            this.relativeWidth =  this.o.width % 1 !== 0
          +                                  && this.o.width.indexOf('%');
          +            this.relativeHeight = this.o.height % 1 !== 0
          +                                  && this.o.height.indexOf('%');
          +            this.relative = this.relativeWidth || this.relativeHeight;
          +
          +            // computes size and carves the component
          +            this._carve();
          +
          +            // prepares props for transaction
          +            if (this.v instanceof Object) {
          +                this.cv = {};
          +                this.copy(this.v, this.cv);
          +            } else {
          +                this.cv = this.v;
          +            }
          +
          +            // binds configure event
          +            this.$
          +                .bind("configure", cf)
          +                .parent()
          +                .bind("configure", cf);
          +
          +            // finalize init
          +            this._listen()
          +                ._configure()
          +                ._xy()
          +                .init();
          +
          +            this.isInit = true;
          +
          +            this.$.val(this.o.format(this.v));
          +            this._draw();
          +
          +            return this;
          +        };
          +
          +        this._carve = function() {
          +            if (this.relative) {
          +                var w = this.relativeWidth ?
          +                        this.$div.parent().width() *
          +                        parseInt(this.o.width) / 100
          +                        : this.$div.parent().width(),
          +                    h = this.relativeHeight ?
          +                        this.$div.parent().height() *
          +                        parseInt(this.o.height) / 100
          +                        : this.$div.parent().height();
          +
          +                // apply relative
          +                this.w = this.h = Math.min(w, h);
          +            } else {
          +                this.w = this.o.width;
          +                this.h = this.o.height;
          +            }
          +
          +            // finalize div
          +            this.$div.css({
          +                'width': this.w + 'px',
          +                'height': this.h + 'px'
          +            });
          +
          +            // finalize canvas with computed width
          +            this.$c.attr({
          +                width: this.w,
          +                height: this.h
          +            });
          +
          +            // scaling
          +            if (this.scale !== 1) {
          +                this.$c[0].width = this.$c[0].width * this.scale;
          +                this.$c[0].height = this.$c[0].height * this.scale;
          +                this.$c.width(this.w);
          +                this.$c.height(this.h);
          +            }
          +
          +            return this;
          +        };
          +
          +        this._draw = function () {
          +
          +            // canvas pre-rendering
          +            var d = true;
          +
          +            s.g = s.c;
          +
          +            s.clear();
          +
          +            s.dH && (d = s.dH());
          +
          +            d !== false && s.draw();
          +        };
          +
          +        this._touch = function (e) {
          +            var touchMove = function (e) {
          +                var v = s.xy2val(
          +                            e.originalEvent.touches[s.t].pageX,
          +                            e.originalEvent.touches[s.t].pageY
          +                        );
          +
          +                if (v == s.cv) return;
          +
          +                if (s.cH && s.cH(v) === false) return;
          +
          +                s.change(s._validate(v));
          +                s._draw();
          +            };
          +
          +            // get touches index
          +            this.t = k.c.t(e);
          +
          +            // First touch
          +            touchMove(e);
          +
          +            // Touch events listeners
          +            k.c.d
          +                .bind("touchmove.k", touchMove)
          +                .bind(
          +                    "touchend.k",
          +                    function () {
          +                        k.c.d.unbind('touchmove.k touchend.k');
          +                        s.val(s.cv);
          +                    }
          +                );
          +
          +            return this;
          +        };
          +
          +        this._mouse = function (e) {
          +            var mouseMove = function (e) {
          +                var v = s.xy2val(e.pageX, e.pageY);
          +
          +                if (v == s.cv) return;
          +
          +                if (s.cH && (s.cH(v) === false)) return;
          +
          +                s.change(s._validate(v));
          +                s._draw();
          +            };
          +
          +            // First click
          +            mouseMove(e);
          +
          +            // Mouse events listeners
          +            k.c.d
          +                .bind("mousemove.k", mouseMove)
          +                .bind(
          +                    // Escape key cancel current change
          +                    "keyup.k",
          +                    function (e) {
          +                        if (e.keyCode === 27) {
          +                            k.c.d.unbind("mouseup.k mousemove.k keyup.k");
          +
          +                            if (s.eH && s.eH() === false)
          +                                return;
          +
          +                            s.cancel();
          +                        }
          +                    }
          +                )
          +                .bind(
          +                    "mouseup.k",
          +                    function (e) {
          +                        k.c.d.unbind('mousemove.k mouseup.k keyup.k');
          +                        s.val(s.cv);
          +                    }
          +                );
          +
          +            return this;
          +        };
          +
          +        this._xy = function () {
          +            var o = this.$c.offset();
          +            this.x = o.left;
          +            this.y = o.top;
          +
          +            return this;
          +        };
          +
          +        this._listen = function () {
          +            if (!this.o.readOnly) {
          +                this.$c
          +                    .bind(
          +                        "mousedown",
          +                        function (e) {
          +                            e.preventDefault();
          +                            s._xy()._mouse(e);
          +                        }
          +                    )
          +                    .bind(
          +                        "touchstart",
          +                        function (e) {
          +                            e.preventDefault();
          +                            s._xy()._touch(e);
          +                        }
          +                    );
          +
          +                this.listen();
          +            } else {
          +                this.$.attr('readonly', 'readonly');
          +            }
          +
          +            if (this.relative) {
          +                $(window).resize(function() {
          +                    s._carve().init();
          +                    s._draw();
          +                });
          +            }
          +
          +            return this;
          +        };
          +
          +        this._configure = function () {
          +
          +            // Hooks
          +            if (this.o.draw) this.dH = this.o.draw;
          +            if (this.o.change) this.cH = this.o.change;
          +            if (this.o.cancel) this.eH = this.o.cancel;
          +            if (this.o.release) this.rH = this.o.release;
          +
          +            if (this.o.displayPrevious) {
          +                this.pColor = this.h2rgba(this.o.fgColor, "0.4");
          +                this.fgColor = this.h2rgba(this.o.fgColor, "0.6");
          +            } else {
          +                this.fgColor = this.o.fgColor;
          +            }
          +
          +            return this;
          +        };
          +
          +        this._clear = function () {
          +            this.$c[0].width = this.$c[0].width;
          +        };
          +
          +        this._validate = function (v) {
          +            var val = (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step;
          +            return Math.round(val * 100) / 100;
          +        };
          +
          +        // Abstract methods
          +        this.listen = function () {}; // on start, one time
          +        this.extend = function () {}; // each time configure triggered
          +        this.init = function () {}; // each time configure triggered
          +        this.change = function (v) {}; // on change
          +        this.val = function (v) {}; // on release
          +        this.xy2val = function (x, y) {}; //
          +        this.draw = function () {}; // on change / on release
          +        this.clear = function () { this._clear(); };
          +
          +        // Utils
          +        this.h2rgba = function (h, a) {
          +            var rgb;
          +            h = h.substring(1,7);
          +            rgb = [
          +                parseInt(h.substring(0,2), 16),
          +                parseInt(h.substring(2,4), 16),
          +                parseInt(h.substring(4,6), 16)
          +            ];
          +
          +            return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")";
          +        };
          +
          +        this.copy = function (f, t) {
          +            for (var i in f) {
          +                t[i] = f[i];
          +            }
          +        };
          +    };
          +
          +
          +    /**
          +     * k.Dial
          +     */
          +    k.Dial = function () {
          +        k.o.call(this);
          +
          +        this.startAngle = null;
          +        this.xy = null;
          +        this.radius = null;
          +        this.lineWidth = null;
          +        this.cursorExt = null;
          +        this.w2 = null;
          +        this.PI2 = 2*Math.PI;
          +
          +        this.extend = function () {
          +            this.o = $.extend({
          +                bgColor: this.$.data('bgcolor') || '#EEEEEE',
          +                angleOffset: this.$.data('angleoffset') || 0,
          +                angleArc: this.$.data('anglearc') || 360,
          +                inline: true
          +            }, this.o);
          +        };
          +
          +        this.val = function (v, triggerRelease) {
          +            if (null != v) {
          +
          +                // reverse format
          +                v = this.o.parse(v);
          +
          +                if (triggerRelease !== false
          +                    && v != this.v
          +                    && this.rH
          +                    && this.rH(v) === false) { return; }
          +
          +                this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v;
          +                this.v = this.cv;
          +                this.$.val(this.o.format(this.v));
          +                this._draw();
          +            } else {
          +                return this.v;
          +            }
          +        };
          +
          +        this.xy2val = function (x, y) {
          +            var a, ret;
          +
          +            a = Math.atan2(
          +                        x - (this.x + this.w2),
          +                        - (y - this.y - this.w2)
          +                    ) - this.angleOffset;
          +
          +            if (this.o.flip) {
          +                a = this.angleArc - a - this.PI2;
          +            }
          +
          +            if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) {
          +
          +                // if isset angleArc option, set to min if .5 under min
          +                a = 0;
          +            } else if (a < 0) {
          +                a += this.PI2;
          +            }
          +
          +            ret = (a * (this.o.max - this.o.min) / this.angleArc) + this.o.min;
          +
          +            this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min));
          +
          +            return ret;
          +        };
          +
          +        this.listen = function () {
          +
          +            // bind MouseWheel
          +            var s = this, mwTimerStop,
          +                mwTimerRelease,
          +                mw = function (e) {
          +                    e.preventDefault();
          +
          +                    var ori = e.originalEvent,
          +                        deltaX = ori.detail || ori.wheelDeltaX,
          +                        deltaY = ori.detail || ori.wheelDeltaY,
          +                        v = s._validate(s.o.parse(s.$.val()))
          +                            + (
          +                                deltaX > 0 || deltaY > 0
          +                                ? s.o.step
          +                                : deltaX < 0 || deltaY < 0 ? -s.o.step : 0
          +                              );
          +
          +                    v = max(min(v, s.o.max), s.o.min);
          +
          +                    s.val(v, false);
          +
          +                    if (s.rH) {
          +                        // Handle mousewheel stop
          +                        clearTimeout(mwTimerStop);
          +                        mwTimerStop = setTimeout(function () {
          +                            s.rH(v);
          +                            mwTimerStop = null;
          +                        }, 100);
          +
          +                        // Handle mousewheel releases
          +                        if (!mwTimerRelease) {
          +                            mwTimerRelease = setTimeout(function () {
          +                                if (mwTimerStop)
          +                                    s.rH(v);
          +                                mwTimerRelease = null;
          +                            }, 200);
          +                        }
          +                    }
          +                },
          +                kval,
          +                to,
          +                m = 1,
          +                kv = {
          +                    37: -s.o.step,
          +                    38: s.o.step,
          +                    39: s.o.step,
          +                    40: -s.o.step
          +                };
          +
          +            this.$
          +                .bind(
          +                    "keydown",
          +                    function (e) {
          +                        var kc = e.keyCode;
          +
          +                        // numpad support
          +                        if (kc >= 96 && kc <= 105) {
          +                            kc = e.keyCode = kc - 48;
          +                        }
          +
          +                        kval = parseInt(String.fromCharCode(kc));
          +
          +                        if (isNaN(kval)) {
          +                            (kc !== 13)                     // enter
          +                            && kc !== 8                     // bs
          +                            && kc !== 9                     // tab
          +                            && kc !== 189                   // -
          +                            && (kc !== 190
          +                                || s.$.val().match(/\./))   // . allowed once
          +                            && e.preventDefault();
          +
          +                            // arrows
          +                            if ($.inArray(kc,[37,38,39,40]) > -1) {
          +                                e.preventDefault();
          +
          +                                var v = s.o.parse(s.$.val()) + kv[kc] * m;
          +                                s.o.stopper && (v = max(min(v, s.o.max), s.o.min));
          +
          +                                s.change(s._validate(v));
          +                                s._draw();
          +
          +                                // long time keydown speed-up
          +                                to = window.setTimeout(function () {
          +                                    m *= 2;
          +                                }, 30);
          +                            }
          +                        }
          +                    }
          +                )
          +                .bind(
          +                    "keyup",
          +                    function (e) {
          +                        if (isNaN(kval)) {
          +                            if (to) {
          +                                window.clearTimeout(to);
          +                                to = null;
          +                                m = 1;
          +                                s.val(s.$.val());
          +                            }
          +                        } else {
          +                            // kval postcond
          +                            (s.$.val() > s.o.max && s.$.val(s.o.max))
          +                            || (s.$.val() < s.o.min && s.$.val(s.o.min));
          +                        }
          +                    }
          +                );
          +
          +            this.$c.bind("mousewheel DOMMouseScroll", mw);
          +            this.$.bind("mousewheel DOMMouseScroll", mw);
          +        };
          +
          +        this.init = function () {
          +            if (this.v < this.o.min
          +                || this.v > this.o.max) { this.v = this.o.min; }
          +
          +            this.$.val(this.v);
          +            this.w2 = this.w / 2;
          +            this.cursorExt = this.o.cursor / 100;
          +            this.xy = this.w2 * this.scale;
          +            this.lineWidth = this.xy * this.o.thickness;
          +            this.lineCap = this.o.lineCap;
          +            this.radius = this.xy - this.lineWidth / 2;
          +
          +            this.o.angleOffset
          +            && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset);
          +
          +            this.o.angleArc
          +            && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc);
          +
          +            // deg to rad
          +            this.angleOffset = this.o.angleOffset * Math.PI / 180;
          +            this.angleArc = this.o.angleArc * Math.PI / 180;
          +
          +            // compute start and end angles
          +            this.startAngle = 1.5 * Math.PI + this.angleOffset;
          +            this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;
          +
          +            var s = max(
          +                String(Math.abs(this.o.max)).length,
          +                String(Math.abs(this.o.min)).length,
          +                2
          +            ) + 2;
          +
          +            this.o.displayInput
          +                && this.i.css({
          +                        'width' : ((this.w / 2 + 4) >> 0) + 'px',
          +                        'height' : ((this.w / 3) >> 0) + 'px',
          +                        'position' : 'absolute',
          +                        'vertical-align' : 'middle',
          +                        'margin-top' : ((this.w / 3) >> 0) + 'px',
          +                        'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px',
          +                        'border' : 0,
          +                        'background' : 'none',
          +                        'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font,
          +                        'text-align' : 'center',
          +                        'color' : this.o.inputColor || this.o.fgColor,
          +                        'padding' : '0px',
          +                        '-webkit-appearance': 'none'
          +                        }) || this.i.css({
          +                            'width': '0px',
          +                            'visibility': 'hidden'
          +                        });
          +        };
          +
          +        this.change = function (v) {
          +            this.cv = v;
          +            this.$.val(this.o.format(v));
          +        };
          +
          +        this.angle = function (v) {
          +            return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min);
          +        };
          +
          +        this.arc = function (v) {
          +          var sa, ea;
          +          v = this.angle(v);
          +          if (this.o.flip) {
          +              sa = this.endAngle + 0.00001;
          +              ea = sa - v - 0.00001;
          +          } else {
          +              sa = this.startAngle - 0.00001;
          +              ea = sa + v + 0.00001;
          +          }
          +          this.o.cursor
          +              && (sa = ea - this.cursorExt)
          +              && (ea = ea + this.cursorExt);
          +
          +          return {
          +              s: sa,
          +              e: ea,
          +              d: this.o.flip && !this.o.cursor
          +          };
          +        };
          +
          +        this.draw = function () {
          +            var c = this.g,                 // context
          +                a = this.arc(this.cv),      // Arc
          +                pa,                         // Previous arc
          +                r = 1;
          +
          +            c.lineWidth = this.lineWidth;
          +            c.lineCap = this.lineCap;
          +
          +            if (this.o.bgColor !== "none") {
          +                c.beginPath();
          +                    c.strokeStyle = this.o.bgColor;
          +                    c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true);
          +                c.stroke();
          +            }
          +
          +            if (this.o.displayPrevious) {
          +                pa = this.arc(this.v);
          +                c.beginPath();
          +                c.strokeStyle = this.pColor;
          +                c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d);
          +                c.stroke();
          +                r = this.cv == this.v;
          +            }
          +
          +            c.beginPath();
          +            c.strokeStyle = r ? this.o.fgColor : this.fgColor ;
          +            c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d);
          +            c.stroke();
          +        };
          +
          +        this.cancel = function () {
          +            this.val(this.v);
          +        };
          +    };
          +
          +    $.fn.dial = $.fn.knob = function (o) {
          +        return this.each(
          +            function () {
          +                var d = new k.Dial();
          +                d.o = o;
          +                d.$ = $(this);
          +                d.run();
          +            }
          +        ).parent();
          +    };
          +
          +}));
          diff --git a/public/theme/jquery-knob/knob.jquery.json b/public/theme/jquery-knob/knob.jquery.json
          new file mode 100644
          index 0000000..01a9063
          --- /dev/null
          +++ b/public/theme/jquery-knob/knob.jquery.json
          @@ -0,0 +1,37 @@
          +{
          +    "name": "knob",
          +    "title": "jQuery Knob",
          +    "description": "Nice, downward compatible, touchable, jQuery dial.",
          +    "keywords": [
          +        "dial",
          +        "button",
          +        "knob",
          +        "ui",
          +        "input"
          +    ],
          +    "version": "1.2.13",
          +    "author": {
          +        "name": "Anthony Terrien",
          +        "url": "https://github.com/aterrien"
          +    },
          +    "maintainers": [
          +        {
          +            "name": "Anthony Terrien",
          +            "email": "kontrol@anthonyterrien.com",
          +            "url": "http://anthonyterrien.com/knob"
          +        }
          +    ],
          +    "licenses": [
          +        {
          +            "type": "MIT",
          +            "url": "http://opensource.org/licenses/mit-license.php"
          +        }
          +    ],
          +    "bugs": "https://github.com/aterrien/jQuery-Knob/issues",
          +    "homepage": "https://github.com/aterrien/jQuery-Knob",
          +    "docs": "https://github.com/aterrien/jQuery-Knob",
          +    "download": "https://github.com/aterrien/jQuery-Knob/tags",
          +    "dependencies": {
          +        "jquery": ">=1.7.0"
          +    }
          +}
          diff --git a/public/theme/jquery-knob/package.json b/public/theme/jquery-knob/package.json
          new file mode 100644
          index 0000000..fbb4245
          --- /dev/null
          +++ b/public/theme/jquery-knob/package.json
          @@ -0,0 +1,24 @@
          +{
          +  "name": "jquery-knob",
          +  "version": "1.2.13",
          +  "description": "Nice, downward compatible, touchable, jQuery dial",
          +  "main": "dist/jquery.knob.min.js",
          +  "scripts": {
          +    "test": "echo \"Error: no test specified\" && exit 1"
          +  },
          +  "repository": {
          +    "type": "git",
          +    "url": "git+https://github.com/aterrien/jQuery-Knob.git"
          +  },
          +  "keywords": [
          +    "jquery",
          +    "knob",
          +    "dial"
          +  ],
          +  "author": "Anthony Terrien",
          +  "license": "MIT",
          +  "bugs": {
          +    "url": "https://github.com/aterrien/jQuery-Knob/issues"
          +  },
          +  "homepage": "https://github.com/aterrien/jQuery-Knob#readme"
          +}
          diff --git a/public/theme/jquery-knob/secretplan.jpg b/public/theme/jquery-knob/secretplan.jpg
          new file mode 100644
          index 0000000..e6f98de
          Binary files /dev/null and b/public/theme/jquery-knob/secretplan.jpg differ
          diff --git a/public/theme/jquery-mousewheel/.bower.json b/public/theme/jquery-mousewheel/.bower.json
          new file mode 100644
          index 0000000..bba25fe
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/.bower.json
          @@ -0,0 +1,27 @@
          +{
          +  "name": "jquery-mousewheel",
          +  "version": "3.1.13",
          +  "main": "./jquery.mousewheel.js",
          +  "ignore": [
          +    "*.json",
          +    "*.markdown",
          +    "*.txt",
          +    ".*",
          +    "!LICENSE.txt",
          +    "Gruntfile.js",
          +    "test"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.2.2"
          +  },
          +  "homepage": "https://github.com/jquery/jquery-mousewheel",
          +  "_release": "3.1.13",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "3.1.13",
          +    "commit": "67289b6b2aa0066d7d78a5807f520387135ffb22"
          +  },
          +  "_source": "https://github.com/jquery/jquery-mousewheel.git",
          +  "_target": ">=3.0.6",
          +  "_originalSource": "jquery-mousewheel"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery-mousewheel/ChangeLog.md b/public/theme/jquery-mousewheel/ChangeLog.md
          new file mode 100644
          index 0000000..76752a1
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/ChangeLog.md
          @@ -0,0 +1,147 @@
          +# Mouse Wheel ChangeLog
          +
          +## 3.1.13
          +
          +* Update copyright notice and license to remove years
          +* Create the correct compressed version
          +* Remove the obsolete jQuery Plugin Registry file
          +
          +## 3.1.12
          +
          +* Fix possible 0 value for line height when in delta mode 1
          +
          +## 3.1.11
          +
          +* Fix version number for package managers...
          +
          +## 3.1.10
          +
          +* Fix issue with calculating line height when using older versions of jQuery
          +* Add offsetX/Y normalization with setting to turn it off
          +* Cleans up data on teardown
          +
          +## 3.1.9
          +
          +* Fix bower.json file
          +* Updated how the deltas are adjusted for older mousewheel based events that have deltas that are factors of 120.
          +* Add $.event.special.mousewheel.settings.adjustOldDeltas (defaults to true) to turn off adjusting of old deltas that are factors of 120. You'd turn this off if you want to be as close to native scrolling as possible.
          +
          +## 3.1.8
          +
          +* Even better handling of older browsers that use a wheelDelta based on 120
          +* And fix version reported by `$.event.special.mousewheel`
          +
          +## 3.1.7
          +
          +* Better handle the `deltaMode` values 1 (lines) and 2 (pages)
          +* Attempt to better handle older browsers that use a wheelDelta based on 120
          +
          +## 3.1.6
          +
          +* Deprecating `delta`, `deltaX`, and `deltaY` event handler arguments
          +* Update actual event object with normalized `deltaX `and `deltaY` values (`event.deltaX`, `event.deltaY`)
          +* Add `deltaFactor` to the event object (`event.deltaFactor`)
          +* Handle `> 0` but `< 1` deltas better
          +* Do not fire the event if `deltaX` and `deltaY` are `0`
          +* Better handle different devices that give different `lowestDelta` values
          +* Add `$.event.special.mousewheel.version`
          +* Some clean up
          +
          +## 3.1.5
          +
          +* Bad release because I did not update the new `$.event.special.mousewheel.version`
          +
          +## 3.1.4
          +
          +* Always set the `deltaY`
          +* Add back in the `deltaX` and `deltaY` support for older Firefox versions
          +
          +## 3.1.3
          +
          +* Include `MozMousePixelScroll` in the to fix list to avoid inconsistent behavior in older Firefox
          +
          +## 3.1.2
          +
          +* Include grunt utilities for development purposes (jshint and uglify)
          +* Include support for browserify
          +* Some basic cleaning up
          +
          +## 3.1.1
          +
          +* Fix rounding issue with deltas less than zero
          +
          +
          +## 3.1.0
          +
          +* Fix Firefox 17+ issues by using new wheel event
          +* Normalize delta values
          +* Adds horizontal support for IE 9+ by using new wheel event
          +* Support AMD loaders
          +
          +
          +## 3.0.6
          +
          +* Fix issue with delta being 0 in Firefox
          +
          +
          +## 3.0.5
          +
          +* jQuery 1.7 compatibility
          +
          +
          +## 3.0.4
          +
          +* Fix IE issue
          +
          +
          +## 3.0.3
          +
          +* Added `deltaX` and `deltaY` for horizontal scrolling support (Thanks to Seamus Leahy)
          +
          +
          +## 3.0.2
          +
          +* Fixed delta being opposite value in latest Opera
          +* No longer fix `pageX`, `pageY` for older Mozilla browsers
          +* Removed browser detection
          +* Cleaned up the code
          +
          +
          +## 3.0.1
          +
          +* Bad release... creating a new release due to plugins.jquery.com issue :(
          +
          +
          +## 3.0
          +
          +* Uses new special events API in jQuery 1.2.2+
          +* You can now treat `mousewheel` as a normal event and use `.bind`, `.unbind` and `.trigger`
          +* Using jQuery.data API for expandos
          +
          +
          +## 2.2
          +
          +* Fixed `pageX`, `pageY`, `clientX` and `clientY` event properties for Mozilla based browsers
          +
          +
          +## 2.1.1
          +
          +* Updated to work with jQuery 1.1.3
          +* Used one instead of bind to do unload event for clean up
          +
          +
          +## 2.1
          +
          +* Fixed an issue with the unload handler
          +
          +
          +## 2.0
          +
          +* Major reduction in code size and complexity (internals have change a whole lot)
          +
          +
          +## 1.0
          +
          +* Fixed Opera issue
          +* Fixed an issue with children elements that also have a mousewheel handler
          +* Added ability to handle multiple handlers
          diff --git a/public/theme/jquery-mousewheel/LICENSE.txt b/public/theme/jquery-mousewheel/LICENSE.txt
          new file mode 100644
          index 0000000..919fe6a
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/LICENSE.txt
          @@ -0,0 +1,37 @@
          +Copyright jQuery Foundation and other contributors
          +https://jquery.org/
          +
          +This software consists of voluntary contributions made by many
          +individuals. For exact contribution history, see the revision history
          +available at https://github.com/jquery/jquery-mousewheel
          +
          +The following license applies to all parts of this software except as
          +documented below:
          +
          +====
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be
          +included in all copies or substantial portions of the Software.
          +
          +THE 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.
          +
          +====
          +
          +All files located in the node_modules and external directories are
          +externally maintained libraries used by this software which have their
          +own licenses; we recommend you read them, as their terms may differ from
          +the terms above.
          diff --git a/public/theme/jquery-mousewheel/README.md b/public/theme/jquery-mousewheel/README.md
          new file mode 100644
          index 0000000..a03fdde
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/README.md
          @@ -0,0 +1,76 @@
          +# jQuery Mouse Wheel Plugin
          +
          +A [jQuery](http://jquery.com/) plugin that adds cross-browser mouse wheel support with delta normalization.
          +
          +In order to use the plugin, simply bind the `mousewheel` event to an element.
          +
          +It also provides two helper methods called `mousewheel` and `unmousewheel`
          +that act just like other event helper methods in jQuery.
          +
          +The event object is updated with the normalized `deltaX` and `deltaY` properties.
          +In addition there is a new property on the event object called `deltaFactor`. Multiply
          +the `deltaFactor` by `deltaX` or `deltaY` to get the scroll distance that the browser
          +has reported.
          +
          +Here is an example of using both the bind and helper method syntax:
          +
          +```js
          +// using on
          +$('#my_elem').on('mousewheel', function(event) {
          +    console.log(event.deltaX, event.deltaY, event.deltaFactor);
          +});
          +
          +// using the event helper
          +$('#my_elem').mousewheel(function(event) {
          +    console.log(event.deltaX, event.deltaY, event.deltaFactor);
          +});
          +```
          +
          +The old behavior of adding three arguments (`delta`, `deltaX`, and `deltaY`) to the
          +event handler is now deprecated and will be removed in later releases.
          +
          +
          +## The Deltas...
          +
          +The combination of Browsers, Operating Systems, and Devices offer a huge range of possible delta values. In fact if the user
          +uses a trackpad and then a physical mouse wheel the delta values can differ wildly. This plugin normalizes those
          +values so you get a whole number starting at +-1 and going up in increments of +-1 according to the force or
          +acceleration that is used. This number has the potential to be in the thousands depending on the device.
          +Check out some of the data collected from users [here](http://mousewheeldatacollector.herokuapp.com/).
          +
          +### Getting the scroll distance
          +
          +In some use-cases we prefer to have the normalized delta but in others we want to know how far the browser should
          +scroll based on the users input. This can be done by multiplying the `deltaFactor` by the `deltaX` or `deltaY`
          +event property to find the scroll distance the browser reported.
          +
          +The `deltaFactor` property was added to the event object in 3.1.5 so that the actual reported delta value can be
          +extracted. This is a non-standard property.
          +
          +
          +## Using with [Browserify](http://browserify.org)
          +
          +Support for browserify is baked in.
          +
          +```bash
          +npm install jquery-mousewheel
          +npm install jquery-browserify
          +```
          +
          +In your server-side node.js code:
          +
          +```js
          +var express = require('express');
          +var app = express.createServer();
          +
          +app.use(require('browserify')({
          +    require : [ 'jquery-browserify', 'jquery-mousewheel' ]
          +}));
          +```
          +
          +In your browser-side javascript:
          +
          +```js
          +var $ = require('jquery-browserify');
          +require('jquery-mousewheel')($);
          +```
          diff --git a/public/theme/jquery-mousewheel/bower.json b/public/theme/jquery-mousewheel/bower.json
          new file mode 100644
          index 0000000..8bd2cc5
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/bower.json
          @@ -0,0 +1,17 @@
          +{
          +  "name": "jquery-mousewheel",
          +  "version": "3.1.13",
          +  "main": "./jquery.mousewheel.js",
          +  "ignore": [
          +    "*.json",
          +    "*.markdown",
          +    "*.txt",
          +    ".*",
          +    "!LICENSE.txt",
          +    "Gruntfile.js",
          +    "test"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.2.2"
          +  }
          +}
          diff --git a/public/theme/jquery-mousewheel/jquery.mousewheel.js b/public/theme/jquery-mousewheel/jquery.mousewheel.js
          new file mode 100644
          index 0000000..3eadb7e
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/jquery.mousewheel.js
          @@ -0,0 +1,221 @@
          +/*!
          + * jQuery Mousewheel 3.1.13
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * http://jquery.org/license
          + */
          +
          +(function (factory) {
          +    if ( typeof define === 'function' && define.amd ) {
          +        // AMD. Register as an anonymous module.
          +        define(['jquery'], factory);
          +    } else if (typeof exports === 'object') {
          +        // Node/CommonJS style for Browserify
          +        module.exports = factory;
          +    } else {
          +        // Browser globals
          +        factory(jQuery);
          +    }
          +}(function ($) {
          +
          +    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
          +        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
          +                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
          +        slice  = Array.prototype.slice,
          +        nullLowestDeltaTimeout, lowestDelta;
          +
          +    if ( $.event.fixHooks ) {
          +        for ( var i = toFix.length; i; ) {
          +            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
          +        }
          +    }
          +
          +    var special = $.event.special.mousewheel = {
          +        version: '3.1.12',
          +
          +        setup: function() {
          +            if ( this.addEventListener ) {
          +                for ( var i = toBind.length; i; ) {
          +                    this.addEventListener( toBind[--i], handler, false );
          +                }
          +            } else {
          +                this.onmousewheel = handler;
          +            }
          +            // Store the line height and page height for this particular element
          +            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
          +            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
          +        },
          +
          +        teardown: function() {
          +            if ( this.removeEventListener ) {
          +                for ( var i = toBind.length; i; ) {
          +                    this.removeEventListener( toBind[--i], handler, false );
          +                }
          +            } else {
          +                this.onmousewheel = null;
          +            }
          +            // Clean up the data we added to the element
          +            $.removeData(this, 'mousewheel-line-height');
          +            $.removeData(this, 'mousewheel-page-height');
          +        },
          +
          +        getLineHeight: function(elem) {
          +            var $elem = $(elem),
          +                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
          +            if (!$parent.length) {
          +                $parent = $('body');
          +            }
          +            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
          +        },
          +
          +        getPageHeight: function(elem) {
          +            return $(elem).height();
          +        },
          +
          +        settings: {
          +            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
          +            normalizeOffset: true  // calls getBoundingClientRect for each event
          +        }
          +    };
          +
          +    $.fn.extend({
          +        mousewheel: function(fn) {
          +            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
          +        },
          +
          +        unmousewheel: function(fn) {
          +            return this.unbind('mousewheel', fn);
          +        }
          +    });
          +
          +
          +    function handler(event) {
          +        var orgEvent   = event || window.event,
          +            args       = slice.call(arguments, 1),
          +            delta      = 0,
          +            deltaX     = 0,
          +            deltaY     = 0,
          +            absDelta   = 0,
          +            offsetX    = 0,
          +            offsetY    = 0;
          +        event = $.event.fix(orgEvent);
          +        event.type = 'mousewheel';
          +
          +        // Old school scrollwheel delta
          +        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
          +        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
          +        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
          +        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
          +
          +        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
          +        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
          +            deltaX = deltaY * -1;
          +            deltaY = 0;
          +        }
          +
          +        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
          +        delta = deltaY === 0 ? deltaX : deltaY;
          +
          +        // New school wheel delta (wheel event)
          +        if ( 'deltaY' in orgEvent ) {
          +            deltaY = orgEvent.deltaY * -1;
          +            delta  = deltaY;
          +        }
          +        if ( 'deltaX' in orgEvent ) {
          +            deltaX = orgEvent.deltaX;
          +            if ( deltaY === 0 ) { delta  = deltaX * -1; }
          +        }
          +
          +        // No change actually happened, no reason to go any further
          +        if ( deltaY === 0 && deltaX === 0 ) { return; }
          +
          +        // Need to convert lines and pages to pixels if we aren't already in pixels
          +        // There are three delta modes:
          +        //   * deltaMode 0 is by pixels, nothing to do
          +        //   * deltaMode 1 is by lines
          +        //   * deltaMode 2 is by pages
          +        if ( orgEvent.deltaMode === 1 ) {
          +            var lineHeight = $.data(this, 'mousewheel-line-height');
          +            delta  *= lineHeight;
          +            deltaY *= lineHeight;
          +            deltaX *= lineHeight;
          +        } else if ( orgEvent.deltaMode === 2 ) {
          +            var pageHeight = $.data(this, 'mousewheel-page-height');
          +            delta  *= pageHeight;
          +            deltaY *= pageHeight;
          +            deltaX *= pageHeight;
          +        }
          +
          +        // Store lowest absolute delta to normalize the delta values
          +        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
          +
          +        if ( !lowestDelta || absDelta < lowestDelta ) {
          +            lowestDelta = absDelta;
          +
          +            // Adjust older deltas if necessary
          +            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
          +                lowestDelta /= 40;
          +            }
          +        }
          +
          +        // Adjust older deltas if necessary
          +        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
          +            // Divide all the things by 40!
          +            delta  /= 40;
          +            deltaX /= 40;
          +            deltaY /= 40;
          +        }
          +
          +        // Get a whole, normalized value for the deltas
          +        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
          +        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
          +        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
          +
          +        // Normalise offsetX and offsetY properties
          +        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
          +            var boundingRect = this.getBoundingClientRect();
          +            offsetX = event.clientX - boundingRect.left;
          +            offsetY = event.clientY - boundingRect.top;
          +        }
          +
          +        // Add information to the event object
          +        event.deltaX = deltaX;
          +        event.deltaY = deltaY;
          +        event.deltaFactor = lowestDelta;
          +        event.offsetX = offsetX;
          +        event.offsetY = offsetY;
          +        // Go ahead and set deltaMode to 0 since we converted to pixels
          +        // Although this is a little odd since we overwrite the deltaX/Y
          +        // properties with normalized deltas.
          +        event.deltaMode = 0;
          +
          +        // Add event and delta to the front of the arguments
          +        args.unshift(event, delta, deltaX, deltaY);
          +
          +        // Clearout lowestDelta after sometime to better
          +        // handle multiple device types that give different
          +        // a different lowestDelta
          +        // Ex: trackpad = 3 and mouse wheel = 120
          +        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
          +        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
          +
          +        return ($.event.dispatch || $.event.handle).apply(this, args);
          +    }
          +
          +    function nullLowestDelta() {
          +        lowestDelta = null;
          +    }
          +
          +    function shouldAdjustOldDeltas(orgEvent, absDelta) {
          +        // If this is an older event and the delta is divisable by 120,
          +        // then we are assuming that the browser is treating this as an
          +        // older mouse wheel event and that we should divide the deltas
          +        // by 40 to try and get a more usable deltaFactor.
          +        // Side note, this actually impacts the reported scroll distance
          +        // in older browsers and can cause scrolling to be slower than native.
          +        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
          +        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
          +    }
          +
          +}));
          diff --git a/public/theme/jquery-mousewheel/jquery.mousewheel.min.js b/public/theme/jquery-mousewheel/jquery.mousewheel.min.js
          new file mode 100644
          index 0000000..03bfd60
          --- /dev/null
          +++ b/public/theme/jquery-mousewheel/jquery.mousewheel.min.js
          @@ -0,0 +1,8 @@
          +/*!
          + * jQuery Mousewheel 3.1.13
          + *
          + * Copyright 2015 jQuery Foundation and other contributors
          + * Released under the MIT license.
          + * http://jquery.org/license
          + */
          +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
          \ No newline at end of file
          diff --git a/public/theme/jquery-sparkline/.bower.json b/public/theme/jquery-sparkline/.bower.json
          new file mode 100644
          index 0000000..75c9c97
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/.bower.json
          @@ -0,0 +1,26 @@
          +{
          +  "name": "jquery-sparkline",
          +  "version": "2.1.3",
          +  "homepage": "https://github.com/rkgrep/jquery.sparkline",
          +  "authors": [
          +    "Gareth Watts <gareth@omnipotent.net>"
          +  ],
          +  "main": "dist/jquery.sparkline.js",
          +  "license": "BSD 3",
          +  "ignore": [
          +    "**/.*",
          +    "node_modules",
          +    "bower_components",
          +    "test",
          +    "tests"
          +  ],
          +  "_release": "2.1.3",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "v2.1.3",
          +    "commit": "47b1f5a7daaa45739a75f8fd1d7c2948693d66fd"
          +  },
          +  "_source": "https://github.com/rkgrep/jquery.sparkline.git",
          +  "_target": "^2.1.3",
          +  "_originalSource": "jquery-sparkline"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery-sparkline/Changelog.txt b/public/theme/jquery-sparkline/Changelog.txt
          new file mode 100644
          index 0000000..3f7eb9d
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/Changelog.txt
          @@ -0,0 +1,324 @@
          +jQuery Sparkline Plugin ChangeLog
          +http://omnipotent.net/jquery.sparkline/
          +
          +2.1.x ???
          +
          ++ Fix for IE <= 9 for loading CSS when 31 stylesheets are already present
          +
          +
          +2.1.2 15/June/2013
          +
          ++ Make compatible with jQuery 1.10
          +
          ++ Fix intermittent "undefined error" with IE8 (issue 64)
          +Thanks Tim Tucker
          +
          ++ Performance/minification size improvement (PR 34)
          +Thanks Tim Tucker
          +
          ++ Prevent the plugin from being instatiated more than once (PR 37)
          +Thanks Tim Tucker
          +
          +
          +2.1.1 26/January/2013
          +
          ++ Fix a couple of issues rendering pie charts in IE when they slices that make
          +up a negligible percentage of the whole chart (issue 49)
          +
          ++ Don't display line chart final marker if final value is null (issue 46)
          +
          ++ Make compatible with jQuery 1.9.0 (issue 60)
          +
          +
          +2.1 15/October/2012
          +
          ++ Added support for Internet Explorer 10 (issue 18)
          +Thanks Jonathan Sampson
          +
          ++ Enable the plugin to be loaded dynamically (issue 6)
          +Thanks joeenzminger
          +
          ++ Pie charts with zero in the array of values will no longer
          +cause IE to display "undefined" in the page (issue 9)
          +
          ++ Null values in bar charts are now correctly omitted by default (issue 23)
          +
          ++ Null values in line charts would cause value highligting to be
          +incorrect (issue 4)
          +
          ++ Raise default z-index for tooltips to ensure they always appear on top
          +of the chart (issue 5)
          +
          ++ Allow target and performance values to be set to null for bullet charts,
          +omitting them from the chart (issue 3)
          +
          ++ Fix clipping of highlight marker spots if min/max/final spots are disabled 
          +in line charts (issue 31)
          +
          ++ Line charts with normalRangeMin=0 will now render the normal range 
          +correctly (issue 7)
          +Thanks Tim Mathewso
          +
          ++ Add support for AMD based module loaders such as requirejs (PR 32)
          +Thanks Tim Tucker
          +
          ++ Fix interquartile range calculation used by box plots (PR 10)
          +Thanks Claudio Riva
          +
          +
          +2.0 29/April/2012
          +
          ++ jQuery.sparkline now requires jQuery 1.4.3 or later
          +
          ++ All charts now support mouseover and click actions
          +Adds options: disableInteraction, disableTooltips, disableHighlight
          +
          ++ Added sparklineClick and sparklineRegionChange events
          +
          ++ Line charts have highlightSpotColor and highlightLineColor options
          +for controlling mouseover highligiting
          +
          ++ All charts display tooltips and highlight values when moused-over by default
          +Adds options: tooltipContainer, tooltipOffsetX, tooltipOffsetY, tooltipFormatter,
          +tooltipChartTitle, tooltipFormat, tooltipPrefix, tooltipSuffix, 
          +tooltipSkipNull, tooltipValueLookups, highlightLighten, numberFormatter, 
          +numberDigitGroupSep, numberDecimalMark, numberDigitGroupCount
          +
          ++ Fix error when all null values are fed to a line chart
          +Thanks Ton Voon
          +
          ++ Fix off-by-one error that caused the bottom of filled line charts to
          +be unlevel - Thanks Sylvain Vieujot for the bug report
          +
          ++ Pie charts with a single value now render correctly
          +Thanks Juan Manuel
          +
          ++ Charts that have their dimensions specified exactly in pixels may see 
          +improved performance
          +Thanks Sean Carpenter
          +
          ++ Coloured spots may be added to some or all values on a line chart now using
          +the new valueSpots option
          +Thanks Russ Beebe for the suggestion
          +
          ++ Bar and tristates charts now support using range of values for the colorMap
          +option - Eg. allows all bars with values betweeen 10 and 20 to be green
          +
          ++ Pie charts may now have a border using the borderWidth and borderColor
          +options - Thanks Michael Mior for the suggestion
          +
          ++ Added a disableHiddenCheck option - If you know your charts will never be
          +in a hidden block (display:none) at time of rendering, disabling this check
          +may improve performance
          +
          ++ Reduce number of DOM interactions when rendering charts in Internet Explorer
          +to increase render performance
          +
          ++ Bar charts may now have stacked values by providing an array of arrays
          +or by passing a comma and colon delimited series of values (eg. "1:2:3,2:3:1")
          +
          ++ Fix a bug where some spots would be drawn in the wrong position on line
          +charts if the x values were supplied as well as the y
          +
          ++ Fix a bug causing hidden composite sparklines to fail to render 
          +once $.sparkline_display_visible() is called.
          +
          ++ If there are multiple calls to sparkline() on a hidden element, the plugin
          +will now only render the most recent one when the element becomes visible,
          +saving CPU time for the same visual result.
          +
          ++ If a hidden sparkline waiting to be rendered is removed from the DOM
          +via jQuery's .remove() or .html() etc methods then it will be
          +removed from the pending queue the next time $.sparkline_display_visible()
          +is called, preventing a memory leak.
          +
          ++ Add the $.range_map() and $.spformat() methods
          +
          +
          +1.6 30/November/2010
          +
          ++ Allow options to be set as tag attributes, as well as passed in to the sparkline
          +function as an argument.  See new enableTagOptions and tagOptionPrefix options.
          +
          ++ Added alternate methods of passing values in via HTML.
          +Can now include inline values in a comment, or pass values in as a values
          +attribute on the tag:
          +<span class="sparkline"><!-- 1,2,3,4,5 --></span>
          +<span class="sparkline" values="1,2,3,4,5"></span>
          +
          ++ bullet graphs now handle non-integer values correctly
          +
          ++ Added drawNormalOnTop option to line charts to force the normal
          +range to be drawn over the top of the line chart's fill color
          +
          ++ Detect if an element is not inserted into the DOM so that $.sparkline_display_visible()
          +will function correctly after it's later inserted.
          +
          ++ Remove the use of the Array indexOf prototype that was added to IE to avoid
          +conflicts with other libraries.
          +
          ++ Default settings are now exposed as $.fn.sparkline.defaults allowing
          +script-wide changes to be made instead of passing them to the sparkline function
          +on each call
          +
          +
          +1.5.1 01/March/2010
          +
          ++ 1 character typo fix for IE - Thanks to Daniel Kenyon-Jones for the heads up
          +
          +
          +1.5 26/February/2010
          +
          ++ Very small pie slices could fill the whole chart in IE
          +Thanks to Peter Doel for catching and fixing it
          +
          ++ Added chartRangeClip option to force values outside of chartRangeMin/chartRangeMax
          +to be clipped
          +
          ++ Added chartRangeMinX/chartRangeMaxX for line charts
          +
          ++ Allow chart types other than line chart to be used as composites.
          +
          ++ colorMap may now pass null as a colour to omit that bar from display entirely
          +
          ++ colorMap may now be passed as an Array of values allowing the colour of each
          +bar to be specified individually, rather than mapping by value
          +
          ++ Added nullColor option to bar charts to force null values to show up as a thin line
          +
          ++ Performance improvements with IE
          +
          +
          +1.4.3 14/September/2009
          +
          ++ Updated default pie chart colours - Thanks Liel Dulev
          +
          ++ Null values can now be supplied to line and bar charts
          +(use 'null' as the value) - Thanks to Ed Blachman for 
          +testing/debugging help
          +
          ++ Added colorMap option for bar charts
          +
          ++ Added lineWidth option for line charts - Can be an integer or a float
          +(try 1.5 or 2)
          +
          +
          +1.4.2 25/April/2009
          +
          ++ Fixed rendering of circular spots on line charts
          +for Internet Explorer 8
          +
          +
          +1.4.1 27/March/2009
          +
          ++ Fixed minor off-by-1-pixel display glitch with IE
          +
          ++ Improved compatibilty with jQuery 1.3 which could cause some sparklines
          +not to be rendered in certain situations
          +
          +
          +1.4 25/February/2009
          +
          ++ Added the box plot chart type
          +
          ++ Fixed a canvas rendering issue that would display some charts with
          +fuzzy lines
          +
          ++ Fixed error in bar charts which would causes bars to be too short.
          +
          ++ Couple of other minor bug fixes
          +
          +
          +1.3 25/January/2009
          +
          ++ Sparklines can't be automatically displayed into hidden elements (ie. 
          +with display:none) - Added a $.sparkline_display_visible() function
          +to render any sparklines that were generated while a tag was
          +hidden
          +
          ++ Fixed positioning issues where sparklines would be displayed a few
          +pixels offset from their containers in some browsers
          +
          ++ Made a first attempt at IE8 support.  IE8 beta 2 seems to
          +have some vml related bugs though so having more than one sparkline
          +on a line doesn't work correctly, nor do the markers on line charts
          +
          ++ Misc other bug fixes
          +
          ++ Updated the web site with a new look
          +
          +
          +1.2.1 24/November/2008
          +
          ++ Pie chart bug fixes:  Divide by zero error resolved
          +and IE rendering issue if a pie slice is equal to 0
          +Thanks to Hubert Mandeville for a patch fixing both issues
          +
          +
          +1.2 - 19/November/2008
          +
          ++ Fixed positioning of min/max line markers for fixed range graphs
          +(thanks to Stéphane Busso)
          +
          ++ Fixed rendering of bar charts with negative values
          +
          ++ All values in a bar chart have a height now (min values used to 
          +have height = 0)
          +
          ++ Added zeroColor option for bar charts which allows assignment of
          +a different color for values that are equal to zero
          +
          ++ Line charts can now specify both x and y values if required in one of 
          +three ways:
          +a) Inline with HTML with values interleaved:
          +x1:y1,x2:y2,x3:y3
          +eg. <span class="linechart">1:10,5:8,7:10</span>
          +b) Programatically using an x,y array for each value:
          +$('#mychart').sparkline([ [1,10], [5,8], [7,10] ]);
          +c) Programatically using a separate array for the x values:
          +$('#mychart').sparkline( [10,8,10], { xvalues: [1,5,7] });
          +
          ++ Added chartRangeMin and chartRangeMax to line, bar and discrete graphs
          +This allows you to artificialy fix the min/max values for the graph
          +so that multiple graphs can share the same scale.
          +
          ++ Added defaultPixelsPerValue option to specify how many pixels wide
          +each value should be in a dynamically sized line graph
          +
          ++ Added offset option to piecharts - Takes a positive or negative degree
          +offset to start drawing the chart from.
          +
          +
          +1.1 - 29/July/2008
          +
          ++ Added minSpotColor and maxSpotColor to line charts - If set then spot
          +markers are placed at the cordinates of the minimum and maximum values.
          +
          ++ Added normalRangeMin and normalRangeMax to line charts - If set then
          +a normalRangeColor band will be drawn on the graph
          +
          ++ Added chart compositing - Applying another chart to a DOM element with 
          +an option of composite: true will cause the second (or more) chart to be 
          +overlayed on the first rather than replacing it.  
          +
          ++ Added optional colorMap option to tristate chart - This allows specific 
          +colors to be supplied for specific values
          +
          ++ Added discrete chart type - Uses fixed size discrete vertical lines to mark
          +each values in a series
          +
          ++ Added bullet graph type - Implementation of Stephen Few's bullet graphs
          +
          ++ Added pie chart type
          +
          ++ Improved auto height option to match the line height of the containing
          +element
          +
          ++ Fixed some off by one positioning errors
          +
          ++ Reduced the default radius of spot markers from 2 to 1.5 pixels
          +
          +
          +1.0 - 17/July/2008
          +
          ++ Initial Release
          diff --git a/public/theme/jquery-sparkline/Makefile b/public/theme/jquery-sparkline/Makefile
          new file mode 100644
          index 0000000..6b7bd64
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/Makefile
          @@ -0,0 +1,41 @@
          +SRC_DIR = src
          +DIST_DIR = dist
          +COMPILER ?= `which uglifyjs` --no-copyright
          +
          +
          +SRC_FILES = $(SRC_DIR)/header.js\
          +	$(SRC_DIR)/defaults.js\
          +	$(SRC_DIR)/utils.js\
          +	$(SRC_DIR)/simpledraw.js\
          +	$(SRC_DIR)/rangemap.js\
          +	$(SRC_DIR)/interact.js\
          +	$(SRC_DIR)/base.js\
          +	$(SRC_DIR)/chart-line.js\
          +	$(SRC_DIR)/chart-bar.js\
          +	$(SRC_DIR)/chart-tristate.js\
          +	$(SRC_DIR)/chart-discrete.js\
          +	$(SRC_DIR)/chart-bullet.js\
          +	$(SRC_DIR)/chart-pie.js\
          +	$(SRC_DIR)/chart-box.js\
          +	$(SRC_DIR)/vcanvas-base.js\
          +	$(SRC_DIR)/vcanvas-canvas.js\
          +	$(SRC_DIR)/vcanvas-vml.js\
          +	$(SRC_DIR)/footer.js
          +
          +
          +VERSION = $(shell cat version.txt)
          +
          +all: jqs-gzip jqs-min-gzip Changelog.txt
          +
          +jqs: ${SRC_FILES}
          +	cat ${SRC_FILES} | sed 's/@VERSION@/${VERSION}/'  >${DIST_DIR}/jquery.sparkline.js
          +
          +jqs-min: jqs
          +	cat minheader.txt | sed 's/@VERSION@/${VERSION}/' >dist/jquery.sparkline.min.js
          +	${COMPILER} dist/jquery.sparkline.js  >>dist/jquery.sparkline.min.js
          +
          +jqs-gzip: jqs
          +	gzip -9 < dist/jquery.sparkline.js >dist/jquery.sparkline.js.gz
          +
          +jqs-min-gzip: jqs-min
          +	gzip -9 < dist/jquery.sparkline.min.js >dist/jquery.sparkline.min.js.gz
          diff --git a/public/theme/jquery-sparkline/README.md b/public/theme/jquery-sparkline/README.md
          new file mode 100644
          index 0000000..1088d5e
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/README.md
          @@ -0,0 +1,19 @@
          +jQuery Sparklines
          +=================
          +
          +This jQuery plugin makes it easy to generate a number of different types
          +of sparklines directly in the browser, using online a line of two of HTML 
          +and Javascript.
          +
          +The plugin has no dependencies other than jQuery and works with all modern 
          +browsers and also Internet Explorer 6 and later (excanvas is not required
          +for IE support).
          +
          +See the [jQuery Sparkline project page](http://omnipotent.net/jquery.sparkline/)
          +for live examples and documentation.
          +
          +## License
          +
          +Released under the New BSD License
          +
          +(c) Splunk, Inc 2012
          diff --git a/public/theme/jquery-sparkline/bower.json b/public/theme/jquery-sparkline/bower.json
          new file mode 100644
          index 0000000..a1c6824
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/bower.json
          @@ -0,0 +1,17 @@
          +{
          +  "name": "jquery-sparkline",
          +  "version": "2.1.3",
          +  "homepage": "https://github.com/rkgrep/jquery.sparkline",
          +  "authors": [
          +    "Gareth Watts <gareth@omnipotent.net>"
          +  ],
          +  "main": "dist/jquery.sparkline.js",
          +  "license": "BSD 3",
          +  "ignore": [
          +    "**/.*",
          +    "node_modules",
          +    "bower_components",
          +    "test",
          +    "tests"
          +  ]
          +}
          diff --git a/public/theme/jquery-sparkline/dist/jquery.sparkline.js b/public/theme/jquery-sparkline/dist/jquery.sparkline.js
          new file mode 100644
          index 0000000..38be69a
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/dist/jquery.sparkline.js
          @@ -0,0 +1,3063 @@
          +/**
          +*
          +* jquery.sparkline.js
          +*
          +* v2.1.3
          +* (c) Splunk, Inc
          +* Contact: Gareth Watts (gareth@splunk.com)
          +* http://omnipotent.net/jquery.sparkline/
          +*
          +* Generates inline sparkline charts from data supplied either to the method
          +* or inline in HTML
          +*
          +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag
          +* (Firefox 2.0+, Safari, Opera, etc)
          +*
          +* License: New BSD License
          +*
          +* Copyright (c) 2012, Splunk Inc.
          +* All rights reserved.
          +*
          +* Redistribution and use in source and binary forms, with or without modification,
          +* are permitted provided that the following conditions are met:
          +*
          +*     * Redistributions of source code must retain the above copyright notice,
          +*       this list of conditions and the following disclaimer.
          +*     * Redistributions in binary form must reproduce the above copyright notice,
          +*       this list of conditions and the following disclaimer in the documentation
          +*       and/or other materials provided with the distribution.
          +*     * Neither the name of Splunk Inc nor the names of its contributors may
          +*       be used to endorse or promote products derived from this software without
          +*       specific prior written permission.
          +*
          +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
          +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
          +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
          +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
          +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
          +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
          +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
          +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
          +*
          +*
          +* Usage:
          +*  $(selector).sparkline(values, options)
          +*
          +* If values is undefined or set to 'html' then the data values are read from the specified tag:
          +*   <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p>
          +*   $('.sparkline').sparkline();
          +* There must be no spaces in the enclosed data set
          +*
          +* Otherwise values must be an array of numbers or null values
          +*    <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p>
          +*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])
          +*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])
          +*
          +* Values can also be specified in an HTML comment, or as a values attribute:
          +*    <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p>
          +*    <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p>
          +*    $('.sparkline').sparkline();
          +*
          +* For line charts, x values can also be specified:
          +*   <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>
          +*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])
          +*
          +* By default, options should be passed in as the second argument to the sparkline function:
          +*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})
          +*
          +* Options can also be set by passing them on the tag itself.  This feature is disabled by default though
          +* as there's a slight performance overhead:
          +*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})
          +*   <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p>
          +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionsPrefix)
          +*
          +* Supported options:
          +*   lineColor - Color of the line used for the chart
          +*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart
          +*   width - Width of the chart - Defaults to 3 times the number of values in pixels
          +*   height - Height of the chart - Defaults to the height of the containing element
          +*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied
          +*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied
          +*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax
          +*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied
          +*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied
          +*   composite - If true then don't erase any existing chart attached to the tag, but draw
          +*           another chart over the top - Note that width and height are ignored if an
          +*           existing chart is detected.
          +*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'
          +*   enableTagOptions - Whether to check tags for sparkline options
          +*   tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'
          +*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a
          +*           hidden dom element, avoding a browser reflow
          +*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,
          +*       making the plugin perform much like it did in 1.x
          +*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)
          +*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled
          +*       defaults to false (highlights enabled)
          +*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase
          +*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body
          +*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied
          +*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis
          +*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis
          +*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip
          +*       callback is given arguments of (sparkline, options, fields)
          +*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title
          +*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)
          +*       to control the format of the tooltip
          +*   tooltipPrefix - A string to prepend to each field displayed in a tooltip
          +*   tooltipSuffix - A string to append to each field displayed in a tooltip
          +*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)
          +*   tooltipValueLookups - An object or range map to map field values to tooltip strings
          +*       (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win")
          +*   numberFormatter - Optional callback for formatting numbers in tooltips
          +*   numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to ","
          +*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "."
          +*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3
          +*
          +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default),
          +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'
          +*    line - Line chart.  Options:
          +*       spotColor - Set to '' to not end each line in a circular spot
          +*       minSpotColor - If set, color of spot at minimum value
          +*       maxSpotColor - If set, color of spot at maximum value
          +*       spotRadius - Radius in pixels
          +*       lineWidth - Width of line in pixels
          +*       normalRangeMin
          +*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal"
          +*                      or expected range of values
          +*       normalRangeColor - Color to use for the above bar
          +*       drawNormalOnTop - Draw the normal range above the chart fill color if true
          +*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart
          +*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable
          +*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable
          +*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map
          +*
          +*   bar - Bar chart.  Options:
          +*       barColor - Color of bars for postive values
          +*       negBarColor - Color of bars for negative values
          +*       zeroColor - Color of bars with zero values
          +*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely
          +*       barWidth - Width of bars in pixels
          +*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
          +*                  can be an Array of values to control the color of individual bars or a range map
          +*                  to specify colors for individual ranges of values
          +*       barSpacing - Gap between bars in pixels
          +*       zeroAxis - Centers the y-axis around zero if true
          +*
          +*   tristate - Charts values of win (>0), lose (<0) or draw (=0)
          +*       posBarColor - Color of win values
          +*       negBarColor - Color of lose values
          +*       zeroBarColor - Color of draw values
          +*       barWidth - Width of bars in pixels
          +*       barSpacing - Gap between bars in pixels
          +*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
          +*                  can be an Array of values to control the color of individual bars or a range map
          +*                  to specify colors for individual ranges of values
          +*
          +*   discrete - Options:
          +*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height
          +*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor
          +*       thresholdColor
          +*
          +*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...
          +*       options:
          +*       targetColor - The color of the vertical target marker
          +*       targetWidth - The width of the target marker in pixels
          +*       performanceColor - The color of the performance measure horizontal bar
          +*       rangeColors - Colors to use for each qualitative range background color
          +*
          +*   pie - Pie chart. Options:
          +*       sliceColors - An array of colors to use for pie slices
          +*       offset - Angle in degrees to offset the first slice - Try -90 or +90
          +*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)
          +*       borderColor - Color to use for the pie chart border - Defaults to #000
          +*
          +*   box - Box plot. Options:
          +*       raw - Set to true to supply pre-computed plot points as values
          +*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier
          +*             When set to false you can supply any number of values and the box plot will
          +*             be computed for you.  Default is false.
          +*       showOutliers - Set to true (default) to display outliers as circles
          +*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5
          +*       boxLineColor - Outline color of the box
          +*       boxFillColor - Fill color for the box
          +*       whiskerColor - Line color used for whiskers
          +*       outlierLineColor - Outline color of outlier circles
          +*       outlierFillColor - Fill color of the outlier circles
          +*       spotRadius - Radius of outlier circles
          +*       medianColor - Line color of the median line
          +*       target - Draw a target cross hair at the supplied value (default undefined)
          +*
          +*
          +*
          +*   Examples:
          +*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });
          +*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });
          +*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):
          +*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });
          +*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });
          +*   $('#pie').sparkline([1,1,2], { type:'pie' });
          +*/
          +
          +/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */
          +
          +(function(document, Math, undefined) { // performance/minified-size optimization
          +(function(factory) {
          +    if(typeof define === 'function' && define.amd) {
          +        define(['jquery'], factory);
          +    } else if (jQuery && !jQuery.fn.sparkline) {
          +        factory(jQuery);
          +    }
          +}
          +(function($) {
          +    'use strict';
          +
          +    var UNSET_OPTION = {},
          +        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,
          +        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,
          +        MouseHandler, Tooltip, barHighlightMixin,
          +        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,
          +        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;
          +
          +    /**
          +     * Default configuration settings
          +     */
          +    getDefaults = function () {
          +        return {
          +            // Settings common to most/all chart types
          +            common: {
          +                type: 'line',
          +                lineColor: '#00f',
          +                fillColor: '#cdf',
          +                defaultPixelsPerValue: 3,
          +                width: 'auto',
          +                height: 'auto',
          +                composite: false,
          +                tagValuesAttribute: 'values',
          +                tagOptionsPrefix: 'spark',
          +                enableTagOptions: false,
          +                enableHighlight: true,
          +                highlightLighten: 1.4,
          +                tooltipSkipNull: true,
          +                tooltipPrefix: '',
          +                tooltipSuffix: '',
          +                disableHiddenCheck: false,
          +                numberFormatter: false,
          +                numberDigitGroupCount: 3,
          +                numberDigitGroupSep: ',',
          +                numberDecimalMark: '.',
          +                disableTooltips: false,
          +                disableInteraction: false
          +            },
          +            // Defaults for line charts
          +            line: {
          +                spotColor: '#f80',
          +                highlightSpotColor: '#5f5',
          +                highlightLineColor: '#f22',
          +                spotRadius: 1.5,
          +                minSpotColor: '#f80',
          +                maxSpotColor: '#f80',
          +                lineWidth: 1,
          +                normalRangeMin: undefined,
          +                normalRangeMax: undefined,
          +                normalRangeColor: '#ccc',
          +                drawNormalOnTop: false,
          +                chartRangeMin: undefined,
          +                chartRangeMax: undefined,
          +                chartRangeMinX: undefined,
          +                chartRangeMaxX: undefined,
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')
          +            },
          +            // Defaults for bar charts
          +            bar: {
          +                barColor: '#3366cc',
          +                negBarColor: '#f44',
          +                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
          +                    '#dd4477', '#0099c6', '#990099'],
          +                zeroColor: undefined,
          +                nullColor: undefined,
          +                zeroAxis: true,
          +                barWidth: 4,
          +                barSpacing: 1,
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                chartRangeClip: false,
          +                colorMap: undefined,
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')
          +            },
          +            // Defaults for tristate charts
          +            tristate: {
          +                barWidth: 4,
          +                barSpacing: 1,
          +                posBarColor: '#6f6',
          +                negBarColor: '#f44',
          +                zeroBarColor: '#999',
          +                colorMap: {},
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),
          +                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }
          +            },
          +            // Defaults for discrete charts
          +            discrete: {
          +                lineHeight: 'auto',
          +                thresholdColor: undefined,
          +                thresholdValue: 0,
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                chartRangeClip: false,
          +                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')
          +            },
          +            // Defaults for bullet charts
          +            bullet: {
          +                targetColor: '#f33',
          +                targetWidth: 3, // width of the target bar in pixels
          +                performanceColor: '#33f',
          +                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],
          +                base: undefined, // set this to a number to change the base start number
          +                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),
          +                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }
          +            },
          +            // Defaults for pie charts
          +            pie: {
          +                offset: 0,
          +                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
          +                    '#dd4477', '#0099c6', '#990099'],
          +                borderWidth: 0,
          +                borderColor: '#000',
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')
          +            },
          +            // Defaults for box plots
          +            box: {
          +                raw: false,
          +                boxLineColor: '#000',
          +                boxFillColor: '#cdf',
          +                whiskerColor: '#000',
          +                outlierLineColor: '#333',
          +                outlierFillColor: '#fff',
          +                medianColor: '#f00',
          +                showOutliers: true,
          +                outlierIQR: 1.5,
          +                spotRadius: 1.5,
          +                target: undefined,
          +                targetColor: '#4a2',
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),
          +                tooltipFormatFieldlistKey: 'field',
          +                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',
          +                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',
          +                    lw: 'Left Whisker', rw: 'Right Whisker'} }
          +            }
          +        };
          +    };
          +
          +    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname
          +    defaultStyles = '.jqstooltip { ' +
          +            'position: absolute;' +
          +            'left: 0px;' +
          +            'top: 0px;' +
          +            'visibility: hidden;' +
          +            'background: rgb(0, 0, 0) transparent;' +
          +            'background-color: rgba(0,0,0,0.6);' +
          +            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +
          +            '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' +
          +            'color: white;' +
          +            'font: 10px arial, san serif;' +
          +            'text-align: left;' +
          +            'white-space: nowrap;' +
          +            'padding: 5px;' +
          +            'border: 1px solid white;' +
          +            'box-sizing: content-box;' +
          +            'z-index: 10000;' +
          +            '}' +
          +            '.jqsfield { ' +
          +            'color: white;' +
          +            'font: 10px arial, san serif;' +
          +            'text-align: left;' +
          +            '}';
          +
          +    /**
          +     * Utilities
          +     */
          +
          +    createClass = function (/* [baseclass, [mixin, ...]], definition */) {
          +        var Class, args;
          +        Class = function () {
          +            this.init.apply(this, arguments);
          +        };
          +        if (arguments.length > 1) {
          +            if (arguments[0]) {
          +                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);
          +                Class._super = arguments[0].prototype;
          +            } else {
          +                Class.prototype = arguments[arguments.length - 1];
          +            }
          +            if (arguments.length > 2) {
          +                args = Array.prototype.slice.call(arguments, 1, -1);
          +                args.unshift(Class.prototype);
          +                $.extend.apply($, args);
          +            }
          +        } else {
          +            Class.prototype = arguments[0];
          +        }
          +        Class.prototype.cls = Class;
          +        return Class;
          +    };
          +
          +    /**
          +     * Wraps a format string for tooltips
          +     * {{x}}
          +     * {{x.2}
          +     * {{x:months}}
          +     */
          +    $.SPFormatClass = SPFormat = createClass({
          +        fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g,
          +        precre: /(\w+)\.(\d+)/,
          +
          +        init: function (format, fclass) {
          +            this.format = format;
          +            this.fclass = fclass;
          +        },
          +
          +        render: function (fieldset, lookups, options) {
          +            var self = this,
          +                fields = fieldset,
          +                match, token, lookupkey, fieldvalue, prec;
          +            return this.format.replace(this.fre, function () {
          +                var lookup;
          +                token = arguments[1];
          +                lookupkey = arguments[3];
          +                match = self.precre.exec(token);
          +                if (match) {
          +                    prec = match[2];
          +                    token = match[1];
          +                } else {
          +                    prec = false;
          +                }
          +                fieldvalue = fields[token];
          +                if (fieldvalue === undefined) {
          +                    return '';
          +                }
          +                if (lookupkey && lookups && lookups[lookupkey]) {
          +                    lookup = lookups[lookupkey];
          +                    if (lookup.get) { // RangeMap
          +                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;
          +                    } else {
          +                        return lookups[lookupkey][fieldvalue] || fieldvalue;
          +                    }
          +                }
          +                if (isNumber(fieldvalue)) {
          +                    if (options.get('numberFormatter')) {
          +                        fieldvalue = options.get('numberFormatter')(fieldvalue);
          +                    } else {
          +                        fieldvalue = formatNumber(fieldvalue, prec,
          +                            options.get('numberDigitGroupCount'),
          +                            options.get('numberDigitGroupSep'),
          +                            options.get('numberDecimalMark'));
          +                    }
          +                }
          +                return fieldvalue;
          +            });
          +        }
          +    });
          +
          +    // convience method to avoid needing the new operator
          +    $.spformat = function(format, fclass) {
          +        return new SPFormat(format, fclass);
          +    };
          +
          +    clipval = function (val, min, max) {
          +        if (val < min) {
          +            return min;
          +        }
          +        if (val > max) {
          +            return max;
          +        }
          +        return val;
          +    };
          +
          +    quartile = function (values, q) {
          +        var vl;
          +        if (q === 2) {
          +            vl = Math.floor(values.length / 2);
          +            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;
          +        } else {
          +            if (values.length % 2 ) { // odd
          +                vl = (values.length * q + q) / 4;
          +                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];
          +            } else { //even
          +                vl = (values.length * q + 2) / 4;
          +                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];
          +
          +            }
          +        }
          +    };
          +
          +    normalizeValue = function (val) {
          +        var nf;
          +        switch (val) {
          +            case 'undefined':
          +                val = undefined;
          +                break;
          +            case 'null':
          +                val = null;
          +                break;
          +            case 'true':
          +                val = true;
          +                break;
          +            case 'false':
          +                val = false;
          +                break;
          +            default:
          +                nf = parseFloat(val);
          +                if (val == nf) {
          +                    val = nf;
          +                }
          +        }
          +        return val;
          +    };
          +
          +    normalizeValues = function (vals) {
          +        var i, result = [];
          +        for (i = vals.length; i--;) {
          +            result[i] = normalizeValue(vals[i]);
          +        }
          +        return result;
          +    };
          +
          +    remove = function (vals, filter) {
          +        var i, vl, result = [];
          +        for (i = 0, vl = vals.length; i < vl; i++) {
          +            if (vals[i] !== filter) {
          +                result.push(vals[i]);
          +            }
          +        }
          +        return result;
          +    };
          +
          +    isNumber = function (num) {
          +        return !isNaN(parseFloat(num)) && isFinite(num);
          +    };
          +
          +    formatNumber = function (num, prec, groupsize, groupsep, decsep) {
          +        var p, i;
          +        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');
          +        p = (p = $.inArray('.', num)) < 0 ? num.length : p;
          +        if (p < num.length) {
          +            num[p] = decsep;
          +        }
          +        for (i = p - groupsize; i > 0; i -= groupsize) {
          +            num.splice(i, 0, groupsep);
          +        }
          +        return num.join('');
          +    };
          +
          +    // determine if all values of an array match a value
          +    // returns true if the array is empty
          +    all = function (val, arr, ignoreNull) {
          +        var i;
          +        for (i = arr.length; i--; ) {
          +            if (ignoreNull && arr[i] === null) continue;
          +            if (arr[i] !== val) {
          +                return false;
          +            }
          +        }
          +        return true;
          +    };
          +
          +    // sums the numeric values in an array, ignoring other values
          +    sum = function (vals) {
          +        var total = 0, i;
          +        for (i = vals.length; i--;) {
          +            total += typeof vals[i] === 'number' ? vals[i] : 0;
          +        }
          +        return total;
          +    };
          +
          +    ensureArray = function (val) {
          +        return $.isArray(val) ? val : [val];
          +    };
          +
          +    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/
          +    addCSS = function(css) {
          +        var tag, iefail;
          +        if (document.createStyleSheet) {
          +            try {
          +                document.createStyleSheet().cssText = css;
          +                return;
          +            } catch (e) {
          +                // IE <= 9 maxes out at 31 stylesheets; inject into page instead.
          +                iefail = true;
          +            }
          +        }
          +        tag = document.createElement('style');
          +        tag.type = 'text/css';
          +        document.getElementsByTagName('head')[0].appendChild(tag);
          +        if (iefail) {
          +            document.styleSheets[document.styleSheets.length - 1].cssText = css;
          +        } else {
          +            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;
          +        }
          +    };
          +
          +    // Provide a cross-browser interface to a few simple drawing primitives
          +    $.fn.simpledraw = function (width, height, useExisting, interact) {
          +        var target, mhandler;
          +        if (useExisting && (target = this.data('_jqs_vcanvas'))) {
          +            return target;
          +        }
          +
          +        if ($.fn.sparkline.canvas === false) {
          +            // We've already determined that neither Canvas nor VML are available
          +            return false;
          +
          +        } else if ($.fn.sparkline.canvas === undefined) {
          +            // No function defined yet -- need to see if we support Canvas or VML
          +            var el = document.createElement('canvas');
          +            if (!!(el.getContext && el.getContext('2d'))) {
          +                // Canvas is available
          +                $.fn.sparkline.canvas = function(width, height, target, interact) {
          +                    return new VCanvas_canvas(width, height, target, interact);
          +                };
          +            } else if (document.namespaces && !document.namespaces.v) {
          +                // VML is available
          +                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');
          +                $.fn.sparkline.canvas = function(width, height, target, interact) {
          +                    return new VCanvas_vml(width, height, target);
          +                };
          +            } else {
          +                // Neither Canvas nor VML are available
          +                $.fn.sparkline.canvas = false;
          +                return false;
          +            }
          +        }
          +
          +        if (width === undefined) {
          +            width = $(this).innerWidth();
          +        }
          +        if (height === undefined) {
          +            height = $(this).innerHeight();
          +        }
          +
          +        target = $.fn.sparkline.canvas(width, height, this, interact);
          +
          +        mhandler = $(this).data('_jqs_mhandler');
          +        if (mhandler) {
          +            mhandler.registerCanvas(target);
          +        }
          +        return target;
          +    };
          +
          +    $.fn.cleardraw = function () {
          +        var target = this.data('_jqs_vcanvas');
          +        if (target) {
          +            target.reset();
          +        }
          +    };
          +
          +    $.RangeMapClass = RangeMap = createClass({
          +        init: function (map) {
          +            var key, range, rangelist = [];
          +            for (key in map) {
          +                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {
          +                    range = key.split(':');
          +                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);
          +                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);
          +                    range[2] = map[key];
          +                    rangelist.push(range);
          +                }
          +            }
          +            this.map = map;
          +            this.rangelist = rangelist || false;
          +        },
          +
          +        get: function (value) {
          +            var rangelist = this.rangelist,
          +                i, range, result;
          +            if ((result = this.map[value]) !== undefined) {
          +                return result;
          +            }
          +            if (rangelist) {
          +                for (i = rangelist.length; i--;) {
          +                    range = rangelist[i];
          +                    if (range[0] <= value && range[1] >= value) {
          +                        return range[2];
          +                    }
          +                }
          +            }
          +            return undefined;
          +        }
          +    });
          +
          +    // Convenience function
          +    $.range_map = function(map) {
          +        return new RangeMap(map);
          +    };
          +
          +    MouseHandler = createClass({
          +        init: function (el, options) {
          +            var $el = $(el);
          +            this.$el = $el;
          +            this.options = options;
          +            this.currentPageX = 0;
          +            this.currentPageY = 0;
          +            this.el = el;
          +            this.splist = [];
          +            this.tooltip = null;
          +            this.over = false;
          +            this.displayTooltips = !options.get('disableTooltips');
          +            this.highlightEnabled = !options.get('disableHighlight');
          +        },
          +
          +        registerSparkline: function (sp) {
          +            this.splist.push(sp);
          +            if (this.over) {
          +                this.updateDisplay();
          +            }
          +        },
          +
          +        registerCanvas: function (canvas) {
          +            var $canvas = $(canvas.canvas);
          +            this.canvas = canvas;
          +            this.$canvas = $canvas;
          +            $canvas.mouseenter($.proxy(this.mouseenter, this));
          +            $canvas.mouseleave($.proxy(this.mouseleave, this));
          +            $canvas.click($.proxy(this.mouseclick, this));
          +        },
          +
          +        reset: function (removeTooltip) {
          +            this.splist = [];
          +            if (this.tooltip && removeTooltip) {
          +                this.tooltip.remove();
          +                this.tooltip = undefined;
          +            }
          +        },
          +
          +        mouseclick: function (e) {
          +            var clickEvent = $.Event('sparklineClick');
          +            clickEvent.originalEvent = e;
          +            clickEvent.sparklines = this.splist;
          +            this.$el.trigger(clickEvent);
          +        },
          +
          +        mouseenter: function (e) {
          +            $(document.body).unbind('mousemove.jqs');
          +            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));
          +            this.over = true;
          +            this.currentPageX = e.pageX;
          +            this.currentPageY = e.pageY;
          +            this.currentEl = e.target;
          +            if (!this.tooltip && this.displayTooltips) {
          +                this.tooltip = new Tooltip(this.options);
          +                this.tooltip.updatePosition(e.pageX, e.pageY);
          +            }
          +            this.updateDisplay();
          +        },
          +
          +        mouseleave: function () {
          +            $(document.body).unbind('mousemove.jqs');
          +            var splist = this.splist,
          +                 spcount = splist.length,
          +                 needsRefresh = false,
          +                 sp, i;
          +            this.over = false;
          +            this.currentEl = null;
          +
          +            if (this.tooltip) {
          +                this.tooltip.remove();
          +                this.tooltip = null;
          +            }
          +
          +            for (i = 0; i < spcount; i++) {
          +                sp = splist[i];
          +                if (sp.clearRegionHighlight()) {
          +                    needsRefresh = true;
          +                }
          +            }
          +
          +            if (needsRefresh) {
          +                this.canvas.render();
          +            }
          +        },
          +
          +        mousemove: function (e) {
          +            this.currentPageX = e.pageX;
          +            this.currentPageY = e.pageY;
          +            this.currentEl = e.target;
          +            if (this.tooltip) {
          +                this.tooltip.updatePosition(e.pageX, e.pageY);
          +            }
          +            this.updateDisplay();
          +        },
          +
          +        updateDisplay: function () {
          +            var splist = this.splist,
          +                 spcount = splist.length,
          +                 needsRefresh = false,
          +                 offset = this.$canvas.offset(),
          +                 localX = this.currentPageX - offset.left,
          +                 localY = this.currentPageY - offset.top,
          +                 tooltiphtml, sp, i, result, changeEvent;
          +            if (!this.over) {
          +                return;
          +            }
          +            for (i = 0; i < spcount; i++) {
          +                sp = splist[i];
          +                result = sp.setRegionHighlight(this.currentEl, localX, localY);
          +                if (result) {
          +                    needsRefresh = true;
          +                }
          +            }
          +            if (needsRefresh) {
          +                changeEvent = $.Event('sparklineRegionChange');
          +                changeEvent.sparklines = this.splist;
          +                this.$el.trigger(changeEvent);
          +                if (this.tooltip) {
          +                    tooltiphtml = '';
          +                    for (i = 0; i < spcount; i++) {
          +                        sp = splist[i];
          +                        tooltiphtml += sp.getCurrentRegionTooltip();
          +                    }
          +                    this.tooltip.setContent(tooltiphtml);
          +                }
          +                if (!this.disableHighlight) {
          +                    this.canvas.render();
          +                }
          +            }
          +            if (result === null) {
          +                this.mouseleave();
          +            }
          +        }
          +    });
          +
          +
          +    Tooltip = createClass({
          +        sizeStyle: 'position: static !important;' +
          +            'display: block !important;' +
          +            'visibility: hidden !important;' +
          +            'float: left !important;',
          +
          +        init: function (options) {
          +            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),
          +                sizetipStyle = this.sizeStyle,
          +                offset;
          +            this.container = options.get('tooltipContainer') || document.body;
          +            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);
          +            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);
          +            // remove any previous lingering tooltip
          +            $('#jqssizetip').remove();
          +            $('#jqstooltip').remove();
          +            this.sizetip = $('<div/>', {
          +                id: 'jqssizetip',
          +                style: sizetipStyle,
          +                'class': tooltipClassname
          +            });
          +            this.tooltip = $('<div/>', {
          +                id: 'jqstooltip',
          +                'class': tooltipClassname
          +            }).appendTo(this.container);
          +            // account for the container's location
          +            offset = this.tooltip.offset();
          +            this.offsetLeft = offset.left;
          +            this.offsetTop = offset.top;
          +            this.hidden = true;
          +            $(window).unbind('resize.jqs scroll.jqs');
          +            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));
          +            this.updateWindowDims();
          +        },
          +
          +        updateWindowDims: function () {
          +            this.scrollTop = $(window).scrollTop();
          +            this.scrollLeft = $(window).scrollLeft();
          +            this.scrollRight = this.scrollLeft + $(window).width();
          +            this.updatePosition();
          +        },
          +
          +        getSize: function (content) {
          +            this.sizetip.html(content).appendTo(this.container);
          +            this.width = this.sizetip.width() + 1;
          +            this.height = this.sizetip.height();
          +            this.sizetip.remove();
          +        },
          +
          +        setContent: function (content) {
          +            if (!content) {
          +                this.tooltip.css('visibility', 'hidden');
          +                this.hidden = true;
          +                return;
          +            }
          +            this.getSize(content);
          +            this.tooltip.html(content)
          +                .css({
          +                    'width': this.width,
          +                    'height': this.height,
          +                    'visibility': 'visible'
          +                });
          +            if (this.hidden) {
          +                this.hidden = false;
          +                this.updatePosition();
          +            }
          +        },
          +
          +        updatePosition: function (x, y) {
          +            if (x === undefined) {
          +                if (this.mousex === undefined) {
          +                    return;
          +                }
          +                x = this.mousex - this.offsetLeft;
          +                y = this.mousey - this.offsetTop;
          +
          +            } else {
          +                this.mousex = x = x - this.offsetLeft;
          +                this.mousey = y = y - this.offsetTop;
          +            }
          +            if (!this.height || !this.width || this.hidden) {
          +                return;
          +            }
          +
          +            y -= this.height + this.tooltipOffsetY;
          +            x += this.tooltipOffsetX;
          +
          +            if (y < this.scrollTop) {
          +                y = this.scrollTop;
          +            }
          +            if (x < this.scrollLeft) {
          +                x = this.scrollLeft;
          +            } else if (x + this.width > this.scrollRight) {
          +                x = this.scrollRight - this.width;
          +            }
          +
          +            this.tooltip.css({
          +                'left': x,
          +                'top': y
          +            });
          +        },
          +
          +        remove: function () {
          +            this.tooltip.remove();
          +            this.sizetip.remove();
          +            this.sizetip = this.tooltip = undefined;
          +            $(window).unbind('resize.jqs scroll.jqs');
          +        }
          +    });
          +
          +    initStyles = function() {
          +        addCSS(defaultStyles);
          +    };
          +
          +    $(initStyles);
          +
          +    pending = [];
          +    $.fn.sparkline = function (userValues, userOptions) {
          +        return this.each(function () {
          +            var options = new $.fn.sparkline.options(this, userOptions),
          +                 $this = $(this),
          +                 render, i;
          +            render = function () {
          +                var values, width, height, tmp, mhandler, sp, vals;
          +                if (userValues === 'html' || userValues === undefined) {
          +                    vals = this.getAttribute(options.get('tagValuesAttribute'));
          +                    if (vals === undefined || vals === null) {
          +                        vals = $this.html();
          +                    }
          +                    values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(',');
          +                } else {
          +                    values = userValues;
          +                }
          +
          +                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');
          +                if (options.get('height') === 'auto') {
          +                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {
          +                        // must be a better way to get the line height
          +                        tmp = document.createElement('span');
          +                        tmp.innerHTML = 'a';
          +                        $this.html(tmp);
          +                        height = $(tmp).innerHeight() || $(tmp).height();
          +                        $(tmp).remove();
          +                        tmp = null;
          +                    }
          +                } else {
          +                    height = options.get('height');
          +                }
          +
          +                if (!options.get('disableInteraction')) {
          +                    mhandler = $.data(this, '_jqs_mhandler');
          +                    if (!mhandler) {
          +                        mhandler = new MouseHandler(this, options);
          +                        $.data(this, '_jqs_mhandler', mhandler);
          +                    } else if (!options.get('composite')) {
          +                        mhandler.reset();
          +                    }
          +                } else {
          +                    mhandler = false;
          +                }
          +
          +                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {
          +                    if (!$.data(this, '_jqs_errnotify')) {
          +                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');
          +                        $.data(this, '_jqs_errnotify', true);
          +                    }
          +                    return;
          +                }
          +
          +                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);
          +
          +                sp.render();
          +
          +                if (mhandler) {
          +                    mhandler.registerSparkline(sp);
          +                }
          +            };
          +            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {
          +                if (!options.get('composite') && $.data(this, '_jqs_pending')) {
          +                    // remove any existing references to the element
          +                    for (i = pending.length; i; i--) {
          +                        if (pending[i - 1][0] == this) {
          +                            pending.splice(i - 1, 1);
          +                        }
          +                    }
          +                }
          +                pending.push([this, render]);
          +                $.data(this, '_jqs_pending', true);
          +            } else {
          +                render.call(this);
          +            }
          +        });
          +    };
          +
          +    $.fn.sparkline.defaults = getDefaults();
          +
          +
          +    $.sparkline_display_visible = function () {
          +        var el, i, pl;
          +        var done = [];
          +        for (i = 0, pl = pending.length; i < pl; i++) {
          +            el = pending[i][0];
          +            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {
          +                pending[i][1].call(el);
          +                $.data(pending[i][0], '_jqs_pending', false);
          +                done.push(i);
          +            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {
          +                // element has been inserted and removed from the DOM
          +                // If it was not yet inserted into the dom then the .data request
          +                // will return true.
          +                // removing from the dom causes the data to be removed.
          +                $.data(pending[i][0], '_jqs_pending', false);
          +                done.push(i);
          +            }
          +        }
          +        for (i = done.length; i; i--) {
          +            pending.splice(done[i - 1], 1);
          +        }
          +    };
          +
          +
          +    /**
          +     * User option handler
          +     */
          +    $.fn.sparkline.options = createClass({
          +        init: function (tag, userOptions) {
          +            var extendedOptions, defaults, base, tagOptionType;
          +            this.userOptions = userOptions = userOptions || {};
          +            this.tag = tag;
          +            this.tagValCache = {};
          +            defaults = $.fn.sparkline.defaults;
          +            base = defaults.common;
          +            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);
          +
          +            tagOptionType = this.getTagSetting('type');
          +            if (tagOptionType === UNSET_OPTION) {
          +                extendedOptions = defaults[userOptions.type || base.type];
          +            } else {
          +                extendedOptions = defaults[tagOptionType];
          +            }
          +            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);
          +        },
          +
          +
          +        getTagSetting: function (key) {
          +            var prefix = this.tagOptionsPrefix,
          +                val, i, pairs, keyval;
          +            if (prefix === false || prefix === undefined) {
          +                return UNSET_OPTION;
          +            }
          +            if (this.tagValCache.hasOwnProperty(key)) {
          +                val = this.tagValCache.key;
          +            } else {
          +                val = this.tag.getAttribute(prefix + key);
          +                if (val === undefined || val === null) {
          +                    val = UNSET_OPTION;
          +                } else if (val.substr(0, 1) === '[') {
          +                    val = val.substr(1, val.length - 2).split(',');
          +                    for (i = val.length; i--;) {
          +                        val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, ''));
          +                    }
          +                } else if (val.substr(0, 1) === '{') {
          +                    pairs = val.substr(1, val.length - 2).split(',');
          +                    val = {};
          +                    for (i = pairs.length; i--;) {
          +                        keyval = pairs[i].split(':', 2);
          +                        val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, ''));
          +                    }
          +                } else {
          +                    val = normalizeValue(val);
          +                }
          +                this.tagValCache.key = val;
          +            }
          +            return val;
          +        },
          +
          +        get: function (key, defaultval) {
          +            var tagOption = this.getTagSetting(key),
          +                result;
          +            if (tagOption !== UNSET_OPTION) {
          +                return tagOption;
          +            }
          +            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;
          +        }
          +    });
          +
          +
          +    $.fn.sparkline._base = createClass({
          +        disabled: false,
          +
          +        init: function (el, values, options, width, height) {
          +            this.el = el;
          +            this.$el = $(el);
          +            this.values = values;
          +            this.options = options;
          +            this.width = width;
          +            this.height = height;
          +            this.currentRegion = undefined;
          +        },
          +
          +        /**
          +         * Setup the canvas
          +         */
          +        initTarget: function () {
          +            var interactive = !this.options.get('disableInteraction');
          +            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {
          +                this.disabled = true;
          +            } else {
          +                this.canvasWidth = this.target.pixelWidth;
          +                this.canvasHeight = this.target.pixelHeight;
          +            }
          +        },
          +
          +        /**
          +         * Actually render the chart to the canvas
          +         */
          +        render: function () {
          +            if (this.disabled) {
          +                this.el.innerHTML = '';
          +                return false;
          +            }
          +            return true;
          +        },
          +
          +        /**
          +         * Return a region id for a given x/y co-ordinate
          +         */
          +        getRegion: function (x, y) {
          +        },
          +
          +        /**
          +         * Highlight an item based on the moused-over x,y co-ordinate
          +         */
          +        setRegionHighlight: function (el, x, y) {
          +            var currentRegion = this.currentRegion,
          +                highlightEnabled = !this.options.get('disableHighlight'),
          +                newRegion;
          +            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {
          +                return null;
          +            }
          +            newRegion = this.getRegion(el, x, y);
          +            if (currentRegion !== newRegion) {
          +                if (currentRegion !== undefined && highlightEnabled) {
          +                    this.removeHighlight();
          +                }
          +                this.currentRegion = newRegion;
          +                if (newRegion !== undefined && highlightEnabled) {
          +                    this.renderHighlight();
          +                }
          +                return true;
          +            }
          +            return false;
          +        },
          +
          +        /**
          +         * Reset any currently highlighted item
          +         */
          +        clearRegionHighlight: function () {
          +            if (this.currentRegion !== undefined) {
          +                this.removeHighlight();
          +                this.currentRegion = undefined;
          +                return true;
          +            }
          +            return false;
          +        },
          +
          +        renderHighlight: function () {
          +            this.changeHighlight(true);
          +        },
          +
          +        removeHighlight: function () {
          +            this.changeHighlight(false);
          +        },
          +
          +        changeHighlight: function (highlight)  {},
          +
          +        /**
          +         * Fetch the HTML to display as a tooltip
          +         */
          +        getCurrentRegionTooltip: function () {
          +            var options = this.options,
          +                header = '',
          +                entries = [],
          +                fields, formats, formatlen, fclass, text, i,
          +                showFields, showFieldsKey, newFields, fv,
          +                formatter, format, fieldlen, j;
          +            if (this.currentRegion === undefined) {
          +                return '';
          +            }
          +            fields = this.getCurrentRegionFields();
          +            formatter = options.get('tooltipFormatter');
          +            if (formatter) {
          +                return formatter(this, options, fields);
          +            }
          +            if (options.get('tooltipChartTitle')) {
          +                header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n';
          +            }
          +            formats = this.options.get('tooltipFormat');
          +            if (!formats) {
          +                return '';
          +            }
          +            if (!$.isArray(formats)) {
          +                formats = [formats];
          +            }
          +            if (!$.isArray(fields)) {
          +                fields = [fields];
          +            }
          +            showFields = this.options.get('tooltipFormatFieldlist');
          +            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');
          +            if (showFields && showFieldsKey) {
          +                // user-selected ordering of fields
          +                newFields = [];
          +                for (i = fields.length; i--;) {
          +                    fv = fields[i][showFieldsKey];
          +                    if ((j = $.inArray(fv, showFields)) != -1) {
          +                        newFields[j] = fields[i];
          +                    }
          +                }
          +                fields = newFields;
          +            }
          +            formatlen = formats.length;
          +            fieldlen = fields.length;
          +            for (i = 0; i < formatlen; i++) {
          +                format = formats[i];
          +                if (typeof format === 'string') {
          +                    format = new SPFormat(format);
          +                }
          +                fclass = format.fclass || 'jqsfield';
          +                for (j = 0; j < fieldlen; j++) {
          +                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {
          +                        $.extend(fields[j], {
          +                            prefix: options.get('tooltipPrefix'),
          +                            suffix: options.get('tooltipSuffix')
          +                        });
          +                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);
          +                        entries.push('<div class="' + fclass + '">' + text + '</div>');
          +                    }
          +                }
          +            }
          +            if (entries.length) {
          +                return header + entries.join('\n');
          +            }
          +            return '';
          +        },
          +
          +        getCurrentRegionFields: function () {},
          +
          +        calcHighlightColor: function (color, options) {
          +            var highlightColor = options.get('highlightColor'),
          +                lighten = options.get('highlightLighten'),
          +                parse, mult, rgbnew, i;
          +            if (highlightColor) {
          +                return highlightColor;
          +            }
          +            if (lighten) {
          +                // extract RGB values
          +                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);
          +                if (parse) {
          +                    rgbnew = [];
          +                    mult = color.length === 4 ? 16 : 1;
          +                    for (i = 0; i < 3; i++) {
          +                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);
          +                    }
          +                    return 'rgb(' + rgbnew.join(',') + ')';
          +                }
          +
          +            }
          +            return color;
          +        }
          +
          +    });
          +
          +    barHighlightMixin = {
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                target = this.target,
          +                shapeids = this.regionShapes[currentRegion],
          +                newShapes;
          +            // will be null if the region value was null
          +            if (shapeids) {
          +                newShapes = this.renderRegion(currentRegion, highlight);
          +                if ($.isArray(newShapes) || $.isArray(shapeids)) {
          +                    target.replaceWithShapes(shapeids, newShapes);
          +                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {
          +                        return newShape.id;
          +                    });
          +                } else {
          +                    target.replaceWithShape(shapeids, newShapes);
          +                    this.regionShapes[currentRegion] = newShapes.id;
          +                }
          +            }
          +        },
          +
          +        render: function () {
          +            var values = this.values,
          +                target = this.target,
          +                regionShapes = this.regionShapes,
          +                shapes, ids, i, j;
          +
          +            if (!this.cls._super.render.call(this)) {
          +                return;
          +            }
          +            for (i = values.length; i--;) {
          +                shapes = this.renderRegion(i);
          +                if (shapes) {
          +                    if ($.isArray(shapes)) {
          +                        ids = [];
          +                        for (j = shapes.length; j--;) {
          +                            shapes[j].append();
          +                            ids.push(shapes[j].id);
          +                        }
          +                        regionShapes[i] = ids;
          +                    } else {
          +                        shapes.append();
          +                        regionShapes[i] = shapes.id; // store just the shapeid
          +                    }
          +                } else {
          +                    // null value
          +                    regionShapes[i] = null;
          +                }
          +            }
          +            target.render();
          +        }
          +    };
          +
          +    /**
          +     * Line charts
          +     */
          +    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {
          +        type: 'line',
          +
          +        init: function (el, values, options, width, height) {
          +            line._super.init.call(this, el, values, options, width, height);
          +            this.vertices = [];
          +            this.regionMap = [];
          +            this.xvalues = [];
          +            this.yvalues = [];
          +            this.yminmax = [];
          +            this.hightlightSpotId = null;
          +            this.lastShapeId = null;
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var i,
          +                regionMap = this.regionMap; // maps regions to value positions
          +            for (i = regionMap.length; i--;) {
          +                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {
          +                    return regionMap[i][2];
          +                }
          +            }
          +            return undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.yvalues[currentRegion] === null,
          +                x: this.xvalues[currentRegion],
          +                y: this.yvalues[currentRegion],
          +                color: this.options.get('lineColor'),
          +                fillColor: this.options.get('fillColor'),
          +                offset: currentRegion
          +            };
          +        },
          +
          +        renderHighlight: function () {
          +            var currentRegion = this.currentRegion,
          +                target = this.target,
          +                vertex = this.vertices[currentRegion],
          +                options = this.options,
          +                spotRadius = options.get('spotRadius'),
          +                highlightSpotColor = options.get('highlightSpotColor'),
          +                highlightLineColor = options.get('highlightLineColor'),
          +                highlightSpot, highlightLine;
          +
          +            if (!vertex) {
          +                return;
          +            }
          +            if (spotRadius && highlightSpotColor) {
          +                highlightSpot = target.drawCircle(vertex[0], vertex[1],
          +                    spotRadius, undefined, highlightSpotColor);
          +                this.highlightSpotId = highlightSpot.id;
          +                target.insertAfterShape(this.lastShapeId, highlightSpot);
          +            }
          +            if (highlightLineColor) {
          +                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],
          +                    this.canvasTop + this.canvasHeight, highlightLineColor);
          +                this.highlightLineId = highlightLine.id;
          +                target.insertAfterShape(this.lastShapeId, highlightLine);
          +            }
          +        },
          +
          +        removeHighlight: function () {
          +            var target = this.target;
          +            if (this.highlightSpotId) {
          +                target.removeShapeId(this.highlightSpotId);
          +                this.highlightSpotId = null;
          +            }
          +            if (this.highlightLineId) {
          +                target.removeShapeId(this.highlightLineId);
          +                this.highlightLineId = null;
          +            }
          +        },
          +
          +        scanValues: function () {
          +            var values = this.values,
          +                valcount = values.length,
          +                xvalues = this.xvalues,
          +                yvalues = this.yvalues,
          +                yminmax = this.yminmax,
          +                i, val, isStr, isArray, sp;
          +            for (i = 0; i < valcount; i++) {
          +                val = values[i];
          +                isStr = typeof(values[i]) === 'string';
          +                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;
          +                sp = isStr && values[i].split(':');
          +                if (isStr && sp.length === 2) { // x:y
          +                    xvalues.push(Number(sp[0]));
          +                    yvalues.push(Number(sp[1]));
          +                    yminmax.push(Number(sp[1]));
          +                } else if (isArray) {
          +                    xvalues.push(val[0]);
          +                    yvalues.push(val[1]);
          +                    yminmax.push(val[1]);
          +                } else {
          +                    xvalues.push(i);
          +                    if (values[i] === null || values[i] === 'null') {
          +                        yvalues.push(null);
          +                    } else {
          +                        yvalues.push(Number(val));
          +                        yminmax.push(Number(val));
          +                    }
          +                }
          +            }
          +            if (this.options.get('xvalues')) {
          +                xvalues = this.options.get('xvalues');
          +            }
          +
          +            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);
          +            this.miny = this.minyorg = Math.min.apply(Math, yminmax);
          +
          +            this.maxx = Math.max.apply(Math, xvalues);
          +            this.minx = Math.min.apply(Math, xvalues);
          +
          +            this.xvalues = xvalues;
          +            this.yvalues = yvalues;
          +            this.yminmax = yminmax;
          +
          +        },
          +
          +        processRangeOptions: function () {
          +            var options = this.options,
          +                normalRangeMin = options.get('normalRangeMin'),
          +                normalRangeMax = options.get('normalRangeMax');
          +
          +            if (normalRangeMin !== undefined) {
          +                if (normalRangeMin < this.miny) {
          +                    this.miny = normalRangeMin;
          +                }
          +                if (normalRangeMax > this.maxy) {
          +                    this.maxy = normalRangeMax;
          +                }
          +            }
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {
          +                this.miny = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {
          +                this.maxy = options.get('chartRangeMax');
          +            }
          +            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {
          +                this.minx = options.get('chartRangeMinX');
          +            }
          +            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {
          +                this.maxx = options.get('chartRangeMaxX');
          +            }
          +
          +        },
          +
          +        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {
          +            var normalRangeMin = this.options.get('normalRangeMin'),
          +                normalRangeMax = this.options.get('normalRangeMax'),
          +                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),
          +                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);
          +            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();
          +        },
          +
          +        render: function () {
          +            var options = this.options,
          +                target = this.target,
          +                canvasWidth = this.canvasWidth,
          +                canvasHeight = this.canvasHeight,
          +                vertices = this.vertices,
          +                spotRadius = options.get('spotRadius'),
          +                regionMap = this.regionMap,
          +                rangex, rangey, yvallast,
          +                canvasTop, canvasLeft,
          +                vertex, path, paths, x, y, xnext, xpos, xposnext,
          +                last, next, yvalcount, lineShapes, fillShapes, plen,
          +                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;
          +
          +            if (!line._super.render.call(this)) {
          +                return;
          +            }
          +
          +            this.scanValues();
          +            this.processRangeOptions();
          +
          +            xvalues = this.xvalues;
          +            yvalues = this.yvalues;
          +
          +            if (!this.yminmax.length || this.yvalues.length < 2) {
          +                // empty or all null valuess
          +                return;
          +            }
          +
          +            canvasTop = canvasLeft = 0;
          +
          +            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;
          +            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;
          +            yvallast = this.yvalues.length - 1;
          +
          +            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {
          +                spotRadius = 0;
          +            }
          +            if (spotRadius) {
          +                // adjust the canvas size as required so that spots will fit
          +                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');
          +                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {
          +                    canvasHeight -= Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {
          +                    canvasHeight -= Math.ceil(spotRadius);
          +                    canvasTop += Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled ||
          +                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {
          +                    canvasLeft += Math.ceil(spotRadius);
          +                    canvasWidth -= Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled || options.get('spotColor') ||
          +                    (options.get('minSpotColor') || options.get('maxSpotColor') &&
          +                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {
          +                    canvasWidth -= Math.ceil(spotRadius);
          +                }
          +            }
          +
          +
          +            canvasHeight--;
          +
          +            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {
          +                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
          +            }
          +
          +            path = [];
          +            paths = [path];
          +            last = next = null;
          +            yvalcount = yvalues.length;
          +            for (i = 0; i < yvalcount; i++) {
          +                x = xvalues[i];
          +                xnext = xvalues[i + 1];
          +                y = yvalues[i];
          +                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));
          +                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;
          +                next = xpos + ((xposnext - xpos) / 2);
          +                regionMap[i] = [last || 0, next, i];
          +                last = next;
          +                if (y === null) {
          +                    if (i) {
          +                        if (yvalues[i - 1] !== null) {
          +                            path = [];
          +                            paths.push(path);
          +                        }
          +                        vertices.push(null);
          +                    }
          +                } else {
          +                    if (y < this.miny) {
          +                        y = this.miny;
          +                    }
          +                    if (y > this.maxy) {
          +                        y = this.maxy;
          +                    }
          +                    if (!path.length) {
          +                        // previous value was null
          +                        path.push([xpos, canvasTop + canvasHeight]);
          +                    }
          +                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];
          +                    path.push(vertex);
          +                    vertices.push(vertex);
          +                }
          +            }
          +
          +            lineShapes = [];
          +            fillShapes = [];
          +            plen = paths.length;
          +            for (i = 0; i < plen; i++) {
          +                path = paths[i];
          +                if (path.length) {
          +                    if (options.get('fillColor')) {
          +                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);
          +                        fillShapes.push(path.slice(0));
          +                        path.pop();
          +                    }
          +                    // if there's only a single point in this path, then we want to display it
          +                    // as a vertical line which means we keep path[0]  as is
          +                    if (path.length > 2) {
          +                        // else we want the first value
          +                        path[0] = [path[0][0], path[1][1]];
          +                    }
          +                    lineShapes.push(path);
          +                }
          +            }
          +
          +            // draw the fill first, then optionally the normal range, then the line on top of that
          +            plen = fillShapes.length;
          +            for (i = 0; i < plen; i++) {
          +                target.drawShape(fillShapes[i],
          +                    options.get('fillColor'), options.get('fillColor')).append();
          +            }
          +
          +            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {
          +                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
          +            }
          +
          +            plen = lineShapes.length;
          +            for (i = 0; i < plen; i++) {
          +                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,
          +                    options.get('lineWidth')).append();
          +            }
          +
          +            if (spotRadius && options.get('valueSpots')) {
          +                valueSpots = options.get('valueSpots');
          +                if (valueSpots.get === undefined) {
          +                    valueSpots = new RangeMap(valueSpots);
          +                }
          +                for (i = 0; i < yvalcount; i++) {
          +                    color = valueSpots.get(yvalues[i]);
          +                    if (color) {
          +                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),
          +                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),
          +                            spotRadius, undefined,
          +                            color).append();
          +                    }
          +                }
          +
          +            }
          +            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {
          +                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),
          +                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),
          +                    spotRadius, undefined,
          +                    options.get('spotColor')).append();
          +            }
          +            if (this.maxy !== this.minyorg) {
          +                if (spotRadius && options.get('minSpotColor')) {
          +                    x = xvalues[$.inArray(this.minyorg, yvalues)];
          +                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
          +                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),
          +                        spotRadius, undefined,
          +                        options.get('minSpotColor')).append();
          +                }
          +                if (spotRadius && options.get('maxSpotColor')) {
          +                    x = xvalues[$.inArray(this.maxyorg, yvalues)];
          +                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
          +                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),
          +                        spotRadius, undefined,
          +                        options.get('maxSpotColor')).append();
          +                }
          +            }
          +
          +            this.lastShapeId = target.getLastShapeId();
          +            this.canvasTop = canvasTop;
          +            target.render();
          +        }
          +    });
          +
          +    /**
          +     * Bar charts
          +     */
          +    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'bar',
          +
          +        init: function (el, values, options, width, height) {
          +            var barWidth = parseInt(options.get('barWidth'), 10),
          +                barSpacing = parseInt(options.get('barSpacing'), 10),
          +                chartRangeMin = options.get('chartRangeMin'),
          +                chartRangeMax = options.get('chartRangeMax'),
          +                chartRangeClip = options.get('chartRangeClip'),
          +                stackMin = Infinity,
          +                stackMax = -Infinity,
          +                isStackString, groupMin, groupMax, stackRanges,
          +                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,
          +                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;
          +            bar._super.init.call(this, el, values, options, width, height);
          +
          +            // scan values to determine whether to stack bars
          +            for (i = 0, vlen = values.length; i < vlen; i++) {
          +                val = values[i];
          +                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;
          +                if (isStackString || $.isArray(val)) {
          +                    stacked = true;
          +                    if (isStackString) {
          +                        val = values[i] = normalizeValues(val.split(':'));
          +                    }
          +                    val = remove(val, null); // min/max will treat null as zero
          +                    groupMin = Math.min.apply(Math, val);
          +                    groupMax = Math.max.apply(Math, val);
          +                    if (groupMin < stackMin) {
          +                        stackMin = groupMin;
          +                    }
          +                    if (groupMax > stackMax) {
          +                        stackMax = groupMax;
          +                    }
          +                }
          +            }
          +
          +            this.stacked = stacked;
          +            this.regionShapes = {};
          +            this.barWidth = barWidth;
          +            this.barSpacing = barSpacing;
          +            this.totalBarWidth = barWidth + barSpacing;
          +            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
          +
          +            this.initTarget();
          +
          +            if (chartRangeClip) {
          +                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;
          +                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;
          +            }
          +
          +            numValues = [];
          +            stackRanges = stacked ? [] : numValues;
          +            var stackTotals = [];
          +            var stackRangesNeg = [];
          +            for (i = 0, vlen = values.length; i < vlen; i++) {
          +                if (stacked) {
          +                    vlist = values[i];
          +                    values[i] = svals = [];
          +                    stackTotals[i] = 0;
          +                    stackRanges[i] = stackRangesNeg[i] = 0;
          +                    for (j = 0, slen = vlist.length; j < slen; j++) {
          +                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];
          +                        if (val !== null) {
          +                            if (val > 0) {
          +                                stackTotals[i] += val;
          +                            }
          +                            if (stackMin < 0 && stackMax > 0) {
          +                                if (val < 0) {
          +                                    stackRangesNeg[i] += Math.abs(val);
          +                                } else {
          +                                    stackRanges[i] += val;
          +                                }
          +                            } else {
          +                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));
          +                            }
          +                            numValues.push(val);
          +                        }
          +                    }
          +                } else {
          +                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];
          +                    val = values[i] = normalizeValue(val);
          +                    if (val !== null) {
          +                        numValues.push(val);
          +                    }
          +                }
          +            }
          +            this.max = max = Math.max.apply(Math, numValues);
          +            this.min = min = Math.min.apply(Math, numValues);
          +            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;
          +            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;
          +
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {
          +                min = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {
          +                max = options.get('chartRangeMax');
          +            }
          +
          +            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);
          +            if (min <= 0 && max >= 0 && zeroAxis) {
          +                xaxisOffset = 0;
          +            } else if (zeroAxis == false) {
          +                xaxisOffset = min;
          +            } else if (min > 0) {
          +                xaxisOffset = min;
          +            } else {
          +                xaxisOffset = max;
          +            }
          +            this.xaxisOffset = xaxisOffset;
          +
          +            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;
          +
          +            // as we plot zero/min values a single pixel line, we add a pixel to all other
          +            // values - Reduce the effective canvas size to suit
          +            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;
          +
          +            if (min < xaxisOffset) {
          +                yMaxCalc = (stacked && max >= 0) ? stackMax : max;
          +                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;
          +                if (yoffset !== Math.ceil(yoffset)) {
          +                    this.canvasHeightEf -= 2;
          +                    yoffset = Math.ceil(yoffset);
          +                }
          +            } else {
          +                yoffset = this.canvasHeight;
          +            }
          +            this.yoffset = yoffset;
          +
          +            if ($.isArray(options.get('colorMap'))) {
          +                this.colorMapByIndex = options.get('colorMap');
          +                this.colorMapByValue = null;
          +            } else {
          +                this.colorMapByIndex = null;
          +                this.colorMapByValue = options.get('colorMap');
          +                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
          +                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
          +                }
          +            }
          +
          +            this.range = range;
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var result = Math.floor(x / this.totalBarWidth);
          +            return (result < 0 || result >= this.values.length) ? undefined : result;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion,
          +                values = ensureArray(this.values[currentRegion]),
          +                result = [],
          +                value, i;
          +            for (i = values.length; i--;) {
          +                value = values[i];
          +                result.push({
          +                    isNull: value === null,
          +                    value: value,
          +                    color: this.calcColor(i, value, currentRegion),
          +                    offset: currentRegion
          +                });
          +            }
          +            return result;
          +        },
          +
          +        calcColor: function (stacknum, value, valuenum) {
          +            var colorMapByIndex = this.colorMapByIndex,
          +                colorMapByValue = this.colorMapByValue,
          +                options = this.options,
          +                color, newColor;
          +            if (this.stacked) {
          +                color = options.get('stackedBarColor');
          +            } else {
          +                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');
          +            }
          +            if (value === 0 && options.get('zeroColor') !== undefined) {
          +                color = options.get('zeroColor');
          +            }
          +            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
          +                color = newColor;
          +            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
          +                color = colorMapByIndex[valuenum];
          +            }
          +            return $.isArray(color) ? color[stacknum % color.length] : color;
          +        },
          +
          +        /**
          +         * Render bar(s) for a region
          +         */
          +        renderRegion: function (valuenum, highlight) {
          +            var vals = this.values[valuenum],
          +                options = this.options,
          +                xaxisOffset = this.xaxisOffset,
          +                result = [],
          +                range = this.range,
          +                stacked = this.stacked,
          +                target = this.target,
          +                x = valuenum * this.totalBarWidth,
          +                canvasHeightEf = this.canvasHeightEf,
          +                yoffset = this.yoffset,
          +                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;
          +
          +            vals = $.isArray(vals) ? vals : [vals];
          +            valcount = vals.length;
          +            val = vals[0];
          +            isNull = all(null, vals);
          +            allMin = all(xaxisOffset, vals, true);
          +
          +            if (isNull) {
          +                if (options.get('nullColor')) {
          +                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);
          +                    y = (yoffset > 0) ? yoffset - 1 : yoffset;
          +                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);
          +                } else {
          +                    return undefined;
          +                }
          +            }
          +            yoffsetNeg = yoffset;
          +            for (i = 0; i < valcount; i++) {
          +                val = vals[i];
          +
          +                if (stacked && val === xaxisOffset) {
          +                    if (!allMin || minPlotted) {
          +                        continue;
          +                    }
          +                    minPlotted = true;
          +                }
          +
          +                if (range > 0) {
          +                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;
          +                } else {
          +                    height = 1;
          +                }
          +                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {
          +                    y = yoffsetNeg;
          +                    yoffsetNeg += height;
          +                } else {
          +                    y = yoffset - height;
          +                    yoffset -= height;
          +                }
          +                color = this.calcColor(i, val, valuenum);
          +                if (highlight) {
          +                    color = this.calcHighlightColor(color, options);
          +                }
          +                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));
          +            }
          +            if (result.length === 1) {
          +                return result[0];
          +            }
          +            return result;
          +        }
          +    });
          +
          +    /**
          +     * Tristate charts
          +     */
          +    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'tristate',
          +
          +        init: function (el, values, options, width, height) {
          +            var barWidth = parseInt(options.get('barWidth'), 10),
          +                barSpacing = parseInt(options.get('barSpacing'), 10);
          +            tristate._super.init.call(this, el, values, options, width, height);
          +
          +            this.regionShapes = {};
          +            this.barWidth = barWidth;
          +            this.barSpacing = barSpacing;
          +            this.totalBarWidth = barWidth + barSpacing;
          +            this.values = $.map(values, Number);
          +            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
          +
          +            if ($.isArray(options.get('colorMap'))) {
          +                this.colorMapByIndex = options.get('colorMap');
          +                this.colorMapByValue = null;
          +            } else {
          +                this.colorMapByIndex = null;
          +                this.colorMapByValue = options.get('colorMap');
          +                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
          +                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
          +                }
          +            }
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            return Math.floor(x / this.totalBarWidth);
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                color: this.calcColor(this.values[currentRegion], currentRegion),
          +                offset: currentRegion
          +            };
          +        },
          +
          +        calcColor: function (value, valuenum) {
          +            var values = this.values,
          +                options = this.options,
          +                colorMapByIndex = this.colorMapByIndex,
          +                colorMapByValue = this.colorMapByValue,
          +                color, newColor;
          +
          +            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
          +                color = newColor;
          +            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
          +                color = colorMapByIndex[valuenum];
          +            } else if (values[valuenum] < 0) {
          +                color = options.get('negBarColor');
          +            } else if (values[valuenum] > 0) {
          +                color = options.get('posBarColor');
          +            } else {
          +                color = options.get('zeroBarColor');
          +            }
          +            return color;
          +        },
          +
          +        renderRegion: function (valuenum, highlight) {
          +            var values = this.values,
          +                options = this.options,
          +                target = this.target,
          +                canvasHeight, height, halfHeight,
          +                x, y, color;
          +
          +            canvasHeight = target.pixelHeight;
          +            halfHeight = Math.round(canvasHeight / 2);
          +
          +            x = valuenum * this.totalBarWidth;
          +            if (values[valuenum] < 0) {
          +                y = halfHeight;
          +                height = halfHeight - 1;
          +            } else if (values[valuenum] > 0) {
          +                y = 0;
          +                height = halfHeight - 1;
          +            } else {
          +                y = halfHeight - 1;
          +                height = 2;
          +            }
          +            color = this.calcColor(values[valuenum], valuenum);
          +            if (color === null) {
          +                return;
          +            }
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, options);
          +            }
          +            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);
          +        }
          +    });
          +
          +    /**
          +     * Discrete charts
          +     */
          +    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'discrete',
          +
          +        init: function (el, values, options, width, height) {
          +            discrete._super.init.call(this, el, values, options, width, height);
          +
          +            this.regionShapes = {};
          +            this.values = values = $.map(values, Number);
          +            this.min = Math.min.apply(Math, values);
          +            this.max = Math.max.apply(Math, values);
          +            this.range = this.max - this.min;
          +            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;
          +            this.interval = Math.floor(width / values.length);
          +            this.itemWidth = width / values.length;
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {
          +                this.min = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {
          +                this.max = options.get('chartRangeMax');
          +            }
          +            this.initTarget();
          +            if (this.target) {
          +                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');
          +            }
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            return Math.floor(x / this.itemWidth);
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                offset: currentRegion
          +            };
          +        },
          +
          +        renderRegion: function (valuenum, highlight) {
          +            var values = this.values,
          +                options = this.options,
          +                min = this.min,
          +                max = this.max,
          +                range = this.range,
          +                interval = this.interval,
          +                target = this.target,
          +                canvasHeight = this.canvasHeight,
          +                lineHeight = this.lineHeight,
          +                pheight = canvasHeight - lineHeight,
          +                ytop, val, color, x;
          +
          +            val = clipval(values[valuenum], min, max);
          +            x = valuenum * interval;
          +            ytop = Math.round(pheight - pheight * ((val - min) / range));
          +            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, options);
          +            }
          +            return target.drawLine(x, ytop, x, ytop + lineHeight, color);
          +        }
          +    });
          +
          +    /**
          +     * Bullet charts
          +     */
          +    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {
          +        type: 'bullet',
          +
          +        init: function (el, values, options, width, height) {
          +            var min, max, vals;
          +            bullet._super.init.call(this, el, values, options, width, height);
          +
          +            // values: target, performance, range1, range2, range3
          +            this.values = values = normalizeValues(values);
          +            // target or performance could be null
          +            vals = values.slice();
          +            vals[0] = vals[0] === null ? vals[2] : vals[0];
          +            vals[1] = values[1] === null ? vals[2] : vals[1];
          +            min = Math.min.apply(Math, values);
          +            max = Math.max.apply(Math, values);
          +            if (options.get('base') === undefined) {
          +                min = min < 0 ? min : 0;
          +            } else {
          +                min = options.get('base');
          +            }
          +            this.min = min;
          +            this.max = max;
          +            this.range = max - min;
          +            this.shapes = {};
          +            this.valueShapes = {};
          +            this.regiondata = {};
          +            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;
          +            this.target = this.$el.simpledraw(width, height, options.get('composite'));
          +            if (!values.length) {
          +                this.disabled = true;
          +            }
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var shapeid = this.target.getShapeAt(el, x, y);
          +            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                fieldkey: currentRegion.substr(0, 1),
          +                value: this.values[currentRegion.substr(1)],
          +                region: currentRegion
          +            };
          +        },
          +
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                shapeid = this.valueShapes[currentRegion],
          +                shape;
          +            delete this.shapes[shapeid];
          +            switch (currentRegion.substr(0, 1)) {
          +                case 'r':
          +                    shape = this.renderRange(currentRegion.substr(1), highlight);
          +                    break;
          +                case 'p':
          +                    shape = this.renderPerformance(highlight);
          +                    break;
          +                case 't':
          +                    shape = this.renderTarget(highlight);
          +                    break;
          +            }
          +            this.valueShapes[currentRegion] = shape.id;
          +            this.shapes[shape.id] = currentRegion;
          +            this.target.replaceWithShape(shapeid, shape);
          +        },
          +
          +        renderRange: function (rn, highlight) {
          +            var rangeval = this.values[rn],
          +                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),
          +                color = this.options.get('rangeColors')[rn - 2];
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);
          +        },
          +
          +        renderPerformance: function (highlight) {
          +            var perfval = this.values[1],
          +                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),
          +                color = this.options.get('performanceColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,
          +                Math.round(this.canvasHeight * 0.4) - 1, color, color);
          +        },
          +
          +        renderTarget: function (highlight) {
          +            var targetval = this.values[0],
          +                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),
          +                targettop = Math.round(this.canvasHeight * 0.10),
          +                targetheight = this.canvasHeight - (targettop * 2),
          +                color = this.options.get('targetColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);
          +        },
          +
          +        render: function () {
          +            var vlen = this.values.length,
          +                target = this.target,
          +                i, shape;
          +            if (!bullet._super.render.call(this)) {
          +                return;
          +            }
          +            for (i = 2; i < vlen; i++) {
          +                shape = this.renderRange(i).append();
          +                this.shapes[shape.id] = 'r' + i;
          +                this.valueShapes['r' + i] = shape.id;
          +            }
          +            if (this.values[1] !== null) {
          +                shape = this.renderPerformance().append();
          +                this.shapes[shape.id] = 'p1';
          +                this.valueShapes.p1 = shape.id;
          +            }
          +            if (this.values[0] !== null) {
          +                shape = this.renderTarget().append();
          +                this.shapes[shape.id] = 't0';
          +                this.valueShapes.t0 = shape.id;
          +            }
          +            target.render();
          +        }
          +    });
          +
          +    /**
          +     * Pie charts
          +     */
          +    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {
          +        type: 'pie',
          +
          +        init: function (el, values, options, width, height) {
          +            var total = 0, i;
          +
          +            pie._super.init.call(this, el, values, options, width, height);
          +
          +            this.shapes = {}; // map shape ids to value offsets
          +            this.valueShapes = {}; // maps value offsets to shape ids
          +            this.values = values = $.map(values, Number);
          +
          +            if (options.get('width') === 'auto') {
          +                this.width = this.height;
          +            }
          +
          +            if (values.length > 0) {
          +                for (i = values.length; i--;) {
          +                    total += values[i];
          +                }
          +            }
          +            this.total = total;
          +            this.initTarget();
          +            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var shapeid = this.target.getShapeAt(el, x, y);
          +            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                percent: this.values[currentRegion] / this.total * 100,
          +                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],
          +                offset: currentRegion
          +            };
          +        },
          +
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                 newslice = this.renderSlice(currentRegion, highlight),
          +                 shapeid = this.valueShapes[currentRegion];
          +            delete this.shapes[shapeid];
          +            this.target.replaceWithShape(shapeid, newslice);
          +            this.valueShapes[currentRegion] = newslice.id;
          +            this.shapes[newslice.id] = currentRegion;
          +        },
          +
          +        renderSlice: function (valuenum, highlight) {
          +            var target = this.target,
          +                options = this.options,
          +                radius = this.radius,
          +                borderWidth = options.get('borderWidth'),
          +                offset = options.get('offset'),
          +                circle = 2 * Math.PI,
          +                values = this.values,
          +                total = this.total,
          +                next = offset ? (2*Math.PI)*(offset/360) : 0,
          +                start, end, i, vlen, color;
          +
          +            vlen = values.length;
          +            for (i = 0; i < vlen; i++) {
          +                start = next;
          +                end = next;
          +                if (total > 0) {  // avoid divide by zero
          +                    end = next + (circle * (values[i] / total));
          +                }
          +                if (valuenum === i) {
          +                    color = options.get('sliceColors')[i % options.get('sliceColors').length];
          +                    if (highlight) {
          +                        color = this.calcHighlightColor(color, options);
          +                    }
          +
          +                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);
          +                }
          +                next = end;
          +            }
          +        },
          +
          +        render: function () {
          +            var target = this.target,
          +                values = this.values,
          +                options = this.options,
          +                radius = this.radius,
          +                borderWidth = options.get('borderWidth'),
          +                shape, i;
          +
          +            if (!pie._super.render.call(this)) {
          +                return;
          +            }
          +            if (borderWidth) {
          +                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),
          +                    options.get('borderColor'), undefined, borderWidth).append();
          +            }
          +            for (i = values.length; i--;) {
          +                if (values[i]) { // don't render zero values
          +                    shape = this.renderSlice(i).append();
          +                    this.valueShapes[i] = shape.id; // store just the shapeid
          +                    this.shapes[shape.id] = i;
          +                }
          +            }
          +            target.render();
          +        }
          +    });
          +
          +    /**
          +     * Box plots
          +     */
          +    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {
          +        type: 'box',
          +
          +        init: function (el, values, options, width, height) {
          +            box._super.init.call(this, el, values, options, width, height);
          +            this.values = $.map(values, Number);
          +            this.width = options.get('width') === 'auto' ? '4.0em' : width;
          +            this.initTarget();
          +            if (!this.values.length) {
          +                this.disabled = 1;
          +            }
          +        },
          +
          +        /**
          +         * Simulate a single region
          +         */
          +        getRegion: function () {
          +            return 1;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var result = [
          +                { field: 'lq', value: this.quartiles[0] },
          +                { field: 'med', value: this.quartiles[1] },
          +                { field: 'uq', value: this.quartiles[2] }
          +            ];
          +            if (this.loutlier !== undefined) {
          +                result.push({ field: 'lo', value: this.loutlier});
          +            }
          +            if (this.routlier !== undefined) {
          +                result.push({ field: 'ro', value: this.routlier});
          +            }
          +            if (this.lwhisker !== undefined) {
          +                result.push({ field: 'lw', value: this.lwhisker});
          +            }
          +            if (this.rwhisker !== undefined) {
          +                result.push({ field: 'rw', value: this.rwhisker});
          +            }
          +            return result;
          +        },
          +
          +        render: function () {
          +            var target = this.target,
          +                values = this.values,
          +                vlen = values.length,
          +                options = this.options,
          +                canvasWidth = this.canvasWidth,
          +                canvasHeight = this.canvasHeight,
          +                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),
          +                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),
          +                canvasLeft = 0,
          +                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,
          +                size, unitSize;
          +
          +            if (!box._super.render.call(this)) {
          +                return;
          +            }
          +
          +            if (options.get('raw')) {
          +                if (options.get('showOutliers') && values.length > 5) {
          +                    loutlier = values[0];
          +                    lwhisker = values[1];
          +                    q1 = values[2];
          +                    q2 = values[3];
          +                    q3 = values[4];
          +                    rwhisker = values[5];
          +                    routlier = values[6];
          +                } else {
          +                    lwhisker = values[0];
          +                    q1 = values[1];
          +                    q2 = values[2];
          +                    q3 = values[3];
          +                    rwhisker = values[4];
          +                }
          +            } else {
          +                values.sort(function (a, b) { return a - b; });
          +                q1 = quartile(values, 1);
          +                q2 = quartile(values, 2);
          +                q3 = quartile(values, 3);
          +                iqr = q3 - q1;
          +                if (options.get('showOutliers')) {
          +                    lwhisker = rwhisker = undefined;
          +                    for (i = 0; i < vlen; i++) {
          +                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {
          +                            lwhisker = values[i];
          +                        }
          +                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {
          +                            rwhisker = values[i];
          +                        }
          +                    }
          +                    loutlier = values[0];
          +                    routlier = values[vlen - 1];
          +                } else {
          +                    lwhisker = values[0];
          +                    rwhisker = values[vlen - 1];
          +                }
          +            }
          +            this.quartiles = [q1, q2, q3];
          +            this.lwhisker = lwhisker;
          +            this.rwhisker = rwhisker;
          +            this.loutlier = loutlier;
          +            this.routlier = routlier;
          +
          +            unitSize = canvasWidth / (maxValue - minValue + 1);
          +            if (options.get('showOutliers')) {
          +                canvasLeft = Math.ceil(options.get('spotRadius'));
          +                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));
          +                unitSize = canvasWidth / (maxValue - minValue + 1);
          +                if (loutlier < lwhisker) {
          +                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,
          +                        canvasHeight / 2,
          +                        options.get('spotRadius'),
          +                        options.get('outlierLineColor'),
          +                        options.get('outlierFillColor')).append();
          +                }
          +                if (routlier > rwhisker) {
          +                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,
          +                        canvasHeight / 2,
          +                        options.get('spotRadius'),
          +                        options.get('outlierLineColor'),
          +                        options.get('outlierFillColor')).append();
          +                }
          +            }
          +
          +            // box
          +            target.drawRect(
          +                Math.round((q1 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.1),
          +                Math.round((q3 - q1) * unitSize),
          +                Math.round(canvasHeight * 0.8),
          +                options.get('boxLineColor'),
          +                options.get('boxFillColor')).append();
          +            // left whisker
          +            target.drawLine(
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                Math.round((q1 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                options.get('lineColor')).append();
          +            target.drawLine(
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 4),
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight - canvasHeight / 4),
          +                options.get('whiskerColor')).append();
          +            // right whisker
          +            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                Math.round((q3 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                options.get('lineColor')).append();
          +            target.drawLine(
          +                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 4),
          +                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight - canvasHeight / 4),
          +                options.get('whiskerColor')).append();
          +            // median line
          +            target.drawLine(
          +                Math.round((q2 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.1),
          +                Math.round((q2 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.9),
          +                options.get('medianColor')).append();
          +            if (options.get('target')) {
          +                size = Math.ceil(options.get('spotRadius'));
          +                target.drawLine(
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
          +                    Math.round((canvasHeight / 2) - size),
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
          +                    Math.round((canvasHeight / 2) + size),
          +                    options.get('targetColor')).append();
          +                target.drawLine(
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),
          +                    Math.round(canvasHeight / 2),
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),
          +                    Math.round(canvasHeight / 2),
          +                    options.get('targetColor')).append();
          +            }
          +            target.render();
          +        }
          +    });
          +
          +    // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier
          +    // This is accessible as $(foo).simpledraw()
          +
          +    VShape = createClass({
          +        init: function (target, id, type, args) {
          +            this.target = target;
          +            this.id = id;
          +            this.type = type;
          +            this.args = args;
          +        },
          +        append: function () {
          +            this.target.appendShape(this);
          +            return this;
          +        }
          +    });
          +
          +    VCanvas_base = createClass({
          +        _pxregex: /(\d+)(px)?\s*$/i,
          +
          +        init: function (width, height, target) {
          +            if (!width) {
          +                return;
          +            }
          +            this.width = width;
          +            this.height = height;
          +            this.target = target;
          +            this.lastShapeId = null;
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +        },
          +
          +        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {
          +            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);
          +        },
          +
          +        drawShape: function (path, lineColor, fillColor, lineWidth) {
          +            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);
          +        },
          +
          +        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {
          +            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);
          +        },
          +
          +        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);
          +        },
          +
          +        drawRect: function (x, y, width, height, lineColor, fillColor) {
          +            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);
          +        },
          +
          +        getElement: function () {
          +            return this.canvas;
          +        },
          +
          +        /**
          +         * Return the most recently inserted shape id
          +         */
          +        getLastShapeId: function () {
          +            return this.lastShapeId;
          +        },
          +
          +        /**
          +         * Clear and reset the canvas
          +         */
          +        reset: function () {
          +            alert('reset not implemented');
          +        },
          +
          +        _insert: function (el, target) {
          +            $(target).html(el);
          +        },
          +
          +        /**
          +         * Calculate the pixel dimensions of the canvas
          +         */
          +        _calculatePixelDims: function (width, height, canvas) {
          +            // XXX This should probably be a configurable option
          +            var match;
          +            match = this._pxregex.exec(height);
          +            if (match) {
          +                this.pixelHeight = match[1];
          +            } else {
          +                this.pixelHeight = $(canvas).height();
          +            }
          +            match = this._pxregex.exec(width);
          +            if (match) {
          +                this.pixelWidth = match[1];
          +            } else {
          +                this.pixelWidth = $(canvas).width();
          +            }
          +        },
          +
          +        /**
          +         * Generate a shape object and id for later rendering
          +         */
          +        _genShape: function (shapetype, shapeargs) {
          +            var id = shapeCount++;
          +            shapeargs.unshift(id);
          +            return new VShape(this, id, shapetype, shapeargs);
          +        },
          +
          +        /**
          +         * Add a shape to the end of the render queue
          +         */
          +        appendShape: function (shape) {
          +            alert('appendShape not implemented');
          +        },
          +
          +        /**
          +         * Replace one shape with another
          +         */
          +        replaceWithShape: function (shapeid, shape) {
          +            alert('replaceWithShape not implemented');
          +        },
          +
          +        /**
          +         * Insert one shape after another in the render queue
          +         */
          +        insertAfterShape: function (shapeid, shape) {
          +            alert('insertAfterShape not implemented');
          +        },
          +
          +        /**
          +         * Remove a shape from the queue
          +         */
          +        removeShapeId: function (shapeid) {
          +            alert('removeShapeId not implemented');
          +        },
          +
          +        /**
          +         * Find a shape at the specified x/y co-ordinates
          +         */
          +        getShapeAt: function (el, x, y) {
          +            alert('getShapeAt not implemented');
          +        },
          +
          +        /**
          +         * Render all queued shapes onto the canvas
          +         */
          +        render: function () {
          +            alert('render not implemented');
          +        }
          +    });
          +
          +    VCanvas_canvas = createClass(VCanvas_base, {
          +        init: function (width, height, target, interact) {
          +            VCanvas_canvas._super.init.call(this, width, height, target);
          +            this.canvas = document.createElement('canvas');
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });
          +            this._insert(this.canvas, target);
          +            this._calculatePixelDims(width, height, this.canvas);
          +            this.canvas.width = this.pixelWidth;
          +            this.canvas.height = this.pixelHeight;
          +            this.interact = interact;
          +            this.shapes = {};
          +            this.shapeseq = [];
          +            this.currentTargetShapeId = undefined;
          +            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});
          +        },
          +
          +        _getContext: function (lineColor, fillColor, lineWidth) {
          +            var context = this.canvas.getContext('2d');
          +            if (lineColor !== undefined) {
          +                context.strokeStyle = lineColor;
          +            }
          +            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;
          +            if (fillColor !== undefined) {
          +                context.fillStyle = fillColor;
          +            }
          +            return context;
          +        },
          +
          +        reset: function () {
          +            var context = this._getContext();
          +            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
          +            this.shapes = {};
          +            this.shapeseq = [];
          +            this.currentTargetShapeId = undefined;
          +        },
          +
          +        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
          +            var context = this._getContext(lineColor, fillColor, lineWidth),
          +                i, plen;
          +            context.beginPath();
          +            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);
          +            for (i = 1, plen = path.length; i < plen; i++) {
          +                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines
          +            }
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor !== undefined) {
          +                context.fill();
          +            }
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +        },
          +
          +        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
          +            var context = this._getContext(lineColor, fillColor, lineWidth);
          +            context.beginPath();
          +            context.arc(x, y, radius, 0, 2 * Math.PI, false);
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor !== undefined) {
          +                context.fill();
          +            }
          +        },
          +
          +        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            var context = this._getContext(lineColor, fillColor);
          +            context.beginPath();
          +            context.moveTo(x, y);
          +            context.arc(x, y, radius, startAngle, endAngle, false);
          +            context.lineTo(x, y);
          +            context.closePath();
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor) {
          +                context.fill();
          +            }
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +        },
          +
          +        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
          +            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);
          +        },
          +
          +        appendShape: function (shape) {
          +            this.shapes[shape.id] = shape;
          +            this.shapeseq.push(shape.id);
          +            this.lastShapeId = shape.id;
          +            return shape.id;
          +        },
          +
          +        replaceWithShape: function (shapeid, shape) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            this.shapes[shape.id] = shape;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] == shapeid) {
          +                    shapeseq[i] = shape.id;
          +                }
          +            }
          +            delete this.shapes[shapeid];
          +        },
          +
          +        replaceWithShapes: function (shapeids, shapes) {
          +            var shapeseq = this.shapeseq,
          +                shapemap = {},
          +                sid, i, first;
          +
          +            for (i = shapeids.length; i--;) {
          +                shapemap[shapeids[i]] = true;
          +            }
          +            for (i = shapeseq.length; i--;) {
          +                sid = shapeseq[i];
          +                if (shapemap[sid]) {
          +                    shapeseq.splice(i, 1);
          +                    delete this.shapes[sid];
          +                    first = i;
          +                }
          +            }
          +            for (i = shapes.length; i--;) {
          +                shapeseq.splice(first, 0, shapes[i].id);
          +                this.shapes[shapes[i].id] = shapes[i];
          +            }
          +
          +        },
          +
          +        insertAfterShape: function (shapeid, shape) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] === shapeid) {
          +                    shapeseq.splice(i + 1, 0, shape.id);
          +                    this.shapes[shape.id] = shape;
          +                    return;
          +                }
          +            }
          +        },
          +
          +        removeShapeId: function (shapeid) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] === shapeid) {
          +                    shapeseq.splice(i, 1);
          +                    break;
          +                }
          +            }
          +            delete this.shapes[shapeid];
          +        },
          +
          +        getShapeAt: function (el, x, y) {
          +            this.targetX = x;
          +            this.targetY = y;
          +            this.render();
          +            return this.currentTargetShapeId;
          +        },
          +
          +        render: function () {
          +            var shapeseq = this.shapeseq,
          +                shapes = this.shapes,
          +                shapeCount = shapeseq.length,
          +                context = this._getContext(),
          +                shapeid, shape, i;
          +            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
          +            for (i = 0; i < shapeCount; i++) {
          +                shapeid = shapeseq[i];
          +                shape = shapes[shapeid];
          +                this['_draw' + shape.type].apply(this, shape.args);
          +            }
          +            if (!this.interact) {
          +                // not interactive so no need to keep the shapes array
          +                this.shapes = {};
          +                this.shapeseq = [];
          +            }
          +        }
          +
          +    });
          +
          +    VCanvas_vml = createClass(VCanvas_base, {
          +        init: function (width, height, target) {
          +            var groupel;
          +            VCanvas_vml._super.init.call(this, width, height, target);
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +            this.canvas = document.createElement('span');
          +            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});
          +            this._insert(this.canvas, target);
          +            this._calculatePixelDims(width, height, this.canvas);
          +            this.canvas.width = this.pixelWidth;
          +            this.canvas.height = this.pixelHeight;
          +            groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' +
          +                    ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>';
          +            this.canvas.insertAdjacentHTML('beforeEnd', groupel);
          +            this.group = $(this.canvas).children()[0];
          +            this.rendered = false;
          +            this.prerender = '';
          +        },
          +
          +        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
          +            var vpath = [],
          +                initial, stroke, fill, closed, vel, plen, i;
          +            for (i = 0, plen = path.length; i < plen; i++) {
          +                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);
          +            }
          +            initial = vpath.splice(0, 1);
          +            lineWidth = lineWidth === undefined ? 1 : lineWidth;
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';
          +            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                 stroke +
          +                 fill +
          +                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
          +                ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' +
          +                ' </v:shape>';
          +            return vel;
          +        },
          +
          +        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
          +            var stroke, fill, vel;
          +            x -= radius;
          +            y -= radius;
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            vel = '<v:oval ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                stroke +
          +                fill +
          +                ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>';
          +            return vel;
          +
          +        },
          +
          +        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            var vpath, startx, starty, endx, endy, stroke, fill, vel;
          +            if (startAngle === endAngle) {
          +                return '';  // VML seems to have problem when start angle equals end angle.
          +            }
          +            if ((endAngle - startAngle) === (2 * Math.PI)) {
          +                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0
          +                endAngle = (2 * Math.PI);
          +            }
          +
          +            startx = x + Math.round(Math.cos(startAngle) * radius);
          +            starty = y + Math.round(Math.sin(startAngle) * radius);
          +            endx = x + Math.round(Math.cos(endAngle) * radius);
          +            endy = y + Math.round(Math.sin(endAngle) * radius);
          +
          +            if (startx === endx && starty === endy) {
          +                if ((endAngle - startAngle) < Math.PI) {
          +                    // Prevent very small slices from being mistaken as a whole pie
          +                    return '';
          +                }
          +                // essentially going to be the entire circle, so ignore startAngle
          +                startx = endx = x + radius;
          +                starty = endy = y;
          +            }
          +
          +            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {
          +                return '';
          +            }
          +
          +            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                 stroke +
          +                 fill +
          +                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
          +                ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' +
          +                ' </v:shape>';
          +            return vel;
          +        },
          +
          +        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
          +            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);
          +        },
          +
          +        reset: function () {
          +            this.group.innerHTML = '';
          +        },
          +
          +        appendShape: function (shape) {
          +            var vel = this['_draw' + shape.type].apply(this, shape.args);
          +            if (this.rendered) {
          +                this.group.insertAdjacentHTML('beforeEnd', vel);
          +            } else {
          +                this.prerender += vel;
          +            }
          +            this.lastShapeId = shape.id;
          +            return shape.id;
          +        },
          +
          +        replaceWithShape: function (shapeid, shape) {
          +            var existing = $('#jqsshape' + shapeid),
          +                vel = this['_draw' + shape.type].apply(this, shape.args);
          +            existing[0].outerHTML = vel;
          +        },
          +
          +        replaceWithShapes: function (shapeids, shapes) {
          +            // replace the first shapeid with all the new shapes then toast the remaining old shapes
          +            var existing = $('#jqsshape' + shapeids[0]),
          +                replace = '',
          +                slen = shapes.length,
          +                i;
          +            for (i = 0; i < slen; i++) {
          +                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);
          +            }
          +            existing[0].outerHTML = replace;
          +            for (i = 1; i < shapeids.length; i++) {
          +                $('#jqsshape' + shapeids[i]).remove();
          +            }
          +        },
          +
          +        insertAfterShape: function (shapeid, shape) {
          +            var existing = $('#jqsshape' + shapeid),
          +                 vel = this['_draw' + shape.type].apply(this, shape.args);
          +            existing[0].insertAdjacentHTML('afterEnd', vel);
          +        },
          +
          +        removeShapeId: function (shapeid) {
          +            var existing = $('#jqsshape' + shapeid);
          +            this.group.removeChild(existing[0]);
          +        },
          +
          +        getShapeAt: function (el, x, y) {
          +            var shapeid = el.id.substr(8);
          +            return shapeid;
          +        },
          +
          +        render: function () {
          +            if (!this.rendered) {
          +                // batch the intial render into a single repaint
          +                this.group.innerHTML = this.prerender;
          +                this.rendered = true;
          +            }
          +        }
          +    });
          +
          +}))}(document, Math));
          diff --git a/public/theme/jquery-sparkline/dist/jquery.sparkline.min.js b/public/theme/jquery-sparkline/dist/jquery.sparkline.min.js
          new file mode 100644
          index 0000000..8e18cd8
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/dist/jquery.sparkline.min.js
          @@ -0,0 +1,6 @@
          +/* jquery.sparkline 2.1.3 - http://omnipotent.net/jquery.sparkline/ 
          +** Licensed under the New BSD License - see above site for details */
          +
          +(function(document,Math,undefined){(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(jQuery&&!jQuery.fn.sparkline){factory(jQuery)}})(function($){"use strict";var UNSET_OPTION={},getDefaults,createClass,SPFormat,clipval,quartile,normalizeValue,normalizeValues,remove,isNumber,all,sum,addCSS,ensureArray,formatNumber,RangeMap,MouseHandler,Tooltip,barHighlightMixin,line,bar,tristate,discrete,bullet,pie,box,defaultStyles,initStyles,VShape,VCanvas_base,VCanvas_canvas,VCanvas_vml,pending,shapeCount=0;getDefaults=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:false,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:false,enableHighlight:true,highlightLighten:1.4,tooltipSkipNull:true,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:false,numberFormatter:false,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:false,disableInteraction:false},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:undefined,normalRangeMax:undefined,normalRangeColor:"#ccc",drawNormalOnTop:false,chartRangeMin:undefined,chartRangeMax:undefined,chartRangeMinX:undefined,chartRangeMaxX:undefined,tooltipFormat:new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:undefined,nullColor:undefined,zeroAxis:true,barWidth:4,barSpacing:1,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false,colorMap:undefined,tooltipFormat:new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:undefined,thresholdValue:0,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:false,tooltipFormat:new SPFormat("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:undefined,tooltipFormat:new SPFormat("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:false,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:true,outlierIQR:1.5,spotRadius:1.5,target:undefined,targetColor:"#4a2",chartRangeMax:undefined,chartRangeMin:undefined,tooltipFormat:new SPFormat("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}};defaultStyles=".jqstooltip { "+"position: absolute;"+"left: 0px;"+"top: 0px;"+"visibility: hidden;"+"background: rgb(0, 0, 0) transparent;"+"background-color: rgba(0,0,0,0.6);"+"filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);"+'-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";'+"color: white;"+"font: 10px arial, san serif;"+"text-align: left;"+"white-space: nowrap;"+"padding: 5px;"+"border: 1px solid white;"+"box-sizing: content-box;"+"z-index: 10000;"+"}"+".jqsfield { "+"color: white;"+"font: 10px arial, san serif;"+"text-align: left;"+"}";createClass=function(){var Class,args;Class=function(){this.init.apply(this,arguments)};if(arguments.length>1){if(arguments[0]){Class.prototype=$.extend(new arguments[0],arguments[arguments.length-1]);Class._super=arguments[0].prototype}else{Class.prototype=arguments[arguments.length-1]}if(arguments.length>2){args=Array.prototype.slice.call(arguments,1,-1);args.unshift(Class.prototype);$.extend.apply($,args)}}else{Class.prototype=arguments[0]}Class.prototype.cls=Class;return Class};$.SPFormatClass=SPFormat=createClass({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(format,fclass){this.format=format;this.fclass=fclass},render:function(fieldset,lookups,options){var self=this,fields=fieldset,match,token,lookupkey,fieldvalue,prec;return this.format.replace(this.fre,function(){var lookup;token=arguments[1];lookupkey=arguments[3];match=self.precre.exec(token);if(match){prec=match[2];token=match[1]}else{prec=false}fieldvalue=fields[token];if(fieldvalue===undefined){return""}if(lookupkey&&lookups&&lookups[lookupkey]){lookup=lookups[lookupkey];if(lookup.get){return lookups[lookupkey].get(fieldvalue)||fieldvalue}else{return lookups[lookupkey][fieldvalue]||fieldvalue}}if(isNumber(fieldvalue)){if(options.get("numberFormatter")){fieldvalue=options.get("numberFormatter")(fieldvalue)}else{fieldvalue=formatNumber(fieldvalue,prec,options.get("numberDigitGroupCount"),options.get("numberDigitGroupSep"),options.get("numberDecimalMark"))}}return fieldvalue})}});$.spformat=function(format,fclass){return new SPFormat(format,fclass)};clipval=function(val,min,max){if(val<min){return min}if(val>max){return max}return val};quartile=function(values,q){var vl;if(q===2){vl=Math.floor(values.length/2);return values.length%2?values[vl]:(values[vl-1]+values[vl])/2}else{if(values.length%2){vl=(values.length*q+q)/4;return vl%1?(values[Math.floor(vl)]+values[Math.floor(vl)-1])/2:values[vl-1]}else{vl=(values.length*q+2)/4;return vl%1?(values[Math.floor(vl)]+values[Math.floor(vl)-1])/2:values[vl-1]}}};normalizeValue=function(val){var nf;switch(val){case"undefined":val=undefined;break;case"null":val=null;break;case"true":val=true;break;case"false":val=false;break;default:nf=parseFloat(val);if(val==nf){val=nf}}return val};normalizeValues=function(vals){var i,result=[];for(i=vals.length;i--;){result[i]=normalizeValue(vals[i])}return result};remove=function(vals,filter){var i,vl,result=[];for(i=0,vl=vals.length;i<vl;i++){if(vals[i]!==filter){result.push(vals[i])}}return result};isNumber=function(num){return!isNaN(parseFloat(num))&&isFinite(num)};formatNumber=function(num,prec,groupsize,groupsep,decsep){var p,i;num=(prec===false?parseFloat(num).toString():num.toFixed(prec)).split("");p=(p=$.inArray(".",num))<0?num.length:p;if(p<num.length){num[p]=decsep}for(i=p-groupsize;i>0;i-=groupsize){num.splice(i,0,groupsep)}return num.join("")};all=function(val,arr,ignoreNull){var i;for(i=arr.length;i--;){if(ignoreNull&&arr[i]===null)continue;if(arr[i]!==val){return false}}return true};sum=function(vals){var total=0,i;for(i=vals.length;i--;){total+=typeof vals[i]==="number"?vals[i]:0}return total};ensureArray=function(val){return $.isArray(val)?val:[val]};addCSS=function(css){var tag,iefail;if(document.createStyleSheet){try{document.createStyleSheet().cssText=css;return}catch(e){iefail=true}}tag=document.createElement("style");tag.type="text/css";document.getElementsByTagName("head")[0].appendChild(tag);if(iefail){document.styleSheets[document.styleSheets.length-1].cssText=css}else{tag[typeof document.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=css}};$.fn.simpledraw=function(width,height,useExisting,interact){var target,mhandler;if(useExisting&&(target=this.data("_jqs_vcanvas"))){return target}if($.fn.sparkline.canvas===false){return false}else if($.fn.sparkline.canvas===undefined){var el=document.createElement("canvas");if(!!(el.getContext&&el.getContext("2d"))){$.fn.sparkline.canvas=function(width,height,target,interact){return new VCanvas_canvas(width,height,target,interact)}}else if(document.namespaces&&!document.namespaces.v){document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML");$.fn.sparkline.canvas=function(width,height,target,interact){return new VCanvas_vml(width,height,target)}}else{$.fn.sparkline.canvas=false;return false}}if(width===undefined){width=$(this).innerWidth()}if(height===undefined){height=$(this).innerHeight()}target=$.fn.sparkline.canvas(width,height,this,interact);mhandler=$(this).data("_jqs_mhandler");if(mhandler){mhandler.registerCanvas(target)}return target};$.fn.cleardraw=function(){var target=this.data("_jqs_vcanvas");if(target){target.reset()}};$.RangeMapClass=RangeMap=createClass({init:function(map){var key,range,rangelist=[];for(key in map){if(map.hasOwnProperty(key)&&typeof key==="string"&&key.indexOf(":")>-1){range=key.split(":");range[0]=range[0].length===0?-Infinity:parseFloat(range[0]);range[1]=range[1].length===0?Infinity:parseFloat(range[1]);range[2]=map[key];rangelist.push(range)}}this.map=map;this.rangelist=rangelist||false},get:function(value){var rangelist=this.rangelist,i,range,result;if((result=this.map[value])!==undefined){return result}if(rangelist){for(i=rangelist.length;i--;){range=rangelist[i];if(range[0]<=value&&range[1]>=value){return range[2]}}}return undefined}});$.range_map=function(map){return new RangeMap(map)};MouseHandler=createClass({init:function(el,options){var $el=$(el);this.$el=$el;this.options=options;this.currentPageX=0;this.currentPageY=0;this.el=el;this.splist=[];this.tooltip=null;this.over=false;this.displayTooltips=!options.get("disableTooltips");this.highlightEnabled=!options.get("disableHighlight")},registerSparkline:function(sp){this.splist.push(sp);if(this.over){this.updateDisplay()}},registerCanvas:function(canvas){var $canvas=$(canvas.canvas);this.canvas=canvas;this.$canvas=$canvas;$canvas.mouseenter($.proxy(this.mouseenter,this));$canvas.mouseleave($.proxy(this.mouseleave,this));$canvas.click($.proxy(this.mouseclick,this))},reset:function(removeTooltip){this.splist=[];if(this.tooltip&&removeTooltip){this.tooltip.remove();this.tooltip=undefined}},mouseclick:function(e){var clickEvent=$.Event("sparklineClick");clickEvent.originalEvent=e;clickEvent.sparklines=this.splist;this.$el.trigger(clickEvent)},mouseenter:function(e){$(document.body).unbind("mousemove.jqs");$(document.body).bind("mousemove.jqs",$.proxy(this.mousemove,this));this.over=true;this.currentPageX=e.pageX;this.currentPageY=e.pageY;this.currentEl=e.target;if(!this.tooltip&&this.displayTooltips){this.tooltip=new Tooltip(this.options);this.tooltip.updatePosition(e.pageX,e.pageY)}this.updateDisplay()},mouseleave:function(){$(document.body).unbind("mousemove.jqs");var splist=this.splist,spcount=splist.length,needsRefresh=false,sp,i;this.over=false;this.currentEl=null;if(this.tooltip){this.tooltip.remove();this.tooltip=null}for(i=0;i<spcount;i++){sp=splist[i];if(sp.clearRegionHighlight()){needsRefresh=true}}if(needsRefresh){this.canvas.render()}},mousemove:function(e){this.currentPageX=e.pageX;this.currentPageY=e.pageY;this.currentEl=e.target;if(this.tooltip){this.tooltip.updatePosition(e.pageX,e.pageY)}this.updateDisplay()},updateDisplay:function(){var splist=this.splist,spcount=splist.length,needsRefresh=false,offset=this.$canvas.offset(),localX=this.currentPageX-offset.left,localY=this.currentPageY-offset.top,tooltiphtml,sp,i,result,changeEvent;if(!this.over){return}for(i=0;i<spcount;i++){sp=splist[i];result=sp.setRegionHighlight(this.currentEl,localX,localY);if(result){needsRefresh=true}}if(needsRefresh){changeEvent=$.Event("sparklineRegionChange");changeEvent.sparklines=this.splist;this.$el.trigger(changeEvent);if(this.tooltip){tooltiphtml="";for(i=0;i<spcount;i++){sp=splist[i];tooltiphtml+=sp.getCurrentRegionTooltip()}this.tooltip.setContent(tooltiphtml)}if(!this.disableHighlight){this.canvas.render()}}if(result===null){this.mouseleave()}}});Tooltip=createClass({sizeStyle:"position: static !important;"+"display: block !important;"+"visibility: hidden !important;"+"float: left !important;",init:function(options){var tooltipClassname=options.get("tooltipClassname","jqstooltip"),sizetipStyle=this.sizeStyle,offset;this.container=options.get("tooltipContainer")||document.body;this.tooltipOffsetX=options.get("tooltipOffsetX",10);this.tooltipOffsetY=options.get("tooltipOffsetY",12);$("#jqssizetip").remove();$("#jqstooltip").remove();this.sizetip=$("<div/>",{id:"jqssizetip",style:sizetipStyle,"class":tooltipClassname});this.tooltip=$("<div/>",{id:"jqstooltip","class":tooltipClassname}).appendTo(this.container);offset=this.tooltip.offset();this.offsetLeft=offset.left;this.offsetTop=offset.top;this.hidden=true;$(window).unbind("resize.jqs scroll.jqs");$(window).bind("resize.jqs scroll.jqs",$.proxy(this.updateWindowDims,this));this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=$(window).scrollTop();this.scrollLeft=$(window).scrollLeft();this.scrollRight=this.scrollLeft+$(window).width();this.updatePosition()},getSize:function(content){this.sizetip.html(content).appendTo(this.container);this.width=this.sizetip.width()+1;this.height=this.sizetip.height();this.sizetip.remove()},setContent:function(content){if(!content){this.tooltip.css("visibility","hidden");this.hidden=true;return}this.getSize(content);this.tooltip.html(content).css({width:this.width,height:this.height,visibility:"visible"});if(this.hidden){this.hidden=false;this.updatePosition()}},updatePosition:function(x,y){if(x===undefined){if(this.mousex===undefined){return}x=this.mousex-this.offsetLeft;y=this.mousey-this.offsetTop}else{this.mousex=x=x-this.offsetLeft;this.mousey=y=y-this.offsetTop}if(!this.height||!this.width||this.hidden){return}y-=this.height+this.tooltipOffsetY;x+=this.tooltipOffsetX;if(y<this.scrollTop){y=this.scrollTop}if(x<this.scrollLeft){x=this.scrollLeft}else if(x+this.width>this.scrollRight){x=this.scrollRight-this.width}this.tooltip.css({left:x,top:y})},remove:function(){this.tooltip.remove();this.sizetip.remove();this.sizetip=this.tooltip=undefined;$(window).unbind("resize.jqs scroll.jqs")}});initStyles=function(){addCSS(defaultStyles)};$(initStyles);pending=[];$.fn.sparkline=function(userValues,userOptions){return this.each(function(){var options=new $.fn.sparkline.options(this,userOptions),$this=$(this),render,i;render=function(){var values,width,height,tmp,mhandler,sp,vals;if(userValues==="html"||userValues===undefined){vals=this.getAttribute(options.get("tagValuesAttribute"));if(vals===undefined||vals===null){vals=$this.html()}values=vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else{values=userValues}width=options.get("width")==="auto"?values.length*options.get("defaultPixelsPerValue"):options.get("width");if(options.get("height")==="auto"){if(!options.get("composite")||!$.data(this,"_jqs_vcanvas")){tmp=document.createElement("span");tmp.innerHTML="a";$this.html(tmp);height=$(tmp).innerHeight()||$(tmp).height();$(tmp).remove();tmp=null}}else{height=options.get("height")}if(!options.get("disableInteraction")){mhandler=$.data(this,"_jqs_mhandler");if(!mhandler){mhandler=new MouseHandler(this,options);$.data(this,"_jqs_mhandler",mhandler)}else if(!options.get("composite")){mhandler.reset()}}else{mhandler=false}if(options.get("composite")&&!$.data(this,"_jqs_vcanvas")){if(!$.data(this,"_jqs_errnotify")){alert("Attempted to attach a composite sparkline to an element with no existing sparkline");$.data(this,"_jqs_errnotify",true)}return}sp=new($.fn.sparkline[options.get("type")])(this,values,options,width,height);sp.render();if(mhandler){mhandler.registerSparkline(sp)}};if($(this).html()&&!options.get("disableHiddenCheck")&&$(this).is(":hidden")||!$(this).parents("body").length){if(!options.get("composite")&&$.data(this,"_jqs_pending")){for(i=pending.length;i;i--){if(pending[i-1][0]==this){pending.splice(i-1,1)}}}pending.push([this,render]);$.data(this,"_jqs_pending",true)}else{render.call(this)}})};$.fn.sparkline.defaults=getDefaults();$.sparkline_display_visible=function(){var el,i,pl;var done=[];for(i=0,pl=pending.length;i<pl;i++){el=pending[i][0];if($(el).is(":visible")&&!$(el).parents().is(":hidden")){pending[i][1].call(el);$.data(pending[i][0],"_jqs_pending",false);done.push(i)}else if(!$(el).closest("html").length&&!$.data(el,"_jqs_pending")){$.data(pending[i][0],"_jqs_pending",false);done.push(i)}}for(i=done.length;i;i--){pending.splice(done[i-1],1)}};$.fn.sparkline.options=createClass({init:function(tag,userOptions){var extendedOptions,defaults,base,tagOptionType;this.userOptions=userOptions=userOptions||{};this.tag=tag;this.tagValCache={};defaults=$.fn.sparkline.defaults;base=defaults.common;this.tagOptionsPrefix=userOptions.enableTagOptions&&(userOptions.tagOptionsPrefix||base.tagOptionsPrefix);tagOptionType=this.getTagSetting("type");if(tagOptionType===UNSET_OPTION){extendedOptions=defaults[userOptions.type||base.type]}else{extendedOptions=defaults[tagOptionType]}this.mergedOptions=$.extend({},base,extendedOptions,userOptions)},getTagSetting:function(key){var prefix=this.tagOptionsPrefix,val,i,pairs,keyval;if(prefix===false||prefix===undefined){return UNSET_OPTION}if(this.tagValCache.hasOwnProperty(key)){val=this.tagValCache.key}else{val=this.tag.getAttribute(prefix+key);if(val===undefined||val===null){val=UNSET_OPTION}else if(val.substr(0,1)==="["){val=val.substr(1,val.length-2).split(",");for(i=val.length;i--;){val[i]=normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g,""))}}else if(val.substr(0,1)==="{"){pairs=val.substr(1,val.length-2).split(",");val={};for(i=pairs.length;i--;){keyval=pairs[i].split(":",2);val[keyval[0].replace(/(^\s*)|(\s*$)/g,"")]=normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g,""))}}else{val=normalizeValue(val)}this.tagValCache.key=val}return val},get:function(key,defaultval){var tagOption=this.getTagSetting(key),result;if(tagOption!==UNSET_OPTION){return tagOption}return(result=this.mergedOptions[key])===undefined?defaultval:result}});$.fn.sparkline._base=createClass({disabled:false,init:function(el,values,options,width,height){this.el=el;this.$el=$(el);this.values=values;this.options=options;this.width=width;this.height=height;this.currentRegion=undefined},initTarget:function(){var interactive=!this.options.get("disableInteraction");if(!(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),interactive))){this.disabled=true}else{this.canvasWidth=this.target.pixelWidth;this.canvasHeight=this.target.pixelHeight}},render:function(){if(this.disabled){this.el.innerHTML="";return false}return true},getRegion:function(x,y){},setRegionHighlight:function(el,x,y){var currentRegion=this.currentRegion,highlightEnabled=!this.options.get("disableHighlight"),newRegion;if(x>this.canvasWidth||y>this.canvasHeight||x<0||y<0){return null}newRegion=this.getRegion(el,x,y);if(currentRegion!==newRegion){if(currentRegion!==undefined&&highlightEnabled){this.removeHighlight()}this.currentRegion=newRegion;if(newRegion!==undefined&&highlightEnabled){this.renderHighlight()}return true}return false},clearRegionHighlight:function(){if(this.currentRegion!==undefined){this.removeHighlight();this.currentRegion=undefined;return true}return false},renderHighlight:function(){this.changeHighlight(true)},removeHighlight:function(){this.changeHighlight(false)},changeHighlight:function(highlight){},getCurrentRegionTooltip:function(){var options=this.options,header="",entries=[],fields,formats,formatlen,fclass,text,i,showFields,showFieldsKey,newFields,fv,formatter,format,fieldlen,j;if(this.currentRegion===undefined){return""}fields=this.getCurrentRegionFields();formatter=options.get("tooltipFormatter");if(formatter){return formatter(this,options,fields)}if(options.get("tooltipChartTitle")){header+='<div class="jqs jqstitle">'+options.get("tooltipChartTitle")+"</div>\n"}formats=this.options.get("tooltipFormat");if(!formats){return""}if(!$.isArray(formats)){formats=[formats]}if(!$.isArray(fields)){fields=[fields]}showFields=this.options.get("tooltipFormatFieldlist");showFieldsKey=this.options.get("tooltipFormatFieldlistKey");if(showFields&&showFieldsKey){newFields=[];for(i=fields.length;i--;){fv=fields[i][showFieldsKey];if((j=$.inArray(fv,showFields))!=-1){newFields[j]=fields[i]}}fields=newFields}formatlen=formats.length;fieldlen=fields.length;for(i=0;i<formatlen;i++){format=formats[i];if(typeof format==="string"){format=new SPFormat(format)}fclass=format.fclass||"jqsfield";for(j=0;j<fieldlen;j++){if(!fields[j].isNull||!options.get("tooltipSkipNull")){$.extend(fields[j],{prefix:options.get("tooltipPrefix"),suffix:options.get("tooltipSuffix")});text=format.render(fields[j],options.get("tooltipValueLookups"),options);entries.push('<div class="'+fclass+'">'+text+"</div>")}}}if(entries.length){return header+entries.join("\n")}return""},getCurrentRegionFields:function(){},calcHighlightColor:function(color,options){var highlightColor=options.get("highlightColor"),lighten=options.get("highlightLighten"),parse,mult,rgbnew,i;if(highlightColor){return highlightColor}if(lighten){parse=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);if(parse){rgbnew=[];mult=color.length===4?16:1;for(i=0;i<3;i++){rgbnew[i]=clipval(Math.round(parseInt(parse[i+1],16)*mult*lighten),0,255)}return"rgb("+rgbnew.join(",")+")"}}return color}});barHighlightMixin={changeHighlight:function(highlight){var currentRegion=this.currentRegion,target=this.target,shapeids=this.regionShapes[currentRegion],newShapes;if(shapeids){newShapes=this.renderRegion(currentRegion,highlight);if($.isArray(newShapes)||$.isArray(shapeids)){target.replaceWithShapes(shapeids,newShapes);this.regionShapes[currentRegion]=$.map(newShapes,function(newShape){return newShape.id})}else{target.replaceWithShape(shapeids,newShapes);this.regionShapes[currentRegion]=newShapes.id}}},render:function(){var values=this.values,target=this.target,regionShapes=this.regionShapes,shapes,ids,i,j;if(!this.cls._super.render.call(this)){return}for(i=values.length;i--;){shapes=this.renderRegion(i);if(shapes){if($.isArray(shapes)){ids=[];for(j=shapes.length;j--;){shapes[j].append();ids.push(shapes[j].id)}regionShapes[i]=ids}else{shapes.append();regionShapes[i]=shapes.id}}else{regionShapes[i]=null}}target.render()}};$.fn.sparkline.line=line=createClass($.fn.sparkline._base,{type:"line",init:function(el,values,options,width,height){line._super.init.call(this,el,values,options,width,height);this.vertices=[];this.regionMap=[];this.xvalues=[];this.yvalues=[];this.yminmax=[];this.hightlightSpotId=null;this.lastShapeId=null;this.initTarget()},getRegion:function(el,x,y){var i,regionMap=this.regionMap;for(i=regionMap.length;i--;){if(regionMap[i]!==null&&x>=regionMap[i][0]&&x<=regionMap[i][1]){return regionMap[i][2]}}return undefined},getCurrentRegionFields:function(){var currentRegion=this.currentRegion;return{isNull:this.yvalues[currentRegion]===null,x:this.xvalues[currentRegion],y:this.yvalues[currentRegion],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:currentRegion}},renderHighlight:function(){var currentRegion=this.currentRegion,target=this.target,vertex=this.vertices[currentRegion],options=this.options,spotRadius=options.get("spotRadius"),highlightSpotColor=options.get("highlightSpotColor"),highlightLineColor=options.get("highlightLineColor"),highlightSpot,highlightLine;if(!vertex){return}if(spotRadius&&highlightSpotColor){highlightSpot=target.drawCircle(vertex[0],vertex[1],spotRadius,undefined,highlightSpotColor);this.highlightSpotId=highlightSpot.id;target.insertAfterShape(this.lastShapeId,highlightSpot)}if(highlightLineColor){highlightLine=target.drawLine(vertex[0],this.canvasTop,vertex[0],this.canvasTop+this.canvasHeight,highlightLineColor);this.highlightLineId=highlightLine.id;target.insertAfterShape(this.lastShapeId,highlightLine)}},removeHighlight:function(){var target=this.target;if(this.highlightSpotId){target.removeShapeId(this.highlightSpotId);this.highlightSpotId=null}if(this.highlightLineId){target.removeShapeId(this.highlightLineId);this.highlightLineId=null}},scanValues:function(){var values=this.values,valcount=values.length,xvalues=this.xvalues,yvalues=this.yvalues,yminmax=this.yminmax,i,val,isStr,isArray,sp;for(i=0;i<valcount;i++){val=values[i];isStr=typeof values[i]==="string";isArray=typeof values[i]==="object"&&values[i]instanceof Array;sp=isStr&&values[i].split(":");if(isStr&&sp.length===2){xvalues.push(Number(sp[0]));yvalues.push(Number(sp[1]));yminmax.push(Number(sp[1]))}else if(isArray){xvalues.push(val[0]);yvalues.push(val[1]);yminmax.push(val[1])}else{xvalues.push(i);if(values[i]===null||values[i]==="null"){yvalues.push(null)}else{yvalues.push(Number(val));yminmax.push(Number(val))}}}if(this.options.get("xvalues")){xvalues=this.options.get("xvalues")}this.maxy=this.maxyorg=Math.max.apply(Math,yminmax);this.miny=this.minyorg=Math.min.apply(Math,yminmax);this.maxx=Math.max.apply(Math,xvalues);this.minx=Math.min.apply(Math,xvalues);this.xvalues=xvalues;this.yvalues=yvalues;this.yminmax=yminmax},processRangeOptions:function(){var options=this.options,normalRangeMin=options.get("normalRangeMin"),normalRangeMax=options.get("normalRangeMax");if(normalRangeMin!==undefined){if(normalRangeMin<this.miny){this.miny=normalRangeMin}if(normalRangeMax>this.maxy){this.maxy=normalRangeMax}}if(options.get("chartRangeMin")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMin")<this.miny)){this.miny=options.get("chartRangeMin")}if(options.get("chartRangeMax")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMax")>this.maxy)){this.maxy=options.get("chartRangeMax")}if(options.get("chartRangeMinX")!==undefined&&(options.get("chartRangeClipX")||options.get("chartRangeMinX")<this.minx)){this.minx=options.get("chartRangeMinX")}if(options.get("chartRangeMaxX")!==undefined&&(options.get("chartRangeClipX")||options.get("chartRangeMaxX")>this.maxx)){this.maxx=options.get("chartRangeMaxX")}},drawNormalRange:function(canvasLeft,canvasTop,canvasHeight,canvasWidth,rangey){var normalRangeMin=this.options.get("normalRangeMin"),normalRangeMax=this.options.get("normalRangeMax"),ytop=canvasTop+Math.round(canvasHeight-canvasHeight*((normalRangeMax-this.miny)/rangey)),height=Math.round(canvasHeight*(normalRangeMax-normalRangeMin)/rangey);this.target.drawRect(canvasLeft,ytop,canvasWidth,height,undefined,this.options.get("normalRangeColor")).append()},render:function(){var options=this.options,target=this.target,canvasWidth=this.canvasWidth,canvasHeight=this.canvasHeight,vertices=this.vertices,spotRadius=options.get("spotRadius"),regionMap=this.regionMap,rangex,rangey,yvallast,canvasTop,canvasLeft,vertex,path,paths,x,y,xnext,xpos,xposnext,last,next,yvalcount,lineShapes,fillShapes,plen,valueSpots,hlSpotsEnabled,color,xvalues,yvalues,i;if(!line._super.render.call(this)){return}this.scanValues();this.processRangeOptions();xvalues=this.xvalues;yvalues=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2){return}canvasTop=canvasLeft=0;rangex=this.maxx-this.minx===0?1:this.maxx-this.minx;rangey=this.maxy-this.miny===0?1:this.maxy-this.miny;yvallast=this.yvalues.length-1;if(spotRadius&&(canvasWidth<spotRadius*4||canvasHeight<spotRadius*4)){spotRadius=0}if(spotRadius){hlSpotsEnabled=options.get("highlightSpotColor")&&!options.get("disableInteraction");if(hlSpotsEnabled||options.get("minSpotColor")||options.get("spotColor")&&yvalues[yvallast]===this.miny){canvasHeight-=Math.ceil(spotRadius)}if(hlSpotsEnabled||options.get("maxSpotColor")||options.get("spotColor")&&yvalues[yvallast]===this.maxy){canvasHeight-=Math.ceil(spotRadius);canvasTop+=Math.ceil(spotRadius)}if(hlSpotsEnabled||(options.get("minSpotColor")||options.get("maxSpotColor"))&&(yvalues[0]===this.miny||yvalues[0]===this.maxy)){canvasLeft+=Math.ceil(spotRadius);canvasWidth-=Math.ceil(spotRadius)}if(hlSpotsEnabled||options.get("spotColor")||(options.get("minSpotColor")||options.get("maxSpotColor")&&(yvalues[yvallast]===this.miny||yvalues[yvallast]===this.maxy))){canvasWidth-=Math.ceil(spotRadius)}}canvasHeight--;if(options.get("normalRangeMin")!==undefined&&!options.get("drawNormalOnTop")){this.drawNormalRange(canvasLeft,canvasTop,canvasHeight,canvasWidth,rangey)}path=[];paths=[path];last=next=null;yvalcount=yvalues.length;for(i=0;i<yvalcount;i++){x=xvalues[i];xnext=xvalues[i+1];y=yvalues[i];xpos=canvasLeft+Math.round((x-this.minx)*(canvasWidth/rangex));xposnext=i<yvalcount-1?canvasLeft+Math.round((xnext-this.minx)*(canvasWidth/rangex)):canvasWidth;next=xpos+(xposnext-xpos)/2;regionMap[i]=[last||0,next,i];last=next;if(y===null){if(i){if(yvalues[i-1]!==null){path=[];paths.push(path)}vertices.push(null)}}else{if(y<this.miny){y=this.miny}if(y>this.maxy){y=this.maxy}if(!path.length){path.push([xpos,canvasTop+canvasHeight])}vertex=[xpos,canvasTop+Math.round(canvasHeight-canvasHeight*((y-this.miny)/rangey))];path.push(vertex);vertices.push(vertex)}}lineShapes=[];fillShapes=[];plen=paths.length;for(i=0;i<plen;i++){path=paths[i];if(path.length){if(options.get("fillColor")){path.push([path[path.length-1][0],canvasTop+canvasHeight]);fillShapes.push(path.slice(0));path.pop()}if(path.length>2){path[0]=[path[0][0],path[1][1]]}lineShapes.push(path)}}plen=fillShapes.length;for(i=0;i<plen;i++){target.drawShape(fillShapes[i],options.get("fillColor"),options.get("fillColor")).append()}if(options.get("normalRangeMin")!==undefined&&options.get("drawNormalOnTop")){this.drawNormalRange(canvasLeft,canvasTop,canvasHeight,canvasWidth,rangey)}plen=lineShapes.length;for(i=0;i<plen;i++){target.drawShape(lineShapes[i],options.get("lineColor"),undefined,options.get("lineWidth")).append()}if(spotRadius&&options.get("valueSpots")){valueSpots=options.get("valueSpots");if(valueSpots.get===undefined){valueSpots=new RangeMap(valueSpots)}for(i=0;i<yvalcount;i++){color=valueSpots.get(yvalues[i]);if(color){target.drawCircle(canvasLeft+Math.round((xvalues[i]-this.minx)*(canvasWidth/rangex)),canvasTop+Math.round(canvasHeight-canvasHeight*((yvalues[i]-this.miny)/rangey)),spotRadius,undefined,color).append()}}}if(spotRadius&&options.get("spotColor")&&yvalues[yvallast]!==null){target.drawCircle(canvasLeft+Math.round((xvalues[xvalues.length-1]-this.minx)*(canvasWidth/rangex)),canvasTop+Math.round(canvasHeight-canvasHeight*((yvalues[yvallast]-this.miny)/rangey)),spotRadius,undefined,options.get("spotColor")).append()}if(this.maxy!==this.minyorg){if(spotRadius&&options.get("minSpotColor")){x=xvalues[$.inArray(this.minyorg,yvalues)];target.drawCircle(canvasLeft+Math.round((x-this.minx)*(canvasWidth/rangex)),canvasTop+Math.round(canvasHeight-canvasHeight*((this.minyorg-this.miny)/rangey)),spotRadius,undefined,options.get("minSpotColor")).append()}if(spotRadius&&options.get("maxSpotColor")){x=xvalues[$.inArray(this.maxyorg,yvalues)];target.drawCircle(canvasLeft+Math.round((x-this.minx)*(canvasWidth/rangex)),canvasTop+Math.round(canvasHeight-canvasHeight*((this.maxyorg-this.miny)/rangey)),spotRadius,undefined,options.get("maxSpotColor")).append()}}this.lastShapeId=target.getLastShapeId();this.canvasTop=canvasTop;target.render()}});$.fn.sparkline.bar=bar=createClass($.fn.sparkline._base,barHighlightMixin,{type:"bar",init:function(el,values,options,width,height){var barWidth=parseInt(options.get("barWidth"),10),barSpacing=parseInt(options.get("barSpacing"),10),chartRangeMin=options.get("chartRangeMin"),chartRangeMax=options.get("chartRangeMax"),chartRangeClip=options.get("chartRangeClip"),stackMin=Infinity,stackMax=-Infinity,isStackString,groupMin,groupMax,stackRanges,numValues,i,vlen,range,zeroAxis,xaxisOffset,min,max,clipMin,clipMax,stacked,vlist,j,slen,svals,val,yoffset,yMaxCalc,canvasHeightEf;bar._super.init.call(this,el,values,options,width,height);for(i=0,vlen=values.length;i<vlen;i++){val=values[i];isStackString=typeof val==="string"&&val.indexOf(":")>-1;if(isStackString||$.isArray(val)){stacked=true;if(isStackString){val=values[i]=normalizeValues(val.split(":"));
          +
          +}val=remove(val,null);groupMin=Math.min.apply(Math,val);groupMax=Math.max.apply(Math,val);if(groupMin<stackMin){stackMin=groupMin}if(groupMax>stackMax){stackMax=groupMax}}}this.stacked=stacked;this.regionShapes={};this.barWidth=barWidth;this.barSpacing=barSpacing;this.totalBarWidth=barWidth+barSpacing;this.width=width=values.length*barWidth+(values.length-1)*barSpacing;this.initTarget();if(chartRangeClip){clipMin=chartRangeMin===undefined?-Infinity:chartRangeMin;clipMax=chartRangeMax===undefined?Infinity:chartRangeMax}numValues=[];stackRanges=stacked?[]:numValues;var stackTotals=[];var stackRangesNeg=[];for(i=0,vlen=values.length;i<vlen;i++){if(stacked){vlist=values[i];values[i]=svals=[];stackTotals[i]=0;stackRanges[i]=stackRangesNeg[i]=0;for(j=0,slen=vlist.length;j<slen;j++){val=svals[j]=chartRangeClip?clipval(vlist[j],clipMin,clipMax):vlist[j];if(val!==null){if(val>0){stackTotals[i]+=val}if(stackMin<0&&stackMax>0){if(val<0){stackRangesNeg[i]+=Math.abs(val)}else{stackRanges[i]+=val}}else{stackRanges[i]+=Math.abs(val-(val<0?stackMax:stackMin))}numValues.push(val)}}}else{val=chartRangeClip?clipval(values[i],clipMin,clipMax):values[i];val=values[i]=normalizeValue(val);if(val!==null){numValues.push(val)}}}this.max=max=Math.max.apply(Math,numValues);this.min=min=Math.min.apply(Math,numValues);this.stackMax=stackMax=stacked?Math.max.apply(Math,stackTotals):max;this.stackMin=stackMin=stacked?Math.min.apply(Math,numValues):min;if(options.get("chartRangeMin")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMin")<min)){min=options.get("chartRangeMin")}if(options.get("chartRangeMax")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMax")>max)){max=options.get("chartRangeMax")}this.zeroAxis=zeroAxis=options.get("zeroAxis",true);if(min<=0&&max>=0&&zeroAxis){xaxisOffset=0}else if(zeroAxis==false){xaxisOffset=min}else if(min>0){xaxisOffset=min}else{xaxisOffset=max}this.xaxisOffset=xaxisOffset;range=stacked?Math.max.apply(Math,stackRanges)+Math.max.apply(Math,stackRangesNeg):max-min;this.canvasHeightEf=zeroAxis&&min<0?this.canvasHeight-2:this.canvasHeight-1;if(min<xaxisOffset){yMaxCalc=stacked&&max>=0?stackMax:max;yoffset=(yMaxCalc-xaxisOffset)/range*this.canvasHeight;if(yoffset!==Math.ceil(yoffset)){this.canvasHeightEf-=2;yoffset=Math.ceil(yoffset)}}else{yoffset=this.canvasHeight}this.yoffset=yoffset;if($.isArray(options.get("colorMap"))){this.colorMapByIndex=options.get("colorMap");this.colorMapByValue=null}else{this.colorMapByIndex=null;this.colorMapByValue=options.get("colorMap");if(this.colorMapByValue&&this.colorMapByValue.get===undefined){this.colorMapByValue=new RangeMap(this.colorMapByValue)}}this.range=range},getRegion:function(el,x,y){var result=Math.floor(x/this.totalBarWidth);return result<0||result>=this.values.length?undefined:result},getCurrentRegionFields:function(){var currentRegion=this.currentRegion,values=ensureArray(this.values[currentRegion]),result=[],value,i;for(i=values.length;i--;){value=values[i];result.push({isNull:value===null,value:value,color:this.calcColor(i,value,currentRegion),offset:currentRegion})}return result},calcColor:function(stacknum,value,valuenum){var colorMapByIndex=this.colorMapByIndex,colorMapByValue=this.colorMapByValue,options=this.options,color,newColor;if(this.stacked){color=options.get("stackedBarColor")}else{color=value<0?options.get("negBarColor"):options.get("barColor")}if(value===0&&options.get("zeroColor")!==undefined){color=options.get("zeroColor")}if(colorMapByValue&&(newColor=colorMapByValue.get(value))){color=newColor}else if(colorMapByIndex&&colorMapByIndex.length>valuenum){color=colorMapByIndex[valuenum]}return $.isArray(color)?color[stacknum%color.length]:color},renderRegion:function(valuenum,highlight){var vals=this.values[valuenum],options=this.options,xaxisOffset=this.xaxisOffset,result=[],range=this.range,stacked=this.stacked,target=this.target,x=valuenum*this.totalBarWidth,canvasHeightEf=this.canvasHeightEf,yoffset=this.yoffset,y,height,color,isNull,yoffsetNeg,i,valcount,val,minPlotted,allMin;vals=$.isArray(vals)?vals:[vals];valcount=vals.length;val=vals[0];isNull=all(null,vals);allMin=all(xaxisOffset,vals,true);if(isNull){if(options.get("nullColor")){color=highlight?options.get("nullColor"):this.calcHighlightColor(options.get("nullColor"),options);y=yoffset>0?yoffset-1:yoffset;return target.drawRect(x,y,this.barWidth-1,0,color,color)}else{return undefined}}yoffsetNeg=yoffset;for(i=0;i<valcount;i++){val=vals[i];if(stacked&&val===xaxisOffset){if(!allMin||minPlotted){continue}minPlotted=true}if(range>0){height=Math.floor(canvasHeightEf*(Math.abs(val-xaxisOffset)/range))+1}else{height=1}if(val<xaxisOffset||val===xaxisOffset&&yoffset===0){y=yoffsetNeg;yoffsetNeg+=height}else{y=yoffset-height;yoffset-=height}color=this.calcColor(i,val,valuenum);if(highlight){color=this.calcHighlightColor(color,options)}result.push(target.drawRect(x,y,this.barWidth-1,height-1,color,color))}if(result.length===1){return result[0]}return result}});$.fn.sparkline.tristate=tristate=createClass($.fn.sparkline._base,barHighlightMixin,{type:"tristate",init:function(el,values,options,width,height){var barWidth=parseInt(options.get("barWidth"),10),barSpacing=parseInt(options.get("barSpacing"),10);tristate._super.init.call(this,el,values,options,width,height);this.regionShapes={};this.barWidth=barWidth;this.barSpacing=barSpacing;this.totalBarWidth=barWidth+barSpacing;this.values=$.map(values,Number);this.width=width=values.length*barWidth+(values.length-1)*barSpacing;if($.isArray(options.get("colorMap"))){this.colorMapByIndex=options.get("colorMap");this.colorMapByValue=null}else{this.colorMapByIndex=null;this.colorMapByValue=options.get("colorMap");if(this.colorMapByValue&&this.colorMapByValue.get===undefined){this.colorMapByValue=new RangeMap(this.colorMapByValue)}}this.initTarget()},getRegion:function(el,x,y){return Math.floor(x/this.totalBarWidth)},getCurrentRegionFields:function(){var currentRegion=this.currentRegion;return{isNull:this.values[currentRegion]===undefined,value:this.values[currentRegion],color:this.calcColor(this.values[currentRegion],currentRegion),offset:currentRegion}},calcColor:function(value,valuenum){var values=this.values,options=this.options,colorMapByIndex=this.colorMapByIndex,colorMapByValue=this.colorMapByValue,color,newColor;if(colorMapByValue&&(newColor=colorMapByValue.get(value))){color=newColor}else if(colorMapByIndex&&colorMapByIndex.length>valuenum){color=colorMapByIndex[valuenum]}else if(values[valuenum]<0){color=options.get("negBarColor")}else if(values[valuenum]>0){color=options.get("posBarColor")}else{color=options.get("zeroBarColor")}return color},renderRegion:function(valuenum,highlight){var values=this.values,options=this.options,target=this.target,canvasHeight,height,halfHeight,x,y,color;canvasHeight=target.pixelHeight;halfHeight=Math.round(canvasHeight/2);x=valuenum*this.totalBarWidth;if(values[valuenum]<0){y=halfHeight;height=halfHeight-1}else if(values[valuenum]>0){y=0;height=halfHeight-1}else{y=halfHeight-1;height=2}color=this.calcColor(values[valuenum],valuenum);if(color===null){return}if(highlight){color=this.calcHighlightColor(color,options)}return target.drawRect(x,y,this.barWidth-1,height-1,color,color)}});$.fn.sparkline.discrete=discrete=createClass($.fn.sparkline._base,barHighlightMixin,{type:"discrete",init:function(el,values,options,width,height){discrete._super.init.call(this,el,values,options,width,height);this.regionShapes={};this.values=values=$.map(values,Number);this.min=Math.min.apply(Math,values);this.max=Math.max.apply(Math,values);this.range=this.max-this.min;this.width=width=options.get("width")==="auto"?values.length*2:this.width;this.interval=Math.floor(width/values.length);this.itemWidth=width/values.length;if(options.get("chartRangeMin")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMin")<this.min)){this.min=options.get("chartRangeMin")}if(options.get("chartRangeMax")!==undefined&&(options.get("chartRangeClip")||options.get("chartRangeMax")>this.max)){this.max=options.get("chartRangeMax")}this.initTarget();if(this.target){this.lineHeight=options.get("lineHeight")==="auto"?Math.round(this.canvasHeight*.3):options.get("lineHeight")}},getRegion:function(el,x,y){return Math.floor(x/this.itemWidth)},getCurrentRegionFields:function(){var currentRegion=this.currentRegion;return{isNull:this.values[currentRegion]===undefined,value:this.values[currentRegion],offset:currentRegion}},renderRegion:function(valuenum,highlight){var values=this.values,options=this.options,min=this.min,max=this.max,range=this.range,interval=this.interval,target=this.target,canvasHeight=this.canvasHeight,lineHeight=this.lineHeight,pheight=canvasHeight-lineHeight,ytop,val,color,x;val=clipval(values[valuenum],min,max);x=valuenum*interval;ytop=Math.round(pheight-pheight*((val-min)/range));color=options.get("thresholdColor")&&val<options.get("thresholdValue")?options.get("thresholdColor"):options.get("lineColor");if(highlight){color=this.calcHighlightColor(color,options)}return target.drawLine(x,ytop,x,ytop+lineHeight,color)}});$.fn.sparkline.bullet=bullet=createClass($.fn.sparkline._base,{type:"bullet",init:function(el,values,options,width,height){var min,max,vals;bullet._super.init.call(this,el,values,options,width,height);this.values=values=normalizeValues(values);vals=values.slice();vals[0]=vals[0]===null?vals[2]:vals[0];vals[1]=values[1]===null?vals[2]:vals[1];min=Math.min.apply(Math,values);max=Math.max.apply(Math,values);if(options.get("base")===undefined){min=min<0?min:0}else{min=options.get("base")}this.min=min;this.max=max;this.range=max-min;this.shapes={};this.valueShapes={};this.regiondata={};this.width=width=options.get("width")==="auto"?"4.0em":width;this.target=this.$el.simpledraw(width,height,options.get("composite"));if(!values.length){this.disabled=true}this.initTarget()},getRegion:function(el,x,y){var shapeid=this.target.getShapeAt(el,x,y);return shapeid!==undefined&&this.shapes[shapeid]!==undefined?this.shapes[shapeid]:undefined},getCurrentRegionFields:function(){var currentRegion=this.currentRegion;return{fieldkey:currentRegion.substr(0,1),value:this.values[currentRegion.substr(1)],region:currentRegion}},changeHighlight:function(highlight){var currentRegion=this.currentRegion,shapeid=this.valueShapes[currentRegion],shape;delete this.shapes[shapeid];switch(currentRegion.substr(0,1)){case"r":shape=this.renderRange(currentRegion.substr(1),highlight);break;case"p":shape=this.renderPerformance(highlight);break;case"t":shape=this.renderTarget(highlight);break}this.valueShapes[currentRegion]=shape.id;this.shapes[shape.id]=currentRegion;this.target.replaceWithShape(shapeid,shape)},renderRange:function(rn,highlight){var rangeval=this.values[rn],rangewidth=Math.round(this.canvasWidth*((rangeval-this.min)/this.range)),color=this.options.get("rangeColors")[rn-2];if(highlight){color=this.calcHighlightColor(color,this.options)}return this.target.drawRect(0,0,rangewidth-1,this.canvasHeight-1,color,color)},renderPerformance:function(highlight){var perfval=this.values[1],perfwidth=Math.round(this.canvasWidth*((perfval-this.min)/this.range)),color=this.options.get("performanceColor");if(highlight){color=this.calcHighlightColor(color,this.options)}return this.target.drawRect(0,Math.round(this.canvasHeight*.3),perfwidth-1,Math.round(this.canvasHeight*.4)-1,color,color)},renderTarget:function(highlight){var targetval=this.values[0],x=Math.round(this.canvasWidth*((targetval-this.min)/this.range)-this.options.get("targetWidth")/2),targettop=Math.round(this.canvasHeight*.1),targetheight=this.canvasHeight-targettop*2,color=this.options.get("targetColor");if(highlight){color=this.calcHighlightColor(color,this.options)}return this.target.drawRect(x,targettop,this.options.get("targetWidth")-1,targetheight-1,color,color)},render:function(){var vlen=this.values.length,target=this.target,i,shape;if(!bullet._super.render.call(this)){return}for(i=2;i<vlen;i++){shape=this.renderRange(i).append();this.shapes[shape.id]="r"+i;this.valueShapes["r"+i]=shape.id}if(this.values[1]!==null){shape=this.renderPerformance().append();this.shapes[shape.id]="p1";this.valueShapes.p1=shape.id}if(this.values[0]!==null){shape=this.renderTarget().append();this.shapes[shape.id]="t0";this.valueShapes.t0=shape.id}target.render()}});$.fn.sparkline.pie=pie=createClass($.fn.sparkline._base,{type:"pie",init:function(el,values,options,width,height){var total=0,i;pie._super.init.call(this,el,values,options,width,height);this.shapes={};this.valueShapes={};this.values=values=$.map(values,Number);if(options.get("width")==="auto"){this.width=this.height}if(values.length>0){for(i=values.length;i--;){total+=values[i]}}this.total=total;this.initTarget();this.radius=Math.floor(Math.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(el,x,y){var shapeid=this.target.getShapeAt(el,x,y);return shapeid!==undefined&&this.shapes[shapeid]!==undefined?this.shapes[shapeid]:undefined},getCurrentRegionFields:function(){var currentRegion=this.currentRegion;return{isNull:this.values[currentRegion]===undefined,value:this.values[currentRegion],percent:this.values[currentRegion]/this.total*100,color:this.options.get("sliceColors")[currentRegion%this.options.get("sliceColors").length],offset:currentRegion}},changeHighlight:function(highlight){var currentRegion=this.currentRegion,newslice=this.renderSlice(currentRegion,highlight),shapeid=this.valueShapes[currentRegion];delete this.shapes[shapeid];this.target.replaceWithShape(shapeid,newslice);this.valueShapes[currentRegion]=newslice.id;this.shapes[newslice.id]=currentRegion},renderSlice:function(valuenum,highlight){var target=this.target,options=this.options,radius=this.radius,borderWidth=options.get("borderWidth"),offset=options.get("offset"),circle=2*Math.PI,values=this.values,total=this.total,next=offset?2*Math.PI*(offset/360):0,start,end,i,vlen,color;vlen=values.length;for(i=0;i<vlen;i++){start=next;end=next;if(total>0){end=next+circle*(values[i]/total)}if(valuenum===i){color=options.get("sliceColors")[i%options.get("sliceColors").length];if(highlight){color=this.calcHighlightColor(color,options)}return target.drawPieSlice(radius,radius,radius-borderWidth,start,end,undefined,color)}next=end}},render:function(){var target=this.target,values=this.values,options=this.options,radius=this.radius,borderWidth=options.get("borderWidth"),shape,i;if(!pie._super.render.call(this)){return}if(borderWidth){target.drawCircle(radius,radius,Math.floor(radius-borderWidth/2),options.get("borderColor"),undefined,borderWidth).append()}for(i=values.length;i--;){if(values[i]){shape=this.renderSlice(i).append();this.valueShapes[i]=shape.id;this.shapes[shape.id]=i}}target.render()}});$.fn.sparkline.box=box=createClass($.fn.sparkline._base,{type:"box",init:function(el,values,options,width,height){box._super.init.call(this,el,values,options,width,height);this.values=$.map(values,Number);this.width=options.get("width")==="auto"?"4.0em":width;this.initTarget();if(!this.values.length){this.disabled=1}},getRegion:function(){return 1},getCurrentRegionFields:function(){var result=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];if(this.loutlier!==undefined){result.push({field:"lo",value:this.loutlier})}if(this.routlier!==undefined){result.push({field:"ro",value:this.routlier})}if(this.lwhisker!==undefined){result.push({field:"lw",value:this.lwhisker})}if(this.rwhisker!==undefined){result.push({field:"rw",value:this.rwhisker})}return result},render:function(){var target=this.target,values=this.values,vlen=values.length,options=this.options,canvasWidth=this.canvasWidth,canvasHeight=this.canvasHeight,minValue=options.get("chartRangeMin")===undefined?Math.min.apply(Math,values):options.get("chartRangeMin"),maxValue=options.get("chartRangeMax")===undefined?Math.max.apply(Math,values):options.get("chartRangeMax"),canvasLeft=0,lwhisker,loutlier,iqr,q1,q2,q3,rwhisker,routlier,i,size,unitSize;if(!box._super.render.call(this)){return}if(options.get("raw")){if(options.get("showOutliers")&&values.length>5){loutlier=values[0];lwhisker=values[1];q1=values[2];q2=values[3];q3=values[4];rwhisker=values[5];routlier=values[6]}else{lwhisker=values[0];q1=values[1];q2=values[2];q3=values[3];rwhisker=values[4]}}else{values.sort(function(a,b){return a-b});q1=quartile(values,1);q2=quartile(values,2);q3=quartile(values,3);iqr=q3-q1;if(options.get("showOutliers")){lwhisker=rwhisker=undefined;for(i=0;i<vlen;i++){if(lwhisker===undefined&&values[i]>q1-iqr*options.get("outlierIQR")){lwhisker=values[i]}if(values[i]<q3+iqr*options.get("outlierIQR")){rwhisker=values[i]}}loutlier=values[0];routlier=values[vlen-1]}else{lwhisker=values[0];rwhisker=values[vlen-1]}}this.quartiles=[q1,q2,q3];this.lwhisker=lwhisker;this.rwhisker=rwhisker;this.loutlier=loutlier;this.routlier=routlier;unitSize=canvasWidth/(maxValue-minValue+1);if(options.get("showOutliers")){canvasLeft=Math.ceil(options.get("spotRadius"));canvasWidth-=2*Math.ceil(options.get("spotRadius"));unitSize=canvasWidth/(maxValue-minValue+1);if(loutlier<lwhisker){target.drawCircle((loutlier-minValue)*unitSize+canvasLeft,canvasHeight/2,options.get("spotRadius"),options.get("outlierLineColor"),options.get("outlierFillColor")).append()}if(routlier>rwhisker){target.drawCircle((routlier-minValue)*unitSize+canvasLeft,canvasHeight/2,options.get("spotRadius"),options.get("outlierLineColor"),options.get("outlierFillColor")).append()}}target.drawRect(Math.round((q1-minValue)*unitSize+canvasLeft),Math.round(canvasHeight*.1),Math.round((q3-q1)*unitSize),Math.round(canvasHeight*.8),options.get("boxLineColor"),options.get("boxFillColor")).append();target.drawLine(Math.round((lwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2),Math.round((q1-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2),options.get("lineColor")).append();target.drawLine(Math.round((lwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/4),Math.round((lwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight-canvasHeight/4),options.get("whiskerColor")).append();target.drawLine(Math.round((rwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2),Math.round((q3-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2),options.get("lineColor")).append();target.drawLine(Math.round((rwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/4),Math.round((rwhisker-minValue)*unitSize+canvasLeft),Math.round(canvasHeight-canvasHeight/4),options.get("whiskerColor")).append();target.drawLine(Math.round((q2-minValue)*unitSize+canvasLeft),Math.round(canvasHeight*.1),Math.round((q2-minValue)*unitSize+canvasLeft),Math.round(canvasHeight*.9),options.get("medianColor")).append();if(options.get("target")){size=Math.ceil(options.get("spotRadius"));target.drawLine(Math.round((options.get("target")-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2-size),Math.round((options.get("target")-minValue)*unitSize+canvasLeft),Math.round(canvasHeight/2+size),options.get("targetColor")).append();target.drawLine(Math.round((options.get("target")-minValue)*unitSize+canvasLeft-size),Math.round(canvasHeight/2),Math.round((options.get("target")-minValue)*unitSize+canvasLeft+size),Math.round(canvasHeight/2),options.get("targetColor")).append()}target.render()}});VShape=createClass({init:function(target,id,type,args){this.target=target;this.id=id;this.type=type;this.args=args},append:function(){this.target.appendShape(this);return this}});VCanvas_base=createClass({_pxregex:/(\d+)(px)?\s*$/i,init:function(width,height,target){if(!width){return}this.width=width;this.height=height;this.target=target;this.lastShapeId=null;if(target[0]){target=target[0]}$.data(target,"_jqs_vcanvas",this)},drawLine:function(x1,y1,x2,y2,lineColor,lineWidth){return this.drawShape([[x1,y1],[x2,y2]],lineColor,lineWidth)},drawShape:function(path,lineColor,fillColor,lineWidth){return this._genShape("Shape",[path,lineColor,fillColor,lineWidth])},drawCircle:function(x,y,radius,lineColor,fillColor,lineWidth){return this._genShape("Circle",[x,y,radius,lineColor,fillColor,lineWidth])},drawPieSlice:function(x,y,radius,startAngle,endAngle,lineColor,fillColor){return this._genShape("PieSlice",[x,y,radius,startAngle,endAngle,lineColor,fillColor])},drawRect:function(x,y,width,height,lineColor,fillColor){return this._genShape("Rect",[x,y,width,height,lineColor,fillColor])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(el,target){$(target).html(el)},_calculatePixelDims:function(width,height,canvas){var match;match=this._pxregex.exec(height);if(match){this.pixelHeight=match[1]}else{this.pixelHeight=$(canvas).height()}match=this._pxregex.exec(width);if(match){this.pixelWidth=match[1]}else{this.pixelWidth=$(canvas).width()}},_genShape:function(shapetype,shapeargs){var id=shapeCount++;shapeargs.unshift(id);return new VShape(this,id,shapetype,shapeargs)},appendShape:function(shape){alert("appendShape not implemented")},replaceWithShape:function(shapeid,shape){alert("replaceWithShape not implemented")},insertAfterShape:function(shapeid,shape){alert("insertAfterShape not implemented")},removeShapeId:function(shapeid){alert("removeShapeId not implemented")},getShapeAt:function(el,x,y){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}});VCanvas_canvas=createClass(VCanvas_base,{init:function(width,height,target,interact){VCanvas_canvas._super.init.call(this,width,height,target);this.canvas=document.createElement("canvas");if(target[0]){target=target[0]}$.data(target,"_jqs_vcanvas",this);$(this.canvas).css({display:"inline-block",width:width,height:height,verticalAlign:"top"});this._insert(this.canvas,target);this._calculatePixelDims(width,height,this.canvas);this.canvas.width=this.pixelWidth;this.canvas.height=this.pixelHeight;this.interact=interact;this.shapes={};this.shapeseq=[];this.currentTargetShapeId=undefined;$(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(lineColor,fillColor,lineWidth){var context=this.canvas.getContext("2d");if(lineColor!==undefined){context.strokeStyle=lineColor}context.lineWidth=lineWidth===undefined?1:lineWidth;if(fillColor!==undefined){context.fillStyle=fillColor}return context},reset:function(){var context=this._getContext();context.clearRect(0,0,this.pixelWidth,this.pixelHeight);this.shapes={};this.shapeseq=[];this.currentTargetShapeId=undefined},_drawShape:function(shapeid,path,lineColor,fillColor,lineWidth){var context=this._getContext(lineColor,fillColor,lineWidth),i,plen;context.beginPath();context.moveTo(path[0][0]+.5,path[0][1]+.5);for(i=1,plen=path.length;i<plen;i++){context.lineTo(path[i][0]+.5,path[i][1]+.5)}if(lineColor!==undefined){context.stroke()}if(fillColor!==undefined){context.fill()}if(this.targetX!==undefined&&this.targetY!==undefined&&context.isPointInPath(this.targetX,this.targetY)){this.currentTargetShapeId=shapeid}},_drawCircle:function(shapeid,x,y,radius,lineColor,fillColor,lineWidth){var context=this._getContext(lineColor,fillColor,lineWidth);context.beginPath();context.arc(x,y,radius,0,2*Math.PI,false);if(this.targetX!==undefined&&this.targetY!==undefined&&context.isPointInPath(this.targetX,this.targetY)){this.currentTargetShapeId=shapeid}if(lineColor!==undefined){context.stroke()}if(fillColor!==undefined){context.fill()}},_drawPieSlice:function(shapeid,x,y,radius,startAngle,endAngle,lineColor,fillColor){var context=this._getContext(lineColor,fillColor);context.beginPath();context.moveTo(x,y);context.arc(x,y,radius,startAngle,endAngle,false);context.lineTo(x,y);context.closePath();if(lineColor!==undefined){context.stroke()}if(fillColor){context.fill()}if(this.targetX!==undefined&&this.targetY!==undefined&&context.isPointInPath(this.targetX,this.targetY)){this.currentTargetShapeId=shapeid}},_drawRect:function(shapeid,x,y,width,height,lineColor,fillColor){return this._drawShape(shapeid,[[x,y],[x+width,y],[x+width,y+height],[x,y+height],[x,y]],lineColor,fillColor)},appendShape:function(shape){this.shapes[shape.id]=shape;this.shapeseq.push(shape.id);this.lastShapeId=shape.id;return shape.id},replaceWithShape:function(shapeid,shape){var shapeseq=this.shapeseq,i;this.shapes[shape.id]=shape;for(i=shapeseq.length;i--;){if(shapeseq[i]==shapeid){shapeseq[i]=shape.id}}delete this.shapes[shapeid]},replaceWithShapes:function(shapeids,shapes){var shapeseq=this.shapeseq,shapemap={},sid,i,first;for(i=shapeids.length;i--;){shapemap[shapeids[i]]=true}for(i=shapeseq.length;i--;){sid=shapeseq[i];if(shapemap[sid]){shapeseq.splice(i,1);delete this.shapes[sid];first=i}}for(i=shapes.length;i--;){shapeseq.splice(first,0,shapes[i].id);this.shapes[shapes[i].id]=shapes[i]}},insertAfterShape:function(shapeid,shape){var shapeseq=this.shapeseq,i;for(i=shapeseq.length;i--;){if(shapeseq[i]===shapeid){shapeseq.splice(i+1,0,shape.id);this.shapes[shape.id]=shape;return}}},removeShapeId:function(shapeid){var shapeseq=this.shapeseq,i;for(i=shapeseq.length;i--;){if(shapeseq[i]===shapeid){shapeseq.splice(i,1);break}}delete this.shapes[shapeid]},getShapeAt:function(el,x,y){this.targetX=x;this.targetY=y;this.render();return this.currentTargetShapeId},render:function(){var shapeseq=this.shapeseq,shapes=this.shapes,shapeCount=shapeseq.length,context=this._getContext(),shapeid,shape,i;context.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(i=0;i<shapeCount;i++){shapeid=shapeseq[i];shape=shapes[shapeid];this["_draw"+shape.type].apply(this,shape.args)}if(!this.interact){this.shapes={};this.shapeseq=[]}}});VCanvas_vml=createClass(VCanvas_base,{init:function(width,height,target){var groupel;VCanvas_vml._super.init.call(this,width,height,target);if(target[0]){target=target[0]}$.data(target,"_jqs_vcanvas",this);this.canvas=document.createElement("span");$(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:width,height:height,margin:"0px",padding:"0px",verticalAlign:"top"});this._insert(this.canvas,target);this._calculatePixelDims(width,height,this.canvas);this.canvas.width=this.pixelWidth;this.canvas.height=this.pixelHeight;groupel='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>';this.canvas.insertAdjacentHTML("beforeEnd",groupel);this.group=$(this.canvas).children()[0];this.rendered=false;this.prerender=""},_drawShape:function(shapeid,path,lineColor,fillColor,lineWidth){var vpath=[],initial,stroke,fill,closed,vel,plen,i;for(i=0,plen=path.length;i<plen;i++){vpath[i]=""+path[i][0]+","+path[i][1]}initial=vpath.splice(0,1);lineWidth=lineWidth===undefined?1:lineWidth;stroke=lineColor===undefined?' stroked="false" ':' strokeWeight="'+lineWidth+'px" strokeColor="'+lineColor+'" ';fill=fillColor===undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';closed=vpath[0]===vpath[vpath.length-1]?"x ":"";vel='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+shapeid+'" '+stroke+fill+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+initial+" l "+vpath.join(", ")+" "+closed+'e">'+" </v:shape>";return vel},_drawCircle:function(shapeid,x,y,radius,lineColor,fillColor,lineWidth){var stroke,fill,vel;x-=radius;y-=radius;stroke=lineColor===undefined?' stroked="false" ':' strokeWeight="'+lineWidth+'px" strokeColor="'+lineColor+'" ';fill=fillColor===undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';vel="<v:oval "+' id="jqsshape'+shapeid+'" '+stroke+fill+' style="position:absolute;top:'+y+"px; left:"+x+"px; width:"+radius*2+"px; height:"+radius*2+'px"></v:oval>';return vel},_drawPieSlice:function(shapeid,x,y,radius,startAngle,endAngle,lineColor,fillColor){var vpath,startx,starty,endx,endy,stroke,fill,vel;if(startAngle===endAngle){return""}if(endAngle-startAngle===2*Math.PI){startAngle=0;endAngle=2*Math.PI}startx=x+Math.round(Math.cos(startAngle)*radius);starty=y+Math.round(Math.sin(startAngle)*radius);endx=x+Math.round(Math.cos(endAngle)*radius);endy=y+Math.round(Math.sin(endAngle)*radius);if(startx===endx&&starty===endy){if(endAngle-startAngle<Math.PI){return""}startx=endx=x+radius;starty=endy=y}if(startx===endx&&starty===endy&&endAngle-startAngle<Math.PI){return""}vpath=[x-radius,y-radius,x+radius,y+radius,startx,starty,endx,endy];stroke=lineColor===undefined?' stroked="false" ':' strokeWeight="1px" strokeColor="'+lineColor+'" ';fill=fillColor===undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';vel='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+shapeid+'" '+stroke+fill+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+x+","+y+" wa "+vpath.join(", ")+' x e">'+" </v:shape>";return vel},_drawRect:function(shapeid,x,y,width,height,lineColor,fillColor){return this._drawShape(shapeid,[[x,y],[x,y+height],[x+width,y+height],[x+width,y],[x,y]],lineColor,fillColor)},reset:function(){this.group.innerHTML=""},appendShape:function(shape){var vel=this["_draw"+shape.type].apply(this,shape.args);if(this.rendered){this.group.insertAdjacentHTML("beforeEnd",vel)}else{this.prerender+=vel}this.lastShapeId=shape.id;return shape.id},replaceWithShape:function(shapeid,shape){var existing=$("#jqsshape"+shapeid),vel=this["_draw"+shape.type].apply(this,shape.args);existing[0].outerHTML=vel},replaceWithShapes:function(shapeids,shapes){var existing=$("#jqsshape"+shapeids[0]),replace="",slen=shapes.length,i;for(i=0;i<slen;i++){replace+=this["_draw"+shapes[i].type].apply(this,shapes[i].args)}existing[0].outerHTML=replace;for(i=1;i<shapeids.length;i++){$("#jqsshape"+shapeids[i]).remove()}},insertAfterShape:function(shapeid,shape){var existing=$("#jqsshape"+shapeid),vel=this["_draw"+shape.type].apply(this,shape.args);existing[0].insertAdjacentHTML("afterEnd",vel)},removeShapeId:function(shapeid){var existing=$("#jqsshape"+shapeid);this.group.removeChild(existing[0])},getShapeAt:function(el,x,y){var shapeid=el.id.substr(8);return shapeid},render:function(){if(!this.rendered){this.group.innerHTML=this.prerender;this.rendered=true}}})})})(document,Math);
          \ No newline at end of file
          diff --git a/public/theme/jquery-sparkline/minheader.txt b/public/theme/jquery-sparkline/minheader.txt
          new file mode 100644
          index 0000000..267b6db
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/minheader.txt
          @@ -0,0 +1,3 @@
          +/* jquery.sparkline @VERSION@ - http://omnipotent.net/jquery.sparkline/ 
          +** Licensed under the New BSD License - see above site for details */
          +
          diff --git a/public/theme/jquery-sparkline/sparkline.jquery.json b/public/theme/jquery-sparkline/sparkline.jquery.json
          new file mode 100644
          index 0000000..25242e6
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/sparkline.jquery.json
          @@ -0,0 +1,34 @@
          +{
          +    "name": "sparkline",
          +    "title": "jQuery Sparkline",
          +    "description": "Easily generate small, inline sparkline charts directly in the browser",
          +    "keywords": [
          +        "canvas",
          +        "charts",
          +        "graphics",
          +        "graphing",
          +        "graphs",
          +        "sparklines",
          +        "ui",
          +        "vml"
          +    ],
          +    "version": "2.1.2",
          +    "author": {
          +        "name": "Gareth Watts",
          +        "url": "http://gwatts.com/"
          +    },
          +    "licenses": [
          +        {
          +            "type": "BSD-3-Clause",
          +            "url": "http://opensource.org/licenses/BSD-3-Clause"
          +        }
          +    ],
          +    "bugs": "https://github.com/gwatts/jquery.sparkline/issues",
          +    "homepage": "http://omnipotent.net/jquery.sparkline/",
          +    "demo": "http://omnipotent.net/jquery.sparkline/",
          +    "docs": "http://omnipotent.net/jquery.sparkline/#s-docs",
          +    "download": "http://omnipotent.net/jquery.sparkline/#s-download",
          +    "dependencies": {
          +        "jquery": ">=1.4.3"
          +    }
          +}
          diff --git a/public/theme/jquery-sparkline/src/base.js b/public/theme/jquery-sparkline/src/base.js
          new file mode 100644
          index 0000000..f9356da
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/base.js
          @@ -0,0 +1,415 @@
          +    initStyles = function() {
          +        addCSS(defaultStyles);
          +    };
          +
          +    $(initStyles);
          +
          +    pending = [];
          +    $.fn.sparkline = function (userValues, userOptions) {
          +        return this.each(function () {
          +            var options = new $.fn.sparkline.options(this, userOptions),
          +                 $this = $(this),
          +                 render, i;
          +            render = function () {
          +                var values, width, height, tmp, mhandler, sp, vals;
          +                if (userValues === 'html' || userValues === undefined) {
          +                    vals = this.getAttribute(options.get('tagValuesAttribute'));
          +                    if (vals === undefined || vals === null) {
          +                        vals = $this.html();
          +                    }
          +                    values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(',');
          +                } else {
          +                    values = userValues;
          +                }
          +
          +                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');
          +                if (options.get('height') === 'auto') {
          +                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {
          +                        // must be a better way to get the line height
          +                        tmp = document.createElement('span');
          +                        tmp.innerHTML = 'a';
          +                        $this.html(tmp);
          +                        height = $(tmp).innerHeight() || $(tmp).height();
          +                        $(tmp).remove();
          +                        tmp = null;
          +                    }
          +                } else {
          +                    height = options.get('height');
          +                }
          +
          +                if (!options.get('disableInteraction')) {
          +                    mhandler = $.data(this, '_jqs_mhandler');
          +                    if (!mhandler) {
          +                        mhandler = new MouseHandler(this, options);
          +                        $.data(this, '_jqs_mhandler', mhandler);
          +                    } else if (!options.get('composite')) {
          +                        mhandler.reset();
          +                    }
          +                } else {
          +                    mhandler = false;
          +                }
          +
          +                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {
          +                    if (!$.data(this, '_jqs_errnotify')) {
          +                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');
          +                        $.data(this, '_jqs_errnotify', true);
          +                    }
          +                    return;
          +                }
          +
          +                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);
          +
          +                sp.render();
          +
          +                if (mhandler) {
          +                    mhandler.registerSparkline(sp);
          +                }
          +            };
          +            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {
          +                if (!options.get('composite') && $.data(this, '_jqs_pending')) {
          +                    // remove any existing references to the element
          +                    for (i = pending.length; i; i--) {
          +                        if (pending[i - 1][0] == this) {
          +                            pending.splice(i - 1, 1);
          +                        }
          +                    }
          +                }
          +                pending.push([this, render]);
          +                $.data(this, '_jqs_pending', true);
          +            } else {
          +                render.call(this);
          +            }
          +        });
          +    };
          +
          +    $.fn.sparkline.defaults = getDefaults();
          +
          +
          +    $.sparkline_display_visible = function () {
          +        var el, i, pl;
          +        var done = [];
          +        for (i = 0, pl = pending.length; i < pl; i++) {
          +            el = pending[i][0];
          +            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {
          +                pending[i][1].call(el);
          +                $.data(pending[i][0], '_jqs_pending', false);
          +                done.push(i);
          +            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {
          +                // element has been inserted and removed from the DOM
          +                // If it was not yet inserted into the dom then the .data request
          +                // will return true.
          +                // removing from the dom causes the data to be removed.
          +                $.data(pending[i][0], '_jqs_pending', false);
          +                done.push(i);
          +            }
          +        }
          +        for (i = done.length; i; i--) {
          +            pending.splice(done[i - 1], 1);
          +        }
          +    };
          +
          +
          +    /**
          +     * User option handler
          +     */
          +    $.fn.sparkline.options = createClass({
          +        init: function (tag, userOptions) {
          +            var extendedOptions, defaults, base, tagOptionType;
          +            this.userOptions = userOptions = userOptions || {};
          +            this.tag = tag;
          +            this.tagValCache = {};
          +            defaults = $.fn.sparkline.defaults;
          +            base = defaults.common;
          +            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);
          +
          +            tagOptionType = this.getTagSetting('type');
          +            if (tagOptionType === UNSET_OPTION) {
          +                extendedOptions = defaults[userOptions.type || base.type];
          +            } else {
          +                extendedOptions = defaults[tagOptionType];
          +            }
          +            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);
          +        },
          +
          +
          +        getTagSetting: function (key) {
          +            var prefix = this.tagOptionsPrefix,
          +                val, i, pairs, keyval;
          +            if (prefix === false || prefix === undefined) {
          +                return UNSET_OPTION;
          +            }
          +            if (this.tagValCache.hasOwnProperty(key)) {
          +                val = this.tagValCache.key;
          +            } else {
          +                val = this.tag.getAttribute(prefix + key);
          +                if (val === undefined || val === null) {
          +                    val = UNSET_OPTION;
          +                } else if (val.substr(0, 1) === '[') {
          +                    val = val.substr(1, val.length - 2).split(',');
          +                    for (i = val.length; i--;) {
          +                        val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, ''));
          +                    }
          +                } else if (val.substr(0, 1) === '{') {
          +                    pairs = val.substr(1, val.length - 2).split(',');
          +                    val = {};
          +                    for (i = pairs.length; i--;) {
          +                        keyval = pairs[i].split(':', 2);
          +                        val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, ''));
          +                    }
          +                } else {
          +                    val = normalizeValue(val);
          +                }
          +                this.tagValCache.key = val;
          +            }
          +            return val;
          +        },
          +
          +        get: function (key, defaultval) {
          +            var tagOption = this.getTagSetting(key),
          +                result;
          +            if (tagOption !== UNSET_OPTION) {
          +                return tagOption;
          +            }
          +            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;
          +        }
          +    });
          +
          +
          +    $.fn.sparkline._base = createClass({
          +        disabled: false,
          +
          +        init: function (el, values, options, width, height) {
          +            this.el = el;
          +            this.$el = $(el);
          +            this.values = values;
          +            this.options = options;
          +            this.width = width;
          +            this.height = height;
          +            this.currentRegion = undefined;
          +        },
          +
          +        /**
          +         * Setup the canvas
          +         */
          +        initTarget: function () {
          +            var interactive = !this.options.get('disableInteraction');
          +            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {
          +                this.disabled = true;
          +            } else {
          +                this.canvasWidth = this.target.pixelWidth;
          +                this.canvasHeight = this.target.pixelHeight;
          +            }
          +        },
          +
          +        /**
          +         * Actually render the chart to the canvas
          +         */
          +        render: function () {
          +            if (this.disabled) {
          +                this.el.innerHTML = '';
          +                return false;
          +            }
          +            return true;
          +        },
          +
          +        /**
          +         * Return a region id for a given x/y co-ordinate
          +         */
          +        getRegion: function (x, y) {
          +        },
          +
          +        /**
          +         * Highlight an item based on the moused-over x,y co-ordinate
          +         */
          +        setRegionHighlight: function (el, x, y) {
          +            var currentRegion = this.currentRegion,
          +                highlightEnabled = !this.options.get('disableHighlight'),
          +                newRegion;
          +            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {
          +                return null;
          +            }
          +            newRegion = this.getRegion(el, x, y);
          +            if (currentRegion !== newRegion) {
          +                if (currentRegion !== undefined && highlightEnabled) {
          +                    this.removeHighlight();
          +                }
          +                this.currentRegion = newRegion;
          +                if (newRegion !== undefined && highlightEnabled) {
          +                    this.renderHighlight();
          +                }
          +                return true;
          +            }
          +            return false;
          +        },
          +
          +        /**
          +         * Reset any currently highlighted item
          +         */
          +        clearRegionHighlight: function () {
          +            if (this.currentRegion !== undefined) {
          +                this.removeHighlight();
          +                this.currentRegion = undefined;
          +                return true;
          +            }
          +            return false;
          +        },
          +
          +        renderHighlight: function () {
          +            this.changeHighlight(true);
          +        },
          +
          +        removeHighlight: function () {
          +            this.changeHighlight(false);
          +        },
          +
          +        changeHighlight: function (highlight)  {},
          +
          +        /**
          +         * Fetch the HTML to display as a tooltip
          +         */
          +        getCurrentRegionTooltip: function () {
          +            var options = this.options,
          +                header = '',
          +                entries = [],
          +                fields, formats, formatlen, fclass, text, i,
          +                showFields, showFieldsKey, newFields, fv,
          +                formatter, format, fieldlen, j;
          +            if (this.currentRegion === undefined) {
          +                return '';
          +            }
          +            fields = this.getCurrentRegionFields();
          +            formatter = options.get('tooltipFormatter');
          +            if (formatter) {
          +                return formatter(this, options, fields);
          +            }
          +            if (options.get('tooltipChartTitle')) {
          +                header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n';
          +            }
          +            formats = this.options.get('tooltipFormat');
          +            if (!formats) {
          +                return '';
          +            }
          +            if (!$.isArray(formats)) {
          +                formats = [formats];
          +            }
          +            if (!$.isArray(fields)) {
          +                fields = [fields];
          +            }
          +            showFields = this.options.get('tooltipFormatFieldlist');
          +            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');
          +            if (showFields && showFieldsKey) {
          +                // user-selected ordering of fields
          +                newFields = [];
          +                for (i = fields.length; i--;) {
          +                    fv = fields[i][showFieldsKey];
          +                    if ((j = $.inArray(fv, showFields)) != -1) {
          +                        newFields[j] = fields[i];
          +                    }
          +                }
          +                fields = newFields;
          +            }
          +            formatlen = formats.length;
          +            fieldlen = fields.length;
          +            for (i = 0; i < formatlen; i++) {
          +                format = formats[i];
          +                if (typeof format === 'string') {
          +                    format = new SPFormat(format);
          +                }
          +                fclass = format.fclass || 'jqsfield';
          +                for (j = 0; j < fieldlen; j++) {
          +                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {
          +                        $.extend(fields[j], {
          +                            prefix: options.get('tooltipPrefix'),
          +                            suffix: options.get('tooltipSuffix')
          +                        });
          +                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);
          +                        entries.push('<div class="' + fclass + '">' + text + '</div>');
          +                    }
          +                }
          +            }
          +            if (entries.length) {
          +                return header + entries.join('\n');
          +            }
          +            return '';
          +        },
          +
          +        getCurrentRegionFields: function () {},
          +
          +        calcHighlightColor: function (color, options) {
          +            var highlightColor = options.get('highlightColor'),
          +                lighten = options.get('highlightLighten'),
          +                parse, mult, rgbnew, i;
          +            if (highlightColor) {
          +                return highlightColor;
          +            }
          +            if (lighten) {
          +                // extract RGB values
          +                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);
          +                if (parse) {
          +                    rgbnew = [];
          +                    mult = color.length === 4 ? 16 : 1;
          +                    for (i = 0; i < 3; i++) {
          +                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);
          +                    }
          +                    return 'rgb(' + rgbnew.join(',') + ')';
          +                }
          +
          +            }
          +            return color;
          +        }
          +
          +    });
          +
          +    barHighlightMixin = {
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                target = this.target,
          +                shapeids = this.regionShapes[currentRegion],
          +                newShapes;
          +            // will be null if the region value was null
          +            if (shapeids) {
          +                newShapes = this.renderRegion(currentRegion, highlight);
          +                if ($.isArray(newShapes) || $.isArray(shapeids)) {
          +                    target.replaceWithShapes(shapeids, newShapes);
          +                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {
          +                        return newShape.id;
          +                    });
          +                } else {
          +                    target.replaceWithShape(shapeids, newShapes);
          +                    this.regionShapes[currentRegion] = newShapes.id;
          +                }
          +            }
          +        },
          +
          +        render: function () {
          +            var values = this.values,
          +                target = this.target,
          +                regionShapes = this.regionShapes,
          +                shapes, ids, i, j;
          +
          +            if (!this.cls._super.render.call(this)) {
          +                return;
          +            }
          +            for (i = values.length; i--;) {
          +                shapes = this.renderRegion(i);
          +                if (shapes) {
          +                    if ($.isArray(shapes)) {
          +                        ids = [];
          +                        for (j = shapes.length; j--;) {
          +                            shapes[j].append();
          +                            ids.push(shapes[j].id);
          +                        }
          +                        regionShapes[i] = ids;
          +                    } else {
          +                        shapes.append();
          +                        regionShapes[i] = shapes.id; // store just the shapeid
          +                    }
          +                } else {
          +                    // null value
          +                    regionShapes[i] = null;
          +                }
          +            }
          +            target.render();
          +        }
          +    };
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-bar.js b/public/theme/jquery-sparkline/src/chart-bar.js
          new file mode 100644
          index 0000000..de0e376
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-bar.js
          @@ -0,0 +1,256 @@
          +    /**
          +     * Bar charts
          +     */
          +    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'bar',
          +
          +        init: function (el, values, options, width, height) {
          +            var barWidth = parseInt(options.get('barWidth'), 10),
          +                barSpacing = parseInt(options.get('barSpacing'), 10),
          +                chartRangeMin = options.get('chartRangeMin'),
          +                chartRangeMax = options.get('chartRangeMax'),
          +                chartRangeClip = options.get('chartRangeClip'),
          +                stackMin = Infinity,
          +                stackMax = -Infinity,
          +                isStackString, groupMin, groupMax, stackRanges,
          +                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,
          +                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;
          +            bar._super.init.call(this, el, values, options, width, height);
          +
          +            // scan values to determine whether to stack bars
          +            for (i = 0, vlen = values.length; i < vlen; i++) {
          +                val = values[i];
          +                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;
          +                if (isStackString || $.isArray(val)) {
          +                    stacked = true;
          +                    if (isStackString) {
          +                        val = values[i] = normalizeValues(val.split(':'));
          +                    }
          +                    val = remove(val, null); // min/max will treat null as zero
          +                    groupMin = Math.min.apply(Math, val);
          +                    groupMax = Math.max.apply(Math, val);
          +                    if (groupMin < stackMin) {
          +                        stackMin = groupMin;
          +                    }
          +                    if (groupMax > stackMax) {
          +                        stackMax = groupMax;
          +                    }
          +                }
          +            }
          +
          +            this.stacked = stacked;
          +            this.regionShapes = {};
          +            this.barWidth = barWidth;
          +            this.barSpacing = barSpacing;
          +            this.totalBarWidth = barWidth + barSpacing;
          +            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
          +
          +            this.initTarget();
          +
          +            if (chartRangeClip) {
          +                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;
          +                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;
          +            }
          +
          +            numValues = [];
          +            stackRanges = stacked ? [] : numValues;
          +            var stackTotals = [];
          +            var stackRangesNeg = [];
          +            for (i = 0, vlen = values.length; i < vlen; i++) {
          +                if (stacked) {
          +                    vlist = values[i];
          +                    values[i] = svals = [];
          +                    stackTotals[i] = 0;
          +                    stackRanges[i] = stackRangesNeg[i] = 0;
          +                    for (j = 0, slen = vlist.length; j < slen; j++) {
          +                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];
          +                        if (val !== null) {
          +                            if (val > 0) {
          +                                stackTotals[i] += val;
          +                            }
          +                            if (stackMin < 0 && stackMax > 0) {
          +                                if (val < 0) {
          +                                    stackRangesNeg[i] += Math.abs(val);
          +                                } else {
          +                                    stackRanges[i] += val;
          +                                }
          +                            } else {
          +                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));
          +                            }
          +                            numValues.push(val);
          +                        }
          +                    }
          +                } else {
          +                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];
          +                    val = values[i] = normalizeValue(val);
          +                    if (val !== null) {
          +                        numValues.push(val);
          +                    }
          +                }
          +            }
          +            this.max = max = Math.max.apply(Math, numValues);
          +            this.min = min = Math.min.apply(Math, numValues);
          +            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;
          +            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;
          +
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {
          +                min = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {
          +                max = options.get('chartRangeMax');
          +            }
          +
          +            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);
          +            if (min <= 0 && max >= 0 && zeroAxis) {
          +                xaxisOffset = 0;
          +            } else if (zeroAxis == false) {
          +                xaxisOffset = min;
          +            } else if (min > 0) {
          +                xaxisOffset = min;
          +            } else {
          +                xaxisOffset = max;
          +            }
          +            this.xaxisOffset = xaxisOffset;
          +
          +            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;
          +
          +            // as we plot zero/min values a single pixel line, we add a pixel to all other
          +            // values - Reduce the effective canvas size to suit
          +            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;
          +
          +            if (min < xaxisOffset) {
          +                yMaxCalc = (stacked && max >= 0) ? stackMax : max;
          +                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;
          +                if (yoffset !== Math.ceil(yoffset)) {
          +                    this.canvasHeightEf -= 2;
          +                    yoffset = Math.ceil(yoffset);
          +                }
          +            } else {
          +                yoffset = this.canvasHeight;
          +            }
          +            this.yoffset = yoffset;
          +
          +            if ($.isArray(options.get('colorMap'))) {
          +                this.colorMapByIndex = options.get('colorMap');
          +                this.colorMapByValue = null;
          +            } else {
          +                this.colorMapByIndex = null;
          +                this.colorMapByValue = options.get('colorMap');
          +                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
          +                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
          +                }
          +            }
          +
          +            this.range = range;
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var result = Math.floor(x / this.totalBarWidth);
          +            return (result < 0 || result >= this.values.length) ? undefined : result;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion,
          +                values = ensureArray(this.values[currentRegion]),
          +                result = [],
          +                value, i;
          +            for (i = values.length; i--;) {
          +                value = values[i];
          +                result.push({
          +                    isNull: value === null,
          +                    value: value,
          +                    color: this.calcColor(i, value, currentRegion),
          +                    offset: currentRegion
          +                });
          +            }
          +            return result;
          +        },
          +
          +        calcColor: function (stacknum, value, valuenum) {
          +            var colorMapByIndex = this.colorMapByIndex,
          +                colorMapByValue = this.colorMapByValue,
          +                options = this.options,
          +                color, newColor;
          +            if (this.stacked) {
          +                color = options.get('stackedBarColor');
          +            } else {
          +                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');
          +            }
          +            if (value === 0 && options.get('zeroColor') !== undefined) {
          +                color = options.get('zeroColor');
          +            }
          +            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
          +                color = newColor;
          +            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
          +                color = colorMapByIndex[valuenum];
          +            }
          +            return $.isArray(color) ? color[stacknum % color.length] : color;
          +        },
          +
          +        /**
          +         * Render bar(s) for a region
          +         */
          +        renderRegion: function (valuenum, highlight) {
          +            var vals = this.values[valuenum],
          +                options = this.options,
          +                xaxisOffset = this.xaxisOffset,
          +                result = [],
          +                range = this.range,
          +                stacked = this.stacked,
          +                target = this.target,
          +                x = valuenum * this.totalBarWidth,
          +                canvasHeightEf = this.canvasHeightEf,
          +                yoffset = this.yoffset,
          +                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;
          +
          +            vals = $.isArray(vals) ? vals : [vals];
          +            valcount = vals.length;
          +            val = vals[0];
          +            isNull = all(null, vals);
          +            allMin = all(xaxisOffset, vals, true);
          +
          +            if (isNull) {
          +                if (options.get('nullColor')) {
          +                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);
          +                    y = (yoffset > 0) ? yoffset - 1 : yoffset;
          +                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);
          +                } else {
          +                    return undefined;
          +                }
          +            }
          +            yoffsetNeg = yoffset;
          +            for (i = 0; i < valcount; i++) {
          +                val = vals[i];
          +
          +                if (stacked && val === xaxisOffset) {
          +                    if (!allMin || minPlotted) {
          +                        continue;
          +                    }
          +                    minPlotted = true;
          +                }
          +
          +                if (range > 0) {
          +                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;
          +                } else {
          +                    height = 1;
          +                }
          +                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {
          +                    y = yoffsetNeg;
          +                    yoffsetNeg += height;
          +                } else {
          +                    y = yoffset - height;
          +                    yoffset -= height;
          +                }
          +                color = this.calcColor(i, val, valuenum);
          +                if (highlight) {
          +                    color = this.calcHighlightColor(color, options);
          +                }
          +                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));
          +            }
          +            if (result.length === 1) {
          +                return result[0];
          +            }
          +            return result;
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-box.js b/public/theme/jquery-sparkline/src/chart-box.js
          new file mode 100644
          index 0000000..8f0eb9f
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-box.js
          @@ -0,0 +1,186 @@
          +    /**
          +     * Box plots
          +     */
          +    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {
          +        type: 'box',
          +
          +        init: function (el, values, options, width, height) {
          +            box._super.init.call(this, el, values, options, width, height);
          +            this.values = $.map(values, Number);
          +            this.width = options.get('width') === 'auto' ? '4.0em' : width;
          +            this.initTarget();
          +            if (!this.values.length) {
          +                this.disabled = 1;
          +            }
          +        },
          +
          +        /**
          +         * Simulate a single region
          +         */
          +        getRegion: function () {
          +            return 1;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var result = [
          +                { field: 'lq', value: this.quartiles[0] },
          +                { field: 'med', value: this.quartiles[1] },
          +                { field: 'uq', value: this.quartiles[2] }
          +            ];
          +            if (this.loutlier !== undefined) {
          +                result.push({ field: 'lo', value: this.loutlier});
          +            }
          +            if (this.routlier !== undefined) {
          +                result.push({ field: 'ro', value: this.routlier});
          +            }
          +            if (this.lwhisker !== undefined) {
          +                result.push({ field: 'lw', value: this.lwhisker});
          +            }
          +            if (this.rwhisker !== undefined) {
          +                result.push({ field: 'rw', value: this.rwhisker});
          +            }
          +            return result;
          +        },
          +
          +        render: function () {
          +            var target = this.target,
          +                values = this.values,
          +                vlen = values.length,
          +                options = this.options,
          +                canvasWidth = this.canvasWidth,
          +                canvasHeight = this.canvasHeight,
          +                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),
          +                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),
          +                canvasLeft = 0,
          +                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,
          +                size, unitSize;
          +
          +            if (!box._super.render.call(this)) {
          +                return;
          +            }
          +
          +            if (options.get('raw')) {
          +                if (options.get('showOutliers') && values.length > 5) {
          +                    loutlier = values[0];
          +                    lwhisker = values[1];
          +                    q1 = values[2];
          +                    q2 = values[3];
          +                    q3 = values[4];
          +                    rwhisker = values[5];
          +                    routlier = values[6];
          +                } else {
          +                    lwhisker = values[0];
          +                    q1 = values[1];
          +                    q2 = values[2];
          +                    q3 = values[3];
          +                    rwhisker = values[4];
          +                }
          +            } else {
          +                values.sort(function (a, b) { return a - b; });
          +                q1 = quartile(values, 1);
          +                q2 = quartile(values, 2);
          +                q3 = quartile(values, 3);
          +                iqr = q3 - q1;
          +                if (options.get('showOutliers')) {
          +                    lwhisker = rwhisker = undefined;
          +                    for (i = 0; i < vlen; i++) {
          +                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {
          +                            lwhisker = values[i];
          +                        }
          +                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {
          +                            rwhisker = values[i];
          +                        }
          +                    }
          +                    loutlier = values[0];
          +                    routlier = values[vlen - 1];
          +                } else {
          +                    lwhisker = values[0];
          +                    rwhisker = values[vlen - 1];
          +                }
          +            }
          +            this.quartiles = [q1, q2, q3];
          +            this.lwhisker = lwhisker;
          +            this.rwhisker = rwhisker;
          +            this.loutlier = loutlier;
          +            this.routlier = routlier;
          +
          +            unitSize = canvasWidth / (maxValue - minValue + 1);
          +            if (options.get('showOutliers')) {
          +                canvasLeft = Math.ceil(options.get('spotRadius'));
          +                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));
          +                unitSize = canvasWidth / (maxValue - minValue + 1);
          +                if (loutlier < lwhisker) {
          +                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,
          +                        canvasHeight / 2,
          +                        options.get('spotRadius'),
          +                        options.get('outlierLineColor'),
          +                        options.get('outlierFillColor')).append();
          +                }
          +                if (routlier > rwhisker) {
          +                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,
          +                        canvasHeight / 2,
          +                        options.get('spotRadius'),
          +                        options.get('outlierLineColor'),
          +                        options.get('outlierFillColor')).append();
          +                }
          +            }
          +
          +            // box
          +            target.drawRect(
          +                Math.round((q1 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.1),
          +                Math.round((q3 - q1) * unitSize),
          +                Math.round(canvasHeight * 0.8),
          +                options.get('boxLineColor'),
          +                options.get('boxFillColor')).append();
          +            // left whisker
          +            target.drawLine(
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                Math.round((q1 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                options.get('lineColor')).append();
          +            target.drawLine(
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 4),
          +                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight - canvasHeight / 4),
          +                options.get('whiskerColor')).append();
          +            // right whisker
          +            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                Math.round((q3 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 2),
          +                options.get('lineColor')).append();
          +            target.drawLine(
          +                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight / 4),
          +                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight - canvasHeight / 4),
          +                options.get('whiskerColor')).append();
          +            // median line
          +            target.drawLine(
          +                Math.round((q2 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.1),
          +                Math.round((q2 - minValue) * unitSize + canvasLeft),
          +                Math.round(canvasHeight * 0.9),
          +                options.get('medianColor')).append();
          +            if (options.get('target')) {
          +                size = Math.ceil(options.get('spotRadius'));
          +                target.drawLine(
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
          +                    Math.round((canvasHeight / 2) - size),
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
          +                    Math.round((canvasHeight / 2) + size),
          +                    options.get('targetColor')).append();
          +                target.drawLine(
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),
          +                    Math.round(canvasHeight / 2),
          +                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),
          +                    Math.round(canvasHeight / 2),
          +                    options.get('targetColor')).append();
          +            }
          +            target.render();
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-bullet.js b/public/theme/jquery-sparkline/src/chart-bullet.js
          new file mode 100644
          index 0000000..8e17fae
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-bullet.js
          @@ -0,0 +1,131 @@
          +    /**
          +     * Bullet charts
          +     */
          +    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {
          +        type: 'bullet',
          +
          +        init: function (el, values, options, width, height) {
          +            var min, max, vals;
          +            bullet._super.init.call(this, el, values, options, width, height);
          +
          +            // values: target, performance, range1, range2, range3
          +            this.values = values = normalizeValues(values);
          +            // target or performance could be null
          +            vals = values.slice();
          +            vals[0] = vals[0] === null ? vals[2] : vals[0];
          +            vals[1] = values[1] === null ? vals[2] : vals[1];
          +            min = Math.min.apply(Math, values);
          +            max = Math.max.apply(Math, values);
          +            if (options.get('base') === undefined) {
          +                min = min < 0 ? min : 0;
          +            } else {
          +                min = options.get('base');
          +            }
          +            this.min = min;
          +            this.max = max;
          +            this.range = max - min;
          +            this.shapes = {};
          +            this.valueShapes = {};
          +            this.regiondata = {};
          +            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;
          +            this.target = this.$el.simpledraw(width, height, options.get('composite'));
          +            if (!values.length) {
          +                this.disabled = true;
          +            }
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var shapeid = this.target.getShapeAt(el, x, y);
          +            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                fieldkey: currentRegion.substr(0, 1),
          +                value: this.values[currentRegion.substr(1)],
          +                region: currentRegion
          +            };
          +        },
          +
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                shapeid = this.valueShapes[currentRegion],
          +                shape;
          +            delete this.shapes[shapeid];
          +            switch (currentRegion.substr(0, 1)) {
          +                case 'r':
          +                    shape = this.renderRange(currentRegion.substr(1), highlight);
          +                    break;
          +                case 'p':
          +                    shape = this.renderPerformance(highlight);
          +                    break;
          +                case 't':
          +                    shape = this.renderTarget(highlight);
          +                    break;
          +            }
          +            this.valueShapes[currentRegion] = shape.id;
          +            this.shapes[shape.id] = currentRegion;
          +            this.target.replaceWithShape(shapeid, shape);
          +        },
          +
          +        renderRange: function (rn, highlight) {
          +            var rangeval = this.values[rn],
          +                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),
          +                color = this.options.get('rangeColors')[rn - 2];
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);
          +        },
          +
          +        renderPerformance: function (highlight) {
          +            var perfval = this.values[1],
          +                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),
          +                color = this.options.get('performanceColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,
          +                Math.round(this.canvasHeight * 0.4) - 1, color, color);
          +        },
          +
          +        renderTarget: function (highlight) {
          +            var targetval = this.values[0],
          +                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),
          +                targettop = Math.round(this.canvasHeight * 0.10),
          +                targetheight = this.canvasHeight - (targettop * 2),
          +                color = this.options.get('targetColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, this.options);
          +            }
          +            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);
          +        },
          +
          +        render: function () {
          +            var vlen = this.values.length,
          +                target = this.target,
          +                i, shape;
          +            if (!bullet._super.render.call(this)) {
          +                return;
          +            }
          +            for (i = 2; i < vlen; i++) {
          +                shape = this.renderRange(i).append();
          +                this.shapes[shape.id] = 'r' + i;
          +                this.valueShapes['r' + i] = shape.id;
          +            }
          +            if (this.values[1] !== null) {
          +                shape = this.renderPerformance().append();
          +                this.shapes[shape.id] = 'p1';
          +                this.valueShapes.p1 = shape.id;
          +            }
          +            if (this.values[0] !== null) {
          +                shape = this.renderTarget().append();
          +                this.shapes[shape.id] = 't0';
          +                this.valueShapes.t0 = shape.id;
          +            }
          +            target.render();
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-discrete.js b/public/theme/jquery-sparkline/src/chart-discrete.js
          new file mode 100644
          index 0000000..5335a14
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-discrete.js
          @@ -0,0 +1,66 @@
          +    /**
          +     * Discrete charts
          +     */
          +    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'discrete',
          +
          +        init: function (el, values, options, width, height) {
          +            discrete._super.init.call(this, el, values, options, width, height);
          +
          +            this.regionShapes = {};
          +            this.values = values = $.map(values, Number);
          +            this.min = Math.min.apply(Math, values);
          +            this.max = Math.max.apply(Math, values);
          +            this.range = this.max - this.min;
          +            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;
          +            this.interval = Math.floor(width / values.length);
          +            this.itemWidth = width / values.length;
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {
          +                this.min = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {
          +                this.max = options.get('chartRangeMax');
          +            }
          +            this.initTarget();
          +            if (this.target) {
          +                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');
          +            }
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            return Math.floor(x / this.itemWidth);
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                offset: currentRegion
          +            };
          +        },
          +
          +        renderRegion: function (valuenum, highlight) {
          +            var values = this.values,
          +                options = this.options,
          +                min = this.min,
          +                max = this.max,
          +                range = this.range,
          +                interval = this.interval,
          +                target = this.target,
          +                canvasHeight = this.canvasHeight,
          +                lineHeight = this.lineHeight,
          +                pheight = canvasHeight - lineHeight,
          +                ytop, val, color, x;
          +
          +            val = clipval(values[valuenum], min, max);
          +            x = valuenum * interval;
          +            ytop = Math.round(pheight - pheight * ((val - min) / range));
          +            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, options);
          +            }
          +            return target.drawLine(x, ytop, x, ytop + lineHeight, color);
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-line.js b/public/theme/jquery-sparkline/src/chart-line.js
          new file mode 100644
          index 0000000..bb1c7ef
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-line.js
          @@ -0,0 +1,350 @@
          +    /**
          +     * Line charts
          +     */
          +    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {
          +        type: 'line',
          +
          +        init: function (el, values, options, width, height) {
          +            line._super.init.call(this, el, values, options, width, height);
          +            this.vertices = [];
          +            this.regionMap = [];
          +            this.xvalues = [];
          +            this.yvalues = [];
          +            this.yminmax = [];
          +            this.hightlightSpotId = null;
          +            this.lastShapeId = null;
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var i,
          +                regionMap = this.regionMap; // maps regions to value positions
          +            for (i = regionMap.length; i--;) {
          +                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {
          +                    return regionMap[i][2];
          +                }
          +            }
          +            return undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.yvalues[currentRegion] === null,
          +                x: this.xvalues[currentRegion],
          +                y: this.yvalues[currentRegion],
          +                color: this.options.get('lineColor'),
          +                fillColor: this.options.get('fillColor'),
          +                offset: currentRegion
          +            };
          +        },
          +
          +        renderHighlight: function () {
          +            var currentRegion = this.currentRegion,
          +                target = this.target,
          +                vertex = this.vertices[currentRegion],
          +                options = this.options,
          +                spotRadius = options.get('spotRadius'),
          +                highlightSpotColor = options.get('highlightSpotColor'),
          +                highlightLineColor = options.get('highlightLineColor'),
          +                highlightSpot, highlightLine;
          +
          +            if (!vertex) {
          +                return;
          +            }
          +            if (spotRadius && highlightSpotColor) {
          +                highlightSpot = target.drawCircle(vertex[0], vertex[1],
          +                    spotRadius, undefined, highlightSpotColor);
          +                this.highlightSpotId = highlightSpot.id;
          +                target.insertAfterShape(this.lastShapeId, highlightSpot);
          +            }
          +            if (highlightLineColor) {
          +                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],
          +                    this.canvasTop + this.canvasHeight, highlightLineColor);
          +                this.highlightLineId = highlightLine.id;
          +                target.insertAfterShape(this.lastShapeId, highlightLine);
          +            }
          +        },
          +
          +        removeHighlight: function () {
          +            var target = this.target;
          +            if (this.highlightSpotId) {
          +                target.removeShapeId(this.highlightSpotId);
          +                this.highlightSpotId = null;
          +            }
          +            if (this.highlightLineId) {
          +                target.removeShapeId(this.highlightLineId);
          +                this.highlightLineId = null;
          +            }
          +        },
          +
          +        scanValues: function () {
          +            var values = this.values,
          +                valcount = values.length,
          +                xvalues = this.xvalues,
          +                yvalues = this.yvalues,
          +                yminmax = this.yminmax,
          +                i, val, isStr, isArray, sp;
          +            for (i = 0; i < valcount; i++) {
          +                val = values[i];
          +                isStr = typeof(values[i]) === 'string';
          +                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;
          +                sp = isStr && values[i].split(':');
          +                if (isStr && sp.length === 2) { // x:y
          +                    xvalues.push(Number(sp[0]));
          +                    yvalues.push(Number(sp[1]));
          +                    yminmax.push(Number(sp[1]));
          +                } else if (isArray) {
          +                    xvalues.push(val[0]);
          +                    yvalues.push(val[1]);
          +                    yminmax.push(val[1]);
          +                } else {
          +                    xvalues.push(i);
          +                    if (values[i] === null || values[i] === 'null') {
          +                        yvalues.push(null);
          +                    } else {
          +                        yvalues.push(Number(val));
          +                        yminmax.push(Number(val));
          +                    }
          +                }
          +            }
          +            if (this.options.get('xvalues')) {
          +                xvalues = this.options.get('xvalues');
          +            }
          +
          +            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);
          +            this.miny = this.minyorg = Math.min.apply(Math, yminmax);
          +
          +            this.maxx = Math.max.apply(Math, xvalues);
          +            this.minx = Math.min.apply(Math, xvalues);
          +
          +            this.xvalues = xvalues;
          +            this.yvalues = yvalues;
          +            this.yminmax = yminmax;
          +
          +        },
          +
          +        processRangeOptions: function () {
          +            var options = this.options,
          +                normalRangeMin = options.get('normalRangeMin'),
          +                normalRangeMax = options.get('normalRangeMax');
          +
          +            if (normalRangeMin !== undefined) {
          +                if (normalRangeMin < this.miny) {
          +                    this.miny = normalRangeMin;
          +                }
          +                if (normalRangeMax > this.maxy) {
          +                    this.maxy = normalRangeMax;
          +                }
          +            }
          +            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {
          +                this.miny = options.get('chartRangeMin');
          +            }
          +            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {
          +                this.maxy = options.get('chartRangeMax');
          +            }
          +            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {
          +                this.minx = options.get('chartRangeMinX');
          +            }
          +            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {
          +                this.maxx = options.get('chartRangeMaxX');
          +            }
          +
          +        },
          +
          +        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {
          +            var normalRangeMin = this.options.get('normalRangeMin'),
          +                normalRangeMax = this.options.get('normalRangeMax'),
          +                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),
          +                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);
          +            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();
          +        },
          +
          +        render: function () {
          +            var options = this.options,
          +                target = this.target,
          +                canvasWidth = this.canvasWidth,
          +                canvasHeight = this.canvasHeight,
          +                vertices = this.vertices,
          +                spotRadius = options.get('spotRadius'),
          +                regionMap = this.regionMap,
          +                rangex, rangey, yvallast,
          +                canvasTop, canvasLeft,
          +                vertex, path, paths, x, y, xnext, xpos, xposnext,
          +                last, next, yvalcount, lineShapes, fillShapes, plen,
          +                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;
          +
          +            if (!line._super.render.call(this)) {
          +                return;
          +            }
          +
          +            this.scanValues();
          +            this.processRangeOptions();
          +
          +            xvalues = this.xvalues;
          +            yvalues = this.yvalues;
          +
          +            if (!this.yminmax.length || this.yvalues.length < 2) {
          +                // empty or all null valuess
          +                return;
          +            }
          +
          +            canvasTop = canvasLeft = 0;
          +
          +            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;
          +            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;
          +            yvallast = this.yvalues.length - 1;
          +
          +            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {
          +                spotRadius = 0;
          +            }
          +            if (spotRadius) {
          +                // adjust the canvas size as required so that spots will fit
          +                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');
          +                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {
          +                    canvasHeight -= Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {
          +                    canvasHeight -= Math.ceil(spotRadius);
          +                    canvasTop += Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled ||
          +                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {
          +                    canvasLeft += Math.ceil(spotRadius);
          +                    canvasWidth -= Math.ceil(spotRadius);
          +                }
          +                if (hlSpotsEnabled || options.get('spotColor') ||
          +                    (options.get('minSpotColor') || options.get('maxSpotColor') &&
          +                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {
          +                    canvasWidth -= Math.ceil(spotRadius);
          +                }
          +            }
          +
          +
          +            canvasHeight--;
          +
          +            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {
          +                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
          +            }
          +
          +            path = [];
          +            paths = [path];
          +            last = next = null;
          +            yvalcount = yvalues.length;
          +            for (i = 0; i < yvalcount; i++) {
          +                x = xvalues[i];
          +                xnext = xvalues[i + 1];
          +                y = yvalues[i];
          +                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));
          +                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;
          +                next = xpos + ((xposnext - xpos) / 2);
          +                regionMap[i] = [last || 0, next, i];
          +                last = next;
          +                if (y === null) {
          +                    if (i) {
          +                        if (yvalues[i - 1] !== null) {
          +                            path = [];
          +                            paths.push(path);
          +                        }
          +                        vertices.push(null);
          +                    }
          +                } else {
          +                    if (y < this.miny) {
          +                        y = this.miny;
          +                    }
          +                    if (y > this.maxy) {
          +                        y = this.maxy;
          +                    }
          +                    if (!path.length) {
          +                        // previous value was null
          +                        path.push([xpos, canvasTop + canvasHeight]);
          +                    }
          +                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];
          +                    path.push(vertex);
          +                    vertices.push(vertex);
          +                }
          +            }
          +
          +            lineShapes = [];
          +            fillShapes = [];
          +            plen = paths.length;
          +            for (i = 0; i < plen; i++) {
          +                path = paths[i];
          +                if (path.length) {
          +                    if (options.get('fillColor')) {
          +                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);
          +                        fillShapes.push(path.slice(0));
          +                        path.pop();
          +                    }
          +                    // if there's only a single point in this path, then we want to display it
          +                    // as a vertical line which means we keep path[0]  as is
          +                    if (path.length > 2) {
          +                        // else we want the first value
          +                        path[0] = [path[0][0], path[1][1]];
          +                    }
          +                    lineShapes.push(path);
          +                }
          +            }
          +
          +            // draw the fill first, then optionally the normal range, then the line on top of that
          +            plen = fillShapes.length;
          +            for (i = 0; i < plen; i++) {
          +                target.drawShape(fillShapes[i],
          +                    options.get('fillColor'), options.get('fillColor')).append();
          +            }
          +
          +            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {
          +                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
          +            }
          +
          +            plen = lineShapes.length;
          +            for (i = 0; i < plen; i++) {
          +                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,
          +                    options.get('lineWidth')).append();
          +            }
          +
          +            if (spotRadius && options.get('valueSpots')) {
          +                valueSpots = options.get('valueSpots');
          +                if (valueSpots.get === undefined) {
          +                    valueSpots = new RangeMap(valueSpots);
          +                }
          +                for (i = 0; i < yvalcount; i++) {
          +                    color = valueSpots.get(yvalues[i]);
          +                    if (color) {
          +                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),
          +                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),
          +                            spotRadius, undefined,
          +                            color).append();
          +                    }
          +                }
          +
          +            }
          +            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {
          +                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),
          +                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),
          +                    spotRadius, undefined,
          +                    options.get('spotColor')).append();
          +            }
          +            if (this.maxy !== this.minyorg) {
          +                if (spotRadius && options.get('minSpotColor')) {
          +                    x = xvalues[$.inArray(this.minyorg, yvalues)];
          +                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
          +                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),
          +                        spotRadius, undefined,
          +                        options.get('minSpotColor')).append();
          +                }
          +                if (spotRadius && options.get('maxSpotColor')) {
          +                    x = xvalues[$.inArray(this.maxyorg, yvalues)];
          +                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
          +                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),
          +                        spotRadius, undefined,
          +                        options.get('maxSpotColor')).append();
          +                }
          +            }
          +
          +            this.lastShapeId = target.getLastShapeId();
          +            this.canvasTop = canvasTop;
          +            target.render();
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-pie.js b/public/theme/jquery-sparkline/src/chart-pie.js
          new file mode 100644
          index 0000000..c04beca
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-pie.js
          @@ -0,0 +1,112 @@
          +    /**
          +     * Pie charts
          +     */
          +    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {
          +        type: 'pie',
          +
          +        init: function (el, values, options, width, height) {
          +            var total = 0, i;
          +
          +            pie._super.init.call(this, el, values, options, width, height);
          +
          +            this.shapes = {}; // map shape ids to value offsets
          +            this.valueShapes = {}; // maps value offsets to shape ids
          +            this.values = values = $.map(values, Number);
          +
          +            if (options.get('width') === 'auto') {
          +                this.width = this.height;
          +            }
          +
          +            if (values.length > 0) {
          +                for (i = values.length; i--;) {
          +                    total += values[i];
          +                }
          +            }
          +            this.total = total;
          +            this.initTarget();
          +            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            var shapeid = this.target.getShapeAt(el, x, y);
          +            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                percent: this.values[currentRegion] / this.total * 100,
          +                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],
          +                offset: currentRegion
          +            };
          +        },
          +
          +        changeHighlight: function (highlight) {
          +            var currentRegion = this.currentRegion,
          +                 newslice = this.renderSlice(currentRegion, highlight),
          +                 shapeid = this.valueShapes[currentRegion];
          +            delete this.shapes[shapeid];
          +            this.target.replaceWithShape(shapeid, newslice);
          +            this.valueShapes[currentRegion] = newslice.id;
          +            this.shapes[newslice.id] = currentRegion;
          +        },
          +
          +        renderSlice: function (valuenum, highlight) {
          +            var target = this.target,
          +                options = this.options,
          +                radius = this.radius,
          +                borderWidth = options.get('borderWidth'),
          +                offset = options.get('offset'),
          +                circle = 2 * Math.PI,
          +                values = this.values,
          +                total = this.total,
          +                next = offset ? (2*Math.PI)*(offset/360) : 0,
          +                start, end, i, vlen, color;
          +
          +            vlen = values.length;
          +            for (i = 0; i < vlen; i++) {
          +                start = next;
          +                end = next;
          +                if (total > 0) {  // avoid divide by zero
          +                    end = next + (circle * (values[i] / total));
          +                }
          +                if (valuenum === i) {
          +                    color = options.get('sliceColors')[i % options.get('sliceColors').length];
          +                    if (highlight) {
          +                        color = this.calcHighlightColor(color, options);
          +                    }
          +
          +                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);
          +                }
          +                next = end;
          +            }
          +        },
          +
          +        render: function () {
          +            var target = this.target,
          +                values = this.values,
          +                options = this.options,
          +                radius = this.radius,
          +                borderWidth = options.get('borderWidth'),
          +                shape, i;
          +
          +            if (!pie._super.render.call(this)) {
          +                return;
          +            }
          +            if (borderWidth) {
          +                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),
          +                    options.get('borderColor'), undefined, borderWidth).append();
          +            }
          +            for (i = values.length; i--;) {
          +                if (values[i]) { // don't render zero values
          +                    shape = this.renderSlice(i).append();
          +                    this.valueShapes[i] = shape.id; // store just the shapeid
          +                    this.shapes[shape.id] = i;
          +                }
          +            }
          +            target.render();
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/chart-tristate.js b/public/theme/jquery-sparkline/src/chart-tristate.js
          new file mode 100644
          index 0000000..6b2771b
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/chart-tristate.js
          @@ -0,0 +1,98 @@
          +    /**
          +     * Tristate charts
          +     */
          +    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {
          +        type: 'tristate',
          +
          +        init: function (el, values, options, width, height) {
          +            var barWidth = parseInt(options.get('barWidth'), 10),
          +                barSpacing = parseInt(options.get('barSpacing'), 10);
          +            tristate._super.init.call(this, el, values, options, width, height);
          +
          +            this.regionShapes = {};
          +            this.barWidth = barWidth;
          +            this.barSpacing = barSpacing;
          +            this.totalBarWidth = barWidth + barSpacing;
          +            this.values = $.map(values, Number);
          +            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
          +
          +            if ($.isArray(options.get('colorMap'))) {
          +                this.colorMapByIndex = options.get('colorMap');
          +                this.colorMapByValue = null;
          +            } else {
          +                this.colorMapByIndex = null;
          +                this.colorMapByValue = options.get('colorMap');
          +                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
          +                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
          +                }
          +            }
          +            this.initTarget();
          +        },
          +
          +        getRegion: function (el, x, y) {
          +            return Math.floor(x / this.totalBarWidth);
          +        },
          +
          +        getCurrentRegionFields: function () {
          +            var currentRegion = this.currentRegion;
          +            return {
          +                isNull: this.values[currentRegion] === undefined,
          +                value: this.values[currentRegion],
          +                color: this.calcColor(this.values[currentRegion], currentRegion),
          +                offset: currentRegion
          +            };
          +        },
          +
          +        calcColor: function (value, valuenum) {
          +            var values = this.values,
          +                options = this.options,
          +                colorMapByIndex = this.colorMapByIndex,
          +                colorMapByValue = this.colorMapByValue,
          +                color, newColor;
          +
          +            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
          +                color = newColor;
          +            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
          +                color = colorMapByIndex[valuenum];
          +            } else if (values[valuenum] < 0) {
          +                color = options.get('negBarColor');
          +            } else if (values[valuenum] > 0) {
          +                color = options.get('posBarColor');
          +            } else {
          +                color = options.get('zeroBarColor');
          +            }
          +            return color;
          +        },
          +
          +        renderRegion: function (valuenum, highlight) {
          +            var values = this.values,
          +                options = this.options,
          +                target = this.target,
          +                canvasHeight, height, halfHeight,
          +                x, y, color;
          +
          +            canvasHeight = target.pixelHeight;
          +            halfHeight = Math.round(canvasHeight / 2);
          +
          +            x = valuenum * this.totalBarWidth;
          +            if (values[valuenum] < 0) {
          +                y = halfHeight;
          +                height = halfHeight - 1;
          +            } else if (values[valuenum] > 0) {
          +                y = 0;
          +                height = halfHeight - 1;
          +            } else {
          +                y = halfHeight - 1;
          +                height = 2;
          +            }
          +            color = this.calcColor(values[valuenum], valuenum);
          +            if (color === null) {
          +                return;
          +            }
          +            if (highlight) {
          +                color = this.calcHighlightColor(color, options);
          +            }
          +            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/defaults.js b/public/theme/jquery-sparkline/src/defaults.js
          new file mode 100644
          index 0000000..d3848a2
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/defaults.js
          @@ -0,0 +1,156 @@
          +    /**
          +     * Default configuration settings
          +     */
          +    getDefaults = function () {
          +        return {
          +            // Settings common to most/all chart types
          +            common: {
          +                type: 'line',
          +                lineColor: '#00f',
          +                fillColor: '#cdf',
          +                defaultPixelsPerValue: 3,
          +                width: 'auto',
          +                height: 'auto',
          +                composite: false,
          +                tagValuesAttribute: 'values',
          +                tagOptionsPrefix: 'spark',
          +                enableTagOptions: false,
          +                enableHighlight: true,
          +                highlightLighten: 1.4,
          +                tooltipSkipNull: true,
          +                tooltipPrefix: '',
          +                tooltipSuffix: '',
          +                disableHiddenCheck: false,
          +                numberFormatter: false,
          +                numberDigitGroupCount: 3,
          +                numberDigitGroupSep: ',',
          +                numberDecimalMark: '.',
          +                disableTooltips: false,
          +                disableInteraction: false
          +            },
          +            // Defaults for line charts
          +            line: {
          +                spotColor: '#f80',
          +                highlightSpotColor: '#5f5',
          +                highlightLineColor: '#f22',
          +                spotRadius: 1.5,
          +                minSpotColor: '#f80',
          +                maxSpotColor: '#f80',
          +                lineWidth: 1,
          +                normalRangeMin: undefined,
          +                normalRangeMax: undefined,
          +                normalRangeColor: '#ccc',
          +                drawNormalOnTop: false,
          +                chartRangeMin: undefined,
          +                chartRangeMax: undefined,
          +                chartRangeMinX: undefined,
          +                chartRangeMaxX: undefined,
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')
          +            },
          +            // Defaults for bar charts
          +            bar: {
          +                barColor: '#3366cc',
          +                negBarColor: '#f44',
          +                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
          +                    '#dd4477', '#0099c6', '#990099'],
          +                zeroColor: undefined,
          +                nullColor: undefined,
          +                zeroAxis: true,
          +                barWidth: 4,
          +                barSpacing: 1,
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                chartRangeClip: false,
          +                colorMap: undefined,
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')
          +            },
          +            // Defaults for tristate charts
          +            tristate: {
          +                barWidth: 4,
          +                barSpacing: 1,
          +                posBarColor: '#6f6',
          +                negBarColor: '#f44',
          +                zeroBarColor: '#999',
          +                colorMap: {},
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),
          +                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }
          +            },
          +            // Defaults for discrete charts
          +            discrete: {
          +                lineHeight: 'auto',
          +                thresholdColor: undefined,
          +                thresholdValue: 0,
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                chartRangeClip: false,
          +                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')
          +            },
          +            // Defaults for bullet charts
          +            bullet: {
          +                targetColor: '#f33',
          +                targetWidth: 3, // width of the target bar in pixels
          +                performanceColor: '#33f',
          +                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],
          +                base: undefined, // set this to a number to change the base start number
          +                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),
          +                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }
          +            },
          +            // Defaults for pie charts
          +            pie: {
          +                offset: 0,
          +                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
          +                    '#dd4477', '#0099c6', '#990099'],
          +                borderWidth: 0,
          +                borderColor: '#000',
          +                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')
          +            },
          +            // Defaults for box plots
          +            box: {
          +                raw: false,
          +                boxLineColor: '#000',
          +                boxFillColor: '#cdf',
          +                whiskerColor: '#000',
          +                outlierLineColor: '#333',
          +                outlierFillColor: '#fff',
          +                medianColor: '#f00',
          +                showOutliers: true,
          +                outlierIQR: 1.5,
          +                spotRadius: 1.5,
          +                target: undefined,
          +                targetColor: '#4a2',
          +                chartRangeMax: undefined,
          +                chartRangeMin: undefined,
          +                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),
          +                tooltipFormatFieldlistKey: 'field',
          +                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',
          +                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',
          +                    lw: 'Left Whisker', rw: 'Right Whisker'} }
          +            }
          +        };
          +    };
          +
          +    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname
          +    defaultStyles = '.jqstooltip { ' +
          +            'position: absolute;' +
          +            'left: 0px;' +
          +            'top: 0px;' +
          +            'visibility: hidden;' +
          +            'background: rgb(0, 0, 0) transparent;' +
          +            'background-color: rgba(0,0,0,0.6);' +
          +            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +
          +            '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' +
          +            'color: white;' +
          +            'font: 10px arial, san serif;' +
          +            'text-align: left;' +
          +            'white-space: nowrap;' +
          +            'padding: 5px;' +
          +            'border: 1px solid white;' +
          +            'box-sizing: content-box;' +
          +            'z-index: 10000;' +
          +            '}' +
          +            '.jqsfield { ' +
          +            'color: white;' +
          +            'font: 10px arial, san serif;' +
          +            'text-align: left;' +
          +            '}';
          +
          diff --git a/public/theme/jquery-sparkline/src/footer.js b/public/theme/jquery-sparkline/src/footer.js
          new file mode 100644
          index 0000000..6780cba
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/footer.js
          @@ -0,0 +1 @@
          +}))}(document, Math));
          diff --git a/public/theme/jquery-sparkline/src/header.js b/public/theme/jquery-sparkline/src/header.js
          new file mode 100644
          index 0000000..b6c8aa9
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/header.js
          @@ -0,0 +1,222 @@
          +/**
          +*
          +* jquery.sparkline.js
          +*
          +* v@VERSION@
          +* (c) Splunk, Inc
          +* Contact: Gareth Watts (gareth@splunk.com)
          +* http://omnipotent.net/jquery.sparkline/
          +*
          +* Generates inline sparkline charts from data supplied either to the method
          +* or inline in HTML
          +*
          +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag
          +* (Firefox 2.0+, Safari, Opera, etc)
          +*
          +* License: New BSD License
          +*
          +* Copyright (c) 2012, Splunk Inc.
          +* All rights reserved.
          +*
          +* Redistribution and use in source and binary forms, with or without modification,
          +* are permitted provided that the following conditions are met:
          +*
          +*     * Redistributions of source code must retain the above copyright notice,
          +*       this list of conditions and the following disclaimer.
          +*     * Redistributions in binary form must reproduce the above copyright notice,
          +*       this list of conditions and the following disclaimer in the documentation
          +*       and/or other materials provided with the distribution.
          +*     * Neither the name of Splunk Inc nor the names of its contributors may
          +*       be used to endorse or promote products derived from this software without
          +*       specific prior written permission.
          +*
          +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
          +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
          +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
          +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
          +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
          +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
          +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
          +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
          +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
          +*
          +*
          +* Usage:
          +*  $(selector).sparkline(values, options)
          +*
          +* If values is undefined or set to 'html' then the data values are read from the specified tag:
          +*   <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p>
          +*   $('.sparkline').sparkline();
          +* There must be no spaces in the enclosed data set
          +*
          +* Otherwise values must be an array of numbers or null values
          +*    <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p>
          +*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])
          +*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])
          +*
          +* Values can also be specified in an HTML comment, or as a values attribute:
          +*    <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p>
          +*    <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p>
          +*    $('.sparkline').sparkline();
          +*
          +* For line charts, x values can also be specified:
          +*   <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>
          +*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])
          +*
          +* By default, options should be passed in as the second argument to the sparkline function:
          +*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})
          +*
          +* Options can also be set by passing them on the tag itself.  This feature is disabled by default though
          +* as there's a slight performance overhead:
          +*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})
          +*   <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p>
          +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionsPrefix)
          +*
          +* Supported options:
          +*   lineColor - Color of the line used for the chart
          +*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart
          +*   width - Width of the chart - Defaults to 3 times the number of values in pixels
          +*   height - Height of the chart - Defaults to the height of the containing element
          +*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied
          +*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied
          +*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax
          +*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied
          +*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied
          +*   composite - If true then don't erase any existing chart attached to the tag, but draw
          +*           another chart over the top - Note that width and height are ignored if an
          +*           existing chart is detected.
          +*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'
          +*   enableTagOptions - Whether to check tags for sparkline options
          +*   tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'
          +*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a
          +*           hidden dom element, avoding a browser reflow
          +*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,
          +*       making the plugin perform much like it did in 1.x
          +*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)
          +*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled
          +*       defaults to false (highlights enabled)
          +*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase
          +*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body
          +*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied
          +*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis
          +*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis
          +*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip
          +*       callback is given arguments of (sparkline, options, fields)
          +*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title
          +*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)
          +*       to control the format of the tooltip
          +*   tooltipPrefix - A string to prepend to each field displayed in a tooltip
          +*   tooltipSuffix - A string to append to each field displayed in a tooltip
          +*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)
          +*   tooltipValueLookups - An object or range map to map field values to tooltip strings
          +*       (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win")
          +*   numberFormatter - Optional callback for formatting numbers in tooltips
          +*   numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to ","
          +*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "."
          +*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3
          +*
          +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default),
          +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'
          +*    line - Line chart.  Options:
          +*       spotColor - Set to '' to not end each line in a circular spot
          +*       minSpotColor - If set, color of spot at minimum value
          +*       maxSpotColor - If set, color of spot at maximum value
          +*       spotRadius - Radius in pixels
          +*       lineWidth - Width of line in pixels
          +*       normalRangeMin
          +*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal"
          +*                      or expected range of values
          +*       normalRangeColor - Color to use for the above bar
          +*       drawNormalOnTop - Draw the normal range above the chart fill color if true
          +*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart
          +*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable
          +*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable
          +*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map
          +*
          +*   bar - Bar chart.  Options:
          +*       barColor - Color of bars for postive values
          +*       negBarColor - Color of bars for negative values
          +*       zeroColor - Color of bars with zero values
          +*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely
          +*       barWidth - Width of bars in pixels
          +*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
          +*                  can be an Array of values to control the color of individual bars or a range map
          +*                  to specify colors for individual ranges of values
          +*       barSpacing - Gap between bars in pixels
          +*       zeroAxis - Centers the y-axis around zero if true
          +*
          +*   tristate - Charts values of win (>0), lose (<0) or draw (=0)
          +*       posBarColor - Color of win values
          +*       negBarColor - Color of lose values
          +*       zeroBarColor - Color of draw values
          +*       barWidth - Width of bars in pixels
          +*       barSpacing - Gap between bars in pixels
          +*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
          +*                  can be an Array of values to control the color of individual bars or a range map
          +*                  to specify colors for individual ranges of values
          +*
          +*   discrete - Options:
          +*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height
          +*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor
          +*       thresholdColor
          +*
          +*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...
          +*       options:
          +*       targetColor - The color of the vertical target marker
          +*       targetWidth - The width of the target marker in pixels
          +*       performanceColor - The color of the performance measure horizontal bar
          +*       rangeColors - Colors to use for each qualitative range background color
          +*
          +*   pie - Pie chart. Options:
          +*       sliceColors - An array of colors to use for pie slices
          +*       offset - Angle in degrees to offset the first slice - Try -90 or +90
          +*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)
          +*       borderColor - Color to use for the pie chart border - Defaults to #000
          +*
          +*   box - Box plot. Options:
          +*       raw - Set to true to supply pre-computed plot points as values
          +*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier
          +*             When set to false you can supply any number of values and the box plot will
          +*             be computed for you.  Default is false.
          +*       showOutliers - Set to true (default) to display outliers as circles
          +*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5
          +*       boxLineColor - Outline color of the box
          +*       boxFillColor - Fill color for the box
          +*       whiskerColor - Line color used for whiskers
          +*       outlierLineColor - Outline color of outlier circles
          +*       outlierFillColor - Fill color of the outlier circles
          +*       spotRadius - Radius of outlier circles
          +*       medianColor - Line color of the median line
          +*       target - Draw a target cross hair at the supplied value (default undefined)
          +*
          +*
          +*
          +*   Examples:
          +*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });
          +*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });
          +*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):
          +*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });
          +*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });
          +*   $('#pie').sparkline([1,1,2], { type:'pie' });
          +*/
          +
          +/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */
          +
          +(function(document, Math, undefined) { // performance/minified-size optimization
          +(function(factory) {
          +    if(typeof define === 'function' && define.amd) {
          +        define(['jquery'], factory);
          +    } else if (jQuery && !jQuery.fn.sparkline) {
          +        factory(jQuery);
          +    }
          +}
          +(function($) {
          +    'use strict';
          +
          +    var UNSET_OPTION = {},
          +        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,
          +        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,
          +        MouseHandler, Tooltip, barHighlightMixin,
          +        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,
          +        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;
          +
          diff --git a/public/theme/jquery-sparkline/src/interact.js b/public/theme/jquery-sparkline/src/interact.js
          new file mode 100644
          index 0000000..25b338f
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/interact.js
          @@ -0,0 +1,247 @@
          +    MouseHandler = createClass({
          +        init: function (el, options) {
          +            var $el = $(el);
          +            this.$el = $el;
          +            this.options = options;
          +            this.currentPageX = 0;
          +            this.currentPageY = 0;
          +            this.el = el;
          +            this.splist = [];
          +            this.tooltip = null;
          +            this.over = false;
          +            this.displayTooltips = !options.get('disableTooltips');
          +            this.highlightEnabled = !options.get('disableHighlight');
          +        },
          +
          +        registerSparkline: function (sp) {
          +            this.splist.push(sp);
          +            if (this.over) {
          +                this.updateDisplay();
          +            }
          +        },
          +
          +        registerCanvas: function (canvas) {
          +            var $canvas = $(canvas.canvas);
          +            this.canvas = canvas;
          +            this.$canvas = $canvas;
          +            $canvas.mouseenter($.proxy(this.mouseenter, this));
          +            $canvas.mouseleave($.proxy(this.mouseleave, this));
          +            $canvas.click($.proxy(this.mouseclick, this));
          +        },
          +
          +        reset: function (removeTooltip) {
          +            this.splist = [];
          +            if (this.tooltip && removeTooltip) {
          +                this.tooltip.remove();
          +                this.tooltip = undefined;
          +            }
          +        },
          +
          +        mouseclick: function (e) {
          +            var clickEvent = $.Event('sparklineClick');
          +            clickEvent.originalEvent = e;
          +            clickEvent.sparklines = this.splist;
          +            this.$el.trigger(clickEvent);
          +        },
          +
          +        mouseenter: function (e) {
          +            $(document.body).unbind('mousemove.jqs');
          +            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));
          +            this.over = true;
          +            this.currentPageX = e.pageX;
          +            this.currentPageY = e.pageY;
          +            this.currentEl = e.target;
          +            if (!this.tooltip && this.displayTooltips) {
          +                this.tooltip = new Tooltip(this.options);
          +                this.tooltip.updatePosition(e.pageX, e.pageY);
          +            }
          +            this.updateDisplay();
          +        },
          +
          +        mouseleave: function () {
          +            $(document.body).unbind('mousemove.jqs');
          +            var splist = this.splist,
          +                 spcount = splist.length,
          +                 needsRefresh = false,
          +                 sp, i;
          +            this.over = false;
          +            this.currentEl = null;
          +
          +            if (this.tooltip) {
          +                this.tooltip.remove();
          +                this.tooltip = null;
          +            }
          +
          +            for (i = 0; i < spcount; i++) {
          +                sp = splist[i];
          +                if (sp.clearRegionHighlight()) {
          +                    needsRefresh = true;
          +                }
          +            }
          +
          +            if (needsRefresh) {
          +                this.canvas.render();
          +            }
          +        },
          +
          +        mousemove: function (e) {
          +            this.currentPageX = e.pageX;
          +            this.currentPageY = e.pageY;
          +            this.currentEl = e.target;
          +            if (this.tooltip) {
          +                this.tooltip.updatePosition(e.pageX, e.pageY);
          +            }
          +            this.updateDisplay();
          +        },
          +
          +        updateDisplay: function () {
          +            var splist = this.splist,
          +                 spcount = splist.length,
          +                 needsRefresh = false,
          +                 offset = this.$canvas.offset(),
          +                 localX = this.currentPageX - offset.left,
          +                 localY = this.currentPageY - offset.top,
          +                 tooltiphtml, sp, i, result, changeEvent;
          +            if (!this.over) {
          +                return;
          +            }
          +            for (i = 0; i < spcount; i++) {
          +                sp = splist[i];
          +                result = sp.setRegionHighlight(this.currentEl, localX, localY);
          +                if (result) {
          +                    needsRefresh = true;
          +                }
          +            }
          +            if (needsRefresh) {
          +                changeEvent = $.Event('sparklineRegionChange');
          +                changeEvent.sparklines = this.splist;
          +                this.$el.trigger(changeEvent);
          +                if (this.tooltip) {
          +                    tooltiphtml = '';
          +                    for (i = 0; i < spcount; i++) {
          +                        sp = splist[i];
          +                        tooltiphtml += sp.getCurrentRegionTooltip();
          +                    }
          +                    this.tooltip.setContent(tooltiphtml);
          +                }
          +                if (!this.disableHighlight) {
          +                    this.canvas.render();
          +                }
          +            }
          +            if (result === null) {
          +                this.mouseleave();
          +            }
          +        }
          +    });
          +
          +
          +    Tooltip = createClass({
          +        sizeStyle: 'position: static !important;' +
          +            'display: block !important;' +
          +            'visibility: hidden !important;' +
          +            'float: left !important;',
          +
          +        init: function (options) {
          +            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),
          +                sizetipStyle = this.sizeStyle,
          +                offset;
          +            this.container = options.get('tooltipContainer') || document.body;
          +            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);
          +            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);
          +            // remove any previous lingering tooltip
          +            $('#jqssizetip').remove();
          +            $('#jqstooltip').remove();
          +            this.sizetip = $('<div/>', {
          +                id: 'jqssizetip',
          +                style: sizetipStyle,
          +                'class': tooltipClassname
          +            });
          +            this.tooltip = $('<div/>', {
          +                id: 'jqstooltip',
          +                'class': tooltipClassname
          +            }).appendTo(this.container);
          +            // account for the container's location
          +            offset = this.tooltip.offset();
          +            this.offsetLeft = offset.left;
          +            this.offsetTop = offset.top;
          +            this.hidden = true;
          +            $(window).unbind('resize.jqs scroll.jqs');
          +            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));
          +            this.updateWindowDims();
          +        },
          +
          +        updateWindowDims: function () {
          +            this.scrollTop = $(window).scrollTop();
          +            this.scrollLeft = $(window).scrollLeft();
          +            this.scrollRight = this.scrollLeft + $(window).width();
          +            this.updatePosition();
          +        },
          +
          +        getSize: function (content) {
          +            this.sizetip.html(content).appendTo(this.container);
          +            this.width = this.sizetip.width() + 1;
          +            this.height = this.sizetip.height();
          +            this.sizetip.remove();
          +        },
          +
          +        setContent: function (content) {
          +            if (!content) {
          +                this.tooltip.css('visibility', 'hidden');
          +                this.hidden = true;
          +                return;
          +            }
          +            this.getSize(content);
          +            this.tooltip.html(content)
          +                .css({
          +                    'width': this.width,
          +                    'height': this.height,
          +                    'visibility': 'visible'
          +                });
          +            if (this.hidden) {
          +                this.hidden = false;
          +                this.updatePosition();
          +            }
          +        },
          +
          +        updatePosition: function (x, y) {
          +            if (x === undefined) {
          +                if (this.mousex === undefined) {
          +                    return;
          +                }
          +                x = this.mousex - this.offsetLeft;
          +                y = this.mousey - this.offsetTop;
          +
          +            } else {
          +                this.mousex = x = x - this.offsetLeft;
          +                this.mousey = y = y - this.offsetTop;
          +            }
          +            if (!this.height || !this.width || this.hidden) {
          +                return;
          +            }
          +
          +            y -= this.height + this.tooltipOffsetY;
          +            x += this.tooltipOffsetX;
          +
          +            if (y < this.scrollTop) {
          +                y = this.scrollTop;
          +            }
          +            if (x < this.scrollLeft) {
          +                x = this.scrollLeft;
          +            } else if (x + this.width > this.scrollRight) {
          +                x = this.scrollRight - this.width;
          +            }
          +
          +            this.tooltip.css({
          +                'left': x,
          +                'top': y
          +            });
          +        },
          +
          +        remove: function () {
          +            this.tooltip.remove();
          +            this.sizetip.remove();
          +            this.sizetip = this.tooltip = undefined;
          +            $(window).unbind('resize.jqs scroll.jqs');
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/rangemap.js b/public/theme/jquery-sparkline/src/rangemap.js
          new file mode 100644
          index 0000000..9aaf3bb
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/rangemap.js
          @@ -0,0 +1,39 @@
          +    $.RangeMapClass = RangeMap = createClass({
          +        init: function (map) {
          +            var key, range, rangelist = [];
          +            for (key in map) {
          +                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {
          +                    range = key.split(':');
          +                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);
          +                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);
          +                    range[2] = map[key];
          +                    rangelist.push(range);
          +                }
          +            }
          +            this.map = map;
          +            this.rangelist = rangelist || false;
          +        },
          +
          +        get: function (value) {
          +            var rangelist = this.rangelist,
          +                i, range, result;
          +            if ((result = this.map[value]) !== undefined) {
          +                return result;
          +            }
          +            if (rangelist) {
          +                for (i = rangelist.length; i--;) {
          +                    range = rangelist[i];
          +                    if (range[0] <= value && range[1] >= value) {
          +                        return range[2];
          +                    }
          +                }
          +            }
          +            return undefined;
          +        }
          +    });
          +
          +    // Convenience function
          +    $.range_map = function(map) {
          +        return new RangeMap(map);
          +    };
          +
          diff --git a/public/theme/jquery-sparkline/src/simpledraw.js b/public/theme/jquery-sparkline/src/simpledraw.js
          new file mode 100644
          index 0000000..3983e56
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/simpledraw.js
          @@ -0,0 +1,55 @@
          +    // Provide a cross-browser interface to a few simple drawing primitives
          +    $.fn.simpledraw = function (width, height, useExisting, interact) {
          +        var target, mhandler;
          +        if (useExisting && (target = this.data('_jqs_vcanvas'))) {
          +            return target;
          +        }
          +
          +        if ($.fn.sparkline.canvas === false) {
          +            // We've already determined that neither Canvas nor VML are available
          +            return false;
          +
          +        } else if ($.fn.sparkline.canvas === undefined) {
          +            // No function defined yet -- need to see if we support Canvas or VML
          +            var el = document.createElement('canvas');
          +            if (!!(el.getContext && el.getContext('2d'))) {
          +                // Canvas is available
          +                $.fn.sparkline.canvas = function(width, height, target, interact) {
          +                    return new VCanvas_canvas(width, height, target, interact);
          +                };
          +            } else if (document.namespaces && !document.namespaces.v) {
          +                // VML is available
          +                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');
          +                $.fn.sparkline.canvas = function(width, height, target, interact) {
          +                    return new VCanvas_vml(width, height, target);
          +                };
          +            } else {
          +                // Neither Canvas nor VML are available
          +                $.fn.sparkline.canvas = false;
          +                return false;
          +            }
          +        }
          +
          +        if (width === undefined) {
          +            width = $(this).innerWidth();
          +        }
          +        if (height === undefined) {
          +            height = $(this).innerHeight();
          +        }
          +
          +        target = $.fn.sparkline.canvas(width, height, this, interact);
          +
          +        mhandler = $(this).data('_jqs_mhandler');
          +        if (mhandler) {
          +            mhandler.registerCanvas(target);
          +        }
          +        return target;
          +    };
          +
          +    $.fn.cleardraw = function () {
          +        var target = this.data('_jqs_vcanvas');
          +        if (target) {
          +            target.reset();
          +        }
          +    };
          +
          diff --git a/public/theme/jquery-sparkline/src/utils.js b/public/theme/jquery-sparkline/src/utils.js
          new file mode 100644
          index 0000000..6a18711
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/utils.js
          @@ -0,0 +1,224 @@
          +    /**
          +     * Utilities
          +     */
          +
          +    createClass = function (/* [baseclass, [mixin, ...]], definition */) {
          +        var Class, args;
          +        Class = function () {
          +            this.init.apply(this, arguments);
          +        };
          +        if (arguments.length > 1) {
          +            if (arguments[0]) {
          +                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);
          +                Class._super = arguments[0].prototype;
          +            } else {
          +                Class.prototype = arguments[arguments.length - 1];
          +            }
          +            if (arguments.length > 2) {
          +                args = Array.prototype.slice.call(arguments, 1, -1);
          +                args.unshift(Class.prototype);
          +                $.extend.apply($, args);
          +            }
          +        } else {
          +            Class.prototype = arguments[0];
          +        }
          +        Class.prototype.cls = Class;
          +        return Class;
          +    };
          +
          +    /**
          +     * Wraps a format string for tooltips
          +     * {{x}}
          +     * {{x.2}
          +     * {{x:months}}
          +     */
          +    $.SPFormatClass = SPFormat = createClass({
          +        fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g,
          +        precre: /(\w+)\.(\d+)/,
          +
          +        init: function (format, fclass) {
          +            this.format = format;
          +            this.fclass = fclass;
          +        },
          +
          +        render: function (fieldset, lookups, options) {
          +            var self = this,
          +                fields = fieldset,
          +                match, token, lookupkey, fieldvalue, prec;
          +            return this.format.replace(this.fre, function () {
          +                var lookup;
          +                token = arguments[1];
          +                lookupkey = arguments[3];
          +                match = self.precre.exec(token);
          +                if (match) {
          +                    prec = match[2];
          +                    token = match[1];
          +                } else {
          +                    prec = false;
          +                }
          +                fieldvalue = fields[token];
          +                if (fieldvalue === undefined) {
          +                    return '';
          +                }
          +                if (lookupkey && lookups && lookups[lookupkey]) {
          +                    lookup = lookups[lookupkey];
          +                    if (lookup.get) { // RangeMap
          +                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;
          +                    } else {
          +                        return lookups[lookupkey][fieldvalue] || fieldvalue;
          +                    }
          +                }
          +                if (isNumber(fieldvalue)) {
          +                    if (options.get('numberFormatter')) {
          +                        fieldvalue = options.get('numberFormatter')(fieldvalue);
          +                    } else {
          +                        fieldvalue = formatNumber(fieldvalue, prec,
          +                            options.get('numberDigitGroupCount'),
          +                            options.get('numberDigitGroupSep'),
          +                            options.get('numberDecimalMark'));
          +                    }
          +                }
          +                return fieldvalue;
          +            });
          +        }
          +    });
          +
          +    // convience method to avoid needing the new operator
          +    $.spformat = function(format, fclass) {
          +        return new SPFormat(format, fclass);
          +    };
          +
          +    clipval = function (val, min, max) {
          +        if (val < min) {
          +            return min;
          +        }
          +        if (val > max) {
          +            return max;
          +        }
          +        return val;
          +    };
          +
          +    quartile = function (values, q) {
          +        var vl;
          +        if (q === 2) {
          +            vl = Math.floor(values.length / 2);
          +            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;
          +        } else {
          +            if (values.length % 2 ) { // odd
          +                vl = (values.length * q + q) / 4;
          +                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];
          +            } else { //even
          +                vl = (values.length * q + 2) / 4;
          +                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];
          +
          +            }
          +        }
          +    };
          +
          +    normalizeValue = function (val) {
          +        var nf;
          +        switch (val) {
          +            case 'undefined':
          +                val = undefined;
          +                break;
          +            case 'null':
          +                val = null;
          +                break;
          +            case 'true':
          +                val = true;
          +                break;
          +            case 'false':
          +                val = false;
          +                break;
          +            default:
          +                nf = parseFloat(val);
          +                if (val == nf) {
          +                    val = nf;
          +                }
          +        }
          +        return val;
          +    };
          +
          +    normalizeValues = function (vals) {
          +        var i, result = [];
          +        for (i = vals.length; i--;) {
          +            result[i] = normalizeValue(vals[i]);
          +        }
          +        return result;
          +    };
          +
          +    remove = function (vals, filter) {
          +        var i, vl, result = [];
          +        for (i = 0, vl = vals.length; i < vl; i++) {
          +            if (vals[i] !== filter) {
          +                result.push(vals[i]);
          +            }
          +        }
          +        return result;
          +    };
          +
          +    isNumber = function (num) {
          +        return !isNaN(parseFloat(num)) && isFinite(num);
          +    };
          +
          +    formatNumber = function (num, prec, groupsize, groupsep, decsep) {
          +        var p, i;
          +        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');
          +        p = (p = $.inArray('.', num)) < 0 ? num.length : p;
          +        if (p < num.length) {
          +            num[p] = decsep;
          +        }
          +        for (i = p - groupsize; i > 0; i -= groupsize) {
          +            num.splice(i, 0, groupsep);
          +        }
          +        return num.join('');
          +    };
          +
          +    // determine if all values of an array match a value
          +    // returns true if the array is empty
          +    all = function (val, arr, ignoreNull) {
          +        var i;
          +        for (i = arr.length; i--; ) {
          +            if (ignoreNull && arr[i] === null) continue;
          +            if (arr[i] !== val) {
          +                return false;
          +            }
          +        }
          +        return true;
          +    };
          +
          +    // sums the numeric values in an array, ignoring other values
          +    sum = function (vals) {
          +        var total = 0, i;
          +        for (i = vals.length; i--;) {
          +            total += typeof vals[i] === 'number' ? vals[i] : 0;
          +        }
          +        return total;
          +    };
          +
          +    ensureArray = function (val) {
          +        return $.isArray(val) ? val : [val];
          +    };
          +
          +    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/
          +    addCSS = function(css) {
          +        var tag, iefail;
          +        if (document.createStyleSheet) {
          +            try {
          +                document.createStyleSheet().cssText = css;
          +                return;
          +            } catch (e) {
          +                // IE <= 9 maxes out at 31 stylesheets; inject into page instead.
          +                iefail = true;
          +            }
          +        }
          +        tag = document.createElement('style');
          +        tag.type = 'text/css';
          +        document.getElementsByTagName('head')[0].appendChild(tag);
          +        if (iefail) {
          +            document.styleSheets[document.styleSheets.length - 1].cssText = css;
          +        } else {
          +            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;
          +        }
          +    };
          +
          diff --git a/public/theme/jquery-sparkline/src/vcanvas-base.js b/public/theme/jquery-sparkline/src/vcanvas-base.js
          new file mode 100644
          index 0000000..fcd89ee
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/vcanvas-base.js
          @@ -0,0 +1,147 @@
          +    // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier
          +    // This is accessible as $(foo).simpledraw()
          +
          +    VShape = createClass({
          +        init: function (target, id, type, args) {
          +            this.target = target;
          +            this.id = id;
          +            this.type = type;
          +            this.args = args;
          +        },
          +        append: function () {
          +            this.target.appendShape(this);
          +            return this;
          +        }
          +    });
          +
          +    VCanvas_base = createClass({
          +        _pxregex: /(\d+)(px)?\s*$/i,
          +
          +        init: function (width, height, target) {
          +            if (!width) {
          +                return;
          +            }
          +            this.width = width;
          +            this.height = height;
          +            this.target = target;
          +            this.lastShapeId = null;
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +        },
          +
          +        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {
          +            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);
          +        },
          +
          +        drawShape: function (path, lineColor, fillColor, lineWidth) {
          +            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);
          +        },
          +
          +        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {
          +            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);
          +        },
          +
          +        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);
          +        },
          +
          +        drawRect: function (x, y, width, height, lineColor, fillColor) {
          +            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);
          +        },
          +
          +        getElement: function () {
          +            return this.canvas;
          +        },
          +
          +        /**
          +         * Return the most recently inserted shape id
          +         */
          +        getLastShapeId: function () {
          +            return this.lastShapeId;
          +        },
          +
          +        /**
          +         * Clear and reset the canvas
          +         */
          +        reset: function () {
          +            alert('reset not implemented');
          +        },
          +
          +        _insert: function (el, target) {
          +            $(target).html(el);
          +        },
          +
          +        /**
          +         * Calculate the pixel dimensions of the canvas
          +         */
          +        _calculatePixelDims: function (width, height, canvas) {
          +            // XXX This should probably be a configurable option
          +            var match;
          +            match = this._pxregex.exec(height);
          +            if (match) {
          +                this.pixelHeight = match[1];
          +            } else {
          +                this.pixelHeight = $(canvas).height();
          +            }
          +            match = this._pxregex.exec(width);
          +            if (match) {
          +                this.pixelWidth = match[1];
          +            } else {
          +                this.pixelWidth = $(canvas).width();
          +            }
          +        },
          +
          +        /**
          +         * Generate a shape object and id for later rendering
          +         */
          +        _genShape: function (shapetype, shapeargs) {
          +            var id = shapeCount++;
          +            shapeargs.unshift(id);
          +            return new VShape(this, id, shapetype, shapeargs);
          +        },
          +
          +        /**
          +         * Add a shape to the end of the render queue
          +         */
          +        appendShape: function (shape) {
          +            alert('appendShape not implemented');
          +        },
          +
          +        /**
          +         * Replace one shape with another
          +         */
          +        replaceWithShape: function (shapeid, shape) {
          +            alert('replaceWithShape not implemented');
          +        },
          +
          +        /**
          +         * Insert one shape after another in the render queue
          +         */
          +        insertAfterShape: function (shapeid, shape) {
          +            alert('insertAfterShape not implemented');
          +        },
          +
          +        /**
          +         * Remove a shape from the queue
          +         */
          +        removeShapeId: function (shapeid) {
          +            alert('removeShapeId not implemented');
          +        },
          +
          +        /**
          +         * Find a shape at the specified x/y co-ordinates
          +         */
          +        getShapeAt: function (el, x, y) {
          +            alert('getShapeAt not implemented');
          +        },
          +
          +        /**
          +         * Render all queued shapes onto the canvas
          +         */
          +        render: function () {
          +            alert('render not implemented');
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/vcanvas-canvas.js b/public/theme/jquery-sparkline/src/vcanvas-canvas.js
          new file mode 100644
          index 0000000..7ecc62d
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/vcanvas-canvas.js
          @@ -0,0 +1,193 @@
          +    VCanvas_canvas = createClass(VCanvas_base, {
          +        init: function (width, height, target, interact) {
          +            VCanvas_canvas._super.init.call(this, width, height, target);
          +            this.canvas = document.createElement('canvas');
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });
          +            this._insert(this.canvas, target);
          +            this._calculatePixelDims(width, height, this.canvas);
          +            this.canvas.width = this.pixelWidth;
          +            this.canvas.height = this.pixelHeight;
          +            this.interact = interact;
          +            this.shapes = {};
          +            this.shapeseq = [];
          +            this.currentTargetShapeId = undefined;
          +            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});
          +        },
          +
          +        _getContext: function (lineColor, fillColor, lineWidth) {
          +            var context = this.canvas.getContext('2d');
          +            if (lineColor !== undefined) {
          +                context.strokeStyle = lineColor;
          +            }
          +            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;
          +            if (fillColor !== undefined) {
          +                context.fillStyle = fillColor;
          +            }
          +            return context;
          +        },
          +
          +        reset: function () {
          +            var context = this._getContext();
          +            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
          +            this.shapes = {};
          +            this.shapeseq = [];
          +            this.currentTargetShapeId = undefined;
          +        },
          +
          +        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
          +            var context = this._getContext(lineColor, fillColor, lineWidth),
          +                i, plen;
          +            context.beginPath();
          +            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);
          +            for (i = 1, plen = path.length; i < plen; i++) {
          +                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines
          +            }
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor !== undefined) {
          +                context.fill();
          +            }
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +        },
          +
          +        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
          +            var context = this._getContext(lineColor, fillColor, lineWidth);
          +            context.beginPath();
          +            context.arc(x, y, radius, 0, 2 * Math.PI, false);
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor !== undefined) {
          +                context.fill();
          +            }
          +        },
          +
          +        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            var context = this._getContext(lineColor, fillColor);
          +            context.beginPath();
          +            context.moveTo(x, y);
          +            context.arc(x, y, radius, startAngle, endAngle, false);
          +            context.lineTo(x, y);
          +            context.closePath();
          +            if (lineColor !== undefined) {
          +                context.stroke();
          +            }
          +            if (fillColor) {
          +                context.fill();
          +            }
          +            if (this.targetX !== undefined && this.targetY !== undefined &&
          +                context.isPointInPath(this.targetX, this.targetY)) {
          +                this.currentTargetShapeId = shapeid;
          +            }
          +        },
          +
          +        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
          +            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);
          +        },
          +
          +        appendShape: function (shape) {
          +            this.shapes[shape.id] = shape;
          +            this.shapeseq.push(shape.id);
          +            this.lastShapeId = shape.id;
          +            return shape.id;
          +        },
          +
          +        replaceWithShape: function (shapeid, shape) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            this.shapes[shape.id] = shape;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] == shapeid) {
          +                    shapeseq[i] = shape.id;
          +                }
          +            }
          +            delete this.shapes[shapeid];
          +        },
          +
          +        replaceWithShapes: function (shapeids, shapes) {
          +            var shapeseq = this.shapeseq,
          +                shapemap = {},
          +                sid, i, first;
          +
          +            for (i = shapeids.length; i--;) {
          +                shapemap[shapeids[i]] = true;
          +            }
          +            for (i = shapeseq.length; i--;) {
          +                sid = shapeseq[i];
          +                if (shapemap[sid]) {
          +                    shapeseq.splice(i, 1);
          +                    delete this.shapes[sid];
          +                    first = i;
          +                }
          +            }
          +            for (i = shapes.length; i--;) {
          +                shapeseq.splice(first, 0, shapes[i].id);
          +                this.shapes[shapes[i].id] = shapes[i];
          +            }
          +
          +        },
          +
          +        insertAfterShape: function (shapeid, shape) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] === shapeid) {
          +                    shapeseq.splice(i + 1, 0, shape.id);
          +                    this.shapes[shape.id] = shape;
          +                    return;
          +                }
          +            }
          +        },
          +
          +        removeShapeId: function (shapeid) {
          +            var shapeseq = this.shapeseq,
          +                i;
          +            for (i = shapeseq.length; i--;) {
          +                if (shapeseq[i] === shapeid) {
          +                    shapeseq.splice(i, 1);
          +                    break;
          +                }
          +            }
          +            delete this.shapes[shapeid];
          +        },
          +
          +        getShapeAt: function (el, x, y) {
          +            this.targetX = x;
          +            this.targetY = y;
          +            this.render();
          +            return this.currentTargetShapeId;
          +        },
          +
          +        render: function () {
          +            var shapeseq = this.shapeseq,
          +                shapes = this.shapes,
          +                shapeCount = shapeseq.length,
          +                context = this._getContext(),
          +                shapeid, shape, i;
          +            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
          +            for (i = 0; i < shapeCount; i++) {
          +                shapeid = shapeseq[i];
          +                shape = shapes[shapeid];
          +                this['_draw' + shape.type].apply(this, shape.args);
          +            }
          +            if (!this.interact) {
          +                // not interactive so no need to keep the shapes array
          +                this.shapes = {};
          +                this.shapeseq = [];
          +            }
          +        }
          +
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/src/vcanvas-vml.js b/public/theme/jquery-sparkline/src/vcanvas-vml.js
          new file mode 100644
          index 0000000..e7e1905
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/src/vcanvas-vml.js
          @@ -0,0 +1,165 @@
          +    VCanvas_vml = createClass(VCanvas_base, {
          +        init: function (width, height, target) {
          +            var groupel;
          +            VCanvas_vml._super.init.call(this, width, height, target);
          +            if (target[0]) {
          +                target = target[0];
          +            }
          +            $.data(target, '_jqs_vcanvas', this);
          +            this.canvas = document.createElement('span');
          +            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});
          +            this._insert(this.canvas, target);
          +            this._calculatePixelDims(width, height, this.canvas);
          +            this.canvas.width = this.pixelWidth;
          +            this.canvas.height = this.pixelHeight;
          +            groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' +
          +                    ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>';
          +            this.canvas.insertAdjacentHTML('beforeEnd', groupel);
          +            this.group = $(this.canvas).children()[0];
          +            this.rendered = false;
          +            this.prerender = '';
          +        },
          +
          +        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
          +            var vpath = [],
          +                initial, stroke, fill, closed, vel, plen, i;
          +            for (i = 0, plen = path.length; i < plen; i++) {
          +                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);
          +            }
          +            initial = vpath.splice(0, 1);
          +            lineWidth = lineWidth === undefined ? 1 : lineWidth;
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';
          +            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                 stroke +
          +                 fill +
          +                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
          +                ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' +
          +                ' </v:shape>';
          +            return vel;
          +        },
          +
          +        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
          +            var stroke, fill, vel;
          +            x -= radius;
          +            y -= radius;
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            vel = '<v:oval ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                stroke +
          +                fill +
          +                ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>';
          +            return vel;
          +
          +        },
          +
          +        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
          +            var vpath, startx, starty, endx, endy, stroke, fill, vel;
          +            if (startAngle === endAngle) {
          +                return '';  // VML seems to have problem when start angle equals end angle.
          +            }
          +            if ((endAngle - startAngle) === (2 * Math.PI)) {
          +                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0
          +                endAngle = (2 * Math.PI);
          +            }
          +
          +            startx = x + Math.round(Math.cos(startAngle) * radius);
          +            starty = y + Math.round(Math.sin(startAngle) * radius);
          +            endx = x + Math.round(Math.cos(endAngle) * radius);
          +            endy = y + Math.round(Math.sin(endAngle) * radius);
          +
          +            if (startx === endx && starty === endy) {
          +                if ((endAngle - startAngle) < Math.PI) {
          +                    // Prevent very small slices from being mistaken as a whole pie
          +                    return '';
          +                }
          +                // essentially going to be the entire circle, so ignore startAngle
          +                startx = endx = x + radius;
          +                starty = endy = y;
          +            }
          +
          +            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {
          +                return '';
          +            }
          +
          +            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];
          +            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" ';
          +            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
          +            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
          +                 ' id="jqsshape' + shapeid + '" ' +
          +                 stroke +
          +                 fill +
          +                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
          +                ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' +
          +                ' </v:shape>';
          +            return vel;
          +        },
          +
          +        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
          +            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);
          +        },
          +
          +        reset: function () {
          +            this.group.innerHTML = '';
          +        },
          +
          +        appendShape: function (shape) {
          +            var vel = this['_draw' + shape.type].apply(this, shape.args);
          +            if (this.rendered) {
          +                this.group.insertAdjacentHTML('beforeEnd', vel);
          +            } else {
          +                this.prerender += vel;
          +            }
          +            this.lastShapeId = shape.id;
          +            return shape.id;
          +        },
          +
          +        replaceWithShape: function (shapeid, shape) {
          +            var existing = $('#jqsshape' + shapeid),
          +                vel = this['_draw' + shape.type].apply(this, shape.args);
          +            existing[0].outerHTML = vel;
          +        },
          +
          +        replaceWithShapes: function (shapeids, shapes) {
          +            // replace the first shapeid with all the new shapes then toast the remaining old shapes
          +            var existing = $('#jqsshape' + shapeids[0]),
          +                replace = '',
          +                slen = shapes.length,
          +                i;
          +            for (i = 0; i < slen; i++) {
          +                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);
          +            }
          +            existing[0].outerHTML = replace;
          +            for (i = 1; i < shapeids.length; i++) {
          +                $('#jqsshape' + shapeids[i]).remove();
          +            }
          +        },
          +
          +        insertAfterShape: function (shapeid, shape) {
          +            var existing = $('#jqsshape' + shapeid),
          +                 vel = this['_draw' + shape.type].apply(this, shape.args);
          +            existing[0].insertAdjacentHTML('afterEnd', vel);
          +        },
          +
          +        removeShapeId: function (shapeid) {
          +            var existing = $('#jqsshape' + shapeid);
          +            this.group.removeChild(existing[0]);
          +        },
          +
          +        getShapeAt: function (el, x, y) {
          +            var shapeid = el.id.substr(8);
          +            return shapeid;
          +        },
          +
          +        render: function () {
          +            if (!this.rendered) {
          +                // batch the intial render into a single repaint
          +                this.group.innerHTML = this.prerender;
          +                this.rendered = true;
          +            }
          +        }
          +    });
          +
          diff --git a/public/theme/jquery-sparkline/version.txt b/public/theme/jquery-sparkline/version.txt
          new file mode 100644
          index 0000000..ac2cdeb
          --- /dev/null
          +++ b/public/theme/jquery-sparkline/version.txt
          @@ -0,0 +1 @@
          +2.1.3
          diff --git a/public/theme/jquery.hotkeys/.bower.json b/public/theme/jquery.hotkeys/.bower.json
          new file mode 100644
          index 0000000..a07489d
          --- /dev/null
          +++ b/public/theme/jquery.hotkeys/.bower.json
          @@ -0,0 +1,42 @@
          +{
          +  "name": "jquery.hotkeys",
          +  "description": "jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.",
          +  "homepage": "http://github.com/jeresig/jquery.hotkeys",
          +  "repository": "git://github.com/jeresig/jquery.hotkeys.git",
          +  "keywords": [
          +    "jquery",
          +    "hotkeys",
          +    "keyboard",
          +    "events",
          +    "key",
          +    "bindings"
          +  ],
          +  "authors": [
          +    "John Resig <jeresig@gmail.com> (http://ejohn.org)"
          +  ],
          +  "main": "jquery.hotkeys.js",
          +  "ignore": [
          +    "jquery-*",
          +    "test*",
          +    "*.yml",
          +    ".gitignore",
          +    "Gruntfile.js",
          +    "*.json"
          +  ],
          +  "dependencies": {
          +    "jquery": ">= 1.4.2"
          +  },
          +  "license": [
          +    "MIT",
          +    "GPL-2.0"
          +  ],
          +  "_release": "1ec07a6a19",
          +  "_resolution": {
          +    "type": "branch",
          +    "branch": "master",
          +    "commit": "1ec07a6a1900104ba56d049551acaaa83e8417d6"
          +  },
          +  "_source": "https://github.com/jeresig/jquery.hotkeys.git",
          +  "_target": "master",
          +  "_originalSource": "https://github.com/jeresig/jquery.hotkeys.git"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery.hotkeys/README.md b/public/theme/jquery.hotkeys/README.md
          new file mode 100644
          index 0000000..c8307f6
          --- /dev/null
          +++ b/public/theme/jquery.hotkeys/README.md
          @@ -0,0 +1,115 @@
          +# jQuery.Hotkeys [![Build Status](https://secure.travis-ci.org/jeresig/jquery.hotkeys.png)](http://travis-ci.org/jeresig/jquery.hotkeys)
          +
          +#About
          +**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.
          +
          +This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](https://github.com/tzuryby/jquery.hotkeys)
          +
          +The syntax is as follows:
          +
          +```javascript
          +$(expression).bind(types, keys, handler);
          +$(expression).unbind(types, handler);
          +
          +$(document).bind('keydown', 'ctrl+a', fn);
          +
          +// e.g. replace '$' sign with 'EUR'
          +$('input.foo').bind('keyup', '$', function(){
          +  this.value = this.value.replace('$', 'EUR');
          +});
          +```
          +
          +Syntax when wanting to use jQuery's `on()`/`off` methods:
          +
          +```javascript
          +$(expression).on(types, null, keys, handler);
          +$(expression).off(types, handler);
          +
          +$(document).on('keydown', null, 'ctrl+a', fn);
          +
          +// e.g. replace '$' sign with 'EUR'
          +$('input.foo').on('keyup', null, '$', function(){
          +  this.value = this.value.replace('$', 'EUR');
          +});     
          +```
          +
          +## Example
          +
          +[Example](https://rawgit.com/jeresig/jquery.hotkeys/master/test-static-01.html)
          +
          +## Event Types
          +
          +Supported types are `'keydown'`, `'keyup'` and `'keypress'`
          +
          +## jQuery Compatibility
          +
          +Works with jQuery 1.4.2 and newer.
          +
          +It is known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
          +
          + * IE 6/7/8+
          + * FF 1.5/2/3+
          + * Opera-9+
          + * Safari-3+
          + * Chrome-0.2+
          +
          +## Browserify Compatibility
          +If you want to include this module in a Browserified project, just add it to node_modules and require it.
          +```javascript
          +require('jquery.javascript');
          +```
          +
          +This will work if jQuery is global (ex. served from a CDN). If it's not, you need to [shim it](https://github.com/thlorenz/browserify-shim#a-expose-global-variables-via-global):
          +```javascript
          +{
          +  "browserify-shim": {
          +    "jquery": "global:jQuery"
          +  }
          +}
          +```
          +
          +## Notes
          +
          +Modifiers are not case sensitive (`Ctrl` == `ctrl` == `cTRL`)
          +
          +If you want to use more than one modifier (e.g. `alt+ctrl+z`) you should define them by an alphabetical order e.g. alt+ctrl+shift
          +
          +Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
          +
          +You can use namespacing by adding a suffix to the event type (e.g. `keyup.toggle`)
          +
          +
          +## Hotkeys within inputs
          +
          +Hotkeys aren't tracked if the user is focused within an input element or any element that has `contenteditable="true"` unless you bind the hotkey directly to the element. This helps to avoid conflict with normal user typing.
          +If you don't want this, you can change the booleans of the following to suit:
          +
          + * `jQuery.hotkeys.options.filterInputAcceptingElements`
          + * `jQuery.hotkeys.options.filterContentEditable`
          + * `jQuery.hotkeys.options.filterTextInputs` (deprecated, will be removed in a later version)
          +
          +### Meta and Hyper Keys
          +Meta and hyper keys don't register on `keyup` in any browser tested.
          +
          +#### Chrome 33.0.1750.117
          +Meta key registers on `keydown` event.
          +Hyper key registers on `keydown` event.
          +
          +#### Firefox 27.0.1 and Safari 7.0.1
          +Meta key registers on `keydown` and `keypress` events.
          +Hyper key registers on `keydown` and `keypress` events.
          +
          +#### Opera 19.0
          +Meta key doesn't register at all :(
          +Hyper key registers on `keydown` and `keypress` events.
          +
          +#### TL;DR
          +Bind to `keydown` event for meta and hyper keys, but meta key does not work in Opera ;)
          +
          +### Addendum
          +
          +Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
          +
          +Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
          +
          +*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
          diff --git a/public/theme/jquery.hotkeys/bower.json b/public/theme/jquery.hotkeys/bower.json
          new file mode 100644
          index 0000000..405ef30
          --- /dev/null
          +++ b/public/theme/jquery.hotkeys/bower.json
          @@ -0,0 +1,21 @@
          +{
          +  "name": "jquery.hotkeys",
          +  "description": "jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.",
          +  "homepage": "http://github.com/jeresig/jquery.hotkeys",
          +  "repository": "git://github.com/jeresig/jquery.hotkeys.git",
          +  "keywords": ["jquery", "hotkeys", "keyboard", "events", "key", "bindings"],
          +  "authors": ["John Resig <jeresig@gmail.com> (http://ejohn.org)"],
          +  "main": "jquery.hotkeys.js",
          +  "ignore": [
          +    "jquery-*",
          +    "test*",
          +    "*.yml",
          +    ".gitignore",
          +    "Gruntfile.js",
          +    "*.json"
          +  ],
          +  "dependencies": {
          +    "jquery": ">= 1.4.2"
          +  },
          +  "license": ["MIT", "GPL-2.0"]
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery.hotkeys/jquery.hotkeys.js b/public/theme/jquery.hotkeys/jquery.hotkeys.js
          new file mode 100644
          index 0000000..e7701f3
          --- /dev/null
          +++ b/public/theme/jquery.hotkeys/jquery.hotkeys.js
          @@ -0,0 +1,204 @@
          +/*jslint browser: true*/
          +/*jslint jquery: true*/
          +
          +/*
          + * jQuery Hotkeys Plugin
          + * Copyright 2010, John Resig
          + * Dual licensed under the MIT or GPL Version 2 licenses.
          + *
          + * Based upon the plugin by Tzury Bar Yochay:
          + * https://github.com/tzuryby/jquery.hotkeys
          + *
          + * Original idea by:
          + * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
          + */
          +
          +/*
          + * One small change is: now keys are passed by object { keys: '...' }
          + * Might be useful, when you want to pass some other data to your handler
          + */
          +
          +(function(jQuery) {
          +
          +  jQuery.hotkeys = {
          +    version: "0.2.0",
          +
          +    specialKeys: {
          +      8: "backspace",
          +      9: "tab",
          +      10: "return",
          +      13: "return",
          +      16: "shift",
          +      17: "ctrl",
          +      18: "alt",
          +      19: "pause",
          +      20: "capslock",
          +      27: "esc",
          +      32: "space",
          +      33: "pageup",
          +      34: "pagedown",
          +      35: "end",
          +      36: "home",
          +      37: "left",
          +      38: "up",
          +      39: "right",
          +      40: "down",
          +      45: "insert",
          +      46: "del",
          +      59: ";",
          +      61: "=",
          +      96: "0",
          +      97: "1",
          +      98: "2",
          +      99: "3",
          +      100: "4",
          +      101: "5",
          +      102: "6",
          +      103: "7",
          +      104: "8",
          +      105: "9",
          +      106: "*",
          +      107: "+",
          +      109: "-",
          +      110: ".",
          +      111: "/",
          +      112: "f1",
          +      113: "f2",
          +      114: "f3",
          +      115: "f4",
          +      116: "f5",
          +      117: "f6",
          +      118: "f7",
          +      119: "f8",
          +      120: "f9",
          +      121: "f10",
          +      122: "f11",
          +      123: "f12",
          +      144: "numlock",
          +      145: "scroll",
          +      173: "-",
          +      186: ";",
          +      187: "=",
          +      188: ",",
          +      189: "-",
          +      190: ".",
          +      191: "/",
          +      192: "`",
          +      219: "[",
          +      220: "\\",
          +      221: "]",
          +      222: "'"
          +    },
          +
          +    shiftNums: {
          +      "`": "~",
          +      "1": "!",
          +      "2": "@",
          +      "3": "#",
          +      "4": "$",
          +      "5": "%",
          +      "6": "^",
          +      "7": "&",
          +      "8": "*",
          +      "9": "(",
          +      "0": ")",
          +      "-": "_",
          +      "=": "+",
          +      ";": ": ",
          +      "'": "\"",
          +      ",": "<",
          +      ".": ">",
          +      "/": "?",
          +      "\\": "|"
          +    },
          +
          +    // excludes: button, checkbox, file, hidden, image, password, radio, reset, search, submit, url
          +    textAcceptingInputTypes: [
          +      "text", "password", "number", "email", "url", "range", "date", "month", "week", "time", "datetime",
          +      "datetime-local", "search", "color", "tel"],
          +
          +    // default input types not to bind to unless bound directly
          +    textInputTypes: /textarea|input|select/i,
          +
          +    options: {
          +      filterInputAcceptingElements: true,
          +      filterTextInputs: true,
          +      filterContentEditable: true
          +    }
          +  };
          +
          +  function keyHandler(handleObj) {
          +    if (typeof handleObj.data === "string") {
          +      handleObj.data = {
          +        keys: handleObj.data
          +      };
          +    }
          +
          +    // Only care when a possible input has been specified
          +    if (!handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== "string") {
          +      return;
          +    }
          +
          +    var origHandler = handleObj.handler,
          +      keys = handleObj.data.keys.toLowerCase().split(" ");
          +
          +    handleObj.handler = function(event) {
          +      //      Don't fire in text-accepting inputs that we didn't directly bind to
          +      if (this !== event.target &&
          +        (jQuery.hotkeys.options.filterInputAcceptingElements &&
          +          jQuery.hotkeys.textInputTypes.test(event.target.nodeName) ||
          +          (jQuery.hotkeys.options.filterContentEditable && jQuery(event.target).attr('contenteditable')) ||
          +          (jQuery.hotkeys.options.filterTextInputs &&
          +            jQuery.inArray(event.target.type, jQuery.hotkeys.textAcceptingInputTypes) > -1))) {
          +        return;
          +      }
          +
          +      var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which],
          +        character = String.fromCharCode(event.which).toLowerCase(),
          +        modif = "",
          +        possible = {};
          +
          +      jQuery.each(["alt", "ctrl", "shift"], function(index, specialKey) {
          +
          +        if (event[specialKey + 'Key'] && special !== specialKey) {
          +          modif += specialKey + '+';
          +        }
          +      });
          +
          +      // metaKey is triggered off ctrlKey erronously
          +      if (event.metaKey && !event.ctrlKey && special !== "meta") {
          +        modif += "meta+";
          +      }
          +
          +      if (event.metaKey && special !== "meta" && modif.indexOf("alt+ctrl+shift+") > -1) {
          +        modif = modif.replace("alt+ctrl+shift+", "hyper+");
          +      }
          +
          +      if (special) {
          +        possible[modif + special] = true;
          +      }
          +      else {
          +        possible[modif + character] = true;
          +        possible[modif + jQuery.hotkeys.shiftNums[character]] = true;
          +
          +        // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
          +        if (modif === "shift+") {
          +          possible[jQuery.hotkeys.shiftNums[character]] = true;
          +        }
          +      }
          +
          +      for (var i = 0, l = keys.length; i < l; i++) {
          +        if (possible[keys[i]]) {
          +          return origHandler.apply(this, arguments);
          +        }
          +      }
          +    };
          +  }
          +
          +  jQuery.each(["keydown", "keyup", "keypress"], function() {
          +    jQuery.event.special[this] = {
          +      add: keyHandler
          +    };
          +  });
          +
          +})(jQuery || this.jQuery || window.jQuery);
          diff --git a/public/theme/jquery.inputmask/.bower.json b/public/theme/jquery.inputmask/.bower.json
          new file mode 100644
          index 0000000..2c8d11b
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/.bower.json
          @@ -0,0 +1,45 @@
          +{
          +  "name": "jquery.inputmask",
          +  "version": "3.3.1",
          +  "main": [
          +    "./dist/inputmask/inputmask.js"
          +  ],
          +  "keywords": [
          +    "jquery",
          +    "plugins",
          +    "input",
          +    "form",
          +    "inputmask",
          +    "mask"
          +  ],
          +  "description": "jquery.inputmask is a jquery plugin which create an input mask.",
          +  "license": "http://opensource.org/licenses/mit-license.php",
          +  "ignore": [
          +    "**/*",
          +    "!dist/*",
          +    "!dist/inputmask/*",
          +    "!dist/min/*",
          +    "!dist/min/inputmask/*",
          +    "!extra/bindings/*",
          +    "!extra/dependencyLibs/*",
          +    "!extra/phone-codes/*"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.7"
          +  },
          +  "authors": [
          +    {
          +      "name": "Robin Herbots"
          +    }
          +  ],
          +  "homepage": "http://robinherbots.github.io/jquery.inputmask",
          +  "_release": "3.3.1",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "3.3.1",
          +    "commit": "b24113a01b0ade15ba2bf9823f03e993e3b659c1"
          +  },
          +  "_source": "https://github.com/RobinHerbots/jquery.inputmask.git",
          +  "_target": "^3.3.1",
          +  "_originalSource": "jquery.inputmask"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/bower.json b/public/theme/jquery.inputmask/bower.json
          new file mode 100644
          index 0000000..ad8f189
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/bower.json
          @@ -0,0 +1,27 @@
          +{
          +  "name": "jquery.inputmask",
          +  "version": "3.3.1",
          +  "main": [
          +    "./dist/inputmask/inputmask.js"
          +  ],
          +  "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
          +  "description": "jquery.inputmask is a jquery plugin which create an input mask.",
          +  "license": "http://opensource.org/licenses/mit-license.php",
          +  "ignore": [
          +    "**/*",
          +    "!dist/*",
          +    "!dist/inputmask/*",
          +    "!dist/min/*",
          +    "!dist/min/inputmask/*",
          +    "!extra/bindings/*",
          +    "!extra/dependencyLibs/*",
          +    "!extra/phone-codes/*"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.7"
          +  },
          +  "authors": [{
          +    "name": "Robin Herbots"
          +  }],
          +  "homepage": "http://robinherbots.github.io/jquery.inputmask"
          +}
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.date.extensions.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.date.extensions.js
          new file mode 100644
          index 0000000..df435fd
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.date.extensions.js
          @@ -0,0 +1,515 @@
          +/*!
          +* inputmask.date.extensions.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return Inputmask.extendDefinitions({
          +        h: {
          +            validator: "[01][0-9]|2[0-3]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-2]",
          +                cardinality: 1
          +            } ]
          +        },
          +        s: {
          +            validator: "[0-5][0-9]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-5]",
          +                cardinality: 1
          +            } ]
          +        },
          +        d: {
          +            validator: "0[1-9]|[12][0-9]|3[01]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-3]",
          +                cardinality: 1
          +            } ]
          +        },
          +        m: {
          +            validator: "0[1-9]|1[012]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[01]",
          +                cardinality: 1
          +            } ]
          +        },
          +        y: {
          +            validator: "(19|20)\\d{2}",
          +            cardinality: 4,
          +            prevalidator: [ {
          +                validator: "[12]",
          +                cardinality: 1
          +            }, {
          +                validator: "(19|20)",
          +                cardinality: 2
          +            }, {
          +                validator: "(19|20)\\d",
          +                cardinality: 3
          +            } ]
          +        }
          +    }), Inputmask.extendAliases({
          +        "dd/mm/yyyy": {
          +            mask: "1/2/y",
          +            placeholder: "dd/mm/yyyy",
          +            regex: {
          +                val1pre: new RegExp("[0-3]"),
          +                val1: new RegExp("0[1-9]|[12][0-9]|3[01]"),
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))");
          +                }
          +            },
          +            leapday: "29/02/",
          +            separator: "/",
          +            yearrange: {
          +                minyear: 1900,
          +                maxyear: 2099
          +            },
          +            isInYearRange: function(chrs, minyear, maxyear) {
          +                if (isNaN(chrs)) return !1;
          +                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));
          +                return (isNaN(enteredyear) ? !1 : enteredyear >= minyear && maxyear >= enteredyear) || (isNaN(enteredyear2) ? !1 : enteredyear2 >= minyear && maxyear >= enteredyear2);
          +            },
          +            determinebaseyear: function(minyear, maxyear, hint) {
          +                var currentyear = new Date().getFullYear();
          +                if (minyear > currentyear) return minyear;
          +                if (currentyear > maxyear) {
          +                    for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxYearPrefix + hint > maxyear; ) maxYearPrefix--;
          +                    var maxxYear = maxYearPrefix + maxYearPostfix;
          +                    return minyear > maxxYear ? minyear : maxxYear;
          +                }
          +                if (currentyear >= minyear && maxyear >= currentyear) {
          +                    for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--;
          +                    var currentYearAndHint = currentYearPrefix + hint;
          +                    return minyear > currentYearAndHint ? minyear : currentYearAndHint;
          +                }
          +                return currentyear;
          +            },
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            },
          +            getFrontValue: function(mask, buffer, opts) {
          +                for (var start = 0, length = 0, i = 0; i < mask.length && "2" !== mask.charAt(i); i++) {
          +                    var definition = opts.definitions[mask.charAt(i)];
          +                    definition ? (start += length, length = definition.cardinality) : length++;
          +                }
          +                return buffer.join("").substr(start, length);
          +            },
          +            definitions: {
          +                "1": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.regex.val1.test(chrs);
          +                        return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === "-./".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test("0" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = "0", 
          +                        {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: chrs.charAt(0)
          +                        });
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var pchrs = chrs;
          +                            isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);
          +                            var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);
          +                            if (!strict && !isValid) {
          +                                if (isValid = opts.regex.val1.test(chrs + "0")) return maskset.buffer[pos] = chrs, 
          +                                maskset.buffer[++pos] = "0", {
          +                                    pos: pos,
          +                                    c: "0"
          +                                };
          +                                if (isValid = opts.regex.val1.test("0" + chrs)) return maskset.buffer[pos] = "0", 
          +                                pos++, {
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                "2": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
          +                        -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
          +                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);
          +                        if (!strict && !isValid && (chrs.charAt(1) === opts.separator || -1 !== "-./".indexOf(chrs.charAt(1))) && (isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
          +                        {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: chrs.charAt(0)
          +                        };
          +                        if (opts.mask.indexOf("2") === opts.mask.length - 1 && isValid) {
          +                            var dayMonthValue = maskset.buffer.join("").substr(4, 4) + chrs;
          +                            if (dayMonthValue !== opts.leapday) return !0;
          +                            var year = parseInt(maskset.buffer.join("").substr(0, 4), 10);
          +                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);
          +                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
          +                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
          +                            var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);
          +                            return strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                y: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
          +                            var dayMonthValue = maskset.buffer.join("").substr(0, 6);
          +                            if (dayMonthValue !== opts.leapday) return !0;
          +                            var year = parseInt(chrs, 10);
          +                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                        }
          +                        return !1;
          +                    },
          +                    cardinality: 4,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                            if (!strict && !isValid) {
          +                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1);
          +                                if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
          +                                {
          +                                    pos: pos
          +                                };
          +                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2), 
          +                                isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
          +                                maskset.buffer[pos++] = yearPrefix.charAt(1), {
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 1
          +                    }, {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                            if (!strict && !isValid) {
          +                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);
          +                                if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), 
          +                                {
          +                                    pos: pos
          +                                };
          +                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), 
          +                                opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
          +                                    var dayMonthValue = maskset.buffer.join("").substr(0, 6);
          +                                    if (dayMonthValue !== opts.leapday) isValid = !0; else {
          +                                        var year = parseInt(chrs, 10);
          +                                        isValid = year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                                    }
          +                                } else isValid = !1;
          +                                if (isValid) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), maskset.buffer[pos++] = yearPrefix.charAt(1), 
          +                                maskset.buffer[pos++] = chrs.charAt(0), {
          +                                    refreshFromBuffer: {
          +                                        start: pos - 3,
          +                                        end: pos
          +                                    },
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 2
          +                    }, {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                        },
          +                        cardinality: 3
          +                    } ]
          +                }
          +            },
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        "mm/dd/yyyy": {
          +            placeholder: "mm/dd/yyyy",
          +            alias: "dd/mm/yyyy",
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            leapday: "02/29/",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "yyyy/mm/dd": {
          +            mask: "y/1/2",
          +            placeholder: "yyyy/mm/dd",
          +            alias: "mm/dd/yyyy",
          +            leapday: "/02/29",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "dd.mm.yyyy": {
          +            mask: "1.2.y",
          +            placeholder: "dd.mm.yyyy",
          +            leapday: "29.02.",
          +            separator: ".",
          +            alias: "dd/mm/yyyy"
          +        },
          +        "dd-mm-yyyy": {
          +            mask: "1-2-y",
          +            placeholder: "dd-mm-yyyy",
          +            leapday: "29-02-",
          +            separator: "-",
          +            alias: "dd/mm/yyyy"
          +        },
          +        "mm.dd.yyyy": {
          +            mask: "1.2.y",
          +            placeholder: "mm.dd.yyyy",
          +            leapday: "02.29.",
          +            separator: ".",
          +            alias: "mm/dd/yyyy"
          +        },
          +        "mm-dd-yyyy": {
          +            mask: "1-2-y",
          +            placeholder: "mm-dd-yyyy",
          +            leapday: "02-29-",
          +            separator: "-",
          +            alias: "mm/dd/yyyy"
          +        },
          +        "yyyy.mm.dd": {
          +            mask: "y.1.2",
          +            placeholder: "yyyy.mm.dd",
          +            leapday: ".02.29",
          +            separator: ".",
          +            alias: "yyyy/mm/dd"
          +        },
          +        "yyyy-mm-dd": {
          +            mask: "y-1-2",
          +            placeholder: "yyyy-mm-dd",
          +            leapday: "-02-29",
          +            separator: "-",
          +            alias: "yyyy/mm/dd"
          +        },
          +        datetime: {
          +            mask: "1/2/y h:s",
          +            placeholder: "dd/mm/yyyy hh:mm",
          +            alias: "dd/mm/yyyy",
          +            regex: {
          +                hrspre: new RegExp("[012]"),
          +                hrs24: new RegExp("2[0-4]|1[3-9]"),
          +                hrs: new RegExp("[01][0-9]|2[0-4]"),
          +                ampm: new RegExp("^[a|p|A|P][m|M]"),
          +                mspre: new RegExp("[0-5]"),
          +                ms: new RegExp("[0-5][0-9]")
          +            },
          +            timeseparator: ":",
          +            hourFormat: "24",
          +            definitions: {
          +                h: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        if ("24" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = "0", 
          +                        maskset.buffer[pos] = "0", {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            c: "0"
          +                        };
          +                        var isValid = opts.regex.hrs.test(chrs);
          +                        if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== "-.:".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test("0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
          +                        maskset.buffer[pos] = chrs.charAt(0), pos++, {
          +                            refreshFromBuffer: {
          +                                start: pos - 2,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: opts.timeseparator
          +                        };
          +                        if (isValid && "24" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {
          +                            var tmp = parseInt(chrs, 10);
          +                            return 24 === tmp ? (maskset.buffer[pos + 5] = "a", maskset.buffer[pos + 6] = "m") : (maskset.buffer[pos + 5] = "p", 
          +                            maskset.buffer[pos + 6] = "m"), tmp -= 12, 10 > tmp ? (maskset.buffer[pos] = tmp.toString(), 
          +                            maskset.buffer[pos - 1] = "0") : (maskset.buffer[pos] = tmp.toString().charAt(1), 
          +                            maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {
          +                                refreshFromBuffer: {
          +                                    start: pos - 1,
          +                                    end: pos + 6
          +                                },
          +                                c: maskset.buffer[pos]
          +                            };
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.regex.hrspre.test(chrs);
          +                            return strict || isValid || !(isValid = opts.regex.hrs.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                s: {
          +                    validator: "[0-5][0-9]",
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.regex.mspre.test(chrs);
          +                            return strict || isValid || !(isValid = opts.regex.ms.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                t: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        return opts.regex.ampm.test(chrs + "m");
          +                    },
          +                    casing: "lower",
          +                    cardinality: 1
          +                }
          +            },
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        datetime12: {
          +            mask: "1/2/y h:s t\\m",
          +            placeholder: "dd/mm/yyyy hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "mm/dd/yyyy hh:mm xm": {
          +            mask: "1/2/y h:s t\\m",
          +            placeholder: "mm/dd/yyyy hh:mm xm",
          +            alias: "datetime12",
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            leapday: "02/29/",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "hh:mm t": {
          +            mask: "h:s t\\m",
          +            placeholder: "hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "h:s t": {
          +            mask: "h:s t\\m",
          +            placeholder: "hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "hh:mm:ss": {
          +            mask: "h:s:s",
          +            placeholder: "hh:mm:ss",
          +            alias: "datetime",
          +            autoUnmask: !1
          +        },
          +        "hh:mm": {
          +            mask: "h:s",
          +            placeholder: "hh:mm",
          +            alias: "datetime",
          +            autoUnmask: !1
          +        },
          +        date: {
          +            alias: "dd/mm/yyyy"
          +        },
          +        "mm/yyyy": {
          +            mask: "1/y",
          +            placeholder: "mm/yyyy",
          +            leapday: "donotuse",
          +            separator: "/",
          +            alias: "mm/dd/yyyy"
          +        },
          +        shamsi: {
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            yearrange: {
          +                minyear: 1300,
          +                maxyear: 1499
          +            },
          +            mask: "y/1/2",
          +            leapday: "/12/30",
          +            placeholder: "yyyy/mm/dd",
          +            alias: "mm/dd/yyyy",
          +            clearIncomplete: !0
          +        }
          +    }), Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.dependencyLib.jquery.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.dependencyLib.jquery.js
          new file mode 100644
          index 0000000..e3aeb2c
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.dependencyLib.jquery.js
          @@ -0,0 +1,12 @@
          +/*!
          +* inputmask.dependencyLib.jquery.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);
          +}(function($) {
          +    return window.dependencyLib = $, $;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.extensions.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.extensions.js
          new file mode 100644
          index 0000000..292889b
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.extensions.js
          @@ -0,0 +1,93 @@
          +/*!
          +* inputmask.extensions.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return Inputmask.extendDefinitions({
          +        A: {
          +            validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +            cardinality: 1,
          +            casing: "upper"
          +        },
          +        "&": {
          +            validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +            cardinality: 1,
          +            casing: "upper"
          +        },
          +        "#": {
          +            validator: "[0-9A-Fa-f]",
          +            cardinality: 1,
          +            casing: "upper"
          +        }
          +    }), Inputmask.extendAliases({
          +        url: {
          +            definitions: {
          +                i: {
          +                    validator: ".",
          +                    cardinality: 1
          +                }
          +            },
          +            mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        ip: {
          +            mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
          +            definitions: {
          +                i: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        return pos - 1 > -1 && "." !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, 
          +                        chrs = pos - 2 > -1 && "." !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : "0" + chrs) : chrs = "00" + chrs, 
          +                        new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
          +                    },
          +                    cardinality: 1
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                return maskedValue;
          +            }
          +        },
          +        email: {
          +            mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",
          +            greedy: !1,
          +            onBeforePaste: function(pastedValue, opts) {
          +                return pastedValue = pastedValue.toLowerCase(), pastedValue.replace("mailto:", "");
          +            },
          +            definitions: {
          +                "*": {
          +                    validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",
          +                    cardinality: 1,
          +                    casing: "lower"
          +                },
          +                "-": {
          +                    validator: "[0-9A-Za-z-]",
          +                    cardinality: 1,
          +                    casing: "lower"
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                return maskedValue;
          +            }
          +        },
          +        mac: {
          +            mask: "##:##:##:##:##:##"
          +        },
          +        vin: {
          +            mask: "V{13}9{4}",
          +            definitions: {
          +                V: {
          +                    validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
          +                    cardinality: 1,
          +                    casing: "upper"
          +                }
          +            },
          +            clearIncomplete: !0,
          +            autoUnmask: !0
          +        }
          +    }), Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.js
          new file mode 100644
          index 0000000..b1c3774
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.js
          @@ -0,0 +1,1465 @@
          +/*!
          +* inputmask.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery")) : factory(window.dependencyLib || jQuery);
          +}(function($) {
          +    function Inputmask(alias, options) {
          +        return this instanceof Inputmask ? ($.isPlainObject(alias) ? options = alias : (options = options || {}, 
          +        options.alias = alias), this.el = void 0, this.opts = $.extend(!0, {}, this.defaults, options), 
          +        this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, 
          +        this.events = {}, void resolveAlias(this.opts.alias, options, this.opts)) : new Inputmask(alias, options);
          +    }
          +    function isInputEventSupported(eventName) {
          +        var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el;
          +        return isSupported || (el.setAttribute(evName, "return;"), isSupported = "function" == typeof el[evName]), 
          +        el = null, isSupported;
          +    }
          +    function isElementTypeSupported(input, opts) {
          +        var elementType = input.getAttribute("type"), isSupported = "INPUT" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || "TEXTAREA" === input.tagName;
          +        if (!isSupported && "INPUT" === input.tagName) {
          +            var el = document.createElement("input");
          +            el.setAttribute("type", elementType), isSupported = "text" === el.type, el = null;
          +        }
          +        return isSupported;
          +    }
          +    function resolveAlias(aliasStr, options, opts) {
          +        var aliasDefinition = opts.aliases[aliasStr];
          +        return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 
          +        $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), 
          +        !1);
          +    }
          +    function importAttributeOptions(npt, opts, userOptions) {
          +        function importOption(option, optionData) {
          +            optionData = void 0 !== optionData ? optionData : npt.getAttribute("data-inputmask-" + option), 
          +            null !== optionData && ("string" == typeof optionData && (0 === option.indexOf("on") ? optionData = window[optionData] : "false" === optionData ? optionData = !1 : "true" === optionData && (optionData = !0)), 
          +            userOptions[option] = optionData);
          +        }
          +        var option, dataoptions, optionData, p, attrOptions = npt.getAttribute("data-inputmask");
          +        if (attrOptions && "" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'), 
          +        dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) {
          +            optionData = void 0;
          +            for (p in dataoptions) if ("alias" === p.toLowerCase()) {
          +                optionData = dataoptions[p];
          +                break;
          +            }
          +        }
          +        importOption("alias", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);
          +        for (option in opts) {
          +            if (dataoptions) {
          +                optionData = void 0;
          +                for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {
          +                    optionData = dataoptions[p];
          +                    break;
          +                }
          +            }
          +            importOption(option, optionData);
          +        }
          +        return $.extend(!0, opts, userOptions), opts;
          +    }
          +    function generateMaskSet(opts, nocache) {
          +        function analyseMask(mask) {
          +            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {
          +                this.matches = [], this.isGroup = isGroup || !1, this.isOptional = isOptional || !1, 
          +                this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, 
          +                this.quantifier = {
          +                    min: 1,
          +                    max: 1
          +                };
          +            }
          +            function insertTestDefinition(mtoken, element, position) {
          +                var maskdef = opts.definitions[element];
          +                position = void 0 !== position ? position : mtoken.matches.length;
          +                var prevMatch = mtoken.matches[position - 1];
          +                if (maskdef && !escaped) {
          +                    maskdef.placeholder = $.isFunction(maskdef.placeholder) ? maskdef.placeholder(opts) : maskdef.placeholder;
          +                    for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {
          +                        var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;
          +                        mtoken.matches.splice(position++, 0, {
          +                            fn: validator ? "string" == typeof validator ? new RegExp(validator) : new function() {
          +                                this.test = validator;
          +                            }() : new RegExp("."),
          +                            cardinality: cardinality ? cardinality : 1,
          +                            optionality: mtoken.isOptional,
          +                            newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
          +                            casing: maskdef.casing,
          +                            def: maskdef.definitionSymbol || element,
          +                            placeholder: maskdef.placeholder,
          +                            mask: element
          +                        }), prevMatch = mtoken.matches[position - 1];
          +                    }
          +                    mtoken.matches.splice(position++, 0, {
          +                        fn: maskdef.validator ? "string" == typeof maskdef.validator ? new RegExp(maskdef.validator) : new function() {
          +                            this.test = maskdef.validator;
          +                        }() : new RegExp("."),
          +                        cardinality: maskdef.cardinality,
          +                        optionality: mtoken.isOptional,
          +                        newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
          +                        casing: maskdef.casing,
          +                        def: maskdef.definitionSymbol || element,
          +                        placeholder: maskdef.placeholder,
          +                        mask: element
          +                    });
          +                } else mtoken.matches.splice(position++, 0, {
          +                    fn: null,
          +                    cardinality: 0,
          +                    optionality: mtoken.isOptional,
          +                    newBlockMarker: void 0 === prevMatch || prevMatch.def !== element,
          +                    casing: null,
          +                    def: opts.staticDefinitionSymbol || element,
          +                    placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0,
          +                    mask: element
          +                }), escaped = !1;
          +            }
          +            function verifyGroupMarker(lastMatch, isOpenGroup) {
          +                lastMatch.isGroup && (lastMatch.isGroup = !1, insertTestDefinition(lastMatch, opts.groupmarker.start, 0), 
          +                isOpenGroup !== !0 && insertTestDefinition(lastMatch, opts.groupmarker.end));
          +            }
          +            function maskCurrentToken(m, currentToken, lastMatch, extraCondition) {
          +                currentToken.matches.length > 0 && (void 0 === extraCondition || extraCondition) && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
          +                verifyGroupMarker(lastMatch)), insertTestDefinition(currentToken, m);
          +            }
          +            function defaultCase() {
          +                if (openenings.length > 0) {
          +                    if (currentOpeningToken = openenings[openenings.length - 1], maskCurrentToken(m, currentOpeningToken, lastMatch, !currentOpeningToken.isAlternator), 
          +                    currentOpeningToken.isAlternator) {
          +                        alternator = openenings.pop();
          +                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
          +                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
          +                    }
          +                } else maskCurrentToken(m, currentToken, lastMatch);
          +            }
          +            function reverseTokens(maskToken) {
          +                function reverseStatic(st) {
          +                    return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), 
          +                    st;
          +                }
          +                maskToken.matches = maskToken.matches.reverse();
          +                for (var match in maskToken.matches) {
          +                    var intMatch = parseInt(match);
          +                    if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {
          +                        var qt = maskToken.matches[match];
          +                        maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);
          +                    }
          +                    void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]);
          +                }
          +                return maskToken;
          +            }
          +            for (var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = []; match = tokenizer.exec(mask); ) if (m = match[0], 
          +            escaped) defaultCase(); else switch (m.charAt(0)) {
          +              case opts.escapeChar:
          +                escaped = !0;
          +                break;
          +
          +              case opts.optionalmarker.end:
          +              case opts.groupmarker.end:
          +                if (openingToken = openenings.pop(), void 0 !== openingToken) if (openenings.length > 0) {
          +                    if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), 
          +                    currentOpeningToken.isAlternator) {
          +                        alternator = openenings.pop();
          +                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
          +                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
          +                    }
          +                } else currentToken.matches.push(openingToken); else defaultCase();
          +                break;
          +
          +              case opts.optionalmarker.start:
          +                openenings.push(new MaskToken(!1, !0));
          +                break;
          +
          +              case opts.groupmarker.start:
          +                openenings.push(new MaskToken(!0));
          +                break;
          +
          +              case opts.quantifiermarker.start:
          +                var quantifier = new MaskToken(!1, !1, !0);
          +                m = m.replace(/[{}]/g, "");
          +                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
          +                if (("*" === mq1 || "+" === mq1) && (mq0 = "*" === mq1 ? 0 : 1), quantifier.quantifier = {
          +                    min: mq0,
          +                    max: mq1
          +                }, openenings.length > 0) {
          +                    var matches = openenings[openenings.length - 1].matches;
          +                    match = matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), groupToken.matches.push(match), 
          +                    match = groupToken), matches.push(match), matches.push(quantifier);
          +                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), 
          +                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
          +                currentToken.matches.push(quantifier);
          +                break;
          +
          +              case opts.alternatormarker:
          +                openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                lastMatch = currentOpeningToken.matches.pop()) : lastMatch = currentToken.matches.pop(), 
          +                lastMatch.isAlternator ? openenings.push(lastMatch) : (alternator = new MaskToken(!1, !1, !1, !0), 
          +                alternator.matches.push(lastMatch), openenings.push(alternator));
          +                break;
          +
          +              default:
          +                defaultCase();
          +            }
          +            for (;openenings.length > 0; ) openingToken = openenings.pop(), verifyGroupMarker(openingToken, !0), 
          +            currentToken.matches.push(openingToken);
          +            return currentToken.matches.length > 0 && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
          +            verifyGroupMarker(lastMatch), maskTokens.push(currentToken)), opts.numericInput && reverseTokens(maskTokens[0]), 
          +            maskTokens;
          +        }
          +        function generateMask(mask, metadata) {
          +            if (null === mask || "" === mask) return void 0;
          +            if (1 === mask.length && opts.greedy === !1 && 0 !== opts.repeat && (opts.placeholder = ""), 
          +            opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat) {
          +                var repeatStart = "*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat;
          +                mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end;
          +            }
          +            var masksetDefinition;
          +            return void 0 === Inputmask.prototype.masksCache[mask] || nocache === !0 ? (masksetDefinition = {
          +                mask: mask,
          +                maskToken: analyseMask(mask),
          +                validPositions: {},
          +                _buffer: void 0,
          +                buffer: void 0,
          +                tests: {},
          +                metadata: metadata
          +            }, nocache !== !0 && (Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask] = masksetDefinition, 
          +            masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]), 
          +            masksetDefinition;
          +        }
          +        function preProcessMask(mask) {
          +            return mask = mask.toString();
          +        }
          +        var ms;
          +        if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {
          +            if (opts.mask.length > 1) {
          +                opts.keepStatic = null === opts.keepStatic ? !0 : opts.keepStatic;
          +                var altMask = "(";
          +                return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {
          +                    altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 === msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
          +                }), altMask += ")", generateMask(altMask, opts.mask);
          +            }
          +            opts.mask = opts.mask.pop();
          +        }
          +        return opts.mask && (ms = void 0 === opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask)), 
          +        ms;
          +    }
          +    function maskScope(actionObj, maskset, opts) {
          +        function getMaskTemplate(baseOnInput, minimalPos, includeInput) {
          +            minimalPos = minimalPos || 0;
          +            var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();
          +            do {
          +                if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
          +                    var validPos = getMaskSet().validPositions[pos];
          +                    test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test));
          +                } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 
          +                ndxIntlzr = testPos.locator.slice(), (opts.jitMasking === !1 || lvp > pos || isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(getPlaceholder(pos, test));
          +                pos++;
          +            } while ((void 0 === maxLength || maxLength > pos - 1) && null !== test.fn || null === test.fn && "" !== test.def || minimalPos >= pos);
          +            return "" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), maskTemplate;
          +        }
          +        function getMaskSet() {
          +            return maskset;
          +        }
          +        function resetMaskSet(soft) {
          +            var maskset = getMaskSet();
          +            maskset.buffer = void 0, soft !== !0 && (maskset.tests = {}, maskset._buffer = void 0, 
          +            maskset.validPositions = {}, maskset.p = 0);
          +        }
          +        function getLastValidPosition(closestTo, strict, validPositions) {
          +            var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;
          +            void 0 === closestTo && (closestTo = -1);
          +            for (var posNdx in valids) {
          +                var psNdx = parseInt(posNdx);
          +                valids[psNdx] && (strict || null !== valids[psNdx].match.fn) && (closestTo >= psNdx && (before = psNdx), 
          +                psNdx >= closestTo && (after = psNdx));
          +            }
          +            return -1 !== before && closestTo - before > 1 || closestTo > after ? before : after;
          +        }
          +        function setValidPosition(pos, validTest, fromSetValid, isSelection) {
          +            if (isSelection || opts.insertMode && void 0 !== getMaskSet().validPositions[pos] && void 0 === fromSetValid) {
          +                var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition();
          +                for (i = pos; lvp >= i; i++) delete getMaskSet().validPositions[i];
          +                getMaskSet().validPositions[pos] = validTest;
          +                var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1;
          +                for (i = j = pos; lvp >= i; i++) {
          +                    var t = positionsClone[i];
          +                    if (void 0 !== t) for (var posMatch = j, prevPosMatch = -1; posMatch < getMaskLength() && (null == t.match.fn && vps[i] && (vps[i].match.optionalQuantifier === !0 || vps[i].match.optionality === !0) || null != t.match.fn); ) {
          +                        if (null === t.match.fn || !opts.keepStatic && vps[i] && (void 0 !== vps[i + 1] && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || void 0 !== vps[i].alternation) ? posMatch++ : posMatch = seekNext(j), 
          +                        needsValidation === !1 && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) {
          +                            getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), 
          +                            getMaskSet().validPositions[posMatch].input = t.input, j = posMatch, valid = !0;
          +                            break;
          +                        }
          +                        if (positionCanMatchDefinition(posMatch, t.match.def)) {
          +                            var result = isValid(posMatch, t.input, !0, !0);
          +                            if (valid = result !== !1, j = result.caret || result.insert ? getLastValidPosition() : posMatch, 
          +                            needsValidation = !0, valid) break;
          +                        } else {
          +                            if (valid = null == t.match.fn, prevPosMatch === posMatch) break;
          +                            prevPosMatch = posMatch;
          +                        }
          +                    }
          +                    if (!valid) break;
          +                }
          +                if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
          +                resetMaskSet(!0), !1;
          +            } else getMaskSet().validPositions[pos] = validTest;
          +            return resetMaskSet(!0), !0;
          +        }
          +        function stripValidPositions(start, end, nocheck, strict) {
          +            function IsEnclosedStatic(pos) {
          +                var posMatch = getMaskSet().validPositions[pos];
          +                if (void 0 !== posMatch && null === posMatch.match.fn) {
          +                    var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];
          +                    return void 0 !== prevMatch && void 0 !== nextMatch;
          +                }
          +                return !1;
          +            }
          +            var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1;
          +            for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) void 0 !== getMaskSet().validPositions[i] && (nocheck === !0 || !IsEnclosedStatic(i) && opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts) !== !1) && delete getMaskSet().validPositions[i];
          +            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
          +                for (;void 0 !== getMaskSet().validPositions[startPos]; ) startPos++;
          +                var s = getMaskSet().validPositions[startPos];
          +                if (startPos > i && (i = startPos + 1), void 0 === getMaskSet().validPositions[i] && isMask(i) || void 0 !== s) i++; else {
          +                    var t = getTestTemplate(i);
          +                    needsValidation === !1 && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), 
          +                    getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], 
          +                    i++) : positionCanMatchDefinition(startPos, t.match.def) ? isValid(startPos, t.input || getPlaceholder(i), !0) !== !1 && (delete getMaskSet().validPositions[i], 
          +                    i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++;
          +                }
          +            }
          +            resetMaskSet(!0);
          +        }
          +        function getTestTemplate(pos, ndxIntlzr, tstPs) {
          +            var testPos = getMaskSet().validPositions[pos];
          +            if (void 0 === testPos) for (var testPositions = getTests(pos, ndxIntlzr, tstPs), lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation].toString().split(",") : [], ndx = 0; ndx < testPositions.length && (testPos = testPositions[ndx], 
          +            !(testPos.match && (opts.greedy && testPos.match.optionalQuantifier !== !0 || (testPos.match.optionality === !1 || testPos.match.newBlockMarker === !1) && testPos.match.optionalQuantifier !== !0) && (void 0 === lvTest.alternation || lvTest.alternation !== testPos.alternation || void 0 !== testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr)))); ndx++) ;
          +            return testPos;
          +        }
          +        function getTest(pos) {
          +            return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos].match : getTests(pos)[0].match;
          +        }
          +        function positionCanMatchDefinition(pos, def) {
          +            for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {
          +                valid = !0;
          +                break;
          +            }
          +            return valid;
          +        }
          +        function selectBestMatch(pos, alternateNdx) {
          +            var bestMatch, indexPos;
          +            return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {
          +                var ndxPos = lmnt.alternation ? lmnt.locator[lmnt.alternation].toString().indexOf(alternateNdx) : -1;
          +                (void 0 === indexPos || indexPos > ndxPos) && -1 !== ndxPos && (bestMatch = lmnt, 
          +                indexPos = ndxPos);
          +            }), bestMatch;
          +        }
          +        function getTests(pos, ndxIntlzr, tstPs) {
          +            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {
          +                function handleMatch(match, loopNdx, quantifierRecurse) {
          +                    function isFirstMatch(latestMatch, tokenGroup) {
          +                        var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);
          +                        return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {
          +                            return match.isQuantifier === !0 && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1])) ? !1 : void 0;
          +                        }), firstMatch;
          +                    }
          +                    function resolveNdxInitializer(pos, alternateNdx) {
          +                        var bestMatch = selectBestMatch(pos, alternateNdx);
          +                        return bestMatch ? bestMatch.locator.slice(bestMatch.alternation + 1) : [];
          +                    }
          +                    if (testPos > 1e4) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask;
          +                    if (testPos === pos && void 0 === match.matches) return matches.push({
          +                        match: match,
          +                        locator: loopNdx.reverse(),
          +                        cd: cacheDependency
          +                    }), !0;
          +                    if (void 0 !== match.matches) {
          +                        if (match.isGroup && quantifierRecurse !== match) {
          +                            if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;
          +                        } else if (match.isOptional) {
          +                            var optionalToken = match;
          +                            if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {
          +                                if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;
          +                                insertStop = !0, testPos = pos;
          +                            }
          +                        } else if (match.isAlternator) {
          +                            var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;
          +                            if (-1 === altIndex || "string" == typeof altIndex) {
          +                                var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];
          +                                if ("string" == typeof altIndex) altIndexArr = altIndex.split(","); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);
          +                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {
          +                                    if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx), 
          +                                    match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match, 
          +                                    match !== !0 && void 0 !== match && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {
          +                                        var ntndx = $.inArray(match, maskToken.matches) + 1;
          +                                        maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse), 
          +                                        match && (altIndexArr.push(ntndx.toString()), $.each(matches, function(ndx, lmnt) {
          +                                            lmnt.alternation = loopNdx.length - 1;
          +                                        })));
          +                                    }
          +                                    maltMatches = matches.slice(), testPos = currentPos, matches = [];
          +                                    for (var i = 0; i < ndxInitializerClone.length; i++) ndxInitializer[i] = ndxInitializerClone[i];
          +                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {
          +                                        var altMatch = maltMatches[ndx1];
          +                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;
          +                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
          +                                            var altMatch2 = malternateMatches[ndx2];
          +                                            if (altMatch.match.def === altMatch2.match.def && ("string" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr))) {
          +                                                altMatch.match.mask === altMatch2.match.mask && (maltMatches.splice(ndx1, 1), ndx1--), 
          +                                                -1 === altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 
          +                                                altMatch2.alternation = altMatch.alternation);
          +                                                break;
          +                                            }
          +                                        }
          +                                    }
          +                                    malternateMatches = malternateMatches.concat(maltMatches);
          +                                }
          +                                "string" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {
          +                                    if (isFinite(ndx)) {
          +                                        var mamatch, alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(",");
          +                                        lmnt.locator[alternation] = void 0, lmnt.alternation = void 0;
          +                                        for (var alndx = 0; alndx < altLocArr.length; alndx++) mamatch = -1 !== $.inArray(altLocArr[alndx], altIndexArr), 
          +                                        mamatch && (void 0 !== lmnt.locator[alternation] ? (lmnt.locator[alternation] += ",", 
          +                                        lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), 
          +                                        lmnt.alternation = alternation);
          +                                        if (void 0 !== lmnt.locator[alternation]) return lmnt;
          +                                    }
          +                                })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0;
          +                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);
          +                            if (match) return !0;
          +                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && pos >= testPos; qndx++) {
          +                            var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];
          +                            if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {
          +                                if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, 
          +                                isFirstMatch(latestMatch, tokenGroup)) {
          +                                    if (qndx > qt.quantifier.min - 1) {
          +                                        insertStop = !0, testPos = pos;
          +                                        break;
          +                                    }
          +                                    return !0;
          +                                }
          +                                return !0;
          +                            }
          +                        } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;
          +                    } else testPos++;
          +                }
          +                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (maskToken.matches[tndx].isQuantifier !== !0) {
          +                    var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);
          +                    if (match && testPos === pos) return match;
          +                    if (testPos > pos) break;
          +                }
          +            }
          +            function mergeLocators(tests) {
          +                var locator = [];
          +                return $.isArray(tests) || (tests = [ tests ]), void 0 === tests[0].alternation ? locator = tests[0].locator.slice() : $.each(tests, function(ndx, tst) {
          +                    if ("" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += "," + tst.locator[i]);
          +                }), locator;
          +            }
          +            var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr || [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : "";
          +            if (pos > -1) {
          +                if (void 0 === ndxIntlzr) {
          +                    for (var test, previousPos = pos - 1; void 0 === (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) && previousPos > -1; ) previousPos--;
          +                    void 0 !== test && previousPos > -1 && (ndxInitializer = mergeLocators(test), cacheDependency = ndxInitializer.join(""), 
          +                    testPos = previousPos);
          +                }
          +                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return getMaskSet().tests[pos];
          +                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {
          +                    var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);
          +                    if (match && testPos === pos || testPos > pos) break;
          +                }
          +            }
          +            return (0 === matches.length || insertStop) && matches.push({
          +                match: {
          +                    fn: null,
          +                    cardinality: 0,
          +                    optionality: !0,
          +                    casing: null,
          +                    def: ""
          +                },
          +                locator: []
          +            }), getMaskSet().tests[pos] = $.extend(!0, [], matches), getMaskSet().tests[pos];
          +        }
          +        function getBufferTemplate() {
          +            return void 0 === getMaskSet()._buffer && (getMaskSet()._buffer = getMaskTemplate(!1, 1)), 
          +            getMaskSet()._buffer;
          +        }
          +        function getBuffer(noCache) {
          +            if (void 0 === getMaskSet().buffer || noCache === !0) {
          +                if (noCache === !0) for (var testNdx in getMaskSet().tests) void 0 === getMaskSet().validPositions[testNdx] && delete getMaskSet().tests[testNdx];
          +                getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0);
          +            }
          +            return getMaskSet().buffer;
          +        }
          +        function refreshFromBuffer(start, end, buffer) {
          +            var i;
          +            if (buffer = buffer, start === !0) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; end > i; i++) delete getMaskSet().validPositions[i], 
          +            delete getMaskSet().tests[i];
          +            for (i = start; end > i; i++) resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter && isValid(i, buffer[i], !0, !0);
          +        }
          +        function casing(elem, test) {
          +            switch (test.casing) {
          +              case "upper":
          +                elem = elem.toUpperCase();
          +                break;
          +
          +              case "lower":
          +                elem = elem.toLowerCase();
          +            }
          +            return elem;
          +        }
          +        function checkAlternationMatch(altArr1, altArr2) {
          +            for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {
          +                isMatch = !0;
          +                break;
          +            }
          +            return isMatch;
          +        }
          +        function isValid(pos, c, strict, fromSetValid) {
          +            function isSelection(posObj) {
          +                return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 && opts.insertMode : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1 && opts.insertMode;
          +            }
          +            function _isValid(position, c, strict, fromSetValid) {
          +                var rslt = !1;
          +                return $.each(getTests(position), function(ndx, tst) {
          +                    for (var test = tst.match, loopend = c ? 1 : 0, chrs = "", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));
          +                    if (c && (chrs += c), getBuffer(!0), rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : c !== test.def && c !== opts.skipOptionalPartCharacter || "" === test.def ? !1 : {
          +                        c: test.placeholder || test.def,
          +                        pos: position
          +                    }, rslt !== !1) {
          +                        var elem = void 0 !== rslt.c ? rslt.c : c;
          +                        elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? test.placeholder || test.def : elem;
          +                        var validatedPos = position, possibleModifiedBuffer = getBuffer();
          +                        if (void 0 !== rslt.remove && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), 
          +                        $.each(rslt.remove.sort(function(a, b) {
          +                            return b - a;
          +                        }), function(ndx, lmnt) {
          +                            stripValidPositions(lmnt, lmnt + 1, !0);
          +                        })), void 0 !== rslt.insert && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), 
          +                        $.each(rslt.insert.sort(function(a, b) {
          +                            return a - b;
          +                        }), function(ndx, lmnt) {
          +                            isValid(lmnt.pos, lmnt.c, !1, fromSetValid);
          +                        })), rslt.refreshFromBuffer) {
          +                            var refresh = rslt.refreshFromBuffer;
          +                            if (strict = !0, refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), 
          +                            void 0 === rslt.pos && void 0 === rslt.c) return rslt.pos = getLastValidPosition(), 
          +                            !1;
          +                            if (validatedPos = void 0 !== rslt.pos ? rslt.pos : position, validatedPos !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), 
          +                            !1;
          +                        } else if (rslt !== !0 && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos, 
          +                        refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), 
          +                        !1;
          +                        return rslt !== !0 && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (ndx > 0 && resetMaskSet(!0), 
          +                        setValidPosition(validatedPos, $.extend({}, tst, {
          +                            input: casing(elem, test)
          +                        }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);
          +                    }
          +                }), rslt;
          +            }
          +            function alternate(pos, c, strict, fromSetValid) {
          +                for (var lastAlt, alternation, isValidRslt, altPos, i, validPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), testsClone = $.extend(!0, {}, getMaskSet().tests), lAlt = getLastValidPosition(); lAlt >= 0 && (altPos = getMaskSet().validPositions[lAlt], 
          +                !altPos || void 0 === altPos.alternation || (lastAlt = lAlt, alternation = getMaskSet().validPositions[lastAlt].alternation, 
          +                getTestTemplate(lastAlt).locator[altPos.alternation] === altPos.locator[altPos.alternation])); lAlt--) ;
          +                if (void 0 !== alternation) {
          +                    lastAlt = parseInt(lastAlt);
          +                    for (var decisionPos in getMaskSet().validPositions) if (decisionPos = parseInt(decisionPos), 
          +                    altPos = getMaskSet().validPositions[decisionPos], decisionPos >= lastAlt && void 0 !== altPos.alternation) {
          +                        var altNdxs;
          +                        0 === lastAlt ? (altNdxs = [], $.each(getMaskSet().tests[lastAlt], function(ndx, test) {
          +                            void 0 !== test.locator[alternation] && (altNdxs = altNdxs.concat(test.locator[alternation].toString().split(",")));
          +                        })) : altNdxs = getMaskSet().validPositions[lastAlt].locator[alternation].toString().split(",");
          +                        var decisionTaker = void 0 !== altPos.locator[alternation] ? altPos.locator[alternation] : altNdxs[0];
          +                        decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(",")[0]);
          +                        for (var mndx = 0; mndx < altNdxs.length; mndx++) {
          +                            var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0;
          +                            if (decisionTaker < altNdxs[mndx]) {
          +                                for (var possibilityPos, possibilities, dp = decisionPos; dp >= 0; dp--) if (possibilityPos = getMaskSet().validPositions[dp], 
          +                                void 0 !== possibilityPos) {
          +                                    var bestMatch = selectBestMatch(dp, altNdxs[mndx]);
          +                                    getMaskSet().validPositions[dp].match.def !== bestMatch.match.def && (validInputs.push(getMaskSet().validPositions[dp].input), 
          +                                    getMaskSet().validPositions[dp] = bestMatch, getMaskSet().validPositions[dp].input = getPlaceholder(dp), 
          +                                    null === getMaskSet().validPositions[dp].match.fn && staticInputsBeforePosAlternate++, 
          +                                    possibilityPos = bestMatch), possibilities = possibilityPos.locator[alternation], 
          +                                    possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]);
          +                                    break;
          +                                }
          +                                if (decisionTaker !== possibilityPos.locator[alternation]) {
          +                                    for (i = decisionPos + 1; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = getMaskSet().validPositions[i], 
          +                                    validPos && null != validPos.match.fn ? validInputs.push(validPos.input) : pos > i && staticInputsBeforePos++, 
          +                                    delete getMaskSet().validPositions[i], delete getMaskSet().tests[i];
          +                                    for (resetMaskSet(!0), opts.keepStatic = !opts.keepStatic, isValidRslt = !0; validInputs.length > 0; ) {
          +                                        var input = validInputs.shift();
          +                                        if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(void 0, !0) + 1, input, !1, fromSetValid))) break;
          +                                    }
          +                                    if (possibilityPos.alternation = alternation, possibilityPos.locator[alternation] = possibilities, 
          +                                    isValidRslt) {
          +                                        var targetLvp = getLastValidPosition(pos) + 1;
          +                                        for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) validPos = getMaskSet().validPositions[i], 
          +                                        (void 0 === validPos || null == validPos.match.fn) && pos > i && staticInputsBeforePosAlternate++;
          +                                        pos += staticInputsBeforePosAlternate - staticInputsBeforePos, isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid);
          +                                    }
          +                                    if (opts.keepStatic = !opts.keepStatic, isValidRslt) return isValidRslt;
          +                                    resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone), getMaskSet().tests = $.extend(!0, {}, testsClone);
          +                                }
          +                            }
          +                        }
          +                        break;
          +                    }
          +                }
          +                return !1;
          +            }
          +            function trackbackAlternations(originalPos, newPos) {
          +                for (var vp = getMaskSet().validPositions[newPos], targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; newPos > ps; ps++) if (void 0 === getMaskSet().validPositions[ps] && !isMask(ps, !0)) {
          +                    var tests = getTests(ps), bestMatch = tests[0], equality = -1;
          +                    $.each(tests, function(ndx, tst) {
          +                        for (var i = 0; tll > i && (void 0 !== tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(","), targetLocator[i].toString().split(","))); i++) i > equality && (equality = i, 
          +                        bestMatch = tst);
          +                    }), setValidPosition(ps, $.extend({}, bestMatch, {
          +                        input: bestMatch.match.placeholder || bestMatch.match.def
          +                    }), !0);
          +                }
          +            }
          +            strict = strict === !0;
          +            var maskPos = pos;
          +            void 0 !== pos.begin && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);
          +            for (var result = !1, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;
          +            var testTemplate;
          +            for (pndx++; maskPos > pndx; pndx++) void 0 === getMaskSet().validPositions[pndx] && (opts.jitMasking === !1 || opts.jitMasking > pndx) && ((testTemplate = getTestTemplate(pndx)).match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && _isValid(getLastValidPosition(pndx, !0) + 1, testTemplate.match.placeholder || (null == testTemplate.match.fn ? testTemplate.match.def : "" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0, fromSetValid);
          +            if (isSelection(pos) && (handleRemove(void 0, Inputmask.keyCode.DELETE, pos), maskPos = getMaskSet().p), 
          +            maskPos < getMaskLength() && (result = _isValid(maskPos, c, strict, fromSetValid), 
          +            (!strict || fromSetValid === !0) && result === !1)) {
          +                var currentPosValid = getMaskSet().validPositions[maskPos];
          +                if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {
          +                    if ((opts.insertMode || void 0 === getMaskSet().validPositions[seekNext(maskPos)]) && !isMask(maskPos, !0)) {
          +                        var staticChar = getTestTemplate(maskPos).match;
          +                        staticChar = staticChar.placeholder || staticChar.def, _isValid(maskPos, staticChar, strict, fromSetValid);
          +                        for (var nPos = maskPos + 1, snPos = seekNext(maskPos); snPos >= nPos; nPos++) if (result = _isValid(nPos, c, strict, fromSetValid), 
          +                        result !== !1) {
          +                            trackbackAlternations(maskPos, nPos), maskPos = nPos;
          +                            break;
          +                        }
          +                    }
          +                } else result = {
          +                    caret: seekNext(maskPos)
          +                };
          +            }
          +            return result === !1 && opts.keepStatic && (result = alternate(maskPos, c, strict, fromSetValid)), 
          +            result === !0 && (result = {
          +                pos: maskPos
          +            }), $.isFunction(opts.postValidation) && result !== !1 && !strict && fromSetValid !== !0 && (result = opts.postValidation(getBuffer(!0), result, opts) ? result : !1), 
          +            void 0 === result.pos && (result.pos = maskPos), result === !1 && (resetMaskSet(!0), 
          +            getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;
          +        }
          +        function isMask(pos, strict) {
          +            var test;
          +            if (strict ? (test = getTestTemplate(pos).match, "" === test.def && (test = getTest(pos))) : test = getTest(pos), 
          +            null != test.fn) return test.fn;
          +            if (strict !== !0 && pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
          +                var tests = getTests(pos);
          +                return tests.length > 2;
          +            }
          +            return !1;
          +        }
          +        function getMaskLength() {
          +            var maskLength;
          +            maxLength = void 0 !== el ? el.maxLength : void 0, -1 === maxLength && (maxLength = void 0);
          +            var pos, lvp = getLastValidPosition(), testPos = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== testPos ? testPos.locator.slice() : void 0;
          +            for (pos = lvp + 1; void 0 === testPos || null !== testPos.match.fn || null === testPos.match.fn && "" !== testPos.match.def; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
          +            ndxIntlzr = testPos.locator.slice();
          +            var lastTest = getTest(pos - 1);
          +            return maskLength = "" !== lastTest.def ? pos : pos - 1, void 0 === maxLength || maxLength > maskLength ? maskLength : maxLength;
          +        }
          +        function seekNext(pos, newBlock) {
          +            var maskL = getMaskLength();
          +            if (pos >= maskL) return maskL;
          +            for (var position = pos; ++position < maskL && (newBlock === !0 && (getTest(position).newBlockMarker !== !0 || !isMask(position)) || newBlock !== !0 && !isMask(position) && (opts.nojumps !== !0 || opts.nojumpsThreshold > position)); ) ;
          +            return position;
          +        }
          +        function seekPrevious(pos, newBlock) {
          +            var position = pos;
          +            if (0 >= position) return 0;
          +            for (;--position > 0 && (newBlock === !0 && getTest(position).newBlockMarker !== !0 || newBlock !== !0 && !isMask(position)); ) ;
          +            return position;
          +        }
          +        function getBufferElement(position) {
          +            return void 0 === getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input;
          +        }
          +        function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
          +            if (event && $.isFunction(opts.onBeforeWrite)) {
          +                var result = opts.onBeforeWrite(event, buffer, caretPos, opts);
          +                if (result) {
          +                    if (result.refreshFromBuffer) {
          +                        var refresh = result.refreshFromBuffer;
          +                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
          +                        buffer = getBuffer(!0);
          +                    }
          +                    void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos);
          +                }
          +            }
          +            input.inputmask._valueSet(buffer.join("")), void 0 === caretPos || void 0 !== event && "blur" === event.type || caret(input, caretPos), 
          +            triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input"));
          +        }
          +        function getPlaceholder(pos, test) {
          +            if (test = test || getTest(pos), void 0 !== test.placeholder) return test.placeholder;
          +            if (null === test.fn) {
          +                if (pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
          +                    var prevTest, tests = getTests(pos), staticAlternations = [];
          +                    if (tests.length > 2) for (var i = 0; i < tests.length; i++) if (tests[i].match.optionality !== !0 && tests[i].match.optionalQuantifier !== !0 && (null === tests[i].match.fn || void 0 === prevTest || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts) !== !1) && (staticAlternations.push(tests[i]), 
          +                    null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1)) return opts.placeholder.charAt(pos % opts.placeholder.length);
          +                }
          +                return test.def;
          +            }
          +            return opts.placeholder.charAt(pos % opts.placeholder.length);
          +        }
          +        function checkVal(input, writeOut, strict, nptvl) {
          +            function isTemplateMatch() {
          +                var isMatch = !1, charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join("").indexOf(charCodes);
          +                if (-1 !== charCodeNdx && !isMask(initialNdx)) {
          +                    isMatch = !0;
          +                    for (var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx), i = 0; i < bufferTemplateArr.length; i++) if (" " !== bufferTemplateArr[i]) {
          +                        isMatch = !1;
          +                        break;
          +                    }
          +                }
          +                return isMatch;
          +            }
          +            var result, inputValue = nptvl.slice(), charCodes = "", initialNdx = 0;
          +            if (resetMaskSet(), getMaskSet().p = seekNext(-1), !strict) if (opts.autoUnmask !== !0) {
          +                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g"));
          +                matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), 
          +                initialNdx = seekNext(initialNdx));
          +            } else initialNdx = seekNext(initialNdx);
          +            $.each(inputValue, function(ndx, charCode) {
          +                if (void 0 !== charCode) {
          +                    var keypress = new $.Event("keypress");
          +                    keypress.which = charCode.charCodeAt(0), charCodes += charCode;
          +                    var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
          +                    if (!isTemplateMatch() || strict || opts.autoUnmask) {
          +                        var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;
          +                        result = keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 
          +                        charCodes = "";
          +                    } else result = keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);
          +                    if (!strict && $.isFunction(opts.onBeforeWrite) && (result = opts.onBeforeWrite(keypress, getBuffer(), result.forwardPosition, opts), 
          +                    result && result.refreshFromBuffer)) {
          +                        var refresh = result.refreshFromBuffer;
          +                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 
          +                        resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
          +                    }
          +                }
          +            }), writeOut && writeBuffer(input, getBuffer(), document.activeElement === input ? seekNext(getLastValidPosition(0)) : void 0, new $.Event("checkval"));
          +        }
          +        function unmaskedvalue(input) {
          +            if (input && void 0 === input.inputmask) return input.value;
          +            var umValue = [], vps = getMaskSet().validPositions;
          +            for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);
          +            var unmaskedValue = 0 === umValue.length ? null : (isRTL ? umValue.reverse() : umValue).join("");
          +            if (null !== unmaskedValue) {
          +                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join("");
          +                $.isFunction(opts.onUnMask) && (unmaskedValue = opts.onUnMask(bufferValue, unmaskedValue, opts) || unmaskedValue);
          +            }
          +            return unmaskedValue;
          +        }
          +        function caret(input, begin, end, notranslate) {
          +            function translatePosition(pos) {
          +                if (notranslate !== !0 && isRTL && "number" == typeof pos && (!opts.greedy || "" !== opts.placeholder)) {
          +                    var bffrLght = getBuffer().join("").length;
          +                    pos = bffrLght - pos;
          +                }
          +                return pos;
          +            }
          +            var range;
          +            if ("number" != typeof begin) return input.setSelectionRange ? (begin = input.selectionStart, 
          +            end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), 
          +            (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) && (begin = range.startOffset, 
          +            end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), 
          +            begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length), 
          +            end = begin + range.text.length), {
          +                begin: translatePosition(begin),
          +                end: translatePosition(end)
          +            };
          +            begin = translatePosition(begin), end = translatePosition(end), end = "number" == typeof end ? end : begin;
          +            var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;
          +            if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || opts.insertMode !== !1 || begin !== end || end++, 
          +            input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {
          +                if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) {
          +                    var textNode = document.createTextNode("");
          +                    input.appendChild(textNode);
          +                }
          +                range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), 
          +                range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), 
          +                range.collapse(!0);
          +                var sel = window.getSelection();
          +                sel.removeAllRanges(), sel.addRange(range);
          +            } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), 
          +            range.moveEnd("character", end), range.moveStart("character", begin), range.select());
          +        }
          +        function determineLastRequiredPosition(returnDefinition) {
          +            var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0;
          +            for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
          +            ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos);
          +            var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0;
          +            for (pos = bl - 1; pos > lvp && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && "" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;
          +            return returnDefinition ? {
          +                l: bl,
          +                def: positions[bl] ? positions[bl].match : void 0
          +            } : bl;
          +        }
          +        function clearOptionalTail(buffer) {
          +            for (var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
          +            return buffer.splice(rl, lmib + 1 - rl), buffer;
          +        }
          +        function isComplete(buffer) {
          +            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);
          +            if ("*" === opts.repeat) return void 0;
          +            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
          +            if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {
          +                complete = !0;
          +                for (var i = 0; aml >= i; i++) {
          +                    var test = getTestTemplate(i).match;
          +                    if (null !== test.fn && void 0 === getMaskSet().validPositions[i] && test.optionality !== !0 && test.optionalQuantifier !== !0 || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {
          +                        complete = !1;
          +                        break;
          +                    }
          +                }
          +            }
          +            return complete;
          +        }
          +        function patchValueProperty(npt) {
          +            function patchValhook(type) {
          +                if ($.valHooks && (void 0 === $.valHooks[type] || $.valHooks[type].inputmaskpatch !== !0)) {
          +                    var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {
          +                        return elem.value;
          +                    }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {
          +                        return elem.value = value, elem;
          +                    };
          +                    $.valHooks[type] = {
          +                        get: function(elem) {
          +                            if (elem.inputmask) {
          +                                if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();
          +                                var result = valhookGet(elem);
          +                                return -1 !== getLastValidPosition(void 0, void 0, elem.inputmask.maskset.validPositions) || opts.nullable !== !0 ? result : "";
          +                            }
          +                            return valhookGet(elem);
          +                        },
          +                        set: function(elem, value) {
          +                            var result, $elem = $(elem);
          +                            return result = valhookSet(elem, value), elem.inputmask && $elem.trigger("setvalue"), 
          +                            result;
          +                        },
          +                        inputmaskpatch: !0
          +                    };
          +                }
          +            }
          +            function getter() {
          +                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || opts.nullable !== !0 ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : "" : valueGet.call(this);
          +            }
          +            function setter(value) {
          +                valueSet.call(this, value), this.inputmask && $(this).trigger("setvalue");
          +            }
          +            function installNativeValueSetFallback(npt) {
          +                EventRuler.on(npt, "mouseenter", function(event) {
          +                    var $input = $(this), input = this, value = input.inputmask._valueGet();
          +                    value !== getBuffer().join("") && $input.trigger("setvalue");
          +                });
          +            }
          +            var valueGet, valueSet;
          +            if (!npt.inputmask.__valueGet) {
          +                if (Object.getOwnPropertyDescriptor) {
          +                    "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
          +                        return object.__proto__;
          +                    } : function(object) {
          +                        return object.constructor.prototype;
          +                    });
          +                    var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
          +                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
          +                    valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
          +                        get: getter,
          +                        set: setter,
          +                        configurable: !0
          +                    })) : "INPUT" !== npt.tagName && (valueGet = function() {
          +                        return this.textContent;
          +                    }, valueSet = function(value) {
          +                        this.textContent = value;
          +                    }, Object.defineProperty(npt, "value", {
          +                        get: getter,
          +                        set: setter,
          +                        configurable: !0
          +                    }));
          +                } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
          +                valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
          +                npt.__defineSetter__("value", setter));
          +                npt.inputmask.__valueGet = valueGet, npt.inputmask._valueGet = function(overruleRTL) {
          +                    return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el);
          +                }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) {
          +                    valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value);
          +                }, void 0 === valueGet && (valueGet = function() {
          +                    return this.value;
          +                }, valueSet = function(value) {
          +                    this.value = value;
          +                }, patchValhook(npt.type), installNativeValueSetFallback(npt));
          +            }
          +        }
          +        function handleRemove(input, k, pos, strict) {
          +            function generalize() {
          +                if (opts.keepStatic) {
          +                    resetMaskSet(!0);
          +                    var lastAlt, validInputs = [], positionsClone = $.extend(!0, {}, getMaskSet().validPositions);
          +                    for (lastAlt = getLastValidPosition(); lastAlt >= 0; lastAlt--) {
          +                        var validPos = getMaskSet().validPositions[lastAlt];
          +                        if (validPos && (null != validPos.match.fn && validInputs.push(validPos.input), 
          +                        delete getMaskSet().validPositions[lastAlt], void 0 !== validPos.alternation && validPos.locator[validPos.alternation] === getTestTemplate(lastAlt).locator[validPos.alternation])) break;
          +                    }
          +                    if (lastAlt > -1) for (;validInputs.length > 0; ) {
          +                        getMaskSet().p = seekNext(getLastValidPosition());
          +                        var keypress = new $.Event("keypress");
          +                        keypress.which = validInputs.pop().charCodeAt(0), keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);
          +                    } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);
          +                }
          +            }
          +            if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), 
          +            isRTL)) {
          +                var pend = pos.end;
          +                pos.end = pos.begin, pos.begin = pend;
          +            }
          +            k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode === !1) ? (pos.begin = seekPrevious(pos.begin), 
          +            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1, 
          +            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.end++), 
          +            stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0 && generalize();
          +            var lvp = getLastValidPosition(pos.begin);
          +            lvp < pos.begin ? (-1 === lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : strict !== !0 && (getMaskSet().p = pos.begin);
          +        }
          +        function keydownEvent(e) {
          +            var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
          +            if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) e.preventDefault(), 
          +            handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
          +            input.inputmask._valueGet() === getBufferTemplate().join("") ? $input.trigger("cleared") : isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
          +            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {
          +                e.preventDefault();
          +                var caretPos = seekNext(getLastValidPosition());
          +                opts.insertMode || caretPos !== getMaskLength() || e.shiftKey || caretPos--, caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
          +            } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 
          +            caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && e.altKey !== !0 ? (checkVal(input, !0, !1, undoValue.split("")), 
          +            $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? opts.tabThrough === !0 && k === Inputmask.keyCode.TAB ? (e.shiftKey === !0 ? (null === getTest(pos.begin).fn && (pos.begin = seekNext(pos.begin)), 
          +            pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 
          +            pos.end = seekNext(pos.begin, !0), pos.end < getMaskLength() && pos.end--), pos.begin < getMaskLength() && (e.preventDefault(), 
          +            caret(input, pos.begin, pos.end))) : opts.insertMode !== !1 || e.shiftKey || (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {
          +                var caretPos = caret(input);
          +                caret(input, caretPos.begin);
          +            }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {
          +                var caretPos = caret(input);
          +                caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
          +            }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskLength() ? pos.begin : pos.begin - 1));
          +            opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);
          +        }
          +        function keypressEvent(e, checkval, writeOut, strict, ndx) {
          +            var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;
          +            if (!(checkval === !0 || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("") && (undoValue = getBuffer().join(""), 
          +            setTimeout(function() {
          +                $input.trigger("change");
          +            }, 0)), !0;
          +            if (k) {
          +                46 === k && e.shiftKey === !1 && "," === opts.radixPoint && (k = 44);
          +                var forwardPosition, pos = checkval ? {
          +                    begin: ndx,
          +                    end: ndx
          +                } : caret(input), c = String.fromCharCode(k);
          +                getMaskSet().writeOutBuffer = !0;
          +                var valResult = isValid(pos, c, strict);
          +                if (valResult !== !1) {
          +                    var p = valResult.pos;
          +                    if (resetMaskSet(!0), void 0 !== valResult.caret) forwardPosition = valResult.caret; else {
          +                        var vps = getMaskSet().validPositions;
          +                        forwardPosition = !opts.keepStatic && (void 0 !== vps[p + 1] && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || void 0 !== vps[p].alternation) ? p + 1 : seekNext(p);
          +                    }
          +                    getMaskSet().p = forwardPosition;
          +                }
          +                if (writeOut !== !1) {
          +                    var self = this;
          +                    if (setTimeout(function() {
          +                        opts.onKeyValidation.call(self, k, valResult, opts);
          +                    }, 0), getMaskSet().writeOutBuffer && valResult !== !1) {
          +                        var buffer = getBuffer();
          +                        writeBuffer(input, buffer, opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0), 
          +                        checkval !== !0 && setTimeout(function() {
          +                            isComplete(buffer) === !0 && $input.trigger("complete");
          +                        }, 0);
          +                    }
          +                }
          +                if (opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask), e.preventDefault(), 
          +                checkval) return valResult.forwardPosition = forwardPosition, valResult;
          +            }
          +        }
          +        function pasteEvent(e) {
          +            var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);
          +            isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);
          +            var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);
          +            valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("") && (valueBeforeCaret = ""), 
          +            valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("") && (valueAfterCaret = ""), 
          +            isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), 
          +            window.clipboardData && window.clipboardData.getData ? inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret : ev.clipboardData && ev.clipboardData.getData && (inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret);
          +            var pasteValue = inputValue;
          +            if ($.isFunction(opts.onBeforePaste)) {
          +                if (pasteValue = opts.onBeforePaste(inputValue, opts), pasteValue === !1) return e.preventDefault();
          +                pasteValue || (pasteValue = inputValue);
          +            }
          +            return checkVal(input, !1, !1, isRTL ? pasteValue.split("").reverse() : pasteValue.toString().split("")), 
          +            writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, !0), isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
          +            e.preventDefault();
          +        }
          +        function inputFallBackEvent(e) {
          +            var input = this, inputValue = input.inputmask._valueGet();
          +            if (getBuffer().join("") !== inputValue) {
          +                var caretPos = caret(input);
          +                if (inputValue = inputValue.replace(new RegExp("(" + Inputmask.escapeRegex(getBufferTemplate().join("")) + ")*"), ""), 
          +                iemobile) {
          +                    var inputChar = inputValue.replace(getBuffer().join(""), "");
          +                    if (1 === inputChar.length) {
          +                        var keypress = new $.Event("keypress");
          +                        return keypress.which = inputChar.charCodeAt(0), keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), 
          +                        !1;
          +                    }
          +                }
          +                if (caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input)), 
          +                getBuffer().length - inputValue.length !== 1 || inputValue.charAt(caretPos.begin) === getBuffer()[caretPos.begin] || inputValue.charAt(caretPos.begin + 1) === getBuffer()[caretPos.begin] || isMask(caretPos.begin)) {
          +                    for (var lvp = getLastValidPosition() + 1, bufferTemplate = getBuffer().slice(lvp).join(""); null === inputValue.match(Inputmask.escapeRegex(bufferTemplate) + "$"); ) bufferTemplate = bufferTemplate.slice(1);
          +                    inputValue = inputValue.replace(bufferTemplate, ""), inputValue = inputValue.split(""), 
          +                    checkVal(input, !0, !1, inputValue), isComplete(getBuffer()) === !0 && $(input).trigger("complete");
          +                } else e.keyCode = Inputmask.keyCode.BACKSPACE, keydownEvent.call(input, e);
          +                e.preventDefault();
          +            }
          +        }
          +        function setValueEvent(e) {
          +            var input = this, value = input.inputmask._valueGet();
          +            checkVal(input, !0, !1, ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(value, opts) || value : value).split("")), 
          +            undoValue = getBuffer().join(""), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("") && input.inputmask._valueSet("");
          +        }
          +        function focusEvent(e) {
          +            var input = this, nptValue = input.inputmask._valueGet();
          +            opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && "" === nptValue) ? input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : mouseEnter === !1 && caret(input, seekNext(getLastValidPosition())), 
          +            opts.positionCaretOnTab === !0 && setTimeout(function() {
          +                caret(input, seekNext(getLastValidPosition()));
          +            }, 0), undoValue = getBuffer().join("");
          +        }
          +        function mouseleaveEvent(e) {
          +            var input = this;
          +            if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {
          +                var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();
          +                nptValue !== input.getAttribute("placeholder") && "" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer), 
          +                writeBuffer(input, buffer));
          +            }
          +        }
          +        function clickEvent(e) {
          +            function doRadixFocus(clickPos) {
          +                if (opts.radixFocus && "" !== opts.radixPoint) {
          +                    var vps = getMaskSet().validPositions;
          +                    if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
          +                        if (clickPos < seekNext(-1)) return !0;
          +                        var radixPos = $.inArray(opts.radixPoint, getBuffer());
          +                        if (-1 !== radixPos) {
          +                            for (var vp in vps) if (vp > radixPos && vps[vp].input !== getPlaceholder(vp)) return !1;
          +                            return !0;
          +                        }
          +                    }
          +                }
          +                return !1;
          +            }
          +            var input = this;
          +            setTimeout(function() {
          +                if (document.activeElement === input) {
          +                    var selectedCaret = caret(input);
          +                    if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else {
          +                        var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
          +                        if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
          +                            var placeholder = getPlaceholder(lastPosition);
          +                            ("" !== placeholder && getBuffer()[lastPosition] !== placeholder || !isMask(lastPosition, !0) && getTest(lastPosition).def === placeholder) && (lastPosition = seekNext(lastPosition)), 
          +                            caret(input, lastPosition);
          +                        }
          +                    }
          +                }
          +            }, 0);
          +        }
          +        function dblclickEvent(e) {
          +            var input = this;
          +            setTimeout(function() {
          +                caret(input, 0, seekNext(getLastValidPosition()));
          +            }, 0);
          +        }
          +        function cutEvent(e) {
          +            var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);
          +            clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clipData.join("")), 
          +            document.execCommand && document.execCommand("copy"), handleRemove(input, Inputmask.keyCode.DELETE, pos), 
          +            writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
          +            input.inputmask._valueGet() === getBufferTemplate().join("") && $input.trigger("cleared"), 
          +            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask);
          +        }
          +        function blurEvent(e) {
          +            var $input = $(this), input = this;
          +            if (input.inputmask) {
          +                var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();
          +                undoValue !== buffer.join("") && setTimeout(function() {
          +                    $input.trigger("change"), undoValue = buffer.join("");
          +                }, 0), "" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 
          +                isComplete(buffer) === !1 && (setTimeout(function() {
          +                    $input.trigger("incomplete");
          +                }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), 
          +                writeBuffer(input, buffer, void 0, e));
          +            }
          +        }
          +        function mouseenterEvent(e) {
          +            var input = this;
          +            mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer());
          +        }
          +        function submitEvent(e) {
          +            undoValue !== getBuffer().join("") && $el.trigger("change"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("") && el.inputmask._valueSet(""), 
          +            opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), 
          +            setTimeout(function() {
          +                writeBuffer(el, getBuffer());
          +            }, 0));
          +        }
          +        function resetEvent(e) {
          +            setTimeout(function() {
          +                $el.trigger("setvalue");
          +            }, 0);
          +        }
          +        function mask(elem) {
          +            if (el = elem, $el = $(el), opts.showTooltip && (el.title = opts.tooltip || getMaskSet().mask), 
          +            ("rtl" === el.dir || opts.rightAlign) && (el.style.textAlign = "right"), ("rtl" === el.dir || opts.numericInput) && (el.dir = "ltr", 
          +            el.removeAttribute("dir"), el.inputmask.isRTL = !0, isRTL = !0), EventRuler.off(el), 
          +            patchValueProperty(el), isElementTypeSupported(el, opts) && (EventRuler.on(el, "submit", submitEvent), 
          +            EventRuler.on(el, "reset", resetEvent), EventRuler.on(el, "mouseenter", mouseenterEvent), 
          +            EventRuler.on(el, "blur", blurEvent), EventRuler.on(el, "focus", focusEvent), EventRuler.on(el, "mouseleave", mouseleaveEvent), 
          +            EventRuler.on(el, "click", clickEvent), EventRuler.on(el, "dblclick", dblclickEvent), 
          +            EventRuler.on(el, "paste", pasteEvent), EventRuler.on(el, "dragdrop", pasteEvent), 
          +            EventRuler.on(el, "drop", pasteEvent), EventRuler.on(el, "cut", cutEvent), EventRuler.on(el, "complete", opts.oncomplete), 
          +            EventRuler.on(el, "incomplete", opts.onincomplete), EventRuler.on(el, "cleared", opts.oncleared), 
          +            EventRuler.on(el, "keydown", keydownEvent), EventRuler.on(el, "keypress", keypressEvent), 
          +            EventRuler.on(el, "input", inputFallBackEvent)), EventRuler.on(el, "setvalue", setValueEvent), 
          +            "" !== el.inputmask._valueGet() || opts.clearMaskOnLostFocus === !1 || document.activeElement === el) {
          +                var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(el.inputmask._valueGet(), opts) || el.inputmask._valueGet() : el.inputmask._valueGet();
          +                checkVal(el, !0, !1, initialValue.split(""));
          +                var buffer = getBuffer().slice();
          +                undoValue = buffer.join(""), isComplete(buffer) === !1 && opts.clearIncomplete && resetMaskSet(), 
          +                opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), 
          +                writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));
          +            }
          +        }
          +        var undoValue, el, $el, maxLength, valueBuffer, isRTL = !1, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !0, EventRuler = {
          +            on: function(input, eventName, eventHandler) {
          +                var ev = function(e) {
          +                    if (void 0 === this.inputmask && "FORM" !== this.nodeName) {
          +                        var imOpts = $.data(this, "_inputmask_opts");
          +                        imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);
          +                    } else {
          +                        if ("setvalue" === e.type || !(this.disabled || this.readOnly && !("keydown" === e.type && e.ctrlKey && 67 === e.keyCode || opts.tabThrough === !1 && e.keyCode === Inputmask.keyCode.TAB))) {
          +                            switch (e.type) {
          +                              case "input":
          +                                if (skipInputEvent === !0) return skipInputEvent = !1, e.preventDefault();
          +                                break;
          +
          +                              case "keydown":
          +                                skipKeyPressEvent = !1, skipInputEvent = !1;
          +                                break;
          +
          +                              case "keypress":
          +                                if (skipKeyPressEvent === !0) return e.preventDefault();
          +                                skipKeyPressEvent = !0;
          +                                break;
          +
          +                              case "click":
          +                                if (iemobile) {
          +                                    var that = this;
          +                                    return setTimeout(function() {
          +                                        eventHandler.apply(that, arguments);
          +                                    }, 0), !1;
          +                                }
          +                            }
          +                            var returnVal = eventHandler.apply(this, arguments);
          +                            return returnVal === !1 && (e.preventDefault(), e.stopPropagation()), returnVal;
          +                        }
          +                        e.preventDefault();
          +                    }
          +                };
          +                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), 
          +                -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);
          +            },
          +            off: function(input, event) {
          +                if (input.inputmask && input.inputmask.events) {
          +                    var events;
          +                    event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, 
          +                    $.each(events, function(eventName, evArr) {
          +                        for (;evArr.length > 0; ) {
          +                            var ev = evArr.pop();
          +                            -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);
          +                        }
          +                        delete input.inputmask.events[eventName];
          +                    });
          +                }
          +            }
          +        };
          +        if (void 0 !== actionObj) switch (actionObj.action) {
          +          case "isComplete":
          +            return el = actionObj.el, isComplete(getBuffer());
          +
          +          case "unmaskedvalue":
          +            return el = actionObj.el, void 0 !== el && void 0 !== el.inputmask ? (maskset = el.inputmask.maskset, 
          +            opts = el.inputmask.opts, isRTL = el.inputmask.isRTL) : (valueBuffer = actionObj.value, 
          +            opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(valueBuffer, opts) || valueBuffer : valueBuffer).split(""), 
          +            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts)), 
          +            unmaskedvalue(el);
          +
          +          case "mask":
          +            el = actionObj.el, maskset = el.inputmask.maskset, opts = el.inputmask.opts, isRTL = el.inputmask.isRTL, 
          +            undoValue = getBuffer().join(""), mask(el);
          +            break;
          +
          +          case "format":
          +            return opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(actionObj.value, opts) || actionObj.value : actionObj.value).split(""), 
          +            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts), 
          +            actionObj.metadata ? {
          +                value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""),
          +                metadata: maskScope({
          +                    action: "getmetadata"
          +                }, maskset, opts)
          +            } : isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join("");
          +
          +          case "isValid":
          +            opts.numericInput && (isRTL = !0), actionObj.value ? (valueBuffer = actionObj.value.split(""), 
          +            checkVal(void 0, !1, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join("");
          +            for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
          +            return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join("");
          +
          +          case "getemptymask":
          +            return getBufferTemplate().join("");
          +
          +          case "remove":
          +            el = actionObj.el, $el = $(el), maskset = el.inputmask.maskset, opts = el.inputmask.opts, 
          +            el.inputmask._valueSet(unmaskedvalue(el)), EventRuler.off(el);
          +            var valueProperty;
          +            Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"), 
          +            valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, "value", {
          +                get: el.inputmask.__valueGet,
          +                set: el.inputmask.__valueSet,
          +                configurable: !0
          +            })) : document.__lookupGetter__ && el.__lookupGetter__("value") && el.inputmask.__valueGet && (el.__defineGetter__("value", el.inputmask.__valueGet), 
          +            el.__defineSetter__("value", el.inputmask.__valueSet)), el.inputmask = void 0;
          +            break;
          +
          +          case "getmetadata":
          +            if ($.isArray(maskset.metadata)) {
          +                for (var alternation, lvp = getLastValidPosition(void 0, !0), firstAlt = lvp; firstAlt >= 0; firstAlt--) if (getMaskSet().validPositions[firstAlt] && void 0 !== getMaskSet().validPositions[firstAlt].alternation) {
          +                    alternation = getMaskSet().validPositions[firstAlt].alternation;
          +                    break;
          +                }
          +                return void 0 !== alternation ? maskset.metadata[getMaskSet().validPositions[firstAlt].locator[alternation]] : [];
          +            }
          +            return maskset.metadata;
          +        }
          +    }
          +    Inputmask.prototype = {
          +        defaults: {
          +            placeholder: "_",
          +            optionalmarker: {
          +                start: "[",
          +                end: "]"
          +            },
          +            quantifiermarker: {
          +                start: "{",
          +                end: "}"
          +            },
          +            groupmarker: {
          +                start: "(",
          +                end: ")"
          +            },
          +            alternatormarker: "|",
          +            escapeChar: "\\",
          +            mask: null,
          +            oncomplete: $.noop,
          +            onincomplete: $.noop,
          +            oncleared: $.noop,
          +            repeat: 0,
          +            greedy: !0,
          +            autoUnmask: !1,
          +            removeMaskOnSubmit: !1,
          +            clearMaskOnLostFocus: !0,
          +            insertMode: !0,
          +            clearIncomplete: !1,
          +            aliases: {},
          +            alias: null,
          +            onKeyDown: $.noop,
          +            onBeforeMask: null,
          +            onBeforePaste: function(pastedValue, opts) {
          +                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(pastedValue, opts) : pastedValue;
          +            },
          +            onBeforeWrite: null,
          +            onUnMask: null,
          +            showMaskOnFocus: !0,
          +            showMaskOnHover: !0,
          +            onKeyValidation: $.noop,
          +            skipOptionalPartCharacter: " ",
          +            showTooltip: !1,
          +            tooltip: void 0,
          +            numericInput: !1,
          +            rightAlign: !1,
          +            undoOnEscape: !0,
          +            radixPoint: "",
          +            radixPointDefinitionSymbol: void 0,
          +            groupSeparator: "",
          +            radixFocus: !1,
          +            nojumps: !1,
          +            nojumpsThreshold: 0,
          +            keepStatic: null,
          +            positionCaretOnTab: !1,
          +            tabThrough: !1,
          +            supportsInputType: [ "text", "tel", "password" ],
          +            definitions: {
          +                "9": {
          +                    validator: "[0-9]",
          +                    cardinality: 1,
          +                    definitionSymbol: "*"
          +                },
          +                a: {
          +                    validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +                    cardinality: 1,
          +                    definitionSymbol: "*"
          +                },
          +                "*": {
          +                    validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +                    cardinality: 1
          +                }
          +            },
          +            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 ],
          +            isComplete: null,
          +            canClearPosition: $.noop,
          +            postValidation: null,
          +            staticDefinitionSymbol: void 0,
          +            jitMasking: !1,
          +            nullable: !0
          +        },
          +        masksCache: {},
          +        mask: function(elems) {
          +            var that = this;
          +            return "string" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), 
          +            elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {
          +                var scopedOpts = $.extend(!0, {}, that.opts);
          +                importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions));
          +                var maskset = generateMaskSet(scopedOpts, that.noMasksCache);
          +                void 0 !== maskset && (void 0 !== el.inputmask && el.inputmask.remove(), el.inputmask = new Inputmask(), 
          +                el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), 
          +                el.inputmask.el = el, el.inputmask.maskset = maskset, el.inputmask.isRTL = !1, $.data(el, "_inputmask_opts", scopedOpts), 
          +                maskScope({
          +                    action: "mask",
          +                    el: el
          +                }));
          +            }), elems && elems[0] ? elems[0].inputmask || this : this;
          +        },
          +        option: function(options, noremask) {
          +            return "string" == typeof options ? this.opts[options] : "object" == typeof options ? ($.extend(this.userOptions, options), 
          +            this.el && noremask !== !0 && this.mask(this.el), this) : void 0;
          +        },
          +        unmaskedvalue: function(value) {
          +            return maskScope({
          +                action: "unmaskedvalue",
          +                el: this.el,
          +                value: value
          +            }, this.el && this.el.inputmask ? this.el.inputmask.maskset : generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        remove: function() {
          +            return this.el ? (maskScope({
          +                action: "remove",
          +                el: this.el
          +            }), this.el.inputmask = void 0, this.el) : void 0;
          +        },
          +        getemptymask: function() {
          +            return maskScope({
          +                action: "getemptymask"
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        hasMaskedValue: function() {
          +            return !this.opts.autoUnmask;
          +        },
          +        isComplete: function() {
          +            return maskScope({
          +                action: "isComplete",
          +                el: this.el
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        getmetadata: function() {
          +            return maskScope({
          +                action: "getmetadata"
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        isValid: function(value) {
          +            return maskScope({
          +                action: "isValid",
          +                value: value
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        format: function(value, metadata) {
          +            return maskScope({
          +                action: "format",
          +                value: value,
          +                metadata: metadata
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        }
          +    }, Inputmask.extendDefaults = function(options) {
          +        $.extend(!0, Inputmask.prototype.defaults, options);
          +    }, Inputmask.extendDefinitions = function(definition) {
          +        $.extend(!0, Inputmask.prototype.defaults.definitions, definition);
          +    }, Inputmask.extendAliases = function(alias) {
          +        $.extend(!0, Inputmask.prototype.defaults.aliases, alias);
          +    }, Inputmask.format = function(value, options, metadata) {
          +        return Inputmask(options).format(value, metadata);
          +    }, Inputmask.unmask = function(value, options) {
          +        return Inputmask(options).unmaskedvalue(value);
          +    }, Inputmask.isValid = function(value, options) {
          +        return Inputmask(options).isValid(value);
          +    }, Inputmask.remove = function(elems) {
          +        $.each(elems, function(ndx, el) {
          +            el.inputmask && el.inputmask.remove();
          +        });
          +    }, Inputmask.escapeRegex = function(str) {
          +        var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ];
          +        return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1");
          +    }, Inputmask.keyCode = {
          +        ALT: 18,
          +        BACKSPACE: 8,
          +        BACKSPACE_SAFARI: 127,
          +        CAPS_LOCK: 20,
          +        COMMA: 188,
          +        COMMAND: 91,
          +        COMMAND_LEFT: 91,
          +        COMMAND_RIGHT: 93,
          +        CONTROL: 17,
          +        DELETE: 46,
          +        DOWN: 40,
          +        END: 35,
          +        ENTER: 13,
          +        ESCAPE: 27,
          +        HOME: 36,
          +        INSERT: 45,
          +        LEFT: 37,
          +        MENU: 93,
          +        NUMPAD_ADD: 107,
          +        NUMPAD_DECIMAL: 110,
          +        NUMPAD_DIVIDE: 111,
          +        NUMPAD_ENTER: 108,
          +        NUMPAD_MULTIPLY: 106,
          +        NUMPAD_SUBTRACT: 109,
          +        PAGE_DOWN: 34,
          +        PAGE_UP: 33,
          +        PERIOD: 190,
          +        RIGHT: 39,
          +        SHIFT: 16,
          +        SPACE: 32,
          +        TAB: 9,
          +        UP: 38,
          +        WINDOWS: 91,
          +        X: 88
          +    };
          +    var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;
          +    /android.*safari.*/i.test(ua) && !iemobile;
          +    return window.Inputmask = Inputmask, Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.numeric.extensions.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.numeric.extensions.js
          new file mode 100644
          index 0000000..06d9770
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.numeric.extensions.js
          @@ -0,0 +1,379 @@
          +/*!
          +* inputmask.numeric.extensions.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        numeric: {
          +            mask: function(opts) {
          +                function autoEscape(txt) {
          +                    for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? "\\" + txt.charAt(i) : txt.charAt(i);
          +                    return escapedTxt;
          +                }
          +                if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
          +                opts.repeat = 0, opts.groupSeparator === opts.radixPoint && ("." === opts.radixPoint ? opts.groupSeparator = "," : "," === opts.radixPoint ? opts.groupSeparator = "." : opts.groupSeparator = ""), 
          +                " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" !== opts.groupSeparator, 
          +                opts.autoGroup && ("string" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), 
          +                isFinite(opts.integerDigits))) {
          +                    var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;
          +                    opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), 
          +                    opts.integerDigits < 1 && (opts.integerDigits = "*");
          +                }
          +                opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
          +                opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 
          +                opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
          +                opts.numericInput === !0 && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 
          +                opts.decimalProtect = !1);
          +                var mask = autoEscape(opts.prefix);
          +                return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
          +                void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
          +                mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{1," + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
          +                mask += "[-]", mask += autoEscape(opts.suffix), opts.greedy = !1, null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, "."))), 
          +                null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, "."))), 
          +                mask;
          +            },
          +            placeholder: "",
          +            greedy: !1,
          +            digits: "*",
          +            digitsOptional: !0,
          +            radixPoint: ".",
          +            radixFocus: !0,
          +            groupSize: 3,
          +            groupSeparator: "",
          +            autoGroup: !1,
          +            allowPlus: !0,
          +            allowMinus: !0,
          +            negationSymbol: {
          +                front: "-",
          +                back: ""
          +            },
          +            integerDigits: "+",
          +            integerOptional: !0,
          +            prefix: "",
          +            suffix: "",
          +            rightAlign: !0,
          +            decimalProtect: !0,
          +            min: null,
          +            max: null,
          +            step: 1,
          +            insertMode: !0,
          +            autoUnmask: !1,
          +            unmaskAsNumber: !1,
          +            postFormat: function(buffer, pos, opts) {
          +                opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1));
          +                var i, l, suffixStripped = !1;
          +                buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) === buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 
          +                suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos;
          +                var needsRefresh = !1, charAtPos = buffer[pos], cbuf = buffer.slice();
          +                charAtPos === opts.groupSeparator && (cbuf.splice(pos--, 1), charAtPos = cbuf[pos]), 
          +                charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (cbuf[pos] = "?");
          +                var bufVal = cbuf.join(""), bufValOrigin = bufVal;
          +                if (bufVal.length > 0 && opts.autoGroup || -1 !== bufVal.indexOf(opts.groupSeparator)) {
          +                    var escapedGroupSeparator = Inputmask.escapeRegex(opts.groupSeparator);
          +                    needsRefresh = 0 === bufVal.indexOf(opts.groupSeparator), bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), "");
          +                    var radixSplit = bufVal.split(opts.radixPoint);
          +                    if (bufVal = "" === opts.radixPoint ? bufVal : radixSplit[0], bufVal !== opts.prefix + "?0" && bufVal.length >= opts.groupSize + opts.prefix.length) for (var reg = new RegExp("([-+]?[\\d?]+)([\\d?]{" + opts.groupSize + "})"); reg.test(bufVal) && "" !== opts.groupSeparator; ) bufVal = bufVal.replace(reg, "$1" + opts.groupSeparator + "$2"), 
          +                    bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);
          +                    "" !== opts.radixPoint && radixSplit.length > 1 && (bufVal += opts.radixPoint + radixSplit[1]);
          +                }
          +                for (needsRefresh = bufValOrigin !== bufVal, buffer.length = bufVal.length, i = 0, 
          +                l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i);
          +                var newPos = $.inArray("?", buffer);
          +                if (-1 === newPos && (newPos = $.inArray(charAtPos, buffer)), buffer[newPos] = charAtPos, 
          +                !needsRefresh && suffixStripped) for (i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i));
          +                return newPos = opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos, 
          +                opts.numericInput && (buffer = buffer.reverse(), $.inArray(opts.radixPoint, buffer) < newPos && buffer.join("").length - opts.suffix.length !== newPos && (newPos -= 1)), 
          +                {
          +                    pos: newPos,
          +                    refreshFromBuffer: needsRefresh,
          +                    buffer: buffer
          +                };
          +            },
          +            onBeforeWrite: function(e, buffer, caretPos, opts) {
          +                var rslt;
          +                if (e && ("blur" === e.type || "checkval" === e.type || "keydown" === e.type)) {
          +                    var maskedValue = opts.numericInput ? buffer.slice().reverse().join("") : buffer.join(""), processValue = maskedValue.replace(opts.prefix, "");
          +                    processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                    "," === opts.radixPoint && (processValue = processValue.replace(opts.radixPoint, "."));
          +                    var isNegative = processValue.match(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"));
          +                    if (isNegative = null !== isNegative && 1 === isNegative.length, processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""), 
          +                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 
          +                    isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), "g"), "")), 
          +                    processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue, 
          +                    "" !== processValue && isFinite(processValue)) {
          +                        var floatValue = parseFloat(processValue), signedFloatValue = isNegative ? -1 * floatValue : floatValue;
          +                        if (null !== opts.min && isFinite(opts.min) && signedFloatValue < parseFloat(opts.min) ? (floatValue = Math.abs(opts.min), 
          +                        isNegative = opts.min < 0, maskedValue = void 0) : null !== opts.max && isFinite(opts.max) && signedFloatValue > parseFloat(opts.max) && (floatValue = Math.abs(opts.max), 
          +                        isNegative = opts.max < 0, maskedValue = void 0), processValue = floatValue.toString().replace(".", opts.radixPoint).split(""), 
          +                        isFinite(opts.digits)) {
          +                            var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);
          +                            -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);
          +                            for (var i = 1; i <= opts.digits; i++) opts.digitsOptional || void 0 !== processValue[radixPosition + i] && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && void 0 !== maskedValue[rpb + i] && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = "0";
          +                            processValue[processValue.length - 1] === opts.radixPoint && delete processValue[processValue.length - 1];
          +                        }
          +                        if (floatValue.toString() !== processValue && floatValue.toString() + "." !== processValue || isNegative) return !isNegative || 0 === floatValue && "blur" === e.type || (processValue.unshift(opts.negationSymbol.front), 
          +                        processValue.push(opts.negationSymbol.back)), processValue = (opts.prefix + processValue.join("")).split(""), 
          +                        opts.numericInput && (processValue = processValue.reverse()), rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts), 
          +                        rslt.buffer && (rslt.refreshFromBuffer = rslt.buffer.join("") !== buffer.join("")), 
          +                        rslt;
          +                    }
          +                }
          +                return opts.autoGroup ? (rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts), 
          +                rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1, rslt) : void 0;
          +            },
          +            regex: {
          +                integerPart: function(opts) {
          +                    return new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+");
          +                },
          +                integerNPart: function(opts) {
          +                    return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+");
          +                }
          +            },
          +            signHandler: function(chrs, maskset, pos, strict, opts) {
          +                if (!strict && opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) {
          +                    var matchRslt = maskset.buffer.join("").match(opts.regex.integerPart(opts));
          +                    if (matchRslt && matchRslt[0].length > 0) return maskset.buffer[matchRslt.index] === ("-" === chrs ? "+" : opts.negationSymbol.front) ? "-" === chrs ? "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        remove: matchRslt.index,
          +                        caret: pos,
          +                        insert: {
          +                            pos: maskset.buffer.length - opts.suffix.length - 1,
          +                            c: opts.negationSymbol.back
          +                        }
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        remove: matchRslt.index,
          +                        caret: pos
          +                    } : "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: "+",
          +                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
          +                        caret: pos
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: "+",
          +                        remove: matchRslt.index,
          +                        caret: pos
          +                    } : maskset.buffer[matchRslt.index] === ("-" === chrs ? opts.negationSymbol.front : "+") ? "-" === chrs && "" !== opts.negationSymbol.back ? {
          +                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
          +                        caret: pos - 1
          +                    } : {
          +                        remove: matchRslt.index,
          +                        caret: pos - 1
          +                    } : "-" === chrs ? "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        caret: pos + 1,
          +                        insert: {
          +                            pos: maskset.buffer.length - opts.suffix.length,
          +                            c: opts.negationSymbol.back
          +                        }
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        caret: pos + 1
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: chrs,
          +                        caret: pos + 1
          +                    };
          +                }
          +                return !1;
          +            },
          +            radixHandler: function(chrs, maskset, pos, strict, opts) {
          +                if (!strict && opts.numericInput !== !0 && chrs === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {
          +                    var radixPos = $.inArray(opts.radixPoint, maskset.buffer), integerValue = maskset.buffer.join("").match(opts.regex.integerPart(opts));
          +                    if (-1 !== radixPos && maskset.validPositions[radixPos]) return maskset.validPositions[radixPos - 1] ? {
          +                        caret: radixPos + 1
          +                    } : {
          +                        pos: integerValue.index,
          +                        c: integerValue[0],
          +                        caret: radixPos + 1
          +                    };
          +                    if (!integerValue || "0" === integerValue[0] && integerValue.index + 1 !== pos) return maskset.buffer[integerValue ? integerValue.index : pos] = "0", 
          +                    {
          +                        pos: (integerValue ? integerValue.index : pos) + 1,
          +                        c: opts.radixPoint
          +                    };
          +                }
          +                return !1;
          +            },
          +            leadingZeroHandler: function(chrs, maskset, pos, strict, opts, isSelection) {
          +                if (!strict) if (opts.numericInput === !0) {
          +                    var buffer = maskset.buffer.slice("").reverse(), char = buffer[opts.prefix.length];
          +                    if ("0" === char && void 0 === maskset.validPositions[pos - 1]) return {
          +                        pos: pos,
          +                        remove: buffer.length - opts.prefix.length - 1
          +                    };
          +                } else {
          +                    var radixPosition = $.inArray(opts.radixPoint, maskset.buffer), matchRslt = maskset.buffer.slice(0, -1 !== radixPosition ? radixPosition : void 0).join("").match(opts.regex.integerNPart(opts));
          +                    if (matchRslt && (-1 === radixPosition || radixPosition >= pos)) {
          +                        var decimalPart = -1 === radixPosition ? 0 : parseInt(maskset.buffer.slice(radixPosition + 1).join(""));
          +                        if (0 === matchRslt[0].indexOf("" !== opts.placeholder ? opts.placeholder.charAt(0) : "0") && (matchRslt.index + 1 === pos || isSelection !== !0 && 0 === decimalPart)) return maskset.buffer.splice(matchRslt.index, 1), 
          +                        {
          +                            pos: matchRslt.index,
          +                            remove: matchRslt.index
          +                        };
          +                        if ("0" === chrs && pos <= matchRslt.index && matchRslt[0] !== opts.groupSeparator) return !1;
          +                    }
          +                }
          +                return !0;
          +            },
          +            definitions: {
          +                "~": {
          +                    validator: function(chrs, maskset, pos, strict, opts, isSelection) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        if (!isValid && (isValid = opts.radixHandler(chrs, maskset, pos, strict, opts), 
          +                        !isValid && (isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs), 
          +                        isValid === !0 && (isValid = opts.leadingZeroHandler(chrs, maskset, pos, strict, opts, isSelection), 
          +                        isValid === !0)))) {
          +                            var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
          +                            isValid = -1 !== radixPosition && (opts.digitsOptional === !1 || maskset.validPositions[pos]) && opts.numericInput !== !0 && pos > radixPosition && !strict ? {
          +                                pos: pos,
          +                                remove: pos
          +                            } : {
          +                                pos: pos
          +                            };
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 1
          +                },
          +                "+": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        return !isValid && (strict && opts.allowMinus && chrs === opts.negationSymbol.front || opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) && (isValid = strict || "-" !== chrs ? !0 : "" !== opts.negationSymbol.back ? {
          +                            pos: pos,
          +                            c: "-" === chrs ? opts.negationSymbol.front : "+",
          +                            caret: pos + 1,
          +                            insert: {
          +                                pos: maskset.buffer.length,
          +                                c: opts.negationSymbol.back
          +                            }
          +                        } : {
          +                            pos: pos,
          +                            c: "-" === chrs ? opts.negationSymbol.front : "+",
          +                            caret: pos + 1
          +                        }), isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: ""
          +                },
          +                "-": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        return !isValid && strict && opts.allowMinus && chrs === opts.negationSymbol.back && (isValid = !0), 
          +                        isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: ""
          +                },
          +                ":": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        if (!isValid) {
          +                            var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]";
          +                            isValid = new RegExp(radix).test(chrs), isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {
          +                                caret: pos + 1
          +                            });
          +                        }
          +                        return isValid ? {
          +                            c: opts.radixPoint
          +                        } : isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: function(opts) {
          +                        return opts.radixPoint;
          +                    }
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                var processValue = maskedValue.replace(opts.prefix, "");
          +                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                opts.unmaskAsNumber ? ("" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), ".")), 
          +                Number(processValue)) : processValue;
          +            },
          +            isComplete: function(buffer, opts) {
          +                var maskedValue = buffer.join(""), bufClone = buffer.slice();
          +                if (opts.postFormat(bufClone, 0, opts), bufClone.join("") !== maskedValue) return !1;
          +                var processValue = maskedValue.replace(opts.prefix, "");
          +                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".")), 
          +                isFinite(processValue);
          +            },
          +            onBeforeMask: function(initialValue, opts) {
          +                if ("" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else {
          +                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
          +                    dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
          +                    initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
          +                    initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
          +                }
          +                if (0 === opts.digits && (-1 !== initialValue.indexOf(".") ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : -1 !== initialValue.indexOf(",") && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
          +                "" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {
          +                    var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0];
          +                    if (parseInt(opts.digits) < decPart.toString().length) {
          +                        var digitsFactor = Math.pow(10, parseInt(opts.digits));
          +                        initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."), 
          +                        initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor, 
          +                        initialValue = initialValue.toString().replace(".", opts.radixPoint);
          +                    }
          +                }
          +                return initialValue.toString();
          +            },
          +            canClearPosition: function(maskset, position, lvp, strict, opts) {
          +                var positionInput = maskset.validPositions[position].input, canClear = positionInput !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && opts.decimalProtect === !1 || isFinite(positionInput) || position === lvp || positionInput === opts.groupSeparator || positionInput === opts.negationSymbol.front || positionInput === opts.negationSymbol.back;
          +                return canClear;
          +            },
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey) switch (e.keyCode) {
          +                  case Inputmask.keyCode.UP:
          +                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger("setvalue");
          +                    break;
          +
          +                  case Inputmask.keyCode.DOWN:
          +                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        currency: {
          +            prefix: "$ ",
          +            groupSeparator: ",",
          +            alias: "numeric",
          +            placeholder: "0",
          +            autoGroup: !0,
          +            digits: 2,
          +            digitsOptional: !1,
          +            clearMaskOnLostFocus: !1
          +        },
          +        decimal: {
          +            alias: "numeric"
          +        },
          +        integer: {
          +            alias: "numeric",
          +            digits: 0,
          +            radixPoint: ""
          +        },
          +        percentage: {
          +            alias: "numeric",
          +            digits: 2,
          +            radixPoint: ".",
          +            placeholder: "0",
          +            autoGroup: !1,
          +            min: 0,
          +            max: 100,
          +            suffix: " %",
          +            allowPlus: !1,
          +            allowMinus: !1
          +        }
          +    }), Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.phone.extensions.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.phone.extensions.js
          new file mode 100644
          index 0000000..e1204cc
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.phone.extensions.js
          @@ -0,0 +1,52 @@
          +/*!
          +* inputmask.phone.extensions.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        phone: {
          +            url: "phone-codes/phone-codes.js",
          +            countrycode: "",
          +            phoneCodeCache: {},
          +            mask: function(opts) {
          +                if (void 0 === opts.phoneCodeCache[opts.url]) {
          +                    var maskList = [];
          +                    opts.definitions["#"] = opts.definitions[9], $.ajax({
          +                        url: opts.url,
          +                        async: !1,
          +                        type: "get",
          +                        dataType: "json",
          +                        success: function(response) {
          +                            maskList = response;
          +                        },
          +                        error: function(xhr, ajaxOptions, thrownError) {
          +                            alert(thrownError + " - " + opts.url);
          +                        }
          +                    }), opts.phoneCodeCache[opts.url] = maskList.sort(function(a, b) {
          +                        return (a.mask || a) < (b.mask || b) ? -1 : 1;
          +                    });
          +                }
          +                return opts.phoneCodeCache[opts.url];
          +            },
          +            keepStatic: !1,
          +            nojumps: !0,
          +            nojumpsThreshold: 1,
          +            onBeforeMask: function(value, opts) {
          +                var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
          +                return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = "+" + opts.countrycode + processedValue), 
          +                processedValue;
          +            }
          +        },
          +        phonebe: {
          +            alias: "phone",
          +            url: "phone-codes/phone-be.js",
          +            countrycode: "32",
          +            nojumpsThreshold: 4
          +        }
          +    }), Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/inputmask.regex.extensions.js b/public/theme/jquery.inputmask/dist/inputmask/inputmask.regex.extensions.js
          new file mode 100644
          index 0000000..9f2faea
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/inputmask.regex.extensions.js
          @@ -0,0 +1,115 @@
          +/*!
          +* inputmask.regex.extensions.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        Regex: {
          +            mask: "r",
          +            greedy: !1,
          +            repeat: "*",
          +            regex: null,
          +            regexTokens: null,
          +            tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,
          +            quantifierFilter: /[0-9]+[^,]/,
          +            isComplete: function(buffer, opts) {
          +                return new RegExp(opts.regex).test(buffer.join(""));
          +            },
          +            definitions: {
          +                r: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        function RegexToken(isGroup, isQuantifier) {
          +                            this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, 
          +                            this.quantifier = {
          +                                min: 1,
          +                                max: 1
          +                            }, this.repeaterPart = void 0;
          +                        }
          +                        function analyseRegex() {
          +                            var match, m, currentToken = new RegexToken(), opengroups = [];
          +                            for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch (m = match[0], 
          +                            m.charAt(0)) {
          +                              case "(":
          +                                opengroups.push(new RegexToken(!0));
          +                                break;
          +
          +                              case ")":
          +                                groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);
          +                                break;
          +
          +                              case "{":
          +                              case "+":
          +                              case "*":
          +                                var quantifierToken = new RegexToken(!1, !0);
          +                                m = m.replace(/[{}]/g, "");
          +                                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
          +                                if (quantifierToken.quantifier = {
          +                                    min: mq0,
          +                                    max: mq1
          +                                }, opengroups.length > 0) {
          +                                    var matches = opengroups[opengroups.length - 1].matches;
          +                                    match = matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), groupToken.matches.push(match), 
          +                                    match = groupToken), matches.push(match), matches.push(quantifierToken);
          +                                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), 
          +                                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
          +                                currentToken.matches.push(quantifierToken);
          +                                break;
          +
          +                              default:
          +                                opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);
          +                            }
          +                            currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);
          +                        }
          +                        function validateRegexToken(token, fromGroup) {
          +                            var isvalid = !1;
          +                            fromGroup && (regexPart += "(", openGroupCount++);
          +                            for (var mndx = 0; mndx < token.matches.length; mndx++) {
          +                                var matchToken = token.matches[mndx];
          +                                if (matchToken.isGroup === !0) isvalid = validateRegexToken(matchToken, !0); else if (matchToken.isQuantifier === !0) {
          +                                    var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;
          +                                    if (isNaN(matchToken.quantifier.max)) {
          +                                        for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;
          +                                        isvalid = isvalid || validateRegexToken(matchGroup, !0), isvalid && (matchToken.repeaterPart = regexPart), 
          +                                        regexPart = regexPartBak + matchToken.quantifier.max;
          +                                    } else {
          +                                        for (var i = 0, qm = matchToken.quantifier.max - 1; qm > i && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;
          +                                        regexPart = regexPartBak + "{" + matchToken.quantifier.min + "," + matchToken.quantifier.max + "}";
          +                                    }
          +                                } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {
          +                                    var testExp;
          +                                    if ("[" == matchToken.charAt(0)) {
          +                                        testExp = regexPart, testExp += matchToken;
          +                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
          +                                        var exp = new RegExp("^(" + testExp + ")$");
          +                                        isvalid = exp.test(bufferStr);
          +                                    } else for (var l = 0, tl = matchToken.length; tl > l; l++) if ("\\" !== matchToken.charAt(l)) {
          +                                        testExp = regexPart, testExp += matchToken.substr(0, l + 1), testExp = testExp.replace(/\|$/, "");
          +                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
          +                                        var exp = new RegExp("^(" + testExp + ")$");
          +                                        if (isvalid = exp.test(bufferStr)) break;
          +                                    }
          +                                    regexPart += matchToken;
          +                                }
          +                                if (isvalid) break;
          +                            }
          +                            return fromGroup && (regexPart += ")", openGroupCount--), isvalid;
          +                        }
          +                        var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = "", isValid = !1, openGroupCount = 0;
          +                        null === opts.regexTokens && analyseRegex(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join("");
          +                        for (var i = 0; i < opts.regexTokens.length; i++) {
          +                            var regexToken = opts.regexTokens[i];
          +                            if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 1
          +                }
          +            }
          +        }
          +    }), Inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/inputmask/jquery.inputmask.js b/public/theme/jquery.inputmask/dist/inputmask/jquery.inputmask.js
          new file mode 100644
          index 0000000..8b40189
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/inputmask/jquery.inputmask.js
          @@ -0,0 +1,60 @@
          +/*!
          +* jquery.inputmask.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(factory) {
          +    "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery, window.Inputmask);
          +}(function($, Inputmask) {
          +    return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {
          +        var nptmask, input = this[0];
          +        if (void 0 === options && (options = {}), "string" == typeof fn) switch (fn) {
          +          case "unmaskedvalue":
          +            return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();
          +
          +          case "remove":
          +            return this.each(function() {
          +                this.inputmask && this.inputmask.remove();
          +            });
          +
          +          case "getemptymask":
          +            return input && input.inputmask ? input.inputmask.getemptymask() : "";
          +
          +          case "hasMaskedValue":
          +            return input && input.inputmask ? input.inputmask.hasMaskedValue() : !1;
          +
          +          case "isComplete":
          +            return input && input.inputmask ? input.inputmask.isComplete() : !0;
          +
          +          case "getmetadata":
          +            return input && input.inputmask ? input.inputmask.getmetadata() : void 0;
          +
          +          case "setvalue":
          +            $(input).val(options), input && void 0 !== input.inputmask && $(input).triggerHandler("setvalue");
          +            break;
          +
          +          case "option":
          +            if ("string" != typeof options) return this.each(function() {
          +                return void 0 !== this.inputmask ? this.inputmask.option(options) : void 0;
          +            });
          +            if (input && void 0 !== input.inputmask) return input.inputmask.option(options);
          +            break;
          +
          +          default:
          +            return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {
          +                nptmask.mask(this);
          +            });
          +        } else {
          +            if ("object" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {
          +                return void 0 !== this.inputmask ? this.inputmask.option(fn) : void nptmask.mask(this);
          +            }) : this.each(function() {
          +                nptmask.mask(this);
          +            });
          +            if (void 0 === fn) return this.each(function() {
          +                nptmask = new Inputmask(options), nptmask.mask(this);
          +            });
          +        }
          +    }), $.fn.inputmask;
          +});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/jquery.inputmask.bundle.js b/public/theme/jquery.inputmask/dist/jquery.inputmask.bundle.js
          new file mode 100644
          index 0000000..2717851
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/jquery.inputmask.bundle.js
          @@ -0,0 +1,2617 @@
          +/*!
          +* jquery.inputmask.bundle.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function($) {
          +    function Inputmask(alias, options) {
          +        return this instanceof Inputmask ? ($.isPlainObject(alias) ? options = alias : (options = options || {}, 
          +        options.alias = alias), this.el = void 0, this.opts = $.extend(!0, {}, this.defaults, options), 
          +        this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, 
          +        this.events = {}, void resolveAlias(this.opts.alias, options, this.opts)) : new Inputmask(alias, options);
          +    }
          +    function isInputEventSupported(eventName) {
          +        var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el;
          +        return isSupported || (el.setAttribute(evName, "return;"), isSupported = "function" == typeof el[evName]), 
          +        el = null, isSupported;
          +    }
          +    function isElementTypeSupported(input, opts) {
          +        var elementType = input.getAttribute("type"), isSupported = "INPUT" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || "TEXTAREA" === input.tagName;
          +        if (!isSupported && "INPUT" === input.tagName) {
          +            var el = document.createElement("input");
          +            el.setAttribute("type", elementType), isSupported = "text" === el.type, el = null;
          +        }
          +        return isSupported;
          +    }
          +    function resolveAlias(aliasStr, options, opts) {
          +        var aliasDefinition = opts.aliases[aliasStr];
          +        return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 
          +        $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), 
          +        !1);
          +    }
          +    function importAttributeOptions(npt, opts, userOptions) {
          +        function importOption(option, optionData) {
          +            optionData = void 0 !== optionData ? optionData : npt.getAttribute("data-inputmask-" + option), 
          +            null !== optionData && ("string" == typeof optionData && (0 === option.indexOf("on") ? optionData = window[optionData] : "false" === optionData ? optionData = !1 : "true" === optionData && (optionData = !0)), 
          +            userOptions[option] = optionData);
          +        }
          +        var option, dataoptions, optionData, p, attrOptions = npt.getAttribute("data-inputmask");
          +        if (attrOptions && "" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'), 
          +        dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) {
          +            optionData = void 0;
          +            for (p in dataoptions) if ("alias" === p.toLowerCase()) {
          +                optionData = dataoptions[p];
          +                break;
          +            }
          +        }
          +        importOption("alias", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);
          +        for (option in opts) {
          +            if (dataoptions) {
          +                optionData = void 0;
          +                for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {
          +                    optionData = dataoptions[p];
          +                    break;
          +                }
          +            }
          +            importOption(option, optionData);
          +        }
          +        return $.extend(!0, opts, userOptions), opts;
          +    }
          +    function generateMaskSet(opts, nocache) {
          +        function analyseMask(mask) {
          +            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {
          +                this.matches = [], this.isGroup = isGroup || !1, this.isOptional = isOptional || !1, 
          +                this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, 
          +                this.quantifier = {
          +                    min: 1,
          +                    max: 1
          +                };
          +            }
          +            function insertTestDefinition(mtoken, element, position) {
          +                var maskdef = opts.definitions[element];
          +                position = void 0 !== position ? position : mtoken.matches.length;
          +                var prevMatch = mtoken.matches[position - 1];
          +                if (maskdef && !escaped) {
          +                    maskdef.placeholder = $.isFunction(maskdef.placeholder) ? maskdef.placeholder(opts) : maskdef.placeholder;
          +                    for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {
          +                        var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;
          +                        mtoken.matches.splice(position++, 0, {
          +                            fn: validator ? "string" == typeof validator ? new RegExp(validator) : new function() {
          +                                this.test = validator;
          +                            }() : new RegExp("."),
          +                            cardinality: cardinality ? cardinality : 1,
          +                            optionality: mtoken.isOptional,
          +                            newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
          +                            casing: maskdef.casing,
          +                            def: maskdef.definitionSymbol || element,
          +                            placeholder: maskdef.placeholder,
          +                            mask: element
          +                        }), prevMatch = mtoken.matches[position - 1];
          +                    }
          +                    mtoken.matches.splice(position++, 0, {
          +                        fn: maskdef.validator ? "string" == typeof maskdef.validator ? new RegExp(maskdef.validator) : new function() {
          +                            this.test = maskdef.validator;
          +                        }() : new RegExp("."),
          +                        cardinality: maskdef.cardinality,
          +                        optionality: mtoken.isOptional,
          +                        newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
          +                        casing: maskdef.casing,
          +                        def: maskdef.definitionSymbol || element,
          +                        placeholder: maskdef.placeholder,
          +                        mask: element
          +                    });
          +                } else mtoken.matches.splice(position++, 0, {
          +                    fn: null,
          +                    cardinality: 0,
          +                    optionality: mtoken.isOptional,
          +                    newBlockMarker: void 0 === prevMatch || prevMatch.def !== element,
          +                    casing: null,
          +                    def: opts.staticDefinitionSymbol || element,
          +                    placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0,
          +                    mask: element
          +                }), escaped = !1;
          +            }
          +            function verifyGroupMarker(lastMatch, isOpenGroup) {
          +                lastMatch.isGroup && (lastMatch.isGroup = !1, insertTestDefinition(lastMatch, opts.groupmarker.start, 0), 
          +                isOpenGroup !== !0 && insertTestDefinition(lastMatch, opts.groupmarker.end));
          +            }
          +            function maskCurrentToken(m, currentToken, lastMatch, extraCondition) {
          +                currentToken.matches.length > 0 && (void 0 === extraCondition || extraCondition) && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
          +                verifyGroupMarker(lastMatch)), insertTestDefinition(currentToken, m);
          +            }
          +            function defaultCase() {
          +                if (openenings.length > 0) {
          +                    if (currentOpeningToken = openenings[openenings.length - 1], maskCurrentToken(m, currentOpeningToken, lastMatch, !currentOpeningToken.isAlternator), 
          +                    currentOpeningToken.isAlternator) {
          +                        alternator = openenings.pop();
          +                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
          +                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
          +                    }
          +                } else maskCurrentToken(m, currentToken, lastMatch);
          +            }
          +            function reverseTokens(maskToken) {
          +                function reverseStatic(st) {
          +                    return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), 
          +                    st;
          +                }
          +                maskToken.matches = maskToken.matches.reverse();
          +                for (var match in maskToken.matches) {
          +                    var intMatch = parseInt(match);
          +                    if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {
          +                        var qt = maskToken.matches[match];
          +                        maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);
          +                    }
          +                    void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]);
          +                }
          +                return maskToken;
          +            }
          +            for (var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = []; match = tokenizer.exec(mask); ) if (m = match[0], 
          +            escaped) defaultCase(); else switch (m.charAt(0)) {
          +              case opts.escapeChar:
          +                escaped = !0;
          +                break;
          +
          +              case opts.optionalmarker.end:
          +              case opts.groupmarker.end:
          +                if (openingToken = openenings.pop(), void 0 !== openingToken) if (openenings.length > 0) {
          +                    if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), 
          +                    currentOpeningToken.isAlternator) {
          +                        alternator = openenings.pop();
          +                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
          +                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
          +                    }
          +                } else currentToken.matches.push(openingToken); else defaultCase();
          +                break;
          +
          +              case opts.optionalmarker.start:
          +                openenings.push(new MaskToken(!1, !0));
          +                break;
          +
          +              case opts.groupmarker.start:
          +                openenings.push(new MaskToken(!0));
          +                break;
          +
          +              case opts.quantifiermarker.start:
          +                var quantifier = new MaskToken(!1, !1, !0);
          +                m = m.replace(/[{}]/g, "");
          +                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
          +                if (("*" === mq1 || "+" === mq1) && (mq0 = "*" === mq1 ? 0 : 1), quantifier.quantifier = {
          +                    min: mq0,
          +                    max: mq1
          +                }, openenings.length > 0) {
          +                    var matches = openenings[openenings.length - 1].matches;
          +                    match = matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), groupToken.matches.push(match), 
          +                    match = groupToken), matches.push(match), matches.push(quantifier);
          +                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), 
          +                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
          +                currentToken.matches.push(quantifier);
          +                break;
          +
          +              case opts.alternatormarker:
          +                openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
          +                lastMatch = currentOpeningToken.matches.pop()) : lastMatch = currentToken.matches.pop(), 
          +                lastMatch.isAlternator ? openenings.push(lastMatch) : (alternator = new MaskToken(!1, !1, !1, !0), 
          +                alternator.matches.push(lastMatch), openenings.push(alternator));
          +                break;
          +
          +              default:
          +                defaultCase();
          +            }
          +            for (;openenings.length > 0; ) openingToken = openenings.pop(), verifyGroupMarker(openingToken, !0), 
          +            currentToken.matches.push(openingToken);
          +            return currentToken.matches.length > 0 && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
          +            verifyGroupMarker(lastMatch), maskTokens.push(currentToken)), opts.numericInput && reverseTokens(maskTokens[0]), 
          +            maskTokens;
          +        }
          +        function generateMask(mask, metadata) {
          +            if (null === mask || "" === mask) return void 0;
          +            if (1 === mask.length && opts.greedy === !1 && 0 !== opts.repeat && (opts.placeholder = ""), 
          +            opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat) {
          +                var repeatStart = "*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat;
          +                mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end;
          +            }
          +            var masksetDefinition;
          +            return void 0 === Inputmask.prototype.masksCache[mask] || nocache === !0 ? (masksetDefinition = {
          +                mask: mask,
          +                maskToken: analyseMask(mask),
          +                validPositions: {},
          +                _buffer: void 0,
          +                buffer: void 0,
          +                tests: {},
          +                metadata: metadata
          +            }, nocache !== !0 && (Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask] = masksetDefinition, 
          +            masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]), 
          +            masksetDefinition;
          +        }
          +        function preProcessMask(mask) {
          +            return mask = mask.toString();
          +        }
          +        var ms;
          +        if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {
          +            if (opts.mask.length > 1) {
          +                opts.keepStatic = null === opts.keepStatic ? !0 : opts.keepStatic;
          +                var altMask = "(";
          +                return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {
          +                    altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 === msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
          +                }), altMask += ")", generateMask(altMask, opts.mask);
          +            }
          +            opts.mask = opts.mask.pop();
          +        }
          +        return opts.mask && (ms = void 0 === opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask)), 
          +        ms;
          +    }
          +    function maskScope(actionObj, maskset, opts) {
          +        function getMaskTemplate(baseOnInput, minimalPos, includeInput) {
          +            minimalPos = minimalPos || 0;
          +            var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();
          +            do {
          +                if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
          +                    var validPos = getMaskSet().validPositions[pos];
          +                    test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test));
          +                } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 
          +                ndxIntlzr = testPos.locator.slice(), (opts.jitMasking === !1 || lvp > pos || isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(getPlaceholder(pos, test));
          +                pos++;
          +            } while ((void 0 === maxLength || maxLength > pos - 1) && null !== test.fn || null === test.fn && "" !== test.def || minimalPos >= pos);
          +            return "" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), maskTemplate;
          +        }
          +        function getMaskSet() {
          +            return maskset;
          +        }
          +        function resetMaskSet(soft) {
          +            var maskset = getMaskSet();
          +            maskset.buffer = void 0, soft !== !0 && (maskset.tests = {}, maskset._buffer = void 0, 
          +            maskset.validPositions = {}, maskset.p = 0);
          +        }
          +        function getLastValidPosition(closestTo, strict, validPositions) {
          +            var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;
          +            void 0 === closestTo && (closestTo = -1);
          +            for (var posNdx in valids) {
          +                var psNdx = parseInt(posNdx);
          +                valids[psNdx] && (strict || null !== valids[psNdx].match.fn) && (closestTo >= psNdx && (before = psNdx), 
          +                psNdx >= closestTo && (after = psNdx));
          +            }
          +            return -1 !== before && closestTo - before > 1 || closestTo > after ? before : after;
          +        }
          +        function setValidPosition(pos, validTest, fromSetValid, isSelection) {
          +            if (isSelection || opts.insertMode && void 0 !== getMaskSet().validPositions[pos] && void 0 === fromSetValid) {
          +                var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition();
          +                for (i = pos; lvp >= i; i++) delete getMaskSet().validPositions[i];
          +                getMaskSet().validPositions[pos] = validTest;
          +                var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1;
          +                for (i = j = pos; lvp >= i; i++) {
          +                    var t = positionsClone[i];
          +                    if (void 0 !== t) for (var posMatch = j, prevPosMatch = -1; posMatch < getMaskLength() && (null == t.match.fn && vps[i] && (vps[i].match.optionalQuantifier === !0 || vps[i].match.optionality === !0) || null != t.match.fn); ) {
          +                        if (null === t.match.fn || !opts.keepStatic && vps[i] && (void 0 !== vps[i + 1] && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || void 0 !== vps[i].alternation) ? posMatch++ : posMatch = seekNext(j), 
          +                        needsValidation === !1 && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) {
          +                            getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), 
          +                            getMaskSet().validPositions[posMatch].input = t.input, j = posMatch, valid = !0;
          +                            break;
          +                        }
          +                        if (positionCanMatchDefinition(posMatch, t.match.def)) {
          +                            var result = isValid(posMatch, t.input, !0, !0);
          +                            if (valid = result !== !1, j = result.caret || result.insert ? getLastValidPosition() : posMatch, 
          +                            needsValidation = !0, valid) break;
          +                        } else {
          +                            if (valid = null == t.match.fn, prevPosMatch === posMatch) break;
          +                            prevPosMatch = posMatch;
          +                        }
          +                    }
          +                    if (!valid) break;
          +                }
          +                if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
          +                resetMaskSet(!0), !1;
          +            } else getMaskSet().validPositions[pos] = validTest;
          +            return resetMaskSet(!0), !0;
          +        }
          +        function stripValidPositions(start, end, nocheck, strict) {
          +            function IsEnclosedStatic(pos) {
          +                var posMatch = getMaskSet().validPositions[pos];
          +                if (void 0 !== posMatch && null === posMatch.match.fn) {
          +                    var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];
          +                    return void 0 !== prevMatch && void 0 !== nextMatch;
          +                }
          +                return !1;
          +            }
          +            var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1;
          +            for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) void 0 !== getMaskSet().validPositions[i] && (nocheck === !0 || !IsEnclosedStatic(i) && opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts) !== !1) && delete getMaskSet().validPositions[i];
          +            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
          +                for (;void 0 !== getMaskSet().validPositions[startPos]; ) startPos++;
          +                var s = getMaskSet().validPositions[startPos];
          +                if (startPos > i && (i = startPos + 1), void 0 === getMaskSet().validPositions[i] && isMask(i) || void 0 !== s) i++; else {
          +                    var t = getTestTemplate(i);
          +                    needsValidation === !1 && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), 
          +                    getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], 
          +                    i++) : positionCanMatchDefinition(startPos, t.match.def) ? isValid(startPos, t.input || getPlaceholder(i), !0) !== !1 && (delete getMaskSet().validPositions[i], 
          +                    i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++;
          +                }
          +            }
          +            resetMaskSet(!0);
          +        }
          +        function getTestTemplate(pos, ndxIntlzr, tstPs) {
          +            var testPos = getMaskSet().validPositions[pos];
          +            if (void 0 === testPos) for (var testPositions = getTests(pos, ndxIntlzr, tstPs), lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation].toString().split(",") : [], ndx = 0; ndx < testPositions.length && (testPos = testPositions[ndx], 
          +            !(testPos.match && (opts.greedy && testPos.match.optionalQuantifier !== !0 || (testPos.match.optionality === !1 || testPos.match.newBlockMarker === !1) && testPos.match.optionalQuantifier !== !0) && (void 0 === lvTest.alternation || lvTest.alternation !== testPos.alternation || void 0 !== testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr)))); ndx++) ;
          +            return testPos;
          +        }
          +        function getTest(pos) {
          +            return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos].match : getTests(pos)[0].match;
          +        }
          +        function positionCanMatchDefinition(pos, def) {
          +            for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {
          +                valid = !0;
          +                break;
          +            }
          +            return valid;
          +        }
          +        function selectBestMatch(pos, alternateNdx) {
          +            var bestMatch, indexPos;
          +            return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {
          +                var ndxPos = lmnt.alternation ? lmnt.locator[lmnt.alternation].toString().indexOf(alternateNdx) : -1;
          +                (void 0 === indexPos || indexPos > ndxPos) && -1 !== ndxPos && (bestMatch = lmnt, 
          +                indexPos = ndxPos);
          +            }), bestMatch;
          +        }
          +        function getTests(pos, ndxIntlzr, tstPs) {
          +            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {
          +                function handleMatch(match, loopNdx, quantifierRecurse) {
          +                    function isFirstMatch(latestMatch, tokenGroup) {
          +                        var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);
          +                        return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {
          +                            return match.isQuantifier === !0 && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1])) ? !1 : void 0;
          +                        }), firstMatch;
          +                    }
          +                    function resolveNdxInitializer(pos, alternateNdx) {
          +                        var bestMatch = selectBestMatch(pos, alternateNdx);
          +                        return bestMatch ? bestMatch.locator.slice(bestMatch.alternation + 1) : [];
          +                    }
          +                    if (testPos > 1e4) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask;
          +                    if (testPos === pos && void 0 === match.matches) return matches.push({
          +                        match: match,
          +                        locator: loopNdx.reverse(),
          +                        cd: cacheDependency
          +                    }), !0;
          +                    if (void 0 !== match.matches) {
          +                        if (match.isGroup && quantifierRecurse !== match) {
          +                            if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;
          +                        } else if (match.isOptional) {
          +                            var optionalToken = match;
          +                            if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {
          +                                if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;
          +                                insertStop = !0, testPos = pos;
          +                            }
          +                        } else if (match.isAlternator) {
          +                            var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;
          +                            if (-1 === altIndex || "string" == typeof altIndex) {
          +                                var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];
          +                                if ("string" == typeof altIndex) altIndexArr = altIndex.split(","); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);
          +                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {
          +                                    if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx), 
          +                                    match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match, 
          +                                    match !== !0 && void 0 !== match && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {
          +                                        var ntndx = $.inArray(match, maskToken.matches) + 1;
          +                                        maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse), 
          +                                        match && (altIndexArr.push(ntndx.toString()), $.each(matches, function(ndx, lmnt) {
          +                                            lmnt.alternation = loopNdx.length - 1;
          +                                        })));
          +                                    }
          +                                    maltMatches = matches.slice(), testPos = currentPos, matches = [];
          +                                    for (var i = 0; i < ndxInitializerClone.length; i++) ndxInitializer[i] = ndxInitializerClone[i];
          +                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {
          +                                        var altMatch = maltMatches[ndx1];
          +                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;
          +                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
          +                                            var altMatch2 = malternateMatches[ndx2];
          +                                            if (altMatch.match.def === altMatch2.match.def && ("string" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr))) {
          +                                                altMatch.match.mask === altMatch2.match.mask && (maltMatches.splice(ndx1, 1), ndx1--), 
          +                                                -1 === altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 
          +                                                altMatch2.alternation = altMatch.alternation);
          +                                                break;
          +                                            }
          +                                        }
          +                                    }
          +                                    malternateMatches = malternateMatches.concat(maltMatches);
          +                                }
          +                                "string" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {
          +                                    if (isFinite(ndx)) {
          +                                        var mamatch, alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(",");
          +                                        lmnt.locator[alternation] = void 0, lmnt.alternation = void 0;
          +                                        for (var alndx = 0; alndx < altLocArr.length; alndx++) mamatch = -1 !== $.inArray(altLocArr[alndx], altIndexArr), 
          +                                        mamatch && (void 0 !== lmnt.locator[alternation] ? (lmnt.locator[alternation] += ",", 
          +                                        lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), 
          +                                        lmnt.alternation = alternation);
          +                                        if (void 0 !== lmnt.locator[alternation]) return lmnt;
          +                                    }
          +                                })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0;
          +                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);
          +                            if (match) return !0;
          +                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && pos >= testPos; qndx++) {
          +                            var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];
          +                            if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {
          +                                if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, 
          +                                isFirstMatch(latestMatch, tokenGroup)) {
          +                                    if (qndx > qt.quantifier.min - 1) {
          +                                        insertStop = !0, testPos = pos;
          +                                        break;
          +                                    }
          +                                    return !0;
          +                                }
          +                                return !0;
          +                            }
          +                        } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;
          +                    } else testPos++;
          +                }
          +                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (maskToken.matches[tndx].isQuantifier !== !0) {
          +                    var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);
          +                    if (match && testPos === pos) return match;
          +                    if (testPos > pos) break;
          +                }
          +            }
          +            function mergeLocators(tests) {
          +                var locator = [];
          +                return $.isArray(tests) || (tests = [ tests ]), void 0 === tests[0].alternation ? locator = tests[0].locator.slice() : $.each(tests, function(ndx, tst) {
          +                    if ("" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += "," + tst.locator[i]);
          +                }), locator;
          +            }
          +            var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr || [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : "";
          +            if (pos > -1) {
          +                if (void 0 === ndxIntlzr) {
          +                    for (var test, previousPos = pos - 1; void 0 === (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) && previousPos > -1; ) previousPos--;
          +                    void 0 !== test && previousPos > -1 && (ndxInitializer = mergeLocators(test), cacheDependency = ndxInitializer.join(""), 
          +                    testPos = previousPos);
          +                }
          +                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return getMaskSet().tests[pos];
          +                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {
          +                    var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);
          +                    if (match && testPos === pos || testPos > pos) break;
          +                }
          +            }
          +            return (0 === matches.length || insertStop) && matches.push({
          +                match: {
          +                    fn: null,
          +                    cardinality: 0,
          +                    optionality: !0,
          +                    casing: null,
          +                    def: ""
          +                },
          +                locator: []
          +            }), getMaskSet().tests[pos] = $.extend(!0, [], matches), getMaskSet().tests[pos];
          +        }
          +        function getBufferTemplate() {
          +            return void 0 === getMaskSet()._buffer && (getMaskSet()._buffer = getMaskTemplate(!1, 1)), 
          +            getMaskSet()._buffer;
          +        }
          +        function getBuffer(noCache) {
          +            if (void 0 === getMaskSet().buffer || noCache === !0) {
          +                if (noCache === !0) for (var testNdx in getMaskSet().tests) void 0 === getMaskSet().validPositions[testNdx] && delete getMaskSet().tests[testNdx];
          +                getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0);
          +            }
          +            return getMaskSet().buffer;
          +        }
          +        function refreshFromBuffer(start, end, buffer) {
          +            var i;
          +            if (buffer = buffer, start === !0) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; end > i; i++) delete getMaskSet().validPositions[i], 
          +            delete getMaskSet().tests[i];
          +            for (i = start; end > i; i++) resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter && isValid(i, buffer[i], !0, !0);
          +        }
          +        function casing(elem, test) {
          +            switch (test.casing) {
          +              case "upper":
          +                elem = elem.toUpperCase();
          +                break;
          +
          +              case "lower":
          +                elem = elem.toLowerCase();
          +            }
          +            return elem;
          +        }
          +        function checkAlternationMatch(altArr1, altArr2) {
          +            for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {
          +                isMatch = !0;
          +                break;
          +            }
          +            return isMatch;
          +        }
          +        function isValid(pos, c, strict, fromSetValid) {
          +            function isSelection(posObj) {
          +                return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 && opts.insertMode : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1 && opts.insertMode;
          +            }
          +            function _isValid(position, c, strict, fromSetValid) {
          +                var rslt = !1;
          +                return $.each(getTests(position), function(ndx, tst) {
          +                    for (var test = tst.match, loopend = c ? 1 : 0, chrs = "", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));
          +                    if (c && (chrs += c), getBuffer(!0), rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : c !== test.def && c !== opts.skipOptionalPartCharacter || "" === test.def ? !1 : {
          +                        c: test.placeholder || test.def,
          +                        pos: position
          +                    }, rslt !== !1) {
          +                        var elem = void 0 !== rslt.c ? rslt.c : c;
          +                        elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? test.placeholder || test.def : elem;
          +                        var validatedPos = position, possibleModifiedBuffer = getBuffer();
          +                        if (void 0 !== rslt.remove && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), 
          +                        $.each(rslt.remove.sort(function(a, b) {
          +                            return b - a;
          +                        }), function(ndx, lmnt) {
          +                            stripValidPositions(lmnt, lmnt + 1, !0);
          +                        })), void 0 !== rslt.insert && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), 
          +                        $.each(rslt.insert.sort(function(a, b) {
          +                            return a - b;
          +                        }), function(ndx, lmnt) {
          +                            isValid(lmnt.pos, lmnt.c, !1, fromSetValid);
          +                        })), rslt.refreshFromBuffer) {
          +                            var refresh = rslt.refreshFromBuffer;
          +                            if (strict = !0, refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), 
          +                            void 0 === rslt.pos && void 0 === rslt.c) return rslt.pos = getLastValidPosition(), 
          +                            !1;
          +                            if (validatedPos = void 0 !== rslt.pos ? rslt.pos : position, validatedPos !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), 
          +                            !1;
          +                        } else if (rslt !== !0 && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos, 
          +                        refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), 
          +                        !1;
          +                        return rslt !== !0 && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (ndx > 0 && resetMaskSet(!0), 
          +                        setValidPosition(validatedPos, $.extend({}, tst, {
          +                            input: casing(elem, test)
          +                        }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);
          +                    }
          +                }), rslt;
          +            }
          +            function alternate(pos, c, strict, fromSetValid) {
          +                for (var lastAlt, alternation, isValidRslt, altPos, i, validPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), testsClone = $.extend(!0, {}, getMaskSet().tests), lAlt = getLastValidPosition(); lAlt >= 0 && (altPos = getMaskSet().validPositions[lAlt], 
          +                !altPos || void 0 === altPos.alternation || (lastAlt = lAlt, alternation = getMaskSet().validPositions[lastAlt].alternation, 
          +                getTestTemplate(lastAlt).locator[altPos.alternation] === altPos.locator[altPos.alternation])); lAlt--) ;
          +                if (void 0 !== alternation) {
          +                    lastAlt = parseInt(lastAlt);
          +                    for (var decisionPos in getMaskSet().validPositions) if (decisionPos = parseInt(decisionPos), 
          +                    altPos = getMaskSet().validPositions[decisionPos], decisionPos >= lastAlt && void 0 !== altPos.alternation) {
          +                        var altNdxs;
          +                        0 === lastAlt ? (altNdxs = [], $.each(getMaskSet().tests[lastAlt], function(ndx, test) {
          +                            void 0 !== test.locator[alternation] && (altNdxs = altNdxs.concat(test.locator[alternation].toString().split(",")));
          +                        })) : altNdxs = getMaskSet().validPositions[lastAlt].locator[alternation].toString().split(",");
          +                        var decisionTaker = void 0 !== altPos.locator[alternation] ? altPos.locator[alternation] : altNdxs[0];
          +                        decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(",")[0]);
          +                        for (var mndx = 0; mndx < altNdxs.length; mndx++) {
          +                            var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0;
          +                            if (decisionTaker < altNdxs[mndx]) {
          +                                for (var possibilityPos, possibilities, dp = decisionPos; dp >= 0; dp--) if (possibilityPos = getMaskSet().validPositions[dp], 
          +                                void 0 !== possibilityPos) {
          +                                    var bestMatch = selectBestMatch(dp, altNdxs[mndx]);
          +                                    getMaskSet().validPositions[dp].match.def !== bestMatch.match.def && (validInputs.push(getMaskSet().validPositions[dp].input), 
          +                                    getMaskSet().validPositions[dp] = bestMatch, getMaskSet().validPositions[dp].input = getPlaceholder(dp), 
          +                                    null === getMaskSet().validPositions[dp].match.fn && staticInputsBeforePosAlternate++, 
          +                                    possibilityPos = bestMatch), possibilities = possibilityPos.locator[alternation], 
          +                                    possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]);
          +                                    break;
          +                                }
          +                                if (decisionTaker !== possibilityPos.locator[alternation]) {
          +                                    for (i = decisionPos + 1; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = getMaskSet().validPositions[i], 
          +                                    validPos && null != validPos.match.fn ? validInputs.push(validPos.input) : pos > i && staticInputsBeforePos++, 
          +                                    delete getMaskSet().validPositions[i], delete getMaskSet().tests[i];
          +                                    for (resetMaskSet(!0), opts.keepStatic = !opts.keepStatic, isValidRslt = !0; validInputs.length > 0; ) {
          +                                        var input = validInputs.shift();
          +                                        if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(void 0, !0) + 1, input, !1, fromSetValid))) break;
          +                                    }
          +                                    if (possibilityPos.alternation = alternation, possibilityPos.locator[alternation] = possibilities, 
          +                                    isValidRslt) {
          +                                        var targetLvp = getLastValidPosition(pos) + 1;
          +                                        for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) validPos = getMaskSet().validPositions[i], 
          +                                        (void 0 === validPos || null == validPos.match.fn) && pos > i && staticInputsBeforePosAlternate++;
          +                                        pos += staticInputsBeforePosAlternate - staticInputsBeforePos, isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid);
          +                                    }
          +                                    if (opts.keepStatic = !opts.keepStatic, isValidRslt) return isValidRslt;
          +                                    resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone), getMaskSet().tests = $.extend(!0, {}, testsClone);
          +                                }
          +                            }
          +                        }
          +                        break;
          +                    }
          +                }
          +                return !1;
          +            }
          +            function trackbackAlternations(originalPos, newPos) {
          +                for (var vp = getMaskSet().validPositions[newPos], targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; newPos > ps; ps++) if (void 0 === getMaskSet().validPositions[ps] && !isMask(ps, !0)) {
          +                    var tests = getTests(ps), bestMatch = tests[0], equality = -1;
          +                    $.each(tests, function(ndx, tst) {
          +                        for (var i = 0; tll > i && (void 0 !== tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(","), targetLocator[i].toString().split(","))); i++) i > equality && (equality = i, 
          +                        bestMatch = tst);
          +                    }), setValidPosition(ps, $.extend({}, bestMatch, {
          +                        input: bestMatch.match.placeholder || bestMatch.match.def
          +                    }), !0);
          +                }
          +            }
          +            strict = strict === !0;
          +            var maskPos = pos;
          +            void 0 !== pos.begin && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);
          +            for (var result = !1, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;
          +            var testTemplate;
          +            for (pndx++; maskPos > pndx; pndx++) void 0 === getMaskSet().validPositions[pndx] && (opts.jitMasking === !1 || opts.jitMasking > pndx) && ((testTemplate = getTestTemplate(pndx)).match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && _isValid(getLastValidPosition(pndx, !0) + 1, testTemplate.match.placeholder || (null == testTemplate.match.fn ? testTemplate.match.def : "" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0, fromSetValid);
          +            if (isSelection(pos) && (handleRemove(void 0, Inputmask.keyCode.DELETE, pos), maskPos = getMaskSet().p), 
          +            maskPos < getMaskLength() && (result = _isValid(maskPos, c, strict, fromSetValid), 
          +            (!strict || fromSetValid === !0) && result === !1)) {
          +                var currentPosValid = getMaskSet().validPositions[maskPos];
          +                if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {
          +                    if ((opts.insertMode || void 0 === getMaskSet().validPositions[seekNext(maskPos)]) && !isMask(maskPos, !0)) {
          +                        var staticChar = getTestTemplate(maskPos).match;
          +                        staticChar = staticChar.placeholder || staticChar.def, _isValid(maskPos, staticChar, strict, fromSetValid);
          +                        for (var nPos = maskPos + 1, snPos = seekNext(maskPos); snPos >= nPos; nPos++) if (result = _isValid(nPos, c, strict, fromSetValid), 
          +                        result !== !1) {
          +                            trackbackAlternations(maskPos, nPos), maskPos = nPos;
          +                            break;
          +                        }
          +                    }
          +                } else result = {
          +                    caret: seekNext(maskPos)
          +                };
          +            }
          +            return result === !1 && opts.keepStatic && (result = alternate(maskPos, c, strict, fromSetValid)), 
          +            result === !0 && (result = {
          +                pos: maskPos
          +            }), $.isFunction(opts.postValidation) && result !== !1 && !strict && fromSetValid !== !0 && (result = opts.postValidation(getBuffer(!0), result, opts) ? result : !1), 
          +            void 0 === result.pos && (result.pos = maskPos), result === !1 && (resetMaskSet(!0), 
          +            getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;
          +        }
          +        function isMask(pos, strict) {
          +            var test;
          +            if (strict ? (test = getTestTemplate(pos).match, "" === test.def && (test = getTest(pos))) : test = getTest(pos), 
          +            null != test.fn) return test.fn;
          +            if (strict !== !0 && pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
          +                var tests = getTests(pos);
          +                return tests.length > 2;
          +            }
          +            return !1;
          +        }
          +        function getMaskLength() {
          +            var maskLength;
          +            maxLength = void 0 !== el ? el.maxLength : void 0, -1 === maxLength && (maxLength = void 0);
          +            var pos, lvp = getLastValidPosition(), testPos = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== testPos ? testPos.locator.slice() : void 0;
          +            for (pos = lvp + 1; void 0 === testPos || null !== testPos.match.fn || null === testPos.match.fn && "" !== testPos.match.def; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
          +            ndxIntlzr = testPos.locator.slice();
          +            var lastTest = getTest(pos - 1);
          +            return maskLength = "" !== lastTest.def ? pos : pos - 1, void 0 === maxLength || maxLength > maskLength ? maskLength : maxLength;
          +        }
          +        function seekNext(pos, newBlock) {
          +            var maskL = getMaskLength();
          +            if (pos >= maskL) return maskL;
          +            for (var position = pos; ++position < maskL && (newBlock === !0 && (getTest(position).newBlockMarker !== !0 || !isMask(position)) || newBlock !== !0 && !isMask(position) && (opts.nojumps !== !0 || opts.nojumpsThreshold > position)); ) ;
          +            return position;
          +        }
          +        function seekPrevious(pos, newBlock) {
          +            var position = pos;
          +            if (0 >= position) return 0;
          +            for (;--position > 0 && (newBlock === !0 && getTest(position).newBlockMarker !== !0 || newBlock !== !0 && !isMask(position)); ) ;
          +            return position;
          +        }
          +        function getBufferElement(position) {
          +            return void 0 === getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input;
          +        }
          +        function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
          +            if (event && $.isFunction(opts.onBeforeWrite)) {
          +                var result = opts.onBeforeWrite(event, buffer, caretPos, opts);
          +                if (result) {
          +                    if (result.refreshFromBuffer) {
          +                        var refresh = result.refreshFromBuffer;
          +                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
          +                        buffer = getBuffer(!0);
          +                    }
          +                    void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos);
          +                }
          +            }
          +            input.inputmask._valueSet(buffer.join("")), void 0 === caretPos || void 0 !== event && "blur" === event.type || caret(input, caretPos), 
          +            triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input"));
          +        }
          +        function getPlaceholder(pos, test) {
          +            if (test = test || getTest(pos), void 0 !== test.placeholder) return test.placeholder;
          +            if (null === test.fn) {
          +                if (pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
          +                    var prevTest, tests = getTests(pos), staticAlternations = [];
          +                    if (tests.length > 2) for (var i = 0; i < tests.length; i++) if (tests[i].match.optionality !== !0 && tests[i].match.optionalQuantifier !== !0 && (null === tests[i].match.fn || void 0 === prevTest || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts) !== !1) && (staticAlternations.push(tests[i]), 
          +                    null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1)) return opts.placeholder.charAt(pos % opts.placeholder.length);
          +                }
          +                return test.def;
          +            }
          +            return opts.placeholder.charAt(pos % opts.placeholder.length);
          +        }
          +        function checkVal(input, writeOut, strict, nptvl) {
          +            function isTemplateMatch() {
          +                var isMatch = !1, charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join("").indexOf(charCodes);
          +                if (-1 !== charCodeNdx && !isMask(initialNdx)) {
          +                    isMatch = !0;
          +                    for (var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx), i = 0; i < bufferTemplateArr.length; i++) if (" " !== bufferTemplateArr[i]) {
          +                        isMatch = !1;
          +                        break;
          +                    }
          +                }
          +                return isMatch;
          +            }
          +            var result, inputValue = nptvl.slice(), charCodes = "", initialNdx = 0;
          +            if (resetMaskSet(), getMaskSet().p = seekNext(-1), !strict) if (opts.autoUnmask !== !0) {
          +                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g"));
          +                matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), 
          +                initialNdx = seekNext(initialNdx));
          +            } else initialNdx = seekNext(initialNdx);
          +            $.each(inputValue, function(ndx, charCode) {
          +                if (void 0 !== charCode) {
          +                    var keypress = new $.Event("keypress");
          +                    keypress.which = charCode.charCodeAt(0), charCodes += charCode;
          +                    var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
          +                    if (!isTemplateMatch() || strict || opts.autoUnmask) {
          +                        var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;
          +                        result = keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 
          +                        charCodes = "";
          +                    } else result = keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);
          +                    if (!strict && $.isFunction(opts.onBeforeWrite) && (result = opts.onBeforeWrite(keypress, getBuffer(), result.forwardPosition, opts), 
          +                    result && result.refreshFromBuffer)) {
          +                        var refresh = result.refreshFromBuffer;
          +                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 
          +                        resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
          +                    }
          +                }
          +            }), writeOut && writeBuffer(input, getBuffer(), document.activeElement === input ? seekNext(getLastValidPosition(0)) : void 0, new $.Event("checkval"));
          +        }
          +        function unmaskedvalue(input) {
          +            if (input && void 0 === input.inputmask) return input.value;
          +            var umValue = [], vps = getMaskSet().validPositions;
          +            for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);
          +            var unmaskedValue = 0 === umValue.length ? null : (isRTL ? umValue.reverse() : umValue).join("");
          +            if (null !== unmaskedValue) {
          +                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join("");
          +                $.isFunction(opts.onUnMask) && (unmaskedValue = opts.onUnMask(bufferValue, unmaskedValue, opts) || unmaskedValue);
          +            }
          +            return unmaskedValue;
          +        }
          +        function caret(input, begin, end, notranslate) {
          +            function translatePosition(pos) {
          +                if (notranslate !== !0 && isRTL && "number" == typeof pos && (!opts.greedy || "" !== opts.placeholder)) {
          +                    var bffrLght = getBuffer().join("").length;
          +                    pos = bffrLght - pos;
          +                }
          +                return pos;
          +            }
          +            var range;
          +            if ("number" != typeof begin) return input.setSelectionRange ? (begin = input.selectionStart, 
          +            end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), 
          +            (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) && (begin = range.startOffset, 
          +            end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), 
          +            begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length), 
          +            end = begin + range.text.length), {
          +                begin: translatePosition(begin),
          +                end: translatePosition(end)
          +            };
          +            begin = translatePosition(begin), end = translatePosition(end), end = "number" == typeof end ? end : begin;
          +            var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;
          +            if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || opts.insertMode !== !1 || begin !== end || end++, 
          +            input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {
          +                if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) {
          +                    var textNode = document.createTextNode("");
          +                    input.appendChild(textNode);
          +                }
          +                range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), 
          +                range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), 
          +                range.collapse(!0);
          +                var sel = window.getSelection();
          +                sel.removeAllRanges(), sel.addRange(range);
          +            } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), 
          +            range.moveEnd("character", end), range.moveStart("character", begin), range.select());
          +        }
          +        function determineLastRequiredPosition(returnDefinition) {
          +            var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0;
          +            for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
          +            ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos);
          +            var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0;
          +            for (pos = bl - 1; pos > lvp && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && "" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;
          +            return returnDefinition ? {
          +                l: bl,
          +                def: positions[bl] ? positions[bl].match : void 0
          +            } : bl;
          +        }
          +        function clearOptionalTail(buffer) {
          +            for (var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
          +            return buffer.splice(rl, lmib + 1 - rl), buffer;
          +        }
          +        function isComplete(buffer) {
          +            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);
          +            if ("*" === opts.repeat) return void 0;
          +            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
          +            if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {
          +                complete = !0;
          +                for (var i = 0; aml >= i; i++) {
          +                    var test = getTestTemplate(i).match;
          +                    if (null !== test.fn && void 0 === getMaskSet().validPositions[i] && test.optionality !== !0 && test.optionalQuantifier !== !0 || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {
          +                        complete = !1;
          +                        break;
          +                    }
          +                }
          +            }
          +            return complete;
          +        }
          +        function patchValueProperty(npt) {
          +            function patchValhook(type) {
          +                if ($.valHooks && (void 0 === $.valHooks[type] || $.valHooks[type].inputmaskpatch !== !0)) {
          +                    var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {
          +                        return elem.value;
          +                    }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {
          +                        return elem.value = value, elem;
          +                    };
          +                    $.valHooks[type] = {
          +                        get: function(elem) {
          +                            if (elem.inputmask) {
          +                                if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();
          +                                var result = valhookGet(elem);
          +                                return -1 !== getLastValidPosition(void 0, void 0, elem.inputmask.maskset.validPositions) || opts.nullable !== !0 ? result : "";
          +                            }
          +                            return valhookGet(elem);
          +                        },
          +                        set: function(elem, value) {
          +                            var result, $elem = $(elem);
          +                            return result = valhookSet(elem, value), elem.inputmask && $elem.trigger("setvalue"), 
          +                            result;
          +                        },
          +                        inputmaskpatch: !0
          +                    };
          +                }
          +            }
          +            function getter() {
          +                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || opts.nullable !== !0 ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : "" : valueGet.call(this);
          +            }
          +            function setter(value) {
          +                valueSet.call(this, value), this.inputmask && $(this).trigger("setvalue");
          +            }
          +            function installNativeValueSetFallback(npt) {
          +                EventRuler.on(npt, "mouseenter", function(event) {
          +                    var $input = $(this), input = this, value = input.inputmask._valueGet();
          +                    value !== getBuffer().join("") && $input.trigger("setvalue");
          +                });
          +            }
          +            var valueGet, valueSet;
          +            if (!npt.inputmask.__valueGet) {
          +                if (Object.getOwnPropertyDescriptor) {
          +                    "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
          +                        return object.__proto__;
          +                    } : function(object) {
          +                        return object.constructor.prototype;
          +                    });
          +                    var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
          +                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
          +                    valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
          +                        get: getter,
          +                        set: setter,
          +                        configurable: !0
          +                    })) : "INPUT" !== npt.tagName && (valueGet = function() {
          +                        return this.textContent;
          +                    }, valueSet = function(value) {
          +                        this.textContent = value;
          +                    }, Object.defineProperty(npt, "value", {
          +                        get: getter,
          +                        set: setter,
          +                        configurable: !0
          +                    }));
          +                } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
          +                valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
          +                npt.__defineSetter__("value", setter));
          +                npt.inputmask.__valueGet = valueGet, npt.inputmask._valueGet = function(overruleRTL) {
          +                    return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el);
          +                }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) {
          +                    valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value);
          +                }, void 0 === valueGet && (valueGet = function() {
          +                    return this.value;
          +                }, valueSet = function(value) {
          +                    this.value = value;
          +                }, patchValhook(npt.type), installNativeValueSetFallback(npt));
          +            }
          +        }
          +        function handleRemove(input, k, pos, strict) {
          +            function generalize() {
          +                if (opts.keepStatic) {
          +                    resetMaskSet(!0);
          +                    var lastAlt, validInputs = [], positionsClone = $.extend(!0, {}, getMaskSet().validPositions);
          +                    for (lastAlt = getLastValidPosition(); lastAlt >= 0; lastAlt--) {
          +                        var validPos = getMaskSet().validPositions[lastAlt];
          +                        if (validPos && (null != validPos.match.fn && validInputs.push(validPos.input), 
          +                        delete getMaskSet().validPositions[lastAlt], void 0 !== validPos.alternation && validPos.locator[validPos.alternation] === getTestTemplate(lastAlt).locator[validPos.alternation])) break;
          +                    }
          +                    if (lastAlt > -1) for (;validInputs.length > 0; ) {
          +                        getMaskSet().p = seekNext(getLastValidPosition());
          +                        var keypress = new $.Event("keypress");
          +                        keypress.which = validInputs.pop().charCodeAt(0), keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);
          +                    } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);
          +                }
          +            }
          +            if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), 
          +            isRTL)) {
          +                var pend = pos.end;
          +                pos.end = pos.begin, pos.begin = pend;
          +            }
          +            k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode === !1) ? (pos.begin = seekPrevious(pos.begin), 
          +            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1, 
          +            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.end++), 
          +            stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0 && generalize();
          +            var lvp = getLastValidPosition(pos.begin);
          +            lvp < pos.begin ? (-1 === lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : strict !== !0 && (getMaskSet().p = pos.begin);
          +        }
          +        function keydownEvent(e) {
          +            var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
          +            if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) e.preventDefault(), 
          +            handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
          +            input.inputmask._valueGet() === getBufferTemplate().join("") ? $input.trigger("cleared") : isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
          +            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {
          +                e.preventDefault();
          +                var caretPos = seekNext(getLastValidPosition());
          +                opts.insertMode || caretPos !== getMaskLength() || e.shiftKey || caretPos--, caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
          +            } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 
          +            caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && e.altKey !== !0 ? (checkVal(input, !0, !1, undoValue.split("")), 
          +            $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? opts.tabThrough === !0 && k === Inputmask.keyCode.TAB ? (e.shiftKey === !0 ? (null === getTest(pos.begin).fn && (pos.begin = seekNext(pos.begin)), 
          +            pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 
          +            pos.end = seekNext(pos.begin, !0), pos.end < getMaskLength() && pos.end--), pos.begin < getMaskLength() && (e.preventDefault(), 
          +            caret(input, pos.begin, pos.end))) : opts.insertMode !== !1 || e.shiftKey || (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {
          +                var caretPos = caret(input);
          +                caret(input, caretPos.begin);
          +            }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {
          +                var caretPos = caret(input);
          +                caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
          +            }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskLength() ? pos.begin : pos.begin - 1));
          +            opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);
          +        }
          +        function keypressEvent(e, checkval, writeOut, strict, ndx) {
          +            var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;
          +            if (!(checkval === !0 || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("") && (undoValue = getBuffer().join(""), 
          +            setTimeout(function() {
          +                $input.trigger("change");
          +            }, 0)), !0;
          +            if (k) {
          +                46 === k && e.shiftKey === !1 && "," === opts.radixPoint && (k = 44);
          +                var forwardPosition, pos = checkval ? {
          +                    begin: ndx,
          +                    end: ndx
          +                } : caret(input), c = String.fromCharCode(k);
          +                getMaskSet().writeOutBuffer = !0;
          +                var valResult = isValid(pos, c, strict);
          +                if (valResult !== !1) {
          +                    var p = valResult.pos;
          +                    if (resetMaskSet(!0), void 0 !== valResult.caret) forwardPosition = valResult.caret; else {
          +                        var vps = getMaskSet().validPositions;
          +                        forwardPosition = !opts.keepStatic && (void 0 !== vps[p + 1] && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || void 0 !== vps[p].alternation) ? p + 1 : seekNext(p);
          +                    }
          +                    getMaskSet().p = forwardPosition;
          +                }
          +                if (writeOut !== !1) {
          +                    var self = this;
          +                    if (setTimeout(function() {
          +                        opts.onKeyValidation.call(self, k, valResult, opts);
          +                    }, 0), getMaskSet().writeOutBuffer && valResult !== !1) {
          +                        var buffer = getBuffer();
          +                        writeBuffer(input, buffer, opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0), 
          +                        checkval !== !0 && setTimeout(function() {
          +                            isComplete(buffer) === !0 && $input.trigger("complete");
          +                        }, 0);
          +                    }
          +                }
          +                if (opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask), e.preventDefault(), 
          +                checkval) return valResult.forwardPosition = forwardPosition, valResult;
          +            }
          +        }
          +        function pasteEvent(e) {
          +            var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);
          +            isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);
          +            var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);
          +            valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("") && (valueBeforeCaret = ""), 
          +            valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("") && (valueAfterCaret = ""), 
          +            isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), 
          +            window.clipboardData && window.clipboardData.getData ? inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret : ev.clipboardData && ev.clipboardData.getData && (inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret);
          +            var pasteValue = inputValue;
          +            if ($.isFunction(opts.onBeforePaste)) {
          +                if (pasteValue = opts.onBeforePaste(inputValue, opts), pasteValue === !1) return e.preventDefault();
          +                pasteValue || (pasteValue = inputValue);
          +            }
          +            return checkVal(input, !1, !1, isRTL ? pasteValue.split("").reverse() : pasteValue.toString().split("")), 
          +            writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, !0), isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
          +            e.preventDefault();
          +        }
          +        function inputFallBackEvent(e) {
          +            var input = this, inputValue = input.inputmask._valueGet();
          +            if (getBuffer().join("") !== inputValue) {
          +                var caretPos = caret(input);
          +                if (inputValue = inputValue.replace(new RegExp("(" + Inputmask.escapeRegex(getBufferTemplate().join("")) + ")*"), ""), 
          +                iemobile) {
          +                    var inputChar = inputValue.replace(getBuffer().join(""), "");
          +                    if (1 === inputChar.length) {
          +                        var keypress = new $.Event("keypress");
          +                        return keypress.which = inputChar.charCodeAt(0), keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), 
          +                        !1;
          +                    }
          +                }
          +                if (caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input)), 
          +                getBuffer().length - inputValue.length !== 1 || inputValue.charAt(caretPos.begin) === getBuffer()[caretPos.begin] || inputValue.charAt(caretPos.begin + 1) === getBuffer()[caretPos.begin] || isMask(caretPos.begin)) {
          +                    for (var lvp = getLastValidPosition() + 1, bufferTemplate = getBuffer().slice(lvp).join(""); null === inputValue.match(Inputmask.escapeRegex(bufferTemplate) + "$"); ) bufferTemplate = bufferTemplate.slice(1);
          +                    inputValue = inputValue.replace(bufferTemplate, ""), inputValue = inputValue.split(""), 
          +                    checkVal(input, !0, !1, inputValue), isComplete(getBuffer()) === !0 && $(input).trigger("complete");
          +                } else e.keyCode = Inputmask.keyCode.BACKSPACE, keydownEvent.call(input, e);
          +                e.preventDefault();
          +            }
          +        }
          +        function setValueEvent(e) {
          +            var input = this, value = input.inputmask._valueGet();
          +            checkVal(input, !0, !1, ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(value, opts) || value : value).split("")), 
          +            undoValue = getBuffer().join(""), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("") && input.inputmask._valueSet("");
          +        }
          +        function focusEvent(e) {
          +            var input = this, nptValue = input.inputmask._valueGet();
          +            opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && "" === nptValue) ? input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : mouseEnter === !1 && caret(input, seekNext(getLastValidPosition())), 
          +            opts.positionCaretOnTab === !0 && setTimeout(function() {
          +                caret(input, seekNext(getLastValidPosition()));
          +            }, 0), undoValue = getBuffer().join("");
          +        }
          +        function mouseleaveEvent(e) {
          +            var input = this;
          +            if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {
          +                var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();
          +                nptValue !== input.getAttribute("placeholder") && "" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer), 
          +                writeBuffer(input, buffer));
          +            }
          +        }
          +        function clickEvent(e) {
          +            function doRadixFocus(clickPos) {
          +                if (opts.radixFocus && "" !== opts.radixPoint) {
          +                    var vps = getMaskSet().validPositions;
          +                    if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
          +                        if (clickPos < seekNext(-1)) return !0;
          +                        var radixPos = $.inArray(opts.radixPoint, getBuffer());
          +                        if (-1 !== radixPos) {
          +                            for (var vp in vps) if (vp > radixPos && vps[vp].input !== getPlaceholder(vp)) return !1;
          +                            return !0;
          +                        }
          +                    }
          +                }
          +                return !1;
          +            }
          +            var input = this;
          +            setTimeout(function() {
          +                if (document.activeElement === input) {
          +                    var selectedCaret = caret(input);
          +                    if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else {
          +                        var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
          +                        if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else {
          +                            var placeholder = getPlaceholder(lastPosition);
          +                            ("" !== placeholder && getBuffer()[lastPosition] !== placeholder || !isMask(lastPosition, !0) && getTest(lastPosition).def === placeholder) && (lastPosition = seekNext(lastPosition)), 
          +                            caret(input, lastPosition);
          +                        }
          +                    }
          +                }
          +            }, 0);
          +        }
          +        function dblclickEvent(e) {
          +            var input = this;
          +            setTimeout(function() {
          +                caret(input, 0, seekNext(getLastValidPosition()));
          +            }, 0);
          +        }
          +        function cutEvent(e) {
          +            var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);
          +            clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clipData.join("")), 
          +            document.execCommand && document.execCommand("copy"), handleRemove(input, Inputmask.keyCode.DELETE, pos), 
          +            writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
          +            input.inputmask._valueGet() === getBufferTemplate().join("") && $input.trigger("cleared"), 
          +            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask);
          +        }
          +        function blurEvent(e) {
          +            var $input = $(this), input = this;
          +            if (input.inputmask) {
          +                var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();
          +                undoValue !== buffer.join("") && setTimeout(function() {
          +                    $input.trigger("change"), undoValue = buffer.join("");
          +                }, 0), "" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 
          +                isComplete(buffer) === !1 && (setTimeout(function() {
          +                    $input.trigger("incomplete");
          +                }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), 
          +                writeBuffer(input, buffer, void 0, e));
          +            }
          +        }
          +        function mouseenterEvent(e) {
          +            var input = this;
          +            mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer());
          +        }
          +        function submitEvent(e) {
          +            undoValue !== getBuffer().join("") && $el.trigger("change"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("") && el.inputmask._valueSet(""), 
          +            opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), 
          +            setTimeout(function() {
          +                writeBuffer(el, getBuffer());
          +            }, 0));
          +        }
          +        function resetEvent(e) {
          +            setTimeout(function() {
          +                $el.trigger("setvalue");
          +            }, 0);
          +        }
          +        function mask(elem) {
          +            if (el = elem, $el = $(el), opts.showTooltip && (el.title = opts.tooltip || getMaskSet().mask), 
          +            ("rtl" === el.dir || opts.rightAlign) && (el.style.textAlign = "right"), ("rtl" === el.dir || opts.numericInput) && (el.dir = "ltr", 
          +            el.removeAttribute("dir"), el.inputmask.isRTL = !0, isRTL = !0), EventRuler.off(el), 
          +            patchValueProperty(el), isElementTypeSupported(el, opts) && (EventRuler.on(el, "submit", submitEvent), 
          +            EventRuler.on(el, "reset", resetEvent), EventRuler.on(el, "mouseenter", mouseenterEvent), 
          +            EventRuler.on(el, "blur", blurEvent), EventRuler.on(el, "focus", focusEvent), EventRuler.on(el, "mouseleave", mouseleaveEvent), 
          +            EventRuler.on(el, "click", clickEvent), EventRuler.on(el, "dblclick", dblclickEvent), 
          +            EventRuler.on(el, "paste", pasteEvent), EventRuler.on(el, "dragdrop", pasteEvent), 
          +            EventRuler.on(el, "drop", pasteEvent), EventRuler.on(el, "cut", cutEvent), EventRuler.on(el, "complete", opts.oncomplete), 
          +            EventRuler.on(el, "incomplete", opts.onincomplete), EventRuler.on(el, "cleared", opts.oncleared), 
          +            EventRuler.on(el, "keydown", keydownEvent), EventRuler.on(el, "keypress", keypressEvent), 
          +            EventRuler.on(el, "input", inputFallBackEvent)), EventRuler.on(el, "setvalue", setValueEvent), 
          +            "" !== el.inputmask._valueGet() || opts.clearMaskOnLostFocus === !1 || document.activeElement === el) {
          +                var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(el.inputmask._valueGet(), opts) || el.inputmask._valueGet() : el.inputmask._valueGet();
          +                checkVal(el, !0, !1, initialValue.split(""));
          +                var buffer = getBuffer().slice();
          +                undoValue = buffer.join(""), isComplete(buffer) === !1 && opts.clearIncomplete && resetMaskSet(), 
          +                opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), 
          +                writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));
          +            }
          +        }
          +        var undoValue, el, $el, maxLength, valueBuffer, isRTL = !1, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !0, EventRuler = {
          +            on: function(input, eventName, eventHandler) {
          +                var ev = function(e) {
          +                    if (void 0 === this.inputmask && "FORM" !== this.nodeName) {
          +                        var imOpts = $.data(this, "_inputmask_opts");
          +                        imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);
          +                    } else {
          +                        if ("setvalue" === e.type || !(this.disabled || this.readOnly && !("keydown" === e.type && e.ctrlKey && 67 === e.keyCode || opts.tabThrough === !1 && e.keyCode === Inputmask.keyCode.TAB))) {
          +                            switch (e.type) {
          +                              case "input":
          +                                if (skipInputEvent === !0) return skipInputEvent = !1, e.preventDefault();
          +                                break;
          +
          +                              case "keydown":
          +                                skipKeyPressEvent = !1, skipInputEvent = !1;
          +                                break;
          +
          +                              case "keypress":
          +                                if (skipKeyPressEvent === !0) return e.preventDefault();
          +                                skipKeyPressEvent = !0;
          +                                break;
          +
          +                              case "click":
          +                                if (iemobile) {
          +                                    var that = this;
          +                                    return setTimeout(function() {
          +                                        eventHandler.apply(that, arguments);
          +                                    }, 0), !1;
          +                                }
          +                            }
          +                            var returnVal = eventHandler.apply(this, arguments);
          +                            return returnVal === !1 && (e.preventDefault(), e.stopPropagation()), returnVal;
          +                        }
          +                        e.preventDefault();
          +                    }
          +                };
          +                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), 
          +                -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);
          +            },
          +            off: function(input, event) {
          +                if (input.inputmask && input.inputmask.events) {
          +                    var events;
          +                    event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, 
          +                    $.each(events, function(eventName, evArr) {
          +                        for (;evArr.length > 0; ) {
          +                            var ev = evArr.pop();
          +                            -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);
          +                        }
          +                        delete input.inputmask.events[eventName];
          +                    });
          +                }
          +            }
          +        };
          +        if (void 0 !== actionObj) switch (actionObj.action) {
          +          case "isComplete":
          +            return el = actionObj.el, isComplete(getBuffer());
          +
          +          case "unmaskedvalue":
          +            return el = actionObj.el, void 0 !== el && void 0 !== el.inputmask ? (maskset = el.inputmask.maskset, 
          +            opts = el.inputmask.opts, isRTL = el.inputmask.isRTL) : (valueBuffer = actionObj.value, 
          +            opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(valueBuffer, opts) || valueBuffer : valueBuffer).split(""), 
          +            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts)), 
          +            unmaskedvalue(el);
          +
          +          case "mask":
          +            el = actionObj.el, maskset = el.inputmask.maskset, opts = el.inputmask.opts, isRTL = el.inputmask.isRTL, 
          +            undoValue = getBuffer().join(""), mask(el);
          +            break;
          +
          +          case "format":
          +            return opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(actionObj.value, opts) || actionObj.value : actionObj.value).split(""), 
          +            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts), 
          +            actionObj.metadata ? {
          +                value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""),
          +                metadata: maskScope({
          +                    action: "getmetadata"
          +                }, maskset, opts)
          +            } : isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join("");
          +
          +          case "isValid":
          +            opts.numericInput && (isRTL = !0), actionObj.value ? (valueBuffer = actionObj.value.split(""), 
          +            checkVal(void 0, !1, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join("");
          +            for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
          +            return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join("");
          +
          +          case "getemptymask":
          +            return getBufferTemplate().join("");
          +
          +          case "remove":
          +            el = actionObj.el, $el = $(el), maskset = el.inputmask.maskset, opts = el.inputmask.opts, 
          +            el.inputmask._valueSet(unmaskedvalue(el)), EventRuler.off(el);
          +            var valueProperty;
          +            Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"), 
          +            valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, "value", {
          +                get: el.inputmask.__valueGet,
          +                set: el.inputmask.__valueSet,
          +                configurable: !0
          +            })) : document.__lookupGetter__ && el.__lookupGetter__("value") && el.inputmask.__valueGet && (el.__defineGetter__("value", el.inputmask.__valueGet), 
          +            el.__defineSetter__("value", el.inputmask.__valueSet)), el.inputmask = void 0;
          +            break;
          +
          +          case "getmetadata":
          +            if ($.isArray(maskset.metadata)) {
          +                for (var alternation, lvp = getLastValidPosition(void 0, !0), firstAlt = lvp; firstAlt >= 0; firstAlt--) if (getMaskSet().validPositions[firstAlt] && void 0 !== getMaskSet().validPositions[firstAlt].alternation) {
          +                    alternation = getMaskSet().validPositions[firstAlt].alternation;
          +                    break;
          +                }
          +                return void 0 !== alternation ? maskset.metadata[getMaskSet().validPositions[firstAlt].locator[alternation]] : [];
          +            }
          +            return maskset.metadata;
          +        }
          +    }
          +    Inputmask.prototype = {
          +        defaults: {
          +            placeholder: "_",
          +            optionalmarker: {
          +                start: "[",
          +                end: "]"
          +            },
          +            quantifiermarker: {
          +                start: "{",
          +                end: "}"
          +            },
          +            groupmarker: {
          +                start: "(",
          +                end: ")"
          +            },
          +            alternatormarker: "|",
          +            escapeChar: "\\",
          +            mask: null,
          +            oncomplete: $.noop,
          +            onincomplete: $.noop,
          +            oncleared: $.noop,
          +            repeat: 0,
          +            greedy: !0,
          +            autoUnmask: !1,
          +            removeMaskOnSubmit: !1,
          +            clearMaskOnLostFocus: !0,
          +            insertMode: !0,
          +            clearIncomplete: !1,
          +            aliases: {},
          +            alias: null,
          +            onKeyDown: $.noop,
          +            onBeforeMask: null,
          +            onBeforePaste: function(pastedValue, opts) {
          +                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(pastedValue, opts) : pastedValue;
          +            },
          +            onBeforeWrite: null,
          +            onUnMask: null,
          +            showMaskOnFocus: !0,
          +            showMaskOnHover: !0,
          +            onKeyValidation: $.noop,
          +            skipOptionalPartCharacter: " ",
          +            showTooltip: !1,
          +            tooltip: void 0,
          +            numericInput: !1,
          +            rightAlign: !1,
          +            undoOnEscape: !0,
          +            radixPoint: "",
          +            radixPointDefinitionSymbol: void 0,
          +            groupSeparator: "",
          +            radixFocus: !1,
          +            nojumps: !1,
          +            nojumpsThreshold: 0,
          +            keepStatic: null,
          +            positionCaretOnTab: !1,
          +            tabThrough: !1,
          +            supportsInputType: [ "text", "tel", "password" ],
          +            definitions: {
          +                "9": {
          +                    validator: "[0-9]",
          +                    cardinality: 1,
          +                    definitionSymbol: "*"
          +                },
          +                a: {
          +                    validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +                    cardinality: 1,
          +                    definitionSymbol: "*"
          +                },
          +                "*": {
          +                    validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +                    cardinality: 1
          +                }
          +            },
          +            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 ],
          +            isComplete: null,
          +            canClearPosition: $.noop,
          +            postValidation: null,
          +            staticDefinitionSymbol: void 0,
          +            jitMasking: !1,
          +            nullable: !0
          +        },
          +        masksCache: {},
          +        mask: function(elems) {
          +            var that = this;
          +            return "string" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), 
          +            elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {
          +                var scopedOpts = $.extend(!0, {}, that.opts);
          +                importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions));
          +                var maskset = generateMaskSet(scopedOpts, that.noMasksCache);
          +                void 0 !== maskset && (void 0 !== el.inputmask && el.inputmask.remove(), el.inputmask = new Inputmask(), 
          +                el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), 
          +                el.inputmask.el = el, el.inputmask.maskset = maskset, el.inputmask.isRTL = !1, $.data(el, "_inputmask_opts", scopedOpts), 
          +                maskScope({
          +                    action: "mask",
          +                    el: el
          +                }));
          +            }), elems && elems[0] ? elems[0].inputmask || this : this;
          +        },
          +        option: function(options, noremask) {
          +            return "string" == typeof options ? this.opts[options] : "object" == typeof options ? ($.extend(this.userOptions, options), 
          +            this.el && noremask !== !0 && this.mask(this.el), this) : void 0;
          +        },
          +        unmaskedvalue: function(value) {
          +            return maskScope({
          +                action: "unmaskedvalue",
          +                el: this.el,
          +                value: value
          +            }, this.el && this.el.inputmask ? this.el.inputmask.maskset : generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        remove: function() {
          +            return this.el ? (maskScope({
          +                action: "remove",
          +                el: this.el
          +            }), this.el.inputmask = void 0, this.el) : void 0;
          +        },
          +        getemptymask: function() {
          +            return maskScope({
          +                action: "getemptymask"
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        hasMaskedValue: function() {
          +            return !this.opts.autoUnmask;
          +        },
          +        isComplete: function() {
          +            return maskScope({
          +                action: "isComplete",
          +                el: this.el
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        getmetadata: function() {
          +            return maskScope({
          +                action: "getmetadata"
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        isValid: function(value) {
          +            return maskScope({
          +                action: "isValid",
          +                value: value
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        },
          +        format: function(value, metadata) {
          +            return maskScope({
          +                action: "format",
          +                value: value,
          +                metadata: metadata
          +            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
          +        }
          +    }, Inputmask.extendDefaults = function(options) {
          +        $.extend(!0, Inputmask.prototype.defaults, options);
          +    }, Inputmask.extendDefinitions = function(definition) {
          +        $.extend(!0, Inputmask.prototype.defaults.definitions, definition);
          +    }, Inputmask.extendAliases = function(alias) {
          +        $.extend(!0, Inputmask.prototype.defaults.aliases, alias);
          +    }, Inputmask.format = function(value, options, metadata) {
          +        return Inputmask(options).format(value, metadata);
          +    }, Inputmask.unmask = function(value, options) {
          +        return Inputmask(options).unmaskedvalue(value);
          +    }, Inputmask.isValid = function(value, options) {
          +        return Inputmask(options).isValid(value);
          +    }, Inputmask.remove = function(elems) {
          +        $.each(elems, function(ndx, el) {
          +            el.inputmask && el.inputmask.remove();
          +        });
          +    }, Inputmask.escapeRegex = function(str) {
          +        var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ];
          +        return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1");
          +    }, Inputmask.keyCode = {
          +        ALT: 18,
          +        BACKSPACE: 8,
          +        BACKSPACE_SAFARI: 127,
          +        CAPS_LOCK: 20,
          +        COMMA: 188,
          +        COMMAND: 91,
          +        COMMAND_LEFT: 91,
          +        COMMAND_RIGHT: 93,
          +        CONTROL: 17,
          +        DELETE: 46,
          +        DOWN: 40,
          +        END: 35,
          +        ENTER: 13,
          +        ESCAPE: 27,
          +        HOME: 36,
          +        INSERT: 45,
          +        LEFT: 37,
          +        MENU: 93,
          +        NUMPAD_ADD: 107,
          +        NUMPAD_DECIMAL: 110,
          +        NUMPAD_DIVIDE: 111,
          +        NUMPAD_ENTER: 108,
          +        NUMPAD_MULTIPLY: 106,
          +        NUMPAD_SUBTRACT: 109,
          +        PAGE_DOWN: 34,
          +        PAGE_UP: 33,
          +        PERIOD: 190,
          +        RIGHT: 39,
          +        SHIFT: 16,
          +        SPACE: 32,
          +        TAB: 9,
          +        UP: 38,
          +        WINDOWS: 91,
          +        X: 88
          +    };
          +    var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;
          +    /android.*safari.*/i.test(ua) && !iemobile;
          +    return window.Inputmask = Inputmask, Inputmask;
          +}(jQuery), function($, Inputmask) {
          +    return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {
          +        var nptmask, input = this[0];
          +        if (void 0 === options && (options = {}), "string" == typeof fn) switch (fn) {
          +          case "unmaskedvalue":
          +            return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();
          +
          +          case "remove":
          +            return this.each(function() {
          +                this.inputmask && this.inputmask.remove();
          +            });
          +
          +          case "getemptymask":
          +            return input && input.inputmask ? input.inputmask.getemptymask() : "";
          +
          +          case "hasMaskedValue":
          +            return input && input.inputmask ? input.inputmask.hasMaskedValue() : !1;
          +
          +          case "isComplete":
          +            return input && input.inputmask ? input.inputmask.isComplete() : !0;
          +
          +          case "getmetadata":
          +            return input && input.inputmask ? input.inputmask.getmetadata() : void 0;
          +
          +          case "setvalue":
          +            $(input).val(options), input && void 0 !== input.inputmask && $(input).triggerHandler("setvalue");
          +            break;
          +
          +          case "option":
          +            if ("string" != typeof options) return this.each(function() {
          +                return void 0 !== this.inputmask ? this.inputmask.option(options) : void 0;
          +            });
          +            if (input && void 0 !== input.inputmask) return input.inputmask.option(options);
          +            break;
          +
          +          default:
          +            return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {
          +                nptmask.mask(this);
          +            });
          +        } else {
          +            if ("object" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {
          +                return void 0 !== this.inputmask ? this.inputmask.option(fn) : void nptmask.mask(this);
          +            }) : this.each(function() {
          +                nptmask.mask(this);
          +            });
          +            if (void 0 === fn) return this.each(function() {
          +                nptmask = new Inputmask(options), nptmask.mask(this);
          +            });
          +        }
          +    }), $.fn.inputmask;
          +}(jQuery, Inputmask), function($, Inputmask) {
          +    return Inputmask.extendDefinitions({
          +        h: {
          +            validator: "[01][0-9]|2[0-3]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-2]",
          +                cardinality: 1
          +            } ]
          +        },
          +        s: {
          +            validator: "[0-5][0-9]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-5]",
          +                cardinality: 1
          +            } ]
          +        },
          +        d: {
          +            validator: "0[1-9]|[12][0-9]|3[01]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[0-3]",
          +                cardinality: 1
          +            } ]
          +        },
          +        m: {
          +            validator: "0[1-9]|1[012]",
          +            cardinality: 2,
          +            prevalidator: [ {
          +                validator: "[01]",
          +                cardinality: 1
          +            } ]
          +        },
          +        y: {
          +            validator: "(19|20)\\d{2}",
          +            cardinality: 4,
          +            prevalidator: [ {
          +                validator: "[12]",
          +                cardinality: 1
          +            }, {
          +                validator: "(19|20)",
          +                cardinality: 2
          +            }, {
          +                validator: "(19|20)\\d",
          +                cardinality: 3
          +            } ]
          +        }
          +    }), Inputmask.extendAliases({
          +        "dd/mm/yyyy": {
          +            mask: "1/2/y",
          +            placeholder: "dd/mm/yyyy",
          +            regex: {
          +                val1pre: new RegExp("[0-3]"),
          +                val1: new RegExp("0[1-9]|[12][0-9]|3[01]"),
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))");
          +                }
          +            },
          +            leapday: "29/02/",
          +            separator: "/",
          +            yearrange: {
          +                minyear: 1900,
          +                maxyear: 2099
          +            },
          +            isInYearRange: function(chrs, minyear, maxyear) {
          +                if (isNaN(chrs)) return !1;
          +                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));
          +                return (isNaN(enteredyear) ? !1 : enteredyear >= minyear && maxyear >= enteredyear) || (isNaN(enteredyear2) ? !1 : enteredyear2 >= minyear && maxyear >= enteredyear2);
          +            },
          +            determinebaseyear: function(minyear, maxyear, hint) {
          +                var currentyear = new Date().getFullYear();
          +                if (minyear > currentyear) return minyear;
          +                if (currentyear > maxyear) {
          +                    for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxYearPrefix + hint > maxyear; ) maxYearPrefix--;
          +                    var maxxYear = maxYearPrefix + maxYearPostfix;
          +                    return minyear > maxxYear ? minyear : maxxYear;
          +                }
          +                if (currentyear >= minyear && maxyear >= currentyear) {
          +                    for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--;
          +                    var currentYearAndHint = currentYearPrefix + hint;
          +                    return minyear > currentYearAndHint ? minyear : currentYearAndHint;
          +                }
          +                return currentyear;
          +            },
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            },
          +            getFrontValue: function(mask, buffer, opts) {
          +                for (var start = 0, length = 0, i = 0; i < mask.length && "2" !== mask.charAt(i); i++) {
          +                    var definition = opts.definitions[mask.charAt(i)];
          +                    definition ? (start += length, length = definition.cardinality) : length++;
          +                }
          +                return buffer.join("").substr(start, length);
          +            },
          +            definitions: {
          +                "1": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.regex.val1.test(chrs);
          +                        return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === "-./".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test("0" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = "0", 
          +                        {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: chrs.charAt(0)
          +                        });
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var pchrs = chrs;
          +                            isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);
          +                            var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);
          +                            if (!strict && !isValid) {
          +                                if (isValid = opts.regex.val1.test(chrs + "0")) return maskset.buffer[pos] = chrs, 
          +                                maskset.buffer[++pos] = "0", {
          +                                    pos: pos,
          +                                    c: "0"
          +                                };
          +                                if (isValid = opts.regex.val1.test("0" + chrs)) return maskset.buffer[pos] = "0", 
          +                                pos++, {
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                "2": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
          +                        -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
          +                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);
          +                        if (!strict && !isValid && (chrs.charAt(1) === opts.separator || -1 !== "-./".indexOf(chrs.charAt(1))) && (isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
          +                        {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: chrs.charAt(0)
          +                        };
          +                        if (opts.mask.indexOf("2") === opts.mask.length - 1 && isValid) {
          +                            var dayMonthValue = maskset.buffer.join("").substr(4, 4) + chrs;
          +                            if (dayMonthValue !== opts.leapday) return !0;
          +                            var year = parseInt(maskset.buffer.join("").substr(0, 4), 10);
          +                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);
          +                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
          +                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
          +                            var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);
          +                            return strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                y: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
          +                            var dayMonthValue = maskset.buffer.join("").substr(0, 6);
          +                            if (dayMonthValue !== opts.leapday) return !0;
          +                            var year = parseInt(chrs, 10);
          +                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                        }
          +                        return !1;
          +                    },
          +                    cardinality: 4,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                            if (!strict && !isValid) {
          +                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1);
          +                                if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
          +                                {
          +                                    pos: pos
          +                                };
          +                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2), 
          +                                isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
          +                                maskset.buffer[pos++] = yearPrefix.charAt(1), {
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 1
          +                    }, {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                            if (!strict && !isValid) {
          +                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);
          +                                if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), 
          +                                {
          +                                    pos: pos
          +                                };
          +                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), 
          +                                opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
          +                                    var dayMonthValue = maskset.buffer.join("").substr(0, 6);
          +                                    if (dayMonthValue !== opts.leapday) isValid = !0; else {
          +                                        var year = parseInt(chrs, 10);
          +                                        isValid = year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
          +                                    }
          +                                } else isValid = !1;
          +                                if (isValid) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), maskset.buffer[pos++] = yearPrefix.charAt(1), 
          +                                maskset.buffer[pos++] = chrs.charAt(0), {
          +                                    refreshFromBuffer: {
          +                                        start: pos - 3,
          +                                        end: pos
          +                                    },
          +                                    pos: pos
          +                                };
          +                            }
          +                            return isValid;
          +                        },
          +                        cardinality: 2
          +                    }, {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
          +                        },
          +                        cardinality: 3
          +                    } ]
          +                }
          +            },
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        "mm/dd/yyyy": {
          +            placeholder: "mm/dd/yyyy",
          +            alias: "dd/mm/yyyy",
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            leapday: "02/29/",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "yyyy/mm/dd": {
          +            mask: "y/1/2",
          +            placeholder: "yyyy/mm/dd",
          +            alias: "mm/dd/yyyy",
          +            leapday: "/02/29",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "dd.mm.yyyy": {
          +            mask: "1.2.y",
          +            placeholder: "dd.mm.yyyy",
          +            leapday: "29.02.",
          +            separator: ".",
          +            alias: "dd/mm/yyyy"
          +        },
          +        "dd-mm-yyyy": {
          +            mask: "1-2-y",
          +            placeholder: "dd-mm-yyyy",
          +            leapday: "29-02-",
          +            separator: "-",
          +            alias: "dd/mm/yyyy"
          +        },
          +        "mm.dd.yyyy": {
          +            mask: "1.2.y",
          +            placeholder: "mm.dd.yyyy",
          +            leapday: "02.29.",
          +            separator: ".",
          +            alias: "mm/dd/yyyy"
          +        },
          +        "mm-dd-yyyy": {
          +            mask: "1-2-y",
          +            placeholder: "mm-dd-yyyy",
          +            leapday: "02-29-",
          +            separator: "-",
          +            alias: "mm/dd/yyyy"
          +        },
          +        "yyyy.mm.dd": {
          +            mask: "y.1.2",
          +            placeholder: "yyyy.mm.dd",
          +            leapday: ".02.29",
          +            separator: ".",
          +            alias: "yyyy/mm/dd"
          +        },
          +        "yyyy-mm-dd": {
          +            mask: "y-1-2",
          +            placeholder: "yyyy-mm-dd",
          +            leapday: "-02-29",
          +            separator: "-",
          +            alias: "yyyy/mm/dd"
          +        },
          +        datetime: {
          +            mask: "1/2/y h:s",
          +            placeholder: "dd/mm/yyyy hh:mm",
          +            alias: "dd/mm/yyyy",
          +            regex: {
          +                hrspre: new RegExp("[012]"),
          +                hrs24: new RegExp("2[0-4]|1[3-9]"),
          +                hrs: new RegExp("[01][0-9]|2[0-4]"),
          +                ampm: new RegExp("^[a|p|A|P][m|M]"),
          +                mspre: new RegExp("[0-5]"),
          +                ms: new RegExp("[0-5][0-9]")
          +            },
          +            timeseparator: ":",
          +            hourFormat: "24",
          +            definitions: {
          +                h: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        if ("24" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = "0", 
          +                        maskset.buffer[pos] = "0", {
          +                            refreshFromBuffer: {
          +                                start: pos - 1,
          +                                end: pos
          +                            },
          +                            c: "0"
          +                        };
          +                        var isValid = opts.regex.hrs.test(chrs);
          +                        if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== "-.:".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test("0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
          +                        maskset.buffer[pos] = chrs.charAt(0), pos++, {
          +                            refreshFromBuffer: {
          +                                start: pos - 2,
          +                                end: pos
          +                            },
          +                            pos: pos,
          +                            c: opts.timeseparator
          +                        };
          +                        if (isValid && "24" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {
          +                            var tmp = parseInt(chrs, 10);
          +                            return 24 === tmp ? (maskset.buffer[pos + 5] = "a", maskset.buffer[pos + 6] = "m") : (maskset.buffer[pos + 5] = "p", 
          +                            maskset.buffer[pos + 6] = "m"), tmp -= 12, 10 > tmp ? (maskset.buffer[pos] = tmp.toString(), 
          +                            maskset.buffer[pos - 1] = "0") : (maskset.buffer[pos] = tmp.toString().charAt(1), 
          +                            maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {
          +                                refreshFromBuffer: {
          +                                    start: pos - 1,
          +                                    end: pos + 6
          +                                },
          +                                c: maskset.buffer[pos]
          +                            };
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.regex.hrspre.test(chrs);
          +                            return strict || isValid || !(isValid = opts.regex.hrs.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                s: {
          +                    validator: "[0-5][0-9]",
          +                    cardinality: 2,
          +                    prevalidator: [ {
          +                        validator: function(chrs, maskset, pos, strict, opts) {
          +                            var isValid = opts.regex.mspre.test(chrs);
          +                            return strict || isValid || !(isValid = opts.regex.ms.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
          +                            pos++, {
          +                                pos: pos
          +                            });
          +                        },
          +                        cardinality: 1
          +                    } ]
          +                },
          +                t: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        return opts.regex.ampm.test(chrs + "m");
          +                    },
          +                    casing: "lower",
          +                    cardinality: 1
          +                }
          +            },
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        datetime12: {
          +            mask: "1/2/y h:s t\\m",
          +            placeholder: "dd/mm/yyyy hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "mm/dd/yyyy hh:mm xm": {
          +            mask: "1/2/y h:s t\\m",
          +            placeholder: "mm/dd/yyyy hh:mm xm",
          +            alias: "datetime12",
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            leapday: "02/29/",
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
          +                    var today = new Date();
          +                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
          +                    $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        "hh:mm t": {
          +            mask: "h:s t\\m",
          +            placeholder: "hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "h:s t": {
          +            mask: "h:s t\\m",
          +            placeholder: "hh:mm xm",
          +            alias: "datetime",
          +            hourFormat: "12"
          +        },
          +        "hh:mm:ss": {
          +            mask: "h:s:s",
          +            placeholder: "hh:mm:ss",
          +            alias: "datetime",
          +            autoUnmask: !1
          +        },
          +        "hh:mm": {
          +            mask: "h:s",
          +            placeholder: "hh:mm",
          +            alias: "datetime",
          +            autoUnmask: !1
          +        },
          +        date: {
          +            alias: "dd/mm/yyyy"
          +        },
          +        "mm/yyyy": {
          +            mask: "1/y",
          +            placeholder: "mm/yyyy",
          +            leapday: "donotuse",
          +            separator: "/",
          +            alias: "mm/dd/yyyy"
          +        },
          +        shamsi: {
          +            regex: {
          +                val2pre: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])");
          +                },
          +                val2: function(separator) {
          +                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
          +                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)");
          +                },
          +                val1pre: new RegExp("[01]"),
          +                val1: new RegExp("0[1-9]|1[012]")
          +            },
          +            yearrange: {
          +                minyear: 1300,
          +                maxyear: 1499
          +            },
          +            mask: "y/1/2",
          +            leapday: "/12/30",
          +            placeholder: "yyyy/mm/dd",
          +            alias: "mm/dd/yyyy",
          +            clearIncomplete: !0
          +        }
          +    }), Inputmask;
          +}(jQuery, Inputmask), function($, Inputmask) {
          +    return Inputmask.extendDefinitions({
          +        A: {
          +            validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +            cardinality: 1,
          +            casing: "upper"
          +        },
          +        "&": {
          +            validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
          +            cardinality: 1,
          +            casing: "upper"
          +        },
          +        "#": {
          +            validator: "[0-9A-Fa-f]",
          +            cardinality: 1,
          +            casing: "upper"
          +        }
          +    }), Inputmask.extendAliases({
          +        url: {
          +            definitions: {
          +                i: {
          +                    validator: ".",
          +                    cardinality: 1
          +                }
          +            },
          +            mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
          +            insertMode: !1,
          +            autoUnmask: !1
          +        },
          +        ip: {
          +            mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
          +            definitions: {
          +                i: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        return pos - 1 > -1 && "." !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, 
          +                        chrs = pos - 2 > -1 && "." !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : "0" + chrs) : chrs = "00" + chrs, 
          +                        new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
          +                    },
          +                    cardinality: 1
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                return maskedValue;
          +            }
          +        },
          +        email: {
          +            mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",
          +            greedy: !1,
          +            onBeforePaste: function(pastedValue, opts) {
          +                return pastedValue = pastedValue.toLowerCase(), pastedValue.replace("mailto:", "");
          +            },
          +            definitions: {
          +                "*": {
          +                    validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",
          +                    cardinality: 1,
          +                    casing: "lower"
          +                },
          +                "-": {
          +                    validator: "[0-9A-Za-z-]",
          +                    cardinality: 1,
          +                    casing: "lower"
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                return maskedValue;
          +            }
          +        },
          +        mac: {
          +            mask: "##:##:##:##:##:##"
          +        },
          +        vin: {
          +            mask: "V{13}9{4}",
          +            definitions: {
          +                V: {
          +                    validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
          +                    cardinality: 1,
          +                    casing: "upper"
          +                }
          +            },
          +            clearIncomplete: !0,
          +            autoUnmask: !0
          +        }
          +    }), Inputmask;
          +}(jQuery, Inputmask), function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        numeric: {
          +            mask: function(opts) {
          +                function autoEscape(txt) {
          +                    for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? "\\" + txt.charAt(i) : txt.charAt(i);
          +                    return escapedTxt;
          +                }
          +                if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
          +                opts.repeat = 0, opts.groupSeparator === opts.radixPoint && ("." === opts.radixPoint ? opts.groupSeparator = "," : "," === opts.radixPoint ? opts.groupSeparator = "." : opts.groupSeparator = ""), 
          +                " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" !== opts.groupSeparator, 
          +                opts.autoGroup && ("string" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), 
          +                isFinite(opts.integerDigits))) {
          +                    var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;
          +                    opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), 
          +                    opts.integerDigits < 1 && (opts.integerDigits = "*");
          +                }
          +                opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
          +                opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 
          +                opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
          +                opts.numericInput === !0 && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 
          +                opts.decimalProtect = !1);
          +                var mask = autoEscape(opts.prefix);
          +                return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
          +                void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
          +                mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{1," + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
          +                mask += "[-]", mask += autoEscape(opts.suffix), opts.greedy = !1, null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, "."))), 
          +                null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, "."))), 
          +                mask;
          +            },
          +            placeholder: "",
          +            greedy: !1,
          +            digits: "*",
          +            digitsOptional: !0,
          +            radixPoint: ".",
          +            radixFocus: !0,
          +            groupSize: 3,
          +            groupSeparator: "",
          +            autoGroup: !1,
          +            allowPlus: !0,
          +            allowMinus: !0,
          +            negationSymbol: {
          +                front: "-",
          +                back: ""
          +            },
          +            integerDigits: "+",
          +            integerOptional: !0,
          +            prefix: "",
          +            suffix: "",
          +            rightAlign: !0,
          +            decimalProtect: !0,
          +            min: null,
          +            max: null,
          +            step: 1,
          +            insertMode: !0,
          +            autoUnmask: !1,
          +            unmaskAsNumber: !1,
          +            postFormat: function(buffer, pos, opts) {
          +                opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1));
          +                var i, l, suffixStripped = !1;
          +                buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) === buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 
          +                suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos;
          +                var needsRefresh = !1, charAtPos = buffer[pos], cbuf = buffer.slice();
          +                charAtPos === opts.groupSeparator && (cbuf.splice(pos--, 1), charAtPos = cbuf[pos]), 
          +                charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (cbuf[pos] = "?");
          +                var bufVal = cbuf.join(""), bufValOrigin = bufVal;
          +                if (bufVal.length > 0 && opts.autoGroup || -1 !== bufVal.indexOf(opts.groupSeparator)) {
          +                    var escapedGroupSeparator = Inputmask.escapeRegex(opts.groupSeparator);
          +                    needsRefresh = 0 === bufVal.indexOf(opts.groupSeparator), bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), "");
          +                    var radixSplit = bufVal.split(opts.radixPoint);
          +                    if (bufVal = "" === opts.radixPoint ? bufVal : radixSplit[0], bufVal !== opts.prefix + "?0" && bufVal.length >= opts.groupSize + opts.prefix.length) for (var reg = new RegExp("([-+]?[\\d?]+)([\\d?]{" + opts.groupSize + "})"); reg.test(bufVal) && "" !== opts.groupSeparator; ) bufVal = bufVal.replace(reg, "$1" + opts.groupSeparator + "$2"), 
          +                    bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);
          +                    "" !== opts.radixPoint && radixSplit.length > 1 && (bufVal += opts.radixPoint + radixSplit[1]);
          +                }
          +                for (needsRefresh = bufValOrigin !== bufVal, buffer.length = bufVal.length, i = 0, 
          +                l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i);
          +                var newPos = $.inArray("?", buffer);
          +                if (-1 === newPos && (newPos = $.inArray(charAtPos, buffer)), buffer[newPos] = charAtPos, 
          +                !needsRefresh && suffixStripped) for (i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i));
          +                return newPos = opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos, 
          +                opts.numericInput && (buffer = buffer.reverse(), $.inArray(opts.radixPoint, buffer) < newPos && buffer.join("").length - opts.suffix.length !== newPos && (newPos -= 1)), 
          +                {
          +                    pos: newPos,
          +                    refreshFromBuffer: needsRefresh,
          +                    buffer: buffer
          +                };
          +            },
          +            onBeforeWrite: function(e, buffer, caretPos, opts) {
          +                var rslt;
          +                if (e && ("blur" === e.type || "checkval" === e.type || "keydown" === e.type)) {
          +                    var maskedValue = opts.numericInput ? buffer.slice().reverse().join("") : buffer.join(""), processValue = maskedValue.replace(opts.prefix, "");
          +                    processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                    "," === opts.radixPoint && (processValue = processValue.replace(opts.radixPoint, "."));
          +                    var isNegative = processValue.match(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"));
          +                    if (isNegative = null !== isNegative && 1 === isNegative.length, processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""), 
          +                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 
          +                    isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), "g"), "")), 
          +                    processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue, 
          +                    "" !== processValue && isFinite(processValue)) {
          +                        var floatValue = parseFloat(processValue), signedFloatValue = isNegative ? -1 * floatValue : floatValue;
          +                        if (null !== opts.min && isFinite(opts.min) && signedFloatValue < parseFloat(opts.min) ? (floatValue = Math.abs(opts.min), 
          +                        isNegative = opts.min < 0, maskedValue = void 0) : null !== opts.max && isFinite(opts.max) && signedFloatValue > parseFloat(opts.max) && (floatValue = Math.abs(opts.max), 
          +                        isNegative = opts.max < 0, maskedValue = void 0), processValue = floatValue.toString().replace(".", opts.radixPoint).split(""), 
          +                        isFinite(opts.digits)) {
          +                            var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);
          +                            -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);
          +                            for (var i = 1; i <= opts.digits; i++) opts.digitsOptional || void 0 !== processValue[radixPosition + i] && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && void 0 !== maskedValue[rpb + i] && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = "0";
          +                            processValue[processValue.length - 1] === opts.radixPoint && delete processValue[processValue.length - 1];
          +                        }
          +                        if (floatValue.toString() !== processValue && floatValue.toString() + "." !== processValue || isNegative) return !isNegative || 0 === floatValue && "blur" === e.type || (processValue.unshift(opts.negationSymbol.front), 
          +                        processValue.push(opts.negationSymbol.back)), processValue = (opts.prefix + processValue.join("")).split(""), 
          +                        opts.numericInput && (processValue = processValue.reverse()), rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts), 
          +                        rslt.buffer && (rslt.refreshFromBuffer = rslt.buffer.join("") !== buffer.join("")), 
          +                        rslt;
          +                    }
          +                }
          +                return opts.autoGroup ? (rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts), 
          +                rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1, rslt) : void 0;
          +            },
          +            regex: {
          +                integerPart: function(opts) {
          +                    return new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+");
          +                },
          +                integerNPart: function(opts) {
          +                    return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+");
          +                }
          +            },
          +            signHandler: function(chrs, maskset, pos, strict, opts) {
          +                if (!strict && opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) {
          +                    var matchRslt = maskset.buffer.join("").match(opts.regex.integerPart(opts));
          +                    if (matchRslt && matchRslt[0].length > 0) return maskset.buffer[matchRslt.index] === ("-" === chrs ? "+" : opts.negationSymbol.front) ? "-" === chrs ? "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        remove: matchRslt.index,
          +                        caret: pos,
          +                        insert: {
          +                            pos: maskset.buffer.length - opts.suffix.length - 1,
          +                            c: opts.negationSymbol.back
          +                        }
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        remove: matchRslt.index,
          +                        caret: pos
          +                    } : "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: "+",
          +                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
          +                        caret: pos
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: "+",
          +                        remove: matchRslt.index,
          +                        caret: pos
          +                    } : maskset.buffer[matchRslt.index] === ("-" === chrs ? opts.negationSymbol.front : "+") ? "-" === chrs && "" !== opts.negationSymbol.back ? {
          +                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
          +                        caret: pos - 1
          +                    } : {
          +                        remove: matchRslt.index,
          +                        caret: pos - 1
          +                    } : "-" === chrs ? "" !== opts.negationSymbol.back ? {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        caret: pos + 1,
          +                        insert: {
          +                            pos: maskset.buffer.length - opts.suffix.length,
          +                            c: opts.negationSymbol.back
          +                        }
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: opts.negationSymbol.front,
          +                        caret: pos + 1
          +                    } : {
          +                        pos: matchRslt.index,
          +                        c: chrs,
          +                        caret: pos + 1
          +                    };
          +                }
          +                return !1;
          +            },
          +            radixHandler: function(chrs, maskset, pos, strict, opts) {
          +                if (!strict && opts.numericInput !== !0 && chrs === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {
          +                    var radixPos = $.inArray(opts.radixPoint, maskset.buffer), integerValue = maskset.buffer.join("").match(opts.regex.integerPart(opts));
          +                    if (-1 !== radixPos && maskset.validPositions[radixPos]) return maskset.validPositions[radixPos - 1] ? {
          +                        caret: radixPos + 1
          +                    } : {
          +                        pos: integerValue.index,
          +                        c: integerValue[0],
          +                        caret: radixPos + 1
          +                    };
          +                    if (!integerValue || "0" === integerValue[0] && integerValue.index + 1 !== pos) return maskset.buffer[integerValue ? integerValue.index : pos] = "0", 
          +                    {
          +                        pos: (integerValue ? integerValue.index : pos) + 1,
          +                        c: opts.radixPoint
          +                    };
          +                }
          +                return !1;
          +            },
          +            leadingZeroHandler: function(chrs, maskset, pos, strict, opts, isSelection) {
          +                if (!strict) if (opts.numericInput === !0) {
          +                    var buffer = maskset.buffer.slice("").reverse(), char = buffer[opts.prefix.length];
          +                    if ("0" === char && void 0 === maskset.validPositions[pos - 1]) return {
          +                        pos: pos,
          +                        remove: buffer.length - opts.prefix.length - 1
          +                    };
          +                } else {
          +                    var radixPosition = $.inArray(opts.radixPoint, maskset.buffer), matchRslt = maskset.buffer.slice(0, -1 !== radixPosition ? radixPosition : void 0).join("").match(opts.regex.integerNPart(opts));
          +                    if (matchRslt && (-1 === radixPosition || radixPosition >= pos)) {
          +                        var decimalPart = -1 === radixPosition ? 0 : parseInt(maskset.buffer.slice(radixPosition + 1).join(""));
          +                        if (0 === matchRslt[0].indexOf("" !== opts.placeholder ? opts.placeholder.charAt(0) : "0") && (matchRslt.index + 1 === pos || isSelection !== !0 && 0 === decimalPart)) return maskset.buffer.splice(matchRslt.index, 1), 
          +                        {
          +                            pos: matchRslt.index,
          +                            remove: matchRslt.index
          +                        };
          +                        if ("0" === chrs && pos <= matchRslt.index && matchRslt[0] !== opts.groupSeparator) return !1;
          +                    }
          +                }
          +                return !0;
          +            },
          +            definitions: {
          +                "~": {
          +                    validator: function(chrs, maskset, pos, strict, opts, isSelection) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        if (!isValid && (isValid = opts.radixHandler(chrs, maskset, pos, strict, opts), 
          +                        !isValid && (isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs), 
          +                        isValid === !0 && (isValid = opts.leadingZeroHandler(chrs, maskset, pos, strict, opts, isSelection), 
          +                        isValid === !0)))) {
          +                            var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
          +                            isValid = -1 !== radixPosition && (opts.digitsOptional === !1 || maskset.validPositions[pos]) && opts.numericInput !== !0 && pos > radixPosition && !strict ? {
          +                                pos: pos,
          +                                remove: pos
          +                            } : {
          +                                pos: pos
          +                            };
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 1
          +                },
          +                "+": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        return !isValid && (strict && opts.allowMinus && chrs === opts.negationSymbol.front || opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) && (isValid = strict || "-" !== chrs ? !0 : "" !== opts.negationSymbol.back ? {
          +                            pos: pos,
          +                            c: "-" === chrs ? opts.negationSymbol.front : "+",
          +                            caret: pos + 1,
          +                            insert: {
          +                                pos: maskset.buffer.length,
          +                                c: opts.negationSymbol.back
          +                            }
          +                        } : {
          +                            pos: pos,
          +                            c: "-" === chrs ? opts.negationSymbol.front : "+",
          +                            caret: pos + 1
          +                        }), isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: ""
          +                },
          +                "-": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        return !isValid && strict && opts.allowMinus && chrs === opts.negationSymbol.back && (isValid = !0), 
          +                        isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: ""
          +                },
          +                ":": {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
          +                        if (!isValid) {
          +                            var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]";
          +                            isValid = new RegExp(radix).test(chrs), isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {
          +                                caret: pos + 1
          +                            });
          +                        }
          +                        return isValid ? {
          +                            c: opts.radixPoint
          +                        } : isValid;
          +                    },
          +                    cardinality: 1,
          +                    placeholder: function(opts) {
          +                        return opts.radixPoint;
          +                    }
          +                }
          +            },
          +            onUnMask: function(maskedValue, unmaskedValue, opts) {
          +                var processValue = maskedValue.replace(opts.prefix, "");
          +                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                opts.unmaskAsNumber ? ("" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), ".")), 
          +                Number(processValue)) : processValue;
          +            },
          +            isComplete: function(buffer, opts) {
          +                var maskedValue = buffer.join(""), bufClone = buffer.slice();
          +                if (opts.postFormat(bufClone, 0, opts), bufClone.join("") !== maskedValue) return !1;
          +                var processValue = maskedValue.replace(opts.prefix, "");
          +                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
          +                "," === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".")), 
          +                isFinite(processValue);
          +            },
          +            onBeforeMask: function(initialValue, opts) {
          +                if ("" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else {
          +                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
          +                    dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
          +                    initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
          +                    initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
          +                }
          +                if (0 === opts.digits && (-1 !== initialValue.indexOf(".") ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : -1 !== initialValue.indexOf(",") && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
          +                "" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {
          +                    var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0];
          +                    if (parseInt(opts.digits) < decPart.toString().length) {
          +                        var digitsFactor = Math.pow(10, parseInt(opts.digits));
          +                        initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."), 
          +                        initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor, 
          +                        initialValue = initialValue.toString().replace(".", opts.radixPoint);
          +                    }
          +                }
          +                return initialValue.toString();
          +            },
          +            canClearPosition: function(maskset, position, lvp, strict, opts) {
          +                var positionInput = maskset.validPositions[position].input, canClear = positionInput !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && opts.decimalProtect === !1 || isFinite(positionInput) || position === lvp || positionInput === opts.groupSeparator || positionInput === opts.negationSymbol.front || positionInput === opts.negationSymbol.back;
          +                return canClear;
          +            },
          +            onKeyDown: function(e, buffer, caretPos, opts) {
          +                var $input = $(this);
          +                if (e.ctrlKey) switch (e.keyCode) {
          +                  case Inputmask.keyCode.UP:
          +                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger("setvalue");
          +                    break;
          +
          +                  case Inputmask.keyCode.DOWN:
          +                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger("setvalue");
          +                }
          +            }
          +        },
          +        currency: {
          +            prefix: "$ ",
          +            groupSeparator: ",",
          +            alias: "numeric",
          +            placeholder: "0",
          +            autoGroup: !0,
          +            digits: 2,
          +            digitsOptional: !1,
          +            clearMaskOnLostFocus: !1
          +        },
          +        decimal: {
          +            alias: "numeric"
          +        },
          +        integer: {
          +            alias: "numeric",
          +            digits: 0,
          +            radixPoint: ""
          +        },
          +        percentage: {
          +            alias: "numeric",
          +            digits: 2,
          +            radixPoint: ".",
          +            placeholder: "0",
          +            autoGroup: !1,
          +            min: 0,
          +            max: 100,
          +            suffix: " %",
          +            allowPlus: !1,
          +            allowMinus: !1
          +        }
          +    }), Inputmask;
          +}(jQuery, Inputmask), function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        phone: {
          +            url: "phone-codes/phone-codes.js",
          +            countrycode: "",
          +            phoneCodeCache: {},
          +            mask: function(opts) {
          +                if (void 0 === opts.phoneCodeCache[opts.url]) {
          +                    var maskList = [];
          +                    opts.definitions["#"] = opts.definitions[9], $.ajax({
          +                        url: opts.url,
          +                        async: !1,
          +                        type: "get",
          +                        dataType: "json",
          +                        success: function(response) {
          +                            maskList = response;
          +                        },
          +                        error: function(xhr, ajaxOptions, thrownError) {
          +                            alert(thrownError + " - " + opts.url);
          +                        }
          +                    }), opts.phoneCodeCache[opts.url] = maskList.sort(function(a, b) {
          +                        return (a.mask || a) < (b.mask || b) ? -1 : 1;
          +                    });
          +                }
          +                return opts.phoneCodeCache[opts.url];
          +            },
          +            keepStatic: !1,
          +            nojumps: !0,
          +            nojumpsThreshold: 1,
          +            onBeforeMask: function(value, opts) {
          +                var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
          +                return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = "+" + opts.countrycode + processedValue), 
          +                processedValue;
          +            }
          +        },
          +        phonebe: {
          +            alias: "phone",
          +            url: "phone-codes/phone-be.js",
          +            countrycode: "32",
          +            nojumpsThreshold: 4
          +        }
          +    }), Inputmask;
          +}(jQuery, Inputmask), function($, Inputmask) {
          +    return Inputmask.extendAliases({
          +        Regex: {
          +            mask: "r",
          +            greedy: !1,
          +            repeat: "*",
          +            regex: null,
          +            regexTokens: null,
          +            tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,
          +            quantifierFilter: /[0-9]+[^,]/,
          +            isComplete: function(buffer, opts) {
          +                return new RegExp(opts.regex).test(buffer.join(""));
          +            },
          +            definitions: {
          +                r: {
          +                    validator: function(chrs, maskset, pos, strict, opts) {
          +                        function RegexToken(isGroup, isQuantifier) {
          +                            this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, 
          +                            this.quantifier = {
          +                                min: 1,
          +                                max: 1
          +                            }, this.repeaterPart = void 0;
          +                        }
          +                        function analyseRegex() {
          +                            var match, m, currentToken = new RegexToken(), opengroups = [];
          +                            for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch (m = match[0], 
          +                            m.charAt(0)) {
          +                              case "(":
          +                                opengroups.push(new RegexToken(!0));
          +                                break;
          +
          +                              case ")":
          +                                groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);
          +                                break;
          +
          +                              case "{":
          +                              case "+":
          +                              case "*":
          +                                var quantifierToken = new RegexToken(!1, !0);
          +                                m = m.replace(/[{}]/g, "");
          +                                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
          +                                if (quantifierToken.quantifier = {
          +                                    min: mq0,
          +                                    max: mq1
          +                                }, opengroups.length > 0) {
          +                                    var matches = opengroups[opengroups.length - 1].matches;
          +                                    match = matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), groupToken.matches.push(match), 
          +                                    match = groupToken), matches.push(match), matches.push(quantifierToken);
          +                                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), 
          +                                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
          +                                currentToken.matches.push(quantifierToken);
          +                                break;
          +
          +                              default:
          +                                opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);
          +                            }
          +                            currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);
          +                        }
          +                        function validateRegexToken(token, fromGroup) {
          +                            var isvalid = !1;
          +                            fromGroup && (regexPart += "(", openGroupCount++);
          +                            for (var mndx = 0; mndx < token.matches.length; mndx++) {
          +                                var matchToken = token.matches[mndx];
          +                                if (matchToken.isGroup === !0) isvalid = validateRegexToken(matchToken, !0); else if (matchToken.isQuantifier === !0) {
          +                                    var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;
          +                                    if (isNaN(matchToken.quantifier.max)) {
          +                                        for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;
          +                                        isvalid = isvalid || validateRegexToken(matchGroup, !0), isvalid && (matchToken.repeaterPart = regexPart), 
          +                                        regexPart = regexPartBak + matchToken.quantifier.max;
          +                                    } else {
          +                                        for (var i = 0, qm = matchToken.quantifier.max - 1; qm > i && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;
          +                                        regexPart = regexPartBak + "{" + matchToken.quantifier.min + "," + matchToken.quantifier.max + "}";
          +                                    }
          +                                } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {
          +                                    var testExp;
          +                                    if ("[" == matchToken.charAt(0)) {
          +                                        testExp = regexPart, testExp += matchToken;
          +                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
          +                                        var exp = new RegExp("^(" + testExp + ")$");
          +                                        isvalid = exp.test(bufferStr);
          +                                    } else for (var l = 0, tl = matchToken.length; tl > l; l++) if ("\\" !== matchToken.charAt(l)) {
          +                                        testExp = regexPart, testExp += matchToken.substr(0, l + 1), testExp = testExp.replace(/\|$/, "");
          +                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
          +                                        var exp = new RegExp("^(" + testExp + ")$");
          +                                        if (isvalid = exp.test(bufferStr)) break;
          +                                    }
          +                                    regexPart += matchToken;
          +                                }
          +                                if (isvalid) break;
          +                            }
          +                            return fromGroup && (regexPart += ")", openGroupCount--), isvalid;
          +                        }
          +                        var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = "", isValid = !1, openGroupCount = 0;
          +                        null === opts.regexTokens && analyseRegex(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join("");
          +                        for (var i = 0; i < opts.regexTokens.length; i++) {
          +                            var regexToken = opts.regexTokens[i];
          +                            if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;
          +                        }
          +                        return isValid;
          +                    },
          +                    cardinality: 1
          +                }
          +            }
          +        }
          +    }), Inputmask;
          +}(jQuery, Inputmask);
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.date.extensions.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.date.extensions.min.js
          new file mode 100644
          index 0000000..ca7f6ac
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.date.extensions.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.date.extensions.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["inputmask.dependencyLib","inputmask"],a):"object"==typeof exports?module.exports=a(require("./inputmask.dependencyLib.jquery"),require("./inputmask")):a(window.dependencyLib||jQuery,window.Inputmask)}(function(a,b){return b.extendDefinitions({h:{validator:"[01][0-9]|2[0-3]",cardinality:2,prevalidator:[{validator:"[0-2]",cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:"[0-5]",cardinality:1}]},d:{validator:"0[1-9]|[12][0-9]|3[01]",cardinality:2,prevalidator:[{validator:"[0-3]",cardinality:1}]},m:{validator:"0[1-9]|1[012]",cardinality:2,prevalidator:[{validator:"[01]",cardinality:1}]},y:{validator:"(19|20)\\d{2}",cardinality:4,prevalidator:[{validator:"[12]",cardinality:1},{validator:"(19|20)",cardinality:2},{validator:"(19|20)\\d",cardinality:3}]}}),b.extendAliases({"dd/mm/yyyy":{mask:"1/2/y",placeholder:"dd/mm/yyyy",regex:{val1pre:new RegExp("[0-3]"),val1:new RegExp("0[1-9]|[12][0-9]|3[01]"),val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|[12][0-9]|3[01])"+c+"[01])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|[12][0-9])"+c+"(0[1-9]|1[012]))|(30"+c+"(0[13-9]|1[012]))|(31"+c+"(0[13578]|1[02]))")}},leapday:"29/02/",separator:"/",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(a,b,c){if(isNaN(a))return!1;var d=parseInt(a.concat(b.toString().slice(a.length))),e=parseInt(a.concat(c.toString().slice(a.length)));return(isNaN(d)?!1:d>=b&&c>=d)||(isNaN(e)?!1:e>=b&&c>=e)},determinebaseyear:function(a,b,c){var d=(new Date).getFullYear();if(a>d)return a;if(d>b){for(var e=b.toString().slice(0,2),f=b.toString().slice(2,4);e+c>b;)e--;var g=e+f;return a>g?a:g}if(d>=a&&b>=d){for(var h=d.toString().slice(0,2);h+c>b;)h--;var i=h+c;return a>i?a:i}return d},onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val(h.getDate().toString()+(h.getMonth()+1).toString()+h.getFullYear().toString()),g.trigger("setvalue")}},getFrontValue:function(a,b,c){for(var d=0,e=0,f=0;f<a.length&&"2"!==a.charAt(f);f++){var g=c.definitions[a.charAt(f)];g?(d+=e,e=g.cardinality):e++}return b.join("").substr(d,e)},definitions:{1:{validator:function(a,b,c,d,e){var f=e.regex.val1.test(a);return d||f||a.charAt(1)!==e.separator&&-1==="-./".indexOf(a.charAt(1))||!(f=e.regex.val1.test("0"+a.charAt(0)))?f:(b.buffer[c-1]="0",{refreshFromBuffer:{start:c-1,end:c},pos:c,c:a.charAt(0)})},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=a;isNaN(b.buffer[c+1])||(f+=b.buffer[c+1]);var g=1===f.length?e.regex.val1pre.test(f):e.regex.val1.test(f);if(!d&&!g){if(g=e.regex.val1.test(a+"0"))return b.buffer[c]=a,b.buffer[++c]="0",{pos:c,c:"0"};if(g=e.regex.val1.test("0"+a))return b.buffer[c]="0",c++,{pos:c}}return g},cardinality:1}]},2:{validator:function(a,b,c,d,e){var f=e.getFrontValue(b.mask,b.buffer,e);-1!==f.indexOf(e.placeholder[0])&&(f="01"+e.separator);var g=e.regex.val2(e.separator).test(f+a);if(!d&&!g&&(a.charAt(1)===e.separator||-1!=="-./".indexOf(a.charAt(1)))&&(g=e.regex.val2(e.separator).test(f+"0"+a.charAt(0))))return b.buffer[c-1]="0",{refreshFromBuffer:{start:c-1,end:c},pos:c,c:a.charAt(0)};if(e.mask.indexOf("2")===e.mask.length-1&&g){var h=b.buffer.join("").substr(4,4)+a;if(h!==e.leapday)return!0;var i=parseInt(b.buffer.join("").substr(0,4),10);return i%4===0?i%100===0?i%400===0?!0:!1:!0:!1}return g},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){isNaN(b.buffer[c+1])||(a+=b.buffer[c+1]);var f=e.getFrontValue(b.mask,b.buffer,e);-1!==f.indexOf(e.placeholder[0])&&(f="01"+e.separator);var g=1===a.length?e.regex.val2pre(e.separator).test(f+a):e.regex.val2(e.separator).test(f+a);return d||g||!(g=e.regex.val2(e.separator).test(f+"0"+a))?g:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},y:{validator:function(a,b,c,d,e){if(e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear)){var f=b.buffer.join("").substr(0,6);if(f!==e.leapday)return!0;var g=parseInt(a,10);return g%4===0?g%100===0?g%400===0?!0:!1:!0:!1}return!1},cardinality:4,prevalidator:[{validator:function(a,b,c,d,e){var f=e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear);if(!d&&!f){var g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a+"0").toString().slice(0,1);if(f=e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(0),{pos:c};if(g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a+"0").toString().slice(0,2),f=e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(0),b.buffer[c++]=g.charAt(1),{pos:c}}return f},cardinality:1},{validator:function(a,b,c,d,e){var f=e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear);if(!d&&!f){var g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a).toString().slice(0,2);if(f=e.isInYearRange(a[0]+g[1]+a[1],e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(1),{pos:c};if(g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a).toString().slice(0,2),e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear)){var h=b.buffer.join("").substr(0,6);if(h!==e.leapday)f=!0;else{var i=parseInt(a,10);f=i%4===0?i%100===0?i%400===0?!0:!1:!0:!1}}else f=!1;if(f)return b.buffer[c-1]=g.charAt(0),b.buffer[c++]=g.charAt(1),b.buffer[c++]=a.charAt(0),{refreshFromBuffer:{start:c-3,end:c},pos:c}}return f},cardinality:2},{validator:function(a,b,c,d,e){return e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},"mm/dd/yyyy":{placeholder:"mm/dd/yyyy",alias:"dd/mm/yyyy",regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val((h.getMonth()+1).toString()+h.getDate().toString()+h.getFullYear().toString()),g.trigger("setvalue")}}},"yyyy/mm/dd":{mask:"y/1/2",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",leapday:"/02/29",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val(h.getFullYear().toString()+(h.getMonth()+1).toString()+h.getDate().toString()),g.trigger("setvalue")}}},"dd.mm.yyyy":{mask:"1.2.y",placeholder:"dd.mm.yyyy",leapday:"29.02.",separator:".",alias:"dd/mm/yyyy"},"dd-mm-yyyy":{mask:"1-2-y",placeholder:"dd-mm-yyyy",leapday:"29-02-",separator:"-",alias:"dd/mm/yyyy"},"mm.dd.yyyy":{mask:"1.2.y",placeholder:"mm.dd.yyyy",leapday:"02.29.",separator:".",alias:"mm/dd/yyyy"},"mm-dd-yyyy":{mask:"1-2-y",placeholder:"mm-dd-yyyy",leapday:"02-29-",separator:"-",alias:"mm/dd/yyyy"},"yyyy.mm.dd":{mask:"y.1.2",placeholder:"yyyy.mm.dd",leapday:".02.29",separator:".",alias:"yyyy/mm/dd"},"yyyy-mm-dd":{mask:"y-1-2",placeholder:"yyyy-mm-dd",leapday:"-02-29",separator:"-",alias:"yyyy/mm/dd"},datetime:{mask:"1/2/y h:s",placeholder:"dd/mm/yyyy hh:mm",alias:"dd/mm/yyyy",regex:{hrspre:new RegExp("[012]"),hrs24:new RegExp("2[0-4]|1[3-9]"),hrs:new RegExp("[01][0-9]|2[0-4]"),ampm:new RegExp("^[a|p|A|P][m|M]"),mspre:new RegExp("[0-5]"),ms:new RegExp("[0-5][0-9]")},timeseparator:":",hourFormat:"24",definitions:{h:{validator:function(a,b,c,d,e){if("24"===e.hourFormat&&24===parseInt(a,10))return b.buffer[c-1]="0",b.buffer[c]="0",{refreshFromBuffer:{start:c-1,end:c},c:"0"};var f=e.regex.hrs.test(a);if(!d&&!f&&(a.charAt(1)===e.timeseparator||-1!=="-.:".indexOf(a.charAt(1)))&&(f=e.regex.hrs.test("0"+a.charAt(0))))return b.buffer[c-1]="0",b.buffer[c]=a.charAt(0),c++,{refreshFromBuffer:{start:c-2,end:c},pos:c,c:e.timeseparator};if(f&&"24"!==e.hourFormat&&e.regex.hrs24.test(a)){var g=parseInt(a,10);return 24===g?(b.buffer[c+5]="a",b.buffer[c+6]="m"):(b.buffer[c+5]="p",b.buffer[c+6]="m"),g-=12,10>g?(b.buffer[c]=g.toString(),b.buffer[c-1]="0"):(b.buffer[c]=g.toString().charAt(1),b.buffer[c-1]=g.toString().charAt(0)),{refreshFromBuffer:{start:c-1,end:c+6},c:b.buffer[c]}}return f},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=e.regex.hrspre.test(a);return d||f||!(f=e.regex.hrs.test("0"+a))?f:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=e.regex.mspre.test(a);return d||f||!(f=e.regex.ms.test("0"+a))?f:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},t:{validator:function(a,b,c,d,e){return e.regex.ampm.test(a+"m")},casing:"lower",cardinality:1}},insertMode:!1,autoUnmask:!1},datetime12:{mask:"1/2/y h:s t\\m",placeholder:"dd/mm/yyyy hh:mm xm",alias:"datetime",hourFormat:"12"},"mm/dd/yyyy hh:mm xm":{mask:"1/2/y h:s t\\m",placeholder:"mm/dd/yyyy hh:mm xm",alias:"datetime12",regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val((h.getMonth()+1).toString()+h.getDate().toString()+h.getFullYear().toString()),g.trigger("setvalue")}}},"hh:mm t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"h:s t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"hh:mm:ss":{mask:"h:s:s",placeholder:"hh:mm:ss",alias:"datetime",autoUnmask:!1},"hh:mm":{mask:"h:s",placeholder:"hh:mm",alias:"datetime",autoUnmask:!1},date:{alias:"dd/mm/yyyy"},"mm/yyyy":{mask:"1/y",placeholder:"mm/yyyy",leapday:"donotuse",separator:"/",alias:"mm/dd/yyyy"},shamsi:{regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"[0-3])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])"+c+"30)|((0[1-6])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},yearrange:{minyear:1300,maxyear:1499},mask:"y/1/2",leapday:"/12/30",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",clearIncomplete:!0}}),b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.dependencyLib.jquery.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.dependencyLib.jquery.min.js
          new file mode 100644
          index 0000000..f69f426
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.dependencyLib.jquery.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.dependencyLib.jquery.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.extensions.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.extensions.min.js
          new file mode 100644
          index 0000000..d08894d
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.extensions.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.extensions.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["inputmask.dependencyLib","inputmask"],a):"object"==typeof exports?module.exports=a(require("./inputmask.dependencyLib.jquery"),require("./inputmask")):a(window.dependencyLib||jQuery,window.Inputmask)}(function(a,b){return b.extendDefinitions({A:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"&":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"#":{validator:"[0-9A-Fa-f]",cardinality:1,casing:"upper"}}),b.extendAliases({url:{definitions:{i:{validator:".",cardinality:1}},mask:"(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",insertMode:!1,autoUnmask:!1},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(a,b,c,d,e){return c-1>-1&&"."!==b.buffer[c-1]?(a=b.buffer[c-1]+a,a=c-2>-1&&"."!==b.buffer[c-2]?b.buffer[c-2]+a:"0"+a):a="00"+a,new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(a)},cardinality:1}},onUnMask:function(a,b,c){return a}},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:!1,onBeforePaste:function(a,b){return a=a.toLowerCase(),a.replace("mailto:","")},definitions:{"*":{validator:"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",cardinality:1,casing:"lower"},"-":{validator:"[0-9A-Za-z-]",cardinality:1,casing:"lower"}},onUnMask:function(a,b,c){return a}},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",cardinality:1,casing:"upper"}},clearIncomplete:!0,autoUnmask:!0}}),b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.min.js
          new file mode 100644
          index 0000000..f3346b0
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.min.js
          @@ -0,0 +1,9 @@
          +/*!
          +* inputmask.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["inputmask.dependencyLib"],a):"object"==typeof exports?module.exports=a(require("./inputmask.dependencyLib.jquery")):a(window.dependencyLib||jQuery)}(function(a){function b(c,d){return this instanceof b?(a.isPlainObject(c)?d=c:(d=d||{},d.alias=c),this.el=void 0,this.opts=a.extend(!0,{},this.defaults,d),this.noMasksCache=d&&void 0!==d.definitions,this.userOptions=d||{},this.events={},void e(this.opts.alias,d,this.opts)):new b(c,d)}function c(a){var b=document.createElement("input"),c="on"+a,d=c in b;return d||(b.setAttribute(c,"return;"),d="function"==typeof b[c]),b=null,d}function d(b,c){var d=b.getAttribute("type"),e="INPUT"===b.tagName&&-1!==a.inArray(d,c.supportsInputType)||b.isContentEditable||"TEXTAREA"===b.tagName;if(!e&&"INPUT"===b.tagName){var f=document.createElement("input");f.setAttribute("type",d),e="text"===f.type,f=null}return e}function e(b,c,d){var f=d.aliases[b];return f?(f.alias&&e(f.alias,void 0,d),a.extend(!0,d,f),a.extend(!0,d,c),!0):(null===d.mask&&(d.mask=b),!1)}function f(b,c,d){function f(a,c){c=void 0!==c?c:b.getAttribute("data-inputmask-"+a),null!==c&&("string"==typeof c&&(0===a.indexOf("on")?c=window[c]:"false"===c?c=!1:"true"===c&&(c=!0)),d[a]=c)}var g,h,i,j,k=b.getAttribute("data-inputmask");if(k&&""!==k&&(k=k.replace(new RegExp("'","g"),'"'),h=JSON.parse("{"+k+"}")),h){i=void 0;for(j in h)if("alias"===j.toLowerCase()){i=h[j];break}}f("alias",i),d.alias&&e(d.alias,d,c);for(g in c){if(h){i=void 0;for(j in h)if(j.toLowerCase()===g.toLowerCase()){i=h[j];break}}f(g,i)}return a.extend(!0,c,d),c}function g(c,d){function e(b){function d(a,b,c,d){this.matches=[],this.isGroup=a||!1,this.isOptional=b||!1,this.isQuantifier=c||!1,this.isAlternator=d||!1,this.quantifier={min:1,max:1}}function e(b,d,e){var f=c.definitions[d];e=void 0!==e?e:b.matches.length;var g=b.matches[e-1];if(f&&!r){f.placeholder=a.isFunction(f.placeholder)?f.placeholder(c):f.placeholder;for(var h=f.prevalidator,i=h?h.length:0,j=1;j<f.cardinality;j++){var k=i>=j?h[j-1]:[],l=k.validator,m=k.cardinality;b.matches.splice(e++,0,{fn:l?"string"==typeof l?new RegExp(l):new function(){this.test=l}:new RegExp("."),cardinality:m?m:1,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==(f.definitionSymbol||d),casing:f.casing,def:f.definitionSymbol||d,placeholder:f.placeholder,mask:d}),g=b.matches[e-1]}b.matches.splice(e++,0,{fn:f.validator?"string"==typeof f.validator?new RegExp(f.validator):new function(){this.test=f.validator}:new RegExp("."),cardinality:f.cardinality,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==(f.definitionSymbol||d),casing:f.casing,def:f.definitionSymbol||d,placeholder:f.placeholder,mask:d})}else b.matches.splice(e++,0,{fn:null,cardinality:0,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==d,casing:null,def:c.staticDefinitionSymbol||d,placeholder:void 0!==c.staticDefinitionSymbol?d:void 0,mask:d}),r=!1}function f(a,b){a.isGroup&&(a.isGroup=!1,e(a,c.groupmarker.start,0),b!==!0&&e(a,c.groupmarker.end))}function g(a,b,c,d){b.matches.length>0&&(void 0===d||d)&&(c=b.matches[b.matches.length-1],f(c)),e(b,a)}function h(){if(t.length>0){if(m=t[t.length-1],g(k,m,o,!m.isAlternator),m.isAlternator){n=t.pop();for(var a=0;a<n.matches.length;a++)n.matches[a].isGroup=!1;t.length>0?(m=t[t.length-1],m.matches.push(n)):s.matches.push(n)}}else g(k,s,o)}function i(a){function b(a){return a===c.optionalmarker.start?a=c.optionalmarker.end:a===c.optionalmarker.end?a=c.optionalmarker.start:a===c.groupmarker.start?a=c.groupmarker.end:a===c.groupmarker.end&&(a=c.groupmarker.start),a}a.matches=a.matches.reverse();for(var d in a.matches){var e=parseInt(d);if(a.matches[d].isQuantifier&&a.matches[e+1]&&a.matches[e+1].isGroup){var f=a.matches[d];a.matches.splice(d,1),a.matches.splice(e+1,0,f)}void 0!==a.matches[d].matches?a.matches[d]=i(a.matches[d]):a.matches[d]=b(a.matches[d])}return a}for(var j,k,l,m,n,o,p,q=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,r=!1,s=new d,t=[],u=[];j=q.exec(b);)if(k=j[0],r)h();else switch(k.charAt(0)){case c.escapeChar:r=!0;break;case c.optionalmarker.end:case c.groupmarker.end:if(l=t.pop(),void 0!==l)if(t.length>0){if(m=t[t.length-1],m.matches.push(l),m.isAlternator){n=t.pop();for(var v=0;v<n.matches.length;v++)n.matches[v].isGroup=!1;t.length>0?(m=t[t.length-1],m.matches.push(n)):s.matches.push(n)}}else s.matches.push(l);else h();break;case c.optionalmarker.start:t.push(new d(!1,!0));break;case c.groupmarker.start:t.push(new d(!0));break;case c.quantifiermarker.start:var w=new d(!1,!1,!0);k=k.replace(/[{}]/g,"");var x=k.split(","),y=isNaN(x[0])?x[0]:parseInt(x[0]),z=1===x.length?y:isNaN(x[1])?x[1]:parseInt(x[1]);if(("*"===z||"+"===z)&&(y="*"===z?0:1),w.quantifier={min:y,max:z},t.length>0){var A=t[t.length-1].matches;j=A.pop(),j.isGroup||(p=new d(!0),p.matches.push(j),j=p),A.push(j),A.push(w)}else j=s.matches.pop(),j.isGroup||(p=new d(!0),p.matches.push(j),j=p),s.matches.push(j),s.matches.push(w);break;case c.alternatormarker:t.length>0?(m=t[t.length-1],o=m.matches.pop()):o=s.matches.pop(),o.isAlternator?t.push(o):(n=new d(!1,!1,!1,!0),n.matches.push(o),t.push(n));break;default:h()}for(;t.length>0;)l=t.pop(),f(l,!0),s.matches.push(l);return s.matches.length>0&&(o=s.matches[s.matches.length-1],f(o),u.push(s)),c.numericInput&&i(u[0]),u}function f(f,g){if(null===f||""===f)return void 0;if(1===f.length&&c.greedy===!1&&0!==c.repeat&&(c.placeholder=""),c.repeat>0||"*"===c.repeat||"+"===c.repeat){var h="*"===c.repeat?0:"+"===c.repeat?1:c.repeat;f=c.groupmarker.start+f+c.groupmarker.end+c.quantifiermarker.start+h+","+c.repeat+c.quantifiermarker.end}var i;return void 0===b.prototype.masksCache[f]||d===!0?(i={mask:f,maskToken:e(f),validPositions:{},_buffer:void 0,buffer:void 0,tests:{},metadata:g},d!==!0&&(b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]=i,i=a.extend(!0,{},b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]))):i=a.extend(!0,{},b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]),i}function g(a){return a=a.toString()}var h;if(a.isFunction(c.mask)&&(c.mask=c.mask(c)),a.isArray(c.mask)){if(c.mask.length>1){c.keepStatic=null===c.keepStatic?!0:c.keepStatic;var i="(";return a.each(c.numericInput?c.mask.reverse():c.mask,function(b,c){i.length>1&&(i+=")|("),i+=g(void 0===c.mask||a.isFunction(c.mask)?c:c.mask)}),i+=")",f(i,c.mask)}c.mask=c.mask.pop()}return c.mask&&(h=void 0===c.mask.mask||a.isFunction(c.mask.mask)?f(g(c.mask),c.mask):f(g(c.mask.mask),c.mask)),h}function h(e,f,g){function i(a,b,c){b=b||0;var d,e,f,h=[],i=0,j=o();do{if(a===!0&&m().validPositions[i]){var k=m().validPositions[i];e=k.match,d=k.locator.slice(),h.push(c===!0?k.input:I(i,e))}else f=r(i,d,i-1),e=f.match,d=f.locator.slice(),(g.jitMasking===!1||j>i||isFinite(g.jitMasking)&&g.jitMasking>i)&&h.push(I(i,e));i++}while((void 0===ha||ha>i-1)&&null!==e.fn||null===e.fn&&""!==e.def||b>=i);return""===h[h.length-1]&&h.pop(),h}function m(){return f}function n(a){var b=m();b.buffer=void 0,a!==!0&&(b.tests={},b._buffer=void 0,b.validPositions={},b.p=0)}function o(a,b,c){var d=-1,e=-1,f=c||m().validPositions;void 0===a&&(a=-1);for(var g in f){var h=parseInt(g);f[h]&&(b||null!==f[h].match.fn)&&(a>=h&&(d=h),h>=a&&(e=h))}return-1!==d&&a-d>1||a>e?d:e}function p(b,c,d,e){if(e||g.insertMode&&void 0!==m().validPositions[b]&&void 0===d){var f,h=a.extend(!0,{},m().validPositions),i=o();for(f=b;i>=f;f++)delete m().validPositions[f];m().validPositions[b]=c;var j,k=!0,l=m().validPositions,p=!1;for(f=j=b;i>=f;f++){var q=h[f];if(void 0!==q)for(var r=j,s=-1;r<D()&&(null==q.match.fn&&l[f]&&(l[f].match.optionalQuantifier===!0||l[f].match.optionality===!0)||null!=q.match.fn);){if(null===q.match.fn||!g.keepStatic&&l[f]&&(void 0!==l[f+1]&&v(f+1,l[f].locator.slice(),f).length>1||void 0!==l[f].alternation)?r++:r=E(j),p===!1&&h[r]&&h[r].match.def===q.match.def){m().validPositions[r]=a.extend(!0,{},h[r]),m().validPositions[r].input=q.input,j=r,k=!0;break}if(t(r,q.match.def)){var u=B(r,q.input,!0,!0);if(k=u!==!1,j=u.caret||u.insert?o():r,p=!0,k)break}else{if(k=null==q.match.fn,s===r)break;s=r}}if(!k)break}if(!k)return m().validPositions=a.extend(!0,{},h),n(!0),!1}else m().validPositions[b]=c;return n(!0),!0}function q(b,c,d,e){function f(a){var b=m().validPositions[a];if(void 0!==b&&null===b.match.fn){var c=m().validPositions[a-1],d=m().validPositions[a+1];return void 0!==c&&void 0!==d}return!1}var h,i=b,j=a.extend(!0,{},m().validPositions),k=!1;for(m().p=b,h=c-1;h>=i;h--)void 0!==m().validPositions[h]&&(d===!0||!f(h)&&g.canClearPosition(m(),h,o(),e,g)!==!1)&&delete m().validPositions[h];for(n(!0),h=i+1;h<=o();){for(;void 0!==m().validPositions[i];)i++;var l=m().validPositions[i];if(i>h&&(h=i+1),void 0===m().validPositions[h]&&C(h)||void 0!==l)h++;else{var p=r(h);k===!1&&j[i]&&j[i].match.def===p.match.def?(m().validPositions[i]=a.extend(!0,{},j[i]),m().validPositions[i].input=p.input,delete m().validPositions[h],h++):t(i,p.match.def)?B(i,p.input||I(h),!0)!==!1&&(delete m().validPositions[h],h++,k=!0):C(h)||(h++,i--),i++}}n(!0)}function r(a,b,c){var d=m().validPositions[a];if(void 0===d)for(var e=v(a,b,c),f=o(),h=m().validPositions[f]||v(0)[0],i=void 0!==h.alternation?h.locator[h.alternation].toString().split(","):[],j=0;j<e.length&&(d=e[j],!(d.match&&(g.greedy&&d.match.optionalQuantifier!==!0||(d.match.optionality===!1||d.match.newBlockMarker===!1)&&d.match.optionalQuantifier!==!0)&&(void 0===h.alternation||h.alternation!==d.alternation||void 0!==d.locator[h.alternation]&&A(d.locator[h.alternation].toString().split(","),i))));j++);return d}function s(a){return m().validPositions[a]?m().validPositions[a].match:v(a)[0].match}function t(a,b){for(var c=!1,d=v(a),e=0;e<d.length;e++)if(d[e].match&&d[e].match.def===b){c=!0;break}return c}function u(b,c){var d,e;return(m().tests[b]||m().validPositions[b])&&a.each(m().tests[b]||[m().validPositions[b]],function(a,b){var f=b.alternation?b.locator[b.alternation].toString().indexOf(c):-1;(void 0===e||e>f)&&-1!==f&&(d=b,e=f)}),d}function v(b,c,d){function e(c,d,f,h){function j(f,h,o){function p(b,c){var d=0===a.inArray(b,c.matches);return d||a.each(c.matches,function(a,e){return e.isQuantifier===!0&&(d=p(b,c.matches[a-1]))?!1:void 0}),d}function q(a,b){var c=u(a,b);return c?c.locator.slice(c.alternation+1):[]}if(i>1e4)throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+m().mask;if(i===b&&void 0===f.matches)return k.push({match:f,locator:h.reverse(),cd:n}),!0;if(void 0!==f.matches){if(f.isGroup&&o!==f){if(f=j(c.matches[a.inArray(f,c.matches)+1],h))return!0}else if(f.isOptional){var r=f;if(f=e(f,d,h,o)){if(g=k[k.length-1].match,!p(g,r))return!0;l=!0,i=b}}else if(f.isAlternator){var s,t=f,v=[],w=k.slice(),x=h.length,y=d.length>0?d.shift():-1;if(-1===y||"string"==typeof y){var z,A=i,B=d.slice(),C=[];if("string"==typeof y)C=y.split(",");else for(z=0;z<t.matches.length;z++)C.push(z);for(var D=0;D<C.length;D++){if(z=parseInt(C[D]),k=[],d=q(i,z),f=j(t.matches[z]||c.matches[z],[z].concat(h),o)||f,f!==!0&&void 0!==f&&C[C.length-1]<t.matches.length){var E=a.inArray(f,c.matches)+1;c.matches.length>E&&(f=j(c.matches[E],[E].concat(h.slice(1,h.length)),o),f&&(C.push(E.toString()),a.each(k,function(a,b){b.alternation=h.length-1})))}s=k.slice(),i=A,k=[];for(var F=0;F<B.length;F++)d[F]=B[F];for(var G=0;G<s.length;G++){var H=s[G];H.alternation=H.alternation||x;for(var I=0;I<v.length;I++){var J=v[I];if(H.match.def===J.match.def&&("string"!=typeof y||-1!==a.inArray(H.locator[H.alternation].toString(),C))){H.match.mask===J.match.mask&&(s.splice(G,1),G--),-1===J.locator[H.alternation].toString().indexOf(H.locator[H.alternation])&&(J.locator[H.alternation]=J.locator[H.alternation]+","+H.locator[H.alternation],J.alternation=H.alternation);break}}}v=v.concat(s)}"string"==typeof y&&(v=a.map(v,function(b,c){if(isFinite(c)){var d,e=b.alternation,f=b.locator[e].toString().split(",");b.locator[e]=void 0,b.alternation=void 0;for(var g=0;g<f.length;g++)d=-1!==a.inArray(f[g],C),d&&(void 0!==b.locator[e]?(b.locator[e]+=",",b.locator[e]+=f[g]):b.locator[e]=parseInt(f[g]),b.alternation=e);if(void 0!==b.locator[e])return b}})),k=w.concat(v),i=b,l=k.length>0}else f=j(t.matches[y]||c.matches[y],[y].concat(h),o);if(f)return!0}else if(f.isQuantifier&&o!==c.matches[a.inArray(f,c.matches)-1])for(var K=f,L=d.length>0?d.shift():0;L<(isNaN(K.quantifier.max)?L+1:K.quantifier.max)&&b>=i;L++){var M=c.matches[a.inArray(K,c.matches)-1];if(f=j(M,[L].concat(h),M)){if(g=k[k.length-1].match,g.optionalQuantifier=L>K.quantifier.min-1,p(g,M)){if(L>K.quantifier.min-1){l=!0,i=b;break}return!0}return!0}}else if(f=e(f,d,h,o))return!0}else i++}for(var o=d.length>0?d.shift():0;o<c.matches.length;o++)if(c.matches[o].isQuantifier!==!0){var p=j(c.matches[o],[o].concat(f),h);if(p&&i===b)return p;if(i>b)break}}function f(b){var c=[];return a.isArray(b)||(b=[b]),void 0===b[0].alternation?c=b[0].locator.slice():a.each(b,function(a,b){if(""!==b.def)if(0===c.length)c=b.locator.slice();else for(var d=0;d<c.length;d++)b.locator[d]&&-1===c[d].toString().indexOf(b.locator[d])&&(c[d]+=","+b.locator[d])}),c}var g,h=m().maskToken,i=c?d:0,j=c||[0],k=[],l=!1,n=c?c.join(""):"";if(b>-1){if(void 0===c){for(var o,p=b-1;void 0===(o=m().validPositions[p]||m().tests[p])&&p>-1;)p--;void 0!==o&&p>-1&&(j=f(o),n=j.join(""),i=p)}if(m().tests[b]&&m().tests[b][0].cd===n)return m().tests[b];for(var q=j.shift();q<h.length;q++){var r=e(h[q],j,[q]);if(r&&i===b||i>b)break}}return(0===k.length||l)&&k.push({match:{fn:null,cardinality:0,optionality:!0,casing:null,def:""},locator:[]}),m().tests[b]=a.extend(!0,[],k),m().tests[b]}function w(){return void 0===m()._buffer&&(m()._buffer=i(!1,1)),m()._buffer}function x(a){if(void 0===m().buffer||a===!0){if(a===!0)for(var b in m().tests)void 0===m().validPositions[b]&&delete m().tests[b];m().buffer=i(!0,o(),!0)}return m().buffer}function y(a,b,c){var d;if(c=c,a===!0)n(),a=0,b=c.length;else for(d=a;b>d;d++)delete m().validPositions[d],delete m().tests[d];for(d=a;b>d;d++)n(!0),c[d]!==g.skipOptionalPartCharacter&&B(d,c[d],!0,!0)}function z(a,b){switch(b.casing){case"upper":a=a.toUpperCase();break;case"lower":a=a.toLowerCase()}return a}function A(b,c){for(var d=g.greedy?c:c.slice(0,1),e=!1,f=0;f<b.length;f++)if(-1!==a.inArray(b[f],d)){e=!0;break}return e}function B(c,d,e,f){function h(a){return ja?a.begin-a.end>1||a.begin-a.end===1&&g.insertMode:a.end-a.begin>1||a.end-a.begin===1&&g.insertMode}function i(b,d,e,f){var i=!1;return a.each(v(b),function(j,k){for(var l=k.match,r=d?1:0,s="",t=l.cardinality;t>r;t--)s+=G(b-(t-1));if(d&&(s+=d),x(!0),i=null!=l.fn?l.fn.test(s,m(),b,e,g,h(c)):d!==l.def&&d!==g.skipOptionalPartCharacter||""===l.def?!1:{c:l.placeholder||l.def,pos:b},i!==!1){var u=void 0!==i.c?i.c:d;u=u===g.skipOptionalPartCharacter&&null===l.fn?l.placeholder||l.def:u;var v=b,w=x();if(void 0!==i.remove&&(a.isArray(i.remove)||(i.remove=[i.remove]),a.each(i.remove.sort(function(a,b){return b-a}),function(a,b){q(b,b+1,!0)})),void 0!==i.insert&&(a.isArray(i.insert)||(i.insert=[i.insert]),a.each(i.insert.sort(function(a,b){return a-b}),function(a,b){B(b.pos,b.c,!1,f)})),i.refreshFromBuffer){var A=i.refreshFromBuffer;if(e=!0,y(A===!0?A:A.start,A.end,w),void 0===i.pos&&void 0===i.c)return i.pos=o(),!1;if(v=void 0!==i.pos?i.pos:b,v!==b)return i=a.extend(i,B(v,u,!0,f)),!1}else if(i!==!0&&void 0!==i.pos&&i.pos!==b&&(v=i.pos,y(b,v,x().slice()),v!==b))return i=a.extend(i,B(v,u,!0)),!1;return i!==!0&&void 0===i.pos&&void 0===i.c?!1:(j>0&&n(!0),p(v,a.extend({},k,{input:z(u,l)}),f,h(c))||(i=!1),!1)}}),i}function j(b,c,d,e){for(var f,h,i,j,k,l,p=a.extend(!0,{},m().validPositions),q=a.extend(!0,{},m().tests),s=o();s>=0&&(j=m().validPositions[s],!j||void 0===j.alternation||(f=s,h=m().validPositions[f].alternation,r(f).locator[j.alternation]===j.locator[j.alternation]));s--);if(void 0!==h){f=parseInt(f);for(var t in m().validPositions)if(t=parseInt(t),j=m().validPositions[t],t>=f&&void 0!==j.alternation){var v;0===f?(v=[],a.each(m().tests[f],function(a,b){void 0!==b.locator[h]&&(v=v.concat(b.locator[h].toString().split(",")))})):v=m().validPositions[f].locator[h].toString().split(",");var w=void 0!==j.locator[h]?j.locator[h]:v[0];w.length>0&&(w=w.split(",")[0]);for(var x=0;x<v.length;x++){var y=[],z=0,A=0;if(w<v[x]){for(var C,D,E=t;E>=0;E--)if(C=m().validPositions[E],void 0!==C){var F=u(E,v[x]);m().validPositions[E].match.def!==F.match.def&&(y.push(m().validPositions[E].input),m().validPositions[E]=F,m().validPositions[E].input=I(E),null===m().validPositions[E].match.fn&&A++,C=F),D=C.locator[h],C.locator[h]=parseInt(v[x]);break}if(w!==C.locator[h]){for(k=t+1;k<o(void 0,!0)+1;k++)l=m().validPositions[k],l&&null!=l.match.fn?y.push(l.input):b>k&&z++,delete m().validPositions[k],delete m().tests[k];for(n(!0),g.keepStatic=!g.keepStatic,i=!0;y.length>0;){var G=y.shift();if(G!==g.skipOptionalPartCharacter&&!(i=B(o(void 0,!0)+1,G,!1,e)))break}if(C.alternation=h,C.locator[h]=D,i){var H=o(b)+1;for(k=t+1;k<o()+1;k++)l=m().validPositions[k],(void 0===l||null==l.match.fn)&&b>k&&A++;b+=A-z,i=B(b>H?H:b,c,d,e)}if(g.keepStatic=!g.keepStatic,i)return i;n(),m().validPositions=a.extend(!0,{},p),m().tests=a.extend(!0,{},q)}}}break}}return!1}function k(b,c){for(var d=m().validPositions[c],e=d.locator,f=e.length,g=b;c>g;g++)if(void 0===m().validPositions[g]&&!C(g,!0)){var h=v(g),i=h[0],j=-1;a.each(h,function(a,b){for(var c=0;f>c&&(void 0!==b.locator[c]&&A(b.locator[c].toString().split(","),e[c].toString().split(",")));c++)c>j&&(j=c,i=b)}),p(g,a.extend({},i,{input:i.match.placeholder||i.match.def}),!0)}}e=e===!0;var l=c;void 0!==c.begin&&(l=ja&&!h(c)?c.end:c.begin);for(var s=!1,t=a.extend(!0,{},m().validPositions),w=l-1;w>-1&&!m().validPositions[w];w--);var F;for(w++;l>w;w++)void 0===m().validPositions[w]&&(g.jitMasking===!1||g.jitMasking>w)&&((F=r(w)).match.def===g.radixPointDefinitionSymbol||!C(w,!0)||a.inArray(g.radixPoint,x())<w&&F.match.fn&&F.match.fn.test(I(w),m(),w,!1,g))&&i(o(w,!0)+1,F.match.placeholder||(null==F.match.fn?F.match.def:""!==I(w)?I(w):x()[w]),!0,f);if(h(c)&&(Q(void 0,b.keyCode.DELETE,c),l=m().p),l<D()&&(s=i(l,d,e,f),(!e||f===!0)&&s===!1)){var H=m().validPositions[l];if(!H||null!==H.match.fn||H.match.def!==d&&d!==g.skipOptionalPartCharacter){if((g.insertMode||void 0===m().validPositions[E(l)])&&!C(l,!0)){var J=r(l).match;J=J.placeholder||J.def,i(l,J,e,f);for(var K=l+1,L=E(l);L>=K;K++)if(s=i(K,d,e,f),s!==!1){k(l,K),l=K;break}}}else s={caret:E(l)}}return s===!1&&g.keepStatic&&(s=j(l,d,e,f)),s===!0&&(s={pos:l}),a.isFunction(g.postValidation)&&s!==!1&&!e&&f!==!0&&(s=g.postValidation(x(!0),s,g)?s:!1),void 0===s.pos&&(s.pos=l),s===!1&&(n(!0),m().validPositions=a.extend(!0,{},t)),s}function C(a,b){var c;if(b?(c=r(a).match,""===c.def&&(c=s(a))):c=s(a),null!=c.fn)return c.fn;if(b!==!0&&a>-1&&!g.keepStatic&&void 0===m().validPositions[a]){var d=v(a);return d.length>2}return!1}function D(){var a;ha=void 0!==fa?fa.maxLength:void 0,-1===ha&&(ha=void 0);var b,c=o(),d=m().validPositions[c],e=void 0!==d?d.locator.slice():void 0;for(b=c+1;void 0===d||null!==d.match.fn||null===d.match.fn&&""!==d.match.def;b++)d=r(b,e,b-1),e=d.locator.slice();var f=s(b-1);return a=""!==f.def?b:b-1,void 0===ha||ha>a?a:ha}function E(a,b){var c=D();if(a>=c)return c;for(var d=a;++d<c&&(b===!0&&(s(d).newBlockMarker!==!0||!C(d))||b!==!0&&!C(d)&&(g.nojumps!==!0||g.nojumpsThreshold>d)););return d}function F(a,b){var c=a;if(0>=c)return 0;for(;--c>0&&(b===!0&&s(c).newBlockMarker!==!0||b!==!0&&!C(c)););return c}function G(a){return void 0===m().validPositions[a]?I(a):m().validPositions[a].input}function H(b,c,d,e,f){if(e&&a.isFunction(g.onBeforeWrite)){var h=g.onBeforeWrite(e,c,d,g);if(h){if(h.refreshFromBuffer){var i=h.refreshFromBuffer;y(i===!0?i:i.start,i.end,h.buffer||c),c=x(!0)}void 0!==d&&(d=void 0!==h.caret?h.caret:d)}}b.inputmask._valueSet(c.join("")),void 0===d||void 0!==e&&"blur"===e.type||L(b,d),f===!0&&(la=!0,a(b).trigger("input"))}function I(a,b){if(b=b||s(a),void 0!==b.placeholder)return b.placeholder;if(null===b.fn){if(a>-1&&!g.keepStatic&&void 0===m().validPositions[a]){var c,d=v(a),e=[];if(d.length>2)for(var f=0;f<d.length;f++)if(d[f].match.optionality!==!0&&d[f].match.optionalQuantifier!==!0&&(null===d[f].match.fn||void 0===c||d[f].match.fn.test(c.match.def,m(),a,!0,g)!==!1)&&(e.push(d[f]),null===d[f].match.fn&&(c=d[f]),e.length>1))return g.placeholder.charAt(a%g.placeholder.length)}return b.def}return g.placeholder.charAt(a%g.placeholder.length)}function J(c,d,e,f){function h(){var a=!1,b=w().slice(l,E(l)).join("").indexOf(k);if(-1!==b&&!C(l)){a=!0;for(var c=w().slice(l,l+b),d=0;d<c.length;d++)if(" "!==c[d]){a=!1;break}}return a}var i,j=f.slice(),k="",l=0;if(n(),m().p=E(-1),!e)if(g.autoUnmask!==!0){var p=w().slice(0,E(-1)).join(""),q=j.join("").match(new RegExp("^"+b.escapeRegex(p),"g"));q&&q.length>0&&(j.splice(0,q.length*p.length),l=E(l))}else l=E(l);a.each(j,function(b,d){if(void 0!==d){var f=new a.Event("keypress");f.which=d.charCodeAt(0),k+=d;var j=o(void 0,!0),p=m().validPositions[j],q=r(j+1,p?p.locator.slice():void 0,j);if(!h()||e||g.autoUnmask){var s=e?b:null==q.match.fn&&q.match.optionality&&j+1<m().p?j+1:m().p;i=S.call(c,f,!0,!1,e,s),l=s+1,k=""}else i=S.call(c,f,!0,!1,!0,j+1);if(!e&&a.isFunction(g.onBeforeWrite)&&(i=g.onBeforeWrite(f,x(),i.forwardPosition,g),i&&i.refreshFromBuffer)){var t=i.refreshFromBuffer;y(t===!0?t:t.start,t.end,i.buffer),n(!0),i.caret&&(m().p=i.caret)}}}),d&&H(c,x(),document.activeElement===c?E(o(0)):void 0,new a.Event("checkval"))}function K(b){if(b&&void 0===b.inputmask)return b.value;var c=[],d=m().validPositions;for(var e in d)d[e].match&&null!=d[e].match.fn&&c.push(d[e].input);var f=0===c.length?null:(ja?c.reverse():c).join("");if(null!==f){var h=(ja?x().slice().reverse():x()).join("");a.isFunction(g.onUnMask)&&(f=g.onUnMask(h,f,g)||f)}return f}function L(a,b,c,d){function e(a){if(d!==!0&&ja&&"number"==typeof a&&(!g.greedy||""!==g.placeholder)){var b=x().join("").length;a=b-a}return a}var f;if("number"!=typeof b)return a.setSelectionRange?(b=a.selectionStart,c=a.selectionEnd):window.getSelection?(f=window.getSelection().getRangeAt(0),(f.commonAncestorContainer.parentNode===a||f.commonAncestorContainer===a)&&(b=f.startOffset,c=f.endOffset)):document.selection&&document.selection.createRange&&(f=document.selection.createRange(),b=0-f.duplicate().moveStart("character",-a.inputmask._valueGet().length),c=b+f.text.length),{begin:e(b),end:e(c)};b=e(b),c=e(c),c="number"==typeof c?c:b;var h=parseInt(((a.ownerDocument.defaultView||window).getComputedStyle?(a.ownerDocument.defaultView||window).getComputedStyle(a,null):a.currentStyle).fontSize)*c;if(a.scrollLeft=h>a.scrollWidth?h:0,j||g.insertMode!==!1||b!==c||c++,a.setSelectionRange)a.selectionStart=b,a.selectionEnd=c;else if(window.getSelection){if(f=document.createRange(),void 0===a.firstChild||null===a.firstChild){var i=document.createTextNode("");a.appendChild(i)}f.setStart(a.firstChild,b<a.inputmask._valueGet().length?b:a.inputmask._valueGet().length),f.setEnd(a.firstChild,c<a.inputmask._valueGet().length?c:a.inputmask._valueGet().length),f.collapse(!0);var k=window.getSelection();k.removeAllRanges(),k.addRange(f)}else a.createTextRange&&(f=a.createTextRange(),f.collapse(!0),f.moveEnd("character",c),f.moveStart("character",b),f.select())}function M(b){var c,d,e=x(),f=e.length,g=o(),h={},i=m().validPositions[g],j=void 0!==i?i.locator.slice():void 0;for(c=g+1;c<e.length;c++)d=r(c,j,c-1),j=d.locator.slice(),h[c]=a.extend(!0,{},d);var k=i&&void 0!==i.alternation?i.locator[i.alternation]:void 0;for(c=f-1;c>g&&(d=h[c],(d.match.optionality||d.match.optionalQuantifier||k&&(k!==h[c].locator[i.alternation]&&null!=d.match.fn||null===d.match.fn&&d.locator[i.alternation]&&A(d.locator[i.alternation].toString().split(","),k.toString().split(","))&&""!==v(c)[0].def))&&e[c]===I(c,d.match));c--)f--;return b?{l:f,def:h[f]?h[f].match:void 0}:f}function N(a){for(var b=M(),c=a.length-1;c>b&&!C(c);c--);return a.splice(b,c+1-b),a}function O(b){if(a.isFunction(g.isComplete))return g.isComplete(b,g);if("*"===g.repeat)return void 0;var c=!1,d=M(!0),e=F(d.l);if(void 0===d.def||d.def.newBlockMarker||d.def.optionality||d.def.optionalQuantifier){c=!0;for(var f=0;e>=f;f++){var h=r(f).match;if(null!==h.fn&&void 0===m().validPositions[f]&&h.optionality!==!0&&h.optionalQuantifier!==!0||null===h.fn&&b[f]!==I(f,h)){c=!1;break}}}return c}function P(b){function c(b){if(a.valHooks&&(void 0===a.valHooks[b]||a.valHooks[b].inputmaskpatch!==!0)){var c=a.valHooks[b]&&a.valHooks[b].get?a.valHooks[b].get:function(a){return a.value},d=a.valHooks[b]&&a.valHooks[b].set?a.valHooks[b].set:function(a,b){return a.value=b,a};a.valHooks[b]={get:function(a){if(a.inputmask){if(a.inputmask.opts.autoUnmask)return a.inputmask.unmaskedvalue();var b=c(a);return-1!==o(void 0,void 0,a.inputmask.maskset.validPositions)||g.nullable!==!0?b:""}return c(a)},set:function(b,c){var e,f=a(b);return e=d(b,c),b.inputmask&&f.trigger("setvalue"),e},inputmaskpatch:!0}}}function d(){return this.inputmask?this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():-1!==o()||g.nullable!==!0?document.activeElement===this&&g.clearMaskOnLostFocus?(ja?N(x().slice()).reverse():N(x().slice())).join(""):h.call(this):"":h.call(this)}function e(b){i.call(this,b),this.inputmask&&a(this).trigger("setvalue")}function f(b){oa.on(b,"mouseenter",function(b){var c=a(this),d=this,e=d.inputmask._valueGet();e!==x().join("")&&c.trigger("setvalue")})}var h,i;if(!b.inputmask.__valueGet){if(Object.getOwnPropertyDescriptor){"function"!=typeof Object.getPrototypeOf&&(Object.getPrototypeOf="object"==typeof"test".__proto__?function(a){return a.__proto__}:function(a){return a.constructor.prototype});var j=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(b),"value"):void 0;j&&j.get&&j.set?(h=j.get,i=j.set,Object.defineProperty(b,"value",{get:d,set:e,configurable:!0})):"INPUT"!==b.tagName&&(h=function(){return this.textContent},i=function(a){this.textContent=a},Object.defineProperty(b,"value",{get:d,set:e,configurable:!0}))}else document.__lookupGetter__&&b.__lookupGetter__("value")&&(h=b.__lookupGetter__("value"),i=b.__lookupSetter__("value"),b.__defineGetter__("value",d),b.__defineSetter__("value",e));b.inputmask.__valueGet=h,b.inputmask._valueGet=function(a){return ja&&a!==!0?h.call(this.el).split("").reverse().join(""):h.call(this.el)},b.inputmask.__valueSet=i,b.inputmask._valueSet=function(a,b){i.call(this.el,null===a||void 0===a?"":b!==!0&&ja?a.split("").reverse().join(""):a)},void 0===h&&(h=function(){return this.value},i=function(a){this.value=a},c(b.type),f(b))}}function Q(c,d,e,f){function h(){if(g.keepStatic){n(!0);var b,d=[],e=a.extend(!0,{},m().validPositions);for(b=o();b>=0;b--){var f=m().validPositions[b];if(f&&(null!=f.match.fn&&d.push(f.input),delete m().validPositions[b],void 0!==f.alternation&&f.locator[f.alternation]===r(b).locator[f.alternation]))break}if(b>-1)for(;d.length>0;){m().p=E(o());var h=new a.Event("keypress");h.which=d.pop().charCodeAt(0),S.call(c,h,!0,!1,!1,m().p)}else m().validPositions=a.extend(!0,{},e)}}if((g.numericInput||ja)&&(d===b.keyCode.BACKSPACE?d=b.keyCode.DELETE:d===b.keyCode.DELETE&&(d=b.keyCode.BACKSPACE),ja)){var i=e.end;e.end=e.begin,e.begin=i}d===b.keyCode.BACKSPACE&&(e.end-e.begin<1||g.insertMode===!1)?(e.begin=F(e.begin),void 0===m().validPositions[e.begin]||m().validPositions[e.begin].input!==g.groupSeparator&&m().validPositions[e.begin].input!==g.radixPoint||e.begin--):d===b.keyCode.DELETE&&e.begin===e.end&&(e.end=C(e.end)?e.end+1:E(e.end)+1,void 0===m().validPositions[e.begin]||m().validPositions[e.begin].input!==g.groupSeparator&&m().validPositions[e.begin].input!==g.radixPoint||e.end++),q(e.begin,e.end,!1,f),f!==!0&&h();var j=o(e.begin);j<e.begin?(-1===j&&n(),m().p=E(j)):f!==!0&&(m().p=e.begin)}function R(d){var e=this,f=a(e),h=d.keyCode,i=L(e);if(h===b.keyCode.BACKSPACE||h===b.keyCode.DELETE||l&&h===b.keyCode.BACKSPACE_SAFARI||d.ctrlKey&&h===b.keyCode.X&&!c("cut"))d.preventDefault(),Q(e,h,i),H(e,x(),m().p,d,ea!==x().join("")),e.inputmask._valueGet()===w().join("")?f.trigger("cleared"):O(x())===!0&&f.trigger("complete"),g.showTooltip&&(e.title=g.tooltip||m().mask);else if(h===b.keyCode.END||h===b.keyCode.PAGE_DOWN){d.preventDefault();var j=E(o());g.insertMode||j!==D()||d.shiftKey||j--,L(e,d.shiftKey?i.begin:j,j,!0)}else h===b.keyCode.HOME&&!d.shiftKey||h===b.keyCode.PAGE_UP?(d.preventDefault(),L(e,0,d.shiftKey?i.begin:0,!0)):(g.undoOnEscape&&h===b.keyCode.ESCAPE||90===h&&d.ctrlKey)&&d.altKey!==!0?(J(e,!0,!1,ea.split("")),f.trigger("click")):h!==b.keyCode.INSERT||d.shiftKey||d.ctrlKey?g.tabThrough===!0&&h===b.keyCode.TAB?(d.shiftKey===!0?(null===s(i.begin).fn&&(i.begin=E(i.begin)),i.end=F(i.begin,!0),i.begin=F(i.end,!0)):(i.begin=E(i.begin,!0),i.end=E(i.begin,!0),i.end<D()&&i.end--),i.begin<D()&&(d.preventDefault(),L(e,i.begin,i.end))):g.insertMode!==!1||d.shiftKey||(h===b.keyCode.RIGHT?setTimeout(function(){var a=L(e);L(e,a.begin)},0):h===b.keyCode.LEFT&&setTimeout(function(){var a=L(e);L(e,ja?a.begin+1:a.begin-1)},0)):(g.insertMode=!g.insertMode,L(e,g.insertMode||i.begin!==D()?i.begin:i.begin-1));g.onKeyDown.call(this,d,x(),L(e).begin,g),ma=-1!==a.inArray(h,g.ignorables)}function S(c,d,e,f,h){var i=this,j=a(i),k=c.which||c.charCode||c.keyCode;if(!(d===!0||c.ctrlKey&&c.altKey)&&(c.ctrlKey||c.metaKey||ma))return k===b.keyCode.ENTER&&ea!==x().join("")&&(ea=x().join(""),setTimeout(function(){j.trigger("change")},0)),!0;if(k){46===k&&c.shiftKey===!1&&","===g.radixPoint&&(k=44);var l,o=d?{begin:h,end:h}:L(i),p=String.fromCharCode(k);m().writeOutBuffer=!0;var q=B(o,p,f);if(q!==!1){var r=q.pos;if(n(!0),void 0!==q.caret)l=q.caret;else{var s=m().validPositions;l=!g.keepStatic&&(void 0!==s[r+1]&&v(r+1,s[r].locator.slice(),r).length>1||void 0!==s[r].alternation)?r+1:E(r)}m().p=l}if(e!==!1){var t=this;if(setTimeout(function(){g.onKeyValidation.call(t,k,q,g)},0),m().writeOutBuffer&&q!==!1){var u=x();H(i,u,g.numericInput&&void 0===q.caret?F(l):l,c,d!==!0),d!==!0&&setTimeout(function(){O(u)===!0&&j.trigger("complete")},0)}}if(g.showTooltip&&(i.title=g.tooltip||m().mask),c.preventDefault(),d)return q.forwardPosition=l,q}}function T(b){var c,d=this,e=b.originalEvent||b,f=a(d),h=d.inputmask._valueGet(!0),i=L(d);ja&&(c=i.end,i.end=i.begin,i.begin=c);var j=h.substr(0,i.begin),k=h.substr(i.end,h.length);j===(ja?w().reverse():w()).slice(0,i.begin).join("")&&(j=""),k===(ja?w().reverse():w()).slice(i.end).join("")&&(k=""),ja&&(c=j,j=k,k=c),window.clipboardData&&window.clipboardData.getData?h=j+window.clipboardData.getData("Text")+k:e.clipboardData&&e.clipboardData.getData&&(h=j+e.clipboardData.getData("text/plain")+k);var l=h;if(a.isFunction(g.onBeforePaste)){if(l=g.onBeforePaste(h,g),l===!1)return b.preventDefault();l||(l=h)}return J(d,!1,!1,ja?l.split("").reverse():l.toString().split("")),H(d,x(),E(o()),b,!0),O(x())===!0&&f.trigger("complete"),b.preventDefault()}function U(c){var d=this,e=d.inputmask._valueGet();if(x().join("")!==e){var f=L(d);if(e=e.replace(new RegExp("("+b.escapeRegex(w().join(""))+")*"),""),k){var g=e.replace(x().join(""),"");if(1===g.length){var h=new a.Event("keypress");return h.which=g.charCodeAt(0),S.call(d,h,!0,!0,!1,m().validPositions[f.begin-1]?f.begin:f.begin-1),!1}}if(f.begin>e.length&&(L(d,e.length),f=L(d)),x().length-e.length!==1||e.charAt(f.begin)===x()[f.begin]||e.charAt(f.begin+1)===x()[f.begin]||C(f.begin)){for(var i=o()+1,j=x().slice(i).join("");null===e.match(b.escapeRegex(j)+"$");)j=j.slice(1);e=e.replace(j,""),e=e.split(""),J(d,!0,!1,e),O(x())===!0&&a(d).trigger("complete")}else c.keyCode=b.keyCode.BACKSPACE,R.call(d,c);c.preventDefault()}}function V(b){var c=this,d=c.inputmask._valueGet();J(c,!0,!1,(a.isFunction(g.onBeforeMask)?g.onBeforeMask(d,g)||d:d).split("")),ea=x().join(""),(g.clearMaskOnLostFocus||g.clearIncomplete)&&c.inputmask._valueGet()===w().join("")&&c.inputmask._valueSet("");
          +}function W(a){var b=this,c=b.inputmask._valueGet();g.showMaskOnFocus&&(!g.showMaskOnHover||g.showMaskOnHover&&""===c)?b.inputmask._valueGet()!==x().join("")&&H(b,x(),E(o())):na===!1&&L(b,E(o())),g.positionCaretOnTab===!0&&setTimeout(function(){L(b,E(o()))},0),ea=x().join("")}function X(a){var b=this;if(na=!1,g.clearMaskOnLostFocus&&document.activeElement!==b){var c=x().slice(),d=b.inputmask._valueGet();d!==b.getAttribute("placeholder")&&""!==d&&(-1===o()&&d===w().join("")?c=[]:N(c),H(b,c))}}function Y(b){function c(b){if(g.radixFocus&&""!==g.radixPoint){var c=m().validPositions;if(void 0===c[b]||c[b].input===I(b)){if(b<E(-1))return!0;var d=a.inArray(g.radixPoint,x());if(-1!==d){for(var e in c)if(e>d&&c[e].input!==I(e))return!1;return!0}}}return!1}var d=this;setTimeout(function(){if(document.activeElement===d){var b=L(d);if(b.begin===b.end)if(c(b.begin))L(d,g.numericInput?E(a.inArray(g.radixPoint,x())):a.inArray(g.radixPoint,x()));else{var e=b.begin,f=o(e,!0),h=E(f);if(h>e)L(d,C(e)||C(e-1)?e:E(e));else{var i=I(h);(""!==i&&x()[h]!==i||!C(h,!0)&&s(h).def===i)&&(h=E(h)),L(d,h)}}}},0)}function Z(a){var b=this;setTimeout(function(){L(b,0,E(o()))},0)}function $(c){var d=this,e=a(d),f=L(d),h=c.originalEvent||c,i=window.clipboardData||h.clipboardData,j=ja?x().slice(f.end,f.begin):x().slice(f.begin,f.end);i.setData("text",ja?j.reverse().join(""):j.join("")),document.execCommand&&document.execCommand("copy"),Q(d,b.keyCode.DELETE,f),H(d,x(),m().p,c,ea!==x().join("")),d.inputmask._valueGet()===w().join("")&&e.trigger("cleared"),g.showTooltip&&(d.title=g.tooltip||m().mask)}function _(b){var c=a(this),d=this;if(d.inputmask){var e=d.inputmask._valueGet(),f=x().slice();ea!==f.join("")&&setTimeout(function(){c.trigger("change"),ea=f.join("")},0),""!==e&&(g.clearMaskOnLostFocus&&(-1===o()&&e===w().join("")?f=[]:N(f)),O(f)===!1&&(setTimeout(function(){c.trigger("incomplete")},0),g.clearIncomplete&&(n(),f=g.clearMaskOnLostFocus?[]:w().slice())),H(d,f,void 0,b))}}function aa(a){var b=this;na=!0,document.activeElement!==b&&g.showMaskOnHover&&b.inputmask._valueGet()!==x().join("")&&H(b,x())}function ba(a){ea!==x().join("")&&ga.trigger("change"),g.clearMaskOnLostFocus&&-1===o()&&fa.inputmask._valueGet&&fa.inputmask._valueGet()===w().join("")&&fa.inputmask._valueSet(""),g.removeMaskOnSubmit&&(fa.inputmask._valueSet(fa.inputmask.unmaskedvalue(),!0),setTimeout(function(){H(fa,x())},0))}function ca(a){setTimeout(function(){ga.trigger("setvalue")},0)}function da(b){if(fa=b,ga=a(fa),g.showTooltip&&(fa.title=g.tooltip||m().mask),("rtl"===fa.dir||g.rightAlign)&&(fa.style.textAlign="right"),("rtl"===fa.dir||g.numericInput)&&(fa.dir="ltr",fa.removeAttribute("dir"),fa.inputmask.isRTL=!0,ja=!0),oa.off(fa),P(fa),d(fa,g)&&(oa.on(fa,"submit",ba),oa.on(fa,"reset",ca),oa.on(fa,"mouseenter",aa),oa.on(fa,"blur",_),oa.on(fa,"focus",W),oa.on(fa,"mouseleave",X),oa.on(fa,"click",Y),oa.on(fa,"dblclick",Z),oa.on(fa,"paste",T),oa.on(fa,"dragdrop",T),oa.on(fa,"drop",T),oa.on(fa,"cut",$),oa.on(fa,"complete",g.oncomplete),oa.on(fa,"incomplete",g.onincomplete),oa.on(fa,"cleared",g.oncleared),oa.on(fa,"keydown",R),oa.on(fa,"keypress",S),oa.on(fa,"input",U)),oa.on(fa,"setvalue",V),""!==fa.inputmask._valueGet()||g.clearMaskOnLostFocus===!1||document.activeElement===fa){var c=a.isFunction(g.onBeforeMask)?g.onBeforeMask(fa.inputmask._valueGet(),g)||fa.inputmask._valueGet():fa.inputmask._valueGet();J(fa,!0,!1,c.split(""));var e=x().slice();ea=e.join(""),O(e)===!1&&g.clearIncomplete&&n(),g.clearMaskOnLostFocus&&document.activeElement!==fa&&(-1===o()?e=[]:N(e)),H(fa,e),document.activeElement===fa&&L(fa,E(o()))}}var ea,fa,ga,ha,ia,ja=!1,ka=!1,la=!1,ma=!1,na=!0,oa={on:function(c,d,e){var f=function(c){if(void 0===this.inputmask&&"FORM"!==this.nodeName){var d=a.data(this,"_inputmask_opts");d?new b(d).mask(this):oa.off(this)}else{if("setvalue"===c.type||!(this.disabled||this.readOnly&&!("keydown"===c.type&&c.ctrlKey&&67===c.keyCode||g.tabThrough===!1&&c.keyCode===b.keyCode.TAB))){switch(c.type){case"input":if(la===!0)return la=!1,c.preventDefault();break;case"keydown":ka=!1,la=!1;break;case"keypress":if(ka===!0)return c.preventDefault();ka=!0;break;case"click":if(k){var f=this;return setTimeout(function(){e.apply(f,arguments)},0),!1}}var h=e.apply(this,arguments);return h===!1&&(c.preventDefault(),c.stopPropagation()),h}c.preventDefault()}};c.inputmask.events[d]=c.inputmask.events[d]||[],c.inputmask.events[d].push(f),-1!==a.inArray(d,["submit","reset"])?null!=c.form&&a(c.form).on(d,f):a(c).on(d,f)},off:function(b,c){if(b.inputmask&&b.inputmask.events){var d;c?(d=[],d[c]=b.inputmask.events[c]):d=b.inputmask.events,a.each(d,function(c,d){for(;d.length>0;){var e=d.pop();-1!==a.inArray(c,["submit","reset"])?null!=b.form&&a(b.form).off(c,e):a(b).off(c,e)}delete b.inputmask.events[c]})}}};if(void 0!==e)switch(e.action){case"isComplete":return fa=e.el,O(x());case"unmaskedvalue":return fa=e.el,void 0!==fa&&void 0!==fa.inputmask?(f=fa.inputmask.maskset,g=fa.inputmask.opts,ja=fa.inputmask.isRTL):(ia=e.value,g.numericInput&&(ja=!0),ia=(a.isFunction(g.onBeforeMask)?g.onBeforeMask(ia,g)||ia:ia).split(""),J(void 0,!1,!1,ja?ia.reverse():ia),a.isFunction(g.onBeforeWrite)&&g.onBeforeWrite(void 0,x(),0,g)),K(fa);case"mask":fa=e.el,f=fa.inputmask.maskset,g=fa.inputmask.opts,ja=fa.inputmask.isRTL,ea=x().join(""),da(fa);break;case"format":return g.numericInput&&(ja=!0),ia=(a.isFunction(g.onBeforeMask)?g.onBeforeMask(e.value,g)||e.value:e.value).split(""),J(void 0,!1,!1,ja?ia.reverse():ia),a.isFunction(g.onBeforeWrite)&&g.onBeforeWrite(void 0,x(),0,g),e.metadata?{value:ja?x().slice().reverse().join(""):x().join(""),metadata:h({action:"getmetadata"},f,g)}:ja?x().slice().reverse().join(""):x().join("");case"isValid":g.numericInput&&(ja=!0),e.value?(ia=e.value.split(""),J(void 0,!1,!0,ja?ia.reverse():ia)):e.value=x().join("");for(var pa=x(),qa=M(),ra=pa.length-1;ra>qa&&!C(ra);ra--);return pa.splice(qa,ra+1-qa),O(pa)&&e.value===x().join("");case"getemptymask":return w().join("");case"remove":fa=e.el,ga=a(fa),f=fa.inputmask.maskset,g=fa.inputmask.opts,fa.inputmask._valueSet(K(fa)),oa.off(fa);var sa;Object.getOwnPropertyDescriptor&&Object.getPrototypeOf?(sa=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fa),"value"),sa&&fa.inputmask.__valueGet&&Object.defineProperty(fa,"value",{get:fa.inputmask.__valueGet,set:fa.inputmask.__valueSet,configurable:!0})):document.__lookupGetter__&&fa.__lookupGetter__("value")&&fa.inputmask.__valueGet&&(fa.__defineGetter__("value",fa.inputmask.__valueGet),fa.__defineSetter__("value",fa.inputmask.__valueSet)),fa.inputmask=void 0;break;case"getmetadata":if(a.isArray(f.metadata)){for(var ta,ua=o(void 0,!0),va=ua;va>=0;va--)if(m().validPositions[va]&&void 0!==m().validPositions[va].alternation){ta=m().validPositions[va].alternation;break}return void 0!==ta?f.metadata[m().validPositions[va].locator[ta]]:[]}return f.metadata}}b.prototype={defaults:{placeholder:"_",optionalmarker:{start:"[",end:"]"},quantifiermarker:{start:"{",end:"}"},groupmarker:{start:"(",end:")"},alternatormarker:"|",escapeChar:"\\",mask:null,oncomplete:a.noop,onincomplete:a.noop,oncleared:a.noop,repeat:0,greedy:!0,autoUnmask:!1,removeMaskOnSubmit:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},alias:null,onKeyDown:a.noop,onBeforeMask:null,onBeforePaste:function(b,c){return a.isFunction(c.onBeforeMask)?c.onBeforeMask(b,c):b},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:a.noop,skipOptionalPartCharacter:" ",showTooltip:!1,tooltip:void 0,numericInput:!1,rightAlign:!1,undoOnEscape:!0,radixPoint:"",radixPointDefinitionSymbol:void 0,groupSeparator:"",radixFocus:!1,nojumps:!1,nojumpsThreshold:0,keepStatic:null,positionCaretOnTab:!1,tabThrough:!1,supportsInputType:["text","tel","password"],definitions:{9:{validator:"[0-9]",cardinality:1,definitionSymbol:"*"},a:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,definitionSymbol:"*"},"*":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1}},ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],isComplete:null,canClearPosition:a.noop,postValidation:null,staticDefinitionSymbol:void 0,jitMasking:!1,nullable:!0},masksCache:{},mask:function(c){var d=this;return"string"==typeof c&&(c=document.getElementById(c)||document.querySelectorAll(c)),c=c.nodeName?[c]:c,a.each(c,function(c,e){var i=a.extend(!0,{},d.opts);f(e,i,a.extend(!0,{},d.userOptions));var j=g(i,d.noMasksCache);void 0!==j&&(void 0!==e.inputmask&&e.inputmask.remove(),e.inputmask=new b,e.inputmask.opts=i,e.inputmask.noMasksCache=d.noMasksCache,e.inputmask.userOptions=a.extend(!0,{},d.userOptions),e.inputmask.el=e,e.inputmask.maskset=j,e.inputmask.isRTL=!1,a.data(e,"_inputmask_opts",i),h({action:"mask",el:e}))}),c&&c[0]?c[0].inputmask||this:this},option:function(b,c){return"string"==typeof b?this.opts[b]:"object"==typeof b?(a.extend(this.userOptions,b),this.el&&c!==!0&&this.mask(this.el),this):void 0},unmaskedvalue:function(a){return h({action:"unmaskedvalue",el:this.el,value:a},this.el&&this.el.inputmask?this.el.inputmask.maskset:g(this.opts,this.noMasksCache),this.opts)},remove:function(){return this.el?(h({action:"remove",el:this.el}),this.el.inputmask=void 0,this.el):void 0},getemptymask:function(){return h({action:"getemptymask"},this.maskset||g(this.opts,this.noMasksCache),this.opts)},hasMaskedValue:function(){return!this.opts.autoUnmask},isComplete:function(){return h({action:"isComplete",el:this.el},this.maskset||g(this.opts,this.noMasksCache),this.opts)},getmetadata:function(){return h({action:"getmetadata"},this.maskset||g(this.opts,this.noMasksCache),this.opts)},isValid:function(a){return h({action:"isValid",value:a},this.maskset||g(this.opts,this.noMasksCache),this.opts)},format:function(a,b){return h({action:"format",value:a,metadata:b},this.maskset||g(this.opts,this.noMasksCache),this.opts)}},b.extendDefaults=function(c){a.extend(!0,b.prototype.defaults,c)},b.extendDefinitions=function(c){a.extend(!0,b.prototype.defaults.definitions,c)},b.extendAliases=function(c){a.extend(!0,b.prototype.defaults.aliases,c)},b.format=function(a,c,d){return b(c).format(a,d)},b.unmask=function(a,c){return b(c).unmaskedvalue(a)},b.isValid=function(a,c){return b(c).isValid(a)},b.remove=function(b){a.each(b,function(a,b){b.inputmask&&b.inputmask.remove()})},b.escapeRegex=function(a){var b=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return a.replace(new RegExp("(\\"+b.join("|\\")+")","gim"),"\\$1")},b.keyCode={ALT:18,BACKSPACE:8,BACKSPACE_SAFARI:127,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91,X:88};var i=navigator.userAgent,j=/mobile/i.test(i),k=/iemobile/i.test(i),l=/iphone/i.test(i)&&!k;/android.*safari.*/i.test(i)&&!k;return window.Inputmask=b,b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.numeric.extensions.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.numeric.extensions.min.js
          new file mode 100644
          index 0000000..5cfb104
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.numeric.extensions.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.numeric.extensions.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["inputmask.dependencyLib","inputmask"],a):"object"==typeof exports?module.exports=a(require("./inputmask.dependencyLib.jquery"),require("./inputmask")):a(window.dependencyLib||jQuery,window.Inputmask)}(function(a,b){return b.extendAliases({numeric:{mask:function(a){function c(b){for(var c="",d=0;d<b.length;d++)c+=a.definitions[b.charAt(d)]||a.optionalmarker.start===b.charAt(d)||a.optionalmarker.end===b.charAt(d)||a.quantifiermarker.start===b.charAt(d)||a.quantifiermarker.end===b.charAt(d)||a.groupmarker.start===b.charAt(d)||a.groupmarker.end===b.charAt(d)||a.alternatormarker===b.charAt(d)?"\\"+b.charAt(d):b.charAt(d);return c}if(0!==a.repeat&&isNaN(a.integerDigits)&&(a.integerDigits=a.repeat),a.repeat=0,a.groupSeparator===a.radixPoint&&("."===a.radixPoint?a.groupSeparator=",":","===a.radixPoint?a.groupSeparator=".":a.groupSeparator="")," "===a.groupSeparator&&(a.skipOptionalPartCharacter=void 0),a.autoGroup=a.autoGroup&&""!==a.groupSeparator,a.autoGroup&&("string"==typeof a.groupSize&&isFinite(a.groupSize)&&(a.groupSize=parseInt(a.groupSize)),isFinite(a.integerDigits))){var d=Math.floor(a.integerDigits/a.groupSize),e=a.integerDigits%a.groupSize;a.integerDigits=parseInt(a.integerDigits)+(0===e?d-1:d),a.integerDigits<1&&(a.integerDigits="*")}a.placeholder.length>1&&(a.placeholder=a.placeholder.charAt(0)),a.radixFocus=a.radixFocus&&""!==a.placeholder&&a.integerOptional===!0,a.definitions[";"]=a.definitions["~"],a.definitions[";"].definitionSymbol="~",a.numericInput===!0&&(a.radixFocus=!1,a.digitsOptional=!1,isNaN(a.digits)&&(a.digits=2),a.decimalProtect=!1);var f=c(a.prefix);return f+="[+]",f+=a.integerOptional===!0?"~{1,"+a.integerDigits+"}":"~{"+a.integerDigits+"}",void 0!==a.digits&&(isNaN(a.digits)||parseInt(a.digits)>0)&&(a.decimalProtect&&(a.radixPointDefinitionSymbol=":"),f+=a.digitsOptional?"["+(a.decimalProtect?":":a.radixPoint)+";{1,"+a.digits+"}]":(a.decimalProtect?":":a.radixPoint)+";{"+a.digits+"}"),f+="[-]",f+=c(a.suffix),a.greedy=!1,null!==a.min&&(a.min=a.min.toString().replace(new RegExp(b.escapeRegex(a.groupSeparator),"g"),""),","===a.radixPoint&&(a.min=a.min.replace(a.radixPoint,"."))),null!==a.max&&(a.max=a.max.toString().replace(new RegExp(b.escapeRegex(a.groupSeparator),"g"),""),","===a.radixPoint&&(a.max=a.max.replace(a.radixPoint,"."))),f},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,radixPoint:".",radixFocus:!0,groupSize:3,groupSeparator:"",autoGroup:!1,allowPlus:!0,allowMinus:!0,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:!0,prefix:"",suffix:"",rightAlign:!0,decimalProtect:!0,min:null,max:null,step:1,insertMode:!0,autoUnmask:!1,unmaskAsNumber:!1,postFormat:function(c,d,e){e.numericInput===!0&&(c=c.reverse(),isFinite(d)&&(d=c.join("").length-d-1));var f,g,h=!1;c.length>=e.suffix.length&&c.join("").indexOf(e.suffix)===c.length-e.suffix.length&&(c.length=c.length-e.suffix.length,h=!0),d=d>=c.length?c.length-1:d<e.prefix.length?e.prefix.length:d;var i=!1,j=c[d],k=c.slice();j===e.groupSeparator&&(k.splice(d--,1),j=k[d]),j!==e.radixPoint&&j!==e.negationSymbol.front&&j!==e.negationSymbol.back&&(k[d]="?");var l=k.join(""),m=l;if(l.length>0&&e.autoGroup||-1!==l.indexOf(e.groupSeparator)){var n=b.escapeRegex(e.groupSeparator);i=0===l.indexOf(e.groupSeparator),l=l.replace(new RegExp(n,"g"),"");var o=l.split(e.radixPoint);if(l=""===e.radixPoint?l:o[0],l!==e.prefix+"?0"&&l.length>=e.groupSize+e.prefix.length)for(var p=new RegExp("([-+]?[\\d?]+)([\\d?]{"+e.groupSize+"})");p.test(l)&&""!==e.groupSeparator;)l=l.replace(p,"$1"+e.groupSeparator+"$2"),l=l.replace(e.groupSeparator+e.groupSeparator,e.groupSeparator);""!==e.radixPoint&&o.length>1&&(l+=e.radixPoint+o[1])}for(i=m!==l,c.length=l.length,f=0,g=l.length;g>f;f++)c[f]=l.charAt(f);var q=a.inArray("?",c);if(-1===q&&(q=a.inArray(j,c)),c[q]=j,!i&&h)for(f=0,g=e.suffix.length;g>f;f++)c.push(e.suffix.charAt(f));return q=e.numericInput&&isFinite(d)?c.join("").length-q-1:q,e.numericInput&&(c=c.reverse(),a.inArray(e.radixPoint,c)<q&&c.join("").length-e.suffix.length!==q&&(q-=1)),{pos:q,refreshFromBuffer:i,buffer:c}},onBeforeWrite:function(c,d,e,f){var g;if(c&&("blur"===c.type||"checkval"===c.type||"keydown"===c.type)){var h=f.numericInput?d.slice().reverse().join(""):d.join(""),i=h.replace(f.prefix,"");i=i.replace(f.suffix,""),i=i.replace(new RegExp(b.escapeRegex(f.groupSeparator),"g"),""),","===f.radixPoint&&(i=i.replace(f.radixPoint,"."));var j=i.match(new RegExp("[-"+b.escapeRegex(f.negationSymbol.front)+"]","g"));if(j=null!==j&&1===j.length,i=i.replace(new RegExp("[-"+b.escapeRegex(f.negationSymbol.front)+"]","g"),""),i=i.replace(new RegExp(b.escapeRegex(f.negationSymbol.back)+"$"),""),isNaN(f.placeholder)&&(i=i.replace(new RegExp(b.escapeRegex(f.placeholder),"g"),"")),i=i===f.negationSymbol.front?i+"0":i,""!==i&&isFinite(i)){var k=parseFloat(i),l=j?-1*k:k;if(null!==f.min&&isFinite(f.min)&&l<parseFloat(f.min)?(k=Math.abs(f.min),j=f.min<0,h=void 0):null!==f.max&&isFinite(f.max)&&l>parseFloat(f.max)&&(k=Math.abs(f.max),j=f.max<0,h=void 0),i=k.toString().replace(".",f.radixPoint).split(""),isFinite(f.digits)){var m=a.inArray(f.radixPoint,i),n=a.inArray(f.radixPoint,h);-1===m&&(i.push(f.radixPoint),m=i.length-1);for(var o=1;o<=f.digits;o++)f.digitsOptional||void 0!==i[m+o]&&i[m+o]!==f.placeholder.charAt(0)?-1!==n&&void 0!==h[n+o]&&(i[m+o]=i[m+o]||h[n+o]):i[m+o]="0";i[i.length-1]===f.radixPoint&&delete i[i.length-1]}if(k.toString()!==i&&k.toString()+"."!==i||j)return!j||0===k&&"blur"===c.type||(i.unshift(f.negationSymbol.front),i.push(f.negationSymbol.back)),i=(f.prefix+i.join("")).split(""),f.numericInput&&(i=i.reverse()),g=f.postFormat(i,f.numericInput?e:e-1,f),g.buffer&&(g.refreshFromBuffer=g.buffer.join("")!==d.join("")),g}}return f.autoGroup?(g=f.postFormat(d,f.numericInput?e:e-1,f),g.caret=e<=f.prefix.length?g.pos:g.pos+1,g):void 0},regex:{integerPart:function(a){return new RegExp("["+b.escapeRegex(a.negationSymbol.front)+"+]?\\d+")},integerNPart:function(a){return new RegExp("[\\d"+b.escapeRegex(a.groupSeparator)+b.escapeRegex(a.placeholder.charAt(0))+"]+")}},signHandler:function(a,b,c,d,e){if(!d&&e.allowMinus&&"-"===a||e.allowPlus&&"+"===a){var f=b.buffer.join("").match(e.regex.integerPart(e));if(f&&f[0].length>0)return b.buffer[f.index]===("-"===a?"+":e.negationSymbol.front)?"-"===a?""!==e.negationSymbol.back?{pos:f.index,c:e.negationSymbol.front,remove:f.index,caret:c,insert:{pos:b.buffer.length-e.suffix.length-1,c:e.negationSymbol.back}}:{pos:f.index,c:e.negationSymbol.front,remove:f.index,caret:c}:""!==e.negationSymbol.back?{pos:f.index,c:"+",remove:[f.index,b.buffer.length-e.suffix.length-1],caret:c}:{pos:f.index,c:"+",remove:f.index,caret:c}:b.buffer[f.index]===("-"===a?e.negationSymbol.front:"+")?"-"===a&&""!==e.negationSymbol.back?{remove:[f.index,b.buffer.length-e.suffix.length-1],caret:c-1}:{remove:f.index,caret:c-1}:"-"===a?""!==e.negationSymbol.back?{pos:f.index,c:e.negationSymbol.front,caret:c+1,insert:{pos:b.buffer.length-e.suffix.length,c:e.negationSymbol.back}}:{pos:f.index,c:e.negationSymbol.front,caret:c+1}:{pos:f.index,c:a,caret:c+1}}return!1},radixHandler:function(b,c,d,e,f){if(!e&&f.numericInput!==!0&&b===f.radixPoint&&void 0!==f.digits&&(isNaN(f.digits)||parseInt(f.digits)>0)){var g=a.inArray(f.radixPoint,c.buffer),h=c.buffer.join("").match(f.regex.integerPart(f));if(-1!==g&&c.validPositions[g])return c.validPositions[g-1]?{caret:g+1}:{pos:h.index,c:h[0],caret:g+1};if(!h||"0"===h[0]&&h.index+1!==d)return c.buffer[h?h.index:d]="0",{pos:(h?h.index:d)+1,c:f.radixPoint}}return!1},leadingZeroHandler:function(b,c,d,e,f,g){if(!e)if(f.numericInput===!0){var h=c.buffer.slice("").reverse(),i=h[f.prefix.length];if("0"===i&&void 0===c.validPositions[d-1])return{pos:d,remove:h.length-f.prefix.length-1}}else{var j=a.inArray(f.radixPoint,c.buffer),k=c.buffer.slice(0,-1!==j?j:void 0).join("").match(f.regex.integerNPart(f));if(k&&(-1===j||j>=d)){var l=-1===j?0:parseInt(c.buffer.slice(j+1).join(""));if(0===k[0].indexOf(""!==f.placeholder?f.placeholder.charAt(0):"0")&&(k.index+1===d||g!==!0&&0===l))return c.buffer.splice(k.index,1),{pos:k.index,remove:k.index};if("0"===b&&d<=k.index&&k[0]!==f.groupSeparator)return!1}}return!0},definitions:{"~":{validator:function(c,d,e,f,g,h){var i=g.signHandler(c,d,e,f,g);if(!i&&(i=g.radixHandler(c,d,e,f,g),!i&&(i=f?new RegExp("[0-9"+b.escapeRegex(g.groupSeparator)+"]").test(c):new RegExp("[0-9]").test(c),i===!0&&(i=g.leadingZeroHandler(c,d,e,f,g,h),i===!0)))){var j=a.inArray(g.radixPoint,d.buffer);i=-1!==j&&(g.digitsOptional===!1||d.validPositions[e])&&g.numericInput!==!0&&e>j&&!f?{pos:e,remove:e}:{pos:e}}return i},cardinality:1},"+":{validator:function(a,b,c,d,e){var f=e.signHandler(a,b,c,d,e);return!f&&(d&&e.allowMinus&&a===e.negationSymbol.front||e.allowMinus&&"-"===a||e.allowPlus&&"+"===a)&&(f=d||"-"!==a?!0:""!==e.negationSymbol.back?{pos:c,c:"-"===a?e.negationSymbol.front:"+",caret:c+1,insert:{pos:b.buffer.length,c:e.negationSymbol.back}}:{pos:c,c:"-"===a?e.negationSymbol.front:"+",caret:c+1}),f},cardinality:1,placeholder:""},"-":{validator:function(a,b,c,d,e){var f=e.signHandler(a,b,c,d,e);return!f&&d&&e.allowMinus&&a===e.negationSymbol.back&&(f=!0),f},cardinality:1,placeholder:""},":":{validator:function(a,c,d,e,f){var g=f.signHandler(a,c,d,e,f);if(!g){var h="["+b.escapeRegex(f.radixPoint)+"]";g=new RegExp(h).test(a),g&&c.validPositions[d]&&c.validPositions[d].match.placeholder===f.radixPoint&&(g={caret:d+1})}return g?{c:f.radixPoint}:g},cardinality:1,placeholder:function(a){return a.radixPoint}}},onUnMask:function(a,c,d){var e=a.replace(d.prefix,"");return e=e.replace(d.suffix,""),e=e.replace(new RegExp(b.escapeRegex(d.groupSeparator),"g"),""),d.unmaskAsNumber?(""!==d.radixPoint&&-1!==e.indexOf(d.radixPoint)&&(e=e.replace(b.escapeRegex.call(this,d.radixPoint),".")),Number(e)):e},isComplete:function(a,c){var d=a.join(""),e=a.slice();if(c.postFormat(e,0,c),e.join("")!==d)return!1;var f=d.replace(c.prefix,"");return f=f.replace(c.suffix,""),f=f.replace(new RegExp(b.escapeRegex(c.groupSeparator),"g"),""),","===c.radixPoint&&(f=f.replace(b.escapeRegex(c.radixPoint),".")),isFinite(f)},onBeforeMask:function(a,c){if(""!==c.radixPoint&&isFinite(a))a=a.toString().replace(".",c.radixPoint);else{var d=a.match(/,/g),e=a.match(/\./g);e&&d?e.length>d.length?(a=a.replace(/\./g,""),a=a.replace(",",c.radixPoint)):d.length>e.length?(a=a.replace(/,/g,""),a=a.replace(".",c.radixPoint)):a=a.indexOf(".")<a.indexOf(",")?a.replace(/\./g,""):a=a.replace(/,/g,""):a=a.replace(new RegExp(b.escapeRegex(c.groupSeparator),"g"),"")}if(0===c.digits&&(-1!==a.indexOf(".")?a=a.substring(0,a.indexOf(".")):-1!==a.indexOf(",")&&(a=a.substring(0,a.indexOf(",")))),""!==c.radixPoint&&isFinite(c.digits)&&-1!==a.indexOf(c.radixPoint)){var f=a.split(c.radixPoint),g=f[1].match(new RegExp("\\d*"))[0];if(parseInt(c.digits)<g.toString().length){var h=Math.pow(10,parseInt(c.digits));a=a.replace(b.escapeRegex(c.radixPoint),"."),a=Math.round(parseFloat(a)*h)/h,a=a.toString().replace(".",c.radixPoint)}}return a.toString()},canClearPosition:function(a,b,c,d,e){var f=a.validPositions[b].input,g=f!==e.radixPoint||null!==a.validPositions[b].match.fn&&e.decimalProtect===!1||isFinite(f)||b===c||f===e.groupSeparator||f===e.negationSymbol.front||f===e.negationSymbol.back;return g},onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey)switch(c.keyCode){case b.keyCode.UP:g.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(f.step)),g.trigger("setvalue");break;case b.keyCode.DOWN:g.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(f.step)),g.trigger("setvalue")}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:!0,digits:2,digitsOptional:!1,clearMaskOnLostFocus:!1},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,radixPoint:".",placeholder:"0",autoGroup:!1,min:0,max:100,suffix:" %",allowPlus:!1,allowMinus:!1}}),b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.phone.extensions.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.phone.extensions.min.js
          new file mode 100644
          index 0000000..3f5b7b3
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.phone.extensions.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.phone.extensions.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["jquery","inputmask"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("./inputmask")):a(window.dependencyLib||jQuery,window.Inputmask)}(function(a,b){return b.extendAliases({phone:{url:"phone-codes/phone-codes.js",countrycode:"",phoneCodeCache:{},mask:function(b){if(void 0===b.phoneCodeCache[b.url]){var c=[];b.definitions["#"]=b.definitions[9],a.ajax({url:b.url,async:!1,type:"get",dataType:"json",success:function(a){c=a},error:function(a,c,d){alert(d+" - "+b.url)}}),b.phoneCodeCache[b.url]=c.sort(function(a,b){return(a.mask||a)<(b.mask||b)?-1:1})}return b.phoneCodeCache[b.url]},keepStatic:!1,nojumps:!0,nojumpsThreshold:1,onBeforeMask:function(a,b){var c=a.replace(/^0{1,2}/,"").replace(/[\s]/g,"");return(c.indexOf(b.countrycode)>1||-1===c.indexOf(b.countrycode))&&(c="+"+b.countrycode+c),c}},phonebe:{alias:"phone",url:"phone-codes/phone-be.js",countrycode:"32",nojumpsThreshold:4}}),b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.regex.extensions.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.regex.extensions.min.js
          new file mode 100644
          index 0000000..389112e
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/inputmask.regex.extensions.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* inputmask.regex.extensions.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["inputmask.dependencyLib","inputmask"],a):"object"==typeof exports?module.exports=a(require("./inputmask.dependencyLib.jquery"),require("./inputmask")):a(window.dependencyLib||jQuery,window.Inputmask)}(function(a,b){return b.extendAliases({Regex:{mask:"r",greedy:!1,repeat:"*",regex:null,regexTokens:null,tokenizer:/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,quantifierFilter:/[0-9]+[^,]/,isComplete:function(a,b){return new RegExp(b.regex).test(a.join(""))},definitions:{r:{validator:function(b,c,d,e,f){function g(a,b){this.matches=[],this.isGroup=a||!1,this.isQuantifier=b||!1,this.quantifier={min:1,max:1},this.repeaterPart=void 0}function h(){var a,b,c=new g,d=[];for(f.regexTokens=[];a=f.tokenizer.exec(f.regex);)switch(b=a[0],b.charAt(0)){case"(":d.push(new g(!0));break;case")":k=d.pop(),d.length>0?d[d.length-1].matches.push(k):c.matches.push(k);break;case"{":case"+":case"*":var e=new g(!1,!0);b=b.replace(/[{}]/g,"");var h=b.split(","),i=isNaN(h[0])?h[0]:parseInt(h[0]),j=1===h.length?i:isNaN(h[1])?h[1]:parseInt(h[1]);if(e.quantifier={min:i,max:j},d.length>0){var l=d[d.length-1].matches;a=l.pop(),a.isGroup||(k=new g(!0),k.matches.push(a),a=k),l.push(a),l.push(e)}else a=c.matches.pop(),a.isGroup||(k=new g(!0),k.matches.push(a),a=k),c.matches.push(a),c.matches.push(e);break;default:d.length>0?d[d.length-1].matches.push(b):c.matches.push(b)}c.matches.length>0&&f.regexTokens.push(c)}function i(b,c){var d=!1;c&&(m+="(",o++);for(var e=0;e<b.matches.length;e++){var f=b.matches[e];if(f.isGroup===!0)d=i(f,!0);else if(f.isQuantifier===!0){var g=a.inArray(f,b.matches),h=b.matches[g-1],k=m;if(isNaN(f.quantifier.max)){for(;f.repeaterPart&&f.repeaterPart!==m&&f.repeaterPart.length>m.length&&!(d=i(h,!0)););d=d||i(h,!0),d&&(f.repeaterPart=m),m=k+f.quantifier.max}else{for(var l=0,n=f.quantifier.max-1;n>l&&!(d=i(h,!0));l++);m=k+"{"+f.quantifier.min+","+f.quantifier.max+"}"}}else if(void 0!==f.matches)for(var p=0;p<f.length&&!(d=i(f[p],c));p++);else{var q;if("["==f.charAt(0)){q=m,q+=f;for(var r=0;o>r;r++)q+=")";var s=new RegExp("^("+q+")$");d=s.test(j)}else for(var t=0,u=f.length;u>t;t++)if("\\"!==f.charAt(t)){q=m,q+=f.substr(0,t+1),q=q.replace(/\|$/,"");for(var r=0;o>r;r++)q+=")";var s=new RegExp("^("+q+")$");if(d=s.test(j))break}m+=f}if(d)break}return c&&(m+=")",o--),d}var j,k,l=c.buffer.slice(),m="",n=!1,o=0;null===f.regexTokens&&h(),l.splice(d,0,b),j=l.join("");for(var p=0;p<f.regexTokens.length;p++){var q=f.regexTokens[p];if(n=i(q,q.isGroup))break}return n},cardinality:1}}}}),b});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/inputmask/jquery.inputmask.min.js b/public/theme/jquery.inputmask/dist/min/inputmask/jquery.inputmask.min.js
          new file mode 100644
          index 0000000..1d2e30b
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/inputmask/jquery.inputmask.min.js
          @@ -0,0 +1,8 @@
          +/*!
          +* jquery.inputmask.min.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){"function"==typeof define&&define.amd?define(["jquery","inputmask"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("./inputmask")):a(jQuery,window.Inputmask)}(function(a,b){return void 0===a.fn.inputmask&&(a.fn.inputmask=function(c,d){var e,f=this[0];if(void 0===d&&(d={}),"string"==typeof c)switch(c){case"unmaskedvalue":return f&&f.inputmask?f.inputmask.unmaskedvalue():a(f).val();case"remove":return this.each(function(){this.inputmask&&this.inputmask.remove()});case"getemptymask":return f&&f.inputmask?f.inputmask.getemptymask():"";case"hasMaskedValue":return f&&f.inputmask?f.inputmask.hasMaskedValue():!1;case"isComplete":return f&&f.inputmask?f.inputmask.isComplete():!0;case"getmetadata":return f&&f.inputmask?f.inputmask.getmetadata():void 0;case"setvalue":a(f).val(d),f&&void 0!==f.inputmask&&a(f).triggerHandler("setvalue");break;case"option":if("string"!=typeof d)return this.each(function(){return void 0!==this.inputmask?this.inputmask.option(d):void 0});if(f&&void 0!==f.inputmask)return f.inputmask.option(d);break;default:return d.alias=c,e=new b(d),this.each(function(){e.mask(this)})}else{if("object"==typeof c)return e=new b(c),void 0===c.mask&&void 0===c.alias?this.each(function(){return void 0!==this.inputmask?this.inputmask.option(c):void e.mask(this)}):this.each(function(){e.mask(this)});if(void 0===c)return this.each(function(){e=new b(d),e.mask(this)})}}),a.fn.inputmask});
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/dist/min/jquery.inputmask.bundle.min.js b/public/theme/jquery.inputmask/dist/min/jquery.inputmask.bundle.min.js
          new file mode 100644
          index 0000000..5e30df0
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/dist/min/jquery.inputmask.bundle.min.js
          @@ -0,0 +1,10 @@
          +/*!
          +* jquery.inputmask.bundle.js
          +* https://github.com/RobinHerbots/jquery.inputmask
          +* Copyright (c) 2010 - 2016 Robin Herbots
          +* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +* Version: 3.3.1
          +*/
          +!function(a){function b(c,d){return this instanceof b?(a.isPlainObject(c)?d=c:(d=d||{},d.alias=c),this.el=void 0,this.opts=a.extend(!0,{},this.defaults,d),this.noMasksCache=d&&void 0!==d.definitions,this.userOptions=d||{},this.events={},void e(this.opts.alias,d,this.opts)):new b(c,d)}function c(a){var b=document.createElement("input"),c="on"+a,d=c in b;return d||(b.setAttribute(c,"return;"),d="function"==typeof b[c]),b=null,d}function d(b,c){var d=b.getAttribute("type"),e="INPUT"===b.tagName&&-1!==a.inArray(d,c.supportsInputType)||b.isContentEditable||"TEXTAREA"===b.tagName;if(!e&&"INPUT"===b.tagName){var f=document.createElement("input");f.setAttribute("type",d),e="text"===f.type,f=null}return e}function e(b,c,d){var f=d.aliases[b];return f?(f.alias&&e(f.alias,void 0,d),a.extend(!0,d,f),a.extend(!0,d,c),!0):(null===d.mask&&(d.mask=b),!1)}function f(b,c,d){function f(a,c){c=void 0!==c?c:b.getAttribute("data-inputmask-"+a),null!==c&&("string"==typeof c&&(0===a.indexOf("on")?c=window[c]:"false"===c?c=!1:"true"===c&&(c=!0)),d[a]=c)}var g,h,i,j,k=b.getAttribute("data-inputmask");if(k&&""!==k&&(k=k.replace(new RegExp("'","g"),'"'),h=JSON.parse("{"+k+"}")),h){i=void 0;for(j in h)if("alias"===j.toLowerCase()){i=h[j];break}}f("alias",i),d.alias&&e(d.alias,d,c);for(g in c){if(h){i=void 0;for(j in h)if(j.toLowerCase()===g.toLowerCase()){i=h[j];break}}f(g,i)}return a.extend(!0,c,d),c}function g(c,d){function e(b){function d(a,b,c,d){this.matches=[],this.isGroup=a||!1,this.isOptional=b||!1,this.isQuantifier=c||!1,this.isAlternator=d||!1,this.quantifier={min:1,max:1}}function e(b,d,e){var f=c.definitions[d];e=void 0!==e?e:b.matches.length;var g=b.matches[e-1];if(f&&!r){f.placeholder=a.isFunction(f.placeholder)?f.placeholder(c):f.placeholder;for(var h=f.prevalidator,i=h?h.length:0,j=1;j<f.cardinality;j++){var k=i>=j?h[j-1]:[],l=k.validator,m=k.cardinality;b.matches.splice(e++,0,{fn:l?"string"==typeof l?new RegExp(l):new function(){this.test=l}:new RegExp("."),cardinality:m?m:1,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==(f.definitionSymbol||d),casing:f.casing,def:f.definitionSymbol||d,placeholder:f.placeholder,mask:d}),g=b.matches[e-1]}b.matches.splice(e++,0,{fn:f.validator?"string"==typeof f.validator?new RegExp(f.validator):new function(){this.test=f.validator}:new RegExp("."),cardinality:f.cardinality,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==(f.definitionSymbol||d),casing:f.casing,def:f.definitionSymbol||d,placeholder:f.placeholder,mask:d})}else b.matches.splice(e++,0,{fn:null,cardinality:0,optionality:b.isOptional,newBlockMarker:void 0===g||g.def!==d,casing:null,def:c.staticDefinitionSymbol||d,placeholder:void 0!==c.staticDefinitionSymbol?d:void 0,mask:d}),r=!1}function f(a,b){a.isGroup&&(a.isGroup=!1,e(a,c.groupmarker.start,0),b!==!0&&e(a,c.groupmarker.end))}function g(a,b,c,d){b.matches.length>0&&(void 0===d||d)&&(c=b.matches[b.matches.length-1],f(c)),e(b,a)}function h(){if(t.length>0){if(m=t[t.length-1],g(k,m,o,!m.isAlternator),m.isAlternator){n=t.pop();for(var a=0;a<n.matches.length;a++)n.matches[a].isGroup=!1;t.length>0?(m=t[t.length-1],m.matches.push(n)):s.matches.push(n)}}else g(k,s,o)}function i(a){function b(a){return a===c.optionalmarker.start?a=c.optionalmarker.end:a===c.optionalmarker.end?a=c.optionalmarker.start:a===c.groupmarker.start?a=c.groupmarker.end:a===c.groupmarker.end&&(a=c.groupmarker.start),a}a.matches=a.matches.reverse();for(var d in a.matches){var e=parseInt(d);if(a.matches[d].isQuantifier&&a.matches[e+1]&&a.matches[e+1].isGroup){var f=a.matches[d];a.matches.splice(d,1),a.matches.splice(e+1,0,f)}void 0!==a.matches[d].matches?a.matches[d]=i(a.matches[d]):a.matches[d]=b(a.matches[d])}return a}for(var j,k,l,m,n,o,p,q=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,r=!1,s=new d,t=[],u=[];j=q.exec(b);)if(k=j[0],r)h();else switch(k.charAt(0)){case c.escapeChar:r=!0;break;case c.optionalmarker.end:case c.groupmarker.end:if(l=t.pop(),void 0!==l)if(t.length>0){if(m=t[t.length-1],m.matches.push(l),m.isAlternator){n=t.pop();for(var v=0;v<n.matches.length;v++)n.matches[v].isGroup=!1;t.length>0?(m=t[t.length-1],m.matches.push(n)):s.matches.push(n)}}else s.matches.push(l);else h();break;case c.optionalmarker.start:t.push(new d(!1,!0));break;case c.groupmarker.start:t.push(new d(!0));break;case c.quantifiermarker.start:var w=new d(!1,!1,!0);k=k.replace(/[{}]/g,"");var x=k.split(","),y=isNaN(x[0])?x[0]:parseInt(x[0]),z=1===x.length?y:isNaN(x[1])?x[1]:parseInt(x[1]);if(("*"===z||"+"===z)&&(y="*"===z?0:1),w.quantifier={min:y,max:z},t.length>0){var A=t[t.length-1].matches;j=A.pop(),j.isGroup||(p=new d(!0),p.matches.push(j),j=p),A.push(j),A.push(w)}else j=s.matches.pop(),j.isGroup||(p=new d(!0),p.matches.push(j),j=p),s.matches.push(j),s.matches.push(w);break;case c.alternatormarker:t.length>0?(m=t[t.length-1],o=m.matches.pop()):o=s.matches.pop(),o.isAlternator?t.push(o):(n=new d(!1,!1,!1,!0),n.matches.push(o),t.push(n));break;default:h()}for(;t.length>0;)l=t.pop(),f(l,!0),s.matches.push(l);return s.matches.length>0&&(o=s.matches[s.matches.length-1],f(o),u.push(s)),c.numericInput&&i(u[0]),u}function f(f,g){if(null===f||""===f)return void 0;if(1===f.length&&c.greedy===!1&&0!==c.repeat&&(c.placeholder=""),c.repeat>0||"*"===c.repeat||"+"===c.repeat){var h="*"===c.repeat?0:"+"===c.repeat?1:c.repeat;f=c.groupmarker.start+f+c.groupmarker.end+c.quantifiermarker.start+h+","+c.repeat+c.quantifiermarker.end}var i;return void 0===b.prototype.masksCache[f]||d===!0?(i={mask:f,maskToken:e(f),validPositions:{},_buffer:void 0,buffer:void 0,tests:{},metadata:g},d!==!0&&(b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]=i,i=a.extend(!0,{},b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]))):i=a.extend(!0,{},b.prototype.masksCache[c.numericInput?f.split("").reverse().join(""):f]),i}function g(a){return a=a.toString()}var h;if(a.isFunction(c.mask)&&(c.mask=c.mask(c)),a.isArray(c.mask)){if(c.mask.length>1){c.keepStatic=null===c.keepStatic?!0:c.keepStatic;var i="(";return a.each(c.numericInput?c.mask.reverse():c.mask,function(b,c){i.length>1&&(i+=")|("),i+=g(void 0===c.mask||a.isFunction(c.mask)?c:c.mask)}),i+=")",f(i,c.mask)}c.mask=c.mask.pop()}return c.mask&&(h=void 0===c.mask.mask||a.isFunction(c.mask.mask)?f(g(c.mask),c.mask):f(g(c.mask.mask),c.mask)),h}function h(e,f,g){function i(a,b,c){b=b||0;var d,e,f,h=[],i=0,j=o();do{if(a===!0&&m().validPositions[i]){var k=m().validPositions[i];e=k.match,d=k.locator.slice(),h.push(c===!0?k.input:I(i,e))}else f=r(i,d,i-1),e=f.match,d=f.locator.slice(),(g.jitMasking===!1||j>i||isFinite(g.jitMasking)&&g.jitMasking>i)&&h.push(I(i,e));i++}while((void 0===ha||ha>i-1)&&null!==e.fn||null===e.fn&&""!==e.def||b>=i);return""===h[h.length-1]&&h.pop(),h}function m(){return f}function n(a){var b=m();b.buffer=void 0,a!==!0&&(b.tests={},b._buffer=void 0,b.validPositions={},b.p=0)}function o(a,b,c){var d=-1,e=-1,f=c||m().validPositions;void 0===a&&(a=-1);for(var g in f){var h=parseInt(g);f[h]&&(b||null!==f[h].match.fn)&&(a>=h&&(d=h),h>=a&&(e=h))}return-1!==d&&a-d>1||a>e?d:e}function p(b,c,d,e){if(e||g.insertMode&&void 0!==m().validPositions[b]&&void 0===d){var f,h=a.extend(!0,{},m().validPositions),i=o();for(f=b;i>=f;f++)delete m().validPositions[f];m().validPositions[b]=c;var j,k=!0,l=m().validPositions,p=!1;for(f=j=b;i>=f;f++){var q=h[f];if(void 0!==q)for(var r=j,s=-1;r<D()&&(null==q.match.fn&&l[f]&&(l[f].match.optionalQuantifier===!0||l[f].match.optionality===!0)||null!=q.match.fn);){if(null===q.match.fn||!g.keepStatic&&l[f]&&(void 0!==l[f+1]&&v(f+1,l[f].locator.slice(),f).length>1||void 0!==l[f].alternation)?r++:r=E(j),p===!1&&h[r]&&h[r].match.def===q.match.def){m().validPositions[r]=a.extend(!0,{},h[r]),m().validPositions[r].input=q.input,j=r,k=!0;break}if(t(r,q.match.def)){var u=B(r,q.input,!0,!0);if(k=u!==!1,j=u.caret||u.insert?o():r,p=!0,k)break}else{if(k=null==q.match.fn,s===r)break;s=r}}if(!k)break}if(!k)return m().validPositions=a.extend(!0,{},h),n(!0),!1}else m().validPositions[b]=c;return n(!0),!0}function q(b,c,d,e){function f(a){var b=m().validPositions[a];if(void 0!==b&&null===b.match.fn){var c=m().validPositions[a-1],d=m().validPositions[a+1];return void 0!==c&&void 0!==d}return!1}var h,i=b,j=a.extend(!0,{},m().validPositions),k=!1;for(m().p=b,h=c-1;h>=i;h--)void 0!==m().validPositions[h]&&(d===!0||!f(h)&&g.canClearPosition(m(),h,o(),e,g)!==!1)&&delete m().validPositions[h];for(n(!0),h=i+1;h<=o();){for(;void 0!==m().validPositions[i];)i++;var l=m().validPositions[i];if(i>h&&(h=i+1),void 0===m().validPositions[h]&&C(h)||void 0!==l)h++;else{var p=r(h);k===!1&&j[i]&&j[i].match.def===p.match.def?(m().validPositions[i]=a.extend(!0,{},j[i]),m().validPositions[i].input=p.input,delete m().validPositions[h],h++):t(i,p.match.def)?B(i,p.input||I(h),!0)!==!1&&(delete m().validPositions[h],h++,k=!0):C(h)||(h++,i--),i++}}n(!0)}function r(a,b,c){var d=m().validPositions[a];if(void 0===d)for(var e=v(a,b,c),f=o(),h=m().validPositions[f]||v(0)[0],i=void 0!==h.alternation?h.locator[h.alternation].toString().split(","):[],j=0;j<e.length&&(d=e[j],!(d.match&&(g.greedy&&d.match.optionalQuantifier!==!0||(d.match.optionality===!1||d.match.newBlockMarker===!1)&&d.match.optionalQuantifier!==!0)&&(void 0===h.alternation||h.alternation!==d.alternation||void 0!==d.locator[h.alternation]&&A(d.locator[h.alternation].toString().split(","),i))));j++);return d}function s(a){return m().validPositions[a]?m().validPositions[a].match:v(a)[0].match}function t(a,b){for(var c=!1,d=v(a),e=0;e<d.length;e++)if(d[e].match&&d[e].match.def===b){c=!0;break}return c}function u(b,c){var d,e;return(m().tests[b]||m().validPositions[b])&&a.each(m().tests[b]||[m().validPositions[b]],function(a,b){var f=b.alternation?b.locator[b.alternation].toString().indexOf(c):-1;(void 0===e||e>f)&&-1!==f&&(d=b,e=f)}),d}function v(b,c,d){function e(c,d,f,h){function j(f,h,o){function p(b,c){var d=0===a.inArray(b,c.matches);return d||a.each(c.matches,function(a,e){return e.isQuantifier===!0&&(d=p(b,c.matches[a-1]))?!1:void 0}),d}function q(a,b){var c=u(a,b);return c?c.locator.slice(c.alternation+1):[]}if(i>1e4)throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+m().mask;if(i===b&&void 0===f.matches)return k.push({match:f,locator:h.reverse(),cd:n}),!0;if(void 0!==f.matches){if(f.isGroup&&o!==f){if(f=j(c.matches[a.inArray(f,c.matches)+1],h))return!0}else if(f.isOptional){var r=f;if(f=e(f,d,h,o)){if(g=k[k.length-1].match,!p(g,r))return!0;l=!0,i=b}}else if(f.isAlternator){var s,t=f,v=[],w=k.slice(),x=h.length,y=d.length>0?d.shift():-1;if(-1===y||"string"==typeof y){var z,A=i,B=d.slice(),C=[];if("string"==typeof y)C=y.split(",");else for(z=0;z<t.matches.length;z++)C.push(z);for(var D=0;D<C.length;D++){if(z=parseInt(C[D]),k=[],d=q(i,z),f=j(t.matches[z]||c.matches[z],[z].concat(h),o)||f,f!==!0&&void 0!==f&&C[C.length-1]<t.matches.length){var E=a.inArray(f,c.matches)+1;c.matches.length>E&&(f=j(c.matches[E],[E].concat(h.slice(1,h.length)),o),f&&(C.push(E.toString()),a.each(k,function(a,b){b.alternation=h.length-1})))}s=k.slice(),i=A,k=[];for(var F=0;F<B.length;F++)d[F]=B[F];for(var G=0;G<s.length;G++){var H=s[G];H.alternation=H.alternation||x;for(var I=0;I<v.length;I++){var J=v[I];if(H.match.def===J.match.def&&("string"!=typeof y||-1!==a.inArray(H.locator[H.alternation].toString(),C))){H.match.mask===J.match.mask&&(s.splice(G,1),G--),-1===J.locator[H.alternation].toString().indexOf(H.locator[H.alternation])&&(J.locator[H.alternation]=J.locator[H.alternation]+","+H.locator[H.alternation],J.alternation=H.alternation);break}}}v=v.concat(s)}"string"==typeof y&&(v=a.map(v,function(b,c){if(isFinite(c)){var d,e=b.alternation,f=b.locator[e].toString().split(",");b.locator[e]=void 0,b.alternation=void 0;for(var g=0;g<f.length;g++)d=-1!==a.inArray(f[g],C),d&&(void 0!==b.locator[e]?(b.locator[e]+=",",b.locator[e]+=f[g]):b.locator[e]=parseInt(f[g]),b.alternation=e);if(void 0!==b.locator[e])return b}})),k=w.concat(v),i=b,l=k.length>0}else f=j(t.matches[y]||c.matches[y],[y].concat(h),o);if(f)return!0}else if(f.isQuantifier&&o!==c.matches[a.inArray(f,c.matches)-1])for(var K=f,L=d.length>0?d.shift():0;L<(isNaN(K.quantifier.max)?L+1:K.quantifier.max)&&b>=i;L++){var M=c.matches[a.inArray(K,c.matches)-1];if(f=j(M,[L].concat(h),M)){if(g=k[k.length-1].match,g.optionalQuantifier=L>K.quantifier.min-1,p(g,M)){if(L>K.quantifier.min-1){l=!0,i=b;break}return!0}return!0}}else if(f=e(f,d,h,o))return!0}else i++}for(var o=d.length>0?d.shift():0;o<c.matches.length;o++)if(c.matches[o].isQuantifier!==!0){var p=j(c.matches[o],[o].concat(f),h);if(p&&i===b)return p;if(i>b)break}}function f(b){var c=[];return a.isArray(b)||(b=[b]),void 0===b[0].alternation?c=b[0].locator.slice():a.each(b,function(a,b){if(""!==b.def)if(0===c.length)c=b.locator.slice();else for(var d=0;d<c.length;d++)b.locator[d]&&-1===c[d].toString().indexOf(b.locator[d])&&(c[d]+=","+b.locator[d])}),c}var g,h=m().maskToken,i=c?d:0,j=c||[0],k=[],l=!1,n=c?c.join(""):"";if(b>-1){if(void 0===c){for(var o,p=b-1;void 0===(o=m().validPositions[p]||m().tests[p])&&p>-1;)p--;void 0!==o&&p>-1&&(j=f(o),n=j.join(""),i=p)}if(m().tests[b]&&m().tests[b][0].cd===n)return m().tests[b];for(var q=j.shift();q<h.length;q++){var r=e(h[q],j,[q]);if(r&&i===b||i>b)break}}return(0===k.length||l)&&k.push({match:{fn:null,cardinality:0,optionality:!0,casing:null,def:""},locator:[]}),m().tests[b]=a.extend(!0,[],k),m().tests[b]}function w(){return void 0===m()._buffer&&(m()._buffer=i(!1,1)),m()._buffer}function x(a){if(void 0===m().buffer||a===!0){if(a===!0)for(var b in m().tests)void 0===m().validPositions[b]&&delete m().tests[b];m().buffer=i(!0,o(),!0)}return m().buffer}function y(a,b,c){var d;if(c=c,a===!0)n(),a=0,b=c.length;else for(d=a;b>d;d++)delete m().validPositions[d],delete m().tests[d];for(d=a;b>d;d++)n(!0),c[d]!==g.skipOptionalPartCharacter&&B(d,c[d],!0,!0)}function z(a,b){switch(b.casing){case"upper":a=a.toUpperCase();break;case"lower":a=a.toLowerCase()}return a}function A(b,c){for(var d=g.greedy?c:c.slice(0,1),e=!1,f=0;f<b.length;f++)if(-1!==a.inArray(b[f],d)){e=!0;break}return e}function B(c,d,e,f){function h(a){return ja?a.begin-a.end>1||a.begin-a.end===1&&g.insertMode:a.end-a.begin>1||a.end-a.begin===1&&g.insertMode}function i(b,d,e,f){var i=!1;return a.each(v(b),function(j,k){for(var l=k.match,r=d?1:0,s="",t=l.cardinality;t>r;t--)s+=G(b-(t-1));if(d&&(s+=d),x(!0),i=null!=l.fn?l.fn.test(s,m(),b,e,g,h(c)):d!==l.def&&d!==g.skipOptionalPartCharacter||""===l.def?!1:{c:l.placeholder||l.def,pos:b},i!==!1){var u=void 0!==i.c?i.c:d;u=u===g.skipOptionalPartCharacter&&null===l.fn?l.placeholder||l.def:u;var v=b,w=x();if(void 0!==i.remove&&(a.isArray(i.remove)||(i.remove=[i.remove]),a.each(i.remove.sort(function(a,b){return b-a}),function(a,b){q(b,b+1,!0)})),void 0!==i.insert&&(a.isArray(i.insert)||(i.insert=[i.insert]),a.each(i.insert.sort(function(a,b){return a-b}),function(a,b){B(b.pos,b.c,!1,f)})),i.refreshFromBuffer){var A=i.refreshFromBuffer;if(e=!0,y(A===!0?A:A.start,A.end,w),void 0===i.pos&&void 0===i.c)return i.pos=o(),!1;if(v=void 0!==i.pos?i.pos:b,v!==b)return i=a.extend(i,B(v,u,!0,f)),!1}else if(i!==!0&&void 0!==i.pos&&i.pos!==b&&(v=i.pos,y(b,v,x().slice()),v!==b))return i=a.extend(i,B(v,u,!0)),!1;return i!==!0&&void 0===i.pos&&void 0===i.c?!1:(j>0&&n(!0),p(v,a.extend({},k,{input:z(u,l)}),f,h(c))||(i=!1),!1)}}),i}function j(b,c,d,e){for(var f,h,i,j,k,l,p=a.extend(!0,{},m().validPositions),q=a.extend(!0,{},m().tests),s=o();s>=0&&(j=m().validPositions[s],!j||void 0===j.alternation||(f=s,h=m().validPositions[f].alternation,r(f).locator[j.alternation]===j.locator[j.alternation]));s--);if(void 0!==h){f=parseInt(f);for(var t in m().validPositions)if(t=parseInt(t),j=m().validPositions[t],t>=f&&void 0!==j.alternation){var v;0===f?(v=[],a.each(m().tests[f],function(a,b){void 0!==b.locator[h]&&(v=v.concat(b.locator[h].toString().split(",")))})):v=m().validPositions[f].locator[h].toString().split(",");var w=void 0!==j.locator[h]?j.locator[h]:v[0];w.length>0&&(w=w.split(",")[0]);for(var x=0;x<v.length;x++){var y=[],z=0,A=0;if(w<v[x]){for(var C,D,E=t;E>=0;E--)if(C=m().validPositions[E],void 0!==C){var F=u(E,v[x]);m().validPositions[E].match.def!==F.match.def&&(y.push(m().validPositions[E].input),m().validPositions[E]=F,m().validPositions[E].input=I(E),null===m().validPositions[E].match.fn&&A++,C=F),D=C.locator[h],C.locator[h]=parseInt(v[x]);break}if(w!==C.locator[h]){for(k=t+1;k<o(void 0,!0)+1;k++)l=m().validPositions[k],l&&null!=l.match.fn?y.push(l.input):b>k&&z++,delete m().validPositions[k],delete m().tests[k];for(n(!0),g.keepStatic=!g.keepStatic,i=!0;y.length>0;){var G=y.shift();if(G!==g.skipOptionalPartCharacter&&!(i=B(o(void 0,!0)+1,G,!1,e)))break}if(C.alternation=h,C.locator[h]=D,i){var H=o(b)+1;for(k=t+1;k<o()+1;k++)l=m().validPositions[k],(void 0===l||null==l.match.fn)&&b>k&&A++;b+=A-z,i=B(b>H?H:b,c,d,e)}if(g.keepStatic=!g.keepStatic,i)return i;n(),m().validPositions=a.extend(!0,{},p),m().tests=a.extend(!0,{},q)}}}break}}return!1}function k(b,c){for(var d=m().validPositions[c],e=d.locator,f=e.length,g=b;c>g;g++)if(void 0===m().validPositions[g]&&!C(g,!0)){var h=v(g),i=h[0],j=-1;a.each(h,function(a,b){for(var c=0;f>c&&(void 0!==b.locator[c]&&A(b.locator[c].toString().split(","),e[c].toString().split(",")));c++)c>j&&(j=c,i=b)}),p(g,a.extend({},i,{input:i.match.placeholder||i.match.def}),!0)}}e=e===!0;var l=c;void 0!==c.begin&&(l=ja&&!h(c)?c.end:c.begin);for(var s=!1,t=a.extend(!0,{},m().validPositions),w=l-1;w>-1&&!m().validPositions[w];w--);var F;for(w++;l>w;w++)void 0===m().validPositions[w]&&(g.jitMasking===!1||g.jitMasking>w)&&((F=r(w)).match.def===g.radixPointDefinitionSymbol||!C(w,!0)||a.inArray(g.radixPoint,x())<w&&F.match.fn&&F.match.fn.test(I(w),m(),w,!1,g))&&i(o(w,!0)+1,F.match.placeholder||(null==F.match.fn?F.match.def:""!==I(w)?I(w):x()[w]),!0,f);if(h(c)&&(Q(void 0,b.keyCode.DELETE,c),l=m().p),l<D()&&(s=i(l,d,e,f),(!e||f===!0)&&s===!1)){var H=m().validPositions[l];if(!H||null!==H.match.fn||H.match.def!==d&&d!==g.skipOptionalPartCharacter){if((g.insertMode||void 0===m().validPositions[E(l)])&&!C(l,!0)){var J=r(l).match;J=J.placeholder||J.def,i(l,J,e,f);for(var K=l+1,L=E(l);L>=K;K++)if(s=i(K,d,e,f),s!==!1){k(l,K),l=K;break}}}else s={caret:E(l)}}return s===!1&&g.keepStatic&&(s=j(l,d,e,f)),s===!0&&(s={pos:l}),a.isFunction(g.postValidation)&&s!==!1&&!e&&f!==!0&&(s=g.postValidation(x(!0),s,g)?s:!1),void 0===s.pos&&(s.pos=l),s===!1&&(n(!0),m().validPositions=a.extend(!0,{},t)),s}function C(a,b){var c;if(b?(c=r(a).match,""===c.def&&(c=s(a))):c=s(a),null!=c.fn)return c.fn;if(b!==!0&&a>-1&&!g.keepStatic&&void 0===m().validPositions[a]){var d=v(a);return d.length>2}return!1}function D(){var a;ha=void 0!==fa?fa.maxLength:void 0,-1===ha&&(ha=void 0);var b,c=o(),d=m().validPositions[c],e=void 0!==d?d.locator.slice():void 0;for(b=c+1;void 0===d||null!==d.match.fn||null===d.match.fn&&""!==d.match.def;b++)d=r(b,e,b-1),e=d.locator.slice();var f=s(b-1);return a=""!==f.def?b:b-1,void 0===ha||ha>a?a:ha}function E(a,b){var c=D();if(a>=c)return c;for(var d=a;++d<c&&(b===!0&&(s(d).newBlockMarker!==!0||!C(d))||b!==!0&&!C(d)&&(g.nojumps!==!0||g.nojumpsThreshold>d)););return d}function F(a,b){var c=a;if(0>=c)return 0;for(;--c>0&&(b===!0&&s(c).newBlockMarker!==!0||b!==!0&&!C(c)););return c}function G(a){return void 0===m().validPositions[a]?I(a):m().validPositions[a].input}function H(b,c,d,e,f){if(e&&a.isFunction(g.onBeforeWrite)){var h=g.onBeforeWrite(e,c,d,g);if(h){if(h.refreshFromBuffer){var i=h.refreshFromBuffer;y(i===!0?i:i.start,i.end,h.buffer||c),c=x(!0)}void 0!==d&&(d=void 0!==h.caret?h.caret:d)}}b.inputmask._valueSet(c.join("")),void 0===d||void 0!==e&&"blur"===e.type||L(b,d),f===!0&&(la=!0,a(b).trigger("input"))}function I(a,b){if(b=b||s(a),void 0!==b.placeholder)return b.placeholder;if(null===b.fn){if(a>-1&&!g.keepStatic&&void 0===m().validPositions[a]){var c,d=v(a),e=[];if(d.length>2)for(var f=0;f<d.length;f++)if(d[f].match.optionality!==!0&&d[f].match.optionalQuantifier!==!0&&(null===d[f].match.fn||void 0===c||d[f].match.fn.test(c.match.def,m(),a,!0,g)!==!1)&&(e.push(d[f]),null===d[f].match.fn&&(c=d[f]),e.length>1))return g.placeholder.charAt(a%g.placeholder.length)}return b.def}return g.placeholder.charAt(a%g.placeholder.length)}function J(c,d,e,f){function h(){var a=!1,b=w().slice(l,E(l)).join("").indexOf(k);if(-1!==b&&!C(l)){a=!0;for(var c=w().slice(l,l+b),d=0;d<c.length;d++)if(" "!==c[d]){a=!1;break}}return a}var i,j=f.slice(),k="",l=0;if(n(),m().p=E(-1),!e)if(g.autoUnmask!==!0){var p=w().slice(0,E(-1)).join(""),q=j.join("").match(new RegExp("^"+b.escapeRegex(p),"g"));q&&q.length>0&&(j.splice(0,q.length*p.length),l=E(l))}else l=E(l);a.each(j,function(b,d){if(void 0!==d){var f=new a.Event("keypress");f.which=d.charCodeAt(0),k+=d;var j=o(void 0,!0),p=m().validPositions[j],q=r(j+1,p?p.locator.slice():void 0,j);if(!h()||e||g.autoUnmask){var s=e?b:null==q.match.fn&&q.match.optionality&&j+1<m().p?j+1:m().p;i=S.call(c,f,!0,!1,e,s),l=s+1,k=""}else i=S.call(c,f,!0,!1,!0,j+1);if(!e&&a.isFunction(g.onBeforeWrite)&&(i=g.onBeforeWrite(f,x(),i.forwardPosition,g),i&&i.refreshFromBuffer)){var t=i.refreshFromBuffer;y(t===!0?t:t.start,t.end,i.buffer),n(!0),i.caret&&(m().p=i.caret)}}}),d&&H(c,x(),document.activeElement===c?E(o(0)):void 0,new a.Event("checkval"))}function K(b){if(b&&void 0===b.inputmask)return b.value;var c=[],d=m().validPositions;for(var e in d)d[e].match&&null!=d[e].match.fn&&c.push(d[e].input);var f=0===c.length?null:(ja?c.reverse():c).join("");if(null!==f){var h=(ja?x().slice().reverse():x()).join("");a.isFunction(g.onUnMask)&&(f=g.onUnMask(h,f,g)||f)}return f}function L(a,b,c,d){function e(a){if(d!==!0&&ja&&"number"==typeof a&&(!g.greedy||""!==g.placeholder)){var b=x().join("").length;a=b-a}return a}var f;if("number"!=typeof b)return a.setSelectionRange?(b=a.selectionStart,c=a.selectionEnd):window.getSelection?(f=window.getSelection().getRangeAt(0),(f.commonAncestorContainer.parentNode===a||f.commonAncestorContainer===a)&&(b=f.startOffset,c=f.endOffset)):document.selection&&document.selection.createRange&&(f=document.selection.createRange(),b=0-f.duplicate().moveStart("character",-a.inputmask._valueGet().length),c=b+f.text.length),{begin:e(b),end:e(c)};b=e(b),c=e(c),c="number"==typeof c?c:b;var h=parseInt(((a.ownerDocument.defaultView||window).getComputedStyle?(a.ownerDocument.defaultView||window).getComputedStyle(a,null):a.currentStyle).fontSize)*c;if(a.scrollLeft=h>a.scrollWidth?h:0,j||g.insertMode!==!1||b!==c||c++,a.setSelectionRange)a.selectionStart=b,a.selectionEnd=c;else if(window.getSelection){if(f=document.createRange(),void 0===a.firstChild||null===a.firstChild){var i=document.createTextNode("");a.appendChild(i)}f.setStart(a.firstChild,b<a.inputmask._valueGet().length?b:a.inputmask._valueGet().length),f.setEnd(a.firstChild,c<a.inputmask._valueGet().length?c:a.inputmask._valueGet().length),f.collapse(!0);var k=window.getSelection();k.removeAllRanges(),k.addRange(f)}else a.createTextRange&&(f=a.createTextRange(),f.collapse(!0),f.moveEnd("character",c),f.moveStart("character",b),f.select())}function M(b){var c,d,e=x(),f=e.length,g=o(),h={},i=m().validPositions[g],j=void 0!==i?i.locator.slice():void 0;for(c=g+1;c<e.length;c++)d=r(c,j,c-1),j=d.locator.slice(),h[c]=a.extend(!0,{},d);var k=i&&void 0!==i.alternation?i.locator[i.alternation]:void 0;for(c=f-1;c>g&&(d=h[c],(d.match.optionality||d.match.optionalQuantifier||k&&(k!==h[c].locator[i.alternation]&&null!=d.match.fn||null===d.match.fn&&d.locator[i.alternation]&&A(d.locator[i.alternation].toString().split(","),k.toString().split(","))&&""!==v(c)[0].def))&&e[c]===I(c,d.match));c--)f--;return b?{l:f,def:h[f]?h[f].match:void 0}:f}function N(a){for(var b=M(),c=a.length-1;c>b&&!C(c);c--);return a.splice(b,c+1-b),a}function O(b){if(a.isFunction(g.isComplete))return g.isComplete(b,g);if("*"===g.repeat)return void 0;var c=!1,d=M(!0),e=F(d.l);if(void 0===d.def||d.def.newBlockMarker||d.def.optionality||d.def.optionalQuantifier){c=!0;for(var f=0;e>=f;f++){var h=r(f).match;if(null!==h.fn&&void 0===m().validPositions[f]&&h.optionality!==!0&&h.optionalQuantifier!==!0||null===h.fn&&b[f]!==I(f,h)){c=!1;break}}}return c}function P(b){function c(b){if(a.valHooks&&(void 0===a.valHooks[b]||a.valHooks[b].inputmaskpatch!==!0)){var c=a.valHooks[b]&&a.valHooks[b].get?a.valHooks[b].get:function(a){return a.value},d=a.valHooks[b]&&a.valHooks[b].set?a.valHooks[b].set:function(a,b){return a.value=b,a};a.valHooks[b]={get:function(a){if(a.inputmask){if(a.inputmask.opts.autoUnmask)return a.inputmask.unmaskedvalue();var b=c(a);return-1!==o(void 0,void 0,a.inputmask.maskset.validPositions)||g.nullable!==!0?b:""}return c(a)},set:function(b,c){var e,f=a(b);return e=d(b,c),b.inputmask&&f.trigger("setvalue"),e},inputmaskpatch:!0}}}function d(){return this.inputmask?this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():-1!==o()||g.nullable!==!0?document.activeElement===this&&g.clearMaskOnLostFocus?(ja?N(x().slice()).reverse():N(x().slice())).join(""):h.call(this):"":h.call(this)}function e(b){i.call(this,b),this.inputmask&&a(this).trigger("setvalue")}function f(b){oa.on(b,"mouseenter",function(b){var c=a(this),d=this,e=d.inputmask._valueGet();e!==x().join("")&&c.trigger("setvalue")})}var h,i;if(!b.inputmask.__valueGet){if(Object.getOwnPropertyDescriptor){"function"!=typeof Object.getPrototypeOf&&(Object.getPrototypeOf="object"==typeof"test".__proto__?function(a){return a.__proto__}:function(a){return a.constructor.prototype});var j=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(b),"value"):void 0;j&&j.get&&j.set?(h=j.get,i=j.set,Object.defineProperty(b,"value",{get:d,set:e,configurable:!0})):"INPUT"!==b.tagName&&(h=function(){return this.textContent},i=function(a){this.textContent=a},Object.defineProperty(b,"value",{get:d,set:e,configurable:!0}))}else document.__lookupGetter__&&b.__lookupGetter__("value")&&(h=b.__lookupGetter__("value"),i=b.__lookupSetter__("value"),b.__defineGetter__("value",d),b.__defineSetter__("value",e));b.inputmask.__valueGet=h,b.inputmask._valueGet=function(a){return ja&&a!==!0?h.call(this.el).split("").reverse().join(""):h.call(this.el)},b.inputmask.__valueSet=i,b.inputmask._valueSet=function(a,b){i.call(this.el,null===a||void 0===a?"":b!==!0&&ja?a.split("").reverse().join(""):a)},void 0===h&&(h=function(){return this.value},i=function(a){this.value=a},c(b.type),f(b))}}function Q(c,d,e,f){function h(){if(g.keepStatic){n(!0);var b,d=[],e=a.extend(!0,{},m().validPositions);for(b=o();b>=0;b--){var f=m().validPositions[b];if(f&&(null!=f.match.fn&&d.push(f.input),delete m().validPositions[b],void 0!==f.alternation&&f.locator[f.alternation]===r(b).locator[f.alternation]))break}if(b>-1)for(;d.length>0;){m().p=E(o());var h=new a.Event("keypress");h.which=d.pop().charCodeAt(0),S.call(c,h,!0,!1,!1,m().p)}else m().validPositions=a.extend(!0,{},e)}}if((g.numericInput||ja)&&(d===b.keyCode.BACKSPACE?d=b.keyCode.DELETE:d===b.keyCode.DELETE&&(d=b.keyCode.BACKSPACE),ja)){var i=e.end;e.end=e.begin,e.begin=i}d===b.keyCode.BACKSPACE&&(e.end-e.begin<1||g.insertMode===!1)?(e.begin=F(e.begin),void 0===m().validPositions[e.begin]||m().validPositions[e.begin].input!==g.groupSeparator&&m().validPositions[e.begin].input!==g.radixPoint||e.begin--):d===b.keyCode.DELETE&&e.begin===e.end&&(e.end=C(e.end)?e.end+1:E(e.end)+1,void 0===m().validPositions[e.begin]||m().validPositions[e.begin].input!==g.groupSeparator&&m().validPositions[e.begin].input!==g.radixPoint||e.end++),q(e.begin,e.end,!1,f),f!==!0&&h();var j=o(e.begin);j<e.begin?(-1===j&&n(),m().p=E(j)):f!==!0&&(m().p=e.begin)}function R(d){var e=this,f=a(e),h=d.keyCode,i=L(e);if(h===b.keyCode.BACKSPACE||h===b.keyCode.DELETE||l&&h===b.keyCode.BACKSPACE_SAFARI||d.ctrlKey&&h===b.keyCode.X&&!c("cut"))d.preventDefault(),Q(e,h,i),H(e,x(),m().p,d,ea!==x().join("")),e.inputmask._valueGet()===w().join("")?f.trigger("cleared"):O(x())===!0&&f.trigger("complete"),g.showTooltip&&(e.title=g.tooltip||m().mask);else if(h===b.keyCode.END||h===b.keyCode.PAGE_DOWN){d.preventDefault();var j=E(o());g.insertMode||j!==D()||d.shiftKey||j--,L(e,d.shiftKey?i.begin:j,j,!0)}else h===b.keyCode.HOME&&!d.shiftKey||h===b.keyCode.PAGE_UP?(d.preventDefault(),L(e,0,d.shiftKey?i.begin:0,!0)):(g.undoOnEscape&&h===b.keyCode.ESCAPE||90===h&&d.ctrlKey)&&d.altKey!==!0?(J(e,!0,!1,ea.split("")),f.trigger("click")):h!==b.keyCode.INSERT||d.shiftKey||d.ctrlKey?g.tabThrough===!0&&h===b.keyCode.TAB?(d.shiftKey===!0?(null===s(i.begin).fn&&(i.begin=E(i.begin)),i.end=F(i.begin,!0),i.begin=F(i.end,!0)):(i.begin=E(i.begin,!0),i.end=E(i.begin,!0),i.end<D()&&i.end--),i.begin<D()&&(d.preventDefault(),L(e,i.begin,i.end))):g.insertMode!==!1||d.shiftKey||(h===b.keyCode.RIGHT?setTimeout(function(){var a=L(e);L(e,a.begin)},0):h===b.keyCode.LEFT&&setTimeout(function(){var a=L(e);L(e,ja?a.begin+1:a.begin-1)},0)):(g.insertMode=!g.insertMode,L(e,g.insertMode||i.begin!==D()?i.begin:i.begin-1));g.onKeyDown.call(this,d,x(),L(e).begin,g),ma=-1!==a.inArray(h,g.ignorables)}function S(c,d,e,f,h){var i=this,j=a(i),k=c.which||c.charCode||c.keyCode;if(!(d===!0||c.ctrlKey&&c.altKey)&&(c.ctrlKey||c.metaKey||ma))return k===b.keyCode.ENTER&&ea!==x().join("")&&(ea=x().join(""),setTimeout(function(){j.trigger("change")},0)),!0;if(k){46===k&&c.shiftKey===!1&&","===g.radixPoint&&(k=44);var l,o=d?{begin:h,end:h}:L(i),p=String.fromCharCode(k);m().writeOutBuffer=!0;var q=B(o,p,f);if(q!==!1){var r=q.pos;if(n(!0),void 0!==q.caret)l=q.caret;else{var s=m().validPositions;l=!g.keepStatic&&(void 0!==s[r+1]&&v(r+1,s[r].locator.slice(),r).length>1||void 0!==s[r].alternation)?r+1:E(r)}m().p=l}if(e!==!1){var t=this;if(setTimeout(function(){g.onKeyValidation.call(t,k,q,g)},0),m().writeOutBuffer&&q!==!1){var u=x();H(i,u,g.numericInput&&void 0===q.caret?F(l):l,c,d!==!0),d!==!0&&setTimeout(function(){O(u)===!0&&j.trigger("complete")},0)}}if(g.showTooltip&&(i.title=g.tooltip||m().mask),c.preventDefault(),d)return q.forwardPosition=l,q}}function T(b){var c,d=this,e=b.originalEvent||b,f=a(d),h=d.inputmask._valueGet(!0),i=L(d);ja&&(c=i.end,i.end=i.begin,i.begin=c);var j=h.substr(0,i.begin),k=h.substr(i.end,h.length);j===(ja?w().reverse():w()).slice(0,i.begin).join("")&&(j=""),k===(ja?w().reverse():w()).slice(i.end).join("")&&(k=""),ja&&(c=j,j=k,k=c),window.clipboardData&&window.clipboardData.getData?h=j+window.clipboardData.getData("Text")+k:e.clipboardData&&e.clipboardData.getData&&(h=j+e.clipboardData.getData("text/plain")+k);var l=h;if(a.isFunction(g.onBeforePaste)){if(l=g.onBeforePaste(h,g),l===!1)return b.preventDefault();l||(l=h)}return J(d,!1,!1,ja?l.split("").reverse():l.toString().split("")),H(d,x(),E(o()),b,!0),O(x())===!0&&f.trigger("complete"),b.preventDefault()}function U(c){var d=this,e=d.inputmask._valueGet();if(x().join("")!==e){var f=L(d);if(e=e.replace(new RegExp("("+b.escapeRegex(w().join(""))+")*"),""),k){var g=e.replace(x().join(""),"");if(1===g.length){var h=new a.Event("keypress");return h.which=g.charCodeAt(0),S.call(d,h,!0,!0,!1,m().validPositions[f.begin-1]?f.begin:f.begin-1),!1}}if(f.begin>e.length&&(L(d,e.length),f=L(d)),x().length-e.length!==1||e.charAt(f.begin)===x()[f.begin]||e.charAt(f.begin+1)===x()[f.begin]||C(f.begin)){for(var i=o()+1,j=x().slice(i).join("");null===e.match(b.escapeRegex(j)+"$");)j=j.slice(1);e=e.replace(j,""),e=e.split(""),J(d,!0,!1,e),O(x())===!0&&a(d).trigger("complete")}else c.keyCode=b.keyCode.BACKSPACE,R.call(d,c);c.preventDefault()}}function V(b){var c=this,d=c.inputmask._valueGet();J(c,!0,!1,(a.isFunction(g.onBeforeMask)?g.onBeforeMask(d,g)||d:d).split("")),ea=x().join(""),(g.clearMaskOnLostFocus||g.clearIncomplete)&&c.inputmask._valueGet()===w().join("")&&c.inputmask._valueSet("")}function W(a){var b=this,c=b.inputmask._valueGet();g.showMaskOnFocus&&(!g.showMaskOnHover||g.showMaskOnHover&&""===c)?b.inputmask._valueGet()!==x().join("")&&H(b,x(),E(o())):na===!1&&L(b,E(o())),g.positionCaretOnTab===!0&&setTimeout(function(){
          +L(b,E(o()))},0),ea=x().join("")}function X(a){var b=this;if(na=!1,g.clearMaskOnLostFocus&&document.activeElement!==b){var c=x().slice(),d=b.inputmask._valueGet();d!==b.getAttribute("placeholder")&&""!==d&&(-1===o()&&d===w().join("")?c=[]:N(c),H(b,c))}}function Y(b){function c(b){if(g.radixFocus&&""!==g.radixPoint){var c=m().validPositions;if(void 0===c[b]||c[b].input===I(b)){if(b<E(-1))return!0;var d=a.inArray(g.radixPoint,x());if(-1!==d){for(var e in c)if(e>d&&c[e].input!==I(e))return!1;return!0}}}return!1}var d=this;setTimeout(function(){if(document.activeElement===d){var b=L(d);if(b.begin===b.end)if(c(b.begin))L(d,g.numericInput?E(a.inArray(g.radixPoint,x())):a.inArray(g.radixPoint,x()));else{var e=b.begin,f=o(e,!0),h=E(f);if(h>e)L(d,C(e)||C(e-1)?e:E(e));else{var i=I(h);(""!==i&&x()[h]!==i||!C(h,!0)&&s(h).def===i)&&(h=E(h)),L(d,h)}}}},0)}function Z(a){var b=this;setTimeout(function(){L(b,0,E(o()))},0)}function $(c){var d=this,e=a(d),f=L(d),h=c.originalEvent||c,i=window.clipboardData||h.clipboardData,j=ja?x().slice(f.end,f.begin):x().slice(f.begin,f.end);i.setData("text",ja?j.reverse().join(""):j.join("")),document.execCommand&&document.execCommand("copy"),Q(d,b.keyCode.DELETE,f),H(d,x(),m().p,c,ea!==x().join("")),d.inputmask._valueGet()===w().join("")&&e.trigger("cleared"),g.showTooltip&&(d.title=g.tooltip||m().mask)}function _(b){var c=a(this),d=this;if(d.inputmask){var e=d.inputmask._valueGet(),f=x().slice();ea!==f.join("")&&setTimeout(function(){c.trigger("change"),ea=f.join("")},0),""!==e&&(g.clearMaskOnLostFocus&&(-1===o()&&e===w().join("")?f=[]:N(f)),O(f)===!1&&(setTimeout(function(){c.trigger("incomplete")},0),g.clearIncomplete&&(n(),f=g.clearMaskOnLostFocus?[]:w().slice())),H(d,f,void 0,b))}}function aa(a){var b=this;na=!0,document.activeElement!==b&&g.showMaskOnHover&&b.inputmask._valueGet()!==x().join("")&&H(b,x())}function ba(a){ea!==x().join("")&&ga.trigger("change"),g.clearMaskOnLostFocus&&-1===o()&&fa.inputmask._valueGet&&fa.inputmask._valueGet()===w().join("")&&fa.inputmask._valueSet(""),g.removeMaskOnSubmit&&(fa.inputmask._valueSet(fa.inputmask.unmaskedvalue(),!0),setTimeout(function(){H(fa,x())},0))}function ca(a){setTimeout(function(){ga.trigger("setvalue")},0)}function da(b){if(fa=b,ga=a(fa),g.showTooltip&&(fa.title=g.tooltip||m().mask),("rtl"===fa.dir||g.rightAlign)&&(fa.style.textAlign="right"),("rtl"===fa.dir||g.numericInput)&&(fa.dir="ltr",fa.removeAttribute("dir"),fa.inputmask.isRTL=!0,ja=!0),oa.off(fa),P(fa),d(fa,g)&&(oa.on(fa,"submit",ba),oa.on(fa,"reset",ca),oa.on(fa,"mouseenter",aa),oa.on(fa,"blur",_),oa.on(fa,"focus",W),oa.on(fa,"mouseleave",X),oa.on(fa,"click",Y),oa.on(fa,"dblclick",Z),oa.on(fa,"paste",T),oa.on(fa,"dragdrop",T),oa.on(fa,"drop",T),oa.on(fa,"cut",$),oa.on(fa,"complete",g.oncomplete),oa.on(fa,"incomplete",g.onincomplete),oa.on(fa,"cleared",g.oncleared),oa.on(fa,"keydown",R),oa.on(fa,"keypress",S),oa.on(fa,"input",U)),oa.on(fa,"setvalue",V),""!==fa.inputmask._valueGet()||g.clearMaskOnLostFocus===!1||document.activeElement===fa){var c=a.isFunction(g.onBeforeMask)?g.onBeforeMask(fa.inputmask._valueGet(),g)||fa.inputmask._valueGet():fa.inputmask._valueGet();J(fa,!0,!1,c.split(""));var e=x().slice();ea=e.join(""),O(e)===!1&&g.clearIncomplete&&n(),g.clearMaskOnLostFocus&&document.activeElement!==fa&&(-1===o()?e=[]:N(e)),H(fa,e),document.activeElement===fa&&L(fa,E(o()))}}var ea,fa,ga,ha,ia,ja=!1,ka=!1,la=!1,ma=!1,na=!0,oa={on:function(c,d,e){var f=function(c){if(void 0===this.inputmask&&"FORM"!==this.nodeName){var d=a.data(this,"_inputmask_opts");d?new b(d).mask(this):oa.off(this)}else{if("setvalue"===c.type||!(this.disabled||this.readOnly&&!("keydown"===c.type&&c.ctrlKey&&67===c.keyCode||g.tabThrough===!1&&c.keyCode===b.keyCode.TAB))){switch(c.type){case"input":if(la===!0)return la=!1,c.preventDefault();break;case"keydown":ka=!1,la=!1;break;case"keypress":if(ka===!0)return c.preventDefault();ka=!0;break;case"click":if(k){var f=this;return setTimeout(function(){e.apply(f,arguments)},0),!1}}var h=e.apply(this,arguments);return h===!1&&(c.preventDefault(),c.stopPropagation()),h}c.preventDefault()}};c.inputmask.events[d]=c.inputmask.events[d]||[],c.inputmask.events[d].push(f),-1!==a.inArray(d,["submit","reset"])?null!=c.form&&a(c.form).on(d,f):a(c).on(d,f)},off:function(b,c){if(b.inputmask&&b.inputmask.events){var d;c?(d=[],d[c]=b.inputmask.events[c]):d=b.inputmask.events,a.each(d,function(c,d){for(;d.length>0;){var e=d.pop();-1!==a.inArray(c,["submit","reset"])?null!=b.form&&a(b.form).off(c,e):a(b).off(c,e)}delete b.inputmask.events[c]})}}};if(void 0!==e)switch(e.action){case"isComplete":return fa=e.el,O(x());case"unmaskedvalue":return fa=e.el,void 0!==fa&&void 0!==fa.inputmask?(f=fa.inputmask.maskset,g=fa.inputmask.opts,ja=fa.inputmask.isRTL):(ia=e.value,g.numericInput&&(ja=!0),ia=(a.isFunction(g.onBeforeMask)?g.onBeforeMask(ia,g)||ia:ia).split(""),J(void 0,!1,!1,ja?ia.reverse():ia),a.isFunction(g.onBeforeWrite)&&g.onBeforeWrite(void 0,x(),0,g)),K(fa);case"mask":fa=e.el,f=fa.inputmask.maskset,g=fa.inputmask.opts,ja=fa.inputmask.isRTL,ea=x().join(""),da(fa);break;case"format":return g.numericInput&&(ja=!0),ia=(a.isFunction(g.onBeforeMask)?g.onBeforeMask(e.value,g)||e.value:e.value).split(""),J(void 0,!1,!1,ja?ia.reverse():ia),a.isFunction(g.onBeforeWrite)&&g.onBeforeWrite(void 0,x(),0,g),e.metadata?{value:ja?x().slice().reverse().join(""):x().join(""),metadata:h({action:"getmetadata"},f,g)}:ja?x().slice().reverse().join(""):x().join("");case"isValid":g.numericInput&&(ja=!0),e.value?(ia=e.value.split(""),J(void 0,!1,!0,ja?ia.reverse():ia)):e.value=x().join("");for(var pa=x(),qa=M(),ra=pa.length-1;ra>qa&&!C(ra);ra--);return pa.splice(qa,ra+1-qa),O(pa)&&e.value===x().join("");case"getemptymask":return w().join("");case"remove":fa=e.el,ga=a(fa),f=fa.inputmask.maskset,g=fa.inputmask.opts,fa.inputmask._valueSet(K(fa)),oa.off(fa);var sa;Object.getOwnPropertyDescriptor&&Object.getPrototypeOf?(sa=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fa),"value"),sa&&fa.inputmask.__valueGet&&Object.defineProperty(fa,"value",{get:fa.inputmask.__valueGet,set:fa.inputmask.__valueSet,configurable:!0})):document.__lookupGetter__&&fa.__lookupGetter__("value")&&fa.inputmask.__valueGet&&(fa.__defineGetter__("value",fa.inputmask.__valueGet),fa.__defineSetter__("value",fa.inputmask.__valueSet)),fa.inputmask=void 0;break;case"getmetadata":if(a.isArray(f.metadata)){for(var ta,ua=o(void 0,!0),va=ua;va>=0;va--)if(m().validPositions[va]&&void 0!==m().validPositions[va].alternation){ta=m().validPositions[va].alternation;break}return void 0!==ta?f.metadata[m().validPositions[va].locator[ta]]:[]}return f.metadata}}b.prototype={defaults:{placeholder:"_",optionalmarker:{start:"[",end:"]"},quantifiermarker:{start:"{",end:"}"},groupmarker:{start:"(",end:")"},alternatormarker:"|",escapeChar:"\\",mask:null,oncomplete:a.noop,onincomplete:a.noop,oncleared:a.noop,repeat:0,greedy:!0,autoUnmask:!1,removeMaskOnSubmit:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},alias:null,onKeyDown:a.noop,onBeforeMask:null,onBeforePaste:function(b,c){return a.isFunction(c.onBeforeMask)?c.onBeforeMask(b,c):b},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:a.noop,skipOptionalPartCharacter:" ",showTooltip:!1,tooltip:void 0,numericInput:!1,rightAlign:!1,undoOnEscape:!0,radixPoint:"",radixPointDefinitionSymbol:void 0,groupSeparator:"",radixFocus:!1,nojumps:!1,nojumpsThreshold:0,keepStatic:null,positionCaretOnTab:!1,tabThrough:!1,supportsInputType:["text","tel","password"],definitions:{9:{validator:"[0-9]",cardinality:1,definitionSymbol:"*"},a:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,definitionSymbol:"*"},"*":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1}},ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],isComplete:null,canClearPosition:a.noop,postValidation:null,staticDefinitionSymbol:void 0,jitMasking:!1,nullable:!0},masksCache:{},mask:function(c){var d=this;return"string"==typeof c&&(c=document.getElementById(c)||document.querySelectorAll(c)),c=c.nodeName?[c]:c,a.each(c,function(c,e){var i=a.extend(!0,{},d.opts);f(e,i,a.extend(!0,{},d.userOptions));var j=g(i,d.noMasksCache);void 0!==j&&(void 0!==e.inputmask&&e.inputmask.remove(),e.inputmask=new b,e.inputmask.opts=i,e.inputmask.noMasksCache=d.noMasksCache,e.inputmask.userOptions=a.extend(!0,{},d.userOptions),e.inputmask.el=e,e.inputmask.maskset=j,e.inputmask.isRTL=!1,a.data(e,"_inputmask_opts",i),h({action:"mask",el:e}))}),c&&c[0]?c[0].inputmask||this:this},option:function(b,c){return"string"==typeof b?this.opts[b]:"object"==typeof b?(a.extend(this.userOptions,b),this.el&&c!==!0&&this.mask(this.el),this):void 0},unmaskedvalue:function(a){return h({action:"unmaskedvalue",el:this.el,value:a},this.el&&this.el.inputmask?this.el.inputmask.maskset:g(this.opts,this.noMasksCache),this.opts)},remove:function(){return this.el?(h({action:"remove",el:this.el}),this.el.inputmask=void 0,this.el):void 0},getemptymask:function(){return h({action:"getemptymask"},this.maskset||g(this.opts,this.noMasksCache),this.opts)},hasMaskedValue:function(){return!this.opts.autoUnmask},isComplete:function(){return h({action:"isComplete",el:this.el},this.maskset||g(this.opts,this.noMasksCache),this.opts)},getmetadata:function(){return h({action:"getmetadata"},this.maskset||g(this.opts,this.noMasksCache),this.opts)},isValid:function(a){return h({action:"isValid",value:a},this.maskset||g(this.opts,this.noMasksCache),this.opts)},format:function(a,b){return h({action:"format",value:a,metadata:b},this.maskset||g(this.opts,this.noMasksCache),this.opts)}},b.extendDefaults=function(c){a.extend(!0,b.prototype.defaults,c)},b.extendDefinitions=function(c){a.extend(!0,b.prototype.defaults.definitions,c)},b.extendAliases=function(c){a.extend(!0,b.prototype.defaults.aliases,c)},b.format=function(a,c,d){return b(c).format(a,d)},b.unmask=function(a,c){return b(c).unmaskedvalue(a)},b.isValid=function(a,c){return b(c).isValid(a)},b.remove=function(b){a.each(b,function(a,b){b.inputmask&&b.inputmask.remove()})},b.escapeRegex=function(a){var b=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return a.replace(new RegExp("(\\"+b.join("|\\")+")","gim"),"\\$1")},b.keyCode={ALT:18,BACKSPACE:8,BACKSPACE_SAFARI:127,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91,X:88};var i=navigator.userAgent,j=/mobile/i.test(i),k=/iemobile/i.test(i),l=/iphone/i.test(i)&&!k;/android.*safari.*/i.test(i)&&!k;return window.Inputmask=b,b}(jQuery),function(a,b){return void 0===a.fn.inputmask&&(a.fn.inputmask=function(c,d){var e,f=this[0];if(void 0===d&&(d={}),"string"==typeof c)switch(c){case"unmaskedvalue":return f&&f.inputmask?f.inputmask.unmaskedvalue():a(f).val();case"remove":return this.each(function(){this.inputmask&&this.inputmask.remove()});case"getemptymask":return f&&f.inputmask?f.inputmask.getemptymask():"";case"hasMaskedValue":return f&&f.inputmask?f.inputmask.hasMaskedValue():!1;case"isComplete":return f&&f.inputmask?f.inputmask.isComplete():!0;case"getmetadata":return f&&f.inputmask?f.inputmask.getmetadata():void 0;case"setvalue":a(f).val(d),f&&void 0!==f.inputmask&&a(f).triggerHandler("setvalue");break;case"option":if("string"!=typeof d)return this.each(function(){return void 0!==this.inputmask?this.inputmask.option(d):void 0});if(f&&void 0!==f.inputmask)return f.inputmask.option(d);break;default:return d.alias=c,e=new b(d),this.each(function(){e.mask(this)})}else{if("object"==typeof c)return e=new b(c),void 0===c.mask&&void 0===c.alias?this.each(function(){return void 0!==this.inputmask?this.inputmask.option(c):void e.mask(this)}):this.each(function(){e.mask(this)});if(void 0===c)return this.each(function(){e=new b(d),e.mask(this)})}}),a.fn.inputmask}(jQuery,Inputmask),function(a,b){return b.extendDefinitions({h:{validator:"[01][0-9]|2[0-3]",cardinality:2,prevalidator:[{validator:"[0-2]",cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:"[0-5]",cardinality:1}]},d:{validator:"0[1-9]|[12][0-9]|3[01]",cardinality:2,prevalidator:[{validator:"[0-3]",cardinality:1}]},m:{validator:"0[1-9]|1[012]",cardinality:2,prevalidator:[{validator:"[01]",cardinality:1}]},y:{validator:"(19|20)\\d{2}",cardinality:4,prevalidator:[{validator:"[12]",cardinality:1},{validator:"(19|20)",cardinality:2},{validator:"(19|20)\\d",cardinality:3}]}}),b.extendAliases({"dd/mm/yyyy":{mask:"1/2/y",placeholder:"dd/mm/yyyy",regex:{val1pre:new RegExp("[0-3]"),val1:new RegExp("0[1-9]|[12][0-9]|3[01]"),val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|[12][0-9]|3[01])"+c+"[01])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|[12][0-9])"+c+"(0[1-9]|1[012]))|(30"+c+"(0[13-9]|1[012]))|(31"+c+"(0[13578]|1[02]))")}},leapday:"29/02/",separator:"/",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(a,b,c){if(isNaN(a))return!1;var d=parseInt(a.concat(b.toString().slice(a.length))),e=parseInt(a.concat(c.toString().slice(a.length)));return(isNaN(d)?!1:d>=b&&c>=d)||(isNaN(e)?!1:e>=b&&c>=e)},determinebaseyear:function(a,b,c){var d=(new Date).getFullYear();if(a>d)return a;if(d>b){for(var e=b.toString().slice(0,2),f=b.toString().slice(2,4);e+c>b;)e--;var g=e+f;return a>g?a:g}if(d>=a&&b>=d){for(var h=d.toString().slice(0,2);h+c>b;)h--;var i=h+c;return a>i?a:i}return d},onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val(h.getDate().toString()+(h.getMonth()+1).toString()+h.getFullYear().toString()),g.trigger("setvalue")}},getFrontValue:function(a,b,c){for(var d=0,e=0,f=0;f<a.length&&"2"!==a.charAt(f);f++){var g=c.definitions[a.charAt(f)];g?(d+=e,e=g.cardinality):e++}return b.join("").substr(d,e)},definitions:{1:{validator:function(a,b,c,d,e){var f=e.regex.val1.test(a);return d||f||a.charAt(1)!==e.separator&&-1==="-./".indexOf(a.charAt(1))||!(f=e.regex.val1.test("0"+a.charAt(0)))?f:(b.buffer[c-1]="0",{refreshFromBuffer:{start:c-1,end:c},pos:c,c:a.charAt(0)})},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=a;isNaN(b.buffer[c+1])||(f+=b.buffer[c+1]);var g=1===f.length?e.regex.val1pre.test(f):e.regex.val1.test(f);if(!d&&!g){if(g=e.regex.val1.test(a+"0"))return b.buffer[c]=a,b.buffer[++c]="0",{pos:c,c:"0"};if(g=e.regex.val1.test("0"+a))return b.buffer[c]="0",c++,{pos:c}}return g},cardinality:1}]},2:{validator:function(a,b,c,d,e){var f=e.getFrontValue(b.mask,b.buffer,e);-1!==f.indexOf(e.placeholder[0])&&(f="01"+e.separator);var g=e.regex.val2(e.separator).test(f+a);if(!d&&!g&&(a.charAt(1)===e.separator||-1!=="-./".indexOf(a.charAt(1)))&&(g=e.regex.val2(e.separator).test(f+"0"+a.charAt(0))))return b.buffer[c-1]="0",{refreshFromBuffer:{start:c-1,end:c},pos:c,c:a.charAt(0)};if(e.mask.indexOf("2")===e.mask.length-1&&g){var h=b.buffer.join("").substr(4,4)+a;if(h!==e.leapday)return!0;var i=parseInt(b.buffer.join("").substr(0,4),10);return i%4===0?i%100===0?i%400===0?!0:!1:!0:!1}return g},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){isNaN(b.buffer[c+1])||(a+=b.buffer[c+1]);var f=e.getFrontValue(b.mask,b.buffer,e);-1!==f.indexOf(e.placeholder[0])&&(f="01"+e.separator);var g=1===a.length?e.regex.val2pre(e.separator).test(f+a):e.regex.val2(e.separator).test(f+a);return d||g||!(g=e.regex.val2(e.separator).test(f+"0"+a))?g:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},y:{validator:function(a,b,c,d,e){if(e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear)){var f=b.buffer.join("").substr(0,6);if(f!==e.leapday)return!0;var g=parseInt(a,10);return g%4===0?g%100===0?g%400===0?!0:!1:!0:!1}return!1},cardinality:4,prevalidator:[{validator:function(a,b,c,d,e){var f=e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear);if(!d&&!f){var g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a+"0").toString().slice(0,1);if(f=e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(0),{pos:c};if(g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a+"0").toString().slice(0,2),f=e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(0),b.buffer[c++]=g.charAt(1),{pos:c}}return f},cardinality:1},{validator:function(a,b,c,d,e){var f=e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear);if(!d&&!f){var g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a).toString().slice(0,2);if(f=e.isInYearRange(a[0]+g[1]+a[1],e.yearrange.minyear,e.yearrange.maxyear))return b.buffer[c++]=g.charAt(1),{pos:c};if(g=e.determinebaseyear(e.yearrange.minyear,e.yearrange.maxyear,a).toString().slice(0,2),e.isInYearRange(g+a,e.yearrange.minyear,e.yearrange.maxyear)){var h=b.buffer.join("").substr(0,6);if(h!==e.leapday)f=!0;else{var i=parseInt(a,10);f=i%4===0?i%100===0?i%400===0?!0:!1:!0:!1}}else f=!1;if(f)return b.buffer[c-1]=g.charAt(0),b.buffer[c++]=g.charAt(1),b.buffer[c++]=a.charAt(0),{refreshFromBuffer:{start:c-3,end:c},pos:c}}return f},cardinality:2},{validator:function(a,b,c,d,e){return e.isInYearRange(a,e.yearrange.minyear,e.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},"mm/dd/yyyy":{placeholder:"mm/dd/yyyy",alias:"dd/mm/yyyy",regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val((h.getMonth()+1).toString()+h.getDate().toString()+h.getFullYear().toString()),g.trigger("setvalue")}}},"yyyy/mm/dd":{mask:"y/1/2",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",leapday:"/02/29",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val(h.getFullYear().toString()+(h.getMonth()+1).toString()+h.getDate().toString()),g.trigger("setvalue")}}},"dd.mm.yyyy":{mask:"1.2.y",placeholder:"dd.mm.yyyy",leapday:"29.02.",separator:".",alias:"dd/mm/yyyy"},"dd-mm-yyyy":{mask:"1-2-y",placeholder:"dd-mm-yyyy",leapday:"29-02-",separator:"-",alias:"dd/mm/yyyy"},"mm.dd.yyyy":{mask:"1.2.y",placeholder:"mm.dd.yyyy",leapday:"02.29.",separator:".",alias:"mm/dd/yyyy"},"mm-dd-yyyy":{mask:"1-2-y",placeholder:"mm-dd-yyyy",leapday:"02-29-",separator:"-",alias:"mm/dd/yyyy"},"yyyy.mm.dd":{mask:"y.1.2",placeholder:"yyyy.mm.dd",leapday:".02.29",separator:".",alias:"yyyy/mm/dd"},"yyyy-mm-dd":{mask:"y-1-2",placeholder:"yyyy-mm-dd",leapday:"-02-29",separator:"-",alias:"yyyy/mm/dd"},datetime:{mask:"1/2/y h:s",placeholder:"dd/mm/yyyy hh:mm",alias:"dd/mm/yyyy",regex:{hrspre:new RegExp("[012]"),hrs24:new RegExp("2[0-4]|1[3-9]"),hrs:new RegExp("[01][0-9]|2[0-4]"),ampm:new RegExp("^[a|p|A|P][m|M]"),mspre:new RegExp("[0-5]"),ms:new RegExp("[0-5][0-9]")},timeseparator:":",hourFormat:"24",definitions:{h:{validator:function(a,b,c,d,e){if("24"===e.hourFormat&&24===parseInt(a,10))return b.buffer[c-1]="0",b.buffer[c]="0",{refreshFromBuffer:{start:c-1,end:c},c:"0"};var f=e.regex.hrs.test(a);if(!d&&!f&&(a.charAt(1)===e.timeseparator||-1!=="-.:".indexOf(a.charAt(1)))&&(f=e.regex.hrs.test("0"+a.charAt(0))))return b.buffer[c-1]="0",b.buffer[c]=a.charAt(0),c++,{refreshFromBuffer:{start:c-2,end:c},pos:c,c:e.timeseparator};if(f&&"24"!==e.hourFormat&&e.regex.hrs24.test(a)){var g=parseInt(a,10);return 24===g?(b.buffer[c+5]="a",b.buffer[c+6]="m"):(b.buffer[c+5]="p",b.buffer[c+6]="m"),g-=12,10>g?(b.buffer[c]=g.toString(),b.buffer[c-1]="0"):(b.buffer[c]=g.toString().charAt(1),b.buffer[c-1]=g.toString().charAt(0)),{refreshFromBuffer:{start:c-1,end:c+6},c:b.buffer[c]}}return f},cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=e.regex.hrspre.test(a);return d||f||!(f=e.regex.hrs.test("0"+a))?f:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:function(a,b,c,d,e){var f=e.regex.mspre.test(a);return d||f||!(f=e.regex.ms.test("0"+a))?f:(b.buffer[c]="0",c++,{pos:c})},cardinality:1}]},t:{validator:function(a,b,c,d,e){return e.regex.ampm.test(a+"m")},casing:"lower",cardinality:1}},insertMode:!1,autoUnmask:!1},datetime12:{mask:"1/2/y h:s t\\m",placeholder:"dd/mm/yyyy hh:mm xm",alias:"datetime",hourFormat:"12"},"mm/dd/yyyy hh:mm xm":{mask:"1/2/y h:s t\\m",placeholder:"mm/dd/yyyy hh:mm xm",alias:"datetime12",regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey&&c.keyCode===b.keyCode.RIGHT){var h=new Date;g.val((h.getMonth()+1).toString()+h.getDate().toString()+h.getFullYear().toString()),g.trigger("setvalue")}}},"hh:mm t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"h:s t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"hh:mm:ss":{mask:"h:s:s",placeholder:"hh:mm:ss",alias:"datetime",autoUnmask:!1},"hh:mm":{mask:"h:s",placeholder:"hh:mm",alias:"datetime",autoUnmask:!1},date:{alias:"dd/mm/yyyy"},"mm/yyyy":{mask:"1/y",placeholder:"mm/yyyy",leapday:"donotuse",separator:"/",alias:"mm/dd/yyyy"},shamsi:{regex:{val2pre:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"[0-3])")},val2:function(a){var c=b.escapeRegex.call(this,a);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])"+c+"30)|((0[1-6])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},yearrange:{minyear:1300,maxyear:1499},mask:"y/1/2",leapday:"/12/30",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",clearIncomplete:!0}}),b}(jQuery,Inputmask),function(a,b){return b.extendDefinitions({A:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"&":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"#":{validator:"[0-9A-Fa-f]",cardinality:1,casing:"upper"}}),b.extendAliases({url:{definitions:{i:{validator:".",cardinality:1}},mask:"(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",insertMode:!1,autoUnmask:!1},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(a,b,c,d,e){return c-1>-1&&"."!==b.buffer[c-1]?(a=b.buffer[c-1]+a,a=c-2>-1&&"."!==b.buffer[c-2]?b.buffer[c-2]+a:"0"+a):a="00"+a,new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(a)},cardinality:1}},onUnMask:function(a,b,c){return a}},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:!1,onBeforePaste:function(a,b){return a=a.toLowerCase(),a.replace("mailto:","")},definitions:{"*":{validator:"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",cardinality:1,casing:"lower"},"-":{validator:"[0-9A-Za-z-]",cardinality:1,casing:"lower"}},onUnMask:function(a,b,c){return a}},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",cardinality:1,casing:"upper"}},clearIncomplete:!0,autoUnmask:!0}}),b}(jQuery,Inputmask),function(a,b){return b.extendAliases({numeric:{mask:function(a){function c(b){for(var c="",d=0;d<b.length;d++)c+=a.definitions[b.charAt(d)]||a.optionalmarker.start===b.charAt(d)||a.optionalmarker.end===b.charAt(d)||a.quantifiermarker.start===b.charAt(d)||a.quantifiermarker.end===b.charAt(d)||a.groupmarker.start===b.charAt(d)||a.groupmarker.end===b.charAt(d)||a.alternatormarker===b.charAt(d)?"\\"+b.charAt(d):b.charAt(d);return c}if(0!==a.repeat&&isNaN(a.integerDigits)&&(a.integerDigits=a.repeat),a.repeat=0,a.groupSeparator===a.radixPoint&&("."===a.radixPoint?a.groupSeparator=",":","===a.radixPoint?a.groupSeparator=".":a.groupSeparator="")," "===a.groupSeparator&&(a.skipOptionalPartCharacter=void 0),a.autoGroup=a.autoGroup&&""!==a.groupSeparator,a.autoGroup&&("string"==typeof a.groupSize&&isFinite(a.groupSize)&&(a.groupSize=parseInt(a.groupSize)),isFinite(a.integerDigits))){var d=Math.floor(a.integerDigits/a.groupSize),e=a.integerDigits%a.groupSize;a.integerDigits=parseInt(a.integerDigits)+(0===e?d-1:d),a.integerDigits<1&&(a.integerDigits="*")}a.placeholder.length>1&&(a.placeholder=a.placeholder.charAt(0)),a.radixFocus=a.radixFocus&&""!==a.placeholder&&a.integerOptional===!0,a.definitions[";"]=a.definitions["~"],a.definitions[";"].definitionSymbol="~",a.numericInput===!0&&(a.radixFocus=!1,a.digitsOptional=!1,isNaN(a.digits)&&(a.digits=2),a.decimalProtect=!1);var f=c(a.prefix);return f+="[+]",f+=a.integerOptional===!0?"~{1,"+a.integerDigits+"}":"~{"+a.integerDigits+"}",void 0!==a.digits&&(isNaN(a.digits)||parseInt(a.digits)>0)&&(a.decimalProtect&&(a.radixPointDefinitionSymbol=":"),f+=a.digitsOptional?"["+(a.decimalProtect?":":a.radixPoint)+";{1,"+a.digits+"}]":(a.decimalProtect?":":a.radixPoint)+";{"+a.digits+"}"),f+="[-]",f+=c(a.suffix),a.greedy=!1,null!==a.min&&(a.min=a.min.toString().replace(new RegExp(b.escapeRegex(a.groupSeparator),"g"),""),","===a.radixPoint&&(a.min=a.min.replace(a.radixPoint,"."))),null!==a.max&&(a.max=a.max.toString().replace(new RegExp(b.escapeRegex(a.groupSeparator),"g"),""),","===a.radixPoint&&(a.max=a.max.replace(a.radixPoint,"."))),f},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,radixPoint:".",radixFocus:!0,groupSize:3,groupSeparator:"",autoGroup:!1,allowPlus:!0,allowMinus:!0,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:!0,prefix:"",suffix:"",rightAlign:!0,decimalProtect:!0,min:null,max:null,step:1,insertMode:!0,autoUnmask:!1,unmaskAsNumber:!1,postFormat:function(c,d,e){e.numericInput===!0&&(c=c.reverse(),isFinite(d)&&(d=c.join("").length-d-1));var f,g,h=!1;c.length>=e.suffix.length&&c.join("").indexOf(e.suffix)===c.length-e.suffix.length&&(c.length=c.length-e.suffix.length,h=!0),d=d>=c.length?c.length-1:d<e.prefix.length?e.prefix.length:d;var i=!1,j=c[d],k=c.slice();j===e.groupSeparator&&(k.splice(d--,1),j=k[d]),j!==e.radixPoint&&j!==e.negationSymbol.front&&j!==e.negationSymbol.back&&(k[d]="?");var l=k.join(""),m=l;if(l.length>0&&e.autoGroup||-1!==l.indexOf(e.groupSeparator)){var n=b.escapeRegex(e.groupSeparator);i=0===l.indexOf(e.groupSeparator),l=l.replace(new RegExp(n,"g"),"");var o=l.split(e.radixPoint);if(l=""===e.radixPoint?l:o[0],l!==e.prefix+"?0"&&l.length>=e.groupSize+e.prefix.length)for(var p=new RegExp("([-+]?[\\d?]+)([\\d?]{"+e.groupSize+"})");p.test(l)&&""!==e.groupSeparator;)l=l.replace(p,"$1"+e.groupSeparator+"$2"),l=l.replace(e.groupSeparator+e.groupSeparator,e.groupSeparator);""!==e.radixPoint&&o.length>1&&(l+=e.radixPoint+o[1])}for(i=m!==l,c.length=l.length,f=0,g=l.length;g>f;f++)c[f]=l.charAt(f);var q=a.inArray("?",c);if(-1===q&&(q=a.inArray(j,c)),c[q]=j,!i&&h)for(f=0,g=e.suffix.length;g>f;f++)c.push(e.suffix.charAt(f));return q=e.numericInput&&isFinite(d)?c.join("").length-q-1:q,e.numericInput&&(c=c.reverse(),a.inArray(e.radixPoint,c)<q&&c.join("").length-e.suffix.length!==q&&(q-=1)),{pos:q,refreshFromBuffer:i,buffer:c}},onBeforeWrite:function(c,d,e,f){var g;if(c&&("blur"===c.type||"checkval"===c.type||"keydown"===c.type)){var h=f.numericInput?d.slice().reverse().join(""):d.join(""),i=h.replace(f.prefix,"");i=i.replace(f.suffix,""),i=i.replace(new RegExp(b.escapeRegex(f.groupSeparator),"g"),""),","===f.radixPoint&&(i=i.replace(f.radixPoint,"."));var j=i.match(new RegExp("[-"+b.escapeRegex(f.negationSymbol.front)+"]","g"));if(j=null!==j&&1===j.length,i=i.replace(new RegExp("[-"+b.escapeRegex(f.negationSymbol.front)+"]","g"),""),i=i.replace(new RegExp(b.escapeRegex(f.negationSymbol.back)+"$"),""),isNaN(f.placeholder)&&(i=i.replace(new RegExp(b.escapeRegex(f.placeholder),"g"),"")),i=i===f.negationSymbol.front?i+"0":i,""!==i&&isFinite(i)){var k=parseFloat(i),l=j?-1*k:k;if(null!==f.min&&isFinite(f.min)&&l<parseFloat(f.min)?(k=Math.abs(f.min),j=f.min<0,h=void 0):null!==f.max&&isFinite(f.max)&&l>parseFloat(f.max)&&(k=Math.abs(f.max),j=f.max<0,h=void 0),i=k.toString().replace(".",f.radixPoint).split(""),isFinite(f.digits)){var m=a.inArray(f.radixPoint,i),n=a.inArray(f.radixPoint,h);-1===m&&(i.push(f.radixPoint),m=i.length-1);for(var o=1;o<=f.digits;o++)f.digitsOptional||void 0!==i[m+o]&&i[m+o]!==f.placeholder.charAt(0)?-1!==n&&void 0!==h[n+o]&&(i[m+o]=i[m+o]||h[n+o]):i[m+o]="0";i[i.length-1]===f.radixPoint&&delete i[i.length-1]}if(k.toString()!==i&&k.toString()+"."!==i||j)return!j||0===k&&"blur"===c.type||(i.unshift(f.negationSymbol.front),i.push(f.negationSymbol.back)),i=(f.prefix+i.join("")).split(""),f.numericInput&&(i=i.reverse()),g=f.postFormat(i,f.numericInput?e:e-1,f),g.buffer&&(g.refreshFromBuffer=g.buffer.join("")!==d.join("")),g}}return f.autoGroup?(g=f.postFormat(d,f.numericInput?e:e-1,f),g.caret=e<=f.prefix.length?g.pos:g.pos+1,g):void 0},regex:{integerPart:function(a){return new RegExp("["+b.escapeRegex(a.negationSymbol.front)+"+]?\\d+")},integerNPart:function(a){return new RegExp("[\\d"+b.escapeRegex(a.groupSeparator)+b.escapeRegex(a.placeholder.charAt(0))+"]+")}},signHandler:function(a,b,c,d,e){if(!d&&e.allowMinus&&"-"===a||e.allowPlus&&"+"===a){var f=b.buffer.join("").match(e.regex.integerPart(e));if(f&&f[0].length>0)return b.buffer[f.index]===("-"===a?"+":e.negationSymbol.front)?"-"===a?""!==e.negationSymbol.back?{pos:f.index,c:e.negationSymbol.front,remove:f.index,caret:c,insert:{pos:b.buffer.length-e.suffix.length-1,c:e.negationSymbol.back}}:{pos:f.index,c:e.negationSymbol.front,remove:f.index,caret:c}:""!==e.negationSymbol.back?{pos:f.index,c:"+",remove:[f.index,b.buffer.length-e.suffix.length-1],caret:c}:{pos:f.index,c:"+",remove:f.index,caret:c}:b.buffer[f.index]===("-"===a?e.negationSymbol.front:"+")?"-"===a&&""!==e.negationSymbol.back?{remove:[f.index,b.buffer.length-e.suffix.length-1],caret:c-1}:{remove:f.index,caret:c-1}:"-"===a?""!==e.negationSymbol.back?{pos:f.index,c:e.negationSymbol.front,caret:c+1,insert:{pos:b.buffer.length-e.suffix.length,c:e.negationSymbol.back}}:{pos:f.index,c:e.negationSymbol.front,caret:c+1}:{pos:f.index,c:a,caret:c+1}}return!1},radixHandler:function(b,c,d,e,f){if(!e&&f.numericInput!==!0&&b===f.radixPoint&&void 0!==f.digits&&(isNaN(f.digits)||parseInt(f.digits)>0)){var g=a.inArray(f.radixPoint,c.buffer),h=c.buffer.join("").match(f.regex.integerPart(f));if(-1!==g&&c.validPositions[g])return c.validPositions[g-1]?{caret:g+1}:{pos:h.index,c:h[0],caret:g+1};if(!h||"0"===h[0]&&h.index+1!==d)return c.buffer[h?h.index:d]="0",{pos:(h?h.index:d)+1,c:f.radixPoint}}return!1},leadingZeroHandler:function(b,c,d,e,f,g){if(!e)if(f.numericInput===!0){var h=c.buffer.slice("").reverse(),i=h[f.prefix.length];if("0"===i&&void 0===c.validPositions[d-1])return{pos:d,remove:h.length-f.prefix.length-1}}else{var j=a.inArray(f.radixPoint,c.buffer),k=c.buffer.slice(0,-1!==j?j:void 0).join("").match(f.regex.integerNPart(f));if(k&&(-1===j||j>=d)){var l=-1===j?0:parseInt(c.buffer.slice(j+1).join(""));if(0===k[0].indexOf(""!==f.placeholder?f.placeholder.charAt(0):"0")&&(k.index+1===d||g!==!0&&0===l))return c.buffer.splice(k.index,1),{pos:k.index,remove:k.index};if("0"===b&&d<=k.index&&k[0]!==f.groupSeparator)return!1}}return!0},definitions:{"~":{validator:function(c,d,e,f,g,h){var i=g.signHandler(c,d,e,f,g);if(!i&&(i=g.radixHandler(c,d,e,f,g),!i&&(i=f?new RegExp("[0-9"+b.escapeRegex(g.groupSeparator)+"]").test(c):new RegExp("[0-9]").test(c),i===!0&&(i=g.leadingZeroHandler(c,d,e,f,g,h),i===!0)))){var j=a.inArray(g.radixPoint,d.buffer);i=-1!==j&&(g.digitsOptional===!1||d.validPositions[e])&&g.numericInput!==!0&&e>j&&!f?{
          +pos:e,remove:e}:{pos:e}}return i},cardinality:1},"+":{validator:function(a,b,c,d,e){var f=e.signHandler(a,b,c,d,e);return!f&&(d&&e.allowMinus&&a===e.negationSymbol.front||e.allowMinus&&"-"===a||e.allowPlus&&"+"===a)&&(f=d||"-"!==a?!0:""!==e.negationSymbol.back?{pos:c,c:"-"===a?e.negationSymbol.front:"+",caret:c+1,insert:{pos:b.buffer.length,c:e.negationSymbol.back}}:{pos:c,c:"-"===a?e.negationSymbol.front:"+",caret:c+1}),f},cardinality:1,placeholder:""},"-":{validator:function(a,b,c,d,e){var f=e.signHandler(a,b,c,d,e);return!f&&d&&e.allowMinus&&a===e.negationSymbol.back&&(f=!0),f},cardinality:1,placeholder:""},":":{validator:function(a,c,d,e,f){var g=f.signHandler(a,c,d,e,f);if(!g){var h="["+b.escapeRegex(f.radixPoint)+"]";g=new RegExp(h).test(a),g&&c.validPositions[d]&&c.validPositions[d].match.placeholder===f.radixPoint&&(g={caret:d+1})}return g?{c:f.radixPoint}:g},cardinality:1,placeholder:function(a){return a.radixPoint}}},onUnMask:function(a,c,d){var e=a.replace(d.prefix,"");return e=e.replace(d.suffix,""),e=e.replace(new RegExp(b.escapeRegex(d.groupSeparator),"g"),""),d.unmaskAsNumber?(""!==d.radixPoint&&-1!==e.indexOf(d.radixPoint)&&(e=e.replace(b.escapeRegex.call(this,d.radixPoint),".")),Number(e)):e},isComplete:function(a,c){var d=a.join(""),e=a.slice();if(c.postFormat(e,0,c),e.join("")!==d)return!1;var f=d.replace(c.prefix,"");return f=f.replace(c.suffix,""),f=f.replace(new RegExp(b.escapeRegex(c.groupSeparator),"g"),""),","===c.radixPoint&&(f=f.replace(b.escapeRegex(c.radixPoint),".")),isFinite(f)},onBeforeMask:function(a,c){if(""!==c.radixPoint&&isFinite(a))a=a.toString().replace(".",c.radixPoint);else{var d=a.match(/,/g),e=a.match(/\./g);e&&d?e.length>d.length?(a=a.replace(/\./g,""),a=a.replace(",",c.radixPoint)):d.length>e.length?(a=a.replace(/,/g,""),a=a.replace(".",c.radixPoint)):a=a.indexOf(".")<a.indexOf(",")?a.replace(/\./g,""):a=a.replace(/,/g,""):a=a.replace(new RegExp(b.escapeRegex(c.groupSeparator),"g"),"")}if(0===c.digits&&(-1!==a.indexOf(".")?a=a.substring(0,a.indexOf(".")):-1!==a.indexOf(",")&&(a=a.substring(0,a.indexOf(",")))),""!==c.radixPoint&&isFinite(c.digits)&&-1!==a.indexOf(c.radixPoint)){var f=a.split(c.radixPoint),g=f[1].match(new RegExp("\\d*"))[0];if(parseInt(c.digits)<g.toString().length){var h=Math.pow(10,parseInt(c.digits));a=a.replace(b.escapeRegex(c.radixPoint),"."),a=Math.round(parseFloat(a)*h)/h,a=a.toString().replace(".",c.radixPoint)}}return a.toString()},canClearPosition:function(a,b,c,d,e){var f=a.validPositions[b].input,g=f!==e.radixPoint||null!==a.validPositions[b].match.fn&&e.decimalProtect===!1||isFinite(f)||b===c||f===e.groupSeparator||f===e.negationSymbol.front||f===e.negationSymbol.back;return g},onKeyDown:function(c,d,e,f){var g=a(this);if(c.ctrlKey)switch(c.keyCode){case b.keyCode.UP:g.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(f.step)),g.trigger("setvalue");break;case b.keyCode.DOWN:g.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(f.step)),g.trigger("setvalue")}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:!0,digits:2,digitsOptional:!1,clearMaskOnLostFocus:!1},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,radixPoint:".",placeholder:"0",autoGroup:!1,min:0,max:100,suffix:" %",allowPlus:!1,allowMinus:!1}}),b}(jQuery,Inputmask),function(a,b){return b.extendAliases({phone:{url:"phone-codes/phone-codes.js",countrycode:"",phoneCodeCache:{},mask:function(b){if(void 0===b.phoneCodeCache[b.url]){var c=[];b.definitions["#"]=b.definitions[9],a.ajax({url:b.url,async:!1,type:"get",dataType:"json",success:function(a){c=a},error:function(a,c,d){alert(d+" - "+b.url)}}),b.phoneCodeCache[b.url]=c.sort(function(a,b){return(a.mask||a)<(b.mask||b)?-1:1})}return b.phoneCodeCache[b.url]},keepStatic:!1,nojumps:!0,nojumpsThreshold:1,onBeforeMask:function(a,b){var c=a.replace(/^0{1,2}/,"").replace(/[\s]/g,"");return(c.indexOf(b.countrycode)>1||-1===c.indexOf(b.countrycode))&&(c="+"+b.countrycode+c),c}},phonebe:{alias:"phone",url:"phone-codes/phone-be.js",countrycode:"32",nojumpsThreshold:4}}),b}(jQuery,Inputmask),function(a,b){return b.extendAliases({Regex:{mask:"r",greedy:!1,repeat:"*",regex:null,regexTokens:null,tokenizer:/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,quantifierFilter:/[0-9]+[^,]/,isComplete:function(a,b){return new RegExp(b.regex).test(a.join(""))},definitions:{r:{validator:function(b,c,d,e,f){function g(a,b){this.matches=[],this.isGroup=a||!1,this.isQuantifier=b||!1,this.quantifier={min:1,max:1},this.repeaterPart=void 0}function h(){var a,b,c=new g,d=[];for(f.regexTokens=[];a=f.tokenizer.exec(f.regex);)switch(b=a[0],b.charAt(0)){case"(":d.push(new g(!0));break;case")":k=d.pop(),d.length>0?d[d.length-1].matches.push(k):c.matches.push(k);break;case"{":case"+":case"*":var e=new g(!1,!0);b=b.replace(/[{}]/g,"");var h=b.split(","),i=isNaN(h[0])?h[0]:parseInt(h[0]),j=1===h.length?i:isNaN(h[1])?h[1]:parseInt(h[1]);if(e.quantifier={min:i,max:j},d.length>0){var l=d[d.length-1].matches;a=l.pop(),a.isGroup||(k=new g(!0),k.matches.push(a),a=k),l.push(a),l.push(e)}else a=c.matches.pop(),a.isGroup||(k=new g(!0),k.matches.push(a),a=k),c.matches.push(a),c.matches.push(e);break;default:d.length>0?d[d.length-1].matches.push(b):c.matches.push(b)}c.matches.length>0&&f.regexTokens.push(c)}function i(b,c){var d=!1;c&&(m+="(",o++);for(var e=0;e<b.matches.length;e++){var f=b.matches[e];if(f.isGroup===!0)d=i(f,!0);else if(f.isQuantifier===!0){var g=a.inArray(f,b.matches),h=b.matches[g-1],k=m;if(isNaN(f.quantifier.max)){for(;f.repeaterPart&&f.repeaterPart!==m&&f.repeaterPart.length>m.length&&!(d=i(h,!0)););d=d||i(h,!0),d&&(f.repeaterPart=m),m=k+f.quantifier.max}else{for(var l=0,n=f.quantifier.max-1;n>l&&!(d=i(h,!0));l++);m=k+"{"+f.quantifier.min+","+f.quantifier.max+"}"}}else if(void 0!==f.matches)for(var p=0;p<f.length&&!(d=i(f[p],c));p++);else{var q;if("["==f.charAt(0)){q=m,q+=f;for(var r=0;o>r;r++)q+=")";var s=new RegExp("^("+q+")$");d=s.test(j)}else for(var t=0,u=f.length;u>t;t++)if("\\"!==f.charAt(t)){q=m,q+=f.substr(0,t+1),q=q.replace(/\|$/,"");for(var r=0;o>r;r++)q+=")";var s=new RegExp("^("+q+")$");if(d=s.test(j))break}m+=f}if(d)break}return c&&(m+=")",o--),d}var j,k,l=c.buffer.slice(),m="",n=!1,o=0;null===f.regexTokens&&h(),l.splice(d,0,b),j=l.join("");for(var p=0;p<f.regexTokens.length;p++){var q=f.regexTokens[p];if(n=i(q,q.isGroup))break}return n},cardinality:1}}}}),b}(jQuery,Inputmask);
          \ No newline at end of file
          diff --git a/public/theme/jquery.inputmask/extra/bindings/inputmask.binding.js b/public/theme/jquery.inputmask/extra/bindings/inputmask.binding.js
          new file mode 100644
          index 0000000..18c425d
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/bindings/inputmask.binding.js
          @@ -0,0 +1,32 @@
          +/*
          +Input Mask plugin binding
          +http://github.com/RobinHerbots/jquery.inputmask
          +Copyright (c) 2010 -  Robin Herbots
          +Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          +*/
          +(function(factory) {
          +		if (typeof define === "function" && define.amd) {
          +			define(["jquery", "inputmask"], factory);
          +		} else if (typeof exports === "object") {
          +			module.exports = factory(require("jquery"), require("./inputmask"));
          +		} else {
          +			factory(jQuery, window.Inputmask);
          +		}
          +	}
          +	(function($, Inputmask) {
          +		$(document).ajaxComplete(function(event, xmlHttpRequest, ajaxOptions) {
          +			if ($.inArray("html", ajaxOptions.dataTypes) !== -1) {
          +				$(":input").each(function(ndx, lmnt) {
          +					if (lmnt.inputmask === undefined) {
          +						Inputmask().mask(lmnt);
          +					}
          +				});
          +			}
          +		}).ready(function() {
          +			$(":input").each(function(ndx, lmnt) {
          +				if (lmnt.inputmask === undefined) {
          +					Inputmask().mask(lmnt);
          +				}
          +			});
          +		});
          +	}));
          diff --git a/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.jqlite.js b/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.jqlite.js
          new file mode 100644
          index 0000000..1c132fc
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.jqlite.js
          @@ -0,0 +1,227 @@
          +/*
          + Input Mask plugin dependencyLib
          + http://github.com/RobinHerbots/jquery.inputmask
          + Copyright (c) 2010 -  Robin Herbots
          + Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          + */
          +(function (factory) {
          +	if (typeof define === "function" && define.amd) {
          +		define(["jqlite"], factory);
          +	} else if (typeof exports === "object") {
          +		module.exports = factory(require("jqlite"));
          +	} else {
          +		factory(jQuery);
          +	}
          +}
          +(function ($) {
          +	// Use a stripped-down indexOf as it's faster than native
          +	// http://jsperf.com/thor-indexof-vs-for/5
          +	function indexOf(list, elem) {
          +		var i = 0,
          +			len = list.length;
          +		for (; i < len; i++) {
          +			if (list[i] === elem) {
          +				return i;
          +			}
          +		}
          +		return -1;
          +	}
          +
          +	var class2type = {},
          +		classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
          +	for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
          +		class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
          +	}
          +
          +	function type(obj) {
          +		if (obj == null) {
          +			return obj + "";
          +		}
          +		// Support: Android<4.0, iOS<6 (functionish RegExp)
          +		return typeof obj === "object" || typeof obj === "function" ?
          +		class2type[class2type.toString.call(obj)] || "object" :
          +			typeof obj;
          +	}
          +
          +	function isWindow(obj) {
          +		return obj != null && obj === obj.window;
          +	}
          +
          +	function isArraylike(obj) {
          +		// Support: iOS 8.2 (not reproducible in simulator)
          +		// `in` check used to prevent JIT error (gh-2145)
          +		// hasOwn isn't used here due to false negatives
          +		// regarding Nodelist length in IE
          +		var length = "length" in obj && obj.length,
          +			ltype = type(obj);
          +
          +		if (ltype === "function" || isWindow(obj)) {
          +			return false;
          +		}
          +
          +		if (obj.nodeType === 1 && length) {
          +			return true;
          +		}
          +
          +		return ltype === "array" || length === 0 ||
          +			typeof length === "number" && length > 0 && (length - 1) in obj;
          +	}
          +
          +	$.inArray = function (elem, arr, i) {
          +		return arr == null ? -1 : indexOf(arr, elem, i);
          +	};
          +	$.isFunction = function (obj) {
          +		return type(obj) === "function";
          +	};
          +	$.isArray = Array.isArray;
          +	$.isPlainObject = function (obj) {
          +		// Not plain objects:
          +		// - Any object or value whose internal [[Class]] property is not "[object Object]"
          +		// - DOM nodes
          +		// - window
          +		if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
          +			return false;
          +		}
          +
          +		if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
          +			return false;
          +		}
          +
          +		// If the function hasn't returned already, we're confident that
          +		// |obj| is a plain object, created by {} or constructed with new Object
          +		return true;
          +	};
          +	$.extend = function () {
          +		var options, name, src, copy, copyIsArray, clone,
          +			target = arguments[0] || {},
          +			i = 1,
          +			length = arguments.length,
          +			deep = false;
          +
          +		// Handle a deep copy situation
          +		if (typeof target === "boolean") {
          +			deep = target;
          +
          +			// Skip the boolean and the target
          +			target = arguments[i] || {};
          +			i++;
          +		}
          +
          +		// Handle case when target is a string or something (possible in deep copy)
          +		if (typeof target !== "object" && !$.isFunction(target)) {
          +			target = {};
          +		}
          +
          +		// Extend jQuery itself if only one argument is passed
          +		if (i === length) {
          +			target = this;
          +			i--;
          +		}
          +
          +		for (; i < length; i++) {
          +			// Only deal with non-null/undefined values
          +			if ((options = arguments[i]) != null) {
          +				// Extend the base object
          +				for (name in options) {
          +					src = target[name];
          +					copy = options[name];
          +
          +					// Prevent never-ending loop
          +					if (target === copy) {
          +						continue;
          +					}
          +
          +					// Recurse if we're merging plain objects or arrays
          +					if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
          +						if (copyIsArray) {
          +							copyIsArray = false;
          +							clone = src && $.isArray(src) ? src : [];
          +
          +						} else {
          +							clone = src && $.isPlainObject(src) ? src : {};
          +						}
          +
          +						// Never move original objects, clone them
          +						target[name] = $.extend(deep, clone, copy);
          +
          +						// Don't bring in undefined values
          +					} else if (copy !== undefined) {
          +						target[name] = copy;
          +					}
          +				}
          +			}
          +		}
          +
          +		// Return the modified object
          +		return target;
          +	};
          +	$.each = function (obj, callback) {
          +		var value, i = 0;
          +
          +		if (isArraylike(obj)) {
          +			for (var length = obj.length; i < length; i++) {
          +				value = callback.call(obj[i], i, obj[i]);
          +				if (value === false) {
          +					break;
          +				}
          +			}
          +		} else {
          +			for (i in obj) {
          +				value = callback.call(obj[i], i, obj[i]);
          +				if (value === false) {
          +					break;
          +				}
          +			}
          +		}
          +
          +		return obj;
          +	};
          +	$.map = function (elems, callback) {
          +		var value,
          +			i = 0,
          +			length = elems.length,
          +			isArray = isArraylike(elems),
          +			ret = [];
          +
          +		// Go through the array, translating each of the items to their new values
          +		if (isArray) {
          +			for (; i < length; i++) {
          +				value = callback(elems[i], i);
          +
          +				if (value != null) {
          +					ret.push(value);
          +				}
          +			}
          +
          +			// Go through every key on the object,
          +		} else {
          +			for (i in elems) {
          +				value = callback(elems[i], i);
          +
          +				if (value != null) {
          +					ret.push(value);
          +				}
          +			}
          +		}
          +
          +		// Flatten any nested arrays
          +		return [].concat(ret);
          +	};
          +	$.data = function (elem, name, data) {
          +		return $(elem).data(name, data);
          +	};
          +	$.Event = $.Event || function CustomEvent(event, params) {
          +			params = params || {
          +					bubbles: false,
          +					cancelable: false,
          +					detail: undefined
          +				};
          +			var evt = document.createEvent("CustomEvent");
          +			evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
          +			return evt;
          +		};
          +	$.Event.prototype = window.Event.prototype;
          +
          +	window.dependencyLib = $;
          +	return $;
          +}));
          diff --git a/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.js b/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.js
          new file mode 100644
          index 0000000..a606f4f
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/dependencyLibs/inputmask.dependencyLib.js
          @@ -0,0 +1,424 @@
          +/*
          + Input Mask plugin dependencyLib
          + http://github.com/RobinHerbots/jquery.inputmask
          + Copyright (c) 2010 -  Robin Herbots
          + Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
          + */
          +(function (factory) {
          +	if (typeof define === "function" && define.amd) {
          +		define(factory);
          +	} else if (typeof exports === "object") {
          +		module.exports = factory();
          +	} else {
          +		factory();
          +	}
          +}
          +(function () {
          +
          +	//helper functions
          +
          +	// Use a stripped-down indexOf as it's faster than native
          +	// http://jsperf.com/thor-indexof-vs-for/5
          +	function indexOf(list, elem) {
          +		var i = 0,
          +			len = list.length;
          +		for (; i < len; i++) {
          +			if (list[i] === elem) {
          +				return i;
          +			}
          +		}
          +		return -1;
          +	}
          +
          +	var class2type = {},
          +		classTypes = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
          +	for (var nameNdx = 0; nameNdx < classTypes.length; nameNdx++) {
          +		class2type["[object " + classTypes[nameNdx] + "]"] = classTypes[nameNdx].toLowerCase();
          +	}
          +
          +	function type(obj) {
          +		if (obj == null) {
          +			return obj + "";
          +		}
          +		// Support: Android<4.0, iOS<6 (functionish RegExp)
          +		return typeof obj === "object" || typeof obj === "function" ?
          +		class2type[class2type.toString.call(obj)] || "object" :
          +			typeof obj;
          +	}
          +
          +	function isWindow(obj) {
          +		return obj != null && obj === obj.window;
          +	}
          +
          +	function isArraylike(obj) {
          +		// Support: iOS 8.2 (not reproducible in simulator)
          +		// `in` check used to prevent JIT error (gh-2145)
          +		// hasOwn isn't used here due to false negatives
          +		// regarding Nodelist length in IE
          +		var length = "length" in obj && obj.length,
          +			ltype = type(obj);
          +
          +		if (ltype === "function" || isWindow(obj)) {
          +			return false;
          +		}
          +
          +		if (obj.nodeType === 1 && length) {
          +			return true;
          +		}
          +
          +		return ltype === "array" || length === 0 ||
          +			typeof length === "number" && length > 0 && (length - 1) in obj;
          +	}
          +
          +	function isValidElement(elem) {
          +		return elem instanceof Element;
          +	}
          +
          +	function DependencyLib(elem) {
          +		if (elem instanceof DependencyLib) {
          +			return elem;
          +		}
          +		if (!(this instanceof DependencyLib)) {
          +			return new DependencyLib(elem);
          +		}
          +		if (elem !== undefined && elem !== null && elem !== window) {
          +			this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
          +			if (this[0] !== undefined && this[0] !== null) {
          +				this[0].eventRegistry = this[0].eventRegistry || {};
          +			}
          +		}
          +	}
          +
          +	DependencyLib.prototype = {
          +		on: function (events, handler) {
          +			if (isValidElement(this[0])) {
          +				var eventRegistry = this[0].eventRegistry,
          +					elem = this[0];
          +
          +				function addEvent(ev, namespace) {
          +					//register domevent
          +					if (elem.addEventListener) { // all browsers except IE before version 9
          +						elem.addEventListener(ev, handler, false);
          +					} else if (elem.attachEvent) { // IE before version 9
          +						elem.attachEvent("on" + ev, handler);
          +					}
          +					eventRegistry[ev] = eventRegistry[ev] || {};
          +					eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
          +					eventRegistry[ev][namespace].push(handler);
          +				}
          +
          +				var _events = events.split(" ");
          +				for (var endx = 0; endx < _events.length; endx++) {
          +					var nsEvent = _events[endx].split("."),
          +						ev = nsEvent[0],
          +						namespace = nsEvent[1] || "global";
          +					addEvent(ev, namespace);
          +				}
          +			}
          +			return this;
          +		},
          +		off: function (events, handler) {
          +			if (isValidElement(this[0])) {
          +				var eventRegistry = this[0].eventRegistry,
          +					elem = this[0];
          +
          +				function removeEvent(ev, namespace, handler) {
          +					if (ev in eventRegistry === true) {
          +						//unbind to dom events
          +						if (elem.removeEventListener) { // all browsers except IE before version 9
          +							elem.removeEventListener(ev, handler, false);
          +						} else if (elem.detachEvent) { // IE before version 9
          +							elem.detachEvent("on" + ev, handler);
          +						}
          +						if (namespace === "global") {
          +							for (var nmsp in eventRegistry[ev]) {
          +								eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
          +							}
          +						} else {
          +							eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
          +						}
          +					}
          +				}
          +
          +				function resolveNamespace(ev, namespace) {
          +					var evts = [],
          +						hndx, hndL;
          +					if (ev.length > 0) {
          +						if (handler === undefined) {
          +							for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
          +								evts.push({
          +									ev: ev,
          +									namespace: namespace && namespace.length > 0 ? namespace : "global",
          +									handler: eventRegistry[ev][namespace][hndx]
          +								});
          +							}
          +						} else {
          +							evts.push({
          +								ev: ev,
          +								namespace: namespace && namespace.length > 0 ? namespace : "global",
          +								handler: handler
          +							});
          +						}
          +					} else if (namespace.length > 0) {
          +						for (var evNdx in eventRegistry) {
          +							for (var nmsp in eventRegistry[evNdx]) {
          +								if (nmsp === namespace) {
          +									if (handler === undefined) {
          +										for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
          +											evts.push({
          +												ev: evNdx,
          +												namespace: nmsp,
          +												handler: eventRegistry[evNdx][nmsp][hndx]
          +											});
          +										}
          +									} else {
          +										evts.push({
          +											ev: evNdx,
          +											namespace: nmsp,
          +											handler: handler
          +										});
          +									}
          +								}
          +							}
          +						}
          +					}
          +
          +					return evts;
          +				}
          +
          +				var _events = events.split(" ");
          +				for (var endx = 0; endx < _events.length; endx++) {
          +					var nsEvent = _events[endx].split("."),
          +						offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);
          +					for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {
          +						removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);
          +					}
          +				}
          +			}
          +			return this;
          +		},
          +		trigger: function (events /* , args... */) {
          +			if (isValidElement(this[0])) {
          +				var eventRegistry = this[0].eventRegistry,
          +					elem = this[0];
          +				var _events = typeof events === "string" ? events.split(" ") : [events.type];
          +				for (var endx = 0; endx < _events.length; endx++) {
          +					var nsEvent = _events[endx].split("."),
          +						ev = nsEvent[0],
          +						namespace = nsEvent[1] || "global";
          +					if (document !== undefined && namespace === "global") {
          +						//trigger domevent
          +						var evnt, i, params = {
          +							bubbles: false,
          +							cancelable: true,
          +							detail: Array.prototype.slice.call(arguments, 1)
          +						};
          +						// The custom event that will be created
          +						if (document.createEvent) {
          +							try {
          +								evnt = new CustomEvent(ev, params);
          +							} catch (e) {
          +								evnt = document.createEvent("CustomEvent");
          +								evnt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
          +							}
          +							if (events.type) DependencyLib.extend(evnt, events);
          +							elem.dispatchEvent(evnt);
          +						} else {
          +							evnt = document.createEventObject();
          +							evnt.eventType = ev;
          +							if (events.type) DependencyLib.extend(evnt, events);
          +							elem.fireEvent("on" + evnt.eventType, evnt);
          +						}
          +					} else if (eventRegistry[ev] !== undefined) {
          +						arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
          +						if (namespace === "global") {
          +							for (var nmsp in eventRegistry[ev]) {
          +								for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {
          +									eventRegistry[ev][nmsp][i].apply(elem, arguments);
          +								}
          +							}
          +						} else {
          +							for (i = 0; i < eventRegistry[ev][namespace].length; i++) {
          +								eventRegistry[ev][namespace][i].apply(elem, arguments);
          +							}
          +						}
          +					}
          +				}
          +			}
          +			return this;
          +		}
          +	};
          +
          +	//static
          +	DependencyLib.isFunction = function (obj) {
          +		return type(obj) === "function";
          +	};
          +	DependencyLib.noop = function () {
          +	};
          +	DependencyLib.isArray = Array.isArray;
          +	DependencyLib.inArray = function (elem, arr, i) {
          +		return arr == null ? -1 : indexOf(arr, elem, i);
          +	};
          +	DependencyLib.valHooks = undefined;
          +
          +
          +	DependencyLib.isPlainObject = function (obj) {
          +		// Not plain objects:
          +		// - Any object or value whose internal [[Class]] property is not "[object Object]"
          +		// - DOM nodes
          +		// - window
          +		if (type(obj) !== "object" || obj.nodeType || isWindow(obj)) {
          +			return false;
          +		}
          +
          +		if (obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
          +			return false;
          +		}
          +
          +		// If the function hasn't returned already, we're confident that
          +		// |obj| is a plain object, created by {} or constructed with new Object
          +		return true;
          +	};
          +
          +	DependencyLib.extend = function () {
          +		var options, name, src, copy, copyIsArray, clone,
          +			target = arguments[0] || {},
          +			i = 1,
          +			length = arguments.length,
          +			deep = false;
          +
          +		// Handle a deep copy situation
          +		if (typeof target === "boolean") {
          +			deep = target;
          +
          +			// Skip the boolean and the target
          +			target = arguments[i] || {};
          +			i++;
          +		}
          +
          +		// Handle case when target is a string or something (possible in deep copy)
          +		if (typeof target !== "object" && !DependencyLib.isFunction(target)) {
          +			target = {};
          +		}
          +
          +		// Extend jQuery itself if only one argument is passed
          +		if (i === length) {
          +			target = this;
          +			i--;
          +		}
          +
          +		for (; i < length; i++) {
          +			// Only deal with non-null/undefined values
          +			if ((options = arguments[i]) != null) {
          +				// Extend the base object
          +				for (name in options) {
          +					src = target[name];
          +					copy = options[name];
          +
          +					// Prevent never-ending loop
          +					if (target === copy) {
          +						continue;
          +					}
          +
          +					// Recurse if we're merging plain objects or arrays
          +					if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {
          +						if (copyIsArray) {
          +							copyIsArray = false;
          +							clone = src && DependencyLib.isArray(src) ? src : [];
          +
          +						} else {
          +							clone = src && DependencyLib.isPlainObject(src) ? src : {};
          +						}
          +
          +						// Never move original objects, clone them
          +						target[name] = DependencyLib.extend(deep, clone, copy);
          +
          +						// Don't bring in undefined values
          +					} else if (copy !== undefined) {
          +						target[name] = copy;
          +					}
          +				}
          +			}
          +		}
          +
          +		// Return the modified object
          +		return target;
          +	};
          +
          +	DependencyLib.each = function (obj, callback) {
          +		var value, i = 0;
          +
          +		if (isArraylike(obj)) {
          +			for (var length = obj.length; i < length; i++) {
          +				value = callback.call(obj[i], i, obj[i]);
          +				if (value === false) {
          +					break;
          +				}
          +			}
          +		} else {
          +			for (i in obj) {
          +				value = callback.call(obj[i], i, obj[i]);
          +				if (value === false) {
          +					break;
          +				}
          +			}
          +		}
          +
          +		return obj;
          +	};
          +	DependencyLib.map = function (elems, callback) {
          +		var value,
          +			i = 0,
          +			length = elems.length,
          +			isArray = isArraylike(elems),
          +			ret = [];
          +
          +		// Go through the array, translating each of the items to their new values
          +		if (isArray) {
          +			for (; i < length; i++) {
          +				value = callback(elems[i], i);
          +
          +				if (value != null) {
          +					ret.push(value);
          +				}
          +			}
          +
          +			// Go through every key on the object,
          +		} else {
          +			for (i in elems) {
          +				value = callback(elems[i], i);
          +
          +				if (value != null) {
          +					ret.push(value);
          +				}
          +			}
          +		}
          +
          +		// Flatten any nested arrays
          +		return [].concat(ret);
          +	};
          +
          +	DependencyLib.data = function (owner, key, value) {
          +		if (value === undefined) {
          +			return owner.__data ? owner.__data[key] : null;
          +		} else {
          +			owner.__data = owner.__data || {};
          +			owner.__data[key] = value;
          +		}
          +	};
          +
          +	DependencyLib.Event = function CustomEvent(event, params) {
          +		params = params || {
          +				bubbles: false,
          +				cancelable: false,
          +				detail: undefined
          +			};
          +		var evt = document.createEvent("CustomEvent");
          +		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
          +		return evt;
          +	}
          +	DependencyLib.Event.prototype = window.Event.prototype;
          +
          +	window.dependencyLib = DependencyLib;
          +	return DependencyLib;
          +}));
          diff --git a/public/theme/jquery.inputmask/extra/phone-codes/phone-be.js b/public/theme/jquery.inputmask/extra/phone-codes/phone-be.js
          new file mode 100644
          index 0000000..1ddb4b6
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/phone-codes/phone-be.js
          @@ -0,0 +1,47 @@
          +[
          +	{"mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)"},
          +	{"mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)"},
          +	{"mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon"},
          +	{"mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath"},
          +	{"mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)"},
          +	{"mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)"},
          +	{"mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi"},
          +	{"mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay"},
          +	{"mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney"},
          +	{"mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde"},
          +	{"mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest"},
          +	{"mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant"},
          +	{"mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy"},
          +	{"mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk"},
          +	{"mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)"},
          +	{"mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt"},
          +	{"mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals"},
          +	{"mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)"},
          +	{"mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière"},
          +	{"mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)"},
          +	{"mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont"},
          +	{"mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)"},
          +	{"mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)"},
          +	{"mask": "+32(46#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
          +	{"mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
          +	{"mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
          +	{"mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones"},
          +	{"mask": "+32(461)8#-##-##", "cc": "BE", "cd": "Belgium", "city": "GSM-R (NMBS)"},
          +	{"mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)"},
          +	{"mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)"},
          +	{"mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)"},
          +	{"mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove"},
          +	{"mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)"},
          +	{"mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)"},
          +	{"mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)"},
          +	{"mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse"},
          +	{"mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot"},
          +	{"mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)"},
          +	{"mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai"},
          +	{"mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout"},
          +	{"mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers"},
          +	{"mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne"},
          +	{"mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme"},
          +	{"mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)"},
          +	{"mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge"}
          +]
          diff --git a/public/theme/jquery.inputmask/extra/phone-codes/phone-codes.js b/public/theme/jquery.inputmask/extra/phone-codes/phone-codes.js
          new file mode 100644
          index 0000000..c6fb1d4
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/phone-codes/phone-codes.js
          @@ -0,0 +1,294 @@
          +[
          +	{ "mask": "+247-####", "cc": "AC", "cd": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" },
          +	{ "mask": "+376-###-###", "cc": "AD", "cd": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" },
          +	{ "mask": "+971-5#-###-####", "cc": "AE", "cd": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" },
          +	{ "mask": "+971-#-###-####", "cc": "AE", "cd": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" },
          +	{ "mask": "+93-##-###-####", "cc": "AF", "cd": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" },
          +	{ "mask": "+1(268)###-####", "cc": "AG", "cd": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" },
          +	{ "mask": "+1(264)###-####", "cc": "AI", "cd": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" },
          +	{ "mask": "+355(###)###-###", "cc": "AL", "cd": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" },
          +	{ "mask": "+374-##-###-###", "cc": "AM", "cd": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" },
          +	{ "mask": "+599-###-####", "cc": "AN", "cd": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" },
          +	{ "mask": "+599-###-####", "cc": "AN", "cd": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" },
          +	{ "mask": "+599-9###-####", "cc": "AN", "cd": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" },
          +	{ "mask": "+244(###)###-###", "cc": "AO", "cd": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" },
          +	{ "mask": "+672-1##-###", "cc": "AQ", "cd": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" },
          +	{ "mask": "+54(###)###-####", "cc": "AR", "cd": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" },
          +	{ "mask": "+1(684)###-####", "cc": "AS", "cd": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" },
          +	{ "mask": "+43(###)###-####", "cc": "AT", "cd": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" },
          +	{ "mask": "+61-#-####-####", "cc": "AU", "cd": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" },
          +	{ "mask": "+297-###-####", "cc": "AW", "cd": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" },
          +	{ "mask": "+994-##-###-##-##", "cc": "AZ", "cd": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" },
          +	{ "mask": "+387-##-#####", "cc": "BA", "cd": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
          +	{ "mask": "+387-##-####", "cc": "BA", "cd": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
          +	{ "mask": "+1(246)###-####", "cc": "BB", "cd": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" },
          +	{ "mask": "+880-##-###-###", "cc": "BD", "cd": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" },
          +	{ "mask": "+32(###)###-###", "cc": "BE", "cd": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" },
          +	{ "mask": "+226-##-##-####", "cc": "BF", "cd": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" },
          +	{ "mask": "+359(###)###-###", "cc": "BG", "cd": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" },
          +	{ "mask": "+973-####-####", "cc": "BH", "cd": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" },
          +	{ "mask": "+257-##-##-####", "cc": "BI", "cd": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" },
          +	{ "mask": "+229-##-##-####", "cc": "BJ", "cd": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" },
          +	{ "mask": "+1(441)###-####", "cc": "BM", "cd": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" },
          +	{ "mask": "+673-###-####", "cc": "BN", "cd": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" },
          +	{ "mask": "+591-#-###-####", "cc": "BO", "cd": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" },
          +	{ "mask": "+55-##-####[#]-####", "cc": "BR", "cd": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" },
          +	{ "mask": "+1(242)###-####", "cc": "BS", "cd": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" },
          +	{ "mask": "+975-17-###-###", "cc": "BT", "cd": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
          +	{ "mask": "+975-#-###-###", "cc": "BT", "cd": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
          +	{ "mask": "+267-##-###-###", "cc": "BW", "cd": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" },
          +	{ "mask": "+375(##)###-##-##", "cc": "BY", "cd": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" },
          +	{ "mask": "+501-###-####", "cc": "BZ", "cd": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" },
          +	{ "mask": "+243(###)###-###", "cc": "CD", "cd": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" },
          +	{ "mask": "+236-##-##-####", "cc": "CF", "cd": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" },
          +	{ "mask": "+242-##-###-####", "cc": "CG", "cd": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" },
          +	{ "mask": "+41-##-###-####", "cc": "CH", "cd": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" },
          +	{ "mask": "+225-##-###-###", "cc": "CI", "cd": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" },
          +	{ "mask": "+682-##-###", "cc": "CK", "cd": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" },
          +	{ "mask": "+56-#-####-####", "cc": "CL", "cd": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" },
          +	{ "mask": "+237-####-####", "cc": "CM", "cd": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" },
          +	{ "mask": "+86(###)####-####", "cc": "CN", "cd": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
          +	{ "mask": "+86(###)####-###", "cc": "CN", "cd": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
          +	{ "mask": "+86-##-#####-#####", "cc": "CN", "cd": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
          +	{ "mask": "+57(###)###-####", "cc": "CO", "cd": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" },
          +	{ "mask": "+506-####-####", "cc": "CR", "cd": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" },
          +	{ "mask": "+53-#-###-####", "cc": "CU", "cd": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" },
          +	{ "mask": "+238(###)##-##", "cc": "CV", "cd": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" },
          +	{ "mask": "+599-###-####", "cc": "CW", "cd": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" },
          +	{ "mask": "+357-##-###-###", "cc": "CY", "cd": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" },
          +	{ "mask": "+420(###)###-###", "cc": "CZ", "cd": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" },
          +	{ "mask": "+49(####)###-####", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+49(###)###-####", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+49(###)##-####", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+49(###)##-###", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+49(###)##-##", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+49-###-###", "cc": "DE", "cd": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
          +	{ "mask": "+253-##-##-##-##", "cc": "DJ", "cd": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" },
          +	{ "mask": "+45-##-##-##-##", "cc": "DK", "cd": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" },
          +	{ "mask": "+1(767)###-####", "cc": "DM", "cd": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" },
          +	{ "mask": "+1(809)###-####", "cc": "DO", "cd": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
          +	{ "mask": "+1(829)###-####", "cc": "DO", "cd": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
          +	{ "mask": "+1(849)###-####", "cc": "DO", "cd": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
          +	{ "mask": "+213-##-###-####", "cc": "DZ", "cd": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" },
          +	{ "mask": "+593-##-###-####", "cc": "EC", "cd": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" },
          +	{ "mask": "+593-#-###-####", "cc": "EC", "cd": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" },
          +	{ "mask": "+372-####-####", "cc": "EE", "cd": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" },
          +	{ "mask": "+372-###-####", "cc": "EE", "cd": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" },
          +	{ "mask": "+20(###)###-####", "cc": "EG", "cd": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" },
          +	{ "mask": "+291-#-###-###", "cc": "ER", "cd": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" },
          +	{ "mask": "+34(###)###-###", "cc": "ES", "cd": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" },
          +	{ "mask": "+251-##-###-####", "cc": "ET", "cd": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" },
          +	{ "mask": "+358(###)###-##-##", "cc": "FI", "cd": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" },
          +	{ "mask": "+679-##-#####", "cc": "FJ", "cd": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" },
          +	{ "mask": "+500-#####", "cc": "FK", "cd": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" },
          +	{ "mask": "+691-###-####", "cc": "FM", "cd": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" },
          +	{ "mask": "+298-###-###", "cc": "FO", "cd": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" },
          +	{ "mask": "+262-#####-####", "cc": "FR", "cd": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" },
          +	{ "mask": "+33(###)###-###", "cc": "FR", "cd": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" },
          +	{ "mask": "+508-##-####", "cc": "FR", "cd": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" },
          +	{ "mask": "+590(###)###-###", "cc": "FR", "cd": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" },
          +	{ "mask": "+241-#-##-##-##", "cc": "GA", "cd": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" },
          +	{ "mask": "+1(473)###-####", "cc": "GD", "cd": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" },
          +	{ "mask": "+995(###)###-###", "cc": "GE", "cd": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" },
          +	{ "mask": "+594-#####-####", "cc": "GF", "cd": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" },
          +	{ "mask": "+233(###)###-###", "cc": "GH", "cd": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" },
          +	{ "mask": "+350-###-#####", "cc": "GI", "cd": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" },
          +	{ "mask": "+299-##-##-##", "cc": "GL", "cd": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" },
          +	{ "mask": "+220(###)##-##", "cc": "GM", "cd": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" },
          +	{ "mask": "+224-##-###-###", "cc": "GN", "cd": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" },
          +	{ "mask": "+240-##-###-####", "cc": "GQ", "cd": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" },
          +	{ "mask": "+30(###)###-####", "cc": "GR", "cd": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" },
          +	{ "mask": "+502-#-###-####", "cc": "GT", "cd": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" },
          +	{ "mask": "+1(671)###-####", "cc": "GU", "cd": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" },
          +	{ "mask": "+245-#-######", "cc": "GW", "cd": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" },
          +	{ "mask": "+592-###-####", "cc": "GY", "cd": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" },
          +	{ "mask": "+852-####-####", "cc": "HK", "cd": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" },
          +	{ "mask": "+504-####-####", "cc": "HN", "cd": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" },
          +	{ "mask": "+385-##-###-###", "cc": "HR", "cd": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
          +	{ "mask": "+509-##-##-####", "cc": "HT", "cd": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" },
          +	{ "mask": "+36(###)###-###", "cc": "HU", "cd": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" },
          +	{ "mask": "+62(8##)###-####", "cc": "ID", "cd": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
          +	{ "mask": "+62-##-###-##", "cc": "ID", "cd": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
          +	{ "mask": "+62-##-###-###", "cc": "ID", "cd": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
          +	{ "mask": "+62-##-###-####", "cc": "ID", "cd": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
          +	{ "mask": "+62(8##)###-###", "cc": "ID", "cd": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
          +	{ "mask": "+62(8##)###-##-###", "cc": "ID", "cd": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
          +	{ "mask": "+353(###)###-###", "cc": "IE", "cd": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" },
          +	{ "mask": "+972-5#-###-####", "cc": "IL", "cd": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" },
          +	{ "mask": "+972-#-###-####", "cc": "IL", "cd": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" },
          +	{ "mask": "+91(####)###-###", "cc": "IN", "cd": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" },
          +	{ "mask": "+246-###-####", "cc": "IO", "cd": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" },
          +	{ "mask": "+964(###)###-####", "cc": "IQ", "cd": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" },
          +	{ "mask": "+98(###)###-####", "cc": "IR", "cd": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" },
          +	{ "mask": "+354-###-####", "cc": "IS", "cd": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" },
          +	{ "mask": "+39(###)####-###", "cc": "IT", "cd": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" },
          +	{ "mask": "+1(876)###-####", "cc": "JM", "cd": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" },
          +	{ "mask": "+962-#-####-####", "cc": "JO", "cd": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" },
          +	{ "mask": "+81-##-####-####", "cc": "JP", "cd": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" },
          +	{ "mask": "+81(###)###-###", "cc": "JP", "cd": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" },
          +	{ "mask": "+254-###-######", "cc": "KE", "cd": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" },
          +	{ "mask": "+996(###)###-###", "cc": "KG", "cd": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" },
          +	{ "mask": "+855-##-###-###", "cc": "KH", "cd": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" },
          +	{ "mask": "+686-##-###", "cc": "KI", "cd": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" },
          +	{ "mask": "+269-##-#####", "cc": "KM", "cd": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" },
          +	{ "mask": "+1(869)###-####", "cc": "KN", "cd": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" },
          +	{ "mask": "+850-191-###-####", "cc": "KP", "cd": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" },
          +	{ "mask": "+850-##-###-###", "cc": "KP", "cd": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
          +	{ "mask": "+850-###-####-###", "cc": "KP", "cd": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
          +	{ "mask": "+850-###-###", "cc": "KP", "cd": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
          +	{ "mask": "+850-####-####", "cc": "KP", "cd": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
          +	{ "mask": "+850-####-#############", "cc": "KP", "cd": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
          +	{ "mask": "+82-##-###-####", "cc": "KR", "cd": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" },
          +	{ "mask": "+965-####-####", "cc": "KW", "cd": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" },
          +	{ "mask": "+1(345)###-####", "cc": "KY", "cd": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" },
          +	{ "mask": "+7(6##)###-##-##", "cc": "KZ", "cd": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
          +	{ "mask": "+7(7##)###-##-##", "cc": "KZ", "cd": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
          +	{ "mask": "+856(20##)###-###", "cc": "LA", "cd": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" },
          +	{ "mask": "+856-##-###-###", "cc": "LA", "cd": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" },
          +	{ "mask": "+961-##-###-###", "cc": "LB", "cd": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" },
          +	{ "mask": "+961-#-###-###", "cc": "LB", "cd": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" },
          +	{ "mask": "+1(758)###-####", "cc": "LC", "cd": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" },
          +	{ "mask": "+423(###)###-####", "cc": "LI", "cd": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" },
          +	{ "mask": "+94-##-###-####", "cc": "LK", "cd": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" },
          +	{ "mask": "+231-##-###-###", "cc": "LR", "cd": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" },
          +	{ "mask": "+266-#-###-####", "cc": "LS", "cd": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" },
          +	{ "mask": "+370(###)##-###", "cc": "LT", "cd": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" },
          +	{ "mask": "+352(###)###-###", "cc": "LU", "cd": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" },
          +	{ "mask": "+371-##-###-###", "cc": "LV", "cd": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" },
          +	{ "mask": "+218-##-###-###", "cc": "LY", "cd": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" },
          +	{ "mask": "+218-21-###-####", "cc": "LY", "cd": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" },
          +	{ "mask": "+212-##-####-###", "cc": "MA", "cd": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" },
          +	{ "mask": "+377(###)###-###", "cc": "MC", "cd": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
          +	{ "mask": "+377-##-###-###", "cc": "MC", "cd": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
          +	{ "mask": "+373-####-####", "cc": "MD", "cd": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" },
          +	{ "mask": "+382-##-###-###", "cc": "ME", "cd": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" },
          +	{ "mask": "+261-##-##-#####", "cc": "MG", "cd": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" },
          +	{ "mask": "+692-###-####", "cc": "MH", "cd": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" },
          +	{ "mask": "+389-##-###-###", "cc": "MK", "cd": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" },
          +	{ "mask": "+223-##-##-####", "cc": "ML", "cd": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" },
          +	{ "mask": "+95-##-###-###", "cc": "MM", "cd": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
          +	{ "mask": "+95-#-###-###", "cc": "MM", "cd": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
          +	{ "mask": "+95-###-###", "cc": "MM", "cd": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
          +	{ "mask": "+976-##-##-####", "cc": "MN", "cd": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" },
          +	{ "mask": "+853-####-####", "cc": "MO", "cd": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" },
          +	{ "mask": "+1(670)###-####", "cc": "MP", "cd": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" },
          +	{ "mask": "+596(###)##-##-##", "cc": "MQ", "cd": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" },
          +	{ "mask": "+222-##-##-####", "cc": "MR", "cd": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" },
          +	{ "mask": "+1(664)###-####", "cc": "MS", "cd": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" },
          +	{ "mask": "+356-####-####", "cc": "MT", "cd": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" },
          +	{ "mask": "+230-###-####", "cc": "MU", "cd": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" },
          +	{ "mask": "+960-###-####", "cc": "MV", "cd": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" },
          +	{ "mask": "+265-1-###-###", "cc": "MW", "cd": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" },
          +	{ "mask": "+265-#-####-####", "cc": "MW", "cd": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" },
          +	{ "mask": "+52(###)###-####", "cc": "MX", "cd": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
          +	{ "mask": "+52-##-##-####", "cc": "MX", "cd": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
          +	{ "mask": "+60-##-###-####", "cc": "MY", "cd": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" },
          +	{ "mask": "+60(###)###-###", "cc": "MY", "cd": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
          +	{ "mask": "+60-##-###-###", "cc": "MY", "cd": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
          +	{ "mask": "+60-#-###-###", "cc": "MY", "cd": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
          +	{ "mask": "+258-##-###-###", "cc": "MZ", "cd": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" },
          +	{ "mask": "+264-##-###-####", "cc": "NA", "cd": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" },
          +	{ "mask": "+687-##-####", "cc": "NC", "cd": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" },
          +	{ "mask": "+227-##-##-####", "cc": "NE", "cd": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" },
          +	{ "mask": "+672-3##-###", "cc": "NF", "cd": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" },
          +	{ "mask": "+234(###)###-####", "cc": "NG", "cd": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
          +	{ "mask": "+234-##-###-###", "cc": "NG", "cd": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
          +	{ "mask": "+234-##-###-##", "cc": "NG", "cd": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
          +	{ "mask": "+234(###)###-####", "cc": "NG", "cd": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" },
          +	{ "mask": "+505-####-####", "cc": "NI", "cd": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" },
          +	{ "mask": "+31-##-###-####", "cc": "NL", "cd": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" },
          +	{ "mask": "+47(###)##-###", "cc": "NO", "cd": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" },
          +	{ "mask": "+977-##-###-###", "cc": "NP", "cd": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" },
          +	{ "mask": "+674-###-####", "cc": "NR", "cd": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" },
          +	{ "mask": "+683-####", "cc": "NU", "cd": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" },
          +	{ "mask": "+64(###)###-###", "cc": "NZ", "cd": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
          +	{ "mask": "+64-##-###-###", "cc": "NZ", "cd": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
          +	{ "mask": "+64(###)###-####", "cc": "NZ", "cd": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
          +	{ "mask": "+968-##-###-###", "cc": "OM", "cd": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" },
          +	{ "mask": "+507-###-####", "cc": "PA", "cd": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" },
          +	{ "mask": "+51(###)###-###", "cc": "PE", "cd": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" },
          +	{ "mask": "+689-##-##-##", "cc": "PF", "cd": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" },
          +	{ "mask": "+675(###)##-###", "cc": "PG", "cd": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" },
          +	{ "mask": "+63(###)###-####", "cc": "PH", "cd": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" },
          +	{ "mask": "+92(###)###-####", "cc": "PK", "cd": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" },
          +	{ "mask": "+48(###)###-###", "cc": "PL", "cd": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" },
          +	{ "mask": "+970-##-###-####", "cc": "PS", "cd": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" },
          +	{ "mask": "+351-##-###-####", "cc": "PT", "cd": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" },
          +	{ "mask": "+680-###-####", "cc": "PW", "cd": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" },
          +	{ "mask": "+595(###)###-###", "cc": "PY", "cd": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" },
          +	{ "mask": "+974-####-####", "cc": "QA", "cd": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" },
          +	{ "mask": "+262-#####-####", "cc": "RE", "cd": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" },
          +	{ "mask": "+40-##-###-####", "cc": "RO", "cd": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" },
          +	{ "mask": "+381-##-###-####", "cc": "RS", "cd": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" },
          +	{ "mask": "+7(###)###-##-##", "cc": "RU", "cd": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" },
          +	{ "mask": "+250(###)###-###", "cc": "RW", "cd": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" },
          +	{ "mask": "+966-5-####-####", "cc": "SA", "cd": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" },
          +	{ "mask": "+966-#-###-####", "cc": "SA", "cd": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" },
          +	{ "mask": "+677-###-####", "cc": "SB", "cd": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" },
          +	{ "mask": "+677-#####", "cc": "SB", "cd": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" },
          +	{ "mask": "+248-#-###-###", "cc": "SC", "cd": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" },
          +	{ "mask": "+249-##-###-####", "cc": "SD", "cd": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" },
          +	{ "mask": "+46-##-###-####", "cc": "SE", "cd": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" },
          +	{ "mask": "+65-####-####", "cc": "SG", "cd": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" },
          +	{ "mask": "+290-####", "cc": "SH", "cd": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" },
          +	{ "mask": "+290-####", "cc": "SH", "cd": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" },
          +	{ "mask": "+386-##-###-###", "cc": "SI", "cd": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" },
          +	{ "mask": "+421(###)###-###", "cc": "SK", "cd": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" },
          +	{ "mask": "+232-##-######", "cc": "SL", "cd": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" },
          +	{ "mask": "+378-####-######", "cc": "SM", "cd": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" },
          +	{ "mask": "+221-##-###-####", "cc": "SN", "cd": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" },
          +	{ "mask": "+252-##-###-###", "cc": "SO", "cd": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
          +	{ "mask": "+252-#-###-###", "cc": "SO", "cd": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
          +	{ "mask": "+252-#-###-###", "cc": "SO", "cd": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" },
          +	{ "mask": "+597-###-####", "cc": "SR", "cd": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" },
          +	{ "mask": "+597-###-###", "cc": "SR", "cd": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" },
          +	{ "mask": "+211-##-###-####", "cc": "SS", "cd": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" },
          +	{ "mask": "+239-##-#####", "cc": "ST", "cd": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" },
          +	{ "mask": "+503-##-##-####", "cc": "SV", "cd": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" },
          +	{ "mask": "+1(721)###-####", "cc": "SX", "cd": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" },
          +	{ "mask": "+963-##-####-###", "cc": "SY", "cd": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" },
          +	{ "mask": "+268-##-##-####", "cc": "SZ", "cd": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" },
          +	{ "mask": "+1(649)###-####", "cc": "TC", "cd": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" },
          +	{ "mask": "+235-##-##-##-##", "cc": "TD", "cd": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" },
          +	{ "mask": "+228-##-###-###", "cc": "TG", "cd": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" },
          +	{ "mask": "+66-##-###-####", "cc": "TH", "cd": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" },
          +	{ "mask": "+66-##-###-###", "cc": "TH", "cd": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" },
          +	{ "mask": "+992-##-###-####", "cc": "TJ", "cd": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" },
          +	{ "mask": "+690-####", "cc": "TK", "cd": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" },
          +	{ "mask": "+670-###-####", "cc": "TL", "cd": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" },
          +	{ "mask": "+670-77#-#####", "cc": "TL", "cd": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
          +	{ "mask": "+670-78#-#####", "cc": "TL", "cd": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
          +	{ "mask": "+993-#-###-####", "cc": "TM", "cd": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" },
          +	{ "mask": "+216-##-###-###", "cc": "TN", "cd": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" },
          +	{ "mask": "+676-#####", "cc": "TO", "cd": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" },
          +	{ "mask": "+90(###)###-####", "cc": "TR", "cd": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" },
          +	{ "mask": "+1(868)###-####", "cc": "TT", "cd": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" },
          +	{ "mask": "+688-90####", "cc": "TV", "cd": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" },
          +	{ "mask": "+688-2####", "cc": "TV", "cd": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" },
          +	{ "mask": "+886-#-####-####", "cc": "TW", "cd": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
          +	{ "mask": "+886-####-####", "cc": "TW", "cd": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
          +	{ "mask": "+255-##-###-####", "cc": "TZ", "cd": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" },
          +	{ "mask": "+380(##)###-##-##", "cc": "UA", "cd": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" },
          +	{ "mask": "+256(###)###-###", "cc": "UG", "cd": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" },
          +	{ "mask": "+44-##-####-####", "cc": "UK", "cd": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" },
          +	{ "mask": "+598-#-###-##-##", "cc": "UY", "cd": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" },
          +	{ "mask": "+998-##-###-####", "cc": "UZ", "cd": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" },
          +	{ "mask": "+39-6-698-#####", "cc": "VA", "cd": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" },
          +	{ "mask": "+1(784)###-####", "cc": "VC", "cd": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" },
          +	{ "mask": "+58(###)###-####", "cc": "VE", "cd": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" },
          +	{ "mask": "+1(284)###-####", "cc": "VG", "cd": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" },
          +	{ "mask": "+1(340)###-####", "cc": "VI", "cd": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" },
          +	{ "mask": "+84-##-####-###", "cc": "VN", "cd": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
          +	{ "mask": "+84(###)####-###", "cc": "VN", "cd": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
          +	{ "mask": "+678-##-#####", "cc": "VU", "cd": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" },
          +	{ "mask": "+678-#####", "cc": "VU", "cd": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" },
          +	{ "mask": "+681-##-####", "cc": "WF", "cd": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" },
          +	{ "mask": "+685-##-####", "cc": "WS", "cd": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" },
          +	{ "mask": "+967-###-###-###", "cc": "YE", "cd": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" },
          +	{ "mask": "+967-#-###-###", "cc": "YE", "cd": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
          +	{ "mask": "+967-##-###-###", "cc": "YE", "cd": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
          +	{ "mask": "+27-##-###-####", "cc": "ZA", "cd": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" },
          +	{ "mask": "+260-##-###-####", "cc": "ZM", "cd": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" },
          +	{ "mask": "+263-#-######", "cc": "ZW", "cd": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" },
          +	{ "mask": "+1(###)###-####", "cc": ["US", "CA"], "cd": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" }
          +]
          diff --git a/public/theme/jquery.inputmask/extra/phone-codes/phone-nl.js b/public/theme/jquery.inputmask/extra/phone-codes/phone-nl.js
          new file mode 100644
          index 0000000..e255132
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/phone-codes/phone-nl.js
          @@ -0,0 +1,189 @@
          +[
          +	{"mask": "+31-10-###-####", "cc": "NL", "cd": "Netherlands", "city": "Rotterdam"},
          +	{"mask": "+31-111-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zierikzee"},
          +	{"mask": "+31-113-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goes"},
          +	{"mask": "+31-114-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hulst"},
          +	{"mask": "+31-115-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terneuzen"},
          +	{"mask": "+31-117-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oostburg"},
          +	{"mask": "+31-118-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelburg"},
          +	{"mask": "+31-13-###-####", "cc": "NL", "cd": "Netherlands", "city": "Tilburg"},
          +	{"mask": "+31-14-###-####", "cc": "NL", "cd": "Netherlands", "city": "Intern gebruik door KPN"},
          +	{"mask": "+31-15-###-####", "cc": "NL", "cd": "Netherlands", "city": "Delft"},
          +	{"mask": "+31-161-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijen"},
          +	{"mask": "+31-162-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterhout"},
          +	{"mask": "+31-164-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bergen op Zoom"},
          +	{"mask": "+31-165-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roosendaal"},
          +	{"mask": "+31-166-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tholen"},
          +	{"mask": "+31-167-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenbergen"},
          +	{"mask": "+31-168-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenbergen"},
          +	{"mask": "+31-172-###-###", "cc": "NL", "cd": "Netherlands", "city": "Alphen aan den Rijn"},
          +	{"mask": "+31-174-###-###", "cc": "NL", "cd": "Netherlands", "city": "Naaldwijk"},
          +	{"mask": "+31-180-###-###", "cc": "NL", "cd": "Netherlands", "city": "Krimpen aan den IJsel"},
          +	{"mask": "+31-181-###-###", "cc": "NL", "cd": "Netherlands", "city": "Spijkenisse"},
          +	{"mask": "+31-182-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gouda"},
          +	{"mask": "+31-183-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gorinchem"},
          +	{"mask": "+31-184-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sliedrecht"},
          +	{"mask": "+31-186-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oud-Beijerland"},
          +	{"mask": "+31-187-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middelharnis"},
          +	{"mask": "+31-20-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amsterdam"},
          +	{"mask": "+31-222-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Burg"},
          +	{"mask": "+31-223-###-###", "cc": "NL", "cd": "Netherlands", "city": "Den Helder"},
          +	{"mask": "+31-224-###-###", "cc": "NL", "cd": "Netherlands", "city": "Schagen"},
          +	{"mask": "+31-226-###-###", "cc": "NL", "cd": "Netherlands", "city": "Noord-Scharwoude"},
          +	{"mask": "+31-227-###-###", "cc": "NL", "cd": "Netherlands", "city": "Middenmeer"},
          +	{"mask": "+31-228-###-###", "cc": "NL", "cd": "Netherlands", "city": "Enkhuizen"},
          +	{"mask": "+31-229-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoorn"},
          +	{"mask": "+31-23-###-####", "cc": "NL", "cd": "Netherlands", "city": "Haarlem"},
          +	{"mask": "+31-24-###-####", "cc": "NL", "cd": "Netherlands", "city": "Nijmegen"},
          +	{"mask": "+31-251-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beverwijk"},
          +	{"mask": "+31-252-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hillegom"},
          +	{"mask": "+31-255-###-###", "cc": "NL", "cd": "Netherlands", "city": "IJmuiden"},
          +	{"mask": "+31-26-###-####", "cc": "NL", "cd": "Netherlands", "city": "Arnhem"},
          +	{"mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp"},
          +	{"mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn"},
          +	{"mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend"},
          +	{"mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht"},
          +	{"mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren"},
          +	{"mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem"},
          +	{"mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg"},
          +	{"mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar"},
          +	{"mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen"},
          +	{"mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede"},
          +	{"mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad"},
          +	{"mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten"},
          +	{"mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort"},
          +	{"mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk"},
          +	{"mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld"},
          +	{"mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn"},
          +	{"mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel"},
          +	{"mask": "+31-294-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weesp"},
          +	{"mask": "+31-297-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uithoorn"},
          +	{"mask": "+31-299-###-###", "cc": "NL", "cd": "Netherlands", "city": "Purmerend"},
          +	{"mask": "+31-30-###-####", "cc": "NL", "cd": "Netherlands", "city": "Utrecht"},
          +	{"mask": "+31-313-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dieren"},
          +	{"mask": "+31-314-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doetinchem"},
          +	{"mask": "+31-315-###-###", "cc": "NL", "cd": "Netherlands", "city": "Terborg"},
          +	{"mask": "+31-316-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zevenaar"},
          +	{"mask": "+31-317-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wageningen"},
          +	{"mask": "+31-318-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ede"},
          +	{"mask": "+31-320-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lelystad"},
          +	{"mask": "+31-321-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dronten"},
          +	{"mask": "+31-33-###-####", "cc": "NL", "cd": "Netherlands", "city": "Amersfoort"},
          +	{"mask": "+31-341-###-###", "cc": "NL", "cd": "Netherlands", "city": "Harderwijk"},
          +	{"mask": "+31-342-###-###", "cc": "NL", "cd": "Netherlands", "city": "Barneveld"},
          +	{"mask": "+31-343-###-###", "cc": "NL", "cd": "Netherlands", "city": "Doorn"},
          +	{"mask": "+31-344-###-###", "cc": "NL", "cd": "Netherlands", "city": "Tiel"},
          +	{"mask": "+31-345-###-###", "cc": "NL", "cd": "Netherlands", "city": "Culemborg"},
          +	{"mask": "+31-346-###-###", "cc": "NL", "cd": "Netherlands", "city": "Maarssen"},
          +	{"mask": "+31-347-###-###", "cc": "NL", "cd": "Netherlands", "city": "Vianen"},
          +	{"mask": "+31-348-###-###", "cc": "NL", "cd": "Netherlands", "city": "Woerden"},
          +	{"mask": "+31-35-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hilversum"},
          +	{"mask": "+31-36-###-####", "cc": "NL", "cd": "Netherlands", "city": "Almere"},
          +	{"mask": "+31-38-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zwolle"},
          +	{"mask": "+31-40-###-####", "cc": "NL", "cd": "Netherlands", "city": "Eindhoven"},
          +	{"mask": "+31-411-###-###", "cc": "NL", "cd": "Netherlands", "city": "Boxtel"},
          +	{"mask": "+31-412-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oss"},
          +	{"mask": "+31-413-###-###", "cc": "NL", "cd": "Netherlands", "city": "Veghel"},
          +	{"mask": "+31-416-###-###", "cc": "NL", "cd": "Netherlands", "city": "Waalwijk"},
          +	{"mask": "+31-418-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zaltbommel"},
          +	{"mask": "+31-43-###-####", "cc": "NL", "cd": "Netherlands", "city": "Maastricht"},
          +	{"mask": "+31-45-###-####", "cc": "NL", "cd": "Netherlands", "city": "Heerlen"},
          +	{"mask": "+31-46-###-####", "cc": "NL", "cd": "Netherlands", "city": "Sittard"},
          +	{"mask": "+31-475-###-###", "cc": "NL", "cd": "Netherlands", "city": "Roermond"},
          +	{"mask": "+31-478-###-###", "cc": "NL", "cd": "Netherlands", "city": "Venray"},
          +	{"mask": "+31-481-###-###", "cc": "NL", "cd": "Netherlands", "city": "Bemmel"},
          +	{"mask": "+31-485-###-###", "cc": "NL", "cd": "Netherlands", "city": "Cuijk"},
          +	{"mask": "+31-486-###-###", "cc": "NL", "cd": "Netherlands", "city": "Grave"},
          +	{"mask": "+31-487-###-###", "cc": "NL", "cd": "Netherlands", "city": "Druten"},
          +	{"mask": "+31-488-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zetten"},
          +	{"mask": "+31-492-###-###", "cc": "NL", "cd": "Netherlands", "city": "Helmond"},
          +	{"mask": "+31-493-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deurne"},
          +	{"mask": "+31-495-###-###", "cc": "NL", "cd": "Netherlands", "city": "Weert"},
          +	{"mask": "+31-497-###-###", "cc": "NL", "cd": "Netherlands", "city": "Eersel"},
          +	{"mask": "+31-499-###-###", "cc": "NL", "cd": "Netherlands", "city": "Best"},
          +	{"mask": "+31-50-###-####", "cc": "NL", "cd": "Netherlands", "city": "Groningen"},
          +	{"mask": "+31-511-###-###", "cc": "NL", "cd": "Netherlands", "city": "Feanw�lden"},
          +	{"mask": "+31-512-###-###", "cc": "NL", "cd": "Netherlands", "city": "Drachten"},
          +	{"mask": "+31-513-###-###", "cc": "NL", "cd": "Netherlands", "city": "Heerenveen"},
          +	{"mask": "+31-514-###-###", "cc": "NL", "cd": "Netherlands", "city": "Balk"},
          +	{"mask": "+31-515-###-###", "cc": "NL", "cd": "Netherlands", "city": "Sneek"},
          +	{"mask": "+31-516-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oosterwolde"},
          +	{"mask": "+31-517-###-###", "cc": "NL", "cd": "Netherlands", "city": "Franeker"},
          +	{"mask": "+31-518-###-###", "cc": "NL", "cd": "Netherlands", "city": "St Annaparochie"},
          +	{"mask": "+31-519-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dokkum"},
          +	{"mask": "+31-521-###-###", "cc": "NL", "cd": "Netherlands", "city": "Steenwijk"},
          +	{"mask": "+31-522-###-###", "cc": "NL", "cd": "Netherlands", "city": "Meppel"},
          +	{"mask": "+31-523-###-###", "cc": "NL", "cd": "Netherlands", "city": "Dedemsvaart"},
          +	{"mask": "+31-524-###-###", "cc": "NL", "cd": "Netherlands", "city": "Coevorden"},
          +	{"mask": "+31-525-###-###", "cc": "NL", "cd": "Netherlands", "city": "Elburg"},
          +	{"mask": "+31-527-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmeloord"},
          +	{"mask": "+31-528-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogeveen"},
          +	{"mask": "+31-529-###-###", "cc": "NL", "cd": "Netherlands", "city": "Ommen"},
          +	{"mask": "+31-53-###-####", "cc": "NL", "cd": "Netherlands", "city": "Enschede"},
          +	{"mask": "+31-541-###-###", "cc": "NL", "cd": "Netherlands", "city": "Oldenzaal"},
          +	{"mask": "+31-543-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winterswijk"},
          +	{"mask": "+31-544-###-###", "cc": "NL", "cd": "Netherlands", "city": "Groenlo"},
          +	{"mask": "+31-545-###-###", "cc": "NL", "cd": "Netherlands", "city": "Neede"},
          +	{"mask": "+31-546-###-###", "cc": "NL", "cd": "Netherlands", "city": "Almelo"},
          +	{"mask": "+31-547-###-###", "cc": "NL", "cd": "Netherlands", "city": "Goor"},
          +	{"mask": "+31-548-###-###", "cc": "NL", "cd": "Netherlands", "city": "Rijssen"},
          +	{"mask": "+31-55-###-####", "cc": "NL", "cd": "Netherlands", "city": "Apeldoorn"},
          +	{"mask": "+31-561-###-###", "cc": "NL", "cd": "Netherlands", "city": "Wolvega"},
          +	{"mask": "+31-562-###-###", "cc": "NL", "cd": "Netherlands", "city": "West-Terschelling"},
          +	{"mask": "+31-566-###-###", "cc": "NL", "cd": "Netherlands", "city": "Jirnsum"},
          +	{"mask": "+31-570-###-###", "cc": "NL", "cd": "Netherlands", "city": "Deventer"},
          +	{"mask": "+31-571-###-###", "cc": "NL", "cd": "Netherlands", "city": "Twello"},
          +	{"mask": "+31-572-###-###", "cc": "NL", "cd": "Netherlands", "city": "Raalte"},
          +	{"mask": "+31-573-###-###", "cc": "NL", "cd": "Netherlands", "city": "Lochem"},
          +	{"mask": "+31-575-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zutphen"},
          +	{"mask": "+31-577-###-###", "cc": "NL", "cd": "Netherlands", "city": "Uddel"},
          +	{"mask": "+31-578-###-###", "cc": "NL", "cd": "Netherlands", "city": "Epe"},
          +	{"mask": "+31-58-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leeuwarden"},
          +	{"mask": "+31-591-###-###", "cc": "NL", "cd": "Netherlands", "city": "Emmen"},
          +	{"mask": "+31-592-###-###", "cc": "NL", "cd": "Netherlands", "city": "Assen"},
          +	{"mask": "+31-593-###-###", "cc": "NL", "cd": "Netherlands", "city": "Beilen"},
          +	{"mask": "+31-594-###-###", "cc": "NL", "cd": "Netherlands", "city": "Zuidhorn"},
          +	{"mask": "+31-595-###-###", "cc": "NL", "cd": "Netherlands", "city": "Warffum"},
          +	{"mask": "+31-596-###-###", "cc": "NL", "cd": "Netherlands", "city": "Appingedam"},
          +	{"mask": "+31-597-###-###", "cc": "NL", "cd": "Netherlands", "city": "Winschoten"},
          +	{"mask": "+31-598-###-###", "cc": "NL", "cd": "Netherlands", "city": "Hoogezand"},
          +	{"mask": "+31-599-###-###", "cc": "NL", "cd": "Netherlands", "city": "Stadskanaal"},
          +	{"mask": "+31-70-###-####", "cc": "NL", "cd": "Netherlands", "city": "Den Haag"},
          +	{"mask": "+31-71-###-####", "cc": "NL", "cd": "Netherlands", "city": "Leiden"},
          +	{"mask": "+31-72-###-####", "cc": "NL", "cd": "Netherlands", "city": "Alkmaar"},
          +	{"mask": "+31-73-###-####", "cc": "NL", "cd": "Netherlands", "city": "'s-Hertogenbosch"},
          +	{"mask": "+31-74-###-####", "cc": "NL", "cd": "Netherlands", "city": "Hengelo"},
          +	{"mask": "+31-75-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zaandam"},
          +	{"mask": "+31-76-###-####", "cc": "NL", "cd": "Netherlands", "city": "Breda"},
          +	{"mask": "+31-77-###-####", "cc": "NL", "cd": "Netherlands", "city": "Venlo"},
          +	{"mask": "+31-78-###-####", "cc": "NL", "cd": "Netherlands", "city": "Dordrecht"},
          +	{"mask": "+31-79-###-####", "cc": "NL", "cd": "Netherlands", "city": "Zoetermeer"},
          +
          +	{"mask": "+31-61-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-62-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-63-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-64-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-65-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-68-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-69-###-####", "cc": "NL", "cd": "Netherlands", "city": "Mobiele nummers"},
          +	{"mask": "+31-66-###-####", "cc": "NL", "cd": "Netherlands", "city": "Semafonie"},
          +	{"mask": "+31-670-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-671-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-672-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-673-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-674-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-675-###-###", "cc": "NL", "cd": "Netherlands", "city": "Videotex"},
          +	{"mask": "+31-676-###-###", "cc": "NL", "cd": "Netherlands", "city": "Inbelnummers van internetproviders"},
          +	{"mask": "+31-800-###-###", "cc": "NL", "cd": "Netherlands", "city": "Gratis informatienummers"},
          +	{"mask": "+31-82-###-####", "cc": "NL", "cd": "Netherlands", "city": "Virtual Private Network"},
          +	{"mask": "+31-88-###-####", "cc": "NL", "cd": "Netherlands", "city": "Bedrijfsnummers"},
          +	{"mask": "+31-900-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
          +	{"mask": "+31-906-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
          +	{"mask": "+31-909-###-###", "cc": "NL", "cd": "Netherlands", "city": "Betaalde informatienummers"},
          +	{
          +		"mask": "+31-91-###-####",
          +		"cc": "NL",
          +		"cd": "Netherlands",
          +		"city": "Plaatsonafhankelijk netnummer, geschikt voor beeldtelefonie of lijnen met verhoogde kwaliteit"
          +	}
          +]
          diff --git a/public/theme/jquery.inputmask/extra/phone-codes/phone-ru.js b/public/theme/jquery.inputmask/extra/phone-codes/phone-ru.js
          new file mode 100644
          index 0000000..3559008
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/phone-codes/phone-ru.js
          @@ -0,0 +1,2405 @@
          +[
          +	{ "mask": "+7(301)###-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3012)##-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Улан-Удэ", "operator": "", "desc": "" },
          +	{ "mask": "+7(30130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": ["Нижнеангарск", "Северобайкальск"], "operator": "", "desc": "" },
          +	{ "mask": "+7(30131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Баргузин", "operator": "", "desc": "" },
          +	{ "mask": "+7(30132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Таксимо", "operator": "", "desc": "" },
          +	{ "mask": "+7(30133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Бичура", "operator": "", "desc": "" },
          +	{ "mask": "+7(30134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Петропавловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(30135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Сосново-Озёрское", "operator": "", "desc": "" },
          +	{ "mask": "+7(30136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Заиграево", "operator": "", "desc": "" },
          +	{ "mask": "+7(30137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Закаменск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Кабанск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Иволгинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Кижинга", "operator": "", "desc": "" },
          +	{ "mask": "+7(30142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Кяхта", "operator": "", "desc": "" },
          +	{ "mask": "+7(30143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Мухоршибирь", "operator": "", "desc": "" },
          +	{ "mask": "+7(30144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Турунтаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(30145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Гусиноозёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Тарбагатай", "operator": "", "desc": "" },
          +	{ "mask": "+7(30147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Кырен", "operator": "", "desc": "" },
          +	{ "mask": "+7(30148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Хоринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Курумкан", "operator": "", "desc": "" },
          +	{ "mask": "+7(30150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Орлик", "operator": "", "desc": "" },
          +	{ "mask": "+7(30153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Бурятия", "city": "Багдарин", "operator": "", "desc": "" },
          +	{ "mask": "+7(302)###-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3022)##-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Чита", "operator": "", "desc": "" },
          +	{ "mask": "+7(30230)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Красный Чикой", "operator": "", "desc": "" },
          +	{ "mask": "+7(30231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Акша", "operator": "", "desc": "" },
          +	{ "mask": "+7(30232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Балей", "operator": "", "desc": "" },
          +	{ "mask": "+7(30233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Борзя", "operator": "", "desc": "" },
          +	{ "mask": "+7(30234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Карымское", "operator": "", "desc": "" },
          +	{ "mask": "+7(30235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Кыра", "operator": "", "desc": "" },
          +	{ "mask": "+7(30236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Петровск-Забайкальский", "operator": "", "desc": "" },
          +	{ "mask": "+7(30237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Хилок", "operator": "", "desc": "" },
          +	{ "mask": "+7(30238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Улёты", "operator": "", "desc": "" },
          +	{ "mask": "+7(30239)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Агинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(30240)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Александровский Завод", "operator": "", "desc": "" },
          +	{ "mask": "+7(30241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Могоча", "operator": "", "desc": "" },
          +	{ "mask": "+7(30242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Нерчинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Приаргунск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Шилка", "operator": "", "desc": "" },
          +	{ "mask": "+7(30245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Краснокаменск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Сретенск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Газимурский Завод", "operator": "", "desc": "" },
          +	{ "mask": "+7(30248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Нерчинский Завод", "operator": "", "desc": "" },
          +	{ "mask": "+7(30249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Калга", "operator": "", "desc": "" },
          +	{ "mask": "+7(30251)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Забайкальск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30252)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Нижний Цасучей", "operator": "", "desc": "" },
          +	{ "mask": "+7(30253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Оловянная", "operator": "", "desc": "" },
          +	{ "mask": "+7(30255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Могойтуй", "operator": "", "desc": "" },
          +	{ "mask": "+7(30256)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Дульдурга", "operator": "", "desc": "" },
          +	{ "mask": "+7(30257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Горный", "operator": "", "desc": "" },
          +	{ "mask": "+7(30261)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": ["Калар", "Чара"], "operator": "", "desc": "" },
          +	{ "mask": "+7(30262)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Первомайский", "operator": "", "desc": "" },
          +	{ "mask": "+7(30264)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Верх-Усугли", "operator": "", "desc": "" },
          +	{ "mask": "+7(30265)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Чернышевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(30266)#-##-##", "cc": "RU", "cd": "Russia", "region": "Забайкальский край", "city": "Шелопугино", "operator": "", "desc": "" },
          +	{ "mask": "+7(341)###-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3412)##-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Ижевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34126)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Завьялово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Ува", "operator": "", "desc": "" },
          +	{ "mask": "+7(34132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Каракулино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Киясово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Игра", "operator": "", "desc": "" },
          +	{ "mask": "+7(34136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Шаркан", "operator": "", "desc": "" },
          +	{ "mask": "+7(34138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Малая Пурга", "operator": "", "desc": "" },
          +	{ "mask": "+7(34139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Можга", "operator": "", "desc": "" },
          +	{ "mask": "+7(34141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Глазов", "operator": "", "desc": "" },
          +	{ "mask": "+7(34145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Воткинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Сарапул", "operator": "", "desc": "" },
          +	{ "mask": "+7(34150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Алнаши", "operator": "", "desc": "" },
          +	{ "mask": "+7(34151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Дебёсы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Сюмси", "operator": "", "desc": "" },
          +	{ "mask": "+7(34153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Камбарка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Кизнер", "operator": "", "desc": "" },
          +	{ "mask": "+7(34155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Вавож", "operator": "", "desc": "" },
          +	{ "mask": "+7(34157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(34158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Кез", "operator": "", "desc": "" },
          +	{ "mask": "+7(34159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Селты", "operator": "", "desc": "" },
          +	{ "mask": "+7(34161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Юкаменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Якшур-Бодья", "operator": "", "desc": "" },
          +	{ "mask": "+7(34163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Грахово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Красногорское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Удмуртская Республика", "city": "Балезино", "operator": "", "desc": "" },
          +	{ "mask": "+7(342)###-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(342)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Пермь", "operator": "", "desc": "" },
          +	{ "mask": "+7(342)3##-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Пермь", "operator": "", "desc": "" },
          +	{ "mask": "+7(3424)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Березники", "operator": "", "desc": "" },
          +	{ "mask": "+7(34240)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Чердынь", "operator": "", "desc": "" },
          +	{ "mask": "+7(34241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Чайковский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Красновишерск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Усолье", "operator": "", "desc": "" },
          +	{ "mask": "+7(34245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Гайны", "operator": "", "desc": "" },
          +	{ "mask": "+7(34246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Юсьва", "operator": "", "desc": "" },
          +	{ "mask": "+7(34248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Губаха", "operator": "", "desc": "" },
          +	{ "mask": "+7(34249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Лысьва", "operator": "", "desc": "" },
          +	{ "mask": "+7(34250)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Гремячинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34251)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Березовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34252)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Усть-Кишерть", "operator": "", "desc": "" },
          +	{ "mask": "+7(34253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Соликамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34254)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Верещагино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Кизел", "operator": "", "desc": "" },
          +	{ "mask": "+7(34256)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Чусовой", "operator": "", "desc": "" },
          +	{ "mask": "+7(34257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Большая Соснова", "operator": "", "desc": "" },
          +	{ "mask": "+7(34258)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Орда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34259)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Уинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34260)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Кудымкар", "operator": "", "desc": "" },
          +	{ "mask": "+7(34261)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Чернушка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34262)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Куеда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34263)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Звёздный", "operator": "", "desc": "" },
          +	{ "mask": "+7(34265)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Добрянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34266)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Октябрьский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34268)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Частые", "operator": "", "desc": "" },
          +	{ "mask": "+7(34269)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Горнозаводск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34271)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Кунгур", "operator": "", "desc": "" },
          +	{ "mask": "+7(34272)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Нытва", "operator": "", "desc": "" },
          +	{ "mask": "+7(34273)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Краснокамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34274)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Александровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34275)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Суксун", "operator": "", "desc": "" },
          +	{ "mask": "+7(34276)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Ильинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34277)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Сива", "operator": "", "desc": "" },
          +	{ "mask": "+7(34278)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Очер", "operator": "", "desc": "" },
          +	{ "mask": "+7(34279)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Оханск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34291)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Оса", "operator": "", "desc": "" },
          +	{ "mask": "+7(34292)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Барда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34293)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Кочёво", "operator": "", "desc": "" },
          +	{ "mask": "+7(34294)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Юрла", "operator": "", "desc": "" },
          +	{ "mask": "+7(34296)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Елово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34297)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Карагай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34298)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пермский край", "city": "Коса", "operator": "", "desc": "" },
          +	{ "mask": "+7(343)###-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(343)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Екатеринбург", "operator": "", "desc": "" },
          +	{ "mask": "+7(343)3##-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Екатеринбург", "operator": "", "desc": "" },
          +	{ "mask": "+7(34341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Качканар", "operator": "", "desc": "" },
          +	{ "mask": "+7(34342)2-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Нижняя Тура", "operator": "", "desc": "" },
          +	{ "mask": "+7(34342)3-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Лесной", "operator": "", "desc": "" },
          +	{ "mask": "+7(34342)5-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Лесной", "operator": "", "desc": "" },
          +	{ "mask": "+7(34342)6-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Лесной", "operator": "", "desc": "" },
          +	{ "mask": "+7(34343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Красноуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Кушва", "operator": "", "desc": "" },
          +	{ "mask": "+7(34345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Верхняя Салда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Алапаевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Таборы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Туринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3435)##-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Нижний Тагил", "operator": "", "desc": "" },
          +	{ "mask": "+7(34350)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Полевской", "operator": "", "desc": "" },
          +	{ "mask": "+7(34355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Ирбит", "operator": "", "desc": "" },
          +	{ "mask": "+7(34356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Невьянск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Кировград", "operator": "", "desc": "" },
          +	{ "mask": "+7(34358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Шаля", "operator": "", "desc": "" },
          +	{ "mask": "+7(34360)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Тавда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Туринская Слобода", "operator": "", "desc": "" },
          +	{ "mask": "+7(34362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Байкалово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Артемовский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Реж", "operator": "", "desc": "" },
          +	{ "mask": "+7(34365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Асбест", "operator": "", "desc": "" },
          +	{ "mask": "+7(34367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Тугулым", "operator": "", "desc": "" },
          +	{ "mask": "+7(34368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Верхняя Пышма", "operator": "", "desc": "" },
          +	{ "mask": "+7(34369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Берёзовский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34370)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Новоуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Талица", "operator": "", "desc": "" },
          +	{ "mask": "+7(34372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Пышма", "operator": "", "desc": "" },
          +	{ "mask": "+7(34373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Сухой Лог", "operator": "", "desc": "" },
          +	{ "mask": "+7(34374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Сысерть", "operator": "", "desc": "" },
          +	{ "mask": "+7(34375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Камышлов", "operator": "", "desc": "" },
          +	{ "mask": "+7(34376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Богданович", "operator": "", "desc": "" },
          +	{ "mask": "+7(34377)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Белоярский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34380)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Североуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34383)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Карпинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34383)5-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Волчанск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34384)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Краснотурьинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34385)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Серов", "operator": "", "desc": "" },
          +	{ "mask": "+7(34386)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Ивдель", "operator": "", "desc": "" },
          +	{ "mask": "+7(34387)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Гари", "operator": "", "desc": "" },
          +	{ "mask": "+7(34388)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Новая Ляля", "operator": "", "desc": "" },
          +	{ "mask": "+7(34389)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Верхотурье", "operator": "", "desc": "" },
          +	{ "mask": "+7(3439)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Первоуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3439)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Каменск-Уральский", "operator": "", "desc": "" },
          +	{ "mask": "+7(3439)54-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Каменск-Уральский", "operator": "", "desc": "" },
          +	{ "mask": "+7(3439)6#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Первоуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34391)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Ачит", "operator": "", "desc": "" },
          +	{ "mask": "+7(34394)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Красноуфимск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34395)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Арти", "operator": "", "desc": "" },
          +	{ "mask": "+7(34397)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Ревда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34398)#-##-##", "cc": "RU", "cd": "Russia", "region": "Свердловская область", "city": "Нижние Серги", "operator": "", "desc": "" },
          +	{ "mask": "+7(345)###-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3452)##-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Тюмень", "operator": "", "desc": "" },
          +	{ "mask": "+7(34531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Ярково", "operator": "", "desc": "" },
          +	{ "mask": "+7(34533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Нижняя Тавда", "operator": "", "desc": "" },
          +	{ "mask": "+7(34535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Ялуторовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Исетское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Вагай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Упорово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Заводоуковск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Юргинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Омутинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Аромашево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Голышманово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34547)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Армизонское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34550)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Большое Сорокино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Ишим", "operator": "", "desc": "" },
          +	{ "mask": "+7(34553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Казанское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Бердюжье", "operator": "", "desc": "" },
          +	{ "mask": "+7(34555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Сладково", "operator": "", "desc": "" },
          +	{ "mask": "+7(34556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Абатский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Викулово", "operator": "", "desc": "" },
          +	{ "mask": "+7(3456)##-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Тобольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34561)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тюменская область", "city": "Уват", "operator": "", "desc": "" },
          +	{ "mask": "+7(346)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3462)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Сургут", "operator": "", "desc": "" },
          +	{ "mask": "+7(3463)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Нефтеюганск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34634)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Пыть-Ях", "operator": "", "desc": "" },
          +	{ "mask": "+7(34638)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Лянтор", "operator": "", "desc": "" },
          +	{ "mask": "+7(34643)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Мегион", "operator": "", "desc": "" },
          +	{ "mask": "+7(3466)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Нижневартовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34667)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Когалым", "operator": "", "desc": "" },
          +	{ "mask": "+7(34668)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Радужный", "operator": "", "desc": "" },
          +	{ "mask": "+7(34669)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Лангепас", "operator": "", "desc": "" },
          +	{ "mask": "+7(34670)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Белоярский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34672)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Нягань", "operator": "", "desc": "" },
          +	{ "mask": "+7(34673)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Ханты-Мансийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34674)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Берёзово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34675)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Советский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34676)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Урай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34677)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Кондинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34678)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ханты-Мансийский автономный округ", "city": "Октябрьское", "operator": "", "desc": "" },
          +	{ "mask": "+7(347)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(347)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Уфа", "operator": "", "desc": "" },
          +	{ "mask": "+7(3473)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Стерлитамак", "operator": "", "desc": "" },
          +	{ "mask": "+7(34731)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Агидель", "operator": "", "desc": "" },
          +	{ "mask": "+7(34739)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Стерлибашево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34740)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Красноусольский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34741)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Ермекеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34742)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Бакалы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34743)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Бижбуляк", "operator": "", "desc": "" },
          +	{ "mask": "+7(34744)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Караидель", "operator": "", "desc": "" },
          +	{ "mask": "+7(34745)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Толбазы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34746)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Фёдоровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34747)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Языково", "operator": "", "desc": "" },
          +	{ "mask": "+7(34748)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Верхние Киги", "operator": "", "desc": "" },
          +	{ "mask": "+7(34749)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Мишкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34750)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Новобелокатай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34751)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Баймак", "operator": "", "desc": "" },
          +	{ "mask": "+7(34752)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Зилаир", "operator": "", "desc": "" },
          +	{ "mask": "+7(34753)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Старобалтачево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34754)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Раевский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34755)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Старосубхангулово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34756)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Бураево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34757)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Ермолаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34758)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Акъяр", "operator": "", "desc": "" },
          +	{ "mask": "+7(34759)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Николо-Березовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34760)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Янаул", "operator": "", "desc": "" },
          +	{ "mask": "+7(34761)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Кумертау", "operator": "", "desc": "" },
          +	{ "mask": "+7(34762)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Верхнеяркеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(34763)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Салават", "operator": "", "desc": "" },
          +	{ "mask": "+7(34764)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Мелеуз", "operator": "", "desc": "" },
          +	{ "mask": "+7(34765)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Кармаскалы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34766)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Благовещенск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34767)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Октябрьский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34768)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Давлеканово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34769)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Шаран", "operator": "", "desc": "" },
          +	{ "mask": "+7(34770)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Большеустьикинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34771)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Аскино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34772)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Аскарово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34773)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Буздяк", "operator": "", "desc": "" },
          +	{ "mask": "+7(34774)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Архангельское", "operator": "", "desc": "" },
          +	{ "mask": "+7(34775)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Сибай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34776)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Красная Горка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34777)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Малояз", "operator": "", "desc": "" },
          +	{ "mask": "+7(34778)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Верхние Татышлы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34779)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Калтасы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34780)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Кушнаренково", "operator": "", "desc": "" },
          +	{ "mask": "+7(34781)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Межгорье", "operator": "", "desc": "" },
          +	{ "mask": "+7(34782)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Туймазы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34783)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Нефтекамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34784)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Бирск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34785)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Исянгулово", "operator": "", "desc": "" },
          +	{ "mask": "+7(34786)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Белебей", "operator": "", "desc": "" },
          +	{ "mask": "+7(34787)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Дюртюли", "operator": "", "desc": "" },
          +	{ "mask": "+7(34788)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Киргиз-Мияки", "operator": "", "desc": "" },
          +	{ "mask": "+7(34789)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Мраково", "operator": "", "desc": "" },
          +	{ "mask": "+7(34791)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Учалы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34792)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Белорецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(34794)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Ишимбай", "operator": "", "desc": "" },
          +	{ "mask": "+7(34795)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Иглино", "operator": "", "desc": "" },
          +	{ "mask": "+7(34796)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Чекмагуш", "operator": "", "desc": "" },
          +	{ "mask": "+7(34797)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Чишмы", "operator": "", "desc": "" },
          +	{ "mask": "+7(34798)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Башкортостан", "city": "Месягутово", "operator": "", "desc": "" },
          +	{ "mask": "+7(349)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(34922)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Салехард", "operator": "", "desc": "" },
          +	{ "mask": "+7(34932)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Красноселькуп", "operator": "", "desc": "" },
          +	{ "mask": "+7(34934)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Уренгой", "operator": "", "desc": "" },
          +	{ "mask": "+7(34936)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Губкинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34938)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Муравленко", "operator": "", "desc": "" },
          +	{ "mask": "+7(3494)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Новый Уренгой", "operator": "", "desc": "" },
          +	{ "mask": "+7(34940)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Тазовский", "operator": "", "desc": "" },
          +	{ "mask": "+7(34948)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Харп", "operator": "", "desc": "" },
          +	{ "mask": "+7(34949)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Ямбург", "operator": "", "desc": "" },
          +	{ "mask": "+7(3496)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Ноябрьск", "operator": "", "desc": "" },
          +	{ "mask": "+7(34992)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Лабытнанги", "operator": "", "desc": "" },
          +	{ "mask": "+7(34993)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Аксарка", "operator": "", "desc": "" },
          +	{ "mask": "+7(34994)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Мужи", "operator": "", "desc": "" },
          +	{ "mask": "+7(34995)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Надым", "operator": "", "desc": "" },
          +	{ "mask": "+7(34996)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Яр-Сале", "operator": "", "desc": "" },
          +	{ "mask": "+7(34997)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ямало-Ненецкий автономный округ", "city": "Тарко-Сале", "operator": "", "desc": "" },
          +	{ "mask": "+7(351)###-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(351)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Челябинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(351)301-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Челябинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(351)7##-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Челябинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(351)90#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "", "operator": "Ростелеком", "desc": "мобильные телефоны с зоновыми номерами" },
          +	{ "mask": "+7(3513)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Миасс", "operator": "", "desc": "" },
          +	{ "mask": "+7(3513)5#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Миасс", "operator": "", "desc": "" },
          +	{ "mask": "+7(3513)6#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Златоуст", "operator": "", "desc": "" },
          +	{ "mask": "+7(3513)7#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Златоуст", "operator": "", "desc": "" },
          +	{ "mask": "+7(35130)2-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35130)4-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35130)6-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35130)7-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35130)9-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Аргаяш", "operator": "", "desc": "" },
          +	{ "mask": "+7(35133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Карталы", "operator": "", "desc": "" },
          +	{ "mask": "+7(35134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Южноуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Еманжелинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Копейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Агаповка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Бреды", "operator": "", "desc": "" },
          +	{ "mask": "+7(35142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Варна", "operator": "", "desc": "" },
          +	{ "mask": "+7(35143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Верхнеуральск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Долгодеревенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Еткуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(35146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Снежинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": ["Катав-Ивановск", "Юрюзань"], "operator": "", "desc": "" },
          +	{ "mask": "+7(35148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Кунашак", "operator": "", "desc": "" },
          +	{ "mask": "+7(35149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Касли", "operator": "", "desc": "" },
          +	{ "mask": "+7(35150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Миасское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Кыштым", "operator": "", "desc": "" },
          +	{ "mask": "+7(35152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Коркино", "operator": "", "desc": "" },
          +	{ "mask": "+7(35153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Карабаш", "operator": "", "desc": "" },
          +	{ "mask": "+7(35154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Куса", "operator": "", "desc": "" },
          +	{ "mask": "+7(35155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Кизильское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Нязепетровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Фершампенуаз", "operator": "", "desc": "" },
          +	{ "mask": "+7(35158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Октябрьское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Аша", "operator": "", "desc": "" },
          +	{ "mask": "+7(35160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Пласт", "operator": "", "desc": "" },
          +	{ "mask": "+7(35161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Сатка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Троицк", "operator": "", "desc": "" },
          +	{ "mask": "+7(35164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Верхний Уфалей", "operator": "", "desc": "" },
          +	{ "mask": "+7(35165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Уйское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Увельский", "operator": "", "desc": "" },
          +	{ "mask": "+7(35167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Усть-Катав", "operator": "", "desc": "" },
          +	{ "mask": "+7(35168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Чебаркуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(35169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Чесма", "operator": "", "desc": "" },
          +	{ "mask": "+7(3519)##-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Магнитогорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35191)#-##-##", "cc": "RU", "cd": "Russia", "region": "Челябинская область", "city": "Трёхгорный", "operator": "", "desc": "" },
          +	{ "mask": "+7(352)###-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3522)##-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Курган", "operator": "", "desc": "" },
          +	{ "mask": "+7(35230)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Частоозерье", "operator": "", "desc": "" },
          +	{ "mask": "+7(35231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Кетово", "operator": "", "desc": "" },
          +	{ "mask": "+7(35232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Белозерское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Варгаши", "operator": "", "desc": "" },
          +	{ "mask": "+7(35234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Мокроусово", "operator": "", "desc": "" },
          +	{ "mask": "+7(35235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Петухово", "operator": "", "desc": "" },
          +	{ "mask": "+7(35236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Макушино", "operator": "", "desc": "" },
          +	{ "mask": "+7(35237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Лебяжье", "operator": "", "desc": "" },
          +	{ "mask": "+7(35238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Половинное", "operator": "", "desc": "" },
          +	{ "mask": "+7(35239)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Глядянское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35240)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Звериноголовское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Целинное", "operator": "", "desc": "" },
          +	{ "mask": "+7(35242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Альменево", "operator": "", "desc": "" },
          +	{ "mask": "+7(35243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Сафакулево", "operator": "", "desc": "" },
          +	{ "mask": "+7(35244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Щучье", "operator": "", "desc": "" },
          +	{ "mask": "+7(35245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Шумиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(35247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Мишкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(35248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Юргамыш", "operator": "", "desc": "" },
          +	{ "mask": "+7(35249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Куртамыш", "operator": "", "desc": "" },
          +	{ "mask": "+7(35251)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Катайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35252)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Далматово", "operator": "", "desc": "" },
          +	{ "mask": "+7(35253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Шадринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35256)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Каргаполье", "operator": "", "desc": "" },
          +	{ "mask": "+7(35257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курганская область", "city": "Шатрово", "operator": "", "desc": "" },
          +	{ "mask": "+7(353)###-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3532)##-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Оренбург", "operator": "", "desc": "" },
          +	{ "mask": "+7(35330)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Октябрьское", "operator": "", "desc": "" },
          +	{ "mask": "+7(35331)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Сакмара", "operator": "", "desc": "" },
          +	{ "mask": "+7(35332)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Тюльган", "operator": "", "desc": "" },
          +	{ "mask": "+7(35333)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Саракташ", "operator": "", "desc": "" },
          +	{ "mask": "+7(35334)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Беляевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35335)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Акбулак", "operator": "", "desc": "" },
          +	{ "mask": "+7(35336)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Соль-Илецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(35337)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Илек", "operator": "", "desc": "" },
          +	{ "mask": "+7(35338)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Переволоцкий", "operator": "", "desc": "" },
          +	{ "mask": "+7(35339)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Новосергиевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Курманаевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Бузулук", "operator": "", "desc": "" },
          +	{ "mask": "+7(35344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Грачёвка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Плешаново", "operator": "", "desc": "" },
          +	{ "mask": "+7(35346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Сорочинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Ташла", "operator": "", "desc": "" },
          +	{ "mask": "+7(35348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Первомайский", "operator": "", "desc": "" },
          +	{ "mask": "+7(35349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Тоцкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(35351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Асекеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(35352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Бугуруслан", "operator": "", "desc": "" },
          +	{ "mask": "+7(35354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Северное", "operator": "", "desc": "" },
          +	{ "mask": "+7(35355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Абдулино", "operator": "", "desc": "" },
          +	{ "mask": "+7(35356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Матвеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Пономаревка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Шарлык", "operator": "", "desc": "" },
          +	{ "mask": "+7(35359)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Александровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Кувандык", "operator": "", "desc": "" },
          +	{ "mask": "+7(35362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Гай", "operator": "", "desc": "" },
          +	{ "mask": "+7(35363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Новоорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(35364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Кваркено", "operator": "", "desc": "" },
          +	{ "mask": "+7(35365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Адамовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(35366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Светлый", "operator": "", "desc": "" },
          +	{ "mask": "+7(35367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Домбаровский", "operator": "", "desc": "" },
          +	{ "mask": "+7(35368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Ясный", "operator": "", "desc": "" },
          +	{ "mask": "+7(3537)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Орск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3537)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Орск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3537)4#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Орск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3537)6#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Новотроицк", "operator": "", "desc": "" },
          +	{ "mask": "+7(35379)#-##-##", "cc": "RU", "cd": "Russia", "region": "Оренбургская область", "city": "Медногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(381)###-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3812)##-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Омск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Азово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Усть-Ишим", "operator": "", "desc": "" },
          +	{ "mask": "+7(38151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Таврическое", "operator": "", "desc": "" },
          +	{ "mask": "+7(38152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Нововаршавка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Черлак", "operator": "", "desc": "" },
          +	{ "mask": "+7(38154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Тевриз", "operator": "", "desc": "" },
          +	{ "mask": "+7(38155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Калачинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Русская Поляна", "operator": "", "desc": "" },
          +	{ "mask": "+7(38157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Горьковское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Муромцево", "operator": "", "desc": "" },
          +	{ "mask": "+7(38159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Одесское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Колосовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Называевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Большие Уки", "operator": "", "desc": "" },
          +	{ "mask": "+7(38163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Полтавка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Седельниково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Нижняя Омка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Оконешниково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Крутинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Марьяновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Большеречье", "operator": "", "desc": "" },
          +	{ "mask": "+7(38170)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Кормиловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38171)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Тара", "operator": "", "desc": "" },
          +	{ "mask": "+7(38172)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Павлоградка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38173)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Исилькуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(38174)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Москаленки", "operator": "", "desc": "" },
          +	{ "mask": "+7(38175)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Любинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(38176)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Тюкалинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38177)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Шербакуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(38178)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Саргатское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38179)#-##-##", "cc": "RU", "cd": "Russia", "region": "Омская область", "city": "Знаменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(382)###-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3822)##-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Томск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3823)##-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Северск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Асино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Зырянское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Кожевниково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Первомайское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Тегульдет", "operator": "", "desc": "" },
          +	{ "mask": "+7(38247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Мельниково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Бакчар", "operator": "", "desc": "" },
          +	{ "mask": "+7(38250)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Кедровый", "operator": "", "desc": "" },
          +	{ "mask": "+7(38251)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Кривошеино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38252)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Парабель", "operator": "", "desc": "" },
          +	{ "mask": "+7(38253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Каргасок", "operator": "", "desc": "" },
          +	{ "mask": "+7(38254)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Колпашево", "operator": "", "desc": "" },
          +	{ "mask": "+7(38255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Александровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38256)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Молчаново", "operator": "", "desc": "" },
          +	{ "mask": "+7(38257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Подгорное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38258)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Белый Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(38259)#-##-##", "cc": "RU", "cd": "Russia", "region": "Томская область", "city": "Стрежевой", "operator": "", "desc": "" },
          +	{ "mask": "+7(383)###-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Новосибирск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38340)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Тогучин", "operator": "", "desc": "" },
          +	{ "mask": "+7(38341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Бердск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Искитим", "operator": "", "desc": "" },
          +	{ "mask": "+7(38345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Черепаново", "operator": "", "desc": "" },
          +	{ "mask": "+7(38346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Сузун", "operator": "", "desc": "" },
          +	{ "mask": "+7(38347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Маслянино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Мошково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Болотное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38350)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Чулым", "operator": "", "desc": "" },
          +	{ "mask": "+7(38351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Коченево", "operator": "", "desc": "" },
          +	{ "mask": "+7(38352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Колывань", "operator": "", "desc": "" },
          +	{ "mask": "+7(38353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Баган", "operator": "", "desc": "" },
          +	{ "mask": "+7(38354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Довольное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Карасук", "operator": "", "desc": "" },
          +	{ "mask": "+7(38356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Кочки", "operator": "", "desc": "" },
          +	{ "mask": "+7(38357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Краснозерское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Купино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38359)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Ордынское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38360)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Северное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Барабинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Куйбышев", "operator": "", "desc": "" },
          +	{ "mask": "+7(38363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Здвинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Татарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Каргат", "operator": "", "desc": "" },
          +	{ "mask": "+7(38366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Убинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Чаны", "operator": "", "desc": "" },
          +	{ "mask": "+7(38368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Чистоозерное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Венгерово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Кыштовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Усть-Тарка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новосибирская область", "city": "Обь", "operator": "", "desc": "" },
          +	{ "mask": "+7(384)###-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3842)##-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Кемерово", "operator": "", "desc": "" },
          +	{ "mask": "+7(3843)##-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Новокузнецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(38441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Яя", "operator": "", "desc": "" },
          +	{ "mask": "+7(38442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Промышленная", "operator": "", "desc": "" },
          +	{ "mask": "+7(38443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Мариинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Верх-Чебула", "operator": "", "desc": "" },
          +	{ "mask": "+7(38445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Берёзовский", "operator": "", "desc": "" },
          +	{ "mask": "+7(38446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Крапивинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(38447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Тисуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(38448)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Тайга", "operator": "", "desc": "" },
          +	{ "mask": "+7(38449)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Тяжинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(38451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Юрга", "operator": "", "desc": "" },
          +	{ "mask": "+7(38452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Белово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Анжеро-Судженск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Топки", "operator": "", "desc": "" },
          +	{ "mask": "+7(38455)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Яшкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38456)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Ленинск-Кузнецкий", "operator": "", "desc": "" },
          +	{ "mask": "+7(38459)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Ижморский", "operator": "", "desc": "" },
          +	{ "mask": "+7(3846)##-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Прокопьевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38463)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Гурьевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38464)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Киселевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38471)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Осинники", "operator": "", "desc": "" },
          +	{ "mask": "+7(38472)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Калтан", "operator": "", "desc": "" },
          +	{ "mask": "+7(38473)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Таштагол", "operator": "", "desc": "" },
          +	{ "mask": "+7(38474)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Мыски", "operator": "", "desc": "" },
          +	{ "mask": "+7(38475)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кемеровская область", "city": "Междуреченск", "operator": "", "desc": "" },
          +	{ "mask": "+7(385)###-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3852)##-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Барнаул", "operator": "", "desc": "" },
          +	{ "mask": "+7(38530)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Зональное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Косиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Новоалтайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Солтон", "operator": "", "desc": "" },
          +	{ "mask": "+7(38534)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Троицкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(38535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Красногорское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Смоленское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Алтайское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Верх-Суетка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Гальбштадт", "operator": "", "desc": "" },
          +	{ "mask": "+7(3854)##-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Бийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38550)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Шипуново", "operator": "", "desc": "" },
          +	{ "mask": "+7(38551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Калманка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Топчиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Алейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Усть-Чарышская Пристань", "operator": "", "desc": "" },
          +	{ "mask": "+7(38555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Новичиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Поспелиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Рубцовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Шелаболиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Староалейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38560)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Новоегорьевское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38561)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Романово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38562)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Завьялово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38563)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Родино", "operator": "", "desc": "" },
          +	{ "mask": "+7(38564)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Благовещенка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38565)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Волчиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38566)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Кулунда", "operator": "", "desc": "" },
          +	{ "mask": "+7(38567)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Табуны", "operator": "", "desc": "" },
          +	{ "mask": "+7(38568)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Славгород", "operator": "", "desc": "" },
          +	{ "mask": "+7(38569)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Хабары", "operator": "", "desc": "" },
          +	{ "mask": "+7(38570)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Михайловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38571)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Быстрый Исток", "operator": "", "desc": "" },
          +	{ "mask": "+7(38572)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Бурла", "operator": "", "desc": "" },
          +	{ "mask": "+7(38573)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Петропавловское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38574)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Чарышское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38575)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Краснощеково", "operator": "", "desc": "" },
          +	{ "mask": "+7(38576)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Курья", "operator": "", "desc": "" },
          +	{ "mask": "+7(38577)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Белокуриха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38578)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Ключи", "operator": "", "desc": "" },
          +	{ "mask": "+7(38579)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Угловское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38580)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Панкрушиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38581)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Павловск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38582)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Ребриха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38583)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Мамонтово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38584)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Камень-на-Оби", "operator": "", "desc": "" },
          +	{ "mask": "+7(38585)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Баево", "operator": "", "desc": "" },
          +	{ "mask": "+7(38586)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Горняк", "operator": "", "desc": "" },
          +	{ "mask": "+7(38587)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Змеиногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38588)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Тюменцево", "operator": "", "desc": "" },
          +	{ "mask": "+7(38589)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Крутиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(38590)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Кытманово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38591)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Тальменка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38592)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Залесово", "operator": "", "desc": "" },
          +	{ "mask": "+7(38593)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Ельцовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(38594)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Солонешное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38595)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Заринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38596)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Целинное", "operator": "", "desc": "" },
          +	{ "mask": "+7(38597)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Тогул", "operator": "", "desc": "" },
          +	{ "mask": "+7(38598)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Советское", "operator": "", "desc": "" },
          +	{ "mask": "+7(38599)#-##-##", "cc": "RU", "cd": "Russia", "region": "Алтайский край", "city": "Усть-Калманка", "operator": "", "desc": "" },
          +	{ "mask": "+7(388)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3882)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Горно-Алтайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(38840)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Чоя", "operator": "", "desc": "" },
          +	{ "mask": "+7(38841)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Чемал", "operator": "", "desc": "" },
          +	{ "mask": "+7(38842)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Кош-Агач", "operator": "", "desc": "" },
          +	{ "mask": "+7(38843)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Турочак", "operator": "", "desc": "" },
          +	{ "mask": "+7(38844)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Майма", "operator": "", "desc": "" },
          +	{ "mask": "+7(38845)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Онгудай", "operator": "", "desc": "" },
          +	{ "mask": "+7(38846)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Акташ", "operator": "", "desc": "" },
          +	{ "mask": "+7(38847)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Усть-Кан", "operator": "", "desc": "" },
          +	{ "mask": "+7(38848)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Усть-Кокса", "operator": "", "desc": "" },
          +	{ "mask": "+7(38849)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Алтай", "city": "Шебалино", "operator": "", "desc": "" },
          +	{ "mask": "+7(390)###-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3902)##-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Абакан", "operator": "", "desc": "" },
          +	{ "mask": "+7(39031)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Черногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39032)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Усть-Абакан", "operator": "", "desc": "" },
          +	{ "mask": "+7(39033)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Сорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39034)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Боград", "operator": "", "desc": "" },
          +	{ "mask": "+7(39035)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Шира", "operator": "", "desc": "" },
          +	{ "mask": "+7(39036)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Копьёво", "operator": "", "desc": "" },
          +	{ "mask": "+7(39041)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Белый Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(39042)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Саяногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39044)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Бея", "operator": "", "desc": "" },
          +	{ "mask": "+7(39045)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Аскиз", "operator": "", "desc": "" },
          +	{ "mask": "+7(39046)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Таштып", "operator": "", "desc": "" },
          +	{ "mask": "+7(39047)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хакасия", "city": "Абаза", "operator": "", "desc": "" },
          +	{ "mask": "+7(391)###-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(391)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Красноярск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Сосновоборск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Минусинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Емельяново", "operator": "", "desc": "" },
          +	{ "mask": "+7(39134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Краснотуранск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Идринское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Курагино", "operator": "", "desc": "" },
          +	{ "mask": "+7(39137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Каратузское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Ермаковское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Шушенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Партизанское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Мотыгино", "operator": "", "desc": "" },
          +	{ "mask": "+7(39142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Агинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Кодинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Дивногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Лесосибирск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Уяр", "operator": "", "desc": "" },
          +	{ "mask": "+7(39147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Новоселово", "operator": "", "desc": "" },
          +	{ "mask": "+7(39148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Балахта", "operator": "", "desc": "" },
          +	{ "mask": "+7(39149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Шалинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Новобирилюссы", "operator": "", "desc": "" },
          +	{ "mask": "+7(39151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Ачинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Диксон", "operator": "", "desc": "" },
          +	{ "mask": "+7(39153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Шарыпово", "operator": "", "desc": "" },
          +	{ "mask": "+7(39154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Козулька", "operator": "", "desc": "" },
          +	{ "mask": "+7(39155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Назарово", "operator": "", "desc": "" },
          +	{ "mask": "+7(39156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Ужур", "operator": "", "desc": "" },
          +	{ "mask": "+7(39157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Боготол", "operator": "", "desc": "" },
          +	{ "mask": "+7(39158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Тюхтет", "operator": "", "desc": "" },
          +	{ "mask": "+7(39159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Большой Улуй", "operator": "", "desc": "" },
          +	{ "mask": "+7(39160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Северо-Енисейский", "operator": "", "desc": "" },
          +	{ "mask": "+7(39161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Канск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Богучаны", "operator": "", "desc": "" },
          +	{ "mask": "+7(39163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Абан", "operator": "", "desc": "" },
          +	{ "mask": "+7(39164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Тасеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(39165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Заозерный", "operator": "", "desc": "" },
          +	{ "mask": "+7(39166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Пировское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Дзержинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Бородино", "operator": "", "desc": "" },
          +	{ "mask": "+7(39169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Зеленогорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39170)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Тура", "operator": "", "desc": "" },
          +	{ "mask": "+7(39171)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Нижний Ингаш", "operator": "", "desc": "" },
          +	{ "mask": "+7(39172)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Игарка", "operator": "", "desc": "" },
          +	{ "mask": "+7(39173)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Иланский", "operator": "", "desc": "" },
          +	{ "mask": "+7(39174)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Ирбейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39175)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Берёзовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(39176)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Хатанга", "operator": "", "desc": "" },
          +	{ "mask": "+7(39177)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Ванавара", "operator": "", "desc": "" },
          +	{ "mask": "+7(39178)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Байкит", "operator": "", "desc": "" },
          +	{ "mask": "+7(39179)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Караул", "operator": "", "desc": "" },
          +	{ "mask": "+7(3919)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Норильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3919)4#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Норильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39190)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Туруханск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39191)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Дудинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(39193)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Снежногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39195)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Енисейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39196)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Казачинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39197)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Железногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39198)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Большая Мурта", "operator": "", "desc": "" },
          +	{ "mask": "+7(39199)#-##-##", "cc": "RU", "cd": "Russia", "region": "Красноярский край", "city": "Сухобузимское", "operator": "", "desc": "" },
          +	{ "mask": "+7(394)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3942)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Кызыл", "operator": "", "desc": "" },
          +	{ "mask": "+7(39432)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Сарыг-Сеп", "operator": "", "desc": "" },
          +	{ "mask": "+7(39433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Ак-Довурак", "operator": "", "desc": "" },
          +	{ "mask": "+7(39434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Чадан", "operator": "", "desc": "" },
          +	{ "mask": "+7(39435)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Туран", "operator": "", "desc": "" },
          +	{ "mask": "+7(39436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Шагонар", "operator": "", "desc": "" },
          +	{ "mask": "+7(39437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Бай-Хаак", "operator": "", "desc": "" },
          +	{ "mask": "+7(39438)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Самагалтай", "operator": "", "desc": "" },
          +	{ "mask": "+7(39439)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Эрзин", "operator": "", "desc": "" },
          +	{ "mask": "+7(39441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Кызыл-Мажалык", "operator": "", "desc": "" },
          +	{ "mask": "+7(39442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Тээли", "operator": "", "desc": "" },
          +	{ "mask": "+7(39444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Хандагайты", "operator": "", "desc": "" },
          +	{ "mask": "+7(39445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Суг-Аксы", "operator": "", "desc": "" },
          +	{ "mask": "+7(39450)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Тоора-Хем", "operator": "", "desc": "" },
          +	{ "mask": "+7(39451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Тыва", "city": "Мугур-Аксы", "operator": "", "desc": "" },
          +	{ "mask": "+7(395)###-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(3952)##-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Иркутск", "operator": "", "desc": "" },
          +	{ "mask": "+7(3953)##-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Братск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39530)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Тулун", "operator": "", "desc": "" },
          +	{ "mask": "+7(39535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Усть-Илимск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Куйтун", "operator": "", "desc": "" },
          +	{ "mask": "+7(39537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Баяндай", "operator": "", "desc": "" },
          +	{ "mask": "+7(39538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Бохан", "operator": "", "desc": "" },
          +	{ "mask": "+7(39539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Оса", "operator": "", "desc": "" },
          +	{ "mask": "+7(39540)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Качуг", "operator": "", "desc": "" },
          +	{ "mask": "+7(39541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Усть-Ордынский", "operator": "", "desc": "" },
          +	{ "mask": "+7(39542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Байкальск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Усолье-Сибирское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Слюдянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(39545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Усть-Уда", "operator": "", "desc": "" },
          +	{ "mask": "+7(39546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Черемхово", "operator": "", "desc": "" },
          +	{ "mask": "+7(39548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Балаганск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Новонукутский", "operator": "", "desc": "" },
          +	{ "mask": "+7(3955)##-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Ангарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39550)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Шелехов", "operator": "", "desc": "" },
          +	{ "mask": "+7(39551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Жигалово", "operator": "", "desc": "" },
          +	{ "mask": "+7(39552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Залари", "operator": "", "desc": "" },
          +	{ "mask": "+7(39553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Саянск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Зима", "operator": "", "desc": "" },
          +	{ "mask": "+7(39557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Нижнеудинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Ольхонск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Еланцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(39560)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Ербогачен", "operator": "", "desc": "" },
          +	{ "mask": "+7(39561)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Бодайбо", "operator": "", "desc": "" },
          +	{ "mask": "+7(39562)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Казачинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(39563)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Тайшет", "operator": "", "desc": "" },
          +	{ "mask": "+7(39564)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Кутулик", "operator": "", "desc": "" },
          +	{ "mask": "+7(39565)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Усть-Кут", "operator": "", "desc": "" },
          +	{ "mask": "+7(39566)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Железногорск-Илимский", "operator": "", "desc": "" },
          +	{ "mask": "+7(39567)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Чунский", "operator": "", "desc": "" },
          +	{ "mask": "+7(39568)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Киренск", "operator": "", "desc": "" },
          +	{ "mask": "+7(39569)#-##-##", "cc": "RU", "cd": "Russia", "region": "Иркутская область", "city": "Мама", "operator": "", "desc": "" },
          +	{ "mask": "+7(401)###-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4012)##-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Калининград", "operator": "", "desc": "" },
          +	{ "mask": "+7(40141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Черняховск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Озёрск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Гусев", "operator": "", "desc": "" },
          +	{ "mask": "+7(40144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Нестеров", "operator": "", "desc": "" },
          +	{ "mask": "+7(40145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Балтийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Зеленоградск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Гурьевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Светлый", "operator": "", "desc": "" },
          +	{ "mask": "+7(40153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Светлогорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Пионерский", "operator": "", "desc": "" },
          +	{ "mask": "+7(40156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Багратионовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Правдинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Полесск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Гвардейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Советск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Неман", "operator": "", "desc": "" },
          +	{ "mask": "+7(40163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Славск", "operator": "", "desc": "" },
          +	{ "mask": "+7(40164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калининградская область", "city": "Краснознаменск", "operator": "", "desc": "" },
          +	{ "mask": "+7(411)###-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4112)##-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Якутск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Бердигестях", "operator": "", "desc": "" },
          +	{ "mask": "+7(41132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Вилюйск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Верхневилюйск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Нюрба", "operator": "", "desc": "" },
          +	{ "mask": "+7(41135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Сунтар", "operator": "", "desc": "" },
          +	{ "mask": "+7(41136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Мирный", "operator": "", "desc": "" },
          +	{ "mask": "+7(41137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Ленск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Олёкминск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Солнечный", "operator": "", "desc": "" },
          +	{ "mask": "+7(41141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Усть-Мая", "operator": "", "desc": "" },
          +	{ "mask": "+7(41142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Амга", "operator": "", "desc": "" },
          +	{ "mask": "+7(41143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Майя", "operator": "", "desc": "" },
          +	{ "mask": "+7(41144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Покровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Алдан", "operator": "", "desc": "" },
          +	{ "mask": "+7(41147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Нерюнгри", "operator": "", "desc": "" },
          +	{ "mask": "+7(41150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Хонуу", "operator": "", "desc": "" },
          +	{ "mask": "+7(41151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Чурапча", "operator": "", "desc": "" },
          +	{ "mask": "+7(41152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Ытык-Кюёль", "operator": "", "desc": "" },
          +	{ "mask": "+7(41153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Хандыга", "operator": "", "desc": "" },
          +	{ "mask": "+7(41154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Усть-Нера", "operator": "", "desc": "" },
          +	{ "mask": "+7(41155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Зырянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(41156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Среднеколымск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Черский", "operator": "", "desc": "" },
          +	{ "mask": "+7(41158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Чокурдах", "operator": "", "desc": "" },
          +	{ "mask": "+7(41159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Белая Гора", "operator": "", "desc": "" },
          +	{ "mask": "+7(41160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Батагай-Алыта", "operator": "", "desc": "" },
          +	{ "mask": "+7(41161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Борогонцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(41162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Намцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(41163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Сангар", "operator": "", "desc": "" },
          +	{ "mask": "+7(41164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Жиганск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Батагай", "operator": "", "desc": "" },
          +	{ "mask": "+7(41166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Депутатский", "operator": "", "desc": "" },
          +	{ "mask": "+7(41167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Тикси", "operator": "", "desc": "" },
          +	{ "mask": "+7(41168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Саскылах", "operator": "", "desc": "" },
          +	{ "mask": "+7(41169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Якутия", "city": "Оленёк", "operator": "", "desc": "" },
          +	{ "mask": "+7(413)###-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4132)##-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Магадан", "operator": "", "desc": "" },
          +	{ "mask": "+7(41341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Ола", "operator": "", "desc": "" },
          +	{ "mask": "+7(41342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Палатка", "operator": "", "desc": "" },
          +	{ "mask": "+7(41343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Ягодное", "operator": "", "desc": "" },
          +	{ "mask": "+7(41344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Усть-Омчуг", "operator": "", "desc": "" },
          +	{ "mask": "+7(41345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Сусуман", "operator": "", "desc": "" },
          +	{ "mask": "+7(41346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Омсукчан", "operator": "", "desc": "" },
          +	{ "mask": "+7(41347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Сеймчан", "operator": "", "desc": "" },
          +	{ "mask": "+7(41348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Магаданская область", "city": "Эвенск", "operator": "", "desc": "" },
          +	{ "mask": "+7(415)###-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4152)##-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Петропавловск-Камчатский", "operator": "", "desc": "" },
          +	{ "mask": "+7(41531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Елизово", "operator": "", "desc": "" },
          +	{ "mask": "+7(41532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Усть-Большерецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(41533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Мильково", "operator": "", "desc": "" },
          +	{ "mask": "+7(41534)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Усть-Камчатск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Вилючинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Соболево", "operator": "", "desc": "" },
          +	{ "mask": "+7(41537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Тигиль", "operator": "", "desc": "" },
          +	{ "mask": "+7(41538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Вилючинск-3", "operator": "", "desc": "" },
          +	{ "mask": "+7(41539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Усть-Хайрюзово", "operator": "", "desc": "" },
          +	{ "mask": "+7(41541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Ключи", "operator": "", "desc": "" },
          +	{ "mask": "+7(41542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Эссо", "operator": "", "desc": "" },
          +	{ "mask": "+7(41543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Палана", "operator": "", "desc": "" },
          +	{ "mask": "+7(41544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Тиличики", "operator": "", "desc": "" },
          +	{ "mask": "+7(41545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Оссора", "operator": "", "desc": "" },
          +	{ "mask": "+7(41546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Каменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(41547)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Никольское", "operator": "", "desc": "" },
          +	{ "mask": "+7(41548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Камчатский край", "city": "Козыревск", "operator": "", "desc": "" },
          +	{ "mask": "+7(416)###-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4162)##-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": ["Благовещенск", "Благовещенский район"], "operator": "", "desc": "" },
          +	{ "mask": "+7(41631)2-0#-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Ивановский район", "operator": "Транссвязьтелеком", "desc": "" },
          +	{ "mask": "+7(41632)3-0#-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Октябрьский район", "operator": "Транссвязьтелеком", "desc": "" },
          +	{ "mask": "+7(41633)3-0#-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Райчихинск", "operator": "Транссвязьтелеком", "desc": "" },
          +	{ "mask": "+7(41634)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Бурейский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41637)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Михайловский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41638)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Тамбовский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41639)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Константиновский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41641)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Белогорский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41642)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Серышевский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41643)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Свободненский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41644)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Мазановский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41645)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Ромненский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41646)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Селемджинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41647)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Райчихинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(41648)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Архаринский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41649)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Ивановский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41651)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Шимановский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41652)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Октябрьский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41653)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Магдагачинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41654)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Сковородинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41655)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Селемджинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41656)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Тындинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41658)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Зейский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(421)###-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4212)##-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Хабаровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Николаевск-на-Амуре", "operator": "", "desc": "" },
          +	{ "mask": "+7(41636)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Завитинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41636)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Завитинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(41636)#-##-##", "cc": "RU", "cd": "Russia", "region": "Амурская область", "city": "Завитинский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(42137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Ванино", "operator": "", "desc": "" },
          +	{ "mask": "+7(42138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Советская Гавань", "operator": "", "desc": "" },
          +	{ "mask": "+7(42141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Охотск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Амурск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Чумикан", "operator": "", "desc": "" },
          +	{ "mask": "+7(42144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "им. Полины Осипенко", "operator": "", "desc": "" },
          +	{ "mask": "+7(42146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Солнечный", "operator": "", "desc": "" },
          +	{ "mask": "+7(42147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Аян", "operator": "", "desc": "" },
          +	{ "mask": "+7(42149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Чегдомын", "operator": "", "desc": "" },
          +	{ "mask": "+7(42151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Богородское", "operator": "", "desc": "" },
          +	{ "mask": "+7(42153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Вяземский", "operator": "", "desc": "" },
          +	{ "mask": "+7(42154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Переяславка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Бикин", "operator": "", "desc": "" },
          +	{ "mask": "+7(42156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Троицкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(4217)##-##-##", "cc": "RU", "cd": "Russia", "region": "Хабаровский край", "city": "Комсомольск-на-Амуре", "operator": "", "desc": "" },
          +	{ "mask": "+7(423)###-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Владивосток", "operator": "", "desc": "" },
          +	{ "mask": "+7(42331)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Славянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42334)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": ["Вольно-Надеждинское", "Раздольное"], "operator": "", "desc": "" },
          +	{ "mask": "+7(42335)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Большой Камень", "operator": "", "desc": "" },
          +	{ "mask": "+7(42337)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Артем", "operator": "", "desc": "" },
          +	{ "mask": "+7(42339)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Фокино", "operator": "", "desc": "" },
          +	{ "mask": "+7(4234)##-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Уссурийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Покровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Пограничный", "operator": "", "desc": "" },
          +	{ "mask": "+7(42346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Михайловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Хороль", "operator": "", "desc": "" },
          +	{ "mask": "+7(42349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Камень-Рыболов", "operator": "", "desc": "" },
          +	{ "mask": "+7(42351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Черниговка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Спасск-Дальний", "operator": "", "desc": "" },
          +	{ "mask": "+7(42354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Кировский", "operator": "", "desc": "" },
          +	{ "mask": "+7(42355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Лесозаводск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Дальнереченск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Лучегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42359)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Новопокровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(4236)##-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": ["Находка", "Порт Восточный"], "operator": "", "desc": "" },
          +	{ "mask": "+7(42361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Арсеньев", "operator": "", "desc": "" },
          +	{ "mask": "+7(42362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Анучино", "operator": "", "desc": "" },
          +	{ "mask": "+7(42363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Партизанск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Владимиро-Александровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(42371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Яковлевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Чугуевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(42373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Дальнегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Терней", "operator": "", "desc": "" },
          +	{ "mask": "+7(42375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Кавалерово", "operator": "", "desc": "" },
          +	{ "mask": "+7(42376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Ольга", "operator": "", "desc": "" },
          +	{ "mask": "+7(42377)#-##-##", "cc": "RU", "cd": "Russia", "region": "Приморский край", "city": "Лазо", "operator": "", "desc": "" },
          +	{ "mask": "+7(424)###-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4242)##-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Южно-Сахалинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42431)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Поронайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42432)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Углегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Холмск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Александровск-Сахалинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(42435)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Корсаков", "operator": "", "desc": "" },
          +	{ "mask": "+7(42436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Невельск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Оха", "operator": "", "desc": "" },
          +	{ "mask": "+7(42441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Анива", "operator": "", "desc": "" },
          +	{ "mask": "+7(42442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Долинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Макаров", "operator": "", "desc": "" },
          +	{ "mask": "+7(42444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Ноглики", "operator": "", "desc": "" },
          +	{ "mask": "+7(42446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Томари", "operator": "", "desc": "" },
          +	{ "mask": "+7(42447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Тымовское", "operator": "", "desc": "" },
          +	{ "mask": "+7(42452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Смирных", "operator": "", "desc": "" },
          +	{ "mask": "+7(42453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Северо-Курильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Курильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(42455)#-##-##", "cc": "RU", "cd": "Russia", "region": "Сахалинская область", "city": "Южно-Курильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(426)###-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(42622)#-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "Биробиджан", "operator": "", "desc": "" },
          +	{ "mask": "+7(42632)#-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "Смидович", "operator": "", "desc": "" },
          +	{ "mask": "+7(42663)#-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "Ленинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(42665)#-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "Амурзет", "operator": "", "desc": "" },
          +	{ "mask": "+7(42666)#-##-##", "cc": "RU", "cd": "Russia", "region": "Еврейская автономная область", "city": "Облучье", "operator": "", "desc": "" },
          +	{ "mask": "+7(427)###-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(42722)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Анадырь", "operator": "", "desc": "" },
          +	{ "mask": "+7(42732)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Угольные Копи", "operator": "", "desc": "" },
          +	{ "mask": "+7(42733)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Беринговский", "operator": "", "desc": "" },
          +	{ "mask": "+7(42734)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Эгвекинот", "operator": "", "desc": "" },
          +	{ "mask": "+7(42735)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Провидения", "operator": "", "desc": "" },
          +	{ "mask": "+7(42736)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Лаврентия", "operator": "", "desc": "" },
          +	{ "mask": "+7(42737)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Певек", "operator": "", "desc": "" },
          +	{ "mask": "+7(42738)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Билибино", "operator": "", "desc": "" },
          +	{ "mask": "+7(42739)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чукотский автономный округ", "city": "Мыс Шмидта", "operator": "", "desc": "" },
          +	{ "mask": "+7(471)###-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4712)##-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Курск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Курчатов", "operator": "", "desc": "" },
          +	{ "mask": "+7(47132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Глушково", "operator": "", "desc": "" },
          +	{ "mask": "+7(47133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Горшечное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Пристень", "operator": "", "desc": "" },
          +	{ "mask": "+7(47135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Поныри", "operator": "", "desc": "" },
          +	{ "mask": "+7(47136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Большое Солдатское", "operator": "", "desc": "" },
          +	{ "mask": "+7(47137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Хомутовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Льгов", "operator": "", "desc": "" },
          +	{ "mask": "+7(47141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Обоянь", "operator": "", "desc": "" },
          +	{ "mask": "+7(47142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Прямицыно", "operator": "", "desc": "" },
          +	{ "mask": "+7(47143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Суджа", "operator": "", "desc": "" },
          +	{ "mask": "+7(47144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Фатеж", "operator": "", "desc": "" },
          +	{ "mask": "+7(47145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Щигры", "operator": "", "desc": "" },
          +	{ "mask": "+7(47146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Медвенка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Коренево", "operator": "", "desc": "" },
          +	{ "mask": "+7(47148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Железногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Белая", "operator": "", "desc": "" },
          +	{ "mask": "+7(47150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Дмитриев-Льговский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Золотухино", "operator": "", "desc": "" },
          +	{ "mask": "+7(47152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Рыльск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Тим", "operator": "", "desc": "" },
          +	{ "mask": "+7(47154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Солнцево", "operator": "", "desc": "" },
          +	{ "mask": "+7(47155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Мантурово", "operator": "", "desc": "" },
          +	{ "mask": "+7(47156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Конышевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Касторное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Кшенский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Курская область", "city": "Черемисиново", "operator": "", "desc": "" },
          +	{ "mask": "+7(472)###-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4722)##-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Белгород", "operator": "", "desc": "" },
          +	{ "mask": "+7(47231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Короча", "operator": "", "desc": "" },
          +	{ "mask": "+7(47232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Чернянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Новый Оскол", "operator": "", "desc": "" },
          +	{ "mask": "+7(47234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Алексеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Волоконовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Валуйки", "operator": "", "desc": "" },
          +	{ "mask": "+7(47237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Вейделевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Ровеньки", "operator": "", "desc": "" },
          +	{ "mask": "+7(47241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Губкин", "operator": "", "desc": "" },
          +	{ "mask": "+7(47242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Прохоровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Ивня", "operator": "", "desc": "" },
          +	{ "mask": "+7(47244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Строитель", "operator": "", "desc": "" },
          +	{ "mask": "+7(47245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Ракитное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Борисовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Красногвардейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(47248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Шебекино", "operator": "", "desc": "" },
          +	{ "mask": "+7(4725)##-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Старый Оскол", "operator": "", "desc": "" },
          +	{ "mask": "+7(47261)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Грайворон", "operator": "", "desc": "" },
          +	{ "mask": "+7(47262)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Красное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47263)#-##-##", "cc": "RU", "cd": "Russia", "region": "Белгородская область", "city": "Красная Яруга", "operator": "", "desc": "" },
          +	{ "mask": "+7(473)###-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Воронеж", "operator": "", "desc": "" },
          +	{ "mask": "+7(47340)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Рамонь", "operator": "", "desc": "" },
          +	{ "mask": "+7(47341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Новая Усмань", "operator": "", "desc": "" },
          +	{ "mask": "+7(47342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Каширское", "operator": "", "desc": "" },
          +	{ "mask": "+7(47343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Верхняя Хава", "operator": "", "desc": "" },
          +	{ "mask": "+7(47344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Панино", "operator": "", "desc": "" },
          +	{ "mask": "+7(47345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Эртиль", "operator": "", "desc": "" },
          +	{ "mask": "+7(47346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Анна", "operator": "", "desc": "" },
          +	{ "mask": "+7(47347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Терновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Грибановский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47350)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Бобров", "operator": "", "desc": "" },
          +	{ "mask": "+7(47352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Таловая", "operator": "", "desc": "" },
          +	{ "mask": "+7(47353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Новохоперск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Борисоглебск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Верхний Мамон", "operator": "", "desc": "" },
          +	{ "mask": "+7(47356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Воробьёвка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Каменка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Бутурлиновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Павловск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Калач", "operator": "", "desc": "" },
          +	{ "mask": "+7(47364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Нововоронеж", "operator": "", "desc": "" },
          +	{ "mask": "+7(47365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Петропавловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Богучар", "operator": "", "desc": "" },
          +	{ "mask": "+7(47367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Кантемировка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47370)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Нижнедевицк", "operator": "", "desc": "" },
          +	{ "mask": "+7(47371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Хохольский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": ["Семилуки", "Семилукский район"], "operator": "", "desc": "" },
          +	{ "mask": "+7(47374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Репьевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Острогожск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Поворино", "operator": "", "desc": "" },
          +	{ "mask": "+7(47391)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Лиски", "operator": "", "desc": "" },
          +	{ "mask": "+7(47394)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Подгоренский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47395)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Ольховатка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47396)#-##-##", "cc": "RU", "cd": "Russia", "region": "Воронежская область", "city": "Россошь", "operator": "", "desc": "" },
          +	{ "mask": "+7(474)###-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4742)##-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Липецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(47461)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Грязи", "operator": "", "desc": "" },
          +	{ "mask": "+7(47462)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Добринка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47463)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Доброе", "operator": "", "desc": "" },
          +	{ "mask": "+7(47464)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Лев Толстой", "operator": "", "desc": "" },
          +	{ "mask": "+7(47465)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Данков", "operator": "", "desc": "" },
          +	{ "mask": "+7(47466)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Лебедянь", "operator": "", "desc": "" },
          +	{ "mask": "+7(47467)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Елец", "operator": "", "desc": "" },
          +	{ "mask": "+7(47468)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Долгоруково", "operator": "", "desc": "" },
          +	{ "mask": "+7(47469)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Красное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47471)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Задонск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47472)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Усмань", "operator": "", "desc": "" },
          +	{ "mask": "+7(47473)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Волово", "operator": "", "desc": "" },
          +	{ "mask": "+7(47474)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Тербуны", "operator": "", "desc": "" },
          +	{ "mask": "+7(47475)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Чаплыгин", "operator": "", "desc": "" },
          +	{ "mask": "+7(47476)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Становое", "operator": "", "desc": "" },
          +	{ "mask": "+7(47477)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Хлевное", "operator": "", "desc": "" },
          +	{ "mask": "+7(47478)#-##-##", "cc": "RU", "cd": "Russia", "region": "Липецкая область", "city": "Измалково", "operator": "", "desc": "" },
          +	{ "mask": "+7(475)###-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4752)##-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Тамбов", "operator": "", "desc": "" },
          +	{ "mask": "+7(47531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Рассказово", "operator": "", "desc": "" },
          +	{ "mask": "+7(47532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Сосновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Моршанск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47534)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Бондари", "operator": "", "desc": "" },
          +	{ "mask": "+7(47535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Жердевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Дмитриевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Кирсанов", "operator": "", "desc": "" },
          +	{ "mask": "+7(47541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Котовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Мордово", "operator": "", "desc": "" },
          +	{ "mask": "+7(47543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Староюрьево", "operator": "", "desc": "" },
          +	{ "mask": "+7(47544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Петровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(47545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Мичуринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(47546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Мучкапский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Первомайский", "operator": "", "desc": "" },
          +	{ "mask": "+7(47551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Гавриловка Вторая", "operator": "", "desc": "" },
          +	{ "mask": "+7(47552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Знаменка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Инжавино", "operator": "", "desc": "" },
          +	{ "mask": "+7(47554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Пичаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(47555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Ржакса", "operator": "", "desc": "" },
          +	{ "mask": "+7(47556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Сатинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Токарёвка", "operator": "", "desc": "" },
          +	{ "mask": "+7(47558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Уварово", "operator": "", "desc": "" },
          +	{ "mask": "+7(47559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тамбовская область", "city": "Умёт", "operator": "", "desc": "" },
          +	{ "mask": "+7(481)###-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4812)##-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Смоленск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Сычевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Вязьма", "operator": "", "desc": "" },
          +	{ "mask": "+7(48132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Велиж", "operator": "", "desc": "" },
          +	{ "mask": "+7(48133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Шумячи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Рославль", "operator": "", "desc": "" },
          +	{ "mask": "+7(48135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Гагарин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Тёмкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Угра", "operator": "", "desc": "" },
          +	{ "mask": "+7(48138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Новодугино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Холм-Жирковский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Хиславичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Рудня", "operator": "", "desc": "" },
          +	{ "mask": "+7(48142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Сафоново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Ярцево", "operator": "", "desc": "" },
          +	{ "mask": "+7(48144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Дорогобуж", "operator": "", "desc": "" },
          +	{ "mask": "+7(48145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Красный", "operator": "", "desc": "" },
          +	{ "mask": "+7(48146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Ельня", "operator": "", "desc": "" },
          +	{ "mask": "+7(48147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Демидов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Монастырщина", "operator": "", "desc": "" },
          +	{ "mask": "+7(48149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Починок", "operator": "", "desc": "" },
          +	{ "mask": "+7(48153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Десногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Ершичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Глинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Духовщина", "operator": "", "desc": "" },
          +	{ "mask": "+7(48167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Смоленская область", "city": "Кардымово", "operator": "", "desc": "" },
          +	{ "mask": "+7(482)###-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4822)##-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Тверь", "operator": "", "desc": "" },
          +	{ "mask": "+7(48230)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Пено", "operator": "", "desc": "" },
          +	{ "mask": "+7(48231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Бежецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(48232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Ржев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Вышний Волочек", "operator": "", "desc": "" },
          +	{ "mask": "+7(48234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Кашин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Осташков", "operator": "", "desc": "" },
          +	{ "mask": "+7(48236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Кимры", "operator": "", "desc": "" },
          +	{ "mask": "+7(48237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Красный Холм", "operator": "", "desc": "" },
          +	{ "mask": "+7(48238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Бологое", "operator": "", "desc": "" },
          +	{ "mask": "+7(48239)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Фирово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Конаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Рамешки", "operator": "", "desc": "" },
          +	{ "mask": "+7(48246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Сонково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Калязин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48250)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Белый", "operator": "", "desc": "" },
          +	{ "mask": "+7(48251)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Торжок", "operator": "", "desc": "" },
          +	{ "mask": "+7(48253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Максатиха", "operator": "", "desc": "" },
          +	{ "mask": "+7(48255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Удомля", "operator": "", "desc": "" },
          +	{ "mask": "+7(48257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Кувшиново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48258)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Оленино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48261)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Лихославль", "operator": "", "desc": "" },
          +	{ "mask": "+7(48262)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Зубцов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48263)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Старица", "operator": "", "desc": "" },
          +	{ "mask": "+7(48264)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Весьегонск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48265)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Западная Двина", "operator": "", "desc": "" },
          +	{ "mask": "+7(48266)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Нелидово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48267)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Андреаполь", "operator": "", "desc": "" },
          +	{ "mask": "+7(48268)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Торопец", "operator": "", "desc": "" },
          +	{ "mask": "+7(48269)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Селижарово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48271)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Лесное", "operator": "", "desc": "" },
          +	{ "mask": "+7(48272)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Сандово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48273)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Жарковский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48274)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Кесова Гора", "operator": "", "desc": "" },
          +	{ "mask": "+7(48275)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Молоково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48276)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тверская область", "city": "Спирово", "operator": "", "desc": "" },
          +	{ "mask": "+7(483)###-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4832)##-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": ["Брянск", "Сельцо", "Белые Берега"], "operator": "", "desc": "" },
          +	{ "mask": "+7(48330)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Сураж", "operator": "", "desc": "" },
          +	{ "mask": "+7(48331)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Рогнедино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48332)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Дубровка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48333)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": ["Дятьково", "Фокино"], "operator": "", "desc": "" },
          +	{ "mask": "+7(48334)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Жуковка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48335)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Карачев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48336)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Клинцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(48338)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Клетня", "operator": "", "desc": "" },
          +	{ "mask": "+7(48339)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Мглин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48340)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Гордеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Выгоничи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Навля", "operator": "", "desc": "" },
          +	{ "mask": "+7(48343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Новозыбков", "operator": "", "desc": "" },
          +	{ "mask": "+7(48344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Жирятино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Почеп", "operator": "", "desc": "" },
          +	{ "mask": "+7(48346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Красная Гора", "operator": "", "desc": "" },
          +	{ "mask": "+7(48347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Климово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Стародуб", "operator": "", "desc": "" },
          +	{ "mask": "+7(48349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Погар", "operator": "", "desc": "" },
          +	{ "mask": "+7(48351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Унеча", "operator": "", "desc": "" },
          +	{ "mask": "+7(48352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Трубчевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Суземка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Локоть", "operator": "", "desc": "" },
          +	{ "mask": "+7(48355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Комаричи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Севск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Брянская область", "city": "Злынка", "operator": "", "desc": "" },
          +	{ "mask": "+7(484)###-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4842)##-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Калуга", "operator": "", "desc": "" },
          +	{ "mask": "+7(48431)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Малоярославец", "operator": "", "desc": "" },
          +	{ "mask": "+7(48432)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Жуков", "operator": "", "desc": "" },
          +	{ "mask": "+7(48433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Медынь", "operator": "", "desc": "" },
          +	{ "mask": "+7(48434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Кондрово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48435)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Таруса", "operator": "", "desc": "" },
          +	{ "mask": "+7(48436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Юхнов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Ферзиково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48438)2-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Балабаново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48438)4-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Боровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48438)6-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Балабаново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48439)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Обнинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Перемышль", "operator": "", "desc": "" },
          +	{ "mask": "+7(48442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Козельск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Ульяново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Людиново", "operator": "", "desc": "" },
          +	{ "mask": "+7(48445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Жиздра", "operator": "", "desc": "" },
          +	{ "mask": "+7(48446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Мещовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Думиничи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48448)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Бабынино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48449)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Износки", "operator": "", "desc": "" },
          +	{ "mask": "+7(48451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Сухиничи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Мосальск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Хвастовичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(48454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Барятино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48455)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Спас-Деменск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48456)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Киров", "operator": "", "desc": "" },
          +	{ "mask": "+7(48457)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калужская область", "city": "Бетлица", "operator": "", "desc": "" },
          +	{ "mask": "+7(485)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4852)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Ярославль", "operator": "", "desc": "" },
          +	{ "mask": "+7(48531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Некрасовское", "operator": "", "desc": "" },
          +	{ "mask": "+7(48532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Углич", "operator": "", "desc": "" },
          +	{ "mask": "+7(48533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Тутаев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48534)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Гаврилов Ям", "operator": "", "desc": "" },
          +	{ "mask": "+7(48535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Переславль-Залесский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Ростов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Данилов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Борисоглебский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Большое Село", "operator": "", "desc": "" },
          +	{ "mask": "+7(48543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Любим", "operator": "", "desc": "" },
          +	{ "mask": "+7(48544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Мышкин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Брейтово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Пошехонье", "operator": "", "desc": "" },
          +	{ "mask": "+7(48547)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Новый Некоуз", "operator": "", "desc": "" },
          +	{ "mask": "+7(48549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Пречистое", "operator": "", "desc": "" },
          +	{ "mask": "+7(4855)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ярославская область", "city": "Рыбинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(486)###-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4862)##-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": ["Орёл", "Орловский район"], "operator": "", "desc": "" },
          +	{ "mask": "+7(48640)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Болхов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48642)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Хотынец", "operator": "", "desc": "" },
          +	{ "mask": "+7(48643)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Кромы", "operator": "", "desc": "" },
          +	{ "mask": "+7(48644)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Шаблыкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48645)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Змиевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48646)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Мценск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48647)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Нарышкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48648)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Залегощь", "operator": "", "desc": "" },
          +	{ "mask": "+7(48649)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Дмитровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48661)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "", "operator": "МТС", "desc": "мобильные телефоны с зоновыми номерами" },
          +	{ "mask": "+7(48662)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Знаменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(48663)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Красная Заря", "operator": "", "desc": "" },
          +	{ "mask": "+7(48664)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Покровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(48665)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Сосково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48666)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Тросна", "operator": "", "desc": "" },
          +	{ "mask": "+7(48667)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Корсаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(48672)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Долгое", "operator": "", "desc": "" },
          +	{ "mask": "+7(48673)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Новосиль", "operator": "", "desc": "" },
          +	{ "mask": "+7(48674)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Колпны", "operator": "", "desc": "" },
          +	{ "mask": "+7(48675)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Глазуновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(48676)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Верховье", "operator": "", "desc": "" },
          +	{ "mask": "+7(48677)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Ливны", "operator": "", "desc": "" },
          +	{ "mask": "+7(48678)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Хомутово", "operator": "", "desc": "" },
          +	{ "mask": "+7(48679)#-##-##", "cc": "RU", "cd": "Russia", "region": "Орловская область", "city": "Малоархангельск", "operator": "", "desc": "" },
          +	{ "mask": "+7(487)###-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4872)##-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Тула", "operator": "", "desc": "" },
          +	{ "mask": "+7(48731)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Узловая", "operator": "", "desc": "" },
          +	{ "mask": "+7(48732)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Дубна", "operator": "", "desc": "" },
          +	{ "mask": "+7(48733)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Арсеньево", "operator": "", "desc": "" },
          +	{ "mask": "+7(48734)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Заокский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48735)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Кимовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48736)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Одоев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48741)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Ефремов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48742)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Белев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48743)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Куркино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48744)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Архангельское", "operator": "", "desc": "" },
          +	{ "mask": "+7(48745)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Венев", "operator": "", "desc": "" },
          +	{ "mask": "+7(48746)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Донской", "operator": "", "desc": "" },
          +	{ "mask": "+7(48751)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Щекино", "operator": "", "desc": "" },
          +	{ "mask": "+7(48752)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Плавск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48753)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Алексин", "operator": "", "desc": "" },
          +	{ "mask": "+7(48754)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Киреевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48755)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Тёплое", "operator": "", "desc": "" },
          +	{ "mask": "+7(48756)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Чернь", "operator": "", "desc": "" },
          +	{ "mask": "+7(48761)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Богородицк", "operator": "", "desc": "" },
          +	{ "mask": "+7(48762)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Новомосковск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48763)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Суворов", "operator": "", "desc": "" },
          +	{ "mask": "+7(48766)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Ясногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(48767)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Ленинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(48768)#-##-##", "cc": "RU", "cd": "Russia", "region": "Тульская область", "city": "Волово", "operator": "", "desc": "" },
          +	{ "mask": "+7(491)###-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4912)##-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": ["Рязань", "Солотча"], "operator": "", "desc": "" },
          +	{ "mask": "+7(49130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Михайлов", "operator": "", "desc": "" },
          +	{ "mask": "+7(49131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Касимов", "operator": "", "desc": "" },
          +	{ "mask": "+7(49132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Ряжск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Сасово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Спасск-Рязанский", "operator": "", "desc": "" },
          +	{ "mask": "+7(49136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Шилово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Рыбное", "operator": "", "desc": "" },
          +	{ "mask": "+7(49138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Чучково", "operator": "", "desc": "" },
          +	{ "mask": "+7(49139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Кадом", "operator": "", "desc": "" },
          +	{ "mask": "+7(49141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Новомичуринск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Спас-Клепики", "operator": "", "desc": "" },
          +	{ "mask": "+7(49143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Кораблино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Ермишь", "operator": "", "desc": "" },
          +	{ "mask": "+7(49145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Пителино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Путятино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Шацк", "operator": "", "desc": "" },
          +	{ "mask": "+7(49148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Сараи", "operator": "", "desc": "" },
          +	{ "mask": "+7(49151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Старожилово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Сапожок", "operator": "", "desc": "" },
          +	{ "mask": "+7(49153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Захарово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Ухолово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Пронск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Скопин", "operator": "", "desc": "" },
          +	{ "mask": "+7(49157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Милославское", "operator": "", "desc": "" },
          +	{ "mask": "+7(49158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Рязанская область", "city": "Александро-Невский", "operator": "", "desc": "" },
          +	{ "mask": "+7(492)###-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4922)##-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Владимир", "operator": "", "desc": "" },
          +	{ "mask": "+7(49231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Суздаль", "operator": "", "desc": "" },
          +	{ "mask": "+7(49232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Ковров", "operator": "", "desc": "" },
          +	{ "mask": "+7(49233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Вязники", "operator": "", "desc": "" },
          +	{ "mask": "+7(49234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Муром", "operator": "", "desc": "" },
          +	{ "mask": "+7(49235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Судогда", "operator": "", "desc": "" },
          +	{ "mask": "+7(49236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Красная Горбатка", "operator": "", "desc": "" },
          +	{ "mask": "+7(49237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Киржач", "operator": "", "desc": "" },
          +	{ "mask": "+7(49238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Гороховец", "operator": "", "desc": "" },
          +	{ "mask": "+7(49241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Гусь-Хрустальный", "operator": "", "desc": "" },
          +	{ "mask": "+7(49242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Собинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(49243)2-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Петушки", "operator": "", "desc": "" },
          +	{ "mask": "+7(49243)6-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Покров", "operator": "", "desc": "" },
          +	{ "mask": "+7(49244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Александров", "operator": "", "desc": "" },
          +	{ "mask": "+7(49245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Кольчугино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Юрьев-Польский", "operator": "", "desc": "" },
          +	{ "mask": "+7(49247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Меленки", "operator": "", "desc": "" },
          +	{ "mask": "+7(49248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Камешково", "operator": "", "desc": "" },
          +	{ "mask": "+7(49254)#-##-##", "cc": "RU", "cd": "Russia", "region": "Владимирская область", "city": "Радужный", "operator": "", "desc": "" },
          +	{ "mask": "+7(493)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4932)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Иваново", "operator": "", "desc": "" },
          +	{ "mask": "+7(49331)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Кинешма", "operator": "", "desc": "" },
          +	{ "mask": "+7(49333)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Заволжск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49334)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Палех", "operator": "", "desc": "" },
          +	{ "mask": "+7(49336)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Родники", "operator": "", "desc": "" },
          +	{ "mask": "+7(49337)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Юрьевец", "operator": "", "desc": "" },
          +	{ "mask": "+7(49339)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Приволжск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Фурманов", "operator": "", "desc": "" },
          +	{ "mask": "+7(49343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Тейково", "operator": "", "desc": "" },
          +	{ "mask": "+7(49344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Лух", "operator": "", "desc": "" },
          +	{ "mask": "+7(49345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Пучеж", "operator": "", "desc": "" },
          +	{ "mask": "+7(49346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Пестяки", "operator": "", "desc": "" },
          +	{ "mask": "+7(49347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Южа", "operator": "", "desc": "" },
          +	{ "mask": "+7(49349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Верхний Ландех", "operator": "", "desc": "" },
          +	{ "mask": "+7(49351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Шуя", "operator": "", "desc": "" },
          +	{ "mask": "+7(49352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Комсомольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(49353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Ильинское-Хованское", "operator": "", "desc": "" },
          +	{ "mask": "+7(49354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Вичуга", "operator": "", "desc": "" },
          +	{ "mask": "+7(49355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Гаврилов Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(49356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Савино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ивановская область", "city": "Лежнево", "operator": "", "desc": "" },
          +	{ "mask": "+7(494)###-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(4942)##-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Кострома", "operator": "", "desc": "" },
          +	{ "mask": "+7(49430)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Антропово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49431)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Нерехта", "operator": "", "desc": "" },
          +	{ "mask": "+7(49432)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Красное-на-Волге", "operator": "", "desc": "" },
          +	{ "mask": "+7(49433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Судиславль", "operator": "", "desc": "" },
          +	{ "mask": "+7(49434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Сусанино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49435)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Буй", "operator": "", "desc": "" },
          +	{ "mask": "+7(49436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Солигалич", "operator": "", "desc": "" },
          +	{ "mask": "+7(49437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Галич", "operator": "", "desc": "" },
          +	{ "mask": "+7(49438)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Островское", "operator": "", "desc": "" },
          +	{ "mask": "+7(49439)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Павино", "operator": "", "desc": "" },
          +	{ "mask": "+7(49440)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Парфеньево", "operator": "", "desc": "" },
          +	{ "mask": "+7(49441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Чухлома", "operator": "", "desc": "" },
          +	{ "mask": "+7(49442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Кадый", "operator": "", "desc": "" },
          +	{ "mask": "+7(49443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Кологрив", "operator": "", "desc": "" },
          +	{ "mask": "+7(49444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Нея", "operator": "", "desc": "" },
          +	{ "mask": "+7(49445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Макарьев", "operator": "", "desc": "" },
          +	{ "mask": "+7(49446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Мантурово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Георгиевское", "operator": "", "desc": "" },
          +	{ "mask": "+7(49448)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Поназырево", "operator": "", "desc": "" },
          +	{ "mask": "+7(49449)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Шарья", "operator": "", "desc": "" },
          +	{ "mask": "+7(49450)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Вохма", "operator": "", "desc": "" },
          +	{ "mask": "+7(49451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Боговарово", "operator": "", "desc": "" },
          +	{ "mask": "+7(49452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Пыщуг", "operator": "", "desc": "" },
          +	{ "mask": "+7(49453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Костромская область", "city": "Волгореченск", "operator": "", "desc": "" },
          +	{ "mask": "+7(495)###-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(495)323-8#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Аэропорт Домодедово", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)323-9#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Аэропорт Домодедово", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)338-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Мосрентген", "operator": "МГТС", "desc": "часть номеров АТС" },
          +	{ "mask": "+7(495)339-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Мосрентген", "operator": "МГТС", "desc": "часть номеров АТС" },
          +	{ "mask": "+7(495)355-9#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Развилка", "operator": "ОАО «Газпромсвязь»", "desc": "" },
          +	{ "mask": "+7(495)408-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Долгопрудный", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)439-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Московский", "operator": "ЦентрТелеком", "desc": "часть номеров АТС" },
          +	{ "mask": "+7(495)50#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Люберцы", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)500-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)51#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Королёв", "Юбилейный"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)52#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Балашиха", "Железнодорожный", "Реутов"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)541-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)542-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)543-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)544-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)545-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)546-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": "Ростелеком", "desc": "" },
          +	{ "mask": "+7(495)546-1#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Домодедово", "operator": "Ростелеком", "desc": "" },
          +	{ "mask": "+7(495)546-6#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Видное", "Развилка"], "operator": "Ростелеком", "desc": "" },
          +	{ "mask": "+7(495)546-8#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Домодедово", "operator": "Ростелеком", "desc": "" },
          +	{ "mask": "+7(495)548-0#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-1#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-4#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-5#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-6#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Поселок совхоза им. Ленина", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-7#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Поселок совхоза им. Ленина", "Поселок Володарского", "Горки Ленинские"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-8#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Поселок Володарского", "Горки Ленинские"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)548-9#-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Видное", "operator": "ЦентрТелеком", "desc": "промзона" },
          +	{ "mask": "+7(495)549-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Видное", "Московский", "пос. Ново-Дрожжино", "пос. Измайлово", "пос. Булатниково", "пос. Дубровский", "пос. Института Садоводства"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)55#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Люберцы", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)552-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Лыткарино", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)555-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Лыткарино", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)56#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Красногорск", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)57#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Королёв", "Мытищи", "Юбилейный"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)573-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Химки", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)576-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Долгопрудный", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)577-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Лобня", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)578-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Лобня", "Международный аэропорт «Шереметьево»"], "operator": "Порт-Телеком", "desc": "" },
          +	{ "mask": "+7(495)579-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": ["Долгопрудный", "Лобня"], "operator": "", "desc": "" },
          +	{ "mask": "+7(495)58#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Химки", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)585-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)589-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Мегафон", "Центральный Телеграф"], "desc": "" },
          +	{ "mask": "+7(495)59#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Одинцово", "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(495)597-##-##", "cc": "RU", "cd": "Russia", "region": "Москва и ближнее Подмосковье", "city": "Москва", "operator": ["Центральный Телеграф", "ЦентрТелеком"], "desc": "" },
          +	{ "mask": "+7(496)###-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)20#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Талдом", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)21#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Дубна", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)22#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Дмитров", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)24#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Клин", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)25#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Щёлковский район", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)26#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Солнечногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)27#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Руза", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)28#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Лотошино", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)30#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "ЗАО Калита-Телеком", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)31#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Истра", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)34#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Наро-Фоминск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)36#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Волоколамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)37#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Шаховская", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)38#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Можайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)40#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Егорьевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)41#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Орехово-Зуево", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)42#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Орехово-Зуево", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)43#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Павловский Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)44#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Воскресенск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)45#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Шатура", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)46#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Раменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)51#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Ногинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)52#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Черноголовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)53#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Пушкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)54#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Сергиев Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)55#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Сергиев Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)56#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Щелково", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)57#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Электросталь", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)61#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Коломна", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)63#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Луховицы", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)64#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Ступино", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)66#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Зарайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)67#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Серебряные Пруды", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)69#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Кашира", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)70#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Озеры", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)72#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Чехов", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)73#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Серпухов", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)75#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Подольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)76#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Подольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)77#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Серпухов", "operator": "", "desc": "" },
          +	{ "mask": "+7(496)79#-##-##", "cc": "RU", "cd": "Russia", "region": "Московская область", "city": "Домодедово", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)###-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)48#-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Жуковский", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)54#-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": ["Видное", "Ленинский район"], "operator": "ЦентрТелеком", "desc": "" },
          +	{ "mask": "+7(498)617-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": ["Газопровод", "Коммунарка"], "operator": "ЗАО «Газтелеком»", "desc": "Ленинский район" },
          +	{ "mask": "+7(498)657-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Развилка", "operator": "ООО «Газпром связь»", "desc": "Ленинский район" },
          +	{ "mask": "+7(498)664-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Железнодорожный", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)68#-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Лобня", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)713-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Долгопрудный", "operator": "", "desc": "" },
          +	{ "mask": "+7(498)744-##-##", "cc": "RU", "cd": "Russia", "region": "Лесопарковый защитный пояс Москвы", "city": "Долгопрудный", "operator": "", "desc": "" },
          +	{ "mask": "+7(499)###-##-##", "cc": "RU", "cd": "Russia", "region": "Москва", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(499)39#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва", "city": "Москва", "operator": "МегаФон", "desc": "" },
          +	{ "mask": "+7(499)50#-##-##", "cc": "RU", "cd": "Russia", "region": "Москва", "city": "Москва", "operator": "Центральный Телеграф", "desc": "" },
          +	{ "mask": "+7(499)755-##-##", "cc": "RU", "cd": "Russia", "region": "Москва", "city": "Москва", "operator": "МегаФон", "desc": "" },
          +	{ "mask": "+7(811)###-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8112)##-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Псков", "operator": "", "desc": "" },
          +	{ "mask": "+7(81131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Гдов", "operator": "", "desc": "" },
          +	{ "mask": "+7(81132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Струги Красные", "operator": "", "desc": "" },
          +	{ "mask": "+7(81133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Плюсса", "operator": "", "desc": "" },
          +	{ "mask": "+7(81134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Порхов", "operator": "", "desc": "" },
          +	{ "mask": "+7(81135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Дно", "operator": "", "desc": "" },
          +	{ "mask": "+7(81136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Дедовичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(81137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Красногородск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Опочка", "operator": "", "desc": "" },
          +	{ "mask": "+7(81139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Локня", "operator": "", "desc": "" },
          +	{ "mask": "+7(81140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Себеж", "operator": "", "desc": "" },
          +	{ "mask": "+7(81141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Бежаницы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Пустошка", "operator": "", "desc": "" },
          +	{ "mask": "+7(81143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Новоржев", "operator": "", "desc": "" },
          +	{ "mask": "+7(81144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Новосокольники", "operator": "", "desc": "" },
          +	{ "mask": "+7(81145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Палкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(81146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Пушкинские Горы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Пыталово", "operator": "", "desc": "" },
          +	{ "mask": "+7(81148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Печоры", "operator": "", "desc": "" },
          +	{ "mask": "+7(81149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Кунья", "operator": "", "desc": "" },
          +	{ "mask": "+7(81150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Усвяты", "operator": "", "desc": "" },
          +	{ "mask": "+7(81151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Невель", "operator": "", "desc": "" },
          +	{ "mask": "+7(81152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Остров", "operator": "", "desc": "" },
          +	{ "mask": "+7(81153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Псковская область", "city": "Великие Луки", "operator": "", "desc": "" },
          +	{ "mask": "+7(812)###-##-##", "cc": "RU", "cd": "Russia", "region": "Санкт-Петербург", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(813)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(81361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Тосно", "operator": "", "desc": "" },
          +	{ "mask": "+7(81362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Кировск", "Шлиссельбург"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Волхов", "Новая Ладога", "Сясьстрой"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Лодейное Поле", "operator": "", "desc": "" },
          +	{ "mask": "+7(81365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Подпорожье", "operator": "", "desc": "" },
          +	{ "mask": "+7(81366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Бокситогорск", "Пикалёво"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Тихвин", "operator": "", "desc": "" },
          +	{ "mask": "+7(81368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Кириши", "Будогощь"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Сосновый Бор", "operator": "", "desc": "" },
          +	{ "mask": "+7(81370)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Всеволожск", "Токсово"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Гатчина", "Вырица", "Коммунар"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Луга", "operator": "", "desc": "" },
          +	{ "mask": "+7(81373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Волосово", "operator": "", "desc": "" },
          +	{ "mask": "+7(81374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Сланцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Кингисепп", "Ивангород"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Ломоносов", "operator": "", "desc": "" },
          +	{ "mask": "+7(81378)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": ["Выборг", "Высоцк", "Приморск", "Светогорск"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81379)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ленинградская область", "city": "Приозерск", "operator": "", "desc": "" },
          +	{ "mask": "+7(814)###-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8142)##-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Петрозаводск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Сортавала", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Вяртсиля", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-1#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Хелюля", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Рускеала", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пуйккола", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Хаапалампи", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кааламо", "operator": "", "desc": "" },
          +	{ "mask": "+7(81430)3-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Заозёрный", "Ламберг", "Сортавала", "Хюмпеля"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Сегежа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-0#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кочкома", "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-1#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Олений", "Пертозеро", "Черный Порог"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-2#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Валдай", "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Волдозеро", "Идель", "Кяргозеро", "Попов Порог"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Каменный Бор", "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Полга", "operator": "", "desc": "" },
          +	{ "mask": "+7(81431)3-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Надвоицы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Питкяранта", "operator": "", "desc": "" },
          +	{ "mask": "+7(81433)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Ляскеля", "Рауталахти", "Харлу", "Хийденсельга"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81433)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Ряймяля", "Салми"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81433)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Импилахти", "operator": "", "desc": "" },
          +	{ "mask": "+7(81433)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Леппясилта", "Уукса"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Медвежьегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)3-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Толвуя", "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)3-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Шуньга", "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)3-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Великая Губа", "Великая Нива", "Кижи", "Космозеро", "Ламбасручей", "Сенная Губа"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)3-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Кумса", "Лавас Губа", "Лумбуши", "Чебино"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)3-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Волозеро", "Габсельга", "Сосновка", "Челмужи"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)4-2#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Огорелыши", "Сергиево"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)4-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Повенец", "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)4-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пиндуши", "operator": "", "desc": "" },
          +	{ "mask": "+7(81434)4-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Паданы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Олонец", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Ильинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Верхний Олонец", "Ковера", "Речная Сельга", "Сяндеба", "Тулокса"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Михайловское", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Алексала", "Мегрега", "Рыпушкалица", "Тукса"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Видлица", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Коткозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81436)2-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Куйтежа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Беломорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-0#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Сумский Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Золотец", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Колежма", "Лапино", "Лехта", "Маленьга", "Новое Машозеро", "Нюхча", "Тунгуза", "Хвойный", "Шуерецкое"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Сосновец", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Лесобиржа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Вирандозеро", "Летнереченский"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81437)3-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пушной", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Лоухи", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кестеньга", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Софпорог", "Тунгозеро"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)2-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пяозерский", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)3-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Амбарный", "Плотина", "Сосновый", "Энгозеро"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)4-1#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Чупа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)4-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Чкаловский", "operator": "", "desc": "" },
          +	{ "mask": "+7(81439)45#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Тэдино", "operator": "", "desc": "" },
          +	{ "mask": "+7(81450)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Лахденпохья", "operator": "", "desc": "" },
          +	{ "mask": "+7(81450)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Ихала", "Мийнала", "Яккима"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81450)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Куркиёки", "Хийтола"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81450)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Элисенваара", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кондопога", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кедрозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-1#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Гирвас", "Тивдия", "Эльмус"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-2#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Спасская Губа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Кивач", "Новинка"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Кяпесельга", "Нелгомозеро"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кончезеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Берёзовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(81451)3-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Суна", "Янишполе"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пудож", "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Бочилово", "Каршево", "Колово", "Колодозеро", "Семёново"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Водла", "Кубово", "Онежский", "Рагнукса"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Кривцы", "Приречный"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Авдеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Подпорожье", "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Шала", "operator": "", "desc": "" },
          +	{ "mask": "+7(81452)2-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пяльма", "operator": "", "desc": "" },
          +	{ "mask": "+7(81454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Калевала", "operator": "", "desc": "" },
          +	{ "mask": "+7(81454)5-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кепа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81454)5-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Юшкозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81454)5-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Войница", "Куусиниеми", "Луусалми"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Муезерский", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Тикша", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Реболы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Ригозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Волома", "Пенинга"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Суккозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Ледмозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81455)2-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Лендеры", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Пряжа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Вилла Гора", "Соддер", "Сяпся", "Эссойла"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Ведлозеро", "Кинелахта", "Койвусельга", "Колатсельга", "Савиново"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Чална", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Матросы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Верхние Важины", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Крошнозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81456)2-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Святозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Суоярви", "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Лахколамби", "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Поросозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Найстеньярви", "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Вегарус", "Суоёки", "Тойвола", "Хаутоваара"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Вешкелица", "Лоймола", "Пийтсиёки"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)2-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Леппясюрья", "Райконкоски", "Суйстамо"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81457)3-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Леппяниеми", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кемь", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-1#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Калгалакша", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-2#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Панозеро", "Поньгома"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-4#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": ["Авнепорог", "Кривой Порог"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Рабочеостровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-6#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Шомба", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-7#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Кузема", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-8#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Баб-Губа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81458)3-9#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Сокол", "operator": "", "desc": "" },
          +	{ "mask": "+7(81459)#-##-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Костомукша", "operator": "", "desc": "" },
          +	{ "mask": "+7(81459)9-3#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Контокки", "operator": "", "desc": "" },
          +	{ "mask": "+7(81459)9-5#-##", "cc": "RU", "cd": "Russia", "region": "Карелия", "city": "Вокнаволок", "operator": "", "desc": "" },
          +	{ "mask": "+7(815)###-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8152)##-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Мурманск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81530)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Снежногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Кировск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Полярные Зори", "operator": "", "desc": "" },
          +	{ "mask": "+7(81533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Кандалакша", "operator": "", "desc": "" },
          +	{ "mask": "+7(81535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Ковдор", "operator": "", "desc": "" },
          +	{ "mask": "+7(81536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Мончегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Североморск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Ловозеро", "operator": "", "desc": "" },
          +	{ "mask": "+7(81539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Гаджиево", "operator": "", "desc": "" },
          +	{ "mask": "+7(81551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Полярный", "operator": "", "desc": "" },
          +	{ "mask": "+7(81552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Оленегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Кола", "operator": "", "desc": "" },
          +	{ "mask": "+7(81554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": ["Заполярный", "Никель"], "operator": "", "desc": "" },
          +	{ "mask": "+7(81555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Апатиты", "operator": "", "desc": "" },
          +	{ "mask": "+7(81556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Заозерск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Островной", "operator": "", "desc": "" },
          +	{ "mask": "+7(81559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мурманская область", "city": "Умба", "operator": "", "desc": "" },
          +	{ "mask": "+7(816)###-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8162)##-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Великий Новгород", "operator": "", "desc": "" },
          +	{ "mask": "+7(81650)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Парфино", "operator": "", "desc": "" },
          +	{ "mask": "+7(81651)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Демянск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81652)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Старая Русса", "operator": "", "desc": "" },
          +	{ "mask": "+7(81653)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Мошенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(81654)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Холм", "operator": "", "desc": "" },
          +	{ "mask": "+7(81655)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Сольцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81656)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Шимск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81657)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Окуловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(81658)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Поддорье", "operator": "", "desc": "" },
          +	{ "mask": "+7(81659)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Крестцы", "operator": "", "desc": "" },
          +	{ "mask": "+7(81660)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Малая Вишера", "operator": "", "desc": "" },
          +	{ "mask": "+7(81661)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Батецкий", "operator": "", "desc": "" },
          +	{ "mask": "+7(81662)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Волот", "operator": "", "desc": "" },
          +	{ "mask": "+7(81663)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Марёво", "operator": "", "desc": "" },
          +	{ "mask": "+7(81664)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Боровичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(81665)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Чудово", "operator": "", "desc": "" },
          +	{ "mask": "+7(81666)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Валдай", "operator": "", "desc": "" },
          +	{ "mask": "+7(81667)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Хвойная", "operator": "", "desc": "" },
          +	{ "mask": "+7(81668)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Любытино", "operator": "", "desc": "" },
          +	{ "mask": "+7(81669)#-##-##", "cc": "RU", "cd": "Russia", "region": "Новгородская область", "city": "Пестово", "operator": "", "desc": "" },
          +	{ "mask": "+7(817)###-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8172)##-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Вологда", "operator": "", "desc": "" },
          +	{ "mask": "+7(81732)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Харовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81733)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Сокол", "operator": "", "desc": "" },
          +	{ "mask": "+7(81737)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Устюжна", "operator": "", "desc": "" },
          +	{ "mask": "+7(81738)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Великий Устюг", "operator": "", "desc": "" },
          +	{ "mask": "+7(81739)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Тотьма", "operator": "", "desc": "" },
          +	{ "mask": "+7(81740)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Кичменгский Городок", "operator": "", "desc": "" },
          +	{ "mask": "+7(81741)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Чагода", "operator": "", "desc": "" },
          +	{ "mask": "+7(81742)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Кадуй", "operator": "", "desc": "" },
          +	{ "mask": "+7(81743)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Бабаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(81744)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Вожега", "operator": "", "desc": "" },
          +	{ "mask": "+7(81745)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Село имени Бабушкина", "operator": "", "desc": "" },
          +	{ "mask": "+7(81746)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Вытегра", "operator": "", "desc": "" },
          +	{ "mask": "+7(81747)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Нюксеница", "operator": "", "desc": "" },
          +	{ "mask": "+7(81748)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Тарногский Городок", "operator": "", "desc": "" },
          +	{ "mask": "+7(81749)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Шуйское", "operator": "", "desc": "" },
          +	{ "mask": "+7(81751)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Шексна", "operator": "", "desc": "" },
          +	{ "mask": "+7(81752)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Сямжа", "operator": "", "desc": "" },
          +	{ "mask": "+7(81753)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Устье", "operator": "", "desc": "" },
          +	{ "mask": "+7(81754)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Никольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81755)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Грязовец", "operator": "", "desc": "" },
          +	{ "mask": "+7(81756)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Белозерск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81757)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Кириллов", "operator": "", "desc": "" },
          +	{ "mask": "+7(81758)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Липин Бор", "operator": "", "desc": "" },
          +	{ "mask": "+7(81759)#-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Верховажье", "operator": "", "desc": "" },
          +	{ "mask": "+7(818)###-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Архангельск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81830)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Холмогоры", "operator": "", "desc": "" },
          +	{ "mask": "+7(81831)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Березник", "operator": "", "desc": "" },
          +	{ "mask": "+7(81832)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Плесецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(81833)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Лешуконское", "operator": "", "desc": "" },
          +	{ "mask": "+7(81834)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Мирный", "operator": "", "desc": "" },
          +	{ "mask": "+7(81835)9-0#-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Соловецкий", "operator": "", "desc": "" },
          +	{ "mask": "+7(81836)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Вельск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81837)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Котлас", "operator": "", "desc": "" },
          +	{ "mask": "+7(81838)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Няндома", "operator": "", "desc": "" },
          +	{ "mask": "+7(81839)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Онега", "operator": "", "desc": "" },
          +	{ "mask": "+7(81840)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Красноборск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81841)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Каргополь", "operator": "", "desc": "" },
          +	{ "mask": "+7(81842)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Северодвинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81843)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Ильинско-Подомское", "operator": "", "desc": "" },
          +	{ "mask": "+7(81848)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Мезень", "operator": "", "desc": "" },
          +	{ "mask": "+7(81850)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Коряжма", "operator": "", "desc": "" },
          +	{ "mask": "+7(81851)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Шенкурск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81852)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Новодвинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(81853)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Нарьян-Мар", "operator": "", "desc": "" },
          +	{ "mask": "+7(81854)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Верхняя Тойма", "operator": "", "desc": "" },
          +	{ "mask": "+7(81855)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Октябрьский", "operator": "", "desc": "" },
          +	{ "mask": "+7(81856)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Карпогоры", "operator": "", "desc": "" },
          +	{ "mask": "+7(81858)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Коноша", "operator": "", "desc": "" },
          +	{ "mask": "+7(81859)#-##-##", "cc": "RU", "cd": "Russia", "region": ["Архангельская область", "Ненецкий автономный округ"], "city": "Яренск", "operator": "", "desc": "" },
          +	{ "mask": "+7(820)###-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8202)##-##-##", "cc": "RU", "cd": "Russia", "region": "Вологодская область", "city": "Череповец", "operator": "", "desc": "" },
          +	{ "mask": "+7(821)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8212)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Сыктывкар", "operator": "", "desc": "" },
          +	{ "mask": "+7(82130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Выльгорт", "operator": "", "desc": "" },
          +	{ "mask": "+7(82131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Визинга", "operator": "", "desc": "" },
          +	{ "mask": "+7(82132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Койгородок", "operator": "", "desc": "" },
          +	{ "mask": "+7(82133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Объячево", "operator": "", "desc": "" },
          +	{ "mask": "+7(82134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Айкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(82135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Усогорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(82136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Корткерос", "operator": "", "desc": "" },
          +	{ "mask": "+7(82137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Усть-Кулом", "operator": "", "desc": "" },
          +	{ "mask": "+7(82138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Троицко-Печорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(82139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Емва", "operator": "", "desc": "" },
          +	{ "mask": "+7(82140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Ижма", "operator": "", "desc": "" },
          +	{ "mask": "+7(82141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Усть-Цильма", "operator": "", "desc": "" },
          +	{ "mask": "+7(82142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Печора", "operator": "", "desc": "" },
          +	{ "mask": "+7(82144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Усинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(82145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Инта", "operator": "", "desc": "" },
          +	{ "mask": "+7(82146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Вуктыл", "operator": "", "desc": "" },
          +	{ "mask": "+7(82149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Сосногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(82151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Воркута", "operator": "", "desc": "" },
          +	{ "mask": "+7(8216)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Коми", "city": "Ухта", "operator": "", "desc": "" },
          +	{ "mask": "+7(831)###-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Нижний Новгород", "operator": "", "desc": "" },
          +	{ "mask": "+7(8313)##-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Дзержинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Саров", "operator": "", "desc": "" },
          +	{ "mask": "+7(83134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Дивеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Володарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Сокольское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Большое Болдино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83139)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Первомайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Вад", "operator": "", "desc": "" },
          +	{ "mask": "+7(83144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Балахна", "operator": "", "desc": "" },
          +	{ "mask": "+7(83145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Кстово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Арзамас", "operator": "", "desc": "" },
          +	{ "mask": "+7(83148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Перевоз", "operator": "", "desc": "" },
          +	{ "mask": "+7(83149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Лысково", "operator": "", "desc": "" },
          +	{ "mask": "+7(83150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Ветлуга", "operator": "", "desc": "" },
          +	{ "mask": "+7(83151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Тоншаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Шахунья", "operator": "", "desc": "" },
          +	{ "mask": "+7(83153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Тонкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Урень", "operator": "", "desc": "" },
          +	{ "mask": "+7(83155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Шаранга", "operator": "", "desc": "" },
          +	{ "mask": "+7(83156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Красные Баки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Ковернино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Варнавино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Бор", "operator": "", "desc": "" },
          +	{ "mask": "+7(83160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Чкаловск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Городец", "operator": "", "desc": "" },
          +	{ "mask": "+7(83162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Семёнов", "operator": "", "desc": "" },
          +	{ "mask": "+7(83163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Воскресенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Воротынец", "operator": "", "desc": "" },
          +	{ "mask": "+7(83165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Спасское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Княгинино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Большое Мурашкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Дальнее Константиново", "operator": "", "desc": "" },
          +	{ "mask": "+7(83169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Заволжье", "operator": "", "desc": "" },
          +	{ "mask": "+7(83170)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Богородск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83171)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": ["Павлово", "Ворсма"], "operator": "", "desc": "" },
          +	{ "mask": "+7(83172)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Бутурлино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83173)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Вача", "operator": "", "desc": "" },
          +	{ "mask": "+7(83174)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Сосновское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83175)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Навашино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83176)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Кулебаки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83177)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Выкса", "operator": "", "desc": "" },
          +	{ "mask": "+7(83178)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Вознесенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83179)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Ардатов", "operator": "", "desc": "" },
          +	{ "mask": "+7(83190)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Шатки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83191)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Сергач", "operator": "", "desc": "" },
          +	{ "mask": "+7(83192)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Пильна", "operator": "", "desc": "" },
          +	{ "mask": "+7(83193)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Сеченово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83194)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Уразовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83195)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Гагино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83196)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Лукоянов", "operator": "", "desc": "" },
          +	{ "mask": "+7(83197)#-##-##", "cc": "RU", "cd": "Russia", "region": "Нижегородская область", "city": "Починки", "operator": "", "desc": "" },
          +	{ "mask": "+7(833)###-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8332)##-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Киров", "operator": "", "desc": "" },
          +	{ "mask": "+7(83330)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Арбаж", "operator": "", "desc": "" },
          +	{ "mask": "+7(83331)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Афанасьево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83332)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Фаленки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83333)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Богородское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83334)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Вятские Поляны", "operator": "", "desc": "" },
          +	{ "mask": "+7(83335)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Верхошижемье", "operator": "", "desc": "" },
          +	{ "mask": "+7(83336)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Даровской", "operator": "", "desc": "" },
          +	{ "mask": "+7(83337)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Зуевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83338)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Кильмезь", "operator": "", "desc": "" },
          +	{ "mask": "+7(83339)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Кирс", "operator": "", "desc": "" },
          +	{ "mask": "+7(83340)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Тужа", "operator": "", "desc": "" },
          +	{ "mask": "+7(83341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Кикнур", "operator": "", "desc": "" },
          +	{ "mask": "+7(83342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Котельнич", "operator": "", "desc": "" },
          +	{ "mask": "+7(83343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Кумены", "operator": "", "desc": "" },
          +	{ "mask": "+7(83344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Лебяжье", "operator": "", "desc": "" },
          +	{ "mask": "+7(83345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Ленинское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Луза", "operator": "", "desc": "" },
          +	{ "mask": "+7(83347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Малмыж", "operator": "", "desc": "" },
          +	{ "mask": "+7(83348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Мураши", "operator": "", "desc": "" },
          +	{ "mask": "+7(83349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Нагорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83350)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Нема", "operator": "", "desc": "" },
          +	{ "mask": "+7(83351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Подосиновец", "operator": "", "desc": "" },
          +	{ "mask": "+7(83352)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Омутнинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Опарино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Оричи", "operator": "", "desc": "" },
          +	{ "mask": "+7(83355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Пижанка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Санчурск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Свеча", "operator": "", "desc": "" },
          +	{ "mask": "+7(83359)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Уни", "operator": "", "desc": "" },
          +	{ "mask": "+7(83361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Кирово-Чепецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(83362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Слободской", "operator": "", "desc": "" },
          +	{ "mask": "+7(83363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Уржум", "operator": "", "desc": "" },
          +	{ "mask": "+7(83364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Белая Холуница", "operator": "", "desc": "" },
          +	{ "mask": "+7(83365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Орлов", "operator": "", "desc": "" },
          +	{ "mask": "+7(83366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Юрья", "operator": "", "desc": "" },
          +	{ "mask": "+7(83367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Яранск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Нолинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Суна", "operator": "", "desc": "" },
          +	{ "mask": "+7(83375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кировская область", "city": "Советск", "operator": "", "desc": "" },
          +	{ "mask": "+7(834)###-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8342)##-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Саранск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83431)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Ардатов", "operator": "", "desc": "" },
          +	{ "mask": "+7(83432)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Старое Шайгово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83433)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Кемля", "operator": "", "desc": "" },
          +	{ "mask": "+7(83434)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Атяшево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83436)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Большие Березники", "operator": "", "desc": "" },
          +	{ "mask": "+7(83437)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Чамзинка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83438)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Ромоданово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83439)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Кочкурово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83441)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Лямбирь", "operator": "", "desc": "" },
          +	{ "mask": "+7(83442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Большое Игнатово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Краснослободск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Ельники", "operator": "", "desc": "" },
          +	{ "mask": "+7(83445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Темников", "operator": "", "desc": "" },
          +	{ "mask": "+7(83446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Теньгушево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Дубенки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83448)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Кадошкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83449)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Инсар", "operator": "", "desc": "" },
          +	{ "mask": "+7(83451)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Рузаевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Ковылкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Атюрьево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83456)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Торбеево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83457)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Явас", "operator": "", "desc": "" },
          +	{ "mask": "+7(83458)#-##-##", "cc": "RU", "cd": "Russia", "region": "Мордовия", "city": "Зубова Поляна", "operator": "", "desc": "" },
          +	{ "mask": "+7(835)###-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8352)##-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Чебоксары", "operator": "", "desc": "" },
          +	{ "mask": "+7(8352)7#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Новочебоксарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83530)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Красноармейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83531)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Алатырь", "operator": "", "desc": "" },
          +	{ "mask": "+7(83532)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Батырево", "operator": "", "desc": "" },
          +	{ "mask": "+7(83533)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Канаш", "operator": "", "desc": "" },
          +	{ "mask": "+7(83534)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Козловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83535)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Аликово", "operator": "", "desc": "" },
          +	{ "mask": "+7(83536)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Шумерля", "operator": "", "desc": "" },
          +	{ "mask": "+7(83537)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Вурнары", "operator": "", "desc": "" },
          +	{ "mask": "+7(83538)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Ибреси", "operator": "", "desc": "" },
          +	{ "mask": "+7(83539)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Комсомольское", "operator": "", "desc": "" },
          +	{ "mask": "+7(83540)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Кугеси", "operator": "", "desc": "" },
          +	{ "mask": "+7(83541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Моргауши", "operator": "", "desc": "" },
          +	{ "mask": "+7(83542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Мариинский Посад", "operator": "", "desc": "" },
          +	{ "mask": "+7(83543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Порецкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(83544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Урмары", "operator": "", "desc": "" },
          +	{ "mask": "+7(83545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Цивильск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Шемурша", "operator": "", "desc": "" },
          +	{ "mask": "+7(83547)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Ядрин", "operator": "", "desc": "" },
          +	{ "mask": "+7(83548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Янтиково", "operator": "", "desc": "" },
          +	{ "mask": "+7(83549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Яльчики", "operator": "", "desc": "" },
          +	{ "mask": "+7(83551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чувашия", "city": "Красные Четаи", "operator": "", "desc": "" },
          +	{ "mask": "+7(836)###-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8362)##-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Йошкар-Ола", "operator": "", "desc": "" },
          +	{ "mask": "+7(83631)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Волжск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83632)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Козьмодемьянск", "operator": "", "desc": "" },
          +	{ "mask": "+7(83633)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Сернур", "operator": "", "desc": "" },
          +	{ "mask": "+7(83634)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Мари-Турек", "operator": "", "desc": "" },
          +	{ "mask": "+7(83635)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Морки", "operator": "", "desc": "" },
          +	{ "mask": "+7(83636)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Новый Торъял", "operator": "", "desc": "" },
          +	{ "mask": "+7(83637)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Куженер", "operator": "", "desc": "" },
          +	{ "mask": "+7(83638)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Советский", "operator": "", "desc": "" },
          +	{ "mask": "+7(83639)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Параньга", "operator": "", "desc": "" },
          +	{ "mask": "+7(83641)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Оршанка", "operator": "", "desc": "" },
          +	{ "mask": "+7(83643)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Килемары", "operator": "", "desc": "" },
          +	{ "mask": "+7(83644)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Юрино", "operator": "", "desc": "" },
          +	{ "mask": "+7(83645)#-##-##", "cc": "RU", "cd": "Russia", "region": "Марий Эл", "city": "Звенигово", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)###-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)22#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Сухум", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)23#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Гагра", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)24#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Гудаута", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)25#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Очамчыра", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)26#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Ткуарчал", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)27#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Гулрыпш", "operator": "", "desc": "" },
          +	{ "mask": "+7(840)28#-##-##", "cc": "RU", "cd": "Russia", "region": "Абхазия", "city": "Гал", "operator": "", "desc": "" },
          +	{ "mask": "+7(841)###-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8412)##-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Пенза", "operator": "", "desc": "" },
          +	{ "mask": "+7(84140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Бессоновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Беково", "operator": "", "desc": "" },
          +	{ "mask": "+7(84142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Вадинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Башмаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(84144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Исса", "operator": "", "desc": "" },
          +	{ "mask": "+7(84145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Русский Камешкир", "operator": "", "desc": "" },
          +	{ "mask": "+7(84146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Колышлей", "operator": "", "desc": "" },
          +	{ "mask": "+7(84147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Кондоль", "operator": "", "desc": "" },
          +	{ "mask": "+7(84148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Лопатино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Мокшан", "operator": "", "desc": "" },
          +	{ "mask": "+7(84151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Спасск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Пачелма", "operator": "", "desc": "" },
          +	{ "mask": "+7(84153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Белинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Нижний Ломов", "operator": "", "desc": "" },
          +	{ "mask": "+7(84155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Земетчино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Каменка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Кузнецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(84158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Городище", "operator": "", "desc": "" },
          +	{ "mask": "+7(84159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Шемышейка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Лунино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Малая Сердоба", "operator": "", "desc": "" },
          +	{ "mask": "+7(84163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Наровчат", "operator": "", "desc": "" },
          +	{ "mask": "+7(84164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Неверкино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Никольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Сердобск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Сосновоборск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Пензенская область", "city": "Тамала", "operator": "", "desc": "" },
          +	{ "mask": "+7(842)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8422)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Ульяновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84230)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Старая Майна", "operator": "", "desc": "" },
          +	{ "mask": "+7(84231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Чердаклы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Новая Малыкла", "operator": "", "desc": "" },
          +	{ "mask": "+7(84233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Сенгилей", "operator": "", "desc": "" },
          +	{ "mask": "+7(84234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Тереньга", "operator": "", "desc": "" },
          +	{ "mask": "+7(84235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Димитровград", "operator": "", "desc": "" },
          +	{ "mask": "+7(84237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Кузоватово", "operator": "", "desc": "" },
          +	{ "mask": "+7(84238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Новоспасское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84239)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Радищево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84240)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Базарный Сызган", "operator": "", "desc": "" },
          +	{ "mask": "+7(84241)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Инза", "operator": "", "desc": "" },
          +	{ "mask": "+7(84242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Сурское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Вешкайма", "operator": "", "desc": "" },
          +	{ "mask": "+7(84244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Майна", "operator": "", "desc": "" },
          +	{ "mask": "+7(84245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Большое Нагаткино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Карсун", "operator": "", "desc": "" },
          +	{ "mask": "+7(84247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Николаевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Павловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Старая Кулатка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84253)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Барыш", "operator": "", "desc": "" },
          +	{ "mask": "+7(84254)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Ишеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ульяновская область", "city": "Новоульяновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(843)###-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Казань", "operator": "", "desc": "" },
          +	{ "mask": "+7(84341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Алексеевское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Чистополь", "operator": "", "desc": "" },
          +	{ "mask": "+7(84344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Аксубаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Нурлат", "operator": "", "desc": "" },
          +	{ "mask": "+7(84346)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Базарные Матаки", "operator": "", "desc": "" },
          +	{ "mask": "+7(84347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Болгар", "operator": "", "desc": "" },
          +	{ "mask": "+7(84348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Новошешминск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84360)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Тюлячи", "operator": "", "desc": "" },
          +	{ "mask": "+7(84361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Рыбная Слобода", "operator": "", "desc": "" },
          +	{ "mask": "+7(84362)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Богатые Сабы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Кукмор", "operator": "", "desc": "" },
          +	{ "mask": "+7(84365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Высокая Гора", "operator": "", "desc": "" },
          +	{ "mask": "+7(84366)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Арск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Пестрецы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Балтаси", "operator": "", "desc": "" },
          +	{ "mask": "+7(84369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Большая Атня", "operator": "", "desc": "" },
          +	{ "mask": "+7(84370)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Большие Кайбицы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Зеленодольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Тетюши", "operator": "", "desc": "" },
          +	{ "mask": "+7(84374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Буинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Старое Дрожжаное", "operator": "", "desc": "" },
          +	{ "mask": "+7(84376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Апастово", "operator": "", "desc": "" },
          +	{ "mask": "+7(84377)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Камское Устье", "operator": "", "desc": "" },
          +	{ "mask": "+7(84378)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Лаишево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84379)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Верхний Услон", "operator": "", "desc": "" },
          +	{ "mask": "+7(84396)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Черемшан", "operator": "", "desc": "" },
          +	{ "mask": "+7(844)###-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(844)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Волгоград", "operator": "", "desc": "" },
          +	{ "mask": "+7(844)70#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Волгоград", "operator": "", "desc": "" },
          +	{ "mask": "+7(8443)##-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Волжский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84442)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Урюпинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84443)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Нехаевская", "operator": "", "desc": "" },
          +	{ "mask": "+7(84444)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Новониколаевский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84445)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Преображенская", "operator": "", "desc": "" },
          +	{ "mask": "+7(84446)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Алексеевская", "operator": "", "desc": "" },
          +	{ "mask": "+7(84447)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Новоаннинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84452)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Елань", "operator": "", "desc": "" },
          +	{ "mask": "+7(84453)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Рудня", "operator": "", "desc": "" },
          +	{ "mask": "+7(84454)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Жирновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84455)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Котово", "operator": "", "desc": "" },
          +	{ "mask": "+7(84456)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Ольховка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84457)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Камышин", "operator": "", "desc": "" },
          +	{ "mask": "+7(84458)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Дубовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84461)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Даниловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84462)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Кумылженская", "operator": "", "desc": "" },
          +	{ "mask": "+7(84463)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Михайловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84464)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Серафимович", "operator": "", "desc": "" },
          +	{ "mask": "+7(84465)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Фролово", "operator": "", "desc": "" },
          +	{ "mask": "+7(84466)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Клетская", "operator": "", "desc": "" },
          +	{ "mask": "+7(84467)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Иловля", "operator": "", "desc": "" },
          +	{ "mask": "+7(84468)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Городище", "operator": "", "desc": "" },
          +	{ "mask": "+7(84472)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Калач-на-Дону", "operator": "", "desc": "" },
          +	{ "mask": "+7(84473)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Суровикино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84474)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Чернышковский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84475)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Октябрьский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84476)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Котельниково", "operator": "", "desc": "" },
          +	{ "mask": "+7(84477)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Светлый Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(84478)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Ленинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84479)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Средняя Ахтуба", "operator": "", "desc": "" },
          +	{ "mask": "+7(84492)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Палласовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84493)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Старая Полтавка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84494)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Николаевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84495)#-##-##", "cc": "RU", "cd": "Russia", "region": "Волгоградская область", "city": "Быково", "operator": "", "desc": "" },
          +	{ "mask": "+7(845)###-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8452)##-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Саратов", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Балаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Балаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)4#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Балаково", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)5#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Энгельс", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)7#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Энгельс", "operator": "", "desc": "" },
          +	{ "mask": "+7(8453)9#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Энгельс", "operator": "", "desc": "" },
          +	{ "mask": "+7(84540)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Ртищево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Аркадак", "operator": "", "desc": "" },
          +	{ "mask": "+7(84543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Турки", "operator": "", "desc": "" },
          +	{ "mask": "+7(84544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Романовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Балашов", "operator": "", "desc": "" },
          +	{ "mask": "+7(84548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Самойловка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Калининск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84550)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Красноармейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Лысые Горы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Аткарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Екатериновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Петровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Новые Бурасы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Татищево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84560)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Красный Кут", "operator": "", "desc": "" },
          +	{ "mask": "+7(84561)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Питерка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84562)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Новоузенск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84563)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Дергачи", "operator": "", "desc": "" },
          +	{ "mask": "+7(84564)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Ершов", "operator": "", "desc": "" },
          +	{ "mask": "+7(84565)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Мокроус", "operator": "", "desc": "" },
          +	{ "mask": "+7(84566)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Степное", "operator": "", "desc": "" },
          +	{ "mask": "+7(84567)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Маркс", "operator": "", "desc": "" },
          +	{ "mask": "+7(84568)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Воскресенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84573)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Духовницкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(84574)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Пугачёв", "operator": "", "desc": "" },
          +	{ "mask": "+7(84575)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Перелюб", "operator": "", "desc": "" },
          +	{ "mask": "+7(84576)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Озинки", "operator": "", "desc": "" },
          +	{ "mask": "+7(84577)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Горный", "operator": "", "desc": "" },
          +	{ "mask": "+7(84578)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Александров Гай", "operator": "", "desc": "" },
          +	{ "mask": "+7(84579)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Ивантеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84591)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Базарный Карабулак", "operator": "", "desc": "" },
          +	{ "mask": "+7(84592)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Балтай", "operator": "", "desc": "" },
          +	{ "mask": "+7(84593)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Вольск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84595)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Хвалынск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84596)#-##-##", "cc": "RU", "cd": "Russia", "region": "Саратовская область", "city": "Ровное", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)###-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)300-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)302-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)303-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)309-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)31#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)33#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)34#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)37#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(846)9##-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Самара", "operator": "", "desc": "" },
          +	{ "mask": "+7(84630)5-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Волжский Утёс", "operator": "", "desc": "" },
          +	{ "mask": "+7(84635)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Новокуйбышевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84639)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Чапаевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(8464)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Сызрань", "operator": "", "desc": "" },
          +	{ "mask": "+7(8464)4#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Сызрань", "operator": "", "desc": "" },
          +	{ "mask": "+7(8464)9#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Сызрань", "operator": "", "desc": "" },
          +	{ "mask": "+7(84646)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Октябрьск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84647)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Приволжье", "operator": "", "desc": "" },
          +	{ "mask": "+7(84648)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Шигоны", "operator": "", "desc": "" },
          +	{ "mask": "+7(84650)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Кошки", "operator": "", "desc": "" },
          +	{ "mask": "+7(84651)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Челно-Вершины", "operator": "", "desc": "" },
          +	{ "mask": "+7(84652)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Шентала", "operator": "", "desc": "" },
          +	{ "mask": "+7(84653)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Клявлино", "operator": "", "desc": "" },
          +	{ "mask": "+7(84654)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Исаклы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84655)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Сергиевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84656)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Похвистнево", "operator": "", "desc": "" },
          +	{ "mask": "+7(84657)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Красный Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(84658)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Елховка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84660)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Кинель-Черкассы", "operator": "", "desc": "" },
          +	{ "mask": "+7(84661)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Отрадный", "operator": "", "desc": "" },
          +	{ "mask": "+7(84663)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Кинель", "operator": "", "desc": "" },
          +	{ "mask": "+7(84664)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Камышла", "operator": "", "desc": "" },
          +	{ "mask": "+7(84666)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Богатое", "operator": "", "desc": "" },
          +	{ "mask": "+7(84667)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Борское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84670)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Нефтегорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84671)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Алексеевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84672)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Большая Черниговка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84673)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Большая Глушица", "operator": "", "desc": "" },
          +	{ "mask": "+7(84674)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Пестравка", "operator": "", "desc": "" },
          +	{ "mask": "+7(84675)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Красноармейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(84676)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Безенчук", "operator": "", "desc": "" },
          +	{ "mask": "+7(84677)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Хворостянка", "operator": "", "desc": "" },
          +	{ "mask": "+7(847)###-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(84722)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Элиста", "operator": "", "desc": "" },
          +	{ "mask": "+7(84731)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Городовиковск", "operator": "", "desc": "" },
          +	{ "mask": "+7(84732)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Ики-Бурул", "operator": "", "desc": "" },
          +	{ "mask": "+7(84733)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Лагань", "operator": "", "desc": "" },
          +	{ "mask": "+7(84734)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Малые Дербеты", "operator": "", "desc": "" },
          +	{ "mask": "+7(84735)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Кетченеры", "operator": "", "desc": "" },
          +	{ "mask": "+7(84736)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Приютное", "operator": "", "desc": "" },
          +	{ "mask": "+7(84741)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Садовое", "operator": "", "desc": "" },
          +	{ "mask": "+7(84742)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Троицкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(84743)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Комсомольский", "operator": "", "desc": "" },
          +	{ "mask": "+7(84744)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Цаган Аман", "operator": "", "desc": "" },
          +	{ "mask": "+7(84745)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Яшалта", "operator": "", "desc": "" },
          +	{ "mask": "+7(84746)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Яшкуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(84747)#-##-##", "cc": "RU", "cd": "Russia", "region": "Калмыкия", "city": "Большой Царын", "operator": "", "desc": "" },
          +	{ "mask": "+7(848)###-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8482)##-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Тольятти", "operator": "", "desc": "" },
          +	{ "mask": "+7(84862)#-##-##", "cc": "RU", "cd": "Russia", "region": "Самарская область", "city": "Жигулевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(851)###-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8512)##-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Астрахань", "operator": "", "desc": "" },
          +	{ "mask": "+7(85140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Знаменск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Ахтубинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Володарский", "operator": "", "desc": "" },
          +	{ "mask": "+7(85143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Енотаевка", "operator": "", "desc": "" },
          +	{ "mask": "+7(85144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Икряное", "operator": "", "desc": "" },
          +	{ "mask": "+7(85145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Камызяк", "operator": "", "desc": "" },
          +	{ "mask": "+7(85146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Красный Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(85147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Лиман", "operator": "", "desc": "" },
          +	{ "mask": "+7(85148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Харабали", "operator": "", "desc": "" },
          +	{ "mask": "+7(85149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Чёрный Яр", "operator": "", "desc": "" },
          +	{ "mask": "+7(85171)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Нариманов", "operator": "", "desc": "" },
          +	{ "mask": "+7(85172)#-##-##", "cc": "RU", "cd": "Russia", "region": "Астраханская область", "city": "Началово", "operator": "", "desc": "" },
          +	{ "mask": "+7(855)###-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8552)##-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Набережные Челны", "operator": "", "desc": "" },
          +	{ "mask": "+7(8553)##-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Альметьевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Менделеевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(8555)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Нижнекамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(8555)4#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Нижнекамск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85551)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Агрыз", "operator": "", "desc": "" },
          +	{ "mask": "+7(85552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Актаныш", "operator": "", "desc": "" },
          +	{ "mask": "+7(85555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Мензелинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Муслюмово", "operator": "", "desc": "" },
          +	{ "mask": "+7(85557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Елабуга", "operator": "", "desc": "" },
          +	{ "mask": "+7(85558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Заинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(85559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Сарманово", "operator": "", "desc": "" },
          +	{ "mask": "+7(85563)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Мамадыш", "operator": "", "desc": "" },
          +	{ "mask": "+7(85569)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Бавлы", "operator": "", "desc": "" },
          +	{ "mask": "+7(8557)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Набережные Челны", "operator": "", "desc": "" },
          +	{ "mask": "+7(8557)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Набережные Челны", "operator": "", "desc": "" },
          +	{ "mask": "+7(85592)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Азнакаево", "operator": "", "desc": "" },
          +	{ "mask": "+7(85593)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Уруссу", "operator": "", "desc": "" },
          +	{ "mask": "+7(85594)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Бугульма", "operator": "", "desc": "" },
          +	{ "mask": "+7(85595)#-##-##", "cc": "RU", "cd": "Russia", "region": "Татарстан", "city": "Лениногорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(861)###-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Краснодар", "operator": "", "desc": "" },
          +	{ "mask": "+7(86130)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Тимашёвск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86131)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Крымск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Ейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86133)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Анапа", "operator": "", "desc": "" },
          +	{ "mask": "+7(86135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Усть-Лабинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86137)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Армавир", "operator": "", "desc": "" },
          +	{ "mask": "+7(86138)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Кропоткин", "operator": "", "desc": "" },
          +	{ "mask": "+7(86140)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Успенское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86141)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Геленджик", "operator": "", "desc": "" },
          +	{ "mask": "+7(86142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Кореновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Приморско-Ахтарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86144)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Отрадная", "operator": "", "desc": "" },
          +	{ "mask": "+7(86145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Ленинградская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Славянск-на-Кубани", "operator": "", "desc": "" },
          +	{ "mask": "+7(86147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Курганинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Темрюк", "operator": "", "desc": "" },
          +	{ "mask": "+7(86149)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Новопокровская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86150)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Абинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86151)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Старощербиновская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Апшеронск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86153)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Староминская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Белая Глина", "operator": "", "desc": "" },
          +	{ "mask": "+7(86155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Белореченск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Брюховецкая", "operator": "", "desc": "" },
          +	{ "mask": "+7(86157)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Выселки", "operator": "", "desc": "" },
          +	{ "mask": "+7(86158)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Тбилисская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86159)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Горячий Ключ", "operator": "", "desc": "" },
          +	{ "mask": "+7(86160)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Гулькевичи", "operator": "", "desc": "" },
          +	{ "mask": "+7(86161)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Крыловская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86162)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Динская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86163)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Калининская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Каневская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86165)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Полтавская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86166)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Северская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86167)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Туапсе", "operator": "", "desc": "" },
          +	{ "mask": "+7(86168)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Кущёвская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86169)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Лабинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(8617)##-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Новороссийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86191)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Павловская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86192)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Мостовской", "operator": "", "desc": "" },
          +	{ "mask": "+7(86193)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Кавказская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86195)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Новокубанск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86196)#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Тихорецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(862)###-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "", "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": ["Аше", "Вардане", "Головинка", "Головинка", "Сочи", "Хоста"], "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)23#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "", "operator": "МТС", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)24#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Адлер", "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)247-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Кудепста", "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)252-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": ["Дагомыс", "Лоо"], "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)27#-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "Лазаревское", "operator": "", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(862)295-##-##", "cc": "RU", "cd": "Russia", "region": "Краснодарский край", "city": "", "operator": "МегаФон", "desc": "агломерация Большой Сочи" },
          +	{ "mask": "+7(863)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(863)2##-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Ростов-на-Дону", "operator": "", "desc": "" },
          +	{ "mask": "+7(863)3##-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Ростов-на-Дону", "operator": "", "desc": "" },
          +	{ "mask": "+7(8634)3#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Таганрог", "operator": "", "desc": "" },
          +	{ "mask": "+7(8634)43-1#-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Таганрог", "operator": "", "desc": "" },
          +	{ "mask": "+7(8634)6#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Таганрог", "operator": "", "desc": "" },
          +	{ "mask": "+7(86340)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Родионово-Несветайская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Матвеев-Курган", "operator": "", "desc": "" },
          +	{ "mask": "+7(86342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Азов", "operator": "", "desc": "" },
          +	{ "mask": "+7(86345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Кагальницкая", "operator": "", "desc": "" },
          +	{ "mask": "+7(86347)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Покровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86348)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Куйбышево", "operator": "", "desc": "" },
          +	{ "mask": "+7(86349)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Чалтырь", "operator": "", "desc": "" },
          +	{ "mask": "+7(8635)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Новочеркасск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86350)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Аксай", "operator": "", "desc": "" },
          +	{ "mask": "+7(86351)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Усть-Донецкий", "operator": "", "desc": "" },
          +	{ "mask": "+7(86353)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Вёшенская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86354)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Батайск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86355)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Зверево", "operator": "", "desc": "" },
          +	{ "mask": "+7(86356)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Семикаракорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86357)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Багаевская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86358)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Весёлый", "operator": "", "desc": "" },
          +	{ "mask": "+7(86359)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Зерноград", "operator": "", "desc": "" },
          +	{ "mask": "+7(8636)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Шахты", "operator": "", "desc": "" },
          +	{ "mask": "+7(86360)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Каменоломни", "operator": "", "desc": "" },
          +	{ "mask": "+7(86361)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Гуково", "operator": "", "desc": "" },
          +	{ "mask": "+7(86363)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Советская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86364)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Казанская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86365)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Каменск-Шахтинский", "operator": "", "desc": "" },
          +	{ "mask": "+7(86367)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Красный Сулин", "operator": "", "desc": "" },
          +	{ "mask": "+7(86368)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Донецк", "operator": "", "desc": "" },
          +	{ "mask": "+7(86369)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Новошахтинск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86370)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Егорлыкская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86371)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Целина", "operator": "", "desc": "" },
          +	{ "mask": "+7(86372)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Сальск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86373)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Песчанокопское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86374)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Пролетарск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86375)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Орловский", "operator": "", "desc": "" },
          +	{ "mask": "+7(86376)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Зимовники", "operator": "", "desc": "" },
          +	{ "mask": "+7(86377)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Дубовское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86378)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Заветное", "operator": "", "desc": "" },
          +	{ "mask": "+7(86379)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Ремонтное", "operator": "", "desc": "" },
          +	{ "mask": "+7(86382)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Боковская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86383)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Белая Калитва", "operator": "", "desc": "" },
          +	{ "mask": "+7(86384)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Морозовск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86385)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Миллерово", "operator": "", "desc": "" },
          +	{ "mask": "+7(86386)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Тарасовский", "operator": "", "desc": "" },
          +	{ "mask": "+7(86387)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Чертково", "operator": "", "desc": "" },
          +	{ "mask": "+7(86388)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Кашары", "operator": "", "desc": "" },
          +	{ "mask": "+7(86389)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Милютинская", "operator": "", "desc": "" },
          +	{ "mask": "+7(8639)2#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Волгодонск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86391)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Цимлянск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86393)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Константиновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86394)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Романовская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86395)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Большая Мартыновка", "operator": "", "desc": "" },
          +	{ "mask": "+7(86396)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Обливская", "operator": "", "desc": "" },
          +	{ "mask": "+7(86397)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ростовская область", "city": "Тацинская", "operator": "", "desc": "" },
          +	{ "mask": "+7(865)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8652)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Ставрополь", "operator": "", "desc": "" },
          +	{ "mask": "+7(86540)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Грачёвка", "operator": "", "desc": "" },
          +	{ "mask": "+7(86541)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Красногвардейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86542)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Ипатово", "operator": "", "desc": "" },
          +	{ "mask": "+7(86543)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Левокумское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86544)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Новоалександровск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86545)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Изобильный", "operator": "", "desc": "" },
          +	{ "mask": "+7(86546)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Донское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86547)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Светлоград", "operator": "", "desc": "" },
          +	{ "mask": "+7(86548)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Новоселицкое", "operator": "", "desc": "" },
          +	{ "mask": "+7(86549)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Благодарный", "operator": "", "desc": "" },
          +	{ "mask": "+7(86550)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Кочубеевское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86552)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Зеленокумск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86553)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Михайловск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86554)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Невинномысск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86555)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Дивное", "operator": "", "desc": "" },
          +	{ "mask": "+7(86556)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Курсавка", "operator": "", "desc": "" },
          +	{ "mask": "+7(86557)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Александровское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86558)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Нефтекумск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86559)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Буденновск", "operator": "", "desc": "" },
          +	{ "mask": "+7(86560)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Арзгир", "operator": "", "desc": "" },
          +	{ "mask": "+7(86563)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Степное", "operator": "", "desc": "" },
          +	{ "mask": "+7(86565)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Летняя Ставка", "operator": "", "desc": "" },
          +	{ "mask": "+7(866)###-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8662)##-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Нальчик", "operator": "", "desc": "" },
          +	{ "mask": "+7(86630)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Чегем", "operator": "", "desc": "" },
          +	{ "mask": "+7(86631)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Прохладный", "operator": "", "desc": "" },
          +	{ "mask": "+7(86632)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Терек", "operator": "", "desc": "" },
          +	{ "mask": "+7(86633)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Майский", "operator": "", "desc": "" },
          +	{ "mask": "+7(86634)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Баксан", "operator": "", "desc": "" },
          +	{ "mask": "+7(86635)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Нарткала", "operator": "", "desc": "" },
          +	{ "mask": "+7(86636)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Кашхатау", "operator": "", "desc": "" },
          +	{ "mask": "+7(86637)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Залукокоаже", "operator": "", "desc": "" },
          +	{ "mask": "+7(86638)#-##-##", "cc": "RU", "cd": "Russia", "region": "Кабардино-Балкария", "city": "Тырныауз", "operator": "", "desc": "" },
          +	{ "mask": "+7(867)###-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8672)##-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Владикавказ", "operator": "", "desc": "" },
          +	{ "mask": "+7(86731)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Алагир", "operator": "", "desc": "" },
          +	{ "mask": "+7(86732)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Ардон", "operator": "", "desc": "" },
          +	{ "mask": "+7(86733)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Дигора", "operator": "", "desc": "" },
          +	{ "mask": "+7(86734)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Чикола", "operator": "", "desc": "" },
          +	{ "mask": "+7(86735)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Эльхотово", "operator": "", "desc": "" },
          +	{ "mask": "+7(86736)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Моздок", "operator": "", "desc": "" },
          +	{ "mask": "+7(86737)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Беслан", "operator": "", "desc": "" },
          +	{ "mask": "+7(86738)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Октябрьское", "operator": "", "desc": "" },
          +	{ "mask": "+7(86739)#-##-##", "cc": "RU", "cd": "Russia", "region": "Северная Осетия", "city": "Архонская", "operator": "", "desc": "" },
          +	{ "mask": "+7(871)###-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8712)##-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Грозный", "operator": "", "desc": "" },
          +	{ "mask": "+7(87132)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Знаменское", "operator": "", "desc": "" },
          +	{ "mask": "+7(87134)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Ведено", "operator": "", "desc": "" },
          +	{ "mask": "+7(87135)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Шатой", "operator": "", "desc": "" },
          +	{ "mask": "+7(87136)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Шелковская", "operator": "", "desc": "" },
          +	{ "mask": "+7(87142)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Ачхой-Мартан", "operator": "", "desc": "" },
          +	{ "mask": "+7(87143)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Наурская", "operator": "", "desc": "" },
          +	{ "mask": "+7(87145)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Урус-Мартан", "operator": "", "desc": "" },
          +	{ "mask": "+7(87146)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Шали", "operator": "", "desc": "" },
          +	{ "mask": "+7(87147)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Аргун", "operator": "", "desc": "" },
          +	{ "mask": "+7(87148)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Ножай-Юрт", "operator": "", "desc": "" },
          +	{ "mask": "+7(87152)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Гудермес", "operator": "", "desc": "" },
          +	{ "mask": "+7(87154)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Серноводск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87155)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Курчалой", "operator": "", "desc": "" },
          +	{ "mask": "+7(87156)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": ["Толстой-Юрт", "Старые Атаги"], "operator": "", "desc": "" },
          +	{ "mask": "+7(87164)#-##-##", "cc": "RU", "cd": "Russia", "region": "Чеченская Республика", "city": "Итум-Кале", "operator": "", "desc": "" },
          +	{ "mask": "+7(872)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8722)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Махачкала", "operator": "", "desc": "" },
          +	{ "mask": "+7(87230)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Сергокала", "operator": "", "desc": "" },
          +	{ "mask": "+7(87231)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Хасавюрт", "operator": "", "desc": "" },
          +	{ "mask": "+7(87232)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Карабудахкент", "operator": "", "desc": "" },
          +	{ "mask": "+7(87233)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Хунзах", "operator": "", "desc": "" },
          +	{ "mask": "+7(87234)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Кизилюрт", "operator": "", "desc": "" },
          +	{ "mask": "+7(87235)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Магарамкент", "operator": "", "desc": "" },
          +	{ "mask": "+7(87236)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Касумкент", "operator": "", "desc": "" },
          +	{ "mask": "+7(87237)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Буйнакск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87238)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Маджалис", "operator": "", "desc": "" },
          +	{ "mask": "+7(87239)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Кизляр", "operator": "", "desc": "" },
          +	{ "mask": "+7(87240)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Дербент", "operator": "", "desc": "" },
          +	{ "mask": "+7(87242)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Новолакское", "operator": "", "desc": "" },
          +	{ "mask": "+7(87243)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": ["Тпиг", "Агул"], "operator": "", "desc": "" },
          +	{ "mask": "+7(87244)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Хив", "operator": "", "desc": "" },
          +	{ "mask": "+7(87245)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Избербаш", "operator": "", "desc": "" },
          +	{ "mask": "+7(87246)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Каспийск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87247)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Бабаюрт", "operator": "", "desc": "" },
          +	{ "mask": "+7(87248)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Новокаякент", "operator": "", "desc": "" },
          +	{ "mask": "+7(87249)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Хучни", "operator": "", "desc": "" },
          +	{ "mask": "+7(87252)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Леваши", "operator": "", "desc": "" },
          +	{ "mask": "+7(87254)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Уркарах", "operator": "", "desc": "" },
          +	{ "mask": "+7(87255)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Гергебиль", "operator": "", "desc": "" },
          +	{ "mask": "+7(87256)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Терекли-Мектеб", "operator": "", "desc": "" },
          +	{ "mask": "+7(87257)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Унцукуль", "operator": "", "desc": "" },
          +	{ "mask": "+7(87258)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Гуниб", "operator": "", "desc": "" },
          +	{ "mask": "+7(87259)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Хебда", "operator": "", "desc": "" },
          +	{ "mask": "+7(87260)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Акуша", "operator": "", "desc": "" },
          +	{ "mask": "+7(87261)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Тарумовка", "operator": "", "desc": "" },
          +	{ "mask": "+7(87262)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Курах", "operator": "", "desc": "" },
          +	{ "mask": "+7(87263)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Ахты", "operator": "", "desc": "" },
          +	{ "mask": "+7(87264)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Рутул", "operator": "", "desc": "" },
          +	{ "mask": "+7(87265)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Тлярата", "operator": "", "desc": "" },
          +	{ "mask": "+7(87266)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Цуриб", "operator": "", "desc": "" },
          +	{ "mask": "+7(87267)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Кумух", "operator": "", "desc": "" },
          +	{ "mask": "+7(87268)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Вачи", "operator": "", "desc": "" },
          +	{ "mask": "+7(87271)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Ботлих", "operator": "", "desc": "" },
          +	{ "mask": "+7(87272)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Мехельта", "operator": "", "desc": "" },
          +	{ "mask": "+7(87273)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Агвали", "operator": "", "desc": "" },
          +	{ "mask": "+7(87274)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Бежта", "operator": "", "desc": "" },
          +	{ "mask": "+7(87275)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Дагестанские Огни", "operator": "", "desc": "" },
          +	{ "mask": "+7(87276)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Южно-Сухокумск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87279)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Дагестан", "city": "Дылым", "operator": "", "desc": "" },
          +	{ "mask": "+7(873)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8732)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Назрань", "operator": "", "desc": "" },
          +	{ "mask": "+7(87341)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Орджоникидзевская", "operator": "", "desc": "" },
          +	{ "mask": "+7(87342)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Малгобек", "operator": "", "desc": "" },
          +	{ "mask": "+7(87343)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Джейрах", "operator": "", "desc": "" },
          +	{ "mask": "+7(87344)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Карабулак", "operator": "", "desc": "" },
          +	{ "mask": "+7(87345)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Ингушетия", "city": "Магас", "operator": "", "desc": "" },
          +	{ "mask": "+7(877)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8772)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Майкоп", "operator": "", "desc": "" },
          +	{ "mask": "+7(87770)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Кошехабль", "operator": "", "desc": "" },
          +	{ "mask": "+7(87771)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Тахтамукай", "operator": "", "desc": "" },
          +	{ "mask": "+7(87772)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Адыгейск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87773)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Хакуринохабль", "operator": "", "desc": "" },
          +	{ "mask": "+7(87777)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Тульский", "operator": "", "desc": "" },
          +	{ "mask": "+7(87778)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Красногвардейское", "operator": "", "desc": "" },
          +	{ "mask": "+7(87779)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Адыгея", "city": "Гиагинская", "operator": "", "desc": "" },
          +	{ "mask": "+7(878)###-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(8782)##-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Черкесск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87870)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Адыге-Хабль", "operator": "", "desc": "" },
          +	{ "mask": "+7(87872)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": ["Теберда", "Домбай"], "operator": "", "desc": "" },
          +	{ "mask": "+7(87873)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Хабез", "operator": "", "desc": "" },
          +	{ "mask": "+7(87874)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Кавказский", "operator": "", "desc": "" },
          +	{ "mask": "+7(87875)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Усть-Джегута", "operator": "", "desc": "" },
          +	{ "mask": "+7(87876)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Преградная", "operator": "", "desc": "" },
          +	{ "mask": "+7(87877)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Учкекен", "operator": "", "desc": "" },
          +	{ "mask": "+7(87878)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Зеленчукская", "operator": "", "desc": "" },
          +	{ "mask": "+7(87879)#-##-##", "cc": "RU", "cd": "Russia", "region": "Республика Карачаево-Черкесия", "city": "Карачаевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(879)###-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "", "operator": "", "desc": "" },
          +	{ "mask": "+7(87922)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Минеральные Воды", "operator": "", "desc": "" },
          +	{ "mask": "+7(8793)##-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Пятигорск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87932)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Железноводск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87934)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Ессентуки", "operator": "", "desc": "" },
          +	{ "mask": "+7(87935)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Лермонтов", "operator": "", "desc": "" },
          +	{ "mask": "+7(87937)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Кисловодск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87938)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Новопавловск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87951)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Георгиевск", "operator": "", "desc": "" },
          +	{ "mask": "+7(87961)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Ессентукская", "operator": "", "desc": "" },
          +	{ "mask": "+7(87964)#-##-##", "cc": "RU", "cd": "Russia", "region": "Ставропольский край", "city": "Курская", "operator": "", "desc": "" },
          +	{ "mask": "+7(9##)###-##-##", "cc": "RU", "cd": "Russia", "type": "mobile" }
          +]
          diff --git a/public/theme/jquery.inputmask/extra/phone-codes/phone-uk.js b/public/theme/jquery.inputmask/extra/phone-codes/phone-uk.js
          new file mode 100644
          index 0000000..dea8403
          --- /dev/null
          +++ b/public/theme/jquery.inputmask/extra/phone-codes/phone-uk.js
          @@ -0,0 +1,617 @@
          +[
          +    { "mask": "+44(113)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Leeds" },
          +    { "mask": "+44(114)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Sheffield" },
          +    { "mask": "+44(115)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Nottingham" },
          +    { "mask": "+44(116)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Leicester" },
          +    { "mask": "+44(117)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Bristol" },
          +    { "mask": "+44(118)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Reading" },
          +    { "mask": "+44(1200)-######", "cc": "UK", "cd": "United Kingdom", "city": "Clitheroe" },
          +    { "mask": "+44(1202)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bournemouth" },
          +    { "mask": "+44(1204)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bolton" },
          +    { "mask": "+44(1205)-######", "cc": "UK", "cd": "United Kingdom", "city": "Boston" },
          +    { "mask": "+44(1206)-######", "cc": "UK", "cd": "United Kingdom", "city": "Colchester" },
          +    { "mask": "+44(1207)-######", "cc": "UK", "cd": "United Kingdom", "city": "Consett" },
          +    { "mask": "+44(1208)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bodmin" },
          +    { "mask": "+44(1209)-######", "cc": "UK", "cd": "United Kingdom", "city": "Redruth" },
          +    { "mask": "+44(121)-###-####", "cc": "UK", "cd": "United Kingdom", "city": "Birmingham" },
          +    { "mask": "+44(1223)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cambridge" },
          +    { "mask": "+44(1224)-######", "cc": "UK", "cd": "United Kingdom", "city": "Aberdeen" },
          +    { "mask": "+44(1225)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bath" },
          +    { "mask": "+44(1226)-######", "cc": "UK", "cd": "United Kingdom", "city": "Barnsley" },
          +    { "mask": "+44(1227)-######", "cc": "UK", "cd": "United Kingdom", "city": "Canterbury" },
          +    { "mask": "+44(1228)-######", "cc": "UK", "cd": "United Kingdom", "city": "Carlisle" },
          +    { "mask": "+44(1229)-######", "cc": "UK", "cd": "United Kingdom", "city": "Barrow-in-Furness(2,4,5,6,8), Millom(3,7,9)" },
          +    { "mask": "+44(1233)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ashford (Kent)" },
          +    { "mask": "+44(1234)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bedford" },
          +    { "mask": "+44(1235)-######", "cc": "UK", "cd": "United Kingdom", "city": "Abingdon" },
          +    { "mask": "+44(1236)-######", "cc": "UK", "cd": "United Kingdom", "city": "Coatbridge" },
          +    { "mask": "+44(1237)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bideford" },
          +    { "mask": "+44(1239)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cardigan" },
          +    { "mask": "+44(1241)-######", "cc": "UK", "cd": "United Kingdom", "city": "Arbroath" },
          +    { "mask": "+44(1242)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cheltenham" },
          +    { "mask": "+44(1243)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chichester" },
          +    { "mask": "+44(1244)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chester" },
          +    { "mask": "+44(1245)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chelmsford" },
          +    { "mask": "+44(1246)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chesterfield" },
          +    { "mask": "+44(1248)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bangor (Gwynedd)" },
          +    { "mask": "+44(1249)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chippenham" },
          +    { "mask": "+44(1250)-######", "cc": "UK", "cd": "United Kingdom", "city": "Blairgowrie" },
          +    { "mask": "+44(1252)-######", "cc": "UK", "cd": "United Kingdom", "city": "Aldershot" },
          +    { "mask": "+44(1253)-######", "cc": "UK", "cd": "United Kingdom", "city": "Blackpool" },
          +    { "mask": "+44(1254)-######", "cc": "UK", "cd": "United Kingdom", "city": "Blackburn" },
          +    { "mask": "+44(1255)-######", "cc": "UK", "cd": "United Kingdom", "city": "Clacton-on-Sea" },
          +    { "mask": "+44(1256)-######", "cc": "UK", "cd": "United Kingdom", "city": "Basingstoke" },
          +    { "mask": "+44(1257)-######", "cc": "UK", "cd": "United Kingdom", "city": "Coppull" },
          +    { "mask": "+44(1258)-######", "cc": "UK", "cd": "United Kingdom", "city": "Blandford" },
          +    { "mask": "+44(1259)-######", "cc": "UK", "cd": "United Kingdom", "city": "Alloa" },
          +    { "mask": "+44(1260)-######", "cc": "UK", "cd": "United Kingdom", "city": "Congleton" },
          +    { "mask": "+44(1261)-######", "cc": "UK", "cd": "United Kingdom", "city": "Banff" },
          +    { "mask": "+44(1262)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bridlington" },
          +    { "mask": "+44(1263)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cromer" },
          +    { "mask": "+44(1264)-######", "cc": "UK", "cd": "United Kingdom", "city": "Andover" },
          +    { "mask": "+44(1267)-######", "cc": "UK", "cd": "United Kingdom", "city": "Carmarthen" },
          +    { "mask": "+44(1268)-######", "cc": "UK", "cd": "United Kingdom", "city": "Basildon" },
          +    { "mask": "+44(1269)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ammanford" },
          +    { "mask": "+44(1270)-######", "cc": "UK", "cd": "United Kingdom", "city": "Crewe" },
          +    { "mask": "+44(1271)-######", "cc": "UK", "cd": "United Kingdom", "city": "Barnstaple" },
          +    { "mask": "+44(1273)-######", "cc": "UK", "cd": "United Kingdom", "city": "Brighton" },
          +    { "mask": "+44(1274)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bradford" },
          +    { "mask": "+44(1275)-######", "cc": "UK", "cd": "United Kingdom", "city": "Clevedon" },
          +    { "mask": "+44(1276)-######", "cc": "UK", "cd": "United Kingdom", "city": "Camberley" },
          +    { "mask": "+44(1277)-######", "cc": "UK", "cd": "United Kingdom", "city": "Brentwood" },
          +    { "mask": "+44(1278)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bridgwater" },
          +    { "mask": "+44(1279)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bishops Stortford" },
          +    { "mask": "+44(1280)-######", "cc": "UK", "cd": "United Kingdom", "city": "Buckingham" },
          +    { "mask": "+44(1282)-######", "cc": "UK", "cd": "United Kingdom", "city": "Burnley" },
          +    { "mask": "+44(1283)-######", "cc": "UK", "cd": "United Kingdom", "city": "Burton-on-Trent" },
          +    { "mask": "+44(1284)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bury St Edmunds" },
          +    { "mask": "+44(1285)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cirencester" },
          +    { "mask": "+44(1286)-######", "cc": "UK", "cd": "United Kingdom", "city": "Caernarfon" },
          +    { "mask": "+44(1287)-######", "cc": "UK", "cd": "United Kingdom", "city": "Guisborough" },
          +    { "mask": "+44(1288)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bude" },
          +    { "mask": "+44(1289)-######", "cc": "UK", "cd": "United Kingdom", "city": "Berwick-upon-Tweed" },
          +    { "mask": "+44(1290)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cumnock" },
          +    { "mask": "+44(1291)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chepstow" },
          +    { "mask": "+44(1292)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ayr" },
          +    { "mask": "+44(1293)-######", "cc": "UK", "cd": "United Kingdom", "city": "Crawley" },
          +    { "mask": "+44(1294)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ardrossan" },
          +    { "mask": "+44(1295)-######", "cc": "UK", "cd": "United Kingdom", "city": "Banbury" },
          +    { "mask": "+44(1296)-######", "cc": "UK", "cd": "United Kingdom", "city": "Aylesbury" },
          +    { "mask": "+44(1297)-######", "cc": "UK", "cd": "United Kingdom", "city": "Axminster" },
          +    { "mask": "+44(1298)-######", "cc": "UK", "cd": "United Kingdom", "city": "Buxton" },
          +    { "mask": "+44(1299)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bewdley" },
          +    { "mask": "+44(1300)-######", "cc": "UK", "cd": "United Kingdom", "city": "Cerne Abbas" },
          +    { "mask": "+44(1301)-######", "cc": "UK", "cd": "United Kingdom", "city": "Arrochar" },
          +    { "mask": "+44(1302)-######", "cc": "UK", "cd": "United Kingdom", "city": "Doncaster" },
          +    { "mask": "+44(1303)-######", "cc": "UK", "cd": "United Kingdom", "city": "Folkestone" },
          +    { "mask": "+44(1304)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dover" },
          +    { "mask": "+44(1305)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dorchester" },
          +    { "mask": "+44(1306)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dorking" },
          +    { "mask": "+44(1307)-######", "cc": "UK", "cd": "United Kingdom", "city": "Forfar" },
          +    { "mask": "+44(1308)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bridport" },
          +    { "mask": "+44(1309)-######", "cc": "UK", "cd": "United Kingdom", "city": "Forres" },
          +    { "mask": "+44(131)-###-###", "cc": "UK", "cd": "United Kingdom", "city": "Edinburgh" },
          +    { "mask": "+44(1320)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fort Augustus" },
          +    { "mask": "+44(1322)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dartford" },
          +    { "mask": "+44(1323)-######", "cc": "UK", "cd": "United Kingdom", "city": "Eastbourne" },
          +    { "mask": "+44(1324)-######", "cc": "UK", "cd": "United Kingdom", "city": "Falkirk" },
          +    { "mask": "+44(1325)-######", "cc": "UK", "cd": "United Kingdom", "city": "Darlington" },
          +    { "mask": "+44(1326)-######", "cc": "UK", "cd": "United Kingdom", "city": "Falmouth" },
          +    { "mask": "+44(1327)-######", "cc": "UK", "cd": "United Kingdom", "city": "Daventry" },
          +    { "mask": "+44(1328)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fakenham" },
          +    { "mask": "+44(1329)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fareham" },
          +    { "mask": "+44(1330)-######", "cc": "UK", "cd": "United Kingdom", "city": "Banchory" },
          +    { "mask": "+44(1332)-######", "cc": "UK", "cd": "United Kingdom", "city": "Derby" },
          +    { "mask": "+44(1333)-######", "cc": "UK", "cd": "United Kingdom", "city": "Peat Inn" },
          +    { "mask": "+44(1334)-######", "cc": "UK", "cd": "United Kingdom", "city": "St Andrews" },
          +    { "mask": "+44(1335)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ashbourne" },
          +    { "mask": "+44(1337)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ladybank" },
          +    { "mask": "+44(1339)-######", "cc": "UK", "cd": "United Kingdom", "city": "Aboyne(2,3,5,8), Ballater(4,6,7,9)" },
          +    { "mask": "+44(1340)-######", "cc": "UK", "cd": "United Kingdom", "city": "Craigellachie" },
          +    { "mask": "+44(1341)-######", "cc": "UK", "cd": "United Kingdom", "city": "Barmouth" },
          +    { "mask": "+44(1342)-######", "cc": "UK", "cd": "United Kingdom", "city": "East Grinstead" },
          +    { "mask": "+44(1343)-######", "cc": "UK", "cd": "United Kingdom", "city": "Elgin" },
          +    { "mask": "+44(1344)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bracknell" },
          +    { "mask": "+44(1346)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fraserburgh" },
          +    { "mask": "+44(1347)-######", "cc": "UK", "cd": "United Kingdom", "city": "Easingwold" },
          +    { "mask": "+44(1348)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fishguard" },
          +    { "mask": "+44(1349)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dingwall" },
          +    { "mask": "+44(1350)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dunkeld" },
          +    { "mask": "+44(1352)-######", "cc": "UK", "cd": "United Kingdom", "city": "Mold" },
          +    { "mask": "+44(1353)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ely" },
          +    { "mask": "+44(1354)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chatteris" },
          +    { "mask": "+44(1355)-######", "cc": "UK", "cd": "United Kingdom", "city": "East Kilbride" },
          +    { "mask": "+44(1356)-######", "cc": "UK", "cd": "United Kingdom", "city": "Brechin" },
          +    { "mask": "+44(1357)-######", "cc": "UK", "cd": "United Kingdom", "city": "Strathaven" },
          +    { "mask": "+44(1358)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ellon" },
          +    { "mask": "+44(1359)-######", "cc": "UK", "cd": "United Kingdom", "city": "Pakenham" },
          +    { "mask": "+44(1360)-######", "cc": "UK", "cd": "United Kingdom", "city": "Killearn" },
          +    { "mask": "+44(1361)-######", "cc": "UK", "cd": "United Kingdom", "city": "Duns" },
          +    { "mask": "+44(1362)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dereham" },
          +    { "mask": "+44(1363)-######", "cc": "UK", "cd": "United Kingdom", "city": "Crediton" },
          +    { "mask": "+44(1364)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ashburton" },
          +    { "mask": "+44(1366)-######", "cc": "UK", "cd": "United Kingdom", "city": "Downham Market" },
          +    { "mask": "+44(1367)-######", "cc": "UK", "cd": "United Kingdom", "city": "Faringdon" },
          +    { "mask": "+44(1368)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dunbar" },
          +    { "mask": "+44(1369)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dunoon" },
          +    { "mask": "+44(1371)-######", "cc": "UK", "cd": "United Kingdom", "city": "Great Dunmow" },
          +    { "mask": "+44(1372)-######", "cc": "UK", "cd": "United Kingdom", "city": "Esher" },
          +    { "mask": "+44(1373)-######", "cc": "UK", "cd": "United Kingdom", "city": "Frome" },
          +    { "mask": "+44(1375)-######", "cc": "UK", "cd": "United Kingdom", "city": "Grays Thurrock" },
          +    { "mask": "+44(1376)-######", "cc": "UK", "cd": "United Kingdom", "city": "Braintree" },
          +    { "mask": "+44(1377)-######", "cc": "UK", "cd": "United Kingdom", "city": "Driffield" },
          +    { "mask": "+44(1379)-######", "cc": "UK", "cd": "United Kingdom", "city": "Diss" },
          +    { "mask": "+44(1380)-######", "cc": "UK", "cd": "United Kingdom", "city": "Devizes" },
          +    { "mask": "+44(1381)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fortrose" },
          +    { "mask": "+44(1382)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dundee" },
          +    { "mask": "+44(1383)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dunfermline" },
          +    { "mask": "+44(1384)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dudley" },
          +    { "mask": "+44(1386)-######", "cc": "UK", "cd": "United Kingdom", "city": "Evesham" },
          +    { "mask": "+44(1387)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dumfries" },
          +    { "mask": "+44(13873)-####[#]", "cc": "UK", "cd": "United Kingdom", "city": "Langholm" },
          +    { "mask": "+44(1388)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bishop Auckland(3,4,6,7,8,9), Stanhope(2,5)" },
          +    { "mask": "+44(1389)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dumbarton" },
          +    { "mask": "+44(1392)-######", "cc": "UK", "cd": "United Kingdom", "city": "Exeter" },
          +    { "mask": "+44(1394)-######", "cc": "UK", "cd": "United Kingdom", "city": "Felixstowe" },
          +    { "mask": "+44(1395)-######", "cc": "UK", "cd": "United Kingdom", "city": "Budleigh Salterton" },
          +    { "mask": "+44(1397)-######", "cc": "UK", "cd": "United Kingdom", "city": "Fort William" },
          +    { "mask": "+44(1398)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dulverton" },
          +    { "mask": "+44(1400)-######", "cc": "UK", "cd": "United Kingdom", "city": "Honington" },
          +    { "mask": "+44(1403)-######", "cc": "UK", "cd": "United Kingdom", "city": "Horsham" },
          +    { "mask": "+44(1404)-######", "cc": "UK", "cd": "United Kingdom", "city": "Honiton" },
          +    { "mask": "+44(1405)-######", "cc": "UK", "cd": "United Kingdom", "city": "Goole" },
          +    { "mask": "+44(1406)-######", "cc": "UK", "cd": "United Kingdom", "city": "Holbeach" },
          +    { "mask": "+44(1407)-######", "cc": "UK", "cd": "United Kingdom", "city": "Holyhead" },
          +    { "mask": "+44(1408)-######", "cc": "UK", "cd": "United Kingdom", "city": "Golspie" },
          +    { "mask": "+44(1409)-######", "cc": "UK", "cd": "United Kingdom", "city": "Holsworthy" },
          +    { "mask": "+44(141)-###-###", "cc": "UK", "cd": "United Kingdom", "city": "Glasgow" },
          +    { "mask": "+44(1420)-######", "cc": "UK", "cd": "United Kingdom", "city": "Alton" },
          +    { "mask": "+44(1422)-######", "cc": "UK", "cd": "United Kingdom", "city": "Halifax" },
          +    { "mask": "+44(1423)-######", "cc": "UK", "cd": "United Kingdom", "city": "Boroughbridge(3,4,9), Harrogate(2,5,6,7,8)" },
          +    { "mask": "+44(1424)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hastings" },
          +    { "mask": "+44(1425)-######", "cc": "UK", "cd": "United Kingdom", "city": "Ringwood" },
          +    { "mask": "+44(1427)-######", "cc": "UK", "cd": "United Kingdom", "city": "Gainsborough" },
          +    { "mask": "+44(1428)-######", "cc": "UK", "cd": "United Kingdom", "city": "Haslemere" },
          +    { "mask": "+44(1429)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hartlepool" },
          +    { "mask": "+44(1430)-######", "cc": "UK", "cd": "United Kingdom", "city": "Market Weighton(6,7,8,9), North Cave(2,3,4,5)" },
          +    { "mask": "+44(1431)-######", "cc": "UK", "cd": "United Kingdom", "city": "Helmsdale" },
          +    { "mask": "+44(1432)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hereford" },
          +    { "mask": "+44(1433)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hathersage" },
          +    { "mask": "+44(1434)-######", "cc": "UK", "cd": "United Kingdom", "city": "Bellingham(2,4,9), Haltwhistle(3,5), Hexham(6,7,8)" },
          +    { "mask": "+44(1435)-######", "cc": "UK", "cd": "United Kingdom", "city": "Heathfield" },
          +    { "mask": "+44(1436)-######", "cc": "UK", "cd": "United Kingdom", "city": "Helensburgh" },
          +    { "mask": "+44(1437)-######", "cc": "UK", "cd": "United Kingdom", "city": "Clynderwen(2,3,4,5), Haverfordwest(6,7,8,9)" },
          +    { "mask": "+44(1438)-######", "cc": "UK", "cd": "United Kingdom", "city": "Stevenage" },
          +    { "mask": "+44(1439)-######", "cc": "UK", "cd": "United Kingdom", "city": "Helmsley" },
          +    { "mask": "+44(1440)-######", "cc": "UK", "cd": "United Kingdom", "city": "Haverhill" },
          +    { "mask": "+44(1442)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hemel Hempstead" },
          +    { "mask": "+44(1443)-######", "cc": "UK", "cd": "United Kingdom", "city": "Pontypridd" },
          +    { "mask": "+44(1444)-######", "cc": "UK", "cd": "United Kingdom", "city": "Haywards Heath" },
          +    { "mask": "+44(1445)-######", "cc": "UK", "cd": "United Kingdom", "city": "Gairloch" },
          +    { "mask": "+44(1446)-######", "cc": "UK", "cd": "United Kingdom", "city": "Barry" },
          +    { "mask": "+44(1449)-######", "cc": "UK", "cd": "United Kingdom", "city": "Stowmarket" },
          +    { "mask": "+44(1450)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hawick" },
          +    { "mask": "+44(1451)-######", "cc": "UK", "cd": "United Kingdom", "city": "Stow-on-the-Wold" },
          +    { "mask": "+44(1452)-######", "cc": "UK", "cd": "United Kingdom", "city": "Gloucester" },
          +    { "mask": "+44(1453)-######", "cc": "UK", "cd": "United Kingdom", "city": "Dursley" },
          +    { "mask": "+44(1454)-######", "cc": "UK", "cd": "United Kingdom", "city": "Chipping Sodbury" },
          +    { "mask": "+44(1455)-######", "cc": "UK", "cd": "United Kingdom", "city": "Hinckley" },
          +    { "mask": "+44(1456)-######", "cc": "UK", "cd": "United Kingdom", "city": "Glenurquhart" }
          +//
          +//     //http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom
          +// 01457	Glossop
          +// 01458	Glastonbury
          +// 01460	Chard
          +// 01461	Gretna
          +// 01462	Hitchin
          +// 01463	Inverness
          +// 01464	Insch
          +// 01465	Girvan
          +// 01466	Huntly
          +// 01467	Inverurie
          +// 01469	Killingholme
          +// 01470	Isle of Skye - Edinbane
          +// 01471	Isle of Skye - Broadford
          +// 01472	Grimsby
          +// 01473	Ipswich
          +// 01474	Gravesend
          +// 01475	Greenock
          +// 01476	Grantham
          +// 01477	Holmes Chapel
          +// 01478	Isle of Skye - Portree
          +// 01479	Grantown-on-Spey
          +// 01480	Huntingdon
          +// 01481	Guernsey
          +// 01482	Hull
          +// 01483	Guildford
          +// 01484	Huddersfield
          +// 01485	Hunstanton
          +// 01487	Warboys
          +// 01488	Hungerford
          +// 01489	Bishops Waltham
          +// 01490	Corwen
          +// 01491	Henley-on-Thames
          +// 01492	Colwyn Bay
          +// 01493	Great Yarmouth
          +// 01494	High Wycombe
          +// 01495	Pontypool
          +// 01496	Port Ellen
          +// 01497	Hay-on-Wye
          +// 01499	Inveraray
          +// 01501	Harthill
          +// 01502	Lowestoft
          +// 01503	Looe
          +// 01505	Johnstone
          +// 01506	Bathgate
          +// 01507	Alford (Lincs)(4,8,9), Louth (3,6,7), Spilsby(2,5)
          +// 01508	Brooke
          +// 01509	Loughborough
          +// 0151	Liverpool
          +// 01520	Lochcarron
          +// 01522	Lincoln
          +// 01524	Lancaster
          +// 015242	Hornby
          +// 01525	Leighton Buzzard
          +// 01526	Martin
          +// 01527	Redditch
          +// 01528	Laggan
          +// 01529	Sleaford
          +// 01530	Coalville
          +// 01531	Ledbury
          +// 01534	Jersey
          +// 01535	Keighley
          +// 01536	Kettering
          +// 01538	Ipstones
          +// 01539	Kendal
          +// 015394	Hawkshead
          +// 015395	Grange-over-Sands
          +// 015396	Sedbergh
          +// 01540	Kingussie
          +// 01542	Keith
          +// 01543	Cannock
          +// 01544	Kington
          +// 01545	Llanarth
          +// 01546	Lochgilphead
          +// 01547	Knighton
          +// 01548	Kingsbridge
          +// 01549	Lairg
          +// 01550	Llandovery
          +// 01553	Kings Lynn
          +// 01554	Llanelli
          +// 01555	Lanark
          +// 01556	Castle Douglas
          +// 01557	Kirkcudbright
          +// 01558	Llandeilo
          +// 01559	Llandysul
          +// 01560	Moscow
          +// 01561	Laurencekirk
          +// 01562	Kidderminster
          +// 01563	Kilmarnock
          +// 01564	Lapworth
          +// 01565	Knutsford
          +// 01566	Launceston
          +// 01567	Killin
          +// 01568	Leominster
          +// 01569	Stonehaven
          +// 01570	Lampeter
          +// 01571	Lochinver
          +// 01572	Oakham
          +// 01573	Kelso
          +// 01575	Kirriemuir
          +// 01576	Lockerbie
          +// 01577	Kinross
          +// 01578	Lauder
          +// 01579	Liskeard
          +// 01580	Cranbrook
          +// 01581	New Luce
          +// 01582	Luton
          +// 01583	Carradale
          +// 01584	Ludlow
          +// 01586	Campbeltown
          +// 01588	Bishops Castle
          +// 01590	Lymington
          +// 01591	Llanwrtyd Wells
          +// 01592	Kirkcaldy
          +// 01593	Lybster
          +// 01594	Lydney
          +// 01595	Lerwick, Foula(75), Fair Isle(76)
          +// 01597	Llandrindod Wells
          +// 01598	Lynton
          +// 01599	Kyle
          +// 01600	Monmouth
          +// 01603	Norwich
          +// 01604	Northampton
          +// 01606	Northwich
          +// 01608	Chipping Norton
          +// 01609	Northallerton
          +// 0161	Manchester
          +// 01620	North Berwick
          +// 01621	Maldon
          +// 01622	Maidstone
          +// 01623	Mansfield
          +// 01624	Isle of Man
          +// 01625	Macclesfield
          +// 01626	Newton Abbot
          +// 01628	Maidenhead
          +// 01629	Matlock
          +// 01630	Market Drayton
          +// 01631	Oban
          +// 01633	Newport
          +// 01634	Medway
          +// 01635	Newbury
          +// 01636	Newark
          +// 01637	Newquay
          +// 01638	Newmarket
          +// 01639	Neath
          +// 01641	Strathy
          +// 01642	Middlesbrough
          +// 01643	Minehead
          +// 01644	New Galloway
          +// 01646	Milford Haven
          +// 01647	Moretonhampstead
          +// 01650	Cemmaes Road
          +// 01651	Oldmeldrum
          +// 01652	Brigg
          +// 01653	Malton
          +// 01654	Machynlleth
          +// 01655	Maybole
          +// 01656	Bridgend
          +// 01659	Sanquhar
          +// 01661	Prudhoe
          +// 01663	New Mills
          +// 01664	Melton Mowbray
          +// 01665	Alnwick
          +// 01666	Malmesbury
          +// 01667	Nairn
          +// 01668	Bamburgh
          +// 01669	Rothbury
          +// 01670	Morpeth
          +// 01671	Newton Stewart
          +// 01672	Marlborough
          +// 01673	Market Rasen
          +// 01674	Montrose
          +// 01675	Coleshill
          +// 01676	Meriden
          +// 01677	Bedale
          +// 01678	Bala
          +// 01680	Isle of Mull - Craignure
          +// 01681	Isle of Mull - Fionnphort
          +// 01683	Moffat
          +// 01684	Malvern
          +// 01685	Merthyr Tydfil
          +// 01686	Llanidloes(2,3,4,7), Newtown(5,6,8,9)
          +// 01687	Mallaig
          +// 01688	Isle of Mull - Tobermory
          +// 01689	Orpington
          +// 01690	Betws-y-Coed
          +// 01691	Oswestry
          +// 01692	North Walsham
          +// 01694	Church Stretton
          +// 01695	Skelmersdale
          +// 01697	Brampton
          +// 016973	Wigton
          +// 016974	Raughton Head
          +// 01698	Motherwell
          +// 01700	Rothesay
          +// 01702	Southend-on-Sea
          +// 01704	Southport
          +// 01706	Rochdale
          +// 01707	Welwyn Garden City
          +// 01708	Romford
          +// 01709	Rotherham
          +// 01720	Isles of Scilly
          +// 01721	Peebles
          +// 01722	Salisbury
          +// 01723	Scarborough
          +// 01724	Scunthorpe
          +// 01725	Rockbourne
          +// 01726	St Austell
          +// 01727	St Albans
          +// 01728	Saxmundham
          +// 01729	Settle
          +// 01730	Petersfield
          +// 01732	Sevenoaks
          +// 01733	Peterborough
          +// 01736	Penzance
          +// 01737	Redhill
          +// 01738	Perth
          +// 01740	Sedgefield
          +// 01743	Shrewsbury
          +// 01744	St Helens
          +// 01745	Rhyl
          +// 01746	Bridgnorth
          +// 01747	Shaftesbury
          +// 01748	Richmond
          +// 01749	Shepton Mallet
          +// 01750	Selkirk
          +// 01751	Pickering
          +// 01752	Plymouth
          +// 01753	Slough
          +// 01754	Skegness
          +// 01756	Skipton
          +// 01757	Selby
          +// 01758	Pwllheli
          +// 01759	Pocklington
          +// 01760	Swaffham
          +// 01761	Temple Cloud
          +// 01763	Royston
          +// 01764	Crieff
          +// 01765	Ripon
          +// 01766	Porthmadog
          +// 01767	Sandy
          +// 01768	Penrith
          +// 017683	Appleby
          +// 017684	Pooley Bridge
          +// 017687	Keswick
          +// 01769	South Molton
          +// 01770	Isle of Arran
          +// 01771	Maud
          +// 01772	Preston
          +// 01773	Ripley
          +// 01775	Spalding
          +// 01776	Stranraer
          +// 01777	Retford
          +// 01778	Bourne
          +// 01779	Peterhead
          +// 01780	Stamford
          +// 01782	Stoke-on-Trent
          +// 01784	Staines
          +// 01785	Stafford
          +// 01786	Stirling
          +// 01787	Sudbury
          +// 01788	Rugby
          +// 01789	Stratford-upon-Avon
          +// 01790	Spilsby
          +// 01792	Swansea
          +// 01793	Swindon
          +// 01794	Romsey
          +// 01795	Sittingbourne
          +// 01796	Pitlochry
          +// 01797	Rye
          +// 01798	Pulborough
          +// 01799	Saffron Walden
          +// 01803	Torquay
          +// 01805	Torrington
          +// 01806	Shetland
          +// 01807	Ballindalloch
          +// 01808	Tomatin
          +// 01809	Tomdoun
          +// 01821	Kinrossie
          +// 01822	Tavistock
          +// 01823	Taunton
          +// 01824	Ruthin
          +// 01825	Uckfield
          +// 01827	Tamworth
          +// 01828	Coupar Angus
          +// 01829	Tarporley
          +// 01830	Kirkwhelpington
          +// 01832	Clopton
          +// 01833	Barnard Castle
          +// 01834	Narberth
          +// 01835	St Boswells
          +// 01837	Okehampton
          +// 01838	Dalmally
          +// 01840	Camelford
          +// 01841	Newquay
          +// 01842	Thetford
          +// 01843	Thanet
          +// 01844	Thame
          +// 01845	Thirsk
          +// 01847	Thurso(2,3,4,5,8), Tongue(6,7,9)
          +// 01848	Thornhill
          +// 01851	Great Bernera(4,6,9), Stornoway(2,3,5,7,8)
          +// 01852	Kilmelford
          +// 01854	Ullapool
          +// 01855	Ballachulish
          +// 01856	Orkney
          +// 01857	Sanday
          +// 01858	Market Harborough
          +// 01859	Harris
          +// 01862	Tain
          +// 01863	Ardgay
          +// 01864	Abington
          +// 01865	Oxford
          +// 01866	Kilchrenan
          +// 01869	Bicester
          +// 01870	Isle of Benbecula
          +// 01871	Castlebay
          +// 01872	Truro
          +// 01873	Abergavenny
          +// 01874	Brecon
          +// 01875	Tranent
          +// 01876	Lochmaddy
          +// 01877	Callander
          +// 01878	Lochboisdale
          +// 01879	Scarinish
          +// 01880	Tarbert
          +// 01882	Kinloch Rannoch
          +// 01883	Caterham
          +// 01884	Tiverton
          +// 01885	Pencombe
          +// 01886	Bromyard
          +// 01887	Aberfeldy
          +// 01888	Turriff
          +// 01889	Rugeley
          +// 01890	Ayton(5,6,7,9), Coldstream(2,3,4,8)
          +// 01892	Tunbridge Wells
          +// 01895	Uxbridge
          +// 01896	Galashiels
          +// 01899	Biggar
          +// 01900	Workington
          +// 01902	Wolverhampton
          +// 01903	Worthing
          +// 01904	York
          +// 01905	Worcester
          +// 01908	Milton Keynes
          +// 01909	Worksop
          +// 0191	Tyneside(2,4,6), Durham(3), Sunderland(5)
          +// 01920	Ware
          +// 01922	Walsall
          +// 01923	Watford
          +// 01924	Wakefield
          +// 01925	Warrington
          +// 01926	Warwick
          +// 01928	Runcorn
          +// 01929	Wareham
          +// 01931	Shap
          +// 01932	Weybridge
          +// 01933	Wellingborough
          +// 01934	Weston-super-Mare
          +// 01935	Yeovil
          +// 01937	Wetherby
          +// 01938	Welshpool
          +// 01939	Wem
          +// 01942	Wigan
          +// 01943	Guiseley
          +// 01944	West Heslerton
          +// 01945	Wisbech
          +// 01946	Whitehaven
          +// 019467	Gosforth
          +// 01947	Whitby
          +// 01948	Whitchurch
          +// 01949	Whatton
          +// 01950	Sandwick
          +// 01951	Colonsay
          +// 01952	Telford
          +// 01953	Wymondham
          +// 01954	Madingley
          +// 01955	Wick
          +// 01957	Mid Yell
          +// 01959	Westerham
          +// 01962	Winchester
          +// 01963	Wincanton
          +// 01964	Hornsea(2,5,8,9), Patrington(3,4,6,7)
          +// 01967	Strontian
          +// 01968	Penicuik
          +// 01969	Leyburn
          +// 01970	Aberystwyth
          +// 01971	Scourie
          +// 01972	Glenborrodale
          +// 01974	Llanon
          +// 01975	Alford (Aberdeen)(2,4,5,9), Strathdon(3,6,7,8)
          +// 01977	Pontefract
          +// 01978	Wrexham
          +// 01980	Amesbury
          +// 01981	Wormbridge
          +// 01982	Builth Wells
          +// 01983	Isle of Wight
          +// 01984	Watchet
          +// 01985	Warminster
          +// 01986	Bungay
          +// 01987	Ebbsfleet
          +// 01988	Wigtown
          +// 01989	Ross-on-Wye
          +// 01992	Lea Valley
          +// 01993	Witney
          +// 01994	St Clears
          +// 01995	Garstang
          +// 01997	Strathpeffer
          +// 020	London
          +// 023	Southampton(8X), Portsmouth(9X)
          +// 024	Coventry
          +// 028	Ballycastle(20), Martinstown(21), Ballymena(25), Ballymoney(27), Larne(28), Kilrea(29), Newry(30), Armagh(37), Portadown(38), Banbridge(40), Rostrevor(41), Kircubbin(42), Newcastle(Co. Down)(43), Downpatrick(44), Enniskillen(66), Lisnaskea(67), Kesh(68), Coleraine(70), Londonderry(71), Limavady(77), Magherafelt(79), Carrickmore(80), Newtownstewart(81), Omagh(82), Ballygawley(85), Cookstown(86), Dungannon(87), Fivemiletown(89), Belfast(90&95), Bangor(Co. Down)(91), Lisburn(92), Ballyclare(93), Antrim(94), Saintfield(97)
          +// 029	Cardiff
          +//
          +//
          +
          +]
          diff --git a/public/theme/jquery.tagsinput/.bower.json b/public/theme/jquery.tagsinput/.bower.json
          new file mode 100644
          index 0000000..31d6794
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/.bower.json
          @@ -0,0 +1,29 @@
          +{
          +  "name": "jquery.tagsinput",
          +  "main": [
          +    "src/jquery.tagsinput.js",
          +    "src/jquery.tagsinput.css"
          +  ],
          +  "ignore": [
          +    "**/.*",
          +    "*.html",
          +    "*.md",
          +    "*.json",
          +    "*.min.js",
          +    "test"
          +  ],
          +  "dependencies": {
          +    "jquery": "1.x"
          +  },
          +  "homepage": "https://github.com/xoxco/jQuery-Tags-Input",
          +  "version": "1.3.6",
          +  "_release": "1.3.6",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "v1.3.6",
          +    "commit": "2af96f99d231f6c5b2355ce61cd71de589f826e9"
          +  },
          +  "_source": "https://github.com/xoxco/jQuery-Tags-Input.git",
          +  "_target": "^1.3.6",
          +  "_originalSource": "jquery.tagsinput"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery.tagsinput/Gruntfile.js b/public/theme/jquery.tagsinput/Gruntfile.js
          new file mode 100644
          index 0000000..025b955
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/Gruntfile.js
          @@ -0,0 +1,31 @@
          +function loadConfig(path) {
          +   var glob = require('glob');
          +   var object = {};
          +   var key;
          +
          +   glob.sync('*', {cwd: path}).forEach(function(option) {
          +      key = option.replace(/\.js$/,'');
          +      object[key] = require(path + option);
          +   });
          +
          +  return object;
          +}
          +
          +module.exports = function(grunt) {
          +   grunt.loadTasks('grunt-tasks');
          +
          +   require('time-grunt')(grunt);
          +   
          +   // Only load tasks when they are needed
          +   require('jit-grunt')(grunt, {
          +      ngtemplates: 'grunt-angular-templates'
          +   });
          +
          +   var config = {
          +      pkg: grunt.file.readJSON('package.json'),
          +      env: process.env
          +   };
          +
          +   grunt.util._.extend(config, loadConfig('./grunt-tasks/options/'));
          +   grunt.initConfig(config);
          +};
          \ No newline at end of file
          diff --git a/public/theme/jquery.tagsinput/bower.json b/public/theme/jquery.tagsinput/bower.json
          new file mode 100644
          index 0000000..963d274
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/bower.json
          @@ -0,0 +1,15 @@
          +{
          +  "name": "jquery.tagsinput",
          +  "main": ["src/jquery.tagsinput.js", "src/jquery.tagsinput.css"],
          +  "ignore": [
          +    "**/.*",
          +    "*.html",
          +    "*.md",
          +    "*.json",
          +    "*.min.js",
          +    "test"
          +  ],
          +  "dependencies": {
          +    "jquery": "1.x"
          +  }
          +}
          diff --git a/public/theme/jquery.tagsinput/dist/jquery.tagsinput.min.css b/public/theme/jquery.tagsinput/dist/jquery.tagsinput.min.css
          new file mode 100644
          index 0000000..e42ba09
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/dist/jquery.tagsinput.min.css
          @@ -0,0 +1 @@
          +div.tagsinput{border:1px solid #CCC;background:#FFF;padding:5px;width:300px;height:100px;overflow-y:auto}div.tagsinput span.tag{border:1px solid #a5d24a;-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:5px;text-decoration:none;background:#cde69c;color:#638421;margin-right:5px;margin-bottom:5px;font-family:helvetica;font-size:13px}div.tagsinput span.tag a{font-weight:700;color:#82ad2b;text-decoration:none;font-size:11px}div.tagsinput input{width:80px;margin:0 5px 5px 0;font-family:helvetica;font-size:13px;border:1px solid transparent;padding:5px;background:0 0;color:#000;outline:0}div.tagsinput div{display:block;float:left}.tags_clear{clear:both;width:100%;height:0}.not_valid{background:#FBD8DB!important;color:#90111A!important}
          \ No newline at end of file
          diff --git a/public/theme/jquery.tagsinput/grunt-tasks/assets_production.js b/public/theme/jquery.tagsinput/grunt-tasks/assets_production.js
          new file mode 100644
          index 0000000..ead4582
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/grunt-tasks/assets_production.js
          @@ -0,0 +1,7 @@
          +module.exports = function(grunt) {
          +   grunt.registerTask('assets:production',
          +   [
          +      'cssmin:plugin',
          +      'uglify:plugin'
          +   ]);
          +};
          diff --git a/public/theme/jquery.tagsinput/grunt-tasks/options/cssmin.js b/public/theme/jquery.tagsinput/grunt-tasks/options/cssmin.js
          new file mode 100644
          index 0000000..69f8825
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/grunt-tasks/options/cssmin.js
          @@ -0,0 +1,10 @@
          +module.exports = {
          +   options: {
          +      shorthandCompacting: false
          +   },
          +   plugin: {
          +      files: {
          +         'dist/jquery.tagsinput.min.css': ['src/jquery.tagsinput.css']
          +      }
          +   }
          +};
          diff --git a/public/theme/jquery.tagsinput/grunt-tasks/options/uglify.js b/public/theme/jquery.tagsinput/grunt-tasks/options/uglify.js
          new file mode 100644
          index 0000000..20b8f49
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/grunt-tasks/options/uglify.js
          @@ -0,0 +1,10 @@
          +module.exports = {
          +   options: {
          +      mangle: true
          +   },
          +   plugin: {
          +      files: {
          +         'dist/jquery.tagsinput.min.js': ['src/jquery.tagsinput.js']
          +      }
          +   }
          +};
          diff --git a/public/theme/jquery.tagsinput/src/jquery.tagsinput.css b/public/theme/jquery.tagsinput/src/jquery.tagsinput.css
          new file mode 100644
          index 0000000..c595e24
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/src/jquery.tagsinput.css
          @@ -0,0 +1,7 @@
          +div.tagsinput { border:1px solid #CCC; background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto;}
          +div.tagsinput span.tag { border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica;  font-size:13px;}
          +div.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px;  } 
          +div.tagsinput input { width:80px; margin:0px; font-family: helvetica; font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px;  margin-right:5px; margin-bottom:5px; }
          +div.tagsinput div { display:block; float: left; } 
          +.tags_clear { clear: both; width: 100%; height: 0px; }
          +.not_valid {background: #FBD8DB !important; color: #90111A !important;}
          diff --git a/public/theme/jquery.tagsinput/src/jquery.tagsinput.js b/public/theme/jquery.tagsinput/src/jquery.tagsinput.js
          new file mode 100644
          index 0000000..b6c75e4
          --- /dev/null
          +++ b/public/theme/jquery.tagsinput/src/jquery.tagsinput.js
          @@ -0,0 +1,390 @@
          +/*
          +
          +	jQuery Tags Input Plugin 1.3.3
          +
          +	Copyright (c) 2011 XOXCO, Inc
          +
          +	Documentation for this plugin lives here:
          +	http://xoxco.com/clickable/jquery-tags-input
          +
          +	Licensed under the MIT license:
          +	http://www.opensource.org/licenses/mit-license.php
          +
          +	ben@xoxco.com
          +
          +*/
          +
          +(function($) {
          +
          +	var delimiter = new Array();
          +	var tags_callbacks = new Array();
          +	$.fn.doAutosize = function(o){
          +	    var minWidth = $(this).data('minwidth'),
          +	        maxWidth = $(this).data('maxwidth'),
          +	        val = '',
          +	        input = $(this),
          +	        testSubject = $('#'+$(this).data('tester_id'));
          +
          +	    if (val === (val = input.val())) {return;}
          +
          +	    // Enter new content into testSubject
          +	    var escaped = val.replace(/&/g, '&amp;').replace(/\s/g,' ').replace(/</g, '&lt;').replace(/>/g, '&gt;');
          +	    testSubject.html(escaped);
          +	    // Calculate new width + whether to change
          +	    var testerWidth = testSubject.width(),
          +	        newWidth = (testerWidth + o.comfortZone) >= minWidth ? testerWidth + o.comfortZone : minWidth,
          +	        currentWidth = input.width(),
          +	        isValidWidthChange = (newWidth < currentWidth && newWidth >= minWidth)
          +	                             || (newWidth > minWidth && newWidth < maxWidth);
          +
          +	    // Animate width
          +	    if (isValidWidthChange) {
          +	        input.width(newWidth);
          +	    }
          +
          +
          +  };
          +  $.fn.resetAutosize = function(options){
          +    // alert(JSON.stringify(options));
          +    var minWidth =  $(this).data('minwidth') || options.minInputWidth || $(this).width(),
          +        maxWidth = $(this).data('maxwidth') || options.maxInputWidth || ($(this).closest('.tagsinput').width() - options.inputPadding),
          +        val = '',
          +        input = $(this),
          +        testSubject = $('<tester/>').css({
          +            position: 'absolute',
          +            top: -9999,
          +            left: -9999,
          +            width: 'auto',
          +            fontSize: input.css('fontSize'),
          +            fontFamily: input.css('fontFamily'),
          +            fontWeight: input.css('fontWeight'),
          +            letterSpacing: input.css('letterSpacing'),
          +            whiteSpace: 'nowrap'
          +        }),
          +        testerId = $(this).attr('id')+'_autosize_tester';
          +    if(! $('#'+testerId).length > 0){
          +      testSubject.attr('id', testerId);
          +      testSubject.appendTo('body');
          +    }
          +
          +    input.data('minwidth', minWidth);
          +    input.data('maxwidth', maxWidth);
          +    input.data('tester_id', testerId);
          +    input.css('width', minWidth);
          +  };
          +
          +	$.fn.addTag = function(value,options) {
          +			options = jQuery.extend({focus:false,callback:true},options);
          +			this.each(function() {
          +				var id = $(this).attr('id');
          +
          +				var tagslist = $(this).val().split(delimiter[id]);
          +				if (tagslist[0] == '') {
          +					tagslist = new Array();
          +				}
          +
          +				value = jQuery.trim(value);
          +
          +				if (options.unique) {
          +					var skipTag = $(this).tagExist(value);
          +					if(skipTag == true) {
          +					    //Marks fake input as not_valid to let styling it
          +    				    $('#'+id+'_tag').addClass('not_valid');
          +    				}
          +				} else {
          +					var skipTag = false;
          +				}
          +
          +				if (value !='' && skipTag != true) {
          +                    $('<span>').addClass('tag').append(
          +                        $('<span>').text(value).append('&nbsp;&nbsp;'),
          +                        $('<a>', {
          +                            href  : '#',
          +                            title : 'Removing tag',
          +                            text  : 'x'
          +                        }).click(function () {
          +                            return $('#' + id).removeTag(escape(value));
          +                        })
          +                    ).insertBefore('#' + id + '_addTag');
          +
          +					tagslist.push(value);
          +
          +					$('#'+id+'_tag').val('');
          +					if (options.focus) {
          +						$('#'+id+'_tag').focus();
          +					} else {
          +						$('#'+id+'_tag').blur();
          +					}
          +
          +					$.fn.tagsInput.updateTagsField(this,tagslist);
          +
          +					if (options.callback && tags_callbacks[id] && tags_callbacks[id]['onAddTag']) {
          +						var f = tags_callbacks[id]['onAddTag'];
          +						f.call(this, value);
          +					}
          +					if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
          +					{
          +						var i = tagslist.length;
          +						var f = tags_callbacks[id]['onChange'];
          +						f.call(this, $(this), tagslist[i-1]);
          +					}
          +				}
          +
          +			});
          +
          +			return false;
          +		};
          +
          +	$.fn.removeTag = function(value) {
          +			value = unescape(value);
          +			this.each(function() {
          +				var id = $(this).attr('id');
          +
          +				var old = $(this).val().split(delimiter[id]);
          +
          +				$('#'+id+'_tagsinput .tag').remove();
          +				str = '';
          +				for (i=0; i< old.length; i++) {
          +					if (old[i]!=value) {
          +						str = str + delimiter[id] +old[i];
          +					}
          +				}
          +
          +				$.fn.tagsInput.importTags(this,str);
          +
          +				if (tags_callbacks[id] && tags_callbacks[id]['onRemoveTag']) {
          +					var f = tags_callbacks[id]['onRemoveTag'];
          +					f.call(this, value);
          +				}
          +			});
          +
          +			return false;
          +		};
          +
          +	$.fn.tagExist = function(val) {
          +		var id = $(this).attr('id');
          +		var tagslist = $(this).val().split(delimiter[id]);
          +		return (jQuery.inArray(val, tagslist) >= 0); //true when tag exists, false when not
          +	};
          +
          +   // clear all existing tags and import new ones from a string
          +   $.fn.importTags = function(str) {
          +      var id = $(this).attr('id');
          +      $('#'+id+'_tagsinput .tag').remove();
          +      $.fn.tagsInput.importTags(this,str);
          +   }
          +
          +	$.fn.tagsInput = function(options) {
          +    var settings = jQuery.extend({
          +      interactive:true,
          +      defaultText:'add a tag',
          +      minChars:0,
          +      width:'300px',
          +      height:'100px',
          +      autocomplete: {selectFirst: false },
          +      hide:true,
          +      delimiter: ',',
          +      unique:true,
          +      removeWithBackspace:true,
          +      placeholderColor:'#666666',
          +      autosize: true,
          +      comfortZone: 20,
          +      inputPadding: 6*2
          +    },options);
          +
          +    	var uniqueIdCounter = 0;
          +
          +		this.each(function() {
          +         // If we have already initialized the field, do not do it again
          +         if (typeof $(this).attr('data-tagsinput-init') !== 'undefined') {
          +            return;
          +         }
          +
          +         // Mark the field as having been initialized
          +         $(this).attr('data-tagsinput-init', true);
          +
          +			if (settings.hide) {
          +				$(this).hide();
          +			}
          +			var id = $(this).attr('id');
          +			if (!id || delimiter[$(this).attr('id')]) {
          +				id = $(this).attr('id', 'tags' + new Date().getTime() + (uniqueIdCounter++)).attr('id');
          +			}
          +
          +			var data = jQuery.extend({
          +				pid:id,
          +				real_input: '#'+id,
          +				holder: '#'+id+'_tagsinput',
          +				input_wrapper: '#'+id+'_addTag',
          +				fake_input: '#'+id+'_tag'
          +			},settings);
          +
          +			delimiter[id] = data.delimiter;
          +
          +			if (settings.onAddTag || settings.onRemoveTag || settings.onChange) {
          +				tags_callbacks[id] = new Array();
          +				tags_callbacks[id]['onAddTag'] = settings.onAddTag;
          +				tags_callbacks[id]['onRemoveTag'] = settings.onRemoveTag;
          +				tags_callbacks[id]['onChange'] = settings.onChange;
          +			}
          +
          +			var markup = '<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">';
          +
          +			if (settings.interactive) {
          +				markup = markup + '<input id="'+id+'_tag" value="" data-default="'+settings.defaultText+'" />';
          +			}
          +
          +			markup = markup + '</div><div class="tags_clear"></div></div>';
          +
          +			$(markup).insertAfter(this);
          +
          +			$(data.holder).css('width',settings.width);
          +			$(data.holder).css('min-height',settings.height);
          +			$(data.holder).css('height',settings.height);
          +
          +			if ($(data.real_input).val()!='') {
          +				$.fn.tagsInput.importTags($(data.real_input),$(data.real_input).val());
          +			}
          +			if (settings.interactive) {
          +				$(data.fake_input).val($(data.fake_input).attr('data-default'));
          +				$(data.fake_input).css('color',settings.placeholderColor);
          +		        $(data.fake_input).resetAutosize(settings);
          +
          +				$(data.holder).bind('click',data,function(event) {
          +					$(event.data.fake_input).focus();
          +				});
          +
          +				$(data.fake_input).bind('focus',data,function(event) {
          +					if ($(event.data.fake_input).val()==$(event.data.fake_input).attr('data-default')) {
          +						$(event.data.fake_input).val('');
          +					}
          +					$(event.data.fake_input).css('color','#000000');
          +				});
          +
          +				if (settings.autocomplete_url != undefined) {
          +					autocomplete_options = {source: settings.autocomplete_url};
          +					for (attrname in settings.autocomplete) {
          +						autocomplete_options[attrname] = settings.autocomplete[attrname];
          +					}
          +
          +					if (jQuery.Autocompleter !== undefined) {
          +						$(data.fake_input).autocomplete(settings.autocomplete_url, settings.autocomplete);
          +						$(data.fake_input).bind('result',data,function(event,data,formatted) {
          +							if (data) {
          +								$('#'+id).addTag(data[0] + "",{focus:true,unique:(settings.unique)});
          +							}
          +					  	});
          +					} else if (jQuery.ui.autocomplete !== undefined) {
          +						$(data.fake_input).autocomplete(autocomplete_options);
          +						$(data.fake_input).bind('autocompleteselect',data,function(event,ui) {
          +							$(event.data.real_input).addTag(ui.item.value,{focus:true,unique:(settings.unique)});
          +							return false;
          +						});
          +					}
          +
          +
          +				} else {
          +						// if a user tabs out of the field, create a new tag
          +						// this is only available if autocomplete is not used.
          +						$(data.fake_input).bind('blur',data,function(event) {
          +							var d = $(this).attr('data-default');
          +							if ($(event.data.fake_input).val()!='' && $(event.data.fake_input).val()!=d) {
          +								if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
          +									$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});
          +							} else {
          +								$(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));
          +								$(event.data.fake_input).css('color',settings.placeholderColor);
          +							}
          +							return false;
          +						});
          +
          +				}
          +				// if user types a default delimiter like comma,semicolon and then create a new tag
          +				$(data.fake_input).bind('keypress',data,function(event) {
          +					if (_checkDelimiter(event)) {
          +					    event.preventDefault();
          +						if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
          +							$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});
          +					  	$(event.data.fake_input).resetAutosize(settings);
          +						return false;
          +					} else if (event.data.autosize) {
          +			            $(event.data.fake_input).doAutosize(settings);
          +
          +          			}
          +				});
          +				//Delete last tag on backspace
          +				data.removeWithBackspace && $(data.fake_input).bind('keydown', function(event)
          +				{
          +					if(event.keyCode == 8 && $(this).val() == '')
          +					{
          +						 event.preventDefault();
          +						 var last_tag = $(this).closest('.tagsinput').find('.tag:last').text();
          +						 var id = $(this).attr('id').replace(/_tag$/, '');
          +						 last_tag = last_tag.replace(/[\s]+x$/, '');
          +						 $('#' + id).removeTag(escape(last_tag));
          +						 $(this).trigger('focus');
          +					}
          +				});
          +				$(data.fake_input).blur();
          +
          +				//Removes the not_valid class when user changes the value of the fake input
          +				if(data.unique) {
          +				    $(data.fake_input).keydown(function(event){
          +				        if(event.keyCode == 8 || String.fromCharCode(event.which).match(/\w+|[áéíóúÁÉÍÓÚñÑ,/]+/)) {
          +				            $(this).removeClass('not_valid');
          +				        }
          +				    });
          +				}
          +			} // if settings.interactive
          +		});
          +
          +		return this;
          +
          +	};
          +
          +	$.fn.tagsInput.updateTagsField = function(obj,tagslist) {
          +		var id = $(obj).attr('id');
          +		$(obj).val(tagslist.join(delimiter[id]));
          +	};
          +
          +	$.fn.tagsInput.importTags = function(obj,val) {
          +		$(obj).val('');
          +		var id = $(obj).attr('id');
          +		var tags = val.split(delimiter[id]);
          +		for (i=0; i<tags.length; i++) {
          +			$(obj).addTag(tags[i],{focus:false,callback:false});
          +		}
          +		if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
          +		{
          +			var f = tags_callbacks[id]['onChange'];
          +			f.call(obj, obj, tags[i]);
          +		}
          +	};
          +
          +   /**
          +     * check delimiter Array
          +     * @param event
          +     * @returns {boolean}
          +     * @private
          +     */
          +   var _checkDelimiter = function(event){
          +      var found = false;
          +      if (event.which == 13) {
          +         return true;
          +      }
          +
          +      if (typeof event.data.delimiter === 'string') {
          +         if (event.which == event.data.delimiter.charCodeAt(0)) {
          +            found = true;
          +         }
          +      } else {
          +         $.each(event.data.delimiter, function(index, delimiter) {
          +            if (event.which == delimiter.charCodeAt(0)) {
          +               found = true;
          +            }
          +         });
          +      }
          +
          +      return found;
          +   }
          +})(jQuery);
          diff --git a/public/theme/jquery/.bower.json b/public/theme/jquery/.bower.json
          new file mode 100644
          index 0000000..b82c919
          --- /dev/null
          +++ b/public/theme/jquery/.bower.json
          @@ -0,0 +1,25 @@
          +{
          +  "name": "jquery",
          +  "main": "dist/jquery.js",
          +  "license": "MIT",
          +  "ignore": [
          +    "package.json"
          +  ],
          +  "keywords": [
          +    "jquery",
          +    "javascript",
          +    "browser",
          +    "library"
          +  ],
          +  "homepage": "https://github.com/jquery/jquery-dist",
          +  "version": "2.2.4",
          +  "_release": "2.2.4",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "2.2.4",
          +    "commit": "c0185ab7c75aab88762c5aae780b9d83b80eda72"
          +  },
          +  "_source": "https://github.com/jquery/jquery-dist.git",
          +  "_target": ">=1.7",
          +  "_originalSource": "jquery"
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery/AUTHORS.txt b/public/theme/jquery/AUTHORS.txt
          new file mode 100644
          index 0000000..dde64ca
          --- /dev/null
          +++ b/public/theme/jquery/AUTHORS.txt
          @@ -0,0 +1,278 @@
          +Authors ordered by first contribution.
          +
          +John Resig <jeresig@gmail.com>
          +Gilles van den Hoven <gilles0181@gmail.com>
          +Michael Geary <mike@geary.com>
          +Stefan Petre <stefan.petre@gmail.com>
          +Yehuda Katz <wycats@gmail.com>
          +Corey Jewett <cj@syntheticplayground.com>
          +Klaus Hartl <klaus.hartl@gmail.com>
          +Franck Marcia <franck.marcia@gmail.com>
          +Jörn Zaefferer <joern.zaefferer@gmail.com>
          +Paul Bakaus <paul.bakaus@gmail.com>
          +Brandon Aaron <brandon.aaron@gmail.com>
          +Mike Alsup <malsup@gmail.com>
          +Dave Methvin <dave.methvin@gmail.com>
          +Ed Engelhardt <edengelhardt@gmail.com>
          +Sean Catchpole <littlecooldude@gmail.com>
          +Paul Mclanahan <pmclanahan@gmail.com>
          +David Serduke <davidserduke@gmail.com>
          +Richard D. Worth <rdworth@gmail.com>
          +Scott González <scott.gonzalez@gmail.com>
          +Ariel Flesler <aflesler@gmail.com>
          +Jon Evans <jon@springyweb.com>
          +TJ Holowaychuk <tj@vision-media.ca>
          +Michael Bensoussan <mickey@seesmic.com>
          +Robert Katić <robert.katic@gmail.com>
          +Louis-Rémi Babé <lrbabe@gmail.com>
          +Earle Castledine <mrspeaker@gmail.com>
          +Damian Janowski <damian.janowski@gmail.com>
          +Rich Dougherty <rich@rd.gen.nz>
          +Kim Dalsgaard <kim@kimdalsgaard.com>
          +Andrea Giammarchi <andrea.giammarchi@gmail.com>
          +Mark Gibson <jollytoad@gmail.com>
          +Karl Swedberg <kswedberg@gmail.com>
          +Justin Meyer <justinbmeyer@gmail.com>
          +Ben Alman <cowboy@rj3.net>
          +James Padolsey <cla@padolsey.net>
          +David Petersen <public@petersendidit.com>
          +Batiste Bieler <batiste.bieler@gmail.com>
          +Alexander Farkas <info@corrupt-system.de>
          +Rick Waldron <waldron.rick@gmail.com>
          +Filipe Fortes <filipe@fortes.com>
          +Neeraj Singh <neerajdotname@gmail.com>
          +Paul Irish <paul.irish@gmail.com>
          +Iraê Carvalho <irae@irae.pro.br>
          +Matt Curry <matt@pseudocoder.com>
          +Michael Monteleone <michael@michaelmonteleone.net>
          +Noah Sloan <noah.sloan@gmail.com>
          +Tom Viner <github@viner.tv>
          +Douglas Neiner <doug@dougneiner.com>
          +Adam J. Sontag <ajpiano@ajpiano.com>
          +Dave Reed <dareed@microsoft.com>
          +Ralph Whitbeck <ralph.whitbeck@gmail.com>
          +Carl Fürstenberg <azatoth@gmail.com>
          +Jacob Wright <jacwright@gmail.com>
          +J. Ryan Stinnett <jryans@gmail.com>
          +unknown <Igen005@.upcorp.ad.uprr.com>
          +temp01 <temp01irc@gmail.com>
          +Heungsub Lee <h@subl.ee>
          +Colin Snover <github.com@zetafleet.com>
          +Ryan W Tenney <ryan@10e.us>
          +Pinhook <contact@pinhooklabs.com>
          +Ron Otten <r.j.g.otten@gmail.com>
          +Jephte Clain <Jephte.Clain@univ-reunion.fr>
          +Anton Matzneller <obhvsbypqghgc@gmail.com>
          +Alex Sexton <AlexSexton@gmail.com>
          +Dan Heberden <danheberden@gmail.com>
          +Henri Wiechers <hwiechers@gmail.com>
          +Russell Holbrook <russell.holbrook@patch.com>
          +Julian Aubourg <aubourg.julian@gmail.com>
          +Gianni Alessandro Chiappetta <gianni@runlevel6.org>
          +Scott Jehl <scottjehl@gmail.com>
          +James Burke <jrburke@gmail.com>
          +Jonas Pfenniger <jonas@pfenniger.name>
          +Xavi Ramirez <xavi.rmz@gmail.com>
          +Jared Grippe <jared@deadlyicon.com>
          +Sylvester Keil <sylvester@keil.or.at>
          +Brandon Sterne <bsterne@mozilla.com>
          +Mathias Bynens <mathias@qiwi.be>
          +Timmy Willison <timmywillisn@gmail.com>
          +Corey Frang <gnarf37@gmail.com>
          +Digitalxero <digitalxero>
          +Anton Kovalyov <anton@kovalyov.net>
          +David Murdoch <david@davidmurdoch.com>
          +Josh Varner <josh.varner@gmail.com>
          +Charles McNulty <cmcnulty@kznf.com>
          +Jordan Boesch <jboesch26@gmail.com>
          +Jess Thrysoee <jess@thrysoee.dk>
          +Michael Murray <m@murz.net>
          +Lee Carpenter <elcarpie@gmail.com>
          +Alexis Abril <me@alexisabril.com>
          +Rob Morgan <robbym@gmail.com>
          +John Firebaugh <john_firebaugh@bigfix.com>
          +Sam Bisbee <sam@sbisbee.com>
          +Gilmore Davidson <gilmoreorless@gmail.com>
          +Brian Brennan <me@brianlovesthings.com>
          +Xavier Montillet <xavierm02.net@gmail.com>
          +Daniel Pihlstrom <sciolist.se@gmail.com>
          +Sahab Yazdani <sahab.yazdani+github@gmail.com>
          +avaly <github-com@agachi.name>
          +Scott Hughes <hi@scott-hughes.me>
          +Mike Sherov <mike.sherov@gmail.com>
          +Greg Hazel <ghazel@gmail.com>
          +Schalk Neethling <schalk@ossreleasefeed.com>
          +Denis Knauf <Denis.Knauf@gmail.com>
          +Timo Tijhof <krinklemail@gmail.com>
          +Steen Nielsen <swinedk@gmail.com>
          +Anton Ryzhov <anton@ryzhov.me>
          +Shi Chuan <shichuanr@gmail.com>
          +Berker Peksag <berker.peksag@gmail.com>
          +Toby Brain <tobyb@freshview.com>
          +Matt Mueller <mattmuelle@gmail.com>
          +Justin <drakefjustin@gmail.com>
          +Daniel Herman <daniel.c.herman@gmail.com>
          +Oleg Gaidarenko <markelog@gmail.com>
          +Richard Gibson <richard.gibson@gmail.com>
          +Rafaël Blais Masson <rafbmasson@gmail.com>
          +cmc3cn <59194618@qq.com>
          +Joe Presbrey <presbrey@gmail.com>
          +Sindre Sorhus <sindresorhus@gmail.com>
          +Arne de Bree <arne@bukkie.nl>
          +Vladislav Zarakovsky <vlad.zar@gmail.com>
          +Andrew E Monat <amonat@gmail.com>
          +Oskari <admin@o-programs.com>
          +Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
          +tsinha <tsinha@Anthonys-MacBook-Pro.local>
          +Matt Farmer <matt@frmr.me>
          +Trey Hunner <treyhunner@gmail.com>
          +Jason Moon <jmoon@socialcast.com>
          +Jeffery To <jeffery.to@gmail.com>
          +Kris Borchers <kris.borchers@gmail.com>
          +Vladimir Zhuravlev <private.face@gmail.com>
          +Jacob Thornton <jacobthornton@gmail.com>
          +Chad Killingsworth <chadkillingsworth@missouristate.edu>
          +Nowres Rafid <nowres.rafed@gmail.com>
          +David Benjamin <davidben@mit.edu>
          +Uri Gilad <antishok@gmail.com>
          +Chris Faulkner <thefaulkner@gmail.com>
          +Elijah Manor <elijah.manor@gmail.com>
          +Daniel Chatfield <chatfielddaniel@gmail.com>
          +Nikita Govorov <nikita.govorov@gmail.com>
          +Wesley Walser <waw325@gmail.com>
          +Mike Pennisi <mike@mikepennisi.com>
          +Markus Staab <markus.staab@redaxo.de>
          +Dave Riddle <david@joyvuu.com>
          +Callum Macrae <callum@lynxphp.com>
          +Benjamin Truyman <bentruyman@gmail.com>
          +James Huston <james@jameshuston.net>
          +Erick Ruiz de Chávez <erickrdch@gmail.com>
          +David Bonner <dbonner@cogolabs.com>
          +Akintayo Akinwunmi <aakinwunmi@judge.com>
          +MORGAN <morgan@morgangraphics.com>
          +Ismail Khair <ismail.khair@gmail.com>
          +Carl Danley <carldanley@gmail.com>
          +Mike Petrovich <michael.c.petrovich@gmail.com>
          +Greg Lavallee <greglavallee@wapolabs.com>
          +Daniel Gálvez <dgalvez@editablething.com>
          +Sai Lung Wong <sai.wong@huffingtonpost.com>
          +Tom H Fuertes <TomFuertes@gmail.com>
          +Roland Eckl <eckl.roland@googlemail.com>
          +Jay Merrifield <fracmak@gmail.com>
          +Allen J Schmidt Jr <cobrasoft@gmail.com>
          +Jonathan Sampson <jjdsampson@gmail.com>
          +Marcel Greter <marcel.greter@ocbnet.ch>
          +Matthias Jäggli <matthias.jaeggli@gmail.com>
          +David Fox <dfoxinator@gmail.com>
          +Yiming He <yiminghe@gmail.com>
          +Devin Cooper <cooper.semantics@gmail.com>
          +Paul Ramos <paul.b.ramos@gmail.com>
          +Rod Vagg <rod@vagg.org>
          +Bennett Sorbo <bsorbo@gmail.com>
          +Sebastian Burkhard <sebi.burkhard@gmail.com>
          +Zachary Adam Kaplan <razic@viralkitty.com>
          +nanto_vi <nanto@moon.email.ne.jp>
          +nanto <nanto@moon.email.ne.jp>
          +Danil Somsikov <danilasomsikov@gmail.com>
          +Ryunosuke SATO <tricknotes.rs@gmail.com>
          +Jean Boussier <jean.boussier@gmail.com>
          +Adam Coulombe <me@adam.co>
          +Andrew Plummer <plummer.andrew@gmail.com>
          +Mark Raddatz <mraddatz@gmail.com>
          +Isaac Z. Schlueter <i@izs.me>
          +Karl Sieburg <ksieburg@yahoo.com>
          +Pascal Borreli <pascal@borreli.com>
          +Nguyen Phuc Lam <ruado1987@gmail.com>
          +Dmitry Gusev <dmitry.gusev@gmail.com>
          +Michał Gołębiowski <m.goleb@gmail.com>
          +Li Xudong <istonelee@gmail.com>
          +Steven Benner <admin@stevenbenner.com>
          +Tom H Fuertes <tomfuertes@gmail.com>
          +Renato Oliveira dos Santos <ros3@cin.ufpe.br>
          +ros3cin <ros3@cin.ufpe.br>
          +Jason Bedard <jason+jquery@jbedard.ca>
          +Kyle Robinson Young <kyle@dontkry.com>
          +Chris Talkington <chris@talkingtontech.com>
          +Eddie Monge <eddie@eddiemonge.com>
          +Terry Jones <terry@jon.es>
          +Jason Merino <jasonmerino@gmail.com>
          +Jeremy Dunck <jdunck@gmail.com>
          +Chris Price <price.c@gmail.com>
          +Guy Bedford <guybedford@gmail.com>
          +Amey Sakhadeo <me@ameyms.com>
          +Mike Sidorov <mikes.ekb@gmail.com>
          +Anthony Ryan <anthonyryan1@gmail.com>
          +Dominik D. Geyer <dominik.geyer@gmail.com>
          +George Kats <katsgeorgeek@gmail.com>
          +Lihan Li <frankieteardrop@gmail.com>
          +Ronny Springer <springer.ronny@gmail.com>
          +Chris Antaki <ChrisAntaki@gmail.com>
          +Marian Sollmann <marian.sollmann@cargomedia.ch>
          +njhamann <njhamann@gmail.com>
          +Ilya Kantor <iliakan@gmail.com>
          +David Hong <d.hong@me.com>
          +John Paul <john@johnkpaul.com>
          +Jakob Stoeck <jakob@pokermania.de>
          +Christopher Jones <chris@cjqed.com>
          +Forbes Lindesay <forbes@lindesay.co.uk>
          +S. Andrew Sheppard <andrew@wq.io>
          +Leonardo Balter <leonardo.balter@gmail.com>
          +Roman Reiß <me@silverwind.io>
          +Benjy Cui <benjytrys@gmail.com>
          +Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
          +John Hoven <hovenj@gmail.com>
          +Philip Jägenstedt <philip@foolip.org>
          +Christian Kosmowski <ksmwsk@gmail.com>
          +Liang Peng <poppinlp@gmail.com>
          +TJ VanToll <tj.vantoll@gmail.com>
          +Senya Pugach <upisfree@outlook.com>
          +Aurelio De Rosa <aurelioderosa@gmail.com>
          +Nazar Mokrynskyi <nazar@mokrynskyi.com>
          +Amit Merchant <bullredeyes@gmail.com>
          +Jason Bedard <jason+github@jbedard.ca>
          +Arthur Verschaeve <contact@arthurverschaeve.be>
          +Dan Hart <danhart@notonthehighstreet.com>
          +Bin Xin <rhyzix@gmail.com>
          +David Corbacho <davidcorbacho@gmail.com>
          +Veaceslav Grimalschi <grimalschi@yandex.ru>
          +Daniel Husar <dano.husar@gmail.com>
          +Frederic Hemberger <mail@frederic-hemberger.de>
          +Ben Toews <mastahyeti@gmail.com>
          +Aditya Raghavan <araghavan3@gmail.com>
          +Victor Homyakov <vkhomyackov@gmail.com>
          +Shivaji Varma <contact@shivajivarma.com>
          +Nicolas HENRY <icewil@gmail.com>
          +Anne-Gaelle Colom <coloma@westminster.ac.uk>
          +George Mauer <gmauer@gmail.com>
          +Leonardo Braga <leonardo.braga@gmail.com>
          +Stephen Edgar <stephen@netweb.com.au>
          +Thomas Tortorini <thomastortorini@gmail.com>
          +Winston Howes <winstonhowes@gmail.com>
          +Jon Hester <jon.d.hester@gmail.com>
          +Alexander O'Mara <me@alexomara.com>
          +Bastian Buchholz <buchholz.bastian@googlemail.com>
          +Arthur Stolyar <nekr.fabula@gmail.com>
          +Calvin Metcalf <calvin.metcalf@gmail.com>
          +Mu Haibao <mhbseal@163.com>
          +Richard McDaniel <rm0026@uah.edu>
          +Chris Rebert <github@rebertia.com>
          +Gabriel Schulhof <gabriel.schulhof@intel.com>
          +Gilad Peleg <giladp007@gmail.com>
          +Martin Naumann <martin@geekonaut.de>
          +Marek Lewandowski <m.lewandowski@cksource.com>
          +Bruno Pérel <brunoperel@gmail.com>
          +Reed Loden <reed@reedloden.com>
          +Daniel Nill <daniellnill@gmail.com>
          +Yongwoo Jeon <yongwoo.jeon@navercorp.com>
          +Sean Henderson <seanh.za@gmail.com>
          +Richard Kraaijenhagen <stdin+git@riichard.com>
          +Connor Atherton <c.liam.atherton@gmail.com>
          +Gary Ye <garysye@gmail.com>
          +Christian Grete <webmaster@christiangrete.com>
          +Liza Ramo <liza.h.ramo@gmail.com>
          +Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
          +Joelle Fleurantin <joasqueeniebee@gmail.com>
          +Jun Sun <klsforever@gmail.com>
          +Devin Wilson <dwilson6.github@gmail.com>
          +Todor Prikumov <tono_pr@abv.bg>
          +Zack Hall <zackhall@outlook.com>
          diff --git a/public/theme/jquery/LICENSE.txt b/public/theme/jquery/LICENSE.txt
          new file mode 100644
          index 0000000..5312a4c
          --- /dev/null
          +++ b/public/theme/jquery/LICENSE.txt
          @@ -0,0 +1,36 @@
          +Copyright jQuery Foundation and other contributors, https://jquery.org/
          +
          +This software consists of voluntary contributions made by many
          +individuals. For exact contribution history, see the revision history
          +available at https://github.com/jquery/jquery
          +
          +The following license applies to all parts of this software except as
          +documented below:
          +
          +====
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be
          +included in all copies or substantial portions of the Software.
          +
          +THE 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.
          +
          +====
          +
          +All files located in the node_modules and external directories are
          +externally maintained libraries used by this software which have their
          +own licenses; we recommend you read them, as their terms may differ from
          +the terms above.
          diff --git a/public/theme/jquery/README.md b/public/theme/jquery/README.md
          new file mode 100644
          index 0000000..ba3174a
          --- /dev/null
          +++ b/public/theme/jquery/README.md
          @@ -0,0 +1,65 @@
          +# jQuery
          +
          +> jQuery is a fast, small, and feature-rich JavaScript library.
          +
          +For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).
          +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
          +
          +## Including jQuery
          +
          +Below are some of the most common ways to include jQuery.
          +
          +### Browser
          +
          +#### Script tag
          +
          +```html
          +<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
          +```
          +
          +#### Babel
          +
          +[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
          +
          +```js
          +import $ from "jquery";
          +```
          +
          +#### Browserify/Webpack
          +
          +There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...
          +
          +```js
          +var $ = require("jquery");
          +```
          +
          +#### AMD (Asynchronous Module Definition)
          +
          +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).
          +
          +```js
          +define(["jquery"], function($) {
          +
          +});
          +```
          +
          +### Node
          +
          +To include jQuery in [Node](nodejs.org), first install with npm.
          +
          +```sh
          +npm install jquery
          +```
          +
          +For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.
          +
          +```js
          +require("jsdom").env("", function(err, window) {
          +	if (err) {
          +		console.error(err);
          +		return;
          +	}
          +
          +	var $ = require("jquery")(window);
          +});
          +```
          diff --git a/public/theme/jquery/bower.json b/public/theme/jquery/bower.json
          new file mode 100644
          index 0000000..95798d5
          --- /dev/null
          +++ b/public/theme/jquery/bower.json
          @@ -0,0 +1,14 @@
          +{
          +  "name": "jquery",
          +  "main": "dist/jquery.js",
          +  "license": "MIT",
          +  "ignore": [
          +    "package.json"
          +  ],
          +  "keywords": [
          +    "jquery",
          +    "javascript",
          +    "browser",
          +    "library"
          +  ]
          +}
          \ No newline at end of file
          diff --git a/public/theme/jquery/dist/jquery.js b/public/theme/jquery/dist/jquery.js
          new file mode 100644
          index 0000000..009e532
          --- /dev/null
          +++ b/public/theme/jquery/dist/jquery.js
          @@ -0,0 +1,4 @@
          +/*! jQuery v2.2.3 | (c) jQuery Foundation | jquery.org/license */
          +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
          +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(b,c,e){var f=!0,g="width"===c?b.offsetWidth:b.offsetHeight,h=Ca(b),i="border-box"===n.css(b,"boxSizing",!1,h);if(d.msFullscreenElement&&a.top!==a&&b.getClientRects().length&&(g=Math.round(100*b.getBoundingClientRect()[c])),0>=g||null==g){if(g=Fa(b,c,h),(0>g||null==g)&&(g=b.style[c]),Ba.test(g))return g;f=i&&(l.boxSizingReliable()||g===b.style[c]),g=parseFloat(g)||0}return g+Oa(b,c,e||(i?"border":"content"),f,h)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,
          +e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
          \ No newline at end of file
          diff --git a/public/theme/jquery/dist/jquery.min.js b/public/theme/jquery/dist/jquery.min.js
          new file mode 100644
          index 0000000..4024b66
          --- /dev/null
          +++ b/public/theme/jquery/dist/jquery.min.js
          @@ -0,0 +1,4 @@
          +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
          +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
          +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),
          +void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
          diff --git a/public/theme/jquery/dist/jquery.min.map b/public/theme/jquery/dist/jquery.min.map
          new file mode 100644
          index 0000000..49efa4b
          --- /dev/null
          +++ b/public/theme/jquery/dist/jquery.min.map
          @@ -0,0 +1 @@
          +{"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","realStringObj","parseFloat","key","nodeType","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","isArrayLike","makeArray","results","Object","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","m","nid","nidselect","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","targets","l","closest","pos","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnotwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","completed","removeEventListener","readyState","doScroll","setTimeout","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","register","initial","defineProperty","writable","configurable","set","data","prop","stored","camel","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHidden","el","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","unit","cssNumber","initialInUnit","style","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","sel","isNaN","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","Event","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","view","opener","getComputedStyle","swap","old","pixelPositionVal","boxSizingReliableVal","pixelMarginRightVal","reliableMarginLeftVal","container","backgroundClip","clearCloneStyle","cssText","computeStyleTests","divStyle","marginLeft","width","marginRight","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","reliableMarginRight","marginDiv","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","getBoundingClientRect","left","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","propHooks","run","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","rclickable","removeProp","tabindex","parseInt","for","class","rclass","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","rspaces","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","status","abort","statusText","finalText","success","method","crossDomain","host","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","getClientRects","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":";CAcC,SAAUA,EAAQC,GAEK,gBAAXC,SAAiD,gBAAnBA,QAAOC,QAQhDD,OAAOC,QAAUH,EAAOI,SACvBH,EAASD,GAAQ,GACjB,SAAUK,GACT,IAAMA,EAAED,SACP,KAAM,IAAIE,OAAO,2CAElB,OAAOL,GAASI,IAGlBJ,EAASD,IAIS,mBAAXO,QAAyBA,OAASC,KAAM,SAAUD,EAAQE,GAOnE,GAAIC,MAEAN,EAAWG,EAAOH,SAElBO,EAAQD,EAAIC,MAEZC,EAASF,EAAIE,OAEbC,EAAOH,EAAIG,KAEXC,EAAUJ,EAAII,QAEdC,KAEAC,EAAWD,EAAWC,SAEtBC,EAASF,EAAWG,eAEpBC,KAKHC,EAAU,QAGVC,EAAS,SAAUC,EAAUC,GAI5B,MAAO,IAAIF,GAAOG,GAAGC,KAAMH,EAAUC,IAKtCG,EAAQ,qCAGRC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOC,cAGhBX,GAAOG,GAAKH,EAAOY,WAGlBC,OAAQd,EAERe,YAAad,EAGbC,SAAU,GAGVc,OAAQ,EAERC,QAAS,WACR,MAAO1B,GAAM2B,KAAM9B,OAKpB+B,IAAK,SAAUC,GACd,MAAc,OAAPA,EAGE,EAANA,EAAUhC,KAAMgC,EAAMhC,KAAK4B,QAAW5B,KAAMgC,GAG9C7B,EAAM2B,KAAM9B,OAKdiC,UAAW,SAAUC,GAGpB,GAAIC,GAAMtB,EAAOuB,MAAOpC,KAAK2B,cAAeO,EAO5C,OAJAC,GAAIE,WAAarC,KACjBmC,EAAIpB,QAAUf,KAAKe,QAGZoB,GAIRG,KAAM,SAAUC,GACf,MAAO1B,GAAOyB,KAAMtC,KAAMuC,IAG3BC,IAAK,SAAUD,GACd,MAAOvC,MAAKiC,UAAWpB,EAAO2B,IAAKxC,KAAM,SAAUyC,EAAMC,GACxD,MAAOH,GAAST,KAAMW,EAAMC,EAAGD,OAIjCtC,MAAO,WACN,MAAOH,MAAKiC,UAAW9B,EAAMwC,MAAO3C,KAAM4C,aAG3CC,MAAO,WACN,MAAO7C,MAAK8C,GAAI,IAGjBC,KAAM,WACL,MAAO/C,MAAK8C,GAAI,KAGjBA,GAAI,SAAUJ,GACb,GAAIM,GAAMhD,KAAK4B,OACdqB,GAAKP,GAAU,EAAJA,EAAQM,EAAM,EAC1B,OAAOhD,MAAKiC,UAAWgB,GAAK,GAASD,EAAJC,GAAYjD,KAAMiD,SAGpDC,IAAK,WACJ,MAAOlD,MAAKqC,YAAcrC,KAAK2B,eAKhCtB,KAAMA,EACN8C,KAAMjD,EAAIiD,KACVC,OAAQlD,EAAIkD,QAGbvC,EAAOwC,OAASxC,EAAOG,GAAGqC,OAAS,WAClC,GAAIC,GAASC,EAAMC,EAAKC,EAAMC,EAAaC,EAC1CC,EAAShB,UAAW,OACpBF,EAAI,EACJd,EAASgB,UAAUhB,OACnBiC,GAAO,CAsBR,KAnBuB,iBAAXD,KACXC,EAAOD,EAGPA,EAAShB,UAAWF,OACpBA,KAIsB,gBAAXkB,IAAwB/C,EAAOiD,WAAYF,KACtDA,MAIIlB,IAAMd,IACVgC,EAAS5D,KACT0C,KAGWd,EAAJc,EAAYA,IAGnB,GAAqC,OAA9BY,EAAUV,UAAWF,IAG3B,IAAMa,IAAQD,GACbE,EAAMI,EAAQL,GACdE,EAAOH,EAASC,GAGXK,IAAWH,IAKXI,GAAQJ,IAAU5C,EAAOkD,cAAeN,KAC1CC,EAAc7C,EAAOmD,QAASP,MAE3BC,GACJA,GAAc,EACdC,EAAQH,GAAO3C,EAAOmD,QAASR,GAAQA,MAGvCG,EAAQH,GAAO3C,EAAOkD,cAAeP,GAAQA,KAI9CI,EAAQL,GAAS1C,EAAOwC,OAAQQ,EAAMF,EAAOF,IAGzBQ,SAATR,IACXG,EAAQL,GAASE,GAOrB,OAAOG,IAGR/C,EAAOwC,QAGNa,QAAS,UAAatD,EAAUuD,KAAKC,UAAWC,QAAS,MAAO,IAGhEC,SAAS,EAETC,MAAO,SAAUC,GAChB,KAAM,IAAI1E,OAAO0E,IAGlBC,KAAM,aAENX,WAAY,SAAUY,GACrB,MAA8B,aAAvB7D,EAAO8D,KAAMD,IAGrBV,QAASY,MAAMZ,QAEfa,SAAU,SAAUH,GACnB,MAAc,OAAPA,GAAeA,IAAQA,EAAI3E,QAGnC+E,UAAW,SAAUJ,GAMpB,GAAIK,GAAgBL,GAAOA,EAAIlE,UAC/B,QAAQK,EAAOmD,QAASU,IAAWK,EAAgBC,WAAYD,GAAkB,GAAO,GAGzFhB,cAAe,SAAUW,GACxB,GAAIO,EAMJ,IAA4B,WAAvBpE,EAAO8D,KAAMD,IAAsBA,EAAIQ,UAAYrE,EAAOgE,SAAUH,GACxE,OAAO,CAIR,IAAKA,EAAI/C,cACNlB,EAAOqB,KAAM4C,EAAK,iBAClBjE,EAAOqB,KAAM4C,EAAI/C,YAAYF,cAAiB,iBAChD,OAAO,CAKR,KAAMwD,IAAOP,IAEb,MAAeT,UAARgB,GAAqBxE,EAAOqB,KAAM4C,EAAKO,IAG/CE,cAAe,SAAUT,GACxB,GAAInB,EACJ,KAAMA,IAAQmB,GACb,OAAO,CAER,QAAO,GAGRC,KAAM,SAAUD,GACf,MAAY,OAAPA,EACGA,EAAM,GAIQ,gBAARA,IAAmC,kBAARA,GACxCnE,EAAYC,EAASsB,KAAM4C,KAAW,eAC/BA,IAITU,WAAY,SAAUC,GACrB,GAAIC,GACHC,EAAWC,IAEZH,GAAOxE,EAAO4E,KAAMJ,GAEfA,IAKkC,IAAjCA,EAAK/E,QAAS,eAClBgF,EAAS1F,EAAS8F,cAAe,UACjCJ,EAAOK,KAAON,EACdzF,EAASgG,KAAKC,YAAaP,GAASQ,WAAWC,YAAaT,IAM5DC,EAAUF,KAQbW,UAAW,SAAUC,GACpB,MAAOA,GAAO5B,QAASlD,EAAW,OAAQkD,QAASjD,EAAYC,IAGhE6E,SAAU,SAAUzD,EAAMc,GACzB,MAAOd,GAAKyD,UAAYzD,EAAKyD,SAASC,gBAAkB5C,EAAK4C,eAG9D7D,KAAM,SAAUoC,EAAKnC,GACpB,GAAIX,GAAQc,EAAI,CAEhB,IAAK0D,EAAa1B,IAEjB,IADA9C,EAAS8C,EAAI9C,OACDA,EAAJc,EAAYA,IACnB,GAAKH,EAAST,KAAM4C,EAAKhC,GAAKA,EAAGgC,EAAKhC,OAAU,EAC/C,UAIF,KAAMA,IAAKgC,GACV,GAAKnC,EAAST,KAAM4C,EAAKhC,GAAKA,EAAGgC,EAAKhC,OAAU,EAC/C,KAKH,OAAOgC,IAIRe,KAAM,SAAUE,GACf,MAAe,OAARA,EACN,IACEA,EAAO,IAAKtB,QAASnD,EAAO,KAIhCmF,UAAW,SAAUnG,EAAKoG,GACzB,GAAInE,GAAMmE,KAaV,OAXY,OAAPpG,IACCkG,EAAaG,OAAQrG,IACzBW,EAAOuB,MAAOD,EACE,gBAARjC,IACLA,GAAQA,GAGXG,EAAKyB,KAAMK,EAAKjC,IAIXiC,GAGRqE,QAAS,SAAU/D,EAAMvC,EAAKwC,GAC7B,MAAc,OAAPxC,EAAc,GAAKI,EAAQwB,KAAM5B,EAAKuC,EAAMC,IAGpDN,MAAO,SAAUS,EAAO4D,GAKvB,IAJA,GAAIzD,IAAOyD,EAAO7E,OACjBqB,EAAI,EACJP,EAAIG,EAAMjB,OAECoB,EAAJC,EAASA,IAChBJ,EAAOH,KAAQ+D,EAAQxD,EAKxB,OAFAJ,GAAMjB,OAASc,EAERG,GAGR6D,KAAM,SAAUxE,EAAOK,EAAUoE,GAShC,IARA,GAAIC,GACHC,KACAnE,EAAI,EACJd,EAASM,EAAMN,OACfkF,GAAkBH,EAIP/E,EAAJc,EAAYA,IACnBkE,GAAmBrE,EAAUL,EAAOQ,GAAKA,GACpCkE,IAAoBE,GACxBD,EAAQxG,KAAM6B,EAAOQ,GAIvB,OAAOmE,IAIRrE,IAAK,SAAUN,EAAOK,EAAUwE,GAC/B,GAAInF,GAAQoF,EACXtE,EAAI,EACJP,IAGD,IAAKiE,EAAalE,GAEjB,IADAN,EAASM,EAAMN,OACHA,EAAJc,EAAYA,IACnBsE,EAAQzE,EAAUL,EAAOQ,GAAKA,EAAGqE,GAEnB,MAATC,GACJ7E,EAAI9B,KAAM2G,OAMZ,KAAMtE,IAAKR,GACV8E,EAAQzE,EAAUL,EAAOQ,GAAKA,EAAGqE,GAEnB,MAATC,GACJ7E,EAAI9B,KAAM2G,EAMb,OAAO5G,GAAOuC,SAAWR,IAI1B8E,KAAM,EAINC,MAAO,SAAUlG,EAAID,GACpB,GAAIoG,GAAKC,EAAMF,CAUf,OARwB,gBAAZnG,KACXoG,EAAMnG,EAAID,GACVA,EAAUC,EACVA,EAAKmG,GAKAtG,EAAOiD,WAAY9C,IAKzBoG,EAAOjH,EAAM2B,KAAMc,UAAW,GAC9BsE,EAAQ,WACP,MAAOlG,GAAG2B,MAAO5B,GAAWf,KAAMoH,EAAKhH,OAAQD,EAAM2B,KAAMc,cAI5DsE,EAAMD,KAAOjG,EAAGiG,KAAOjG,EAAGiG,MAAQpG,EAAOoG,OAElCC,GAbP,QAgBDG,IAAKC,KAAKD,IAIV1G,QAASA,IAQa,kBAAX4G,UACX1G,EAAOG,GAAIuG,OAAOC,UAAatH,EAAKqH,OAAOC,WAK5C3G,EAAOyB,KAAM,uEAAuEmF,MAAO,KAC3F,SAAU/E,EAAGa,GACZhD,EAAY,WAAagD,EAAO,KAAQA,EAAK4C,eAG9C,SAASC,GAAa1B,GAMrB,GAAI9C,KAAW8C,GAAO,UAAYA,IAAOA,EAAI9C,OAC5C+C,EAAO9D,EAAO8D,KAAMD,EAErB,OAAc,aAATC,GAAuB9D,EAAOgE,SAAUH,IACrC,EAGQ,UAATC,GAA+B,IAAX/C,GACR,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAO8C,GAEhE,GAAIgD,GAWJ,SAAW3H,GAEX,GAAI2C,GACH/B,EACAgH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAxI,EACAyI,EACAC,EACAC,EACAC,EACA3B,EACA4B,EAGAvE,EAAU,SAAW,EAAI,GAAIoD,MAC7BoB,EAAe3I,EAAOH,SACtB+I,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUC,EAAGC,GAIxB,MAHKD,KAAMC,IACVhB,GAAe,GAET,GAIRiB,EAAe,GAAK,GAGpB3I,KAAcC,eACdR,KACAmJ,EAAMnJ,EAAImJ,IACVC,EAAcpJ,EAAIG,KAClBA,EAAOH,EAAIG,KACXF,EAAQD,EAAIC,MAGZG,EAAU,SAAUiJ,EAAM9G,GAGzB,IAFA,GAAIC,GAAI,EACPM,EAAMuG,EAAK3H,OACAoB,EAAJN,EAASA,IAChB,GAAK6G,EAAK7G,KAAOD,EAChB,MAAOC,EAGT,OAAO,IAGR8G,EAAW,6HAKXC,EAAa,sBAGbC,EAAa,mCAGbC,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAE9D,gBAAkBA,EAElB,2DAA6DC,EAAa,OAASD,EACnF,OAEDG,EAAU,KAAOF,EAAa,wFAKAC,EAAa,eAM3CE,EAAc,GAAIC,QAAQL,EAAa,IAAK,KAC5CvI,EAAQ,GAAI4I,QAAQ,IAAML,EAAa,8BAAgCA,EAAa,KAAM,KAE1FM,EAAS,GAAID,QAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DO,EAAe,GAAIF,QAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FQ,EAAmB,GAAIH,QAAQ,IAAML,EAAa,iBAAmBA,EAAa,OAAQ,KAE1FS,EAAU,GAAIJ,QAAQF,GACtBO,EAAc,GAAIL,QAAQ,IAAMJ,EAAa,KAE7CU,GACCC,GAAM,GAAIP,QAAQ,MAAQJ,EAAa,KACvCY,MAAS,GAAIR,QAAQ,QAAUJ,EAAa,KAC5Ca,IAAO,GAAIT,QAAQ,KAAOJ,EAAa,SACvCc,KAAQ,GAAIV,QAAQ,IAAMH,GAC1Bc,OAAU,GAAIX,QAAQ,IAAMF,GAC5Bc,MAAS,GAAIZ,QAAQ,yDAA2DL,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCkB,KAAQ,GAAIb,QAAQ,OAASN,EAAW,KAAM,KAG9CoB,aAAgB,GAAId,QAAQ,IAAML,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEoB,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,EAAW,OACXC,GAAU,QAGVC,GAAY,GAAIrB,QAAQ,qBAAuBL,EAAa,MAAQA,EAAa,OAAQ,MACzF2B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACfvD,IAIF,KACC/H,EAAKsC,MACHzC,EAAMC,EAAM2B,KAAM4G,EAAakD,YAChClD,EAAakD,YAId1L,EAAKwI,EAAakD,WAAWhK,QAASsD,SACrC,MAAQ2G,IACTxL,GAASsC,MAAOzC,EAAI0B,OAGnB,SAAUgC,EAAQkI,GACjBxC,EAAY3G,MAAOiB,EAAQzD,EAAM2B,KAAKgK,KAKvC,SAAUlI,EAAQkI,GACjB,GAAI7I,GAAIW,EAAOhC,OACdc,EAAI,CAEL,OAASkB,EAAOX,KAAO6I,EAAIpJ,MAC3BkB,EAAOhC,OAASqB,EAAI,IAKvB,QAASyE,IAAQ5G,EAAUC,EAASuF,EAASyF,GAC5C,GAAIC,GAAGtJ,EAAGD,EAAMwJ,EAAKC,EAAWC,EAAOC,EAAQC,EAC9CC,EAAavL,GAAWA,EAAQwL,cAGhCrH,EAAWnE,EAAUA,EAAQmE,SAAW,CAKzC,IAHAoB,EAAUA,MAGe,gBAAbxF,KAA0BA,GACxB,IAAboE,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,MAAOoB,EAIR,KAAMyF,KAEEhL,EAAUA,EAAQwL,eAAiBxL,EAAU2H,KAAmB9I,GACtEwI,EAAarH,GAEdA,EAAUA,GAAWnB,EAEhB0I,GAAiB,CAIrB,GAAkB,KAAbpD,IAAoBiH,EAAQnB,EAAWwB,KAAM1L,IAGjD,GAAMkL,EAAIG,EAAM,IAGf,GAAkB,IAAbjH,EAAiB,CACrB,KAAMzC,EAAO1B,EAAQ0L,eAAgBT,IAUpC,MAAO1F,EALP,IAAK7D,EAAKiK,KAAOV,EAEhB,MADA1F,GAAQjG,KAAMoC,GACP6D,MAYT,IAAKgG,IAAe7J,EAAO6J,EAAWG,eAAgBT,KACrDvD,EAAU1H,EAAS0B,IACnBA,EAAKiK,KAAOV,EAGZ,MADA1F,GAAQjG,KAAMoC,GACP6D,MAKH,CAAA,GAAK6F,EAAM,GAEjB,MADA9L,GAAKsC,MAAO2D,EAASvF,EAAQ4L,qBAAsB7L,IAC5CwF,CAGD,KAAM0F,EAAIG,EAAM,KAAOxL,EAAQiM,wBACrC7L,EAAQ6L,uBAGR,MADAvM,GAAKsC,MAAO2D,EAASvF,EAAQ6L,uBAAwBZ,IAC9C1F,EAKT,GAAK3F,EAAQkM,MACX7D,EAAelI,EAAW,QACzByH,IAAcA,EAAUuE,KAAMhM,IAAc,CAE9C,GAAkB,IAAboE,EACJoH,EAAavL,EACbsL,EAAcvL,MAMR,IAAwC,WAAnCC,EAAQmF,SAASC,cAA6B,EAGnD8F,EAAMlL,EAAQgM,aAAc,OACjCd,EAAMA,EAAI5H,QAAS6G,GAAS,QAE5BnK,EAAQiM,aAAc,KAAOf,EAAM/H,GAIpCkI,EAAStE,EAAUhH,GACnB4B,EAAI0J,EAAOxK,OACXsK,EAAY/B,EAAY2C,KAAMb,GAAQ,IAAMA,EAAM,QAAUA,EAAM,IAClE,OAAQvJ,IACP0J,EAAO1J,GAAKwJ,EAAY,IAAMe,GAAYb,EAAO1J,GAElD2J,GAAcD,EAAOc,KAAM,KAG3BZ,EAAarB,EAAS6B,KAAMhM,IAAcqM,GAAapM,EAAQ+E,aAC9D/E,EAGF,GAAKsL,EACJ,IAIC,MAHAhM,GAAKsC,MAAO2D,EACXgG,EAAWc,iBAAkBf,IAEvB/F,EACN,MAAQ+G,IACR,QACIpB,IAAQ/H,GACZnD,EAAQuM,gBAAiB,QAS/B,MAAOtF,GAAQlH,EAASuD,QAASnD,EAAO,MAAQH,EAASuF,EAASyF,GASnE,QAASjD,MACR,GAAIyE,KAEJ,SAASC,GAAOvI,EAAK+B,GAMpB,MAJKuG,GAAKlN,KAAM4E,EAAM,KAAQ0C,EAAK8F,mBAE3BD,GAAOD,EAAKG,SAEZF,EAAOvI,EAAM,KAAQ+B,EAE9B,MAAOwG,GAOR,QAASG,IAAc3M,GAEtB,MADAA,GAAIkD,IAAY,EACTlD,EAOR,QAAS4M,IAAQ5M,GAChB,GAAI6M,GAAMjO,EAAS8F,cAAc,MAEjC,KACC,QAAS1E,EAAI6M,GACZ,MAAOhC,GACR,OAAO,EACN,QAEIgC,EAAI/H,YACR+H,EAAI/H,WAAWC,YAAa8H,GAG7BA,EAAM,MASR,QAASC,IAAWC,EAAOC,GAC1B,GAAI9N,GAAM6N,EAAMtG,MAAM,KACrB/E,EAAIxC,EAAI0B,MAET,OAAQc,IACPiF,EAAKsG,WAAY/N,EAAIwC,IAAOsL,EAU9B,QAASE,IAAchF,EAAGC,GACzB,GAAIgF,GAAMhF,GAAKD,EACdkF,EAAOD,GAAsB,IAAfjF,EAAEhE,UAAiC,IAAfiE,EAAEjE,YAChCiE,EAAEkF,aAAejF,KACjBF,EAAEmF,aAAejF,EAGtB,IAAKgF,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQhF,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASqF,IAAmB5J,GAC3B,MAAO,UAAUlC,GAChB,GAAIc,GAAOd,EAAKyD,SAASC,aACzB,OAAgB,UAAT5C,GAAoBd,EAAKkC,OAASA,GAQ3C,QAAS6J,IAAoB7J,GAC5B,MAAO,UAAUlC,GAChB,GAAIc,GAAOd,EAAKyD,SAASC,aACzB,QAAiB,UAAT5C,GAA6B,WAATA,IAAsBd,EAAKkC,OAASA,GAQlE,QAAS8J,IAAwBzN,GAChC,MAAO2M,IAAa,SAAUe,GAE7B,MADAA,IAAYA,EACLf,GAAa,SAAU5B,EAAMlF,GACnC,GAAI5D,GACH0L,EAAe3N,KAAQ+K,EAAKnK,OAAQ8M,GACpChM,EAAIiM,EAAa/M,MAGlB,OAAQc,IACFqJ,EAAO9I,EAAI0L,EAAajM,MAC5BqJ,EAAK9I,KAAO4D,EAAQ5D,GAAK8I,EAAK9I,SAYnC,QAASkK,IAAapM,GACrB,MAAOA,IAAmD,mBAAjCA,GAAQ4L,sBAAwC5L,EAI1EJ,EAAU+G,GAAO/G,WAOjBkH,EAAQH,GAAOG,MAAQ,SAAUpF,GAGhC,GAAImM,GAAkBnM,IAASA,EAAK8J,eAAiB9J,GAAMmM,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgB1I,UAAsB,GAQhEkC,EAAcV,GAAOU,YAAc,SAAUyG,GAC5C,GAAIC,GAAYC,EACfC,EAAMH,EAAOA,EAAKtC,eAAiBsC,EAAOnG,CAG3C,OAAKsG,KAAQpP,GAA6B,IAAjBoP,EAAI9J,UAAmB8J,EAAIJ,iBAKpDhP,EAAWoP,EACX3G,EAAUzI,EAASgP,gBACnBtG,GAAkBT,EAAOjI,IAInBmP,EAASnP,EAASqP,cAAgBF,EAAOG,MAAQH,IAEjDA,EAAOI,iBACXJ,EAAOI,iBAAkB,SAAUxD,IAAe,GAGvCoD,EAAOK,aAClBL,EAAOK,YAAa,WAAYzD,KAUlChL,EAAQgJ,WAAaiE,GAAO,SAAUC,GAErC,MADAA,GAAIwB,UAAY,KACRxB,EAAId,aAAa,eAO1BpM,EAAQgM,qBAAuBiB,GAAO,SAAUC,GAE/C,MADAA,GAAIhI,YAAajG,EAAS0P,cAAc,MAChCzB,EAAIlB,qBAAqB,KAAK/K,SAIvCjB,EAAQiM,uBAAyB7B,EAAQ+B,KAAMlN,EAASgN,wBAMxDjM,EAAQ4O,QAAU3B,GAAO,SAAUC,GAElC,MADAxF,GAAQxC,YAAagI,GAAMnB,GAAKxI,GACxBtE,EAAS4P,oBAAsB5P,EAAS4P,kBAAmBtL,GAAUtC,SAIzEjB,EAAQ4O,SACZ5H,EAAK8H,KAAS,GAAI,SAAU/C,EAAI3L,GAC/B,GAAuC,mBAA3BA,GAAQ0L,gBAAkCnE,EAAiB,CACtE,GAAI0D,GAAIjL,EAAQ0L,eAAgBC,EAChC,OAAOV,IAAMA,QAGfrE,EAAK+H,OAAW,GAAI,SAAUhD,GAC7B,GAAIiD,GAASjD,EAAGrI,QAAS8G,GAAWC,GACpC,OAAO,UAAU3I,GAChB,MAAOA,GAAKsK,aAAa,QAAU4C,YAM9BhI,GAAK8H,KAAS,GAErB9H,EAAK+H,OAAW,GAAK,SAAUhD,GAC9B,GAAIiD,GAASjD,EAAGrI,QAAS8G,GAAWC,GACpC,OAAO,UAAU3I,GAChB,GAAIoM,GAAwC,mBAA1BpM,GAAKmN,kBACtBnN,EAAKmN,iBAAiB,KACvB,OAAOf,IAAQA,EAAK7H,QAAU2I,KAMjChI,EAAK8H,KAAU,IAAI9O,EAAQgM,qBAC1B,SAAUkD,EAAK9O,GACd,MAA6C,mBAAjCA,GAAQ4L,qBACZ5L,EAAQ4L,qBAAsBkD,GAG1BlP,EAAQkM,IACZ9L,EAAQqM,iBAAkByC,GAD3B,QAKR,SAAUA,EAAK9O,GACd,GAAI0B,GACH0E,KACAzE,EAAI,EAEJ4D,EAAUvF,EAAQ4L,qBAAsBkD,EAGzC,IAAa,MAARA,EAAc,CAClB,MAASpN,EAAO6D,EAAQ5D,KACA,IAAlBD,EAAKyC,UACTiC,EAAI9G,KAAMoC,EAIZ,OAAO0E,GAER,MAAOb,IAITqB,EAAK8H,KAAY,MAAI9O,EAAQiM,wBAA0B,SAAUyC,EAAWtO,GAC3E,MAA+C,mBAAnCA,GAAQ6L,wBAA0CtE,EACtDvH,EAAQ6L,uBAAwByC,GADxC,QAWD7G,KAOAD,MAEM5H,EAAQkM,IAAM9B,EAAQ+B,KAAMlN,EAASwN,qBAG1CQ,GAAO,SAAUC,GAMhBxF,EAAQxC,YAAagI,GAAMiC,UAAY,UAAY5L,EAAU,qBAC3CA,EAAU,kEAOvB2J,EAAIT,iBAAiB,wBAAwBxL,QACjD2G,EAAUlI,KAAM,SAAWoJ,EAAa,gBAKnCoE,EAAIT,iBAAiB,cAAcxL,QACxC2G,EAAUlI,KAAM,MAAQoJ,EAAa,aAAeD,EAAW,KAI1DqE,EAAIT,iBAAkB,QAAUlJ,EAAU,MAAOtC,QACtD2G,EAAUlI,KAAK,MAMVwN,EAAIT,iBAAiB,YAAYxL,QACtC2G,EAAUlI,KAAK,YAMVwN,EAAIT,iBAAkB,KAAOlJ,EAAU,MAAOtC,QACnD2G,EAAUlI,KAAK,cAIjBuN,GAAO,SAAUC,GAGhB,GAAIkC,GAAQnQ,EAAS8F,cAAc,QACnCqK,GAAM/C,aAAc,OAAQ,UAC5Ba,EAAIhI,YAAakK,GAAQ/C,aAAc,OAAQ,KAI1Ca,EAAIT,iBAAiB,YAAYxL,QACrC2G,EAAUlI,KAAM,OAASoJ,EAAa,eAKjCoE,EAAIT,iBAAiB,YAAYxL,QACtC2G,EAAUlI,KAAM,WAAY,aAI7BwN,EAAIT,iBAAiB,QACrB7E,EAAUlI,KAAK,YAIXM,EAAQqP,gBAAkBjF,EAAQ+B,KAAOjG,EAAUwB,EAAQxB,SAChEwB,EAAQ4H,uBACR5H,EAAQ6H,oBACR7H,EAAQ8H,kBACR9H,EAAQ+H,qBAERxC,GAAO,SAAUC,GAGhBlN,EAAQ0P,kBAAoBxJ,EAAQ/E,KAAM+L,EAAK,OAI/ChH,EAAQ/E,KAAM+L,EAAK,aACnBrF,EAAcnI,KAAM,KAAMuJ,KAI5BrB,EAAYA,EAAU3G,QAAU,GAAIkI,QAAQvB,EAAU2E,KAAK,MAC3D1E,EAAgBA,EAAc5G,QAAU,GAAIkI,QAAQtB,EAAc0E,KAAK,MAIvE4B,EAAa/D,EAAQ+B,KAAMzE,EAAQiI,yBAKnC7H,EAAWqG,GAAc/D,EAAQ+B,KAAMzE,EAAQI,UAC9C,SAAUS,EAAGC,GACZ,GAAIoH,GAAuB,IAAfrH,EAAEhE,SAAiBgE,EAAE0F,gBAAkB1F,EAClDsH,EAAMrH,GAAKA,EAAErD,UACd,OAAOoD,KAAMsH,MAAWA,GAAwB,IAAjBA,EAAItL,YAClCqL,EAAM9H,SACL8H,EAAM9H,SAAU+H,GAChBtH,EAAEoH,yBAA8D,GAAnCpH,EAAEoH,wBAAyBE,MAG3D,SAAUtH,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAErD,WACd,GAAKqD,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAY6F,EACZ,SAAU5F,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAIR,IAAIsI,IAAWvH,EAAEoH,yBAA2BnH,EAAEmH,uBAC9C,OAAKG,GACGA,GAIRA,GAAYvH,EAAEqD,eAAiBrD,MAAUC,EAAEoD,eAAiBpD,GAC3DD,EAAEoH,wBAAyBnH,GAG3B,EAGc,EAAVsH,IACF9P,EAAQ+P,cAAgBvH,EAAEmH,wBAAyBpH,KAAQuH,EAGxDvH,IAAMtJ,GAAYsJ,EAAEqD,gBAAkB7D,GAAgBD,EAASC,EAAcQ,GAC1E,GAEHC,IAAMvJ,GAAYuJ,EAAEoD,gBAAkB7D,GAAgBD,EAASC,EAAcS,GAC1E,EAIDjB,EACJ5H,EAAS4H,EAAWgB,GAAM5I,EAAS4H,EAAWiB,GAChD,EAGe,EAAVsH,EAAc,GAAK,IAE3B,SAAUvH,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAGR,IAAIgG,GACHzL,EAAI,EACJiO,EAAMzH,EAAEpD,WACR0K,EAAMrH,EAAErD,WACR8K,GAAO1H,GACP2H,GAAO1H,EAGR,KAAMwH,IAAQH,EACb,MAAOtH,KAAMtJ,EAAW,GACvBuJ,IAAMvJ,EAAW,EACjB+Q,EAAM,GACNH,EAAM,EACNtI,EACE5H,EAAS4H,EAAWgB,GAAM5I,EAAS4H,EAAWiB,GAChD,CAGK,IAAKwH,IAAQH,EACnB,MAAOtC,IAAchF,EAAGC,EAIzBgF,GAAMjF,CACN,OAASiF,EAAMA,EAAIrI,WAClB8K,EAAGE,QAAS3C,EAEbA,GAAMhF,CACN,OAASgF,EAAMA,EAAIrI,WAClB+K,EAAGC,QAAS3C,EAIb,OAAQyC,EAAGlO,KAAOmO,EAAGnO,GACpBA,GAGD,OAAOA,GAENwL,GAAc0C,EAAGlO,GAAImO,EAAGnO,IAGxBkO,EAAGlO,KAAOgG,EAAe,GACzBmI,EAAGnO,KAAOgG,EAAe,EACzB,GAGK9I,GArWCA,GAwWT8H,GAAOb,QAAU,SAAUkK,EAAMC,GAChC,MAAOtJ,IAAQqJ,EAAM,KAAM,KAAMC,IAGlCtJ,GAAOsI,gBAAkB,SAAUvN,EAAMsO,GASxC,IAPOtO,EAAK8J,eAAiB9J,KAAW7C,GACvCwI,EAAa3F,GAIdsO,EAAOA,EAAK1M,QAAS4F,EAAkB,UAElCtJ,EAAQqP,iBAAmB1H,IAC9BU,EAAe+H,EAAO,QACpBvI,IAAkBA,EAAcsE,KAAMiE,OACtCxI,IAAkBA,EAAUuE,KAAMiE,IAErC,IACC,GAAI5O,GAAM0E,EAAQ/E,KAAMW,EAAMsO,EAG9B,IAAK5O,GAAOxB,EAAQ0P,mBAGlB5N,EAAK7C,UAAuC,KAA3B6C,EAAK7C,SAASsF,SAChC,MAAO/C,GAEP,MAAO0J,IAGV,MAAOnE,IAAQqJ,EAAMnR,EAAU,MAAQ6C,IAASb,OAAS,GAG1D8F,GAAOe,SAAW,SAAU1H,EAAS0B,GAKpC,OAHO1B,EAAQwL,eAAiBxL,KAAcnB,GAC7CwI,EAAarH,GAEP0H,EAAU1H,EAAS0B,IAG3BiF,GAAOuJ,KAAO,SAAUxO,EAAMc,IAEtBd,EAAK8J,eAAiB9J,KAAW7C,GACvCwI,EAAa3F,EAGd,IAAIzB,GAAK2G,EAAKsG,WAAY1K,EAAK4C,eAE9B+K,EAAMlQ,GAAMP,EAAOqB,KAAM6F,EAAKsG,WAAY1K,EAAK4C,eAC9CnF,EAAIyB,EAAMc,GAAO+E,GACjBrE,MAEF,OAAeA,UAARiN,EACNA,EACAvQ,EAAQgJ,aAAerB,EACtB7F,EAAKsK,aAAcxJ,IAClB2N,EAAMzO,EAAKmN,iBAAiBrM,KAAU2N,EAAIC,UAC1CD,EAAIlK,MACJ,MAGJU,GAAOnD,MAAQ,SAAUC,GACxB,KAAM,IAAI1E,OAAO,0CAA4C0E,IAO9DkD,GAAO0J,WAAa,SAAU9K,GAC7B,GAAI7D,GACH4O,KACApO,EAAI,EACJP,EAAI,CAOL,IAJAyF,GAAgBxH,EAAQ2Q,iBACxBpJ,GAAavH,EAAQ4Q,YAAcjL,EAAQnG,MAAO,GAClDmG,EAAQnD,KAAM8F,GAETd,EAAe,CACnB,MAAS1F,EAAO6D,EAAQ5D,KAClBD,IAAS6D,EAAS5D,KACtBO,EAAIoO,EAAWhR,KAAMqC,GAGvB,OAAQO,IACPqD,EAAQlD,OAAQiO,EAAYpO,GAAK,GAQnC,MAFAiF,GAAY,KAEL5B,GAORsB,EAAUF,GAAOE,QAAU,SAAUnF,GACpC,GAAIoM,GACH1M,EAAM,GACNO,EAAI,EACJwC,EAAWzC,EAAKyC,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBzC,GAAK+O,YAChB,MAAO/O,GAAK+O,WAGZ,KAAM/O,EAAOA,EAAKgP,WAAYhP,EAAMA,EAAOA,EAAK6L,YAC/CnM,GAAOyF,EAASnF,OAGZ,IAAkB,IAAbyC,GAA+B,IAAbA,EAC7B,MAAOzC,GAAKiP,cAhBZ,OAAS7C,EAAOpM,EAAKC,KAEpBP,GAAOyF,EAASiH,EAkBlB,OAAO1M,IAGRwF,EAAOD,GAAOiK,WAGblE,YAAa,GAEbmE,aAAcjE,GAEdxB,MAAO/B,EAEP6D,cAEAwB,QAEAoC,UACCC,KAAOC,IAAK,aAAclP,OAAO,GACjCmP,KAAOD,IAAK,cACZE,KAAOF,IAAK,kBAAmBlP,OAAO,GACtCqP,KAAOH,IAAK,oBAGbI,WACC3H,KAAQ,SAAU2B,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAG9H,QAAS8G,GAAWC,IAGxCe,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAK9H,QAAS8G,GAAWC,IAExD,OAAbe,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMhM,MAAO,EAAG,IAGxBuK,MAAS,SAAUyB,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGhG,cAEY,QAA3BgG,EAAM,GAAGhM,MAAO,EAAG,IAEjBgM,EAAM,IACXzE,GAAOnD,MAAO4H,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBzE,GAAOnD,MAAO4H,EAAM,IAGdA,GAGR1B,OAAU,SAAU0B,GACnB,GAAIiG,GACHC,GAAYlG,EAAM,IAAMA,EAAM,EAE/B,OAAK/B,GAAiB,MAAE0C,KAAMX,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBkG,GAAYnI,EAAQ4C,KAAMuF,KAEpCD,EAAStK,EAAUuK,GAAU,MAE7BD,EAASC,EAAS/R,QAAS,IAAK+R,EAASzQ,OAASwQ,GAAWC,EAASzQ,UAGvEuK,EAAM,GAAKA,EAAM,GAAGhM,MAAO,EAAGiS,GAC9BjG,EAAM,GAAKkG,EAASlS,MAAO,EAAGiS,IAIxBjG,EAAMhM,MAAO,EAAG,MAIzBuP,QAECnF,IAAO,SAAU+H,GAChB,GAAIpM,GAAWoM,EAAiBjO,QAAS8G,GAAWC,IAAYjF,aAChE,OAA4B,MAArBmM,EACN,WAAa,OAAO,GACpB,SAAU7P,GACT,MAAOA,GAAKyD,UAAYzD,EAAKyD,SAASC,gBAAkBD,IAI3DoE,MAAS,SAAU+E,GAClB,GAAIkD,GAAU1J,EAAYwG,EAAY,IAEtC,OAAOkD,KACLA,EAAU,GAAIzI,QAAQ,MAAQL,EAAa,IAAM4F,EAAY,IAAM5F,EAAa,SACjFZ,EAAYwG,EAAW,SAAU5M,GAChC,MAAO8P,GAAQzF,KAAgC,gBAAnBrK,GAAK4M,WAA0B5M,EAAK4M,WAA0C,mBAAtB5M,GAAKsK,cAAgCtK,EAAKsK,aAAa,UAAY,OAI1JvC,KAAQ,SAAUjH,EAAMiP,EAAUC,GACjC,MAAO,UAAUhQ,GAChB,GAAIiQ,GAAShL,GAAOuJ,KAAMxO,EAAMc,EAEhC,OAAe,OAAVmP,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOpS,QAASmS,GAChC,OAAbD,EAAoBC,GAASC,EAAOpS,QAASmS,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOvS,OAAQsS,EAAM7Q,UAAa6Q,EAClD,OAAbD,GAAsB,IAAME,EAAOrO,QAASwF,EAAa,KAAQ,KAAMvJ,QAASmS,GAAU,GAC7E,OAAbD,EAAoBE,IAAWD,GAASC,EAAOvS,MAAO,EAAGsS,EAAM7Q,OAAS,KAAQ6Q,EAAQ,KACxF,IAZO,IAgBV/H,MAAS,SAAU/F,EAAMgO,EAAMjE,EAAU7L,EAAOE,GAC/C,GAAI6P,GAAgC,QAAvBjO,EAAKxE,MAAO,EAAG,GAC3B0S,EAA+B,SAArBlO,EAAKxE,MAAO,IACtB2S,EAAkB,YAATH,CAEV,OAAiB,KAAV9P,GAAwB,IAATE,EAGrB,SAAUN,GACT,QAASA,EAAKqD,YAGf,SAAUrD,EAAM1B,EAASgS,GACxB,GAAIvF,GAAOwF,EAAaC,EAAYpE,EAAMqE,EAAWC,EACpDpB,EAAMa,IAAWC,EAAU,cAAgB,kBAC3C9D,EAAStM,EAAKqD,WACdvC,EAAOuP,GAAUrQ,EAAKyD,SAASC,cAC/BiN,GAAYL,IAAQD,EACpB1E,GAAO,CAER,IAAKW,EAAS,CAGb,GAAK6D,EAAS,CACb,MAAQb,EAAM,CACblD,EAAOpM,CACP,OAASoM,EAAOA,EAAMkD,GACrB,GAAKe,EACJjE,EAAK3I,SAASC,gBAAkB5C,EACd,IAAlBsL,EAAK3J,SAEL,OAAO,CAITiO,GAAQpB,EAAe,SAATpN,IAAoBwO,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUN,EAAU9D,EAAO0C,WAAa1C,EAAOsE,WAG1CR,GAAWO,EAAW,CAK1BvE,EAAOE,EACPkE,EAAapE,EAAM3K,KAAc2K,EAAM3K,OAIvC8O,EAAcC,EAAYpE,EAAKyE,YAC7BL,EAAYpE,EAAKyE,cAEnB9F,EAAQwF,EAAarO,OACrBuO,EAAY1F,EAAO,KAAQ7E,GAAW6E,EAAO,GAC7CY,EAAO8E,GAAa1F,EAAO,GAC3BqB,EAAOqE,GAAanE,EAAOnD,WAAYsH,EAEvC,OAASrE,IAASqE,GAAarE,GAAQA,EAAMkD,KAG3C3D,EAAO8E,EAAY,IAAMC,EAAM9J,MAGhC,GAAuB,IAAlBwF,EAAK3J,YAAoBkJ,GAAQS,IAASpM,EAAO,CACrDuQ,EAAarO,IAAWgE,EAASuK,EAAW9E,EAC5C,YAuBF,IAjBKgF,IAEJvE,EAAOpM,EACPwQ,EAAapE,EAAM3K,KAAc2K,EAAM3K,OAIvC8O,EAAcC,EAAYpE,EAAKyE,YAC7BL,EAAYpE,EAAKyE,cAEnB9F,EAAQwF,EAAarO,OACrBuO,EAAY1F,EAAO,KAAQ7E,GAAW6E,EAAO,GAC7CY,EAAO8E,GAKH9E,KAAS,EAEb,MAASS,IAASqE,GAAarE,GAAQA,EAAMkD,KAC3C3D,EAAO8E,EAAY,IAAMC,EAAM9J,MAEhC,IAAOyJ,EACNjE,EAAK3I,SAASC,gBAAkB5C,EACd,IAAlBsL,EAAK3J,aACHkJ,IAGGgF,IACJH,EAAapE,EAAM3K,KAAc2K,EAAM3K,OAIvC8O,EAAcC,EAAYpE,EAAKyE,YAC7BL,EAAYpE,EAAKyE,cAEnBN,EAAarO,IAAWgE,EAASyF,IAG7BS,IAASpM,GACb,KASL,OADA2L,IAAQrL,EACDqL,IAASvL,GAAWuL,EAAOvL,IAAU,GAAKuL,EAAOvL,GAAS,KAKrE4H,OAAU,SAAU8I,EAAQ7E,GAK3B,GAAItH,GACHpG,EAAK2G,EAAKiC,QAAS2J,IAAY5L,EAAK6L,WAAYD,EAAOpN,gBACtDuB,GAAOnD,MAAO,uBAAyBgP,EAKzC,OAAKvS,GAAIkD,GACDlD,EAAI0N,GAIP1N,EAAGY,OAAS,GAChBwF,GAASmM,EAAQA,EAAQ,GAAI7E,GACtB/G,EAAK6L,WAAW9S,eAAgB6S,EAAOpN,eAC7CwH,GAAa,SAAU5B,EAAMlF,GAC5B,GAAI4M,GACHC,EAAU1S,EAAI+K,EAAM2C,GACpBhM,EAAIgR,EAAQ9R,MACb,OAAQc,IACP+Q,EAAMnT,EAASyL,EAAM2H,EAAQhR,IAC7BqJ,EAAM0H,KAAW5M,EAAS4M,GAAQC,EAAQhR,MAG5C,SAAUD,GACT,MAAOzB,GAAIyB,EAAM,EAAG2E,KAIhBpG,IAIT4I,SAEC+J,IAAOhG,GAAa,SAAU7M,GAI7B,GAAIiP,MACHzJ,KACAsN,EAAU7L,EAASjH,EAASuD,QAASnD,EAAO,MAE7C,OAAO0S,GAAS1P,GACfyJ,GAAa,SAAU5B,EAAMlF,EAAS9F,EAASgS,GAC9C,GAAItQ,GACHoR,EAAYD,EAAS7H,EAAM,KAAMgH,MACjCrQ,EAAIqJ,EAAKnK,MAGV,OAAQc,KACDD,EAAOoR,EAAUnR,MACtBqJ,EAAKrJ,KAAOmE,EAAQnE,GAAKD,MAI5B,SAAUA,EAAM1B,EAASgS,GAKxB,MAJAhD,GAAM,GAAKtN,EACXmR,EAAS7D,EAAO,KAAMgD,EAAKzM,GAE3ByJ,EAAM,GAAK,MACHzJ,EAAQ+C,SAInByK,IAAOnG,GAAa,SAAU7M,GAC7B,MAAO,UAAU2B,GAChB,MAAOiF,IAAQ5G,EAAU2B,GAAOb,OAAS,KAI3C6G,SAAYkF,GAAa,SAAUhI,GAElC,MADAA,GAAOA,EAAKtB,QAAS8G,GAAWC,IACzB,SAAU3I,GAChB,OAASA,EAAK+O,aAAe/O,EAAKsR,WAAanM,EAASnF,IAASnC,QAASqF,GAAS,MAWrFqO,KAAQrG,GAAc,SAAUqG,GAM/B,MAJM7J,GAAY2C,KAAKkH,GAAQ,KAC9BtM,GAAOnD,MAAO,qBAAuByP,GAEtCA,EAAOA,EAAK3P,QAAS8G,GAAWC,IAAYjF,cACrC,SAAU1D,GAChB,GAAIwR,EACJ,GACC,IAAMA,EAAW3L,EAChB7F,EAAKuR,KACLvR,EAAKsK,aAAa,aAAetK,EAAKsK,aAAa,QAGnD,MADAkH,GAAWA,EAAS9N,cACb8N,IAAaD,GAA2C,IAAnCC,EAAS3T,QAAS0T,EAAO,YAE5CvR,EAAOA,EAAKqD,aAAiC,IAAlBrD,EAAKyC,SAC3C,QAAO,KAKTtB,OAAU,SAAUnB,GACnB,GAAIyR,GAAOnU,EAAOoU,UAAYpU,EAAOoU,SAASD,IAC9C,OAAOA,IAAQA,EAAK/T,MAAO,KAAQsC,EAAKiK,IAGzC0H,KAAQ,SAAU3R,GACjB,MAAOA,KAAS4F,GAGjBgM,MAAS,SAAU5R,GAClB,MAAOA,KAAS7C,EAAS0U,iBAAmB1U,EAAS2U,UAAY3U,EAAS2U,gBAAkB9R,EAAKkC,MAAQlC,EAAK+R,OAAS/R,EAAKgS,WAI7HC,QAAW,SAAUjS,GACpB,MAAOA,GAAKkS,YAAa,GAG1BA,SAAY,SAAUlS,GACrB,MAAOA,GAAKkS,YAAa,GAG1BC,QAAW,SAAUnS,GAGpB,GAAIyD,GAAWzD,EAAKyD,SAASC,aAC7B,OAAqB,UAAbD,KAA0BzD,EAAKmS,SAA0B,WAAb1O,KAA2BzD,EAAKoS,UAGrFA,SAAY,SAAUpS,GAOrB,MAJKA,GAAKqD,YACTrD,EAAKqD,WAAWgP,cAGVrS,EAAKoS,YAAa,GAI1BE,MAAS,SAAUtS,GAKlB,IAAMA,EAAOA,EAAKgP,WAAYhP,EAAMA,EAAOA,EAAK6L,YAC/C,GAAK7L,EAAKyC,SAAW,EACpB,OAAO,CAGT,QAAO,GAGR6J,OAAU,SAAUtM,GACnB,OAAQkF,EAAKiC,QAAe,MAAGnH,IAIhCuS,OAAU,SAAUvS,GACnB,MAAOqI,GAAQgC,KAAMrK,EAAKyD,WAG3B6J,MAAS,SAAUtN,GAClB,MAAOoI,GAAQiC,KAAMrK,EAAKyD,WAG3B+O,OAAU,SAAUxS,GACnB,GAAIc,GAAOd,EAAKyD,SAASC,aACzB,OAAgB,UAAT5C,GAAkC,WAAdd,EAAKkC,MAA8B,WAATpB,GAGtDoC,KAAQ,SAAUlD,GACjB,GAAIwO,EACJ,OAAuC,UAAhCxO,EAAKyD,SAASC,eACN,SAAd1D,EAAKkC,OAImC,OAArCsM,EAAOxO,EAAKsK,aAAa,UAA2C,SAAvBkE,EAAK9K,gBAIvDtD,MAAS4L,GAAuB,WAC/B,OAAS,KAGV1L,KAAQ0L,GAAuB,SAAUE,EAAc/M,GACtD,OAASA,EAAS,KAGnBkB,GAAM2L,GAAuB,SAAUE,EAAc/M,EAAQ8M,GAC5D,OAAoB,EAAXA,EAAeA,EAAW9M,EAAS8M,KAG7CwG,KAAQzG,GAAuB,SAAUE,EAAc/M,GAEtD,IADA,GAAIc,GAAI,EACId,EAAJc,EAAYA,GAAK,EACxBiM,EAAatO,KAAMqC,EAEpB,OAAOiM,KAGRwG,IAAO1G,GAAuB,SAAUE,EAAc/M,GAErD,IADA,GAAIc,GAAI,EACId,EAAJc,EAAYA,GAAK,EACxBiM,EAAatO,KAAMqC,EAEpB,OAAOiM,KAGRyG,GAAM3G,GAAuB,SAAUE,EAAc/M,EAAQ8M,GAE5D,IADA,GAAIhM,GAAe,EAAXgM,EAAeA,EAAW9M,EAAS8M,IACjChM,GAAK,GACdiM,EAAatO,KAAMqC,EAEpB,OAAOiM,KAGR0G,GAAM5G,GAAuB,SAAUE,EAAc/M,EAAQ8M,GAE5D,IADA,GAAIhM,GAAe,EAAXgM,EAAeA,EAAW9M,EAAS8M,IACjChM,EAAId,GACb+M,EAAatO,KAAMqC,EAEpB,OAAOiM,OAKVhH,EAAKiC,QAAa,IAAIjC,EAAKiC,QAAY,EAGvC,KAAMlH,KAAO4S,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E/N,EAAKiC,QAASlH,GAAM6L,GAAmB7L,EAExC,KAAMA,KAAOiT,QAAQ,EAAMC,OAAO,GACjCjO,EAAKiC,QAASlH,GAAM8L,GAAoB9L,EAIzC,SAAS8Q,OACTA,GAAW/R,UAAYkG,EAAKkO,QAAUlO,EAAKiC,QAC3CjC,EAAK6L,WAAa,GAAIA,IAEtB1L,EAAWJ,GAAOI,SAAW,SAAUhH,EAAUgV,GAChD,GAAIpC,GAASvH,EAAO4J,EAAQpR,EAC3BqR,EAAO5J,EAAQ6J,EACfC,EAASnN,EAAYjI,EAAW,IAEjC,IAAKoV,EACJ,MAAOJ,GAAY,EAAII,EAAO/V,MAAO,EAGtC6V,GAAQlV,EACRsL,KACA6J,EAAatO,EAAKwK,SAElB,OAAQ6D,EAAQ,CAGTtC,KAAYvH,EAAQpC,EAAOyC,KAAMwJ,MACjC7J,IAEJ6J,EAAQA,EAAM7V,MAAOgM,EAAM,GAAGvK,SAAYoU,GAE3C5J,EAAO/L,KAAO0V,OAGfrC,GAAU,GAGJvH,EAAQnC,EAAawC,KAAMwJ,MAChCtC,EAAUvH,EAAMuB,QAChBqI,EAAO1V,MACN2G,MAAO0M,EAEP/O,KAAMwH,EAAM,GAAG9H,QAASnD,EAAO,OAEhC8U,EAAQA,EAAM7V,MAAOuT,EAAQ9R,QAI9B,KAAM+C,IAAQgD,GAAK+H,SACZvD,EAAQ/B,EAAWzF,GAAO6H,KAAMwJ,KAAcC,EAAYtR,MAC9DwH,EAAQ8J,EAAYtR,GAAQwH,MAC7BuH,EAAUvH,EAAMuB,QAChBqI,EAAO1V,MACN2G,MAAO0M,EACP/O,KAAMA,EACNkC,QAASsF,IAEV6J,EAAQA,EAAM7V,MAAOuT,EAAQ9R,QAI/B,KAAM8R,EACL,MAOF,MAAOoC,GACNE,EAAMpU,OACNoU,EACCtO,GAAOnD,MAAOzD,GAEdiI,EAAYjI,EAAUsL,GAASjM,MAAO,GAGzC,SAAS8M,IAAY8I,GAIpB,IAHA,GAAIrT,GAAI,EACPM,EAAM+S,EAAOnU,OACbd,EAAW,GACAkC,EAAJN,EAASA,IAChB5B,GAAYiV,EAAOrT,GAAGsE,KAEvB,OAAOlG,GAGR,QAASqV,IAAevC,EAASwC,EAAYC,GAC5C,GAAItE,GAAMqE,EAAWrE,IACpBuE,EAAmBD,GAAgB,eAARtE,EAC3BwE,EAAW3N,GAEZ,OAAOwN,GAAWvT,MAEjB,SAAUJ,EAAM1B,EAASgS,GACxB,MAAStQ,EAAOA,EAAMsP,GACrB,GAAuB,IAAlBtP,EAAKyC,UAAkBoR,EAC3B,MAAO1C,GAASnR,EAAM1B,EAASgS,IAMlC,SAAUtQ,EAAM1B,EAASgS,GACxB,GAAIyD,GAAUxD,EAAaC,EAC1BwD,GAAa9N,EAAS4N,EAGvB,IAAKxD,GACJ,MAAStQ,EAAOA,EAAMsP,GACrB,IAAuB,IAAlBtP,EAAKyC,UAAkBoR,IACtB1C,EAASnR,EAAM1B,EAASgS,GAC5B,OAAO,MAKV,OAAStQ,EAAOA,EAAMsP,GACrB,GAAuB,IAAlBtP,EAAKyC,UAAkBoR,EAAmB,CAO9C,GANArD,EAAaxQ,EAAMyB,KAAczB,EAAMyB,OAIvC8O,EAAcC,EAAYxQ,EAAK6Q,YAAeL,EAAYxQ,EAAK6Q,eAEzDkD,EAAWxD,EAAajB,KAC7ByE,EAAU,KAAQ7N,GAAW6N,EAAU,KAAQD,EAG/C,MAAQE,GAAU,GAAMD,EAAU,EAMlC,IAHAxD,EAAajB,GAAQ0E,EAGfA,EAAU,GAAM7C,EAASnR,EAAM1B,EAASgS,GAC7C,OAAO,IASf,QAAS2D,IAAgBC,GACxB,MAAOA,GAAS/U,OAAS,EACxB,SAAUa,EAAM1B,EAASgS,GACxB,GAAIrQ,GAAIiU,EAAS/U,MACjB,OAAQc,IACP,IAAMiU,EAASjU,GAAID,EAAM1B,EAASgS,GACjC,OAAO,CAGT,QAAO,GAER4D,EAAS,GAGX,QAASC,IAAkB9V,EAAU+V,EAAUvQ,GAG9C,IAFA,GAAI5D,GAAI,EACPM,EAAM6T,EAASjV,OACJoB,EAAJN,EAASA,IAChBgF,GAAQ5G,EAAU+V,EAASnU,GAAI4D,EAEhC,OAAOA,GAGR,QAASwQ,IAAUjD,EAAWrR,EAAKkN,EAAQ3O,EAASgS,GAOnD,IANA,GAAItQ,GACHsU,KACArU,EAAI,EACJM,EAAM6Q,EAAUjS,OAChBoV,EAAgB,MAAPxU,EAEEQ,EAAJN,EAASA,KACVD,EAAOoR,EAAUnR,MAChBgN,IAAUA,EAAQjN,EAAM1B,EAASgS,KACtCgE,EAAa1W,KAAMoC,GACduU,GACJxU,EAAInC,KAAMqC,IAMd,OAAOqU,GAGR,QAASE,IAAY9E,EAAWrR,EAAU8S,EAASsD,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAYhT,KAC/BgT,EAAaD,GAAYC,IAErBC,IAAeA,EAAYjT,KAC/BiT,EAAaF,GAAYE,EAAYC,IAE/BzJ,GAAa,SAAU5B,EAAMzF,EAASvF,EAASgS,GACrD,GAAIsE,GAAM3U,EAAGD,EACZ6U,KACAC,KACAC,EAAclR,EAAQ1E,OAGtBM,EAAQ6J,GAAQ6K,GAAkB9V,GAAY,IAAKC,EAAQmE,UAAanE,GAAYA,MAGpF0W,GAAYtF,IAAepG,GAASjL,EAEnCoB,EADA4U,GAAU5U,EAAOoV,EAAQnF,EAAWpR,EAASgS,GAG9C2E,EAAa9D,EAEZuD,IAAgBpL,EAAOoG,EAAYqF,GAAeN,MAMjD5Q,EACDmR,CAQF,IALK7D,GACJA,EAAS6D,EAAWC,EAAY3W,EAASgS,GAIrCmE,EAAa,CACjBG,EAAOP,GAAUY,EAAYH,GAC7BL,EAAYG,KAAUtW,EAASgS,GAG/BrQ,EAAI2U,EAAKzV,MACT,OAAQc,KACDD,EAAO4U,EAAK3U,MACjBgV,EAAYH,EAAQ7U,MAAS+U,EAAWF,EAAQ7U,IAAOD,IAK1D,GAAKsJ,GACJ,GAAKoL,GAAchF,EAAY,CAC9B,GAAKgF,EAAa,CAEjBE,KACA3U,EAAIgV,EAAW9V,MACf,OAAQc,KACDD,EAAOiV,EAAWhV,KAEvB2U,EAAKhX,KAAOoX,EAAU/U,GAAKD,EAG7B0U,GAAY,KAAOO,KAAkBL,EAAMtE,GAI5CrQ,EAAIgV,EAAW9V,MACf,OAAQc,KACDD,EAAOiV,EAAWhV,MACtB2U,EAAOF,EAAa7W,EAASyL,EAAMtJ,GAAS6U,EAAO5U,IAAM,KAE1DqJ,EAAKsL,KAAU/Q,EAAQ+Q,GAAQ5U,SAOlCiV,GAAaZ,GACZY,IAAepR,EACdoR,EAAWtU,OAAQoU,EAAaE,EAAW9V,QAC3C8V,GAEGP,EACJA,EAAY,KAAM7Q,EAASoR,EAAY3E,GAEvC1S,EAAKsC,MAAO2D,EAASoR,KAMzB,QAASC,IAAmB5B,GAwB3B,IAvBA,GAAI6B,GAAchE,EAAS3Q,EAC1BD,EAAM+S,EAAOnU,OACbiW,EAAkBlQ,EAAKkK,SAAUkE,EAAO,GAAGpR,MAC3CmT,EAAmBD,GAAmBlQ,EAAKkK,SAAS,KACpDnP,EAAImV,EAAkB,EAAI,EAG1BE,EAAe5B,GAAe,SAAU1T,GACvC,MAAOA,KAASmV,GACdE,GAAkB,GACrBE,EAAkB7B,GAAe,SAAU1T,GAC1C,MAAOnC,GAASsX,EAAcnV,GAAS,IACrCqV,GAAkB,GACrBnB,GAAa,SAAUlU,EAAM1B,EAASgS,GACrC,GAAI5Q,IAAS0V,IAAqB9E,GAAOhS,IAAYkH,MACnD2P,EAAe7W,GAASmE,SACxB6S,EAActV,EAAM1B,EAASgS,GAC7BiF,EAAiBvV,EAAM1B,EAASgS,GAGlC,OADA6E,GAAe,KACRzV,IAGGa,EAAJN,EAASA,IAChB,GAAMkR,EAAUjM,EAAKkK,SAAUkE,EAAOrT,GAAGiC,MACxCgS,GAAaR,GAAcO,GAAgBC,GAAY/C,QACjD,CAIN,GAHAA,EAAUjM,EAAK+H,OAAQqG,EAAOrT,GAAGiC,MAAOhC,MAAO,KAAMoT,EAAOrT,GAAGmE,SAG1D+M,EAAS1P,GAAY,CAGzB,IADAjB,IAAMP,EACMM,EAAJC,EAASA,IAChB,GAAK0E,EAAKkK,SAAUkE,EAAO9S,GAAG0B,MAC7B,KAGF,OAAOsS,IACNvU,EAAI,GAAKgU,GAAgBC,GACzBjU,EAAI,GAAKuK,GAER8I,EAAO5V,MAAO,EAAGuC,EAAI,GAAItC,QAAS4G,MAAgC,MAAzB+O,EAAQrT,EAAI,GAAIiC,KAAe,IAAM,MAC7EN,QAASnD,EAAO,MAClB0S,EACI3Q,EAAJP,GAASiV,GAAmB5B,EAAO5V,MAAOuC,EAAGO,IACzCD,EAAJC,GAAW0U,GAAoB5B,EAASA,EAAO5V,MAAO8C,IAClDD,EAAJC,GAAWgK,GAAY8I,IAGzBY,EAAStW,KAAMuT,GAIjB,MAAO8C,IAAgBC,GAGxB,QAASsB,IAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYvW,OAAS,EAChCyW,EAAYH,EAAgBtW,OAAS,EACrC0W,EAAe,SAAUvM,EAAMhL,EAASgS,EAAKzM,EAASiS,GACrD,GAAI9V,GAAMQ,EAAG2Q,EACZ4E,EAAe,EACf9V,EAAI,IACJmR,EAAY9H,MACZ0M,KACAC,EAAgBzQ,EAEhB/F,EAAQ6J,GAAQsM,GAAa1Q,EAAK8H,KAAU,IAAG,IAAK8I,GAEpDI,EAAiBhQ,GAA4B,MAAjB+P,EAAwB,EAAIvU,KAAKC,UAAY,GACzEpB,EAAMd,EAAMN,MASb,KAPK2W,IACJtQ,EAAmBlH,IAAYnB,GAAYmB,GAAWwX,GAM/C7V,IAAMM,GAA4B,OAApBP,EAAOP,EAAMQ,IAAaA,IAAM,CACrD,GAAK2V,GAAa5V,EAAO,CACxBQ,EAAI,EACElC,GAAW0B,EAAK8J,gBAAkB3M,IACvCwI,EAAa3F,GACbsQ,GAAOzK,EAER,OAASsL,EAAUsE,EAAgBjV,KAClC,GAAK2Q,EAASnR,EAAM1B,GAAWnB,EAAUmT,GAAO,CAC/CzM,EAAQjG,KAAMoC,EACd,OAGG8V,IACJ5P,EAAUgQ,GAKPP,KAEE3V,GAAQmR,GAAWnR,IACxB+V,IAIIzM,GACJ8H,EAAUxT,KAAMoC,IAgBnB,GATA+V,GAAgB9V,EASX0V,GAAS1V,IAAM8V,EAAe,CAClCvV,EAAI,CACJ,OAAS2Q,EAAUuE,EAAYlV,KAC9B2Q,EAASC,EAAW4E,EAAY1X,EAASgS,EAG1C,IAAKhH,EAAO,CAEX,GAAKyM,EAAe,EACnB,MAAQ9V,IACAmR,EAAUnR,IAAM+V,EAAW/V,KACjC+V,EAAW/V,GAAK2G,EAAIvH,KAAMwE,GAM7BmS,GAAa3B,GAAU2B,GAIxBpY,EAAKsC,MAAO2D,EAASmS,GAGhBF,IAAcxM,GAAQ0M,EAAW7W,OAAS,GAC5C4W,EAAeL,EAAYvW,OAAW,GAExC8F,GAAO0J,WAAY9K,GAUrB,MALKiS,KACJ5P,EAAUgQ,EACV1Q,EAAmByQ,GAGb7E,EAGT,OAAOuE,GACNzK,GAAc2K,GACdA,EAgLF,MA7KAvQ,GAAUL,GAAOK,QAAU,SAAUjH,EAAUqL,GAC9C,GAAIzJ,GACHyV,KACAD,KACAhC,EAASlN,EAAelI,EAAW,IAEpC,KAAMoV,EAAS,CAER/J,IACLA,EAAQrE,EAAUhH,IAEnB4B,EAAIyJ,EAAMvK,MACV,OAAQc,IACPwT,EAASyB,GAAmBxL,EAAMzJ,IAC7BwT,EAAQhS,GACZiU,EAAY9X,KAAM6V,GAElBgC,EAAgB7X,KAAM6V,EAKxBA,GAASlN,EAAelI,EAAUmX,GAA0BC,EAAiBC,IAG7EjC,EAAOpV,SAAWA,EAEnB,MAAOoV,IAYRlO,EAASN,GAAOM,OAAS,SAAUlH,EAAUC,EAASuF,EAASyF,GAC9D,GAAIrJ,GAAGqT,EAAQ6C,EAAOjU,EAAM8K,EAC3BoJ,EAA+B,kBAAb/X,IAA2BA,EAC7CqL,GAASJ,GAAQjE,EAAWhH,EAAW+X,EAAS/X,UAAYA,EAM7D,IAJAwF,EAAUA,MAIY,IAAjB6F,EAAMvK,OAAe,CAIzB,GADAmU,EAAS5J,EAAM,GAAKA,EAAM,GAAGhM,MAAO,GAC/B4V,EAAOnU,OAAS,GAAkC,QAA5BgX,EAAQ7C,EAAO,IAAIpR,MAC5ChE,EAAQ4O,SAAgC,IAArBxO,EAAQmE,UAAkBoD,GAC7CX,EAAKkK,SAAUkE,EAAO,GAAGpR,MAAS,CAGnC,GADA5D,GAAY4G,EAAK8H,KAAS,GAAGmJ,EAAM/R,QAAQ,GAAGxC,QAAQ8G,GAAWC,IAAYrK,QAAkB,IACzFA,EACL,MAAOuF,EAGIuS,KACX9X,EAAUA,EAAQ+E,YAGnBhF,EAAWA,EAASX,MAAO4V,EAAOrI,QAAQ1G,MAAMpF,QAIjDc,EAAI0H,EAAwB,aAAE0C,KAAMhM,GAAa,EAAIiV,EAAOnU,MAC5D,OAAQc,IAAM,CAIb,GAHAkW,EAAQ7C,EAAOrT,GAGViF,EAAKkK,SAAWlN,EAAOiU,EAAMjU,MACjC,KAED,KAAM8K,EAAO9H,EAAK8H,KAAM9K,MAEjBoH,EAAO0D,EACZmJ,EAAM/R,QAAQ,GAAGxC,QAAS8G,GAAWC,IACrCH,EAAS6B,KAAMiJ,EAAO,GAAGpR,OAAUwI,GAAapM,EAAQ+E,aAAgB/E,IACpE,CAKJ,GAFAgV,EAAO3S,OAAQV,EAAG,GAClB5B,EAAWiL,EAAKnK,QAAUqL,GAAY8I,IAChCjV,EAEL,MADAT,GAAKsC,MAAO2D,EAASyF,GACdzF,CAGR,SAeJ,OAPEuS,GAAY9Q,EAASjH,EAAUqL,IAChCJ,EACAhL,GACCuH,EACDhC,GACCvF,GAAWkK,EAAS6B,KAAMhM,IAAcqM,GAAapM,EAAQ+E,aAAgB/E,GAExEuF,GAMR3F,EAAQ4Q,WAAarN,EAAQuD,MAAM,IAAItE,KAAM8F,GAAYiE,KAAK,MAAQhJ,EAItEvD,EAAQ2Q,mBAAqBnJ,EAG7BC,IAIAzH,EAAQ+P,aAAe9C,GAAO,SAAUkL,GAEvC,MAAuE,GAAhEA,EAAKxI,wBAAyB1Q,EAAS8F,cAAc,UAMvDkI,GAAO,SAAUC,GAEtB,MADAA,GAAIiC,UAAY,mBAC+B,MAAxCjC,EAAI4D,WAAW1E,aAAa,WAEnCe,GAAW,yBAA0B,SAAUrL,EAAMc,EAAMsE,GAC1D,MAAMA,GAAN,OACQpF,EAAKsK,aAAcxJ,EAA6B,SAAvBA,EAAK4C,cAA2B,EAAI,KAOjExF,EAAQgJ,YAAeiE,GAAO,SAAUC,GAG7C,MAFAA,GAAIiC,UAAY,WAChBjC,EAAI4D,WAAWzE,aAAc,QAAS,IACY,KAA3Ca,EAAI4D,WAAW1E,aAAc,YAEpCe,GAAW,QAAS,SAAUrL,EAAMc,EAAMsE,GACzC,MAAMA,IAAyC,UAAhCpF,EAAKyD,SAASC,cAA7B,OACQ1D,EAAKsW,eAOTnL,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAId,aAAa,eAExBe,GAAWtE,EAAU,SAAU/G,EAAMc,EAAMsE,GAC1C,GAAIqJ,EACJ,OAAMrJ,GAAN,OACQpF,EAAMc,MAAW,EAAOA,EAAK4C,eACjC+K,EAAMzO,EAAKmN,iBAAkBrM,KAAW2N,EAAIC,UAC7CD,EAAIlK,MACL,OAKGU,IAEH3H,EAIJc,GAAO4O,KAAO/H,EACd7G,EAAOkQ,KAAOrJ,EAAOiK,UACrB9Q,EAAOkQ,KAAM,KAAQlQ,EAAOkQ,KAAKnH,QACjC/I,EAAOuQ,WAAavQ,EAAOmY,OAAStR,EAAO0J,WAC3CvQ,EAAO8E,KAAO+B,EAAOE,QACrB/G,EAAOoY,SAAWvR,EAAOG,MACzBhH,EAAO4H,SAAWf,EAAOe,QAIzB,IAAIsJ,GAAM,SAAUtP,EAAMsP,EAAKmH,GAC9B,GAAIxF,MACHyF,EAAqBlV,SAAViV,CAEZ,QAAUzW,EAAOA,EAAMsP,KAA6B,IAAlBtP,EAAKyC,SACtC,GAAuB,IAAlBzC,EAAKyC,SAAiB,CAC1B,GAAKiU,GAAYtY,EAAQ4B,GAAO2W,GAAIF,GACnC,KAEDxF,GAAQrT,KAAMoC,GAGhB,MAAOiR,IAIJ2F,EAAW,SAAUC,EAAG7W,GAG3B,IAFA,GAAIiR,MAEI4F,EAAGA,EAAIA,EAAEhL,YACI,IAAfgL,EAAEpU,UAAkBoU,IAAM7W,GAC9BiR,EAAQrT,KAAMiZ,EAIhB,OAAO5F,IAIJ6F,EAAgB1Y,EAAOkQ,KAAK5E,MAAMvB,aAElC4O,EAAa,gCAIbC,EAAY,gBAGhB,SAASC,GAAQ1I,EAAU2I,EAAWhG,GACrC,GAAK9S,EAAOiD,WAAY6V,GACvB,MAAO9Y,GAAO6F,KAAMsK,EAAU,SAAUvO,EAAMC,GAE7C,QAASiX,EAAU7X,KAAMW,EAAMC,EAAGD,KAAWkR,GAK/C,IAAKgG,EAAUzU,SACd,MAAOrE,GAAO6F,KAAMsK,EAAU,SAAUvO,GACvC,MAASA,KAASkX,IAAgBhG,GAKpC,IAA0B,gBAAdgG,GAAyB,CACpC,GAAKF,EAAU3M,KAAM6M,GACpB,MAAO9Y,GAAO6O,OAAQiK,EAAW3I,EAAU2C,EAG5CgG,GAAY9Y,EAAO6O,OAAQiK,EAAW3I,GAGvC,MAAOnQ,GAAO6F,KAAMsK,EAAU,SAAUvO,GACvC,MAASnC,GAAQwB,KAAM6X,EAAWlX,GAAS,KAASkR,IAItD9S,EAAO6O,OAAS,SAAUqB,EAAM7O,EAAOyR,GACtC,GAAIlR,GAAOP,EAAO,EAMlB,OAJKyR,KACJ5C,EAAO,QAAUA,EAAO,KAGD,IAAjB7O,EAAMN,QAAkC,IAAlBa,EAAKyC,SACjCrE,EAAO4O,KAAKO,gBAAiBvN,EAAMsO,IAAWtO,MAC9C5B,EAAO4O,KAAK5I,QAASkK,EAAMlQ,EAAO6F,KAAMxE,EAAO,SAAUO,GACxD,MAAyB,KAAlBA,EAAKyC,aAIfrE,EAAOG,GAAGqC,QACToM,KAAM,SAAU3O,GACf,GAAI4B,GACHM,EAAMhD,KAAK4B,OACXO,KACAyX,EAAO5Z,IAER,IAAyB,gBAAbc,GACX,MAAOd,MAAKiC,UAAWpB,EAAQC,GAAW4O,OAAQ,WACjD,IAAMhN,EAAI,EAAOM,EAAJN,EAASA,IACrB,GAAK7B,EAAO4H,SAAUmR,EAAMlX,GAAK1C,MAChC,OAAO,IAMX,KAAM0C,EAAI,EAAOM,EAAJN,EAASA,IACrB7B,EAAO4O,KAAM3O,EAAU8Y,EAAMlX,GAAKP,EAMnC,OAFAA,GAAMnC,KAAKiC,UAAWe,EAAM,EAAInC,EAAOmY,OAAQ7W,GAAQA,GACvDA,EAAIrB,SAAWd,KAAKc,SAAWd,KAAKc,SAAW,IAAMA,EAAWA,EACzDqB,GAERuN,OAAQ,SAAU5O,GACjB,MAAOd,MAAKiC,UAAWyX,EAAQ1Z,KAAMc,OAAgB,KAEtD6S,IAAK,SAAU7S,GACd,MAAOd,MAAKiC,UAAWyX,EAAQ1Z,KAAMc,OAAgB,KAEtDsY,GAAI,SAAUtY,GACb,QAAS4Y,EACR1Z,KAIoB,gBAAbc,IAAyByY,EAAczM,KAAMhM,GACnDD,EAAQC,GACRA,OACD,GACCc,SASJ,IAAIiY,GAKH7O,EAAa,sCAEb/J,EAAOJ,EAAOG,GAAGC,KAAO,SAAUH,EAAUC,EAASqT,GACpD,GAAIjI,GAAO1J,CAGX,KAAM3B,EACL,MAAOd,KAQR,IAHAoU,EAAOA,GAAQyF,EAGU,gBAAb/Y,GAAwB,CAanC,GAPCqL,EALsB,MAAlBrL,EAAU,IACsB,MAApCA,EAAUA,EAASc,OAAS,IAC5Bd,EAASc,QAAU,GAGT,KAAMd,EAAU,MAGlBkK,EAAWwB,KAAM1L,IAIrBqL,IAAWA,EAAO,IAAQpL,EAkDxB,OAAMA,GAAWA,EAAQW,QACtBX,GAAWqT,GAAO3E,KAAM3O,GAK1Bd,KAAK2B,YAAaZ,GAAU0O,KAAM3O,EArDzC,IAAKqL,EAAO,GAAM,CAYjB,GAXApL,EAAUA,YAAmBF,GAASE,EAAS,GAAMA,EAIrDF,EAAOuB,MAAOpC,KAAMa,EAAOiZ,UAC1B3N,EAAO,GACPpL,GAAWA,EAAQmE,SAAWnE,EAAQwL,eAAiBxL,EAAUnB,GACjE,IAII4Z,EAAW1M,KAAMX,EAAO,KAAStL,EAAOkD,cAAehD,GAC3D,IAAMoL,IAASpL,GAGTF,EAAOiD,WAAY9D,KAAMmM,IAC7BnM,KAAMmM,GAASpL,EAASoL,IAIxBnM,KAAKiR,KAAM9E,EAAOpL,EAASoL,GAK9B,OAAOnM,MAiBP,MAbAyC,GAAO7C,EAAS6M,eAAgBN,EAAO,IAIlC1J,GAAQA,EAAKqD,aAGjB9F,KAAK4B,OAAS,EACd5B,KAAM,GAAMyC,GAGbzC,KAAKe,QAAUnB,EACfI,KAAKc,SAAWA,EACTd,KAcH,MAAKc,GAASoE,UACpBlF,KAAKe,QAAUf,KAAM,GAAMc,EAC3Bd,KAAK4B,OAAS,EACP5B,MAIIa,EAAOiD,WAAYhD,GACRmD,SAAfmQ,EAAK2F,MACX3F,EAAK2F,MAAOjZ,GAGZA,EAAUD,IAGeoD,SAAtBnD,EAASA,WACbd,KAAKc,SAAWA,EAASA,SACzBd,KAAKe,QAAUD,EAASC,SAGlBF,EAAOwF,UAAWvF,EAAUd,OAIrCiB,GAAKQ,UAAYZ,EAAOG,GAGxB6Y,EAAahZ,EAAQjB,EAGrB,IAAIoa,GAAe,iCAGlBC,GACCC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,MAAM,EAGRxZ,GAAOG,GAAGqC,QACTyQ,IAAK,SAAUlQ,GACd,GAAI0W,GAAUzZ,EAAQ+C,EAAQ5D,MAC7Bua,EAAID,EAAQ1Y,MAEb,OAAO5B,MAAK0P,OAAQ,WAEnB,IADA,GAAIhN,GAAI,EACI6X,EAAJ7X,EAAOA,IACd,GAAK7B,EAAO4H,SAAUzI,KAAMsa,EAAS5X,IACpC,OAAO,KAMX8X,QAAS,SAAU7I,EAAW5Q,GAS7B,IARA,GAAIoN,GACHzL,EAAI,EACJ6X,EAAIva,KAAK4B,OACT8R,KACA+G,EAAMlB,EAAczM,KAAM6E,IAAoC,gBAAdA,GAC/C9Q,EAAQ8Q,EAAW5Q,GAAWf,KAAKe,SACnC,EAEUwZ,EAAJ7X,EAAOA,IACd,IAAMyL,EAAMnO,KAAM0C,GAAKyL,GAAOA,IAAQpN,EAASoN,EAAMA,EAAIrI,WAGxD,GAAKqI,EAAIjJ,SAAW,KAAQuV,EAC3BA,EAAIC,MAAOvM,GAAQ,GAGF,IAAjBA,EAAIjJ,UACHrE,EAAO4O,KAAKO,gBAAiB7B,EAAKwD,IAAgB,CAEnD+B,EAAQrT,KAAM8N,EACd,OAKH,MAAOnO,MAAKiC,UAAWyR,EAAQ9R,OAAS,EAAIf,EAAOuQ,WAAYsC,GAAYA,IAI5EgH,MAAO,SAAUjY,GAGhB,MAAMA,GAKe,gBAATA,GACJnC,EAAQwB,KAAMjB,EAAQ4B,GAAQzC,KAAM,IAIrCM,EAAQwB,KAAM9B,KAGpByC,EAAKf,OAASe,EAAM,GAAMA,GAZjBzC,KAAM,IAAOA,KAAM,GAAI8F,WAAe9F,KAAK6C,QAAQ8X,UAAU/Y,OAAS,IAgBjFgZ,IAAK,SAAU9Z,EAAUC,GACxB,MAAOf,MAAKiC,UACXpB,EAAOuQ,WACNvQ,EAAOuB,MAAOpC,KAAK+B,MAAOlB,EAAQC,EAAUC,OAK/C8Z,QAAS,SAAU/Z,GAClB,MAAOd,MAAK4a,IAAiB,MAAZ9Z,EAChBd,KAAKqC,WAAarC,KAAKqC,WAAWqN,OAAQ5O,MAK7C,SAASga,GAAS3M,EAAK4D,GACtB,OAAU5D,EAAMA,EAAK4D,KAA4B,IAAjB5D,EAAIjJ,UACpC,MAAOiJ,GAGRtN,EAAOyB,MACNyM,OAAQ,SAAUtM,GACjB,GAAIsM,GAAStM,EAAKqD,UAClB,OAAOiJ,IAA8B,KAApBA,EAAO7J,SAAkB6J,EAAS,MAEpDgM,QAAS,SAAUtY,GAClB,MAAOsP,GAAKtP,EAAM,eAEnBuY,aAAc,SAAUvY,EAAMC,EAAGwW,GAChC,MAAOnH,GAAKtP,EAAM,aAAcyW,IAEjCkB,KAAM,SAAU3X,GACf,MAAOqY,GAASrY,EAAM,gBAEvB4X,KAAM,SAAU5X,GACf,MAAOqY,GAASrY,EAAM,oBAEvBwY,QAAS,SAAUxY,GAClB,MAAOsP,GAAKtP,EAAM,gBAEnBkY,QAAS,SAAUlY,GAClB,MAAOsP,GAAKtP,EAAM,oBAEnByY,UAAW,SAAUzY,EAAMC,EAAGwW,GAC7B,MAAOnH,GAAKtP,EAAM,cAAeyW,IAElCiC,UAAW,SAAU1Y,EAAMC,EAAGwW,GAC7B,MAAOnH,GAAKtP,EAAM,kBAAmByW,IAEtCG,SAAU,SAAU5W,GACnB,MAAO4W,IAAY5W,EAAKqD,gBAAmB2L,WAAYhP,IAExDyX,SAAU,SAAUzX,GACnB,MAAO4W,GAAU5W,EAAKgP,aAEvB0I,SAAU,SAAU1X,GACnB,MAAOA,GAAK2Y,iBAAmBva,EAAOuB,SAAWK,EAAKmJ,cAErD,SAAUrI,EAAMvC,GAClBH,EAAOG,GAAIuC,GAAS,SAAU2V,EAAOpY,GACpC,GAAI4S,GAAU7S,EAAO2B,IAAKxC,KAAMgB,EAAIkY,EAuBpC,OArB0B,UAArB3V,EAAKpD,MAAO,MAChBW,EAAWoY,GAGPpY,GAAgC,gBAAbA,KACvB4S,EAAU7S,EAAO6O,OAAQ5O,EAAU4S,IAG/B1T,KAAK4B,OAAS,IAGZqY,EAAkB1W,IACvB1C,EAAOuQ,WAAYsC,GAIfsG,EAAalN,KAAMvJ,IACvBmQ,EAAQ2H,WAIHrb,KAAKiC,UAAWyR,KAGzB,IAAI4H,GAAY,MAKhB,SAASC,GAAejY,GACvB,GAAIkY,KAIJ,OAHA3a,GAAOyB,KAAMgB,EAAQ6I,MAAOmP,OAAmB,SAAUjQ,EAAGoQ,GAC3DD,EAAQC,IAAS,IAEXD,EAyBR3a,EAAO6a,UAAY,SAAUpY,GAI5BA,EAA6B,gBAAZA,GAChBiY,EAAejY,GACfzC,EAAOwC,UAAYC,EAEpB,IACCqY,GAGAC,EAGAC,EAGAC,EAGAvS,KAGAwS,KAGAC,EAAc,GAGdC,EAAO,WAQN,IALAH,EAASxY,EAAQ4Y,KAIjBL,EAAQF,GAAS,EACTI,EAAMna,OAAQoa,EAAc,GAAK,CACxCJ,EAASG,EAAMrO,OACf,SAAUsO,EAAczS,EAAK3H,OAGvB2H,EAAMyS,GAAcrZ,MAAOiZ,EAAQ,GAAKA,EAAQ,OAAU,GAC9DtY,EAAQ6Y,cAGRH,EAAczS,EAAK3H,OACnBga,GAAS,GAMNtY,EAAQsY,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIHvS,EADIqS,KAKG,KAMVhC,GAGCgB,IAAK,WA2BJ,MA1BKrR,KAGCqS,IAAWD,IACfK,EAAczS,EAAK3H,OAAS,EAC5Bma,EAAM1b,KAAMub,IAGb,QAAWhB,GAAKxT,GACfvG,EAAOyB,KAAM8E,EAAM,SAAUiE,EAAGtE,GAC1BlG,EAAOiD,WAAYiD,GACjBzD,EAAQ0V,QAAWY,EAAK9F,IAAK/M,IAClCwC,EAAKlJ,KAAM0G,GAEDA,GAAOA,EAAInF,QAAiC,WAAvBf,EAAO8D,KAAMoC,IAG7C6T,EAAK7T,MAGHnE,WAEAgZ,IAAWD,GACfM,KAGKjc,MAIRoc,OAAQ,WAYP,MAXAvb,GAAOyB,KAAMM,UAAW,SAAUyI,EAAGtE,GACpC,GAAI2T,EACJ,QAAUA,EAAQ7Z,EAAO2F,QAASO,EAAKwC,EAAMmR,IAAY,GACxDnR,EAAKnG,OAAQsX,EAAO,GAGNsB,GAATtB,GACJsB,MAIIhc,MAKR8T,IAAK,SAAU9S,GACd,MAAOA,GACNH,EAAO2F,QAASxF,EAAIuI,GAAS,GAC7BA,EAAK3H,OAAS,GAIhBmT,MAAO,WAIN,MAHKxL,KACJA,MAEMvJ,MAMRqc,QAAS,WAGR,MAFAP,GAASC,KACTxS,EAAOqS,EAAS,GACT5b,MAER2U,SAAU,WACT,OAAQpL,GAMT+S,KAAM,WAKL,MAJAR,GAASC,KACHH,IACLrS,EAAOqS,EAAS,IAEV5b,MAER8b,OAAQ,WACP,QAASA,GAIVS,SAAU,SAAUxb,EAASqG,GAS5B,MARM0U,KACL1U,EAAOA,MACPA,GAASrG,EAASqG,EAAKjH,MAAQiH,EAAKjH,QAAUiH,GAC9C2U,EAAM1b,KAAM+G,GACNuU,GACLM,KAGKjc,MAIRic,KAAM,WAEL,MADArC,GAAK2C,SAAUvc,KAAM4C,WACd5C,MAIR6b,MAAO,WACN,QAASA,GAIZ,OAAOjC,IAIR/Y,EAAOwC,QAENmZ,SAAU,SAAUC,GACnB,GAAIC,KAGA,UAAW,OAAQ7b,EAAO6a,UAAW,eAAiB,aACtD,SAAU,OAAQ7a,EAAO6a,UAAW,eAAiB,aACrD,SAAU,WAAY7a,EAAO6a,UAAW,YAE3CiB,EAAQ,UACRC,GACCD,MAAO,WACN,MAAOA,IAERE,OAAQ,WAEP,MADAC,GAASlU,KAAMhG,WAAYma,KAAMna,WAC1B5C,MAERgd,KAAM,WACL,GAAIC,GAAMra,SACV,OAAO/B,GAAO2b,SAAU,SAAUU,GACjCrc,EAAOyB,KAAMoa,EAAQ,SAAUha,EAAGya,GACjC,GAAInc,GAAKH,EAAOiD,WAAYmZ,EAAKva,KAASua,EAAKva,EAG/Coa,GAAUK,EAAO,IAAO,WACvB,GAAIC,GAAWpc,GAAMA,EAAG2B,MAAO3C,KAAM4C,UAChCwa,IAAYvc,EAAOiD,WAAYsZ,EAASR,SAC5CQ,EAASR,UACPS,SAAUH,EAASI,QACnB1U,KAAMsU,EAASK,SACfR,KAAMG,EAASM,QAEjBN,EAAUC,EAAO,GAAM,QACtBnd,OAAS4c,EAAUM,EAASN,UAAY5c,KACxCgB,GAAOoc,GAAaxa,eAKxBqa,EAAM,OACHL,WAKLA,QAAS,SAAUlY,GAClB,MAAc,OAAPA,EAAc7D,EAAOwC,OAAQqB,EAAKkY,GAAYA,IAGvDE,IAyCD,OAtCAF,GAAQa,KAAOb,EAAQI,KAGvBnc,EAAOyB,KAAMoa,EAAQ,SAAUha,EAAGya,GACjC,GAAI5T,GAAO4T,EAAO,GACjBO,EAAcP,EAAO,EAGtBP,GAASO,EAAO,IAAQ5T,EAAKqR,IAGxB8C,GACJnU,EAAKqR,IAAK,WAGT+B,EAAQe,GAGNhB,EAAY,EAAJha,GAAS,GAAI2Z,QAASK,EAAQ,GAAK,GAAIJ,MAInDQ,EAAUK,EAAO,IAAQ,WAExB,MADAL,GAAUK,EAAO,GAAM,QAAUnd,OAAS8c,EAAWF,EAAU5c,KAAM4C,WAC9D5C,MAER8c,EAAUK,EAAO,GAAM,QAAW5T,EAAKgT,WAIxCK,EAAQA,QAASE,GAGZL,GACJA,EAAK3a,KAAMgb,EAAUA,GAIfA,GAIRa,KAAM,SAAUC,GACf,GAAIlb,GAAI,EACPmb,EAAgB1d,EAAM2B,KAAMc,WAC5BhB,EAASic,EAAcjc,OAGvBkc,EAAuB,IAAXlc,GACTgc,GAAe/c,EAAOiD,WAAY8Z,EAAYhB,SAAchb,EAAS,EAIxEkb,EAAyB,IAAdgB,EAAkBF,EAAc/c,EAAO2b,WAGlDuB,EAAa,SAAUrb,EAAGmU,EAAUmH,GACnC,MAAO,UAAUhX,GAChB6P,EAAUnU,GAAM1C,KAChBge,EAAQtb,GAAME,UAAUhB,OAAS,EAAIzB,EAAM2B,KAAMc,WAAcoE,EAC1DgX,IAAWC,EACfnB,EAASoB,WAAYrH,EAAUmH,KACfF,GAChBhB,EAASqB,YAAatH,EAAUmH,KAKnCC,EAAgBG,EAAkBC,CAGnC,IAAKzc,EAAS,EAIb,IAHAqc,EAAiB,GAAIrZ,OAAOhD,GAC5Bwc,EAAmB,GAAIxZ,OAAOhD,GAC9Byc,EAAkB,GAAIzZ,OAAOhD,GACjBA,EAAJc,EAAYA,IACdmb,EAAenb,IAAO7B,EAAOiD,WAAY+Z,EAAenb,GAAIka,SAChEiB,EAAenb,GAAIka,UACjBS,SAAUU,EAAYrb,EAAG0b,EAAkBH,IAC3CrV,KAAMmV,EAAYrb,EAAG2b,EAAiBR,IACtCd,KAAMD,EAASU,UAEfM,CAUL,OAJMA,IACLhB,EAASqB,YAAaE,EAAiBR,GAGjCf,EAASF,YAMlB,IAAI0B,EAEJzd,GAAOG,GAAG+Y,MAAQ,SAAU/Y,GAK3B,MAFAH,GAAOkZ,MAAM6C,UAAUhU,KAAM5H,GAEtBhB,MAGRa,EAAOwC,QAGNiB,SAAS,EAITia,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJ5d,EAAO0d,YAEP1d,EAAOkZ,OAAO,IAKhBA,MAAO,SAAU2E,IAGXA,KAAS,IAAS7d,EAAO0d,UAAY1d,EAAOyD,WAKjDzD,EAAOyD,SAAU,EAGZoa,KAAS,KAAU7d,EAAO0d,UAAY,IAK3CD,EAAUH,YAAave,GAAYiB,IAG9BA,EAAOG,GAAG2d,iBACd9d,EAAQjB,GAAW+e,eAAgB,SACnC9d,EAAQjB,GAAWgf,IAAK,cAQ3B,SAASC,KACRjf,EAASkf,oBAAqB,mBAAoBD,GAClD9e,EAAO+e,oBAAqB,OAAQD,GACpChe,EAAOkZ,QAGRlZ,EAAOkZ,MAAM6C,QAAU,SAAUlY,GAwBhC,MAvBM4Z,KAELA,EAAYzd,EAAO2b,WAMU,aAAxB5c,EAASmf,YACa,YAAxBnf,EAASmf,aAA6Bnf,EAASgP,gBAAgBoQ,SAGjEjf,EAAOkf,WAAYpe,EAAOkZ,QAK1Bna,EAASuP,iBAAkB,mBAAoB0P,GAG/C9e,EAAOoP,iBAAkB,OAAQ0P,KAG5BP,EAAU1B,QAASlY,IAI3B7D,EAAOkZ,MAAM6C,SAOb,IAAIsC,GAAS,SAAUhd,EAAOlB,EAAIiE,EAAK+B,EAAOmY,EAAWC,EAAUC,GAClE,GAAI3c,GAAI,EACPM,EAAMd,EAAMN,OACZ0d,EAAc,MAAPra,CAGR,IAA4B,WAAvBpE,EAAO8D,KAAMM,GAAqB,CACtCka,GAAY,CACZ,KAAMzc,IAAKuC,GACVia,EAAQhd,EAAOlB,EAAI0B,EAAGuC,EAAKvC,IAAK,EAAM0c,EAAUC,OAI3C,IAAepb,SAAV+C,IACXmY,GAAY,EAENte,EAAOiD,WAAYkD,KACxBqY,GAAM,GAGFC,IAGCD,GACJre,EAAGc,KAAMI,EAAO8E,GAChBhG,EAAK,OAILse,EAAOte,EACPA,EAAK,SAAUyB,EAAMwC,EAAK+B,GACzB,MAAOsY,GAAKxd,KAAMjB,EAAQ4B,GAAQuE,MAKhChG,GACJ,KAAYgC,EAAJN,EAASA,IAChB1B,EACCkB,EAAOQ,GAAKuC,EAAKoa,EACjBrY,EACAA,EAAMlF,KAAMI,EAAOQ,GAAKA,EAAG1B,EAAIkB,EAAOQ,GAAKuC,IAM/C,OAAOka,GACNjd,EAGAod,EACCte,EAAGc,KAAMI,GACTc,EAAMhC,EAAIkB,EAAO,GAAK+C,GAAQma,GAE7BG,EAAa,SAAUC,GAS1B,MAA0B,KAAnBA,EAAMta,UAAqC,IAAnBsa,EAAMta,YAAsBsa,EAAMta,SAMlE,SAASua,KACRzf,KAAKkE,QAAUrD,EAAOqD,QAAUub,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAKhe,WAEJke,SAAU,SAAUH,EAAOI,GAC1B,GAAI5Y,GAAQ4Y,KAiBZ,OAbKJ,GAAMta,SACVsa,EAAOxf,KAAKkE,SAAY8C,EAMxBT,OAAOsZ,eAAgBL,EAAOxf,KAAKkE,SAClC8C,MAAOA,EACP8Y,UAAU,EACVC,cAAc,IAGTP,EAAOxf,KAAKkE,UAEpBsJ,MAAO,SAAUgS,GAKhB,IAAMD,EAAYC,GACjB,QAID,IAAIxY,GAAQwY,EAAOxf,KAAKkE,QA4BxB,OAzBM8C,KACLA,KAKKuY,EAAYC,KAIXA,EAAMta,SACVsa,EAAOxf,KAAKkE,SAAY8C,EAMxBT,OAAOsZ,eAAgBL,EAAOxf,KAAKkE,SAClC8C,MAAOA,EACP+Y,cAAc,MAMX/Y,GAERgZ,IAAK,SAAUR,EAAOS,EAAMjZ,GAC3B,GAAIkZ,GACH1S,EAAQxN,KAAKwN,MAAOgS,EAGrB,IAAqB,gBAATS,GACXzS,EAAOyS,GAASjZ,MAMhB,KAAMkZ,IAAQD,GACbzS,EAAO0S,GAASD,EAAMC,EAGxB,OAAO1S,IAERzL,IAAK,SAAUyd,EAAOva,GACrB,MAAehB,UAARgB,EACNjF,KAAKwN,MAAOgS,GACZA,EAAOxf,KAAKkE,UAAasb,EAAOxf,KAAKkE,SAAWe,IAElDia,OAAQ,SAAUM,EAAOva,EAAK+B,GAC7B,GAAImZ,EAaJ,OAAalc,UAARgB,GACCA,GAAsB,gBAARA,IAAgChB,SAAV+C,GAEzCmZ,EAASngB,KAAK+B,IAAKyd,EAAOva,GAERhB,SAAXkc,EACNA,EAASngB,KAAK+B,IAAKyd,EAAO3e,EAAOmF,UAAWf,MAS9CjF,KAAKggB,IAAKR,EAAOva,EAAK+B,GAIL/C,SAAV+C,EAAsBA,EAAQ/B,IAEtCmX,OAAQ,SAAUoD,EAAOva,GACxB,GAAIvC,GAAGa,EAAM6c,EACZ5S,EAAQgS,EAAOxf,KAAKkE,QAErB,IAAeD,SAAVuJ,EAAL,CAIA,GAAavJ,SAARgB,EACJjF,KAAK2f,SAAUH,OAET,CAGD3e,EAAOmD,QAASiB,GAQpB1B,EAAO0B,EAAI7E,OAAQ6E,EAAIzC,IAAK3B,EAAOmF,aAEnCoa,EAAQvf,EAAOmF,UAAWf,GAGrBA,IAAOuI,GACXjK,GAAS0B,EAAKmb,IAKd7c,EAAO6c,EACP7c,EAAOA,IAAQiK,IACZjK,GAAWA,EAAK4I,MAAOmP,SAI5B5Y,EAAIa,EAAK3B,MAET,OAAQc,UACA8K,GAAOjK,EAAMb,KAKTuB,SAARgB,GAAqBpE,EAAOsE,cAAeqI,MAM1CgS,EAAMta,SACVsa,EAAOxf,KAAKkE,SAAYD,aAEjBub,GAAOxf,KAAKkE,YAItBmc,QAAS,SAAUb,GAClB,GAAIhS,GAAQgS,EAAOxf,KAAKkE,QACxB,OAAiBD,UAAVuJ,IAAwB3M,EAAOsE,cAAeqI,IAGvD,IAAI8S,GAAW,GAAIb,GAEfc,EAAW,GAAId,GAcfe,EAAS,gCACZC,EAAa,QAEd,SAASC,GAAUje,EAAMwC,EAAKgb,GAC7B,GAAI1c,EAIJ,IAAcU,SAATgc,GAAwC,IAAlBxd,EAAKyC,SAI/B,GAHA3B,EAAO,QAAU0B,EAAIZ,QAASoc,EAAY,OAAQta,cAClD8Z,EAAOxd,EAAKsK,aAAcxJ,GAEL,gBAAT0c,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAGjBA,EAAO,KAAOA,GAAQA,EACvBO,EAAO1T,KAAMmT,GAASpf,EAAO8f,UAAWV,GACxCA;CACA,MAAQpU,IAGV0U,EAASP,IAAKvd,EAAMwC,EAAKgb,OAEzBA,GAAOhc,MAGT,OAAOgc,GAGRpf,EAAOwC,QACNgd,QAAS,SAAU5d,GAClB,MAAO8d,GAASF,QAAS5d,IAAU6d,EAASD,QAAS5d,IAGtDwd,KAAM,SAAUxd,EAAMc,EAAM0c,GAC3B,MAAOM,GAASrB,OAAQzc,EAAMc,EAAM0c,IAGrCW,WAAY,SAAUne,EAAMc,GAC3Bgd,EAASnE,OAAQ3Z,EAAMc,IAKxBsd,MAAO,SAAUpe,EAAMc,EAAM0c,GAC5B,MAAOK,GAASpB,OAAQzc,EAAMc,EAAM0c,IAGrCa,YAAa,SAAUre,EAAMc,GAC5B+c,EAASlE,OAAQ3Z,EAAMc,MAIzB1C,EAAOG,GAAGqC,QACT4c,KAAM,SAAUhb,EAAK+B,GACpB,GAAItE,GAAGa,EAAM0c,EACZxd,EAAOzC,KAAM,GACb+N,EAAQtL,GAAQA,EAAKkH,UAGtB,IAAa1F,SAARgB,EAAoB,CACxB,GAAKjF,KAAK4B,SACTqe,EAAOM,EAASxe,IAAKU,GAEE,IAAlBA,EAAKyC,WAAmBob,EAASve,IAAKU,EAAM,iBAAmB,CACnEC,EAAIqL,EAAMnM,MACV,OAAQc,IAIFqL,EAAOrL,KACXa,EAAOwK,EAAOrL,GAAIa,KACe,IAA5BA,EAAKjD,QAAS,WAClBiD,EAAO1C,EAAOmF,UAAWzC,EAAKpD,MAAO,IACrCugB,EAAUje,EAAMc,EAAM0c,EAAM1c,KAI/B+c,GAASN,IAAKvd,EAAM,gBAAgB,GAItC,MAAOwd,GAIR,MAAoB,gBAARhb,GACJjF,KAAKsC,KAAM,WACjBie,EAASP,IAAKhgB,KAAMiF,KAIfia,EAAQlf,KAAM,SAAUgH,GAC9B,GAAIiZ,GAAMc,CAOV,IAAKte,GAAkBwB,SAAV+C,EAAb,CAUC,GANAiZ,EAAOM,EAASxe,IAAKU,EAAMwC,IAI1Bsb,EAASxe,IAAKU,EAAMwC,EAAIZ,QAASoc,EAAY,OAAQta,eAExClC,SAATgc,EACJ,MAAOA,EAQR,IALAc,EAAWlgB,EAAOmF,UAAWf,GAI7Bgb,EAAOM,EAASxe,IAAKU,EAAMse,GACb9c,SAATgc,EACJ,MAAOA,EAMR,IADAA,EAAOS,EAAUje,EAAMse,EAAU9c,QACnBA,SAATgc,EACJ,MAAOA,OAQTc,GAAWlgB,EAAOmF,UAAWf,GAC7BjF,KAAKsC,KAAM,WAIV,GAAI2d,GAAOM,EAASxe,IAAK/B,KAAM+gB,EAK/BR,GAASP,IAAKhgB,KAAM+gB,EAAU/Z,GAKzB/B,EAAI3E,QAAS,KAAQ,IAAe2D,SAATgc,GAC/BM,EAASP,IAAKhgB,KAAMiF,EAAK+B,MAGzB,KAAMA,EAAOpE,UAAUhB,OAAS,EAAG,MAAM,IAG7Cgf,WAAY,SAAU3b,GACrB,MAAOjF,MAAKsC,KAAM,WACjBie,EAASnE,OAAQpc,KAAMiF,QAM1BpE,EAAOwC,QACN0Y,MAAO,SAAUtZ,EAAMkC,EAAMsb,GAC5B,GAAIlE,EAEJ,OAAKtZ,IACJkC,GAASA,GAAQ,MAAS,QAC1BoX,EAAQuE,EAASve,IAAKU,EAAMkC,GAGvBsb,KACElE,GAASlb,EAAOmD,QAASic,GAC9BlE,EAAQuE,EAASpB,OAAQzc,EAAMkC,EAAM9D,EAAOwF,UAAW4Z,IAEvDlE,EAAM1b,KAAM4f,IAGPlE,OAZR,QAgBDiF,QAAS,SAAUve,EAAMkC,GACxBA,EAAOA,GAAQ,IAEf,IAAIoX,GAAQlb,EAAOkb,MAAOtZ,EAAMkC,GAC/Bsc,EAAclF,EAAMna,OACpBZ,EAAK+a,EAAMrO,QACXwT,EAAQrgB,EAAOsgB,YAAa1e,EAAMkC,GAClCyV,EAAO,WACNvZ,EAAOmgB,QAASve,EAAMkC,GAIZ,gBAAP3D,IACJA,EAAK+a,EAAMrO,QACXuT,KAGIjgB,IAIU,OAAT2D,GACJoX,EAAMjL,QAAS,oBAIToQ,GAAME,KACbpgB,EAAGc,KAAMW,EAAM2X,EAAM8G,KAGhBD,GAAeC,GACpBA,EAAMnM,MAAMkH,QAKdkF,YAAa,SAAU1e,EAAMkC,GAC5B,GAAIM,GAAMN,EAAO,YACjB,OAAO2b,GAASve,IAAKU,EAAMwC,IAASqb,EAASpB,OAAQzc,EAAMwC,GAC1D8P,MAAOlU,EAAO6a,UAAW,eAAgBd,IAAK,WAC7C0F,EAASlE,OAAQ3Z,GAAQkC,EAAO,QAASM,WAM7CpE,EAAOG,GAAGqC,QACT0Y,MAAO,SAAUpX,EAAMsb,GACtB,GAAIoB,GAAS,CAQb,OANqB,gBAAT1c,KACXsb,EAAOtb,EACPA,EAAO,KACP0c,KAGIze,UAAUhB,OAASyf,EAChBxgB,EAAOkb,MAAO/b,KAAM,GAAK2E,GAGjBV,SAATgc,EACNjgB,KACAA,KAAKsC,KAAM,WACV,GAAIyZ,GAAQlb,EAAOkb,MAAO/b,KAAM2E,EAAMsb,EAGtCpf,GAAOsgB,YAAanhB,KAAM2E,GAEZ,OAATA,GAAgC,eAAfoX,EAAO,IAC5Blb,EAAOmgB,QAAShhB,KAAM2E,MAI1Bqc,QAAS,SAAUrc,GAClB,MAAO3E,MAAKsC,KAAM,WACjBzB,EAAOmgB,QAAShhB,KAAM2E,MAGxB2c,WAAY,SAAU3c,GACrB,MAAO3E,MAAK+b,MAAOpX,GAAQ,UAK5BiY,QAAS,SAAUjY,EAAMD,GACxB,GAAIyC,GACHoa,EAAQ,EACRC,EAAQ3gB,EAAO2b,WACfxL,EAAWhR,KACX0C,EAAI1C,KAAK4B,OACT2b,EAAU,aACCgE,GACTC,EAAMrD,YAAanN,GAAYA,IAIb,iBAATrM,KACXD,EAAMC,EACNA,EAAOV,QAERU,EAAOA,GAAQ,IAEf,OAAQjC,IACPyE,EAAMmZ,EAASve,IAAKiP,EAAUtO,GAAKiC,EAAO,cACrCwC,GAAOA,EAAI4N,QACfwM,IACApa,EAAI4N,MAAM6F,IAAK2C,GAIjB,OADAA,KACOiE,EAAM5E,QAASlY,KAGxB,IAAI+c,GAAO,sCAA0CC,OAEjDC,EAAU,GAAI7X,QAAQ,iBAAmB2X,EAAO,cAAe,KAG/DG,GAAc,MAAO,QAAS,SAAU,QAExCC,EAAW,SAAUpf,EAAMqf,GAK7B,MADArf,GAAOqf,GAAMrf,EAC4B,SAAlC5B,EAAOkhB,IAAKtf,EAAM,aACvB5B,EAAO4H,SAAUhG,EAAK8J,cAAe9J,GAKzC,SAASuf,GAAWvf,EAAMyd,EAAM+B,EAAYC,GAC3C,GAAIC,GACHC,EAAQ,EACRC,EAAgB,GAChBC,EAAeJ,EACd,WAAa,MAAOA,GAAM/T,OAC1B,WAAa,MAAOtN,GAAOkhB,IAAKtf,EAAMyd,EAAM,KAC7CN,EAAU0C,IACVC,EAAON,GAAcA,EAAY,KAASphB,EAAO2hB,UAAWtC,GAAS,GAAK,MAG1EuC,GAAkB5hB,EAAO2hB,UAAWtC,IAAmB,OAATqC,IAAkB3C,IAC/D+B,EAAQnV,KAAM3L,EAAOkhB,IAAKtf,EAAMyd,GAElC,IAAKuC,GAAiBA,EAAe,KAAQF,EAAO,CAGnDA,EAAOA,GAAQE,EAAe,GAG9BR,EAAaA,MAGbQ,GAAiB7C,GAAW,CAE5B,GAICwC,GAAQA,GAAS,KAGjBK,GAAgCL,EAChCvhB,EAAO6hB,MAAOjgB,EAAMyd,EAAMuC,EAAgBF,SAK1CH,KAAYA,EAAQE,IAAiB1C,IAAuB,IAAVwC,KAAiBC,GAiBrE,MAbKJ,KACJQ,GAAiBA,IAAkB7C,GAAW,EAG9CuC,EAAWF,EAAY,GACtBQ,GAAkBR,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMK,KAAOA,EACbL,EAAM/O,MAAQsP,EACdP,EAAMhf,IAAMif,IAGPA,EAER,GAAIQ,GAAiB,wBAEjBC,EAAW,aAEXC,EAAc,4BAKdC,GAGHC,QAAU,EAAG,+BAAgC,aAK7CC,OAAS,EAAG,UAAW,YACvBC,KAAO,EAAG,oBAAqB,uBAC/BC,IAAM,EAAG,iBAAkB,oBAC3BC,IAAM,EAAG,qBAAsB,yBAE/BC,UAAY,EAAG,GAAI,IAIpBN,GAAQO,SAAWP,EAAQC,OAE3BD,EAAQQ,MAAQR,EAAQS,MAAQT,EAAQU,SAAWV,EAAQW,QAAUX,EAAQE,MAC7EF,EAAQY,GAAKZ,EAAQK,EAGrB,SAASQ,GAAQ5iB,EAAS8O,GAIzB,GAAI1N,GAA8C,mBAAjCpB,GAAQ4L,qBACvB5L,EAAQ4L,qBAAsBkD,GAAO,KACD,mBAA7B9O,GAAQqM,iBACdrM,EAAQqM,iBAAkByC,GAAO,OAGpC,OAAe5L,UAAR4L,GAAqBA,GAAOhP,EAAOqF,SAAUnF,EAAS8O,GAC5DhP,EAAOuB,OAASrB,GAAWoB,GAC3BA,EAKF,QAASyhB,IAAe1hB,EAAO2hB,GAI9B,IAHA,GAAInhB,GAAI,EACP6X,EAAIrY,EAAMN,OAEC2Y,EAAJ7X,EAAOA,IACd4d,EAASN,IACR9d,EAAOQ,GACP,cACCmhB,GAAevD,EAASve,IAAK8hB,EAAanhB,GAAK,eAMnD,GAAIohB,IAAQ,WAEZ,SAASC,IAAe7hB,EAAOnB,EAASijB,EAASC,EAAWC,GAO3D,IANA,GAAIzhB,GAAM0E,EAAK0I,EAAKsU,EAAM1b,EAAUxF,EACnCmhB,EAAWrjB,EAAQsjB,yBACnBC,KACA5hB,EAAI,EACJ6X,EAAIrY,EAAMN,OAEC2Y,EAAJ7X,EAAOA,IAGd,GAFAD,EAAOP,EAAOQ,GAETD,GAAiB,IAATA,EAGZ,GAA6B,WAAxB5B,EAAO8D,KAAMlC,GAIjB5B,EAAOuB,MAAOkiB,EAAO7hB,EAAKyC,UAAazC,GAASA,OAG1C,IAAMqhB,GAAMhX,KAAMrK,GAIlB,CACN0E,EAAMA,GAAOid,EAASve,YAAa9E,EAAQ2E,cAAe,QAG1DmK,GAAQ+S,EAASpW,KAAM/J,KAAY,GAAI,KAAQ,GAAI0D,cACnDge,EAAOrB,EAASjT,IAASiT,EAAQM,SACjCjc,EAAI2I,UAAYqU,EAAM,GAAMtjB,EAAO0jB,cAAe9hB,GAAS0hB,EAAM,GAGjElhB,EAAIkhB,EAAM,EACV,OAAQlhB,IACPkE,EAAMA,EAAIkM,SAKXxS,GAAOuB,MAAOkiB,EAAOnd,EAAIyE,YAGzBzE,EAAMid,EAAS3S,WAGftK,EAAIqK,YAAc,OAzBlB8S,GAAMjkB,KAAMU,EAAQyjB,eAAgB/hB,GA+BvC2hB,GAAS5S,YAAc,GAEvB9O,EAAI,CACJ,OAAUD,EAAO6hB,EAAO5hB,KAGvB,GAAKuhB,GAAapjB,EAAO2F,QAAS/D,EAAMwhB,GAAc,GAChDC,GACJA,EAAQ7jB,KAAMoC,OAgBhB,IAXAgG,EAAW5H,EAAO4H,SAAUhG,EAAK8J,cAAe9J,GAGhD0E,EAAMwc,EAAQS,EAASve,YAAapD,GAAQ,UAGvCgG,GACJmb,GAAezc,GAIX6c,EAAU,CACd/gB,EAAI,CACJ,OAAUR,EAAO0E,EAAKlE,KAChB4f,EAAY/V,KAAMrK,EAAKkC,MAAQ,KACnCqf,EAAQ3jB,KAAMoC,GAMlB,MAAO2hB,IAIR,WACC,GAAIA,GAAWxkB,EAASykB,yBACvBxW,EAAMuW,EAASve,YAAajG,EAAS8F,cAAe,QACpDqK,EAAQnQ,EAAS8F,cAAe,QAMjCqK,GAAM/C,aAAc,OAAQ,SAC5B+C,EAAM/C,aAAc,UAAW,WAC/B+C,EAAM/C,aAAc,OAAQ,KAE5Ba,EAAIhI,YAAakK,GAIjBpP,EAAQ8jB,WAAa5W,EAAI6W,WAAW,GAAOA,WAAW,GAAOrR,UAAUuB,QAIvE/G,EAAIiC,UAAY,yBAChBnP,EAAQgkB,iBAAmB9W,EAAI6W,WAAW,GAAOrR,UAAU0F,eAI5D,IACC6L,IAAY,OACZC,GAAc,iDACdC,GAAiB,qBAElB,SAASC,MACR,OAAO,EAGR,QAASC,MACR,OAAO,EAKR,QAASC,MACR,IACC,MAAOrlB,GAAS0U,cACf,MAAQ4Q,KAGX,QAASC,IAAI1iB,EAAM2iB,EAAOtkB,EAAUmf,EAAMjf,EAAIqkB,GAC7C,GAAIC,GAAQ3gB,CAGZ,IAAsB,gBAAVygB,GAAqB,CAGP,gBAAbtkB,KAGXmf,EAAOA,GAAQnf,EACfA,EAAWmD,OAEZ,KAAMU,IAAQygB,GACbD,GAAI1iB,EAAMkC,EAAM7D,EAAUmf,EAAMmF,EAAOzgB,GAAQ0gB,EAEhD,OAAO5iB,GAsBR,GAnBa,MAARwd,GAAsB,MAANjf,GAGpBA,EAAKF,EACLmf,EAAOnf,EAAWmD,QACD,MAANjD,IACc,gBAAbF,IAGXE,EAAKif,EACLA,EAAOhc,SAIPjD,EAAKif,EACLA,EAAOnf,EACPA,EAAWmD,SAGRjD,KAAO,EACXA,EAAKgkB,OACC,KAAMhkB,EACZ,MAAOyB,EAeR,OAZa,KAAR4iB,IACJC,EAAStkB,EACTA,EAAK,SAAUukB,GAId,MADA1kB,KAAS+d,IAAK2G,GACPD,EAAO3iB,MAAO3C,KAAM4C,YAI5B5B,EAAGiG,KAAOqe,EAAOre,OAAUqe,EAAOre,KAAOpG,EAAOoG,SAE1CxE,EAAKH,KAAM,WACjBzB,EAAO0kB,MAAM3K,IAAK5a,KAAMolB,EAAOpkB,EAAIif,EAAMnf,KAQ3CD,EAAO0kB,OAEN/lB,UAEAob,IAAK,SAAUnY,EAAM2iB,EAAOpX,EAASiS,EAAMnf,GAE1C,GAAI0kB,GAAaC,EAAate,EAC7Bue,EAAQC,EAAGC,EACXC,EAASC,EAAUnhB,EAAMohB,EAAYC,EACrCC,EAAW3F,EAASve,IAAKU,EAG1B,IAAMwjB,EAAN,CAKKjY,EAAQA,UACZwX,EAAcxX,EACdA,EAAUwX,EAAYxX,QACtBlN,EAAW0kB,EAAY1kB,UAIlBkN,EAAQ/G,OACb+G,EAAQ/G,KAAOpG,EAAOoG,SAIfye,EAASO,EAASP,UACzBA,EAASO,EAASP,YAEXD,EAAcQ,EAASC,UAC9BT,EAAcQ,EAASC,OAAS,SAAUra,GAIzC,MAAyB,mBAAXhL,IAA0BA,EAAO0kB,MAAMY,YAActa,EAAElH,KACpE9D,EAAO0kB,MAAMa,SAASzjB,MAAOF,EAAMG,WAAcqB,SAKpDmhB,GAAUA,GAAS,IAAKjZ,MAAOmP,KAAiB,IAChDqK,EAAIP,EAAMxjB,MACV,OAAQ+jB,IACPxe,EAAM2d,GAAetY,KAAM4Y,EAAOO,QAClChhB,EAAOqhB,EAAW7e,EAAK,GACvB4e,GAAe5e,EAAK,IAAO,IAAKM,MAAO,KAAMtE,OAGvCwB,IAKNkhB,EAAUhlB,EAAO0kB,MAAMM,QAASlhB,OAGhCA,GAAS7D,EAAW+kB,EAAQQ,aAAeR,EAAQS,WAAc3hB,EAGjEkhB,EAAUhlB,EAAO0kB,MAAMM,QAASlhB,OAGhCihB,EAAY/kB,EAAOwC,QAClBsB,KAAMA,EACNqhB,SAAUA,EACV/F,KAAMA,EACNjS,QAASA,EACT/G,KAAM+G,EAAQ/G,KACdnG,SAAUA,EACV8J,aAAc9J,GAAYD,EAAOkQ,KAAK5E,MAAMvB,aAAakC,KAAMhM,GAC/DylB,UAAWR,EAAW7Y,KAAM,MAC1BsY,IAGKM,EAAWJ,EAAQ/gB,MAC1BmhB,EAAWJ,EAAQ/gB,MACnBmhB,EAASU,cAAgB,EAGnBX,EAAQY,OACbZ,EAAQY,MAAM3kB,KAAMW,EAAMwd,EAAM8F,EAAYN,MAAkB,GAEzDhjB,EAAK0M,kBACT1M,EAAK0M,iBAAkBxK,EAAM8gB,IAK3BI,EAAQjL,MACZiL,EAAQjL,IAAI9Y,KAAMW,EAAMmjB,GAElBA,EAAU5X,QAAQ/G,OACvB2e,EAAU5X,QAAQ/G,KAAO+G,EAAQ/G,OAK9BnG,EACJglB,EAAS1iB,OAAQ0iB,EAASU,gBAAiB,EAAGZ,GAE9CE,EAASzlB,KAAMulB,GAIhB/kB,EAAO0kB,MAAM/lB,OAAQmF,IAAS,KAMhCyX,OAAQ,SAAU3Z,EAAM2iB,EAAOpX,EAASlN,EAAU4lB,GAEjD,GAAIzjB,GAAG0jB,EAAWxf,EACjBue,EAAQC,EAAGC,EACXC,EAASC,EAAUnhB,EAAMohB,EAAYC,EACrCC,EAAW3F,EAASD,QAAS5d,IAAU6d,EAASve,IAAKU,EAEtD,IAAMwjB,IAAeP,EAASO,EAASP,QAAvC,CAKAN,GAAUA,GAAS,IAAKjZ,MAAOmP,KAAiB,IAChDqK,EAAIP,EAAMxjB,MACV,OAAQ+jB,IAMP,GALAxe,EAAM2d,GAAetY,KAAM4Y,EAAOO,QAClChhB,EAAOqhB,EAAW7e,EAAK,GACvB4e,GAAe5e,EAAK,IAAO,IAAKM,MAAO,KAAMtE,OAGvCwB,EAAN,CAOAkhB,EAAUhlB,EAAO0kB,MAAMM,QAASlhB,OAChCA,GAAS7D,EAAW+kB,EAAQQ,aAAeR,EAAQS,WAAc3hB,EACjEmhB,EAAWJ,EAAQ/gB,OACnBwC,EAAMA,EAAK,IACV,GAAI2C,QAAQ,UAAYic,EAAW7Y,KAAM,iBAAoB,WAG9DyZ,EAAY1jB,EAAI6iB,EAASlkB,MACzB,OAAQqB,IACP2iB,EAAYE,EAAU7iB,IAEfyjB,GAAeV,IAAaJ,EAAUI,UACzChY,GAAWA,EAAQ/G,OAAS2e,EAAU3e,MACtCE,IAAOA,EAAI2F,KAAM8Y,EAAUW,YAC3BzlB,GAAYA,IAAa8kB,EAAU9kB,WACxB,OAAbA,IAAqB8kB,EAAU9kB,YAChCglB,EAAS1iB,OAAQH,EAAG,GAEf2iB,EAAU9kB,UACdglB,EAASU,gBAELX,EAAQzJ,QACZyJ,EAAQzJ,OAAOta,KAAMW,EAAMmjB,GAOzBe,KAAcb,EAASlkB,SACrBikB,EAAQe,UACbf,EAAQe,SAAS9kB,KAAMW,EAAMsjB,EAAYE,EAASC,WAAa,GAE/DrlB,EAAOgmB,YAAapkB,EAAMkC,EAAMshB,EAASC,cAGnCR,GAAQ/gB,QA1Cf,KAAMA,IAAQ+gB,GACb7kB,EAAO0kB,MAAMnJ,OAAQ3Z,EAAMkC,EAAOygB,EAAOO,GAAK3X,EAASlN,GAAU,EA8C/DD,GAAOsE,cAAeugB,IAC1BpF,EAASlE,OAAQ3Z,EAAM,mBAIzB2jB,SAAU,SAAUb,GAGnBA,EAAQ1kB,EAAO0kB,MAAMuB,IAAKvB,EAE1B,IAAI7iB,GAAGO,EAAGd,EAAKuR,EAASkS,EACvBmB,KACA3f,EAAOjH,EAAM2B,KAAMc,WACnBkjB,GAAaxF,EAASve,IAAK/B,KAAM,eAAoBulB,EAAM5gB,UAC3DkhB,EAAUhlB,EAAO0kB,MAAMM,QAASN,EAAM5gB,SAOvC,IAJAyC,EAAM,GAAMme,EACZA,EAAMyB,eAAiBhnB,MAGlB6lB,EAAQoB,aAAepB,EAAQoB,YAAYnlB,KAAM9B,KAAMulB,MAAY,EAAxE,CAKAwB,EAAelmB,EAAO0kB,MAAMO,SAAShkB,KAAM9B,KAAMulB,EAAOO,GAGxDpjB,EAAI,CACJ,QAAUgR,EAAUqT,EAAcrkB,QAAY6iB,EAAM2B,uBAAyB,CAC5E3B,EAAM4B,cAAgBzT,EAAQjR,KAE9BQ,EAAI,CACJ,QAAU2iB,EAAYlS,EAAQoS,SAAU7iB,QACtCsiB,EAAM6B,gCAID7B,EAAM8B,aAAc9B,EAAM8B,WAAWva,KAAM8Y,EAAUW,aAE1DhB,EAAMK,UAAYA,EAClBL,EAAMtF,KAAO2F,EAAU3F,KAEvB9d,IAAUtB,EAAO0kB,MAAMM,QAASD,EAAUI,eAAmBE,QAC5DN,EAAU5X,SAAUrL,MAAO+Q,EAAQjR,KAAM2E,GAE7BnD,SAAR9B,IACGojB,EAAM7S,OAASvQ,MAAU,IAC/BojB,EAAM+B,iBACN/B,EAAMgC,oBAYX,MAJK1B,GAAQ2B,cACZ3B,EAAQ2B,aAAa1lB,KAAM9B,KAAMulB,GAG3BA,EAAM7S,SAGdoT,SAAU,SAAUP,EAAOO,GAC1B,GAAIpjB,GAAGmE,EAAS4gB,EAAK7B,EACpBmB,KACAP,EAAgBV,EAASU,cACzBrY,EAAMoX,EAAM3hB,MAQb,IAAK4iB,GAAiBrY,EAAIjJ,WACR,UAAfqgB,EAAM5gB,MAAoB+iB,MAAOnC,EAAMtQ,SAAYsQ,EAAMtQ,OAAS,GAEpE,KAAQ9G,IAAQnO,KAAMmO,EAAMA,EAAIrI,YAAc9F,KAI7C,GAAsB,IAAjBmO,EAAIjJ,WAAoBiJ,EAAIwG,YAAa,GAAuB,UAAf4Q,EAAM5gB,MAAqB,CAEhF,IADAkC,KACMnE,EAAI,EAAO8jB,EAAJ9jB,EAAmBA,IAC/BkjB,EAAYE,EAAUpjB,GAGtB+kB,EAAM7B,EAAU9kB,SAAW,IAEHmD,SAAnB4C,EAAS4gB,KACb5gB,EAAS4gB,GAAQ7B,EAAUhb,aAC1B/J,EAAQ4mB,EAAKznB,MAAO0a,MAAOvM,GAAQ,GACnCtN,EAAO4O,KAAMgY,EAAKznB,KAAM,MAAQmO,IAAQvM,QAErCiF,EAAS4gB,IACb5gB,EAAQxG,KAAMulB,EAGX/e,GAAQjF,QACZmlB,EAAa1mB,MAAQoC,KAAM0L,EAAK2X,SAAUjf,IAW9C,MAJK2f,GAAgBV,EAASlkB,QAC7BmlB,EAAa1mB,MAAQoC,KAAMzC,KAAM8lB,SAAUA,EAAS3lB,MAAOqmB,KAGrDO,GAIRY,MAAO,+HACyDlgB,MAAO,KAEvEmgB,YAEAC,UACCF,MAAO,4BAA4BlgB,MAAO,KAC1CiI,OAAQ,SAAU6V,EAAOuC,GAOxB,MAJoB,OAAfvC,EAAMwC,QACVxC,EAAMwC,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAASG,SAGjE1C,IAIT2C,YACCP,MAAO,uFACwBlgB,MAAO,KACtCiI,OAAQ,SAAU6V,EAAOuC,GACxB,GAAIK,GAAUnZ,EAAKoZ,EAClBnT,EAAS6S,EAAS7S,MAsBnB,OAnBoB,OAAfsQ,EAAM8C,OAAqC,MAApBP,EAASQ,UACpCH,EAAW5C,EAAM3hB,OAAO2I,eAAiB3M,EACzCoP,EAAMmZ,EAASvZ,gBACfwZ,EAAOD,EAASC,KAEhB7C,EAAM8C,MAAQP,EAASQ,SACpBtZ,GAAOA,EAAIuZ,YAAcH,GAAQA,EAAKG,YAAc,IACpDvZ,GAAOA,EAAIwZ,YAAcJ,GAAQA,EAAKI,YAAc,GACvDjD,EAAMkD,MAAQX,EAASY,SACpB1Z,GAAOA,EAAI2Z,WAAcP,GAAQA,EAAKO,WAAc,IACpD3Z,GAAOA,EAAI4Z,WAAcR,GAAQA,EAAKQ,WAAc,IAKlDrD,EAAMwC,OAAoB9jB,SAAXgR,IACpBsQ,EAAMwC,MAAmB,EAAT9S,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjEsQ,IAITuB,IAAK,SAAUvB,GACd,GAAKA,EAAO1kB,EAAOqD,SAClB,MAAOqhB,EAIR,IAAI7iB,GAAGwd,EAAMzc,EACZkB,EAAO4gB,EAAM5gB,KACbkkB,EAAgBtD,EAChBuD,EAAU9oB,KAAK4nB,SAAUjjB,EAEpBmkB,KACL9oB,KAAK4nB,SAAUjjB,GAASmkB,EACvBjE,GAAY/X,KAAMnI,GAAS3E,KAAKkoB,WAChCtD,GAAU9X,KAAMnI,GAAS3E,KAAK6nB,aAGhCpkB,EAAOqlB,EAAQnB,MAAQ3nB,KAAK2nB,MAAMvnB,OAAQ0oB,EAAQnB,OAAU3nB,KAAK2nB,MAEjEpC,EAAQ,GAAI1kB,GAAOkoB,MAAOF,GAE1BnmB,EAAIe,EAAK7B,MACT,OAAQc,IACPwd,EAAOzc,EAAMf,GACb6iB,EAAOrF,GAAS2I,EAAe3I,EAehC,OAVMqF,GAAM3hB,SACX2hB,EAAM3hB,OAAShE,GAKe,IAA1B2lB,EAAM3hB,OAAOsB,WACjBqgB,EAAM3hB,OAAS2hB,EAAM3hB,OAAOkC,YAGtBgjB,EAAQpZ,OAASoZ,EAAQpZ,OAAQ6V,EAAOsD,GAAkBtD,GAGlEM,SACCmD,MAGCC,UAAU,GAEX5U,OAGC6U,QAAS,WACR,MAAKlpB,QAASilB,MAAuBjlB,KAAKqU,OACzCrU,KAAKqU,SACE,GAFR,QAKDgS,aAAc,WAEf8C,MACCD,QAAS,WACR,MAAKlpB,QAASilB,MAAuBjlB,KAAKmpB,MACzCnpB,KAAKmpB,QACE,GAFR,QAKD9C,aAAc,YAEf+C,OAGCF,QAAS,WACR,MAAmB,aAAdlpB,KAAK2E,MAAuB3E,KAAKopB,OAASvoB,EAAOqF,SAAUlG,KAAM,UACrEA,KAAKopB,SACE,GAFR,QAODhG,SAAU,SAAUmC,GACnB,MAAO1kB,GAAOqF,SAAUqf,EAAM3hB,OAAQ,OAIxCylB,cACC7B,aAAc,SAAUjC,GAIDthB,SAAjBshB,EAAM7S,QAAwB6S,EAAMsD,gBACxCtD,EAAMsD,cAAcS,YAAc/D,EAAM7S,YAO7C7R,EAAOgmB,YAAc,SAAUpkB,EAAMkC,EAAMuhB,GAGrCzjB,EAAKqc,qBACTrc,EAAKqc,oBAAqBna,EAAMuhB,IAIlCrlB,EAAOkoB,MAAQ,SAAUvlB,EAAKmkB,GAG7B,MAAQ3nB,gBAAgBa,GAAOkoB,OAK1BvlB,GAAOA,EAAImB,MACf3E,KAAK6oB,cAAgBrlB,EACrBxD,KAAK2E,KAAOnB,EAAImB,KAIhB3E,KAAKupB,mBAAqB/lB,EAAIgmB,kBACHvlB,SAAzBT,EAAIgmB,kBAGJhmB,EAAI8lB,eAAgB,EACrBvE,GACAC,IAIDhlB,KAAK2E,KAAOnB,EAIRmkB,GACJ9mB,EAAOwC,OAAQrD,KAAM2nB,GAItB3nB,KAAKypB,UAAYjmB,GAAOA,EAAIimB,WAAa5oB,EAAOwG,WAGhDrH,KAAMa,EAAOqD,UAAY,IAhCjB,GAAIrD,GAAOkoB,MAAOvlB,EAAKmkB,IAqChC9mB,EAAOkoB,MAAMtnB,WACZE,YAAad,EAAOkoB,MACpBQ,mBAAoBvE,GACpBkC,qBAAsBlC,GACtBoC,8BAA+BpC,GAC/B0E,aAAa,EAEbpC,eAAgB,WACf,GAAIzb,GAAI7L,KAAK6oB,aAEb7oB,MAAKupB,mBAAqBxE,GAErBlZ,IAAM7L,KAAK0pB,aACf7d,EAAEyb,kBAGJC,gBAAiB,WAChB,GAAI1b,GAAI7L,KAAK6oB,aAEb7oB,MAAKknB,qBAAuBnC,GAEvBlZ,IAAM7L,KAAK0pB,aACf7d,EAAE0b,mBAGJoC,yBAA0B,WACzB,GAAI9d,GAAI7L,KAAK6oB,aAEb7oB,MAAKonB,8BAAgCrC,GAEhClZ,IAAM7L,KAAK0pB,aACf7d,EAAE8d,2BAGH3pB,KAAKunB,oBAYP1mB,EAAOyB,MACNsnB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUC,EAAMlD,GAClBjmB,EAAO0kB,MAAMM,QAASmE,IACrB3D,aAAcS,EACdR,SAAUQ,EAEVZ,OAAQ,SAAUX,GACjB,GAAIpjB,GACHyB,EAAS5D,KACTiqB,EAAU1E,EAAM2E,cAChBtE,EAAYL,EAAMK,SASnB,OALMqE,KAAaA,IAAYrmB,GAAW/C,EAAO4H,SAAU7E,EAAQqmB,MAClE1E,EAAM5gB,KAAOihB,EAAUI,SACvB7jB,EAAMyjB,EAAU5X,QAAQrL,MAAO3C,KAAM4C,WACrC2iB,EAAM5gB,KAAOmiB,GAEP3kB,MAKVtB,EAAOG,GAAGqC,QACT8hB,GAAI,SAAUC,EAAOtkB,EAAUmf,EAAMjf,GACpC,MAAOmkB,IAAInlB,KAAMolB,EAAOtkB,EAAUmf,EAAMjf,IAEzCqkB,IAAK,SAAUD,EAAOtkB,EAAUmf,EAAMjf,GACrC,MAAOmkB,IAAInlB,KAAMolB,EAAOtkB,EAAUmf,EAAMjf,EAAI,IAE7C4d,IAAK,SAAUwG,EAAOtkB,EAAUE,GAC/B,GAAI4kB,GAAWjhB,CACf,IAAKygB,GAASA,EAAMkC,gBAAkBlC,EAAMQ,UAW3C,MARAA,GAAYR,EAAMQ,UAClB/kB,EAAQukB,EAAM4B,gBAAiBpI,IAC9BgH,EAAUW,UACTX,EAAUI,SAAW,IAAMJ,EAAUW,UACrCX,EAAUI,SACXJ,EAAU9kB,SACV8kB,EAAU5X,SAEJhO,IAER,IAAsB,gBAAVolB,GAAqB,CAGhC,IAAMzgB,IAAQygB,GACbplB,KAAK4e,IAAKja,EAAM7D,EAAUskB,EAAOzgB,GAElC,OAAO3E,MAWR,MATKc,MAAa,GAA6B,kBAAbA,KAGjCE,EAAKF,EACLA,EAAWmD,QAEPjD,KAAO,IACXA,EAAKgkB,IAEChlB,KAAKsC,KAAM,WACjBzB,EAAO0kB,MAAMnJ,OAAQpc,KAAMolB,EAAOpkB,EAAIF,OAMzC,IACCqpB,IAAY,2EAKZC,GAAe,wBAGfC,GAAW,oCACXC,GAAoB,cACpBC,GAAe,0CAGhB,SAASC,IAAoB/nB,EAAMgoB,GAClC,MAAO5pB,GAAOqF,SAAUzD,EAAM,UAC7B5B,EAAOqF,SAA+B,KAArBukB,EAAQvlB,SAAkBulB,EAAUA,EAAQhZ,WAAY,MAEzEhP,EAAKkK,qBAAsB,SAAW,IACrClK,EAAKoD,YAAapD,EAAK8J,cAAc7G,cAAe,UACrDjD,EAIF,QAASioB,IAAejoB,GAEvB,MADAA,GAAKkC,MAAyC,OAAhClC,EAAKsK,aAAc,SAAsB,IAAMtK,EAAKkC,KAC3DlC,EAER,QAASkoB,IAAeloB,GACvB,GAAI0J,GAAQme,GAAkB9d,KAAM/J,EAAKkC,KAQzC,OANKwH,GACJ1J,EAAKkC,KAAOwH,EAAO,GAEnB1J,EAAK6K,gBAAiB,QAGhB7K,EAGR,QAASmoB,IAAgBpnB,EAAKqnB,GAC7B,GAAInoB,GAAG6X,EAAG5V,EAAMmmB,EAAUC,EAAUC,EAAUC,EAAUvF,CAExD,IAAuB,IAAlBmF,EAAK3lB,SAAV,CAKA,GAAKob,EAASD,QAAS7c,KACtBsnB,EAAWxK,EAASpB,OAAQ1b,GAC5BunB,EAAWzK,EAASN,IAAK6K,EAAMC,GAC/BpF,EAASoF,EAASpF,QAEJ,OACNqF,GAAS7E,OAChB6E,EAASrF,SAET,KAAM/gB,IAAQ+gB,GACb,IAAMhjB,EAAI,EAAG6X,EAAImL,EAAQ/gB,GAAO/C,OAAY2Y,EAAJ7X,EAAOA,IAC9C7B,EAAO0kB,MAAM3K,IAAKiQ,EAAMlmB,EAAM+gB,EAAQ/gB,GAAQjC,IAO7C6d,EAASF,QAAS7c,KACtBwnB,EAAWzK,EAASrB,OAAQ1b,GAC5BynB,EAAWpqB,EAAOwC,UAAY2nB,GAE9BzK,EAASP,IAAK6K,EAAMI,KAKtB,QAASC,IAAU1nB,EAAKqnB,GACvB,GAAI3kB,GAAW2kB,EAAK3kB,SAASC,aAGX,WAAbD,GAAwByc,EAAe7V,KAAMtJ,EAAImB,MACrDkmB,EAAKjW,QAAUpR,EAAIoR,QAGK,UAAb1O,GAAqC,aAAbA,IACnC2kB,EAAK9R,aAAevV,EAAIuV,cAI1B,QAASoS,IAAUC,EAAYhkB,EAAM7E,EAAU2hB,GAG9C9c,EAAOhH,EAAOuC,SAAWyE,EAEzB,IAAIgd,GAAUvhB,EAAOmhB,EAASqH,EAAYxc,EAAMG,EAC/CtM,EAAI,EACJ6X,EAAI6Q,EAAWxpB,OACf0pB,EAAW/Q,EAAI,EACfvT,EAAQI,EAAM,GACdtD,EAAajD,EAAOiD,WAAYkD,EAGjC,IAAKlD,GACDyW,EAAI,GAAsB,gBAAVvT,KAChBrG,EAAQ8jB,YAAc4F,GAASvd,KAAM9F,GACxC,MAAOokB,GAAW9oB,KAAM,SAAUoY,GACjC,GAAId,GAAOwR,EAAWtoB,GAAI4X,EACrB5W,KACJsD,EAAM,GAAMJ,EAAMlF,KAAM9B,KAAM0a,EAAOd,EAAK2R,SAE3CJ,GAAUvR,EAAMxS,EAAM7E,EAAU2hB,IAIlC,IAAK3J,IACJ6J,EAAWL,GAAe3c,EAAMgkB,EAAY,GAAI7e,eAAe,EAAO6e,EAAYlH,GAClFrhB,EAAQuhB,EAAS3S,WAEmB,IAA/B2S,EAASxY,WAAWhK,SACxBwiB,EAAWvhB,GAIPA,GAASqhB,GAAU,CAOvB,IANAF,EAAUnjB,EAAO2B,IAAKmhB,EAAQS,EAAU,UAAYsG,IACpDW,EAAarH,EAAQpiB,OAKT2Y,EAAJ7X,EAAOA,IACdmM,EAAOuV,EAEF1hB,IAAM4oB,IACVzc,EAAOhO,EAAO8C,MAAOkL,GAAM,GAAM,GAG5Bwc,GAIJxqB,EAAOuB,MAAO4hB,EAASL,EAAQ9U,EAAM,YAIvCtM,EAAST,KAAMspB,EAAY1oB,GAAKmM,EAAMnM,EAGvC,IAAK2oB,EAOJ,IANArc,EAAMgV,EAASA,EAAQpiB,OAAS,GAAI2K,cAGpC1L,EAAO2B,IAAKwhB,EAAS2G,IAGfjoB,EAAI,EAAO2oB,EAAJ3oB,EAAgBA,IAC5BmM,EAAOmV,EAASthB,GACXmgB,EAAY/V,KAAM+B,EAAKlK,MAAQ,MAClC2b,EAASpB,OAAQrQ,EAAM,eACxBhO,EAAO4H,SAAUuG,EAAKH,KAEjBA,EAAKrL,IAGJ3C,EAAO2qB,UACX3qB,EAAO2qB,SAAU3c,EAAKrL,KAGvB3C,EAAOuE,WAAYyJ,EAAK2C,YAAYnN,QAASkmB,GAAc,MAQjE,MAAOa,GAGR,QAAShP,IAAQ3Z,EAAM3B,EAAU2qB,GAKhC,IAJA,GAAI5c,GACHyV,EAAQxjB,EAAWD,EAAO6O,OAAQ5O,EAAU2B,GAASA,EACrDC,EAAI,EAE4B,OAAvBmM,EAAOyV,EAAO5hB,IAAeA,IAChC+oB,GAA8B,IAAlB5c,EAAK3J,UACtBrE,EAAO6qB,UAAW/H,EAAQ9U,IAGtBA,EAAK/I,aACJ2lB,GAAY5qB,EAAO4H,SAAUoG,EAAKtC,cAAesC,IACrD+U,GAAeD,EAAQ9U,EAAM,WAE9BA,EAAK/I,WAAWC,YAAa8I,GAI/B,OAAOpM,GAGR5B,EAAOwC,QACNkhB,cAAe,SAAUgH,GACxB,MAAOA,GAAKlnB,QAAS8lB,GAAW,cAGjCxmB,MAAO,SAAUlB,EAAMkpB,EAAeC,GACrC,GAAIlpB,GAAG6X,EAAGsR,EAAaC,EACtBnoB,EAAQlB,EAAKiiB,WAAW,GACxBqH,EAASlrB,EAAO4H,SAAUhG,EAAK8J,cAAe9J,EAG/C,MAAM9B,EAAQgkB,gBAAsC,IAAlBliB,EAAKyC,UAAoC,KAAlBzC,EAAKyC,UAC3DrE,EAAOoY,SAAUxW,IAMnB,IAHAqpB,EAAenI,EAAQhgB,GACvBkoB,EAAclI,EAAQlhB,GAEhBC,EAAI,EAAG6X,EAAIsR,EAAYjqB,OAAY2Y,EAAJ7X,EAAOA,IAC3CwoB,GAAUW,EAAanpB,GAAKopB,EAAcppB,GAK5C,IAAKipB,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAelI,EAAQlhB,GACrCqpB,EAAeA,GAAgBnI,EAAQhgB,GAEjCjB,EAAI,EAAG6X,EAAIsR,EAAYjqB,OAAY2Y,EAAJ7X,EAAOA,IAC3CkoB,GAAgBiB,EAAanpB,GAAKopB,EAAcppB,QAGjDkoB,IAAgBnoB,EAAMkB,EAWxB,OANAmoB,GAAenI,EAAQhgB,EAAO,UACzBmoB,EAAalqB,OAAS,GAC1BgiB,GAAekI,GAAeC,GAAUpI,EAAQlhB,EAAM,WAIhDkB,GAGR+nB,UAAW,SAAUxpB,GAKpB,IAJA,GAAI+d,GAAMxd,EAAMkC,EACfkhB,EAAUhlB,EAAO0kB,MAAMM,QACvBnjB,EAAI,EAE6BuB,UAAxBxB,EAAOP,EAAOQ,IAAqBA,IAC5C,GAAK6c,EAAY9c,GAAS,CACzB,GAAOwd,EAAOxd,EAAM6d,EAASpc,SAAc,CAC1C,GAAK+b,EAAKyF,OACT,IAAM/gB,IAAQsb,GAAKyF,OACbG,EAASlhB,GACb9D,EAAO0kB,MAAMnJ,OAAQ3Z,EAAMkC,GAI3B9D,EAAOgmB,YAAapkB,EAAMkC,EAAMsb,EAAKiG,OAOxCzjB,GAAM6d,EAASpc,SAAYD,OAEvBxB,EAAM8d,EAASrc,WAInBzB,EAAM8d,EAASrc,SAAYD,YAOhCpD,EAAOG,GAAGqC,QAGT8nB,SAAUA,GAEVa,OAAQ,SAAUlrB,GACjB,MAAOsb,IAAQpc,KAAMc,GAAU,IAGhCsb,OAAQ,SAAUtb,GACjB,MAAOsb,IAAQpc,KAAMc,IAGtB6E,KAAM,SAAUqB,GACf,MAAOkY,GAAQlf,KAAM,SAAUgH,GAC9B,MAAiB/C,UAAV+C,EACNnG,EAAO8E,KAAM3F,MACbA,KAAK+U,QAAQzS,KAAM,WACK,IAAlBtC,KAAKkF,UAAoC,KAAlBlF,KAAKkF,UAAqC,IAAlBlF,KAAKkF,WACxDlF,KAAKwR,YAAcxK,MAGpB,KAAMA,EAAOpE,UAAUhB,SAG3BqqB,OAAQ,WACP,MAAOd,IAAUnrB,KAAM4C,UAAW,SAAUH,GAC3C,GAAuB,IAAlBzC,KAAKkF,UAAoC,KAAlBlF,KAAKkF,UAAqC,IAAlBlF,KAAKkF,SAAiB,CACzE,GAAItB,GAAS4mB,GAAoBxqB,KAAMyC,EACvCmB,GAAOiC,YAAapD,OAKvBypB,QAAS,WACR,MAAOf,IAAUnrB,KAAM4C,UAAW,SAAUH,GAC3C,GAAuB,IAAlBzC,KAAKkF,UAAoC,KAAlBlF,KAAKkF,UAAqC,IAAlBlF,KAAKkF,SAAiB,CACzE,GAAItB,GAAS4mB,GAAoBxqB,KAAMyC,EACvCmB,GAAOuoB,aAAc1pB,EAAMmB,EAAO6N,gBAKrC2a,OAAQ,WACP,MAAOjB,IAAUnrB,KAAM4C,UAAW,SAAUH,GACtCzC,KAAK8F,YACT9F,KAAK8F,WAAWqmB,aAAc1pB,EAAMzC,SAKvCqsB,MAAO,WACN,MAAOlB,IAAUnrB,KAAM4C,UAAW,SAAUH,GACtCzC,KAAK8F,YACT9F,KAAK8F,WAAWqmB,aAAc1pB,EAAMzC,KAAKsO,gBAK5CyG,MAAO,WAIN,IAHA,GAAItS,GACHC,EAAI,EAE2B,OAAtBD,EAAOzC,KAAM0C,IAAeA,IACd,IAAlBD,EAAKyC,WAGTrE,EAAO6qB,UAAW/H,EAAQlhB,GAAM,IAGhCA,EAAK+O,YAAc,GAIrB,OAAOxR,OAGR2D,MAAO,SAAUgoB,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD5rB,KAAKwC,IAAK,WAChB,MAAO3B,GAAO8C,MAAO3D,KAAM2rB,EAAeC,MAI5CL,KAAM,SAAUvkB,GACf,MAAOkY,GAAQlf,KAAM,SAAUgH,GAC9B,GAAIvE,GAAOzC,KAAM,OAChB0C,EAAI,EACJ6X,EAAIva,KAAK4B,MAEV,IAAeqC,SAAV+C,GAAyC,IAAlBvE,EAAKyC,SAChC,MAAOzC,GAAKqN,SAIb,IAAsB,gBAAV9I,KAAuBojB,GAAatd,KAAM9F,KACpD8b,GAAWF,EAASpW,KAAMxF,KAAa,GAAI,KAAQ,GAAIb,eAAkB,CAE1Ea,EAAQnG,EAAO0jB,cAAevd,EAE9B,KACC,KAAYuT,EAAJ7X,EAAOA,IACdD,EAAOzC,KAAM0C,OAGU,IAAlBD,EAAKyC,WACTrE,EAAO6qB,UAAW/H,EAAQlhB,GAAM,IAChCA,EAAKqN,UAAY9I,EAInBvE,GAAO,EAGN,MAAQoJ,KAGNpJ,GACJzC,KAAK+U,QAAQkX,OAAQjlB,IAEpB,KAAMA,EAAOpE,UAAUhB,SAG3B0qB,YAAa,WACZ,GAAIpI,KAGJ,OAAOiH,IAAUnrB,KAAM4C,UAAW,SAAUH,GAC3C,GAAIsM,GAAS/O,KAAK8F,UAEbjF,GAAO2F,QAASxG,KAAMkkB,GAAY,IACtCrjB,EAAO6qB,UAAW/H,EAAQ3jB,OACrB+O,GACJA,EAAOwd,aAAc9pB,EAAMzC,QAK3BkkB,MAILrjB,EAAOyB,MACNkqB,SAAU,SACVC,UAAW,UACXN,aAAc,SACdO,YAAa,QACbC,WAAY,eACV,SAAUppB,EAAMukB,GAClBjnB,EAAOG,GAAIuC,GAAS,SAAUzC,GAO7B,IANA,GAAIoB,GACHC,KACAyqB,EAAS/rB,EAAQC,GACjBiC,EAAO6pB,EAAOhrB,OAAS,EACvBc,EAAI,EAEQK,GAALL,EAAWA,IAClBR,EAAQQ,IAAMK,EAAO/C,KAAOA,KAAK2D,OAAO,GACxC9C,EAAQ+rB,EAAQlqB,IAAOolB,GAAY5lB,GAInC7B,EAAKsC,MAAOR,EAAKD,EAAMH,MAGxB,OAAO/B,MAAKiC,UAAWE,KAKzB,IAAI0qB,IACHC,IAICC,KAAM,QACNC,KAAM,QAUR,SAASC,IAAe1pB,EAAMyL,GAC7B,GAAIvM,GAAO5B,EAAQmO,EAAItJ,cAAenC,IAASipB,SAAUxd,EAAIoZ,MAE5D8E,EAAUrsB,EAAOkhB,IAAKtf,EAAM,GAAK,UAMlC,OAFAA,GAAKupB,SAEEkB,EAOR,QAASC,IAAgBjnB,GACxB,GAAI8I,GAAMpP,EACTstB,EAAUJ,GAAa5mB,EA2BxB,OAzBMgnB,KACLA,EAAUD,GAAe/mB,EAAU8I,GAGlB,SAAZke,GAAuBA,IAG3BL,IAAWA,IAAUhsB,EAAQ,mDAC3B2rB,SAAUxd,EAAIJ,iBAGhBI,EAAM6d,GAAQ,GAAIzR,gBAGlBpM,EAAIoe,QACJpe,EAAIqe,QAEJH,EAAUD,GAAe/mB,EAAU8I,GACnC6d,GAAOb,UAIRc,GAAa5mB,GAAagnB,GAGpBA,EAER,GAAII,IAAU,UAEVC,GAAY,GAAIzjB,QAAQ,KAAO2X,EAAO,kBAAmB,KAEzD+L,GAAY,SAAU/qB,GAKxB,GAAIgrB,GAAOhrB,EAAK8J,cAAc0C,WAM9B,OAJMwe,IAASA,EAAKC,SACnBD,EAAO1tB,GAGD0tB,EAAKE,iBAAkBlrB,IAG5BmrB,GAAO,SAAUnrB,EAAMa,EAASf,EAAU6E,GAC7C,GAAIjF,GAAKoB,EACRsqB,IAGD,KAAMtqB,IAAQD,GACbuqB,EAAKtqB,GAASd,EAAKigB,MAAOnf,GAC1Bd,EAAKigB,MAAOnf,GAASD,EAASC,EAG/BpB,GAAMI,EAASI,MAAOF,EAAM2E,MAG5B,KAAM7D,IAAQD,GACbb,EAAKigB,MAAOnf,GAASsqB,EAAKtqB,EAG3B,OAAOpB,IAIJyM,GAAkBhP,EAASgP,iBAI/B,WACC,GAAIkf,GAAkBC,EAAsBC,EAAqBC,EAChEC,EAAYtuB,EAAS8F,cAAe,OACpCmI,EAAMjO,EAAS8F,cAAe,MAG/B,IAAMmI,EAAI6U,MAAV,CAMA7U,EAAI6U,MAAMyL,eAAiB,cAC3BtgB,EAAI6W,WAAW,GAAOhC,MAAMyL,eAAiB,GAC7CxtB,EAAQytB,gBAA+C,gBAA7BvgB,EAAI6U,MAAMyL,eAEpCD,EAAUxL,MAAM2L,QAAU,4FAE1BH,EAAUroB,YAAagI,EAIvB,SAASygB,KACRzgB,EAAI6U,MAAM2L,QAIT,qKAIDxgB,EAAIiC,UAAY,GAChBlB,GAAgB/I,YAAaqoB,EAE7B,IAAIK,GAAWxuB,EAAO4tB,iBAAkB9f,EACxCigB,GAAoC,OAAjBS,EAASrf,IAC5B+e,EAAgD,QAAxBM,EAASC,WACjCT,EAA0C,QAAnBQ,EAASE,MAIhC5gB,EAAI6U,MAAMgM,YAAc,MACxBV,EAA+C,QAAzBO,EAASG,YAE/B9f,GAAgB7I,YAAamoB,GAG9BrtB,EAAOwC,OAAQ1C,GACdguB,cAAe,WAMd,MADAL,KACOR,GAERc,kBAAmB,WAIlB,MAH6B,OAAxBb,GACJO,IAEMP,GAERc,iBAAkB,WAQjB,MAH6B,OAAxBd,GACJO,IAEMN,GAERc,mBAAoB,WAMnB,MAH6B,OAAxBf,GACJO,IAEML,GAERc,oBAAqB,WAOpB,GAAI5sB,GACH6sB,EAAYnhB,EAAIhI,YAAajG,EAAS8F,cAAe,OAkBtD,OAfAspB,GAAUtM,MAAM2L,QAAUxgB,EAAI6U,MAAM2L,QAInC,kGAEDW,EAAUtM,MAAMgM,YAAcM,EAAUtM,MAAM+L,MAAQ,IACtD5gB,EAAI6U,MAAM+L,MAAQ,MAClB7f,GAAgB/I,YAAaqoB,GAE7B/rB,GAAO6C,WAAYjF,EAAO4tB,iBAAkBqB,GAAYN,aAExD9f,GAAgB7I,YAAamoB,GAC7BrgB,EAAI9H,YAAaipB,GAEV7sB,QAMV,SAAS8sB,IAAQxsB,EAAMc,EAAM2rB,GAC5B,GAAIT,GAAOU,EAAUC,EAAUjtB,EAC9BugB,EAAQjgB,EAAKigB,KAuCd,OArCAwM,GAAWA,GAAY1B,GAAW/qB,GAClCN,EAAM+sB,EAAWA,EAASG,iBAAkB9rB,IAAU2rB,EAAU3rB,GAASU,OAK1D,KAAR9B,GAAsB8B,SAAR9B,GAAwBtB,EAAO4H,SAAUhG,EAAK8J,cAAe9J,KACjFN,EAAMtB,EAAO6hB,MAAOjgB,EAAMc,IAKtB2rB,IAOEvuB,EAAQkuB,oBAAsBtB,GAAUzgB,KAAM3K,IAASmrB,GAAQxgB,KAAMvJ,KAG1EkrB,EAAQ/L,EAAM+L,MACdU,EAAWzM,EAAMyM,SACjBC,EAAW1M,EAAM0M,SAGjB1M,EAAMyM,SAAWzM,EAAM0M,SAAW1M,EAAM+L,MAAQtsB,EAChDA,EAAM+sB,EAAST,MAGf/L,EAAM+L,MAAQA,EACd/L,EAAMyM,SAAWA,EACjBzM,EAAM0M,SAAWA,GAIJnrB,SAAR9B,EAINA,EAAM,GACNA,EAIF,QAASmtB,IAAcC,EAAaC,GAGnC,OACCztB,IAAK,WACJ,MAAKwtB,gBAIGvvB,MAAK+B,KAKJ/B,KAAK+B,IAAMytB,GAAS7sB,MAAO3C,KAAM4C,aAM7C,GAKC6sB,IAAe,4BAEfC,IAAYC,SAAU,WAAYC,WAAY,SAAU1C,QAAS,SACjE2C,IACCC,cAAe,IACfC,WAAY,OAGbC,IAAgB,SAAU,IAAK,MAAO,MACtCC,GAAarwB,EAAS8F,cAAe,OAAQgd,KAG9C,SAASwN,IAAgB3sB,GAGxB,GAAKA,IAAQ0sB,IACZ,MAAO1sB,EAIR,IAAI4sB,GAAU5sB,EAAM,GAAI/B,cAAgB+B,EAAKpD,MAAO,GACnDuC,EAAIstB,GAAYpuB,MAEjB,OAAQc,IAEP,GADAa,EAAOysB,GAAattB,GAAMytB,EACrB5sB,IAAQ0sB,IACZ,MAAO1sB,GAKV,QAAS6sB,IAAmB3tB,EAAMuE,EAAOqpB,GAIxC,GAAIxpB,GAAU8a,EAAQnV,KAAMxF,EAC5B,OAAOH,GAGN1C,KAAKmsB,IAAK,EAAGzpB,EAAS,IAAQwpB,GAAY,KAAUxpB,EAAS,IAAO,MACpEG,EAGF,QAASupB,IAAsB9tB,EAAMc,EAAMitB,EAAOC,EAAaC,GAW9D,IAVA,GAAIhuB,GAAI8tB,KAAYC,EAAc,SAAW,WAG5C,EAGS,UAATltB,EAAmB,EAAI,EAEvB2N,EAAM,EAEK,EAAJxO,EAAOA,GAAK,EAGJ,WAAV8tB,IACJtf,GAAOrQ,EAAOkhB,IAAKtf,EAAM+tB,EAAQ5O,EAAWlf,IAAK,EAAMguB,IAGnDD,GAGW,YAAVD,IACJtf,GAAOrQ,EAAOkhB,IAAKtf,EAAM,UAAYmf,EAAWlf,IAAK,EAAMguB,IAI7C,WAAVF,IACJtf,GAAOrQ,EAAOkhB,IAAKtf,EAAM,SAAWmf,EAAWlf,GAAM,SAAS,EAAMguB,MAKrExf,GAAOrQ,EAAOkhB,IAAKtf,EAAM,UAAYmf,EAAWlf,IAAK,EAAMguB,GAG5C,YAAVF,IACJtf,GAAOrQ,EAAOkhB,IAAKtf,EAAM,SAAWmf,EAAWlf,GAAM,SAAS,EAAMguB,IAKvE,OAAOxf,GAGR,QAASyf,IAAkBluB,EAAMc,EAAMitB,GAGtC,GAAII,IAAmB,EACtB1f,EAAe,UAAT3N,EAAmBd,EAAKouB,YAAcpuB,EAAKquB,aACjDJ,EAASlD,GAAW/qB,GACpBguB,EAAiE,eAAnD5vB,EAAOkhB,IAAKtf,EAAM,aAAa,EAAOiuB,EAKrD,IAAY,GAAPxf,GAAmB,MAAPA,EAAc,CAS9B,GANAA,EAAM+d,GAAQxsB,EAAMc,EAAMmtB,IACf,EAANxf,GAAkB,MAAPA,KACfA,EAAMzO,EAAKigB,MAAOnf,IAIdgqB,GAAUzgB,KAAMoE,GACpB,MAAOA,EAKR0f,GAAmBH,IAChB9vB,EAAQiuB,qBAAuB1d,IAAQzO,EAAKigB,MAAOnf,IAGtD2N,EAAMlM,WAAYkM,IAAS,EAI5B,MAASA,GACRqf,GACC9tB,EACAc,EACAitB,IAAWC,EAAc,SAAW,WACpCG,EACAF,GAEE,KAGL,QAASK,IAAU/f,EAAUggB,GAM5B,IALA,GAAI9D,GAASzqB,EAAMwuB,EAClBjT,KACAtD,EAAQ,EACR9Y,EAASoP,EAASpP,OAEHA,EAAR8Y,EAAgBA,IACvBjY,EAAOuO,EAAU0J,GACXjY,EAAKigB,QAIX1E,EAAQtD,GAAU4F,EAASve,IAAKU,EAAM,cACtCyqB,EAAUzqB,EAAKigB,MAAMwK,QAChB8D,GAIEhT,EAAQtD,IAAuB,SAAZwS,IACxBzqB,EAAKigB,MAAMwK,QAAU,IAMM,KAAvBzqB,EAAKigB,MAAMwK,SAAkBrL,EAAUpf,KAC3Cub,EAAQtD,GAAU4F,EAASpB,OAC1Bzc,EACA,aACA0qB,GAAgB1qB,EAAKyD,cAIvB+qB,EAASpP,EAAUpf,GAEF,SAAZyqB,GAAuB+D,GAC3B3Q,EAASN,IACRvd,EACA,aACAwuB,EAAS/D,EAAUrsB,EAAOkhB,IAAKtf,EAAM,aAQzC,KAAMiY,EAAQ,EAAW9Y,EAAR8Y,EAAgBA,IAChCjY,EAAOuO,EAAU0J,GACXjY,EAAKigB,QAGLsO,GAA+B,SAAvBvuB,EAAKigB,MAAMwK,SAA6C,KAAvBzqB,EAAKigB,MAAMwK,UACzDzqB,EAAKigB,MAAMwK,QAAU8D,EAAOhT,EAAQtD,IAAW,GAAK,QAItD,OAAO1J,GAGRnQ,EAAOwC,QAIN6tB,UACCC,SACCpvB,IAAK,SAAUU,EAAMysB,GACpB,GAAKA,EAAW,CAGf,GAAI/sB,GAAM8sB,GAAQxsB,EAAM,UACxB,OAAe,KAARN,EAAa,IAAMA,MAO9BqgB,WACC4O,yBAA2B,EAC3BC,aAAe,EACfC,aAAe,EACfC,UAAY,EACZC,YAAc,EACdzB,YAAc,EACd0B,YAAc,EACdN,SAAW,EACXO,OAAS,EACTC,SAAW,EACXC,QAAU,EACVC,QAAU,EACVC,MAAQ,GAKTC,UACCC,QAAS,YAIVtP,MAAO,SAAUjgB,EAAMc,EAAMyD,EAAOwpB,GAGnC,GAAM/tB,GAA0B,IAAlBA,EAAKyC,UAAoC,IAAlBzC,EAAKyC,UAAmBzC,EAAKigB,MAAlE,CAKA,GAAIvgB,GAAKwC,EAAMuc,EACd+Q,EAAWpxB,EAAOmF,UAAWzC,GAC7Bmf,EAAQjgB,EAAKigB,KASd,OAPAnf,GAAO1C,EAAOkxB,SAAUE,KACrBpxB,EAAOkxB,SAAUE,GAAa/B,GAAgB+B,IAAcA,GAG/D/Q,EAAQrgB,EAAOqwB,SAAU3tB,IAAU1C,EAAOqwB,SAAUe,GAGrChuB,SAAV+C,EAqCCka,GAAS,OAASA,IACwBjd,UAA5C9B,EAAM+e,EAAMnf,IAAKU,GAAM,EAAO+tB,IAEzBruB,EAIDugB,EAAOnf,IA3CdoB,QAAcqC,GAGA,WAATrC,IAAuBxC,EAAMwf,EAAQnV,KAAMxF,KAAa7E,EAAK,KACjE6E,EAAQgb,EAAWvf,EAAMc,EAAMpB,GAG/BwC,EAAO,UAIM,MAATqC,GAAiBA,IAAUA,IAKlB,WAATrC,IACJqC,GAAS7E,GAAOA,EAAK,KAAStB,EAAO2hB,UAAWyP,GAAa,GAAK,OAK7DtxB,EAAQytB,iBAA6B,KAAVpnB,GAAiD,IAAjCzD,EAAKjD,QAAS,gBAC9DoiB,EAAOnf,GAAS,WAIX2d,GAAY,OAASA,IACsBjd,UAA9C+C,EAAQka,EAAMlB,IAAKvd,EAAMuE,EAAOwpB,MAElC9N,EAAOnf,GAASyD,IAnBjB,UAoCF+a,IAAK,SAAUtf,EAAMc,EAAMitB,EAAOE,GACjC,GAAIxf,GAAKlP,EAAKkf,EACb+Q,EAAWpxB,EAAOmF,UAAWzC,EAyB9B,OAtBAA,GAAO1C,EAAOkxB,SAAUE,KACrBpxB,EAAOkxB,SAAUE,GAAa/B,GAAgB+B,IAAcA,GAG/D/Q,EAAQrgB,EAAOqwB,SAAU3tB,IAAU1C,EAAOqwB,SAAUe,GAG/C/Q,GAAS,OAASA,KACtBhQ,EAAMgQ,EAAMnf,IAAKU,GAAM,EAAM+tB,IAIjBvsB,SAARiN,IACJA,EAAM+d,GAAQxsB,EAAMc,EAAMmtB,IAId,WAARxf,GAAoB3N,IAAQssB,MAChC3e,EAAM2e,GAAoBtsB,IAIZ,KAAVitB,GAAgBA,GACpBxuB,EAAMgD,WAAYkM,GACXsf,KAAU,GAAQ0B,SAAUlwB,GAAQA,GAAO,EAAIkP,GAEhDA,KAITrQ,EAAOyB,MAAQ,SAAU,SAAW,SAAUI,EAAGa,GAChD1C,EAAOqwB,SAAU3tB,IAChBxB,IAAK,SAAUU,EAAMysB,EAAUsB,GAC9B,MAAKtB,GAIGO,GAAa3iB,KAAMjM,EAAOkhB,IAAKtf,EAAM,aACtB,IAArBA,EAAKouB,YACJjD,GAAMnrB,EAAMitB,GAAS,WACpB,MAAOiB,IAAkBluB,EAAMc,EAAMitB,KAEtCG,GAAkBluB,EAAMc,EAAMitB,GATjC,QAaDxQ,IAAK,SAAUvd,EAAMuE,EAAOwpB,GAC3B,GAAI3pB,GACH6pB,EAASF,GAAShD,GAAW/qB,GAC7B4tB,EAAWG,GAASD,GACnB9tB,EACAc,EACAitB,EACmD,eAAnD3vB,EAAOkhB,IAAKtf,EAAM,aAAa,EAAOiuB,GACtCA,EAWF,OAPKL,KAAcxpB,EAAU8a,EAAQnV,KAAMxF,KACb,QAA3BH,EAAS,IAAO,QAElBpE,EAAKigB,MAAOnf,GAASyD,EACrBA,EAAQnG,EAAOkhB,IAAKtf,EAAMc,IAGpB6sB,GAAmB3tB,EAAMuE,EAAOqpB,OAK1CxvB,EAAOqwB,SAAS1C,WAAac,GAAc3uB,EAAQmuB,mBAClD,SAAUrsB,EAAMysB,GACf,MAAKA,IACKlqB,WAAYiqB,GAAQxsB,EAAM,gBAClCA,EAAK0vB,wBAAwBC,KAC5BxE,GAAMnrB,GAAQ+rB,WAAY,GAAK,WAC9B,MAAO/rB,GAAK0vB,wBAAwBC,QAElC,KANN,SAYFvxB,EAAOqwB,SAASxC,YAAcY,GAAc3uB,EAAQouB,oBACnD,SAAUtsB,EAAMysB,GACf,MAAKA,GACGtB,GAAMnrB,GAAQyqB,QAAW,gBAC/B+B,IAAUxsB,EAAM,gBAFlB,SAQF5B,EAAOyB,MACN+vB,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpB5xB,EAAOqwB,SAAUsB,EAASC,IACzBC,OAAQ,SAAU1rB,GAOjB,IANA,GAAItE,GAAI,EACPiwB,KAGAC,EAAyB,gBAAV5rB,GAAqBA,EAAMS,MAAO,MAAUT,GAEhD,EAAJtE,EAAOA,IACdiwB,EAAUH,EAAS5Q,EAAWlf,GAAM+vB,GACnCG,EAAOlwB,IAAOkwB,EAAOlwB,EAAI,IAAOkwB,EAAO,EAGzC,OAAOD,KAIHrF,GAAQxgB,KAAM0lB,KACnB3xB,EAAOqwB,SAAUsB,EAASC,GAASzS,IAAMoQ,MAI3CvvB,EAAOG,GAAGqC,QACT0e,IAAK,SAAUxe,EAAMyD,GACpB,MAAOkY,GAAQlf,KAAM,SAAUyC,EAAMc,EAAMyD,GAC1C,GAAI0pB,GAAQ1tB,EACXR,KACAE,EAAI,CAEL,IAAK7B,EAAOmD,QAAST,GAAS,CAI7B,IAHAmtB,EAASlD,GAAW/qB,GACpBO,EAAMO,EAAK3B,OAECoB,EAAJN,EAASA,IAChBF,EAAKe,EAAMb,IAAQ7B,EAAOkhB,IAAKtf,EAAMc,EAAMb,IAAK,EAAOguB,EAGxD,OAAOluB,GAGR,MAAiByB,UAAV+C,EACNnG,EAAO6hB,MAAOjgB,EAAMc,EAAMyD,GAC1BnG,EAAOkhB,IAAKtf,EAAMc,IACjBA,EAAMyD,EAAOpE,UAAUhB,OAAS,IAEpCovB,KAAM,WACL,MAAOD,IAAU/wB,MAAM,IAExB6yB,KAAM,WACL,MAAO9B,IAAU/wB,OAElB8yB,OAAQ,SAAUnW,GACjB,MAAsB,iBAAVA,GACJA,EAAQ3c,KAAKgxB,OAAShxB,KAAK6yB,OAG5B7yB,KAAKsC,KAAM,WACZuf,EAAU7hB,MACda,EAAQb,MAAOgxB,OAEfnwB,EAAQb,MAAO6yB,WAOnB,SAASE,IAAOtwB,EAAMa,EAAS4c,EAAMhd,EAAK8vB,GACzC,MAAO,IAAID,IAAMtxB,UAAUR,KAAMwB,EAAMa,EAAS4c,EAAMhd,EAAK8vB,GAE5DnyB,EAAOkyB,MAAQA,GAEfA,GAAMtxB,WACLE,YAAaoxB,GACb9xB,KAAM,SAAUwB,EAAMa,EAAS4c,EAAMhd,EAAK8vB,EAAQzQ,GACjDviB,KAAKyC,KAAOA,EACZzC,KAAKkgB,KAAOA,EACZlgB,KAAKgzB,OAASA,GAAUnyB,EAAOmyB,OAAO5P,SACtCpjB,KAAKsD,QAAUA,EACftD,KAAKmT,MAAQnT,KAAKqH,IAAMrH,KAAKmO,MAC7BnO,KAAKkD,IAAMA,EACXlD,KAAKuiB,KAAOA,IAAU1hB,EAAO2hB,UAAWtC,GAAS,GAAK,OAEvD/R,IAAK,WACJ,GAAI+S,GAAQ6R,GAAME,UAAWjzB,KAAKkgB,KAElC,OAAOgB,IAASA,EAAMnf,IACrBmf,EAAMnf,IAAK/B,MACX+yB,GAAME,UAAU7P,SAASrhB,IAAK/B,OAEhCkzB,IAAK,SAAUC,GACd,GAAIC,GACHlS,EAAQ6R,GAAME,UAAWjzB,KAAKkgB,KAoB/B,OAlBKlgB,MAAKsD,QAAQ+vB,SACjBrzB,KAAKya,IAAM2Y,EAAQvyB,EAAOmyB,OAAQhzB,KAAKgzB,QACtCG,EAASnzB,KAAKsD,QAAQ+vB,SAAWF,EAAS,EAAG,EAAGnzB,KAAKsD,QAAQ+vB,UAG9DrzB,KAAKya,IAAM2Y,EAAQD,EAEpBnzB,KAAKqH,KAAQrH,KAAKkD,IAAMlD,KAAKmT,OAAUigB,EAAQpzB,KAAKmT,MAE/CnT,KAAKsD,QAAQgwB,MACjBtzB,KAAKsD,QAAQgwB,KAAKxxB,KAAM9B,KAAKyC,KAAMzC,KAAKqH,IAAKrH,MAGzCkhB,GAASA,EAAMlB,IACnBkB,EAAMlB,IAAKhgB,MAEX+yB,GAAME,UAAU7P,SAASpD,IAAKhgB,MAExBA,OAIT+yB,GAAMtxB,UAAUR,KAAKQ,UAAYsxB,GAAMtxB,UAEvCsxB,GAAME,WACL7P,UACCrhB,IAAK,SAAUmgB,GACd,GAAIxP,EAIJ,OAA6B,KAAxBwP,EAAMzf,KAAKyC,UACa,MAA5Bgd,EAAMzf,KAAMyf,EAAMhC,OAAoD,MAAlCgC,EAAMzf,KAAKigB,MAAOR,EAAMhC,MACrDgC,EAAMzf,KAAMyf,EAAMhC,OAO1BxN,EAAS7R,EAAOkhB,IAAKG,EAAMzf,KAAMyf,EAAMhC,KAAM,IAGrCxN,GAAqB,SAAXA,EAAwBA,EAAJ,IAEvCsN,IAAK,SAAUkC,GAKTrhB,EAAO0yB,GAAGD,KAAMpR,EAAMhC,MAC1Brf,EAAO0yB,GAAGD,KAAMpR,EAAMhC,MAAQgC,GACK,IAAxBA,EAAMzf,KAAKyC,UACiC,MAArDgd,EAAMzf,KAAKigB,MAAO7hB,EAAOkxB,SAAU7P,EAAMhC,SAC1Crf,EAAOqwB,SAAUhP,EAAMhC,MAGxBgC,EAAMzf,KAAMyf,EAAMhC,MAASgC,EAAM7a,IAFjCxG,EAAO6hB,MAAOR,EAAMzf,KAAMyf,EAAMhC,KAAMgC,EAAM7a,IAAM6a,EAAMK,SAU5DwQ,GAAME,UAAUtK,UAAYoK,GAAME,UAAU1K,YAC3CvI,IAAK,SAAUkC,GACTA,EAAMzf,KAAKyC,UAAYgd,EAAMzf,KAAKqD,aACtCoc,EAAMzf,KAAMyf,EAAMhC,MAASgC,EAAM7a,OAKpCxG,EAAOmyB,QACNQ,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAMtvB,KAAKwvB,IAAKF,EAAItvB,KAAKyvB,IAAO,GAExCxQ,SAAU,SAGXviB,EAAO0yB,GAAKR,GAAMtxB,UAAUR,KAG5BJ,EAAO0yB,GAAGD,OAKV,IACCO,IAAOC,GACPC,GAAW,yBACXC,GAAO,aAGR,SAASC,MAIR,MAHAl0B,GAAOkf,WAAY,WAClB4U,GAAQ5vB,SAEA4vB,GAAQhzB,EAAOwG,MAIzB,QAAS6sB,IAAOvvB,EAAMwvB,GACrB,GAAIpM,GACHrlB,EAAI,EACJqL,GAAUqmB,OAAQzvB,EAKnB,KADAwvB,EAAeA,EAAe,EAAI,EACtB,EAAJzxB,EAAQA,GAAK,EAAIyxB,EACxBpM,EAAQnG,EAAWlf,GACnBqL,EAAO,SAAWga,GAAUha,EAAO,UAAYga,GAAUpjB,CAO1D,OAJKwvB,KACJpmB,EAAMojB,QAAUpjB,EAAM0gB,MAAQ9pB,GAGxBoJ,EAGR,QAASsmB,IAAartB,EAAOkZ,EAAMoU,GAKlC,IAJA,GAAIpS,GACHkJ,GAAemJ,GAAUC,SAAUtU,QAAe9f,OAAQm0B,GAAUC,SAAU,MAC9E9Z,EAAQ,EACR9Y,EAASwpB,EAAWxpB,OACLA,EAAR8Y,EAAgBA,IACvB,GAAOwH,EAAQkJ,EAAY1Q,GAAQ5Y,KAAMwyB,EAAWpU,EAAMlZ,GAGzD,MAAOkb,GAKV,QAASuS,IAAkBhyB,EAAMklB,EAAO+M,GAEvC,GAAIxU,GAAMlZ,EAAO8rB,EAAQ5Q,EAAOhB,EAAOyT,EAASzH,EAAS0H,EACxDC,EAAO70B,KACPgqB,KACAtH,EAAQjgB,EAAKigB,MACbuO,EAASxuB,EAAKyC,UAAY2c,EAAUpf,GACpCqyB,EAAWxU,EAASve,IAAKU,EAAM,SAG1BiyB,GAAK3Y,QACVmF,EAAQrgB,EAAOsgB,YAAa1e,EAAM,MACX,MAAlBye,EAAM6T,WACV7T,EAAM6T,SAAW,EACjBJ,EAAUzT,EAAMnM,MAAMkH,KACtBiF,EAAMnM,MAAMkH,KAAO,WACZiF,EAAM6T,UACXJ,MAIHzT,EAAM6T,WAENF,EAAKhY,OAAQ,WAGZgY,EAAKhY,OAAQ,WACZqE,EAAM6T,WACAl0B,EAAOkb,MAAOtZ,EAAM,MAAOb,QAChCsf,EAAMnM,MAAMkH,YAOO,IAAlBxZ,EAAKyC,WAAoB,UAAYyiB,IAAS,SAAWA,MAM7D+M,EAAKM,UAAatS,EAAMsS,SAAUtS,EAAMuS,UAAWvS,EAAMwS,WAIzDhI,EAAUrsB,EAAOkhB,IAAKtf,EAAM,WAG5BmyB,EAA2B,SAAZ1H,EACd5M,EAASve,IAAKU,EAAM,eAAkB0qB,GAAgB1qB,EAAKyD,UAAagnB,EAEnD,WAAjB0H,GAA6D,SAAhC/zB,EAAOkhB,IAAKtf,EAAM,WACnDigB,EAAMwK,QAAU,iBAIbwH,EAAKM,WACTtS,EAAMsS,SAAW,SACjBH,EAAKhY,OAAQ,WACZ6F,EAAMsS,SAAWN,EAAKM,SAAU,GAChCtS,EAAMuS,UAAYP,EAAKM,SAAU,GACjCtS,EAAMwS,UAAYR,EAAKM,SAAU,KAKnC,KAAM9U,IAAQyH,GAEb,GADA3gB,EAAQ2gB,EAAOzH,GACV6T,GAASvnB,KAAMxF,GAAU,CAG7B,SAFO2gB,GAAOzH,GACd4S,EAASA,GAAoB,WAAV9rB,EACdA,KAAYiqB,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVjqB,IAAoB8tB,GAAiC7wB,SAArB6wB,EAAU5U,GAG9C,QAFA+Q,IAAS,EAKXjH,EAAM9J,GAAS4U,GAAYA,EAAU5U,IAAUrf,EAAO6hB,MAAOjgB,EAAMyd,OAInEgN,GAAUjpB,MAIZ,IAAMpD,EAAOsE,cAAe6kB,GAyCuD,YAAzD,SAAZkD,EAAqBC,GAAgB1qB,EAAKyD,UAAagnB,KACpExK,EAAMwK,QAAUA,OA1CoB,CAC/B4H,EACC,UAAYA,KAChB7D,EAAS6D,EAAS7D,QAGnB6D,EAAWxU,EAASpB,OAAQzc,EAAM,aAI9BqwB,IACJgC,EAAS7D,QAAUA,GAEfA,EACJpwB,EAAQ4B,GAAOuuB,OAEf6D,EAAKjsB,KAAM,WACV/H,EAAQ4B,GAAOowB,SAGjBgC,EAAKjsB,KAAM,WACV,GAAIsX,EAEJI,GAASlE,OAAQ3Z,EAAM,SACvB,KAAMyd,IAAQ8J,GACbnpB,EAAO6hB,MAAOjgB,EAAMyd,EAAM8J,EAAM9J,KAGlC,KAAMA,IAAQ8J,GACb9H,EAAQmS,GAAapD,EAAS6D,EAAU5U,GAAS,EAAGA,EAAM2U,GAElD3U,IAAQ4U,KACfA,EAAU5U,GAASgC,EAAM/O,MACpB8d,IACJ/O,EAAMhf,IAAMgf,EAAM/O,MAClB+O,EAAM/O,MAAiB,UAAT+M,GAA6B,WAATA,EAAoB,EAAI,KAW/D,QAASiV,IAAYxN,EAAOyN,GAC3B,GAAI1a,GAAOnX,EAAMyvB,EAAQhsB,EAAOka,CAGhC,KAAMxG,IAASiN,GAed,GAdApkB,EAAO1C,EAAOmF,UAAW0U,GACzBsY,EAASoC,EAAe7xB,GACxByD,EAAQ2gB,EAAOjN,GACV7Z,EAAOmD,QAASgD,KACpBgsB,EAAShsB,EAAO,GAChBA,EAAQ2gB,EAAOjN,GAAU1T,EAAO,IAG5B0T,IAAUnX,IACdokB,EAAOpkB,GAASyD,QACT2gB,GAAOjN,IAGfwG,EAAQrgB,EAAOqwB,SAAU3tB,GACpB2d,GAAS,UAAYA,GAAQ,CACjCla,EAAQka,EAAMwR,OAAQ1rB,SACf2gB,GAAOpkB,EAId,KAAMmX,IAAS1T,GACN0T,IAASiN,KAChBA,EAAOjN,GAAU1T,EAAO0T,GACxB0a,EAAe1a,GAAUsY,OAI3BoC,GAAe7xB,GAASyvB,EAK3B,QAASuB,IAAW9xB,EAAM4yB,EAAY/xB,GACrC,GAAIoP,GACH4iB,EACA5a,EAAQ,EACR9Y,EAAS2yB,GAAUgB,WAAW3zB,OAC9Bkb,EAAWjc,EAAO2b,WAAWK,OAAQ,iBAG7B2Y,GAAK/yB,OAEb+yB,EAAO,WACN,GAAKF,EACJ,OAAO,CAYR,KAVA,GAAIG,GAAc5B,IAASI,KAC1BnW,EAAY3Z,KAAKmsB,IAAK,EAAGgE,EAAUoB,UAAYpB,EAAUjB,SAAWoC,GAIpEpe,EAAOyG,EAAYwW,EAAUjB,UAAY,EACzCF,EAAU,EAAI9b,EACdqD,EAAQ,EACR9Y,EAAS0yB,EAAUqB,OAAO/zB,OAEXA,EAAR8Y,EAAiBA,IACxB4Z,EAAUqB,OAAQjb,GAAQwY,IAAKC,EAKhC,OAFArW,GAASoB,WAAYzb,GAAQ6xB,EAAWnB,EAASrV,IAElC,EAAVqV,GAAevxB,EACZkc,GAEPhB,EAASqB,YAAa1b,GAAQ6xB,KACvB,IAGTA,EAAYxX,EAASF,SACpBna,KAAMA,EACNklB,MAAO9mB,EAAOwC,UAAYgyB,GAC1BX,KAAM7zB,EAAOwC,QAAQ,GACpB+xB,iBACApC,OAAQnyB,EAAOmyB,OAAO5P,UACpB9f,GACHsyB,mBAAoBP,EACpBQ,gBAAiBvyB,EACjBoyB,UAAW7B,IAASI,KACpBZ,SAAU/vB,EAAQ+vB,SAClBsC,UACAtB,YAAa,SAAUnU,EAAMhd,GAC5B,GAAIgf,GAAQrhB,EAAOkyB,MAAOtwB,EAAM6xB,EAAUI,KAAMxU,EAAMhd,EACpDoxB,EAAUI,KAAKU,cAAelV,IAAUoU,EAAUI,KAAK1B,OAEzD,OADAsB,GAAUqB,OAAOt1B,KAAM6hB,GAChBA,GAERd,KAAM,SAAU0U,GACf,GAAIpb,GAAQ,EAIX9Y,EAASk0B,EAAUxB,EAAUqB,OAAO/zB,OAAS,CAC9C,IAAK0zB,EACJ,MAAOt1B,KAGR,KADAs1B,GAAU,EACM1zB,EAAR8Y,EAAiBA,IACxB4Z,EAAUqB,OAAQjb,GAAQwY,IAAK,EAUhC,OANK4C,IACJhZ,EAASoB,WAAYzb,GAAQ6xB,EAAW,EAAG,IAC3CxX,EAASqB,YAAa1b,GAAQ6xB,EAAWwB,KAEzChZ,EAASiZ,WAAYtzB,GAAQ6xB,EAAWwB,IAElC91B,QAGT2nB,EAAQ2M,EAAU3M,KAInB,KAFAwN,GAAYxN,EAAO2M,EAAUI,KAAKU,eAElBxzB,EAAR8Y,EAAiBA,IAExB,GADAhI,EAAS6hB,GAAUgB,WAAY7a,GAAQ5Y,KAAMwyB,EAAW7xB,EAAMklB,EAAO2M,EAAUI,MAM9E,MAJK7zB,GAAOiD,WAAY4O,EAAO0O,QAC9BvgB,EAAOsgB,YAAamT,EAAU7xB,KAAM6xB,EAAUI,KAAK3Y,OAAQqF,KAC1DvgB,EAAOqG,MAAOwL,EAAO0O,KAAM1O,IAEtBA,CAmBT,OAfA7R,GAAO2B,IAAKmlB,EAAO0M,GAAaC,GAE3BzzB,EAAOiD,WAAYwwB,EAAUI,KAAKvhB,QACtCmhB,EAAUI,KAAKvhB,MAAMrR,KAAMW,EAAM6xB,GAGlCzzB,EAAO0yB,GAAGyC,MACTn1B,EAAOwC,OAAQmyB,GACd/yB,KAAMA,EACNoyB,KAAMP,EACNvY,MAAOuY,EAAUI,KAAK3Y,SAKjBuY,EAAUjX,SAAUiX,EAAUI,KAAKrX,UACxCzU,KAAM0rB,EAAUI,KAAK9rB,KAAM0rB,EAAUI,KAAKuB,UAC1ClZ,KAAMuX,EAAUI,KAAK3X,MACrBF,OAAQyX,EAAUI,KAAK7X,QAG1Bhc,EAAO0zB,UAAY1zB,EAAOwC,OAAQkxB,IACjCC,UACC0B,KAAO,SAAUhW,EAAMlZ,GACtB,GAAIkb,GAAQliB,KAAKq0B,YAAanU,EAAMlZ,EAEpC,OADAgb,GAAWE,EAAMzf,KAAMyd,EAAMyB,EAAQnV,KAAMxF,GAASkb,GAC7CA,KAITiU,QAAS,SAAUxO,EAAOplB,GACpB1B,EAAOiD,WAAY6jB,IACvBplB,EAAWolB,EACXA,GAAU,MAEVA,EAAQA,EAAMxb,MAAOmP,EAOtB,KAJA,GAAI4E,GACHxF,EAAQ,EACR9Y,EAAS+lB,EAAM/lB,OAEAA,EAAR8Y,EAAiBA,IACxBwF,EAAOyH,EAAOjN,GACd6Z,GAAUC,SAAUtU,GAASqU,GAAUC,SAAUtU,OACjDqU,GAAUC,SAAUtU,GAAOpP,QAASvO,IAItCgzB,YAAcd,IAEd2B,UAAW,SAAU7zB,EAAU2pB,GACzBA,EACJqI,GAAUgB,WAAWzkB,QAASvO,GAE9BgyB,GAAUgB,WAAWl1B,KAAMkC,MAK9B1B,EAAOw1B,MAAQ,SAAUA,EAAOrD,EAAQhyB,GACvC,GAAIs1B,GAAMD,GAA0B,gBAAVA,GAAqBx1B,EAAOwC,UAAYgzB,IACjEJ,SAAUj1B,IAAOA,GAAMgyB,GACtBnyB,EAAOiD,WAAYuyB,IAAWA,EAC/BhD,SAAUgD,EACVrD,OAAQhyB,GAAMgyB,GAAUA,IAAWnyB,EAAOiD,WAAYkvB,IAAYA,EAyBnE,OAtBAsD,GAAIjD,SAAWxyB,EAAO0yB,GAAG3U,IAAM,EAA4B,gBAAjB0X,GAAIjD,SAC7CiD,EAAIjD,SAAWiD,EAAIjD,WAAYxyB,GAAO0yB,GAAGgD,OACxC11B,EAAO0yB,GAAGgD,OAAQD,EAAIjD,UAAaxyB,EAAO0yB,GAAGgD,OAAOnT,SAGpC,MAAbkT,EAAIva,OAAiBua,EAAIva,SAAU,IACvCua,EAAIva,MAAQ,MAIbua,EAAIzI,IAAMyI,EAAIL,SAEdK,EAAIL,SAAW,WACTp1B,EAAOiD,WAAYwyB,EAAIzI,MAC3ByI,EAAIzI,IAAI/rB,KAAM9B,MAGVs2B,EAAIva,OACRlb,EAAOmgB,QAAShhB,KAAMs2B,EAAIva,QAIrBua,GAGRz1B,EAAOG,GAAGqC,QACTmzB,OAAQ,SAAUH,EAAOI,EAAIzD,EAAQzwB,GAGpC,MAAOvC,MAAK0P,OAAQmS,GAAWE,IAAK,UAAW,GAAIiP,OAGjD9tB,MAAMwzB,SAAWvF,QAASsF,GAAMJ,EAAOrD,EAAQzwB,IAElDm0B,QAAS,SAAUxW,EAAMmW,EAAOrD,EAAQzwB,GACvC,GAAIwS,GAAQlU,EAAOsE,cAAe+a,GACjCyW,EAAS91B,EAAOw1B,MAAOA,EAAOrD,EAAQzwB,GACtCq0B,EAAc,WAGb,GAAI/B,GAAON,GAAWv0B,KAAMa,EAAOwC,UAAY6c,GAAQyW,IAGlD5hB,GAASuL,EAASve,IAAK/B,KAAM,YACjC60B,EAAKzT,MAAM,GAKd,OAFCwV,GAAYC,OAASD,EAEf7hB,GAAS4hB,EAAO5a,SAAU,EAChC/b,KAAKsC,KAAMs0B,GACX52B,KAAK+b,MAAO4a,EAAO5a,MAAO6a,IAE5BxV,KAAM,SAAUzc,EAAM2c,EAAYwU,GACjC,GAAIgB,GAAY,SAAU5V,GACzB,GAAIE,GAAOF,EAAME,WACVF,GAAME,KACbA,EAAM0U,GAYP,OATqB,gBAATnxB,KACXmxB,EAAUxU,EACVA,EAAa3c,EACbA,EAAOV,QAEHqd,GAAc3c,KAAS,GAC3B3E,KAAK+b,MAAOpX,GAAQ,SAGd3E,KAAKsC,KAAM,WACjB,GAAI0e,IAAU,EACbtG,EAAgB,MAAR/V,GAAgBA,EAAO,aAC/BoyB,EAASl2B,EAAOk2B,OAChB9W,EAAOK,EAASve,IAAK/B,KAEtB,IAAK0a,EACCuF,EAAMvF,IAAWuF,EAAMvF,GAAQ0G,MACnC0V,EAAW7W,EAAMvF,QAGlB,KAAMA,IAASuF,GACTA,EAAMvF,IAAWuF,EAAMvF,GAAQ0G,MAAQ4S,GAAKlnB,KAAM4N,IACtDoc,EAAW7W,EAAMvF,GAKpB,KAAMA,EAAQqc,EAAOn1B,OAAQ8Y,KACvBqc,EAAQrc,GAAQjY,OAASzC,MACnB,MAAR2E,GAAgBoyB,EAAQrc,GAAQqB,QAAUpX,IAE5CoyB,EAAQrc,GAAQma,KAAKzT,KAAM0U,GAC3B9U,GAAU,EACV+V,EAAO3zB,OAAQsX,EAAO,KAOnBsG,GAAY8U,GAChBj1B,EAAOmgB,QAAShhB,KAAM2E,MAIzBkyB,OAAQ,SAAUlyB,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAET3E,KAAKsC,KAAM,WACjB,GAAIoY,GACHuF,EAAOK,EAASve,IAAK/B,MACrB+b,EAAQkE,EAAMtb,EAAO,SACrBuc,EAAQjB,EAAMtb,EAAO,cACrBoyB,EAASl2B,EAAOk2B,OAChBn1B,EAASma,EAAQA,EAAMna,OAAS,CAajC,KAVAqe,EAAK4W,QAAS,EAGdh2B,EAAOkb,MAAO/b,KAAM2E,MAEfuc,GAASA,EAAME,MACnBF,EAAME,KAAKtf,KAAM9B,MAAM,GAIlB0a,EAAQqc,EAAOn1B,OAAQ8Y,KACvBqc,EAAQrc,GAAQjY,OAASzC,MAAQ+2B,EAAQrc,GAAQqB,QAAUpX,IAC/DoyB,EAAQrc,GAAQma,KAAKzT,MAAM,GAC3B2V,EAAO3zB,OAAQsX,EAAO,GAKxB,KAAMA,EAAQ,EAAW9Y,EAAR8Y,EAAgBA,IAC3BqB,EAAOrB,IAAWqB,EAAOrB,GAAQmc,QACrC9a,EAAOrB,GAAQmc,OAAO/0B,KAAM9B,YAKvBigB,GAAK4W,YAKfh2B,EAAOyB,MAAQ,SAAU,OAAQ,QAAU,SAAUI,EAAGa,GACvD,GAAIyzB,GAAQn2B,EAAOG,GAAIuC,EACvB1C,GAAOG,GAAIuC,GAAS,SAAU8yB,EAAOrD,EAAQzwB,GAC5C,MAAgB,OAAT8zB,GAAkC,iBAAVA,GAC9BW,EAAMr0B,MAAO3C,KAAM4C,WACnB5C,KAAK02B,QAASxC,GAAO3wB,GAAM,GAAQ8yB,EAAOrD,EAAQzwB,MAKrD1B,EAAOyB,MACN20B,UAAW/C,GAAO,QAClBgD,QAAShD,GAAO,QAChBiD,YAAajD,GAAO,UACpBkD,QAAUjG,QAAS,QACnBkG,SAAWlG,QAAS,QACpBmG,YAAcnG,QAAS,WACrB,SAAU5tB,EAAMokB,GAClB9mB,EAAOG,GAAIuC,GAAS,SAAU8yB,EAAOrD,EAAQzwB,GAC5C,MAAOvC,MAAK02B,QAAS/O,EAAO0O,EAAOrD,EAAQzwB,MAI7C1B,EAAOk2B,UACPl2B,EAAO0yB,GAAGiC,KAAO,WAChB,GAAIQ,GACHtzB,EAAI,EACJq0B,EAASl2B,EAAOk2B,MAIjB,KAFAlD,GAAQhzB,EAAOwG,MAEP3E,EAAIq0B,EAAOn1B,OAAQc,IAC1BszB,EAAQe,EAAQr0B,GAGVszB,KAAWe,EAAQr0B,KAAQszB,GAChCe,EAAO3zB,OAAQV,IAAK,EAIhBq0B,GAAOn1B,QACZf,EAAO0yB,GAAGnS,OAEXyS,GAAQ5vB,QAGTpD,EAAO0yB,GAAGyC,MAAQ,SAAUA,GAC3Bn1B,EAAOk2B,OAAO12B,KAAM21B,GACfA,IACJn1B,EAAO0yB,GAAGpgB,QAEVtS,EAAOk2B,OAAO1tB,OAIhBxI,EAAO0yB,GAAGgE,SAAW,GACrB12B,EAAO0yB,GAAGpgB,MAAQ,WACX2gB,KACLA,GAAU/zB,EAAOy3B,YAAa32B,EAAO0yB,GAAGiC,KAAM30B,EAAO0yB,GAAGgE,YAI1D12B,EAAO0yB,GAAGnS,KAAO,WAChBrhB,EAAO03B,cAAe3D,IAEtBA,GAAU,MAGXjzB,EAAO0yB,GAAGgD,QACTmB,KAAM,IACNC,KAAM,IAGNvU,SAAU,KAMXviB,EAAOG,GAAG42B,MAAQ,SAAUC,EAAMlzB,GAIjC,MAHAkzB,GAAOh3B,EAAO0yB,GAAK1yB,EAAO0yB,GAAGgD,OAAQsB,IAAUA,EAAOA,EACtDlzB,EAAOA,GAAQ,KAER3E,KAAK+b,MAAOpX,EAAM,SAAUyV,EAAM8G,GACxC,GAAI4W,GAAU/3B,EAAOkf,WAAY7E,EAAMyd,EACvC3W,GAAME,KAAO,WACZrhB,EAAOg4B,aAAcD,OAMxB,WACC,GAAI/nB,GAAQnQ,EAAS8F,cAAe,SACnCsC,EAASpI,EAAS8F,cAAe,UACjC4wB,EAAMtuB,EAAOnC,YAAajG,EAAS8F,cAAe,UAEnDqK,GAAMpL,KAAO,WAIbhE,EAAQq3B,QAA0B,KAAhBjoB,EAAM/I,MAIxBrG,EAAQs3B,YAAc3B,EAAIzhB,SAI1B7M,EAAO2M,UAAW,EAClBhU,EAAQu3B,aAAe5B,EAAI3hB,SAI3B5E,EAAQnQ,EAAS8F,cAAe,SAChCqK,EAAM/I,MAAQ,IACd+I,EAAMpL,KAAO,QACbhE,EAAQw3B,WAA6B,MAAhBpoB,EAAM/I,QAI5B,IAAIoxB,IACHnqB,GAAapN,EAAOkQ,KAAK9C,UAE1BpN,GAAOG,GAAGqC,QACT4N,KAAM,SAAU1N,EAAMyD,GACrB,MAAOkY,GAAQlf,KAAMa,EAAOoQ,KAAM1N,EAAMyD,EAAOpE,UAAUhB,OAAS,IAGnEy2B,WAAY,SAAU90B,GACrB,MAAOvD,MAAKsC,KAAM,WACjBzB,EAAOw3B,WAAYr4B,KAAMuD,QAK5B1C,EAAOwC,QACN4N,KAAM,SAAUxO,EAAMc,EAAMyD,GAC3B,GAAI7E,GAAK+e,EACRoX,EAAQ71B,EAAKyC,QAGd,IAAe,IAAVozB,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,MAAkC,mBAAtB71B,GAAKsK,aACTlM,EAAOqf,KAAMzd,EAAMc,EAAMyD,IAKlB,IAAVsxB,GAAgBz3B,EAAOoY,SAAUxW,KACrCc,EAAOA,EAAK4C,cACZ+a,EAAQrgB,EAAO03B,UAAWh1B,KACvB1C,EAAOkQ,KAAK5E,MAAMxB,KAAKmC,KAAMvJ,GAAS60B,GAAWn0B,SAGtCA,SAAV+C,EACW,OAAVA,MACJnG,GAAOw3B,WAAY51B,EAAMc,GAIrB2d,GAAS,OAASA,IACuBjd,UAA3C9B,EAAM+e,EAAMlB,IAAKvd,EAAMuE,EAAOzD,IACzBpB,GAGRM,EAAKuK,aAAczJ,EAAMyD,EAAQ,IAC1BA,GAGHka,GAAS,OAASA,IAA+C,QAApC/e,EAAM+e,EAAMnf,IAAKU,EAAMc,IACjDpB,GAGRA,EAAMtB,EAAO4O,KAAKwB,KAAMxO,EAAMc,GAGhB,MAAPpB,EAAc8B,OAAY9B,KAGlCo2B,WACC5zB,MACCqb,IAAK,SAAUvd,EAAMuE,GACpB,IAAMrG,EAAQw3B,YAAwB,UAAVnxB,GAC3BnG,EAAOqF,SAAUzD,EAAM,SAAY,CACnC,GAAIyO,GAAMzO,EAAKuE,KAKf,OAJAvE,GAAKuK,aAAc,OAAQhG,GACtBkK,IACJzO,EAAKuE,MAAQkK,GAEPlK,MAMXqxB,WAAY,SAAU51B,EAAMuE,GAC3B,GAAIzD,GAAMi1B,EACT91B,EAAI,EACJ+1B,EAAYzxB,GAASA,EAAMmF,MAAOmP,EAEnC,IAAKmd,GAA+B,IAAlBh2B,EAAKyC,SACtB,MAAU3B,EAAOk1B,EAAW/1B,KAC3B81B,EAAW33B,EAAO63B,QAASn1B,IAAUA,EAGhC1C,EAAOkQ,KAAK5E,MAAMxB,KAAKmC,KAAMvJ,KAGjCd,EAAM+1B,IAAa,GAGpB/1B,EAAK6K,gBAAiB/J,MAO1B60B,IACCpY,IAAK,SAAUvd,EAAMuE,EAAOzD,GAQ3B,MAPKyD,MAAU,EAGdnG,EAAOw3B,WAAY51B,EAAMc,GAEzBd,EAAKuK,aAAczJ,EAAMA,GAEnBA,IAGT1C,EAAOyB,KAAMzB,EAAOkQ,KAAK5E,MAAMxB,KAAK+W,OAAOvV,MAAO,QAAU,SAAUzJ,EAAGa,GACxE,GAAIo1B,GAAS1qB,GAAY1K,IAAU1C,EAAO4O,KAAKwB,IAE/ChD,IAAY1K,GAAS,SAAUd,EAAMc,EAAMsE,GAC1C,GAAI1F,GAAK+jB,CAWT,OAVMre,KAGLqe,EAASjY,GAAY1K,GACrB0K,GAAY1K,GAASpB,EACrBA,EAAqC,MAA/Bw2B,EAAQl2B,EAAMc,EAAMsE,GACzBtE,EAAK4C,cACL,KACD8H,GAAY1K,GAAS2iB,GAEf/jB,IAOT,IAAIy2B,IAAa,sCAChBC,GAAa,eAEdh4B,GAAOG,GAAGqC,QACT6c,KAAM,SAAU3c,EAAMyD,GACrB,MAAOkY,GAAQlf,KAAMa,EAAOqf,KAAM3c,EAAMyD,EAAOpE,UAAUhB,OAAS,IAGnEk3B,WAAY,SAAUv1B,GACrB,MAAOvD,MAAKsC,KAAM,iBACVtC,MAAMa,EAAO63B,QAASn1B,IAAUA,QAK1C1C,EAAOwC,QACN6c,KAAM,SAAUzd,EAAMc,EAAMyD,GAC3B,GAAI7E,GAAK+e,EACRoX,EAAQ71B,EAAKyC,QAGd,IAAe,IAAVozB,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,MAPe,KAAVA,GAAgBz3B,EAAOoY,SAAUxW,KAGrCc,EAAO1C,EAAO63B,QAASn1B,IAAUA,EACjC2d,EAAQrgB,EAAOoyB,UAAW1vB;AAGZU,SAAV+C,EACCka,GAAS,OAASA,IACuBjd,UAA3C9B,EAAM+e,EAAMlB,IAAKvd,EAAMuE,EAAOzD,IACzBpB,EAGCM,EAAMc,GAASyD,EAGpBka,GAAS,OAASA,IAA+C,QAApC/e,EAAM+e,EAAMnf,IAAKU,EAAMc,IACjDpB,EAGDM,EAAMc,IAGd0vB,WACCxe,UACC1S,IAAK,SAAUU,GAMd,GAAIs2B,GAAWl4B,EAAO4O,KAAKwB,KAAMxO,EAAM,WAEvC,OAAOs2B,GACNC,SAAUD,EAAU,IACpBH,GAAW9rB,KAAMrK,EAAKyD,WACrB2yB,GAAW/rB,KAAMrK,EAAKyD,WAAczD,EAAK+R,KACxC,EACA,MAKNkkB,SACCO,MAAO,UACPC,QAAS,eAULv4B,EAAQs3B,cACbp3B,EAAOoyB,UAAUpe,UAChB9S,IAAK,SAAUU,GACd,GAAIsM,GAAStM,EAAKqD,UAIlB,OAHKiJ,IAAUA,EAAOjJ,YACrBiJ,EAAOjJ,WAAWgP,cAEZ,MAERkL,IAAK,SAAUvd,GACd,GAAIsM,GAAStM,EAAKqD,UACbiJ,KACJA,EAAO+F,cAEF/F,EAAOjJ,YACXiJ,EAAOjJ,WAAWgP,kBAOvBjU,EAAOyB,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFzB,EAAO63B,QAAS14B,KAAKmG,eAAkBnG,MAMxC,IAAIm5B,IAAS,aAEb,SAASC,IAAU32B,GAClB,MAAOA,GAAKsK,cAAgBtK,EAAKsK,aAAc,UAAa,GAG7DlM,EAAOG,GAAGqC,QACTg2B,SAAU,SAAUryB,GACnB,GAAIsyB,GAAS72B,EAAM0L,EAAKorB,EAAUC,EAAOv2B,EAAGw2B,EAC3C/2B,EAAI,CAEL,IAAK7B,EAAOiD,WAAYkD,GACvB,MAAOhH,MAAKsC,KAAM,SAAUW,GAC3BpC,EAAQb,MAAOq5B,SAAUryB,EAAMlF,KAAM9B,KAAMiD,EAAGm2B,GAAUp5B,SAI1D,IAAsB,gBAAVgH,IAAsBA,EAAQ,CACzCsyB,EAAUtyB,EAAMmF,MAAOmP,MAEvB,OAAU7Y,EAAOzC,KAAM0C,KAKtB,GAJA62B,EAAWH,GAAU32B,GACrB0L,EAAwB,IAAlB1L,EAAKyC,WACR,IAAMq0B,EAAW,KAAMl1B,QAAS80B,GAAQ,KAEhC,CACVl2B,EAAI,CACJ,OAAUu2B,EAAQF,EAASr2B,KACrBkL,EAAI7N,QAAS,IAAMk5B,EAAQ,KAAQ,IACvCrrB,GAAOqrB,EAAQ,IAKjBC,GAAa54B,EAAO4E,KAAM0I,GACrBorB,IAAaE,GACjBh3B,EAAKuK,aAAc,QAASysB,IAMhC,MAAOz5B,OAGR05B,YAAa,SAAU1yB,GACtB,GAAIsyB,GAAS72B,EAAM0L,EAAKorB,EAAUC,EAAOv2B,EAAGw2B,EAC3C/2B,EAAI,CAEL,IAAK7B,EAAOiD,WAAYkD,GACvB,MAAOhH,MAAKsC,KAAM,SAAUW,GAC3BpC,EAAQb,MAAO05B,YAAa1yB,EAAMlF,KAAM9B,KAAMiD,EAAGm2B,GAAUp5B,SAI7D,KAAM4C,UAAUhB,OACf,MAAO5B,MAAKiR,KAAM,QAAS,GAG5B,IAAsB,gBAAVjK,IAAsBA,EAAQ,CACzCsyB,EAAUtyB,EAAMmF,MAAOmP,MAEvB,OAAU7Y,EAAOzC,KAAM0C,KAOtB,GANA62B,EAAWH,GAAU32B,GAGrB0L,EAAwB,IAAlB1L,EAAKyC,WACR,IAAMq0B,EAAW,KAAMl1B,QAAS80B,GAAQ,KAEhC,CACVl2B,EAAI,CACJ,OAAUu2B,EAAQF,EAASr2B,KAG1B,MAAQkL,EAAI7N,QAAS,IAAMk5B,EAAQ,KAAQ,GAC1CrrB,EAAMA,EAAI9J,QAAS,IAAMm1B,EAAQ,IAAK,IAKxCC,GAAa54B,EAAO4E,KAAM0I,GACrBorB,IAAaE,GACjBh3B,EAAKuK,aAAc,QAASysB,IAMhC,MAAOz5B,OAGR25B,YAAa,SAAU3yB,EAAO4yB,GAC7B,GAAIj1B,SAAcqC,EAElB,OAAyB,iBAAb4yB,IAAmC,WAATj1B,EAC9Bi1B,EAAW55B,KAAKq5B,SAAUryB,GAAUhH,KAAK05B,YAAa1yB,GAGzDnG,EAAOiD,WAAYkD,GAChBhH,KAAKsC,KAAM,SAAUI,GAC3B7B,EAAQb,MAAO25B,YACd3yB,EAAMlF,KAAM9B,KAAM0C,EAAG02B,GAAUp5B,MAAQ45B,GACvCA,KAKI55B,KAAKsC,KAAM,WACjB,GAAI+M,GAAW3M,EAAGkX,EAAMigB,CAExB,IAAc,WAATl1B,EAAoB,CAGxBjC,EAAI,EACJkX,EAAO/Y,EAAQb,MACf65B,EAAa7yB,EAAMmF,MAAOmP,MAE1B,OAAUjM,EAAYwqB,EAAYn3B,KAG5BkX,EAAKkgB,SAAUzqB,GACnBuK,EAAK8f,YAAarqB,GAElBuK,EAAKyf,SAAUhqB,OAKIpL,UAAV+C,GAAgC,YAATrC,IAClC0K,EAAY+pB,GAAUp5B,MACjBqP,GAGJiR,EAASN,IAAKhgB,KAAM,gBAAiBqP,GAOjCrP,KAAKgN,cACThN,KAAKgN,aAAc,QAClBqC,GAAarI,KAAU,EACvB,GACAsZ,EAASve,IAAK/B,KAAM,kBAAqB,QAO9C85B,SAAU,SAAUh5B,GACnB,GAAIuO,GAAW5M,EACdC,EAAI,CAEL2M,GAAY,IAAMvO,EAAW,GAC7B,OAAU2B,EAAOzC,KAAM0C,KACtB,GAAuB,IAAlBD,EAAKyC,WACP,IAAMk0B,GAAU32B,GAAS,KAAM4B,QAAS80B,GAAQ,KAChD74B,QAAS+O,GAAc,GAEzB,OAAO,CAIT,QAAO,IAOT,IAAI0qB,IAAU,MACbC,GAAU,kBAEXn5B,GAAOG,GAAGqC,QACT6N,IAAK,SAAUlK,GACd,GAAIka,GAAO/e,EAAK2B,EACfrB,EAAOzC,KAAM,EAEd,EAAA,GAAM4C,UAAUhB,OA4BhB,MAFAkC,GAAajD,EAAOiD,WAAYkD,GAEzBhH,KAAKsC,KAAM,SAAUI,GAC3B,GAAIwO,EAEmB,KAAlBlR,KAAKkF,WAKTgM,EADIpN,EACEkD,EAAMlF,KAAM9B,KAAM0C,EAAG7B,EAAQb,MAAOkR,OAEpClK,EAIK,MAAPkK,EACJA,EAAM,GAEoB,gBAARA,GAClBA,GAAO,GAEIrQ,EAAOmD,QAASkN,KAC3BA,EAAMrQ,EAAO2B,IAAK0O,EAAK,SAAUlK,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItCka,EAAQrgB,EAAOo5B,SAAUj6B,KAAK2E,OAAU9D,EAAOo5B,SAAUj6B,KAAKkG,SAASC,eAGjE+a,GAAY,OAASA,IAA+Cjd,SAApCid,EAAMlB,IAAKhgB,KAAMkR,EAAK,WAC3DlR,KAAKgH,MAAQkK,KAzDd,IAAKzO,EAIJ,MAHAye,GAAQrgB,EAAOo5B,SAAUx3B,EAAKkC,OAC7B9D,EAAOo5B,SAAUx3B,EAAKyD,SAASC,eAE3B+a,GACJ,OAASA,IACgCjd,UAAvC9B,EAAM+e,EAAMnf,IAAKU,EAAM,UAElBN,GAGRA,EAAMM,EAAKuE,MAEW,gBAAR7E,GAGbA,EAAIkC,QAAS01B,GAAS,IAGf,MAAP53B,EAAc,GAAKA,OA4CxBtB,EAAOwC,QACN42B,UACClX,QACChhB,IAAK,SAAUU,GAEd,GAAIyO,GAAMrQ,EAAO4O,KAAKwB,KAAMxO,EAAM,QAClC,OAAc,OAAPyO,EACNA,EAMArQ,EAAO4E,KAAM5E,EAAO8E,KAAMlD,IAAS4B,QAAS21B,GAAS,OAGxDhyB,QACCjG,IAAK,SAAUU,GAYd,IAXA,GAAIuE,GAAO+b,EACVzf,EAAUb,EAAKa,QACfoX,EAAQjY,EAAKqS,cACbuQ,EAAoB,eAAd5iB,EAAKkC,MAAiC,EAAR+V,EACpCsD,EAASqH,EAAM,QACfiL,EAAMjL,EAAM3K,EAAQ,EAAIpX,EAAQ1B,OAChCc,EAAY,EAARgY,EACH4V,EACAjL,EAAM3K,EAAQ,EAGJ4V,EAAJ5tB,EAASA,IAIhB,GAHAqgB,EAASzf,EAASZ,IAGXqgB,EAAOlO,UAAYnS,IAAMgY,KAG5B/Z,EAAQu3B,aACRnV,EAAOpO,SAAiD,OAAtCoO,EAAOhW,aAAc,gBACtCgW,EAAOjd,WAAW6O,WACnB9T,EAAOqF,SAAU6c,EAAOjd,WAAY,aAAiB,CAMxD,GAHAkB,EAAQnG,EAAQkiB,GAAS7R,MAGpBmU,EACJ,MAAOre,EAIRgX,GAAO3d,KAAM2G,GAIf,MAAOgX,IAGRgC,IAAK,SAAUvd,EAAMuE,GACpB,GAAIkzB,GAAWnX,EACdzf,EAAUb,EAAKa,QACf0a,EAASnd,EAAOwF,UAAWW,GAC3BtE,EAAIY,EAAQ1B,MAEb,OAAQc,IACPqgB,EAASzf,EAASZ,IACbqgB,EAAOlO,SACXhU,EAAO2F,QAAS3F,EAAOo5B,SAASlX,OAAOhhB,IAAKghB,GAAU/E,GAAW,MAEjEkc,GAAY,EAQd,OAHMA,KACLz3B,EAAKqS,cAAgB,IAEfkJ,OAOXnd,EAAOyB,MAAQ,QAAS,YAAc,WACrCzB,EAAOo5B,SAAUj6B,OAChBggB,IAAK,SAAUvd,EAAMuE,GACpB,MAAKnG,GAAOmD,QAASgD,GACXvE,EAAKmS,QAAU/T,EAAO2F,QAAS3F,EAAQ4B,GAAOyO,MAAOlK,GAAU,GADzE,SAKIrG,EAAQq3B,UACbn3B,EAAOo5B,SAAUj6B,MAAO+B,IAAM,SAAUU,GACvC,MAAwC,QAAjCA,EAAKsK,aAAc,SAAqB,KAAOtK,EAAKuE,SAW9D,IAAImzB,IAAc,iCAElBt5B,GAAOwC,OAAQxC,EAAO0kB,OAErB2D,QAAS,SAAU3D,EAAOtF,EAAMxd,EAAM23B,GAErC,GAAI13B,GAAGyL,EAAKhH,EAAKkzB,EAAYC,EAAQpU,EAAQL,EAC5C0U,GAAc93B,GAAQ7C,GACtB+E,EAAOlE,EAAOqB,KAAMyjB,EAAO,QAAWA,EAAM5gB,KAAO4gB,EACnDQ,EAAatlB,EAAOqB,KAAMyjB,EAAO,aAAgBA,EAAMgB,UAAU9e,MAAO,OAKzE,IAHA0G,EAAMhH,EAAM1E,EAAOA,GAAQ7C,EAGJ,IAAlB6C,EAAKyC,UAAoC,IAAlBzC,EAAKyC,WAK5Bi1B,GAAYrtB,KAAMnI,EAAO9D,EAAO0kB,MAAMY,aAItCxhB,EAAKrE,QAAS,KAAQ,KAG1BylB,EAAaphB,EAAK8C,MAAO,KACzB9C,EAAOohB,EAAWrY,QAClBqY,EAAW5iB,QAEZm3B,EAAS31B,EAAKrE,QAAS,KAAQ,GAAK,KAAOqE,EAG3C4gB,EAAQA,EAAO1kB,EAAOqD,SACrBqhB,EACA,GAAI1kB,GAAOkoB,MAAOpkB,EAAuB,gBAAV4gB,IAAsBA,GAGtDA,EAAMiV,UAAYJ,EAAe,EAAI,EACrC7U,EAAMgB,UAAYR,EAAW7Y,KAAM,KACnCqY,EAAM8B,WAAa9B,EAAMgB,UACxB,GAAIzc,QAAQ,UAAYic,EAAW7Y,KAAM,iBAAoB,WAC7D,KAGDqY,EAAM7S,OAASzO,OACTshB,EAAM3hB,SACX2hB,EAAM3hB,OAASnB,GAIhBwd,EAAe,MAARA,GACJsF,GACF1kB,EAAOwF,UAAW4Z,GAAQsF,IAG3BM,EAAUhlB,EAAO0kB,MAAMM,QAASlhB,OAC1By1B,IAAgBvU,EAAQqD,SAAWrD,EAAQqD,QAAQvmB,MAAOF,EAAMwd,MAAW,GAAjF,CAMA,IAAMma,IAAiBvU,EAAQoD,WAAapoB,EAAOgE,SAAUpC,GAAS,CAMrE,IAJA43B,EAAaxU,EAAQQ,cAAgB1hB,EAC/Bw1B,GAAYrtB,KAAMutB,EAAa11B,KACpCwJ,EAAMA,EAAIrI,YAEHqI,EAAKA,EAAMA,EAAIrI,WACtBy0B,EAAUl6B,KAAM8N,GAChBhH,EAAMgH,CAIFhH,MAAU1E,EAAK8J,eAAiB3M,IACpC26B,EAAUl6B,KAAM8G,EAAI8H,aAAe9H,EAAIszB,cAAgB16B,GAKzD2C,EAAI,CACJ,QAAUyL,EAAMosB,EAAW73B,QAAY6iB,EAAM2B,uBAE5C3B,EAAM5gB,KAAOjC,EAAI,EAChB23B,EACAxU,EAAQS,UAAY3hB,EAGrBuhB,GAAW5F,EAASve,IAAKoM,EAAK,eAAoBoX,EAAM5gB,OACvD2b,EAASve,IAAKoM,EAAK,UACf+X,GACJA,EAAOvjB,MAAOwL,EAAK8R,GAIpBiG,EAASoU,GAAUnsB,EAAKmsB,GACnBpU,GAAUA,EAAOvjB,OAAS4c,EAAYpR,KAC1CoX,EAAM7S,OAASwT,EAAOvjB,MAAOwL,EAAK8R,GAC7BsF,EAAM7S,UAAW,GACrB6S,EAAM+B,iBAoCT,OAhCA/B,GAAM5gB,KAAOA,EAGPy1B,GAAiB7U,EAAMgE,sBAEpB1D,EAAQzC,UACfyC,EAAQzC,SAASzgB,MAAO43B,EAAUlxB,MAAO4W,MAAW,IACpDV,EAAY9c,IAIP63B,GAAUz5B,EAAOiD,WAAYrB,EAAMkC,MAAa9D,EAAOgE,SAAUpC,KAGrE0E,EAAM1E,EAAM63B,GAEPnzB,IACJ1E,EAAM63B,GAAW,MAIlBz5B,EAAO0kB,MAAMY,UAAYxhB,EACzBlC,EAAMkC,KACN9D,EAAO0kB,MAAMY,UAAYliB,OAEpBkD,IACJ1E,EAAM63B,GAAWnzB,IAMdoe,EAAM7S,SAKdgoB,SAAU,SAAU/1B,EAAMlC,EAAM8iB,GAC/B,GAAI1Z,GAAIhL,EAAOwC,OACd,GAAIxC,GAAOkoB,MACXxD,GAEC5gB,KAAMA,EACN+kB,aAAa,GAIf7oB,GAAO0kB,MAAM2D,QAASrd,EAAG,KAAMpJ,MAKjC5B,EAAOG,GAAGqC,QAET6lB,QAAS,SAAUvkB,EAAMsb,GACxB,MAAOjgB,MAAKsC,KAAM,WACjBzB,EAAO0kB,MAAM2D,QAASvkB,EAAMsb,EAAMjgB,SAGpC2e,eAAgB,SAAUha,EAAMsb,GAC/B,GAAIxd,GAAOzC,KAAM,EACjB,OAAKyC,GACG5B,EAAO0kB,MAAM2D,QAASvkB,EAAMsb,EAAMxd,GAAM,GADhD,UAOF5B,EAAOyB,KAAM,0MAEsDmF,MAAO,KACzE,SAAU/E,EAAGa,GAGb1C,EAAOG,GAAIuC,GAAS,SAAU0c,EAAMjf,GACnC,MAAO4B,WAAUhB,OAAS,EACzB5B,KAAKmlB,GAAI5hB,EAAM,KAAM0c,EAAMjf,GAC3BhB,KAAKkpB,QAAS3lB,MAIjB1C,EAAOG,GAAGqC,QACTs3B,MAAO,SAAUC,EAAQC,GACxB,MAAO76B,MAAK4pB,WAAYgR,GAAS/Q,WAAYgR,GAASD,MAOxDj6B,EAAQm6B,QAAU,aAAe/6B,GAW3BY,EAAQm6B,SACbj6B,EAAOyB,MAAQ+R,MAAO,UAAW8U,KAAM,YAAc,SAAUa,EAAMlD,GAGpE,GAAI9Y,GAAU,SAAUuX,GACvB1kB,EAAO0kB,MAAMmV,SAAU5T,EAAKvB,EAAM3hB,OAAQ/C,EAAO0kB,MAAMuB,IAAKvB,IAG7D1kB,GAAO0kB,MAAMM,QAASiB,IACrBL,MAAO,WACN,GAAIzX,GAAMhP,KAAKuM,eAAiBvM,KAC/B+6B,EAAWza,EAASpB,OAAQlQ,EAAK8X,EAE5BiU,IACL/rB,EAAIG,iBAAkB6a,EAAMhc,GAAS,GAEtCsS,EAASpB,OAAQlQ,EAAK8X,GAAOiU,GAAY,GAAM,IAEhDnU,SAAU,WACT,GAAI5X,GAAMhP,KAAKuM,eAAiBvM,KAC/B+6B,EAAWza,EAASpB,OAAQlQ,EAAK8X,GAAQ,CAEpCiU,GAKLza,EAASpB,OAAQlQ,EAAK8X,EAAKiU,IAJ3B/rB,EAAI8P,oBAAqBkL,EAAMhc,GAAS,GACxCsS,EAASlE,OAAQpN,EAAK8X,OAS3B,IAAI3S,IAAWpU,EAAOoU,SAElB6mB,GAAQn6B,EAAOwG,MAEf4zB,GAAS,IAMbp6B,GAAO8f,UAAY,SAAUV,GAC5B,MAAOib,MAAKC,MAAOlb,EAAO,KAK3Bpf,EAAOu6B,SAAW,SAAUnb,GAC3B,GAAIlN,EACJ,KAAMkN,GAAwB,gBAATA,GACpB,MAAO,KAIR,KACClN,GAAM,GAAMhT,GAAOs7B,WAAcC,gBAAiBrb,EAAM,YACvD,MAAQpU,GACTkH,EAAM9O,OAMP,MAHM8O,KAAOA,EAAIpG,qBAAsB,eAAgB/K,QACtDf,EAAO0D,MAAO,gBAAkB0b,GAE1BlN,EAIR,IACCwoB,IAAQ,OACRC,GAAM,gBACNC,GAAW,6BAGXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QAWZrG,MAOAsG,MAGAC,GAAW,KAAK17B,OAAQ,KAGxB27B,GAAen8B,EAAS8F,cAAe,IACvCq2B,IAAavnB,KAAOL,GAASK,IAG9B,SAASwnB,IAA6BC,GAGrC,MAAO,UAAUC,EAAoBzf,GAED,gBAAvByf,KACXzf,EAAOyf,EACPA,EAAqB,IAGtB,IAAIC,GACHz5B,EAAI,EACJ05B,EAAYF,EAAmB/1B,cAAcgG,MAAOmP,MAErD,IAAKza,EAAOiD,WAAY2Y,GAGvB,MAAU0f,EAAWC,EAAW15B,KAGR,MAAlBy5B,EAAU,IACdA,EAAWA,EAASh8B,MAAO,IAAO,KAChC87B,EAAWE,GAAaF,EAAWE,QAAmBrrB,QAAS2L,KAI/Dwf,EAAWE,GAAaF,EAAWE,QAAmB97B,KAAMoc,IAQnE,QAAS4f,IAA+BJ,EAAW34B,EAASuyB,EAAiByG,GAE5E,GAAIC,MACHC,EAAqBP,IAAcJ,EAEpC,SAASY,GAASN,GACjB,GAAItnB,EAcJ,OAbA0nB,GAAWJ,IAAa,EACxBt7B,EAAOyB,KAAM25B,EAAWE,OAAkB,SAAU9wB,EAAGqxB,GACtD,GAAIC,GAAsBD,EAAoBp5B,EAASuyB,EAAiByG,EACxE,OAAoC,gBAAxBK,IACVH,GAAqBD,EAAWI,GAKtBH,IACD3nB,EAAW8nB,GADf,QAHNr5B,EAAQ84B,UAAUtrB,QAAS6rB,GAC3BF,EAASE,IACF,KAKF9nB,EAGR,MAAO4nB,GAASn5B,EAAQ84B,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,QAASG,IAAYh5B,EAAQJ,GAC5B,GAAIyB,GAAKpB,EACRg5B,EAAch8B,EAAOi8B,aAAaD,eAEnC,KAAM53B,IAAOzB,GACQS,SAAfT,EAAKyB,MACP43B,EAAa53B,GAAQrB,EAAWC,IAAUA,OAAiBoB,GAAQzB,EAAKyB,GAO5E,OAJKpB,IACJhD,EAAOwC,QAAQ,EAAMO,EAAQC,GAGvBD,EAOR,QAASm5B,IAAqBC,EAAGV,EAAOW,GAEvC,GAAIC,GAAIv4B,EAAMw4B,EAAeC,EAC5BjjB,EAAW6iB,EAAE7iB,SACbiiB,EAAYY,EAAEZ,SAGf,OAA2B,MAAnBA,EAAW,GAClBA,EAAU1uB,QACEzJ,SAAPi5B,IACJA,EAAKF,EAAEK,UAAYf,EAAMgB,kBAAmB,gBAK9C,IAAKJ,EACJ,IAAMv4B,IAAQwV,GACb,GAAKA,EAAUxV,IAAUwV,EAAUxV,GAAOmI,KAAMowB,GAAO,CACtDd,EAAUtrB,QAASnM,EACnB,OAMH,GAAKy3B,EAAW,IAAOa,GACtBE,EAAgBf,EAAW,OACrB,CAGN,IAAMz3B,IAAQs4B,GAAY,CACzB,IAAMb,EAAW,IAAOY,EAAEO,WAAY54B,EAAO,IAAMy3B,EAAW,IAAQ,CACrEe,EAAgBx4B,CAChB,OAEKy4B,IACLA,EAAgBz4B,GAKlBw4B,EAAgBA,GAAiBC,EAMlC,MAAKD,IACCA,IAAkBf,EAAW,IACjCA,EAAUtrB,QAASqsB,GAEbF,EAAWE,IAJnB,OAWD,QAASK,IAAaR,EAAGS,EAAUnB,EAAOoB,GACzC,GAAIC,GAAOC,EAASC,EAAM12B,EAAKkT,EAC9BkjB,KAGAnB,EAAYY,EAAEZ,UAAUj8B,OAGzB,IAAKi8B,EAAW,GACf,IAAMyB,IAAQb,GAAEO,WACfA,EAAYM,EAAK13B,eAAkB62B,EAAEO,WAAYM,EAInDD,GAAUxB,EAAU1uB,OAGpB,OAAQkwB,EAcP,GAZKZ,EAAEc,eAAgBF,KACtBtB,EAAOU,EAAEc,eAAgBF,IAAcH,IAIlCpjB,GAAQqjB,GAAaV,EAAEe,aAC5BN,EAAWT,EAAEe,WAAYN,EAAUT,EAAEb,WAGtC9hB,EAAOujB,EACPA,EAAUxB,EAAU1uB,QAKnB,GAAiB,MAAZkwB,EAEJA,EAAUvjB,MAGJ,IAAc,MAATA,GAAgBA,IAASujB,EAAU,CAM9C,GAHAC,EAAON,EAAYljB,EAAO,IAAMujB,IAAaL,EAAY,KAAOK,IAG1DC,EACL,IAAMF,IAASJ,GAId,GADAp2B,EAAMw2B,EAAMl2B,MAAO,KACdN,EAAK,KAAQy2B,IAGjBC,EAAON,EAAYljB,EAAO,IAAMlT,EAAK,KACpCo2B,EAAY,KAAOp2B,EAAK,KACb,CAGN02B,KAAS,EACbA,EAAON,EAAYI,GAGRJ,EAAYI,MAAY,IACnCC,EAAUz2B,EAAK,GACfi1B,EAAUtrB,QAAS3J,EAAK,IAEzB,OAOJ,GAAK02B,KAAS,EAGb,GAAKA,GAAQb,EAAAA,UACZS,EAAWI,EAAMJ,OAEjB,KACCA,EAAWI,EAAMJ,GAChB,MAAQ5xB,GACT,OACC8Q,MAAO,cACPpY,MAAOs5B,EAAOhyB,EAAI,sBAAwBwO,EAAO,OAASujB,IASjE,OAASjhB,MAAO,UAAWsD,KAAMwd,GAGlC58B,EAAOwC,QAGN26B,OAAQ,EAGRC,gBACAC,QAEApB,cACCqB,IAAKhqB,GAASK,KACd7P,KAAM,MACNy5B,QAAS1C,GAAe5uB,KAAMqH,GAASkqB,UACvC7+B,QAAQ,EACR8+B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAabC,SACCvI,IAAK4F,GACLn2B,KAAM,aACN4lB,KAAM,YACNxY,IAAK,4BACL2rB,KAAM,qCAGPvkB,UACCpH,IAAK,UACLwY,KAAM,SACNmT,KAAM,YAGPZ,gBACC/qB,IAAK,cACLpN,KAAM,eACN+4B,KAAM,gBAKPnB,YAGCoB,SAAUlzB,OAGVmzB,aAAa,EAGbC,YAAah+B,EAAO8f,UAGpBme,WAAYj+B,EAAOu6B,UAOpByB,aACCsB,KAAK,EACLp9B,SAAS,IAOXg+B,UAAW,SAAUn7B,EAAQo7B,GAC5B,MAAOA,GAGNpC,GAAYA,GAAYh5B,EAAQ/C,EAAOi8B,cAAgBkC,GAGvDpC,GAAY/7B,EAAOi8B,aAAcl5B,IAGnCq7B,cAAejD,GAA6BzG,IAC5C2J,cAAelD,GAA6BH,IAG5CsD,KAAM,SAAUhB,EAAK76B,GAGA,gBAAR66B,KACX76B,EAAU66B,EACVA,EAAMl6B,QAIPX,EAAUA,KAEV,IAAI87B,GAGHC,EAGAC,EACAC,EAGAC,EAGAC,EAGAC,EAGAh9B,EAGAs6B,EAAIn8B,EAAOk+B,aAAez7B,GAG1Bq8B,EAAkB3C,EAAEj8B,SAAWi8B,EAG/B4C,EAAqB5C,EAAEj8B,UACpB4+B,EAAgBz6B,UAAYy6B,EAAgBj+B,QAC7Cb,EAAQ8+B,GACR9+B,EAAO0kB,MAGTzI,EAAWjc,EAAO2b,WAClBqjB,EAAmBh/B,EAAO6a,UAAW,eAGrCokB,EAAa9C,EAAE8C,eAGfC,KACAC,KAGArjB,EAAQ,EAGRsjB,EAAW,WAGX3D,GACCvd,WAAY,EAGZue,kBAAmB,SAAUr4B,GAC5B,GAAIkH,EACJ,IAAe,IAAVwQ,EAAc,CAClB,IAAM4iB,EAAkB,CACvBA,IACA,OAAUpzB,EAAQsvB,GAASjvB,KAAM8yB,GAChCC,EAAiBpzB,EAAO,GAAIhG,eAAkBgG,EAAO,GAGvDA,EAAQozB,EAAiBt6B,EAAIkB,eAE9B,MAAgB,OAATgG,EAAgB,KAAOA,GAI/B+zB,sBAAuB,WACtB,MAAiB,KAAVvjB,EAAc2iB,EAAwB,MAI9Ca,iBAAkB,SAAU58B,EAAMyD,GACjC,GAAIo5B,GAAQ78B,EAAK4C,aAKjB,OAJMwW,KACLpZ,EAAOy8B,EAAqBI,GAAUJ,EAAqBI,IAAW78B,EACtEw8B,EAAgBx8B,GAASyD,GAEnBhH,MAIRqgC,iBAAkB,SAAU17B,GAI3B,MAHMgY,KACLqgB,EAAEK,SAAW14B,GAEP3E,MAIR8/B,WAAY,SAAUt9B,GACrB,GAAI6C,EACJ,IAAK7C,EACJ,GAAa,EAARma,EACJ,IAAMtX,IAAQ7C,GAGbs9B,EAAYz6B,IAAWy6B,EAAYz6B,GAAQ7C,EAAK6C,QAKjDi3B,GAAMzf,OAAQra,EAAK85B,EAAMgE,QAG3B,OAAOtgC,OAIRugC,MAAO,SAAUC,GAChB,GAAIC,GAAYD,GAAcP,CAK9B,OAJKb,IACJA,EAAUmB,MAAOE,GAElB73B,EAAM,EAAG63B,GACFzgC,MAuBV,IAlBA8c,EAASF,QAAS0f,GAAQrG,SAAW4J,EAAiBjlB,IACtD0hB,EAAMoE,QAAUpE,EAAM1zB,KACtB0zB,EAAM/3B,MAAQ+3B,EAAMvf,KAMpBigB,EAAEmB,MAAUA,GAAOnB,EAAEmB,KAAOhqB,GAASK,MAAS,IAAKnQ,QAASk3B,GAAO,IACjEl3B,QAASu3B,GAAWznB,GAASkqB,SAAW,MAG1CrB,EAAEr4B,KAAOrB,EAAQq9B,QAAUr9B,EAAQqB,MAAQq4B,EAAE2D,QAAU3D,EAAEr4B,KAGzDq4B,EAAEZ,UAAYv7B,EAAO4E,KAAMu3B,EAAEb,UAAY,KAAMh2B,cAAcgG,MAAOmP,KAAiB,IAG/D,MAAjB0hB,EAAE4D,YAAsB,CAC5BnB,EAAY7/B,EAAS8F,cAAe,IAIpC,KACC+5B,EAAUjrB,KAAOwoB,EAAEmB,IAInBsB,EAAUjrB,KAAOirB,EAAUjrB,KAC3BwoB,EAAE4D,YAAc7E,GAAasC,SAAW,KAAOtC,GAAa8E,MAC3DpB,EAAUpB,SAAW,KAAOoB,EAAUoB,KACtC,MAAQh1B,GAITmxB,EAAE4D,aAAc,GAalB,GARK5D,EAAE/c,MAAQ+c,EAAEsB,aAAiC,gBAAXtB,GAAE/c,OACxC+c,EAAE/c,KAAOpf,EAAOigC,MAAO9D,EAAE/c,KAAM+c,EAAE+D,cAIlC1E,GAA+B9G,GAAYyH,EAAG15B,EAASg5B,GAGxC,IAAV3f,EACJ,MAAO2f,EAKRoD,GAAc7+B,EAAO0kB,OAASyX,EAAEx9B,OAG3BkgC,GAAmC,IAApB7+B,EAAOm9B,UAC1Bn9B,EAAO0kB,MAAM2D,QAAS,aAIvB8T,EAAEr4B,KAAOq4B,EAAEr4B,KAAKnD,cAGhBw7B,EAAEgE,YAAcrF,GAAW7uB,KAAMkwB,EAAEr4B,MAInC06B,EAAWrC,EAAEmB,IAGPnB,EAAEgE,aAGFhE,EAAE/c,OACNof,EAAarC,EAAEmB,MAASlD,GAAOnuB,KAAMuyB,GAAa,IAAM,KAAQrC,EAAE/c,WAG3D+c,GAAE/c,MAIL+c,EAAExvB,SAAU,IAChBwvB,EAAEmB,IAAM3C,GAAI1uB,KAAMuyB,GAGjBA,EAASh7B,QAASm3B,GAAK,OAASR,MAGhCqE,GAAapE,GAAOnuB,KAAMuyB,GAAa,IAAM,KAAQ,KAAOrE,OAK1DgC,EAAEiE,aACDpgC,EAAOo9B,aAAcoB,IACzB/C,EAAM6D,iBAAkB,oBAAqBt/B,EAAOo9B,aAAcoB,IAE9Dx+B,EAAOq9B,KAAMmB,IACjB/C,EAAM6D,iBAAkB,gBAAiBt/B,EAAOq9B,KAAMmB,MAKnDrC,EAAE/c,MAAQ+c,EAAEgE,YAAchE,EAAEwB,eAAgB,GAASl7B,EAAQk7B,cACjElC,EAAM6D,iBAAkB,eAAgBnD,EAAEwB,aAI3ClC,EAAM6D,iBACL,SACAnD,EAAEZ,UAAW,IAAOY,EAAEyB,QAASzB,EAAEZ,UAAW,IAC3CY,EAAEyB,QAASzB,EAAEZ,UAAW,KACA,MAArBY,EAAEZ,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7DkB,EAAEyB,QAAS,KAIb,KAAM/7B,IAAKs6B,GAAEkE,QACZ5E,EAAM6D,iBAAkBz9B,EAAGs6B,EAAEkE,QAASx+B,GAIvC,IAAKs6B,EAAEmE,aACJnE,EAAEmE,WAAWr/B,KAAM69B,EAAiBrD,EAAOU,MAAQ,GAAmB,IAAVrgB,GAG9D,MAAO2f,GAAMiE,OAIdN,GAAW,OAGX,KAAMv9B,KAAOg+B,QAAS,EAAGn8B,MAAO,EAAG0xB,SAAU,GAC5CqG,EAAO55B,GAAKs6B,EAAGt6B,GAOhB,IAHA08B,EAAY/C,GAA+BR,GAAYmB,EAAG15B,EAASg5B,GAK5D,CASN,GARAA,EAAMvd,WAAa,EAGd2gB,GACJE,EAAmB1W,QAAS,YAAcoT,EAAOU,IAInC,IAAVrgB,EACJ,MAAO2f,EAIHU,GAAEuB,OAASvB,EAAElF,QAAU,IAC3B0H,EAAez/B,EAAOkf,WAAY,WACjCqd,EAAMiE,MAAO,YACXvD,EAAElF,SAGN,KACCnb,EAAQ,EACRyiB,EAAUgC,KAAMrB,EAAgBn3B,GAC/B,MAAQiD,GAGT,KAAa,EAAR8Q,GAKJ,KAAM9Q,EAJNjD,GAAM,GAAIiD,QA5BZjD,GAAM,GAAI,eAsCX,SAASA,GAAM03B,EAAQe,EAAkBpE,EAAWiE,GACnD,GAAIxD,GAAWgD,EAASn8B,EAAOk5B,EAAU6D,EACxCd,EAAaa,CAGC,KAAV1kB,IAKLA,EAAQ,EAGH6iB,GACJz/B,EAAOg4B,aAAcyH,GAKtBJ,EAAYn7B,OAGZq7B,EAAwB4B,GAAW,GAGnC5E,EAAMvd,WAAauhB,EAAS,EAAI,EAAI,EAGpC5C,EAAY4C,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxCrD,IACJQ,EAAWV,GAAqBC,EAAGV,EAAOW,IAI3CQ,EAAWD,GAAaR,EAAGS,EAAUnB,EAAOoB,GAGvCA,GAGCV,EAAEiE,aACNK,EAAWhF,EAAMgB,kBAAmB,iBAC/BgE,IACJzgC,EAAOo9B,aAAcoB,GAAaiC,GAEnCA,EAAWhF,EAAMgB,kBAAmB,QAC/BgE,IACJzgC,EAAOq9B,KAAMmB,GAAaiC,IAKZ,MAAXhB,GAA6B,SAAXtD,EAAEr4B,KACxB67B,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAa/C,EAAS9gB,MACtB+jB,EAAUjD,EAASxd,KACnB1b,EAAQk5B,EAASl5B,MACjBm5B,GAAan5B,KAKdA,EAAQi8B,GACHF,GAAWE,IACfA,EAAa,QACC,EAATF,IACJA,EAAS,KAMZhE,EAAMgE,OAASA,EACfhE,EAAMkE,YAAea,GAAoBb,GAAe,GAGnD9C,EACJ5gB,EAASqB,YAAawhB,GAAmBe,EAASF,EAAYlE,IAE9Dxf,EAASiZ,WAAY4J,GAAmBrD,EAAOkE,EAAYj8B,IAI5D+3B,EAAMwD,WAAYA,GAClBA,EAAa77B,OAERy7B,GACJE,EAAmB1W,QAASwU,EAAY,cAAgB,aACrDpB,EAAOU,EAAGU,EAAYgD,EAAUn8B,IAIpCs7B,EAAiBtjB,SAAUojB,GAAmBrD,EAAOkE,IAEhDd,IACJE,EAAmB1W,QAAS,gBAAkBoT,EAAOU,MAG3Cn8B,EAAOm9B,QAChBn9B,EAAO0kB,MAAM2D,QAAS,cAKzB,MAAOoT,IAGRiF,QAAS,SAAUpD,EAAKle,EAAM1d,GAC7B,MAAO1B,GAAOkB,IAAKo8B,EAAKle,EAAM1d,EAAU,SAGzCi/B,UAAW,SAAUrD,EAAK57B,GACzB,MAAO1B,GAAOkB,IAAKo8B,EAAKl6B,OAAW1B,EAAU,aAI/C1B,EAAOyB,MAAQ,MAAO,QAAU,SAAUI,EAAGi+B,GAC5C9/B,EAAQ8/B,GAAW,SAAUxC,EAAKle,EAAM1d,EAAUoC,GAUjD,MAPK9D,GAAOiD,WAAYmc,KACvBtb,EAAOA,GAAQpC,EACfA,EAAW0d,EACXA,EAAOhc,QAIDpD,EAAOs+B,KAAMt+B,EAAOwC,QAC1B86B,IAAKA,EACLx5B,KAAMg8B,EACNxE,SAAUx3B,EACVsb,KAAMA,EACNygB,QAASn+B,GACP1B,EAAOkD,cAAeo6B,IAASA,OAKpCt9B,EAAO2qB,SAAW,SAAU2S,GAC3B,MAAOt9B,GAAOs+B,MACbhB,IAAKA,EAGLx5B,KAAM,MACNw3B,SAAU,SACVoC,OAAO,EACP/+B,QAAQ,EACRiiC,UAAU,KAKZ5gC,EAAOG,GAAGqC,QACTq+B,QAAS,SAAUnW,GAClB,GAAIpH,EAEJ,OAAKtjB,GAAOiD,WAAYynB,GAChBvrB,KAAKsC,KAAM,SAAUI,GAC3B7B,EAAQb,MAAO0hC,QAASnW,EAAKzpB,KAAM9B,KAAM0C,OAItC1C,KAAM,KAGVmkB,EAAOtjB,EAAQ0qB,EAAMvrB,KAAM,GAAIuM,eAAgBzJ,GAAI,GAAIa,OAAO,GAEzD3D,KAAM,GAAI8F,YACdqe,EAAKgI,aAAcnsB,KAAM,IAG1BmkB,EAAK3hB,IAAK,WACT,GAAIC,GAAOzC,IAEX,OAAQyC,EAAKk/B,kBACZl/B,EAAOA,EAAKk/B,iBAGb,OAAOl/B,KACJwpB,OAAQjsB,OAGNA,OAGR4hC,UAAW,SAAUrW,GACpB,MAAK1qB,GAAOiD,WAAYynB,GAChBvrB,KAAKsC,KAAM,SAAUI,GAC3B7B,EAAQb,MAAO4hC,UAAWrW,EAAKzpB,KAAM9B,KAAM0C,MAItC1C,KAAKsC,KAAM,WACjB,GAAIsX,GAAO/Y,EAAQb,MAClBma,EAAWP,EAAKO,UAEZA,GAASvY,OACbuY,EAASunB,QAASnW,GAGlB3R,EAAKqS,OAAQV,MAKhBpH,KAAM,SAAUoH,GACf,GAAIznB,GAAajD,EAAOiD,WAAYynB,EAEpC,OAAOvrB,MAAKsC,KAAM,SAAUI,GAC3B7B,EAAQb,MAAO0hC,QAAS59B,EAAaynB,EAAKzpB,KAAM9B,KAAM0C,GAAM6oB,MAI9DsW,OAAQ,WACP,MAAO7hC,MAAK+O,SAASzM,KAAM,WACpBzB,EAAOqF,SAAUlG,KAAM,SAC5Ba,EAAQb,MAAOssB,YAAatsB,KAAK4L,cAE/B1I,SAKNrC,EAAOkQ,KAAK8E,QAAQob,OAAS,SAAUxuB,GACtC,OAAQ5B,EAAOkQ,KAAK8E,QAAQisB,QAASr/B,IAEtC5B,EAAOkQ,KAAK8E,QAAQisB,QAAU,SAAUr/B,GAMvC,MAAOA,GAAKouB,YAAc,GAAKpuB,EAAKquB,aAAe,GAAKruB,EAAKs/B,iBAAiBngC,OAAS,EAMxF,IAAIogC,IAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAEhB,SAASC,IAAa7P,EAAQ9tB,EAAKq8B,EAAanmB,GAC/C,GAAIrX,EAEJ,IAAK1C,EAAOmD,QAASU,GAGpB7D,EAAOyB,KAAMoC,EAAK,SAAUhC,EAAG4/B,GACzBvB,GAAekB,GAASn1B,KAAM0lB,GAGlC5X,EAAK4X,EAAQ8P,GAKbD,GACC7P,EAAS,KAAqB,gBAAN8P,IAAuB,MAALA,EAAY5/B,EAAI,IAAO,IACjE4/B,EACAvB,EACAnmB,SAKG,IAAMmmB,GAAsC,WAAvBlgC,EAAO8D,KAAMD,GAUxCkW,EAAK4X,EAAQ9tB,OAPb,KAAMnB,IAAQmB,GACb29B,GAAa7P,EAAS,IAAMjvB,EAAO,IAAKmB,EAAKnB,GAAQw9B,EAAanmB,GAYrE/Z,EAAOigC,MAAQ,SAAU53B,EAAG63B,GAC3B,GAAIvO,GACHwK,KACApiB,EAAM,SAAU3V,EAAK+B,GAGpBA,EAAQnG,EAAOiD,WAAYkD,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEg2B,EAAGA,EAAEp7B,QAAW2gC,mBAAoBt9B,GAAQ,IAAMs9B,mBAAoBv7B,GASxE,IALqB/C,SAAhB88B,IACJA,EAAclgC,EAAOi8B,cAAgBj8B,EAAOi8B,aAAaiE,aAIrDlgC,EAAOmD,QAASkF,IAASA,EAAExH,SAAWb,EAAOkD,cAAemF,GAGhErI,EAAOyB,KAAM4G,EAAG,WACf0R,EAAK5a,KAAKuD,KAAMvD,KAAKgH,aAOtB,KAAMwrB,IAAUtpB,GACfm5B,GAAa7P,EAAQtpB,EAAGspB,GAAUuO,EAAanmB,EAKjD,OAAOoiB,GAAE9vB,KAAM,KAAM7I,QAAS29B,GAAK,MAGpCnhC,EAAOG,GAAGqC,QACTm/B,UAAW,WACV,MAAO3hC,GAAOigC,MAAO9gC,KAAKyiC,mBAE3BA,eAAgB,WACf,MAAOziC,MAAKwC,IAAK,WAGhB,GAAIwO,GAAWnQ,EAAOqf,KAAMlgB,KAAM,WAClC,OAAOgR,GAAWnQ,EAAOwF,UAAW2K,GAAahR,OAEjD0P,OAAQ,WACR,GAAI/K,GAAO3E,KAAK2E,IAGhB,OAAO3E,MAAKuD,OAAS1C,EAAQb,MAAOoZ,GAAI,cACvCgpB,GAAat1B,KAAM9M,KAAKkG,YAAei8B,GAAgBr1B,KAAMnI,KAC3D3E,KAAK4U,UAAY+N,EAAe7V,KAAMnI,MAEzCnC,IAAK,SAAUE,EAAGD,GAClB,GAAIyO,GAAMrQ,EAAQb,MAAOkR,KAEzB,OAAc,OAAPA,EACN,KACArQ,EAAOmD,QAASkN,GACfrQ,EAAO2B,IAAK0O,EAAK,SAAUA,GAC1B,OAAS3N,KAAMd,EAAKc,KAAMyD,MAAOkK,EAAI7M,QAAS69B,GAAO,YAEpD3+B,KAAMd,EAAKc,KAAMyD,MAAOkK,EAAI7M,QAAS69B,GAAO,WAC7CngC,SAKNlB,EAAOi8B,aAAa4F,IAAM,WACzB,IACC,MAAO,IAAI3iC,GAAO4iC,eACjB,MAAQ92B,KAGX,IAAI+2B,KAGFC,EAAG,IAIHC,KAAM,KAEPC,GAAeliC,EAAOi8B,aAAa4F,KAEpC/hC,GAAQqiC,OAASD,IAAkB,mBAAqBA,IACxDpiC,EAAQw+B,KAAO4D,KAAiBA,GAEhCliC,EAAOq+B,cAAe,SAAU57B,GAC/B,GAAIf,GAAU0gC,CAGd,OAAKtiC,GAAQqiC,MAAQD,KAAiBz/B,EAAQs9B,aAE5CQ,KAAM,SAAUF,EAASjL,GACxB,GAAIvzB,GACHggC,EAAMp/B,EAAQo/B,KAWf,IATAA,EAAIQ,KACH5/B,EAAQqB,KACRrB,EAAQ66B,IACR76B,EAAQi7B,MACRj7B,EAAQ6/B,SACR7/B,EAAQmS,UAIJnS,EAAQ8/B,UACZ,IAAM1gC,IAAKY,GAAQ8/B,UAClBV,EAAKhgC,GAAMY,EAAQ8/B,UAAW1gC,EAK3BY,GAAQ+5B,UAAYqF,EAAIrC,kBAC5BqC,EAAIrC,iBAAkB/8B,EAAQ+5B,UAQzB/5B,EAAQs9B,aAAgBM,EAAS,sBACtCA,EAAS,oBAAuB,iBAIjC,KAAMx+B,IAAKw+B,GACVwB,EAAIvC,iBAAkBz9B,EAAGw+B,EAASx+B,GAInCH,GAAW,SAAUoC,GACpB,MAAO,YACDpC,IACJA,EAAW0gC,EAAgBP,EAAIW,OAC9BX,EAAIY,QAAUZ,EAAIa,QAAUb,EAAIc,mBAAqB,KAExC,UAAT7+B,EACJ+9B,EAAInC,QACgB,UAAT57B,EAKgB,gBAAf+9B,GAAIpC,OACfrK,EAAU,EAAG,SAEbA,EAGCyM,EAAIpC,OACJoC,EAAIlC,YAINvK,EACC2M,GAAkBF,EAAIpC,SAAYoC,EAAIpC,OACtCoC,EAAIlC,WAK+B,UAAjCkC,EAAIe,cAAgB,SACM,gBAArBf,GAAIgB,cACRC,OAAQjB,EAAIjF,WACZ93B,KAAM+8B,EAAIgB,cACbhB,EAAIxC,4BAQTwC,EAAIW,OAAS9gC,IACb0gC,EAAgBP,EAAIY,QAAU/gC,EAAU,SAKnB0B,SAAhBy+B,EAAIa,QACRb,EAAIa,QAAUN,EAEdP,EAAIc,mBAAqB,WAGA,IAAnBd,EAAI3jB,YAMRhf,EAAOkf,WAAY,WACb1c,GACJ0gC,OAQL1gC,EAAWA,EAAU,QAErB,KAGCmgC,EAAItB,KAAM99B,EAAQ09B,YAAc19B,EAAQ2c,MAAQ,MAC/C,MAAQpU,GAGT,GAAKtJ,EACJ,KAAMsJ,KAKT00B,MAAO,WACDh+B,GACJA,MAjIJ,SA4ID1B,EAAOk+B,WACNN,SACCn5B,OAAQ,6FAGT6U,UACC7U,OAAQ,2BAETi4B,YACCqG,cAAe,SAAUj+B,GAExB,MADA9E,GAAOuE,WAAYO,GACZA,MAMV9E,EAAOo+B,cAAe,SAAU,SAAUjC,GACxB/4B,SAAZ+4B,EAAExvB,QACNwvB,EAAExvB,OAAQ,GAENwvB,EAAE4D,cACN5D,EAAEr4B,KAAO,SAKX9D,EAAOq+B,cAAe,SAAU,SAAUlC,GAGzC,GAAKA,EAAE4D,YAAc,CACpB,GAAIt7B,GAAQ/C,CACZ,QACC6+B,KAAM,SAAU/1B,EAAG4qB,GAClB3wB,EAASzE,EAAQ,YAAaqf,MAC7B2jB,QAAS7G,EAAE8G,cACXtgC,IAAKw5B,EAAEmB,MACJhZ,GACH,aACA5iB,EAAW,SAAUwhC,GACpBz+B,EAAO8W,SACP7Z,EAAW,KACNwhC,GACJ9N,EAAuB,UAAb8N,EAAIp/B,KAAmB,IAAM,IAAKo/B,EAAIp/B,QAMnD/E,EAASgG,KAAKC,YAAaP,EAAQ,KAEpCi7B,MAAO,WACDh+B,GACJA,QAUL,IAAIyhC,OACHC,GAAS,mBAGVpjC,GAAOk+B,WACNmF,MAAO,WACPC,cAAe,WACd,GAAI5hC,GAAWyhC,GAAa36B,OAAWxI,EAAOqD,QAAU,IAAQ82B,IAEhE,OADAh7B,MAAMuC,IAAa,EACZA,KAKT1B,EAAOo+B,cAAe,aAAc,SAAUjC,EAAGoH,EAAkB9H,GAElE,GAAI+H,GAAcC,EAAaC,EAC9BC,EAAWxH,EAAEkH,SAAU,IAAWD,GAAOn3B,KAAMkwB,EAAEmB,KAChD,MACkB,gBAAXnB,GAAE/c,MAE6C,KADnD+c,EAAEwB,aAAe,IACjBl+B,QAAS,sCACX2jC,GAAOn3B,KAAMkwB,EAAE/c,OAAU,OAI5B,OAAKukB,IAAiC,UAArBxH,EAAEZ,UAAW,IAG7BiI,EAAerH,EAAEmH,cAAgBtjC,EAAOiD,WAAYk5B,EAAEmH,eACrDnH,EAAEmH,gBACFnH,EAAEmH,cAGEK,EACJxH,EAAGwH,GAAaxH,EAAGwH,GAAWngC,QAAS4/B,GAAQ,KAAOI,GAC3CrH,EAAEkH,SAAU,IACvBlH,EAAEmB,MAASlD,GAAOnuB,KAAMkwB,EAAEmB,KAAQ,IAAM,KAAQnB,EAAEkH,MAAQ,IAAMG,GAIjErH,EAAEO,WAAY,eAAkB,WAI/B,MAHMgH,IACL1jC,EAAO0D,MAAO8/B,EAAe,mBAEvBE,EAAmB,IAI3BvH,EAAEZ,UAAW,GAAM,OAGnBkI,EAAcvkC,EAAQskC,GACtBtkC,EAAQskC,GAAiB,WACxBE,EAAoB3hC,WAIrB05B,EAAMzf,OAAQ,WAGQ5Y,SAAhBqgC,EACJzjC,EAAQd,GAAS+4B,WAAYuL,GAI7BtkC,EAAQskC,GAAiBC,EAIrBtH,EAAGqH,KAGPrH,EAAEmH,cAAgBC,EAAiBD,cAGnCH,GAAa3jC,KAAMgkC,IAIfE,GAAqB1jC,EAAOiD,WAAYwgC,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAcrgC,SAI5B,UA9DR,SAyEDpD,EAAOiZ,UAAY,SAAUmG,EAAMlf,EAAS0jC,GAC3C,IAAMxkB,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZlf,KACX0jC,EAAc1jC,EACdA,GAAU,GAEXA,EAAUA,GAAWnB,CAErB,IAAI8kC,GAASlrB,EAAWhN,KAAMyT,GAC7B+D,GAAWygB,KAGZ,OAAKC,IACK3jC,EAAQ2E,cAAeg/B,EAAQ,MAGzCA,EAAS3gB,IAAiB9D,GAAQlf,EAASijB,GAEtCA,GAAWA,EAAQpiB,QACvBf,EAAQmjB,GAAU5H,SAGZvb,EAAOuB,SAAWsiC,EAAO94B,aAKjC,IAAI+4B,IAAQ9jC,EAAOG,GAAGgoB,IAKtBnoB,GAAOG,GAAGgoB,KAAO,SAAUmV,EAAKyG,EAAQriC,GACvC,GAAoB,gBAAR47B,IAAoBwG,GAC/B,MAAOA,IAAMhiC,MAAO3C,KAAM4C,UAG3B,IAAI9B,GAAU6D,EAAM84B,EACnB7jB,EAAO5Z,KACP4e,EAAMuf,EAAI79B,QAAS,IAsDpB,OApDKse,GAAM,KACV9d,EAAWD,EAAO4E,KAAM04B,EAAIh+B,MAAOye,IACnCuf,EAAMA,EAAIh+B,MAAO,EAAGye,IAIhB/d,EAAOiD,WAAY8gC,IAGvBriC,EAAWqiC,EACXA,EAAS3gC,QAGE2gC,GAA4B,gBAAXA,KAC5BjgC,EAAO,QAIHiV,EAAKhY,OAAS,GAClBf,EAAOs+B,MACNhB,IAAKA,EAKLx5B,KAAMA,GAAQ,MACdw3B,SAAU,OACVlc,KAAM2kB,IACHh8B,KAAM,SAAU86B,GAGnBjG,EAAW76B,UAEXgX,EAAK2R,KAAMzqB,EAIVD,EAAQ,SAAUorB,OAAQprB,EAAOiZ,UAAW4pB,IAAiBj0B,KAAM3O,GAGnE4iC,KAKE7mB,OAAQta,GAAY,SAAU+5B,EAAOgE,GACxC1mB,EAAKtX,KAAM,WACVC,EAASI,MAAO3C,KAAMy9B,IAAcnB,EAAMoH,aAAcpD,EAAQhE,QAK5Dt8B,MAORa,EAAOyB,MACN,YACA,WACA,eACA,YACA,cACA,YACE,SAAUI,EAAGiC,GACf9D,EAAOG,GAAI2D,GAAS,SAAU3D,GAC7B,MAAOhB,MAAKmlB,GAAIxgB,EAAM3D,MAOxBH,EAAOkQ,KAAK8E,QAAQgvB,SAAW,SAAUpiC,GACxC,MAAO5B,GAAO6F,KAAM7F,EAAOk2B,OAAQ,SAAU/1B,GAC5C,MAAOyB,KAASzB,EAAGyB,OAChBb,OASL,SAASkjC,IAAWriC,GACnB,MAAO5B,GAAOgE,SAAUpC,GAASA,EAAyB,IAAlBA,EAAKyC,UAAkBzC,EAAKwM,YAGrEpO,EAAOkkC,QACNC,UAAW,SAAUviC,EAAMa,EAASZ,GACnC,GAAIuiC,GAAaC,EAASC,EAAWC,EAAQC,EAAWC,EAAYC,EACnE5V,EAAW9uB,EAAOkhB,IAAKtf,EAAM,YAC7B+iC,EAAU3kC,EAAQ4B,GAClBklB,IAGiB,YAAbgI,IACJltB,EAAKigB,MAAMiN,SAAW,YAGvB0V,EAAYG,EAAQT,SACpBI,EAAYtkC,EAAOkhB,IAAKtf,EAAM,OAC9B6iC,EAAazkC,EAAOkhB,IAAKtf,EAAM,QAC/B8iC,GAAmC,aAAb5V,GAAwC,UAAbA,KAC9CwV,EAAYG,GAAahlC,QAAS,QAAW,GAI3CilC,GACJN,EAAcO,EAAQ7V,WACtByV,EAASH,EAAY/1B,IACrBg2B,EAAUD,EAAY7S,OAGtBgT,EAASpgC,WAAYmgC,IAAe,EACpCD,EAAUlgC,WAAYsgC,IAAgB,GAGlCzkC,EAAOiD,WAAYR,KAGvBA,EAAUA,EAAQxB,KAAMW,EAAMC,EAAG7B,EAAOwC,UAAYgiC,KAGjC,MAAf/hC,EAAQ4L,MACZyY,EAAMzY,IAAQ5L,EAAQ4L,IAAMm2B,EAAUn2B,IAAQk2B,GAE1B,MAAhB9hC,EAAQ8uB,OACZzK,EAAMyK,KAAS9uB,EAAQ8uB,KAAOiT,EAAUjT,KAAS8S,GAG7C,SAAW5hC,GACfA,EAAQmiC,MAAM3jC,KAAMW,EAAMklB,GAG1B6d,EAAQzjB,IAAK4F,KAKhB9mB,EAAOG,GAAGqC,QACT0hC,OAAQ,SAAUzhC,GACjB,GAAKV,UAAUhB,OACd,MAAmBqC,UAAZX,EACNtD,KACAA,KAAKsC,KAAM,SAAUI,GACpB7B,EAAOkkC,OAAOC,UAAWhlC,KAAMsD,EAASZ,IAI3C,IAAI2F,GAASq9B,EACZjjC,EAAOzC,KAAM,GACb2lC,GAAQz2B,IAAK,EAAGkjB,KAAM,GACtBpjB,EAAMvM,GAAQA,EAAK8J,aAEpB,IAAMyC,EAON,MAHA3G,GAAU2G,EAAIJ,gBAGR/N,EAAO4H,SAAUJ,EAAS5F,IAIhCkjC,EAAMljC,EAAK0vB,wBACXuT,EAAMZ,GAAW91B,IAEhBE,IAAKy2B,EAAIz2B,IAAMw2B,EAAIE,YAAcv9B,EAAQugB,UACzCwJ,KAAMuT,EAAIvT,KAAOsT,EAAIG,YAAcx9B,EAAQmgB,aAPpCmd,GAWThW,SAAU,WACT,GAAM3vB,KAAM,GAAZ,CAIA,GAAI8lC,GAAcf,EACjBtiC,EAAOzC,KAAM,GACb+lC,GAAiB72B,IAAK,EAAGkjB,KAAM,EA0BhC,OAtBwC,UAAnCvxB,EAAOkhB,IAAKtf,EAAM,YAGtBsiC,EAAStiC,EAAK0vB,yBAKd2T,EAAe9lC,KAAK8lC,eAGpBf,EAAS/kC,KAAK+kC,SACRlkC,EAAOqF,SAAU4/B,EAAc,GAAK,UACzCC,EAAeD,EAAaf,UAI7BgB,EAAa72B,KAAOrO,EAAOkhB,IAAK+jB,EAAc,GAAK,kBAAkB,GACrEC,EAAa3T,MAAQvxB,EAAOkhB,IAAK+jB,EAAc,GAAK,mBAAmB,KAKvE52B,IAAK61B,EAAO71B,IAAM62B,EAAa72B,IAAMrO,EAAOkhB,IAAKtf,EAAM,aAAa,GACpE2vB,KAAM2S,EAAO3S,KAAO2T,EAAa3T,KAAOvxB,EAAOkhB,IAAKtf,EAAM,cAAc,MAc1EqjC,aAAc,WACb,MAAO9lC,MAAKwC,IAAK,WAChB,GAAIsjC,GAAe9lC,KAAK8lC,YAExB,OAAQA,GAA2D,WAA3CjlC,EAAOkhB,IAAK+jB,EAAc,YACjDA,EAAeA,EAAaA,YAG7B,OAAOA,IAAgBl3B,QAM1B/N,EAAOyB,MAAQimB,WAAY,cAAeI,UAAW,eAAiB,SAAUgY,EAAQzgB,GACvF,GAAIhR,GAAM,gBAAkBgR,CAE5Brf,GAAOG,GAAI2/B,GAAW,SAAUzvB,GAC/B,MAAOgO,GAAQlf,KAAM,SAAUyC,EAAMk+B,EAAQzvB,GAC5C,GAAIw0B,GAAMZ,GAAWriC,EAErB,OAAawB,UAARiN,EACGw0B,EAAMA,EAAKxlB,GAASzd,EAAMk+B,QAG7B+E,EACJA,EAAIM,SACF92B,EAAYw2B,EAAIG,YAAV30B,EACPhC,EAAMgC,EAAMw0B,EAAIE,aAIjBnjC,EAAMk+B,GAAWzvB,IAEhByvB,EAAQzvB,EAAKtO,UAAUhB,WAU5Bf,EAAOyB,MAAQ,MAAO,QAAU,SAAUI,EAAGwd,GAC5Crf,EAAOqwB,SAAUhR,GAASoP,GAAc3uB,EAAQguB,cAC/C,SAAUlsB,EAAMysB,GACf,MAAKA,IACJA,EAAWD,GAAQxsB,EAAMyd,GAGlBqN,GAAUzgB,KAAMoiB,GACtBruB,EAAQ4B,GAAOktB,WAAYzP,GAAS,KACpCgP,GANF,WAcHruB,EAAOyB,MAAQ2jC,OAAQ,SAAUC,MAAO,SAAW,SAAU3iC,EAAMoB,GAClE9D,EAAOyB,MAAQgwB,QAAS,QAAU/uB,EAAMknB,QAAS9lB,EAAMwhC,GAAI,QAAU5iC,GACpE,SAAU6iC,EAAcC,GAGxBxlC,EAAOG,GAAIqlC,GAAa,SAAUhU,EAAQrrB,GACzC,GAAImY,GAAYvc,UAAUhB,SAAYwkC,GAAkC,iBAAX/T,IAC5D7B,EAAQ4V,IAAkB/T,KAAW,GAAQrrB,KAAU,EAAO,SAAW,SAE1E,OAAOkY,GAAQlf,KAAM,SAAUyC,EAAMkC,EAAMqC,GAC1C,GAAIgI,EAEJ,OAAKnO,GAAOgE,SAAUpC,GAKdA,EAAK7C,SAASgP,gBAAiB,SAAWrL,GAI3B,IAAlBd,EAAKyC,UACT8J,EAAMvM,EAAKmM,gBAIJzK,KAAKmsB,IACX7tB,EAAK2lB,KAAM,SAAW7kB,GAAQyL,EAAK,SAAWzL,GAC9Cd,EAAK2lB,KAAM,SAAW7kB,GAAQyL,EAAK,SAAWzL,GAC9CyL,EAAK,SAAWzL,KAIDU,SAAV+C,EAGNnG,EAAOkhB,IAAKtf,EAAMkC,EAAM6rB,GAGxB3vB,EAAO6hB,MAAOjgB,EAAMkC,EAAMqC,EAAOwpB,IAChC7rB,EAAMwa,EAAYkT,EAASpuB,OAAWkb,EAAW,WAMvDte,EAAOG,GAAGqC,QAETijC,KAAM,SAAUlhB,EAAOnF,EAAMjf,GAC5B,MAAOhB,MAAKmlB,GAAIC,EAAO,KAAMnF,EAAMjf,IAEpCulC,OAAQ,SAAUnhB,EAAOpkB,GACxB,MAAOhB,MAAK4e,IAAKwG,EAAO,KAAMpkB,IAG/BwlC,SAAU,SAAU1lC,EAAUskB,EAAOnF,EAAMjf,GAC1C,MAAOhB,MAAKmlB,GAAIC,EAAOtkB,EAAUmf,EAAMjf,IAExCylC,WAAY,SAAU3lC,EAAUskB,EAAOpkB,GAGtC,MAA4B,KAArB4B,UAAUhB,OAChB5B,KAAK4e,IAAK9d,EAAU,MACpBd,KAAK4e,IAAKwG,EAAOtkB,GAAY,KAAME,IAErC0lC,KAAM,WACL,MAAO1mC,MAAK4B,UAIdf,EAAOG,GAAG2lC,QAAU9lC,EAAOG,GAAG6Z,QAkBP,kBAAX+rB,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WACrB,MAAO/lC,IAMT,IAGCimC,IAAU/mC,EAAOc,OAGjBkmC,GAAKhnC,EAAOinC,CAqBb,OAnBAnmC,GAAOomC,WAAa,SAAUpjC,GAS7B,MARK9D,GAAOinC,IAAMnmC,IACjBd,EAAOinC,EAAID,IAGPljC,GAAQ9D,EAAOc,SAAWA,IAC9Bd,EAAOc,OAASimC,IAGVjmC,GAMFZ,IACLF,EAAOc,OAASd,EAAOinC,EAAInmC,GAGrBA","file":"jquery.min.js"}
          \ No newline at end of file
          diff --git a/public/theme/jquery/external/sizzle/LICENSE.txt b/public/theme/jquery/external/sizzle/LICENSE.txt
          new file mode 100644
          index 0000000..dd7ce94
          --- /dev/null
          +++ b/public/theme/jquery/external/sizzle/LICENSE.txt
          @@ -0,0 +1,36 @@
          +Copyright jQuery Foundation and other contributors, https://jquery.org/
          +
          +This software consists of voluntary contributions made by many
          +individuals. For exact contribution history, see the revision history
          +available at https://github.com/jquery/sizzle
          +
          +The following license applies to all parts of this software except as
          +documented below:
          +
          +====
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be
          +included in all copies or substantial portions of the Software.
          +
          +THE 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.
          +
          +====
          +
          +All files located in the node_modules and external directories are
          +externally maintained libraries used by this software which have their
          +own licenses; we recommend you read them, as their terms may differ from
          +the terms above.
          diff --git a/public/theme/jquery/external/sizzle/dist/sizzle.js b/public/theme/jquery/external/sizzle/dist/sizzle.js
          new file mode 100644
          index 0000000..9b1e5ba
          --- /dev/null
          +++ b/public/theme/jquery/external/sizzle/dist/sizzle.js
          @@ -0,0 +1,2143 @@
          +/*!
          + * Sizzle CSS Selector Engine v2.2.1
          + * http://sizzlejs.com/
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * http://jquery.org/license
          + *
          + * Date: 2015-10-17
          + */
          +(function( window ) {
          +
          +var i,
          +	support,
          +	Expr,
          +	getText,
          +	isXML,
          +	tokenize,
          +	compile,
          +	select,
          +	outermostContext,
          +	sortInput,
          +	hasDuplicate,
          +
          +	// Local document vars
          +	setDocument,
          +	document,
          +	docElem,
          +	documentIsHTML,
          +	rbuggyQSA,
          +	rbuggyMatches,
          +	matches,
          +	contains,
          +
          +	// Instance-specific data
          +	expando = "sizzle" + 1 * new Date(),
          +	preferredDoc = window.document,
          +	dirruns = 0,
          +	done = 0,
          +	classCache = createCache(),
          +	tokenCache = createCache(),
          +	compilerCache = createCache(),
          +	sortOrder = function( a, b ) {
          +		if ( a === b ) {
          +			hasDuplicate = true;
          +		}
          +		return 0;
          +	},
          +
          +	// General-purpose constants
          +	MAX_NEGATIVE = 1 << 31,
          +
          +	// Instance methods
          +	hasOwn = ({}).hasOwnProperty,
          +	arr = [],
          +	pop = arr.pop,
          +	push_native = arr.push,
          +	push = arr.push,
          +	slice = arr.slice,
          +	// Use a stripped-down indexOf as it's faster than native
          +	// http://jsperf.com/thor-indexof-vs-for/5
          +	indexOf = function( list, elem ) {
          +		var i = 0,
          +			len = list.length;
          +		for ( ; i < len; i++ ) {
          +			if ( list[i] === elem ) {
          +				return i;
          +			}
          +		}
          +		return -1;
          +	},
          +
          +	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
          +
          +	// Regular expressions
          +
          +	// http://www.w3.org/TR/css3-selectors/#whitespace
          +	whitespace = "[\\x20\\t\\r\\n\\f]",
          +
          +	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
          +	identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
          +
          +	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
          +	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
          +		// Operator (capture 2)
          +		"*([*^$|!~]?=)" + whitespace +
          +		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
          +		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
          +		"*\\]",
          +
          +	pseudos = ":(" + identifier + ")(?:\\((" +
          +		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
          +		// 1. quoted (capture 3; capture 4 or capture 5)
          +		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
          +		// 2. simple (capture 6)
          +		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
          +		// 3. anything else (capture 2)
          +		".*" +
          +		")\\)|)",
          +
          +	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
          +	rwhitespace = new RegExp( whitespace + "+", "g" ),
          +	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
          +
          +	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
          +	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
          +
          +	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
          +
          +	rpseudo = new RegExp( pseudos ),
          +	ridentifier = new RegExp( "^" + identifier + "$" ),
          +
          +	matchExpr = {
          +		"ID": new RegExp( "^#(" + identifier + ")" ),
          +		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
          +		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
          +		"ATTR": new RegExp( "^" + attributes ),
          +		"PSEUDO": new RegExp( "^" + pseudos ),
          +		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
          +			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
          +			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
          +		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
          +		// For use in libraries implementing .is()
          +		// We use this for POS matching in `select`
          +		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
          +			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
          +	},
          +
          +	rinputs = /^(?:input|select|textarea|button)$/i,
          +	rheader = /^h\d$/i,
          +
          +	rnative = /^[^{]+\{\s*\[native \w/,
          +
          +	// Easily-parseable/retrievable ID or TAG or CLASS selectors
          +	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
          +
          +	rsibling = /[+~]/,
          +	rescape = /'|\\/g,
          +
          +	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
          +	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
          +	funescape = function( _, escaped, escapedWhitespace ) {
          +		var high = "0x" + escaped - 0x10000;
          +		// NaN means non-codepoint
          +		// Support: Firefox<24
          +		// Workaround erroneous numeric interpretation of +"0x"
          +		return high !== high || escapedWhitespace ?
          +			escaped :
          +			high < 0 ?
          +				// BMP codepoint
          +				String.fromCharCode( high + 0x10000 ) :
          +				// Supplemental Plane codepoint (surrogate pair)
          +				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
          +	},
          +
          +	// Used for iframes
          +	// See setDocument()
          +	// Removing the function wrapper causes a "Permission Denied"
          +	// error in IE
          +	unloadHandler = function() {
          +		setDocument();
          +	};
          +
          +// Optimize for push.apply( _, NodeList )
          +try {
          +	push.apply(
          +		(arr = slice.call( preferredDoc.childNodes )),
          +		preferredDoc.childNodes
          +	);
          +	// Support: Android<4.0
          +	// Detect silently failing push.apply
          +	arr[ preferredDoc.childNodes.length ].nodeType;
          +} catch ( e ) {
          +	push = { apply: arr.length ?
          +
          +		// Leverage slice if possible
          +		function( target, els ) {
          +			push_native.apply( target, slice.call(els) );
          +		} :
          +
          +		// Support: IE<9
          +		// Otherwise append directly
          +		function( target, els ) {
          +			var j = target.length,
          +				i = 0;
          +			// Can't trust NodeList.length
          +			while ( (target[j++] = els[i++]) ) {}
          +			target.length = j - 1;
          +		}
          +	};
          +}
          +
          +function Sizzle( selector, context, results, seed ) {
          +	var m, i, elem, nid, nidselect, match, groups, newSelector,
          +		newContext = context && context.ownerDocument,
          +
          +		// nodeType defaults to 9, since context defaults to document
          +		nodeType = context ? context.nodeType : 9;
          +
          +	results = results || [];
          +
          +	// Return early from calls with invalid selector or context
          +	if ( typeof selector !== "string" || !selector ||
          +		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
          +
          +		return results;
          +	}
          +
          +	// Try to shortcut find operations (as opposed to filters) in HTML documents
          +	if ( !seed ) {
          +
          +		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
          +			setDocument( context );
          +		}
          +		context = context || document;
          +
          +		if ( documentIsHTML ) {
          +
          +			// If the selector is sufficiently simple, try using a "get*By*" DOM method
          +			// (excepting DocumentFragment context, where the methods don't exist)
          +			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
          +
          +				// ID selector
          +				if ( (m = match[1]) ) {
          +
          +					// Document context
          +					if ( nodeType === 9 ) {
          +						if ( (elem = context.getElementById( m )) ) {
          +
          +							// Support: IE, Opera, Webkit
          +							// TODO: identify versions
          +							// getElementById can match elements by name instead of ID
          +							if ( elem.id === m ) {
          +								results.push( elem );
          +								return results;
          +							}
          +						} else {
          +							return results;
          +						}
          +
          +					// Element context
          +					} else {
          +
          +						// Support: IE, Opera, Webkit
          +						// TODO: identify versions
          +						// getElementById can match elements by name instead of ID
          +						if ( newContext && (elem = newContext.getElementById( m )) &&
          +							contains( context, elem ) &&
          +							elem.id === m ) {
          +
          +							results.push( elem );
          +							return results;
          +						}
          +					}
          +
          +				// Type selector
          +				} else if ( match[2] ) {
          +					push.apply( results, context.getElementsByTagName( selector ) );
          +					return results;
          +
          +				// Class selector
          +				} else if ( (m = match[3]) && support.getElementsByClassName &&
          +					context.getElementsByClassName ) {
          +
          +					push.apply( results, context.getElementsByClassName( m ) );
          +					return results;
          +				}
          +			}
          +
          +			// Take advantage of querySelectorAll
          +			if ( support.qsa &&
          +				!compilerCache[ selector + " " ] &&
          +				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
          +
          +				if ( nodeType !== 1 ) {
          +					newContext = context;
          +					newSelector = selector;
          +
          +				// qSA looks outside Element context, which is not what we want
          +				// Thanks to Andrew Dupont for this workaround technique
          +				// Support: IE <=8
          +				// Exclude object elements
          +				} else if ( context.nodeName.toLowerCase() !== "object" ) {
          +
          +					// Capture the context ID, setting it first if necessary
          +					if ( (nid = context.getAttribute( "id" )) ) {
          +						nid = nid.replace( rescape, "\\$&" );
          +					} else {
          +						context.setAttribute( "id", (nid = expando) );
          +					}
          +
          +					// Prefix every selector in the list
          +					groups = tokenize( selector );
          +					i = groups.length;
          +					nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
          +					while ( i-- ) {
          +						groups[i] = nidselect + " " + toSelector( groups[i] );
          +					}
          +					newSelector = groups.join( "," );
          +
          +					// Expand context for sibling selectors
          +					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
          +						context;
          +				}
          +
          +				if ( newSelector ) {
          +					try {
          +						push.apply( results,
          +							newContext.querySelectorAll( newSelector )
          +						);
          +						return results;
          +					} catch ( qsaError ) {
          +					} finally {
          +						if ( nid === expando ) {
          +							context.removeAttribute( "id" );
          +						}
          +					}
          +				}
          +			}
          +		}
          +	}
          +
          +	// All others
          +	return select( selector.replace( rtrim, "$1" ), context, results, seed );
          +}
          +
          +/**
          + * Create key-value caches of limited size
          + * @returns {function(string, object)} Returns the Object data after storing it on itself with
          + *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
          + *	deleting the oldest entry
          + */
          +function createCache() {
          +	var keys = [];
          +
          +	function cache( key, value ) {
          +		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
          +		if ( keys.push( key + " " ) > Expr.cacheLength ) {
          +			// Only keep the most recent entries
          +			delete cache[ keys.shift() ];
          +		}
          +		return (cache[ key + " " ] = value);
          +	}
          +	return cache;
          +}
          +
          +/**
          + * Mark a function for special use by Sizzle
          + * @param {Function} fn The function to mark
          + */
          +function markFunction( fn ) {
          +	fn[ expando ] = true;
          +	return fn;
          +}
          +
          +/**
          + * Support testing using an element
          + * @param {Function} fn Passed the created div and expects a boolean result
          + */
          +function assert( fn ) {
          +	var div = document.createElement("div");
          +
          +	try {
          +		return !!fn( div );
          +	} catch (e) {
          +		return false;
          +	} finally {
          +		// Remove from its parent by default
          +		if ( div.parentNode ) {
          +			div.parentNode.removeChild( div );
          +		}
          +		// release memory in IE
          +		div = null;
          +	}
          +}
          +
          +/**
          + * Adds the same handler for all of the specified attrs
          + * @param {String} attrs Pipe-separated list of attributes
          + * @param {Function} handler The method that will be applied
          + */
          +function addHandle( attrs, handler ) {
          +	var arr = attrs.split("|"),
          +		i = arr.length;
          +
          +	while ( i-- ) {
          +		Expr.attrHandle[ arr[i] ] = handler;
          +	}
          +}
          +
          +/**
          + * Checks document order of two siblings
          + * @param {Element} a
          + * @param {Element} b
          + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
          + */
          +function siblingCheck( a, b ) {
          +	var cur = b && a,
          +		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
          +			( ~b.sourceIndex || MAX_NEGATIVE ) -
          +			( ~a.sourceIndex || MAX_NEGATIVE );
          +
          +	// Use IE sourceIndex if available on both nodes
          +	if ( diff ) {
          +		return diff;
          +	}
          +
          +	// Check if b follows a
          +	if ( cur ) {
          +		while ( (cur = cur.nextSibling) ) {
          +			if ( cur === b ) {
          +				return -1;
          +			}
          +		}
          +	}
          +
          +	return a ? 1 : -1;
          +}
          +
          +/**
          + * Returns a function to use in pseudos for input types
          + * @param {String} type
          + */
          +function createInputPseudo( type ) {
          +	return function( elem ) {
          +		var name = elem.nodeName.toLowerCase();
          +		return name === "input" && elem.type === type;
          +	};
          +}
          +
          +/**
          + * Returns a function to use in pseudos for buttons
          + * @param {String} type
          + */
          +function createButtonPseudo( type ) {
          +	return function( elem ) {
          +		var name = elem.nodeName.toLowerCase();
          +		return (name === "input" || name === "button") && elem.type === type;
          +	};
          +}
          +
          +/**
          + * Returns a function to use in pseudos for positionals
          + * @param {Function} fn
          + */
          +function createPositionalPseudo( fn ) {
          +	return markFunction(function( argument ) {
          +		argument = +argument;
          +		return markFunction(function( seed, matches ) {
          +			var j,
          +				matchIndexes = fn( [], seed.length, argument ),
          +				i = matchIndexes.length;
          +
          +			// Match elements found at the specified indexes
          +			while ( i-- ) {
          +				if ( seed[ (j = matchIndexes[i]) ] ) {
          +					seed[j] = !(matches[j] = seed[j]);
          +				}
          +			}
          +		});
          +	});
          +}
          +
          +/**
          + * Checks a node for validity as a Sizzle context
          + * @param {Element|Object=} context
          + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
          + */
          +function testContext( context ) {
          +	return context && typeof context.getElementsByTagName !== "undefined" && context;
          +}
          +
          +// Expose support vars for convenience
          +support = Sizzle.support = {};
          +
          +/**
          + * Detects XML nodes
          + * @param {Element|Object} elem An element or a document
          + * @returns {Boolean} True iff elem is a non-HTML XML node
          + */
          +isXML = Sizzle.isXML = function( elem ) {
          +	// documentElement is verified for cases where it doesn't yet exist
          +	// (such as loading iframes in IE - #4833)
          +	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
          +	return documentElement ? documentElement.nodeName !== "HTML" : false;
          +};
          +
          +/**
          + * Sets document-related variables once based on the current document
          + * @param {Element|Object} [doc] An element or document object to use to set the document
          + * @returns {Object} Returns the current document
          + */
          +setDocument = Sizzle.setDocument = function( node ) {
          +	var hasCompare, parent,
          +		doc = node ? node.ownerDocument || node : preferredDoc;
          +
          +	// Return early if doc is invalid or already selected
          +	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
          +		return document;
          +	}
          +
          +	// Update global variables
          +	document = doc;
          +	docElem = document.documentElement;
          +	documentIsHTML = !isXML( document );
          +
          +	// Support: IE 9-11, Edge
          +	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
          +	if ( (parent = document.defaultView) && parent.top !== parent ) {
          +		// Support: IE 11
          +		if ( parent.addEventListener ) {
          +			parent.addEventListener( "unload", unloadHandler, false );
          +
          +		// Support: IE 9 - 10 only
          +		} else if ( parent.attachEvent ) {
          +			parent.attachEvent( "onunload", unloadHandler );
          +		}
          +	}
          +
          +	/* Attributes
          +	---------------------------------------------------------------------- */
          +
          +	// Support: IE<8
          +	// Verify that getAttribute really returns attributes and not properties
          +	// (excepting IE8 booleans)
          +	support.attributes = assert(function( div ) {
          +		div.className = "i";
          +		return !div.getAttribute("className");
          +	});
          +
          +	/* getElement(s)By*
          +	---------------------------------------------------------------------- */
          +
          +	// Check if getElementsByTagName("*") returns only elements
          +	support.getElementsByTagName = assert(function( div ) {
          +		div.appendChild( document.createComment("") );
          +		return !div.getElementsByTagName("*").length;
          +	});
          +
          +	// Support: IE<9
          +	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
          +
          +	// Support: IE<10
          +	// Check if getElementById returns elements by name
          +	// The broken getElementById methods don't pick up programatically-set names,
          +	// so use a roundabout getElementsByName test
          +	support.getById = assert(function( div ) {
          +		docElem.appendChild( div ).id = expando;
          +		return !document.getElementsByName || !document.getElementsByName( expando ).length;
          +	});
          +
          +	// ID find and filter
          +	if ( support.getById ) {
          +		Expr.find["ID"] = function( id, context ) {
          +			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
          +				var m = context.getElementById( id );
          +				return m ? [ m ] : [];
          +			}
          +		};
          +		Expr.filter["ID"] = function( id ) {
          +			var attrId = id.replace( runescape, funescape );
          +			return function( elem ) {
          +				return elem.getAttribute("id") === attrId;
          +			};
          +		};
          +	} else {
          +		// Support: IE6/7
          +		// getElementById is not reliable as a find shortcut
          +		delete Expr.find["ID"];
          +
          +		Expr.filter["ID"] =  function( id ) {
          +			var attrId = id.replace( runescape, funescape );
          +			return function( elem ) {
          +				var node = typeof elem.getAttributeNode !== "undefined" &&
          +					elem.getAttributeNode("id");
          +				return node && node.value === attrId;
          +			};
          +		};
          +	}
          +
          +	// Tag
          +	Expr.find["TAG"] = support.getElementsByTagName ?
          +		function( tag, context ) {
          +			if ( typeof context.getElementsByTagName !== "undefined" ) {
          +				return context.getElementsByTagName( tag );
          +
          +			// DocumentFragment nodes don't have gEBTN
          +			} else if ( support.qsa ) {
          +				return context.querySelectorAll( tag );
          +			}
          +		} :
          +
          +		function( tag, context ) {
          +			var elem,
          +				tmp = [],
          +				i = 0,
          +				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
          +				results = context.getElementsByTagName( tag );
          +
          +			// Filter out possible comments
          +			if ( tag === "*" ) {
          +				while ( (elem = results[i++]) ) {
          +					if ( elem.nodeType === 1 ) {
          +						tmp.push( elem );
          +					}
          +				}
          +
          +				return tmp;
          +			}
          +			return results;
          +		};
          +
          +	// Class
          +	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
          +		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
          +			return context.getElementsByClassName( className );
          +		}
          +	};
          +
          +	/* QSA/matchesSelector
          +	---------------------------------------------------------------------- */
          +
          +	// QSA and matchesSelector support
          +
          +	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
          +	rbuggyMatches = [];
          +
          +	// qSa(:focus) reports false when true (Chrome 21)
          +	// We allow this because of a bug in IE8/9 that throws an error
          +	// whenever `document.activeElement` is accessed on an iframe
          +	// So, we allow :focus to pass through QSA all the time to avoid the IE error
          +	// See http://bugs.jquery.com/ticket/13378
          +	rbuggyQSA = [];
          +
          +	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
          +		// Build QSA regex
          +		// Regex strategy adopted from Diego Perini
          +		assert(function( div ) {
          +			// Select is set to empty string on purpose
          +			// This is to test IE's treatment of not explicitly
          +			// setting a boolean content attribute,
          +			// since its presence should be enough
          +			// http://bugs.jquery.com/ticket/12359
          +			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
          +				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
          +				"<option selected=''></option></select>";
          +
          +			// Support: IE8, Opera 11-12.16
          +			// Nothing should be selected when empty strings follow ^= or $= or *=
          +			// The test attribute must be unknown in Opera but "safe" for WinRT
          +			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
          +			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
          +				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
          +			}
          +
          +			// Support: IE8
          +			// Boolean attributes and "value" are not treated correctly
          +			if ( !div.querySelectorAll("[selected]").length ) {
          +				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
          +			}
          +
          +			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
          +			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
          +				rbuggyQSA.push("~=");
          +			}
          +
          +			// Webkit/Opera - :checked should return selected option elements
          +			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
          +			// IE8 throws error here and will not see later tests
          +			if ( !div.querySelectorAll(":checked").length ) {
          +				rbuggyQSA.push(":checked");
          +			}
          +
          +			// Support: Safari 8+, iOS 8+
          +			// https://bugs.webkit.org/show_bug.cgi?id=136851
          +			// In-page `selector#id sibing-combinator selector` fails
          +			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
          +				rbuggyQSA.push(".#.+[+~]");
          +			}
          +		});
          +
          +		assert(function( div ) {
          +			// Support: Windows 8 Native Apps
          +			// The type and name attributes are restricted during .innerHTML assignment
          +			var input = document.createElement("input");
          +			input.setAttribute( "type", "hidden" );
          +			div.appendChild( input ).setAttribute( "name", "D" );
          +
          +			// Support: IE8
          +			// Enforce case-sensitivity of name attribute
          +			if ( div.querySelectorAll("[name=d]").length ) {
          +				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
          +			}
          +
          +			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
          +			// IE8 throws error here and will not see later tests
          +			if ( !div.querySelectorAll(":enabled").length ) {
          +				rbuggyQSA.push( ":enabled", ":disabled" );
          +			}
          +
          +			// Opera 10-11 does not throw on post-comma invalid pseudos
          +			div.querySelectorAll("*,:x");
          +			rbuggyQSA.push(",.*:");
          +		});
          +	}
          +
          +	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
          +		docElem.webkitMatchesSelector ||
          +		docElem.mozMatchesSelector ||
          +		docElem.oMatchesSelector ||
          +		docElem.msMatchesSelector) )) ) {
          +
          +		assert(function( div ) {
          +			// Check to see if it's possible to do matchesSelector
          +			// on a disconnected node (IE 9)
          +			support.disconnectedMatch = matches.call( div, "div" );
          +
          +			// This should fail with an exception
          +			// Gecko does not error, returns false instead
          +			matches.call( div, "[s!='']:x" );
          +			rbuggyMatches.push( "!=", pseudos );
          +		});
          +	}
          +
          +	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
          +	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
          +
          +	/* Contains
          +	---------------------------------------------------------------------- */
          +	hasCompare = rnative.test( docElem.compareDocumentPosition );
          +
          +	// Element contains another
          +	// Purposefully self-exclusive
          +	// As in, an element does not contain itself
          +	contains = hasCompare || rnative.test( docElem.contains ) ?
          +		function( a, b ) {
          +			var adown = a.nodeType === 9 ? a.documentElement : a,
          +				bup = b && b.parentNode;
          +			return a === bup || !!( bup && bup.nodeType === 1 && (
          +				adown.contains ?
          +					adown.contains( bup ) :
          +					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
          +			));
          +		} :
          +		function( a, b ) {
          +			if ( b ) {
          +				while ( (b = b.parentNode) ) {
          +					if ( b === a ) {
          +						return true;
          +					}
          +				}
          +			}
          +			return false;
          +		};
          +
          +	/* Sorting
          +	---------------------------------------------------------------------- */
          +
          +	// Document order sorting
          +	sortOrder = hasCompare ?
          +	function( a, b ) {
          +
          +		// Flag for duplicate removal
          +		if ( a === b ) {
          +			hasDuplicate = true;
          +			return 0;
          +		}
          +
          +		// Sort on method existence if only one input has compareDocumentPosition
          +		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
          +		if ( compare ) {
          +			return compare;
          +		}
          +
          +		// Calculate position if both inputs belong to the same document
          +		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
          +			a.compareDocumentPosition( b ) :
          +
          +			// Otherwise we know they are disconnected
          +			1;
          +
          +		// Disconnected nodes
          +		if ( compare & 1 ||
          +			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
          +
          +			// Choose the first element that is related to our preferred document
          +			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
          +				return -1;
          +			}
          +			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
          +				return 1;
          +			}
          +
          +			// Maintain original order
          +			return sortInput ?
          +				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
          +				0;
          +		}
          +
          +		return compare & 4 ? -1 : 1;
          +	} :
          +	function( a, b ) {
          +		// Exit early if the nodes are identical
          +		if ( a === b ) {
          +			hasDuplicate = true;
          +			return 0;
          +		}
          +
          +		var cur,
          +			i = 0,
          +			aup = a.parentNode,
          +			bup = b.parentNode,
          +			ap = [ a ],
          +			bp = [ b ];
          +
          +		// Parentless nodes are either documents or disconnected
          +		if ( !aup || !bup ) {
          +			return a === document ? -1 :
          +				b === document ? 1 :
          +				aup ? -1 :
          +				bup ? 1 :
          +				sortInput ?
          +				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
          +				0;
          +
          +		// If the nodes are siblings, we can do a quick check
          +		} else if ( aup === bup ) {
          +			return siblingCheck( a, b );
          +		}
          +
          +		// Otherwise we need full lists of their ancestors for comparison
          +		cur = a;
          +		while ( (cur = cur.parentNode) ) {
          +			ap.unshift( cur );
          +		}
          +		cur = b;
          +		while ( (cur = cur.parentNode) ) {
          +			bp.unshift( cur );
          +		}
          +
          +		// Walk down the tree looking for a discrepancy
          +		while ( ap[i] === bp[i] ) {
          +			i++;
          +		}
          +
          +		return i ?
          +			// Do a sibling check if the nodes have a common ancestor
          +			siblingCheck( ap[i], bp[i] ) :
          +
          +			// Otherwise nodes in our document sort first
          +			ap[i] === preferredDoc ? -1 :
          +			bp[i] === preferredDoc ? 1 :
          +			0;
          +	};
          +
          +	return document;
          +};
          +
          +Sizzle.matches = function( expr, elements ) {
          +	return Sizzle( expr, null, null, elements );
          +};
          +
          +Sizzle.matchesSelector = function( elem, expr ) {
          +	// Set document vars if needed
          +	if ( ( elem.ownerDocument || elem ) !== document ) {
          +		setDocument( elem );
          +	}
          +
          +	// Make sure that attribute selectors are quoted
          +	expr = expr.replace( rattributeQuotes, "='$1']" );
          +
          +	if ( support.matchesSelector && documentIsHTML &&
          +		!compilerCache[ expr + " " ] &&
          +		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
          +		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
          +
          +		try {
          +			var ret = matches.call( elem, expr );
          +
          +			// IE 9's matchesSelector returns false on disconnected nodes
          +			if ( ret || support.disconnectedMatch ||
          +					// As well, disconnected nodes are said to be in a document
          +					// fragment in IE 9
          +					elem.document && elem.document.nodeType !== 11 ) {
          +				return ret;
          +			}
          +		} catch (e) {}
          +	}
          +
          +	return Sizzle( expr, document, null, [ elem ] ).length > 0;
          +};
          +
          +Sizzle.contains = function( context, elem ) {
          +	// Set document vars if needed
          +	if ( ( context.ownerDocument || context ) !== document ) {
          +		setDocument( context );
          +	}
          +	return contains( context, elem );
          +};
          +
          +Sizzle.attr = function( elem, name ) {
          +	// Set document vars if needed
          +	if ( ( elem.ownerDocument || elem ) !== document ) {
          +		setDocument( elem );
          +	}
          +
          +	var fn = Expr.attrHandle[ name.toLowerCase() ],
          +		// Don't get fooled by Object.prototype properties (jQuery #13807)
          +		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
          +			fn( elem, name, !documentIsHTML ) :
          +			undefined;
          +
          +	return val !== undefined ?
          +		val :
          +		support.attributes || !documentIsHTML ?
          +			elem.getAttribute( name ) :
          +			(val = elem.getAttributeNode(name)) && val.specified ?
          +				val.value :
          +				null;
          +};
          +
          +Sizzle.error = function( msg ) {
          +	throw new Error( "Syntax error, unrecognized expression: " + msg );
          +};
          +
          +/**
          + * Document sorting and removing duplicates
          + * @param {ArrayLike} results
          + */
          +Sizzle.uniqueSort = function( results ) {
          +	var elem,
          +		duplicates = [],
          +		j = 0,
          +		i = 0;
          +
          +	// Unless we *know* we can detect duplicates, assume their presence
          +	hasDuplicate = !support.detectDuplicates;
          +	sortInput = !support.sortStable && results.slice( 0 );
          +	results.sort( sortOrder );
          +
          +	if ( hasDuplicate ) {
          +		while ( (elem = results[i++]) ) {
          +			if ( elem === results[ i ] ) {
          +				j = duplicates.push( i );
          +			}
          +		}
          +		while ( j-- ) {
          +			results.splice( duplicates[ j ], 1 );
          +		}
          +	}
          +
          +	// Clear input after sorting to release objects
          +	// See https://github.com/jquery/sizzle/pull/225
          +	sortInput = null;
          +
          +	return results;
          +};
          +
          +/**
          + * Utility function for retrieving the text value of an array of DOM nodes
          + * @param {Array|Element} elem
          + */
          +getText = Sizzle.getText = function( elem ) {
          +	var node,
          +		ret = "",
          +		i = 0,
          +		nodeType = elem.nodeType;
          +
          +	if ( !nodeType ) {
          +		// If no nodeType, this is expected to be an array
          +		while ( (node = elem[i++]) ) {
          +			// Do not traverse comment nodes
          +			ret += getText( node );
          +		}
          +	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
          +		// Use textContent for elements
          +		// innerText usage removed for consistency of new lines (jQuery #11153)
          +		if ( typeof elem.textContent === "string" ) {
          +			return elem.textContent;
          +		} else {
          +			// Traverse its children
          +			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
          +				ret += getText( elem );
          +			}
          +		}
          +	} else if ( nodeType === 3 || nodeType === 4 ) {
          +		return elem.nodeValue;
          +	}
          +	// Do not include comment or processing instruction nodes
          +
          +	return ret;
          +};
          +
          +Expr = Sizzle.selectors = {
          +
          +	// Can be adjusted by the user
          +	cacheLength: 50,
          +
          +	createPseudo: markFunction,
          +
          +	match: matchExpr,
          +
          +	attrHandle: {},
          +
          +	find: {},
          +
          +	relative: {
          +		">": { dir: "parentNode", first: true },
          +		" ": { dir: "parentNode" },
          +		"+": { dir: "previousSibling", first: true },
          +		"~": { dir: "previousSibling" }
          +	},
          +
          +	preFilter: {
          +		"ATTR": function( match ) {
          +			match[1] = match[1].replace( runescape, funescape );
          +
          +			// Move the given value to match[3] whether quoted or unquoted
          +			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
          +
          +			if ( match[2] === "~=" ) {
          +				match[3] = " " + match[3] + " ";
          +			}
          +
          +			return match.slice( 0, 4 );
          +		},
          +
          +		"CHILD": function( match ) {
          +			/* matches from matchExpr["CHILD"]
          +				1 type (only|nth|...)
          +				2 what (child|of-type)
          +				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
          +				4 xn-component of xn+y argument ([+-]?\d*n|)
          +				5 sign of xn-component
          +				6 x of xn-component
          +				7 sign of y-component
          +				8 y of y-component
          +			*/
          +			match[1] = match[1].toLowerCase();
          +
          +			if ( match[1].slice( 0, 3 ) === "nth" ) {
          +				// nth-* requires argument
          +				if ( !match[3] ) {
          +					Sizzle.error( match[0] );
          +				}
          +
          +				// numeric x and y parameters for Expr.filter.CHILD
          +				// remember that false/true cast respectively to 0/1
          +				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
          +				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
          +
          +			// other types prohibit arguments
          +			} else if ( match[3] ) {
          +				Sizzle.error( match[0] );
          +			}
          +
          +			return match;
          +		},
          +
          +		"PSEUDO": function( match ) {
          +			var excess,
          +				unquoted = !match[6] && match[2];
          +
          +			if ( matchExpr["CHILD"].test( match[0] ) ) {
          +				return null;
          +			}
          +
          +			// Accept quoted arguments as-is
          +			if ( match[3] ) {
          +				match[2] = match[4] || match[5] || "";
          +
          +			// Strip excess characters from unquoted arguments
          +			} else if ( unquoted && rpseudo.test( unquoted ) &&
          +				// Get excess from tokenize (recursively)
          +				(excess = tokenize( unquoted, true )) &&
          +				// advance to the next closing parenthesis
          +				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
          +
          +				// excess is a negative index
          +				match[0] = match[0].slice( 0, excess );
          +				match[2] = unquoted.slice( 0, excess );
          +			}
          +
          +			// Return only captures needed by the pseudo filter method (type and argument)
          +			return match.slice( 0, 3 );
          +		}
          +	},
          +
          +	filter: {
          +
          +		"TAG": function( nodeNameSelector ) {
          +			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
          +			return nodeNameSelector === "*" ?
          +				function() { return true; } :
          +				function( elem ) {
          +					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
          +				};
          +		},
          +
          +		"CLASS": function( className ) {
          +			var pattern = classCache[ className + " " ];
          +
          +			return pattern ||
          +				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
          +				classCache( className, function( elem ) {
          +					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
          +				});
          +		},
          +
          +		"ATTR": function( name, operator, check ) {
          +			return function( elem ) {
          +				var result = Sizzle.attr( elem, name );
          +
          +				if ( result == null ) {
          +					return operator === "!=";
          +				}
          +				if ( !operator ) {
          +					return true;
          +				}
          +
          +				result += "";
          +
          +				return operator === "=" ? result === check :
          +					operator === "!=" ? result !== check :
          +					operator === "^=" ? check && result.indexOf( check ) === 0 :
          +					operator === "*=" ? check && result.indexOf( check ) > -1 :
          +					operator === "$=" ? check && result.slice( -check.length ) === check :
          +					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
          +					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
          +					false;
          +			};
          +		},
          +
          +		"CHILD": function( type, what, argument, first, last ) {
          +			var simple = type.slice( 0, 3 ) !== "nth",
          +				forward = type.slice( -4 ) !== "last",
          +				ofType = what === "of-type";
          +
          +			return first === 1 && last === 0 ?
          +
          +				// Shortcut for :nth-*(n)
          +				function( elem ) {
          +					return !!elem.parentNode;
          +				} :
          +
          +				function( elem, context, xml ) {
          +					var cache, uniqueCache, outerCache, node, nodeIndex, start,
          +						dir = simple !== forward ? "nextSibling" : "previousSibling",
          +						parent = elem.parentNode,
          +						name = ofType && elem.nodeName.toLowerCase(),
          +						useCache = !xml && !ofType,
          +						diff = false;
          +
          +					if ( parent ) {
          +
          +						// :(first|last|only)-(child|of-type)
          +						if ( simple ) {
          +							while ( dir ) {
          +								node = elem;
          +								while ( (node = node[ dir ]) ) {
          +									if ( ofType ?
          +										node.nodeName.toLowerCase() === name :
          +										node.nodeType === 1 ) {
          +
          +										return false;
          +									}
          +								}
          +								// Reverse direction for :only-* (if we haven't yet done so)
          +								start = dir = type === "only" && !start && "nextSibling";
          +							}
          +							return true;
          +						}
          +
          +						start = [ forward ? parent.firstChild : parent.lastChild ];
          +
          +						// non-xml :nth-child(...) stores cache data on `parent`
          +						if ( forward && useCache ) {
          +
          +							// Seek `elem` from a previously-cached index
          +
          +							// ...in a gzip-friendly way
          +							node = parent;
          +							outerCache = node[ expando ] || (node[ expando ] = {});
          +
          +							// Support: IE <9 only
          +							// Defend against cloned attroperties (jQuery gh-1709)
          +							uniqueCache = outerCache[ node.uniqueID ] ||
          +								(outerCache[ node.uniqueID ] = {});
          +
          +							cache = uniqueCache[ type ] || [];
          +							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
          +							diff = nodeIndex && cache[ 2 ];
          +							node = nodeIndex && parent.childNodes[ nodeIndex ];
          +
          +							while ( (node = ++nodeIndex && node && node[ dir ] ||
          +
          +								// Fallback to seeking `elem` from the start
          +								(diff = nodeIndex = 0) || start.pop()) ) {
          +
          +								// When found, cache indexes on `parent` and break
          +								if ( node.nodeType === 1 && ++diff && node === elem ) {
          +									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
          +									break;
          +								}
          +							}
          +
          +						} else {
          +							// Use previously-cached element index if available
          +							if ( useCache ) {
          +								// ...in a gzip-friendly way
          +								node = elem;
          +								outerCache = node[ expando ] || (node[ expando ] = {});
          +
          +								// Support: IE <9 only
          +								// Defend against cloned attroperties (jQuery gh-1709)
          +								uniqueCache = outerCache[ node.uniqueID ] ||
          +									(outerCache[ node.uniqueID ] = {});
          +
          +								cache = uniqueCache[ type ] || [];
          +								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
          +								diff = nodeIndex;
          +							}
          +
          +							// xml :nth-child(...)
          +							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
          +							if ( diff === false ) {
          +								// Use the same loop as above to seek `elem` from the start
          +								while ( (node = ++nodeIndex && node && node[ dir ] ||
          +									(diff = nodeIndex = 0) || start.pop()) ) {
          +
          +									if ( ( ofType ?
          +										node.nodeName.toLowerCase() === name :
          +										node.nodeType === 1 ) &&
          +										++diff ) {
          +
          +										// Cache the index of each encountered element
          +										if ( useCache ) {
          +											outerCache = node[ expando ] || (node[ expando ] = {});
          +
          +											// Support: IE <9 only
          +											// Defend against cloned attroperties (jQuery gh-1709)
          +											uniqueCache = outerCache[ node.uniqueID ] ||
          +												(outerCache[ node.uniqueID ] = {});
          +
          +											uniqueCache[ type ] = [ dirruns, diff ];
          +										}
          +
          +										if ( node === elem ) {
          +											break;
          +										}
          +									}
          +								}
          +							}
          +						}
          +
          +						// Incorporate the offset, then check against cycle size
          +						diff -= last;
          +						return diff === first || ( diff % first === 0 && diff / first >= 0 );
          +					}
          +				};
          +		},
          +
          +		"PSEUDO": function( pseudo, argument ) {
          +			// pseudo-class names are case-insensitive
          +			// http://www.w3.org/TR/selectors/#pseudo-classes
          +			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
          +			// Remember that setFilters inherits from pseudos
          +			var args,
          +				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
          +					Sizzle.error( "unsupported pseudo: " + pseudo );
          +
          +			// The user may use createPseudo to indicate that
          +			// arguments are needed to create the filter function
          +			// just as Sizzle does
          +			if ( fn[ expando ] ) {
          +				return fn( argument );
          +			}
          +
          +			// But maintain support for old signatures
          +			if ( fn.length > 1 ) {
          +				args = [ pseudo, pseudo, "", argument ];
          +				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
          +					markFunction(function( seed, matches ) {
          +						var idx,
          +							matched = fn( seed, argument ),
          +							i = matched.length;
          +						while ( i-- ) {
          +							idx = indexOf( seed, matched[i] );
          +							seed[ idx ] = !( matches[ idx ] = matched[i] );
          +						}
          +					}) :
          +					function( elem ) {
          +						return fn( elem, 0, args );
          +					};
          +			}
          +
          +			return fn;
          +		}
          +	},
          +
          +	pseudos: {
          +		// Potentially complex pseudos
          +		"not": markFunction(function( selector ) {
          +			// Trim the selector passed to compile
          +			// to avoid treating leading and trailing
          +			// spaces as combinators
          +			var input = [],
          +				results = [],
          +				matcher = compile( selector.replace( rtrim, "$1" ) );
          +
          +			return matcher[ expando ] ?
          +				markFunction(function( seed, matches, context, xml ) {
          +					var elem,
          +						unmatched = matcher( seed, null, xml, [] ),
          +						i = seed.length;
          +
          +					// Match elements unmatched by `matcher`
          +					while ( i-- ) {
          +						if ( (elem = unmatched[i]) ) {
          +							seed[i] = !(matches[i] = elem);
          +						}
          +					}
          +				}) :
          +				function( elem, context, xml ) {
          +					input[0] = elem;
          +					matcher( input, null, xml, results );
          +					// Don't keep the element (issue #299)
          +					input[0] = null;
          +					return !results.pop();
          +				};
          +		}),
          +
          +		"has": markFunction(function( selector ) {
          +			return function( elem ) {
          +				return Sizzle( selector, elem ).length > 0;
          +			};
          +		}),
          +
          +		"contains": markFunction(function( text ) {
          +			text = text.replace( runescape, funescape );
          +			return function( elem ) {
          +				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
          +			};
          +		}),
          +
          +		// "Whether an element is represented by a :lang() selector
          +		// is based solely on the element's language value
          +		// being equal to the identifier C,
          +		// or beginning with the identifier C immediately followed by "-".
          +		// The matching of C against the element's language value is performed case-insensitively.
          +		// The identifier C does not have to be a valid language name."
          +		// http://www.w3.org/TR/selectors/#lang-pseudo
          +		"lang": markFunction( function( lang ) {
          +			// lang value must be a valid identifier
          +			if ( !ridentifier.test(lang || "") ) {
          +				Sizzle.error( "unsupported lang: " + lang );
          +			}
          +			lang = lang.replace( runescape, funescape ).toLowerCase();
          +			return function( elem ) {
          +				var elemLang;
          +				do {
          +					if ( (elemLang = documentIsHTML ?
          +						elem.lang :
          +						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
          +
          +						elemLang = elemLang.toLowerCase();
          +						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
          +					}
          +				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
          +				return false;
          +			};
          +		}),
          +
          +		// Miscellaneous
          +		"target": function( elem ) {
          +			var hash = window.location && window.location.hash;
          +			return hash && hash.slice( 1 ) === elem.id;
          +		},
          +
          +		"root": function( elem ) {
          +			return elem === docElem;
          +		},
          +
          +		"focus": function( elem ) {
          +			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
          +		},
          +
          +		// Boolean properties
          +		"enabled": function( elem ) {
          +			return elem.disabled === false;
          +		},
          +
          +		"disabled": function( elem ) {
          +			return elem.disabled === true;
          +		},
          +
          +		"checked": function( elem ) {
          +			// In CSS3, :checked should return both checked and selected elements
          +			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
          +			var nodeName = elem.nodeName.toLowerCase();
          +			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
          +		},
          +
          +		"selected": function( elem ) {
          +			// Accessing this property makes selected-by-default
          +			// options in Safari work properly
          +			if ( elem.parentNode ) {
          +				elem.parentNode.selectedIndex;
          +			}
          +
          +			return elem.selected === true;
          +		},
          +
          +		// Contents
          +		"empty": function( elem ) {
          +			// http://www.w3.org/TR/selectors/#empty-pseudo
          +			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
          +			//   but not by others (comment: 8; processing instruction: 7; etc.)
          +			// nodeType < 6 works because attributes (2) do not appear as children
          +			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
          +				if ( elem.nodeType < 6 ) {
          +					return false;
          +				}
          +			}
          +			return true;
          +		},
          +
          +		"parent": function( elem ) {
          +			return !Expr.pseudos["empty"]( elem );
          +		},
          +
          +		// Element/input types
          +		"header": function( elem ) {
          +			return rheader.test( elem.nodeName );
          +		},
          +
          +		"input": function( elem ) {
          +			return rinputs.test( elem.nodeName );
          +		},
          +
          +		"button": function( elem ) {
          +			var name = elem.nodeName.toLowerCase();
          +			return name === "input" && elem.type === "button" || name === "button";
          +		},
          +
          +		"text": function( elem ) {
          +			var attr;
          +			return elem.nodeName.toLowerCase() === "input" &&
          +				elem.type === "text" &&
          +
          +				// Support: IE<8
          +				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
          +				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
          +		},
          +
          +		// Position-in-collection
          +		"first": createPositionalPseudo(function() {
          +			return [ 0 ];
          +		}),
          +
          +		"last": createPositionalPseudo(function( matchIndexes, length ) {
          +			return [ length - 1 ];
          +		}),
          +
          +		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +			return [ argument < 0 ? argument + length : argument ];
          +		}),
          +
          +		"even": createPositionalPseudo(function( matchIndexes, length ) {
          +			var i = 0;
          +			for ( ; i < length; i += 2 ) {
          +				matchIndexes.push( i );
          +			}
          +			return matchIndexes;
          +		}),
          +
          +		"odd": createPositionalPseudo(function( matchIndexes, length ) {
          +			var i = 1;
          +			for ( ; i < length; i += 2 ) {
          +				matchIndexes.push( i );
          +			}
          +			return matchIndexes;
          +		}),
          +
          +		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +			var i = argument < 0 ? argument + length : argument;
          +			for ( ; --i >= 0; ) {
          +				matchIndexes.push( i );
          +			}
          +			return matchIndexes;
          +		}),
          +
          +		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +			var i = argument < 0 ? argument + length : argument;
          +			for ( ; ++i < length; ) {
          +				matchIndexes.push( i );
          +			}
          +			return matchIndexes;
          +		})
          +	}
          +};
          +
          +Expr.pseudos["nth"] = Expr.pseudos["eq"];
          +
          +// Add button/input type pseudos
          +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
          +	Expr.pseudos[ i ] = createInputPseudo( i );
          +}
          +for ( i in { submit: true, reset: true } ) {
          +	Expr.pseudos[ i ] = createButtonPseudo( i );
          +}
          +
          +// Easy API for creating new setFilters
          +function setFilters() {}
          +setFilters.prototype = Expr.filters = Expr.pseudos;
          +Expr.setFilters = new setFilters();
          +
          +tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
          +	var matched, match, tokens, type,
          +		soFar, groups, preFilters,
          +		cached = tokenCache[ selector + " " ];
          +
          +	if ( cached ) {
          +		return parseOnly ? 0 : cached.slice( 0 );
          +	}
          +
          +	soFar = selector;
          +	groups = [];
          +	preFilters = Expr.preFilter;
          +
          +	while ( soFar ) {
          +
          +		// Comma and first run
          +		if ( !matched || (match = rcomma.exec( soFar )) ) {
          +			if ( match ) {
          +				// Don't consume trailing commas as valid
          +				soFar = soFar.slice( match[0].length ) || soFar;
          +			}
          +			groups.push( (tokens = []) );
          +		}
          +
          +		matched = false;
          +
          +		// Combinators
          +		if ( (match = rcombinators.exec( soFar )) ) {
          +			matched = match.shift();
          +			tokens.push({
          +				value: matched,
          +				// Cast descendant combinators to space
          +				type: match[0].replace( rtrim, " " )
          +			});
          +			soFar = soFar.slice( matched.length );
          +		}
          +
          +		// Filters
          +		for ( type in Expr.filter ) {
          +			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
          +				(match = preFilters[ type ]( match ))) ) {
          +				matched = match.shift();
          +				tokens.push({
          +					value: matched,
          +					type: type,
          +					matches: match
          +				});
          +				soFar = soFar.slice( matched.length );
          +			}
          +		}
          +
          +		if ( !matched ) {
          +			break;
          +		}
          +	}
          +
          +	// Return the length of the invalid excess
          +	// if we're just parsing
          +	// Otherwise, throw an error or return tokens
          +	return parseOnly ?
          +		soFar.length :
          +		soFar ?
          +			Sizzle.error( selector ) :
          +			// Cache the tokens
          +			tokenCache( selector, groups ).slice( 0 );
          +};
          +
          +function toSelector( tokens ) {
          +	var i = 0,
          +		len = tokens.length,
          +		selector = "";
          +	for ( ; i < len; i++ ) {
          +		selector += tokens[i].value;
          +	}
          +	return selector;
          +}
          +
          +function addCombinator( matcher, combinator, base ) {
          +	var dir = combinator.dir,
          +		checkNonElements = base && dir === "parentNode",
          +		doneName = done++;
          +
          +	return combinator.first ?
          +		// Check against closest ancestor/preceding element
          +		function( elem, context, xml ) {
          +			while ( (elem = elem[ dir ]) ) {
          +				if ( elem.nodeType === 1 || checkNonElements ) {
          +					return matcher( elem, context, xml );
          +				}
          +			}
          +		} :
          +
          +		// Check against all ancestor/preceding elements
          +		function( elem, context, xml ) {
          +			var oldCache, uniqueCache, outerCache,
          +				newCache = [ dirruns, doneName ];
          +
          +			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
          +			if ( xml ) {
          +				while ( (elem = elem[ dir ]) ) {
          +					if ( elem.nodeType === 1 || checkNonElements ) {
          +						if ( matcher( elem, context, xml ) ) {
          +							return true;
          +						}
          +					}
          +				}
          +			} else {
          +				while ( (elem = elem[ dir ]) ) {
          +					if ( elem.nodeType === 1 || checkNonElements ) {
          +						outerCache = elem[ expando ] || (elem[ expando ] = {});
          +
          +						// Support: IE <9 only
          +						// Defend against cloned attroperties (jQuery gh-1709)
          +						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
          +
          +						if ( (oldCache = uniqueCache[ dir ]) &&
          +							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
          +
          +							// Assign to newCache so results back-propagate to previous elements
          +							return (newCache[ 2 ] = oldCache[ 2 ]);
          +						} else {
          +							// Reuse newcache so results back-propagate to previous elements
          +							uniqueCache[ dir ] = newCache;
          +
          +							// A match means we're done; a fail means we have to keep checking
          +							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
          +								return true;
          +							}
          +						}
          +					}
          +				}
          +			}
          +		};
          +}
          +
          +function elementMatcher( matchers ) {
          +	return matchers.length > 1 ?
          +		function( elem, context, xml ) {
          +			var i = matchers.length;
          +			while ( i-- ) {
          +				if ( !matchers[i]( elem, context, xml ) ) {
          +					return false;
          +				}
          +			}
          +			return true;
          +		} :
          +		matchers[0];
          +}
          +
          +function multipleContexts( selector, contexts, results ) {
          +	var i = 0,
          +		len = contexts.length;
          +	for ( ; i < len; i++ ) {
          +		Sizzle( selector, contexts[i], results );
          +	}
          +	return results;
          +}
          +
          +function condense( unmatched, map, filter, context, xml ) {
          +	var elem,
          +		newUnmatched = [],
          +		i = 0,
          +		len = unmatched.length,
          +		mapped = map != null;
          +
          +	for ( ; i < len; i++ ) {
          +		if ( (elem = unmatched[i]) ) {
          +			if ( !filter || filter( elem, context, xml ) ) {
          +				newUnmatched.push( elem );
          +				if ( mapped ) {
          +					map.push( i );
          +				}
          +			}
          +		}
          +	}
          +
          +	return newUnmatched;
          +}
          +
          +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
          +	if ( postFilter && !postFilter[ expando ] ) {
          +		postFilter = setMatcher( postFilter );
          +	}
          +	if ( postFinder && !postFinder[ expando ] ) {
          +		postFinder = setMatcher( postFinder, postSelector );
          +	}
          +	return markFunction(function( seed, results, context, xml ) {
          +		var temp, i, elem,
          +			preMap = [],
          +			postMap = [],
          +			preexisting = results.length,
          +
          +			// Get initial elements from seed or context
          +			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
          +
          +			// Prefilter to get matcher input, preserving a map for seed-results synchronization
          +			matcherIn = preFilter && ( seed || !selector ) ?
          +				condense( elems, preMap, preFilter, context, xml ) :
          +				elems,
          +
          +			matcherOut = matcher ?
          +				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
          +				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
          +
          +					// ...intermediate processing is necessary
          +					[] :
          +
          +					// ...otherwise use results directly
          +					results :
          +				matcherIn;
          +
          +		// Find primary matches
          +		if ( matcher ) {
          +			matcher( matcherIn, matcherOut, context, xml );
          +		}
          +
          +		// Apply postFilter
          +		if ( postFilter ) {
          +			temp = condense( matcherOut, postMap );
          +			postFilter( temp, [], context, xml );
          +
          +			// Un-match failing elements by moving them back to matcherIn
          +			i = temp.length;
          +			while ( i-- ) {
          +				if ( (elem = temp[i]) ) {
          +					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
          +				}
          +			}
          +		}
          +
          +		if ( seed ) {
          +			if ( postFinder || preFilter ) {
          +				if ( postFinder ) {
          +					// Get the final matcherOut by condensing this intermediate into postFinder contexts
          +					temp = [];
          +					i = matcherOut.length;
          +					while ( i-- ) {
          +						if ( (elem = matcherOut[i]) ) {
          +							// Restore matcherIn since elem is not yet a final match
          +							temp.push( (matcherIn[i] = elem) );
          +						}
          +					}
          +					postFinder( null, (matcherOut = []), temp, xml );
          +				}
          +
          +				// Move matched elements from seed to results to keep them synchronized
          +				i = matcherOut.length;
          +				while ( i-- ) {
          +					if ( (elem = matcherOut[i]) &&
          +						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
          +
          +						seed[temp] = !(results[temp] = elem);
          +					}
          +				}
          +			}
          +
          +		// Add elements to results, through postFinder if defined
          +		} else {
          +			matcherOut = condense(
          +				matcherOut === results ?
          +					matcherOut.splice( preexisting, matcherOut.length ) :
          +					matcherOut
          +			);
          +			if ( postFinder ) {
          +				postFinder( null, results, matcherOut, xml );
          +			} else {
          +				push.apply( results, matcherOut );
          +			}
          +		}
          +	});
          +}
          +
          +function matcherFromTokens( tokens ) {
          +	var checkContext, matcher, j,
          +		len = tokens.length,
          +		leadingRelative = Expr.relative[ tokens[0].type ],
          +		implicitRelative = leadingRelative || Expr.relative[" "],
          +		i = leadingRelative ? 1 : 0,
          +
          +		// The foundational matcher ensures that elements are reachable from top-level context(s)
          +		matchContext = addCombinator( function( elem ) {
          +			return elem === checkContext;
          +		}, implicitRelative, true ),
          +		matchAnyContext = addCombinator( function( elem ) {
          +			return indexOf( checkContext, elem ) > -1;
          +		}, implicitRelative, true ),
          +		matchers = [ function( elem, context, xml ) {
          +			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
          +				(checkContext = context).nodeType ?
          +					matchContext( elem, context, xml ) :
          +					matchAnyContext( elem, context, xml ) );
          +			// Avoid hanging onto element (issue #299)
          +			checkContext = null;
          +			return ret;
          +		} ];
          +
          +	for ( ; i < len; i++ ) {
          +		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
          +			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
          +		} else {
          +			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
          +
          +			// Return special upon seeing a positional matcher
          +			if ( matcher[ expando ] ) {
          +				// Find the next relative operator (if any) for proper handling
          +				j = ++i;
          +				for ( ; j < len; j++ ) {
          +					if ( Expr.relative[ tokens[j].type ] ) {
          +						break;
          +					}
          +				}
          +				return setMatcher(
          +					i > 1 && elementMatcher( matchers ),
          +					i > 1 && toSelector(
          +						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
          +						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
          +					).replace( rtrim, "$1" ),
          +					matcher,
          +					i < j && matcherFromTokens( tokens.slice( i, j ) ),
          +					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
          +					j < len && toSelector( tokens )
          +				);
          +			}
          +			matchers.push( matcher );
          +		}
          +	}
          +
          +	return elementMatcher( matchers );
          +}
          +
          +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
          +	var bySet = setMatchers.length > 0,
          +		byElement = elementMatchers.length > 0,
          +		superMatcher = function( seed, context, xml, results, outermost ) {
          +			var elem, j, matcher,
          +				matchedCount = 0,
          +				i = "0",
          +				unmatched = seed && [],
          +				setMatched = [],
          +				contextBackup = outermostContext,
          +				// We must always have either seed elements or outermost context
          +				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
          +				// Use integer dirruns iff this is the outermost matcher
          +				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
          +				len = elems.length;
          +
          +			if ( outermost ) {
          +				outermostContext = context === document || context || outermost;
          +			}
          +
          +			// Add elements passing elementMatchers directly to results
          +			// Support: IE<9, Safari
          +			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
          +			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
          +				if ( byElement && elem ) {
          +					j = 0;
          +					if ( !context && elem.ownerDocument !== document ) {
          +						setDocument( elem );
          +						xml = !documentIsHTML;
          +					}
          +					while ( (matcher = elementMatchers[j++]) ) {
          +						if ( matcher( elem, context || document, xml) ) {
          +							results.push( elem );
          +							break;
          +						}
          +					}
          +					if ( outermost ) {
          +						dirruns = dirrunsUnique;
          +					}
          +				}
          +
          +				// Track unmatched elements for set filters
          +				if ( bySet ) {
          +					// They will have gone through all possible matchers
          +					if ( (elem = !matcher && elem) ) {
          +						matchedCount--;
          +					}
          +
          +					// Lengthen the array for every element, matched or not
          +					if ( seed ) {
          +						unmatched.push( elem );
          +					}
          +				}
          +			}
          +
          +			// `i` is now the count of elements visited above, and adding it to `matchedCount`
          +			// makes the latter nonnegative.
          +			matchedCount += i;
          +
          +			// Apply set filters to unmatched elements
          +			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
          +			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
          +			// no element matchers and no seed.
          +			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
          +			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
          +			// numerically zero.
          +			if ( bySet && i !== matchedCount ) {
          +				j = 0;
          +				while ( (matcher = setMatchers[j++]) ) {
          +					matcher( unmatched, setMatched, context, xml );
          +				}
          +
          +				if ( seed ) {
          +					// Reintegrate element matches to eliminate the need for sorting
          +					if ( matchedCount > 0 ) {
          +						while ( i-- ) {
          +							if ( !(unmatched[i] || setMatched[i]) ) {
          +								setMatched[i] = pop.call( results );
          +							}
          +						}
          +					}
          +
          +					// Discard index placeholder values to get only actual matches
          +					setMatched = condense( setMatched );
          +				}
          +
          +				// Add matches to results
          +				push.apply( results, setMatched );
          +
          +				// Seedless set matches succeeding multiple successful matchers stipulate sorting
          +				if ( outermost && !seed && setMatched.length > 0 &&
          +					( matchedCount + setMatchers.length ) > 1 ) {
          +
          +					Sizzle.uniqueSort( results );
          +				}
          +			}
          +
          +			// Override manipulation of globals by nested matchers
          +			if ( outermost ) {
          +				dirruns = dirrunsUnique;
          +				outermostContext = contextBackup;
          +			}
          +
          +			return unmatched;
          +		};
          +
          +	return bySet ?
          +		markFunction( superMatcher ) :
          +		superMatcher;
          +}
          +
          +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
          +	var i,
          +		setMatchers = [],
          +		elementMatchers = [],
          +		cached = compilerCache[ selector + " " ];
          +
          +	if ( !cached ) {
          +		// Generate a function of recursive functions that can be used to check each element
          +		if ( !match ) {
          +			match = tokenize( selector );
          +		}
          +		i = match.length;
          +		while ( i-- ) {
          +			cached = matcherFromTokens( match[i] );
          +			if ( cached[ expando ] ) {
          +				setMatchers.push( cached );
          +			} else {
          +				elementMatchers.push( cached );
          +			}
          +		}
          +
          +		// Cache the compiled function
          +		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
          +
          +		// Save selector and tokenization
          +		cached.selector = selector;
          +	}
          +	return cached;
          +};
          +
          +/**
          + * A low-level selection function that works with Sizzle's compiled
          + *  selector functions
          + * @param {String|Function} selector A selector or a pre-compiled
          + *  selector function built with Sizzle.compile
          + * @param {Element} context
          + * @param {Array} [results]
          + * @param {Array} [seed] A set of elements to match against
          + */
          +select = Sizzle.select = function( selector, context, results, seed ) {
          +	var i, tokens, token, type, find,
          +		compiled = typeof selector === "function" && selector,
          +		match = !seed && tokenize( (selector = compiled.selector || selector) );
          +
          +	results = results || [];
          +
          +	// Try to minimize operations if there is only one selector in the list and no seed
          +	// (the latter of which guarantees us context)
          +	if ( match.length === 1 ) {
          +
          +		// Reduce context if the leading compound selector is an ID
          +		tokens = match[0] = match[0].slice( 0 );
          +		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
          +				support.getById && context.nodeType === 9 && documentIsHTML &&
          +				Expr.relative[ tokens[1].type ] ) {
          +
          +			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
          +			if ( !context ) {
          +				return results;
          +
          +			// Precompiled matchers will still verify ancestry, so step up a level
          +			} else if ( compiled ) {
          +				context = context.parentNode;
          +			}
          +
          +			selector = selector.slice( tokens.shift().value.length );
          +		}
          +
          +		// Fetch a seed set for right-to-left matching
          +		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
          +		while ( i-- ) {
          +			token = tokens[i];
          +
          +			// Abort if we hit a combinator
          +			if ( Expr.relative[ (type = token.type) ] ) {
          +				break;
          +			}
          +			if ( (find = Expr.find[ type ]) ) {
          +				// Search, expanding context for leading sibling combinators
          +				if ( (seed = find(
          +					token.matches[0].replace( runescape, funescape ),
          +					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
          +				)) ) {
          +
          +					// If seed is empty or no tokens remain, we can return early
          +					tokens.splice( i, 1 );
          +					selector = seed.length && toSelector( tokens );
          +					if ( !selector ) {
          +						push.apply( results, seed );
          +						return results;
          +					}
          +
          +					break;
          +				}
          +			}
          +		}
          +	}
          +
          +	// Compile and execute a filtering function if one is not provided
          +	// Provide `match` to avoid retokenization if we modified the selector above
          +	( compiled || compile( selector, match ) )(
          +		seed,
          +		context,
          +		!documentIsHTML,
          +		results,
          +		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
          +	);
          +	return results;
          +};
          +
          +// One-time assignments
          +
          +// Sort stability
          +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
          +
          +// Support: Chrome 14-35+
          +// Always assume duplicates if they aren't passed to the comparison function
          +support.detectDuplicates = !!hasDuplicate;
          +
          +// Initialize against the default document
          +setDocument();
          +
          +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
          +// Detached nodes confoundingly follow *each other*
          +support.sortDetached = assert(function( div1 ) {
          +	// Should return 1, but returns 4 (following)
          +	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
          +});
          +
          +// Support: IE<8
          +// Prevent attribute/property "interpolation"
          +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
          +if ( !assert(function( div ) {
          +	div.innerHTML = "<a href='#'></a>";
          +	return div.firstChild.getAttribute("href") === "#" ;
          +}) ) {
          +	addHandle( "type|href|height|width", function( elem, name, isXML ) {
          +		if ( !isXML ) {
          +			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
          +		}
          +	});
          +}
          +
          +// Support: IE<9
          +// Use defaultValue in place of getAttribute("value")
          +if ( !support.attributes || !assert(function( div ) {
          +	div.innerHTML = "<input/>";
          +	div.firstChild.setAttribute( "value", "" );
          +	return div.firstChild.getAttribute( "value" ) === "";
          +}) ) {
          +	addHandle( "value", function( elem, name, isXML ) {
          +		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
          +			return elem.defaultValue;
          +		}
          +	});
          +}
          +
          +// Support: IE<9
          +// Use getAttributeNode to fetch booleans when getAttribute lies
          +if ( !assert(function( div ) {
          +	return div.getAttribute("disabled") == null;
          +}) ) {
          +	addHandle( booleans, function( elem, name, isXML ) {
          +		var val;
          +		if ( !isXML ) {
          +			return elem[ name ] === true ? name.toLowerCase() :
          +					(val = elem.getAttributeNode( name )) && val.specified ?
          +					val.value :
          +				null;
          +		}
          +	});
          +}
          +
          +// EXPOSE
          +if ( typeof define === "function" && define.amd ) {
          +	define(function() { return Sizzle; });
          +// Sizzle requires that there be a global window in Common-JS like environments
          +} else if ( typeof module !== "undefined" && module.exports ) {
          +	module.exports = Sizzle;
          +} else {
          +	window.Sizzle = Sizzle;
          +}
          +// EXPOSE
          +
          +})( window );
          diff --git a/public/theme/jquery/external/sizzle/dist/sizzle.min.js b/public/theme/jquery/external/sizzle/dist/sizzle.min.js
          new file mode 100644
          index 0000000..8558975
          --- /dev/null
          +++ b/public/theme/jquery/external/sizzle/dist/sizzle.min.js
          @@ -0,0 +1,3 @@
          +/*! Sizzle v2.2.1 | (c) jQuery Foundation, Inc. | jquery.org/license */
          +!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=R.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return fa}):"undefined"!=typeof module&&module.exports?module.exports=fa:a.Sizzle=fa}(window);
          +//# sourceMappingURL=sizzle.min.map
          \ No newline at end of file
          diff --git a/public/theme/jquery/external/sizzle/dist/sizzle.min.map b/public/theme/jquery/external/sizzle/dist/sizzle.min.map
          new file mode 100644
          index 0000000..5438e0e
          --- /dev/null
          +++ b/public/theme/jquery/external/sizzle/dist/sizzle.min.map
          @@ -0,0 +1 @@
          +{"version":3,"file":"sizzle.min.js","sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","nidselect","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":";CAUA,SAAWA,GAEX,GAAIC,GACHC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAAU,SAAW,EAAI,GAAIC,MAC7BC,EAAetB,EAAOa,SACtBU,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUC,EAAGC,GAIxB,MAHKD,KAAMC,IACVpB,GAAe,GAET,GAIRqB,EAAe,GAAK,GAGpBC,KAAcC,eACdC,KACAC,EAAMD,EAAIC,IACVC,EAAcF,EAAIG,KAClBA,EAAOH,EAAIG,KACXC,EAAQJ,EAAII,MAGZC,EAAU,SAAUC,EAAMC,GAGzB,IAFA,GAAIzC,GAAI,EACP0C,EAAMF,EAAKG,OACAD,EAAJ1C,EAASA,IAChB,GAAKwC,EAAKxC,KAAOyC,EAChB,MAAOzC,EAGT,OAAO,IAGR4C,EAAW,6HAKXC,EAAa,sBAGbC,EAAa,mCAGbC,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAE9D,gBAAkBA,EAElB,2DAA6DC,EAAa,OAASD,EACnF,OAEDG,EAAU,KAAOF,EAAa,wFAKAC,EAAa,eAM3CE,EAAc,GAAIC,QAAQL,EAAa,IAAK,KAC5CM,EAAQ,GAAID,QAAQ,IAAML,EAAa,8BAAgCA,EAAa,KAAM,KAE1FO,EAAS,GAAIF,QAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,GAAIH,QAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FS,EAAmB,GAAIJ,QAAQ,IAAML,EAAa,iBAAmBA,EAAa,OAAQ,KAE1FU,EAAU,GAAIL,QAAQF,GACtBQ,EAAc,GAAIN,QAAQ,IAAMJ,EAAa,KAE7CW,GACCC,GAAM,GAAIR,QAAQ,MAAQJ,EAAa,KACvCa,MAAS,GAAIT,QAAQ,QAAUJ,EAAa,KAC5Cc,IAAO,GAAIV,QAAQ,KAAOJ,EAAa,SACvCe,KAAQ,GAAIX,QAAQ,IAAMH,GAC1Be,OAAU,GAAIZ,QAAQ,IAAMF,GAC5Be,MAAS,GAAIb,QAAQ,yDAA2DL,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCmB,KAAQ,GAAId,QAAQ,OAASN,EAAW,KAAM,KAG9CqB,aAAgB,GAAIf,QAAQ,IAAML,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEqB,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,EAAW,OACXC,GAAU,QAGVC,GAAY,GAAItB,QAAQ,qBAAuBL,EAAa,MAAQA,EAAa,OAAQ,MACzF4B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACfrE,IAIF,KACC0B,EAAK4C,MACH/C,EAAMI,EAAM4C,KAAM7D,EAAa8D,YAChC9D,EAAa8D,YAIdjD,EAAKb,EAAa8D,WAAWxC,QAASyC,SACrC,MAAQC,IACThD,GAAS4C,MAAO/C,EAAIS,OAGnB,SAAU2C,EAAQC,GACjBnD,EAAY6C,MAAOK,EAAQhD,EAAM4C,KAAKK,KAKvC,SAAUD,EAAQC,GACjB,GAAIC,GAAIF,EAAO3C,OACd3C,EAAI,CAEL,OAASsF,EAAOE,KAAOD,EAAIvF,MAC3BsF,EAAO3C,OAAS6C,EAAI,IAKvB,QAASC,IAAQC,EAAUC,EAASC,EAASC,GAC5C,GAAIC,GAAG9F,EAAGyC,EAAMsD,EAAKC,EAAWC,EAAOC,EAAQC,EAC9CC,EAAaT,GAAWA,EAAQU,cAGhCjB,EAAWO,EAAUA,EAAQP,SAAW,CAKzC,IAHAQ,EAAUA,MAGe,gBAAbF,KAA0BA,GACxB,IAAbN,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,MAAOQ,EAIR,KAAMC,KAEEF,EAAUA,EAAQU,eAAiBV,EAAUtE,KAAmBT,GACtED,EAAagF,GAEdA,EAAUA,GAAW/E,EAEhBE,GAAiB,CAIrB,GAAkB,KAAbsE,IAAoBa,EAAQ5B,EAAWiC,KAAMZ,IAGjD,GAAMI,EAAIG,EAAM,IAGf,GAAkB,IAAbb,EAAiB,CACrB,KAAM3C,EAAOkD,EAAQY,eAAgBT,IAUpC,MAAOF,EALP,IAAKnD,EAAK+D,KAAOV,EAEhB,MADAF,GAAQvD,KAAMI,GACPmD,MAYT,IAAKQ,IAAe3D,EAAO2D,EAAWG,eAAgBT,KACrD5E,EAAUyE,EAASlD,IACnBA,EAAK+D,KAAOV,EAGZ,MADAF,GAAQvD,KAAMI,GACPmD,MAKH,CAAA,GAAKK,EAAM,GAEjB,MADA5D,GAAK4C,MAAOW,EAASD,EAAQc,qBAAsBf,IAC5CE,CAGD,KAAME,EAAIG,EAAM,KAAOhG,EAAQyG,wBACrCf,EAAQe,uBAGR,MADArE,GAAK4C,MAAOW,EAASD,EAAQe,uBAAwBZ,IAC9CF,EAKT,GAAK3F,EAAQ0G,MACXhF,EAAe+D,EAAW,QACzB3E,IAAcA,EAAU6F,KAAMlB,IAAc,CAE9C,GAAkB,IAAbN,EACJgB,EAAaT,EACbQ,EAAcT,MAMR,IAAwC,WAAnCC,EAAQkB,SAASC,cAA6B,EAGnDf,EAAMJ,EAAQoB,aAAc,OACjChB,EAAMA,EAAIiB,QAASzC,GAAS,QAE5BoB,EAAQsB,aAAc,KAAOlB,EAAM5E,GAIpC+E,EAAS7F,EAAUqF,GACnB1F,EAAIkG,EAAOvD,OACXqD,EAAYxC,EAAYoD,KAAMb,GAAQ,IAAMA,EAAM,QAAUA,EAAM,IAClE,OAAQ/F,IACPkG,EAAOlG,GAAKgG,EAAY,IAAMkB,GAAYhB,EAAOlG,GAElDmG,GAAcD,EAAOiB,KAAM,KAG3Bf,EAAa9B,EAASsC,KAAMlB,IAAc0B,GAAazB,EAAQ0B,aAC9D1B,EAGF,GAAKQ,EACJ,IAIC,MAHA9D,GAAK4C,MAAOW,EACXQ,EAAWkB,iBAAkBnB,IAEvBP,EACN,MAAQ2B,IACR,QACIxB,IAAQ5E,GACZwE,EAAQ6B,gBAAiB,QAS/B,MAAOjH,GAAQmF,EAASsB,QAAS7D,EAAO,MAAQwC,EAASC,EAASC,GASnE,QAASpE,MACR,GAAIgG,KAEJ,SAASC,GAAOC,EAAKC,GAMpB,MAJKH,GAAKpF,KAAMsF,EAAM,KAAQzH,EAAK2H,mBAE3BH,GAAOD,EAAKK,SAEZJ,EAAOC,EAAM,KAAQC,EAE9B,MAAOF,GAOR,QAASK,IAAcC,GAEtB,MADAA,GAAI7G,IAAY,EACT6G,EAOR,QAASC,IAAQD,GAChB,GAAIE,GAAMtH,EAASuH,cAAc,MAEjC,KACC,QAASH,EAAIE,GACZ,MAAO7C,GACR,OAAO,EACN,QAEI6C,EAAIb,YACRa,EAAIb,WAAWe,YAAaF,GAG7BA,EAAM,MASR,QAASG,IAAWC,EAAOC,GAC1B,GAAIrG,GAAMoG,EAAME,MAAM,KACrBxI,EAAIkC,EAAIS,MAET,OAAQ3C,IACPE,EAAKuI,WAAYvG,EAAIlC,IAAOuI,EAU9B,QAASG,IAAc7G,EAAGC,GACzB,GAAI6G,GAAM7G,GAAKD,EACd+G,EAAOD,GAAsB,IAAf9G,EAAEuD,UAAiC,IAAftD,EAAEsD,YAChCtD,EAAE+G,aAAe9G,KACjBF,EAAEgH,aAAe9G,EAGtB,IAAK6G,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQ7G,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASkH,IAAmBC,GAC3B,MAAO,UAAUvG,GAChB,GAAIwG,GAAOxG,EAAKoE,SAASC,aACzB,OAAgB,UAATmC,GAAoBxG,EAAKuG,OAASA,GAQ3C,QAASE,IAAoBF,GAC5B,MAAO,UAAUvG,GAChB,GAAIwG,GAAOxG,EAAKoE,SAASC,aACzB,QAAiB,UAATmC,GAA6B,WAATA,IAAsBxG,EAAKuG,OAASA,GAQlE,QAASG,IAAwBnB,GAChC,MAAOD,IAAa,SAAUqB,GAE7B,MADAA,IAAYA,EACLrB,GAAa,SAAUlC,EAAM5E,GACnC,GAAIuE,GACH6D,EAAerB,KAAQnC,EAAKlD,OAAQyG,GACpCpJ,EAAIqJ,EAAa1G,MAGlB,OAAQ3C,IACF6F,EAAOL,EAAI6D,EAAarJ,MAC5B6F,EAAKL,KAAOvE,EAAQuE,GAAKK,EAAKL,SAYnC,QAAS4B,IAAazB,GACrB,MAAOA,IAAmD,mBAAjCA,GAAQc,sBAAwCd,EAI1E1F,EAAUwF,GAAOxF,WAOjBG,EAAQqF,GAAOrF,MAAQ,SAAUqC,GAGhC,GAAI6G,GAAkB7G,IAASA,EAAK4D,eAAiB5D,GAAM6G,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBzC,UAAsB,GAQhElG,EAAc8E,GAAO9E,YAAc,SAAU4I,GAC5C,GAAIC,GAAYC,EACfC,EAAMH,EAAOA,EAAKlD,eAAiBkD,EAAOlI,CAG3C,OAAKqI,KAAQ9I,GAA6B,IAAjB8I,EAAItE,UAAmBsE,EAAIJ,iBAKpD1I,EAAW8I,EACX7I,EAAUD,EAAS0I,gBACnBxI,GAAkBV,EAAOQ,IAInB6I,EAAS7I,EAAS+I,cAAgBF,EAAOG,MAAQH,IAEjDA,EAAOI,iBACXJ,EAAOI,iBAAkB,SAAU7E,IAAe,GAGvCyE,EAAOK,aAClBL,EAAOK,YAAa,WAAY9E,KAUlC/E,EAAQ8C,WAAakF,GAAO,SAAUC,GAErC,MADAA,GAAI6B,UAAY,KACR7B,EAAInB,aAAa,eAO1B9G,EAAQwG,qBAAuBwB,GAAO,SAAUC,GAE/C,MADAA,GAAI8B,YAAapJ,EAASqJ,cAAc,MAChC/B,EAAIzB,qBAAqB,KAAK9D,SAIvC1C,EAAQyG,uBAAyBtC,EAAQwC,KAAMhG,EAAS8F,wBAMxDzG,EAAQiK,QAAUjC,GAAO,SAAUC,GAElC,MADArH,GAAQmJ,YAAa9B,GAAM1B,GAAKrF,GACxBP,EAASuJ,oBAAsBvJ,EAASuJ,kBAAmBhJ,GAAUwB,SAIzE1C,EAAQiK,SACZhK,EAAKkK,KAAS,GAAI,SAAU5D,EAAIb,GAC/B,GAAuC,mBAA3BA,GAAQY,gBAAkCzF,EAAiB,CACtE,GAAIgF,GAAIH,EAAQY,eAAgBC,EAChC,OAAOV,IAAMA,QAGf5F,EAAKmK,OAAW,GAAI,SAAU7D,GAC7B,GAAI8D,GAAS9D,EAAGQ,QAASxC,GAAWC,GACpC,OAAO,UAAUhC,GAChB,MAAOA,GAAKsE,aAAa,QAAUuD,YAM9BpK,GAAKkK,KAAS,GAErBlK,EAAKmK,OAAW,GAAK,SAAU7D,GAC9B,GAAI8D,GAAS9D,EAAGQ,QAASxC,GAAWC,GACpC,OAAO,UAAUhC,GAChB,GAAI8G,GAAwC,mBAA1B9G,GAAK8H,kBACtB9H,EAAK8H,iBAAiB,KACvB,OAAOhB,IAAQA,EAAK3B,QAAU0C,KAMjCpK,EAAKkK,KAAU,IAAInK,EAAQwG,qBAC1B,SAAU+D,EAAK7E,GACd,MAA6C,mBAAjCA,GAAQc,qBACZd,EAAQc,qBAAsB+D,GAG1BvK,EAAQ0G,IACZhB,EAAQ2B,iBAAkBkD,GAD3B,QAKR,SAAUA,EAAK7E,GACd,GAAIlD,GACHgI,KACAzK,EAAI,EAEJ4F,EAAUD,EAAQc,qBAAsB+D,EAGzC,IAAa,MAARA,EAAc,CAClB,MAAS/H,EAAOmD,EAAQ5F,KACA,IAAlByC,EAAK2C,UACTqF,EAAIpI,KAAMI,EAIZ,OAAOgI,GAER,MAAO7E,IAIT1F,EAAKkK,KAAY,MAAInK,EAAQyG,wBAA0B,SAAUqD,EAAWpE,GAC3E,MAA+C,mBAAnCA,GAAQe,wBAA0C5F,EACtD6E,EAAQe,uBAAwBqD,GADxC,QAWD/I,KAOAD,MAEMd,EAAQ0G,IAAMvC,EAAQwC,KAAMhG,EAAS0G,qBAG1CW,GAAO,SAAUC,GAMhBrH,EAAQmJ,YAAa9B,GAAMwC,UAAY,UAAYvJ,EAAU,qBAC3CA,EAAU,kEAOvB+G,EAAIZ,iBAAiB,wBAAwB3E,QACjD5B,EAAUsB,KAAM,SAAWQ,EAAa,gBAKnCqF,EAAIZ,iBAAiB,cAAc3E,QACxC5B,EAAUsB,KAAM,MAAQQ,EAAa,aAAeD,EAAW,KAI1DsF,EAAIZ,iBAAkB,QAAUnG,EAAU,MAAOwB,QACtD5B,EAAUsB,KAAK,MAMV6F,EAAIZ,iBAAiB,YAAY3E,QACtC5B,EAAUsB,KAAK,YAMV6F,EAAIZ,iBAAkB,KAAOnG,EAAU,MAAOwB,QACnD5B,EAAUsB,KAAK,cAIjB4F,GAAO,SAAUC,GAGhB,GAAIyC,GAAQ/J,EAASuH,cAAc,QACnCwC,GAAM1D,aAAc,OAAQ,UAC5BiB,EAAI8B,YAAaW,GAAQ1D,aAAc,OAAQ,KAI1CiB,EAAIZ,iBAAiB,YAAY3E,QACrC5B,EAAUsB,KAAM,OAASQ,EAAa,eAKjCqF,EAAIZ,iBAAiB,YAAY3E,QACtC5B,EAAUsB,KAAM,WAAY,aAI7B6F,EAAIZ,iBAAiB,QACrBvG,EAAUsB,KAAK,YAIXpC,EAAQ2K,gBAAkBxG,EAAQwC,KAAO3F,EAAUJ,EAAQI,SAChEJ,EAAQgK,uBACRhK,EAAQiK,oBACRjK,EAAQkK,kBACRlK,EAAQmK,qBAER/C,GAAO,SAAUC,GAGhBjI,EAAQgL,kBAAoBhK,EAAQiE,KAAMgD,EAAK,OAI/CjH,EAAQiE,KAAMgD,EAAK,aACnBlH,EAAcqB,KAAM,KAAMW,KAI5BjC,EAAYA,EAAU4B,QAAU,GAAIO,QAAQnC,EAAUoG,KAAK,MAC3DnG,EAAgBA,EAAc2B,QAAU,GAAIO,QAAQlC,EAAcmG,KAAK,MAIvEqC,EAAapF,EAAQwC,KAAM/F,EAAQqK,yBAKnChK,EAAWsI,GAAcpF,EAAQwC,KAAM/F,EAAQK,UAC9C,SAAUW,EAAGC,GACZ,GAAIqJ,GAAuB,IAAftJ,EAAEuD,SAAiBvD,EAAEyH,gBAAkBzH,EAClDuJ,EAAMtJ,GAAKA,EAAEuF,UACd,OAAOxF,KAAMuJ,MAAWA,GAAwB,IAAjBA,EAAIhG,YAClC+F,EAAMjK,SACLiK,EAAMjK,SAAUkK,GAChBvJ,EAAEqJ,yBAA8D,GAAnCrJ,EAAEqJ,wBAAyBE,MAG3D,SAAUvJ,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAEuF,WACd,GAAKvF,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAY4H,EACZ,SAAU3H,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADApB,IAAe,EACR,CAIR,IAAI2K,IAAWxJ,EAAEqJ,yBAA2BpJ,EAAEoJ,uBAC9C,OAAKG,GACGA,GAIRA,GAAYxJ,EAAEwE,eAAiBxE,MAAUC,EAAEuE,eAAiBvE,GAC3DD,EAAEqJ,wBAAyBpJ,GAG3B,EAGc,EAAVuJ,IACFpL,EAAQqL,cAAgBxJ,EAAEoJ,wBAAyBrJ,KAAQwJ,EAGxDxJ,IAAMjB,GAAYiB,EAAEwE,gBAAkBhF,GAAgBH,EAASG,EAAcQ,GAC1E,GAEHC,IAAMlB,GAAYkB,EAAEuE,gBAAkBhF,GAAgBH,EAASG,EAAcS,GAC1E,EAIDrB,EACJ8B,EAAS9B,EAAWoB,GAAMU,EAAS9B,EAAWqB,GAChD,EAGe,EAAVuJ,EAAc,GAAK,IAE3B,SAAUxJ,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADApB,IAAe,EACR,CAGR,IAAIiI,GACH3I,EAAI,EACJuL,EAAM1J,EAAEwF,WACR+D,EAAMtJ,EAAEuF,WACRmE,GAAO3J,GACP4J,GAAO3J,EAGR,KAAMyJ,IAAQH,EACb,MAAOvJ,KAAMjB,EAAW,GACvBkB,IAAMlB,EAAW,EACjB2K,EAAM,GACNH,EAAM,EACN3K,EACE8B,EAAS9B,EAAWoB,GAAMU,EAAS9B,EAAWqB,GAChD,CAGK,IAAKyJ,IAAQH,EACnB,MAAO1C,IAAc7G,EAAGC,EAIzB6G,GAAM9G,CACN,OAAS8G,EAAMA,EAAItB,WAClBmE,EAAGE,QAAS/C,EAEbA,GAAM7G,CACN,OAAS6G,EAAMA,EAAItB,WAClBoE,EAAGC,QAAS/C,EAIb,OAAQ6C,EAAGxL,KAAOyL,EAAGzL,GACpBA,GAGD,OAAOA,GAEN0I,GAAc8C,EAAGxL,GAAIyL,EAAGzL,IAGxBwL,EAAGxL,KAAOqB,EAAe,GACzBoK,EAAGzL,KAAOqB,EAAe,EACzB,GAGKT,GArWCA,GAwWT6E,GAAOxE,QAAU,SAAU0K,EAAMC,GAChC,MAAOnG,IAAQkG,EAAM,KAAM,KAAMC,IAGlCnG,GAAOmF,gBAAkB,SAAUnI,EAAMkJ,GASxC,IAPOlJ,EAAK4D,eAAiB5D,KAAW7B,GACvCD,EAAa8B,GAIdkJ,EAAOA,EAAK3E,QAAS1D,EAAkB,UAElCrD,EAAQ2K,iBAAmB9J,IAC9Ba,EAAegK,EAAO,QACpB3K,IAAkBA,EAAc4F,KAAM+E,OACtC5K,IAAkBA,EAAU6F,KAAM+E,IAErC,IACC,GAAIE,GAAM5K,EAAQiE,KAAMzC,EAAMkJ,EAG9B,IAAKE,GAAO5L,EAAQgL,mBAGlBxI,EAAK7B,UAAuC,KAA3B6B,EAAK7B,SAASwE,SAChC,MAAOyG,GAEP,MAAOxG,IAGV,MAAOI,IAAQkG,EAAM/K,EAAU,MAAQ6B,IAASE,OAAS,GAG1D8C,GAAOvE,SAAW,SAAUyE,EAASlD,GAKpC,OAHOkD,EAAQU,eAAiBV,KAAc/E,GAC7CD,EAAagF,GAEPzE,EAAUyE,EAASlD,IAG3BgD,GAAOqG,KAAO,SAAUrJ,EAAMwG,IAEtBxG,EAAK4D,eAAiB5D,KAAW7B,GACvCD,EAAa8B,EAGd,IAAIuF,GAAK9H,EAAKuI,WAAYQ,EAAKnC,eAE9BiF,EAAM/D,GAAMhG,EAAOkD,KAAMhF,EAAKuI,WAAYQ,EAAKnC,eAC9CkB,EAAIvF,EAAMwG,GAAOnI,GACjBkL,MAEF,OAAeA,UAARD,EACNA,EACA9L,EAAQ8C,aAAejC,EACtB2B,EAAKsE,aAAckC,IAClB8C,EAAMtJ,EAAK8H,iBAAiBtB,KAAU8C,EAAIE,UAC1CF,EAAInE,MACJ,MAGJnC,GAAOyG,MAAQ,SAAUC,GACxB,KAAM,IAAIC,OAAO,0CAA4CD,IAO9D1G,GAAO4G,WAAa,SAAUzG,GAC7B,GAAInD,GACH6J,KACA9G,EAAI,EACJxF,EAAI,CAOL,IAJAU,GAAgBT,EAAQsM,iBACxB9L,GAAaR,EAAQuM,YAAc5G,EAAQtD,MAAO,GAClDsD,EAAQ6G,KAAM7K,GAETlB,EAAe,CACnB,MAAS+B,EAAOmD,EAAQ5F,KAClByC,IAASmD,EAAS5F,KACtBwF,EAAI8G,EAAWjK,KAAMrC,GAGvB,OAAQwF,IACPI,EAAQ8G,OAAQJ,EAAY9G,GAAK,GAQnC,MAFA/E,GAAY,KAELmF,GAORzF,EAAUsF,GAAOtF,QAAU,SAAUsC,GACpC,GAAI8G,GACHsC,EAAM,GACN7L,EAAI,EACJoF,EAAW3C,EAAK2C,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArB3C,GAAKkK,YAChB,MAAOlK,GAAKkK,WAGZ,KAAMlK,EAAOA,EAAKmK,WAAYnK,EAAMA,EAAOA,EAAKqG,YAC/C+C,GAAO1L,EAASsC,OAGZ,IAAkB,IAAb2C,GAA+B,IAAbA,EAC7B,MAAO3C,GAAKoK,cAhBZ,OAAStD,EAAO9G,EAAKzC,KAEpB6L,GAAO1L,EAASoJ,EAkBlB,OAAOsC,IAGR3L,EAAOuF,GAAOqH,WAGbjF,YAAa,GAEbkF,aAAchF,GAEd9B,MAAOxC,EAEPgF,cAEA2B,QAEA4C,UACCC,KAAOC,IAAK,aAAcC,OAAO,GACjCC,KAAOF,IAAK,cACZG,KAAOH,IAAK,kBAAmBC,OAAO,GACtCG,KAAOJ,IAAK,oBAGbK,WACC1J,KAAQ,SAAUoC,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGe,QAASxC,GAAWC,IAGxCwB,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKe,QAASxC,GAAWC,IAExD,OAAbwB,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAM3D,MAAO,EAAG,IAGxByB,MAAS,SAAUkC,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGa,cAEY,QAA3Bb,EAAM,GAAG3D,MAAO,EAAG,IAEjB2D,EAAM,IACXR,GAAOyG,MAAOjG,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBR,GAAOyG,MAAOjG,EAAM,IAGdA,GAGRnC,OAAU,SAAUmC,GACnB,GAAIuH,GACHC,GAAYxH,EAAM,IAAMA,EAAM,EAE/B,OAAKxC,GAAiB,MAAEmD,KAAMX,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBwH,GAAYlK,EAAQqD,KAAM6G,KAEpCD,EAASnN,EAAUoN,GAAU,MAE7BD,EAASC,EAASlL,QAAS,IAAKkL,EAAS9K,OAAS6K,GAAWC,EAAS9K,UAGvEsD,EAAM,GAAKA,EAAM,GAAG3D,MAAO,EAAGkL,GAC9BvH,EAAM,GAAKwH,EAASnL,MAAO,EAAGkL,IAIxBvH,EAAM3D,MAAO,EAAG,MAIzB+H,QAECzG,IAAO,SAAU8J,GAChB,GAAI7G,GAAW6G,EAAiB1G,QAASxC,GAAWC,IAAYqC,aAChE,OAA4B,MAArB4G,EACN,WAAa,OAAO,GACpB,SAAUjL,GACT,MAAOA,GAAKoE,UAAYpE,EAAKoE,SAASC,gBAAkBD,IAI3DlD,MAAS,SAAUoG,GAClB,GAAI4D,GAAUnM,EAAYuI,EAAY,IAEtC,OAAO4D,KACLA,EAAU,GAAIzK,QAAQ,MAAQL,EAAa,IAAMkH,EAAY,IAAMlH,EAAa,SACjFrB,EAAYuI,EAAW,SAAUtH,GAChC,MAAOkL,GAAQ/G,KAAgC,gBAAnBnE,GAAKsH,WAA0BtH,EAAKsH,WAA0C,mBAAtBtH,GAAKsE,cAAgCtE,EAAKsE,aAAa,UAAY,OAI1JlD,KAAQ,SAAUoF,EAAM2E,EAAUC,GACjC,MAAO,UAAUpL,GAChB,GAAIqL,GAASrI,GAAOqG,KAAMrJ,EAAMwG,EAEhC,OAAe,OAAV6E,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOvL,QAASsL,GAChC,OAAbD,EAAoBC,GAASC,EAAOvL,QAASsL,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOxL,OAAQuL,EAAMlL,UAAakL,EAClD,OAAbD,GAAsB,IAAME,EAAO9G,QAAS/D,EAAa,KAAQ,KAAMV,QAASsL,GAAU,GAC7E,OAAbD,EAAoBE,IAAWD,GAASC,EAAOxL,MAAO,EAAGuL,EAAMlL,OAAS,KAAQkL,EAAQ,KACxF,IAZO,IAgBV9J,MAAS,SAAUiF,EAAM+E,EAAM3E,EAAU+D,EAAOa,GAC/C,GAAIC,GAAgC,QAAvBjF,EAAK1G,MAAO,EAAG,GAC3B4L,EAA+B,SAArBlF,EAAK1G,MAAO,IACtB6L,EAAkB,YAATJ,CAEV,OAAiB,KAAVZ,GAAwB,IAATa,EAGrB,SAAUvL,GACT,QAASA,EAAK4E,YAGf,SAAU5E,EAAMkD,EAASyI,GACxB,GAAI1G,GAAO2G,EAAaC,EAAY/E,EAAMgF,EAAWC,EACpDtB,EAAMe,IAAWC,EAAU,cAAgB,kBAC3CzE,EAAShH,EAAK4E,WACd4B,EAAOkF,GAAU1L,EAAKoE,SAASC,cAC/B2H,GAAYL,IAAQD,EACpBvF,GAAO,CAER,IAAKa,EAAS,CAGb,GAAKwE,EAAS,CACb,MAAQf,EAAM,CACb3D,EAAO9G,CACP,OAAS8G,EAAOA,EAAM2D,GACrB,GAAKiB,EACJ5E,EAAK1C,SAASC,gBAAkBmC,EACd,IAAlBM,EAAKnE,SAEL,OAAO,CAIToJ,GAAQtB,EAAe,SAATlE,IAAoBwF,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUN,EAAUzE,EAAOmD,WAAanD,EAAOiF,WAG1CR,GAAWO,EAAW,CAK1BlF,EAAOE,EACP6E,EAAa/E,EAAMpI,KAAcoI,EAAMpI,OAIvCkN,EAAcC,EAAY/E,EAAKoF,YAC7BL,EAAY/E,EAAKoF,cAEnBjH,EAAQ2G,EAAarF,OACrBuF,EAAY7G,EAAO,KAAQpG,GAAWoG,EAAO,GAC7CkB,EAAO2F,GAAa7G,EAAO,GAC3B6B,EAAOgF,GAAa9E,EAAOtE,WAAYoJ,EAEvC,OAAShF,IAASgF,GAAahF,GAAQA,EAAM2D,KAG3CtE,EAAO2F,EAAY,IAAMC,EAAMrM,MAGhC,GAAuB,IAAlBoH,EAAKnE,YAAoBwD,GAAQW,IAAS9G,EAAO,CACrD4L,EAAarF,IAAW1H,EAASiN,EAAW3F,EAC5C,YAuBF,IAjBK6F,IAEJlF,EAAO9G,EACP6L,EAAa/E,EAAMpI,KAAcoI,EAAMpI,OAIvCkN,EAAcC,EAAY/E,EAAKoF,YAC7BL,EAAY/E,EAAKoF,cAEnBjH,EAAQ2G,EAAarF,OACrBuF,EAAY7G,EAAO,KAAQpG,GAAWoG,EAAO,GAC7CkB,EAAO2F,GAKH3F,KAAS,EAEb,MAASW,IAASgF,GAAahF,GAAQA,EAAM2D,KAC3CtE,EAAO2F,EAAY,IAAMC,EAAMrM,MAEhC,IAAOgM,EACN5E,EAAK1C,SAASC,gBAAkBmC,EACd,IAAlBM,EAAKnE,aACHwD,IAGG6F,IACJH,EAAa/E,EAAMpI,KAAcoI,EAAMpI,OAIvCkN,EAAcC,EAAY/E,EAAKoF,YAC7BL,EAAY/E,EAAKoF,cAEnBN,EAAarF,IAAW1H,EAASsH,IAG7BW,IAAS9G,GACb,KASL,OADAmG,IAAQoF,EACDpF,IAASuE,GAAWvE,EAAOuE,IAAU,GAAKvE,EAAOuE,GAAS,KAKrErJ,OAAU,SAAU8K,EAAQxF,GAK3B,GAAIyF,GACH7G,EAAK9H,EAAK8C,QAAS4L,IAAY1O,EAAK4O,WAAYF,EAAO9H,gBACtDrB,GAAOyG,MAAO,uBAAyB0C,EAKzC,OAAK5G,GAAI7G,GACD6G,EAAIoB,GAIPpB,EAAGrF,OAAS,GAChBkM,GAASD,EAAQA,EAAQ,GAAIxF,GACtBlJ,EAAK4O,WAAW7M,eAAgB2M,EAAO9H,eAC7CiB,GAAa,SAAUlC,EAAM5E,GAC5B,GAAI8N,GACHC,EAAUhH,EAAInC,EAAMuD,GACpBpJ,EAAIgP,EAAQrM,MACb,OAAQ3C,IACP+O,EAAMxM,EAASsD,EAAMmJ,EAAQhP,IAC7B6F,EAAMkJ,KAAW9N,EAAS8N,GAAQC,EAAQhP,MAG5C,SAAUyC,GACT,MAAOuF,GAAIvF,EAAM,EAAGoM,KAIhB7G,IAIThF,SAECiM,IAAOlH,GAAa,SAAUrC,GAI7B,GAAIiF,MACH/E,KACAsJ,EAAU5O,EAASoF,EAASsB,QAAS7D,EAAO,MAE7C,OAAO+L,GAAS/N,GACf4G,GAAa,SAAUlC,EAAM5E,EAAS0E,EAASyI,GAC9C,GAAI3L,GACH0M,EAAYD,EAASrJ,EAAM,KAAMuI,MACjCpO,EAAI6F,EAAKlD,MAGV,OAAQ3C,KACDyC,EAAO0M,EAAUnP,MACtB6F,EAAK7F,KAAOiB,EAAQjB,GAAKyC,MAI5B,SAAUA,EAAMkD,EAASyI,GAKxB,MAJAzD,GAAM,GAAKlI,EACXyM,EAASvE,EAAO,KAAMyD,EAAKxI,GAE3B+E,EAAM,GAAK,MACH/E,EAAQzD,SAInBiN,IAAOrH,GAAa,SAAUrC,GAC7B,MAAO,UAAUjD,GAChB,MAAOgD,IAAQC,EAAUjD,GAAOE,OAAS,KAI3CzB,SAAY6G,GAAa,SAAUsH,GAElC,MADAA,GAAOA,EAAKrI,QAASxC,GAAWC,IACzB,SAAUhC,GAChB,OAASA,EAAKkK,aAAelK,EAAK6M,WAAanP,EAASsC,IAASF,QAAS8M,GAAS,MAWrFE,KAAQxH,GAAc,SAAUwH,GAM/B,MAJM/L,GAAYoD,KAAK2I,GAAQ,KAC9B9J,GAAOyG,MAAO,qBAAuBqD,GAEtCA,EAAOA,EAAKvI,QAASxC,GAAWC,IAAYqC,cACrC,SAAUrE,GAChB,GAAI+M,EACJ,GACC,IAAMA,EAAW1O,EAChB2B,EAAK8M,KACL9M,EAAKsE,aAAa,aAAetE,EAAKsE,aAAa,QAGnD,MADAyI,GAAWA,EAAS1I,cACb0I,IAAaD,GAA2C,IAAnCC,EAASjN,QAASgN,EAAO,YAE5C9M,EAAOA,EAAK4E,aAAiC,IAAlB5E,EAAK2C,SAC3C,QAAO,KAKTE,OAAU,SAAU7C,GACnB,GAAIgN,GAAO1P,EAAO2P,UAAY3P,EAAO2P,SAASD,IAC9C,OAAOA,IAAQA,EAAKnN,MAAO,KAAQG,EAAK+D,IAGzCmJ,KAAQ,SAAUlN,GACjB,MAAOA,KAAS5B,GAGjB+O,MAAS,SAAUnN,GAClB,MAAOA,KAAS7B,EAASiP,iBAAmBjP,EAASkP,UAAYlP,EAASkP,gBAAkBrN,EAAKuG,MAAQvG,EAAKsN,OAAStN,EAAKuN,WAI7HC,QAAW,SAAUxN,GACpB,MAAOA,GAAKyN,YAAa,GAG1BA,SAAY,SAAUzN,GACrB,MAAOA,GAAKyN,YAAa,GAG1BC,QAAW,SAAU1N,GAGpB,GAAIoE,GAAWpE,EAAKoE,SAASC,aAC7B,OAAqB,UAAbD,KAA0BpE,EAAK0N,SAA0B,WAAbtJ,KAA2BpE,EAAK2N,UAGrFA,SAAY,SAAU3N,GAOrB,MAJKA,GAAK4E,YACT5E,EAAK4E,WAAWgJ,cAGV5N,EAAK2N,YAAa,GAI1BE,MAAS,SAAU7N,GAKlB,IAAMA,EAAOA,EAAKmK,WAAYnK,EAAMA,EAAOA,EAAKqG,YAC/C,GAAKrG,EAAK2C,SAAW,EACpB,OAAO,CAGT,QAAO,GAGRqE,OAAU,SAAUhH,GACnB,OAAQvC,EAAK8C,QAAe,MAAGP,IAIhC8N,OAAU,SAAU9N,GACnB,MAAO0B,GAAQyC,KAAMnE,EAAKoE,WAG3B8D,MAAS,SAAUlI,GAClB,MAAOyB,GAAQ0C,KAAMnE,EAAKoE,WAG3B2J,OAAU,SAAU/N,GACnB,GAAIwG,GAAOxG,EAAKoE,SAASC,aACzB,OAAgB,UAATmC,GAAkC,WAAdxG,EAAKuG,MAA8B,WAATC,GAGtDoG,KAAQ,SAAU5M,GACjB,GAAIqJ,EACJ,OAAuC,UAAhCrJ,EAAKoE,SAASC,eACN,SAAdrE,EAAKuG,OAImC,OAArC8C,EAAOrJ,EAAKsE,aAAa,UAA2C,SAAvB+E,EAAKhF,gBAIvDqG,MAAShE,GAAuB,WAC/B,OAAS,KAGV6E,KAAQ7E,GAAuB,SAAUE,EAAc1G,GACtD,OAASA,EAAS,KAGnB8N,GAAMtH,GAAuB,SAAUE,EAAc1G,EAAQyG,GAC5D,OAAoB,EAAXA,EAAeA,EAAWzG,EAASyG,KAG7CsH,KAAQvH,GAAuB,SAAUE,EAAc1G,GAEtD,IADA,GAAI3C,GAAI,EACI2C,EAAJ3C,EAAYA,GAAK,EACxBqJ,EAAahH,KAAMrC,EAEpB,OAAOqJ,KAGRsH,IAAOxH,GAAuB,SAAUE,EAAc1G,GAErD,IADA,GAAI3C,GAAI,EACI2C,EAAJ3C,EAAYA,GAAK,EACxBqJ,EAAahH,KAAMrC,EAEpB,OAAOqJ,KAGRuH,GAAMzH,GAAuB,SAAUE,EAAc1G,EAAQyG,GAE5D,IADA,GAAIpJ,GAAe,EAAXoJ,EAAeA,EAAWzG,EAASyG,IACjCpJ,GAAK,GACdqJ,EAAahH,KAAMrC,EAEpB,OAAOqJ,KAGRwH,GAAM1H,GAAuB,SAAUE,EAAc1G,EAAQyG,GAE5D,IADA,GAAIpJ,GAAe,EAAXoJ,EAAeA,EAAWzG,EAASyG,IACjCpJ,EAAI2C,GACb0G,EAAahH,KAAMrC,EAEpB,OAAOqJ,OAKVnJ,EAAK8C,QAAa,IAAI9C,EAAK8C,QAAY,EAGvC,KAAMhD,KAAO8Q,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EhR,EAAK8C,QAAShD,GAAM+I,GAAmB/I,EAExC,KAAMA,KAAOmR,QAAQ,EAAMC,OAAO,GACjClR,EAAK8C,QAAShD,GAAMkJ,GAAoBlJ,EAIzC,SAAS8O,OACTA,GAAWuC,UAAYnR,EAAKoR,QAAUpR,EAAK8C,QAC3C9C,EAAK4O,WAAa,GAAIA,IAEtBzO,EAAWoF,GAAOpF,SAAW,SAAUqF,EAAU6L,GAChD,GAAIvC,GAAS/I,EAAOuL,EAAQxI,EAC3ByI,EAAOvL,EAAQwL,EACfC,EAASjQ,EAAYgE,EAAW,IAEjC,IAAKiM,EACJ,MAAOJ,GAAY,EAAII,EAAOrP,MAAO,EAGtCmP,GAAQ/L,EACRQ,KACAwL,EAAaxR,EAAKqN,SAElB,OAAQkE,EAAQ,GAGTzC,IAAY/I,EAAQ7C,EAAOkD,KAAMmL,OACjCxL,IAEJwL,EAAQA,EAAMnP,MAAO2D,EAAM,GAAGtD,SAAY8O,GAE3CvL,EAAO7D,KAAOmP,OAGfxC,GAAU,GAGJ/I,EAAQ5C,EAAaiD,KAAMmL,MAChCzC,EAAU/I,EAAM6B,QAChB0J,EAAOnP,MACNuF,MAAOoH,EAEPhG,KAAM/C,EAAM,GAAGe,QAAS7D,EAAO,OAEhCsO,EAAQA,EAAMnP,MAAO0M,EAAQrM,QAI9B,KAAMqG,IAAQ9I,GAAKmK,SACZpE,EAAQxC,EAAWuF,GAAO1C,KAAMmL,KAAcC,EAAY1I,MAC9D/C,EAAQyL,EAAY1I,GAAQ/C,MAC7B+I,EAAU/I,EAAM6B,QAChB0J,EAAOnP,MACNuF,MAAOoH,EACPhG,KAAMA,EACN/H,QAASgF,IAEVwL,EAAQA,EAAMnP,MAAO0M,EAAQrM,QAI/B,KAAMqM,EACL,MAOF,MAAOuC,GACNE,EAAM9O,OACN8O,EACChM,GAAOyG,MAAOxG,GAEdhE,EAAYgE,EAAUQ,GAAS5D,MAAO,GAGzC,SAAS4E,IAAYsK,GAIpB,IAHA,GAAIxR,GAAI,EACP0C,EAAM8O,EAAO7O,OACb+C,EAAW,GACAhD,EAAJ1C,EAASA,IAChB0F,GAAY8L,EAAOxR,GAAG4H,KAEvB,OAAOlC,GAGR,QAASkM,IAAe1C,EAAS2C,EAAYC,GAC5C,GAAI5E,GAAM2E,EAAW3E,IACpB6E,EAAmBD,GAAgB,eAAR5E,EAC3B8E,EAAWzQ,GAEZ,OAAOsQ,GAAW1E,MAEjB,SAAU1K,EAAMkD,EAASyI,GACxB,MAAS3L,EAAOA,EAAMyK,GACrB,GAAuB,IAAlBzK,EAAK2C,UAAkB2M,EAC3B,MAAO7C,GAASzM,EAAMkD,EAASyI,IAMlC,SAAU3L,EAAMkD,EAASyI,GACxB,GAAI6D,GAAU5D,EAAaC,EAC1B4D,GAAa5Q,EAAS0Q,EAGvB,IAAK5D,GACJ,MAAS3L,EAAOA,EAAMyK,GACrB,IAAuB,IAAlBzK,EAAK2C,UAAkB2M,IACtB7C,EAASzM,EAAMkD,EAASyI,GAC5B,OAAO,MAKV,OAAS3L,EAAOA,EAAMyK,GACrB,GAAuB,IAAlBzK,EAAK2C,UAAkB2M,EAAmB,CAO9C,GANAzD,EAAa7L,EAAMtB,KAAcsB,EAAMtB,OAIvCkN,EAAcC,EAAY7L,EAAKkM,YAAeL,EAAY7L,EAAKkM,eAEzDsD,EAAW5D,EAAanB,KAC7B+E,EAAU,KAAQ3Q,GAAW2Q,EAAU,KAAQD,EAG/C,MAAQE,GAAU,GAAMD,EAAU,EAMlC,IAHA5D,EAAanB,GAAQgF,EAGfA,EAAU,GAAMhD,EAASzM,EAAMkD,EAASyI,GAC7C,OAAO,IASf,QAAS+D,IAAgBC,GACxB,MAAOA,GAASzP,OAAS,EACxB,SAAUF,EAAMkD,EAASyI,GACxB,GAAIpO,GAAIoS,EAASzP,MACjB,OAAQ3C,IACP,IAAMoS,EAASpS,GAAIyC,EAAMkD,EAASyI,GACjC,OAAO,CAGT,QAAO,GAERgE,EAAS,GAGX,QAASC,IAAkB3M,EAAU4M,EAAU1M,GAG9C,IAFA,GAAI5F,GAAI,EACP0C,EAAM4P,EAAS3P,OACJD,EAAJ1C,EAASA,IAChByF,GAAQC,EAAU4M,EAAStS,GAAI4F,EAEhC,OAAOA,GAGR,QAAS2M,IAAUpD,EAAWqD,EAAKnI,EAAQ1E,EAASyI,GAOnD,IANA,GAAI3L,GACHgQ,KACAzS,EAAI,EACJ0C,EAAMyM,EAAUxM,OAChB+P,EAAgB,MAAPF,EAEE9P,EAAJ1C,EAASA,KACVyC,EAAO0M,EAAUnP,OAChBqK,GAAUA,EAAQ5H,EAAMkD,EAASyI,MACtCqE,EAAapQ,KAAMI,GACdiQ,GACJF,EAAInQ,KAAMrC,GAMd,OAAOyS,GAGR,QAASE,IAAYpF,EAAW7H,EAAUwJ,EAAS0D,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAYzR,KAC/ByR,EAAaD,GAAYC,IAErBC,IAAeA,EAAY1R,KAC/B0R,EAAaF,GAAYE,EAAYC,IAE/B/K,GAAa,SAAUlC,EAAMD,EAASD,EAASyI,GACrD,GAAI2E,GAAM/S,EAAGyC,EACZuQ,KACAC,KACAC,EAActN,EAAQjD,OAGtBwQ,EAAQtN,GAAQwM,GAAkB3M,GAAY,IAAKC,EAAQP,UAAaO,GAAYA,MAGpFyN,GAAY7F,IAAe1H,GAASH,EAEnCyN,EADAZ,GAAUY,EAAOH,EAAQzF,EAAW5H,EAASyI,GAG9CiF,EAAanE,EAEZ2D,IAAgBhN,EAAO0H,EAAY2F,GAAeN,MAMjDhN,EACDwN,CAQF,IALKlE,GACJA,EAASkE,EAAWC,EAAY1N,EAASyI,GAIrCwE,EAAa,CACjBG,EAAOR,GAAUc,EAAYJ,GAC7BL,EAAYG,KAAUpN,EAASyI,GAG/BpO,EAAI+S,EAAKpQ,MACT,OAAQ3C,KACDyC,EAAOsQ,EAAK/S,MACjBqT,EAAYJ,EAAQjT,MAASoT,EAAWH,EAAQjT,IAAOyC,IAK1D,GAAKoD,GACJ,GAAKgN,GAActF,EAAY,CAC9B,GAAKsF,EAAa,CAEjBE,KACA/S,EAAIqT,EAAW1Q,MACf,OAAQ3C,KACDyC,EAAO4Q,EAAWrT,KAEvB+S,EAAK1Q,KAAO+Q,EAAUpT,GAAKyC,EAG7BoQ,GAAY,KAAOQ,KAAkBN,EAAM3E,GAI5CpO,EAAIqT,EAAW1Q,MACf,OAAQ3C,KACDyC,EAAO4Q,EAAWrT,MACtB+S,EAAOF,EAAatQ,EAASsD,EAAMpD,GAASuQ,EAAOhT,IAAM,KAE1D6F,EAAKkN,KAAUnN,EAAQmN,GAAQtQ,SAOlC4Q,GAAad,GACZc,IAAezN,EACdyN,EAAW3G,OAAQwG,EAAaG,EAAW1Q,QAC3C0Q,GAEGR,EACJA,EAAY,KAAMjN,EAASyN,EAAYjF,GAEvC/L,EAAK4C,MAAOW,EAASyN,KAMzB,QAASC,IAAmB9B,GAwB3B,IAvBA,GAAI+B,GAAcrE,EAAS1J,EAC1B9C,EAAM8O,EAAO7O,OACb6Q,EAAkBtT,EAAK8M,SAAUwE,EAAO,GAAGxI,MAC3CyK,EAAmBD,GAAmBtT,EAAK8M,SAAS,KACpDhN,EAAIwT,EAAkB,EAAI,EAG1BE,EAAe9B,GAAe,SAAUnP,GACvC,MAAOA,KAAS8Q,GACdE,GAAkB,GACrBE,EAAkB/B,GAAe,SAAUnP,GAC1C,MAAOF,GAASgR,EAAc9Q,GAAS,IACrCgR,GAAkB,GACrBrB,GAAa,SAAU3P,EAAMkD,EAASyI,GACrC,GAAIvC,IAAS2H,IAAqBpF,GAAOzI,IAAYnF,MACnD+S,EAAe5N,GAASP,SACxBsO,EAAcjR,EAAMkD,EAASyI,GAC7BuF,EAAiBlR,EAAMkD,EAASyI,GAGlC,OADAmF,GAAe,KACR1H,IAGGnJ,EAAJ1C,EAASA,IAChB,GAAMkP,EAAUhP,EAAK8M,SAAUwE,EAAOxR,GAAGgJ,MACxCoJ,GAAaR,GAAcO,GAAgBC,GAAYlD,QACjD,CAIN,GAHAA,EAAUhP,EAAKmK,OAAQmH,EAAOxR,GAAGgJ,MAAO/D,MAAO,KAAMuM,EAAOxR,GAAGiB,SAG1DiO,EAAS/N,GAAY,CAGzB,IADAqE,IAAMxF,EACM0C,EAAJ8C,EAASA,IAChB,GAAKtF,EAAK8M,SAAUwE,EAAOhM,GAAGwD,MAC7B,KAGF,OAAO2J,IACN3S,EAAI,GAAKmS,GAAgBC,GACzBpS,EAAI,GAAKkH,GAERsK,EAAOlP,MAAO,EAAGtC,EAAI,GAAI4T,QAAShM,MAAgC,MAAzB4J,EAAQxR,EAAI,GAAIgJ,KAAe,IAAM,MAC7EhC,QAAS7D,EAAO,MAClB+L,EACI1J,EAAJxF,GAASsT,GAAmB9B,EAAOlP,MAAOtC,EAAGwF,IACzC9C,EAAJ8C,GAAW8N,GAAoB9B,EAASA,EAAOlP,MAAOkD,IAClD9C,EAAJ8C,GAAW0B,GAAYsK,IAGzBY,EAAS/P,KAAM6M,GAIjB,MAAOiD,IAAgBC,GAGxB,QAASyB,IAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYpR,OAAS,EAChCsR,EAAYH,EAAgBnR,OAAS,EACrCuR,EAAe,SAAUrO,EAAMF,EAASyI,EAAKxI,EAASuO,GACrD,GAAI1R,GAAM+C,EAAG0J,EACZkF,EAAe,EACfpU,EAAI,IACJmP,EAAYtJ,MACZwO,KACAC,EAAgB9T,EAEhB2S,EAAQtN,GAAQoO,GAAa/T,EAAKkK,KAAU,IAAG,IAAK+J,GAEpDI,EAAiBjT,GAA4B,MAAjBgT,EAAwB,EAAIE,KAAKC,UAAY,GACzE/R,EAAMyQ,EAAMxQ,MASb,KAPKwR,IACJ3T,EAAmBmF,IAAY/E,GAAY+E,GAAWwO,GAM/CnU,IAAM0C,GAA4B,OAApBD,EAAO0Q,EAAMnT,IAAaA,IAAM,CACrD,GAAKiU,GAAaxR,EAAO,CACxB+C,EAAI,EACEG,GAAWlD,EAAK4D,gBAAkBzF,IACvCD,EAAa8B,GACb2L,GAAOtN,EAER,OAASoO,EAAU4E,EAAgBtO,KAClC,GAAK0J,EAASzM,EAAMkD,GAAW/E,EAAUwN,GAAO,CAC/CxI,EAAQvD,KAAMI,EACd,OAGG0R,IACJ7S,EAAUiT,GAKPP,KAEEvR,GAAQyM,GAAWzM,IACxB2R,IAIIvO,GACJsJ,EAAU9M,KAAMI,IAgBnB,GATA2R,GAAgBpU,EASXgU,GAAShU,IAAMoU,EAAe,CAClC5O,EAAI,CACJ,OAAS0J,EAAU6E,EAAYvO,KAC9B0J,EAASC,EAAWkF,EAAY1O,EAASyI,EAG1C,IAAKvI,EAAO,CAEX,GAAKuO,EAAe,EACnB,MAAQpU,IACAmP,EAAUnP,IAAMqU,EAAWrU,KACjCqU,EAAWrU,GAAKmC,EAAI+C,KAAMU,GAM7ByO,GAAa9B,GAAU8B,GAIxBhS,EAAK4C,MAAOW,EAASyO,GAGhBF,IAActO,GAAQwO,EAAW1R,OAAS,GAC5CyR,EAAeL,EAAYpR,OAAW,GAExC8C,GAAO4G,WAAYzG,GAUrB,MALKuO,KACJ7S,EAAUiT,EACV/T,EAAmB8T,GAGbnF,EAGT,OAAO6E,GACNjM,GAAcmM,GACdA,EAGF5T,EAAUmF,GAAOnF,QAAU,SAAUoF,EAAUO,GAC9C,GAAIjG,GACH+T,KACAD,KACAnC,EAAShQ,EAAe+D,EAAW,IAEpC,KAAMiM,EAAS,CAER1L,IACLA,EAAQ5F,EAAUqF,IAEnB1F,EAAIiG,EAAMtD,MACV,OAAQ3C,IACP2R,EAAS2B,GAAmBrN,EAAMjG,IAC7B2R,EAAQxQ,GACZ4S,EAAY1R,KAAMsP,GAElBmC,EAAgBzR,KAAMsP,EAKxBA,GAAShQ,EAAe+D,EAAUmO,GAA0BC,EAAiBC,IAG7EpC,EAAOjM,SAAWA,EAEnB,MAAOiM,IAYRpR,EAASkF,GAAOlF,OAAS,SAAUmF,EAAUC,EAASC,EAASC,GAC9D,GAAI7F,GAAGwR,EAAQkD,EAAO1L,EAAMoB,EAC3BuK,EAA+B,kBAAbjP,IAA2BA,EAC7CO,GAASJ,GAAQxF,EAAWqF,EAAWiP,EAASjP,UAAYA,EAM7D,IAJAE,EAAUA,MAIY,IAAjBK,EAAMtD,OAAe,CAIzB,GADA6O,EAASvL,EAAM,GAAKA,EAAM,GAAG3D,MAAO,GAC/BkP,EAAO7O,OAAS,GAAkC,QAA5B+R,EAAQlD,EAAO,IAAIxI,MAC5C/I,EAAQiK,SAAgC,IAArBvE,EAAQP,UAAkBtE,GAC7CZ,EAAK8M,SAAUwE,EAAO,GAAGxI,MAAS,CAGnC,GADArD,GAAYzF,EAAKkK,KAAS,GAAGsK,EAAMzT,QAAQ,GAAG+F,QAAQxC,GAAWC,IAAYkB,QAAkB,IACzFA,EACL,MAAOC,EAGI+O,KACXhP,EAAUA,EAAQ0B,YAGnB3B,EAAWA,EAASpD,MAAOkP,EAAO1J,QAAQF,MAAMjF,QAIjD3C,EAAIyD,EAAwB,aAAEmD,KAAMlB,GAAa,EAAI8L,EAAO7O,MAC5D,OAAQ3C,IAAM,CAIb,GAHA0U,EAAQlD,EAAOxR,GAGVE,EAAK8M,SAAWhE,EAAO0L,EAAM1L,MACjC,KAED,KAAMoB,EAAOlK,EAAKkK,KAAMpB,MAEjBnD,EAAOuE,EACZsK,EAAMzT,QAAQ,GAAG+F,QAASxC,GAAWC,IACrCH,EAASsC,KAAM4K,EAAO,GAAGxI,OAAU5B,GAAazB,EAAQ0B,aAAgB1B,IACpE,CAKJ,GAFA6L,EAAO9E,OAAQ1M,EAAG,GAClB0F,EAAWG,EAAKlD,QAAUuE,GAAYsK,IAChC9L,EAEL,MADArD,GAAK4C,MAAOW,EAASC,GACdD,CAGR,SAeJ,OAPE+O,GAAYrU,EAASoF,EAAUO,IAChCJ,EACAF,GACC7E,EACD8E,GACCD,GAAWrB,EAASsC,KAAMlB,IAAc0B,GAAazB,EAAQ0B,aAAgB1B,GAExEC,GAMR3F,EAAQuM,WAAarL,EAAQqH,MAAM,IAAIiE,KAAM7K,GAAYuF,KAAK,MAAQhG,EAItElB,EAAQsM,mBAAqB7L,EAG7BC,IAIAV,EAAQqL,aAAerD,GAAO,SAAU2M,GAEvC,MAAuE,GAAhEA,EAAK1J,wBAAyBtK,EAASuH,cAAc,UAMvDF,GAAO,SAAUC,GAEtB,MADAA,GAAIwC,UAAY,mBAC+B,MAAxCxC,EAAI0E,WAAW7F,aAAa,WAEnCsB,GAAW,yBAA0B,SAAU5F,EAAMwG,EAAM7I,GAC1D,MAAMA,GAAN,OACQqC,EAAKsE,aAAckC,EAA6B,SAAvBA,EAAKnC,cAA2B,EAAI,KAOjE7G,EAAQ8C,YAAekF,GAAO,SAAUC,GAG7C,MAFAA,GAAIwC,UAAY,WAChBxC,EAAI0E,WAAW3F,aAAc,QAAS,IACY,KAA3CiB,EAAI0E,WAAW7F,aAAc,YAEpCsB,GAAW,QAAS,SAAU5F,EAAMwG,EAAM7I,GACzC,MAAMA,IAAyC,UAAhCqC,EAAKoE,SAASC,cAA7B,OACQrE,EAAKoS,eAOT5M,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAInB,aAAa,eAExBsB,GAAWzF,EAAU,SAAUH,EAAMwG,EAAM7I,GAC1C,GAAI2L,EACJ,OAAM3L,GAAN,OACQqC,EAAMwG,MAAW,EAAOA,EAAKnC,eACjCiF,EAAMtJ,EAAK8H,iBAAkBtB,KAAW8C,EAAIE,UAC7CF,EAAInE,MACL,OAMmB,kBAAXkN,SAAyBA,OAAOC,IAC3CD,OAAO,WAAa,MAAOrP,MAEE,mBAAXuP,SAA0BA,OAAOC,QACnDD,OAAOC,QAAUxP,GAEjB1F,EAAO0F,OAASA,IAIb1F"}
          \ No newline at end of file
          diff --git a/public/theme/jquery/src/.jshintrc b/public/theme/jquery/src/.jshintrc
          new file mode 100644
          index 0000000..ea3549d
          --- /dev/null
          +++ b/public/theme/jquery/src/.jshintrc
          @@ -0,0 +1,29 @@
          +{
          +	"boss": true,
          +	"curly": true,
          +	"eqeqeq": true,
          +	"eqnull": true,
          +	"expr": true,
          +	"immed": true,
          +	"noarg": true,
          +	"quotmark": "double",
          +	"undef": true,
          +	"unused": true,
          +
          +	"sub": true,
          +
          +	// Support: IE < 10, Android < 4.1
          +	// The above browsers are failing a lot of tests in the ES5
          +	// test suite at http://test262.ecmascript.org.
          +	"es3": true,
          +
          +	"globals": {
          +		"window": true,
          +		"JSON": false,
          +
          +		"jQuery": true,
          +		"define": true,
          +		"module": true,
          +		"noGlobal": true
          +	}
          +}
          diff --git a/public/theme/jquery/src/ajax.js b/public/theme/jquery/src/ajax.js
          new file mode 100644
          index 0000000..ba32248
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax.js
          @@ -0,0 +1,845 @@
          +define( [
          +	"./core",
          +	"./var/document",
          +	"./var/rnotwhite",
          +	"./ajax/var/location",
          +	"./ajax/var/nonce",
          +	"./ajax/var/rquery",
          +
          +	"./core/init",
          +	"./ajax/parseJSON",
          +	"./ajax/parseXML",
          +	"./event/trigger",
          +	"./deferred"
          +], function( jQuery, document, rnotwhite, location, nonce, rquery ) {
          +
          +var
          +	rhash = /#.*$/,
          +	rts = /([?&])_=[^&]*/,
          +	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
          +
          +	// #7653, #8125, #8152: local protocol detection
          +	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
          +	rnoContent = /^(?:GET|HEAD)$/,
          +	rprotocol = /^\/\//,
          +
          +	/* Prefilters
          +	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
          +	 * 2) These are called:
          +	 *    - BEFORE asking for a transport
          +	 *    - AFTER param serialization (s.data is a string if s.processData is true)
          +	 * 3) key is the dataType
          +	 * 4) the catchall symbol "*" can be used
          +	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
          +	 */
          +	prefilters = {},
          +
          +	/* Transports bindings
          +	 * 1) key is the dataType
          +	 * 2) the catchall symbol "*" can be used
          +	 * 3) selection will start with transport dataType and THEN go to "*" if needed
          +	 */
          +	transports = {},
          +
          +	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
          +	allTypes = "*/".concat( "*" ),
          +
          +	// Anchor tag for parsing the document origin
          +	originAnchor = document.createElement( "a" );
          +	originAnchor.href = location.href;
          +
          +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
          +function addToPrefiltersOrTransports( structure ) {
          +
          +	// dataTypeExpression is optional and defaults to "*"
          +	return function( dataTypeExpression, func ) {
          +
          +		if ( typeof dataTypeExpression !== "string" ) {
          +			func = dataTypeExpression;
          +			dataTypeExpression = "*";
          +		}
          +
          +		var dataType,
          +			i = 0,
          +			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
          +
          +		if ( jQuery.isFunction( func ) ) {
          +
          +			// For each dataType in the dataTypeExpression
          +			while ( ( dataType = dataTypes[ i++ ] ) ) {
          +
          +				// Prepend if requested
          +				if ( dataType[ 0 ] === "+" ) {
          +					dataType = dataType.slice( 1 ) || "*";
          +					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
          +
          +				// Otherwise append
          +				} else {
          +					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
          +				}
          +			}
          +		}
          +	};
          +}
          +
          +// Base inspection function for prefilters and transports
          +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
          +
          +	var inspected = {},
          +		seekingTransport = ( structure === transports );
          +
          +	function inspect( dataType ) {
          +		var selected;
          +		inspected[ dataType ] = true;
          +		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
          +			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
          +			if ( typeof dataTypeOrTransport === "string" &&
          +				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
          +
          +				options.dataTypes.unshift( dataTypeOrTransport );
          +				inspect( dataTypeOrTransport );
          +				return false;
          +			} else if ( seekingTransport ) {
          +				return !( selected = dataTypeOrTransport );
          +			}
          +		} );
          +		return selected;
          +	}
          +
          +	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
          +}
          +
          +// A special extend for ajax options
          +// that takes "flat" options (not to be deep extended)
          +// Fixes #9887
          +function ajaxExtend( target, src ) {
          +	var key, deep,
          +		flatOptions = jQuery.ajaxSettings.flatOptions || {};
          +
          +	for ( key in src ) {
          +		if ( src[ key ] !== undefined ) {
          +			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
          +		}
          +	}
          +	if ( deep ) {
          +		jQuery.extend( true, target, deep );
          +	}
          +
          +	return target;
          +}
          +
          +/* Handles responses to an ajax request:
          + * - finds the right dataType (mediates between content-type and expected dataType)
          + * - returns the corresponding response
          + */
          +function ajaxHandleResponses( s, jqXHR, responses ) {
          +
          +	var ct, type, finalDataType, firstDataType,
          +		contents = s.contents,
          +		dataTypes = s.dataTypes;
          +
          +	// Remove auto dataType and get content-type in the process
          +	while ( dataTypes[ 0 ] === "*" ) {
          +		dataTypes.shift();
          +		if ( ct === undefined ) {
          +			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
          +		}
          +	}
          +
          +	// Check if we're dealing with a known content-type
          +	if ( ct ) {
          +		for ( type in contents ) {
          +			if ( contents[ type ] && contents[ type ].test( ct ) ) {
          +				dataTypes.unshift( type );
          +				break;
          +			}
          +		}
          +	}
          +
          +	// Check to see if we have a response for the expected dataType
          +	if ( dataTypes[ 0 ] in responses ) {
          +		finalDataType = dataTypes[ 0 ];
          +	} else {
          +
          +		// Try convertible dataTypes
          +		for ( type in responses ) {
          +			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
          +				finalDataType = type;
          +				break;
          +			}
          +			if ( !firstDataType ) {
          +				firstDataType = type;
          +			}
          +		}
          +
          +		// Or just use first one
          +		finalDataType = finalDataType || firstDataType;
          +	}
          +
          +	// If we found a dataType
          +	// We add the dataType to the list if needed
          +	// and return the corresponding response
          +	if ( finalDataType ) {
          +		if ( finalDataType !== dataTypes[ 0 ] ) {
          +			dataTypes.unshift( finalDataType );
          +		}
          +		return responses[ finalDataType ];
          +	}
          +}
          +
          +/* Chain conversions given the request and the original response
          + * Also sets the responseXXX fields on the jqXHR instance
          + */
          +function ajaxConvert( s, response, jqXHR, isSuccess ) {
          +	var conv2, current, conv, tmp, prev,
          +		converters = {},
          +
          +		// Work with a copy of dataTypes in case we need to modify it for conversion
          +		dataTypes = s.dataTypes.slice();
          +
          +	// Create converters map with lowercased keys
          +	if ( dataTypes[ 1 ] ) {
          +		for ( conv in s.converters ) {
          +			converters[ conv.toLowerCase() ] = s.converters[ conv ];
          +		}
          +	}
          +
          +	current = dataTypes.shift();
          +
          +	// Convert to each sequential dataType
          +	while ( current ) {
          +
          +		if ( s.responseFields[ current ] ) {
          +			jqXHR[ s.responseFields[ current ] ] = response;
          +		}
          +
          +		// Apply the dataFilter if provided
          +		if ( !prev && isSuccess && s.dataFilter ) {
          +			response = s.dataFilter( response, s.dataType );
          +		}
          +
          +		prev = current;
          +		current = dataTypes.shift();
          +
          +		if ( current ) {
          +
          +		// There's only work to do if current dataType is non-auto
          +			if ( current === "*" ) {
          +
          +				current = prev;
          +
          +			// Convert response if prev dataType is non-auto and differs from current
          +			} else if ( prev !== "*" && prev !== current ) {
          +
          +				// Seek a direct converter
          +				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
          +
          +				// If none found, seek a pair
          +				if ( !conv ) {
          +					for ( conv2 in converters ) {
          +
          +						// If conv2 outputs current
          +						tmp = conv2.split( " " );
          +						if ( tmp[ 1 ] === current ) {
          +
          +							// If prev can be converted to accepted input
          +							conv = converters[ prev + " " + tmp[ 0 ] ] ||
          +								converters[ "* " + tmp[ 0 ] ];
          +							if ( conv ) {
          +
          +								// Condense equivalence converters
          +								if ( conv === true ) {
          +									conv = converters[ conv2 ];
          +
          +								// Otherwise, insert the intermediate dataType
          +								} else if ( converters[ conv2 ] !== true ) {
          +									current = tmp[ 0 ];
          +									dataTypes.unshift( tmp[ 1 ] );
          +								}
          +								break;
          +							}
          +						}
          +					}
          +				}
          +
          +				// Apply converter (if not an equivalence)
          +				if ( conv !== true ) {
          +
          +					// Unless errors are allowed to bubble, catch and return them
          +					if ( conv && s.throws ) {
          +						response = conv( response );
          +					} else {
          +						try {
          +							response = conv( response );
          +						} catch ( e ) {
          +							return {
          +								state: "parsererror",
          +								error: conv ? e : "No conversion from " + prev + " to " + current
          +							};
          +						}
          +					}
          +				}
          +			}
          +		}
          +	}
          +
          +	return { state: "success", data: response };
          +}
          +
          +jQuery.extend( {
          +
          +	// Counter for holding the number of active queries
          +	active: 0,
          +
          +	// Last-Modified header cache for next request
          +	lastModified: {},
          +	etag: {},
          +
          +	ajaxSettings: {
          +		url: location.href,
          +		type: "GET",
          +		isLocal: rlocalProtocol.test( location.protocol ),
          +		global: true,
          +		processData: true,
          +		async: true,
          +		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
          +		/*
          +		timeout: 0,
          +		data: null,
          +		dataType: null,
          +		username: null,
          +		password: null,
          +		cache: null,
          +		throws: false,
          +		traditional: false,
          +		headers: {},
          +		*/
          +
          +		accepts: {
          +			"*": allTypes,
          +			text: "text/plain",
          +			html: "text/html",
          +			xml: "application/xml, text/xml",
          +			json: "application/json, text/javascript"
          +		},
          +
          +		contents: {
          +			xml: /\bxml\b/,
          +			html: /\bhtml/,
          +			json: /\bjson\b/
          +		},
          +
          +		responseFields: {
          +			xml: "responseXML",
          +			text: "responseText",
          +			json: "responseJSON"
          +		},
          +
          +		// Data converters
          +		// Keys separate source (or catchall "*") and destination types with a single space
          +		converters: {
          +
          +			// Convert anything to text
          +			"* text": String,
          +
          +			// Text to html (true = no transformation)
          +			"text html": true,
          +
          +			// Evaluate text as a json expression
          +			"text json": jQuery.parseJSON,
          +
          +			// Parse text as xml
          +			"text xml": jQuery.parseXML
          +		},
          +
          +		// For options that shouldn't be deep extended:
          +		// you can add your own custom options here if
          +		// and when you create one that shouldn't be
          +		// deep extended (see ajaxExtend)
          +		flatOptions: {
          +			url: true,
          +			context: true
          +		}
          +	},
          +
          +	// Creates a full fledged settings object into target
          +	// with both ajaxSettings and settings fields.
          +	// If target is omitted, writes into ajaxSettings.
          +	ajaxSetup: function( target, settings ) {
          +		return settings ?
          +
          +			// Building a settings object
          +			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
          +
          +			// Extending ajaxSettings
          +			ajaxExtend( jQuery.ajaxSettings, target );
          +	},
          +
          +	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
          +	ajaxTransport: addToPrefiltersOrTransports( transports ),
          +
          +	// Main method
          +	ajax: function( url, options ) {
          +
          +		// If url is an object, simulate pre-1.5 signature
          +		if ( typeof url === "object" ) {
          +			options = url;
          +			url = undefined;
          +		}
          +
          +		// Force options to be an object
          +		options = options || {};
          +
          +		var transport,
          +
          +			// URL without anti-cache param
          +			cacheURL,
          +
          +			// Response headers
          +			responseHeadersString,
          +			responseHeaders,
          +
          +			// timeout handle
          +			timeoutTimer,
          +
          +			// Url cleanup var
          +			urlAnchor,
          +
          +			// To know if global events are to be dispatched
          +			fireGlobals,
          +
          +			// Loop variable
          +			i,
          +
          +			// Create the final options object
          +			s = jQuery.ajaxSetup( {}, options ),
          +
          +			// Callbacks context
          +			callbackContext = s.context || s,
          +
          +			// Context for global events is callbackContext if it is a DOM node or jQuery collection
          +			globalEventContext = s.context &&
          +				( callbackContext.nodeType || callbackContext.jquery ) ?
          +					jQuery( callbackContext ) :
          +					jQuery.event,
          +
          +			// Deferreds
          +			deferred = jQuery.Deferred(),
          +			completeDeferred = jQuery.Callbacks( "once memory" ),
          +
          +			// Status-dependent callbacks
          +			statusCode = s.statusCode || {},
          +
          +			// Headers (they are sent all at once)
          +			requestHeaders = {},
          +			requestHeadersNames = {},
          +
          +			// The jqXHR state
          +			state = 0,
          +
          +			// Default abort message
          +			strAbort = "canceled",
          +
          +			// Fake xhr
          +			jqXHR = {
          +				readyState: 0,
          +
          +				// Builds headers hashtable if needed
          +				getResponseHeader: function( key ) {
          +					var match;
          +					if ( state === 2 ) {
          +						if ( !responseHeaders ) {
          +							responseHeaders = {};
          +							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
          +								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
          +							}
          +						}
          +						match = responseHeaders[ key.toLowerCase() ];
          +					}
          +					return match == null ? null : match;
          +				},
          +
          +				// Raw string
          +				getAllResponseHeaders: function() {
          +					return state === 2 ? responseHeadersString : null;
          +				},
          +
          +				// Caches the header
          +				setRequestHeader: function( name, value ) {
          +					var lname = name.toLowerCase();
          +					if ( !state ) {
          +						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
          +						requestHeaders[ name ] = value;
          +					}
          +					return this;
          +				},
          +
          +				// Overrides response content-type header
          +				overrideMimeType: function( type ) {
          +					if ( !state ) {
          +						s.mimeType = type;
          +					}
          +					return this;
          +				},
          +
          +				// Status-dependent callbacks
          +				statusCode: function( map ) {
          +					var code;
          +					if ( map ) {
          +						if ( state < 2 ) {
          +							for ( code in map ) {
          +
          +								// Lazy-add the new callback in a way that preserves old ones
          +								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
          +							}
          +						} else {
          +
          +							// Execute the appropriate callbacks
          +							jqXHR.always( map[ jqXHR.status ] );
          +						}
          +					}
          +					return this;
          +				},
          +
          +				// Cancel the request
          +				abort: function( statusText ) {
          +					var finalText = statusText || strAbort;
          +					if ( transport ) {
          +						transport.abort( finalText );
          +					}
          +					done( 0, finalText );
          +					return this;
          +				}
          +			};
          +
          +		// Attach deferreds
          +		deferred.promise( jqXHR ).complete = completeDeferred.add;
          +		jqXHR.success = jqXHR.done;
          +		jqXHR.error = jqXHR.fail;
          +
          +		// Remove hash character (#7531: and string promotion)
          +		// Add protocol if not provided (prefilters might expect it)
          +		// Handle falsy url in the settings object (#10093: consistency with old signature)
          +		// We also use the url parameter if available
          +		s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" )
          +			.replace( rprotocol, location.protocol + "//" );
          +
          +		// Alias method option to type as per ticket #12004
          +		s.type = options.method || options.type || s.method || s.type;
          +
          +		// Extract dataTypes list
          +		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
          +
          +		// A cross-domain request is in order when the origin doesn't match the current origin.
          +		if ( s.crossDomain == null ) {
          +			urlAnchor = document.createElement( "a" );
          +
          +			// Support: IE8-11+
          +			// IE throws exception if url is malformed, e.g. http://example.com:80x/
          +			try {
          +				urlAnchor.href = s.url;
          +
          +				// Support: IE8-11+
          +				// Anchor's host property isn't correctly set when s.url is relative
          +				urlAnchor.href = urlAnchor.href;
          +				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
          +					urlAnchor.protocol + "//" + urlAnchor.host;
          +			} catch ( e ) {
          +
          +				// If there is an error parsing the URL, assume it is crossDomain,
          +				// it can be rejected by the transport if it is invalid
          +				s.crossDomain = true;
          +			}
          +		}
          +
          +		// Convert data if not already a string
          +		if ( s.data && s.processData && typeof s.data !== "string" ) {
          +			s.data = jQuery.param( s.data, s.traditional );
          +		}
          +
          +		// Apply prefilters
          +		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
          +
          +		// If request was aborted inside a prefilter, stop there
          +		if ( state === 2 ) {
          +			return jqXHR;
          +		}
          +
          +		// We can fire global events as of now if asked to
          +		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
          +		fireGlobals = jQuery.event && s.global;
          +
          +		// Watch for a new set of requests
          +		if ( fireGlobals && jQuery.active++ === 0 ) {
          +			jQuery.event.trigger( "ajaxStart" );
          +		}
          +
          +		// Uppercase the type
          +		s.type = s.type.toUpperCase();
          +
          +		// Determine if request has content
          +		s.hasContent = !rnoContent.test( s.type );
          +
          +		// Save the URL in case we're toying with the If-Modified-Since
          +		// and/or If-None-Match header later on
          +		cacheURL = s.url;
          +
          +		// More options handling for requests with no content
          +		if ( !s.hasContent ) {
          +
          +			// If data is available, append data to url
          +			if ( s.data ) {
          +				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
          +
          +				// #9682: remove data so that it's not used in an eventual retry
          +				delete s.data;
          +			}
          +
          +			// Add anti-cache in url if needed
          +			if ( s.cache === false ) {
          +				s.url = rts.test( cacheURL ) ?
          +
          +					// If there is already a '_' parameter, set its value
          +					cacheURL.replace( rts, "$1_=" + nonce++ ) :
          +
          +					// Otherwise add one to the end
          +					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
          +			}
          +		}
          +
          +		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +		if ( s.ifModified ) {
          +			if ( jQuery.lastModified[ cacheURL ] ) {
          +				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
          +			}
          +			if ( jQuery.etag[ cacheURL ] ) {
          +				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
          +			}
          +		}
          +
          +		// Set the correct header, if data is being sent
          +		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
          +			jqXHR.setRequestHeader( "Content-Type", s.contentType );
          +		}
          +
          +		// Set the Accepts header for the server, depending on the dataType
          +		jqXHR.setRequestHeader(
          +			"Accept",
          +			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
          +				s.accepts[ s.dataTypes[ 0 ] ] +
          +					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
          +				s.accepts[ "*" ]
          +		);
          +
          +		// Check for headers option
          +		for ( i in s.headers ) {
          +			jqXHR.setRequestHeader( i, s.headers[ i ] );
          +		}
          +
          +		// Allow custom headers/mimetypes and early abort
          +		if ( s.beforeSend &&
          +			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
          +
          +			// Abort if not done already and return
          +			return jqXHR.abort();
          +		}
          +
          +		// Aborting is no longer a cancellation
          +		strAbort = "abort";
          +
          +		// Install callbacks on deferreds
          +		for ( i in { success: 1, error: 1, complete: 1 } ) {
          +			jqXHR[ i ]( s[ i ] );
          +		}
          +
          +		// Get transport
          +		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
          +
          +		// If no transport, we auto-abort
          +		if ( !transport ) {
          +			done( -1, "No Transport" );
          +		} else {
          +			jqXHR.readyState = 1;
          +
          +			// Send global event
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
          +			}
          +
          +			// If request was aborted inside ajaxSend, stop there
          +			if ( state === 2 ) {
          +				return jqXHR;
          +			}
          +
          +			// Timeout
          +			if ( s.async && s.timeout > 0 ) {
          +				timeoutTimer = window.setTimeout( function() {
          +					jqXHR.abort( "timeout" );
          +				}, s.timeout );
          +			}
          +
          +			try {
          +				state = 1;
          +				transport.send( requestHeaders, done );
          +			} catch ( e ) {
          +
          +				// Propagate exception as error if not done
          +				if ( state < 2 ) {
          +					done( -1, e );
          +
          +				// Simply rethrow otherwise
          +				} else {
          +					throw e;
          +				}
          +			}
          +		}
          +
          +		// Callback for when everything is done
          +		function done( status, nativeStatusText, responses, headers ) {
          +			var isSuccess, success, error, response, modified,
          +				statusText = nativeStatusText;
          +
          +			// Called once
          +			if ( state === 2 ) {
          +				return;
          +			}
          +
          +			// State is "done" now
          +			state = 2;
          +
          +			// Clear timeout if it exists
          +			if ( timeoutTimer ) {
          +				window.clearTimeout( timeoutTimer );
          +			}
          +
          +			// Dereference transport for early garbage collection
          +			// (no matter how long the jqXHR object will be used)
          +			transport = undefined;
          +
          +			// Cache response headers
          +			responseHeadersString = headers || "";
          +
          +			// Set readyState
          +			jqXHR.readyState = status > 0 ? 4 : 0;
          +
          +			// Determine if successful
          +			isSuccess = status >= 200 && status < 300 || status === 304;
          +
          +			// Get response data
          +			if ( responses ) {
          +				response = ajaxHandleResponses( s, jqXHR, responses );
          +			}
          +
          +			// Convert no matter what (that way responseXXX fields are always set)
          +			response = ajaxConvert( s, response, jqXHR, isSuccess );
          +
          +			// If successful, handle type chaining
          +			if ( isSuccess ) {
          +
          +				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +				if ( s.ifModified ) {
          +					modified = jqXHR.getResponseHeader( "Last-Modified" );
          +					if ( modified ) {
          +						jQuery.lastModified[ cacheURL ] = modified;
          +					}
          +					modified = jqXHR.getResponseHeader( "etag" );
          +					if ( modified ) {
          +						jQuery.etag[ cacheURL ] = modified;
          +					}
          +				}
          +
          +				// if no content
          +				if ( status === 204 || s.type === "HEAD" ) {
          +					statusText = "nocontent";
          +
          +				// if not modified
          +				} else if ( status === 304 ) {
          +					statusText = "notmodified";
          +
          +				// If we have data, let's convert it
          +				} else {
          +					statusText = response.state;
          +					success = response.data;
          +					error = response.error;
          +					isSuccess = !error;
          +				}
          +			} else {
          +
          +				// Extract error from statusText and normalize for non-aborts
          +				error = statusText;
          +				if ( status || !statusText ) {
          +					statusText = "error";
          +					if ( status < 0 ) {
          +						status = 0;
          +					}
          +				}
          +			}
          +
          +			// Set data for the fake xhr object
          +			jqXHR.status = status;
          +			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
          +
          +			// Success/Error
          +			if ( isSuccess ) {
          +				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
          +			} else {
          +				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
          +			}
          +
          +			// Status-dependent callbacks
          +			jqXHR.statusCode( statusCode );
          +			statusCode = undefined;
          +
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
          +					[ jqXHR, s, isSuccess ? success : error ] );
          +			}
          +
          +			// Complete
          +			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
          +
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
          +
          +				// Handle the global AJAX counter
          +				if ( !( --jQuery.active ) ) {
          +					jQuery.event.trigger( "ajaxStop" );
          +				}
          +			}
          +		}
          +
          +		return jqXHR;
          +	},
          +
          +	getJSON: function( url, data, callback ) {
          +		return jQuery.get( url, data, callback, "json" );
          +	},
          +
          +	getScript: function( url, callback ) {
          +		return jQuery.get( url, undefined, callback, "script" );
          +	}
          +} );
          +
          +jQuery.each( [ "get", "post" ], function( i, method ) {
          +	jQuery[ method ] = function( url, data, callback, type ) {
          +
          +		// Shift arguments if data argument was omitted
          +		if ( jQuery.isFunction( data ) ) {
          +			type = type || callback;
          +			callback = data;
          +			data = undefined;
          +		}
          +
          +		// The url can be an options object (which then must have .url)
          +		return jQuery.ajax( jQuery.extend( {
          +			url: url,
          +			type: method,
          +			dataType: type,
          +			data: data,
          +			success: callback
          +		}, jQuery.isPlainObject( url ) && url ) );
          +	};
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/ajax/jsonp.js b/public/theme/jquery/src/ajax/jsonp.js
          new file mode 100644
          index 0000000..666e5d1
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/jsonp.js
          @@ -0,0 +1,100 @@
          +define( [
          +	"../core",
          +	"./var/nonce",
          +	"./var/rquery",
          +	"../ajax"
          +], function( jQuery, nonce, rquery ) {
          +
          +var oldCallbacks = [],
          +	rjsonp = /(=)\?(?=&|$)|\?\?/;
          +
          +// Default jsonp settings
          +jQuery.ajaxSetup( {
          +	jsonp: "callback",
          +	jsonpCallback: function() {
          +		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
          +		this[ callback ] = true;
          +		return callback;
          +	}
          +} );
          +
          +// Detect, normalize options and install callbacks for jsonp requests
          +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
          +
          +	var callbackName, overwritten, responseContainer,
          +		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
          +			"url" :
          +			typeof s.data === "string" &&
          +				( s.contentType || "" )
          +					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
          +				rjsonp.test( s.data ) && "data"
          +		);
          +
          +	// Handle iff the expected data type is "jsonp" or we have a parameter to set
          +	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
          +
          +		// Get callback name, remembering preexisting value associated with it
          +		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
          +			s.jsonpCallback() :
          +			s.jsonpCallback;
          +
          +		// Insert callback into url or form data
          +		if ( jsonProp ) {
          +			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
          +		} else if ( s.jsonp !== false ) {
          +			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
          +		}
          +
          +		// Use data converter to retrieve json after script execution
          +		s.converters[ "script json" ] = function() {
          +			if ( !responseContainer ) {
          +				jQuery.error( callbackName + " was not called" );
          +			}
          +			return responseContainer[ 0 ];
          +		};
          +
          +		// Force json dataType
          +		s.dataTypes[ 0 ] = "json";
          +
          +		// Install callback
          +		overwritten = window[ callbackName ];
          +		window[ callbackName ] = function() {
          +			responseContainer = arguments;
          +		};
          +
          +		// Clean-up function (fires after converters)
          +		jqXHR.always( function() {
          +
          +			// If previous value didn't exist - remove it
          +			if ( overwritten === undefined ) {
          +				jQuery( window ).removeProp( callbackName );
          +
          +			// Otherwise restore preexisting value
          +			} else {
          +				window[ callbackName ] = overwritten;
          +			}
          +
          +			// Save back as free
          +			if ( s[ callbackName ] ) {
          +
          +				// Make sure that re-using the options doesn't screw things around
          +				s.jsonpCallback = originalSettings.jsonpCallback;
          +
          +				// Save the callback name for future use
          +				oldCallbacks.push( callbackName );
          +			}
          +
          +			// Call if it was a function and we have a response
          +			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
          +				overwritten( responseContainer[ 0 ] );
          +			}
          +
          +			responseContainer = overwritten = undefined;
          +		} );
          +
          +		// Delegate to script
          +		return "script";
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/ajax/load.js b/public/theme/jquery/src/ajax/load.js
          new file mode 100644
          index 0000000..5ec3fa2
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/load.js
          @@ -0,0 +1,83 @@
          +define( [
          +	"../core",
          +	"../core/parseHTML",
          +	"../ajax",
          +	"../traversing",
          +	"../manipulation",
          +	"../selector",
          +
          +	// Optional event/alias dependency
          +	"../event/alias"
          +], function( jQuery ) {
          +
          +// Keep a copy of the old load method
          +var _load = jQuery.fn.load;
          +
          +/**
          + * Load a url into a page
          + */
          +jQuery.fn.load = function( url, params, callback ) {
          +	if ( typeof url !== "string" && _load ) {
          +		return _load.apply( this, arguments );
          +	}
          +
          +	var selector, type, response,
          +		self = this,
          +		off = url.indexOf( " " );
          +
          +	if ( off > -1 ) {
          +		selector = jQuery.trim( url.slice( off ) );
          +		url = url.slice( 0, off );
          +	}
          +
          +	// If it's a function
          +	if ( jQuery.isFunction( params ) ) {
          +
          +		// We assume that it's the callback
          +		callback = params;
          +		params = undefined;
          +
          +	// Otherwise, build a param string
          +	} else if ( params && typeof params === "object" ) {
          +		type = "POST";
          +	}
          +
          +	// If we have elements to modify, make the request
          +	if ( self.length > 0 ) {
          +		jQuery.ajax( {
          +			url: url,
          +
          +			// If "type" variable is undefined, then "GET" method will be used.
          +			// Make value of this field explicit since
          +			// user can override it through ajaxSetup method
          +			type: type || "GET",
          +			dataType: "html",
          +			data: params
          +		} ).done( function( responseText ) {
          +
          +			// Save response for use in complete callback
          +			response = arguments;
          +
          +			self.html( selector ?
          +
          +				// If a selector was specified, locate the right elements in a dummy div
          +				// Exclude scripts to avoid IE 'Permission Denied' errors
          +				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
          +
          +				// Otherwise use the full result
          +				responseText );
          +
          +		// If the request succeeds, this function gets "data", "status", "jqXHR"
          +		// but they are ignored because response was set above.
          +		// If it fails, this function gets "jqXHR", "status", "error"
          +		} ).always( callback && function( jqXHR, status ) {
          +			self.each( function() {
          +				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
          +			} );
          +		} );
          +	}
          +
          +	return this;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/ajax/parseJSON.js b/public/theme/jquery/src/ajax/parseJSON.js
          new file mode 100644
          index 0000000..11918b0
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/parseJSON.js
          @@ -0,0 +1,13 @@
          +define( [
          +	"../core"
          +], function( jQuery ) {
          +
          +// Support: Android 2.3
          +// Workaround failure to string-cast null input
          +jQuery.parseJSON = function( data ) {
          +	return JSON.parse( data + "" );
          +};
          +
          +return jQuery.parseJSON;
          +
          +} );
          diff --git a/public/theme/jquery/src/ajax/parseXML.js b/public/theme/jquery/src/ajax/parseXML.js
          new file mode 100644
          index 0000000..6599aaf
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/parseXML.js
          @@ -0,0 +1,27 @@
          +define( [
          +	"../core"
          +], function( jQuery ) {
          +
          +// Cross-browser xml parsing
          +jQuery.parseXML = function( data ) {
          +	var xml;
          +	if ( !data || typeof data !== "string" ) {
          +		return null;
          +	}
          +
          +	// Support: IE9
          +	try {
          +		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
          +	} catch ( e ) {
          +		xml = undefined;
          +	}
          +
          +	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
          +		jQuery.error( "Invalid XML: " + data );
          +	}
          +	return xml;
          +};
          +
          +return jQuery.parseXML;
          +
          +} );
          diff --git a/public/theme/jquery/src/ajax/script.js b/public/theme/jquery/src/ajax/script.js
          new file mode 100644
          index 0000000..945bea9
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/script.js
          @@ -0,0 +1,68 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"../ajax"
          +], function( jQuery, document ) {
          +
          +// Install script dataType
          +jQuery.ajaxSetup( {
          +	accepts: {
          +		script: "text/javascript, application/javascript, " +
          +			"application/ecmascript, application/x-ecmascript"
          +	},
          +	contents: {
          +		script: /\b(?:java|ecma)script\b/
          +	},
          +	converters: {
          +		"text script": function( text ) {
          +			jQuery.globalEval( text );
          +			return text;
          +		}
          +	}
          +} );
          +
          +// Handle cache's special case and crossDomain
          +jQuery.ajaxPrefilter( "script", function( s ) {
          +	if ( s.cache === undefined ) {
          +		s.cache = false;
          +	}
          +	if ( s.crossDomain ) {
          +		s.type = "GET";
          +	}
          +} );
          +
          +// Bind script tag hack transport
          +jQuery.ajaxTransport( "script", function( s ) {
          +
          +	// This transport only deals with cross domain requests
          +	if ( s.crossDomain ) {
          +		var script, callback;
          +		return {
          +			send: function( _, complete ) {
          +				script = jQuery( "<script>" ).prop( {
          +					charset: s.scriptCharset,
          +					src: s.url
          +				} ).on(
          +					"load error",
          +					callback = function( evt ) {
          +						script.remove();
          +						callback = null;
          +						if ( evt ) {
          +							complete( evt.type === "error" ? 404 : 200, evt.type );
          +						}
          +					}
          +				);
          +
          +				// Use native DOM manipulation to avoid our domManip AJAX trickery
          +				document.head.appendChild( script[ 0 ] );
          +			},
          +			abort: function() {
          +				if ( callback ) {
          +					callback();
          +				}
          +			}
          +		};
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/ajax/var/location.js b/public/theme/jquery/src/ajax/var/location.js
          new file mode 100644
          index 0000000..ff9578e
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/var/location.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return window.location;
          +} );
          diff --git a/public/theme/jquery/src/ajax/var/nonce.js b/public/theme/jquery/src/ajax/var/nonce.js
          new file mode 100644
          index 0000000..83fd557
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/var/nonce.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"../../core"
          +], function( jQuery ) {
          +	return jQuery.now();
          +} );
          diff --git a/public/theme/jquery/src/ajax/var/rquery.js b/public/theme/jquery/src/ajax/var/rquery.js
          new file mode 100644
          index 0000000..0502146
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/var/rquery.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /\?/ );
          +} );
          diff --git a/public/theme/jquery/src/ajax/xhr.js b/public/theme/jquery/src/ajax/xhr.js
          new file mode 100644
          index 0000000..db670ff
          --- /dev/null
          +++ b/public/theme/jquery/src/ajax/xhr.js
          @@ -0,0 +1,167 @@
          +define( [
          +	"../core",
          +	"../var/support",
          +	"../ajax"
          +], function( jQuery, support ) {
          +
          +jQuery.ajaxSettings.xhr = function() {
          +	try {
          +		return new window.XMLHttpRequest();
          +	} catch ( e ) {}
          +};
          +
          +var xhrSuccessStatus = {
          +
          +		// File protocol always yields status code 0, assume 200
          +		0: 200,
          +
          +		// Support: IE9
          +		// #1450: sometimes IE returns 1223 when it should be 204
          +		1223: 204
          +	},
          +	xhrSupported = jQuery.ajaxSettings.xhr();
          +
          +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
          +support.ajax = xhrSupported = !!xhrSupported;
          +
          +jQuery.ajaxTransport( function( options ) {
          +	var callback, errorCallback;
          +
          +	// Cross domain only allowed if supported through XMLHttpRequest
          +	if ( support.cors || xhrSupported && !options.crossDomain ) {
          +		return {
          +			send: function( headers, complete ) {
          +				var i,
          +					xhr = options.xhr();
          +
          +				xhr.open(
          +					options.type,
          +					options.url,
          +					options.async,
          +					options.username,
          +					options.password
          +				);
          +
          +				// Apply custom fields if provided
          +				if ( options.xhrFields ) {
          +					for ( i in options.xhrFields ) {
          +						xhr[ i ] = options.xhrFields[ i ];
          +					}
          +				}
          +
          +				// Override mime type if needed
          +				if ( options.mimeType && xhr.overrideMimeType ) {
          +					xhr.overrideMimeType( options.mimeType );
          +				}
          +
          +				// X-Requested-With header
          +				// For cross-domain requests, seeing as conditions for a preflight are
          +				// akin to a jigsaw puzzle, we simply never set it to be sure.
          +				// (it can always be set on a per-request basis or even using ajaxSetup)
          +				// For same-domain requests, won't change header if already provided.
          +				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
          +					headers[ "X-Requested-With" ] = "XMLHttpRequest";
          +				}
          +
          +				// Set headers
          +				for ( i in headers ) {
          +					xhr.setRequestHeader( i, headers[ i ] );
          +				}
          +
          +				// Callback
          +				callback = function( type ) {
          +					return function() {
          +						if ( callback ) {
          +							callback = errorCallback = xhr.onload =
          +								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
          +
          +							if ( type === "abort" ) {
          +								xhr.abort();
          +							} else if ( type === "error" ) {
          +
          +								// Support: IE9
          +								// On a manual native abort, IE9 throws
          +								// errors on any property access that is not readyState
          +								if ( typeof xhr.status !== "number" ) {
          +									complete( 0, "error" );
          +								} else {
          +									complete(
          +
          +										// File: protocol always yields status 0; see #8605, #14207
          +										xhr.status,
          +										xhr.statusText
          +									);
          +								}
          +							} else {
          +								complete(
          +									xhrSuccessStatus[ xhr.status ] || xhr.status,
          +									xhr.statusText,
          +
          +									// Support: IE9 only
          +									// IE9 has no XHR2 but throws on binary (trac-11426)
          +									// For XHR2 non-text, let the caller handle it (gh-2498)
          +									( xhr.responseType || "text" ) !== "text"  ||
          +									typeof xhr.responseText !== "string" ?
          +										{ binary: xhr.response } :
          +										{ text: xhr.responseText },
          +									xhr.getAllResponseHeaders()
          +								);
          +							}
          +						}
          +					};
          +				};
          +
          +				// Listen to events
          +				xhr.onload = callback();
          +				errorCallback = xhr.onerror = callback( "error" );
          +
          +				// Support: IE9
          +				// Use onreadystatechange to replace onabort
          +				// to handle uncaught aborts
          +				if ( xhr.onabort !== undefined ) {
          +					xhr.onabort = errorCallback;
          +				} else {
          +					xhr.onreadystatechange = function() {
          +
          +						// Check readyState before timeout as it changes
          +						if ( xhr.readyState === 4 ) {
          +
          +							// Allow onerror to be called first,
          +							// but that will not handle a native abort
          +							// Also, save errorCallback to a variable
          +							// as xhr.onerror cannot be accessed
          +							window.setTimeout( function() {
          +								if ( callback ) {
          +									errorCallback();
          +								}
          +							} );
          +						}
          +					};
          +				}
          +
          +				// Create the abort callback
          +				callback = callback( "abort" );
          +
          +				try {
          +
          +					// Do send the request (this may raise an exception)
          +					xhr.send( options.hasContent && options.data || null );
          +				} catch ( e ) {
          +
          +					// #14683: Only rethrow if this hasn't been notified as an error yet
          +					if ( callback ) {
          +						throw e;
          +					}
          +				}
          +			},
          +
          +			abort: function() {
          +				if ( callback ) {
          +					callback();
          +				}
          +			}
          +		};
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/attributes.js b/public/theme/jquery/src/attributes.js
          new file mode 100644
          index 0000000..691e0c0
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes.js
          @@ -0,0 +1,11 @@
          +define( [
          +	"./core",
          +	"./attributes/attr",
          +	"./attributes/prop",
          +	"./attributes/classes",
          +	"./attributes/val"
          +], function( jQuery ) {
          +
          +// Return jQuery for attributes-only inclusion
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/attributes/attr.js b/public/theme/jquery/src/attributes/attr.js
          new file mode 100644
          index 0000000..f888083
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes/attr.js
          @@ -0,0 +1,142 @@
          +define( [
          +	"../core",
          +	"../core/access",
          +	"./support",
          +	"../var/rnotwhite",
          +	"../selector"
          +], function( jQuery, access, support, rnotwhite ) {
          +
          +var boolHook,
          +	attrHandle = jQuery.expr.attrHandle;
          +
          +jQuery.fn.extend( {
          +	attr: function( name, value ) {
          +		return access( this, jQuery.attr, name, value, arguments.length > 1 );
          +	},
          +
          +	removeAttr: function( name ) {
          +		return this.each( function() {
          +			jQuery.removeAttr( this, name );
          +		} );
          +	}
          +} );
          +
          +jQuery.extend( {
          +	attr: function( elem, name, value ) {
          +		var ret, hooks,
          +			nType = elem.nodeType;
          +
          +		// Don't get/set attributes on text, comment and attribute nodes
          +		if ( nType === 3 || nType === 8 || nType === 2 ) {
          +			return;
          +		}
          +
          +		// Fallback to prop when attributes are not supported
          +		if ( typeof elem.getAttribute === "undefined" ) {
          +			return jQuery.prop( elem, name, value );
          +		}
          +
          +		// All attributes are lowercase
          +		// Grab necessary hook if one is defined
          +		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
          +			name = name.toLowerCase();
          +			hooks = jQuery.attrHooks[ name ] ||
          +				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
          +		}
          +
          +		if ( value !== undefined ) {
          +			if ( value === null ) {
          +				jQuery.removeAttr( elem, name );
          +				return;
          +			}
          +
          +			if ( hooks && "set" in hooks &&
          +				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
          +				return ret;
          +			}
          +
          +			elem.setAttribute( name, value + "" );
          +			return value;
          +		}
          +
          +		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
          +			return ret;
          +		}
          +
          +		ret = jQuery.find.attr( elem, name );
          +
          +		// Non-existent attributes return null, we normalize to undefined
          +		return ret == null ? undefined : ret;
          +	},
          +
          +	attrHooks: {
          +		type: {
          +			set: function( elem, value ) {
          +				if ( !support.radioValue && value === "radio" &&
          +					jQuery.nodeName( elem, "input" ) ) {
          +					var val = elem.value;
          +					elem.setAttribute( "type", value );
          +					if ( val ) {
          +						elem.value = val;
          +					}
          +					return value;
          +				}
          +			}
          +		}
          +	},
          +
          +	removeAttr: function( elem, value ) {
          +		var name, propName,
          +			i = 0,
          +			attrNames = value && value.match( rnotwhite );
          +
          +		if ( attrNames && elem.nodeType === 1 ) {
          +			while ( ( name = attrNames[ i++ ] ) ) {
          +				propName = jQuery.propFix[ name ] || name;
          +
          +				// Boolean attributes get special treatment (#10870)
          +				if ( jQuery.expr.match.bool.test( name ) ) {
          +
          +					// Set corresponding property to false
          +					elem[ propName ] = false;
          +				}
          +
          +				elem.removeAttribute( name );
          +			}
          +		}
          +	}
          +} );
          +
          +// Hooks for boolean attributes
          +boolHook = {
          +	set: function( elem, value, name ) {
          +		if ( value === false ) {
          +
          +			// Remove boolean attributes when set to false
          +			jQuery.removeAttr( elem, name );
          +		} else {
          +			elem.setAttribute( name, name );
          +		}
          +		return name;
          +	}
          +};
          +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
          +	var getter = attrHandle[ name ] || jQuery.find.attr;
          +
          +	attrHandle[ name ] = function( elem, name, isXML ) {
          +		var ret, handle;
          +		if ( !isXML ) {
          +
          +			// Avoid an infinite loop by temporarily removing this function from the getter
          +			handle = attrHandle[ name ];
          +			attrHandle[ name ] = ret;
          +			ret = getter( elem, name, isXML ) != null ?
          +				name.toLowerCase() :
          +				null;
          +			attrHandle[ name ] = handle;
          +		}
          +		return ret;
          +	};
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/attributes/classes.js b/public/theme/jquery/src/attributes/classes.js
          new file mode 100644
          index 0000000..7933873
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes/classes.js
          @@ -0,0 +1,177 @@
          +define( [
          +	"../core",
          +	"../var/rnotwhite",
          +	"../data/var/dataPriv",
          +	"../core/init"
          +], function( jQuery, rnotwhite, dataPriv ) {
          +
          +var rclass = /[\t\r\n\f]/g;
          +
          +function getClass( elem ) {
          +	return elem.getAttribute && elem.getAttribute( "class" ) || "";
          +}
          +
          +jQuery.fn.extend( {
          +	addClass: function( value ) {
          +		var classes, elem, cur, curValue, clazz, j, finalValue,
          +			i = 0;
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each( function( j ) {
          +				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
          +			} );
          +		}
          +
          +		if ( typeof value === "string" && value ) {
          +			classes = value.match( rnotwhite ) || [];
          +
          +			while ( ( elem = this[ i++ ] ) ) {
          +				curValue = getClass( elem );
          +				cur = elem.nodeType === 1 &&
          +					( " " + curValue + " " ).replace( rclass, " " );
          +
          +				if ( cur ) {
          +					j = 0;
          +					while ( ( clazz = classes[ j++ ] ) ) {
          +						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
          +							cur += clazz + " ";
          +						}
          +					}
          +
          +					// Only assign if different to avoid unneeded rendering.
          +					finalValue = jQuery.trim( cur );
          +					if ( curValue !== finalValue ) {
          +						elem.setAttribute( "class", finalValue );
          +					}
          +				}
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	removeClass: function( value ) {
          +		var classes, elem, cur, curValue, clazz, j, finalValue,
          +			i = 0;
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each( function( j ) {
          +				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
          +			} );
          +		}
          +
          +		if ( !arguments.length ) {
          +			return this.attr( "class", "" );
          +		}
          +
          +		if ( typeof value === "string" && value ) {
          +			classes = value.match( rnotwhite ) || [];
          +
          +			while ( ( elem = this[ i++ ] ) ) {
          +				curValue = getClass( elem );
          +
          +				// This expression is here for better compressibility (see addClass)
          +				cur = elem.nodeType === 1 &&
          +					( " " + curValue + " " ).replace( rclass, " " );
          +
          +				if ( cur ) {
          +					j = 0;
          +					while ( ( clazz = classes[ j++ ] ) ) {
          +
          +						// Remove *all* instances
          +						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
          +							cur = cur.replace( " " + clazz + " ", " " );
          +						}
          +					}
          +
          +					// Only assign if different to avoid unneeded rendering.
          +					finalValue = jQuery.trim( cur );
          +					if ( curValue !== finalValue ) {
          +						elem.setAttribute( "class", finalValue );
          +					}
          +				}
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	toggleClass: function( value, stateVal ) {
          +		var type = typeof value;
          +
          +		if ( typeof stateVal === "boolean" && type === "string" ) {
          +			return stateVal ? this.addClass( value ) : this.removeClass( value );
          +		}
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each( function( i ) {
          +				jQuery( this ).toggleClass(
          +					value.call( this, i, getClass( this ), stateVal ),
          +					stateVal
          +				);
          +			} );
          +		}
          +
          +		return this.each( function() {
          +			var className, i, self, classNames;
          +
          +			if ( type === "string" ) {
          +
          +				// Toggle individual class names
          +				i = 0;
          +				self = jQuery( this );
          +				classNames = value.match( rnotwhite ) || [];
          +
          +				while ( ( className = classNames[ i++ ] ) ) {
          +
          +					// Check each className given, space separated list
          +					if ( self.hasClass( className ) ) {
          +						self.removeClass( className );
          +					} else {
          +						self.addClass( className );
          +					}
          +				}
          +
          +			// Toggle whole class name
          +			} else if ( value === undefined || type === "boolean" ) {
          +				className = getClass( this );
          +				if ( className ) {
          +
          +					// Store className if set
          +					dataPriv.set( this, "__className__", className );
          +				}
          +
          +				// If the element has a class name or if we're passed `false`,
          +				// then remove the whole classname (if there was one, the above saved it).
          +				// Otherwise bring back whatever was previously saved (if anything),
          +				// falling back to the empty string if nothing was stored.
          +				if ( this.setAttribute ) {
          +					this.setAttribute( "class",
          +						className || value === false ?
          +						"" :
          +						dataPriv.get( this, "__className__" ) || ""
          +					);
          +				}
          +			}
          +		} );
          +	},
          +
          +	hasClass: function( selector ) {
          +		var className, elem,
          +			i = 0;
          +
          +		className = " " + selector + " ";
          +		while ( ( elem = this[ i++ ] ) ) {
          +			if ( elem.nodeType === 1 &&
          +				( " " + getClass( elem ) + " " ).replace( rclass, " " )
          +					.indexOf( className ) > -1
          +			) {
          +				return true;
          +			}
          +		}
          +
          +		return false;
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/attributes/prop.js b/public/theme/jquery/src/attributes/prop.js
          new file mode 100644
          index 0000000..e127bb0
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes/prop.js
          @@ -0,0 +1,125 @@
          +define( [
          +	"../core",
          +	"../core/access",
          +	"./support",
          +	"../selector"
          +], function( jQuery, access, support ) {
          +
          +var rfocusable = /^(?:input|select|textarea|button)$/i,
          +	rclickable = /^(?:a|area)$/i;
          +
          +jQuery.fn.extend( {
          +	prop: function( name, value ) {
          +		return access( this, jQuery.prop, name, value, arguments.length > 1 );
          +	},
          +
          +	removeProp: function( name ) {
          +		return this.each( function() {
          +			delete this[ jQuery.propFix[ name ] || name ];
          +		} );
          +	}
          +} );
          +
          +jQuery.extend( {
          +	prop: function( elem, name, value ) {
          +		var ret, hooks,
          +			nType = elem.nodeType;
          +
          +		// Don't get/set properties on text, comment and attribute nodes
          +		if ( nType === 3 || nType === 8 || nType === 2 ) {
          +			return;
          +		}
          +
          +		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
          +
          +			// Fix name and attach hooks
          +			name = jQuery.propFix[ name ] || name;
          +			hooks = jQuery.propHooks[ name ];
          +		}
          +
          +		if ( value !== undefined ) {
          +			if ( hooks && "set" in hooks &&
          +				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
          +				return ret;
          +			}
          +
          +			return ( elem[ name ] = value );
          +		}
          +
          +		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
          +			return ret;
          +		}
          +
          +		return elem[ name ];
          +	},
          +
          +	propHooks: {
          +		tabIndex: {
          +			get: function( elem ) {
          +
          +				// elem.tabIndex doesn't always return the
          +				// correct value when it hasn't been explicitly set
          +				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
          +				// Use proper attribute retrieval(#12072)
          +				var tabindex = jQuery.find.attr( elem, "tabindex" );
          +
          +				return tabindex ?
          +					parseInt( tabindex, 10 ) :
          +					rfocusable.test( elem.nodeName ) ||
          +						rclickable.test( elem.nodeName ) && elem.href ?
          +							0 :
          +							-1;
          +			}
          +		}
          +	},
          +
          +	propFix: {
          +		"for": "htmlFor",
          +		"class": "className"
          +	}
          +} );
          +
          +// Support: IE <=11 only
          +// Accessing the selectedIndex property
          +// forces the browser to respect setting selected
          +// on the option
          +// The getter ensures a default option is selected
          +// when in an optgroup
          +if ( !support.optSelected ) {
          +	jQuery.propHooks.selected = {
          +		get: function( elem ) {
          +			var parent = elem.parentNode;
          +			if ( parent && parent.parentNode ) {
          +				parent.parentNode.selectedIndex;
          +			}
          +			return null;
          +		},
          +		set: function( elem ) {
          +			var parent = elem.parentNode;
          +			if ( parent ) {
          +				parent.selectedIndex;
          +
          +				if ( parent.parentNode ) {
          +					parent.parentNode.selectedIndex;
          +				}
          +			}
          +		}
          +	};
          +}
          +
          +jQuery.each( [
          +	"tabIndex",
          +	"readOnly",
          +	"maxLength",
          +	"cellSpacing",
          +	"cellPadding",
          +	"rowSpan",
          +	"colSpan",
          +	"useMap",
          +	"frameBorder",
          +	"contentEditable"
          +], function() {
          +	jQuery.propFix[ this.toLowerCase() ] = this;
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/attributes/support.js b/public/theme/jquery/src/attributes/support.js
          new file mode 100644
          index 0000000..e8d02b5
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes/support.js
          @@ -0,0 +1,36 @@
          +define( [
          +	"../var/document",
          +	"../var/support"
          +], function( document, support ) {
          +
          +( function() {
          +	var input = document.createElement( "input" ),
          +		select = document.createElement( "select" ),
          +		opt = select.appendChild( document.createElement( "option" ) );
          +
          +	input.type = "checkbox";
          +
          +	// Support: iOS<=5.1, Android<=4.2+
          +	// Default value for a checkbox should be "on"
          +	support.checkOn = input.value !== "";
          +
          +	// Support: IE<=11+
          +	// Must access selectedIndex to make default options select
          +	support.optSelected = opt.selected;
          +
          +	// Support: Android<=2.3
          +	// Options inside disabled selects are incorrectly marked as disabled
          +	select.disabled = true;
          +	support.optDisabled = !opt.disabled;
          +
          +	// Support: IE<=11+
          +	// An input loses its value after becoming a radio
          +	input = document.createElement( "input" );
          +	input.value = "t";
          +	input.type = "radio";
          +	support.radioValue = input.value === "t";
          +} )();
          +
          +return support;
          +
          +} );
          diff --git a/public/theme/jquery/src/attributes/val.js b/public/theme/jquery/src/attributes/val.js
          new file mode 100644
          index 0000000..1fa9171
          --- /dev/null
          +++ b/public/theme/jquery/src/attributes/val.js
          @@ -0,0 +1,177 @@
          +define( [
          +	"../core",
          +	"./support",
          +	"../core/init"
          +], function( jQuery, support ) {
          +
          +var rreturn = /\r/g,
          +	rspaces = /[\x20\t\r\n\f]+/g;
          +
          +jQuery.fn.extend( {
          +	val: function( value ) {
          +		var hooks, ret, isFunction,
          +			elem = this[ 0 ];
          +
          +		if ( !arguments.length ) {
          +			if ( elem ) {
          +				hooks = jQuery.valHooks[ elem.type ] ||
          +					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
          +
          +				if ( hooks &&
          +					"get" in hooks &&
          +					( ret = hooks.get( elem, "value" ) ) !== undefined
          +				) {
          +					return ret;
          +				}
          +
          +				ret = elem.value;
          +
          +				return typeof ret === "string" ?
          +
          +					// Handle most common string cases
          +					ret.replace( rreturn, "" ) :
          +
          +					// Handle cases where value is null/undef or number
          +					ret == null ? "" : ret;
          +			}
          +
          +			return;
          +		}
          +
          +		isFunction = jQuery.isFunction( value );
          +
          +		return this.each( function( i ) {
          +			var val;
          +
          +			if ( this.nodeType !== 1 ) {
          +				return;
          +			}
          +
          +			if ( isFunction ) {
          +				val = value.call( this, i, jQuery( this ).val() );
          +			} else {
          +				val = value;
          +			}
          +
          +			// Treat null/undefined as ""; convert numbers to string
          +			if ( val == null ) {
          +				val = "";
          +
          +			} else if ( typeof val === "number" ) {
          +				val += "";
          +
          +			} else if ( jQuery.isArray( val ) ) {
          +				val = jQuery.map( val, function( value ) {
          +					return value == null ? "" : value + "";
          +				} );
          +			}
          +
          +			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
          +
          +			// If set returns undefined, fall back to normal setting
          +			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
          +				this.value = val;
          +			}
          +		} );
          +	}
          +} );
          +
          +jQuery.extend( {
          +	valHooks: {
          +		option: {
          +			get: function( elem ) {
          +
          +				var val = jQuery.find.attr( elem, "value" );
          +				return val != null ?
          +					val :
          +
          +					// Support: IE10-11+
          +					// option.text throws exceptions (#14686, #14858)
          +					// Strip and collapse whitespace
          +					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
          +					jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
          +			}
          +		},
          +		select: {
          +			get: function( elem ) {
          +				var value, option,
          +					options = elem.options,
          +					index = elem.selectedIndex,
          +					one = elem.type === "select-one" || index < 0,
          +					values = one ? null : [],
          +					max = one ? index + 1 : options.length,
          +					i = index < 0 ?
          +						max :
          +						one ? index : 0;
          +
          +				// Loop through all the selected options
          +				for ( ; i < max; i++ ) {
          +					option = options[ i ];
          +
          +					// IE8-9 doesn't update selected after form reset (#2551)
          +					if ( ( option.selected || i === index ) &&
          +
          +							// Don't return options that are disabled or in a disabled optgroup
          +							( support.optDisabled ?
          +								!option.disabled : option.getAttribute( "disabled" ) === null ) &&
          +							( !option.parentNode.disabled ||
          +								!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
          +
          +						// Get the specific value for the option
          +						value = jQuery( option ).val();
          +
          +						// We don't need an array for one selects
          +						if ( one ) {
          +							return value;
          +						}
          +
          +						// Multi-Selects return an array
          +						values.push( value );
          +					}
          +				}
          +
          +				return values;
          +			},
          +
          +			set: function( elem, value ) {
          +				var optionSet, option,
          +					options = elem.options,
          +					values = jQuery.makeArray( value ),
          +					i = options.length;
          +
          +				while ( i-- ) {
          +					option = options[ i ];
          +					if ( option.selected =
          +						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
          +					) {
          +						optionSet = true;
          +					}
          +				}
          +
          +				// Force browsers to behave consistently when non-matching value is set
          +				if ( !optionSet ) {
          +					elem.selectedIndex = -1;
          +				}
          +				return values;
          +			}
          +		}
          +	}
          +} );
          +
          +// Radios and checkboxes getter/setter
          +jQuery.each( [ "radio", "checkbox" ], function() {
          +	jQuery.valHooks[ this ] = {
          +		set: function( elem, value ) {
          +			if ( jQuery.isArray( value ) ) {
          +				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
          +			}
          +		}
          +	};
          +	if ( !support.checkOn ) {
          +		jQuery.valHooks[ this ].get = function( elem ) {
          +			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
          +		};
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/callbacks.js b/public/theme/jquery/src/callbacks.js
          new file mode 100644
          index 0000000..df7c7cf
          --- /dev/null
          +++ b/public/theme/jquery/src/callbacks.js
          @@ -0,0 +1,232 @@
          +define( [
          +	"./core",
          +	"./var/rnotwhite"
          +], function( jQuery, rnotwhite ) {
          +
          +// Convert String-formatted options into Object-formatted ones
          +function createOptions( options ) {
          +	var object = {};
          +	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
          +		object[ flag ] = true;
          +	} );
          +	return object;
          +}
          +
          +/*
          + * Create a callback list using the following parameters:
          + *
          + *	options: an optional list of space-separated options that will change how
          + *			the callback list behaves or a more traditional option object
          + *
          + * By default a callback list will act like an event callback list and can be
          + * "fired" multiple times.
          + *
          + * Possible options:
          + *
          + *	once:			will ensure the callback list can only be fired once (like a Deferred)
          + *
          + *	memory:			will keep track of previous values and will call any callback added
          + *					after the list has been fired right away with the latest "memorized"
          + *					values (like a Deferred)
          + *
          + *	unique:			will ensure a callback can only be added once (no duplicate in the list)
          + *
          + *	stopOnFalse:	interrupt callings when a callback returns false
          + *
          + */
          +jQuery.Callbacks = function( options ) {
          +
          +	// Convert options from String-formatted to Object-formatted if needed
          +	// (we check in cache first)
          +	options = typeof options === "string" ?
          +		createOptions( options ) :
          +		jQuery.extend( {}, options );
          +
          +	var // Flag to know if list is currently firing
          +		firing,
          +
          +		// Last fire value for non-forgettable lists
          +		memory,
          +
          +		// Flag to know if list was already fired
          +		fired,
          +
          +		// Flag to prevent firing
          +		locked,
          +
          +		// Actual callback list
          +		list = [],
          +
          +		// Queue of execution data for repeatable lists
          +		queue = [],
          +
          +		// Index of currently firing callback (modified by add/remove as needed)
          +		firingIndex = -1,
          +
          +		// Fire callbacks
          +		fire = function() {
          +
          +			// Enforce single-firing
          +			locked = options.once;
          +
          +			// Execute callbacks for all pending executions,
          +			// respecting firingIndex overrides and runtime changes
          +			fired = firing = true;
          +			for ( ; queue.length; firingIndex = -1 ) {
          +				memory = queue.shift();
          +				while ( ++firingIndex < list.length ) {
          +
          +					// Run callback and check for early termination
          +					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
          +						options.stopOnFalse ) {
          +
          +						// Jump to end and forget the data so .add doesn't re-fire
          +						firingIndex = list.length;
          +						memory = false;
          +					}
          +				}
          +			}
          +
          +			// Forget the data if we're done with it
          +			if ( !options.memory ) {
          +				memory = false;
          +			}
          +
          +			firing = false;
          +
          +			// Clean up if we're done firing for good
          +			if ( locked ) {
          +
          +				// Keep an empty list if we have data for future add calls
          +				if ( memory ) {
          +					list = [];
          +
          +				// Otherwise, this object is spent
          +				} else {
          +					list = "";
          +				}
          +			}
          +		},
          +
          +		// Actual Callbacks object
          +		self = {
          +
          +			// Add a callback or a collection of callbacks to the list
          +			add: function() {
          +				if ( list ) {
          +
          +					// If we have memory from a past run, we should fire after adding
          +					if ( memory && !firing ) {
          +						firingIndex = list.length - 1;
          +						queue.push( memory );
          +					}
          +
          +					( function add( args ) {
          +						jQuery.each( args, function( _, arg ) {
          +							if ( jQuery.isFunction( arg ) ) {
          +								if ( !options.unique || !self.has( arg ) ) {
          +									list.push( arg );
          +								}
          +							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
          +
          +								// Inspect recursively
          +								add( arg );
          +							}
          +						} );
          +					} )( arguments );
          +
          +					if ( memory && !firing ) {
          +						fire();
          +					}
          +				}
          +				return this;
          +			},
          +
          +			// Remove a callback from the list
          +			remove: function() {
          +				jQuery.each( arguments, function( _, arg ) {
          +					var index;
          +					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
          +						list.splice( index, 1 );
          +
          +						// Handle firing indexes
          +						if ( index <= firingIndex ) {
          +							firingIndex--;
          +						}
          +					}
          +				} );
          +				return this;
          +			},
          +
          +			// Check if a given callback is in the list.
          +			// If no argument is given, return whether or not list has callbacks attached.
          +			has: function( fn ) {
          +				return fn ?
          +					jQuery.inArray( fn, list ) > -1 :
          +					list.length > 0;
          +			},
          +
          +			// Remove all callbacks from the list
          +			empty: function() {
          +				if ( list ) {
          +					list = [];
          +				}
          +				return this;
          +			},
          +
          +			// Disable .fire and .add
          +			// Abort any current/pending executions
          +			// Clear all callbacks and values
          +			disable: function() {
          +				locked = queue = [];
          +				list = memory = "";
          +				return this;
          +			},
          +			disabled: function() {
          +				return !list;
          +			},
          +
          +			// Disable .fire
          +			// Also disable .add unless we have memory (since it would have no effect)
          +			// Abort any pending executions
          +			lock: function() {
          +				locked = queue = [];
          +				if ( !memory ) {
          +					list = memory = "";
          +				}
          +				return this;
          +			},
          +			locked: function() {
          +				return !!locked;
          +			},
          +
          +			// Call all callbacks with the given context and arguments
          +			fireWith: function( context, args ) {
          +				if ( !locked ) {
          +					args = args || [];
          +					args = [ context, args.slice ? args.slice() : args ];
          +					queue.push( args );
          +					if ( !firing ) {
          +						fire();
          +					}
          +				}
          +				return this;
          +			},
          +
          +			// Call all the callbacks with the given arguments
          +			fire: function() {
          +				self.fireWith( this, arguments );
          +				return this;
          +			},
          +
          +			// To know if the callbacks have already been called at least once
          +			fired: function() {
          +				return !!fired;
          +			}
          +		};
          +
          +	return self;
          +};
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/core.js b/public/theme/jquery/src/core.js
          new file mode 100644
          index 0000000..713c1a3
          --- /dev/null
          +++ b/public/theme/jquery/src/core.js
          @@ -0,0 +1,494 @@
          +define( [
          +	"./var/arr",
          +	"./var/document",
          +	"./var/slice",
          +	"./var/concat",
          +	"./var/push",
          +	"./var/indexOf",
          +	"./var/class2type",
          +	"./var/toString",
          +	"./var/hasOwn",
          +	"./var/support"
          +], function( arr, document, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
          +
          +var
          +	version = "@VERSION",
          +
          +	// Define a local copy of jQuery
          +	jQuery = function( selector, context ) {
          +
          +		// The jQuery object is actually just the init constructor 'enhanced'
          +		// Need init if jQuery is called (just allow error to be thrown if not included)
          +		return new jQuery.fn.init( selector, context );
          +	},
          +
          +	// Support: Android<4.1
          +	// Make sure we trim BOM and NBSP
          +	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
          +
          +	// Matches dashed string for camelizing
          +	rmsPrefix = /^-ms-/,
          +	rdashAlpha = /-([\da-z])/gi,
          +
          +	// Used by jQuery.camelCase as callback to replace()
          +	fcamelCase = function( all, letter ) {
          +		return letter.toUpperCase();
          +	};
          +
          +jQuery.fn = jQuery.prototype = {
          +
          +	// The current version of jQuery being used
          +	jquery: version,
          +
          +	constructor: jQuery,
          +
          +	// Start with an empty selector
          +	selector: "",
          +
          +	// The default length of a jQuery object is 0
          +	length: 0,
          +
          +	toArray: function() {
          +		return slice.call( this );
          +	},
          +
          +	// Get the Nth element in the matched element set OR
          +	// Get the whole matched element set as a clean array
          +	get: function( num ) {
          +		return num != null ?
          +
          +			// Return just the one element from the set
          +			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
          +
          +			// Return all the elements in a clean array
          +			slice.call( this );
          +	},
          +
          +	// Take an array of elements and push it onto the stack
          +	// (returning the new matched element set)
          +	pushStack: function( elems ) {
          +
          +		// Build a new jQuery matched element set
          +		var ret = jQuery.merge( this.constructor(), elems );
          +
          +		// Add the old object onto the stack (as a reference)
          +		ret.prevObject = this;
          +		ret.context = this.context;
          +
          +		// Return the newly-formed element set
          +		return ret;
          +	},
          +
          +	// Execute a callback for every element in the matched set.
          +	each: function( callback ) {
          +		return jQuery.each( this, callback );
          +	},
          +
          +	map: function( callback ) {
          +		return this.pushStack( jQuery.map( this, function( elem, i ) {
          +			return callback.call( elem, i, elem );
          +		} ) );
          +	},
          +
          +	slice: function() {
          +		return this.pushStack( slice.apply( this, arguments ) );
          +	},
          +
          +	first: function() {
          +		return this.eq( 0 );
          +	},
          +
          +	last: function() {
          +		return this.eq( -1 );
          +	},
          +
          +	eq: function( i ) {
          +		var len = this.length,
          +			j = +i + ( i < 0 ? len : 0 );
          +		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
          +	},
          +
          +	end: function() {
          +		return this.prevObject || this.constructor();
          +	},
          +
          +	// For internal use only.
          +	// Behaves like an Array's method, not like a jQuery method.
          +	push: push,
          +	sort: arr.sort,
          +	splice: arr.splice
          +};
          +
          +jQuery.extend = jQuery.fn.extend = function() {
          +	var options, name, src, copy, copyIsArray, clone,
          +		target = arguments[ 0 ] || {},
          +		i = 1,
          +		length = arguments.length,
          +		deep = false;
          +
          +	// Handle a deep copy situation
          +	if ( typeof target === "boolean" ) {
          +		deep = target;
          +
          +		// Skip the boolean and the target
          +		target = arguments[ i ] || {};
          +		i++;
          +	}
          +
          +	// Handle case when target is a string or something (possible in deep copy)
          +	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
          +		target = {};
          +	}
          +
          +	// Extend jQuery itself if only one argument is passed
          +	if ( i === length ) {
          +		target = this;
          +		i--;
          +	}
          +
          +	for ( ; i < length; i++ ) {
          +
          +		// Only deal with non-null/undefined values
          +		if ( ( options = arguments[ i ] ) != null ) {
          +
          +			// Extend the base object
          +			for ( name in options ) {
          +				src = target[ name ];
          +				copy = options[ name ];
          +
          +				// Prevent never-ending loop
          +				if ( target === copy ) {
          +					continue;
          +				}
          +
          +				// Recurse if we're merging plain objects or arrays
          +				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
          +					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
          +
          +					if ( copyIsArray ) {
          +						copyIsArray = false;
          +						clone = src && jQuery.isArray( src ) ? src : [];
          +
          +					} else {
          +						clone = src && jQuery.isPlainObject( src ) ? src : {};
          +					}
          +
          +					// Never move original objects, clone them
          +					target[ name ] = jQuery.extend( deep, clone, copy );
          +
          +				// Don't bring in undefined values
          +				} else if ( copy !== undefined ) {
          +					target[ name ] = copy;
          +				}
          +			}
          +		}
          +	}
          +
          +	// Return the modified object
          +	return target;
          +};
          +
          +jQuery.extend( {
          +
          +	// Unique for each copy of jQuery on the page
          +	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
          +
          +	// Assume jQuery is ready without the ready module
          +	isReady: true,
          +
          +	error: function( msg ) {
          +		throw new Error( msg );
          +	},
          +
          +	noop: function() {},
          +
          +	isFunction: function( obj ) {
          +		return jQuery.type( obj ) === "function";
          +	},
          +
          +	isArray: Array.isArray,
          +
          +	isWindow: function( obj ) {
          +		return obj != null && obj === obj.window;
          +	},
          +
          +	isNumeric: function( obj ) {
          +
          +		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
          +		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
          +		// subtraction forces infinities to NaN
          +		// adding 1 corrects loss of precision from parseFloat (#15100)
          +		var realStringObj = obj && obj.toString();
          +		return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
          +	},
          +
          +	isPlainObject: function( obj ) {
          +		var key;
          +
          +		// Not plain objects:
          +		// - Any object or value whose internal [[Class]] property is not "[object Object]"
          +		// - DOM nodes
          +		// - window
          +		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
          +			return false;
          +		}
          +
          +		// Not own constructor property must be Object
          +		if ( obj.constructor &&
          +				!hasOwn.call( obj, "constructor" ) &&
          +				!hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
          +			return false;
          +		}
          +
          +		// Own properties are enumerated firstly, so to speed up,
          +		// if last one is own, then all properties are own
          +		for ( key in obj ) {}
          +
          +		return key === undefined || hasOwn.call( obj, key );
          +	},
          +
          +	isEmptyObject: function( obj ) {
          +		var name;
          +		for ( name in obj ) {
          +			return false;
          +		}
          +		return true;
          +	},
          +
          +	type: function( obj ) {
          +		if ( obj == null ) {
          +			return obj + "";
          +		}
          +
          +		// Support: Android<4.0, iOS<6 (functionish RegExp)
          +		return typeof obj === "object" || typeof obj === "function" ?
          +			class2type[ toString.call( obj ) ] || "object" :
          +			typeof obj;
          +	},
          +
          +	// Evaluates a script in a global context
          +	globalEval: function( code ) {
          +		var script,
          +			indirect = eval;
          +
          +		code = jQuery.trim( code );
          +
          +		if ( code ) {
          +
          +			// If the code includes a valid, prologue position
          +			// strict mode pragma, execute code by injecting a
          +			// script tag into the document.
          +			if ( code.indexOf( "use strict" ) === 1 ) {
          +				script = document.createElement( "script" );
          +				script.text = code;
          +				document.head.appendChild( script ).parentNode.removeChild( script );
          +			} else {
          +
          +				// Otherwise, avoid the DOM node creation, insertion
          +				// and removal by using an indirect global eval
          +
          +				indirect( code );
          +			}
          +		}
          +	},
          +
          +	// Convert dashed to camelCase; used by the css and data modules
          +	// Support: IE9-11+
          +	// Microsoft forgot to hump their vendor prefix (#9572)
          +	camelCase: function( string ) {
          +		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
          +	},
          +
          +	nodeName: function( elem, name ) {
          +		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
          +	},
          +
          +	each: function( obj, callback ) {
          +		var length, i = 0;
          +
          +		if ( isArrayLike( obj ) ) {
          +			length = obj.length;
          +			for ( ; i < length; i++ ) {
          +				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
          +					break;
          +				}
          +			}
          +		} else {
          +			for ( i in obj ) {
          +				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
          +					break;
          +				}
          +			}
          +		}
          +
          +		return obj;
          +	},
          +
          +	// Support: Android<4.1
          +	trim: function( text ) {
          +		return text == null ?
          +			"" :
          +			( text + "" ).replace( rtrim, "" );
          +	},
          +
          +	// results is for internal usage only
          +	makeArray: function( arr, results ) {
          +		var ret = results || [];
          +
          +		if ( arr != null ) {
          +			if ( isArrayLike( Object( arr ) ) ) {
          +				jQuery.merge( ret,
          +					typeof arr === "string" ?
          +					[ arr ] : arr
          +				);
          +			} else {
          +				push.call( ret, arr );
          +			}
          +		}
          +
          +		return ret;
          +	},
          +
          +	inArray: function( elem, arr, i ) {
          +		return arr == null ? -1 : indexOf.call( arr, elem, i );
          +	},
          +
          +	merge: function( first, second ) {
          +		var len = +second.length,
          +			j = 0,
          +			i = first.length;
          +
          +		for ( ; j < len; j++ ) {
          +			first[ i++ ] = second[ j ];
          +		}
          +
          +		first.length = i;
          +
          +		return first;
          +	},
          +
          +	grep: function( elems, callback, invert ) {
          +		var callbackInverse,
          +			matches = [],
          +			i = 0,
          +			length = elems.length,
          +			callbackExpect = !invert;
          +
          +		// Go through the array, only saving the items
          +		// that pass the validator function
          +		for ( ; i < length; i++ ) {
          +			callbackInverse = !callback( elems[ i ], i );
          +			if ( callbackInverse !== callbackExpect ) {
          +				matches.push( elems[ i ] );
          +			}
          +		}
          +
          +		return matches;
          +	},
          +
          +	// arg is for internal usage only
          +	map: function( elems, callback, arg ) {
          +		var length, value,
          +			i = 0,
          +			ret = [];
          +
          +		// Go through the array, translating each of the items to their new values
          +		if ( isArrayLike( elems ) ) {
          +			length = elems.length;
          +			for ( ; i < length; i++ ) {
          +				value = callback( elems[ i ], i, arg );
          +
          +				if ( value != null ) {
          +					ret.push( value );
          +				}
          +			}
          +
          +		// Go through every key on the object,
          +		} else {
          +			for ( i in elems ) {
          +				value = callback( elems[ i ], i, arg );
          +
          +				if ( value != null ) {
          +					ret.push( value );
          +				}
          +			}
          +		}
          +
          +		// Flatten any nested arrays
          +		return concat.apply( [], ret );
          +	},
          +
          +	// A global GUID counter for objects
          +	guid: 1,
          +
          +	// Bind a function to a context, optionally partially applying any
          +	// arguments.
          +	proxy: function( fn, context ) {
          +		var tmp, args, proxy;
          +
          +		if ( typeof context === "string" ) {
          +			tmp = fn[ context ];
          +			context = fn;
          +			fn = tmp;
          +		}
          +
          +		// Quick check to determine if target is callable, in the spec
          +		// this throws a TypeError, but we will just return undefined.
          +		if ( !jQuery.isFunction( fn ) ) {
          +			return undefined;
          +		}
          +
          +		// Simulated bind
          +		args = slice.call( arguments, 2 );
          +		proxy = function() {
          +			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
          +		};
          +
          +		// Set the guid of unique handler to the same of original handler, so it can be removed
          +		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
          +
          +		return proxy;
          +	},
          +
          +	now: Date.now,
          +
          +	// jQuery.support is not used in Core but other projects attach their
          +	// properties to it so it needs to exist.
          +	support: support
          +} );
          +
          +// JSHint would error on this code due to the Symbol not being defined in ES5.
          +// Defining this global in .jshintrc would create a danger of using the global
          +// unguarded in another place, it seems safer to just disable JSHint for these
          +// three lines.
          +/* jshint ignore: start */
          +if ( typeof Symbol === "function" ) {
          +	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
          +}
          +/* jshint ignore: end */
          +
          +// Populate the class2type map
          +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
          +function( i, name ) {
          +	class2type[ "[object " + name + "]" ] = name.toLowerCase();
          +} );
          +
          +function isArrayLike( obj ) {
          +
          +	// Support: iOS 8.2 (not reproducible in simulator)
          +	// `in` check used to prevent JIT error (gh-2145)
          +	// hasOwn isn't used here due to false negatives
          +	// regarding Nodelist length in IE
          +	var length = !!obj && "length" in obj && obj.length,
          +		type = jQuery.type( obj );
          +
          +	if ( type === "function" || jQuery.isWindow( obj ) ) {
          +		return false;
          +	}
          +
          +	return type === "array" || length === 0 ||
          +		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
          +}
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/core/access.js b/public/theme/jquery/src/core/access.js
          new file mode 100644
          index 0000000..19f79ef
          --- /dev/null
          +++ b/public/theme/jquery/src/core/access.js
          @@ -0,0 +1,65 @@
          +define( [
          +	"../core"
          +], function( jQuery ) {
          +
          +// Multifunctional method to get and set values of a collection
          +// The value/s can optionally be executed if it's a function
          +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
          +	var i = 0,
          +		len = elems.length,
          +		bulk = key == null;
          +
          +	// Sets many values
          +	if ( jQuery.type( key ) === "object" ) {
          +		chainable = true;
          +		for ( i in key ) {
          +			access( elems, fn, i, key[ i ], true, emptyGet, raw );
          +		}
          +
          +	// Sets one value
          +	} else if ( value !== undefined ) {
          +		chainable = true;
          +
          +		if ( !jQuery.isFunction( value ) ) {
          +			raw = true;
          +		}
          +
          +		if ( bulk ) {
          +
          +			// Bulk operations run against the entire set
          +			if ( raw ) {
          +				fn.call( elems, value );
          +				fn = null;
          +
          +			// ...except when executing function values
          +			} else {
          +				bulk = fn;
          +				fn = function( elem, key, value ) {
          +					return bulk.call( jQuery( elem ), value );
          +				};
          +			}
          +		}
          +
          +		if ( fn ) {
          +			for ( ; i < len; i++ ) {
          +				fn(
          +					elems[ i ], key, raw ?
          +					value :
          +					value.call( elems[ i ], i, fn( elems[ i ], key ) )
          +				);
          +			}
          +		}
          +	}
          +
          +	return chainable ?
          +		elems :
          +
          +		// Gets
          +		bulk ?
          +			fn.call( elems ) :
          +			len ? fn( elems[ 0 ], key ) : emptyGet;
          +};
          +
          +return access;
          +
          +} );
          diff --git a/public/theme/jquery/src/core/init.js b/public/theme/jquery/src/core/init.js
          new file mode 100644
          index 0000000..c2b6c94
          --- /dev/null
          +++ b/public/theme/jquery/src/core/init.js
          @@ -0,0 +1,134 @@
          +// Initialize a jQuery object
          +define( [
          +	"../core",
          +	"../var/document",
          +	"./var/rsingleTag",
          +	"../traversing/findFilter"
          +], function( jQuery, document, rsingleTag ) {
          +
          +// A central reference to the root jQuery(document)
          +var rootjQuery,
          +
          +	// A simple way to check for HTML strings
          +	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
          +	// Strict HTML recognition (#11290: must start with <)
          +	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
          +
          +	init = jQuery.fn.init = function( selector, context, root ) {
          +		var match, elem;
          +
          +		// HANDLE: $(""), $(null), $(undefined), $(false)
          +		if ( !selector ) {
          +			return this;
          +		}
          +
          +		// Method init() accepts an alternate rootjQuery
          +		// so migrate can support jQuery.sub (gh-2101)
          +		root = root || rootjQuery;
          +
          +		// Handle HTML strings
          +		if ( typeof selector === "string" ) {
          +			if ( selector[ 0 ] === "<" &&
          +				selector[ selector.length - 1 ] === ">" &&
          +				selector.length >= 3 ) {
          +
          +				// Assume that strings that start and end with <> are HTML and skip the regex check
          +				match = [ null, selector, null ];
          +
          +			} else {
          +				match = rquickExpr.exec( selector );
          +			}
          +
          +			// Match html or make sure no context is specified for #id
          +			if ( match && ( match[ 1 ] || !context ) ) {
          +
          +				// HANDLE: $(html) -> $(array)
          +				if ( match[ 1 ] ) {
          +					context = context instanceof jQuery ? context[ 0 ] : context;
          +
          +					// Option to run scripts is true for back-compat
          +					// Intentionally let the error be thrown if parseHTML is not present
          +					jQuery.merge( this, jQuery.parseHTML(
          +						match[ 1 ],
          +						context && context.nodeType ? context.ownerDocument || context : document,
          +						true
          +					) );
          +
          +					// HANDLE: $(html, props)
          +					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
          +						for ( match in context ) {
          +
          +							// Properties of context are called as methods if possible
          +							if ( jQuery.isFunction( this[ match ] ) ) {
          +								this[ match ]( context[ match ] );
          +
          +							// ...and otherwise set as attributes
          +							} else {
          +								this.attr( match, context[ match ] );
          +							}
          +						}
          +					}
          +
          +					return this;
          +
          +				// HANDLE: $(#id)
          +				} else {
          +					elem = document.getElementById( match[ 2 ] );
          +
          +					// Support: Blackberry 4.6
          +					// gEBID returns nodes no longer in the document (#6963)
          +					if ( elem && elem.parentNode ) {
          +
          +						// Inject the element directly into the jQuery object
          +						this.length = 1;
          +						this[ 0 ] = elem;
          +					}
          +
          +					this.context = document;
          +					this.selector = selector;
          +					return this;
          +				}
          +
          +			// HANDLE: $(expr, $(...))
          +			} else if ( !context || context.jquery ) {
          +				return ( context || root ).find( selector );
          +
          +			// HANDLE: $(expr, context)
          +			// (which is just equivalent to: $(context).find(expr)
          +			} else {
          +				return this.constructor( context ).find( selector );
          +			}
          +
          +		// HANDLE: $(DOMElement)
          +		} else if ( selector.nodeType ) {
          +			this.context = this[ 0 ] = selector;
          +			this.length = 1;
          +			return this;
          +
          +		// HANDLE: $(function)
          +		// Shortcut for document ready
          +		} else if ( jQuery.isFunction( selector ) ) {
          +			return root.ready !== undefined ?
          +				root.ready( selector ) :
          +
          +				// Execute immediately if ready is not present
          +				selector( jQuery );
          +		}
          +
          +		if ( selector.selector !== undefined ) {
          +			this.selector = selector.selector;
          +			this.context = selector.context;
          +		}
          +
          +		return jQuery.makeArray( selector, this );
          +	};
          +
          +// Give the init function the jQuery prototype for later instantiation
          +init.prototype = jQuery.fn;
          +
          +// Initialize central reference
          +rootjQuery = jQuery( document );
          +
          +return init;
          +
          +} );
          diff --git a/public/theme/jquery/src/core/parseHTML.js b/public/theme/jquery/src/core/parseHTML.js
          new file mode 100644
          index 0000000..3524abd
          --- /dev/null
          +++ b/public/theme/jquery/src/core/parseHTML.js
          @@ -0,0 +1,41 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"./var/rsingleTag",
          +	"../manipulation/buildFragment"
          +], function( jQuery, document, rsingleTag, buildFragment ) {
          +
          +// Argument "data" should be string of html
          +// context (optional): If specified, the fragment will be created in this context,
          +// defaults to document
          +// keepScripts (optional): If true, will include scripts passed in the html string
          +jQuery.parseHTML = function( data, context, keepScripts ) {
          +	if ( !data || typeof data !== "string" ) {
          +		return null;
          +	}
          +	if ( typeof context === "boolean" ) {
          +		keepScripts = context;
          +		context = false;
          +	}
          +	context = context || document;
          +
          +	var parsed = rsingleTag.exec( data ),
          +		scripts = !keepScripts && [];
          +
          +	// Single tag
          +	if ( parsed ) {
          +		return [ context.createElement( parsed[ 1 ] ) ];
          +	}
          +
          +	parsed = buildFragment( [ data ], context, scripts );
          +
          +	if ( scripts && scripts.length ) {
          +		jQuery( scripts ).remove();
          +	}
          +
          +	return jQuery.merge( [], parsed.childNodes );
          +};
          +
          +return jQuery.parseHTML;
          +
          +} );
          diff --git a/public/theme/jquery/src/core/ready.js b/public/theme/jquery/src/core/ready.js
          new file mode 100644
          index 0000000..7d93e67
          --- /dev/null
          +++ b/public/theme/jquery/src/core/ready.js
          @@ -0,0 +1,103 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"../core/init",
          +	"../deferred"
          +], function( jQuery, document ) {
          +
          +// The deferred used on DOM ready
          +var readyList;
          +
          +jQuery.fn.ready = function( fn ) {
          +
          +	// Add the callback
          +	jQuery.ready.promise().done( fn );
          +
          +	return this;
          +};
          +
          +jQuery.extend( {
          +
          +	// Is the DOM ready to be used? Set to true once it occurs.
          +	isReady: false,
          +
          +	// A counter to track how many items to wait for before
          +	// the ready event fires. See #6781
          +	readyWait: 1,
          +
          +	// Hold (or release) the ready event
          +	holdReady: function( hold ) {
          +		if ( hold ) {
          +			jQuery.readyWait++;
          +		} else {
          +			jQuery.ready( true );
          +		}
          +	},
          +
          +	// Handle when the DOM is ready
          +	ready: function( wait ) {
          +
          +		// Abort if there are pending holds or we're already ready
          +		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
          +			return;
          +		}
          +
          +		// Remember that the DOM is ready
          +		jQuery.isReady = true;
          +
          +		// If a normal DOM Ready event fired, decrement, and wait if need be
          +		if ( wait !== true && --jQuery.readyWait > 0 ) {
          +			return;
          +		}
          +
          +		// If there are functions bound, to execute
          +		readyList.resolveWith( document, [ jQuery ] );
          +
          +		// Trigger any bound ready events
          +		if ( jQuery.fn.triggerHandler ) {
          +			jQuery( document ).triggerHandler( "ready" );
          +			jQuery( document ).off( "ready" );
          +		}
          +	}
          +} );
          +
          +/**
          + * The ready event handler and self cleanup method
          + */
          +function completed() {
          +	document.removeEventListener( "DOMContentLoaded", completed );
          +	window.removeEventListener( "load", completed );
          +	jQuery.ready();
          +}
          +
          +jQuery.ready.promise = function( obj ) {
          +	if ( !readyList ) {
          +
          +		readyList = jQuery.Deferred();
          +
          +		// Catch cases where $(document).ready() is called
          +		// after the browser event has already occurred.
          +		// Support: IE9-10 only
          +		// Older IE sometimes signals "interactive" too soon
          +		if ( document.readyState === "complete" ||
          +			( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
          +
          +			// Handle it asynchronously to allow scripts the opportunity to delay ready
          +			window.setTimeout( jQuery.ready );
          +
          +		} else {
          +
          +			// Use the handy event callback
          +			document.addEventListener( "DOMContentLoaded", completed );
          +
          +			// A fallback to window.onload, that will always work
          +			window.addEventListener( "load", completed );
          +		}
          +	}
          +	return readyList.promise( obj );
          +};
          +
          +// Kick off the DOM ready check even if the user does not
          +jQuery.ready.promise();
          +
          +} );
          diff --git a/public/theme/jquery/src/core/var/rsingleTag.js b/public/theme/jquery/src/core/var/rsingleTag.js
          new file mode 100644
          index 0000000..1a55ee3
          --- /dev/null
          +++ b/public/theme/jquery/src/core/var/rsingleTag.js
          @@ -0,0 +1,5 @@
          +define( function() {
          +
          +	// Match a standalone tag
          +	return ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
          +} );
          diff --git a/public/theme/jquery/src/css.js b/public/theme/jquery/src/css.js
          new file mode 100644
          index 0000000..bd13139
          --- /dev/null
          +++ b/public/theme/jquery/src/css.js
          @@ -0,0 +1,502 @@
          +define( [
          +	"./core",
          +	"./var/pnum",
          +	"./core/access",
          +	"./css/var/rmargin",
          +	"./var/document",
          +	"./var/rcssNum",
          +	"./css/var/rnumnonpx",
          +	"./css/var/cssExpand",
          +	"./css/var/isHidden",
          +	"./css/var/getStyles",
          +	"./css/var/swap",
          +	"./css/curCSS",
          +	"./css/adjustCSS",
          +	"./css/defaultDisplay",
          +	"./css/addGetHookIf",
          +	"./css/support",
          +	"./data/var/dataPriv",
          +
          +	"./core/init",
          +	"./core/ready",
          +	"./selector" // contains
          +], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand, isHidden,
          +	getStyles, swap, curCSS, adjustCSS, defaultDisplay, addGetHookIf, support, dataPriv ) {
          +
          +var
          +
          +	// Swappable if display is none or starts with table
          +	// except "table", "table-cell", or "table-caption"
          +	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
          +	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
          +
          +	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
          +	cssNormalTransform = {
          +		letterSpacing: "0",
          +		fontWeight: "400"
          +	},
          +
          +	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
          +	emptyStyle = document.createElement( "div" ).style;
          +
          +// Return a css property mapped to a potentially vendor prefixed property
          +function vendorPropName( name ) {
          +
          +	// Shortcut for names that are not vendor prefixed
          +	if ( name in emptyStyle ) {
          +		return name;
          +	}
          +
          +	// Check for vendor prefixed names
          +	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
          +		i = cssPrefixes.length;
          +
          +	while ( i-- ) {
          +		name = cssPrefixes[ i ] + capName;
          +		if ( name in emptyStyle ) {
          +			return name;
          +		}
          +	}
          +}
          +
          +function setPositiveNumber( elem, value, subtract ) {
          +
          +	// Any relative (+/-) values have already been
          +	// normalized at this point
          +	var matches = rcssNum.exec( value );
          +	return matches ?
          +
          +		// Guard against undefined "subtract", e.g., when used as in cssHooks
          +		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
          +		value;
          +}
          +
          +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
          +	var i = extra === ( isBorderBox ? "border" : "content" ) ?
          +
          +		// If we already have the right measurement, avoid augmentation
          +		4 :
          +
          +		// Otherwise initialize for horizontal or vertical properties
          +		name === "width" ? 1 : 0,
          +
          +		val = 0;
          +
          +	for ( ; i < 4; i += 2 ) {
          +
          +		// Both box models exclude margin, so add it if we want it
          +		if ( extra === "margin" ) {
          +			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
          +		}
          +
          +		if ( isBorderBox ) {
          +
          +			// border-box includes padding, so remove it if we want content
          +			if ( extra === "content" ) {
          +				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
          +			}
          +
          +			// At this point, extra isn't border nor margin, so remove border
          +			if ( extra !== "margin" ) {
          +				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
          +			}
          +		} else {
          +
          +			// At this point, extra isn't content, so add padding
          +			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
          +
          +			// At this point, extra isn't content nor padding, so add border
          +			if ( extra !== "padding" ) {
          +				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
          +			}
          +		}
          +	}
          +
          +	return val;
          +}
          +
          +function getWidthOrHeight( elem, name, extra ) {
          +
          +	// Start with offset property, which is equivalent to the border-box value
          +	var valueIsBorderBox = true,
          +		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
          +		styles = getStyles( elem ),
          +		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
          +
          +	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
          +	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
          +	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
          +	if ( val <= 0 || val == null ) {
          +
          +		// Fall back to computed then uncomputed css if necessary
          +		val = curCSS( elem, name, styles );
          +		if ( val < 0 || val == null ) {
          +			val = elem.style[ name ];
          +		}
          +
          +		// Computed unit is not pixels. Stop here and return.
          +		if ( rnumnonpx.test( val ) ) {
          +			return val;
          +		}
          +
          +		// Check for style in case a browser which returns unreliable values
          +		// for getComputedStyle silently falls back to the reliable elem.style
          +		valueIsBorderBox = isBorderBox &&
          +			( support.boxSizingReliable() || val === elem.style[ name ] );
          +
          +		// Normalize "", auto, and prepare for extra
          +		val = parseFloat( val ) || 0;
          +	}
          +
          +	// Use the active box-sizing model to add/subtract irrelevant styles
          +	return ( val +
          +		augmentWidthOrHeight(
          +			elem,
          +			name,
          +			extra || ( isBorderBox ? "border" : "content" ),
          +			valueIsBorderBox,
          +			styles
          +		)
          +	) + "px";
          +}
          +
          +function showHide( elements, show ) {
          +	var display, elem, hidden,
          +		values = [],
          +		index = 0,
          +		length = elements.length;
          +
          +	for ( ; index < length; index++ ) {
          +		elem = elements[ index ];
          +		if ( !elem.style ) {
          +			continue;
          +		}
          +
          +		values[ index ] = dataPriv.get( elem, "olddisplay" );
          +		display = elem.style.display;
          +		if ( show ) {
          +
          +			// Reset the inline display of this element to learn if it is
          +			// being hidden by cascaded rules or not
          +			if ( !values[ index ] && display === "none" ) {
          +				elem.style.display = "";
          +			}
          +
          +			// Set elements which have been overridden with display: none
          +			// in a stylesheet to whatever the default browser style is
          +			// for such an element
          +			if ( elem.style.display === "" && isHidden( elem ) ) {
          +				values[ index ] = dataPriv.access(
          +					elem,
          +					"olddisplay",
          +					defaultDisplay( elem.nodeName )
          +				);
          +			}
          +		} else {
          +			hidden = isHidden( elem );
          +
          +			if ( display !== "none" || !hidden ) {
          +				dataPriv.set(
          +					elem,
          +					"olddisplay",
          +					hidden ? display : jQuery.css( elem, "display" )
          +				);
          +			}
          +		}
          +	}
          +
          +	// Set the display of most of the elements in a second loop
          +	// to avoid the constant reflow
          +	for ( index = 0; index < length; index++ ) {
          +		elem = elements[ index ];
          +		if ( !elem.style ) {
          +			continue;
          +		}
          +		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
          +			elem.style.display = show ? values[ index ] || "" : "none";
          +		}
          +	}
          +
          +	return elements;
          +}
          +
          +jQuery.extend( {
          +
          +	// Add in style property hooks for overriding the default
          +	// behavior of getting and setting a style property
          +	cssHooks: {
          +		opacity: {
          +			get: function( elem, computed ) {
          +				if ( computed ) {
          +
          +					// We should always get a number back from opacity
          +					var ret = curCSS( elem, "opacity" );
          +					return ret === "" ? "1" : ret;
          +				}
          +			}
          +		}
          +	},
          +
          +	// Don't automatically add "px" to these possibly-unitless properties
          +	cssNumber: {
          +		"animationIterationCount": true,
          +		"columnCount": true,
          +		"fillOpacity": true,
          +		"flexGrow": true,
          +		"flexShrink": true,
          +		"fontWeight": true,
          +		"lineHeight": true,
          +		"opacity": true,
          +		"order": true,
          +		"orphans": true,
          +		"widows": true,
          +		"zIndex": true,
          +		"zoom": true
          +	},
          +
          +	// Add in properties whose names you wish to fix before
          +	// setting or getting the value
          +	cssProps: {
          +		"float": "cssFloat"
          +	},
          +
          +	// Get and set the style property on a DOM Node
          +	style: function( elem, name, value, extra ) {
          +
          +		// Don't set styles on text and comment nodes
          +		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
          +			return;
          +		}
          +
          +		// Make sure that we're working with the right name
          +		var ret, type, hooks,
          +			origName = jQuery.camelCase( name ),
          +			style = elem.style;
          +
          +		name = jQuery.cssProps[ origName ] ||
          +			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
          +
          +		// Gets hook for the prefixed version, then unprefixed version
          +		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
          +
          +		// Check if we're setting a value
          +		if ( value !== undefined ) {
          +			type = typeof value;
          +
          +			// Convert "+=" or "-=" to relative numbers (#7345)
          +			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
          +				value = adjustCSS( elem, name, ret );
          +
          +				// Fixes bug #9237
          +				type = "number";
          +			}
          +
          +			// Make sure that null and NaN values aren't set (#7116)
          +			if ( value == null || value !== value ) {
          +				return;
          +			}
          +
          +			// If a number was passed in, add the unit (except for certain CSS properties)
          +			if ( type === "number" ) {
          +				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
          +			}
          +
          +			// Support: IE9-11+
          +			// background-* props affect original clone's values
          +			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
          +				style[ name ] = "inherit";
          +			}
          +
          +			// If a hook was provided, use that value, otherwise just set the specified value
          +			if ( !hooks || !( "set" in hooks ) ||
          +				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
          +
          +				style[ name ] = value;
          +			}
          +
          +		} else {
          +
          +			// If a hook was provided get the non-computed value from there
          +			if ( hooks && "get" in hooks &&
          +				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
          +
          +				return ret;
          +			}
          +
          +			// Otherwise just get the value from the style object
          +			return style[ name ];
          +		}
          +	},
          +
          +	css: function( elem, name, extra, styles ) {
          +		var val, num, hooks,
          +			origName = jQuery.camelCase( name );
          +
          +		// Make sure that we're working with the right name
          +		name = jQuery.cssProps[ origName ] ||
          +			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
          +
          +		// Try prefixed name followed by the unprefixed name
          +		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
          +
          +		// If a hook was provided get the computed value from there
          +		if ( hooks && "get" in hooks ) {
          +			val = hooks.get( elem, true, extra );
          +		}
          +
          +		// Otherwise, if a way to get the computed value exists, use that
          +		if ( val === undefined ) {
          +			val = curCSS( elem, name, styles );
          +		}
          +
          +		// Convert "normal" to computed value
          +		if ( val === "normal" && name in cssNormalTransform ) {
          +			val = cssNormalTransform[ name ];
          +		}
          +
          +		// Make numeric if forced or a qualifier was provided and val looks numeric
          +		if ( extra === "" || extra ) {
          +			num = parseFloat( val );
          +			return extra === true || isFinite( num ) ? num || 0 : val;
          +		}
          +		return val;
          +	}
          +} );
          +
          +jQuery.each( [ "height", "width" ], function( i, name ) {
          +	jQuery.cssHooks[ name ] = {
          +		get: function( elem, computed, extra ) {
          +			if ( computed ) {
          +
          +				// Certain elements can have dimension info if we invisibly show them
          +				// but it must have a current display style that would benefit
          +				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
          +					elem.offsetWidth === 0 ?
          +						swap( elem, cssShow, function() {
          +							return getWidthOrHeight( elem, name, extra );
          +						} ) :
          +						getWidthOrHeight( elem, name, extra );
          +			}
          +		},
          +
          +		set: function( elem, value, extra ) {
          +			var matches,
          +				styles = extra && getStyles( elem ),
          +				subtract = extra && augmentWidthOrHeight(
          +					elem,
          +					name,
          +					extra,
          +					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
          +					styles
          +				);
          +
          +			// Convert to pixels if value adjustment is needed
          +			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
          +				( matches[ 3 ] || "px" ) !== "px" ) {
          +
          +				elem.style[ name ] = value;
          +				value = jQuery.css( elem, name );
          +			}
          +
          +			return setPositiveNumber( elem, value, subtract );
          +		}
          +	};
          +} );
          +
          +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
          +	function( elem, computed ) {
          +		if ( computed ) {
          +			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
          +				elem.getBoundingClientRect().left -
          +					swap( elem, { marginLeft: 0 }, function() {
          +						return elem.getBoundingClientRect().left;
          +					} )
          +				) + "px";
          +		}
          +	}
          +);
          +
          +// Support: Android 2.3
          +jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
          +	function( elem, computed ) {
          +		if ( computed ) {
          +			return swap( elem, { "display": "inline-block" },
          +				curCSS, [ elem, "marginRight" ] );
          +		}
          +	}
          +);
          +
          +// These hooks are used by animate to expand properties
          +jQuery.each( {
          +	margin: "",
          +	padding: "",
          +	border: "Width"
          +}, function( prefix, suffix ) {
          +	jQuery.cssHooks[ prefix + suffix ] = {
          +		expand: function( value ) {
          +			var i = 0,
          +				expanded = {},
          +
          +				// Assumes a single number if not a string
          +				parts = typeof value === "string" ? value.split( " " ) : [ value ];
          +
          +			for ( ; i < 4; i++ ) {
          +				expanded[ prefix + cssExpand[ i ] + suffix ] =
          +					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
          +			}
          +
          +			return expanded;
          +		}
          +	};
          +
          +	if ( !rmargin.test( prefix ) ) {
          +		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
          +	}
          +} );
          +
          +jQuery.fn.extend( {
          +	css: function( name, value ) {
          +		return access( this, function( elem, name, value ) {
          +			var styles, len,
          +				map = {},
          +				i = 0;
          +
          +			if ( jQuery.isArray( name ) ) {
          +				styles = getStyles( elem );
          +				len = name.length;
          +
          +				for ( ; i < len; i++ ) {
          +					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
          +				}
          +
          +				return map;
          +			}
          +
          +			return value !== undefined ?
          +				jQuery.style( elem, name, value ) :
          +				jQuery.css( elem, name );
          +		}, name, value, arguments.length > 1 );
          +	},
          +	show: function() {
          +		return showHide( this, true );
          +	},
          +	hide: function() {
          +		return showHide( this );
          +	},
          +	toggle: function( state ) {
          +		if ( typeof state === "boolean" ) {
          +			return state ? this.show() : this.hide();
          +		}
          +
          +		return this.each( function() {
          +			if ( isHidden( this ) ) {
          +				jQuery( this ).show();
          +			} else {
          +				jQuery( this ).hide();
          +			}
          +		} );
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/css/addGetHookIf.js b/public/theme/jquery/src/css/addGetHookIf.js
          new file mode 100644
          index 0000000..9cd21f6
          --- /dev/null
          +++ b/public/theme/jquery/src/css/addGetHookIf.js
          @@ -0,0 +1,24 @@
          +define( function() {
          +
          +function addGetHookIf( conditionFn, hookFn ) {
          +
          +	// Define the hook, we'll check on the first run if it's really needed.
          +	return {
          +		get: function() {
          +			if ( conditionFn() ) {
          +
          +				// Hook not needed (or it's not possible to use it due
          +				// to missing dependency), remove it.
          +				delete this.get;
          +				return;
          +			}
          +
          +			// Hook needed; redefine it so that the support test is not executed again.
          +			return ( this.get = hookFn ).apply( this, arguments );
          +		}
          +	};
          +}
          +
          +return addGetHookIf;
          +
          +} );
          diff --git a/public/theme/jquery/src/css/adjustCSS.js b/public/theme/jquery/src/css/adjustCSS.js
          new file mode 100644
          index 0000000..48fcfec
          --- /dev/null
          +++ b/public/theme/jquery/src/css/adjustCSS.js
          @@ -0,0 +1,65 @@
          +define( [
          +	"../core",
          +	"../var/rcssNum"
          +], function( jQuery, rcssNum ) {
          +
          +function adjustCSS( elem, prop, valueParts, tween ) {
          +	var adjusted,
          +		scale = 1,
          +		maxIterations = 20,
          +		currentValue = tween ?
          +			function() { return tween.cur(); } :
          +			function() { return jQuery.css( elem, prop, "" ); },
          +		initial = currentValue(),
          +		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
          +
          +		// Starting value computation is required for potential unit mismatches
          +		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
          +			rcssNum.exec( jQuery.css( elem, prop ) );
          +
          +	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
          +
          +		// Trust units reported by jQuery.css
          +		unit = unit || initialInUnit[ 3 ];
          +
          +		// Make sure we update the tween properties later on
          +		valueParts = valueParts || [];
          +
          +		// Iteratively approximate from a nonzero starting point
          +		initialInUnit = +initial || 1;
          +
          +		do {
          +
          +			// If previous iteration zeroed out, double until we get *something*.
          +			// Use string for doubling so we don't accidentally see scale as unchanged below
          +			scale = scale || ".5";
          +
          +			// Adjust and apply
          +			initialInUnit = initialInUnit / scale;
          +			jQuery.style( elem, prop, initialInUnit + unit );
          +
          +		// Update scale, tolerating zero or NaN from tween.cur()
          +		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
          +		} while (
          +			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
          +		);
          +	}
          +
          +	if ( valueParts ) {
          +		initialInUnit = +initialInUnit || +initial || 0;
          +
          +		// Apply relative offset (+=/-=) if specified
          +		adjusted = valueParts[ 1 ] ?
          +			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
          +			+valueParts[ 2 ];
          +		if ( tween ) {
          +			tween.unit = unit;
          +			tween.start = initialInUnit;
          +			tween.end = adjusted;
          +		}
          +	}
          +	return adjusted;
          +}
          +
          +return adjustCSS;
          +} );
          diff --git a/public/theme/jquery/src/css/curCSS.js b/public/theme/jquery/src/css/curCSS.js
          new file mode 100644
          index 0000000..084f8c7
          --- /dev/null
          +++ b/public/theme/jquery/src/css/curCSS.js
          @@ -0,0 +1,60 @@
          +define( [
          +	"../core",
          +	"./var/rnumnonpx",
          +	"./var/rmargin",
          +	"./var/getStyles",
          +	"./support",
          +	"../selector" // Get jQuery.contains
          +], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
          +
          +function curCSS( elem, name, computed ) {
          +	var width, minWidth, maxWidth, ret,
          +		style = elem.style;
          +
          +	computed = computed || getStyles( elem );
          +	ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
          +
          +	// Support: Opera 12.1x only
          +	// Fall back to style even without computed
          +	// computed is undefined for elems on document fragments
          +	if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {
          +		ret = jQuery.style( elem, name );
          +	}
          +
          +	// Support: IE9
          +	// getPropertyValue is only needed for .css('filter') (#12537)
          +	if ( computed ) {
          +
          +		// A tribute to the "awesome hack by Dean Edwards"
          +		// Android Browser returns percentage for some values,
          +		// but width seems to be reliably pixels.
          +		// This is against the CSSOM draft spec:
          +		// http://dev.w3.org/csswg/cssom/#resolved-values
          +		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
          +
          +			// Remember the original values
          +			width = style.width;
          +			minWidth = style.minWidth;
          +			maxWidth = style.maxWidth;
          +
          +			// Put in the new values to get a computed value out
          +			style.minWidth = style.maxWidth = style.width = ret;
          +			ret = computed.width;
          +
          +			// Revert the changed values
          +			style.width = width;
          +			style.minWidth = minWidth;
          +			style.maxWidth = maxWidth;
          +		}
          +	}
          +
          +	return ret !== undefined ?
          +
          +		// Support: IE9-11+
          +		// IE returns zIndex value as an integer.
          +		ret + "" :
          +		ret;
          +}
          +
          +return curCSS;
          +} );
          diff --git a/public/theme/jquery/src/css/defaultDisplay.js b/public/theme/jquery/src/css/defaultDisplay.js
          new file mode 100644
          index 0000000..b1fb577
          --- /dev/null
          +++ b/public/theme/jquery/src/css/defaultDisplay.js
          @@ -0,0 +1,72 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"../manipulation" // appendTo
          +], function( jQuery, document ) {
          +
          +var iframe,
          +	elemdisplay = {
          +
          +		// Support: Firefox
          +		// We have to pre-define these values for FF (#10227)
          +		HTML: "block",
          +		BODY: "block"
          +	};
          +
          +/**
          + * Retrieve the actual display of a element
          + * @param {String} name nodeName of the element
          + * @param {Object} doc Document object
          + */
          +
          +// Called only from within defaultDisplay
          +function actualDisplay( name, doc ) {
          +	var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
          +
          +		display = jQuery.css( elem[ 0 ], "display" );
          +
          +	// We don't have any data stored on the element,
          +	// so use "detach" method as fast way to get rid of the element
          +	elem.detach();
          +
          +	return display;
          +}
          +
          +/**
          + * Try to determine the default display value of an element
          + * @param {String} nodeName
          + */
          +function defaultDisplay( nodeName ) {
          +	var doc = document,
          +		display = elemdisplay[ nodeName ];
          +
          +	if ( !display ) {
          +		display = actualDisplay( nodeName, doc );
          +
          +		// If the simple way fails, read from inside an iframe
          +		if ( display === "none" || !display ) {
          +
          +			// Use the already-created iframe if possible
          +			iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
          +				.appendTo( doc.documentElement );
          +
          +			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
          +			doc = iframe[ 0 ].contentDocument;
          +
          +			// Support: IE
          +			doc.write();
          +			doc.close();
          +
          +			display = actualDisplay( nodeName, doc );
          +			iframe.detach();
          +		}
          +
          +		// Store the correct default display
          +		elemdisplay[ nodeName ] = display;
          +	}
          +
          +	return display;
          +}
          +
          +return defaultDisplay;
          +} );
          diff --git a/public/theme/jquery/src/css/hiddenVisibleSelectors.js b/public/theme/jquery/src/css/hiddenVisibleSelectors.js
          new file mode 100644
          index 0000000..cf0955d
          --- /dev/null
          +++ b/public/theme/jquery/src/css/hiddenVisibleSelectors.js
          @@ -0,0 +1,18 @@
          +define( [
          +	"../core",
          +	"../selector"
          +], function( jQuery ) {
          +
          +jQuery.expr.filters.hidden = function( elem ) {
          +	return !jQuery.expr.filters.visible( elem );
          +};
          +jQuery.expr.filters.visible = function( elem ) {
          +
          +	// Support: Opera <= 12.12
          +	// Opera reports offsetWidths and offsetHeights less than zero on some elements
          +	// Use OR instead of AND as the element is not visible if either is true
          +	// See tickets #10406 and #13132
          +	return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/css/showHide.js b/public/theme/jquery/src/css/showHide.js
          new file mode 100644
          index 0000000..35e15bd
          --- /dev/null
          +++ b/public/theme/jquery/src/css/showHide.js
          @@ -0,0 +1,48 @@
          +define( [
          +	"../data/var/dataPriv"
          +], function( dataPriv ) {
          +
          +function showHide( elements, show ) {
          +	var display, elem,
          +		values = [],
          +		index = 0,
          +		length = elements.length;
          +
          +	// Determine new display value for elements that need to change
          +	for ( ; index < length; index++ ) {
          +		elem = elements[ index ];
          +		if ( !elem.style ) {
          +			continue;
          +		}
          +
          +		display = elem.style.display;
          +		if ( show ) {
          +			if ( display === "none" ) {
          +
          +				// Restore a pre-hide() value if we have one
          +				values[ index ] = dataPriv.get( elem, "display" ) || "";
          +			}
          +		} else {
          +			if ( display !== "none" ) {
          +				values[ index ] = "none";
          +
          +				// Remember the value we're replacing
          +				dataPriv.set( elem, "display", display );
          +			}
          +		}
          +	}
          +
          +	// Set the display of the elements in a second loop
          +	// to avoid the constant reflow
          +	for ( index = 0; index < length; index++ ) {
          +		if ( values[ index ] != null ) {
          +			elements[ index ].style.display = values[ index ];
          +		}
          +	}
          +
          +	return elements;
          +}
          +
          +return showHide;
          +
          +} );
          diff --git a/public/theme/jquery/src/css/support.js b/public/theme/jquery/src/css/support.js
          new file mode 100644
          index 0000000..7e6e513
          --- /dev/null
          +++ b/public/theme/jquery/src/css/support.js
          @@ -0,0 +1,121 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"../var/documentElement",
          +	"../var/support"
          +], function( jQuery, document, documentElement, support ) {
          +
          +( function() {
          +	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
          +		container = document.createElement( "div" ),
          +		div = document.createElement( "div" );
          +
          +	// Finish early in limited (non-browser) environments
          +	if ( !div.style ) {
          +		return;
          +	}
          +
          +	// Support: IE9-11+
          +	// Style of cloned element affects source element cloned (#8908)
          +	div.style.backgroundClip = "content-box";
          +	div.cloneNode( true ).style.backgroundClip = "";
          +	support.clearCloneStyle = div.style.backgroundClip === "content-box";
          +
          +	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
          +		"padding:0;margin-top:1px;position:absolute";
          +	container.appendChild( div );
          +
          +	// Executing both pixelPosition & boxSizingReliable tests require only one layout
          +	// so they're executed at the same time to save the second computation.
          +	function computeStyleTests() {
          +		div.style.cssText =
          +
          +			// Support: Firefox<29, Android 2.3
          +			// Vendor-prefix box-sizing
          +			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
          +			"position:relative;display:block;" +
          +			"margin:auto;border:1px;padding:1px;" +
          +			"top:1%;width:50%";
          +		div.innerHTML = "";
          +		documentElement.appendChild( container );
          +
          +		var divStyle = window.getComputedStyle( div );
          +		pixelPositionVal = divStyle.top !== "1%";
          +		reliableMarginLeftVal = divStyle.marginLeft === "2px";
          +		boxSizingReliableVal = divStyle.width === "4px";
          +
          +		// Support: Android 4.0 - 4.3 only
          +		// Some styles come back with percentage values, even though they shouldn't
          +		div.style.marginRight = "50%";
          +		pixelMarginRightVal = divStyle.marginRight === "4px";
          +
          +		documentElement.removeChild( container );
          +	}
          +
          +	jQuery.extend( support, {
          +		pixelPosition: function() {
          +
          +			// This test is executed only once but we still do memoizing
          +			// since we can use the boxSizingReliable pre-computing.
          +			// No need to check if the test was already performed, though.
          +			computeStyleTests();
          +			return pixelPositionVal;
          +		},
          +		boxSizingReliable: function() {
          +			if ( boxSizingReliableVal == null ) {
          +				computeStyleTests();
          +			}
          +			return boxSizingReliableVal;
          +		},
          +		pixelMarginRight: function() {
          +
          +			// Support: Android 4.0-4.3
          +			// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
          +			// since that compresses better and they're computed together anyway.
          +			if ( boxSizingReliableVal == null ) {
          +				computeStyleTests();
          +			}
          +			return pixelMarginRightVal;
          +		},
          +		reliableMarginLeft: function() {
          +
          +			// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
          +			if ( boxSizingReliableVal == null ) {
          +				computeStyleTests();
          +			}
          +			return reliableMarginLeftVal;
          +		},
          +		reliableMarginRight: function() {
          +
          +			// Support: Android 2.3
          +			// Check if div with explicit width and no margin-right incorrectly
          +			// gets computed margin-right based on width of container. (#3333)
          +			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
          +			// This support function is only executed once so no memoizing is needed.
          +			var ret,
          +				marginDiv = div.appendChild( document.createElement( "div" ) );
          +
          +			// Reset CSS: box-sizing; display; margin; border; padding
          +			marginDiv.style.cssText = div.style.cssText =
          +
          +				// Support: Android 2.3
          +				// Vendor-prefix box-sizing
          +				"-webkit-box-sizing:content-box;box-sizing:content-box;" +
          +				"display:block;margin:0;border:0;padding:0";
          +			marginDiv.style.marginRight = marginDiv.style.width = "0";
          +			div.style.width = "1px";
          +			documentElement.appendChild( container );
          +
          +			ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );
          +
          +			documentElement.removeChild( container );
          +			div.removeChild( marginDiv );
          +
          +			return ret;
          +		}
          +	} );
          +} )();
          +
          +return support;
          +
          +} );
          diff --git a/public/theme/jquery/src/css/var/cssExpand.js b/public/theme/jquery/src/css/var/cssExpand.js
          new file mode 100644
          index 0000000..9f8194d
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/cssExpand.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return [ "Top", "Right", "Bottom", "Left" ];
          +} );
          diff --git a/public/theme/jquery/src/css/var/getStyles.js b/public/theme/jquery/src/css/var/getStyles.js
          new file mode 100644
          index 0000000..02a4b81
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/getStyles.js
          @@ -0,0 +1,15 @@
          +define( function() {
          +	return function( elem ) {
          +
          +		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
          +		// IE throws on elements created in popups
          +		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
          +		var view = elem.ownerDocument.defaultView;
          +
          +		if ( !view || !view.opener ) {
          +			view = window;
          +		}
          +
          +		return view.getComputedStyle( elem );
          +	};
          +} );
          diff --git a/public/theme/jquery/src/css/var/isHidden.js b/public/theme/jquery/src/css/var/isHidden.js
          new file mode 100644
          index 0000000..7997eff
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/isHidden.js
          @@ -0,0 +1,16 @@
          +define( [
          +	"../../core",
          +	"../../selector"
          +
          +	// css is assumed
          +], function( jQuery ) {
          +
          +	return function( elem, el ) {
          +
          +		// isHidden might be called from jQuery#filter function;
          +		// in that case, element will be second argument
          +		elem = el || elem;
          +		return jQuery.css( elem, "display" ) === "none" ||
          +			!jQuery.contains( elem.ownerDocument, elem );
          +	};
          +} );
          diff --git a/public/theme/jquery/src/css/var/rmargin.js b/public/theme/jquery/src/css/var/rmargin.js
          new file mode 100644
          index 0000000..9be2212
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/rmargin.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /^margin/ );
          +} );
          diff --git a/public/theme/jquery/src/css/var/rnumnonpx.js b/public/theme/jquery/src/css/var/rnumnonpx.js
          new file mode 100644
          index 0000000..ed13f0b
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/rnumnonpx.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"../../var/pnum"
          +], function( pnum ) {
          +	return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
          +} );
          diff --git a/public/theme/jquery/src/css/var/swap.js b/public/theme/jquery/src/css/var/swap.js
          new file mode 100644
          index 0000000..b6d3b67
          --- /dev/null
          +++ b/public/theme/jquery/src/css/var/swap.js
          @@ -0,0 +1,24 @@
          +define( function() {
          +
          +// A method for quickly swapping in/out CSS properties to get correct calculations.
          +return function( elem, options, callback, args ) {
          +	var ret, name,
          +		old = {};
          +
          +	// Remember the old values, and insert the new ones
          +	for ( name in options ) {
          +		old[ name ] = elem.style[ name ];
          +		elem.style[ name ] = options[ name ];
          +	}
          +
          +	ret = callback.apply( elem, args || [] );
          +
          +	// Revert the old values
          +	for ( name in options ) {
          +		elem.style[ name ] = old[ name ];
          +	}
          +
          +	return ret;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/data.js b/public/theme/jquery/src/data.js
          new file mode 100644
          index 0000000..b626fda
          --- /dev/null
          +++ b/public/theme/jquery/src/data.js
          @@ -0,0 +1,187 @@
          +define( [
          +	"./core",
          +	"./core/access",
          +	"./data/var/dataPriv",
          +	"./data/var/dataUser"
          +], function( jQuery, access, dataPriv, dataUser ) {
          +
          +//	Implementation Summary
          +//
          +//	1. Enforce API surface and semantic compatibility with 1.9.x branch
          +//	2. Improve the module's maintainability by reducing the storage
          +//		paths to a single mechanism.
          +//	3. Use the same single mechanism to support "private" and "user" data.
          +//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
          +//	5. Avoid exposing implementation details on user objects (eg. expando properties)
          +//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
          +
          +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
          +	rmultiDash = /[A-Z]/g;
          +
          +function dataAttr( elem, key, data ) {
          +	var name;
          +
          +	// If nothing was found internally, try to fetch any
          +	// data from the HTML5 data-* attribute
          +	if ( data === undefined && elem.nodeType === 1 ) {
          +		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
          +		data = elem.getAttribute( name );
          +
          +		if ( typeof data === "string" ) {
          +			try {
          +				data = data === "true" ? true :
          +					data === "false" ? false :
          +					data === "null" ? null :
          +
          +					// Only convert to a number if it doesn't change the string
          +					+data + "" === data ? +data :
          +					rbrace.test( data ) ? jQuery.parseJSON( data ) :
          +					data;
          +			} catch ( e ) {}
          +
          +			// Make sure we set the data so it isn't changed later
          +			dataUser.set( elem, key, data );
          +		} else {
          +			data = undefined;
          +		}
          +	}
          +	return data;
          +}
          +
          +jQuery.extend( {
          +	hasData: function( elem ) {
          +		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
          +	},
          +
          +	data: function( elem, name, data ) {
          +		return dataUser.access( elem, name, data );
          +	},
          +
          +	removeData: function( elem, name ) {
          +		dataUser.remove( elem, name );
          +	},
          +
          +	// TODO: Now that all calls to _data and _removeData have been replaced
          +	// with direct calls to dataPriv methods, these can be deprecated.
          +	_data: function( elem, name, data ) {
          +		return dataPriv.access( elem, name, data );
          +	},
          +
          +	_removeData: function( elem, name ) {
          +		dataPriv.remove( elem, name );
          +	}
          +} );
          +
          +jQuery.fn.extend( {
          +	data: function( key, value ) {
          +		var i, name, data,
          +			elem = this[ 0 ],
          +			attrs = elem && elem.attributes;
          +
          +		// Gets all values
          +		if ( key === undefined ) {
          +			if ( this.length ) {
          +				data = dataUser.get( elem );
          +
          +				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
          +					i = attrs.length;
          +					while ( i-- ) {
          +
          +						// Support: IE11+
          +						// The attrs elements can be null (#14894)
          +						if ( attrs[ i ] ) {
          +							name = attrs[ i ].name;
          +							if ( name.indexOf( "data-" ) === 0 ) {
          +								name = jQuery.camelCase( name.slice( 5 ) );
          +								dataAttr( elem, name, data[ name ] );
          +							}
          +						}
          +					}
          +					dataPriv.set( elem, "hasDataAttrs", true );
          +				}
          +			}
          +
          +			return data;
          +		}
          +
          +		// Sets multiple values
          +		if ( typeof key === "object" ) {
          +			return this.each( function() {
          +				dataUser.set( this, key );
          +			} );
          +		}
          +
          +		return access( this, function( value ) {
          +			var data, camelKey;
          +
          +			// The calling jQuery object (element matches) is not empty
          +			// (and therefore has an element appears at this[ 0 ]) and the
          +			// `value` parameter was not undefined. An empty jQuery object
          +			// will result in `undefined` for elem = this[ 0 ] which will
          +			// throw an exception if an attempt to read a data cache is made.
          +			if ( elem && value === undefined ) {
          +
          +				// Attempt to get data from the cache
          +				// with the key as-is
          +				data = dataUser.get( elem, key ) ||
          +
          +					// Try to find dashed key if it exists (gh-2779)
          +					// This is for 2.2.x only
          +					dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
          +
          +				if ( data !== undefined ) {
          +					return data;
          +				}
          +
          +				camelKey = jQuery.camelCase( key );
          +
          +				// Attempt to get data from the cache
          +				// with the key camelized
          +				data = dataUser.get( elem, camelKey );
          +				if ( data !== undefined ) {
          +					return data;
          +				}
          +
          +				// Attempt to "discover" the data in
          +				// HTML5 custom data-* attrs
          +				data = dataAttr( elem, camelKey, undefined );
          +				if ( data !== undefined ) {
          +					return data;
          +				}
          +
          +				// We tried really hard, but the data doesn't exist.
          +				return;
          +			}
          +
          +			// Set the data...
          +			camelKey = jQuery.camelCase( key );
          +			this.each( function() {
          +
          +				// First, attempt to store a copy or reference of any
          +				// data that might've been store with a camelCased key.
          +				var data = dataUser.get( this, camelKey );
          +
          +				// For HTML5 data-* attribute interop, we have to
          +				// store property names with dashes in a camelCase form.
          +				// This might not apply to all properties...*
          +				dataUser.set( this, camelKey, value );
          +
          +				// *... In the case of properties that might _actually_
          +				// have dashes, we need to also store a copy of that
          +				// unchanged property.
          +				if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
          +					dataUser.set( this, key, value );
          +				}
          +			} );
          +		}, null, value, arguments.length > 1, null, true );
          +	},
          +
          +	removeData: function( key ) {
          +		return this.each( function() {
          +			dataUser.remove( this, key );
          +		} );
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/data/Data.js b/public/theme/jquery/src/data/Data.js
          new file mode 100644
          index 0000000..0e29c1f
          --- /dev/null
          +++ b/public/theme/jquery/src/data/Data.js
          @@ -0,0 +1,200 @@
          +define( [
          +	"../core",
          +	"../var/rnotwhite",
          +	"./var/acceptData"
          +], function( jQuery, rnotwhite, acceptData ) {
          +
          +function Data() {
          +	this.expando = jQuery.expando + Data.uid++;
          +}
          +
          +Data.uid = 1;
          +
          +Data.prototype = {
          +
          +	register: function( owner, initial ) {
          +		var value = initial || {};
          +
          +		// If it is a node unlikely to be stringify-ed or looped over
          +		// use plain assignment
          +		if ( owner.nodeType ) {
          +			owner[ this.expando ] = value;
          +
          +		// Otherwise secure it in a non-enumerable, non-writable property
          +		// configurability must be true to allow the property to be
          +		// deleted with the delete operator
          +		} else {
          +			Object.defineProperty( owner, this.expando, {
          +				value: value,
          +				writable: true,
          +				configurable: true
          +			} );
          +		}
          +		return owner[ this.expando ];
          +	},
          +	cache: function( owner ) {
          +
          +		// We can accept data for non-element nodes in modern browsers,
          +		// but we should not, see #8335.
          +		// Always return an empty object.
          +		if ( !acceptData( owner ) ) {
          +			return {};
          +		}
          +
          +		// Check if the owner object already has a cache
          +		var value = owner[ this.expando ];
          +
          +		// If not, create one
          +		if ( !value ) {
          +			value = {};
          +
          +			// We can accept data for non-element nodes in modern browsers,
          +			// but we should not, see #8335.
          +			// Always return an empty object.
          +			if ( acceptData( owner ) ) {
          +
          +				// If it is a node unlikely to be stringify-ed or looped over
          +				// use plain assignment
          +				if ( owner.nodeType ) {
          +					owner[ this.expando ] = value;
          +
          +				// Otherwise secure it in a non-enumerable property
          +				// configurable must be true to allow the property to be
          +				// deleted when data is removed
          +				} else {
          +					Object.defineProperty( owner, this.expando, {
          +						value: value,
          +						configurable: true
          +					} );
          +				}
          +			}
          +		}
          +
          +		return value;
          +	},
          +	set: function( owner, data, value ) {
          +		var prop,
          +			cache = this.cache( owner );
          +
          +		// Handle: [ owner, key, value ] args
          +		if ( typeof data === "string" ) {
          +			cache[ data ] = value;
          +
          +		// Handle: [ owner, { properties } ] args
          +		} else {
          +
          +			// Copy the properties one-by-one to the cache object
          +			for ( prop in data ) {
          +				cache[ prop ] = data[ prop ];
          +			}
          +		}
          +		return cache;
          +	},
          +	get: function( owner, key ) {
          +		return key === undefined ?
          +			this.cache( owner ) :
          +			owner[ this.expando ] && owner[ this.expando ][ key ];
          +	},
          +	access: function( owner, key, value ) {
          +		var stored;
          +
          +		// In cases where either:
          +		//
          +		//   1. No key was specified
          +		//   2. A string key was specified, but no value provided
          +		//
          +		// Take the "read" path and allow the get method to determine
          +		// which value to return, respectively either:
          +		//
          +		//   1. The entire cache object
          +		//   2. The data stored at the key
          +		//
          +		if ( key === undefined ||
          +				( ( key && typeof key === "string" ) && value === undefined ) ) {
          +
          +			stored = this.get( owner, key );
          +
          +			return stored !== undefined ?
          +				stored : this.get( owner, jQuery.camelCase( key ) );
          +		}
          +
          +		// When the key is not a string, or both a key and value
          +		// are specified, set or extend (existing objects) with either:
          +		//
          +		//   1. An object of properties
          +		//   2. A key and value
          +		//
          +		this.set( owner, key, value );
          +
          +		// Since the "set" path can have two possible entry points
          +		// return the expected data based on which path was taken[*]
          +		return value !== undefined ? value : key;
          +	},
          +	remove: function( owner, key ) {
          +		var i, name, camel,
          +			cache = owner[ this.expando ];
          +
          +		if ( cache === undefined ) {
          +			return;
          +		}
          +
          +		if ( key === undefined ) {
          +			this.register( owner );
          +
          +		} else {
          +
          +			// Support array or space separated string of keys
          +			if ( jQuery.isArray( key ) ) {
          +
          +				// If "name" is an array of keys...
          +				// When data is initially created, via ("key", "val") signature,
          +				// keys will be converted to camelCase.
          +				// Since there is no way to tell _how_ a key was added, remove
          +				// both plain key and camelCase key. #12786
          +				// This will only penalize the array argument path.
          +				name = key.concat( key.map( jQuery.camelCase ) );
          +			} else {
          +				camel = jQuery.camelCase( key );
          +
          +				// Try the string as a key before any manipulation
          +				if ( key in cache ) {
          +					name = [ key, camel ];
          +				} else {
          +
          +					// If a key with the spaces exists, use it.
          +					// Otherwise, create an array by matching non-whitespace
          +					name = camel;
          +					name = name in cache ?
          +						[ name ] : ( name.match( rnotwhite ) || [] );
          +				}
          +			}
          +
          +			i = name.length;
          +
          +			while ( i-- ) {
          +				delete cache[ name[ i ] ];
          +			}
          +		}
          +
          +		// Remove the expando if there's no more data
          +		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
          +
          +			// Support: Chrome <= 35-45+
          +			// Webkit & Blink performance suffers when deleting properties
          +			// from DOM nodes, so set to undefined instead
          +			// https://code.google.com/p/chromium/issues/detail?id=378607
          +			if ( owner.nodeType ) {
          +				owner[ this.expando ] = undefined;
          +			} else {
          +				delete owner[ this.expando ];
          +			}
          +		}
          +	},
          +	hasData: function( owner ) {
          +		var cache = owner[ this.expando ];
          +		return cache !== undefined && !jQuery.isEmptyObject( cache );
          +	}
          +};
          +
          +return Data;
          +} );
          diff --git a/public/theme/jquery/src/data/var/acceptData.js b/public/theme/jquery/src/data/var/acceptData.js
          new file mode 100644
          index 0000000..6e15af1
          --- /dev/null
          +++ b/public/theme/jquery/src/data/var/acceptData.js
          @@ -0,0 +1,18 @@
          +define( function() {
          +
          +/**
          + * Determines whether an object can have data
          + */
          +return function( owner ) {
          +
          +	// Accepts only:
          +	//  - Node
          +	//    - Node.ELEMENT_NODE
          +	//    - Node.DOCUMENT_NODE
          +	//  - Object
          +	//    - Any
          +	/* jshint -W018 */
          +	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/data/var/dataPriv.js b/public/theme/jquery/src/data/var/dataPriv.js
          new file mode 100644
          index 0000000..9a1343c
          --- /dev/null
          +++ b/public/theme/jquery/src/data/var/dataPriv.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"../Data"
          +], function( Data ) {
          +	return new Data();
          +} );
          diff --git a/public/theme/jquery/src/data/var/dataUser.js b/public/theme/jquery/src/data/var/dataUser.js
          new file mode 100644
          index 0000000..9a1343c
          --- /dev/null
          +++ b/public/theme/jquery/src/data/var/dataUser.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"../Data"
          +], function( Data ) {
          +	return new Data();
          +} );
          diff --git a/public/theme/jquery/src/deferred.js b/public/theme/jquery/src/deferred.js
          new file mode 100644
          index 0000000..d2cd608
          --- /dev/null
          +++ b/public/theme/jquery/src/deferred.js
          @@ -0,0 +1,158 @@
          +define( [
          +	"./core",
          +	"./var/slice",
          +	"./callbacks"
          +], function( jQuery, slice ) {
          +
          +jQuery.extend( {
          +
          +	Deferred: function( func ) {
          +		var tuples = [
          +
          +				// action, add listener, listener list, final state
          +				[ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
          +				[ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
          +				[ "notify", "progress", jQuery.Callbacks( "memory" ) ]
          +			],
          +			state = "pending",
          +			promise = {
          +				state: function() {
          +					return state;
          +				},
          +				always: function() {
          +					deferred.done( arguments ).fail( arguments );
          +					return this;
          +				},
          +				then: function( /* fnDone, fnFail, fnProgress */ ) {
          +					var fns = arguments;
          +					return jQuery.Deferred( function( newDefer ) {
          +						jQuery.each( tuples, function( i, tuple ) {
          +							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
          +
          +							// deferred[ done | fail | progress ] for forwarding actions to newDefer
          +							deferred[ tuple[ 1 ] ]( function() {
          +								var returned = fn && fn.apply( this, arguments );
          +								if ( returned && jQuery.isFunction( returned.promise ) ) {
          +									returned.promise()
          +										.progress( newDefer.notify )
          +										.done( newDefer.resolve )
          +										.fail( newDefer.reject );
          +								} else {
          +									newDefer[ tuple[ 0 ] + "With" ](
          +										this === promise ? newDefer.promise() : this,
          +										fn ? [ returned ] : arguments
          +									);
          +								}
          +							} );
          +						} );
          +						fns = null;
          +					} ).promise();
          +				},
          +
          +				// Get a promise for this deferred
          +				// If obj is provided, the promise aspect is added to the object
          +				promise: function( obj ) {
          +					return obj != null ? jQuery.extend( obj, promise ) : promise;
          +				}
          +			},
          +			deferred = {};
          +
          +		// Keep pipe for back-compat
          +		promise.pipe = promise.then;
          +
          +		// Add list-specific methods
          +		jQuery.each( tuples, function( i, tuple ) {
          +			var list = tuple[ 2 ],
          +				stateString = tuple[ 3 ];
          +
          +			// promise[ done | fail | progress ] = list.add
          +			promise[ tuple[ 1 ] ] = list.add;
          +
          +			// Handle state
          +			if ( stateString ) {
          +				list.add( function() {
          +
          +					// state = [ resolved | rejected ]
          +					state = stateString;
          +
          +				// [ reject_list | resolve_list ].disable; progress_list.lock
          +				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
          +			}
          +
          +			// deferred[ resolve | reject | notify ]
          +			deferred[ tuple[ 0 ] ] = function() {
          +				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
          +				return this;
          +			};
          +			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
          +		} );
          +
          +		// Make the deferred a promise
          +		promise.promise( deferred );
          +
          +		// Call given func if any
          +		if ( func ) {
          +			func.call( deferred, deferred );
          +		}
          +
          +		// All done!
          +		return deferred;
          +	},
          +
          +	// Deferred helper
          +	when: function( subordinate /* , ..., subordinateN */ ) {
          +		var i = 0,
          +			resolveValues = slice.call( arguments ),
          +			length = resolveValues.length,
          +
          +			// the count of uncompleted subordinates
          +			remaining = length !== 1 ||
          +				( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
          +
          +			// the master Deferred.
          +			// If resolveValues consist of only a single Deferred, just use that.
          +			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
          +
          +			// Update function for both resolve and progress values
          +			updateFunc = function( i, contexts, values ) {
          +				return function( value ) {
          +					contexts[ i ] = this;
          +					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
          +					if ( values === progressValues ) {
          +						deferred.notifyWith( contexts, values );
          +					} else if ( !( --remaining ) ) {
          +						deferred.resolveWith( contexts, values );
          +					}
          +				};
          +			},
          +
          +			progressValues, progressContexts, resolveContexts;
          +
          +		// Add listeners to Deferred subordinates; treat others as resolved
          +		if ( length > 1 ) {
          +			progressValues = new Array( length );
          +			progressContexts = new Array( length );
          +			resolveContexts = new Array( length );
          +			for ( ; i < length; i++ ) {
          +				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
          +					resolveValues[ i ].promise()
          +						.progress( updateFunc( i, progressContexts, progressValues ) )
          +						.done( updateFunc( i, resolveContexts, resolveValues ) )
          +						.fail( deferred.reject );
          +				} else {
          +					--remaining;
          +				}
          +			}
          +		}
          +
          +		// If we're not waiting on anything, resolve the master
          +		if ( !remaining ) {
          +			deferred.resolveWith( resolveContexts, resolveValues );
          +		}
          +
          +		return deferred.promise();
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/deprecated.js b/public/theme/jquery/src/deprecated.js
          new file mode 100644
          index 0000000..c829890
          --- /dev/null
          +++ b/public/theme/jquery/src/deprecated.js
          @@ -0,0 +1,32 @@
          +define( [
          +	"./core"
          +], function( jQuery ) {
          +
          +jQuery.fn.extend( {
          +
          +	bind: function( types, data, fn ) {
          +		return this.on( types, null, data, fn );
          +	},
          +	unbind: function( types, fn ) {
          +		return this.off( types, null, fn );
          +	},
          +
          +	delegate: function( selector, types, data, fn ) {
          +		return this.on( types, selector, data, fn );
          +	},
          +	undelegate: function( selector, types, fn ) {
          +
          +		// ( namespace ) or ( selector, types [, fn] )
          +		return arguments.length === 1 ?
          +			this.off( selector, "**" ) :
          +			this.off( types, selector || "**", fn );
          +	},
          +	size: function() {
          +		return this.length;
          +	}
          +} );
          +
          +jQuery.fn.andSelf = jQuery.fn.addBack;
          +
          +} );
          +
          diff --git a/public/theme/jquery/src/dimensions.js b/public/theme/jquery/src/dimensions.js
          new file mode 100644
          index 0000000..30b55fb
          --- /dev/null
          +++ b/public/theme/jquery/src/dimensions.js
          @@ -0,0 +1,54 @@
          +define( [
          +	"./core",
          +	"./core/access",
          +	"./css"
          +], function( jQuery, access ) {
          +
          +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
          +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
          +	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
          +		function( defaultExtra, funcName ) {
          +
          +		// Margin is only for outerHeight, outerWidth
          +		jQuery.fn[ funcName ] = function( margin, value ) {
          +			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
          +				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
          +
          +			return access( this, function( elem, type, value ) {
          +				var doc;
          +
          +				if ( jQuery.isWindow( elem ) ) {
          +
          +					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
          +					// isn't a whole lot we can do. See pull request at this URL for discussion:
          +					// https://github.com/jquery/jquery/pull/764
          +					return elem.document.documentElement[ "client" + name ];
          +				}
          +
          +				// Get document width or height
          +				if ( elem.nodeType === 9 ) {
          +					doc = elem.documentElement;
          +
          +					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
          +					// whichever is greatest
          +					return Math.max(
          +						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
          +						elem.body[ "offset" + name ], doc[ "offset" + name ],
          +						doc[ "client" + name ]
          +					);
          +				}
          +
          +				return value === undefined ?
          +
          +					// Get width or height on the element, requesting but not forcing parseFloat
          +					jQuery.css( elem, type, extra ) :
          +
          +					// Set width or height on the element
          +					jQuery.style( elem, type, value, extra );
          +			}, type, chainable ? margin : undefined, chainable, null );
          +		};
          +	} );
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/effects.js b/public/theme/jquery/src/effects.js
          new file mode 100644
          index 0000000..178fa42
          --- /dev/null
          +++ b/public/theme/jquery/src/effects.js
          @@ -0,0 +1,629 @@
          +define( [
          +	"./core",
          +	"./var/document",
          +	"./var/rcssNum",
          +	"./css/var/cssExpand",
          +	"./var/rnotwhite",
          +	"./css/var/isHidden",
          +	"./css/adjustCSS",
          +	"./css/defaultDisplay",
          +	"./data/var/dataPriv",
          +
          +	"./core/init",
          +	"./effects/Tween",
          +	"./queue",
          +	"./css",
          +	"./deferred",
          +	"./traversing"
          +], function( jQuery, document, rcssNum, cssExpand, rnotwhite,
          +	isHidden, adjustCSS, defaultDisplay, dataPriv ) {
          +
          +var
          +	fxNow, timerId,
          +	rfxtypes = /^(?:toggle|show|hide)$/,
          +	rrun = /queueHooks$/;
          +
          +// Animations created synchronously will run synchronously
          +function createFxNow() {
          +	window.setTimeout( function() {
          +		fxNow = undefined;
          +	} );
          +	return ( fxNow = jQuery.now() );
          +}
          +
          +// Generate parameters to create a standard animation
          +function genFx( type, includeWidth ) {
          +	var which,
          +		i = 0,
          +		attrs = { height: type };
          +
          +	// If we include width, step value is 1 to do all cssExpand values,
          +	// otherwise step value is 2 to skip over Left and Right
          +	includeWidth = includeWidth ? 1 : 0;
          +	for ( ; i < 4 ; i += 2 - includeWidth ) {
          +		which = cssExpand[ i ];
          +		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
          +	}
          +
          +	if ( includeWidth ) {
          +		attrs.opacity = attrs.width = type;
          +	}
          +
          +	return attrs;
          +}
          +
          +function createTween( value, prop, animation ) {
          +	var tween,
          +		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
          +		index = 0,
          +		length = collection.length;
          +	for ( ; index < length; index++ ) {
          +		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
          +
          +			// We're done with this property
          +			return tween;
          +		}
          +	}
          +}
          +
          +function defaultPrefilter( elem, props, opts ) {
          +	/* jshint validthis: true */
          +	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
          +		anim = this,
          +		orig = {},
          +		style = elem.style,
          +		hidden = elem.nodeType && isHidden( elem ),
          +		dataShow = dataPriv.get( elem, "fxshow" );
          +
          +	// Handle queue: false promises
          +	if ( !opts.queue ) {
          +		hooks = jQuery._queueHooks( elem, "fx" );
          +		if ( hooks.unqueued == null ) {
          +			hooks.unqueued = 0;
          +			oldfire = hooks.empty.fire;
          +			hooks.empty.fire = function() {
          +				if ( !hooks.unqueued ) {
          +					oldfire();
          +				}
          +			};
          +		}
          +		hooks.unqueued++;
          +
          +		anim.always( function() {
          +
          +			// Ensure the complete handler is called before this completes
          +			anim.always( function() {
          +				hooks.unqueued--;
          +				if ( !jQuery.queue( elem, "fx" ).length ) {
          +					hooks.empty.fire();
          +				}
          +			} );
          +		} );
          +	}
          +
          +	// Height/width overflow pass
          +	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
          +
          +		// Make sure that nothing sneaks out
          +		// Record all 3 overflow attributes because IE9-10 do not
          +		// change the overflow attribute when overflowX and
          +		// overflowY are set to the same value
          +		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
          +
          +		// Set display property to inline-block for height/width
          +		// animations on inline elements that are having width/height animated
          +		display = jQuery.css( elem, "display" );
          +
          +		// Test default display if display is currently "none"
          +		checkDisplay = display === "none" ?
          +			dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
          +
          +		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
          +			style.display = "inline-block";
          +		}
          +	}
          +
          +	if ( opts.overflow ) {
          +		style.overflow = "hidden";
          +		anim.always( function() {
          +			style.overflow = opts.overflow[ 0 ];
          +			style.overflowX = opts.overflow[ 1 ];
          +			style.overflowY = opts.overflow[ 2 ];
          +		} );
          +	}
          +
          +	// show/hide pass
          +	for ( prop in props ) {
          +		value = props[ prop ];
          +		if ( rfxtypes.exec( value ) ) {
          +			delete props[ prop ];
          +			toggle = toggle || value === "toggle";
          +			if ( value === ( hidden ? "hide" : "show" ) ) {
          +
          +				// If there is dataShow left over from a stopped hide or show
          +				// and we are going to proceed with show, we should pretend to be hidden
          +				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
          +					hidden = true;
          +				} else {
          +					continue;
          +				}
          +			}
          +			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
          +
          +		// Any non-fx value stops us from restoring the original display value
          +		} else {
          +			display = undefined;
          +		}
          +	}
          +
          +	if ( !jQuery.isEmptyObject( orig ) ) {
          +		if ( dataShow ) {
          +			if ( "hidden" in dataShow ) {
          +				hidden = dataShow.hidden;
          +			}
          +		} else {
          +			dataShow = dataPriv.access( elem, "fxshow", {} );
          +		}
          +
          +		// Store state if its toggle - enables .stop().toggle() to "reverse"
          +		if ( toggle ) {
          +			dataShow.hidden = !hidden;
          +		}
          +		if ( hidden ) {
          +			jQuery( elem ).show();
          +		} else {
          +			anim.done( function() {
          +				jQuery( elem ).hide();
          +			} );
          +		}
          +		anim.done( function() {
          +			var prop;
          +
          +			dataPriv.remove( elem, "fxshow" );
          +			for ( prop in orig ) {
          +				jQuery.style( elem, prop, orig[ prop ] );
          +			}
          +		} );
          +		for ( prop in orig ) {
          +			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
          +
          +			if ( !( prop in dataShow ) ) {
          +				dataShow[ prop ] = tween.start;
          +				if ( hidden ) {
          +					tween.end = tween.start;
          +					tween.start = prop === "width" || prop === "height" ? 1 : 0;
          +				}
          +			}
          +		}
          +
          +	// If this is a noop like .hide().hide(), restore an overwritten display value
          +	} else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
          +		style.display = display;
          +	}
          +}
          +
          +function propFilter( props, specialEasing ) {
          +	var index, name, easing, value, hooks;
          +
          +	// camelCase, specialEasing and expand cssHook pass
          +	for ( index in props ) {
          +		name = jQuery.camelCase( index );
          +		easing = specialEasing[ name ];
          +		value = props[ index ];
          +		if ( jQuery.isArray( value ) ) {
          +			easing = value[ 1 ];
          +			value = props[ index ] = value[ 0 ];
          +		}
          +
          +		if ( index !== name ) {
          +			props[ name ] = value;
          +			delete props[ index ];
          +		}
          +
          +		hooks = jQuery.cssHooks[ name ];
          +		if ( hooks && "expand" in hooks ) {
          +			value = hooks.expand( value );
          +			delete props[ name ];
          +
          +			// Not quite $.extend, this won't overwrite existing keys.
          +			// Reusing 'index' because we have the correct "name"
          +			for ( index in value ) {
          +				if ( !( index in props ) ) {
          +					props[ index ] = value[ index ];
          +					specialEasing[ index ] = easing;
          +				}
          +			}
          +		} else {
          +			specialEasing[ name ] = easing;
          +		}
          +	}
          +}
          +
          +function Animation( elem, properties, options ) {
          +	var result,
          +		stopped,
          +		index = 0,
          +		length = Animation.prefilters.length,
          +		deferred = jQuery.Deferred().always( function() {
          +
          +			// Don't match elem in the :animated selector
          +			delete tick.elem;
          +		} ),
          +		tick = function() {
          +			if ( stopped ) {
          +				return false;
          +			}
          +			var currentTime = fxNow || createFxNow(),
          +				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
          +
          +				// Support: Android 2.3
          +				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
          +				temp = remaining / animation.duration || 0,
          +				percent = 1 - temp,
          +				index = 0,
          +				length = animation.tweens.length;
          +
          +			for ( ; index < length ; index++ ) {
          +				animation.tweens[ index ].run( percent );
          +			}
          +
          +			deferred.notifyWith( elem, [ animation, percent, remaining ] );
          +
          +			if ( percent < 1 && length ) {
          +				return remaining;
          +			} else {
          +				deferred.resolveWith( elem, [ animation ] );
          +				return false;
          +			}
          +		},
          +		animation = deferred.promise( {
          +			elem: elem,
          +			props: jQuery.extend( {}, properties ),
          +			opts: jQuery.extend( true, {
          +				specialEasing: {},
          +				easing: jQuery.easing._default
          +			}, options ),
          +			originalProperties: properties,
          +			originalOptions: options,
          +			startTime: fxNow || createFxNow(),
          +			duration: options.duration,
          +			tweens: [],
          +			createTween: function( prop, end ) {
          +				var tween = jQuery.Tween( elem, animation.opts, prop, end,
          +						animation.opts.specialEasing[ prop ] || animation.opts.easing );
          +				animation.tweens.push( tween );
          +				return tween;
          +			},
          +			stop: function( gotoEnd ) {
          +				var index = 0,
          +
          +					// If we are going to the end, we want to run all the tweens
          +					// otherwise we skip this part
          +					length = gotoEnd ? animation.tweens.length : 0;
          +				if ( stopped ) {
          +					return this;
          +				}
          +				stopped = true;
          +				for ( ; index < length ; index++ ) {
          +					animation.tweens[ index ].run( 1 );
          +				}
          +
          +				// Resolve when we played the last frame; otherwise, reject
          +				if ( gotoEnd ) {
          +					deferred.notifyWith( elem, [ animation, 1, 0 ] );
          +					deferred.resolveWith( elem, [ animation, gotoEnd ] );
          +				} else {
          +					deferred.rejectWith( elem, [ animation, gotoEnd ] );
          +				}
          +				return this;
          +			}
          +		} ),
          +		props = animation.props;
          +
          +	propFilter( props, animation.opts.specialEasing );
          +
          +	for ( ; index < length ; index++ ) {
          +		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
          +		if ( result ) {
          +			if ( jQuery.isFunction( result.stop ) ) {
          +				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
          +					jQuery.proxy( result.stop, result );
          +			}
          +			return result;
          +		}
          +	}
          +
          +	jQuery.map( props, createTween, animation );
          +
          +	if ( jQuery.isFunction( animation.opts.start ) ) {
          +		animation.opts.start.call( elem, animation );
          +	}
          +
          +	jQuery.fx.timer(
          +		jQuery.extend( tick, {
          +			elem: elem,
          +			anim: animation,
          +			queue: animation.opts.queue
          +		} )
          +	);
          +
          +	// attach callbacks from options
          +	return animation.progress( animation.opts.progress )
          +		.done( animation.opts.done, animation.opts.complete )
          +		.fail( animation.opts.fail )
          +		.always( animation.opts.always );
          +}
          +
          +jQuery.Animation = jQuery.extend( Animation, {
          +	tweeners: {
          +		"*": [ function( prop, value ) {
          +			var tween = this.createTween( prop, value );
          +			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
          +			return tween;
          +		} ]
          +	},
          +
          +	tweener: function( props, callback ) {
          +		if ( jQuery.isFunction( props ) ) {
          +			callback = props;
          +			props = [ "*" ];
          +		} else {
          +			props = props.match( rnotwhite );
          +		}
          +
          +		var prop,
          +			index = 0,
          +			length = props.length;
          +
          +		for ( ; index < length ; index++ ) {
          +			prop = props[ index ];
          +			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
          +			Animation.tweeners[ prop ].unshift( callback );
          +		}
          +	},
          +
          +	prefilters: [ defaultPrefilter ],
          +
          +	prefilter: function( callback, prepend ) {
          +		if ( prepend ) {
          +			Animation.prefilters.unshift( callback );
          +		} else {
          +			Animation.prefilters.push( callback );
          +		}
          +	}
          +} );
          +
          +jQuery.speed = function( speed, easing, fn ) {
          +	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
          +		complete: fn || !fn && easing ||
          +			jQuery.isFunction( speed ) && speed,
          +		duration: speed,
          +		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
          +	};
          +
          +	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
          +		opt.duration : opt.duration in jQuery.fx.speeds ?
          +			jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
          +
          +	// Normalize opt.queue - true/undefined/null -> "fx"
          +	if ( opt.queue == null || opt.queue === true ) {
          +		opt.queue = "fx";
          +	}
          +
          +	// Queueing
          +	opt.old = opt.complete;
          +
          +	opt.complete = function() {
          +		if ( jQuery.isFunction( opt.old ) ) {
          +			opt.old.call( this );
          +		}
          +
          +		if ( opt.queue ) {
          +			jQuery.dequeue( this, opt.queue );
          +		}
          +	};
          +
          +	return opt;
          +};
          +
          +jQuery.fn.extend( {
          +	fadeTo: function( speed, to, easing, callback ) {
          +
          +		// Show any hidden elements after setting opacity to 0
          +		return this.filter( isHidden ).css( "opacity", 0 ).show()
          +
          +			// Animate to the value specified
          +			.end().animate( { opacity: to }, speed, easing, callback );
          +	},
          +	animate: function( prop, speed, easing, callback ) {
          +		var empty = jQuery.isEmptyObject( prop ),
          +			optall = jQuery.speed( speed, easing, callback ),
          +			doAnimation = function() {
          +
          +				// Operate on a copy of prop so per-property easing won't be lost
          +				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
          +
          +				// Empty animations, or finishing resolves immediately
          +				if ( empty || dataPriv.get( this, "finish" ) ) {
          +					anim.stop( true );
          +				}
          +			};
          +			doAnimation.finish = doAnimation;
          +
          +		return empty || optall.queue === false ?
          +			this.each( doAnimation ) :
          +			this.queue( optall.queue, doAnimation );
          +	},
          +	stop: function( type, clearQueue, gotoEnd ) {
          +		var stopQueue = function( hooks ) {
          +			var stop = hooks.stop;
          +			delete hooks.stop;
          +			stop( gotoEnd );
          +		};
          +
          +		if ( typeof type !== "string" ) {
          +			gotoEnd = clearQueue;
          +			clearQueue = type;
          +			type = undefined;
          +		}
          +		if ( clearQueue && type !== false ) {
          +			this.queue( type || "fx", [] );
          +		}
          +
          +		return this.each( function() {
          +			var dequeue = true,
          +				index = type != null && type + "queueHooks",
          +				timers = jQuery.timers,
          +				data = dataPriv.get( this );
          +
          +			if ( index ) {
          +				if ( data[ index ] && data[ index ].stop ) {
          +					stopQueue( data[ index ] );
          +				}
          +			} else {
          +				for ( index in data ) {
          +					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
          +						stopQueue( data[ index ] );
          +					}
          +				}
          +			}
          +
          +			for ( index = timers.length; index--; ) {
          +				if ( timers[ index ].elem === this &&
          +					( type == null || timers[ index ].queue === type ) ) {
          +
          +					timers[ index ].anim.stop( gotoEnd );
          +					dequeue = false;
          +					timers.splice( index, 1 );
          +				}
          +			}
          +
          +			// Start the next in the queue if the last step wasn't forced.
          +			// Timers currently will call their complete callbacks, which
          +			// will dequeue but only if they were gotoEnd.
          +			if ( dequeue || !gotoEnd ) {
          +				jQuery.dequeue( this, type );
          +			}
          +		} );
          +	},
          +	finish: function( type ) {
          +		if ( type !== false ) {
          +			type = type || "fx";
          +		}
          +		return this.each( function() {
          +			var index,
          +				data = dataPriv.get( this ),
          +				queue = data[ type + "queue" ],
          +				hooks = data[ type + "queueHooks" ],
          +				timers = jQuery.timers,
          +				length = queue ? queue.length : 0;
          +
          +			// Enable finishing flag on private data
          +			data.finish = true;
          +
          +			// Empty the queue first
          +			jQuery.queue( this, type, [] );
          +
          +			if ( hooks && hooks.stop ) {
          +				hooks.stop.call( this, true );
          +			}
          +
          +			// Look for any active animations, and finish them
          +			for ( index = timers.length; index--; ) {
          +				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
          +					timers[ index ].anim.stop( true );
          +					timers.splice( index, 1 );
          +				}
          +			}
          +
          +			// Look for any animations in the old queue and finish them
          +			for ( index = 0; index < length; index++ ) {
          +				if ( queue[ index ] && queue[ index ].finish ) {
          +					queue[ index ].finish.call( this );
          +				}
          +			}
          +
          +			// Turn off finishing flag
          +			delete data.finish;
          +		} );
          +	}
          +} );
          +
          +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
          +	var cssFn = jQuery.fn[ name ];
          +	jQuery.fn[ name ] = function( speed, easing, callback ) {
          +		return speed == null || typeof speed === "boolean" ?
          +			cssFn.apply( this, arguments ) :
          +			this.animate( genFx( name, true ), speed, easing, callback );
          +	};
          +} );
          +
          +// Generate shortcuts for custom animations
          +jQuery.each( {
          +	slideDown: genFx( "show" ),
          +	slideUp: genFx( "hide" ),
          +	slideToggle: genFx( "toggle" ),
          +	fadeIn: { opacity: "show" },
          +	fadeOut: { opacity: "hide" },
          +	fadeToggle: { opacity: "toggle" }
          +}, function( name, props ) {
          +	jQuery.fn[ name ] = function( speed, easing, callback ) {
          +		return this.animate( props, speed, easing, callback );
          +	};
          +} );
          +
          +jQuery.timers = [];
          +jQuery.fx.tick = function() {
          +	var timer,
          +		i = 0,
          +		timers = jQuery.timers;
          +
          +	fxNow = jQuery.now();
          +
          +	for ( ; i < timers.length; i++ ) {
          +		timer = timers[ i ];
          +
          +		// Checks the timer has not already been removed
          +		if ( !timer() && timers[ i ] === timer ) {
          +			timers.splice( i--, 1 );
          +		}
          +	}
          +
          +	if ( !timers.length ) {
          +		jQuery.fx.stop();
          +	}
          +	fxNow = undefined;
          +};
          +
          +jQuery.fx.timer = function( timer ) {
          +	jQuery.timers.push( timer );
          +	if ( timer() ) {
          +		jQuery.fx.start();
          +	} else {
          +		jQuery.timers.pop();
          +	}
          +};
          +
          +jQuery.fx.interval = 13;
          +jQuery.fx.start = function() {
          +	if ( !timerId ) {
          +		timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
          +	}
          +};
          +
          +jQuery.fx.stop = function() {
          +	window.clearInterval( timerId );
          +
          +	timerId = null;
          +};
          +
          +jQuery.fx.speeds = {
          +	slow: 600,
          +	fast: 200,
          +
          +	// Default speed
          +	_default: 400
          +};
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/effects/Tween.js b/public/theme/jquery/src/effects/Tween.js
          new file mode 100644
          index 0000000..d26ddd9
          --- /dev/null
          +++ b/public/theme/jquery/src/effects/Tween.js
          @@ -0,0 +1,121 @@
          +define( [
          +	"../core",
          +	"../css"
          +], function( jQuery ) {
          +
          +function Tween( elem, options, prop, end, easing ) {
          +	return new Tween.prototype.init( elem, options, prop, end, easing );
          +}
          +jQuery.Tween = Tween;
          +
          +Tween.prototype = {
          +	constructor: Tween,
          +	init: function( elem, options, prop, end, easing, unit ) {
          +		this.elem = elem;
          +		this.prop = prop;
          +		this.easing = easing || jQuery.easing._default;
          +		this.options = options;
          +		this.start = this.now = this.cur();
          +		this.end = end;
          +		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
          +	},
          +	cur: function() {
          +		var hooks = Tween.propHooks[ this.prop ];
          +
          +		return hooks && hooks.get ?
          +			hooks.get( this ) :
          +			Tween.propHooks._default.get( this );
          +	},
          +	run: function( percent ) {
          +		var eased,
          +			hooks = Tween.propHooks[ this.prop ];
          +
          +		if ( this.options.duration ) {
          +			this.pos = eased = jQuery.easing[ this.easing ](
          +				percent, this.options.duration * percent, 0, 1, this.options.duration
          +			);
          +		} else {
          +			this.pos = eased = percent;
          +		}
          +		this.now = ( this.end - this.start ) * eased + this.start;
          +
          +		if ( this.options.step ) {
          +			this.options.step.call( this.elem, this.now, this );
          +		}
          +
          +		if ( hooks && hooks.set ) {
          +			hooks.set( this );
          +		} else {
          +			Tween.propHooks._default.set( this );
          +		}
          +		return this;
          +	}
          +};
          +
          +Tween.prototype.init.prototype = Tween.prototype;
          +
          +Tween.propHooks = {
          +	_default: {
          +		get: function( tween ) {
          +			var result;
          +
          +			// Use a property on the element directly when it is not a DOM element,
          +			// or when there is no matching style property that exists.
          +			if ( tween.elem.nodeType !== 1 ||
          +				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
          +				return tween.elem[ tween.prop ];
          +			}
          +
          +			// Passing an empty string as a 3rd parameter to .css will automatically
          +			// attempt a parseFloat and fallback to a string if the parse fails.
          +			// Simple values such as "10px" are parsed to Float;
          +			// complex values such as "rotate(1rad)" are returned as-is.
          +			result = jQuery.css( tween.elem, tween.prop, "" );
          +
          +			// Empty strings, null, undefined and "auto" are converted to 0.
          +			return !result || result === "auto" ? 0 : result;
          +		},
          +		set: function( tween ) {
          +
          +			// Use step hook for back compat.
          +			// Use cssHook if its there.
          +			// Use .style if available and use plain properties where available.
          +			if ( jQuery.fx.step[ tween.prop ] ) {
          +				jQuery.fx.step[ tween.prop ]( tween );
          +			} else if ( tween.elem.nodeType === 1 &&
          +				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
          +					jQuery.cssHooks[ tween.prop ] ) ) {
          +				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
          +			} else {
          +				tween.elem[ tween.prop ] = tween.now;
          +			}
          +		}
          +	}
          +};
          +
          +// Support: IE9
          +// Panic based approach to setting things on disconnected nodes
          +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
          +	set: function( tween ) {
          +		if ( tween.elem.nodeType && tween.elem.parentNode ) {
          +			tween.elem[ tween.prop ] = tween.now;
          +		}
          +	}
          +};
          +
          +jQuery.easing = {
          +	linear: function( p ) {
          +		return p;
          +	},
          +	swing: function( p ) {
          +		return 0.5 - Math.cos( p * Math.PI ) / 2;
          +	},
          +	_default: "swing"
          +};
          +
          +jQuery.fx = Tween.prototype.init;
          +
          +// Back Compat <1.8 extension point
          +jQuery.fx.step = {};
          +
          +} );
          diff --git a/public/theme/jquery/src/effects/animatedSelector.js b/public/theme/jquery/src/effects/animatedSelector.js
          new file mode 100644
          index 0000000..d84c9c7
          --- /dev/null
          +++ b/public/theme/jquery/src/effects/animatedSelector.js
          @@ -0,0 +1,13 @@
          +define( [
          +	"../core",
          +	"../selector",
          +	"../effects"
          +], function( jQuery ) {
          +
          +jQuery.expr.filters.animated = function( elem ) {
          +	return jQuery.grep( jQuery.timers, function( fn ) {
          +		return elem === fn.elem;
          +	} ).length;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/event.js b/public/theme/jquery/src/event.js
          new file mode 100644
          index 0000000..9ebbe2f
          --- /dev/null
          +++ b/public/theme/jquery/src/event.js
          @@ -0,0 +1,711 @@
          +define( [
          +	"./core",
          +	"./var/document",
          +	"./var/rnotwhite",
          +	"./var/slice",
          +	"./data/var/dataPriv",
          +
          +	"./core/init",
          +	"./selector"
          +], function( jQuery, document, rnotwhite, slice, dataPriv ) {
          +
          +var
          +	rkeyEvent = /^key/,
          +	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
          +	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
          +
          +function returnTrue() {
          +	return true;
          +}
          +
          +function returnFalse() {
          +	return false;
          +}
          +
          +// Support: IE9
          +// See #13393 for more info
          +function safeActiveElement() {
          +	try {
          +		return document.activeElement;
          +	} catch ( err ) { }
          +}
          +
          +function on( elem, types, selector, data, fn, one ) {
          +	var origFn, type;
          +
          +	// Types can be a map of types/handlers
          +	if ( typeof types === "object" ) {
          +
          +		// ( types-Object, selector, data )
          +		if ( typeof selector !== "string" ) {
          +
          +			// ( types-Object, data )
          +			data = data || selector;
          +			selector = undefined;
          +		}
          +		for ( type in types ) {
          +			on( elem, type, selector, data, types[ type ], one );
          +		}
          +		return elem;
          +	}
          +
          +	if ( data == null && fn == null ) {
          +
          +		// ( types, fn )
          +		fn = selector;
          +		data = selector = undefined;
          +	} else if ( fn == null ) {
          +		if ( typeof selector === "string" ) {
          +
          +			// ( types, selector, fn )
          +			fn = data;
          +			data = undefined;
          +		} else {
          +
          +			// ( types, data, fn )
          +			fn = data;
          +			data = selector;
          +			selector = undefined;
          +		}
          +	}
          +	if ( fn === false ) {
          +		fn = returnFalse;
          +	} else if ( !fn ) {
          +		return elem;
          +	}
          +
          +	if ( one === 1 ) {
          +		origFn = fn;
          +		fn = function( event ) {
          +
          +			// Can use an empty set, since event contains the info
          +			jQuery().off( event );
          +			return origFn.apply( this, arguments );
          +		};
          +
          +		// Use same guid so caller can remove using origFn
          +		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
          +	}
          +	return elem.each( function() {
          +		jQuery.event.add( this, types, fn, data, selector );
          +	} );
          +}
          +
          +/*
          + * Helper functions for managing events -- not part of the public interface.
          + * Props to Dean Edwards' addEvent library for many of the ideas.
          + */
          +jQuery.event = {
          +
          +	global: {},
          +
          +	add: function( elem, types, handler, data, selector ) {
          +
          +		var handleObjIn, eventHandle, tmp,
          +			events, t, handleObj,
          +			special, handlers, type, namespaces, origType,
          +			elemData = dataPriv.get( elem );
          +
          +		// Don't attach events to noData or text/comment nodes (but allow plain objects)
          +		if ( !elemData ) {
          +			return;
          +		}
          +
          +		// Caller can pass in an object of custom data in lieu of the handler
          +		if ( handler.handler ) {
          +			handleObjIn = handler;
          +			handler = handleObjIn.handler;
          +			selector = handleObjIn.selector;
          +		}
          +
          +		// Make sure that the handler has a unique ID, used to find/remove it later
          +		if ( !handler.guid ) {
          +			handler.guid = jQuery.guid++;
          +		}
          +
          +		// Init the element's event structure and main handler, if this is the first
          +		if ( !( events = elemData.events ) ) {
          +			events = elemData.events = {};
          +		}
          +		if ( !( eventHandle = elemData.handle ) ) {
          +			eventHandle = elemData.handle = function( e ) {
          +
          +				// Discard the second event of a jQuery.event.trigger() and
          +				// when an event is called after a page has unloaded
          +				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
          +					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
          +			};
          +		}
          +
          +		// Handle multiple events separated by a space
          +		types = ( types || "" ).match( rnotwhite ) || [ "" ];
          +		t = types.length;
          +		while ( t-- ) {
          +			tmp = rtypenamespace.exec( types[ t ] ) || [];
          +			type = origType = tmp[ 1 ];
          +			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
          +
          +			// There *must* be a type, no attaching namespace-only handlers
          +			if ( !type ) {
          +				continue;
          +			}
          +
          +			// If event changes its type, use the special event handlers for the changed type
          +			special = jQuery.event.special[ type ] || {};
          +
          +			// If selector defined, determine special event api type, otherwise given type
          +			type = ( selector ? special.delegateType : special.bindType ) || type;
          +
          +			// Update special based on newly reset type
          +			special = jQuery.event.special[ type ] || {};
          +
          +			// handleObj is passed to all event handlers
          +			handleObj = jQuery.extend( {
          +				type: type,
          +				origType: origType,
          +				data: data,
          +				handler: handler,
          +				guid: handler.guid,
          +				selector: selector,
          +				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
          +				namespace: namespaces.join( "." )
          +			}, handleObjIn );
          +
          +			// Init the event handler queue if we're the first
          +			if ( !( handlers = events[ type ] ) ) {
          +				handlers = events[ type ] = [];
          +				handlers.delegateCount = 0;
          +
          +				// Only use addEventListener if the special events handler returns false
          +				if ( !special.setup ||
          +					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
          +
          +					if ( elem.addEventListener ) {
          +						elem.addEventListener( type, eventHandle );
          +					}
          +				}
          +			}
          +
          +			if ( special.add ) {
          +				special.add.call( elem, handleObj );
          +
          +				if ( !handleObj.handler.guid ) {
          +					handleObj.handler.guid = handler.guid;
          +				}
          +			}
          +
          +			// Add to the element's handler list, delegates in front
          +			if ( selector ) {
          +				handlers.splice( handlers.delegateCount++, 0, handleObj );
          +			} else {
          +				handlers.push( handleObj );
          +			}
          +
          +			// Keep track of which events have ever been used, for event optimization
          +			jQuery.event.global[ type ] = true;
          +		}
          +
          +	},
          +
          +	// Detach an event or set of events from an element
          +	remove: function( elem, types, handler, selector, mappedTypes ) {
          +
          +		var j, origCount, tmp,
          +			events, t, handleObj,
          +			special, handlers, type, namespaces, origType,
          +			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
          +
          +		if ( !elemData || !( events = elemData.events ) ) {
          +			return;
          +		}
          +
          +		// Once for each type.namespace in types; type may be omitted
          +		types = ( types || "" ).match( rnotwhite ) || [ "" ];
          +		t = types.length;
          +		while ( t-- ) {
          +			tmp = rtypenamespace.exec( types[ t ] ) || [];
          +			type = origType = tmp[ 1 ];
          +			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
          +
          +			// Unbind all events (on this namespace, if provided) for the element
          +			if ( !type ) {
          +				for ( type in events ) {
          +					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
          +				}
          +				continue;
          +			}
          +
          +			special = jQuery.event.special[ type ] || {};
          +			type = ( selector ? special.delegateType : special.bindType ) || type;
          +			handlers = events[ type ] || [];
          +			tmp = tmp[ 2 ] &&
          +				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
          +
          +			// Remove matching events
          +			origCount = j = handlers.length;
          +			while ( j-- ) {
          +				handleObj = handlers[ j ];
          +
          +				if ( ( mappedTypes || origType === handleObj.origType ) &&
          +					( !handler || handler.guid === handleObj.guid ) &&
          +					( !tmp || tmp.test( handleObj.namespace ) ) &&
          +					( !selector || selector === handleObj.selector ||
          +						selector === "**" && handleObj.selector ) ) {
          +					handlers.splice( j, 1 );
          +
          +					if ( handleObj.selector ) {
          +						handlers.delegateCount--;
          +					}
          +					if ( special.remove ) {
          +						special.remove.call( elem, handleObj );
          +					}
          +				}
          +			}
          +
          +			// Remove generic event handler if we removed something and no more handlers exist
          +			// (avoids potential for endless recursion during removal of special event handlers)
          +			if ( origCount && !handlers.length ) {
          +				if ( !special.teardown ||
          +					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
          +
          +					jQuery.removeEvent( elem, type, elemData.handle );
          +				}
          +
          +				delete events[ type ];
          +			}
          +		}
          +
          +		// Remove data and the expando if it's no longer used
          +		if ( jQuery.isEmptyObject( events ) ) {
          +			dataPriv.remove( elem, "handle events" );
          +		}
          +	},
          +
          +	dispatch: function( event ) {
          +
          +		// Make a writable jQuery.Event from the native event object
          +		event = jQuery.event.fix( event );
          +
          +		var i, j, ret, matched, handleObj,
          +			handlerQueue = [],
          +			args = slice.call( arguments ),
          +			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
          +			special = jQuery.event.special[ event.type ] || {};
          +
          +		// Use the fix-ed jQuery.Event rather than the (read-only) native event
          +		args[ 0 ] = event;
          +		event.delegateTarget = this;
          +
          +		// Call the preDispatch hook for the mapped type, and let it bail if desired
          +		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
          +			return;
          +		}
          +
          +		// Determine handlers
          +		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
          +
          +		// Run delegates first; they may want to stop propagation beneath us
          +		i = 0;
          +		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
          +			event.currentTarget = matched.elem;
          +
          +			j = 0;
          +			while ( ( handleObj = matched.handlers[ j++ ] ) &&
          +				!event.isImmediatePropagationStopped() ) {
          +
          +				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
          +				// a subset or equal to those in the bound event (both can have no namespace).
          +				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
          +
          +					event.handleObj = handleObj;
          +					event.data = handleObj.data;
          +
          +					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
          +						handleObj.handler ).apply( matched.elem, args );
          +
          +					if ( ret !== undefined ) {
          +						if ( ( event.result = ret ) === false ) {
          +							event.preventDefault();
          +							event.stopPropagation();
          +						}
          +					}
          +				}
          +			}
          +		}
          +
          +		// Call the postDispatch hook for the mapped type
          +		if ( special.postDispatch ) {
          +			special.postDispatch.call( this, event );
          +		}
          +
          +		return event.result;
          +	},
          +
          +	handlers: function( event, handlers ) {
          +		var i, matches, sel, handleObj,
          +			handlerQueue = [],
          +			delegateCount = handlers.delegateCount,
          +			cur = event.target;
          +
          +		// Support (at least): Chrome, IE9
          +		// Find delegate handlers
          +		// Black-hole SVG <use> instance trees (#13180)
          +		//
          +		// Support: Firefox<=42+
          +		// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
          +		if ( delegateCount && cur.nodeType &&
          +			( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
          +
          +			for ( ; cur !== this; cur = cur.parentNode || this ) {
          +
          +				// Don't check non-elements (#13208)
          +				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
          +				if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
          +					matches = [];
          +					for ( i = 0; i < delegateCount; i++ ) {
          +						handleObj = handlers[ i ];
          +
          +						// Don't conflict with Object.prototype properties (#13203)
          +						sel = handleObj.selector + " ";
          +
          +						if ( matches[ sel ] === undefined ) {
          +							matches[ sel ] = handleObj.needsContext ?
          +								jQuery( sel, this ).index( cur ) > -1 :
          +								jQuery.find( sel, this, null, [ cur ] ).length;
          +						}
          +						if ( matches[ sel ] ) {
          +							matches.push( handleObj );
          +						}
          +					}
          +					if ( matches.length ) {
          +						handlerQueue.push( { elem: cur, handlers: matches } );
          +					}
          +				}
          +			}
          +		}
          +
          +		// Add the remaining (directly-bound) handlers
          +		if ( delegateCount < handlers.length ) {
          +			handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
          +		}
          +
          +		return handlerQueue;
          +	},
          +
          +	// Includes some event props shared by KeyEvent and MouseEvent
          +	props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
          +		"metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
          +
          +	fixHooks: {},
          +
          +	keyHooks: {
          +		props: "char charCode key keyCode".split( " " ),
          +		filter: function( event, original ) {
          +
          +			// Add which for key events
          +			if ( event.which == null ) {
          +				event.which = original.charCode != null ? original.charCode : original.keyCode;
          +			}
          +
          +			return event;
          +		}
          +	},
          +
          +	mouseHooks: {
          +		props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
          +			"screenX screenY toElement" ).split( " " ),
          +		filter: function( event, original ) {
          +			var eventDoc, doc, body,
          +				button = original.button;
          +
          +			// Calculate pageX/Y if missing and clientX/Y available
          +			if ( event.pageX == null && original.clientX != null ) {
          +				eventDoc = event.target.ownerDocument || document;
          +				doc = eventDoc.documentElement;
          +				body = eventDoc.body;
          +
          +				event.pageX = original.clientX +
          +					( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
          +					( doc && doc.clientLeft || body && body.clientLeft || 0 );
          +				event.pageY = original.clientY +
          +					( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) -
          +					( doc && doc.clientTop  || body && body.clientTop  || 0 );
          +			}
          +
          +			// Add which for click: 1 === left; 2 === middle; 3 === right
          +			// Note: button is not normalized, so don't use it
          +			if ( !event.which && button !== undefined ) {
          +				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
          +			}
          +
          +			return event;
          +		}
          +	},
          +
          +	fix: function( event ) {
          +		if ( event[ jQuery.expando ] ) {
          +			return event;
          +		}
          +
          +		// Create a writable copy of the event object and normalize some properties
          +		var i, prop, copy,
          +			type = event.type,
          +			originalEvent = event,
          +			fixHook = this.fixHooks[ type ];
          +
          +		if ( !fixHook ) {
          +			this.fixHooks[ type ] = fixHook =
          +				rmouseEvent.test( type ) ? this.mouseHooks :
          +				rkeyEvent.test( type ) ? this.keyHooks :
          +				{};
          +		}
          +		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
          +
          +		event = new jQuery.Event( originalEvent );
          +
          +		i = copy.length;
          +		while ( i-- ) {
          +			prop = copy[ i ];
          +			event[ prop ] = originalEvent[ prop ];
          +		}
          +
          +		// Support: Cordova 2.5 (WebKit) (#13255)
          +		// All events should have a target; Cordova deviceready doesn't
          +		if ( !event.target ) {
          +			event.target = document;
          +		}
          +
          +		// Support: Safari 6.0+, Chrome<28
          +		// Target should not be a text node (#504, #13143)
          +		if ( event.target.nodeType === 3 ) {
          +			event.target = event.target.parentNode;
          +		}
          +
          +		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
          +	},
          +
          +	special: {
          +		load: {
          +
          +			// Prevent triggered image.load events from bubbling to window.load
          +			noBubble: true
          +		},
          +		focus: {
          +
          +			// Fire native event if possible so blur/focus sequence is correct
          +			trigger: function() {
          +				if ( this !== safeActiveElement() && this.focus ) {
          +					this.focus();
          +					return false;
          +				}
          +			},
          +			delegateType: "focusin"
          +		},
          +		blur: {
          +			trigger: function() {
          +				if ( this === safeActiveElement() && this.blur ) {
          +					this.blur();
          +					return false;
          +				}
          +			},
          +			delegateType: "focusout"
          +		},
          +		click: {
          +
          +			// For checkbox, fire native event so checked state will be right
          +			trigger: function() {
          +				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
          +					this.click();
          +					return false;
          +				}
          +			},
          +
          +			// For cross-browser consistency, don't fire native .click() on links
          +			_default: function( event ) {
          +				return jQuery.nodeName( event.target, "a" );
          +			}
          +		},
          +
          +		beforeunload: {
          +			postDispatch: function( event ) {
          +
          +				// Support: Firefox 20+
          +				// Firefox doesn't alert if the returnValue field is not set.
          +				if ( event.result !== undefined && event.originalEvent ) {
          +					event.originalEvent.returnValue = event.result;
          +				}
          +			}
          +		}
          +	}
          +};
          +
          +jQuery.removeEvent = function( elem, type, handle ) {
          +
          +	// This "if" is needed for plain objects
          +	if ( elem.removeEventListener ) {
          +		elem.removeEventListener( type, handle );
          +	}
          +};
          +
          +jQuery.Event = function( src, props ) {
          +
          +	// Allow instantiation without the 'new' keyword
          +	if ( !( this instanceof jQuery.Event ) ) {
          +		return new jQuery.Event( src, props );
          +	}
          +
          +	// Event object
          +	if ( src && src.type ) {
          +		this.originalEvent = src;
          +		this.type = src.type;
          +
          +		// Events bubbling up the document may have been marked as prevented
          +		// by a handler lower down the tree; reflect the correct value.
          +		this.isDefaultPrevented = src.defaultPrevented ||
          +				src.defaultPrevented === undefined &&
          +
          +				// Support: Android<4.0
          +				src.returnValue === false ?
          +			returnTrue :
          +			returnFalse;
          +
          +	// Event type
          +	} else {
          +		this.type = src;
          +	}
          +
          +	// Put explicitly provided properties onto the event object
          +	if ( props ) {
          +		jQuery.extend( this, props );
          +	}
          +
          +	// Create a timestamp if incoming event doesn't have one
          +	this.timeStamp = src && src.timeStamp || jQuery.now();
          +
          +	// Mark it as fixed
          +	this[ jQuery.expando ] = true;
          +};
          +
          +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
          +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
          +jQuery.Event.prototype = {
          +	constructor: jQuery.Event,
          +	isDefaultPrevented: returnFalse,
          +	isPropagationStopped: returnFalse,
          +	isImmediatePropagationStopped: returnFalse,
          +	isSimulated: false,
          +
          +	preventDefault: function() {
          +		var e = this.originalEvent;
          +
          +		this.isDefaultPrevented = returnTrue;
          +
          +		if ( e && !this.isSimulated ) {
          +			e.preventDefault();
          +		}
          +	},
          +	stopPropagation: function() {
          +		var e = this.originalEvent;
          +
          +		this.isPropagationStopped = returnTrue;
          +
          +		if ( e && !this.isSimulated ) {
          +			e.stopPropagation();
          +		}
          +	},
          +	stopImmediatePropagation: function() {
          +		var e = this.originalEvent;
          +
          +		this.isImmediatePropagationStopped = returnTrue;
          +
          +		if ( e && !this.isSimulated ) {
          +			e.stopImmediatePropagation();
          +		}
          +
          +		this.stopPropagation();
          +	}
          +};
          +
          +// Create mouseenter/leave events using mouseover/out and event-time checks
          +// so that event delegation works in jQuery.
          +// Do the same for pointerenter/pointerleave and pointerover/pointerout
          +//
          +// Support: Safari 7 only
          +// Safari sends mouseenter too often; see:
          +// https://code.google.com/p/chromium/issues/detail?id=470258
          +// for the description of the bug (it existed in older Chrome versions as well).
          +jQuery.each( {
          +	mouseenter: "mouseover",
          +	mouseleave: "mouseout",
          +	pointerenter: "pointerover",
          +	pointerleave: "pointerout"
          +}, function( orig, fix ) {
          +	jQuery.event.special[ orig ] = {
          +		delegateType: fix,
          +		bindType: fix,
          +
          +		handle: function( event ) {
          +			var ret,
          +				target = this,
          +				related = event.relatedTarget,
          +				handleObj = event.handleObj;
          +
          +			// For mouseenter/leave call the handler if related is outside the target.
          +			// NB: No relatedTarget if the mouse left/entered the browser window
          +			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
          +				event.type = handleObj.origType;
          +				ret = handleObj.handler.apply( this, arguments );
          +				event.type = fix;
          +			}
          +			return ret;
          +		}
          +	};
          +} );
          +
          +jQuery.fn.extend( {
          +	on: function( types, selector, data, fn ) {
          +		return on( this, types, selector, data, fn );
          +	},
          +	one: function( types, selector, data, fn ) {
          +		return on( this, types, selector, data, fn, 1 );
          +	},
          +	off: function( types, selector, fn ) {
          +		var handleObj, type;
          +		if ( types && types.preventDefault && types.handleObj ) {
          +
          +			// ( event )  dispatched jQuery.Event
          +			handleObj = types.handleObj;
          +			jQuery( types.delegateTarget ).off(
          +				handleObj.namespace ?
          +					handleObj.origType + "." + handleObj.namespace :
          +					handleObj.origType,
          +				handleObj.selector,
          +				handleObj.handler
          +			);
          +			return this;
          +		}
          +		if ( typeof types === "object" ) {
          +
          +			// ( types-object [, selector] )
          +			for ( type in types ) {
          +				this.off( type, selector, types[ type ] );
          +			}
          +			return this;
          +		}
          +		if ( selector === false || typeof selector === "function" ) {
          +
          +			// ( types [, fn] )
          +			fn = selector;
          +			selector = undefined;
          +		}
          +		if ( fn === false ) {
          +			fn = returnFalse;
          +		}
          +		return this.each( function() {
          +			jQuery.event.remove( this, types, fn, selector );
          +		} );
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/event/ajax.js b/public/theme/jquery/src/event/ajax.js
          new file mode 100644
          index 0000000..98e194b
          --- /dev/null
          +++ b/public/theme/jquery/src/event/ajax.js
          @@ -0,0 +1,20 @@
          +define( [
          +	"../core",
          +	"../event"
          +], function( jQuery ) {
          +
          +// Attach a bunch of functions for handling common AJAX events
          +jQuery.each( [
          +	"ajaxStart",
          +	"ajaxStop",
          +	"ajaxComplete",
          +	"ajaxError",
          +	"ajaxSuccess",
          +	"ajaxSend"
          +], function( i, type ) {
          +	jQuery.fn[ type ] = function( fn ) {
          +		return this.on( type, fn );
          +	};
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/event/alias.js b/public/theme/jquery/src/event/alias.js
          new file mode 100644
          index 0000000..161c893
          --- /dev/null
          +++ b/public/theme/jquery/src/event/alias.js
          @@ -0,0 +1,27 @@
          +define( [
          +	"../core",
          +
          +	"../event",
          +	"./trigger"
          +], function( jQuery ) {
          +
          +jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
          +	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
          +	"change select submit keydown keypress keyup error contextmenu" ).split( " " ),
          +	function( i, name ) {
          +
          +	// Handle event binding
          +	jQuery.fn[ name ] = function( data, fn ) {
          +		return arguments.length > 0 ?
          +			this.on( name, null, data, fn ) :
          +			this.trigger( name );
          +	};
          +} );
          +
          +jQuery.fn.extend( {
          +	hover: function( fnOver, fnOut ) {
          +		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/event/focusin.js b/public/theme/jquery/src/event/focusin.js
          new file mode 100644
          index 0000000..ae7f831
          --- /dev/null
          +++ b/public/theme/jquery/src/event/focusin.js
          @@ -0,0 +1,53 @@
          +define( [
          +	"../core",
          +	"../data/var/dataPriv",
          +	"./support",
          +
          +	"../event",
          +	"./trigger"
          +], function( jQuery, dataPriv, support ) {
          +
          +// Support: Firefox
          +// Firefox doesn't have focus(in | out) events
          +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
          +//
          +// Support: Chrome, Safari
          +// focus(in | out) events fire after focus & blur events,
          +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
          +// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
          +if ( !support.focusin ) {
          +	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
          +
          +		// Attach a single capturing handler on the document while someone wants focusin/focusout
          +		var handler = function( event ) {
          +			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
          +		};
          +
          +		jQuery.event.special[ fix ] = {
          +			setup: function() {
          +				var doc = this.ownerDocument || this,
          +					attaches = dataPriv.access( doc, fix );
          +
          +				if ( !attaches ) {
          +					doc.addEventListener( orig, handler, true );
          +				}
          +				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
          +			},
          +			teardown: function() {
          +				var doc = this.ownerDocument || this,
          +					attaches = dataPriv.access( doc, fix ) - 1;
          +
          +				if ( !attaches ) {
          +					doc.removeEventListener( orig, handler, true );
          +					dataPriv.remove( doc, fix );
          +
          +				} else {
          +					dataPriv.access( doc, fix, attaches );
          +				}
          +			}
          +		};
          +	} );
          +}
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/event/support.js b/public/theme/jquery/src/event/support.js
          new file mode 100644
          index 0000000..1c4d416
          --- /dev/null
          +++ b/public/theme/jquery/src/event/support.js
          @@ -0,0 +1,9 @@
          +define( [
          +	"../var/support"
          +], function( support ) {
          +
          +support.focusin = "onfocusin" in window;
          +
          +return support;
          +
          +} );
          diff --git a/public/theme/jquery/src/event/trigger.js b/public/theme/jquery/src/event/trigger.js
          new file mode 100644
          index 0000000..75b9dd2
          --- /dev/null
          +++ b/public/theme/jquery/src/event/trigger.js
          @@ -0,0 +1,183 @@
          +define( [
          +	"../core",
          +	"../var/document",
          +	"../data/var/dataPriv",
          +	"../data/var/acceptData",
          +	"../var/hasOwn",
          +
          +	"../event"
          +], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
          +
          +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
          +
          +jQuery.extend( jQuery.event, {
          +
          +	trigger: function( event, data, elem, onlyHandlers ) {
          +
          +		var i, cur, tmp, bubbleType, ontype, handle, special,
          +			eventPath = [ elem || document ],
          +			type = hasOwn.call( event, "type" ) ? event.type : event,
          +			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
          +
          +		cur = tmp = elem = elem || document;
          +
          +		// Don't do events on text and comment nodes
          +		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
          +			return;
          +		}
          +
          +		// focus/blur morphs to focusin/out; ensure we're not firing them right now
          +		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
          +			return;
          +		}
          +
          +		if ( type.indexOf( "." ) > -1 ) {
          +
          +			// Namespaced trigger; create a regexp to match event type in handle()
          +			namespaces = type.split( "." );
          +			type = namespaces.shift();
          +			namespaces.sort();
          +		}
          +		ontype = type.indexOf( ":" ) < 0 && "on" + type;
          +
          +		// Caller can pass in a jQuery.Event object, Object, or just an event type string
          +		event = event[ jQuery.expando ] ?
          +			event :
          +			new jQuery.Event( type, typeof event === "object" && event );
          +
          +		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
          +		event.isTrigger = onlyHandlers ? 2 : 3;
          +		event.namespace = namespaces.join( "." );
          +		event.rnamespace = event.namespace ?
          +			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
          +			null;
          +
          +		// Clean up the event in case it is being reused
          +		event.result = undefined;
          +		if ( !event.target ) {
          +			event.target = elem;
          +		}
          +
          +		// Clone any incoming data and prepend the event, creating the handler arg list
          +		data = data == null ?
          +			[ event ] :
          +			jQuery.makeArray( data, [ event ] );
          +
          +		// Allow special events to draw outside the lines
          +		special = jQuery.event.special[ type ] || {};
          +		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
          +			return;
          +		}
          +
          +		// Determine event propagation path in advance, per W3C events spec (#9951)
          +		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
          +		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
          +
          +			bubbleType = special.delegateType || type;
          +			if ( !rfocusMorph.test( bubbleType + type ) ) {
          +				cur = cur.parentNode;
          +			}
          +			for ( ; cur; cur = cur.parentNode ) {
          +				eventPath.push( cur );
          +				tmp = cur;
          +			}
          +
          +			// Only add window if we got to document (e.g., not plain obj or detached DOM)
          +			if ( tmp === ( elem.ownerDocument || document ) ) {
          +				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
          +			}
          +		}
          +
          +		// Fire handlers on the event path
          +		i = 0;
          +		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
          +
          +			event.type = i > 1 ?
          +				bubbleType :
          +				special.bindType || type;
          +
          +			// jQuery handler
          +			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
          +				dataPriv.get( cur, "handle" );
          +			if ( handle ) {
          +				handle.apply( cur, data );
          +			}
          +
          +			// Native handler
          +			handle = ontype && cur[ ontype ];
          +			if ( handle && handle.apply && acceptData( cur ) ) {
          +				event.result = handle.apply( cur, data );
          +				if ( event.result === false ) {
          +					event.preventDefault();
          +				}
          +			}
          +		}
          +		event.type = type;
          +
          +		// If nobody prevented the default action, do it now
          +		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
          +
          +			if ( ( !special._default ||
          +				special._default.apply( eventPath.pop(), data ) === false ) &&
          +				acceptData( elem ) ) {
          +
          +				// Call a native DOM method on the target with the same name name as the event.
          +				// Don't do default actions on window, that's where global variables be (#6170)
          +				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
          +
          +					// Don't re-trigger an onFOO event when we call its FOO() method
          +					tmp = elem[ ontype ];
          +
          +					if ( tmp ) {
          +						elem[ ontype ] = null;
          +					}
          +
          +					// Prevent re-triggering of the same event, since we already bubbled it above
          +					jQuery.event.triggered = type;
          +					elem[ type ]();
          +					jQuery.event.triggered = undefined;
          +
          +					if ( tmp ) {
          +						elem[ ontype ] = tmp;
          +					}
          +				}
          +			}
          +		}
          +
          +		return event.result;
          +	},
          +
          +	// Piggyback on a donor event to simulate a different one
          +	// Used only for `focus(in | out)` events
          +	simulate: function( type, elem, event ) {
          +		var e = jQuery.extend(
          +			new jQuery.Event(),
          +			event,
          +			{
          +				type: type,
          +				isSimulated: true
          +			}
          +		);
          +
          +		jQuery.event.trigger( e, null, elem );
          +	}
          +
          +} );
          +
          +jQuery.fn.extend( {
          +
          +	trigger: function( type, data ) {
          +		return this.each( function() {
          +			jQuery.event.trigger( type, data, this );
          +		} );
          +	},
          +	triggerHandler: function( type, data ) {
          +		var elem = this[ 0 ];
          +		if ( elem ) {
          +			return jQuery.event.trigger( type, data, elem, true );
          +		}
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/exports/amd.js b/public/theme/jquery/src/exports/amd.js
          new file mode 100644
          index 0000000..add6eb9
          --- /dev/null
          +++ b/public/theme/jquery/src/exports/amd.js
          @@ -0,0 +1,24 @@
          +define( [
          +	"../core"
          +], function( jQuery ) {
          +
          +// Register as a named AMD module, since jQuery can be concatenated with other
          +// files that may use define, but not via a proper concatenation script that
          +// understands anonymous AMD modules. A named AMD is safest and most robust
          +// way to register. Lowercase jquery is used because AMD module names are
          +// derived from file names, and jQuery is normally delivered in a lowercase
          +// file name. Do this after creating the global so that if an AMD module wants
          +// to call noConflict to hide this version of jQuery, it will work.
          +
          +// Note that for maximum portability, libraries that are not jQuery should
          +// declare themselves as anonymous modules, and avoid setting a global if an
          +// AMD loader is present. jQuery is a special case. For more information, see
          +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
          +
          +if ( typeof define === "function" && define.amd ) {
          +	define( "jquery", [], function() {
          +		return jQuery;
          +	} );
          +}
          +
          +} );
          diff --git a/public/theme/jquery/src/exports/global.js b/public/theme/jquery/src/exports/global.js
          new file mode 100644
          index 0000000..be9cbfb
          --- /dev/null
          +++ b/public/theme/jquery/src/exports/global.js
          @@ -0,0 +1,26 @@
          +var
          +
          +	// Map over jQuery in case of overwrite
          +	_jQuery = window.jQuery,
          +
          +	// Map over the $ in case of overwrite
          +	_$ = window.$;
          +
          +jQuery.noConflict = function( deep ) {
          +	if ( window.$ === jQuery ) {
          +		window.$ = _$;
          +	}
          +
          +	if ( deep && window.jQuery === jQuery ) {
          +		window.jQuery = _jQuery;
          +	}
          +
          +	return jQuery;
          +};
          +
          +// Expose jQuery and $ identifiers, even in AMD
          +// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
          +// and CommonJS for browser emulators (#13566)
          +if ( !noGlobal ) {
          +	window.jQuery = window.$ = jQuery;
          +}
          diff --git a/public/theme/jquery/src/intro.js b/public/theme/jquery/src/intro.js
          new file mode 100644
          index 0000000..aab47c2
          --- /dev/null
          +++ b/public/theme/jquery/src/intro.js
          @@ -0,0 +1,44 @@
          +/*!
          + * jQuery JavaScript Library v@VERSION
          + * http://jquery.com/
          + *
          + * Includes Sizzle.js
          + * http://sizzlejs.com/
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * http://jquery.org/license
          + *
          + * Date: @DATE
          + */
          +
          +(function( global, factory ) {
          +
          +	if ( typeof module === "object" && typeof module.exports === "object" ) {
          +		// For CommonJS and CommonJS-like environments where a proper `window`
          +		// is present, execute the factory and get jQuery.
          +		// For environments that do not have a `window` with a `document`
          +		// (such as Node.js), expose a factory as module.exports.
          +		// This accentuates the need for the creation of a real `window`.
          +		// e.g. var jQuery = require("jquery")(window);
          +		// See ticket #14549 for more info.
          +		module.exports = global.document ?
          +			factory( global, true ) :
          +			function( w ) {
          +				if ( !w.document ) {
          +					throw new Error( "jQuery requires a window with a document" );
          +				}
          +				return factory( w );
          +			};
          +	} else {
          +		factory( global );
          +	}
          +
          +// Pass this if window is not defined yet
          +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
          +
          +// Support: Firefox 18+
          +// Can't be in strict mode, several libs including ASP.NET trace
          +// the stack via arguments.caller.callee and Firefox dies if
          +// you try to trace through "use strict" call chains. (#13335)
          +//"use strict";
          diff --git a/public/theme/jquery/src/jquery.js b/public/theme/jquery/src/jquery.js
          new file mode 100644
          index 0000000..2faa9c3
          --- /dev/null
          +++ b/public/theme/jquery/src/jquery.js
          @@ -0,0 +1,37 @@
          +define( [
          +	"./core",
          +	"./selector",
          +	"./traversing",
          +	"./callbacks",
          +	"./deferred",
          +	"./core/ready",
          +	"./data",
          +	"./queue",
          +	"./queue/delay",
          +	"./attributes",
          +	"./event",
          +	"./event/alias",
          +	"./event/focusin",
          +	"./manipulation",
          +	"./manipulation/_evalUrl",
          +	"./wrap",
          +	"./css",
          +	"./css/hiddenVisibleSelectors",
          +	"./serialize",
          +	"./ajax",
          +	"./ajax/xhr",
          +	"./ajax/script",
          +	"./ajax/jsonp",
          +	"./ajax/load",
          +	"./event/ajax",
          +	"./effects",
          +	"./effects/animatedSelector",
          +	"./offset",
          +	"./dimensions",
          +	"./deprecated",
          +	"./exports/amd"
          +], function( jQuery ) {
          +
          +return ( window.jQuery = window.$ = jQuery );
          +
          +} );
          diff --git a/public/theme/jquery/src/manipulation.js b/public/theme/jquery/src/manipulation.js
          new file mode 100644
          index 0000000..afd5091
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation.js
          @@ -0,0 +1,481 @@
          +define( [
          +	"./core",
          +	"./var/concat",
          +	"./var/push",
          +	"./core/access",
          +	"./manipulation/var/rcheckableType",
          +	"./manipulation/var/rtagName",
          +	"./manipulation/var/rscriptType",
          +	"./manipulation/wrapMap",
          +	"./manipulation/getAll",
          +	"./manipulation/setGlobalEval",
          +	"./manipulation/buildFragment",
          +	"./manipulation/support",
          +
          +	"./data/var/dataPriv",
          +	"./data/var/dataUser",
          +	"./data/var/acceptData",
          +
          +	"./core/init",
          +	"./traversing",
          +	"./selector",
          +	"./event"
          +], function( jQuery, concat, push, access,
          +	rcheckableType, rtagName, rscriptType,
          +	wrapMap, getAll, setGlobalEval, buildFragment, support,
          +	dataPriv, dataUser, acceptData ) {
          +
          +var
          +	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
          +
          +	// Support: IE 10-11, Edge 10240+
          +	// In IE/Edge using regex groups here causes severe slowdowns.
          +	// See https://connect.microsoft.com/IE/feedback/details/1736512/
          +	rnoInnerhtml = /<script|<style|<link/i,
          +
          +	// checked="checked" or checked
          +	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
          +	rscriptTypeMasked = /^true\/(.*)/,
          +	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
          +
          +// Manipulating tables requires a tbody
          +function manipulationTarget( elem, content ) {
          +	return jQuery.nodeName( elem, "table" ) &&
          +		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
          +
          +		elem.getElementsByTagName( "tbody" )[ 0 ] ||
          +			elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
          +		elem;
          +}
          +
          +// Replace/restore the type attribute of script elements for safe DOM manipulation
          +function disableScript( elem ) {
          +	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
          +	return elem;
          +}
          +function restoreScript( elem ) {
          +	var match = rscriptTypeMasked.exec( elem.type );
          +
          +	if ( match ) {
          +		elem.type = match[ 1 ];
          +	} else {
          +		elem.removeAttribute( "type" );
          +	}
          +
          +	return elem;
          +}
          +
          +function cloneCopyEvent( src, dest ) {
          +	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
          +
          +	if ( dest.nodeType !== 1 ) {
          +		return;
          +	}
          +
          +	// 1. Copy private data: events, handlers, etc.
          +	if ( dataPriv.hasData( src ) ) {
          +		pdataOld = dataPriv.access( src );
          +		pdataCur = dataPriv.set( dest, pdataOld );
          +		events = pdataOld.events;
          +
          +		if ( events ) {
          +			delete pdataCur.handle;
          +			pdataCur.events = {};
          +
          +			for ( type in events ) {
          +				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
          +					jQuery.event.add( dest, type, events[ type ][ i ] );
          +				}
          +			}
          +		}
          +	}
          +
          +	// 2. Copy user data
          +	if ( dataUser.hasData( src ) ) {
          +		udataOld = dataUser.access( src );
          +		udataCur = jQuery.extend( {}, udataOld );
          +
          +		dataUser.set( dest, udataCur );
          +	}
          +}
          +
          +// Fix IE bugs, see support tests
          +function fixInput( src, dest ) {
          +	var nodeName = dest.nodeName.toLowerCase();
          +
          +	// Fails to persist the checked state of a cloned checkbox or radio button.
          +	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
          +		dest.checked = src.checked;
          +
          +	// Fails to return the selected option to the default selected state when cloning options
          +	} else if ( nodeName === "input" || nodeName === "textarea" ) {
          +		dest.defaultValue = src.defaultValue;
          +	}
          +}
          +
          +function domManip( collection, args, callback, ignored ) {
          +
          +	// Flatten any nested arrays
          +	args = concat.apply( [], args );
          +
          +	var fragment, first, scripts, hasScripts, node, doc,
          +		i = 0,
          +		l = collection.length,
          +		iNoClone = l - 1,
          +		value = args[ 0 ],
          +		isFunction = jQuery.isFunction( value );
          +
          +	// We can't cloneNode fragments that contain checked, in WebKit
          +	if ( isFunction ||
          +			( l > 1 && typeof value === "string" &&
          +				!support.checkClone && rchecked.test( value ) ) ) {
          +		return collection.each( function( index ) {
          +			var self = collection.eq( index );
          +			if ( isFunction ) {
          +				args[ 0 ] = value.call( this, index, self.html() );
          +			}
          +			domManip( self, args, callback, ignored );
          +		} );
          +	}
          +
          +	if ( l ) {
          +		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
          +		first = fragment.firstChild;
          +
          +		if ( fragment.childNodes.length === 1 ) {
          +			fragment = first;
          +		}
          +
          +		// Require either new content or an interest in ignored elements to invoke the callback
          +		if ( first || ignored ) {
          +			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
          +			hasScripts = scripts.length;
          +
          +			// Use the original fragment for the last item
          +			// instead of the first because it can end up
          +			// being emptied incorrectly in certain situations (#8070).
          +			for ( ; i < l; i++ ) {
          +				node = fragment;
          +
          +				if ( i !== iNoClone ) {
          +					node = jQuery.clone( node, true, true );
          +
          +					// Keep references to cloned scripts for later restoration
          +					if ( hasScripts ) {
          +
          +						// Support: Android<4.1, PhantomJS<2
          +						// push.apply(_, arraylike) throws on ancient WebKit
          +						jQuery.merge( scripts, getAll( node, "script" ) );
          +					}
          +				}
          +
          +				callback.call( collection[ i ], node, i );
          +			}
          +
          +			if ( hasScripts ) {
          +				doc = scripts[ scripts.length - 1 ].ownerDocument;
          +
          +				// Reenable scripts
          +				jQuery.map( scripts, restoreScript );
          +
          +				// Evaluate executable scripts on first document insertion
          +				for ( i = 0; i < hasScripts; i++ ) {
          +					node = scripts[ i ];
          +					if ( rscriptType.test( node.type || "" ) &&
          +						!dataPriv.access( node, "globalEval" ) &&
          +						jQuery.contains( doc, node ) ) {
          +
          +						if ( node.src ) {
          +
          +							// Optional AJAX dependency, but won't run scripts if not present
          +							if ( jQuery._evalUrl ) {
          +								jQuery._evalUrl( node.src );
          +							}
          +						} else {
          +							jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
          +						}
          +					}
          +				}
          +			}
          +		}
          +	}
          +
          +	return collection;
          +}
          +
          +function remove( elem, selector, keepData ) {
          +	var node,
          +		nodes = selector ? jQuery.filter( selector, elem ) : elem,
          +		i = 0;
          +
          +	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
          +		if ( !keepData && node.nodeType === 1 ) {
          +			jQuery.cleanData( getAll( node ) );
          +		}
          +
          +		if ( node.parentNode ) {
          +			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
          +				setGlobalEval( getAll( node, "script" ) );
          +			}
          +			node.parentNode.removeChild( node );
          +		}
          +	}
          +
          +	return elem;
          +}
          +
          +jQuery.extend( {
          +	htmlPrefilter: function( html ) {
          +		return html.replace( rxhtmlTag, "<$1></$2>" );
          +	},
          +
          +	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
          +		var i, l, srcElements, destElements,
          +			clone = elem.cloneNode( true ),
          +			inPage = jQuery.contains( elem.ownerDocument, elem );
          +
          +		// Fix IE cloning issues
          +		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
          +				!jQuery.isXMLDoc( elem ) ) {
          +
          +			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
          +			destElements = getAll( clone );
          +			srcElements = getAll( elem );
          +
          +			for ( i = 0, l = srcElements.length; i < l; i++ ) {
          +				fixInput( srcElements[ i ], destElements[ i ] );
          +			}
          +		}
          +
          +		// Copy the events from the original to the clone
          +		if ( dataAndEvents ) {
          +			if ( deepDataAndEvents ) {
          +				srcElements = srcElements || getAll( elem );
          +				destElements = destElements || getAll( clone );
          +
          +				for ( i = 0, l = srcElements.length; i < l; i++ ) {
          +					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
          +				}
          +			} else {
          +				cloneCopyEvent( elem, clone );
          +			}
          +		}
          +
          +		// Preserve script evaluation history
          +		destElements = getAll( clone, "script" );
          +		if ( destElements.length > 0 ) {
          +			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
          +		}
          +
          +		// Return the cloned set
          +		return clone;
          +	},
          +
          +	cleanData: function( elems ) {
          +		var data, elem, type,
          +			special = jQuery.event.special,
          +			i = 0;
          +
          +		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
          +			if ( acceptData( elem ) ) {
          +				if ( ( data = elem[ dataPriv.expando ] ) ) {
          +					if ( data.events ) {
          +						for ( type in data.events ) {
          +							if ( special[ type ] ) {
          +								jQuery.event.remove( elem, type );
          +
          +							// This is a shortcut to avoid jQuery.event.remove's overhead
          +							} else {
          +								jQuery.removeEvent( elem, type, data.handle );
          +							}
          +						}
          +					}
          +
          +					// Support: Chrome <= 35-45+
          +					// Assign undefined instead of using delete, see Data#remove
          +					elem[ dataPriv.expando ] = undefined;
          +				}
          +				if ( elem[ dataUser.expando ] ) {
          +
          +					// Support: Chrome <= 35-45+
          +					// Assign undefined instead of using delete, see Data#remove
          +					elem[ dataUser.expando ] = undefined;
          +				}
          +			}
          +		}
          +	}
          +} );
          +
          +jQuery.fn.extend( {
          +
          +	// Keep domManip exposed until 3.0 (gh-2225)
          +	domManip: domManip,
          +
          +	detach: function( selector ) {
          +		return remove( this, selector, true );
          +	},
          +
          +	remove: function( selector ) {
          +		return remove( this, selector );
          +	},
          +
          +	text: function( value ) {
          +		return access( this, function( value ) {
          +			return value === undefined ?
          +				jQuery.text( this ) :
          +				this.empty().each( function() {
          +					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +						this.textContent = value;
          +					}
          +				} );
          +		}, null, value, arguments.length );
          +	},
          +
          +	append: function() {
          +		return domManip( this, arguments, function( elem ) {
          +			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +				var target = manipulationTarget( this, elem );
          +				target.appendChild( elem );
          +			}
          +		} );
          +	},
          +
          +	prepend: function() {
          +		return domManip( this, arguments, function( elem ) {
          +			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +				var target = manipulationTarget( this, elem );
          +				target.insertBefore( elem, target.firstChild );
          +			}
          +		} );
          +	},
          +
          +	before: function() {
          +		return domManip( this, arguments, function( elem ) {
          +			if ( this.parentNode ) {
          +				this.parentNode.insertBefore( elem, this );
          +			}
          +		} );
          +	},
          +
          +	after: function() {
          +		return domManip( this, arguments, function( elem ) {
          +			if ( this.parentNode ) {
          +				this.parentNode.insertBefore( elem, this.nextSibling );
          +			}
          +		} );
          +	},
          +
          +	empty: function() {
          +		var elem,
          +			i = 0;
          +
          +		for ( ; ( elem = this[ i ] ) != null; i++ ) {
          +			if ( elem.nodeType === 1 ) {
          +
          +				// Prevent memory leaks
          +				jQuery.cleanData( getAll( elem, false ) );
          +
          +				// Remove any remaining nodes
          +				elem.textContent = "";
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	clone: function( dataAndEvents, deepDataAndEvents ) {
          +		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
          +		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
          +
          +		return this.map( function() {
          +			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
          +		} );
          +	},
          +
          +	html: function( value ) {
          +		return access( this, function( value ) {
          +			var elem = this[ 0 ] || {},
          +				i = 0,
          +				l = this.length;
          +
          +			if ( value === undefined && elem.nodeType === 1 ) {
          +				return elem.innerHTML;
          +			}
          +
          +			// See if we can take a shortcut and just use innerHTML
          +			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
          +				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
          +
          +				value = jQuery.htmlPrefilter( value );
          +
          +				try {
          +					for ( ; i < l; i++ ) {
          +						elem = this[ i ] || {};
          +
          +						// Remove element nodes and prevent memory leaks
          +						if ( elem.nodeType === 1 ) {
          +							jQuery.cleanData( getAll( elem, false ) );
          +							elem.innerHTML = value;
          +						}
          +					}
          +
          +					elem = 0;
          +
          +				// If using innerHTML throws an exception, use the fallback method
          +				} catch ( e ) {}
          +			}
          +
          +			if ( elem ) {
          +				this.empty().append( value );
          +			}
          +		}, null, value, arguments.length );
          +	},
          +
          +	replaceWith: function() {
          +		var ignored = [];
          +
          +		// Make the changes, replacing each non-ignored context element with the new content
          +		return domManip( this, arguments, function( elem ) {
          +			var parent = this.parentNode;
          +
          +			if ( jQuery.inArray( this, ignored ) < 0 ) {
          +				jQuery.cleanData( getAll( this ) );
          +				if ( parent ) {
          +					parent.replaceChild( elem, this );
          +				}
          +			}
          +
          +		// Force callback invocation
          +		}, ignored );
          +	}
          +} );
          +
          +jQuery.each( {
          +	appendTo: "append",
          +	prependTo: "prepend",
          +	insertBefore: "before",
          +	insertAfter: "after",
          +	replaceAll: "replaceWith"
          +}, function( name, original ) {
          +	jQuery.fn[ name ] = function( selector ) {
          +		var elems,
          +			ret = [],
          +			insert = jQuery( selector ),
          +			last = insert.length - 1,
          +			i = 0;
          +
          +		for ( ; i <= last; i++ ) {
          +			elems = i === last ? this : this.clone( true );
          +			jQuery( insert[ i ] )[ original ]( elems );
          +
          +			// Support: QtWebKit
          +			// .get() because push.apply(_, arraylike) throws
          +			push.apply( ret, elems.get() );
          +		}
          +
          +		return this.pushStack( ret );
          +	};
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/manipulation/_evalUrl.js b/public/theme/jquery/src/manipulation/_evalUrl.js
          new file mode 100644
          index 0000000..85ca2c6
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/_evalUrl.js
          @@ -0,0 +1,20 @@
          +define( [
          +	"../ajax"
          +], function( jQuery ) {
          +
          +jQuery._evalUrl = function( url ) {
          +	return jQuery.ajax( {
          +		url: url,
          +
          +		// Make this explicit, since user can override this through ajaxSetup (#11264)
          +		type: "GET",
          +		dataType: "script",
          +		async: false,
          +		global: false,
          +		"throws": true
          +	} );
          +};
          +
          +return jQuery._evalUrl;
          +
          +} );
          diff --git a/public/theme/jquery/src/manipulation/buildFragment.js b/public/theme/jquery/src/manipulation/buildFragment.js
          new file mode 100644
          index 0000000..cfdd1c0
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/buildFragment.js
          @@ -0,0 +1,102 @@
          +define( [
          +	"../core",
          +	"./var/rtagName",
          +	"./var/rscriptType",
          +	"./wrapMap",
          +	"./getAll",
          +	"./setGlobalEval"
          +], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
          +
          +var rhtml = /<|&#?\w+;/;
          +
          +function buildFragment( elems, context, scripts, selection, ignored ) {
          +	var elem, tmp, tag, wrap, contains, j,
          +		fragment = context.createDocumentFragment(),
          +		nodes = [],
          +		i = 0,
          +		l = elems.length;
          +
          +	for ( ; i < l; i++ ) {
          +		elem = elems[ i ];
          +
          +		if ( elem || elem === 0 ) {
          +
          +			// Add nodes directly
          +			if ( jQuery.type( elem ) === "object" ) {
          +
          +				// Support: Android<4.1, PhantomJS<2
          +				// push.apply(_, arraylike) throws on ancient WebKit
          +				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
          +
          +			// Convert non-html into a text node
          +			} else if ( !rhtml.test( elem ) ) {
          +				nodes.push( context.createTextNode( elem ) );
          +
          +			// Convert html into DOM nodes
          +			} else {
          +				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
          +
          +				// Deserialize a standard representation
          +				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
          +				wrap = wrapMap[ tag ] || wrapMap._default;
          +				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
          +
          +				// Descend through wrappers to the right content
          +				j = wrap[ 0 ];
          +				while ( j-- ) {
          +					tmp = tmp.lastChild;
          +				}
          +
          +				// Support: Android<4.1, PhantomJS<2
          +				// push.apply(_, arraylike) throws on ancient WebKit
          +				jQuery.merge( nodes, tmp.childNodes );
          +
          +				// Remember the top-level container
          +				tmp = fragment.firstChild;
          +
          +				// Ensure the created nodes are orphaned (#12392)
          +				tmp.textContent = "";
          +			}
          +		}
          +	}
          +
          +	// Remove wrapper from fragment
          +	fragment.textContent = "";
          +
          +	i = 0;
          +	while ( ( elem = nodes[ i++ ] ) ) {
          +
          +		// Skip elements already in the context collection (trac-4087)
          +		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
          +			if ( ignored ) {
          +				ignored.push( elem );
          +			}
          +			continue;
          +		}
          +
          +		contains = jQuery.contains( elem.ownerDocument, elem );
          +
          +		// Append to fragment
          +		tmp = getAll( fragment.appendChild( elem ), "script" );
          +
          +		// Preserve script evaluation history
          +		if ( contains ) {
          +			setGlobalEval( tmp );
          +		}
          +
          +		// Capture executables
          +		if ( scripts ) {
          +			j = 0;
          +			while ( ( elem = tmp[ j++ ] ) ) {
          +				if ( rscriptType.test( elem.type || "" ) ) {
          +					scripts.push( elem );
          +				}
          +			}
          +		}
          +	}
          +
          +	return fragment;
          +}
          +
          +return buildFragment;
          +} );
          diff --git a/public/theme/jquery/src/manipulation/getAll.js b/public/theme/jquery/src/manipulation/getAll.js
          new file mode 100644
          index 0000000..cc913f2
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/getAll.js
          @@ -0,0 +1,21 @@
          +define( [
          +	"../core"
          +], function( jQuery ) {
          +
          +function getAll( context, tag ) {
          +
          +	// Support: IE9-11+
          +	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
          +	var ret = typeof context.getElementsByTagName !== "undefined" ?
          +			context.getElementsByTagName( tag || "*" ) :
          +			typeof context.querySelectorAll !== "undefined" ?
          +				context.querySelectorAll( tag || "*" ) :
          +			[];
          +
          +	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
          +		jQuery.merge( [ context ], ret ) :
          +		ret;
          +}
          +
          +return getAll;
          +} );
          diff --git a/public/theme/jquery/src/manipulation/setGlobalEval.js b/public/theme/jquery/src/manipulation/setGlobalEval.js
          new file mode 100644
          index 0000000..8ca69a0
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/setGlobalEval.js
          @@ -0,0 +1,20 @@
          +define( [
          +	"../data/var/dataPriv"
          +], function( dataPriv ) {
          +
          +// Mark scripts as having already been evaluated
          +function setGlobalEval( elems, refElements ) {
          +	var i = 0,
          +		l = elems.length;
          +
          +	for ( ; i < l; i++ ) {
          +		dataPriv.set(
          +			elems[ i ],
          +			"globalEval",
          +			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
          +		);
          +	}
          +}
          +
          +return setGlobalEval;
          +} );
          diff --git a/public/theme/jquery/src/manipulation/support.js b/public/theme/jquery/src/manipulation/support.js
          new file mode 100644
          index 0000000..cd4081e
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/support.js
          @@ -0,0 +1,33 @@
          +define( [
          +	"../var/document",
          +	"../var/support"
          +], function( document, support ) {
          +
          +( function() {
          +	var fragment = document.createDocumentFragment(),
          +		div = fragment.appendChild( document.createElement( "div" ) ),
          +		input = document.createElement( "input" );
          +
          +	// Support: Android 4.0-4.3, Safari<=5.1
          +	// Check state lost if the name is set (#11217)
          +	// Support: Windows Web Apps (WWA)
          +	// `name` and `type` must use .setAttribute for WWA (#14901)
          +	input.setAttribute( "type", "radio" );
          +	input.setAttribute( "checked", "checked" );
          +	input.setAttribute( "name", "t" );
          +
          +	div.appendChild( input );
          +
          +	// Support: Safari<=5.1, Android<4.2
          +	// Older WebKit doesn't clone checked state correctly in fragments
          +	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
          +
          +	// Support: IE<=11+
          +	// Make sure textarea (and checkbox) defaultValue is properly cloned
          +	div.innerHTML = "<textarea>x</textarea>";
          +	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
          +} )();
          +
          +return support;
          +
          +} );
          diff --git a/public/theme/jquery/src/manipulation/var/rcheckableType.js b/public/theme/jquery/src/manipulation/var/rcheckableType.js
          new file mode 100644
          index 0000000..4c95394
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/var/rcheckableType.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /^(?:checkbox|radio)$/i );
          +} );
          diff --git a/public/theme/jquery/src/manipulation/var/rscriptType.js b/public/theme/jquery/src/manipulation/var/rscriptType.js
          new file mode 100644
          index 0000000..0c77c8a
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/var/rscriptType.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /^$|\/(?:java|ecma)script/i );
          +} );
          diff --git a/public/theme/jquery/src/manipulation/var/rtagName.js b/public/theme/jquery/src/manipulation/var/rtagName.js
          new file mode 100644
          index 0000000..9e54269
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/var/rtagName.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /<([\w:-]+)/ );
          +} );
          diff --git a/public/theme/jquery/src/manipulation/wrapMap.js b/public/theme/jquery/src/manipulation/wrapMap.js
          new file mode 100644
          index 0000000..fdb430a
          --- /dev/null
          +++ b/public/theme/jquery/src/manipulation/wrapMap.js
          @@ -0,0 +1,27 @@
          +define( function() {
          +
          +// We have to close these tags to support XHTML (#13200)
          +var wrapMap = {
          +
          +	// Support: IE9
          +	option: [ 1, "<select multiple='multiple'>", "</select>" ],
          +
          +	// XHTML parsers do not magically insert elements in the
          +	// same way that tag soup parsers do. So we cannot shorten
          +	// this by omitting <tbody> or other required elements.
          +	thead: [ 1, "<table>", "</table>" ],
          +	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
          +	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
          +	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
          +
          +	_default: [ 0, "", "" ]
          +};
          +
          +// Support: IE9
          +wrapMap.optgroup = wrapMap.option;
          +
          +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
          +wrapMap.th = wrapMap.td;
          +
          +return wrapMap;
          +} );
          diff --git a/public/theme/jquery/src/offset.js b/public/theme/jquery/src/offset.js
          new file mode 100644
          index 0000000..08a4543
          --- /dev/null
          +++ b/public/theme/jquery/src/offset.js
          @@ -0,0 +1,218 @@
          +define( [
          +	"./core",
          +	"./core/access",
          +	"./var/document",
          +	"./var/documentElement",
          +	"./css/var/rnumnonpx",
          +	"./css/curCSS",
          +	"./css/addGetHookIf",
          +	"./css/support",
          +
          +	"./core/init",
          +	"./css",
          +	"./selector" // contains
          +], function( jQuery, access, document, documentElement, rnumnonpx, curCSS, addGetHookIf, support ) {
          +
          +/**
          + * Gets a window from an element
          + */
          +function getWindow( elem ) {
          +	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
          +}
          +
          +jQuery.offset = {
          +	setOffset: function( elem, options, i ) {
          +		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
          +			position = jQuery.css( elem, "position" ),
          +			curElem = jQuery( elem ),
          +			props = {};
          +
          +		// Set position first, in-case top/left are set even on static elem
          +		if ( position === "static" ) {
          +			elem.style.position = "relative";
          +		}
          +
          +		curOffset = curElem.offset();
          +		curCSSTop = jQuery.css( elem, "top" );
          +		curCSSLeft = jQuery.css( elem, "left" );
          +		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
          +			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
          +
          +		// Need to be able to calculate position if either
          +		// top or left is auto and position is either absolute or fixed
          +		if ( calculatePosition ) {
          +			curPosition = curElem.position();
          +			curTop = curPosition.top;
          +			curLeft = curPosition.left;
          +
          +		} else {
          +			curTop = parseFloat( curCSSTop ) || 0;
          +			curLeft = parseFloat( curCSSLeft ) || 0;
          +		}
          +
          +		if ( jQuery.isFunction( options ) ) {
          +
          +			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
          +			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
          +		}
          +
          +		if ( options.top != null ) {
          +			props.top = ( options.top - curOffset.top ) + curTop;
          +		}
          +		if ( options.left != null ) {
          +			props.left = ( options.left - curOffset.left ) + curLeft;
          +		}
          +
          +		if ( "using" in options ) {
          +			options.using.call( elem, props );
          +
          +		} else {
          +			curElem.css( props );
          +		}
          +	}
          +};
          +
          +jQuery.fn.extend( {
          +	offset: function( options ) {
          +		if ( arguments.length ) {
          +			return options === undefined ?
          +				this :
          +				this.each( function( i ) {
          +					jQuery.offset.setOffset( this, options, i );
          +				} );
          +		}
          +
          +		var docElem, win,
          +			elem = this[ 0 ],
          +			box = { top: 0, left: 0 },
          +			doc = elem && elem.ownerDocument;
          +
          +		if ( !doc ) {
          +			return;
          +		}
          +
          +		docElem = doc.documentElement;
          +
          +		// Make sure it's not a disconnected DOM node
          +		if ( !jQuery.contains( docElem, elem ) ) {
          +			return box;
          +		}
          +
          +		box = elem.getBoundingClientRect();
          +		win = getWindow( doc );
          +		return {
          +			top: box.top + win.pageYOffset - docElem.clientTop,
          +			left: box.left + win.pageXOffset - docElem.clientLeft
          +		};
          +	},
          +
          +	position: function() {
          +		if ( !this[ 0 ] ) {
          +			return;
          +		}
          +
          +		var offsetParent, offset,
          +			elem = this[ 0 ],
          +			parentOffset = { top: 0, left: 0 };
          +
          +		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
          +		// because it is its only offset parent
          +		if ( jQuery.css( elem, "position" ) === "fixed" ) {
          +
          +			// Assume getBoundingClientRect is there when computed position is fixed
          +			offset = elem.getBoundingClientRect();
          +
          +		} else {
          +
          +			// Get *real* offsetParent
          +			offsetParent = this.offsetParent();
          +
          +			// Get correct offsets
          +			offset = this.offset();
          +			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
          +				parentOffset = offsetParent.offset();
          +			}
          +
          +			// Add offsetParent borders
          +			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
          +			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
          +		}
          +
          +		// Subtract parent offsets and element margins
          +		return {
          +			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
          +			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
          +		};
          +	},
          +
          +	// This method will return documentElement in the following cases:
          +	// 1) For the element inside the iframe without offsetParent, this method will return
          +	//    documentElement of the parent window
          +	// 2) For the hidden or detached element
          +	// 3) For body or html element, i.e. in case of the html node - it will return itself
          +	//
          +	// but those exceptions were never presented as a real life use-cases
          +	// and might be considered as more preferable results.
          +	//
          +	// This logic, however, is not guaranteed and can change at any point in the future
          +	offsetParent: function() {
          +		return this.map( function() {
          +			var offsetParent = this.offsetParent;
          +
          +			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
          +				offsetParent = offsetParent.offsetParent;
          +			}
          +
          +			return offsetParent || documentElement;
          +		} );
          +	}
          +} );
          +
          +// Create scrollLeft and scrollTop methods
          +jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
          +	var top = "pageYOffset" === prop;
          +
          +	jQuery.fn[ method ] = function( val ) {
          +		return access( this, function( elem, method, val ) {
          +			var win = getWindow( elem );
          +
          +			if ( val === undefined ) {
          +				return win ? win[ prop ] : elem[ method ];
          +			}
          +
          +			if ( win ) {
          +				win.scrollTo(
          +					!top ? val : win.pageXOffset,
          +					top ? val : win.pageYOffset
          +				);
          +
          +			} else {
          +				elem[ method ] = val;
          +			}
          +		}, method, val, arguments.length );
          +	};
          +} );
          +
          +// Support: Safari<7-8+, Chrome<37-44+
          +// Add the top/left cssHooks using jQuery.fn.position
          +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
          +// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
          +// getComputedStyle returns percent when specified for top/left/bottom/right;
          +// rather than make the css module depend on the offset module, just check for it here
          +jQuery.each( [ "top", "left" ], function( i, prop ) {
          +	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
          +		function( elem, computed ) {
          +			if ( computed ) {
          +				computed = curCSS( elem, prop );
          +
          +				// If curCSS returns percentage, fallback to offset
          +				return rnumnonpx.test( computed ) ?
          +					jQuery( elem ).position()[ prop ] + "px" :
          +					computed;
          +			}
          +		}
          +	);
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/outro.js b/public/theme/jquery/src/outro.js
          new file mode 100644
          index 0000000..d792ffb
          --- /dev/null
          +++ b/public/theme/jquery/src/outro.js
          @@ -0,0 +1,2 @@
          +return jQuery;
          +}));
          diff --git a/public/theme/jquery/src/queue.js b/public/theme/jquery/src/queue.js
          new file mode 100644
          index 0000000..813c41c
          --- /dev/null
          +++ b/public/theme/jquery/src/queue.js
          @@ -0,0 +1,143 @@
          +define( [
          +	"./core",
          +	"./data/var/dataPriv",
          +	"./deferred",
          +	"./callbacks"
          +], function( jQuery, dataPriv ) {
          +
          +jQuery.extend( {
          +	queue: function( elem, type, data ) {
          +		var queue;
          +
          +		if ( elem ) {
          +			type = ( type || "fx" ) + "queue";
          +			queue = dataPriv.get( elem, type );
          +
          +			// Speed up dequeue by getting out quickly if this is just a lookup
          +			if ( data ) {
          +				if ( !queue || jQuery.isArray( data ) ) {
          +					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
          +				} else {
          +					queue.push( data );
          +				}
          +			}
          +			return queue || [];
          +		}
          +	},
          +
          +	dequeue: function( elem, type ) {
          +		type = type || "fx";
          +
          +		var queue = jQuery.queue( elem, type ),
          +			startLength = queue.length,
          +			fn = queue.shift(),
          +			hooks = jQuery._queueHooks( elem, type ),
          +			next = function() {
          +				jQuery.dequeue( elem, type );
          +			};
          +
          +		// If the fx queue is dequeued, always remove the progress sentinel
          +		if ( fn === "inprogress" ) {
          +			fn = queue.shift();
          +			startLength--;
          +		}
          +
          +		if ( fn ) {
          +
          +			// Add a progress sentinel to prevent the fx queue from being
          +			// automatically dequeued
          +			if ( type === "fx" ) {
          +				queue.unshift( "inprogress" );
          +			}
          +
          +			// Clear up the last queue stop function
          +			delete hooks.stop;
          +			fn.call( elem, next, hooks );
          +		}
          +
          +		if ( !startLength && hooks ) {
          +			hooks.empty.fire();
          +		}
          +	},
          +
          +	// Not public - generate a queueHooks object, or return the current one
          +	_queueHooks: function( elem, type ) {
          +		var key = type + "queueHooks";
          +		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
          +			empty: jQuery.Callbacks( "once memory" ).add( function() {
          +				dataPriv.remove( elem, [ type + "queue", key ] );
          +			} )
          +		} );
          +	}
          +} );
          +
          +jQuery.fn.extend( {
          +	queue: function( type, data ) {
          +		var setter = 2;
          +
          +		if ( typeof type !== "string" ) {
          +			data = type;
          +			type = "fx";
          +			setter--;
          +		}
          +
          +		if ( arguments.length < setter ) {
          +			return jQuery.queue( this[ 0 ], type );
          +		}
          +
          +		return data === undefined ?
          +			this :
          +			this.each( function() {
          +				var queue = jQuery.queue( this, type, data );
          +
          +				// Ensure a hooks for this queue
          +				jQuery._queueHooks( this, type );
          +
          +				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
          +					jQuery.dequeue( this, type );
          +				}
          +			} );
          +	},
          +	dequeue: function( type ) {
          +		return this.each( function() {
          +			jQuery.dequeue( this, type );
          +		} );
          +	},
          +	clearQueue: function( type ) {
          +		return this.queue( type || "fx", [] );
          +	},
          +
          +	// Get a promise resolved when queues of a certain type
          +	// are emptied (fx is the type by default)
          +	promise: function( type, obj ) {
          +		var tmp,
          +			count = 1,
          +			defer = jQuery.Deferred(),
          +			elements = this,
          +			i = this.length,
          +			resolve = function() {
          +				if ( !( --count ) ) {
          +					defer.resolveWith( elements, [ elements ] );
          +				}
          +			};
          +
          +		if ( typeof type !== "string" ) {
          +			obj = type;
          +			type = undefined;
          +		}
          +		type = type || "fx";
          +
          +		while ( i-- ) {
          +			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
          +			if ( tmp && tmp.empty ) {
          +				count++;
          +				tmp.empty.add( resolve );
          +			}
          +		}
          +		resolve();
          +		return defer.promise( obj );
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/queue/delay.js b/public/theme/jquery/src/queue/delay.js
          new file mode 100644
          index 0000000..8d5844d
          --- /dev/null
          +++ b/public/theme/jquery/src/queue/delay.js
          @@ -0,0 +1,22 @@
          +define( [
          +	"../core",
          +	"../queue",
          +	"../effects" // Delay is optional because of this dependency
          +], function( jQuery ) {
          +
          +// Based off of the plugin by Clint Helfers, with permission.
          +// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
          +jQuery.fn.delay = function( time, type ) {
          +	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
          +	type = type || "fx";
          +
          +	return this.queue( type, function( next, hooks ) {
          +		var timeout = window.setTimeout( next, time );
          +		hooks.stop = function() {
          +			window.clearTimeout( timeout );
          +		};
          +	} );
          +};
          +
          +return jQuery.fn.delay;
          +} );
          diff --git a/public/theme/jquery/src/selector-native.js b/public/theme/jquery/src/selector-native.js
          new file mode 100644
          index 0000000..ee81483
          --- /dev/null
          +++ b/public/theme/jquery/src/selector-native.js
          @@ -0,0 +1,211 @@
          +define( [
          +	"./core",
          +	"./var/document",
          +	"./var/documentElement",
          +	"./var/hasOwn",
          +	"./var/indexOf"
          +], function( jQuery, document, documentElement, hasOwn, indexOf ) {
          +
          +/*
          + * Optional (non-Sizzle) selector module for custom builds.
          + *
          + * Note that this DOES NOT SUPPORT many documented jQuery
          + * features in exchange for its smaller size:
          + *
          + * Attribute not equal selector
          + * Positional selectors (:first; :eq(n); :odd; etc.)
          + * Type selectors (:input; :checkbox; :button; etc.)
          + * State-based selectors (:animated; :visible; :hidden; etc.)
          + * :has(selector)
          + * :not(complex selector)
          + * custom selectors via Sizzle extensions
          + * Leading combinators (e.g., $collection.find("> *"))
          + * Reliable functionality on XML fragments
          + * Requiring all parts of a selector to match elements under context
          + *   (e.g., $div.find("div > *") now matches children of $div)
          + * Matching against non-elements
          + * Reliable sorting of disconnected nodes
          + * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
          + *
          + * If any of these are unacceptable tradeoffs, either use Sizzle or
          + * customize this stub for the project's specific needs.
          + */
          +
          +var hasDuplicate, sortInput,
          +	sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
          +	matches = documentElement.matches ||
          +		documentElement.webkitMatchesSelector ||
          +		documentElement.mozMatchesSelector ||
          +		documentElement.oMatchesSelector ||
          +		documentElement.msMatchesSelector;
          +
          +function sortOrder( a, b ) {
          +
          +	// Flag for duplicate removal
          +	if ( a === b ) {
          +		hasDuplicate = true;
          +		return 0;
          +	}
          +
          +	// Sort on method existence if only one input has compareDocumentPosition
          +	var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
          +	if ( compare ) {
          +		return compare;
          +	}
          +
          +	// Calculate position if both inputs belong to the same document
          +	compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
          +		a.compareDocumentPosition( b ) :
          +
          +		// Otherwise we know they are disconnected
          +		1;
          +
          +	// Disconnected nodes
          +	if ( compare & 1 ) {
          +
          +		// Choose the first element that is related to our preferred document
          +		if ( a === document || a.ownerDocument === document &&
          +			jQuery.contains( document, a ) ) {
          +			return -1;
          +		}
          +		if ( b === document || b.ownerDocument === document &&
          +			jQuery.contains( document, b ) ) {
          +			return 1;
          +		}
          +
          +		// Maintain original order
          +		return sortInput ?
          +			( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
          +			0;
          +	}
          +
          +	return compare & 4 ? -1 : 1;
          +}
          +
          +function uniqueSort( results ) {
          +	var elem,
          +		duplicates = [],
          +		j = 0,
          +		i = 0;
          +
          +	hasDuplicate = false;
          +	sortInput = !sortStable && results.slice( 0 );
          +	results.sort( sortOrder );
          +
          +	if ( hasDuplicate ) {
          +		while ( ( elem = results[ i++ ] ) ) {
          +			if ( elem === results[ i ] ) {
          +				j = duplicates.push( i );
          +			}
          +		}
          +		while ( j-- ) {
          +			results.splice( duplicates[ j ], 1 );
          +		}
          +	}
          +
          +	// Clear input after sorting to release objects
          +	// See https://github.com/jquery/sizzle/pull/225
          +	sortInput = null;
          +
          +	return results;
          +}
          +
          +jQuery.extend( {
          +	find: function( selector, context, results, seed ) {
          +		var elem, nodeType,
          +			i = 0;
          +
          +		results = results || [];
          +		context = context || document;
          +
          +		// Same basic safeguard as Sizzle
          +		if ( !selector || typeof selector !== "string" ) {
          +			return results;
          +		}
          +
          +		// Early return if context is not an element or document
          +		if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
          +			return [];
          +		}
          +
          +		if ( seed ) {
          +			while ( ( elem = seed[ i++ ] ) ) {
          +				if ( jQuery.find.matchesSelector( elem, selector ) ) {
          +					results.push( elem );
          +				}
          +			}
          +		} else {
          +			jQuery.merge( results, context.querySelectorAll( selector ) );
          +		}
          +
          +		return results;
          +	},
          +	uniqueSort: uniqueSort,
          +	unique: uniqueSort,
          +	text: function( elem ) {
          +		var node,
          +			ret = "",
          +			i = 0,
          +			nodeType = elem.nodeType;
          +
          +		if ( !nodeType ) {
          +
          +			// If no nodeType, this is expected to be an array
          +			while ( ( node = elem[ i++ ] ) ) {
          +
          +				// Do not traverse comment nodes
          +				ret += jQuery.text( node );
          +			}
          +		} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
          +
          +			// Use textContent for elements
          +			return elem.textContent;
          +		} else if ( nodeType === 3 || nodeType === 4 ) {
          +			return elem.nodeValue;
          +		}
          +
          +		// Do not include comment or processing instruction nodes
          +
          +		return ret;
          +	},
          +	contains: function( a, b ) {
          +		var adown = a.nodeType === 9 ? a.documentElement : a,
          +			bup = b && b.parentNode;
          +		return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
          +	},
          +	isXMLDoc: function( elem ) {
          +
          +		// documentElement is verified for cases where it doesn't yet exist
          +		// (such as loading iframes in IE - #4833)
          +		var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
          +		return documentElement ? documentElement.nodeName !== "HTML" : false;
          +	},
          +	expr: {
          +		attrHandle: {},
          +		match: {
          +			bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
          +				"|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
          +			needsContext: /^[\x20\t\r\n\f]*[>+~]/
          +		}
          +	}
          +} );
          +
          +jQuery.extend( jQuery.find, {
          +	matches: function( expr, elements ) {
          +		return jQuery.find( expr, null, null, elements );
          +	},
          +	matchesSelector: function( elem, expr ) {
          +		return matches.call( elem, expr );
          +	},
          +	attr: function( elem, name ) {
          +		var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
          +
          +			// Don't get fooled by Object.prototype properties (jQuery #13807)
          +			value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
          +				fn( elem, name, jQuery.isXMLDoc( elem ) ) :
          +				undefined;
          +		return value !== undefined ? value : elem.getAttribute( name );
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/selector-sizzle.js b/public/theme/jquery/src/selector-sizzle.js
          new file mode 100644
          index 0000000..9728a1f
          --- /dev/null
          +++ b/public/theme/jquery/src/selector-sizzle.js
          @@ -0,0 +1,14 @@
          +define( [
          +	"./core",
          +	"../external/sizzle/dist/sizzle"
          +], function( jQuery, Sizzle ) {
          +
          +jQuery.find = Sizzle;
          +jQuery.expr = Sizzle.selectors;
          +jQuery.expr[ ":" ] = jQuery.expr.pseudos;
          +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
          +jQuery.text = Sizzle.getText;
          +jQuery.isXMLDoc = Sizzle.isXML;
          +jQuery.contains = Sizzle.contains;
          +
          +} );
          diff --git a/public/theme/jquery/src/selector.js b/public/theme/jquery/src/selector.js
          new file mode 100644
          index 0000000..e13f585
          --- /dev/null
          +++ b/public/theme/jquery/src/selector.js
          @@ -0,0 +1 @@
          +define( [ "./selector-sizzle" ], function() {} );
          diff --git a/public/theme/jquery/src/serialize.js b/public/theme/jquery/src/serialize.js
          new file mode 100644
          index 0000000..94698fc
          --- /dev/null
          +++ b/public/theme/jquery/src/serialize.js
          @@ -0,0 +1,125 @@
          +define( [
          +	"./core",
          +	"./manipulation/var/rcheckableType",
          +	"./core/init",
          +	"./traversing", // filter
          +	"./attributes/prop"
          +], function( jQuery, rcheckableType ) {
          +
          +var r20 = /%20/g,
          +	rbracket = /\[\]$/,
          +	rCRLF = /\r?\n/g,
          +	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
          +	rsubmittable = /^(?:input|select|textarea|keygen)/i;
          +
          +function buildParams( prefix, obj, traditional, add ) {
          +	var name;
          +
          +	if ( jQuery.isArray( obj ) ) {
          +
          +		// Serialize array item.
          +		jQuery.each( obj, function( i, v ) {
          +			if ( traditional || rbracket.test( prefix ) ) {
          +
          +				// Treat each array item as a scalar.
          +				add( prefix, v );
          +
          +			} else {
          +
          +				// Item is non-scalar (array or object), encode its numeric index.
          +				buildParams(
          +					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
          +					v,
          +					traditional,
          +					add
          +				);
          +			}
          +		} );
          +
          +	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
          +
          +		// Serialize object item.
          +		for ( name in obj ) {
          +			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
          +		}
          +
          +	} else {
          +
          +		// Serialize scalar item.
          +		add( prefix, obj );
          +	}
          +}
          +
          +// Serialize an array of form elements or a set of
          +// key/values into a query string
          +jQuery.param = function( a, traditional ) {
          +	var prefix,
          +		s = [],
          +		add = function( key, value ) {
          +
          +			// If value is a function, invoke it and return its value
          +			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
          +			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
          +		};
          +
          +	// Set traditional to true for jQuery <= 1.3.2 behavior.
          +	if ( traditional === undefined ) {
          +		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
          +	}
          +
          +	// If an array was passed in, assume that it is an array of form elements.
          +	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
          +
          +		// Serialize the form elements
          +		jQuery.each( a, function() {
          +			add( this.name, this.value );
          +		} );
          +
          +	} else {
          +
          +		// If traditional, encode the "old" way (the way 1.3.2 or older
          +		// did it), otherwise encode params recursively.
          +		for ( prefix in a ) {
          +			buildParams( prefix, a[ prefix ], traditional, add );
          +		}
          +	}
          +
          +	// Return the resulting serialization
          +	return s.join( "&" ).replace( r20, "+" );
          +};
          +
          +jQuery.fn.extend( {
          +	serialize: function() {
          +		return jQuery.param( this.serializeArray() );
          +	},
          +	serializeArray: function() {
          +		return this.map( function() {
          +
          +			// Can add propHook for "elements" to filter or add form elements
          +			var elements = jQuery.prop( this, "elements" );
          +			return elements ? jQuery.makeArray( elements ) : this;
          +		} )
          +		.filter( function() {
          +			var type = this.type;
          +
          +			// Use .is( ":disabled" ) so that fieldset[disabled] works
          +			return this.name && !jQuery( this ).is( ":disabled" ) &&
          +				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
          +				( this.checked || !rcheckableType.test( type ) );
          +		} )
          +		.map( function( i, elem ) {
          +			var val = jQuery( this ).val();
          +
          +			return val == null ?
          +				null :
          +				jQuery.isArray( val ) ?
          +					jQuery.map( val, function( val ) {
          +						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +					} ) :
          +					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +		} ).get();
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/traversing.js b/public/theme/jquery/src/traversing.js
          new file mode 100644
          index 0000000..0d4c1c4
          --- /dev/null
          +++ b/public/theme/jquery/src/traversing.js
          @@ -0,0 +1,175 @@
          +define( [
          +	"./core",
          +	"./var/indexOf",
          +	"./traversing/var/dir",
          +	"./traversing/var/siblings",
          +	"./traversing/var/rneedsContext",
          +	"./core/init",
          +	"./traversing/findFilter",
          +	"./selector"
          +], function( jQuery, indexOf, dir, siblings, rneedsContext ) {
          +
          +var rparentsprev = /^(?:parents|prev(?:Until|All))/,
          +
          +	// Methods guaranteed to produce a unique set when starting from a unique set
          +	guaranteedUnique = {
          +		children: true,
          +		contents: true,
          +		next: true,
          +		prev: true
          +	};
          +
          +jQuery.fn.extend( {
          +	has: function( target ) {
          +		var targets = jQuery( target, this ),
          +			l = targets.length;
          +
          +		return this.filter( function() {
          +			var i = 0;
          +			for ( ; i < l; i++ ) {
          +				if ( jQuery.contains( this, targets[ i ] ) ) {
          +					return true;
          +				}
          +			}
          +		} );
          +	},
          +
          +	closest: function( selectors, context ) {
          +		var cur,
          +			i = 0,
          +			l = this.length,
          +			matched = [],
          +			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
          +				jQuery( selectors, context || this.context ) :
          +				0;
          +
          +		for ( ; i < l; i++ ) {
          +			for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
          +
          +				// Always skip document fragments
          +				if ( cur.nodeType < 11 && ( pos ?
          +					pos.index( cur ) > -1 :
          +
          +					// Don't pass non-elements to Sizzle
          +					cur.nodeType === 1 &&
          +						jQuery.find.matchesSelector( cur, selectors ) ) ) {
          +
          +					matched.push( cur );
          +					break;
          +				}
          +			}
          +		}
          +
          +		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
          +	},
          +
          +	// Determine the position of an element within the set
          +	index: function( elem ) {
          +
          +		// No argument, return index in parent
          +		if ( !elem ) {
          +			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
          +		}
          +
          +		// Index in selector
          +		if ( typeof elem === "string" ) {
          +			return indexOf.call( jQuery( elem ), this[ 0 ] );
          +		}
          +
          +		// Locate the position of the desired element
          +		return indexOf.call( this,
          +
          +			// If it receives a jQuery object, the first element is used
          +			elem.jquery ? elem[ 0 ] : elem
          +		);
          +	},
          +
          +	add: function( selector, context ) {
          +		return this.pushStack(
          +			jQuery.uniqueSort(
          +				jQuery.merge( this.get(), jQuery( selector, context ) )
          +			)
          +		);
          +	},
          +
          +	addBack: function( selector ) {
          +		return this.add( selector == null ?
          +			this.prevObject : this.prevObject.filter( selector )
          +		);
          +	}
          +} );
          +
          +function sibling( cur, dir ) {
          +	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
          +	return cur;
          +}
          +
          +jQuery.each( {
          +	parent: function( elem ) {
          +		var parent = elem.parentNode;
          +		return parent && parent.nodeType !== 11 ? parent : null;
          +	},
          +	parents: function( elem ) {
          +		return dir( elem, "parentNode" );
          +	},
          +	parentsUntil: function( elem, i, until ) {
          +		return dir( elem, "parentNode", until );
          +	},
          +	next: function( elem ) {
          +		return sibling( elem, "nextSibling" );
          +	},
          +	prev: function( elem ) {
          +		return sibling( elem, "previousSibling" );
          +	},
          +	nextAll: function( elem ) {
          +		return dir( elem, "nextSibling" );
          +	},
          +	prevAll: function( elem ) {
          +		return dir( elem, "previousSibling" );
          +	},
          +	nextUntil: function( elem, i, until ) {
          +		return dir( elem, "nextSibling", until );
          +	},
          +	prevUntil: function( elem, i, until ) {
          +		return dir( elem, "previousSibling", until );
          +	},
          +	siblings: function( elem ) {
          +		return siblings( ( elem.parentNode || {} ).firstChild, elem );
          +	},
          +	children: function( elem ) {
          +		return siblings( elem.firstChild );
          +	},
          +	contents: function( elem ) {
          +		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
          +	}
          +}, function( name, fn ) {
          +	jQuery.fn[ name ] = function( until, selector ) {
          +		var matched = jQuery.map( this, fn, until );
          +
          +		if ( name.slice( -5 ) !== "Until" ) {
          +			selector = until;
          +		}
          +
          +		if ( selector && typeof selector === "string" ) {
          +			matched = jQuery.filter( selector, matched );
          +		}
          +
          +		if ( this.length > 1 ) {
          +
          +			// Remove duplicates
          +			if ( !guaranteedUnique[ name ] ) {
          +				jQuery.uniqueSort( matched );
          +			}
          +
          +			// Reverse order for parents* and prev-derivatives
          +			if ( rparentsprev.test( name ) ) {
          +				matched.reverse();
          +			}
          +		}
          +
          +		return this.pushStack( matched );
          +	};
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/jquery/src/traversing/findFilter.js b/public/theme/jquery/src/traversing/findFilter.js
          new file mode 100644
          index 0000000..7d4b2ca
          --- /dev/null
          +++ b/public/theme/jquery/src/traversing/findFilter.js
          @@ -0,0 +1,100 @@
          +define( [
          +	"../core",
          +	"../var/indexOf",
          +	"./var/rneedsContext",
          +	"../selector"
          +], function( jQuery, indexOf, rneedsContext ) {
          +
          +var risSimple = /^.[^:#\[\.,]*$/;
          +
          +// Implement the identical functionality for filter and not
          +function winnow( elements, qualifier, not ) {
          +	if ( jQuery.isFunction( qualifier ) ) {
          +		return jQuery.grep( elements, function( elem, i ) {
          +			/* jshint -W018 */
          +			return !!qualifier.call( elem, i, elem ) !== not;
          +		} );
          +
          +	}
          +
          +	if ( qualifier.nodeType ) {
          +		return jQuery.grep( elements, function( elem ) {
          +			return ( elem === qualifier ) !== not;
          +		} );
          +
          +	}
          +
          +	if ( typeof qualifier === "string" ) {
          +		if ( risSimple.test( qualifier ) ) {
          +			return jQuery.filter( qualifier, elements, not );
          +		}
          +
          +		qualifier = jQuery.filter( qualifier, elements );
          +	}
          +
          +	return jQuery.grep( elements, function( elem ) {
          +		return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
          +	} );
          +}
          +
          +jQuery.filter = function( expr, elems, not ) {
          +	var elem = elems[ 0 ];
          +
          +	if ( not ) {
          +		expr = ":not(" + expr + ")";
          +	}
          +
          +	return elems.length === 1 && elem.nodeType === 1 ?
          +		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
          +		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
          +			return elem.nodeType === 1;
          +		} ) );
          +};
          +
          +jQuery.fn.extend( {
          +	find: function( selector ) {
          +		var i,
          +			len = this.length,
          +			ret = [],
          +			self = this;
          +
          +		if ( typeof selector !== "string" ) {
          +			return this.pushStack( jQuery( selector ).filter( function() {
          +				for ( i = 0; i < len; i++ ) {
          +					if ( jQuery.contains( self[ i ], this ) ) {
          +						return true;
          +					}
          +				}
          +			} ) );
          +		}
          +
          +		for ( i = 0; i < len; i++ ) {
          +			jQuery.find( selector, self[ i ], ret );
          +		}
          +
          +		// Needed because $( selector, context ) becomes $( context ).find( selector )
          +		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
          +		ret.selector = this.selector ? this.selector + " " + selector : selector;
          +		return ret;
          +	},
          +	filter: function( selector ) {
          +		return this.pushStack( winnow( this, selector || [], false ) );
          +	},
          +	not: function( selector ) {
          +		return this.pushStack( winnow( this, selector || [], true ) );
          +	},
          +	is: function( selector ) {
          +		return !!winnow(
          +			this,
          +
          +			// If this is a positional/relative selector, check membership in the returned set
          +			// so $("p:first").is("p:last") won't return true for a doc with two "p".
          +			typeof selector === "string" && rneedsContext.test( selector ) ?
          +				jQuery( selector ) :
          +				selector || [],
          +			false
          +		).length;
          +	}
          +} );
          +
          +} );
          diff --git a/public/theme/jquery/src/traversing/var/dir.js b/public/theme/jquery/src/traversing/var/dir.js
          new file mode 100644
          index 0000000..b98fdca
          --- /dev/null
          +++ b/public/theme/jquery/src/traversing/var/dir.js
          @@ -0,0 +1,20 @@
          +define( [
          +	"../../core"
          +], function( jQuery ) {
          +
          +return function( elem, dir, until ) {
          +	var matched = [],
          +		truncate = until !== undefined;
          +
          +	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
          +		if ( elem.nodeType === 1 ) {
          +			if ( truncate && jQuery( elem ).is( until ) ) {
          +				break;
          +			}
          +			matched.push( elem );
          +		}
          +	}
          +	return matched;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/traversing/var/rneedsContext.js b/public/theme/jquery/src/traversing/var/rneedsContext.js
          new file mode 100644
          index 0000000..f57fd9d
          --- /dev/null
          +++ b/public/theme/jquery/src/traversing/var/rneedsContext.js
          @@ -0,0 +1,6 @@
          +define( [
          +	"../../core",
          +	"../../selector"
          +], function( jQuery ) {
          +	return jQuery.expr.match.needsContext;
          +} );
          diff --git a/public/theme/jquery/src/traversing/var/siblings.js b/public/theme/jquery/src/traversing/var/siblings.js
          new file mode 100644
          index 0000000..8a8880b
          --- /dev/null
          +++ b/public/theme/jquery/src/traversing/var/siblings.js
          @@ -0,0 +1,15 @@
          +define( function() {
          +
          +return function( n, elem ) {
          +	var matched = [];
          +
          +	for ( ; n; n = n.nextSibling ) {
          +		if ( n.nodeType === 1 && n !== elem ) {
          +			matched.push( n );
          +		}
          +	}
          +
          +	return matched;
          +};
          +
          +} );
          diff --git a/public/theme/jquery/src/var/arr.js b/public/theme/jquery/src/var/arr.js
          new file mode 100644
          index 0000000..3fd3640
          --- /dev/null
          +++ b/public/theme/jquery/src/var/arr.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return [];
          +} );
          diff --git a/public/theme/jquery/src/var/class2type.js b/public/theme/jquery/src/var/class2type.js
          new file mode 100644
          index 0000000..3a6932e
          --- /dev/null
          +++ b/public/theme/jquery/src/var/class2type.js
          @@ -0,0 +1,5 @@
          +define( function() {
          +
          +	// [[Class]] -> type pairs
          +	return {};
          +} );
          diff --git a/public/theme/jquery/src/var/concat.js b/public/theme/jquery/src/var/concat.js
          new file mode 100644
          index 0000000..9787bea
          --- /dev/null
          +++ b/public/theme/jquery/src/var/concat.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./arr"
          +], function( arr ) {
          +	return arr.concat;
          +} );
          diff --git a/public/theme/jquery/src/var/document.js b/public/theme/jquery/src/var/document.js
          new file mode 100644
          index 0000000..bb94284
          --- /dev/null
          +++ b/public/theme/jquery/src/var/document.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return window.document;
          +} );
          diff --git a/public/theme/jquery/src/var/documentElement.js b/public/theme/jquery/src/var/documentElement.js
          new file mode 100644
          index 0000000..e0c0aea
          --- /dev/null
          +++ b/public/theme/jquery/src/var/documentElement.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./document"
          +], function( document ) {
          +	return document.documentElement;
          +} );
          diff --git a/public/theme/jquery/src/var/hasOwn.js b/public/theme/jquery/src/var/hasOwn.js
          new file mode 100644
          index 0000000..92f323e
          --- /dev/null
          +++ b/public/theme/jquery/src/var/hasOwn.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./class2type"
          +], function( class2type ) {
          +	return class2type.hasOwnProperty;
          +} );
          diff --git a/public/theme/jquery/src/var/indexOf.js b/public/theme/jquery/src/var/indexOf.js
          new file mode 100644
          index 0000000..5283841
          --- /dev/null
          +++ b/public/theme/jquery/src/var/indexOf.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./arr"
          +], function( arr ) {
          +	return arr.indexOf;
          +} );
          diff --git a/public/theme/jquery/src/var/pnum.js b/public/theme/jquery/src/var/pnum.js
          new file mode 100644
          index 0000000..7fd9f66
          --- /dev/null
          +++ b/public/theme/jquery/src/var/pnum.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
          +} );
          diff --git a/public/theme/jquery/src/var/push.js b/public/theme/jquery/src/var/push.js
          new file mode 100644
          index 0000000..bca1a58
          --- /dev/null
          +++ b/public/theme/jquery/src/var/push.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./arr"
          +], function( arr ) {
          +	return arr.push;
          +} );
          diff --git a/public/theme/jquery/src/var/rcssNum.js b/public/theme/jquery/src/var/rcssNum.js
          new file mode 100644
          index 0000000..408f5e2
          --- /dev/null
          +++ b/public/theme/jquery/src/var/rcssNum.js
          @@ -0,0 +1,7 @@
          +define( [
          +	"../var/pnum"
          +], function( pnum ) {
          +
          +return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
          +
          +} );
          diff --git a/public/theme/jquery/src/var/rnotwhite.js b/public/theme/jquery/src/var/rnotwhite.js
          new file mode 100644
          index 0000000..6067728
          --- /dev/null
          +++ b/public/theme/jquery/src/var/rnotwhite.js
          @@ -0,0 +1,3 @@
          +define( function() {
          +	return ( /\S+/g );
          +} );
          diff --git a/public/theme/jquery/src/var/slice.js b/public/theme/jquery/src/var/slice.js
          new file mode 100644
          index 0000000..d8206d3
          --- /dev/null
          +++ b/public/theme/jquery/src/var/slice.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./arr"
          +], function( arr ) {
          +	return arr.slice;
          +} );
          diff --git a/public/theme/jquery/src/var/support.js b/public/theme/jquery/src/var/support.js
          new file mode 100644
          index 0000000..3db9b67
          --- /dev/null
          +++ b/public/theme/jquery/src/var/support.js
          @@ -0,0 +1,5 @@
          +define( function() {
          +
          +	// All support tests are defined in their respective modules.
          +	return {};
          +} );
          diff --git a/public/theme/jquery/src/var/toString.js b/public/theme/jquery/src/var/toString.js
          new file mode 100644
          index 0000000..80ac7f1
          --- /dev/null
          +++ b/public/theme/jquery/src/var/toString.js
          @@ -0,0 +1,5 @@
          +define( [
          +	"./class2type"
          +], function( class2type ) {
          +	return class2type.toString;
          +} );
          diff --git a/public/theme/jquery/src/wrap.js b/public/theme/jquery/src/wrap.js
          new file mode 100644
          index 0000000..4d2c3b2
          --- /dev/null
          +++ b/public/theme/jquery/src/wrap.js
          @@ -0,0 +1,79 @@
          +define( [
          +	"./core",
          +	"./core/init",
          +	"./manipulation", // clone
          +	"./traversing" // parent, contents
          +], function( jQuery ) {
          +
          +jQuery.fn.extend( {
          +	wrapAll: function( html ) {
          +		var wrap;
          +
          +		if ( jQuery.isFunction( html ) ) {
          +			return this.each( function( i ) {
          +				jQuery( this ).wrapAll( html.call( this, i ) );
          +			} );
          +		}
          +
          +		if ( this[ 0 ] ) {
          +
          +			// The elements to wrap the target around
          +			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
          +
          +			if ( this[ 0 ].parentNode ) {
          +				wrap.insertBefore( this[ 0 ] );
          +			}
          +
          +			wrap.map( function() {
          +				var elem = this;
          +
          +				while ( elem.firstElementChild ) {
          +					elem = elem.firstElementChild;
          +				}
          +
          +				return elem;
          +			} ).append( this );
          +		}
          +
          +		return this;
          +	},
          +
          +	wrapInner: function( html ) {
          +		if ( jQuery.isFunction( html ) ) {
          +			return this.each( function( i ) {
          +				jQuery( this ).wrapInner( html.call( this, i ) );
          +			} );
          +		}
          +
          +		return this.each( function() {
          +			var self = jQuery( this ),
          +				contents = self.contents();
          +
          +			if ( contents.length ) {
          +				contents.wrapAll( html );
          +
          +			} else {
          +				self.append( html );
          +			}
          +		} );
          +	},
          +
          +	wrap: function( html ) {
          +		var isFunction = jQuery.isFunction( html );
          +
          +		return this.each( function( i ) {
          +			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
          +		} );
          +	},
          +
          +	unwrap: function() {
          +		return this.parent().each( function() {
          +			if ( !jQuery.nodeName( this, "body" ) ) {
          +				jQuery( this ).replaceWith( this.childNodes );
          +			}
          +		} ).end();
          +	}
          +} );
          +
          +return jQuery;
          +} );
          diff --git a/public/theme/normalize-css/.bower.json b/public/theme/normalize-css/.bower.json
          new file mode 100644
          index 0000000..be42406
          --- /dev/null
          +++ b/public/theme/normalize-css/.bower.json
          @@ -0,0 +1,28 @@
          +{
          +  "name": "normalize-css",
          +  "description": "A modern alternative to CSS resets",
          +  "main": "normalize.css",
          +  "authors": [
          +    "Jonathan Neal <jonathantneal@hotmail.com> (http://jonathantneal.com/)",
          +    "Nicolas Gallagher <nicolas@nicolasgallagher.com> (http://nicolasgallagher.com/)"
          +  ],
          +  "license": "MIT",
          +  "ignore": [
          +    "CHANGELOG.md",
          +    "CONTRIBUTING.md",
          +    "package.json",
          +    "README.md",
          +    "test.html"
          +  ],
          +  "homepage": "https://github.com/necolas/normalize.css",
          +  "version": "4.1.1",
          +  "_release": "4.1.1",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "4.1.1",
          +    "commit": "c6d93dd58df29d23ec0c0e900effc78c785928e3"
          +  },
          +  "_source": "https://github.com/necolas/normalize.css.git",
          +  "_target": "^4.1.1",
          +  "_originalSource": "normalize-css"
          +}
          \ No newline at end of file
          diff --git a/public/theme/normalize-css/.editorconfig b/public/theme/normalize-css/.editorconfig
          new file mode 100644
          index 0000000..4039ff1
          --- /dev/null
          +++ b/public/theme/normalize-css/.editorconfig
          @@ -0,0 +1,12 @@
          +root = true
          +
          +[*]
          +charset = utf-8
          +end_of_line = lf
          +indent_size = 2
          +indent_style = space
          +insert_final_newline = true
          +trim_trailing_whitespace = true
          +
          +[*.md]
          +trim_trailing_whitespace = false
          diff --git a/public/theme/normalize-css/.gitignore b/public/theme/normalize-css/.gitignore
          new file mode 100644
          index 0000000..93f1361
          --- /dev/null
          +++ b/public/theme/normalize-css/.gitignore
          @@ -0,0 +1,2 @@
          +node_modules
          +npm-debug.log
          diff --git a/public/theme/normalize-css/.travis.yml b/public/theme/normalize-css/.travis.yml
          new file mode 100644
          index 0000000..833d09d
          --- /dev/null
          +++ b/public/theme/normalize-css/.travis.yml
          @@ -0,0 +1,3 @@
          +language: node_js
          +node_js:
          +  - stable
          diff --git a/public/theme/normalize-css/LICENSE.md b/public/theme/normalize-css/LICENSE.md
          new file mode 100644
          index 0000000..43b5ddc
          --- /dev/null
          +++ b/public/theme/normalize-css/LICENSE.md
          @@ -0,0 +1,21 @@
          +# The MIT License (MIT)
          +
          +Copyright © Nicolas Gallagher and Jonathan Neal
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be included in all
          +copies or substantial portions of the Software.
          +
          +THE 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.
          diff --git a/public/theme/normalize-css/bower.json b/public/theme/normalize-css/bower.json
          new file mode 100644
          index 0000000..e8f0d67
          --- /dev/null
          +++ b/public/theme/normalize-css/bower.json
          @@ -0,0 +1,17 @@
          +{
          +  "name": "normalize-css",
          +  "description": "A modern alternative to CSS resets",
          +  "main": "normalize.css",
          +  "authors": [
          +    "Jonathan Neal <jonathantneal@hotmail.com> (http://jonathantneal.com/)",
          +    "Nicolas Gallagher <nicolas@nicolasgallagher.com> (http://nicolasgallagher.com/)"
          +  ],
          +  "license": "MIT",
          +  "ignore": [
          +    "CHANGELOG.md",
          +    "CONTRIBUTING.md",
          +    "package.json",
          +    "README.md",
          +    "test.html"
          +  ]
          +}
          diff --git a/public/theme/normalize-css/normalize.css b/public/theme/normalize-css/normalize.css
          new file mode 100644
          index 0000000..18ddf7f
          --- /dev/null
          +++ b/public/theme/normalize-css/normalize.css
          @@ -0,0 +1,419 @@
          +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
          +
          +/**
          + * 1. Change the default font family in all browsers (opinionated).
          + * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
          + */
          +
          +html {
          +  font-family: sans-serif; /* 1 */
          +  -ms-text-size-adjust: 100%; /* 2 */
          +  -webkit-text-size-adjust: 100%; /* 2 */
          +}
          +
          +/**
          + * Remove the margin in all browsers (opinionated).
          + */
          +
          +body {
          +  margin: 0;
          +}
          +
          +/* HTML5 display definitions
          +   ========================================================================== */
          +
          +/**
          + * Add the correct display in IE 9-.
          + * 1. Add the correct display in Edge, IE, and Firefox.
          + * 2. Add the correct display in IE.
          + */
          +
          +article,
          +aside,
          +details, /* 1 */
          +figcaption,
          +figure,
          +footer,
          +header,
          +main, /* 2 */
          +menu,
          +nav,
          +section,
          +summary { /* 1 */
          +  display: block;
          +}
          +
          +/**
          + * Add the correct display in IE 9-.
          + */
          +
          +audio,
          +canvas,
          +progress,
          +video {
          +  display: inline-block;
          +}
          +
          +/**
          + * Add the correct display in iOS 4-7.
          + */
          +
          +audio:not([controls]) {
          +  display: none;
          +  height: 0;
          +}
          +
          +/**
          + * Add the correct vertical alignment in Chrome, Firefox, and Opera.
          + */
          +
          +progress {
          +  vertical-align: baseline;
          +}
          +
          +/**
          + * Add the correct display in IE 10-.
          + * 1. Add the correct display in IE.
          + */
          +
          +template, /* 1 */
          +[hidden] {
          +  display: none;
          +}
          +
          +/* Links
          +   ========================================================================== */
          +
          +/**
          + * 1. Remove the gray background on active links in IE 10.
          + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
          + */
          +
          +a {
          +  background-color: transparent; /* 1 */
          +  -webkit-text-decoration-skip: objects; /* 2 */
          +}
          +
          +/**
          + * Remove the outline on focused links when they are also active or hovered
          + * in all browsers (opinionated).
          + */
          +
          +a:active,
          +a:hover {
          +  outline-width: 0;
          +}
          +
          +/* Text-level semantics
          +   ========================================================================== */
          +
          +/**
          + * 1. Remove the bottom border in Firefox 39-.
          + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
          + */
          +
          +abbr[title] {
          +  border-bottom: none; /* 1 */
          +  text-decoration: underline; /* 2 */
          +  text-decoration: underline dotted; /* 2 */
          +}
          +
          +/**
          + * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
          + */
          +
          +b,
          +strong {
          +  font-weight: inherit;
          +}
          +
          +/**
          + * Add the correct font weight in Chrome, Edge, and Safari.
          + */
          +
          +b,
          +strong {
          +  font-weight: bolder;
          +}
          +
          +/**
          + * Add the correct font style in Android 4.3-.
          + */
          +
          +dfn {
          +  font-style: italic;
          +}
          +
          +/**
          + * Correct the font size and margin on `h1` elements within `section` and
          + * `article` contexts in Chrome, Firefox, and Safari.
          + */
          +
          +h1 {
          +  font-size: 2em;
          +  margin: 0.67em 0;
          +}
          +
          +/**
          + * Add the correct background and color in IE 9-.
          + */
          +
          +mark {
          +  background-color: #ff0;
          +  color: #000;
          +}
          +
          +/**
          + * Add the correct font size in all browsers.
          + */
          +
          +small {
          +  font-size: 80%;
          +}
          +
          +/**
          + * Prevent `sub` and `sup` elements from affecting the line height in
          + * all browsers.
          + */
          +
          +sub,
          +sup {
          +  font-size: 75%;
          +  line-height: 0;
          +  position: relative;
          +  vertical-align: baseline;
          +}
          +
          +sub {
          +  bottom: -0.25em;
          +}
          +
          +sup {
          +  top: -0.5em;
          +}
          +
          +/* Embedded content
          +   ========================================================================== */
          +
          +/**
          + * Remove the border on images inside links in IE 10-.
          + */
          +
          +img {
          +  border-style: none;
          +}
          +
          +/**
          + * Hide the overflow in IE.
          + */
          +
          +svg:not(:root) {
          +  overflow: hidden;
          +}
          +
          +/* Grouping content
          +   ========================================================================== */
          +
          +/**
          + * 1. Correct the inheritance and scaling of font size in all browsers.
          + * 2. Correct the odd `em` font sizing in all browsers.
          + */
          +
          +code,
          +kbd,
          +pre,
          +samp {
          +  font-family: monospace, monospace; /* 1 */
          +  font-size: 1em; /* 2 */
          +}
          +
          +/**
          + * Add the correct margin in IE 8.
          + */
          +
          +figure {
          +  margin: 1em 40px;
          +}
          +
          +/**
          + * 1. Add the correct box sizing in Firefox.
          + * 2. Show the overflow in Edge and IE.
          + */
          +
          +hr {
          +  box-sizing: content-box; /* 1 */
          +  height: 0; /* 1 */
          +  overflow: visible; /* 2 */
          +}
          +
          +/* Forms
          +   ========================================================================== */
          +
          +/**
          + * 1. Change font properties to `inherit` in all browsers (opinionated).
          + * 2. Remove the margin in Firefox and Safari.
          + */
          +
          +button,
          +input,
          +select,
          +textarea {
          +  font: inherit; /* 1 */
          +  margin: 0; /* 2 */
          +}
          +
          +/**
          + * Restore the font weight unset by the previous rule.
          + */
          +
          +optgroup {
          +  font-weight: bold;
          +}
          +
          +/**
          + * Show the overflow in IE.
          + * 1. Show the overflow in Edge.
          + */
          +
          +button,
          +input { /* 1 */
          +  overflow: visible;
          +}
          +
          +/**
          + * Remove the inheritance of text transform in Edge, Firefox, and IE.
          + * 1. Remove the inheritance of text transform in Firefox.
          + */
          +
          +button,
          +select { /* 1 */
          +  text-transform: none;
          +}
          +
          +/**
          + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
          + *    controls in Android 4.
          + * 2. Correct the inability to style clickable types in iOS and Safari.
          + */
          +
          +button,
          +html [type="button"], /* 1 */
          +[type="reset"],
          +[type="submit"] {
          +  -webkit-appearance: button; /* 2 */
          +}
          +
          +/**
          + * Remove the inner border and padding in Firefox.
          + */
          +
          +button::-moz-focus-inner,
          +[type="button"]::-moz-focus-inner,
          +[type="reset"]::-moz-focus-inner,
          +[type="submit"]::-moz-focus-inner {
          +  border-style: none;
          +  padding: 0;
          +}
          +
          +/**
          + * Restore the focus styles unset by the previous rule.
          + */
          +
          +button:-moz-focusring,
          +[type="button"]:-moz-focusring,
          +[type="reset"]:-moz-focusring,
          +[type="submit"]:-moz-focusring {
          +  outline: 1px dotted ButtonText;
          +}
          +
          +/**
          + * Change the border, margin, and padding in all browsers (opinionated).
          + */
          +
          +fieldset {
          +  border: 1px solid #c0c0c0;
          +  margin: 0 2px;
          +  padding: 0.35em 0.625em 0.75em;
          +}
          +
          +/**
          + * 1. Correct the text wrapping in Edge and IE.
          + * 2. Correct the color inheritance from `fieldset` elements in IE.
          + * 3. Remove the padding so developers are not caught out when they zero out
          + *    `fieldset` elements in all browsers.
          + */
          +
          +legend {
          +  box-sizing: border-box; /* 1 */
          +  color: inherit; /* 2 */
          +  display: table; /* 1 */
          +  max-width: 100%; /* 1 */
          +  padding: 0; /* 3 */
          +  white-space: normal; /* 1 */
          +}
          +
          +/**
          + * Remove the default vertical scrollbar in IE.
          + */
          +
          +textarea {
          +  overflow: auto;
          +}
          +
          +/**
          + * 1. Add the correct box sizing in IE 10-.
          + * 2. Remove the padding in IE 10-.
          + */
          +
          +[type="checkbox"],
          +[type="radio"] {
          +  box-sizing: border-box; /* 1 */
          +  padding: 0; /* 2 */
          +}
          +
          +/**
          + * Correct the cursor style of increment and decrement buttons in Chrome.
          + */
          +
          +[type="number"]::-webkit-inner-spin-button,
          +[type="number"]::-webkit-outer-spin-button {
          +  height: auto;
          +}
          +
          +/**
          + * 1. Correct the odd appearance in Chrome and Safari.
          + * 2. Correct the outline style in Safari.
          + */
          +
          +[type="search"] {
          +  -webkit-appearance: textfield; /* 1 */
          +  outline-offset: -2px; /* 2 */
          +}
          +
          +/**
          + * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
          + */
          +
          +[type="search"]::-webkit-search-cancel-button,
          +[type="search"]::-webkit-search-decoration {
          +  -webkit-appearance: none;
          +}
          +
          +/**
          + * Correct the text style of placeholders in Chrome, Edge, and Safari.
          + */
          +
          +::-webkit-input-placeholder {
          +  color: inherit;
          +  opacity: 0.54;
          +}
          +
          +/**
          + * 1. Correct the inability to style clickable types in iOS and Safari.
          + * 2. Change font properties to `inherit` in Safari.
          + */
          +
          +::-webkit-file-upload-button {
          +  -webkit-appearance: button; /* 1 */
          +  font: inherit; /* 2 */
          +}
          diff --git a/public/theme/nprogress/.bower.json b/public/theme/nprogress/.bower.json
          new file mode 100644
          index 0000000..7afee74
          --- /dev/null
          +++ b/public/theme/nprogress/.bower.json
          @@ -0,0 +1,40 @@
          +{
          +  "name": "nprogress",
          +  "repo": "rstacruz/nprogress",
          +  "description": "slim progress bar",
          +  "version": "0.2.0",
          +  "keywords": [
          +    "progress",
          +    "bar",
          +    "spinner"
          +  ],
          +  "license": "MIT",
          +  "main": [
          +    "nprogress.js",
          +    "nprogress.css"
          +  ],
          +  "scripts": [
          +    "nprogress.js"
          +  ],
          +  "styles": [
          +    "nprogress.css"
          +  ],
          +  "ignore": [
          +    "**/.*",
          +    "node_modules",
          +    "components",
          +    "package.json",
          +    "test",
          +    "vendor"
          +  ],
          +  "homepage": "https://github.com/rstacruz/nprogress",
          +  "_release": "0.2.0",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "v0.2.0",
          +    "commit": "d3699f2104f80b4bbb8e2500f7ab939755b2b66b"
          +  },
          +  "_source": "https://github.com/rstacruz/nprogress.git",
          +  "_target": "^0.2.0",
          +  "_originalSource": "nprogress"
          +}
          \ No newline at end of file
          diff --git a/public/theme/nprogress/History.md b/public/theme/nprogress/History.md
          new file mode 100644
          index 0000000..b72f4d7
          --- /dev/null
          +++ b/public/theme/nprogress/History.md
          @@ -0,0 +1,110 @@
          +## [v0.2.0] - May 13, 2015
          +
          + * [#93] - Remove jQuery dependency in component ([@slang800])
          + * [#120] - Fix the Readme showing a wrong example for `ease` ([@teeceepee])
          +
          +Minor changes:
          +
          + * [#92] - Fix typo in Readme ([@FND])
          + * [#90] - Fix typo in Readme ([@mdxs])
          + * [#119] - Fix typo in Readme ([@infertux])
          + * [#53] - Use `===` instead of `==` ([@drodil])
          +
          +## [v0.1.6] - June 25, 2014
          +
          + * [#86] - Add support for specifying a different parent container. ([@jonjaques], [#14], [#33], [#39])
          + * [#64] - Fix Require.js support ([#75], [#85])
          + * [#54] - Fix component support
          +
          +## [v0.1.5] - June 21, 2014
          +
          + * [#82] - Release properly to the npm registry
          +
          +## [v0.1.4] - June 21, 2014
          +
          + * [#65] - Bower: don't download package.json. Fixes browserify + jquery problem. ([@amelon])
          + * [#75] - Fix compatibility with Karma. ([@shaqq])
          + 
          +Internal changes:
          +
          + * [#77] - Use SVG to display Travis-CI badge. ([@Mithgol])
          + * [#34] - Readme: update .inc() and .status docs ([@lacivert])
          + * [#73] - Readme: update year ([@rwholmes])
          +
          +## [v0.1.3] - March 26, 2014
          +
          + * [#7] - Remove jQuery dependency ([#28], [#17], [@rurjur])
          + * [#73] - Update Readme to change year to 2014. ([@rwholmes])
          +
          +## [v0.1.2] - August 21, 2013
          +
          +Minor update for proper [Bower] and [Component] support.
          +
          + * Add Bower support.
          + * Fix Component support and use `component/jquery` as a dependency.
          +
          +## [v0.1.1] - August 21, 2013
          +
          +Minor fixes.
          +
          + * Removed the busy cursor that occurs when loading.
          + * Added support for IE7 to IE9. ([#3], [@markbao])
          + * Implement `trickleRate` and `trickleSpeed` options.
          + * [#5] - Implement the `showSpinner` option to allow removing the spinner. ([#9], [@rahulcs])
          + * Registered as a Component in Component.io.
          + * [#8] - Updated the Readme with better Turbolinks instructions.
          +
          +## v0.1.0 - August 20, 2013
          +
          +Initial release.
          +
          +[Bower]: http://bower.io
          +[Component]: http://component.io
          +[#119]: https://github.com/rstacruz/nprogress/issues/119
          +[#120]: https://github.com/rstacruz/nprogress/issues/120
          +[#14]: https://github.com/rstacruz/nprogress/issues/14
          +[#17]: https://github.com/rstacruz/nprogress/issues/17
          +[#28]: https://github.com/rstacruz/nprogress/issues/28
          +[#33]: https://github.com/rstacruz/nprogress/issues/33
          +[#34]: https://github.com/rstacruz/nprogress/issues/34
          +[#39]: https://github.com/rstacruz/nprogress/issues/39
          +[#3]: https://github.com/rstacruz/nprogress/issues/3
          +[#54]: https://github.com/rstacruz/nprogress/issues/84
          +[#5]: https://github.com/rstacruz/nprogress/issues/5
          +[#64]: https://github.com/rstacruz/nprogress/issues/64
          +[#65]: https://github.com/rstacruz/nprogress/issues/65
          +[#73]: https://github.com/rstacruz/nprogress/issues/73
          +[#75]: https://github.com/rstacruz/nprogress/issues/75
          +[#77]: https://github.com/rstacruz/nprogress/issues/77
          +[#7]: https://github.com/rstacruz/nprogress/issues/7
          +[#82]: https://github.com/rstacruz/nprogress/issues/82
          +[#84]: https://github.com/rstacruz/nprogress/issues/84
          +[#85]: https://github.com/rstacruz/nprogress/issues/85
          +[#86]: https://github.com/rstacruz/nprogress/issues/86
          +[#8]: https://github.com/rstacruz/nprogress/issues/8
          +[#90]: https://github.com/rstacruz/nprogress/issues/90
          +[#92]: https://github.com/rstacruz/nprogress/issues/92
          +[#93]: https://github.com/rstacruz/nprogress/issues/93
          +[#9]: https://github.com/rstacruz/nprogress/issues/9
          +[@slang800]: https://github.com/slang800
          +[@teeceepee]: https://github.com/teeceepee
          +[@FND]: https://github.com/FND
          +[@mdxs]: https://github.com/mdxs
          +[@infertux]: https://github.com/infertux
          +[@jonjaques]: https://github.com/jonjaques
          +[@amelon]: https://github.com/amelon
          +[@shaqq]: https://github.com/shaqq
          +[@Mithgol]: https://github.com/Mithgol
          +[@lacivert]: https://github.com/lacivert
          +[@rwholmes]: https://github.com/rwholmes
          +[@rurjur]: https://github.com/rurjur
          +[@markbao]: https://github.com/markbao
          +[@rahulcs]: https://github.com/rahulcs
          +[v0.1.6]: https://github.com/rstacruz/nprogress/compare/v0.1.5...v0.1.6
          +[v0.1.5]: https://github.com/rstacruz/nprogress/compare/v0.1.4...v0.1.5
          +[v0.1.4]: https://github.com/rstacruz/nprogress/compare/v0.1.3...v0.1.4
          +[v0.1.3]: https://github.com/rstacruz/nprogress/compare/v0.1.2...v0.1.3
          +[v0.1.2]: https://github.com/rstacruz/nprogress/compare/v0.1.1...v0.1.2
          +[v0.1.1]: https://github.com/rstacruz/nprogress/compare/v0.1.0...v0.1.1
          +[#53]: https://github.com/rstacruz/nprogress/issues/53
          +[v0.2.0]: https://github.com/rstacruz/nprogress/compare/v0.1.6...v0.2.0
          diff --git a/public/theme/nprogress/License.md b/public/theme/nprogress/License.md
          new file mode 100644
          index 0000000..560c4fe
          --- /dev/null
          +++ b/public/theme/nprogress/License.md
          @@ -0,0 +1,19 @@
          +Copyright (c) 2013-2014 Rico Sta. Cruz
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be included in
          +all copies or substantial portions of the Software.
          +
          +THE 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.
          diff --git a/public/theme/nprogress/Notes.md b/public/theme/nprogress/Notes.md
          new file mode 100644
          index 0000000..3956c41
          --- /dev/null
          +++ b/public/theme/nprogress/Notes.md
          @@ -0,0 +1,25 @@
          +Testing
          +-------
          +
          +    $ npm install
          +    $ npm test
          +
          +or try it out in the browser:
          +
          +    $ open test/index.html
          +
          +Testing component build
          +-----------------------
          +
          +    $ component install
          +    $ component build
          +    $ open test/component.html
          +
          +Releasing
          +---------
          +
          +    $ npm test
          +    $ bump *.json nprogress.js          # bump version numbers
          +    $ git release 0.1.1                 # release to bower/github
          +    $ npm publish                       # release to npm
          +    $ git push origin master:gh-pages   # update the site
          diff --git a/public/theme/nprogress/Readme.md b/public/theme/nprogress/Readme.md
          new file mode 100644
          index 0000000..4097088
          --- /dev/null
          +++ b/public/theme/nprogress/Readme.md
          @@ -0,0 +1,197 @@
          +NProgress
          +=========
          +
          +Slim progress bars for Ajax'y applications. Inspired by Google, YouTube, and
          +Medium.
          +
          +
          +Installation
          +------------
          +
          +Add [nprogress.js] and [nprogress.css] to your project.
          +
          +```html
          +<script src='nprogress.js'></script>
          +<link rel='stylesheet' href='nprogress.css'/>
          +```
          +
          +NProgress is available via [bower] and [npm] and [spm].
          +
          +    $ bower install --save nprogress
          +    $ npm install --save nprogress
          +
          +[bower]: http://bower.io/search/?q=nprogress
          +[npm]: https://www.npmjs.org/package/nprogress
          +[spm]: http://spmjs.io/package/nprogress
          +
          +Basic usage
          +-----------
          +
          +Simply call `start()` and `done()` to control the progress bar.
          +
          +~~~ js
          +NProgress.start();
          +NProgress.done();
          +~~~
          +
          +Using [Turbolinks] or similar? Ensure you're using Turbolinks 1.3.0+, and use 
          +this: (explained 
          +    [here](https://github.com/rstacruz/nprogress/issues/8#issuecomment-23010560))
          +
          +~~~ js
          +$(document).on('page:fetch',   function() { NProgress.start(); });
          +$(document).on('page:change',  function() { NProgress.done(); });
          +$(document).on('page:restore', function() { NProgress.remove(); });
          +~~~
          +
          +Ideas
          +-----
          +
          + * Add progress to your Ajax calls! Bind it to the jQuery `ajaxStart` and
          + `ajaxStop` events.
          +
          + * Make a fancy loading bar even without Turbolinks/Pjax! Bind it to
          + `$(document).ready` and `$(window).load`.
          +
          +Advanced usage
          +--------------
          +
          +__Percentages:__ To set a progress percentage, call `.set(n)`, where *n* is a
          +number between `0..1`.
          +
          +~~~ js
          +NProgress.set(0.0);     // Sorta same as .start()
          +NProgress.set(0.4);
          +NProgress.set(1.0);     // Sorta same as .done()
          +~~~
          +
          +__Incrementing:__ To increment the progress bar, just use `.inc()`. This
          +increments it with a random amount. This will never get to 100%: use it for
          +every image load (or similar).
          +
          +~~~ js
          +NProgress.inc();
          +~~~
          +
          +If you want to increment by a specific value, you can pass that as a parameter:
          +
          +~~~ js
          +NProgress.inc(0.2);    // This will get the current status value and adds 0.2 until status is 0.994
          +~~~
          +
          +__Force-done:__ By passing `true` to `done()`, it will show the progress bar
          +even if it's not being shown. (The default behavior is that *.done()* will not
          +    do anything if *.start()* isn't called)
          +
          +~~~ js
          +NProgress.done(true);
          +~~~
          +
          +__Get the status value:__ To get the status value, use `.status`
          +
          +Configuration
          +-------------
          +
          +#### `minimum`
          +Changes the minimum percentage used upon starting. (default: `0.08`)
          +
          +~~~ js
          +NProgress.configure({ minimum: 0.1 });
          +~~~
          +
          +#### `template`
          +You can change the markup using `template`. To keep the progress
          +bar working, keep an element with `role='bar'` in there. See the [default template]
          +for reference.
          +
          +~~~ js
          +NProgress.configure({
          +  template: "<div class='....'>...</div>"
          +});
          +~~~
          +
          +#### `easing` and `speed`
          +Adjust animation settings using *easing* (a CSS easing string)
          +and *speed* (in ms). (default: `ease` and `200`)
          +
          +~~~ js
          +NProgress.configure({ easing: 'ease', speed: 500 });
          +~~~
          +
          +#### `trickle`
          +Turn off the automatic incrementing behavior by setting this to `false`. (default: `true`)
          +
          +~~~ js
          +NProgress.configure({ trickle: false });
          +~~~
          +
          +#### `trickleRate` and `trickleSpeed`
          +You can adjust the *trickleRate* (how much to increase per trickle) and 
          +*trickleSpeed* (how often to trickle, in ms).
          +
          +~~~ js
          +NProgress.configure({ trickleRate: 0.02, trickleSpeed: 800 });
          +~~~
          +
          +#### `showSpinner`
          +Turn off loading spinner by setting it to false. (default: `true`)
          +
          +~~~ js
          +NProgress.configure({ showSpinner: false });
          +~~~
          +
          +#### `parent`
          +specify this to change the parent container. (default: `body`)
          +
          +~~~ js
          +NProgress.configure({ parent: '#container' });
          +~~~
          +
          +Customization
          +-------------
          +
          +Just edit `nprogress.css` to your liking. Tip: you probably only want to find
          +and replace occurrences of `#29d`.
          +
          +The included CSS file is pretty minimal... in fact, feel free to scrap it and
          +make your own!
          +
          +Resources
          +---------
          +
          + * [New UI Pattern: Website Loading Bars](http://www.usabilitypost.com/2013/08/19/new-ui-pattern-website-loading-bars/) (usabilitypost.com)
          +
          +Support
          +-------
          +
          +__Bugs and requests__: submit them through the project's issues tracker.<br>
          +[![Issues](http://img.shields.io/github/issues/rstacruz/nprogress.svg)]( https://github.com/rstacruz/nprogress/issues )
          +
          +__Questions__: ask them at StackOverflow with the tag *nprogress*.<br>
          +[![StackOverflow](http://img.shields.io/badge/stackoverflow-nprogress-brightgreen.svg)]( http://stackoverflow.com/questions/tagged/nprogress )
          +
          +__Chat__: join us at gitter.im.<br>
          +[![Chat](http://img.shields.io/badge/gitter-rstacruz / nprogress-brightgreen.svg)]( https://gitter.im/rstacruz/nprogress )
          +
          +[default template]: 
          +https://github.com/rstacruz/nprogress/blob/master/nprogress.js#L31
          +[Turbolinks]: https://github.com/rails/turbolinks
          +[nprogress.js]: http://ricostacruz.com/nprogress/nprogress.js
          +[nprogress.css]: http://ricostacruz.com/nprogress/nprogress.css
          +
          +Thanks
          +------
          +
          +**NProgress** © 2013-2014, Rico Sta. Cruz. Released under the [MIT License].<br>
          +Authored and maintained by Rico Sta. Cruz with help from [contributors].
          +
          +> [ricostacruz.com](http://ricostacruz.com) &nbsp;&middot;&nbsp;
          +> GitHub [@rstacruz](https://github.com/rstacruz) &nbsp;&middot;&nbsp;
          +> Twitter [@rstacruz](https://twitter.com/rstacruz)
          +
          +[MIT License]: http://mit-license.org/
          +[contributors]: http://github.com/rstacruz/nprogress/contributors
          +
          +[![Status](https://api.travis-ci.org/rstacruz/nprogress.svg?branch=master)](http://travis-ci.org/rstacruz/nprogress) 
          +[![npm version](https://img.shields.io/npm/v/nprogress.png)](https://npmjs.org/package/nprogress "View this project on npm")
          +[![spm package](http://spmjs.io/badge/nprogress)](http://spmjs.io/package/nprogress)
          diff --git a/public/theme/nprogress/bower.json b/public/theme/nprogress/bower.json
          new file mode 100644
          index 0000000..1965474
          --- /dev/null
          +++ b/public/theme/nprogress/bower.json
          @@ -0,0 +1,27 @@
          +{
          +  "name": "nprogress",
          +  "repo": "rstacruz/nprogress",
          +  "description": "slim progress bar",
          +  "version": "0.2.0",
          +  "keywords": [
          +    "progress",
          +    "bar",
          +    "spinner"
          +  ],
          +  "license": "MIT",
          +  "main": ["nprogress.js", "nprogress.css"],
          +  "scripts": [
          +    "nprogress.js"
          +  ],
          +  "styles": [
          +    "nprogress.css"
          +  ],
          +  "ignore": [
          +    "**/.*",
          +    "node_modules",
          +    "components",
          +    "package.json",
          +    "test",
          +    "vendor"
          +  ]
          +}
          diff --git a/public/theme/nprogress/component.json b/public/theme/nprogress/component.json
          new file mode 100644
          index 0000000..698499c
          --- /dev/null
          +++ b/public/theme/nprogress/component.json
          @@ -0,0 +1,19 @@
          +{
          +  "name": "nprogress",
          +  "repo": "rstacruz/nprogress",
          +  "description": "slim progress bar",
          +  "version": "0.2.0",
          +  "keywords": ["progress","bar","spinner"],
          +  "development": {
          +    "chaijs/chai": "*",
          +    "visionmedia/mocha": "*"
          +  },
          +  "license": "MIT",
          +  "main": "nprogress.js",
          +  "scripts": [
          +    "nprogress.js"
          +  ],
          +  "styles": [
          +    "nprogress.css"
          +  ]
          +}
          diff --git a/public/theme/nprogress/index.html b/public/theme/nprogress/index.html
          new file mode 100644
          index 0000000..dd78ffb
          --- /dev/null
          +++ b/public/theme/nprogress/index.html
          @@ -0,0 +1,84 @@
          +<!DOCTYPE html>
          +<html lang='en'>
          +<head>
          +  <meta charset='utf-8'>
          +  <title>NProgress: slim progress bars in JavaScript</title>
          +  <link href='support/style.css' rel='stylesheet' />
          +  <link href='nprogress.css' rel='stylesheet' />
          +
          +  <meta name="viewport" content="width=device-width">
          +  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700,400italic' rel='stylesheet' type='text/css'>
          +  
          +  <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
          +  <script src='nprogress.js'></script>
          +
          +  <script>if(location.hostname.match(/ricostacruz\.com$/)){var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-20473929-1"]),_gaq.push(["_trackPageview"]),function(){var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=("https:"==document.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)}()}</script>
          +</head>
          +
          +<body style='display: none'>
          +  <header class='page-header'>
          +    <span class='nprogress-logo fade out'></span>
          +    <h1>NProgress<i>.js</i></h1>
          +    <p class='fade out brief big'>A nanoscopic progress bar. Featuring realistic
          +    trickle animations to convince your users that something is happening!</p>
          +  </header>
          +
          +  <div class='contents fade out'>
          +    <div class='controls'>
          +      <p>
          +        <button class='button play' id='b-0'></button>
          +        <i>NProgress</i><b>.start()</b>
          +        &mdash;
          +        shows the progress bar
          +      </p>
          +      <p>
          +        <button class='button play' id='b-40'></button>
          +        <i>NProgress</i><b>.set(0.4)</b>
          +        &mdash;
          +        sets a percentage
          +      </p>
          +      <p>
          +        <button class='button play' id='b-inc'></button>
          +        <i>NProgress</i><b>.inc()</b>
          +        &mdash;
          +        increments by a little
          +      </p>
          +      <p>
          +        <button class='button play' id='b-100'></button>
          +        <i>NProgress</i><b>.done()</b>
          +        &mdash;
          +        completes the progress
          +      </p>
          +    </div>
          +    <div class='actions'>
          +      <a href='https://github.com/rstacruz/nprogress' class='button primary big'>
          +        Download
          +        v<span class='version'></span>
          +      </a>
          +      <p class='brief'>Perfect for Turbolinks, Pjax, and other Ajax-heavy apps.</p>
          +    </div>
          +    <div class='hr-rule'></div>
          +    <div class='share-buttons'>
          +      <iframe src="http://ghbtns.com/github-btn.html?user=rstacruz&repo=nprogress&type=watch&count=true"
          +          allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
          +      <iframe src="http://ghbtns.com/github-btn.html?user=rstacruz&type=follow&count=true"
          +          allowtransparency="true" frameborder="0" scrolling="0" width="175" height="20"></iframe>
          +      <a href="https://news.ycombinator.com/submit" class="hn-button" data-title="NProgress" data-url="http://ricostacruz.com/nprogress/" data-count="horizontal" data-style="twitter">HN</a>
          +    </div>
          +  </div>
          +
          +  <script>
          +    $('body').show();
          +    $('.version').text(NProgress.version);
          +    NProgress.start();
          +    setTimeout(function() { NProgress.done(); $('.fade').removeClass('out'); }, 1000);
          +
          +    $("#b-0").click(function() { NProgress.start(); });
          +    $("#b-40").click(function() { NProgress.set(0.4); });
          +    $("#b-inc").click(function() { NProgress.inc(); });
          +    $("#b-100").click(function() { NProgress.done(); });
          +  </script>
          +
          +  <script>var HN=[];HN.factory=function(e){return function(){HN.push([e].concat(Array.prototype.slice.call(arguments,0)))};},HN.on=HN.factory("on"),HN.once=HN.factory("once"),HN.off=HN.factory("off"),HN.emit=HN.factory("emit"),HN.load=function(){var e="hn-button.js";if(document.getElementById(e))return;var t=document.createElement("script");t.id=e,t.src="//hn-button.herokuapp.com/hn-button.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)},HN.load();</script>
          +</body>
          +</html>
          diff --git a/public/theme/nprogress/nprogress.css b/public/theme/nprogress/nprogress.css
          new file mode 100644
          index 0000000..6752d7f
          --- /dev/null
          +++ b/public/theme/nprogress/nprogress.css
          @@ -0,0 +1,74 @@
          +/* Make clicks pass-through */
          +#nprogress {
          +  pointer-events: none;
          +}
          +
          +#nprogress .bar {
          +  background: #29d;
          +
          +  position: fixed;
          +  z-index: 1031;
          +  top: 0;
          +  left: 0;
          +
          +  width: 100%;
          +  height: 2px;
          +}
          +
          +/* Fancy blur effect */
          +#nprogress .peg {
          +  display: block;
          +  position: absolute;
          +  right: 0px;
          +  width: 100px;
          +  height: 100%;
          +  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
          +  opacity: 1.0;
          +
          +  -webkit-transform: rotate(3deg) translate(0px, -4px);
          +      -ms-transform: rotate(3deg) translate(0px, -4px);
          +          transform: rotate(3deg) translate(0px, -4px);
          +}
          +
          +/* Remove these to get rid of the spinner */
          +#nprogress .spinner {
          +  display: block;
          +  position: fixed;
          +  z-index: 1031;
          +  top: 15px;
          +  right: 15px;
          +}
          +
          +#nprogress .spinner-icon {
          +  width: 18px;
          +  height: 18px;
          +  box-sizing: border-box;
          +
          +  border: solid 2px transparent;
          +  border-top-color: #29d;
          +  border-left-color: #29d;
          +  border-radius: 50%;
          +
          +  -webkit-animation: nprogress-spinner 400ms linear infinite;
          +          animation: nprogress-spinner 400ms linear infinite;
          +}
          +
          +.nprogress-custom-parent {
          +  overflow: hidden;
          +  position: relative;
          +}
          +
          +.nprogress-custom-parent #nprogress .spinner,
          +.nprogress-custom-parent #nprogress .bar {
          +  position: absolute;
          +}
          +
          +@-webkit-keyframes nprogress-spinner {
          +  0%   { -webkit-transform: rotate(0deg); }
          +  100% { -webkit-transform: rotate(360deg); }
          +}
          +@keyframes nprogress-spinner {
          +  0%   { transform: rotate(0deg); }
          +  100% { transform: rotate(360deg); }
          +}
          +
          diff --git a/public/theme/nprogress/nprogress.js b/public/theme/nprogress/nprogress.js
          new file mode 100644
          index 0000000..b23b300
          --- /dev/null
          +++ b/public/theme/nprogress/nprogress.js
          @@ -0,0 +1,476 @@
          +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
          + * @license MIT */
          +
          +;(function(root, factory) {
          +
          +  if (typeof define === 'function' && define.amd) {
          +    define(factory);
          +  } else if (typeof exports === 'object') {
          +    module.exports = factory();
          +  } else {
          +    root.NProgress = factory();
          +  }
          +
          +})(this, function() {
          +  var NProgress = {};
          +
          +  NProgress.version = '0.2.0';
          +
          +  var Settings = NProgress.settings = {
          +    minimum: 0.08,
          +    easing: 'ease',
          +    positionUsing: '',
          +    speed: 200,
          +    trickle: true,
          +    trickleRate: 0.02,
          +    trickleSpeed: 800,
          +    showSpinner: true,
          +    barSelector: '[role="bar"]',
          +    spinnerSelector: '[role="spinner"]',
          +    parent: 'body',
          +    template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
          +  };
          +
          +  /**
          +   * Updates configuration.
          +   *
          +   *     NProgress.configure({
          +   *       minimum: 0.1
          +   *     });
          +   */
          +  NProgress.configure = function(options) {
          +    var key, value;
          +    for (key in options) {
          +      value = options[key];
          +      if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;
          +    }
          +
          +    return this;
          +  };
          +
          +  /**
          +   * Last number.
          +   */
          +
          +  NProgress.status = null;
          +
          +  /**
          +   * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
          +   *
          +   *     NProgress.set(0.4);
          +   *     NProgress.set(1.0);
          +   */
          +
          +  NProgress.set = function(n) {
          +    var started = NProgress.isStarted();
          +
          +    n = clamp(n, Settings.minimum, 1);
          +    NProgress.status = (n === 1 ? null : n);
          +
          +    var progress = NProgress.render(!started),
          +        bar      = progress.querySelector(Settings.barSelector),
          +        speed    = Settings.speed,
          +        ease     = Settings.easing;
          +
          +    progress.offsetWidth; /* Repaint */
          +
          +    queue(function(next) {
          +      // Set positionUsing if it hasn't already been set
          +      if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
          +
          +      // Add transition
          +      css(bar, barPositionCSS(n, speed, ease));
          +
          +      if (n === 1) {
          +        // Fade out
          +        css(progress, { 
          +          transition: 'none', 
          +          opacity: 1 
          +        });
          +        progress.offsetWidth; /* Repaint */
          +
          +        setTimeout(function() {
          +          css(progress, { 
          +            transition: 'all ' + speed + 'ms linear', 
          +            opacity: 0 
          +          });
          +          setTimeout(function() {
          +            NProgress.remove();
          +            next();
          +          }, speed);
          +        }, speed);
          +      } else {
          +        setTimeout(next, speed);
          +      }
          +    });
          +
          +    return this;
          +  };
          +
          +  NProgress.isStarted = function() {
          +    return typeof NProgress.status === 'number';
          +  };
          +
          +  /**
          +   * Shows the progress bar.
          +   * This is the same as setting the status to 0%, except that it doesn't go backwards.
          +   *
          +   *     NProgress.start();
          +   *
          +   */
          +  NProgress.start = function() {
          +    if (!NProgress.status) NProgress.set(0);
          +
          +    var work = function() {
          +      setTimeout(function() {
          +        if (!NProgress.status) return;
          +        NProgress.trickle();
          +        work();
          +      }, Settings.trickleSpeed);
          +    };
          +
          +    if (Settings.trickle) work();
          +
          +    return this;
          +  };
          +
          +  /**
          +   * Hides the progress bar.
          +   * This is the *sort of* the same as setting the status to 100%, with the
          +   * difference being `done()` makes some placebo effect of some realistic motion.
          +   *
          +   *     NProgress.done();
          +   *
          +   * If `true` is passed, it will show the progress bar even if its hidden.
          +   *
          +   *     NProgress.done(true);
          +   */
          +
          +  NProgress.done = function(force) {
          +    if (!force && !NProgress.status) return this;
          +
          +    return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
          +  };
          +
          +  /**
          +   * Increments by a random amount.
          +   */
          +
          +  NProgress.inc = function(amount) {
          +    var n = NProgress.status;
          +
          +    if (!n) {
          +      return NProgress.start();
          +    } else {
          +      if (typeof amount !== 'number') {
          +        amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
          +      }
          +
          +      n = clamp(n + amount, 0, 0.994);
          +      return NProgress.set(n);
          +    }
          +  };
          +
          +  NProgress.trickle = function() {
          +    return NProgress.inc(Math.random() * Settings.trickleRate);
          +  };
          +
          +  /**
          +   * Waits for all supplied jQuery promises and
          +   * increases the progress as the promises resolve.
          +   *
          +   * @param $promise jQUery Promise
          +   */
          +  (function() {
          +    var initial = 0, current = 0;
          +
          +    NProgress.promise = function($promise) {
          +      if (!$promise || $promise.state() === "resolved") {
          +        return this;
          +      }
          +
          +      if (current === 0) {
          +        NProgress.start();
          +      }
          +
          +      initial++;
          +      current++;
          +
          +      $promise.always(function() {
          +        current--;
          +        if (current === 0) {
          +            initial = 0;
          +            NProgress.done();
          +        } else {
          +            NProgress.set((initial - current) / initial);
          +        }
          +      });
          +
          +      return this;
          +    };
          +
          +  })();
          +
          +  /**
          +   * (Internal) renders the progress bar markup based on the `template`
          +   * setting.
          +   */
          +
          +  NProgress.render = function(fromStart) {
          +    if (NProgress.isRendered()) return document.getElementById('nprogress');
          +
          +    addClass(document.documentElement, 'nprogress-busy');
          +    
          +    var progress = document.createElement('div');
          +    progress.id = 'nprogress';
          +    progress.innerHTML = Settings.template;
          +
          +    var bar      = progress.querySelector(Settings.barSelector),
          +        perc     = fromStart ? '-100' : toBarPerc(NProgress.status || 0),
          +        parent   = document.querySelector(Settings.parent),
          +        spinner;
          +    
          +    css(bar, {
          +      transition: 'all 0 linear',
          +      transform: 'translate3d(' + perc + '%,0,0)'
          +    });
          +
          +    if (!Settings.showSpinner) {
          +      spinner = progress.querySelector(Settings.spinnerSelector);
          +      spinner && removeElement(spinner);
          +    }
          +
          +    if (parent != document.body) {
          +      addClass(parent, 'nprogress-custom-parent');
          +    }
          +
          +    parent.appendChild(progress);
          +    return progress;
          +  };
          +
          +  /**
          +   * Removes the element. Opposite of render().
          +   */
          +
          +  NProgress.remove = function() {
          +    removeClass(document.documentElement, 'nprogress-busy');
          +    removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');
          +    var progress = document.getElementById('nprogress');
          +    progress && removeElement(progress);
          +  };
          +
          +  /**
          +   * Checks if the progress bar is rendered.
          +   */
          +
          +  NProgress.isRendered = function() {
          +    return !!document.getElementById('nprogress');
          +  };
          +
          +  /**
          +   * Determine which positioning CSS rule to use.
          +   */
          +
          +  NProgress.getPositioningCSS = function() {
          +    // Sniff on document.body.style
          +    var bodyStyle = document.body.style;
          +
          +    // Sniff prefixes
          +    var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
          +                       ('MozTransform' in bodyStyle) ? 'Moz' :
          +                       ('msTransform' in bodyStyle) ? 'ms' :
          +                       ('OTransform' in bodyStyle) ? 'O' : '';
          +
          +    if (vendorPrefix + 'Perspective' in bodyStyle) {
          +      // Modern browsers with 3D support, e.g. Webkit, IE10
          +      return 'translate3d';
          +    } else if (vendorPrefix + 'Transform' in bodyStyle) {
          +      // Browsers without 3D support, e.g. IE9
          +      return 'translate';
          +    } else {
          +      // Browsers without translate() support, e.g. IE7-8
          +      return 'margin';
          +    }
          +  };
          +
          +  /**
          +   * Helpers
          +   */
          +
          +  function clamp(n, min, max) {
          +    if (n < min) return min;
          +    if (n > max) return max;
          +    return n;
          +  }
          +
          +  /**
          +   * (Internal) converts a percentage (`0..1`) to a bar translateX
          +   * percentage (`-100%..0%`).
          +   */
          +
          +  function toBarPerc(n) {
          +    return (-1 + n) * 100;
          +  }
          +
          +
          +  /**
          +   * (Internal) returns the correct CSS for changing the bar's
          +   * position given an n percentage, and speed and ease from Settings
          +   */
          +
          +  function barPositionCSS(n, speed, ease) {
          +    var barCSS;
          +
          +    if (Settings.positionUsing === 'translate3d') {
          +      barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };
          +    } else if (Settings.positionUsing === 'translate') {
          +      barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };
          +    } else {
          +      barCSS = { 'margin-left': toBarPerc(n)+'%' };
          +    }
          +
          +    barCSS.transition = 'all '+speed+'ms '+ease;
          +
          +    return barCSS;
          +  }
          +
          +  /**
          +   * (Internal) Queues a function to be executed.
          +   */
          +
          +  var queue = (function() {
          +    var pending = [];
          +    
          +    function next() {
          +      var fn = pending.shift();
          +      if (fn) {
          +        fn(next);
          +      }
          +    }
          +
          +    return function(fn) {
          +      pending.push(fn);
          +      if (pending.length == 1) next();
          +    };
          +  })();
          +
          +  /**
          +   * (Internal) Applies css properties to an element, similar to the jQuery 
          +   * css method.
          +   *
          +   * While this helper does assist with vendor prefixed property names, it 
          +   * does not perform any manipulation of values prior to setting styles.
          +   */
          +
          +  var css = (function() {
          +    var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],
          +        cssProps    = {};
          +
          +    function camelCase(string) {
          +      return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) {
          +        return letter.toUpperCase();
          +      });
          +    }
          +
          +    function getVendorProp(name) {
          +      var style = document.body.style;
          +      if (name in style) return name;
          +
          +      var i = cssPrefixes.length,
          +          capName = name.charAt(0).toUpperCase() + name.slice(1),
          +          vendorName;
          +      while (i--) {
          +        vendorName = cssPrefixes[i] + capName;
          +        if (vendorName in style) return vendorName;
          +      }
          +
          +      return name;
          +    }
          +
          +    function getStyleProp(name) {
          +      name = camelCase(name);
          +      return cssProps[name] || (cssProps[name] = getVendorProp(name));
          +    }
          +
          +    function applyCss(element, prop, value) {
          +      prop = getStyleProp(prop);
          +      element.style[prop] = value;
          +    }
          +
          +    return function(element, properties) {
          +      var args = arguments,
          +          prop, 
          +          value;
          +
          +      if (args.length == 2) {
          +        for (prop in properties) {
          +          value = properties[prop];
          +          if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);
          +        }
          +      } else {
          +        applyCss(element, args[1], args[2]);
          +      }
          +    }
          +  })();
          +
          +  /**
          +   * (Internal) Determines if an element or space separated list of class names contains a class name.
          +   */
          +
          +  function hasClass(element, name) {
          +    var list = typeof element == 'string' ? element : classList(element);
          +    return list.indexOf(' ' + name + ' ') >= 0;
          +  }
          +
          +  /**
          +   * (Internal) Adds a class to an element.
          +   */
          +
          +  function addClass(element, name) {
          +    var oldList = classList(element),
          +        newList = oldList + name;
          +
          +    if (hasClass(oldList, name)) return; 
          +
          +    // Trim the opening space.
          +    element.className = newList.substring(1);
          +  }
          +
          +  /**
          +   * (Internal) Removes a class from an element.
          +   */
          +
          +  function removeClass(element, name) {
          +    var oldList = classList(element),
          +        newList;
          +
          +    if (!hasClass(element, name)) return;
          +
          +    // Replace the class name.
          +    newList = oldList.replace(' ' + name + ' ', ' ');
          +
          +    // Trim the opening and closing spaces.
          +    element.className = newList.substring(1, newList.length - 1);
          +  }
          +
          +  /**
          +   * (Internal) Gets a space separated list of the class names on the element. 
          +   * The list is wrapped with a single space on each end to facilitate finding 
          +   * matches within the list.
          +   */
          +
          +  function classList(element) {
          +    return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' ');
          +  }
          +
          +  /**
          +   * (Internal) Removes an element from the DOM.
          +   */
          +
          +  function removeElement(element) {
          +    element && element.parentNode && element.parentNode.removeChild(element);
          +  }
          +
          +  return NProgress;
          +});
          +
          diff --git a/public/theme/nprogress/support/extras.css b/public/theme/nprogress/support/extras.css
          new file mode 100644
          index 0000000..21bb39b
          --- /dev/null
          +++ b/public/theme/nprogress/support/extras.css
          @@ -0,0 +1,4 @@
          +/* Make the entire page show a busy cursor */
          +.nprogress-busy body {
          +  cursor: wait;
          +}
          diff --git a/public/theme/nprogress/support/style.css b/public/theme/nprogress/support/style.css
          new file mode 100644
          index 0000000..1a78acf
          --- /dev/null
          +++ b/public/theme/nprogress/support/style.css
          @@ -0,0 +1,215 @@
          +i, b {
          +  font-style: normal;
          +  font-weight: 400;
          +}
          +
          +body, html {
          +  padding: 0;
          +  margin: 0;
          +}
          +
          +body {
          +  background: white;
          +}
          +
          +body, td, input, textarea {
          +  font-family: source sans pro, sans-serif;
          +  font-size: 14px;
          +  line-height: 1.5;
          +  color: #222;
          +}
          +
          +button {
          +  cursor: pointer;
          +}
          +
          +* {
          +  text-rendering: optimizeLegibility;
          +  -webkit-font-smoothing: antialiased;
          +}
          +
          +.nprogress-logo {
          +  display: inline-block;
          +
          +  width: 100px;
          +  height: 20px;
          +  border: solid 4px #2d9;
          +  border-radius: 10px;
          +
          +  position: relative;
          +}
          +.nprogress-logo:after {
          +  content: '';
          +  display: block;
          +
          +  position: absolute;
          +  top: 4px;
          +  left: 4px;
          +  bottom: 4px;
          +  width: 40%;
          +
          +  background: #2d9;
          +  border-radius: 3px;
          +}
          +
          +.fade {
          +  transition: all 300ms linear 700ms;
          +  -webkit-transform: translate3d(0,0,0);
          +  -moz-transform: translate3d(0,0,0);
          +  -ms-transform: translate3d(0,0,0);
          +  -o-transform: translate3d(0,0,0);
          +  transform: translate3d(0,0,0);
          +  opacity: 1;
          +}
          +
          +.fade.out {
          +  opacity: 0;
          +}
          +
          +button {
          +  margin: 0;
          +  padding: 0;
          +  border: 0;
          +  outline: 0;
          +}
          +
          +.button {
          +  display: inline-block;
          +  text-decoration: none;
          +
          +  background: #eee;
          +  color: #777;
          +  border-radius: 2px;
          +
          +  padding: 8px 10px;
          +  font-weight: 700;
          +  text-align: left;
          +}
          +
          +.button.play:before {
          +  content: '\25b6';
          +}
          +
          +.button:hover {
          +  background: #2d9;
          +  color: #fff;
          +}
          +
          +.button.primary {
          +  background: #2d9;
          +  color: #fff;
          +}
          +.button.primary:hover {
          +  background: #1c8;
          +}
          +
          +.button:active {
          +  background: #2d9;
          +  box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.6);
          +}
          +
          +.controls {
          +  text-align: left;
          +  margin: 0 auto;
          +  max-width: 300px;
          +  color: #666;
          +}
          +
          +.controls .button {
          +  width: 40px;
          +  margin-right: 10px;
          +  text-align: center;
          +}
          +
          +.controls i {
          +  color: #999;
          +}
          +
          +.controls b {
          +  color: #29d;
          +  font-weight: 700;
          +}
          +
          +.controls {
          +  font-size: 0.9em;
          +}
          +
          +.page-header {
          +  text-align: center;
          +  max-width: 400px;
          +  padding: 3em 20px;
          +  margin: 0 auto;
          +}
          +
          +.page-header h1 {
          +  font-size: 2.0em;
          +  text-align: center;
          +  font-weight: 200;
          +  line-height: 1.3;
          +  color: #333;
          +  margin: 0;
          +}
          +
          +p.brief {
          +  line-height: 1.4;
          +  font-style: italic;
          +  color: #888;
          +}
          +
          +p.brief.big {
          +  font-size: 1.1em;
          +}
          +
          +@media (min-width: 480px) {
          +  .page-header h1 {
          +    margin-top: 1em;
          +    margin-bottom: 0.4em;
          +  }
          +}
          +
          +.page-header h1 i {
          +  color: #aaa;
          +  font-style: normal;
          +  font-weight: 200;
          +}
          +
          +@media (min-width: 480px) {
          +  .page-header h1 {
          +    font-size: 3em; }
          +  .page-header {
          +    padding: 4.5em 20px 3.5em 20px;
          +  }
          +}
          +
          +/* --- */
          +
          +.actions {
          +  text-align: center;
          +  margin: 2em 0;
          +}
          +
          +@media (min-width: 480px) {
          +  .actions {
          +    margin: 4.5em 0 3.5em 0;
          +  }
          +}
          +
          +.big.button {
          +  padding-left: 30px;
          +  padding-right: 30px;
          +  font-size: 1.1em;
          +}
          +
          +
          +/* ---- */
          +
          +div.hr-rule {
          +  height: 1px;
          +  width: 100px;
          +  margin: 40px auto;
          +  background: #ddd;
          +}
          +.share-buttons {
          +  margin: 0 auto;
          +  text-align: center;
          +}
          diff --git a/public/theme/pnotify/.bower.json b/public/theme/pnotify/.bower.json
          new file mode 100644
          index 0000000..ca65d98
          --- /dev/null
          +++ b/public/theme/pnotify/.bower.json
          @@ -0,0 +1,47 @@
          +{
          +  "name": "pnotify",
          +  "description": "JavaScript notification plugin.",
          +  "main": [
          +    "dist/pnotify.animate.js",
          +    "dist/pnotify.brighttheme.css",
          +    "dist/pnotify.buttons.css",
          +    "dist/pnotify.buttons.js",
          +    "dist/pnotify.callbacks.js",
          +    "dist/pnotify.confirm.js",
          +    "dist/pnotify.css",
          +    "dist/pnotify.js",
          +    "dist/pnotify.desktop.js",
          +    "dist/pnotify.history.css",
          +    "dist/pnotify.history.js",
          +    "dist/pnotify.mobile.css",
          +    "dist/pnotify.mobile.js",
          +    "dist/pnotify.nonblock.js"
          +  ],
          +  "ignore": [
          +    "build-tools/",
          +    "includes/",
          +    "devnote*.*",
          +    "index.html",
          +    "testing.html",
          +    "buildcustom.php",
          +    "package.json",
          +    "src/"
          +  ],
          +  "license": [
          +    "Apache-2.0"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.6"
          +  },
          +  "homepage": "https://github.com/sciactive/pnotify",
          +  "version": "3.0.0",
          +  "_release": "3.0.0",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "3.0.0",
          +    "commit": "2c6a12b5d8a6b55d21beae5b35c2a643fcfe4a90"
          +  },
          +  "_source": "https://github.com/sciactive/pnotify.git",
          +  "_target": "^3.0.0",
          +  "_originalSource": "pnotify"
          +}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/.gitignore b/public/theme/pnotify/.gitignore
          new file mode 100644
          index 0000000..7405ad2
          --- /dev/null
          +++ b/public/theme/pnotify/.gitignore
          @@ -0,0 +1,4 @@
          +bower_components
          +node_modules
          +libtests/browserify/node_modules
          +libtests/browserify/bundle.js
          \ No newline at end of file
          diff --git a/public/theme/pnotify/COPYING b/public/theme/pnotify/COPYING
          new file mode 100644
          index 0000000..d645695
          --- /dev/null
          +++ b/public/theme/pnotify/COPYING
          @@ -0,0 +1,202 @@
          +
          +                                 Apache License
          +                           Version 2.0, January 2004
          +                        http://www.apache.org/licenses/
          +
          +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
          +
          +   1. Definitions.
          +
          +      "License" shall mean the terms and conditions for use, reproduction,
          +      and distribution as defined by Sections 1 through 9 of this document.
          +
          +      "Licensor" shall mean the copyright owner or entity authorized by
          +      the copyright owner that is granting the License.
          +
          +      "Legal Entity" shall mean the union of the acting entity and all
          +      other entities that control, are controlled by, or are under common
          +      control with that entity. For the purposes of this definition,
          +      "control" means (i) the power, direct or indirect, to cause the
          +      direction or management of such entity, whether by contract or
          +      otherwise, or (ii) ownership of fifty percent (50%) or more of the
          +      outstanding shares, or (iii) beneficial ownership of such entity.
          +
          +      "You" (or "Your") shall mean an individual or Legal Entity
          +      exercising permissions granted by this License.
          +
          +      "Source" form shall mean the preferred form for making modifications,
          +      including but not limited to software source code, documentation
          +      source, and configuration files.
          +
          +      "Object" form shall mean any form resulting from mechanical
          +      transformation or translation of a Source form, including but
          +      not limited to compiled object code, generated documentation,
          +      and conversions to other media types.
          +
          +      "Work" shall mean the work of authorship, whether in Source or
          +      Object form, made available under the License, as indicated by a
          +      copyright notice that is included in or attached to the work
          +      (an example is provided in the Appendix below).
          +
          +      "Derivative Works" shall mean any work, whether in Source or Object
          +      form, that is based on (or derived from) the Work and for which the
          +      editorial revisions, annotations, elaborations, or other modifications
          +      represent, as a whole, an original work of authorship. For the purposes
          +      of this License, Derivative Works shall not include works that remain
          +      separable from, or merely link (or bind by name) to the interfaces of,
          +      the Work and Derivative Works thereof.
          +
          +      "Contribution" shall mean any work of authorship, including
          +      the original version of the Work and any modifications or additions
          +      to that Work or Derivative Works thereof, that is intentionally
          +      submitted to Licensor for inclusion in the Work by the copyright owner
          +      or by an individual or Legal Entity authorized to submit on behalf of
          +      the copyright owner. For the purposes of this definition, "submitted"
          +      means any form of electronic, verbal, or written communication sent
          +      to the Licensor or its representatives, including but not limited to
          +      communication on electronic mailing lists, source code control systems,
          +      and issue tracking systems that are managed by, or on behalf of, the
          +      Licensor for the purpose of discussing and improving the Work, but
          +      excluding communication that is conspicuously marked or otherwise
          +      designated in writing by the copyright owner as "Not a Contribution."
          +
          +      "Contributor" shall mean Licensor and any individual or Legal Entity
          +      on behalf of whom a Contribution has been received by Licensor and
          +      subsequently incorporated within the Work.
          +
          +   2. Grant of Copyright License. Subject to the terms and conditions of
          +      this License, each Contributor hereby grants to You a perpetual,
          +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          +      copyright license to reproduce, prepare Derivative Works of,
          +      publicly display, publicly perform, sublicense, and distribute the
          +      Work and such Derivative Works in Source or Object form.
          +
          +   3. Grant of Patent License. Subject to the terms and conditions of
          +      this License, each Contributor hereby grants to You a perpetual,
          +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          +      (except as stated in this section) patent license to make, have made,
          +      use, offer to sell, sell, import, and otherwise transfer the Work,
          +      where such license applies only to those patent claims licensable
          +      by such Contributor that are necessarily infringed by their
          +      Contribution(s) alone or by combination of their Contribution(s)
          +      with the Work to which such Contribution(s) was submitted. If You
          +      institute patent litigation against any entity (including a
          +      cross-claim or counterclaim in a lawsuit) alleging that the Work
          +      or a Contribution incorporated within the Work constitutes direct
          +      or contributory patent infringement, then any patent licenses
          +      granted to You under this License for that Work shall terminate
          +      as of the date such litigation is filed.
          +
          +   4. Redistribution. You may reproduce and distribute copies of the
          +      Work or Derivative Works thereof in any medium, with or without
          +      modifications, and in Source or Object form, provided that You
          +      meet the following conditions:
          +
          +      (a) You must give any other recipients of the Work or
          +          Derivative Works a copy of this License; and
          +
          +      (b) You must cause any modified files to carry prominent notices
          +          stating that You changed the files; and
          +
          +      (c) You must retain, in the Source form of any Derivative Works
          +          that You distribute, all copyright, patent, trademark, and
          +          attribution notices from the Source form of the Work,
          +          excluding those notices that do not pertain to any part of
          +          the Derivative Works; and
          +
          +      (d) If the Work includes a "NOTICE" text file as part of its
          +          distribution, then any Derivative Works that You distribute must
          +          include a readable copy of the attribution notices contained
          +          within such NOTICE file, excluding those notices that do not
          +          pertain to any part of the Derivative Works, in at least one
          +          of the following places: within a NOTICE text file distributed
          +          as part of the Derivative Works; within the Source form or
          +          documentation, if provided along with the Derivative Works; or,
          +          within a display generated by the Derivative Works, if and
          +          wherever such third-party notices normally appear. The contents
          +          of the NOTICE file are for informational purposes only and
          +          do not modify the License. You may add Your own attribution
          +          notices within Derivative Works that You distribute, alongside
          +          or as an addendum to the NOTICE text from the Work, provided
          +          that such additional attribution notices cannot be construed
          +          as modifying the License.
          +
          +      You may add Your own copyright statement to Your modifications and
          +      may provide additional or different license terms and conditions
          +      for use, reproduction, or distribution of Your modifications, or
          +      for any such Derivative Works as a whole, provided Your use,
          +      reproduction, and distribution of the Work otherwise complies with
          +      the conditions stated in this License.
          +
          +   5. Submission of Contributions. Unless You explicitly state otherwise,
          +      any Contribution intentionally submitted for inclusion in the Work
          +      by You to the Licensor shall be under the terms and conditions of
          +      this License, without any additional terms or conditions.
          +      Notwithstanding the above, nothing herein shall supersede or modify
          +      the terms of any separate license agreement you may have executed
          +      with Licensor regarding such Contributions.
          +
          +   6. Trademarks. This License does not grant permission to use the trade
          +      names, trademarks, service marks, or product names of the Licensor,
          +      except as required for reasonable and customary use in describing the
          +      origin of the Work and reproducing the content of the NOTICE file.
          +
          +   7. Disclaimer of Warranty. Unless required by applicable law or
          +      agreed to in writing, Licensor provides the Work (and each
          +      Contributor provides its Contributions) on an "AS IS" BASIS,
          +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
          +      implied, including, without limitation, any warranties or conditions
          +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
          +      PARTICULAR PURPOSE. You are solely responsible for determining the
          +      appropriateness of using or redistributing the Work and assume any
          +      risks associated with Your exercise of permissions under this License.
          +
          +   8. Limitation of Liability. In no event and under no legal theory,
          +      whether in tort (including negligence), contract, or otherwise,
          +      unless required by applicable law (such as deliberate and grossly
          +      negligent acts) or agreed to in writing, shall any Contributor be
          +      liable to You for damages, including any direct, indirect, special,
          +      incidental, or consequential damages of any character arising as a
          +      result of this License or out of the use or inability to use the
          +      Work (including but not limited to damages for loss of goodwill,
          +      work stoppage, computer failure or malfunction, or any and all
          +      other commercial damages or losses), even if such Contributor
          +      has been advised of the possibility of such damages.
          +
          +   9. Accepting Warranty or Additional Liability. While redistributing
          +      the Work or Derivative Works thereof, You may choose to offer,
          +      and charge a fee for, acceptance of support, warranty, indemnity,
          +      or other liability obligations and/or rights consistent with this
          +      License. However, in accepting such obligations, You may act only
          +      on Your own behalf and on Your sole responsibility, not on behalf
          +      of any other Contributor, and only if You agree to indemnify,
          +      defend, and hold each Contributor harmless for any liability
          +      incurred by, or claims asserted against, such Contributor by reason
          +      of your accepting any such warranty or additional liability.
          +
          +   END OF TERMS AND CONDITIONS
          +
          +   APPENDIX: How to apply the Apache License to your work.
          +
          +      To apply the Apache License to your work, attach the following
          +      boilerplate notice, with the fields enclosed by brackets "[]"
          +      replaced with your own identifying information. (Don't include
          +      the brackets!)  The text should be enclosed in the appropriate
          +      comment syntax for the file format. We also recommend that a
          +      file or class name and description of purpose be included on the
          +      same "printed page" as the copyright notice for easier
          +      identification within third-party archives.
          +
          +   Copyright [yyyy] [name of copyright owner]
          +
          +   Licensed under the Apache License, Version 2.0 (the "License");
          +   you may not use this file except in compliance with the License.
          +   You may obtain a copy of the License at
          +
          +       http://www.apache.org/licenses/LICENSE-2.0
          +
          +   Unless required by applicable law or agreed to in writing, software
          +   distributed under the License is distributed on an "AS IS" BASIS,
          +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          +   See the License for the specific language governing permissions and
          +   limitations under the License.
          diff --git a/public/theme/pnotify/README.md b/public/theme/pnotify/README.md
          new file mode 100644
          index 0000000..ab8aa24
          --- /dev/null
          +++ b/public/theme/pnotify/README.md
          @@ -0,0 +1,295 @@
          +[![Stories in Ready](https://badge.waffle.io/sciactive/pnotify.png?label=ready&title=Ready)](http://waffle.io/sciactive/pnotify) [![Stories in Progress](https://badge.waffle.io/sciactive/pnotify.png?label=in progress&title=In Progress)](http://waffle.io/sciactive/pnotify)
          +
          +PNotify is a JavaScript notification plugin, developed by SciActive. PNotify can also provide [desktop notifications](http://sciactive.com/pnotify/#web-notifications) based on the [Web Notifications spec](http://www.w3.org/TR/notifications/). If desktop notifications are not available or not allowed, PNotify will fall back to displaying the notice as a regular, in-browser notice.
          +
          +Demos
          +=====
          +
          +http://sciactive.com/pnotify/
          +
          +Requirements
          +============
          +
          +jQuery (1.6 or higher)
          +
          +Getting Started
          +===============
          +
          +You can include PNotify using Bower, NPM, or a custom download.
          +
          +PNotify custom download comes with the following files:
          +
          +* `pnotify.custom.js` & `pnotify.custom.min.js` (Minified)
          +* `pnotify.custom.css` & `pnotify.custom.min.css` (Minified)
          +
          +So here's how you'd include them on your page:
          +
          +```html
          +<script type="text/javascript" src="pnotify.custom.min.js"></script>
          +<link href="pnotify.custom.min.css" media="all" rel="stylesheet" type="text/css" />
          +```
          +
          +Now you can use PNotify like this:
          +
          +```html
          +<script type="text/javascript">
          +    $(function(){
          +        new PNotify({
          +            title: 'Regular Notice',
          +            text: 'Check me out! I\'m a notice.'
          +        });
          +    });
          +</script>
          +```
          +
          +If you are not using any UI library, you can use the included styling, called Bright Theme. It is the default.
          +
          +If you are using Bootstrap version 2, include this line somewhere before your first notice:
          +
          +```js
          +PNotify.prototype.options.styling = "bootstrap2";
          +```
          +
          +If you are using Bootstrap version 3, include this line somewhere before your first notice:
          +
          +```js
          +PNotify.prototype.options.styling = "bootstrap3";
          +```
          +
          +If you are using jQuery UI, include this line somewhere before your first notice:
          +
          +```js
          +PNotify.prototype.options.styling = "jqueryui";
          +```
          +
          +If you are using Bootstrap 3 with Font Awesome, include this line somewhere before your first notice:
          +
          +```js
          +PNotify.prototype.options.styling = "fontawesome";
          +```
          +
          +Stacks
          +======
          +
          +A stack is an object which PNotify uses to determine where to position notices. A stack has two mandatory properties, `dir1` and `dir2`. `dir1` is the first direction in which the notices are stacked. When the notices run out of room in the window, they will move over in the direction specified by `dir2`. The directions can be `"up"`, `"down"`, `"right"`, or `"left"`. Stacks are independent of each other, so a stack doesn't know and doesn't care if it overlaps (and blocks) another stack. The default stack, which can be changed like any other default, goes down, then left. Stack objects are used and manipulated by PNotify, and therefore, should be a variable when passed. So, calling something like `new PNotify({stack: {"dir1": "down", "dir2": "left"}});` will **NOT** work. It will create a notice, but that notice will be in its own stack and may overlap other notices.
          +
          +Modal Stacks
          +------------
          +
          +You can set a stack as modal by setting the "modal" property to true. A modal stack creates an overlay behind it when any of its notices are open. When the last notice within it is removed, the overlay is hidden. If the "overlay_close" property is set to true, then clicking the overlay will cause all of the notices in that stack to be removed.
          +
          +Example Stacks
          +--------------
          +
          +```js
          +var stack_topleft = {"dir1": "down", "dir2": "right", "push": "top"};
          +var stack_bottomleft = {"dir1": "right", "dir2": "up", "push": "top"};
          +var stack_modal = {"dir1": "down", "dir2": "right", "push": "top", "modal": true, "overlay_close": true};
          +var stack_bar_top = {"dir1": "down", "dir2": "right", "push": "top", "spacing1": 0, "spacing2": 0};
          +var stack_bar_bottom = {"dir1": "up", "dir2": "right", "spacing1": 0, "spacing2": 0};
          +var stack_context = {"dir1": "down", "dir2": "left", "context": $("#stack-context")};
          +```
          +
          +This stack is initially positioned through code instead of CSS.
          +
          +```js
          +var stack_bottomright = {"dir1": "up", "dir2": "left", "firstpos1": 25, "firstpos2": 25};
          +```
          +
          +This is done through two extra variables. `firstpos1` and `firstpos2` are pixel values, relative to a viewport edge. `dir1` and `dir2`, respectively, determine which edge. It is calculated as follows:
          +
          +* `dir = "up"` - firstpos is relative to the bottom of viewport.
          +* `dir = "down"` - firstpos is relative to the top of viewport.
          +* `dir = "right"` - firstpos is relative to the left of viewport.
          +* `dir = "left"` - firstpos is relative to the right of viewport.
          +
          +To create a stack in the top left, define the stack:
          +
          +```js
          +var stack_topleft = {"dir1": "down", "dir2": "right"};
          +```
          +
          +and then add two options to your pnotify call:
          +
          +```
          +addclass: "stack-topleft", // This is one of the included default classes.
          +stack: stack_topleft
          +```
          +
          +There are several CSS classes included which will position your notices for you:
          +
          +* `stack-topleft`
          +* `stack-bottomleft`
          +* `stack-bottomright`
          +* `stack-modal`
          +
          +You can create your own custom position and movement by defining a custom stack.
          +
          +Configuration Defaults / Options
          +================================
          +
          +* `title: false` - The notice's title.
          +* `title_escape: false` - Whether to escape the content of the title. (Not allow HTML.)
          +* `text: false` - The notice's text.
          +* `text_escape: false` - Whether to escape the content of the text. (Not allow HTML.)
          +* `styling: "brighttheme"` - What styling classes to use. (Can be either "brighttheme", "jqueryui", "bootstrap2", "bootstrap3", "fontawesome", or a custom style object. See the source in the end of pnotify.js for the properties in a style object.)
          +* `addclass: ""` - Additional classes to be added to the notice. (For custom styling.)
          +* `cornerclass: ""` - Class to be added to the notice for corner styling.
          +* `auto_display: true` - Display the notice when it is created. Turn this off to add notifications to the history without displaying them.
          +* `width: "300px"` - Width of the notice.
          +* `min_height: "16px"` - Minimum height of the notice. It will expand to fit content.
          +* `type: "notice"` - Type of the notice. "notice", "info", "success", or "error".
          +* `icon: true` - Set icon to true to use the default icon for the selected style/type, false for no icon, or a string for your own icon class.
          +* `animation: "fade"` - The animation to use when displaying and hiding the notice. "none", "show", "fade", and "slide" are built in to jQuery. Others require jQuery UI. Use an object with effect_in and effect_out to use different effects.
          +* `animate_speed: "slow"` - Speed at which the notice animates in and out. "slow", "def" or "normal", "fast" or number of milliseconds.
          +* `position_animate_speed: 500` - Specify a specific duration of position animation.
          +* `opacity: 1` - Opacity of the notice.
          +* `shadow: true` - Display a drop shadow.
          +* `hide: true` - After a delay, remove the notice.
          +* `delay: 8000` - Delay in milliseconds before the notice is removed.
          +* `mouse_reset: true` - Reset the hide timer if the mouse moves over the notice.
          +* `remove: true` - Remove the notice's elements from the DOM after it is removed.
          +* `insert_brs: true` - Change new lines to br tags.
          +* `stack: {"dir1": "down", "dir2": "left", "push": "bottom", "spacing1": 25, "spacing2": 25, "context": $("body"), "modal": false}` - The stack on which the notices will be placed. Also controls the direction the notices stack.
          +
          +Desktop Module
          +--------------
          +
          +`desktop: {`
          +* `desktop: false` - Display the notification as a desktop notification.
          +* `fallback: true` - If desktop notifications are not supported or allowed, fall back to a regular notice.
          +* `icon: null` - The URL of the icon to display. If false, no icon will show. If null, a default icon will show.
          +* `tag: null` - Using a tag lets you update an existing notice, or keep from duplicating notices between tabs. If you leave tag null, one will be generated, facilitating the "update" function.
          +* `text: null` - Optionally display different text for the desktop
          +
          +`}`
          +
          +Buttons Module
          +--------------
          +
          +`buttons: {`
          +* `closer: true` - Provide a button for the user to manually close the notice.
          +* `closer_hover: true` - Only show the closer button on hover.
          +* `sticker: true` - Provide a button for the user to manually stick the notice.
          +* `sticker_hover: true` - Only show the sticker button on hover.
          +* `show_on_nonblock: false` - Show the buttons even when the nonblock module is in use.
          +* `labels: {close: "Close", stick: "Stick"}` - Lets you change the displayed text, facilitating internationalization.
          +* `classes: {closer: null, pin_up: null, pin_down: null}` - The classes to use for button icons. Leave them null to use the classes from the styling you're using.
          +
          +`}`
          +
          +NonBlock Module
          +---------------
          +
          +`nonblock: {`
          +* `nonblock: false` - Create a non-blocking notice. It lets the user click elements underneath it.
          +* `nonblock_opacity: .2` - The opacity of the notice (if it's non-blocking) when the mouse is over it.
          +
          +`}`
          +
          +Mobile Module
          +-------------
          +
          +`mobile: {`
          +* `swipe_dismiss: true` - Let the user swipe the notice away.
          +* `styling: true` - Styles the notice to look good on mobile.
          +
          +`}`
          +
          +Animate Module
          +--------------
          +
          +`animate: {`
          +* `animate: false` - Use animate.css to animate the notice.
          +* `in_class: ""` - The class to use to animate the notice in.
          +* `out_class: ""` - The class to use to animate the notice out.
          +
          +`}`
          +
          +The Animate module also creates a method, `attention`, on notices which accepts an attention grabber class from Animate.css and callback to be called on completion of the animation.
          +
          +Confirm Module
          +--------------
          +
          +`confirm: {`
          +* `confirm: false` - Make a confirmation box.
          +* `prompt: false` - Make a prompt.
          +* `prompt_class: ""` - Classes to add to the input element of the prompt.
          +* `prompt_default: ""` - The default value of the prompt.
          +* `prompt_multi_line: false` - Whether the prompt should accept multiple lines of text.
          +* `align: "right"` - Where to align the buttons. (right, center, left, justify)
          +* `buttons: [{text: "Ok", addClass: "", promptTrigger: true, click: function(notice, value){ notice.remove(); notice.get().trigger("pnotify.confirm", [notice, value]); }},{text: "Cancel", addClass: "", click: function(notice){ notice.remove(); notice.get().trigger("pnotify.cancel", notice); }}]` - The buttons to display, and their callbacks. If a button has promptTrigger set to true, it will be triggered when the user hits enter in a single line prompt. If you want only one button, use null as the second entry of your array to remove the cancel button.
          +
          +`}`
          +
          +History Module
          +--------------
          +
          +`history: {`
          +* `history: true` - Place the notice in the history.
          +* `menu: false` - Display a pull down menu to redisplay previous notices.
          +* `fixed: true` - Make the pull down menu fixed to the top of the viewport.
          +* `maxonscreen: Infinity` - Maximum number of notifications to have onscreen.
          +* `labels: {redisplay: "Redisplay", all: "All", last: "Last"}` - Lets you change the displayed text, facilitating internationalization.
          +
          +`}`
          +
          +Reference Module
          +--------------
          +
          +`reference: {`
          +* `putThing: false` - Provide a thing for stuff. Turned off by default.
          +* `labels: {text: "Spin Around"}` - If you are displaying any text, you should use a labels options to support internationalization.
          +
          +`}`
          +
          +Callbacks Module
          +================
          +
          +The callback options all expect one argument, a function, which will be called when that event occurs. They can be included in the options object passed to PNotify() just like the core options. If the function returns false on the "before_open" or "before_close" callback, that event will be canceled.
          +
          +* `before_init` - This option is called before the notice has been initialized. It accepts one argument, the options object.
          +* `after_init` - This option is called after the notice has been initialized. It accepts one argument, the notice object.
          +* `before_open` - This option is called before the notice has been displayed. It accepts one argument, the notice object.
          +* `after_open` - This option is called after the notice has been displayed. It accepts one argument, the notice object.
          +* `before_close` - This option is called before the notice closes. It accepts one argument, the notice object.
          +* `after_close` - This option is called after the notice closes. It accepts one argument, the notice object.
          +
          +Utility Functions
          +=================
          +
          +* `PNotify.reload(root)` - Reinitialize PNotify. PNotify, in a browser, is initialized with window as the root. Returns the created PNotify object.
          +* `PNotify.removeAll()` - Remove all notices.
          +* `PNotify.removeStack(stack)` - Remove all the notices in a stack.
          +* `PNotify.positionAll(animate)` - Reposition the notices, optionally animating their movement.
          +* `notice.open()` - Open the notice.
          +* `notice.remove()` - Remove the notice.
          +* `notice.get()` - Get the notice's DOM element.
          +
          +Using PNotify with RequireJS
          +============================
          +
          +When they detect AMD/RequireJS, PNotify core defines the named module "pnotify", and PNotify's modules each define names like "pnotify.module". The following example shows the use of the nonblock and desktop modules with RequireJS.
          +
          +```js
          +requirejs(['pnotify', 'pnotify.nonblock', 'pnotify.desktop'], function(PNotify){
          +    PNotify.desktop.permission();
          +    new PNotify({
          +        title: 'Desktop Notice',
          +        text: 'If you\'ve given me permission, I\'ll appear as a desktop notification. If you haven\'t, I\'ll still appear as a regular PNotify notice.',
          +        desktop: {
          +            desktop: true
          +        },
          +        nonblock: {
          +            nonblock: true
          +        }
          +    });
          +});
          +```
          +
          +Licensing and Additional Info
          +=============================
          +
          +PNotify is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
          +
          +See http://sciactive.com/pnotify/ for download, more information, and examples.
          diff --git a/public/theme/pnotify/bower.json b/public/theme/pnotify/bower.json
          new file mode 100644
          index 0000000..4dc17fd
          --- /dev/null
          +++ b/public/theme/pnotify/bower.json
          @@ -0,0 +1,36 @@
          +{
          +  "name": "pnotify",
          +  "description": "JavaScript notification plugin.",
          +  "main": [
          +    "dist/pnotify.animate.js",
          +    "dist/pnotify.brighttheme.css",
          +    "dist/pnotify.buttons.css",
          +    "dist/pnotify.buttons.js",
          +    "dist/pnotify.callbacks.js",
          +    "dist/pnotify.confirm.js",
          +    "dist/pnotify.css",
          +    "dist/pnotify.js",
          +    "dist/pnotify.desktop.js",
          +    "dist/pnotify.history.css",
          +    "dist/pnotify.history.js",
          +    "dist/pnotify.mobile.css",
          +    "dist/pnotify.mobile.js",
          +    "dist/pnotify.nonblock.js"
          +  ],
          +  "ignore": [
          +    "build-tools/",
          +    "includes/",
          +    "devnote*.*",
          +    "index.html",
          +    "testing.html",
          +    "buildcustom.php",
          +    "package.json",
          +    "src/"
          +  ],
          +  "license": [
          +    "Apache-2.0"
          +  ],
          +  "dependencies": {
          +    "jquery": ">=1.6"
          +  }
          +}
          diff --git a/public/theme/pnotify/dist/pnotify.animate.js b/public/theme/pnotify/dist/pnotify.animate.js
          new file mode 100644
          index 0000000..37468df
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.animate.js
          @@ -0,0 +1,4 @@
          +(function(e,d){"function"===typeof define&&define.amd?define("pnotify.animate",["jquery","pnotify"],d):"object"===typeof exports&&"undefined"!==typeof module?module.exports=d(require("jquery"),require("./pnotify")):d(e.jQuery,e.PNotify)})(this,function(e,d){d.prototype.options.animate={animate:!1,in_class:"",out_class:""};d.prototype.modules.animate={init:function(a,b){this.setUpAnimations(a,b);a.attention=function(c,b){a.elem.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",
          +function(){a.elem.removeClass(c);b&&b.call(a)}).addClass("animated "+c)}},update:function(a,b,c){b.animate!=c.animate&&this.setUpAnimations(a,b)},setUpAnimations:function(a,b){if(b.animate){a.options.animation="none";a.elem.removeClass("ui-pnotify-fade-slow ui-pnotify-fade-normal ui-pnotify-fade-fast");a._animateIn||(a._animateIn=a.animateIn);a._animateOut||(a._animateOut=a.animateOut);a.animateIn=this.animateIn.bind(this);a.animateOut=this.animateOut.bind(this);var c=400;"slow"===a.options.animate_speed?
          +c=600:"fast"===a.options.animate_speed?c=200:0<a.options.animate_speed&&(c=a.options.animate_speed);c/=1E3;a.elem.addClass("animated").css({"-webkit-animation-duration":c+"s","-moz-animation-duration":c+"s","animation-duration":c+"s"})}else a._animateIn&&a._animateOut&&(a.animateIn=a._animateIn,delete a._animateIn,a.animateOut=a._animateOut,delete a._animateOut,a.elem.addClass("animated"))},animateIn:function(a){this.notice.animating="in";var b=this;a=function(){this&&this.call();b.notice.animating=
          +!1}.bind(a);this.notice.elem.show().one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",a).removeClass(this.options.out_class).addClass("ui-pnotify-in").addClass(this.options.in_class)},animateOut:function(a){this.notice.animating="out";var b=this;a=function(){b.notice.elem.removeClass("ui-pnotify-in");this&&this.call();b.notice.animating=!1}.bind(a);this.notice.elem.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",a).removeClass(this.options.in_class).addClass(this.options.out_class)}}});
          diff --git a/public/theme/pnotify/dist/pnotify.brighttheme.css b/public/theme/pnotify/dist/pnotify.brighttheme.css
          new file mode 100644
          index 0000000..f12b7b6
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.brighttheme.css
          @@ -0,0 +1 @@
          +.brighttheme{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.brighttheme.ui-pnotify-container{padding:18px}.brighttheme .ui-pnotify-title{margin-bottom:12px}.brighttheme-notice{background-color:#FFFFA2;border:0 solid #FF0;color:#4F4F00}.brighttheme-info{background-color:#8FCEDD;border:0 solid #0286A5;color:#012831}.brighttheme-success{background-color:#AFF29A;border:0 solid #35DB00;color:#104300}.brighttheme-error{background-color:#FFABA2;background-image:repeating-linear-gradient(135deg,transparent,transparent 35px,rgba(255,255,255,.3) 35px,rgba(255,255,255,.3) 70px);border:0 solid #FF1800;color:#4F0800}.brighttheme-icon-closer,.brighttheme-icon-info,.brighttheme-icon-notice,.brighttheme-icon-sticker,.brighttheme-icon-success{position:relative;width:16px;height:16px;font-size:12px;font-weight:700;line-height:16px;font-family:"Courier New",Courier,monospace;border-radius:50%}.brighttheme-icon-closer:after,.brighttheme-icon-info:after,.brighttheme-icon-notice:after,.brighttheme-icon-sticker:after,.brighttheme-icon-success:after{position:absolute;top:0;left:4px}.brighttheme-icon-notice{background-color:#2E2E00;color:#FFFFA2;margin-top:2px}.brighttheme-icon-notice:after{content:"!"}.brighttheme-icon-info{background-color:#012831;color:#8FCEDD;margin-top:2px}.brighttheme-icon-info:after{content:"i"}.brighttheme-icon-success{background-color:#104300;color:#AFF29A;margin-top:2px}.brighttheme-icon-success:after{content:"\002713"}.brighttheme-icon-error{position:relative;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:16px solid #2E0400;font-size:0;line-height:0;color:#FFABA2;margin-top:1px}.brighttheme-icon-error:after{position:absolute;top:1px;left:-4px;font-size:12px;font-weight:700;line-height:16px;font-family:"Courier New",Courier,monospace;content:"!"}.brighttheme-icon-closer,.brighttheme-icon-sticker{display:inline-block}.brighttheme-icon-closer:after{top:-4px;content:"\002715"}.brighttheme-icon-sticker:after{top:-5px;content:"\01D1BC";-moz-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.brighttheme-icon-sticker.brighttheme-icon-stuck:after{-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.brighttheme .ui-pnotify-action-bar{padding-top:12px}.brighttheme .ui-pnotify-action-bar input,.brighttheme .ui-pnotify-action-bar textarea{display:block;width:100%;margin-bottom:12px!important}.brighttheme .ui-pnotify-action-button{text-transform:uppercase;font-weight:700;padding:4px 8px;border:none;background:0 0}.brighttheme .ui-pnotify-action-button.btn-primary{border:none;border-radius:0}.brighttheme-notice .ui-pnotify-action-button.btn-primary{background-color:#FF0;color:#4F4F00}.brighttheme-info .ui-pnotify-action-button.btn-primary{background-color:#0286A5;color:#012831}.brighttheme-success .ui-pnotify-action-button.btn-primary{background-color:#35DB00;color:#104300}.brighttheme-error .ui-pnotify-action-button.btn-primary{background-color:#FF1800;color:#4F0800}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.buttons.css b/public/theme/pnotify/dist/pnotify.buttons.css
          new file mode 100644
          index 0000000..f354998
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.buttons.css
          @@ -0,0 +1 @@
          +.ui-pnotify-closer,.ui-pnotify-sticker{float:right;margin-left:.2em}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.buttons.js b/public/theme/pnotify/dist/pnotify.buttons.js
          new file mode 100644
          index 0000000..5dc3664
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.buttons.js
          @@ -0,0 +1,8 @@
          +(function(d,e){"function"===typeof define&&define.amd?define("pnotify.buttons",["jquery","pnotify"],e):"object"===typeof exports&&"undefined"!==typeof module?module.exports=e(require("jquery"),require("./pnotify")):e(d.jQuery,d.PNotify)})(this,function(d,e){e.prototype.options.buttons={closer:!0,closer_hover:!0,sticker:!0,sticker_hover:!0,show_on_nonblock:!1,labels:{close:"Close",stick:"Stick",unstick:"Unstick"},classes:{closer:null,pin_up:null,pin_down:null}};e.prototype.modules.buttons={closer:null,
          +sticker:null,init:function(a,b){var c=this;a.elem.on({mouseenter:function(b){!c.options.sticker||a.options.nonblock&&a.options.nonblock.nonblock&&!c.options.show_on_nonblock||c.sticker.trigger("pnotify:buttons:toggleStick").css("visibility","visible");!c.options.closer||a.options.nonblock&&a.options.nonblock.nonblock&&!c.options.show_on_nonblock||c.closer.css("visibility","visible")},mouseleave:function(a){c.options.sticker_hover&&c.sticker.css("visibility","hidden");c.options.closer_hover&&c.closer.css("visibility",
          +"hidden")}});this.sticker=d("<div />",{"class":"ui-pnotify-sticker","aria-role":"button","aria-pressed":a.options.hide?"false":"true",tabindex:"0",title:a.options.hide?b.labels.stick:b.labels.unstick,css:{cursor:"pointer",visibility:b.sticker_hover?"hidden":"visible"},click:function(){a.options.hide=!a.options.hide;a.options.hide?a.queueRemove():a.cancelRemove();d(this).trigger("pnotify:buttons:toggleStick")}}).bind("pnotify:buttons:toggleStick",function(){var b=null===c.options.classes.pin_up?a.styles.pin_up:
          +c.options.classes.pin_up,e=null===c.options.classes.pin_down?a.styles.pin_down:c.options.classes.pin_down;d(this).attr("title",a.options.hide?c.options.labels.stick:c.options.labels.unstick).children().attr("class","").addClass(a.options.hide?b:e).attr("aria-pressed",a.options.hide?"false":"true")}).append("<span />").trigger("pnotify:buttons:toggleStick").prependTo(a.container);(!b.sticker||a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock)&&this.sticker.css("display","none");
          +this.closer=d("<div />",{"class":"ui-pnotify-closer","aria-role":"button",tabindex:"0",title:b.labels.close,css:{cursor:"pointer",visibility:b.closer_hover?"hidden":"visible"},click:function(){a.remove(!1);c.sticker.css("visibility","hidden");c.closer.css("visibility","hidden")}}).append(d("<span />",{"class":null===b.classes.closer?a.styles.closer:b.classes.closer})).prependTo(a.container);(!b.closer||a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock)&&this.closer.css("display",
          +"none")},update:function(a,b){!b.closer||a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock?this.closer.css("display","none"):b.closer&&this.closer.css("display","block");!b.sticker||a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock?this.sticker.css("display","none"):b.sticker&&this.sticker.css("display","block");this.sticker.trigger("pnotify:buttons:toggleStick");this.closer.find("span").attr("class","").addClass(null===b.classes.closer?a.styles.closer:b.classes.closer);
          +b.sticker_hover?this.sticker.css("visibility","hidden"):a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock||this.sticker.css("visibility","visible");b.closer_hover?this.closer.css("visibility","hidden"):a.options.nonblock&&a.options.nonblock.nonblock&&!b.show_on_nonblock||this.closer.css("visibility","visible")}};d.extend(e.styling.brighttheme,{closer:"brighttheme-icon-closer",pin_up:"brighttheme-icon-sticker",pin_down:"brighttheme-icon-sticker brighttheme-icon-stuck"});d.extend(e.styling.jqueryui,
          +{closer:"ui-icon ui-icon-close",pin_up:"ui-icon ui-icon-pin-w",pin_down:"ui-icon ui-icon-pin-s"});d.extend(e.styling.bootstrap2,{closer:"icon-remove",pin_up:"icon-pause",pin_down:"icon-play"});d.extend(e.styling.bootstrap3,{closer:"glyphicon glyphicon-remove",pin_up:"glyphicon glyphicon-pause",pin_down:"glyphicon glyphicon-play"});d.extend(e.styling.fontawesome,{closer:"fa fa-times",pin_up:"fa fa-pause",pin_down:"fa fa-play"})});
          diff --git a/public/theme/pnotify/dist/pnotify.callbacks.js b/public/theme/pnotify/dist/pnotify.callbacks.js
          new file mode 100644
          index 0000000..e692bad
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.callbacks.js
          @@ -0,0 +1,2 @@
          +(function(b,a){"function"===typeof define&&define.amd?define("pnotify.callbacks",["jquery","pnotify"],a):"object"===typeof exports&&"undefined"!==typeof module?module.exports=a(require("jquery"),require("./pnotify")):a(b.jQuery,b.PNotify)})(this,function(b,a){var c=a.prototype.init,d=a.prototype.open,e=a.prototype.remove;a.prototype.init=function(){this.options.before_init&&this.options.before_init(this.options);c.apply(this,arguments);this.options.after_init&&this.options.after_init(this)};a.prototype.open=
          +function(){var a;this.options.before_open&&(a=this.options.before_open(this));!1!==a&&(d.apply(this,arguments),this.options.after_open&&this.options.after_open(this))};a.prototype.remove=function(a){var b;this.options.before_close&&(b=this.options.before_close(this,a));!1!==b&&(e.apply(this,arguments),this.options.after_close&&this.options.after_close(this,a))}});
          diff --git a/public/theme/pnotify/dist/pnotify.confirm.js b/public/theme/pnotify/dist/pnotify.confirm.js
          new file mode 100644
          index 0000000..34f721d
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.confirm.js
          @@ -0,0 +1,7 @@
          +(function(e,c){"function"===typeof define&&define.amd?define("pnotify.confirm",["jquery","pnotify"],c):"object"===typeof exports&&"undefined"!==typeof module?module.exports=c(require("jquery"),require("./pnotify")):c(e.jQuery,e.PNotify)})(this,function(e,c){c.prototype.options.confirm={confirm:!1,prompt:!1,prompt_class:"",prompt_default:"",prompt_multi_line:!1,align:"right",buttons:[{text:"Ok",addClass:"",promptTrigger:!0,click:function(b,a){b.remove();b.get().trigger("pnotify.confirm",[b,a])}},{text:"Cancel",
          +addClass:"",click:function(b){b.remove();b.get().trigger("pnotify.cancel",b)}}]};c.prototype.modules.confirm={container:null,prompt:null,init:function(b,a){this.container=e('<div class="ui-pnotify-action-bar" style="margin-top:5px;clear:both;" />').css("text-align",a.align).appendTo(b.container);a.confirm||a.prompt?this.makeDialog(b,a):this.container.hide()},update:function(b,a){a.confirm?(this.makeDialog(b,a),this.container.show()):this.container.hide().empty()},afterOpen:function(b,a){a.prompt&&
          +this.prompt.focus()},makeDialog:function(b,a){var h=!1,l=this,g,d;this.container.empty();a.prompt&&(this.prompt=e("<"+(a.prompt_multi_line?'textarea rows="5"':'input type="text"')+' style="margin-bottom:5px;clear:both;" />').addClass(("undefined"===typeof b.styles.input?"":b.styles.input)+" "+("undefined"===typeof a.prompt_class?"":a.prompt_class)).val(a.prompt_default).appendTo(this.container));for(var m=a.buttons[0]&&a.buttons[0]!==c.prototype.options.confirm.buttons[0],f=0;f<a.buttons.length;f++)if(!(null===
          +a.buttons[f]||m&&c.prototype.options.confirm.buttons[f]&&c.prototype.options.confirm.buttons[f]===a.buttons[f])){g=a.buttons[f];h?this.container.append(" "):h=!0;d=e('<button type="button" class="ui-pnotify-action-button" />').addClass(("undefined"===typeof b.styles.btn?"":b.styles.btn)+" "+("undefined"===typeof g.addClass?"":g.addClass)).text(g.text).appendTo(this.container).on("click",function(k){return function(){"function"==typeof k.click&&k.click(b,a.prompt?l.prompt.val():null)}}(g));a.prompt&&
          +!a.prompt_multi_line&&g.promptTrigger&&this.prompt.keypress(function(b){return function(a){13==a.keyCode&&b.click()}}(d));b.styles.text&&d.wrapInner('<span class="'+b.styles.text+'"></span>');b.styles.btnhover&&d.hover(function(a){return function(){a.addClass(b.styles.btnhover)}}(d),function(a){return function(){a.removeClass(b.styles.btnhover)}}(d));if(b.styles.btnactive)d.on("mousedown",function(a){return function(){a.addClass(b.styles.btnactive)}}(d)).on("mouseup",function(a){return function(){a.removeClass(b.styles.btnactive)}}(d));
          +if(b.styles.btnfocus)d.on("focus",function(a){return function(){a.addClass(b.styles.btnfocus)}}(d)).on("blur",function(a){return function(){a.removeClass(b.styles.btnfocus)}}(d))}}};e.extend(c.styling.jqueryui,{btn:"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only",btnhover:"ui-state-hover",btnactive:"ui-state-active",btnfocus:"ui-state-focus",input:"",text:"ui-button-text"});e.extend(c.styling.bootstrap2,{btn:"btn",input:""});e.extend(c.styling.bootstrap3,{btn:"btn btn-default",
          +input:"form-control"});e.extend(c.styling.fontawesome,{btn:"btn btn-default",input:"form-control"})});
          diff --git a/public/theme/pnotify/dist/pnotify.css b/public/theme/pnotify/dist/pnotify.css
          new file mode 100644
          index 0000000..20d622c
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.css
          @@ -0,0 +1 @@
          +.ui-pnotify{top:36px;right:36px;position:absolute;height:auto;z-index:2}body>.ui-pnotify{position:fixed;z-index:100040}.ui-pnotify-modal-overlay{background-color:rgba(0,0,0,.4);top:0;left:0;position:absolute;height:100%;width:100%;z-index:1}body>.ui-pnotify-modal-overlay{position:fixed;z-index:100039}.ui-pnotify.ui-pnotify-in{display:block!important}.ui-pnotify.ui-pnotify-move{transition:left .5s ease,top .5s ease,right .5s ease,bottom .5s ease}.ui-pnotify.ui-pnotify-fade-slow{transition:opacity .6s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-slow.ui-pnotify.ui-pnotify-move{transition:opacity .6s linear,left .5s ease,top .5s ease,right .5s ease,bottom .5s ease}.ui-pnotify.ui-pnotify-fade-normal{transition:opacity .4s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-normal.ui-pnotify.ui-pnotify-move{transition:opacity .4s linear,left .5s ease,top .5s ease,right .5s ease,bottom .5s ease}.ui-pnotify.ui-pnotify-fade-fast{transition:opacity .2s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-fast.ui-pnotify.ui-pnotify-move{transition:opacity .2s linear,left .5s ease,top .5s ease,right .5s ease,bottom .5s ease}.ui-pnotify.ui-pnotify-fade-in{opacity:1}.ui-pnotify .ui-pnotify-shadow{-webkit-box-shadow:0 6px 28px 0 rgba(0,0,0,.1);-moz-box-shadow:0 6px 28px 0 rgba(0,0,0,.1);box-shadow:0 6px 28px 0 rgba(0,0,0,.1)}.ui-pnotify-container{background-position:0 0;padding:.8em;height:100%;margin:0}.ui-pnotify-container:after{content:" ";visibility:hidden;display:block;height:0;clear:both}.ui-pnotify-container.ui-pnotify-sharp{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-pnotify-title{display:block;margin-bottom:.4em;margin-top:0}.ui-pnotify-text{display:block}.ui-pnotify-icon,.ui-pnotify-icon span{display:block;float:left;margin-right:.2em}.ui-pnotify.stack-bottomleft,.ui-pnotify.stack-topleft{left:25px;right:auto}.ui-pnotify.stack-bottomleft,.ui-pnotify.stack-bottomright{bottom:25px;top:auto}.ui-pnotify.stack-modal{left:50%;right:auto;margin-left:-150px}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.desktop.js b/public/theme/pnotify/dist/pnotify.desktop.js
          new file mode 100644
          index 0000000..5bff3c7
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.desktop.js
          @@ -0,0 +1,5 @@
          +(function(e,c){"function"===typeof define&&define.amd?define("pnotify.desktop",["jquery","pnotify"],c):"object"===typeof exports&&"undefined"!==typeof module?module.exports=c(require("jquery"),require("./pnotify")):c(e.jQuery,e.PNotify)})(this,function(e,c){var d,f=function(a,b){f="Notification"in window?function(a,b){return new Notification(a,b)}:"mozNotification"in navigator?function(a,b){return navigator.mozNotification.createNotification(a,b.body,b.icon).show()}:"webkitNotifications"in window?
          +function(a,b){return window.webkitNotifications.createNotification(b.icon,a,b.body)}:function(a,b){return null};return f(a,b)};c.prototype.options.desktop={desktop:!1,fallback:!0,icon:null,tag:null};c.prototype.modules.desktop={tag:null,icon:null,genNotice:function(a,b){this.icon=null===b.icon?"http://sciactive.com/pnotify/includes/desktop/"+a.options.type+".png":!1===b.icon?null:b.icon;if(null===this.tag||null!==b.tag)this.tag=null===b.tag?"PNotify-"+Math.round(1E6*Math.random()):b.tag;a.desktop=
          +f(a.options.title,{icon:this.icon,body:b.text||a.options.text,tag:this.tag});!("close"in a.desktop)&&"cancel"in a.desktop&&(a.desktop.close=function(){a.desktop.cancel()});a.desktop.onclick=function(){a.elem.trigger("click")};a.desktop.onclose=function(){"closing"!==a.state&&"closed"!==a.state&&a.remove()}},init:function(a,b){b.desktop&&(d=c.desktop.checkPermission(),0!==d?b.fallback||(a.options.auto_display=!1):this.genNotice(a,b))},update:function(a,b,c){0!==d&&b.fallback||!b.desktop||this.genNotice(a,
          +b)},beforeOpen:function(a,b){0!==d&&b.fallback||!b.desktop||a.elem.css({left:"-10000px"}).removeClass("ui-pnotify-in")},afterOpen:function(a,b){0!==d&&b.fallback||!b.desktop||(a.elem.css({left:"-10000px"}).removeClass("ui-pnotify-in"),"show"in a.desktop&&a.desktop.show())},beforeClose:function(a,b){0!==d&&b.fallback||!b.desktop||a.elem.css({left:"-10000px"}).removeClass("ui-pnotify-in")},afterClose:function(a,b){0!==d&&b.fallback||!b.desktop||(a.elem.css({left:"-10000px"}).removeClass("ui-pnotify-in"),
          +"close"in a.desktop&&a.desktop.close())}};c.desktop={permission:function(){"undefined"!==typeof Notification&&"requestPermission"in Notification?Notification.requestPermission():"webkitNotifications"in window&&window.webkitNotifications.requestPermission()},checkPermission:function(){return"undefined"!==typeof Notification&&"permission"in Notification?"granted"===Notification.permission?0:1:"webkitNotifications"in window?0==window.webkitNotifications.checkPermission()?0:1:1}};d=c.desktop.checkPermission()});
          diff --git a/public/theme/pnotify/dist/pnotify.history.css b/public/theme/pnotify/dist/pnotify.history.css
          new file mode 100644
          index 0000000..648fec2
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.history.css
          @@ -0,0 +1 @@
          +.ui-pnotify-history-container{position:absolute;top:0;right:18px;width:70px;border-top:none;padding:0;-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0;z-index:10000}.ui-pnotify-history-container.ui-pnotify-history-fixed{position:fixed}.ui-pnotify-history-container .ui-pnotify-history-header{padding:2px;text-align:center}.ui-pnotify-history-container button{cursor:pointer;display:block;width:100%}.ui-pnotify-history-container .ui-pnotify-history-pulldown{display:block;margin:0 auto}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.history.js b/public/theme/pnotify/dist/pnotify.history.js
          new file mode 100644
          index 0000000..2f667c6
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.history.js
          @@ -0,0 +1,6 @@
          +(function(b,a){"function"===typeof define&&define.amd?define("pnotify.history",["jquery","pnotify"],a):"object"===typeof exports&&"undefined"!==typeof module?module.exports=a(require("jquery"),require("./pnotify")):a(b.jQuery,b.PNotify)})(this,function(b,a){var c,e;b(function(){b("body").on("pnotify.history-all",function(){b.each(a.notices,function(){this.modules.history.inHistory&&(this.elem.is(":visible")?this.options.hide&&this.queueRemove():this.open&&this.open())})}).on("pnotify.history-last",
          +function(){var b="top"===a.prototype.options.stack.push,d=b?0:-1,c;do{c=-1===d?a.notices.slice(d):a.notices.slice(d,d+1);if(!c[0])return!1;d=b?d+1:d-1}while(!c[0].modules.history.inHistory||c[0].elem.is(":visible"));c[0].open&&c[0].open()})});a.prototype.options.history={history:!0,menu:!1,fixed:!0,maxonscreen:Infinity,labels:{redisplay:"Redisplay",all:"All",last:"Last"}};a.prototype.modules.history={inHistory:!1,init:function(a,d){a.options.destroy=!1;this.inHistory=d.history;d.menu&&"undefined"===
          +typeof c&&(c=b("<div />",{"class":"ui-pnotify-history-container "+a.styles.hi_menu,mouseleave:function(){c.animate({top:"-"+e+"px"},{duration:100,queue:!1})}}).append(b("<div />",{"class":"ui-pnotify-history-header",text:d.labels.redisplay})).append(b("<button />",{"class":"ui-pnotify-history-all "+a.styles.hi_btn,text:d.labels.all,mouseenter:function(){b(this).addClass(a.styles.hi_btnhov)},mouseleave:function(){b(this).removeClass(a.styles.hi_btnhov)},click:function(){b(this).trigger("pnotify.history-all");
          +return!1}})).append(b("<button />",{"class":"ui-pnotify-history-last "+a.styles.hi_btn,text:d.labels.last,mouseenter:function(){b(this).addClass(a.styles.hi_btnhov)},mouseleave:function(){b(this).removeClass(a.styles.hi_btnhov)},click:function(){b(this).trigger("pnotify.history-last");return!1}})).appendTo("body"),e=b("<span />",{"class":"ui-pnotify-history-pulldown "+a.styles.hi_hnd,mouseenter:function(){c.animate({top:"0"},{duration:100,queue:!1})}}).appendTo(c).offset().top+2,c.css({top:"-"+e+
          +"px"}),d.fixed&&c.addClass("ui-pnotify-history-fixed"))},update:function(a,b){this.inHistory=b.history;b.fixed&&c?c.addClass("ui-pnotify-history-fixed"):c&&c.removeClass("ui-pnotify-history-fixed")},beforeOpen:function(c,d){if(a.notices&&a.notices.length>d.maxonscreen){var e;e="top"!==c.options.stack.push?a.notices.slice(0,a.notices.length-d.maxonscreen):a.notices.slice(d.maxonscreen,a.notices.length);b.each(e,function(){this.remove&&this.remove()})}}};b.extend(a.styling.jqueryui,{hi_menu:"ui-state-default ui-corner-bottom",
          +hi_btn:"ui-state-default ui-corner-all",hi_btnhov:"ui-state-hover",hi_hnd:"ui-icon ui-icon-grip-dotted-horizontal"});b.extend(a.styling.bootstrap2,{hi_menu:"well",hi_btn:"btn",hi_btnhov:"",hi_hnd:"icon-chevron-down"});b.extend(a.styling.bootstrap3,{hi_menu:"well",hi_btn:"btn btn-default",hi_btnhov:"",hi_hnd:"glyphicon glyphicon-chevron-down"});b.extend(a.styling.fontawesome,{hi_menu:"well",hi_btn:"btn btn-default",hi_btnhov:"",hi_hnd:"fa fa-chevron-down"})});
          diff --git a/public/theme/pnotify/dist/pnotify.js b/public/theme/pnotify/dist/pnotify.js
          new file mode 100644
          index 0000000..1bd31d2
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.js
          @@ -0,0 +1,31 @@
          +/*
          +PNotify 3.0.0 sciactive.com/pnotify/
          +(C) 2015 Hunter Perrin; Google, Inc.
          +license Apache-2.0
          +*/
          +(function(b,k){"function"===typeof define&&define.amd?define("pnotify",["jquery"],function(q){return k(q,b)}):"object"===typeof exports&&"undefined"!==typeof module?module.exports=k(require("jquery"),global||b):b.PNotify=k(b.jQuery,b)})(this,function(b,k){var q=function(l){var k={dir1:"down",dir2:"left",push:"bottom",spacing1:36,spacing2:36,context:b("body"),modal:!1},g,h,n=b(l),r=function(){h=b("body");d.prototype.options.stack.context=h;n=b(l);n.bind("resize",function(){g&&clearTimeout(g);g=setTimeout(function(){d.positionAll(!0)},
          +10)})},s=function(c){var a=b("<div />",{"class":"ui-pnotify-modal-overlay"});a.prependTo(c.context);c.overlay_close&&a.click(function(){d.removeStack(c)});return a},d=function(c){this.parseOptions(c);this.init()};b.extend(d.prototype,{version:"3.0.0",options:{title:!1,title_escape:!1,text:!1,text_escape:!1,styling:"brighttheme",addclass:"",cornerclass:"",auto_display:!0,width:"300px",min_height:"16px",type:"notice",icon:!0,animation:"fade",animate_speed:"normal",shadow:!0,hide:!0,delay:8E3,mouse_reset:!0,
          +remove:!0,insert_brs:!0,destroy:!0,stack:k},modules:{},runModules:function(c,a){var p,b;for(b in this.modules)p="object"===typeof a&&b in a?a[b]:a,"function"===typeof this.modules[b][c]&&(this.modules[b].notice=this,this.modules[b].options="object"===typeof this.options[b]?this.options[b]:{},this.modules[b][c](this,"object"===typeof this.options[b]?this.options[b]:{},p))},state:"initializing",timer:null,animTimer:null,styles:null,elem:null,container:null,title_container:null,text_container:null,animating:!1,
          +timerHide:!1,init:function(){var c=this;this.modules={};b.extend(!0,this.modules,d.prototype.modules);this.styles="object"===typeof this.options.styling?this.options.styling:d.styling[this.options.styling];this.elem=b("<div />",{"class":"ui-pnotify "+this.options.addclass,css:{display:"none"},"aria-live":"assertive","aria-role":"alertdialog",mouseenter:function(a){if(c.options.mouse_reset&&"out"===c.animating){if(!c.timerHide)return;c.cancelRemove()}c.options.hide&&c.options.mouse_reset&&c.cancelRemove()},
          +mouseleave:function(a){c.options.hide&&c.options.mouse_reset&&"out"!==c.animating&&c.queueRemove();d.positionAll()}});"fade"===this.options.animation&&this.elem.addClass("ui-pnotify-fade-"+this.options.animate_speed);this.container=b("<div />",{"class":this.styles.container+" ui-pnotify-container "+("error"===this.options.type?this.styles.error:"info"===this.options.type?this.styles.info:"success"===this.options.type?this.styles.success:this.styles.notice),role:"alert"}).appendTo(this.elem);""!==
          +this.options.cornerclass&&this.container.removeClass("ui-corner-all").addClass(this.options.cornerclass);this.options.shadow&&this.container.addClass("ui-pnotify-shadow");!1!==this.options.icon&&b("<div />",{"class":"ui-pnotify-icon"}).append(b("<span />",{"class":!0===this.options.icon?"error"===this.options.type?this.styles.error_icon:"info"===this.options.type?this.styles.info_icon:"success"===this.options.type?this.styles.success_icon:this.styles.notice_icon:this.options.icon})).prependTo(this.container);
          +this.title_container=b("<h4 />",{"class":"ui-pnotify-title"}).appendTo(this.container);!1===this.options.title?this.title_container.hide():this.options.title_escape?this.title_container.text(this.options.title):this.title_container.html(this.options.title);this.text_container=b("<div />",{"class":"ui-pnotify-text","aria-role":"alert"}).appendTo(this.container);!1===this.options.text?this.text_container.hide():this.options.text_escape?this.text_container.text(this.options.text):this.text_container.html(this.options.insert_brs?
          +String(this.options.text).replace(/\n/g,"<br />"):this.options.text);"string"===typeof this.options.width&&this.elem.css("width",this.options.width);"string"===typeof this.options.min_height&&this.container.css("min-height",this.options.min_height);d.notices="top"===this.options.stack.push?b.merge([this],d.notices):b.merge(d.notices,[this]);"top"===this.options.stack.push&&this.queuePosition(!1,1);this.options.stack.animation=!1;this.runModules("init");this.options.auto_display&&this.open();return this},
          +update:function(c){var a=this.options;this.parseOptions(a,c);this.elem.removeClass("ui-pnotify-fade-slow ui-pnotify-fade-normal ui-pnotify-fade-fast");"fade"===this.options.animation&&this.elem.addClass("ui-pnotify-fade-"+this.options.animate_speed);this.options.cornerclass!==a.cornerclass&&this.container.removeClass("ui-corner-all "+a.cornerclass).addClass(this.options.cornerclass);this.options.shadow!==a.shadow&&(this.options.shadow?this.container.addClass("ui-pnotify-shadow"):this.container.removeClass("ui-pnotify-shadow"));
          +!1===this.options.addclass?this.elem.removeClass(a.addclass):this.options.addclass!==a.addclass&&this.elem.removeClass(a.addclass).addClass(this.options.addclass);!1===this.options.title?this.title_container.slideUp("fast"):this.options.title!==a.title&&(this.options.title_escape?this.title_container.text(this.options.title):this.title_container.html(this.options.title),!1===a.title&&this.title_container.slideDown(200));!1===this.options.text?this.text_container.slideUp("fast"):this.options.text!==
          +a.text&&(this.options.text_escape?this.text_container.text(this.options.text):this.text_container.html(this.options.insert_brs?String(this.options.text).replace(/\n/g,"<br />"):this.options.text),!1===a.text&&this.text_container.slideDown(200));this.options.type!==a.type&&this.container.removeClass(this.styles.error+" "+this.styles.notice+" "+this.styles.success+" "+this.styles.info).addClass("error"===this.options.type?this.styles.error:"info"===this.options.type?this.styles.info:"success"===this.options.type?
          +this.styles.success:this.styles.notice);if(this.options.icon!==a.icon||!0===this.options.icon&&this.options.type!==a.type)this.container.find("div.ui-pnotify-icon").remove(),!1!==this.options.icon&&b("<div />",{"class":"ui-pnotify-icon"}).append(b("<span />",{"class":!0===this.options.icon?"error"===this.options.type?this.styles.error_icon:"info"===this.options.type?this.styles.info_icon:"success"===this.options.type?this.styles.success_icon:this.styles.notice_icon:this.options.icon})).prependTo(this.container);
          +this.options.width!==a.width&&this.elem.animate({width:this.options.width});this.options.min_height!==a.min_height&&this.container.animate({minHeight:this.options.min_height});this.options.hide?a.hide||this.queueRemove():this.cancelRemove();this.queuePosition(!0);this.runModules("update",a);return this},open:function(){this.state="opening";this.runModules("beforeOpen");var c=this;this.elem.parent().length||this.elem.appendTo(this.options.stack.context?this.options.stack.context:h);"top"!==this.options.stack.push&&
          +this.position(!0);this.animateIn(function(){c.queuePosition(!0);c.options.hide&&c.queueRemove();c.state="open";c.runModules("afterOpen")});return this},remove:function(c){this.state="closing";this.timerHide=!!c;this.runModules("beforeClose");var a=this;this.timer&&(l.clearTimeout(this.timer),this.timer=null);this.animateOut(function(){a.state="closed";a.runModules("afterClose");a.queuePosition(!0);a.options.remove&&a.elem.detach();a.runModules("beforeDestroy");if(a.options.destroy&&null!==d.notices){var c=
          +b.inArray(a,d.notices);-1!==c&&d.notices.splice(c,1)}a.runModules("afterDestroy")});return this},get:function(){return this.elem},parseOptions:function(c,a){this.options=b.extend(!0,{},d.prototype.options);this.options.stack=d.prototype.options.stack;for(var p=[c,a],m,f=0;f<p.length;f++){m=p[f];if("undefined"===typeof m)break;if("object"!==typeof m)this.options.text=m;else for(var e in m)this.modules[e]?b.extend(!0,this.options[e],m[e]):this.options[e]=m[e]}},animateIn:function(c){this.animating=
          +"in";var a=this;c=function(){a.animTimer&&clearTimeout(a.animTimer);"in"===a.animating&&(a.elem.is(":visible")?(this&&this.call(),a.animating=!1):a.animTimer=setTimeout(c,40))}.bind(c);"fade"===this.options.animation?(this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend",c).addClass("ui-pnotify-in"),this.elem.css("opacity"),this.elem.addClass("ui-pnotify-fade-in"),this.animTimer=setTimeout(c,650)):(this.elem.addClass("ui-pnotify-in"),c())},animateOut:function(c){this.animating=
          +"out";var a=this;c=function(){a.animTimer&&clearTimeout(a.animTimer);"out"===a.animating&&("0"!=a.elem.css("opacity")&&a.elem.is(":visible")?a.animTimer=setTimeout(c,40):(a.elem.removeClass("ui-pnotify-in"),this&&this.call(),a.animating=!1))}.bind(c);"fade"===this.options.animation?(this.elem.one("webkitTransitionEnd mozTransitionEnd MSTransitionEnd oTransitionEnd transitionend",c).removeClass("ui-pnotify-fade-in"),this.animTimer=setTimeout(c,650)):(this.elem.removeClass("ui-pnotify-in"),c())},position:function(c){var a=
          +this.options.stack,b=this.elem;"undefined"===typeof a.context&&(a.context=h);if(a){"number"!==typeof a.nextpos1&&(a.nextpos1=a.firstpos1);"number"!==typeof a.nextpos2&&(a.nextpos2=a.firstpos2);"number"!==typeof a.addpos2&&(a.addpos2=0);var d=!b.hasClass("ui-pnotify-in");if(!d||c){a.modal&&(a.overlay?a.overlay.show():a.overlay=s(a));b.addClass("ui-pnotify-move");var f;switch(a.dir1){case "down":f="top";break;case "up":f="bottom";break;case "left":f="right";break;case "right":f="left"}c=parseInt(b.css(f).replace(/(?:\..*|[^0-9.])/g,
          +""));isNaN(c)&&(c=0);"undefined"!==typeof a.firstpos1||d||(a.firstpos1=c,a.nextpos1=a.firstpos1);var e;switch(a.dir2){case "down":e="top";break;case "up":e="bottom";break;case "left":e="right";break;case "right":e="left"}c=parseInt(b.css(e).replace(/(?:\..*|[^0-9.])/g,""));isNaN(c)&&(c=0);"undefined"!==typeof a.firstpos2||d||(a.firstpos2=c,a.nextpos2=a.firstpos2);if("down"===a.dir1&&a.nextpos1+b.height()>(a.context.is(h)?n.height():a.context.prop("scrollHeight"))||"up"===a.dir1&&a.nextpos1+b.height()>
          +(a.context.is(h)?n.height():a.context.prop("scrollHeight"))||"left"===a.dir1&&a.nextpos1+b.width()>(a.context.is(h)?n.width():a.context.prop("scrollWidth"))||"right"===a.dir1&&a.nextpos1+b.width()>(a.context.is(h)?n.width():a.context.prop("scrollWidth")))a.nextpos1=a.firstpos1,a.nextpos2+=a.addpos2+("undefined"===typeof a.spacing2?25:a.spacing2),a.addpos2=0;"number"===typeof a.nextpos2&&(a.animation?b.css(e,a.nextpos2+"px"):(b.removeClass("ui-pnotify-move"),b.css(e,a.nextpos2+"px"),b.css(e),b.addClass("ui-pnotify-move")));
          +switch(a.dir2){case "down":case "up":b.outerHeight(!0)>a.addpos2&&(a.addpos2=b.height());break;case "left":case "right":b.outerWidth(!0)>a.addpos2&&(a.addpos2=b.width())}"number"===typeof a.nextpos1&&(a.animation?b.css(f,a.nextpos1+"px"):(b.removeClass("ui-pnotify-move"),b.css(f,a.nextpos1+"px"),b.css(f),b.addClass("ui-pnotify-move")));switch(a.dir1){case "down":case "up":a.nextpos1+=b.height()+("undefined"===typeof a.spacing1?25:a.spacing1);break;case "left":case "right":a.nextpos1+=b.width()+("undefined"===
          +typeof a.spacing1?25:a.spacing1)}}return this}},queuePosition:function(b,a){g&&clearTimeout(g);a||(a=10);g=setTimeout(function(){d.positionAll(b)},a);return this},cancelRemove:function(){this.timer&&l.clearTimeout(this.timer);this.animTimer&&l.clearTimeout(this.animTimer);"closing"===this.state&&(this.state="open",this.animating=!1,this.elem.addClass("ui-pnotify-in"),"fade"===this.options.animation&&this.elem.addClass("ui-pnotify-fade-in"));return this},queueRemove:function(){var b=this;this.cancelRemove();
          +this.timer=l.setTimeout(function(){b.remove(!0)},isNaN(this.options.delay)?0:this.options.delay);return this}});b.extend(d,{notices:[],reload:q,removeAll:function(){b.each(d.notices,function(){this.remove&&this.remove(!1)})},removeStack:function(c){b.each(d.notices,function(){this.remove&&this.options.stack===c&&this.remove(!1)})},positionAll:function(c){g&&clearTimeout(g);g=null;if(d.notices&&d.notices.length)b.each(d.notices,function(){var a=this.options.stack;a&&(a.overlay&&a.overlay.hide(),a.nextpos1=
          +a.firstpos1,a.nextpos2=a.firstpos2,a.addpos2=0,a.animation=c)}),b.each(d.notices,function(){this.position()});else{var a=d.prototype.options.stack;a&&(delete a.nextpos1,delete a.nextpos2)}},styling:{brighttheme:{container:"brighttheme",notice:"brighttheme-notice",notice_icon:"brighttheme-icon-notice",info:"brighttheme-info",info_icon:"brighttheme-icon-info",success:"brighttheme-success",success_icon:"brighttheme-icon-success",error:"brighttheme-error",error_icon:"brighttheme-icon-error"},jqueryui:{container:"ui-widget ui-widget-content ui-corner-all",
          +notice:"ui-state-highlight",notice_icon:"ui-icon ui-icon-info",info:"",info_icon:"ui-icon ui-icon-info",success:"ui-state-default",success_icon:"ui-icon ui-icon-circle-check",error:"ui-state-error",error_icon:"ui-icon ui-icon-alert"},bootstrap3:{container:"alert",notice:"alert-warning",notice_icon:"glyphicon glyphicon-exclamation-sign",info:"alert-info",info_icon:"glyphicon glyphicon-info-sign",success:"alert-success",success_icon:"glyphicon glyphicon-ok-sign",error:"alert-danger",error_icon:"glyphicon glyphicon-warning-sign"}}});
          +d.styling.fontawesome=b.extend({},d.styling.bootstrap3);b.extend(d.styling.fontawesome,{notice_icon:"fa fa-exclamation-circle",info_icon:"fa fa-info",success_icon:"fa fa-check",error_icon:"fa fa-warning"});l.document.body?r():b(r);return d};return q(k)});
          diff --git a/public/theme/pnotify/dist/pnotify.material.css b/public/theme/pnotify/dist/pnotify.material.css
          new file mode 100644
          index 0000000..a995625
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.material.css
          @@ -0,0 +1 @@
          +@import url(https://fonts.googleapis.com/css?family=Material+Icons);.pnotify-material{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:14px}.pnotify-material.ui-pnotify-shadow{-webkit-box-shadow:0 6px 24px 0 rgba(0,0,0,.2);-moz-box-shadow:0 6px 24px 0 rgba(0,0,0,.2);box-shadow:0 6px 24px 0 rgba(0,0,0,.2)}.pnotify-material.ui-pnotify-container{padding:24px}.pnotify-material .ui-pnotify-title{margin-bottom:20px;font-size:20px}.pnotify-material-notice{background-color:#FFEB3B;border:none;color:rgba(0,0,0,.87)}.pnotify-material-info{background-color:#2196F3;border:none;color:#fff}.pnotify-material-success{background-color:#8BC34A;border:none;color:rgba(0,0,0,.87)}.pnotify-material-error{background-color:#F44336;border:none;color:#fff}.pnotify-material-icon-closer,.pnotify-material-icon-info,.pnotify-material-icon-notice,.pnotify-material-icon-sticker,.pnotify-material-icon-success{position:relative;width:16px;height:16px;font-size:12px;font-weight:700;line-height:16px;font-family:"Courier New",Courier,monospace;border-radius:50%}.pnotify-material-icon-closer:after,.pnotify-material-icon-info:after,.pnotify-material-icon-notice:after,.pnotify-material-icon-sticker:after,.pnotify-material-icon-success:after{position:absolute;top:0;left:4px}.pnotify-material-icon-notice:after{content:"announcement"}.pnotify-material-icon-info:after{content:"info"}.pnotify-material-icon-success:after{content:"check circle"}.pnotify-material-icon-error:after{content:"report problem"}.pnotify-material-icon-closer,.pnotify-material-icon-sticker{display:inline-block}.pnotify-material-icon-closer:after{top:-4px;content:"\002715"}.pnotify-material-icon-sticker:after{top:-5px;content:"\01D1BC";-moz-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.pnotify-material-icon-sticker.pnotify-material-icon-stuck:after{-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.mobile.css b/public/theme/pnotify/dist/pnotify.mobile.css
          new file mode 100644
          index 0000000..48e76b6
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.mobile.css
          @@ -0,0 +1 @@
          +.ui-pnotify-container{position:relative;left:0}@media (max-width:480px){.ui-pnotify-mobile-able.ui-pnotify{position:fixed;top:0;right:0;left:0;width:auto!important;font-size:1.2em;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-ms-font-smoothing:antialiased;font-smoothing:antialiased}.ui-pnotify-mobile-able.ui-pnotify .ui-pnotify-shadow{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-bottom-width:5px}.ui-pnotify-mobile-able .ui-pnotify-container{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-pnotify-mobile-able.ui-pnotify.stack-bottomleft,.ui-pnotify-mobile-able.ui-pnotify.stack-topleft{left:0;right:0}.ui-pnotify-mobile-able.ui-pnotify.stack-bottomleft,.ui-pnotify-mobile-able.ui-pnotify.stack-bottomright{left:0;right:0;bottom:0;top:auto}.ui-pnotify-mobile-able.ui-pnotify.stack-bottomleft .ui-pnotify-shadow,.ui-pnotify-mobile-able.ui-pnotify.stack-bottomright .ui-pnotify-shadow{border-top-width:5px;border-bottom-width:1px}}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.mobile.js b/public/theme/pnotify/dist/pnotify.mobile.js
          new file mode 100644
          index 0000000..3e966bd
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.mobile.js
          @@ -0,0 +1,5 @@
          +(function(g,c){"function"===typeof define&&define.amd?define("pnotify.mobile",["jquery","pnotify"],c):"object"===typeof exports&&"undefined"!==typeof module?module.exports=c(require("jquery"),require("./pnotify")):c(g.jQuery,g.PNotify)})(this,function(g,c){c.prototype.options.mobile={swipe_dismiss:!0,styling:!0};c.prototype.modules.mobile={swipe_dismiss:!0,init:function(a,b){var c=this,d=null,e=null,f=null;this.swipe_dismiss=b.swipe_dismiss;this.doMobileStyling(a,b);a.elem.on({touchstart:function(b){c.swipe_dismiss&&
          +(d=b.originalEvent.touches[0].screenX,f=a.elem.width(),a.container.css("left","0"))},touchmove:function(b){d&&c.swipe_dismiss&&(e=b.originalEvent.touches[0].screenX-d,b=(1-Math.abs(e)/f)*a.options.opacity,a.elem.css("opacity",b),a.container.css("left",e))},touchend:function(){if(d&&c.swipe_dismiss){if(40<Math.abs(e)){var b=0>e?-2*f:2*f;a.elem.animate({opacity:0},100);a.container.animate({left:b},100);a.remove()}else a.elem.animate({opacity:a.options.opacity},100),a.container.animate({left:0},100);
          +f=e=d=null}},touchcancel:function(){d&&c.swipe_dismiss&&(a.elem.animate({opacity:a.options.opacity},100),a.container.animate({left:0},100),f=e=d=null)}})},update:function(a,b){this.swipe_dismiss=b.swipe_dismiss;this.doMobileStyling(a,b)},doMobileStyling:function(a,b){if(b.styling)if(a.elem.addClass("ui-pnotify-mobile-able"),480>=g(window).width())a.options.stack.mobileOrigSpacing1||(a.options.stack.mobileOrigSpacing1=a.options.stack.spacing1,a.options.stack.mobileOrigSpacing2=a.options.stack.spacing2),
          +a.options.stack.spacing1=0,a.options.stack.spacing2=0;else{if(a.options.stack.mobileOrigSpacing1||a.options.stack.mobileOrigSpacing2)a.options.stack.spacing1=a.options.stack.mobileOrigSpacing1,delete a.options.stack.mobileOrigSpacing1,a.options.stack.spacing2=a.options.stack.mobileOrigSpacing2,delete a.options.stack.mobileOrigSpacing2}else a.elem.removeClass("ui-pnotify-mobile-able"),a.options.stack.mobileOrigSpacing1&&(a.options.stack.spacing1=a.options.stack.mobileOrigSpacing1,delete a.options.stack.mobileOrigSpacing1),
          +a.options.stack.mobileOrigSpacing2&&(a.options.stack.spacing2=a.options.stack.mobileOrigSpacing2,delete a.options.stack.mobileOrigSpacing2)}}});
          diff --git a/public/theme/pnotify/dist/pnotify.nonblock.css b/public/theme/pnotify/dist/pnotify.nonblock.css
          new file mode 100644
          index 0000000..e9c01a9
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.nonblock.css
          @@ -0,0 +1 @@
          +.ui-pnotify.ui-pnotify-nonblock-fade{opacity:.2}.ui-pnotify.ui-pnotify-nonblock-hide{display:none!important}
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.nonblock.js b/public/theme/pnotify/dist/pnotify.nonblock.js
          new file mode 100644
          index 0000000..7cd07cb
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.nonblock.js
          @@ -0,0 +1,6 @@
          +(function(h,f){"function"===typeof define&&define.amd?define("pnotify.nonblock",["jquery","pnotify"],f):"object"===typeof exports&&"undefined"!==typeof module?module.exports=f(require("jquery"),require("./pnotify")):f(h.jQuery,h.PNotify)})(this,function(h,f){var l=/^on/,m=/^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/,n=/^(focus|blur|select|change|reset)$|^key(press|down|up)$/,p=/^(scroll|resize|(un)?load|abort|error)$/,k=function(c,b){var d;c=c.toLowerCase();document.createEvent&&
          +this.dispatchEvent?(c=c.replace(l,""),c.match(m)?(h(this).offset(),d=document.createEvent("MouseEvents"),d.initMouseEvent(c,b.bubbles,b.cancelable,b.view,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget)):c.match(n)?(d=document.createEvent("UIEvents"),d.initUIEvent(c,b.bubbles,b.cancelable,b.view,b.detail)):c.match(p)&&(d=document.createEvent("HTMLEvents"),d.initEvent(c,b.bubbles,b.cancelable)),d&&this.dispatchEvent(d)):(c.match(l)||
          +(c="on"+c),d=document.createEventObject(b),this.fireEvent(c,d))},g,e=function(c,b,d){c.elem.addClass("ui-pnotify-nonblock-hide");var a=document.elementFromPoint(b.clientX,b.clientY);c.elem.removeClass("ui-pnotify-nonblock-hide");var f=h(a),e=f.css("cursor");"auto"===e&&"A"===a.tagName&&(e="pointer");c.elem.css("cursor","auto"!==e?e:"default");g&&g.get(0)==a||(g&&(k.call(g.get(0),"mouseleave",b.originalEvent),k.call(g.get(0),"mouseout",b.originalEvent)),k.call(a,"mouseenter",b.originalEvent),k.call(a,
          +"mouseover",b.originalEvent));k.call(a,d,b.originalEvent);g=f};f.prototype.options.nonblock={nonblock:!1};f.prototype.modules.nonblock={init:function(c,b){var d=this;c.elem.on({mouseenter:function(a){d.options.nonblock&&a.stopPropagation();d.options.nonblock&&c.elem.addClass("ui-pnotify-nonblock-fade")},mouseleave:function(a){d.options.nonblock&&a.stopPropagation();g=null;c.elem.css("cursor","auto");d.options.nonblock&&"out"!==c.animating&&c.elem.removeClass("ui-pnotify-nonblock-fade")},mouseover:function(a){d.options.nonblock&&
          +a.stopPropagation()},mouseout:function(a){d.options.nonblock&&a.stopPropagation()},mousemove:function(a){d.options.nonblock&&(a.stopPropagation(),e(c,a,"onmousemove"))},mousedown:function(a){d.options.nonblock&&(a.stopPropagation(),a.preventDefault(),e(c,a,"onmousedown"))},mouseup:function(a){d.options.nonblock&&(a.stopPropagation(),a.preventDefault(),e(c,a,"onmouseup"))},click:function(a){d.options.nonblock&&(a.stopPropagation(),e(c,a,"onclick"))},dblclick:function(a){d.options.nonblock&&(a.stopPropagation(),
          +e(c,a,"ondblclick"))}})}}});
          diff --git a/public/theme/pnotify/dist/pnotify.reference.js b/public/theme/pnotify/dist/pnotify.reference.js
          new file mode 100644
          index 0000000..8d10062
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.reference.js
          @@ -0,0 +1 @@
          +!function(t,e){"function"==typeof define&&define.amd?define("pnotify.reference",["jquery","pnotify"],e):"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery"),require("./pnotify")):e(t.jQuery,t.PNotify)}(this,function(t,e){e.prototype.options.reference={put_thing:!1,labels:{text:"Spin Around"}},e.prototype.modules.reference={thingElem:null,init:function(e,n){var i=this;this.notice,this.options,n.put_thing&&(this.thingElem=t('<button style="float:right;" class="btn btn-default" type="button" disabled><i class="'+e.styles.athing+'" />&nbsp;'+n.labels.text+"</button>").appendTo(e.container),e.container.append('<div style="clear: right; line-height: 0;" />'),e.elem.on({mouseenter:function(t){i.thingElem.prop("disabled",!1)},mouseleave:function(t){i.thingElem.prop("disabled",!0)}}),this.thingElem.on("click",function(){var t=0,n=setInterval(function(){t+=10,360==t&&(t=0,clearInterval(n)),e.elem.css({"-moz-transform":"rotate("+t+"deg)","-webkit-transform":"rotate("+t+"deg)","-o-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation="+t/360*4+")"})},20)}))},update:function(t,e,n){this.notice,this.options,e.put_thing&&this.thingElem?this.thingElem.show():!e.put_thing&&this.thingElem&&this.thingElem.hide(),this.thingElem&&this.thingElem.find("i").attr("class",t.styles.athing)},beforeOpen:function(t,e){},afterOpen:function(t,e){},beforeClose:function(t,e){},afterClose:function(t,e){},beforeDestroy:function(t,e){},afterDestroy:function(t,e){}},t.extend(e.styling.jqueryui,{athing:"ui-icon ui-icon-refresh"}),t.extend(e.styling.bootstrap2,{athing:"icon-refresh"}),t.extend(e.styling.bootstrap3,{athing:"glyphicon glyphicon-refresh"}),t.extend(e.styling.fontawesome,{athing:"fa fa-refresh"})});
          \ No newline at end of file
          diff --git a/public/theme/pnotify/dist/pnotify.tooltip.js b/public/theme/pnotify/dist/pnotify.tooltip.js
          new file mode 100644
          index 0000000..50acd6a
          --- /dev/null
          +++ b/public/theme/pnotify/dist/pnotify.tooltip.js
          @@ -0,0 +1 @@
          +!function(e,o){"function"==typeof define&&define.amd?define("pnotify.tooltip",["jquery","pnotify"],o):"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("jquery"),require("./pnotify")):o(e.jQuery,e.PNotify)}(this,function(e,o){});
          \ No newline at end of file
          diff --git a/public/theme/pnotify/libtests/browserify/index.js b/public/theme/pnotify/libtests/browserify/index.js
          new file mode 100644
          index 0000000..d4baae3
          --- /dev/null
          +++ b/public/theme/pnotify/libtests/browserify/index.js
          @@ -0,0 +1,26 @@
          +
          +// Not working? Did you `npm install` `npm run build` first?
          +
          +var $ = require("jquery");
          +var PNotify = require("pnotify");
          +
          +$(function(){
          +    $("#button1").click(function(){
          +        new PNotify({
          +            title: "Yay!",
          +            text: "It works!"
          +        });
          +    });
          +
          +    $("#button12").click(function(){
          +        require("pnotify.reference");
          +
          +        new PNotify({
          +            title: "Yay!",
          +            text: "It works!",
          +            reference: {
          +                put_thing: true
          +            }
          +        });
          +    });
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/.bower.json b/public/theme/select2/.bower.json
          new file mode 100644
          index 0000000..f12cf2c
          --- /dev/null
          +++ b/public/theme/select2/.bower.json
          @@ -0,0 +1,23 @@
          +{
          +  "name": "select2",
          +  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
          +  "main": [
          +    "dist/js/select2.js",
          +    "src/scss/core.scss"
          +  ],
          +  "repository": {
          +    "type": "git",
          +    "url": "git@github.com:select2/select2.git"
          +  },
          +  "homepage": "https://github.com/ivaynberg/select2",
          +  "version": "4.0.3",
          +  "_release": "4.0.3",
          +  "_resolution": {
          +    "type": "version",
          +    "tag": "4.0.3",
          +    "commit": "566c7846fbf8c3b7674346f26d0ee872c0a77629"
          +  },
          +  "_source": "https://github.com/ivaynberg/select2.git",
          +  "_target": "^4.0.2",
          +  "_originalSource": "select2"
          +}
          \ No newline at end of file
          diff --git a/public/theme/select2/.editorconfig b/public/theme/select2/.editorconfig
          new file mode 100644
          index 0000000..54f4d3b
          --- /dev/null
          +++ b/public/theme/select2/.editorconfig
          @@ -0,0 +1,6 @@
          +[*]
          +indent_style = space
          +end_of_line = lf
          +
          +[*.js]
          +indent_size = 2
          diff --git a/public/theme/select2/.gitignore b/public/theme/select2/.gitignore
          new file mode 100644
          index 0000000..aa970da
          --- /dev/null
          +++ b/public/theme/select2/.gitignore
          @@ -0,0 +1,3 @@
          +node_modules
          +dist/js/i18n/build.txt
          +.sass-cache
          diff --git a/public/theme/select2/.jshintignore b/public/theme/select2/.jshintignore
          new file mode 100644
          index 0000000..ba5a30f
          --- /dev/null
          +++ b/public/theme/select2/.jshintignore
          @@ -0,0 +1,4 @@
          +src/js/banner.*.js
          +src/js/wrapper.*.js
          +tests/vendor/*.js
          +tests/helpers.js
          diff --git a/public/theme/select2/.jshintrc b/public/theme/select2/.jshintrc
          new file mode 100644
          index 0000000..9429926
          --- /dev/null
          +++ b/public/theme/select2/.jshintrc
          @@ -0,0 +1,25 @@
          +{
          +  "bitwise": true,
          +  "camelcase": true,
          +  "curly": true,
          +  "es3": true,
          +  "eqnull": true,
          +  "freeze": true,
          +  "globals": {
          +    "console": false,
          +    "define": false,
          +    "document": false,
          +    "MockContainer": false,
          +    "module": false,
          +    "QUnit": false,
          +    "require": false,
          +    "test": false,
          +    "window": false
          +  },
          +  "indent": 2,
          +  "maxlen": 80,
          +  "noarg": true,
          +  "nonew": true,
          +  "quotmark": "single",
          +  "undef": true
          +}
          diff --git a/public/theme/select2/.travis.yml b/public/theme/select2/.travis.yml
          new file mode 100644
          index 0000000..0af4c69
          --- /dev/null
          +++ b/public/theme/select2/.travis.yml
          @@ -0,0 +1,22 @@
          +language: node_js
          +
          +sudo: false
          +
          +node_js:
          +  - 0.10
          +
          +env:
          +  global:
          +    - secure: XMNK8GVxkwKa6oLl7nJwgg/wmY1YDk5rrMd+UXz26EDCsMDbiy1P7GhN2fEiBSLaQ7YfEuvaDcmzQxTrT0YTHp1PDzb2o9J4tIDdEkqPcv1y8xMaYDfmsN0rBPdBwZEg9H5zUgi7OdUbrGswSYxsKCE3x8EOqK89104HyOo1LN4=
          +    - secure: BU5BPRx6H4O3WJ509YPixjUxg+hDF3z2BVJX6NiGmKWweqvCEYFfiiHLwDEgp/ynRcF9vGVi1V4Ly1jq7f8NIajbDZ5q443XchZFYFg78K/EwD5mK6LYt16zb7+Jn0KbzwHeGRGzc9AvcEYlW6i634cSCm4n3BnqtF5PpogSzdw=
          +
          +script:
          +  - grunt ci
          +
          +notifications:
          +  email: false
          +  irc:
          +    channels:
          +      - "chat.freenode.net#select2"
          +    on_success: change
          +    on_failure: always
          diff --git a/public/theme/select2/CONTRIBUTING.md b/public/theme/select2/CONTRIBUTING.md
          new file mode 100644
          index 0000000..ad81e80
          --- /dev/null
          +++ b/public/theme/select2/CONTRIBUTING.md
          @@ -0,0 +1,204 @@
          +Contributing to Select2
          +=======================
          +Looking to contribute something to Select2? **Here's how you can help.**
          +
          +Please take a moment to review this document in order to make the contribution
          +process easy and effective for everyone involved.
          +
          +Following these guidelines helps to communicate that you respect the time of
          +the developers managing and developing this open source project. In return,
          +they should reciprocate that respect in addressing your issue or assessing
          +patches and features.
          +
          +Using the issue tracker
          +-----------------------
          +When [reporting bugs][reporting-bugs] or
          +[requesting features][requesting-features], the
          +[issue tracker on GitHub][issue-tracker] is the recommended channel to use.
          +
          +The issue tracker **is not** a place for support requests. The
          +[mailing list][community] or [IRC channel][community] are better places to
          +get help.
          +
          +Reporting bugs with Select2
          +---------------------------
          +We really appreciate clear bug reports that _consistently_ show an issue
          +_within Select2_.
          +
          +The ideal bug report follows these guidelines:
          +
          +1. **Use the [GitHub issue search][issue-search]**  &mdash; Check if the issue
          +   has already been reported.
          +2. **Check if the issue has been fixed**  &mdash; Try to reproduce the problem
          +   using the code in the `master` branch.
          +3. **Isolate the problem**  &mdash; Try to create an
          +   [isolated test case][isolated-case] that consistently reproduces the problem.
          +
          +Please try to be as detailed as possible in your bug report, especially if an
          +isolated test case cannot be made. Some useful questions to include the answer
          +to are:
          +
          +- What steps can be used to reproduce the issue?
          +- What is the bug and what is the expected outcome?
          +- What browser(s) and Operating System have you tested with?
          +- Does the bug happen consistently across all tested browsers?
          +- What version of jQuery are you using? And what version of Select2?
          +- Are you using Select2 with other plugins?
          +
          +All of these questions will help others fix and identify any potential bugs.
          +
          +Requesting features in Select2
          +------------------------------
          +Select2 is a large library that carries with it a lot of functionality. Because
          +of this, many feature requests will not be implemented in the core library.
          +
          +Before starting work on a major feature for Select2, **contact the
          +[community][community] first** or you may risk spending a considerable amount of
          +time on something which the project developers are not interested in bringing
          +into the project.
          +
          +Contributing changes to Select2
          +-------------------------------
          +Select2 is made up of multiple submodules that all come together to make the
          +standard and extended builds that are available to users. The build system uses
          +Node.js to manage and compile the submodules, all of which is done using the
          +Grunt build system.
          +
          +### Installing development dependencies
          +
          +Select2 can be built and developed on any system which supports Node.js. The
          +preferred Node.js version is 0.10, but 0.12 and later versions can be used
          +without any noticeable issues. You can download Node.js at
          +[their website][nodejs].
          +
          +All other required Node.js packages can be installed using [npm][npm], which
          +comes bundled alongside Node.js.
          +
          +```bash
          +cd /path/to/select2/repo
          +npm install
          +```
          +
          +You may need to install libsass on your system if it is not already available
          +in order to build the SASS files which generate the CSS for themes and the main
          +component.
          +
          +In order to build and serve the documentation, you need to have [Jekyll][jekyll]
          +installed on your system.
          +
          +### Building the Select2 component
          +
          +Select2 uses the [Grunt][grunt] build task system and defines a few custom
          +tasks for common routines. One of them is the `compile` task, which compiles
          +the JavaScript and CSS and produces the final files.
          +
          +```bash
          +cd /path/to/select2/repo
          +grunt compile
          +```
          +
          +You can also generate the minified versions (`.min.js` files) by executing the
          +`minify` task after compiling.
          +
          +```bash
          +cd /path/to/select2/repo
          +grunt minify
          +```
          +
          +### Building the documentation
          +
          +Using the Grunt build system, you run Jekyll and serve the documentation
          +locally. This will also set up the examples to use the latest version of
          +Select2 that has been built.
          +
          +```bash
          +cd /path/to/select2/repo
          +grunt docs
          +```
          +
          +### Running tests
          +
          +Select2 uses the QUnit test system to test individual components.
          +
          +```bash
          +cd /path/to/selct2/repo
          +grunt test
          +```
          +
          +### Submitting a pull request
          +
          +We use GitHub's pull request system for submitting patches. Here are some
          +guidelines to follow when creating the pull request for your fix.
          +
          +1. Make sure to create a ticket for your pull request. This will serve as the
          +bug ticket, and any discussion about the bug will take place there. Your pull
          +request will be focused on the specific changes that fix the bug.
          +2. Make sure to reference the ticket you are fixing within your pull request.
          +This will allow us to close off the ticket once we merge the pull request, or
          +follow up on the ticket if there are any related blocking issues.
          +3. Explain why the specific change was made. Not everyone who is reviewing your
          +pull request will be familiar with the problem it is fixing.
          +4. Run your tests first. If your tests aren't passing, the pull request won't
          +be able to be merged. If you're breaking existing tests, make sure that you
          +aren't causing any breaking changes.
          +5. Only include source changes. While it's not required, only including changes
          +from the `src` directory will prevent merge conflicts from occuring. Making
          +this happen can be as a simple as not committing changes from the `dist`
          +directory.
          +
          +By following these steps, you will make it easier for your pull request to be
          +reviewed and eventually merged.
          +
          +Triaging issues and pull requests
          +---------------------------------
          +Anyone can help the project maintainers triage issues and review pull requests.
          +
          +### Handling new issues
          +
          +Select2 regularly receives new issues which need to be tested and organized.
          +
          +When a new issue that comes in that is similar to another existing issue, it
          +should be checked to make sure it is not a duplicate.  Duplicates issues should
          +be marked by replying to the issue with "Duplicate of #[issue number]" where
          +`[issue number]` is the url or issue number for the existing issue.  This will
          +allow the project maintainers to quickly close off additional issues and keep
          +the discussion focused within a single issue.
          +
          +If you can test issues that are reported to Select2 that contain test cases and
          +confirm under what conditions bugs happen, that will allow others to identify
          +what causes a bug quicker.
          +
          +### Reviewing pull requests
          +
          +It is very common for pull requests to be opened for issues that contain a clear
          +solution to the problem.  These pull requests should be rigorously reviewed by
          +the community before being accepted.  If you are not sure about a piece of
          +submitted code, or know of a better way to do something, do not hesitate to make
          +a comment on the pull request.
          +
          +### Reviving old tickets
          +
          +If you come across tickets which have not been updated for a while, you are
          +encouraged to revive them. While this can be as simple as saying `:+1:`, it is
          +best if you can include more information on the issue. Common bugs and feature
          +requests are more likely to be fixed, whether it is by the community or the
          +developers, so keeping tickets up to date is encouraged.
          +
          +Licensing
          +---------
          +
          +It should also be made clear that **all code contributed to Select** must be
          +licensable under the [MIT license][licensing].  Code that cannot be released
          +under this license **cannot be accepted** into the project.
          +
          +[community]: https://select2.github.io/community.html
          +[grunt]: http://gruntjs.com/
          +[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/
          +[issue-search]: https://github.com/select2/select2/search?q=&type=Issues
          +[issue-tracker]: https://github.com/select2/select2/issues
          +[jekyll]: https://jekyllrb.com/docs/installation/
          +[licensing]: https://github.com/select2/select2/blob/master/LICENSE.md
          +[nodejs]: https://nodejs.org/
          +[npm]: https://www.npmjs.com/
          +[reporting-bugs]: #reporting-bugs-with-select2
          +[requesting-features]: #requesting-features-in-select2
          \ No newline at end of file
          diff --git a/public/theme/select2/Gruntfile.js b/public/theme/select2/Gruntfile.js
          new file mode 100644
          index 0000000..63619de
          --- /dev/null
          +++ b/public/theme/select2/Gruntfile.js
          @@ -0,0 +1,370 @@
          +module.exports = function (grunt) {
          +  // Full list of files that must be included by RequireJS
          +  includes = [
          +    'jquery.select2',
          +    'almond',
          +
          +    'jquery-mousewheel' // shimmed for non-full builds
          +  ];
          +
          +  fullIncludes = [
          +    'jquery',
          +
          +    'select2/compat/containerCss',
          +    'select2/compat/dropdownCss',
          +
          +    'select2/compat/initSelection',
          +    'select2/compat/inputData',
          +    'select2/compat/matcher',
          +    'select2/compat/query',
          +
          +    'select2/dropdown/attachContainer',
          +    'select2/dropdown/stopPropagation',
          +
          +    'select2/selection/stopPropagation'
          +  ].concat(includes);
          +
          +  var i18nModules = [];
          +  var i18nPaths = {};
          +
          +  var i18nFiles = grunt.file.expand({
          +    cwd: 'src/js'
          +  }, 'select2/i18n/*.js');
          +
          +  var testFiles = grunt.file.expand('tests/**/*.html');
          +  var testUrls = testFiles.map(function (filePath) {
          +    return 'http://localhost:9999/' + filePath;
          +  });
          +
          +  var testBuildNumber = "unknown";
          +
          +  if (process.env.TRAVIS_JOB_ID) {
          +    testBuildNumber = "travis-" + process.env.TRAVIS_JOB_ID;
          +  } else {
          +    var currentTime = new Date();
          +
          +    testBuildNumber = "manual-" + currentTime.getTime();
          +  }
          +
          +  for (var i = 0; i < i18nFiles.length; i++) {
          +    var file = i18nFiles[i];
          +    var name = file.split('.')[0];
          +
          +    i18nModules.push({
          +      name: name
          +    });
          +
          +    i18nPaths[name] = '../../' + name;
          +  }
          +
          +  var minifiedBanner = '/*! Select2 <%= package.version %> | https://github.com/select2/select2/blob/master/LICENSE.md */';
          +
          +  grunt.initConfig({
          +    package: grunt.file.readJSON('package.json'),
          +
          +    clean: {
          +      docs: ['docs/_site']
          +    },
          +
          +    concat: {
          +      'dist': {
          +        options: {
          +          banner: grunt.file.read('src/js/wrapper.start.js'),
          +        },
          +        src: [
          +          'dist/js/select2.js',
          +          'src/js/wrapper.end.js'
          +        ],
          +        dest: 'dist/js/select2.js'
          +      },
          +      'dist.full': {
          +        options: {
          +          banner: grunt.file.read('src/js/wrapper.start.js'),
          +        },
          +        src: [
          +          'dist/js/select2.full.js',
          +          'src/js/wrapper.end.js'
          +        ],
          +        dest: 'dist/js/select2.full.js'
          +      }
          +    },
          +
          +    connect: {
          +      tests: {
          +        options: {
          +          base: '.',
          +          hostname: '127.0.0.1',
          +          port: 9999
          +        }
          +      }
          +    },
          +
          +    uglify: {
          +      'dist': {
          +        src: 'dist/js/select2.js',
          +        dest: 'dist/js/select2.min.js',
          +        options: {
          +          banner: minifiedBanner
          +        }
          +      },
          +      'dist.full': {
          +        src: 'dist/js/select2.full.js',
          +        dest: 'dist/js/select2.full.min.js',
          +        options: {
          +          banner: minifiedBanner
          +        }
          +      }
          +    },
          +
          +    qunit: {
          +      all: {
          +        options: {
          +          urls: testUrls
          +        }
          +      }
          +    },
          +
          +    'saucelabs-qunit': {
          +      all: {
          +        options: {
          +          build: testBuildNumber,
          +          tags: ['tests', 'qunit'],
          +          urls: testUrls,
          +          testname: 'QUnit test for Select2',
          +          browsers: [
          +            {
          +              browserName: 'internet explorer',
          +              version: '8'
          +            },
          +            {
          +              browserName: 'internet explorer',
          +              version: '9'
          +            },
          +            {
          +              browserName: 'internet explorer',
          +              version: '10'
          +            },
          +            {
          +              browserName: 'internet explorer',
          +              version: '11'
          +            },
          +
          +            {
          +              browserName: 'firefox',
          +              platform: 'linux'
          +            },
          +
          +            {
          +              browserName: 'chrome'
          +            },
          +
          +            {
          +              browserName: 'opera',
          +              version: '12',
          +              platform: 'linux'
          +            }
          +          ]
          +        }
          +      }
          +    },
          +
          +    'gh-pages': {
          +      options: {
          +        base: 'docs',
          +        branch: 'master',
          +        clone: 'node_modules/grunt-gh-pages/repo',
          +        message: 'Updated docs with master',
          +        push: true,
          +        repo: 'git@github.com:select2/select2.github.io.git'
          +      },
          +      src: '**'
          +    },
          +
          +    jekyll: {
          +      options: {
          +        src: 'docs',
          +        dest: 'docs/_site'
          +      },
          +      build: {
          +        d: null
          +      },
          +      serve: {
          +        options: {
          +          serve: true,
          +          watch: true
          +        }
          +      }
          +    },
          +
          +    jshint: {
          +      options: {
          +        jshintrc: true
          +      },
          +      code: {
          +        src: ['src/js/**/*.js']
          +      },
          +      tests: {
          +        src: ['tests/**/*.js']
          +      }
          +    },
          +
          +    sass: {
          +      dist: {
          +        options: {
          +          outputStyle: 'compressed'
          +        },
          +        files: {
          +          'dist/css/select2.min.css': [
          +            'src/scss/core.scss',
          +            'src/scss/theme/default/layout.css'
          +          ]
          +        }
          +      },
          +      dev: {
          +        options: {
          +          outputStyle: 'nested'
          +        },
          +        files: {
          +          'dist/css/select2.css': [
          +            'src/scss/core.scss',
          +            'src/scss/theme/default/layout.css'
          +          ]
          +        }
          +      }
          +    },
          +
          +    symlink: {
          +      docs: {
          +        cwd: 'dist',
          +        expand: true,
          +        overwrite: false,
          +        src: [
          +          '*'
          +        ],
          +        dest: 'docs/dist',
          +        filter: 'isDirectory'
          +      }
          +    },
          +
          +    requirejs: {
          +      'dist': {
          +        options: {
          +          baseUrl: 'src/js',
          +          optimize: 'none',
          +          name: 'select2/core',
          +          out: 'dist/js/select2.js',
          +          include: includes,
          +          namespace: 'S2',
          +          paths: {
          +            'almond': require.resolve('almond').slice(0, -3),
          +            'jquery': 'jquery.shim',
          +            'jquery-mousewheel': 'jquery.mousewheel.shim'
          +          },
          +          wrap: {
          +            startFile: 'src/js/banner.start.js',
          +            endFile: 'src/js/banner.end.js'
          +          }
          +        }
          +      },
          +      'dist.full': {
          +        options: {
          +          baseUrl: 'src/js',
          +          optimize: 'none',
          +          name: 'select2/core',
          +          out: 'dist/js/select2.full.js',
          +          include: fullIncludes,
          +          namespace: 'S2',
          +          paths: {
          +            'almond': require.resolve('almond').slice(0, -3),
          +            'jquery': 'jquery.shim',
          +            'jquery-mousewheel': require.resolve('jquery-mousewheel').slice(0, -3)
          +          },
          +          wrap: {
          +            startFile: 'src/js/banner.start.js',
          +            endFile: 'src/js/banner.end.js'
          +          }
          +        }
          +      },
          +      'i18n': {
          +        options: {
          +          baseUrl: 'src/js/select2/i18n',
          +          dir: 'dist/js/i18n',
          +          paths: i18nPaths,
          +          modules: i18nModules,
          +          namespace: 'S2',
          +          wrap: {
          +            start: minifiedBanner + grunt.file.read('src/js/banner.start.js'),
          +            end: grunt.file.read('src/js/banner.end.js')
          +          }
          +        }
          +      }
          +    },
          +
          +    watch: {
          +      js: {
          +        files: [
          +          'src/js/select2/**/*.js',
          +          'tests/**/*.js'
          +        ],
          +        tasks: [
          +          'compile',
          +          'test',
          +          'minify'
          +        ]
          +      },
          +      css: {
          +        files: [
          +          'src/scss/**/*.scss'
          +        ],
          +        tasks: [
          +          'compile',
          +          'minify'
          +        ]
          +      }
          +    }
          +  });
          +
          +  grunt.loadNpmTasks('grunt-contrib-clean');
          +  grunt.loadNpmTasks('grunt-contrib-concat');
          +  grunt.loadNpmTasks('grunt-contrib-connect');
          +  grunt.loadNpmTasks('grunt-contrib-jshint');
          +  grunt.loadNpmTasks('grunt-contrib-qunit');
          +  grunt.loadNpmTasks('grunt-contrib-requirejs');
          +  grunt.loadNpmTasks('grunt-contrib-symlink');
          +  grunt.loadNpmTasks('grunt-contrib-uglify');
          +  grunt.loadNpmTasks('grunt-contrib-watch');
          +
          +  grunt.loadNpmTasks('grunt-gh-pages');
          +  grunt.loadNpmTasks('grunt-jekyll');
          +  grunt.loadNpmTasks('grunt-saucelabs');
          +  grunt.loadNpmTasks('grunt-sass');
          +
          +  grunt.registerTask('default', ['compile', 'test', 'minify']);
          +
          +  grunt.registerTask('compile', [
          +    'requirejs:dist', 'requirejs:dist.full', 'requirejs:i18n',
          +    'concat:dist', 'concat:dist.full',
          +    'sass:dev'
          +  ]);
          +  grunt.registerTask('minify', ['uglify', 'sass:dist']);
          +  grunt.registerTask('test', ['connect:tests', 'qunit', 'jshint']);
          +
          +  var ciTasks = [];
          +
          +  ciTasks.push('compile')
          +  ciTasks.push('connect:tests');
          +
          +  // Can't run Sauce Labs tests in pull requests
          +  if (process.env.TRAVIS_PULL_REQUEST == 'false') {
          +    ciTasks.push('saucelabs-qunit');
          +  }
          +
          +  ciTasks.push('qunit');
          +  ciTasks.push('jshint');
          +
          +  grunt.registerTask('ci', ciTasks);
          +
          +  grunt.registerTask('docs', ['symlink:docs', 'jekyll:serve']);
          +
          +  grunt.registerTask('docs-release', ['default', 'clean:docs', 'gh-pages']);
          +};
          diff --git a/public/theme/select2/ISSUE_TEMPLATE.md b/public/theme/select2/ISSUE_TEMPLATE.md
          new file mode 100644
          index 0000000..4222328
          --- /dev/null
          +++ b/public/theme/select2/ISSUE_TEMPLATE.md
          @@ -0,0 +1,46 @@
          +## Prerequisites
          +
          +- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate
          +- [ ] The issue still exists against the latest `master` branch of Select2
          +- [ ] This is not a usage question (Those should be directed to the [community](https://select2.github.io/community.html))
          +- [ ] I have attempted to find the simplest possible steos to reproduce the issue
          +- [ ] I have included a failing test as a pull request (Optional)
          +
          +## Steps to reproduce the issue
          +
          +1.
          +2.
          +3.
          +
          +## Expected behavior and actual behavior
          +
          +When I follow those steps, I see...
          +
          +I was expecting...
          +
          +## Environment
          +
          +Browsers
          +
          +- [ ] Google Chrome
          +- [ ] Mozilla Firefox
          +- [ ] Internet Explorer
          +
          +Operating System
          +
          +- [ ] Windows
          +- [ ] Mac OS X
          +- [ ] Linux
          +- [ ] Mobile
          +
          +Libraries
          +
          +- jQuery version:
          +- Select2 version:
          +
          +## Isolating the problem
          +
          +- [ ] This bug happens [on the examples page](https://select2.github.io/examples.html)
          +- [ ] The bug happens consistently across all tested browsers
          +- [ ] This bug happens when using Select2 without other pluigns
          +- [ ] I can reproduce this bug in [a jsbin](https://jsbin.com/)
          diff --git a/public/theme/select2/LICENSE.md b/public/theme/select2/LICENSE.md
          new file mode 100644
          index 0000000..86c7c29
          --- /dev/null
          +++ b/public/theme/select2/LICENSE.md
          @@ -0,0 +1,21 @@
          +The MIT License (MIT)
          +
          +Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors
          +
          +Permission 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:
          +
          +The above copyright notice and this permission notice shall be included in
          +all copies or substantial portions of the Software.
          +
          +THE 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.
          diff --git a/public/theme/select2/PULL_REQUEST_TEMPLATE.md b/public/theme/select2/PULL_REQUEST_TEMPLATE.md
          new file mode 100644
          index 0000000..82395c7
          --- /dev/null
          +++ b/public/theme/select2/PULL_REQUEST_TEMPLATE.md
          @@ -0,0 +1,13 @@
          +This pull request includes a
          +
          +- [ ] Bug fix
          +- [ ] New feature
          +- [ ] Translation
          +
          +The following changes were made
          +
          +-
          +-
          +-
          +
          +If this is related to an existing ticket, include a link to it as well.
          diff --git a/public/theme/select2/README.md b/public/theme/select2/README.md
          new file mode 100644
          index 0000000..5984bb2
          --- /dev/null
          +++ b/public/theme/select2/README.md
          @@ -0,0 +1,121 @@
          +Select2
          +=======
          +[![Build Status][travis-ci-image]][travis-ci-status]
          +
          +Select2 is a jQuery-based replacement for select boxes. It supports searching,
          +remote data sets, and pagination of results.
          +
          +To get started, checkout examples and documentation at
          +https://select2.github.io/
          +
          +Use cases
          +---------
          +* Enhancing native selects with search.
          +* Enhancing native selects with a better multi-select interface.
          +* Loading data from JavaScript: easily load items via AJAX and have them
          +  searchable.
          +* Nesting optgroups: native selects only support one level of nesting. Select2
          +  does not have this restriction.
          +* Tagging: ability to add new items on the fly.
          +* Working with large, remote datasets: ability to partially load a dataset based
          +  on the search term.
          +* Paging of large datasets: easy support for loading more pages when the results
          +  are scrolled to the end.
          +* Templating: support for custom rendering of results and selections.
          +
          +Browser compatibility
          +---------------------
          +* IE 8+
          +* Chrome 8+
          +* Firefox 10+
          +* Safari 3+
          +* Opera 10.6+
          +
          +Select2 is automatically tested on the following browsers.
          +
          +[![Sauce Labs Test Status][saucelabs-matrix]][saucelabs-status]
          +
          +Usage
          +-----
          +You can source Select2 directly from a CDN like [JSDliver][jsdelivr] or
          +[CDNJS][cdnjs], [download it from this GitHub repo][releases], or use one of
          +the integrations below.
          +
          +Integrations
          +------------
          +Third party developers have create plugins for platforms which allow Select2 to be integrated more natively and quickly. For many platforms, additional plugins are not required because Select2 acts as a standard `<select>` box.
          +
          +Plugins
          +
          +* [Django]
          +  - [django-easy-select2]
          +  - [django-select2]
          +* [Meteor] - [meteor-select2]
          +* [Ruby on Rails][ruby-on-rails] - [select2-rails]
          +* [Wicket] - [wicketstuff-select2]
          +* [Yii 2][yii2] - [yii2-widget-select2]
          +
          +Themes
          +
          +- [Bootstrap 3][bootstrap3] - [select2-bootstrap-theme]
          +- [Flat UI][flat-ui] - [select2-flat-theme]
          +- [Metro UI][metro-ui] - [select2-metro]
          +
          +Missing an integration? Modify this `README` and make a pull request back here to Select2 on GitHub.
          +
          +Internationalization (i18n)
          +---------------------------
          +Select2 supports multiple languages by simply including the right language JS
          +file (`dist/js/i18n/it.js`, `dist/js/i18n/nl.js`, etc.) after
          +`dist/js/select2.js`.
          +
          +Missing a language? Just copy `src/js/select2/i18n/en.js`, translate it, and
          +make a pull request back to Select2 here on GitHub.
          +
          +Documentation
          +-------------
          +The documentation for Select2 is available
          +[through GitHub Pages][documentation] and is located within this repository
          +in the [`docs` folder][documentation-folder].
          +
          +Community
          +---------
          +You can find out about the different ways to get in touch with the Select2
          +community at the [Select2 community page][community].
          +
          +Copyright and license
          +---------------------
          +The license is available within the repository in the [LICENSE][license] file.
          +
          +[cdnjs]: http://www.cdnjs.com/libraries/select2
          +[community]: https://select2.github.io/community.html
          +[documentation]: https://select2.github.io/
          +[documentation-folder]: https://github.com/select2/select2/tree/master/docs
          +[freenode]: https://freenode.net/
          +[jsdelivr]: http://www.jsdelivr.com/#!select2
          +[license]: LICENSE.md
          +[releases]: https://github.com/select2/select2/releases
          +[saucelabs-matrix]: https://saucelabs.com/browser-matrix/select2.svg
          +[saucelabs-status]: https://saucelabs.com/u/select2
          +[travis-ci-image]: https://img.shields.io/travis/select2/select2/master.svg
          +[travis-ci-status]: https://travis-ci.org/select2/select2
          +
          +[bootstrap3]: https://getbootstrap.com/
          +[django]: https://www.djangoproject.com/
          +[django-easy-select2]: https://github.com/asyncee/django-easy-select2
          +[django-select2]: https://github.com/applegrew/django-select2
          +[flat-ui]: http://designmodo.github.io/Flat-UI/
          +[meteor]: https://www.meteor.com/
          +[meteor-select2]: https://github.com/nate-strauser/meteor-select2
          +[metro-ui]: http://metroui.org.ua/
          +[select2-metro]: http://metroui.org.ua/select2.html
          +[ruby-on-rails]: http://rubyonrails.org/
          +[select2-bootstrap-theme]: https://github.com/select2/select2-bootstrap-theme
          +[select2-flat-theme]: https://github.com/techhysahil/select2-Flat_Theme
          +[select2-rails]: https://github.com/argerim/select2-rails
          +[vue.js]: http://vuejs.org/
          +[select2-vue]: http://vuejs.org/examples/select2.html
          +[wicket]: https://wicket.apache.org/
          +[wicketstuff-select2]: https://github.com/wicketstuff/core/tree/master/select2-parent
          +[yii2]: http://www.yiiframework.com/
          +[yii2-widget-select2]: https://github.com/kartik-v/yii2-widget-select2
          diff --git a/public/theme/select2/bower.json b/public/theme/select2/bower.json
          new file mode 100644
          index 0000000..834e495
          --- /dev/null
          +++ b/public/theme/select2/bower.json
          @@ -0,0 +1,12 @@
          +{
          +    "name": "select2",
          +    "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
          +    "main": [
          +        "dist/js/select2.js",
          +        "src/scss/core.scss"
          +    ],
          +    "repository": {
          +        "type": "git",
          +        "url": "git@github.com:select2/select2.git"
          +    }
          +}
          diff --git a/public/theme/select2/component.json b/public/theme/select2/component.json
          new file mode 100644
          index 0000000..cacb935
          --- /dev/null
          +++ b/public/theme/select2/component.json
          @@ -0,0 +1,19 @@
          +{
          +  "name": "select2",
          +  "repo": "select/select2",
          +  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
          +  "version": "4.0.3",
          +  "demo": "https://select2.github.io/",
          +  "keywords": [
          +    "jquery"
          +  ],
          +  "main": "dist/js/select2.js",
          +  "styles": [
          +    "dist/css/select2.css"
          +  ],
          +  "scripts": [
          +    "dist/js/select2.js",
          +    "dist/js/i18n/*.js"
          +  ],
          +  "license": "MIT"
          +}
          diff --git a/public/theme/select2/composer.json b/public/theme/select2/composer.json
          new file mode 100644
          index 0000000..e03d5df
          --- /dev/null
          +++ b/public/theme/select2/composer.json
          @@ -0,0 +1,25 @@
          +{
          +  "name": "select2/select2",
          +  "description": "Select2 is a jQuery based replacement for select boxes.",
          +  "type": "component",
          +  "homepage": "https://select2.github.io/",
          +  "license": "MIT",
          +  "require": {
          +    "robloach/component-installer": "*"
          +  },
          +  "extra": {
          +    "component": {
          +      "scripts": [
          +        "dist/js/select2.js"
          +      ],
          +      "styles": [
          +        "dist/css/select2.css"
          +      ],
          +      "files": [
          +        "dist/js/select2.js",
          +        "dist/js/i18n/*.js",
          +        "dist/css/select2.css"
          +      ]
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/dist/css/select2.css b/public/theme/select2/dist/css/select2.css
          new file mode 100644
          index 0000000..447b2b8
          --- /dev/null
          +++ b/public/theme/select2/dist/css/select2.css
          @@ -0,0 +1,484 @@
          +.select2-container {
          +  box-sizing: border-box;
          +  display: inline-block;
          +  margin: 0;
          +  position: relative;
          +  vertical-align: middle; }
          +  .select2-container .select2-selection--single {
          +    box-sizing: border-box;
          +    cursor: pointer;
          +    display: block;
          +    height: 28px;
          +    user-select: none;
          +    -webkit-user-select: none; }
          +    .select2-container .select2-selection--single .select2-selection__rendered {
          +      display: block;
          +      padding-left: 8px;
          +      padding-right: 20px;
          +      overflow: hidden;
          +      text-overflow: ellipsis;
          +      white-space: nowrap; }
          +    .select2-container .select2-selection--single .select2-selection__clear {
          +      position: relative; }
          +  .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
          +    padding-right: 8px;
          +    padding-left: 20px; }
          +  .select2-container .select2-selection--multiple {
          +    box-sizing: border-box;
          +    cursor: pointer;
          +    display: block;
          +    min-height: 32px;
          +    user-select: none;
          +    -webkit-user-select: none; }
          +    .select2-container .select2-selection--multiple .select2-selection__rendered {
          +      display: inline-block;
          +      overflow: hidden;
          +      padding-left: 8px;
          +      text-overflow: ellipsis;
          +      white-space: nowrap; }
          +  .select2-container .select2-search--inline {
          +    float: left; }
          +    .select2-container .select2-search--inline .select2-search__field {
          +      box-sizing: border-box;
          +      border: none;
          +      font-size: 100%;
          +      margin-top: 5px;
          +      padding: 0; }
          +      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
          +        -webkit-appearance: none; }
          +
          +.select2-dropdown {
          +  background-color: white;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +  box-sizing: border-box;
          +  display: block;
          +  position: absolute;
          +  left: -100000px;
          +  width: 100%;
          +  z-index: 1051; }
          +
          +.select2-results {
          +  display: block; }
          +
          +.select2-results__options {
          +  list-style: none;
          +  margin: 0;
          +  padding: 0; }
          +
          +.select2-results__option {
          +  padding: 6px;
          +  user-select: none;
          +  -webkit-user-select: none; }
          +  .select2-results__option[aria-selected] {
          +    cursor: pointer; }
          +
          +.select2-container--open .select2-dropdown {
          +  left: 0; }
          +
          +.select2-container--open .select2-dropdown--above {
          +  border-bottom: none;
          +  border-bottom-left-radius: 0;
          +  border-bottom-right-radius: 0; }
          +
          +.select2-container--open .select2-dropdown--below {
          +  border-top: none;
          +  border-top-left-radius: 0;
          +  border-top-right-radius: 0; }
          +
          +.select2-search--dropdown {
          +  display: block;
          +  padding: 4px; }
          +  .select2-search--dropdown .select2-search__field {
          +    padding: 4px;
          +    width: 100%;
          +    box-sizing: border-box; }
          +    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
          +      -webkit-appearance: none; }
          +  .select2-search--dropdown.select2-search--hide {
          +    display: none; }
          +
          +.select2-close-mask {
          +  border: 0;
          +  margin: 0;
          +  padding: 0;
          +  display: block;
          +  position: fixed;
          +  left: 0;
          +  top: 0;
          +  min-height: 100%;
          +  min-width: 100%;
          +  height: auto;
          +  width: auto;
          +  opacity: 0;
          +  z-index: 99;
          +  background-color: #fff;
          +  filter: alpha(opacity=0); }
          +
          +.select2-hidden-accessible {
          +  border: 0 !important;
          +  clip: rect(0 0 0 0) !important;
          +  height: 1px !important;
          +  margin: -1px !important;
          +  overflow: hidden !important;
          +  padding: 0 !important;
          +  position: absolute !important;
          +  width: 1px !important; }
          +
          +.select2-container--default .select2-selection--single {
          +  background-color: #fff;
          +  border: 1px solid #aaa;
          +  border-radius: 4px; }
          +  .select2-container--default .select2-selection--single .select2-selection__rendered {
          +    color: #444;
          +    line-height: 28px; }
          +  .select2-container--default .select2-selection--single .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold; }
          +  .select2-container--default .select2-selection--single .select2-selection__placeholder {
          +    color: #999; }
          +  .select2-container--default .select2-selection--single .select2-selection__arrow {
          +    height: 26px;
          +    position: absolute;
          +    top: 1px;
          +    right: 1px;
          +    width: 20px; }
          +    .select2-container--default .select2-selection--single .select2-selection__arrow b {
          +      border-color: #888 transparent transparent transparent;
          +      border-style: solid;
          +      border-width: 5px 4px 0 4px;
          +      height: 0;
          +      left: 50%;
          +      margin-left: -4px;
          +      margin-top: -2px;
          +      position: absolute;
          +      top: 50%;
          +      width: 0; }
          +
          +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
          +  float: left; }
          +
          +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
          +  left: 1px;
          +  right: auto; }
          +
          +.select2-container--default.select2-container--disabled .select2-selection--single {
          +  background-color: #eee;
          +  cursor: default; }
          +  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
          +    display: none; }
          +
          +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
          +  border-color: transparent transparent #888 transparent;
          +  border-width: 0 4px 5px 4px; }
          +
          +.select2-container--default .select2-selection--multiple {
          +  background-color: white;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +  cursor: text; }
          +  .select2-container--default .select2-selection--multiple .select2-selection__rendered {
          +    box-sizing: border-box;
          +    list-style: none;
          +    margin: 0;
          +    padding: 0 5px;
          +    width: 100%; }
          +    .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
          +      list-style: none; }
          +  .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
          +    color: #999;
          +    margin-top: 5px;
          +    float: left; }
          +  .select2-container--default .select2-selection--multiple .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold;
          +    margin-top: 5px;
          +    margin-right: 10px; }
          +  .select2-container--default .select2-selection--multiple .select2-selection__choice {
          +    background-color: #e4e4e4;
          +    border: 1px solid #aaa;
          +    border-radius: 4px;
          +    cursor: default;
          +    float: left;
          +    margin-right: 5px;
          +    margin-top: 5px;
          +    padding: 0 5px; }
          +  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
          +    color: #999;
          +    cursor: pointer;
          +    display: inline-block;
          +    font-weight: bold;
          +    margin-right: 2px; }
          +    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
          +      color: #333; }
          +
          +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
          +  float: right; }
          +
          +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
          +  margin-left: 5px;
          +  margin-right: auto; }
          +
          +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
          +  margin-left: 2px;
          +  margin-right: auto; }
          +
          +.select2-container--default.select2-container--focus .select2-selection--multiple {
          +  border: solid black 1px;
          +  outline: 0; }
          +
          +.select2-container--default.select2-container--disabled .select2-selection--multiple {
          +  background-color: #eee;
          +  cursor: default; }
          +
          +.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
          +  display: none; }
          +
          +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
          +  border-top-left-radius: 0;
          +  border-top-right-radius: 0; }
          +
          +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
          +  border-bottom-left-radius: 0;
          +  border-bottom-right-radius: 0; }
          +
          +.select2-container--default .select2-search--dropdown .select2-search__field {
          +  border: 1px solid #aaa; }
          +
          +.select2-container--default .select2-search--inline .select2-search__field {
          +  background: transparent;
          +  border: none;
          +  outline: 0;
          +  box-shadow: none;
          +  -webkit-appearance: textfield; }
          +
          +.select2-container--default .select2-results > .select2-results__options {
          +  max-height: 200px;
          +  overflow-y: auto; }
          +
          +.select2-container--default .select2-results__option[role=group] {
          +  padding: 0; }
          +
          +.select2-container--default .select2-results__option[aria-disabled=true] {
          +  color: #999; }
          +
          +.select2-container--default .select2-results__option[aria-selected=true] {
          +  background-color: #ddd; }
          +
          +.select2-container--default .select2-results__option .select2-results__option {
          +  padding-left: 1em; }
          +  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
          +    padding-left: 0; }
          +  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
          +    margin-left: -1em;
          +    padding-left: 2em; }
          +    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
          +      margin-left: -2em;
          +      padding-left: 3em; }
          +      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
          +        margin-left: -3em;
          +        padding-left: 4em; }
          +        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
          +          margin-left: -4em;
          +          padding-left: 5em; }
          +          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
          +            margin-left: -5em;
          +            padding-left: 6em; }
          +
          +.select2-container--default .select2-results__option--highlighted[aria-selected] {
          +  background-color: #5897fb;
          +  color: white; }
          +
          +.select2-container--default .select2-results__group {
          +  cursor: default;
          +  display: block;
          +  padding: 6px; }
          +
          +.select2-container--classic .select2-selection--single {
          +  background-color: #f7f7f7;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +  outline: 0;
          +  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
          +  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
          +  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
          +  .select2-container--classic .select2-selection--single:focus {
          +    border: 1px solid #5897fb; }
          +  .select2-container--classic .select2-selection--single .select2-selection__rendered {
          +    color: #444;
          +    line-height: 28px; }
          +  .select2-container--classic .select2-selection--single .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold;
          +    margin-right: 10px; }
          +  .select2-container--classic .select2-selection--single .select2-selection__placeholder {
          +    color: #999; }
          +  .select2-container--classic .select2-selection--single .select2-selection__arrow {
          +    background-color: #ddd;
          +    border: none;
          +    border-left: 1px solid #aaa;
          +    border-top-right-radius: 4px;
          +    border-bottom-right-radius: 4px;
          +    height: 26px;
          +    position: absolute;
          +    top: 1px;
          +    right: 1px;
          +    width: 20px;
          +    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
          +    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
          +    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
          +    background-repeat: repeat-x;
          +    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
          +    .select2-container--classic .select2-selection--single .select2-selection__arrow b {
          +      border-color: #888 transparent transparent transparent;
          +      border-style: solid;
          +      border-width: 5px 4px 0 4px;
          +      height: 0;
          +      left: 50%;
          +      margin-left: -4px;
          +      margin-top: -2px;
          +      position: absolute;
          +      top: 50%;
          +      width: 0; }
          +
          +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
          +  float: left; }
          +
          +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
          +  border: none;
          +  border-right: 1px solid #aaa;
          +  border-radius: 0;
          +  border-top-left-radius: 4px;
          +  border-bottom-left-radius: 4px;
          +  left: 1px;
          +  right: auto; }
          +
          +.select2-container--classic.select2-container--open .select2-selection--single {
          +  border: 1px solid #5897fb; }
          +  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
          +    background: transparent;
          +    border: none; }
          +    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
          +      border-color: transparent transparent #888 transparent;
          +      border-width: 0 4px 5px 4px; }
          +
          +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
          +  border-top: none;
          +  border-top-left-radius: 0;
          +  border-top-right-radius: 0;
          +  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
          +  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
          +  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
          +
          +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
          +  border-bottom: none;
          +  border-bottom-left-radius: 0;
          +  border-bottom-right-radius: 0;
          +  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
          +  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
          +  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
          +
          +.select2-container--classic .select2-selection--multiple {
          +  background-color: white;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +  cursor: text;
          +  outline: 0; }
          +  .select2-container--classic .select2-selection--multiple:focus {
          +    border: 1px solid #5897fb; }
          +  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
          +    list-style: none;
          +    margin: 0;
          +    padding: 0 5px; }
          +  .select2-container--classic .select2-selection--multiple .select2-selection__clear {
          +    display: none; }
          +  .select2-container--classic .select2-selection--multiple .select2-selection__choice {
          +    background-color: #e4e4e4;
          +    border: 1px solid #aaa;
          +    border-radius: 4px;
          +    cursor: default;
          +    float: left;
          +    margin-right: 5px;
          +    margin-top: 5px;
          +    padding: 0 5px; }
          +  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
          +    color: #888;
          +    cursor: pointer;
          +    display: inline-block;
          +    font-weight: bold;
          +    margin-right: 2px; }
          +    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
          +      color: #555; }
          +
          +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
          +  float: right; }
          +
          +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
          +  margin-left: 5px;
          +  margin-right: auto; }
          +
          +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
          +  margin-left: 2px;
          +  margin-right: auto; }
          +
          +.select2-container--classic.select2-container--open .select2-selection--multiple {
          +  border: 1px solid #5897fb; }
          +
          +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
          +  border-top: none;
          +  border-top-left-radius: 0;
          +  border-top-right-radius: 0; }
          +
          +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
          +  border-bottom: none;
          +  border-bottom-left-radius: 0;
          +  border-bottom-right-radius: 0; }
          +
          +.select2-container--classic .select2-search--dropdown .select2-search__field {
          +  border: 1px solid #aaa;
          +  outline: 0; }
          +
          +.select2-container--classic .select2-search--inline .select2-search__field {
          +  outline: 0;
          +  box-shadow: none; }
          +
          +.select2-container--classic .select2-dropdown {
          +  background-color: white;
          +  border: 1px solid transparent; }
          +
          +.select2-container--classic .select2-dropdown--above {
          +  border-bottom: none; }
          +
          +.select2-container--classic .select2-dropdown--below {
          +  border-top: none; }
          +
          +.select2-container--classic .select2-results > .select2-results__options {
          +  max-height: 200px;
          +  overflow-y: auto; }
          +
          +.select2-container--classic .select2-results__option[role=group] {
          +  padding: 0; }
          +
          +.select2-container--classic .select2-results__option[aria-disabled=true] {
          +  color: grey; }
          +
          +.select2-container--classic .select2-results__option--highlighted[aria-selected] {
          +  background-color: #3875d7;
          +  color: white; }
          +
          +.select2-container--classic .select2-results__group {
          +  cursor: default;
          +  display: block;
          +  padding: 6px; }
          +
          +.select2-container--classic.select2-container--open .select2-dropdown {
          +  border-color: #5897fb; }
          diff --git a/public/theme/select2/dist/css/select2.min.css b/public/theme/select2/dist/css/select2.min.css
          new file mode 100644
          index 0000000..76de04d
          --- /dev/null
          +++ b/public/theme/select2/dist/css/select2.min.css
          @@ -0,0 +1 @@
          +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
          diff --git a/public/theme/select2/dist/js/i18n/ar.js b/public/theme/select2/dist/js/i18n/ar.js
          new file mode 100644
          index 0000000..01a6882
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ar.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/az.js b/public/theme/select2/dist/js/i18n/az.js
          new file mode 100644
          index 0000000..2accb97
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/az.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/bg.js b/public/theme/select2/dist/js/i18n/bg.js
          new file mode 100644
          index 0000000..35ae989
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/bg.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ca.js b/public/theme/select2/dist/js/i18n/ca.js
          new file mode 100644
          index 0000000..fdb5f3d
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ca.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/cs.js b/public/theme/select2/dist/js/i18n/cs.js
          new file mode 100644
          index 0000000..9651378
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/cs.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/da.js b/public/theme/select2/dist/js/i18n/da.js
          new file mode 100644
          index 0000000..501c51e
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/da.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/de.js b/public/theme/select2/dist/js/i18n/de.js
          new file mode 100644
          index 0000000..9a6d553
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/de.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/el.js b/public/theme/select2/dist/js/i18n/el.js
          new file mode 100644
          index 0000000..4735d14
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/el.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/en.js b/public/theme/select2/dist/js/i18n/en.js
          new file mode 100644
          index 0000000..8e80ede
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/en.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/es.js b/public/theme/select2/dist/js/i18n/es.js
          new file mode 100644
          index 0000000..0a09650
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/es.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/et.js b/public/theme/select2/dist/js/i18n/et.js
          new file mode 100644
          index 0000000..c70f4a5
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/et.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/eu.js b/public/theme/select2/dist/js/i18n/eu.js
          new file mode 100644
          index 0000000..9336053
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/eu.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/fa.js b/public/theme/select2/dist/js/i18n/fa.js
          new file mode 100644
          index 0000000..5118cd2
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/fa.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/fi.js b/public/theme/select2/dist/js/i18n/fi.js
          new file mode 100644
          index 0000000..9e60f26
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/fi.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/fr.js b/public/theme/select2/dist/js/i18n/fr.js
          new file mode 100644
          index 0000000..e4a6650
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/fr.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/gl.js b/public/theme/select2/dist/js/i18n/gl.js
          new file mode 100644
          index 0000000..02f258f
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/gl.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/he.js b/public/theme/select2/dist/js/i18n/he.js
          new file mode 100644
          index 0000000..881f8d3
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/he.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/hi.js b/public/theme/select2/dist/js/i18n/hi.js
          new file mode 100644
          index 0000000..e829684
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/hi.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/hr.js b/public/theme/select2/dist/js/i18n/hr.js
          new file mode 100644
          index 0000000..89f7b12
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/hr.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/hu.js b/public/theme/select2/dist/js/i18n/hu.js
          new file mode 100644
          index 0000000..74c8a90
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/hu.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/id.js b/public/theme/select2/dist/js/i18n/id.js
          new file mode 100644
          index 0000000..9586782
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/id.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/is.js b/public/theme/select2/dist/js/i18n/is.js
          new file mode 100644
          index 0000000..ab97a14
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/is.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/it.js b/public/theme/select2/dist/js/i18n/it.js
          new file mode 100644
          index 0000000..7796b9f
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/it.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ja.js b/public/theme/select2/dist/js/i18n/ja.js
          new file mode 100644
          index 0000000..9f4fff6
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ja.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/km.js b/public/theme/select2/dist/js/i18n/km.js
          new file mode 100644
          index 0000000..8e94adc
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/km.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ  "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ko.js b/public/theme/select2/dist/js/i18n/ko.js
          new file mode 100644
          index 0000000..4ed0321
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ko.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/lt.js b/public/theme/select2/dist/js/i18n/lt.js
          new file mode 100644
          index 0000000..05f3a6e
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/lt.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/lv.js b/public/theme/select2/dist/js/i18n/lv.js
          new file mode 100644
          index 0000000..df8ee94
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/lv.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par  "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/mk.js b/public/theme/select2/dist/js/i18n/mk.js
          new file mode 100644
          index 0000000..319ecca
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/mk.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ms.js b/public/theme/select2/dist/js/i18n/ms.js
          new file mode 100644
          index 0000000..4258f12
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ms.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/nb.js b/public/theme/select2/dist/js/i18n/nb.js
          new file mode 100644
          index 0000000..6770087
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/nb.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/nl.js b/public/theme/select2/dist/js/i18n/nl.js
          new file mode 100644
          index 0000000..8bd5e3c
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/nl.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/pl.js b/public/theme/select2/dist/js/i18n/pl.js
          new file mode 100644
          index 0000000..54ba28e
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/pl.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/pt-BR.js b/public/theme/select2/dist/js/i18n/pt-BR.js
          new file mode 100644
          index 0000000..a6629c8
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/pt-BR.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/pt.js b/public/theme/select2/dist/js/i18n/pt.js
          new file mode 100644
          index 0000000..0cbda56
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/pt.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ro.js b/public/theme/select2/dist/js/i18n/ro.js
          new file mode 100644
          index 0000000..788a263
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ro.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/ru.js b/public/theme/select2/dist/js/i18n/ru.js
          new file mode 100644
          index 0000000..9ecab80
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/ru.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/sk.js b/public/theme/select2/dist/js/i18n/sk.js
          new file mode 100644
          index 0000000..82f2941
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/sk.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/sr-Cyrl.js b/public/theme/select2/dist/js/i18n/sr-Cyrl.js
          new file mode 100644
          index 0000000..e945394
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/sr-Cyrl.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/sr.js b/public/theme/select2/dist/js/i18n/sr.js
          new file mode 100644
          index 0000000..ac0cc72
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/sr.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/sv.js b/public/theme/select2/dist/js/i18n/sv.js
          new file mode 100644
          index 0000000..bedac08
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/sv.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/th.js b/public/theme/select2/dist/js/i18n/th.js
          new file mode 100644
          index 0000000..097a86c
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/th.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/tr.js b/public/theme/select2/dist/js/i18n/tr.js
          new file mode 100644
          index 0000000..25d27a8
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/tr.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/uk.js b/public/theme/select2/dist/js/i18n/uk.js
          new file mode 100644
          index 0000000..eb3ca89
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/uk.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/vi.js b/public/theme/select2/dist/js/i18n/vi.js
          new file mode 100644
          index 0000000..8975b8a
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/vi.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/zh-CN.js b/public/theme/select2/dist/js/i18n/zh-CN.js
          new file mode 100644
          index 0000000..2ed9597
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/zh-CN.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/i18n/zh-TW.js b/public/theme/select2/dist/js/i18n/zh-TW.js
          new file mode 100644
          index 0000000..ea0812e
          --- /dev/null
          +++ b/public/theme/select2/dist/js/i18n/zh-TW.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
          +
          +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/select2.full.js b/public/theme/select2/dist/js/select2.full.js
          new file mode 100644
          index 0000000..e750834
          --- /dev/null
          +++ b/public/theme/select2/dist/js/select2.full.js
          @@ -0,0 +1,6436 @@
          +/*!
          + * Select2 4.0.3
          + * https://select2.github.io
          + *
          + * Released under the MIT license
          + * https://github.com/select2/select2/blob/master/LICENSE.md
          + */
          +(function (factory) {
          +  if (typeof define === 'function' && define.amd) {
          +    // AMD. Register as an anonymous module.
          +    define(['jquery'], factory);
          +  } else if (typeof exports === 'object') {
          +    // Node/CommonJS
          +    factory(require('jquery'));
          +  } else {
          +    // Browser globals
          +    factory(jQuery);
          +  }
          +}(function (jQuery) {
          +  // This is needed so we can catch the AMD loader configuration and use it
          +  // The inner file should be wrapped (by `banner.start.js`) in a function that
          +  // returns the AMD loader references.
          +  var S2 =
          +(function () {
          +  // Restore the Select2 AMD loader so it can be used
          +  // Needed mostly in the language files, where the loader is not inserted
          +  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
          +    var S2 = jQuery.fn.select2.amd;
          +  }
          +var S2;(function () { if (!S2 || !S2.requirejs) {
          +if (!S2) { S2 = {}; } else { require = S2; }
          +/**
          + * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
          + * Available via the MIT or new BSD license.
          + * see: http://github.com/jrburke/almond for details
          + */
          +//Going sloppy to avoid 'use strict' string cost, but strict practices should
          +//be followed.
          +/*jslint sloppy: true */
          +/*global setTimeout: false */
          +
          +var requirejs, require, define;
          +(function (undef) {
          +    var main, req, makeMap, handlers,
          +        defined = {},
          +        waiting = {},
          +        config = {},
          +        defining = {},
          +        hasOwn = Object.prototype.hasOwnProperty,
          +        aps = [].slice,
          +        jsSuffixRegExp = /\.js$/;
          +
          +    function hasProp(obj, prop) {
          +        return hasOwn.call(obj, prop);
          +    }
          +
          +    /**
          +     * Given a relative module name, like ./something, normalize it to
          +     * a real name that can be mapped to a path.
          +     * @param {String} name the relative name
          +     * @param {String} baseName a real name that the name arg is relative
          +     * to.
          +     * @returns {String} normalized name
          +     */
          +    function normalize(name, baseName) {
          +        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
          +            foundI, foundStarMap, starI, i, j, part,
          +            baseParts = baseName && baseName.split("/"),
          +            map = config.map,
          +            starMap = (map && map['*']) || {};
          +
          +        //Adjust any relative paths.
          +        if (name && name.charAt(0) === ".") {
          +            //If have a base name, try to normalize against it,
          +            //otherwise, assume it is a top-level require that will
          +            //be relative to baseUrl in the end.
          +            if (baseName) {
          +                name = name.split('/');
          +                lastIndex = name.length - 1;
          +
          +                // Node .js allowance:
          +                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
          +                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
          +                }
          +
          +                //Lop off the last part of baseParts, so that . matches the
          +                //"directory" and not name of the baseName's module. For instance,
          +                //baseName of "one/two/three", maps to "one/two/three.js", but we
          +                //want the directory, "one/two" for this normalization.
          +                name = baseParts.slice(0, baseParts.length - 1).concat(name);
          +
          +                //start trimDots
          +                for (i = 0; i < name.length; i += 1) {
          +                    part = name[i];
          +                    if (part === ".") {
          +                        name.splice(i, 1);
          +                        i -= 1;
          +                    } else if (part === "..") {
          +                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {
          +                            //End of the line. Keep at least one non-dot
          +                            //path segment at the front so it can be mapped
          +                            //correctly to disk. Otherwise, there is likely
          +                            //no path mapping for a path starting with '..'.
          +                            //This can still fail, but catches the most reasonable
          +                            //uses of ..
          +                            break;
          +                        } else if (i > 0) {
          +                            name.splice(i - 1, 2);
          +                            i -= 2;
          +                        }
          +                    }
          +                }
          +                //end trimDots
          +
          +                name = name.join("/");
          +            } else if (name.indexOf('./') === 0) {
          +                // No baseName, so this is ID is resolved relative
          +                // to baseUrl, pull off the leading dot.
          +                name = name.substring(2);
          +            }
          +        }
          +
          +        //Apply map config if available.
          +        if ((baseParts || starMap) && map) {
          +            nameParts = name.split('/');
          +
          +            for (i = nameParts.length; i > 0; i -= 1) {
          +                nameSegment = nameParts.slice(0, i).join("/");
          +
          +                if (baseParts) {
          +                    //Find the longest baseName segment match in the config.
          +                    //So, do joins on the biggest to smallest lengths of baseParts.
          +                    for (j = baseParts.length; j > 0; j -= 1) {
          +                        mapValue = map[baseParts.slice(0, j).join('/')];
          +
          +                        //baseName segment has  config, find if it has one for
          +                        //this name.
          +                        if (mapValue) {
          +                            mapValue = mapValue[nameSegment];
          +                            if (mapValue) {
          +                                //Match, update name to the new value.
          +                                foundMap = mapValue;
          +                                foundI = i;
          +                                break;
          +                            }
          +                        }
          +                    }
          +                }
          +
          +                if (foundMap) {
          +                    break;
          +                }
          +
          +                //Check for a star map match, but just hold on to it,
          +                //if there is a shorter segment match later in a matching
          +                //config, then favor over this star map.
          +                if (!foundStarMap && starMap && starMap[nameSegment]) {
          +                    foundStarMap = starMap[nameSegment];
          +                    starI = i;
          +                }
          +            }
          +
          +            if (!foundMap && foundStarMap) {
          +                foundMap = foundStarMap;
          +                foundI = starI;
          +            }
          +
          +            if (foundMap) {
          +                nameParts.splice(0, foundI, foundMap);
          +                name = nameParts.join('/');
          +            }
          +        }
          +
          +        return name;
          +    }
          +
          +    function makeRequire(relName, forceSync) {
          +        return function () {
          +            //A version of a require function that passes a moduleName
          +            //value for items that may need to
          +            //look up paths relative to the moduleName
          +            var args = aps.call(arguments, 0);
          +
          +            //If first arg is not require('string'), and there is only
          +            //one arg, it is the array form without a callback. Insert
          +            //a null so that the following concat is correct.
          +            if (typeof args[0] !== 'string' && args.length === 1) {
          +                args.push(null);
          +            }
          +            return req.apply(undef, args.concat([relName, forceSync]));
          +        };
          +    }
          +
          +    function makeNormalize(relName) {
          +        return function (name) {
          +            return normalize(name, relName);
          +        };
          +    }
          +
          +    function makeLoad(depName) {
          +        return function (value) {
          +            defined[depName] = value;
          +        };
          +    }
          +
          +    function callDep(name) {
          +        if (hasProp(waiting, name)) {
          +            var args = waiting[name];
          +            delete waiting[name];
          +            defining[name] = true;
          +            main.apply(undef, args);
          +        }
          +
          +        if (!hasProp(defined, name) && !hasProp(defining, name)) {
          +            throw new Error('No ' + name);
          +        }
          +        return defined[name];
          +    }
          +
          +    //Turns a plugin!resource to [plugin, resource]
          +    //with the plugin being undefined if the name
          +    //did not have a plugin prefix.
          +    function splitPrefix(name) {
          +        var prefix,
          +            index = name ? name.indexOf('!') : -1;
          +        if (index > -1) {
          +            prefix = name.substring(0, index);
          +            name = name.substring(index + 1, name.length);
          +        }
          +        return [prefix, name];
          +    }
          +
          +    /**
          +     * Makes a name map, normalizing the name, and using a plugin
          +     * for normalization if necessary. Grabs a ref to plugin
          +     * too, as an optimization.
          +     */
          +    makeMap = function (name, relName) {
          +        var plugin,
          +            parts = splitPrefix(name),
          +            prefix = parts[0];
          +
          +        name = parts[1];
          +
          +        if (prefix) {
          +            prefix = normalize(prefix, relName);
          +            plugin = callDep(prefix);
          +        }
          +
          +        //Normalize according
          +        if (prefix) {
          +            if (plugin && plugin.normalize) {
          +                name = plugin.normalize(name, makeNormalize(relName));
          +            } else {
          +                name = normalize(name, relName);
          +            }
          +        } else {
          +            name = normalize(name, relName);
          +            parts = splitPrefix(name);
          +            prefix = parts[0];
          +            name = parts[1];
          +            if (prefix) {
          +                plugin = callDep(prefix);
          +            }
          +        }
          +
          +        //Using ridiculous property names for space reasons
          +        return {
          +            f: prefix ? prefix + '!' + name : name, //fullName
          +            n: name,
          +            pr: prefix,
          +            p: plugin
          +        };
          +    };
          +
          +    function makeConfig(name) {
          +        return function () {
          +            return (config && config.config && config.config[name]) || {};
          +        };
          +    }
          +
          +    handlers = {
          +        require: function (name) {
          +            return makeRequire(name);
          +        },
          +        exports: function (name) {
          +            var e = defined[name];
          +            if (typeof e !== 'undefined') {
          +                return e;
          +            } else {
          +                return (defined[name] = {});
          +            }
          +        },
          +        module: function (name) {
          +            return {
          +                id: name,
          +                uri: '',
          +                exports: defined[name],
          +                config: makeConfig(name)
          +            };
          +        }
          +    };
          +
          +    main = function (name, deps, callback, relName) {
          +        var cjsModule, depName, ret, map, i,
          +            args = [],
          +            callbackType = typeof callback,
          +            usingExports;
          +
          +        //Use name if no relName
          +        relName = relName || name;
          +
          +        //Call the callback to define the module, if necessary.
          +        if (callbackType === 'undefined' || callbackType === 'function') {
          +            //Pull out the defined dependencies and pass the ordered
          +            //values to the callback.
          +            //Default to [require, exports, module] if no deps
          +            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
          +            for (i = 0; i < deps.length; i += 1) {
          +                map = makeMap(deps[i], relName);
          +                depName = map.f;
          +
          +                //Fast path CommonJS standard dependencies.
          +                if (depName === "require") {
          +                    args[i] = handlers.require(name);
          +                } else if (depName === "exports") {
          +                    //CommonJS module spec 1.1
          +                    args[i] = handlers.exports(name);
          +                    usingExports = true;
          +                } else if (depName === "module") {
          +                    //CommonJS module spec 1.1
          +                    cjsModule = args[i] = handlers.module(name);
          +                } else if (hasProp(defined, depName) ||
          +                           hasProp(waiting, depName) ||
          +                           hasProp(defining, depName)) {
          +                    args[i] = callDep(depName);
          +                } else if (map.p) {
          +                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
          +                    args[i] = defined[depName];
          +                } else {
          +                    throw new Error(name + ' missing ' + depName);
          +                }
          +            }
          +
          +            ret = callback ? callback.apply(defined[name], args) : undefined;
          +
          +            if (name) {
          +                //If setting exports via "module" is in play,
          +                //favor that over return value and exports. After that,
          +                //favor a non-undefined return value over exports use.
          +                if (cjsModule && cjsModule.exports !== undef &&
          +                        cjsModule.exports !== defined[name]) {
          +                    defined[name] = cjsModule.exports;
          +                } else if (ret !== undef || !usingExports) {
          +                    //Use the return value from the function.
          +                    defined[name] = ret;
          +                }
          +            }
          +        } else if (name) {
          +            //May just be an object definition for the module. Only
          +            //worry about defining if have a module name.
          +            defined[name] = callback;
          +        }
          +    };
          +
          +    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
          +        if (typeof deps === "string") {
          +            if (handlers[deps]) {
          +                //callback in this case is really relName
          +                return handlers[deps](callback);
          +            }
          +            //Just return the module wanted. In this scenario, the
          +            //deps arg is the module name, and second arg (if passed)
          +            //is just the relName.
          +            //Normalize module name, if it contains . or ..
          +            return callDep(makeMap(deps, callback).f);
          +        } else if (!deps.splice) {
          +            //deps is a config object, not an array.
          +            config = deps;
          +            if (config.deps) {
          +                req(config.deps, config.callback);
          +            }
          +            if (!callback) {
          +                return;
          +            }
          +
          +            if (callback.splice) {
          +                //callback is an array, which means it is a dependency list.
          +                //Adjust args if there are dependencies
          +                deps = callback;
          +                callback = relName;
          +                relName = null;
          +            } else {
          +                deps = undef;
          +            }
          +        }
          +
          +        //Support require(['a'])
          +        callback = callback || function () {};
          +
          +        //If relName is a function, it is an errback handler,
          +        //so remove it.
          +        if (typeof relName === 'function') {
          +            relName = forceSync;
          +            forceSync = alt;
          +        }
          +
          +        //Simulate async callback;
          +        if (forceSync) {
          +            main(undef, deps, callback, relName);
          +        } else {
          +            //Using a non-zero value because of concern for what old browsers
          +            //do, and latest browsers "upgrade" to 4 if lower value is used:
          +            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
          +            //If want a value immediately, use require('id') instead -- something
          +            //that works in almond on the global level, but not guaranteed and
          +            //unlikely to work in other AMD implementations.
          +            setTimeout(function () {
          +                main(undef, deps, callback, relName);
          +            }, 4);
          +        }
          +
          +        return req;
          +    };
          +
          +    /**
          +     * Just drops the config on the floor, but returns req in case
          +     * the config return value is used.
          +     */
          +    req.config = function (cfg) {
          +        return req(cfg);
          +    };
          +
          +    /**
          +     * Expose module registry for debugging and tooling
          +     */
          +    requirejs._defined = defined;
          +
          +    define = function (name, deps, callback) {
          +        if (typeof name !== 'string') {
          +            throw new Error('See almond README: incorrect module build, no module name');
          +        }
          +
          +        //This module may not have dependencies
          +        if (!deps.splice) {
          +            //deps is not an array, so probably means
          +            //an object literal or factory function for
          +            //the value. Adjust args.
          +            callback = deps;
          +            deps = [];
          +        }
          +
          +        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
          +            waiting[name] = [name, deps, callback];
          +        }
          +    };
          +
          +    define.amd = {
          +        jQuery: true
          +    };
          +}());
          +
          +S2.requirejs = requirejs;S2.require = require;S2.define = define;
          +}
          +}());
          +S2.define("almond", function(){});
          +
          +/* global jQuery:false, $:false */
          +S2.define('jquery',[],function () {
          +  var _$ = jQuery || $;
          +
          +  if (_$ == null && console && console.error) {
          +    console.error(
          +      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
          +      'found. Make sure that you are including jQuery before Select2 on your ' +
          +      'web page.'
          +    );
          +  }
          +
          +  return _$;
          +});
          +
          +S2.define('select2/utils',[
          +  'jquery'
          +], function ($) {
          +  var Utils = {};
          +
          +  Utils.Extend = function (ChildClass, SuperClass) {
          +    var __hasProp = {}.hasOwnProperty;
          +
          +    function BaseConstructor () {
          +      this.constructor = ChildClass;
          +    }
          +
          +    for (var key in SuperClass) {
          +      if (__hasProp.call(SuperClass, key)) {
          +        ChildClass[key] = SuperClass[key];
          +      }
          +    }
          +
          +    BaseConstructor.prototype = SuperClass.prototype;
          +    ChildClass.prototype = new BaseConstructor();
          +    ChildClass.__super__ = SuperClass.prototype;
          +
          +    return ChildClass;
          +  };
          +
          +  function getMethods (theClass) {
          +    var proto = theClass.prototype;
          +
          +    var methods = [];
          +
          +    for (var methodName in proto) {
          +      var m = proto[methodName];
          +
          +      if (typeof m !== 'function') {
          +        continue;
          +      }
          +
          +      if (methodName === 'constructor') {
          +        continue;
          +      }
          +
          +      methods.push(methodName);
          +    }
          +
          +    return methods;
          +  }
          +
          +  Utils.Decorate = function (SuperClass, DecoratorClass) {
          +    var decoratedMethods = getMethods(DecoratorClass);
          +    var superMethods = getMethods(SuperClass);
          +
          +    function DecoratedClass () {
          +      var unshift = Array.prototype.unshift;
          +
          +      var argCount = DecoratorClass.prototype.constructor.length;
          +
          +      var calledConstructor = SuperClass.prototype.constructor;
          +
          +      if (argCount > 0) {
          +        unshift.call(arguments, SuperClass.prototype.constructor);
          +
          +        calledConstructor = DecoratorClass.prototype.constructor;
          +      }
          +
          +      calledConstructor.apply(this, arguments);
          +    }
          +
          +    DecoratorClass.displayName = SuperClass.displayName;
          +
          +    function ctr () {
          +      this.constructor = DecoratedClass;
          +    }
          +
          +    DecoratedClass.prototype = new ctr();
          +
          +    for (var m = 0; m < superMethods.length; m++) {
          +        var superMethod = superMethods[m];
          +
          +        DecoratedClass.prototype[superMethod] =
          +          SuperClass.prototype[superMethod];
          +    }
          +
          +    var calledMethod = function (methodName) {
          +      // Stub out the original method if it's not decorating an actual method
          +      var originalMethod = function () {};
          +
          +      if (methodName in DecoratedClass.prototype) {
          +        originalMethod = DecoratedClass.prototype[methodName];
          +      }
          +
          +      var decoratedMethod = DecoratorClass.prototype[methodName];
          +
          +      return function () {
          +        var unshift = Array.prototype.unshift;
          +
          +        unshift.call(arguments, originalMethod);
          +
          +        return decoratedMethod.apply(this, arguments);
          +      };
          +    };
          +
          +    for (var d = 0; d < decoratedMethods.length; d++) {
          +      var decoratedMethod = decoratedMethods[d];
          +
          +      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
          +    }
          +
          +    return DecoratedClass;
          +  };
          +
          +  var Observable = function () {
          +    this.listeners = {};
          +  };
          +
          +  Observable.prototype.on = function (event, callback) {
          +    this.listeners = this.listeners || {};
          +
          +    if (event in this.listeners) {
          +      this.listeners[event].push(callback);
          +    } else {
          +      this.listeners[event] = [callback];
          +    }
          +  };
          +
          +  Observable.prototype.trigger = function (event) {
          +    var slice = Array.prototype.slice;
          +    var params = slice.call(arguments, 1);
          +
          +    this.listeners = this.listeners || {};
          +
          +    // Params should always come in as an array
          +    if (params == null) {
          +      params = [];
          +    }
          +
          +    // If there are no arguments to the event, use a temporary object
          +    if (params.length === 0) {
          +      params.push({});
          +    }
          +
          +    // Set the `_type` of the first object to the event
          +    params[0]._type = event;
          +
          +    if (event in this.listeners) {
          +      this.invoke(this.listeners[event], slice.call(arguments, 1));
          +    }
          +
          +    if ('*' in this.listeners) {
          +      this.invoke(this.listeners['*'], arguments);
          +    }
          +  };
          +
          +  Observable.prototype.invoke = function (listeners, params) {
          +    for (var i = 0, len = listeners.length; i < len; i++) {
          +      listeners[i].apply(this, params);
          +    }
          +  };
          +
          +  Utils.Observable = Observable;
          +
          +  Utils.generateChars = function (length) {
          +    var chars = '';
          +
          +    for (var i = 0; i < length; i++) {
          +      var randomChar = Math.floor(Math.random() * 36);
          +      chars += randomChar.toString(36);
          +    }
          +
          +    return chars;
          +  };
          +
          +  Utils.bind = function (func, context) {
          +    return function () {
          +      func.apply(context, arguments);
          +    };
          +  };
          +
          +  Utils._convertData = function (data) {
          +    for (var originalKey in data) {
          +      var keys = originalKey.split('-');
          +
          +      var dataLevel = data;
          +
          +      if (keys.length === 1) {
          +        continue;
          +      }
          +
          +      for (var k = 0; k < keys.length; k++) {
          +        var key = keys[k];
          +
          +        // Lowercase the first letter
          +        // By default, dash-separated becomes camelCase
          +        key = key.substring(0, 1).toLowerCase() + key.substring(1);
          +
          +        if (!(key in dataLevel)) {
          +          dataLevel[key] = {};
          +        }
          +
          +        if (k == keys.length - 1) {
          +          dataLevel[key] = data[originalKey];
          +        }
          +
          +        dataLevel = dataLevel[key];
          +      }
          +
          +      delete data[originalKey];
          +    }
          +
          +    return data;
          +  };
          +
          +  Utils.hasScroll = function (index, el) {
          +    // Adapted from the function created by @ShadowScripter
          +    // and adapted by @BillBarry on the Stack Exchange Code Review website.
          +    // The original code can be found at
          +    // http://codereview.stackexchange.com/q/13338
          +    // and was designed to be used with the Sizzle selector engine.
          +
          +    var $el = $(el);
          +    var overflowX = el.style.overflowX;
          +    var overflowY = el.style.overflowY;
          +
          +    //Check both x and y declarations
          +    if (overflowX === overflowY &&
          +        (overflowY === 'hidden' || overflowY === 'visible')) {
          +      return false;
          +    }
          +
          +    if (overflowX === 'scroll' || overflowY === 'scroll') {
          +      return true;
          +    }
          +
          +    return ($el.innerHeight() < el.scrollHeight ||
          +      $el.innerWidth() < el.scrollWidth);
          +  };
          +
          +  Utils.escapeMarkup = function (markup) {
          +    var replaceMap = {
          +      '\\': '&#92;',
          +      '&': '&amp;',
          +      '<': '&lt;',
          +      '>': '&gt;',
          +      '"': '&quot;',
          +      '\'': '&#39;',
          +      '/': '&#47;'
          +    };
          +
          +    // Do not try to escape the markup if it's not a string
          +    if (typeof markup !== 'string') {
          +      return markup;
          +    }
          +
          +    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
          +      return replaceMap[match];
          +    });
          +  };
          +
          +  // Append an array of jQuery nodes to a given element.
          +  Utils.appendMany = function ($element, $nodes) {
          +    // jQuery 1.7.x does not support $.fn.append() with an array
          +    // Fall back to a jQuery object collection using $.fn.add()
          +    if ($.fn.jquery.substr(0, 3) === '1.7') {
          +      var $jqNodes = $();
          +
          +      $.map($nodes, function (node) {
          +        $jqNodes = $jqNodes.add(node);
          +      });
          +
          +      $nodes = $jqNodes;
          +    }
          +
          +    $element.append($nodes);
          +  };
          +
          +  return Utils;
          +});
          +
          +S2.define('select2/results',[
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Results ($element, options, dataAdapter) {
          +    this.$element = $element;
          +    this.data = dataAdapter;
          +    this.options = options;
          +
          +    Results.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Results, Utils.Observable);
          +
          +  Results.prototype.render = function () {
          +    var $results = $(
          +      '<ul class="select2-results__options" role="tree"></ul>'
          +    );
          +
          +    if (this.options.get('multiple')) {
          +      $results.attr('aria-multiselectable', 'true');
          +    }
          +
          +    this.$results = $results;
          +
          +    return $results;
          +  };
          +
          +  Results.prototype.clear = function () {
          +    this.$results.empty();
          +  };
          +
          +  Results.prototype.displayMessage = function (params) {
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    this.clear();
          +    this.hideLoading();
          +
          +    var $message = $(
          +      '<li role="treeitem" aria-live="assertive"' +
          +      ' class="select2-results__option"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get(params.message);
          +
          +    $message.append(
          +      escapeMarkup(
          +        message(params.args)
          +      )
          +    );
          +
          +    $message[0].className += ' select2-results__message';
          +
          +    this.$results.append($message);
          +  };
          +
          +  Results.prototype.hideMessages = function () {
          +    this.$results.find('.select2-results__message').remove();
          +  };
          +
          +  Results.prototype.append = function (data) {
          +    this.hideLoading();
          +
          +    var $options = [];
          +
          +    if (data.results == null || data.results.length === 0) {
          +      if (this.$results.children().length === 0) {
          +        this.trigger('results:message', {
          +          message: 'noResults'
          +        });
          +      }
          +
          +      return;
          +    }
          +
          +    data.results = this.sort(data.results);
          +
          +    for (var d = 0; d < data.results.length; d++) {
          +      var item = data.results[d];
          +
          +      var $option = this.option(item);
          +
          +      $options.push($option);
          +    }
          +
          +    this.$results.append($options);
          +  };
          +
          +  Results.prototype.position = function ($results, $dropdown) {
          +    var $resultsContainer = $dropdown.find('.select2-results');
          +    $resultsContainer.append($results);
          +  };
          +
          +  Results.prototype.sort = function (data) {
          +    var sorter = this.options.get('sorter');
          +
          +    return sorter(data);
          +  };
          +
          +  Results.prototype.highlightFirstItem = function () {
          +    var $options = this.$results
          +      .find('.select2-results__option[aria-selected]');
          +
          +    var $selected = $options.filter('[aria-selected=true]');
          +
          +    // Check if there are any selected options
          +    if ($selected.length > 0) {
          +      // If there are selected options, highlight the first
          +      $selected.first().trigger('mouseenter');
          +    } else {
          +      // If there are no selected options, highlight the first option
          +      // in the dropdown
          +      $options.first().trigger('mouseenter');
          +    }
          +
          +    this.ensureHighlightVisible();
          +  };
          +
          +  Results.prototype.setClasses = function () {
          +    var self = this;
          +
          +    this.data.current(function (selected) {
          +      var selectedIds = $.map(selected, function (s) {
          +        return s.id.toString();
          +      });
          +
          +      var $options = self.$results
          +        .find('.select2-results__option[aria-selected]');
          +
          +      $options.each(function () {
          +        var $option = $(this);
          +
          +        var item = $.data(this, 'data');
          +
          +        // id needs to be converted to a string when comparing
          +        var id = '' + item.id;
          +
          +        if ((item.element != null && item.element.selected) ||
          +            (item.element == null && $.inArray(id, selectedIds) > -1)) {
          +          $option.attr('aria-selected', 'true');
          +        } else {
          +          $option.attr('aria-selected', 'false');
          +        }
          +      });
          +
          +    });
          +  };
          +
          +  Results.prototype.showLoading = function (params) {
          +    this.hideLoading();
          +
          +    var loadingMore = this.options.get('translations').get('searching');
          +
          +    var loading = {
          +      disabled: true,
          +      loading: true,
          +      text: loadingMore(params)
          +    };
          +    var $loading = this.option(loading);
          +    $loading.className += ' loading-results';
          +
          +    this.$results.prepend($loading);
          +  };
          +
          +  Results.prototype.hideLoading = function () {
          +    this.$results.find('.loading-results').remove();
          +  };
          +
          +  Results.prototype.option = function (data) {
          +    var option = document.createElement('li');
          +    option.className = 'select2-results__option';
          +
          +    var attrs = {
          +      'role': 'treeitem',
          +      'aria-selected': 'false'
          +    };
          +
          +    if (data.disabled) {
          +      delete attrs['aria-selected'];
          +      attrs['aria-disabled'] = 'true';
          +    }
          +
          +    if (data.id == null) {
          +      delete attrs['aria-selected'];
          +    }
          +
          +    if (data._resultId != null) {
          +      option.id = data._resultId;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    if (data.children) {
          +      attrs.role = 'group';
          +      attrs['aria-label'] = data.text;
          +      delete attrs['aria-selected'];
          +    }
          +
          +    for (var attr in attrs) {
          +      var val = attrs[attr];
          +
          +      option.setAttribute(attr, val);
          +    }
          +
          +    if (data.children) {
          +      var $option = $(option);
          +
          +      var label = document.createElement('strong');
          +      label.className = 'select2-results__group';
          +
          +      var $label = $(label);
          +      this.template(data, label);
          +
          +      var $children = [];
          +
          +      for (var c = 0; c < data.children.length; c++) {
          +        var child = data.children[c];
          +
          +        var $child = this.option(child);
          +
          +        $children.push($child);
          +      }
          +
          +      var $childrenContainer = $('<ul></ul>', {
          +        'class': 'select2-results__options select2-results__options--nested'
          +      });
          +
          +      $childrenContainer.append($children);
          +
          +      $option.append(label);
          +      $option.append($childrenContainer);
          +    } else {
          +      this.template(data, option);
          +    }
          +
          +    $.data(option, 'data', data);
          +
          +    return option;
          +  };
          +
          +  Results.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-results';
          +
          +    this.$results.attr('id', id);
          +
          +    container.on('results:all', function (params) {
          +      self.clear();
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +        self.highlightFirstItem();
          +      }
          +    });
          +
          +    container.on('results:append', function (params) {
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +      }
          +    });
          +
          +    container.on('query', function (params) {
          +      self.hideMessages();
          +      self.showLoading(params);
          +    });
          +
          +    container.on('select', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('unselect', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expended="true"
          +      self.$results.attr('aria-expanded', 'true');
          +      self.$results.attr('aria-hidden', 'false');
          +
          +      self.setClasses();
          +      self.ensureHighlightVisible();
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expended="false"
          +      self.$results.attr('aria-expanded', 'false');
          +      self.$results.attr('aria-hidden', 'true');
          +      self.$results.removeAttr('aria-activedescendant');
          +    });
          +
          +    container.on('results:toggle', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      $highlighted.trigger('mouseup');
          +    });
          +
          +    container.on('results:select', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      var data = $highlighted.data('data');
          +
          +      if ($highlighted.attr('aria-selected') == 'true') {
          +        self.trigger('close', {});
          +      } else {
          +        self.trigger('select', {
          +          data: data
          +        });
          +      }
          +    });
          +
          +    container.on('results:previous', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      // If we are already at te top, don't move further
          +      if (currentIndex === 0) {
          +        return;
          +      }
          +
          +      var nextIndex = currentIndex - 1;
          +
          +      // If none are highlighted, highlight the first
          +      if ($highlighted.length === 0) {
          +        nextIndex = 0;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top;
          +      var nextTop = $next.offset().top;
          +      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextTop - currentOffset < 0) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:next', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      var nextIndex = currentIndex + 1;
          +
          +      // If we are at the last option, stay there
          +      if (nextIndex >= $options.length) {
          +        return;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var nextBottom = $next.offset().top + $next.outerHeight(false);
          +      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextBottom > currentOffset) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      params.element.addClass('select2-results__option--highlighted');
          +    });
          +
          +    container.on('results:message', function (params) {
          +      self.displayMessage(params);
          +    });
          +
          +    if ($.fn.mousewheel) {
          +      this.$results.on('mousewheel', function (e) {
          +        var top = self.$results.scrollTop();
          +
          +        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
          +
          +        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
          +        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
          +
          +        if (isAtTop) {
          +          self.$results.scrollTop(0);
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        } else if (isAtBottom) {
          +          self.$results.scrollTop(
          +            self.$results.get(0).scrollHeight - self.$results.height()
          +          );
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        }
          +      });
          +    }
          +
          +    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var $this = $(this);
          +
          +      var data = $this.data('data');
          +
          +      if ($this.attr('aria-selected') === 'true') {
          +        if (self.options.get('multiple')) {
          +          self.trigger('unselect', {
          +            originalEvent: evt,
          +            data: data
          +          });
          +        } else {
          +          self.trigger('close', {});
          +        }
          +
          +        return;
          +      }
          +
          +      self.trigger('select', {
          +        originalEvent: evt,
          +        data: data
          +      });
          +    });
          +
          +    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var data = $(this).data('data');
          +
          +      self.getHighlightedResults()
          +          .removeClass('select2-results__option--highlighted');
          +
          +      self.trigger('results:focus', {
          +        data: data,
          +        element: $(this)
          +      });
          +    });
          +  };
          +
          +  Results.prototype.getHighlightedResults = function () {
          +    var $highlighted = this.$results
          +    .find('.select2-results__option--highlighted');
          +
          +    return $highlighted;
          +  };
          +
          +  Results.prototype.destroy = function () {
          +    this.$results.remove();
          +  };
          +
          +  Results.prototype.ensureHighlightVisible = function () {
          +    var $highlighted = this.getHighlightedResults();
          +
          +    if ($highlighted.length === 0) {
          +      return;
          +    }
          +
          +    var $options = this.$results.find('[aria-selected]');
          +
          +    var currentIndex = $options.index($highlighted);
          +
          +    var currentOffset = this.$results.offset().top;
          +    var nextTop = $highlighted.offset().top;
          +    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
          +
          +    var offsetDelta = nextTop - currentOffset;
          +    nextOffset -= $highlighted.outerHeight(false) * 2;
          +
          +    if (currentIndex <= 2) {
          +      this.$results.scrollTop(0);
          +    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
          +      this.$results.scrollTop(nextOffset);
          +    }
          +  };
          +
          +  Results.prototype.template = function (result, container) {
          +    var template = this.options.get('templateResult');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    var content = template(result, container);
          +
          +    if (content == null) {
          +      container.style.display = 'none';
          +    } else if (typeof content === 'string') {
          +      container.innerHTML = escapeMarkup(content);
          +    } else {
          +      $(container).append(content);
          +    }
          +  };
          +
          +  return Results;
          +});
          +
          +S2.define('select2/keys',[
          +
          +], function () {
          +  var KEYS = {
          +    BACKSPACE: 8,
          +    TAB: 9,
          +    ENTER: 13,
          +    SHIFT: 16,
          +    CTRL: 17,
          +    ALT: 18,
          +    ESC: 27,
          +    SPACE: 32,
          +    PAGE_UP: 33,
          +    PAGE_DOWN: 34,
          +    END: 35,
          +    HOME: 36,
          +    LEFT: 37,
          +    UP: 38,
          +    RIGHT: 39,
          +    DOWN: 40,
          +    DELETE: 46
          +  };
          +
          +  return KEYS;
          +});
          +
          +S2.define('select2/selection/base',[
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function BaseSelection ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    BaseSelection.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseSelection, Utils.Observable);
          +
          +  BaseSelection.prototype.render = function () {
          +    var $selection = $(
          +      '<span class="select2-selection" role="combobox" ' +
          +      ' aria-haspopup="true" aria-expanded="false">' +
          +      '</span>'
          +    );
          +
          +    this._tabindex = 0;
          +
          +    if (this.$element.data('old-tabindex') != null) {
          +      this._tabindex = this.$element.data('old-tabindex');
          +    } else if (this.$element.attr('tabindex') != null) {
          +      this._tabindex = this.$element.attr('tabindex');
          +    }
          +
          +    $selection.attr('title', this.$element.attr('title'));
          +    $selection.attr('tabindex', this._tabindex);
          +
          +    this.$selection = $selection;
          +
          +    return $selection;
          +  };
          +
          +  BaseSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-container';
          +    var resultsId = container.id + '-results';
          +
          +    this.container = container;
          +
          +    this.$selection.on('focus', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      if (evt.which === KEYS.SPACE) {
          +        evt.preventDefault();
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$selection.attr('aria-activedescendant', params.data._resultId);
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expanded="true"
          +      self.$selection.attr('aria-expanded', 'true');
          +      self.$selection.attr('aria-owns', resultsId);
          +
          +      self._attachCloseHandler(container);
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expanded="false"
          +      self.$selection.attr('aria-expanded', 'false');
          +      self.$selection.removeAttr('aria-activedescendant');
          +      self.$selection.removeAttr('aria-owns');
          +
          +      self.$selection.focus();
          +
          +      self._detachCloseHandler(container);
          +    });
          +
          +    container.on('enable', function () {
          +      self.$selection.attr('tabindex', self._tabindex);
          +    });
          +
          +    container.on('disable', function () {
          +      self.$selection.attr('tabindex', '-1');
          +    });
          +  };
          +
          +  BaseSelection.prototype._handleBlur = function (evt) {
          +    var self = this;
          +
          +    // This needs to be delayed as the active element is the body when the tab
          +    // key is pressed, possibly along with others.
          +    window.setTimeout(function () {
          +      // Don't trigger `blur` if the focus is still in the selection
          +      if (
          +        (document.activeElement == self.$selection[0]) ||
          +        ($.contains(self.$selection[0], document.activeElement))
          +      ) {
          +        return;
          +      }
          +
          +      self.trigger('blur', evt);
          +    }, 1);
          +  };
          +
          +  BaseSelection.prototype._attachCloseHandler = function (container) {
          +    var self = this;
          +
          +    $(document.body).on('mousedown.select2.' + container.id, function (e) {
          +      var $target = $(e.target);
          +
          +      var $select = $target.closest('.select2');
          +
          +      var $all = $('.select2.select2-container--open');
          +
          +      $all.each(function () {
          +        var $this = $(this);
          +
          +        if (this == $select[0]) {
          +          return;
          +        }
          +
          +        var $element = $this.data('element');
          +
          +        $element.select2('close');
          +      });
          +    });
          +  };
          +
          +  BaseSelection.prototype._detachCloseHandler = function (container) {
          +    $(document.body).off('mousedown.select2.' + container.id);
          +  };
          +
          +  BaseSelection.prototype.position = function ($selection, $container) {
          +    var $selectionContainer = $container.find('.selection');
          +    $selectionContainer.append($selection);
          +  };
          +
          +  BaseSelection.prototype.destroy = function () {
          +    this._detachCloseHandler(this.container);
          +  };
          +
          +  BaseSelection.prototype.update = function (data) {
          +    throw new Error('The `update` method must be defined in child classes.');
          +  };
          +
          +  return BaseSelection;
          +});
          +
          +S2.define('select2/selection/single',[
          +  'jquery',
          +  './base',
          +  '../utils',
          +  '../keys'
          +], function ($, BaseSelection, Utils, KEYS) {
          +  function SingleSelection () {
          +    SingleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(SingleSelection, BaseSelection);
          +
          +  SingleSelection.prototype.render = function () {
          +    var $selection = SingleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--single');
          +
          +    $selection.html(
          +      '<span class="select2-selection__rendered"></span>' +
          +      '<span class="select2-selection__arrow" role="presentation">' +
          +        '<b role="presentation"></b>' +
          +      '</span>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  SingleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    SingleSelection.__super__.bind.apply(this, arguments);
          +
          +    var id = container.id + '-container';
          +
          +    this.$selection.find('.select2-selection__rendered').attr('id', id);
          +    this.$selection.attr('aria-labelledby', id);
          +
          +    this.$selection.on('mousedown', function (evt) {
          +      // Only respond to left clicks
          +      if (evt.which !== 1) {
          +        return;
          +      }
          +
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on('focus', function (evt) {
          +      // User focuses on the container
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      // User exits the container
          +    });
          +
          +    container.on('focus', function (evt) {
          +      if (!container.isOpen()) {
          +        self.$selection.focus();
          +      }
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +  };
          +
          +  SingleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  SingleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  SingleSelection.prototype.selectionContainer = function () {
          +    return $('<span></span>');
          +  };
          +
          +  SingleSelection.prototype.update = function (data) {
          +    if (data.length === 0) {
          +      this.clear();
          +      return;
          +    }
          +
          +    var selection = data[0];
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +    var formatted = this.display(selection, $rendered);
          +
          +    $rendered.empty().append(formatted);
          +    $rendered.prop('title', selection.title || selection.text);
          +  };
          +
          +  return SingleSelection;
          +});
          +
          +S2.define('select2/selection/multiple',[
          +  'jquery',
          +  './base',
          +  '../utils'
          +], function ($, BaseSelection, Utils) {
          +  function MultipleSelection ($element, options) {
          +    MultipleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(MultipleSelection, BaseSelection);
          +
          +  MultipleSelection.prototype.render = function () {
          +    var $selection = MultipleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--multiple');
          +
          +    $selection.html(
          +      '<ul class="select2-selection__rendered"></ul>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  MultipleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    MultipleSelection.__super__.bind.apply(this, arguments);
          +
          +    this.$selection.on('click', function (evt) {
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on(
          +      'click',
          +      '.select2-selection__choice__remove',
          +      function (evt) {
          +        // Ignore the event if it is disabled
          +        if (self.options.get('disabled')) {
          +          return;
          +        }
          +
          +        var $remove = $(this);
          +        var $selection = $remove.parent();
          +
          +        var data = $selection.data('data');
          +
          +        self.trigger('unselect', {
          +          originalEvent: evt,
          +          data: data
          +        });
          +      }
          +    );
          +  };
          +
          +  MultipleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  MultipleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  MultipleSelection.prototype.selectionContainer = function () {
          +    var $container = $(
          +      '<li class="select2-selection__choice">' +
          +        '<span class="select2-selection__choice__remove" role="presentation">' +
          +          '&times;' +
          +        '</span>' +
          +      '</li>'
          +    );
          +
          +    return $container;
          +  };
          +
          +  MultipleSelection.prototype.update = function (data) {
          +    this.clear();
          +
          +    if (data.length === 0) {
          +      return;
          +    }
          +
          +    var $selections = [];
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var selection = data[d];
          +
          +      var $selection = this.selectionContainer();
          +      var formatted = this.display(selection, $selection);
          +
          +      $selection.append(formatted);
          +      $selection.prop('title', selection.title || selection.text);
          +
          +      $selection.data('data', selection);
          +
          +      $selections.push($selection);
          +    }
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +
          +    Utils.appendMany($rendered, $selections);
          +  };
          +
          +  return MultipleSelection;
          +});
          +
          +S2.define('select2/selection/placeholder',[
          +  '../utils'
          +], function (Utils) {
          +  function Placeholder (decorated, $element, options) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
          +    var $placeholder = this.selectionContainer();
          +
          +    $placeholder.html(this.display(placeholder));
          +    $placeholder.addClass('select2-selection__placeholder')
          +                .removeClass('select2-selection__choice');
          +
          +    return $placeholder;
          +  };
          +
          +  Placeholder.prototype.update = function (decorated, data) {
          +    var singlePlaceholder = (
          +      data.length == 1 && data[0].id != this.placeholder.id
          +    );
          +    var multipleSelections = data.length > 1;
          +
          +    if (multipleSelections || singlePlaceholder) {
          +      return decorated.call(this, data);
          +    }
          +
          +    this.clear();
          +
          +    var $placeholder = this.createPlaceholder(this.placeholder);
          +
          +    this.$selection.find('.select2-selection__rendered').append($placeholder);
          +  };
          +
          +  return Placeholder;
          +});
          +
          +S2.define('select2/selection/allowClear',[
          +  'jquery',
          +  '../keys'
          +], function ($, KEYS) {
          +  function AllowClear () { }
          +
          +  AllowClear.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    if (this.placeholder == null) {
          +      if (this.options.get('debug') && window.console && console.error) {
          +        console.error(
          +          'Select2: The `allowClear` option should be used in combination ' +
          +          'with the `placeholder` option.'
          +        );
          +      }
          +    }
          +
          +    this.$selection.on('mousedown', '.select2-selection__clear',
          +      function (evt) {
          +        self._handleClear(evt);
          +    });
          +
          +    container.on('keypress', function (evt) {
          +      self._handleKeyboardClear(evt, container);
          +    });
          +  };
          +
          +  AllowClear.prototype._handleClear = function (_, evt) {
          +    // Ignore the event if it is disabled
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    var $clear = this.$selection.find('.select2-selection__clear');
          +
          +    // Ignore the event if nothing has been selected
          +    if ($clear.length === 0) {
          +      return;
          +    }
          +
          +    evt.stopPropagation();
          +
          +    var data = $clear.data('data');
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var unselectData = {
          +        data: data[d]
          +      };
          +
          +      // Trigger the `unselect` event, so people can prevent it from being
          +      // cleared.
          +      this.trigger('unselect', unselectData);
          +
          +      // If the event was prevented, don't clear it out.
          +      if (unselectData.prevented) {
          +        return;
          +      }
          +    }
          +
          +    this.$element.val(this.placeholder.id).trigger('change');
          +
          +    this.trigger('toggle', {});
          +  };
          +
          +  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
          +    if (container.isOpen()) {
          +      return;
          +    }
          +
          +    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
          +      this._handleClear(evt);
          +    }
          +  };
          +
          +  AllowClear.prototype.update = function (decorated, data) {
          +    decorated.call(this, data);
          +
          +    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
          +        data.length === 0) {
          +      return;
          +    }
          +
          +    var $remove = $(
          +      '<span class="select2-selection__clear">' +
          +        '&times;' +
          +      '</span>'
          +    );
          +    $remove.data('data', data);
          +
          +    this.$selection.find('.select2-selection__rendered').prepend($remove);
          +  };
          +
          +  return AllowClear;
          +});
          +
          +S2.define('select2/selection/search',[
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function Search (decorated, $element, options) {
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $search = $(
          +      '<li class="select2-search select2-search--inline">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
          +      '</li>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    var $rendered = decorated.call(this);
          +
          +    this._transferTabIndex();
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.val('');
          +      self.$search.removeAttr('aria-activedescendant');
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('enable', function () {
          +      self.$search.prop('disabled', false);
          +
          +      self._transferTabIndex();
          +    });
          +
          +    container.on('disable', function () {
          +      self.$search.prop('disabled', true);
          +    });
          +
          +    container.on('focus', function (evt) {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$search.attr('aria-activedescendant', params.id);
          +    });
          +
          +    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
          +      evt.stopPropagation();
          +
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +
          +      var key = evt.which;
          +
          +      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
          +        var $previousChoice = self.$searchContainer
          +          .prev('.select2-selection__choice');
          +
          +        if ($previousChoice.length > 0) {
          +          var item = $previousChoice.data('data');
          +
          +          self.searchRemoveChoice(item);
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +
          +    // Try to detect the IE version should the `documentMode` property that
          +    // is stored on the document. This is only implemented in IE and is
          +    // slightly cleaner than doing a user agent check.
          +    // This property is not available in Edge, but Edge also doesn't have
          +    // this bug.
          +    var msie = document.documentMode;
          +    var disableInputEvents = msie && msie <= 11;
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$selection.on(
          +      'input.searchcheck',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents) {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        // Unbind the duplicated `keyup` event
          +        self.$selection.off('keyup.search');
          +      }
          +    );
          +
          +    this.$selection.on(
          +      'keyup.search input.search',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents && evt.type === 'input') {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        var key = evt.which;
          +
          +        // We can freely ignore events from modifier keys
          +        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
          +          return;
          +        }
          +
          +        // Tabbing will be handled during the `keydown` phase
          +        if (key == KEYS.TAB) {
          +          return;
          +        }
          +
          +        self.handleSearch(evt);
          +      }
          +    );
          +  };
          +
          +  /**
          +   * This method will transfer the tabindex attribute from the rendered
          +   * selection to the search box. This allows for the search box to be used as
          +   * the primary focus instead of the selection container.
          +   *
          +   * @private
          +   */
          +  Search.prototype._transferTabIndex = function (decorated) {
          +    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
          +    this.$selection.attr('tabindex', '-1');
          +  };
          +
          +  Search.prototype.createPlaceholder = function (decorated, placeholder) {
          +    this.$search.attr('placeholder', placeholder.text);
          +  };
          +
          +  Search.prototype.update = function (decorated, data) {
          +    var searchHadFocus = this.$search[0] == document.activeElement;
          +
          +    this.$search.attr('placeholder', '');
          +
          +    decorated.call(this, data);
          +
          +    this.$selection.find('.select2-selection__rendered')
          +                   .append(this.$searchContainer);
          +
          +    this.resizeSearch();
          +    if (searchHadFocus) {
          +      this.$search.focus();
          +    }
          +  };
          +
          +  Search.prototype.handleSearch = function () {
          +    this.resizeSearch();
          +
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.searchRemoveChoice = function (decorated, item) {
          +    this.trigger('unselect', {
          +      data: item
          +    });
          +
          +    this.$search.val(item.text);
          +    this.handleSearch();
          +  };
          +
          +  Search.prototype.resizeSearch = function () {
          +    this.$search.css('width', '25px');
          +
          +    var width = '';
          +
          +    if (this.$search.attr('placeholder') !== '') {
          +      width = this.$selection.find('.select2-selection__rendered').innerWidth();
          +    } else {
          +      var minimumWidth = this.$search.val().length + 1;
          +
          +      width = (minimumWidth * 0.75) + 'em';
          +    }
          +
          +    this.$search.css('width', width);
          +  };
          +
          +  return Search;
          +});
          +
          +S2.define('select2/selection/eventRelay',[
          +  'jquery'
          +], function ($) {
          +  function EventRelay () { }
          +
          +  EventRelay.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +    var relayEvents = [
          +      'open', 'opening',
          +      'close', 'closing',
          +      'select', 'selecting',
          +      'unselect', 'unselecting'
          +    ];
          +
          +    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('*', function (name, params) {
          +      // Ignore events that should not be relayed
          +      if ($.inArray(name, relayEvents) === -1) {
          +        return;
          +      }
          +
          +      // The parameters should always be an object
          +      params = params || {};
          +
          +      // Generate the jQuery event for the Select2 event
          +      var evt = $.Event('select2:' + name, {
          +        params: params
          +      });
          +
          +      self.$element.trigger(evt);
          +
          +      // Only handle preventable events if it was one
          +      if ($.inArray(name, preventableEvents) === -1) {
          +        return;
          +      }
          +
          +      params.prevented = evt.isDefaultPrevented();
          +    });
          +  };
          +
          +  return EventRelay;
          +});
          +
          +S2.define('select2/translation',[
          +  'jquery',
          +  'require'
          +], function ($, require) {
          +  function Translation (dict) {
          +    this.dict = dict || {};
          +  }
          +
          +  Translation.prototype.all = function () {
          +    return this.dict;
          +  };
          +
          +  Translation.prototype.get = function (key) {
          +    return this.dict[key];
          +  };
          +
          +  Translation.prototype.extend = function (translation) {
          +    this.dict = $.extend({}, translation.all(), this.dict);
          +  };
          +
          +  // Static functions
          +
          +  Translation._cache = {};
          +
          +  Translation.loadPath = function (path) {
          +    if (!(path in Translation._cache)) {
          +      var translations = require(path);
          +
          +      Translation._cache[path] = translations;
          +    }
          +
          +    return new Translation(Translation._cache[path]);
          +  };
          +
          +  return Translation;
          +});
          +
          +S2.define('select2/diacritics',[
          +
          +], function () {
          +  var 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',
          +    '\u0386': '\u0391',
          +    '\u0388': '\u0395',
          +    '\u0389': '\u0397',
          +    '\u038A': '\u0399',
          +    '\u03AA': '\u0399',
          +    '\u038C': '\u039F',
          +    '\u038E': '\u03A5',
          +    '\u03AB': '\u03A5',
          +    '\u038F': '\u03A9',
          +    '\u03AC': '\u03B1',
          +    '\u03AD': '\u03B5',
          +    '\u03AE': '\u03B7',
          +    '\u03AF': '\u03B9',
          +    '\u03CA': '\u03B9',
          +    '\u0390': '\u03B9',
          +    '\u03CC': '\u03BF',
          +    '\u03CD': '\u03C5',
          +    '\u03CB': '\u03C5',
          +    '\u03B0': '\u03C5',
          +    '\u03C9': '\u03C9',
          +    '\u03C2': '\u03C3'
          +  };
          +
          +  return diacritics;
          +});
          +
          +S2.define('select2/data/base',[
          +  '../utils'
          +], function (Utils) {
          +  function BaseAdapter ($element, options) {
          +    BaseAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseAdapter, Utils.Observable);
          +
          +  BaseAdapter.prototype.current = function (callback) {
          +    throw new Error('The `current` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.query = function (params, callback) {
          +    throw new Error('The `query` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.bind = function (container, $container) {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.destroy = function () {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.generateResultId = function (container, data) {
          +    var id = container.id + '-result-';
          +
          +    id += Utils.generateChars(4);
          +
          +    if (data.id != null) {
          +      id += '-' + data.id.toString();
          +    } else {
          +      id += '-' + Utils.generateChars(4);
          +    }
          +    return id;
          +  };
          +
          +  return BaseAdapter;
          +});
          +
          +S2.define('select2/data/select',[
          +  './base',
          +  '../utils',
          +  'jquery'
          +], function (BaseAdapter, Utils, $) {
          +  function SelectAdapter ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    SelectAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(SelectAdapter, BaseAdapter);
          +
          +  SelectAdapter.prototype.current = function (callback) {
          +    var data = [];
          +    var self = this;
          +
          +    this.$element.find(':selected').each(function () {
          +      var $option = $(this);
          +
          +      var option = self.item($option);
          +
          +      data.push(option);
          +    });
          +
          +    callback(data);
          +  };
          +
          +  SelectAdapter.prototype.select = function (data) {
          +    var self = this;
          +
          +    data.selected = true;
          +
          +    // If data.element is a DOM node, use it instead
          +    if ($(data.element).is('option')) {
          +      data.element.selected = true;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    if (this.$element.prop('multiple')) {
          +      this.current(function (currentData) {
          +        var val = [];
          +
          +        data = [data];
          +        data.push.apply(data, currentData);
          +
          +        for (var d = 0; d < data.length; d++) {
          +          var id = data[d].id;
          +
          +          if ($.inArray(id, val) === -1) {
          +            val.push(id);
          +          }
          +        }
          +
          +        self.$element.val(val);
          +        self.$element.trigger('change');
          +      });
          +    } else {
          +      var val = data.id;
          +
          +      this.$element.val(val);
          +      this.$element.trigger('change');
          +    }
          +  };
          +
          +  SelectAdapter.prototype.unselect = function (data) {
          +    var self = this;
          +
          +    if (!this.$element.prop('multiple')) {
          +      return;
          +    }
          +
          +    data.selected = false;
          +
          +    if ($(data.element).is('option')) {
          +      data.element.selected = false;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    this.current(function (currentData) {
          +      var val = [];
          +
          +      for (var d = 0; d < currentData.length; d++) {
          +        var id = currentData[d].id;
          +
          +        if (id !== data.id && $.inArray(id, val) === -1) {
          +          val.push(id);
          +        }
          +      }
          +
          +      self.$element.val(val);
          +
          +      self.$element.trigger('change');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    this.container = container;
          +
          +    container.on('select', function (params) {
          +      self.select(params.data);
          +    });
          +
          +    container.on('unselect', function (params) {
          +      self.unselect(params.data);
          +    });
          +  };
          +
          +  SelectAdapter.prototype.destroy = function () {
          +    // Remove anything added to child elements
          +    this.$element.find('*').each(function () {
          +      // Remove any custom data set by Select2
          +      $.removeData(this, 'data');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.query = function (params, callback) {
          +    var data = [];
          +    var self = this;
          +
          +    var $options = this.$element.children();
          +
          +    $options.each(function () {
          +      var $option = $(this);
          +
          +      if (!$option.is('option') && !$option.is('optgroup')) {
          +        return;
          +      }
          +
          +      var option = self.item($option);
          +
          +      var matches = self.matches(params, option);
          +
          +      if (matches !== null) {
          +        data.push(matches);
          +      }
          +    });
          +
          +    callback({
          +      results: data
          +    });
          +  };
          +
          +  SelectAdapter.prototype.addOptions = function ($options) {
          +    Utils.appendMany(this.$element, $options);
          +  };
          +
          +  SelectAdapter.prototype.option = function (data) {
          +    var option;
          +
          +    if (data.children) {
          +      option = document.createElement('optgroup');
          +      option.label = data.text;
          +    } else {
          +      option = document.createElement('option');
          +
          +      if (option.textContent !== undefined) {
          +        option.textContent = data.text;
          +      } else {
          +        option.innerText = data.text;
          +      }
          +    }
          +
          +    if (data.id) {
          +      option.value = data.id;
          +    }
          +
          +    if (data.disabled) {
          +      option.disabled = true;
          +    }
          +
          +    if (data.selected) {
          +      option.selected = true;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    var $option = $(option);
          +
          +    var normalizedData = this._normalizeItem(data);
          +    normalizedData.element = option;
          +
          +    // Override the option's data with the combined data
          +    $.data(option, 'data', normalizedData);
          +
          +    return $option;
          +  };
          +
          +  SelectAdapter.prototype.item = function ($option) {
          +    var data = {};
          +
          +    data = $.data($option[0], 'data');
          +
          +    if (data != null) {
          +      return data;
          +    }
          +
          +    if ($option.is('option')) {
          +      data = {
          +        id: $option.val(),
          +        text: $option.text(),
          +        disabled: $option.prop('disabled'),
          +        selected: $option.prop('selected'),
          +        title: $option.prop('title')
          +      };
          +    } else if ($option.is('optgroup')) {
          +      data = {
          +        text: $option.prop('label'),
          +        children: [],
          +        title: $option.prop('title')
          +      };
          +
          +      var $children = $option.children('option');
          +      var children = [];
          +
          +      for (var c = 0; c < $children.length; c++) {
          +        var $child = $($children[c]);
          +
          +        var child = this.item($child);
          +
          +        children.push(child);
          +      }
          +
          +      data.children = children;
          +    }
          +
          +    data = this._normalizeItem(data);
          +    data.element = $option[0];
          +
          +    $.data($option[0], 'data', data);
          +
          +    return data;
          +  };
          +
          +  SelectAdapter.prototype._normalizeItem = function (item) {
          +    if (!$.isPlainObject(item)) {
          +      item = {
          +        id: item,
          +        text: item
          +      };
          +    }
          +
          +    item = $.extend({}, {
          +      text: ''
          +    }, item);
          +
          +    var defaults = {
          +      selected: false,
          +      disabled: false
          +    };
          +
          +    if (item.id != null) {
          +      item.id = item.id.toString();
          +    }
          +
          +    if (item.text != null) {
          +      item.text = item.text.toString();
          +    }
          +
          +    if (item._resultId == null && item.id && this.container != null) {
          +      item._resultId = this.generateResultId(this.container, item);
          +    }
          +
          +    return $.extend({}, defaults, item);
          +  };
          +
          +  SelectAdapter.prototype.matches = function (params, data) {
          +    var matcher = this.options.get('matcher');
          +
          +    return matcher(params, data);
          +  };
          +
          +  return SelectAdapter;
          +});
          +
          +S2.define('select2/data/array',[
          +  './select',
          +  '../utils',
          +  'jquery'
          +], function (SelectAdapter, Utils, $) {
          +  function ArrayAdapter ($element, options) {
          +    var data = options.get('data') || [];
          +
          +    ArrayAdapter.__super__.constructor.call(this, $element, options);
          +
          +    this.addOptions(this.convertToOptions(data));
          +  }
          +
          +  Utils.Extend(ArrayAdapter, SelectAdapter);
          +
          +  ArrayAdapter.prototype.select = function (data) {
          +    var $option = this.$element.find('option').filter(function (i, elm) {
          +      return elm.value == data.id.toString();
          +    });
          +
          +    if ($option.length === 0) {
          +      $option = this.option(data);
          +
          +      this.addOptions($option);
          +    }
          +
          +    ArrayAdapter.__super__.select.call(this, data);
          +  };
          +
          +  ArrayAdapter.prototype.convertToOptions = function (data) {
          +    var self = this;
          +
          +    var $existing = this.$element.find('option');
          +    var existingIds = $existing.map(function () {
          +      return self.item($(this)).id;
          +    }).get();
          +
          +    var $options = [];
          +
          +    // Filter out all items except for the one passed in the argument
          +    function onlyItem (item) {
          +      return function () {
          +        return $(this).val() == item.id;
          +      };
          +    }
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = this._normalizeItem(data[d]);
          +
          +      // Skip items which were pre-loaded, only merge the data
          +      if ($.inArray(item.id, existingIds) >= 0) {
          +        var $existingOption = $existing.filter(onlyItem(item));
          +
          +        var existingData = this.item($existingOption);
          +        var newData = $.extend(true, {}, item, existingData);
          +
          +        var $newOption = this.option(newData);
          +
          +        $existingOption.replaceWith($newOption);
          +
          +        continue;
          +      }
          +
          +      var $option = this.option(item);
          +
          +      if (item.children) {
          +        var $children = this.convertToOptions(item.children);
          +
          +        Utils.appendMany($option, $children);
          +      }
          +
          +      $options.push($option);
          +    }
          +
          +    return $options;
          +  };
          +
          +  return ArrayAdapter;
          +});
          +
          +S2.define('select2/data/ajax',[
          +  './array',
          +  '../utils',
          +  'jquery'
          +], function (ArrayAdapter, Utils, $) {
          +  function AjaxAdapter ($element, options) {
          +    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
          +
          +    if (this.ajaxOptions.processResults != null) {
          +      this.processResults = this.ajaxOptions.processResults;
          +    }
          +
          +    AjaxAdapter.__super__.constructor.call(this, $element, options);
          +  }
          +
          +  Utils.Extend(AjaxAdapter, ArrayAdapter);
          +
          +  AjaxAdapter.prototype._applyDefaults = function (options) {
          +    var defaults = {
          +      data: function (params) {
          +        return $.extend({}, params, {
          +          q: params.term
          +        });
          +      },
          +      transport: function (params, success, failure) {
          +        var $request = $.ajax(params);
          +
          +        $request.then(success);
          +        $request.fail(failure);
          +
          +        return $request;
          +      }
          +    };
          +
          +    return $.extend({}, defaults, options, true);
          +  };
          +
          +  AjaxAdapter.prototype.processResults = function (results) {
          +    return results;
          +  };
          +
          +  AjaxAdapter.prototype.query = function (params, callback) {
          +    var matches = [];
          +    var self = this;
          +
          +    if (this._request != null) {
          +      // JSONP requests cannot always be aborted
          +      if ($.isFunction(this._request.abort)) {
          +        this._request.abort();
          +      }
          +
          +      this._request = null;
          +    }
          +
          +    var options = $.extend({
          +      type: 'GET'
          +    }, this.ajaxOptions);
          +
          +    if (typeof options.url === 'function') {
          +      options.url = options.url.call(this.$element, params);
          +    }
          +
          +    if (typeof options.data === 'function') {
          +      options.data = options.data.call(this.$element, params);
          +    }
          +
          +    function request () {
          +      var $request = options.transport(options, function (data) {
          +        var results = self.processResults(data, params);
          +
          +        if (self.options.get('debug') && window.console && console.error) {
          +          // Check to make sure that the response included a `results` key.
          +          if (!results || !results.results || !$.isArray(results.results)) {
          +            console.error(
          +              'Select2: The AJAX results did not return an array in the ' +
          +              '`results` key of the response.'
          +            );
          +          }
          +        }
          +
          +        callback(results);
          +      }, function () {
          +        // Attempt to detect if a request was aborted
          +        // Only works if the transport exposes a status property
          +        if ($request.status && $request.status === '0') {
          +          return;
          +        }
          +
          +        self.trigger('results:message', {
          +          message: 'errorLoading'
          +        });
          +      });
          +
          +      self._request = $request;
          +    }
          +
          +    if (this.ajaxOptions.delay && params.term != null) {
          +      if (this._queryTimeout) {
          +        window.clearTimeout(this._queryTimeout);
          +      }
          +
          +      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
          +    } else {
          +      request();
          +    }
          +  };
          +
          +  return AjaxAdapter;
          +});
          +
          +S2.define('select2/data/tags',[
          +  'jquery'
          +], function ($) {
          +  function Tags (decorated, $element, options) {
          +    var tags = options.get('tags');
          +
          +    var createTag = options.get('createTag');
          +
          +    if (createTag !== undefined) {
          +      this.createTag = createTag;
          +    }
          +
          +    var insertTag = options.get('insertTag');
          +
          +    if (insertTag !== undefined) {
          +        this.insertTag = insertTag;
          +    }
          +
          +    decorated.call(this, $element, options);
          +
          +    if ($.isArray(tags)) {
          +      for (var t = 0; t < tags.length; t++) {
          +        var tag = tags[t];
          +        var item = this._normalizeItem(tag);
          +
          +        var $option = this.option(item);
          +
          +        this.$element.append($option);
          +      }
          +    }
          +  }
          +
          +  Tags.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    this._removeOldTags();
          +
          +    if (params.term == null || params.page != null) {
          +      decorated.call(this, params, callback);
          +      return;
          +    }
          +
          +    function wrapper (obj, child) {
          +      var data = obj.results;
          +
          +      for (var i = 0; i < data.length; i++) {
          +        var option = data[i];
          +
          +        var checkChildren = (
          +          option.children != null &&
          +          !wrapper({
          +            results: option.children
          +          }, true)
          +        );
          +
          +        var checkText = option.text === params.term;
          +
          +        if (checkText || checkChildren) {
          +          if (child) {
          +            return false;
          +          }
          +
          +          obj.data = data;
          +          callback(obj);
          +
          +          return;
          +        }
          +      }
          +
          +      if (child) {
          +        return true;
          +      }
          +
          +      var tag = self.createTag(params);
          +
          +      if (tag != null) {
          +        var $option = self.option(tag);
          +        $option.attr('data-select2-tag', true);
          +
          +        self.addOptions([$option]);
          +
          +        self.insertTag(data, tag);
          +      }
          +
          +      obj.results = data;
          +
          +      callback(obj);
          +    }
          +
          +    decorated.call(this, params, wrapper);
          +  };
          +
          +  Tags.prototype.createTag = function (decorated, params) {
          +    var term = $.trim(params.term);
          +
          +    if (term === '') {
          +      return null;
          +    }
          +
          +    return {
          +      id: term,
          +      text: term
          +    };
          +  };
          +
          +  Tags.prototype.insertTag = function (_, data, tag) {
          +    data.unshift(tag);
          +  };
          +
          +  Tags.prototype._removeOldTags = function (_) {
          +    var tag = this._lastTag;
          +
          +    var $options = this.$element.find('option[data-select2-tag]');
          +
          +    $options.each(function () {
          +      if (this.selected) {
          +        return;
          +      }
          +
          +      $(this).remove();
          +    });
          +  };
          +
          +  return Tags;
          +});
          +
          +S2.define('select2/data/tokenizer',[
          +  'jquery'
          +], function ($) {
          +  function Tokenizer (decorated, $element, options) {
          +    var tokenizer = options.get('tokenizer');
          +
          +    if (tokenizer !== undefined) {
          +      this.tokenizer = tokenizer;
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Tokenizer.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    this.$search =  container.dropdown.$search || container.selection.$search ||
          +      $container.find('.select2-search__field');
          +  };
          +
          +  Tokenizer.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    function createAndSelect (data) {
          +      // Normalize the data object so we can use it for checks
          +      var item = self._normalizeItem(data);
          +
          +      // Check if the data object already exists as a tag
          +      // Select it if it doesn't
          +      var $existingOptions = self.$element.find('option').filter(function () {
          +        return $(this).val() === item.id;
          +      });
          +
          +      // If an existing option wasn't found for it, create the option
          +      if (!$existingOptions.length) {
          +        var $option = self.option(item);
          +        $option.attr('data-select2-tag', true);
          +
          +        self._removeOldTags();
          +        self.addOptions([$option]);
          +      }
          +
          +      // Select the item, now that we know there is an option for it
          +      select(item);
          +    }
          +
          +    function select (data) {
          +      self.trigger('select', {
          +        data: data
          +      });
          +    }
          +
          +    params.term = params.term || '';
          +
          +    var tokenData = this.tokenizer(params, this.options, createAndSelect);
          +
          +    if (tokenData.term !== params.term) {
          +      // Replace the search term if we have the search box
          +      if (this.$search.length) {
          +        this.$search.val(tokenData.term);
          +        this.$search.focus();
          +      }
          +
          +      params.term = tokenData.term;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
          +    var separators = options.get('tokenSeparators') || [];
          +    var term = params.term;
          +    var i = 0;
          +
          +    var createTag = this.createTag || function (params) {
          +      return {
          +        id: params.term,
          +        text: params.term
          +      };
          +    };
          +
          +    while (i < term.length) {
          +      var termChar = term[i];
          +
          +      if ($.inArray(termChar, separators) === -1) {
          +        i++;
          +
          +        continue;
          +      }
          +
          +      var part = term.substr(0, i);
          +      var partParams = $.extend({}, params, {
          +        term: part
          +      });
          +
          +      var data = createTag(partParams);
          +
          +      if (data == null) {
          +        i++;
          +        continue;
          +      }
          +
          +      callback(data);
          +
          +      // Reset the term to not include the tokenized portion
          +      term = term.substr(i + 1) || '';
          +      i = 0;
          +    }
          +
          +    return {
          +      term: term
          +    };
          +  };
          +
          +  return Tokenizer;
          +});
          +
          +S2.define('select2/data/minimumInputLength',[
          +
          +], function () {
          +  function MinimumInputLength (decorated, $e, options) {
          +    this.minimumInputLength = options.get('minimumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MinimumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (params.term.length < this.minimumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooShort',
          +        args: {
          +          minimum: this.minimumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MinimumInputLength;
          +});
          +
          +S2.define('select2/data/maximumInputLength',[
          +
          +], function () {
          +  function MaximumInputLength (decorated, $e, options) {
          +    this.maximumInputLength = options.get('maximumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (this.maximumInputLength > 0 &&
          +        params.term.length > this.maximumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooLong',
          +        args: {
          +          maximum: this.maximumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MaximumInputLength;
          +});
          +
          +S2.define('select2/data/maximumSelectionLength',[
          +
          +], function (){
          +  function MaximumSelectionLength (decorated, $e, options) {
          +    this.maximumSelectionLength = options.get('maximumSelectionLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumSelectionLength.prototype.query =
          +    function (decorated, params, callback) {
          +      var self = this;
          +
          +      this.current(function (currentData) {
          +        var count = currentData != null ? currentData.length : 0;
          +        if (self.maximumSelectionLength > 0 &&
          +          count >= self.maximumSelectionLength) {
          +          self.trigger('results:message', {
          +            message: 'maximumSelected',
          +            args: {
          +              maximum: self.maximumSelectionLength
          +            }
          +          });
          +          return;
          +        }
          +        decorated.call(self, params, callback);
          +      });
          +  };
          +
          +  return MaximumSelectionLength;
          +});
          +
          +S2.define('select2/dropdown',[
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Dropdown ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    Dropdown.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Dropdown, Utils.Observable);
          +
          +  Dropdown.prototype.render = function () {
          +    var $dropdown = $(
          +      '<span class="select2-dropdown">' +
          +        '<span class="select2-results"></span>' +
          +      '</span>'
          +    );
          +
          +    $dropdown.attr('dir', this.options.get('dir'));
          +
          +    this.$dropdown = $dropdown;
          +
          +    return $dropdown;
          +  };
          +
          +  Dropdown.prototype.bind = function () {
          +    // Should be implemented in subclasses
          +  };
          +
          +  Dropdown.prototype.position = function ($dropdown, $container) {
          +    // Should be implmented in subclasses
          +  };
          +
          +  Dropdown.prototype.destroy = function () {
          +    // Remove the dropdown from the DOM
          +    this.$dropdown.remove();
          +  };
          +
          +  return Dropdown;
          +});
          +
          +S2.define('select2/dropdown/search',[
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function Search () { }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $rendered = decorated.call(this);
          +
          +    var $search = $(
          +      '<span class="select2-search select2-search--dropdown">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" />' +
          +      '</span>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    $rendered.prepend($search);
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    this.$search.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +    });
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$search.on('input', function (evt) {
          +      // Unbind the duplicated `keyup` event
          +      $(this).off('keyup');
          +    });
          +
          +    this.$search.on('keyup input', function (evt) {
          +      self.handleSearch(evt);
          +    });
          +
          +    container.on('open', function () {
          +      self.$search.attr('tabindex', 0);
          +
          +      self.$search.focus();
          +
          +      window.setTimeout(function () {
          +        self.$search.focus();
          +      }, 0);
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.attr('tabindex', -1);
          +
          +      self.$search.val('');
          +    });
          +
          +    container.on('focus', function () {
          +      if (container.isOpen()) {
          +        self.$search.focus();
          +      }
          +    });
          +
          +    container.on('results:all', function (params) {
          +      if (params.query.term == null || params.query.term === '') {
          +        var showSearch = self.showSearch(params);
          +
          +        if (showSearch) {
          +          self.$searchContainer.removeClass('select2-search--hide');
          +        } else {
          +          self.$searchContainer.addClass('select2-search--hide');
          +        }
          +      }
          +    });
          +  };
          +
          +  Search.prototype.handleSearch = function (evt) {
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.showSearch = function (_, params) {
          +    return true;
          +  };
          +
          +  return Search;
          +});
          +
          +S2.define('select2/dropdown/hidePlaceholder',[
          +
          +], function () {
          +  function HidePlaceholder (decorated, $element, options, dataAdapter) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  HidePlaceholder.prototype.append = function (decorated, data) {
          +    data.results = this.removePlaceholder(data.results);
          +
          +    decorated.call(this, data);
          +  };
          +
          +  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
          +    var modifiedData = data.slice(0);
          +
          +    for (var d = data.length - 1; d >= 0; d--) {
          +      var item = data[d];
          +
          +      if (this.placeholder.id === item.id) {
          +        modifiedData.splice(d, 1);
          +      }
          +    }
          +
          +    return modifiedData;
          +  };
          +
          +  return HidePlaceholder;
          +});
          +
          +S2.define('select2/dropdown/infiniteScroll',[
          +  'jquery'
          +], function ($) {
          +  function InfiniteScroll (decorated, $element, options, dataAdapter) {
          +    this.lastParams = {};
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +
          +    this.$loadingMore = this.createLoadingMore();
          +    this.loading = false;
          +  }
          +
          +  InfiniteScroll.prototype.append = function (decorated, data) {
          +    this.$loadingMore.remove();
          +    this.loading = false;
          +
          +    decorated.call(this, data);
          +
          +    if (this.showLoadingMore(data)) {
          +      this.$results.append(this.$loadingMore);
          +    }
          +  };
          +
          +  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('query', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    container.on('query:append', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    this.$results.on('scroll', function () {
          +      var isLoadMoreVisible = $.contains(
          +        document.documentElement,
          +        self.$loadingMore[0]
          +      );
          +
          +      if (self.loading || !isLoadMoreVisible) {
          +        return;
          +      }
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var loadingMoreOffset = self.$loadingMore.offset().top +
          +        self.$loadingMore.outerHeight(false);
          +
          +      if (currentOffset + 50 >= loadingMoreOffset) {
          +        self.loadMore();
          +      }
          +    });
          +  };
          +
          +  InfiniteScroll.prototype.loadMore = function () {
          +    this.loading = true;
          +
          +    var params = $.extend({}, {page: 1}, this.lastParams);
          +
          +    params.page++;
          +
          +    this.trigger('query:append', params);
          +  };
          +
          +  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
          +    return data.pagination && data.pagination.more;
          +  };
          +
          +  InfiniteScroll.prototype.createLoadingMore = function () {
          +    var $option = $(
          +      '<li ' +
          +      'class="select2-results__option select2-results__option--load-more"' +
          +      'role="treeitem" aria-disabled="true"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get('loadingMore');
          +
          +    $option.html(message(this.lastParams));
          +
          +    return $option;
          +  };
          +
          +  return InfiniteScroll;
          +});
          +
          +S2.define('select2/dropdown/attachBody',[
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function AttachBody (decorated, $element, options) {
          +    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  AttachBody.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    var setupResultsEvents = false;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self._showDropdown();
          +      self._attachPositioningHandler(container);
          +
          +      if (!setupResultsEvents) {
          +        setupResultsEvents = true;
          +
          +        container.on('results:all', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +
          +        container.on('results:append', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +      }
          +    });
          +
          +    container.on('close', function () {
          +      self._hideDropdown();
          +      self._detachPositioningHandler(container);
          +    });
          +
          +    this.$dropdownContainer.on('mousedown', function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  AttachBody.prototype.destroy = function (decorated) {
          +    decorated.call(this);
          +
          +    this.$dropdownContainer.remove();
          +  };
          +
          +  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
          +    // Clone all of the container classes
          +    $dropdown.attr('class', $container.attr('class'));
          +
          +    $dropdown.removeClass('select2');
          +    $dropdown.addClass('select2-container--open');
          +
          +    $dropdown.css({
          +      position: 'absolute',
          +      top: -999999
          +    });
          +
          +    this.$container = $container;
          +  };
          +
          +  AttachBody.prototype.render = function (decorated) {
          +    var $container = $('<span></span>');
          +
          +    var $dropdown = decorated.call(this);
          +    $container.append($dropdown);
          +
          +    this.$dropdownContainer = $container;
          +
          +    return $container;
          +  };
          +
          +  AttachBody.prototype._hideDropdown = function (decorated) {
          +    this.$dropdownContainer.detach();
          +  };
          +
          +  AttachBody.prototype._attachPositioningHandler =
          +      function (decorated, container) {
          +    var self = this;
          +
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.each(function () {
          +      $(this).data('select2-scroll-position', {
          +        x: $(this).scrollLeft(),
          +        y: $(this).scrollTop()
          +      });
          +    });
          +
          +    $watchers.on(scrollEvent, function (ev) {
          +      var position = $(this).data('select2-scroll-position');
          +      $(this).scrollTop(position.y);
          +    });
          +
          +    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
          +      function (e) {
          +      self._positionDropdown();
          +      self._resizeDropdown();
          +    });
          +  };
          +
          +  AttachBody.prototype._detachPositioningHandler =
          +      function (decorated, container) {
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.off(scrollEvent);
          +
          +    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
          +  };
          +
          +  AttachBody.prototype._positionDropdown = function () {
          +    var $window = $(window);
          +
          +    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
          +    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
          +
          +    var newDirection = null;
          +
          +    var offset = this.$container.offset();
          +
          +    offset.bottom = offset.top + this.$container.outerHeight(false);
          +
          +    var container = {
          +      height: this.$container.outerHeight(false)
          +    };
          +
          +    container.top = offset.top;
          +    container.bottom = offset.top + container.height;
          +
          +    var dropdown = {
          +      height: this.$dropdown.outerHeight(false)
          +    };
          +
          +    var viewport = {
          +      top: $window.scrollTop(),
          +      bottom: $window.scrollTop() + $window.height()
          +    };
          +
          +    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
          +    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
          +
          +    var css = {
          +      left: offset.left,
          +      top: container.bottom
          +    };
          +
          +    // Determine what the parent element is to use for calciulating the offset
          +    var $offsetParent = this.$dropdownParent;
          +
          +    // For statically positoned elements, we need to get the element
          +    // that is determining the offset
          +    if ($offsetParent.css('position') === 'static') {
          +      $offsetParent = $offsetParent.offsetParent();
          +    }
          +
          +    var parentOffset = $offsetParent.offset();
          +
          +    css.top -= parentOffset.top;
          +    css.left -= parentOffset.left;
          +
          +    if (!isCurrentlyAbove && !isCurrentlyBelow) {
          +      newDirection = 'below';
          +    }
          +
          +    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
          +      newDirection = 'above';
          +    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
          +      newDirection = 'below';
          +    }
          +
          +    if (newDirection == 'above' ||
          +      (isCurrentlyAbove && newDirection !== 'below')) {
          +      css.top = container.top - parentOffset.top - dropdown.height;
          +    }
          +
          +    if (newDirection != null) {
          +      this.$dropdown
          +        .removeClass('select2-dropdown--below select2-dropdown--above')
          +        .addClass('select2-dropdown--' + newDirection);
          +      this.$container
          +        .removeClass('select2-container--below select2-container--above')
          +        .addClass('select2-container--' + newDirection);
          +    }
          +
          +    this.$dropdownContainer.css(css);
          +  };
          +
          +  AttachBody.prototype._resizeDropdown = function () {
          +    var css = {
          +      width: this.$container.outerWidth(false) + 'px'
          +    };
          +
          +    if (this.options.get('dropdownAutoWidth')) {
          +      css.minWidth = css.width;
          +      css.position = 'relative';
          +      css.width = 'auto';
          +    }
          +
          +    this.$dropdown.css(css);
          +  };
          +
          +  AttachBody.prototype._showDropdown = function (decorated) {
          +    this.$dropdownContainer.appendTo(this.$dropdownParent);
          +
          +    this._positionDropdown();
          +    this._resizeDropdown();
          +  };
          +
          +  return AttachBody;
          +});
          +
          +S2.define('select2/dropdown/minimumResultsForSearch',[
          +
          +], function () {
          +  function countResults (data) {
          +    var count = 0;
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = data[d];
          +
          +      if (item.children) {
          +        count += countResults(item.children);
          +      } else {
          +        count++;
          +      }
          +    }
          +
          +    return count;
          +  }
          +
          +  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
          +    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
          +
          +    if (this.minimumResultsForSearch < 0) {
          +      this.minimumResultsForSearch = Infinity;
          +    }
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
          +    if (countResults(params.data.results) < this.minimumResultsForSearch) {
          +      return false;
          +    }
          +
          +    return decorated.call(this, params);
          +  };
          +
          +  return MinimumResultsForSearch;
          +});
          +
          +S2.define('select2/dropdown/selectOnClose',[
          +
          +], function () {
          +  function SelectOnClose () { }
          +
          +  SelectOnClose.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('close', function (params) {
          +      self._handleSelectOnClose(params);
          +    });
          +  };
          +
          +  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
          +    if (params && params.originalSelect2Event != null) {
          +      var event = params.originalSelect2Event;
          +
          +      // Don't select an item if the close event was triggered from a select or
          +      // unselect event
          +      if (event._type === 'select' || event._type === 'unselect') {
          +        return;
          +      }
          +    }
          +
          +    var $highlightedResults = this.getHighlightedResults();
          +
          +    // Only select highlighted results
          +    if ($highlightedResults.length < 1) {
          +      return;
          +    }
          +
          +    var data = $highlightedResults.data('data');
          +
          +    // Don't re-select already selected resulte
          +    if (
          +      (data.element != null && data.element.selected) ||
          +      (data.element == null && data.selected)
          +    ) {
          +      return;
          +    }
          +
          +    this.trigger('select', {
          +        data: data
          +    });
          +  };
          +
          +  return SelectOnClose;
          +});
          +
          +S2.define('select2/dropdown/closeOnSelect',[
          +
          +], function () {
          +  function CloseOnSelect () { }
          +
          +  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('select', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +
          +    container.on('unselect', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +  };
          +
          +  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
          +    var originalEvent = evt.originalEvent;
          +
          +    // Don't close if the control key is being held
          +    if (originalEvent && originalEvent.ctrlKey) {
          +      return;
          +    }
          +
          +    this.trigger('close', {
          +      originalEvent: originalEvent,
          +      originalSelect2Event: evt
          +    });
          +  };
          +
          +  return CloseOnSelect;
          +});
          +
          +S2.define('select2/i18n/en',[],function () {
          +  // English
          +  return {
          +    errorLoading: function () {
          +      return 'The results could not be loaded.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Please delete ' + overChars + ' character';
          +
          +      if (overChars != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Please enter ' + remainingChars + ' or more characters';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Loading more results…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'You can only select ' + args.maximum + ' item';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'No results found';
          +    },
          +    searching: function () {
          +      return 'Searching…';
          +    }
          +  };
          +});
          +
          +S2.define('select2/defaults',[
          +  'jquery',
          +  'require',
          +
          +  './results',
          +
          +  './selection/single',
          +  './selection/multiple',
          +  './selection/placeholder',
          +  './selection/allowClear',
          +  './selection/search',
          +  './selection/eventRelay',
          +
          +  './utils',
          +  './translation',
          +  './diacritics',
          +
          +  './data/select',
          +  './data/array',
          +  './data/ajax',
          +  './data/tags',
          +  './data/tokenizer',
          +  './data/minimumInputLength',
          +  './data/maximumInputLength',
          +  './data/maximumSelectionLength',
          +
          +  './dropdown',
          +  './dropdown/search',
          +  './dropdown/hidePlaceholder',
          +  './dropdown/infiniteScroll',
          +  './dropdown/attachBody',
          +  './dropdown/minimumResultsForSearch',
          +  './dropdown/selectOnClose',
          +  './dropdown/closeOnSelect',
          +
          +  './i18n/en'
          +], function ($, require,
          +
          +             ResultsList,
          +
          +             SingleSelection, MultipleSelection, Placeholder, AllowClear,
          +             SelectionSearch, EventRelay,
          +
          +             Utils, Translation, DIACRITICS,
          +
          +             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
          +             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
          +
          +             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
          +             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
          +
          +             EnglishTranslation) {
          +  function Defaults () {
          +    this.reset();
          +  }
          +
          +  Defaults.prototype.apply = function (options) {
          +    options = $.extend(true, {}, this.defaults, options);
          +
          +    if (options.dataAdapter == null) {
          +      if (options.ajax != null) {
          +        options.dataAdapter = AjaxData;
          +      } else if (options.data != null) {
          +        options.dataAdapter = ArrayData;
          +      } else {
          +        options.dataAdapter = SelectData;
          +      }
          +
          +      if (options.minimumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MinimumInputLength
          +        );
          +      }
          +
          +      if (options.maximumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumInputLength
          +        );
          +      }
          +
          +      if (options.maximumSelectionLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumSelectionLength
          +        );
          +      }
          +
          +      if (options.tags) {
          +        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
          +      }
          +
          +      if (options.tokenSeparators != null || options.tokenizer != null) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Tokenizer
          +        );
          +      }
          +
          +      if (options.query != null) {
          +        var Query = require(options.amdBase + 'compat/query');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Query
          +        );
          +      }
          +
          +      if (options.initSelection != null) {
          +        var InitSelection = require(options.amdBase + 'compat/initSelection');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          InitSelection
          +        );
          +      }
          +    }
          +
          +    if (options.resultsAdapter == null) {
          +      options.resultsAdapter = ResultsList;
          +
          +      if (options.ajax != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          InfiniteScroll
          +        );
          +      }
          +
          +      if (options.placeholder != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          HidePlaceholder
          +        );
          +      }
          +
          +      if (options.selectOnClose) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          SelectOnClose
          +        );
          +      }
          +    }
          +
          +    if (options.dropdownAdapter == null) {
          +      if (options.multiple) {
          +        options.dropdownAdapter = Dropdown;
          +      } else {
          +        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
          +
          +        options.dropdownAdapter = SearchableDropdown;
          +      }
          +
          +      if (options.minimumResultsForSearch !== 0) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          MinimumResultsForSearch
          +        );
          +      }
          +
          +      if (options.closeOnSelect) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          CloseOnSelect
          +        );
          +      }
          +
          +      if (
          +        options.dropdownCssClass != null ||
          +        options.dropdownCss != null ||
          +        options.adaptDropdownCssClass != null
          +      ) {
          +        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
          +
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          DropdownCSS
          +        );
          +      }
          +
          +      options.dropdownAdapter = Utils.Decorate(
          +        options.dropdownAdapter,
          +        AttachBody
          +      );
          +    }
          +
          +    if (options.selectionAdapter == null) {
          +      if (options.multiple) {
          +        options.selectionAdapter = MultipleSelection;
          +      } else {
          +        options.selectionAdapter = SingleSelection;
          +      }
          +
          +      // Add the placeholder mixin if a placeholder was specified
          +      if (options.placeholder != null) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          Placeholder
          +        );
          +      }
          +
          +      if (options.allowClear) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          AllowClear
          +        );
          +      }
          +
          +      if (options.multiple) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          SelectionSearch
          +        );
          +      }
          +
          +      if (
          +        options.containerCssClass != null ||
          +        options.containerCss != null ||
          +        options.adaptContainerCssClass != null
          +      ) {
          +        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
          +
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          ContainerCSS
          +        );
          +      }
          +
          +      options.selectionAdapter = Utils.Decorate(
          +        options.selectionAdapter,
          +        EventRelay
          +      );
          +    }
          +
          +    if (typeof options.language === 'string') {
          +      // Check if the language is specified with a region
          +      if (options.language.indexOf('-') > 0) {
          +        // Extract the region information if it is included
          +        var languageParts = options.language.split('-');
          +        var baseLanguage = languageParts[0];
          +
          +        options.language = [options.language, baseLanguage];
          +      } else {
          +        options.language = [options.language];
          +      }
          +    }
          +
          +    if ($.isArray(options.language)) {
          +      var languages = new Translation();
          +      options.language.push('en');
          +
          +      var languageNames = options.language;
          +
          +      for (var l = 0; l < languageNames.length; l++) {
          +        var name = languageNames[l];
          +        var language = {};
          +
          +        try {
          +          // Try to load it with the original name
          +          language = Translation.loadPath(name);
          +        } catch (e) {
          +          try {
          +            // If we couldn't load it, check if it wasn't the full path
          +            name = this.defaults.amdLanguageBase + name;
          +            language = Translation.loadPath(name);
          +          } catch (ex) {
          +            // The translation could not be loaded at all. Sometimes this is
          +            // because of a configuration problem, other times this can be
          +            // because of how Select2 helps load all possible translation files.
          +            if (options.debug && window.console && console.warn) {
          +              console.warn(
          +                'Select2: The language file for "' + name + '" could not be ' +
          +                'automatically loaded. A fallback will be used instead.'
          +              );
          +            }
          +
          +            continue;
          +          }
          +        }
          +
          +        languages.extend(language);
          +      }
          +
          +      options.translations = languages;
          +    } else {
          +      var baseTranslation = Translation.loadPath(
          +        this.defaults.amdLanguageBase + 'en'
          +      );
          +      var customTranslation = new Translation(options.language);
          +
          +      customTranslation.extend(baseTranslation);
          +
          +      options.translations = customTranslation;
          +    }
          +
          +    return options;
          +  };
          +
          +  Defaults.prototype.reset = function () {
          +    function stripDiacritics (text) {
          +      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
          +      function match(a) {
          +        return DIACRITICS[a] || a;
          +      }
          +
          +      return text.replace(/[^\u0000-\u007E]/g, match);
          +    }
          +
          +    function matcher (params, data) {
          +      // Always return the object if there is nothing to compare
          +      if ($.trim(params.term) === '') {
          +        return data;
          +      }
          +
          +      // Do a recursive check for options with children
          +      if (data.children && data.children.length > 0) {
          +        // Clone the data object if there are children
          +        // This is required as we modify the object to remove any non-matches
          +        var match = $.extend(true, {}, data);
          +
          +        // Check each child of the option
          +        for (var c = data.children.length - 1; c >= 0; c--) {
          +          var child = data.children[c];
          +
          +          var matches = matcher(params, child);
          +
          +          // If there wasn't a match, remove the object in the array
          +          if (matches == null) {
          +            match.children.splice(c, 1);
          +          }
          +        }
          +
          +        // If any children matched, return the new object
          +        if (match.children.length > 0) {
          +          return match;
          +        }
          +
          +        // If there were no matching children, check just the plain object
          +        return matcher(params, match);
          +      }
          +
          +      var original = stripDiacritics(data.text).toUpperCase();
          +      var term = stripDiacritics(params.term).toUpperCase();
          +
          +      // Check if the text contains the term
          +      if (original.indexOf(term) > -1) {
          +        return data;
          +      }
          +
          +      // If it doesn't contain the term, don't return anything
          +      return null;
          +    }
          +
          +    this.defaults = {
          +      amdBase: './',
          +      amdLanguageBase: './i18n/',
          +      closeOnSelect: true,
          +      debug: false,
          +      dropdownAutoWidth: false,
          +      escapeMarkup: Utils.escapeMarkup,
          +      language: EnglishTranslation,
          +      matcher: matcher,
          +      minimumInputLength: 0,
          +      maximumInputLength: 0,
          +      maximumSelectionLength: 0,
          +      minimumResultsForSearch: 0,
          +      selectOnClose: false,
          +      sorter: function (data) {
          +        return data;
          +      },
          +      templateResult: function (result) {
          +        return result.text;
          +      },
          +      templateSelection: function (selection) {
          +        return selection.text;
          +      },
          +      theme: 'default',
          +      width: 'resolve'
          +    };
          +  };
          +
          +  Defaults.prototype.set = function (key, value) {
          +    var camelKey = $.camelCase(key);
          +
          +    var data = {};
          +    data[camelKey] = value;
          +
          +    var convertedData = Utils._convertData(data);
          +
          +    $.extend(this.defaults, convertedData);
          +  };
          +
          +  var defaults = new Defaults();
          +
          +  return defaults;
          +});
          +
          +S2.define('select2/options',[
          +  'require',
          +  'jquery',
          +  './defaults',
          +  './utils'
          +], function (require, $, Defaults, Utils) {
          +  function Options (options, $element) {
          +    this.options = options;
          +
          +    if ($element != null) {
          +      this.fromElement($element);
          +    }
          +
          +    this.options = Defaults.apply(this.options);
          +
          +    if ($element && $element.is('input')) {
          +      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
          +
          +      this.options.dataAdapter = Utils.Decorate(
          +        this.options.dataAdapter,
          +        InputCompat
          +      );
          +    }
          +  }
          +
          +  Options.prototype.fromElement = function ($e) {
          +    var excludedData = ['select2'];
          +
          +    if (this.options.multiple == null) {
          +      this.options.multiple = $e.prop('multiple');
          +    }
          +
          +    if (this.options.disabled == null) {
          +      this.options.disabled = $e.prop('disabled');
          +    }
          +
          +    if (this.options.language == null) {
          +      if ($e.prop('lang')) {
          +        this.options.language = $e.prop('lang').toLowerCase();
          +      } else if ($e.closest('[lang]').prop('lang')) {
          +        this.options.language = $e.closest('[lang]').prop('lang');
          +      }
          +    }
          +
          +    if (this.options.dir == null) {
          +      if ($e.prop('dir')) {
          +        this.options.dir = $e.prop('dir');
          +      } else if ($e.closest('[dir]').prop('dir')) {
          +        this.options.dir = $e.closest('[dir]').prop('dir');
          +      } else {
          +        this.options.dir = 'ltr';
          +      }
          +    }
          +
          +    $e.prop('disabled', this.options.disabled);
          +    $e.prop('multiple', this.options.multiple);
          +
          +    if ($e.data('select2Tags')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-select2-tags` attribute has been changed to ' +
          +          'use the `data-data` and `data-tags="true"` attributes and will be ' +
          +          'removed in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.data('data', $e.data('select2Tags'));
          +      $e.data('tags', true);
          +    }
          +
          +    if ($e.data('ajaxUrl')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-ajax-url` attribute has been changed to ' +
          +          '`data-ajax--url` and support for the old attribute will be removed' +
          +          ' in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.attr('ajax--url', $e.data('ajaxUrl'));
          +      $e.data('ajax--url', $e.data('ajaxUrl'));
          +    }
          +
          +    var dataset = {};
          +
          +    // Prefer the element's `dataset` attribute if it exists
          +    // jQuery 1.x does not correctly handle data attributes with multiple dashes
          +    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
          +      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
          +    } else {
          +      dataset = $e.data();
          +    }
          +
          +    var data = $.extend(true, {}, dataset);
          +
          +    data = Utils._convertData(data);
          +
          +    for (var key in data) {
          +      if ($.inArray(key, excludedData) > -1) {
          +        continue;
          +      }
          +
          +      if ($.isPlainObject(this.options[key])) {
          +        $.extend(this.options[key], data[key]);
          +      } else {
          +        this.options[key] = data[key];
          +      }
          +    }
          +
          +    return this;
          +  };
          +
          +  Options.prototype.get = function (key) {
          +    return this.options[key];
          +  };
          +
          +  Options.prototype.set = function (key, val) {
          +    this.options[key] = val;
          +  };
          +
          +  return Options;
          +});
          +
          +S2.define('select2/core',[
          +  'jquery',
          +  './options',
          +  './utils',
          +  './keys'
          +], function ($, Options, Utils, KEYS) {
          +  var Select2 = function ($element, options) {
          +    if ($element.data('select2') != null) {
          +      $element.data('select2').destroy();
          +    }
          +
          +    this.$element = $element;
          +
          +    this.id = this._generateId($element);
          +
          +    options = options || {};
          +
          +    this.options = new Options(options, $element);
          +
          +    Select2.__super__.constructor.call(this);
          +
          +    // Set up the tabindex
          +
          +    var tabindex = $element.attr('tabindex') || 0;
          +    $element.data('old-tabindex', tabindex);
          +    $element.attr('tabindex', '-1');
          +
          +    // Set up containers and adapters
          +
          +    var DataAdapter = this.options.get('dataAdapter');
          +    this.dataAdapter = new DataAdapter($element, this.options);
          +
          +    var $container = this.render();
          +
          +    this._placeContainer($container);
          +
          +    var SelectionAdapter = this.options.get('selectionAdapter');
          +    this.selection = new SelectionAdapter($element, this.options);
          +    this.$selection = this.selection.render();
          +
          +    this.selection.position(this.$selection, $container);
          +
          +    var DropdownAdapter = this.options.get('dropdownAdapter');
          +    this.dropdown = new DropdownAdapter($element, this.options);
          +    this.$dropdown = this.dropdown.render();
          +
          +    this.dropdown.position(this.$dropdown, $container);
          +
          +    var ResultsAdapter = this.options.get('resultsAdapter');
          +    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
          +    this.$results = this.results.render();
          +
          +    this.results.position(this.$results, this.$dropdown);
          +
          +    // Bind events
          +
          +    var self = this;
          +
          +    // Bind the container to all of the adapters
          +    this._bindAdapters();
          +
          +    // Register any DOM event handlers
          +    this._registerDomEvents();
          +
          +    // Register any internal event handlers
          +    this._registerDataEvents();
          +    this._registerSelectionEvents();
          +    this._registerDropdownEvents();
          +    this._registerResultsEvents();
          +    this._registerEvents();
          +
          +    // Set the initial state
          +    this.dataAdapter.current(function (initialData) {
          +      self.trigger('selection:update', {
          +        data: initialData
          +      });
          +    });
          +
          +    // Hide the original select
          +    $element.addClass('select2-hidden-accessible');
          +    $element.attr('aria-hidden', 'true');
          +
          +    // Synchronize any monitored attributes
          +    this._syncAttributes();
          +
          +    $element.data('select2', this);
          +  };
          +
          +  Utils.Extend(Select2, Utils.Observable);
          +
          +  Select2.prototype._generateId = function ($element) {
          +    var id = '';
          +
          +    if ($element.attr('id') != null) {
          +      id = $element.attr('id');
          +    } else if ($element.attr('name') != null) {
          +      id = $element.attr('name') + '-' + Utils.generateChars(2);
          +    } else {
          +      id = Utils.generateChars(4);
          +    }
          +
          +    id = id.replace(/(:|\.|\[|\]|,)/g, '');
          +    id = 'select2-' + id;
          +
          +    return id;
          +  };
          +
          +  Select2.prototype._placeContainer = function ($container) {
          +    $container.insertAfter(this.$element);
          +
          +    var width = this._resolveWidth(this.$element, this.options.get('width'));
          +
          +    if (width != null) {
          +      $container.css('width', width);
          +    }
          +  };
          +
          +  Select2.prototype._resolveWidth = function ($element, method) {
          +    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
          +
          +    if (method == 'resolve') {
          +      var styleWidth = this._resolveWidth($element, 'style');
          +
          +      if (styleWidth != null) {
          +        return styleWidth;
          +      }
          +
          +      return this._resolveWidth($element, 'element');
          +    }
          +
          +    if (method == 'element') {
          +      var elementWidth = $element.outerWidth(false);
          +
          +      if (elementWidth <= 0) {
          +        return 'auto';
          +      }
          +
          +      return elementWidth + 'px';
          +    }
          +
          +    if (method == 'style') {
          +      var style = $element.attr('style');
          +
          +      if (typeof(style) !== 'string') {
          +        return null;
          +      }
          +
          +      var attrs = style.split(';');
          +
          +      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
          +        var attr = attrs[i].replace(/\s/g, '');
          +        var matches = attr.match(WIDTH);
          +
          +        if (matches !== null && matches.length >= 1) {
          +          return matches[1];
          +        }
          +      }
          +
          +      return null;
          +    }
          +
          +    return method;
          +  };
          +
          +  Select2.prototype._bindAdapters = function () {
          +    this.dataAdapter.bind(this, this.$container);
          +    this.selection.bind(this, this.$container);
          +
          +    this.dropdown.bind(this, this.$container);
          +    this.results.bind(this, this.$container);
          +  };
          +
          +  Select2.prototype._registerDomEvents = function () {
          +    var self = this;
          +
          +    this.$element.on('change.select2', function () {
          +      self.dataAdapter.current(function (data) {
          +        self.trigger('selection:update', {
          +          data: data
          +        });
          +      });
          +    });
          +
          +    this.$element.on('focus.select2', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this._syncA = Utils.bind(this._syncAttributes, this);
          +    this._syncS = Utils.bind(this._syncSubtree, this);
          +
          +    if (this.$element[0].attachEvent) {
          +      this.$element[0].attachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    var observer = window.MutationObserver ||
          +      window.WebKitMutationObserver ||
          +      window.MozMutationObserver
          +    ;
          +
          +    if (observer != null) {
          +      this._observer = new observer(function (mutations) {
          +        $.each(mutations, self._syncA);
          +        $.each(mutations, self._syncS);
          +      });
          +      this._observer.observe(this.$element[0], {
          +        attributes: true,
          +        childList: true,
          +        subtree: false
          +      });
          +    } else if (this.$element[0].addEventListener) {
          +      this.$element[0].addEventListener(
          +        'DOMAttrModified',
          +        self._syncA,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeInserted',
          +        self._syncS,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeRemoved',
          +        self._syncS,
          +        false
          +      );
          +    }
          +  };
          +
          +  Select2.prototype._registerDataEvents = function () {
          +    var self = this;
          +
          +    this.dataAdapter.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerSelectionEvents = function () {
          +    var self = this;
          +    var nonRelayEvents = ['toggle', 'focus'];
          +
          +    this.selection.on('toggle', function () {
          +      self.toggleDropdown();
          +    });
          +
          +    this.selection.on('focus', function (params) {
          +      self.focus(params);
          +    });
          +
          +    this.selection.on('*', function (name, params) {
          +      if ($.inArray(name, nonRelayEvents) !== -1) {
          +        return;
          +      }
          +
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerDropdownEvents = function () {
          +    var self = this;
          +
          +    this.dropdown.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerResultsEvents = function () {
          +    var self = this;
          +
          +    this.results.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerEvents = function () {
          +    var self = this;
          +
          +    this.on('open', function () {
          +      self.$container.addClass('select2-container--open');
          +    });
          +
          +    this.on('close', function () {
          +      self.$container.removeClass('select2-container--open');
          +    });
          +
          +    this.on('enable', function () {
          +      self.$container.removeClass('select2-container--disabled');
          +    });
          +
          +    this.on('disable', function () {
          +      self.$container.addClass('select2-container--disabled');
          +    });
          +
          +    this.on('blur', function () {
          +      self.$container.removeClass('select2-container--focus');
          +    });
          +
          +    this.on('query', function (params) {
          +      if (!self.isOpen()) {
          +        self.trigger('open', {});
          +      }
          +
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:all', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('query:append', function (params) {
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:append', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('keypress', function (evt) {
          +      var key = evt.which;
          +
          +      if (self.isOpen()) {
          +        if (key === KEYS.ESC || key === KEYS.TAB ||
          +            (key === KEYS.UP && evt.altKey)) {
          +          self.close();
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.ENTER) {
          +          self.trigger('results:select', {});
          +
          +          evt.preventDefault();
          +        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
          +          self.trigger('results:toggle', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.UP) {
          +          self.trigger('results:previous', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.DOWN) {
          +          self.trigger('results:next', {});
          +
          +          evt.preventDefault();
          +        }
          +      } else {
          +        if (key === KEYS.ENTER || key === KEYS.SPACE ||
          +            (key === KEYS.DOWN && evt.altKey)) {
          +          self.open();
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +  };
          +
          +  Select2.prototype._syncAttributes = function () {
          +    this.options.set('disabled', this.$element.prop('disabled'));
          +
          +    if (this.options.get('disabled')) {
          +      if (this.isOpen()) {
          +        this.close();
          +      }
          +
          +      this.trigger('disable', {});
          +    } else {
          +      this.trigger('enable', {});
          +    }
          +  };
          +
          +  Select2.prototype._syncSubtree = function (evt, mutations) {
          +    var changed = false;
          +    var self = this;
          +
          +    // Ignore any mutation events raised for elements that aren't options or
          +    // optgroups. This handles the case when the select element is destroyed
          +    if (
          +      evt && evt.target && (
          +        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
          +      )
          +    ) {
          +      return;
          +    }
          +
          +    if (!mutations) {
          +      // If mutation events aren't supported, then we can only assume that the
          +      // change affected the selections
          +      changed = true;
          +    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
          +      for (var n = 0; n < mutations.addedNodes.length; n++) {
          +        var node = mutations.addedNodes[n];
          +
          +        if (node.selected) {
          +          changed = true;
          +        }
          +      }
          +    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
          +      changed = true;
          +    }
          +
          +    // Only re-pull the data if we think there is a change
          +    if (changed) {
          +      this.dataAdapter.current(function (currentData) {
          +        self.trigger('selection:update', {
          +          data: currentData
          +        });
          +      });
          +    }
          +  };
          +
          +  /**
          +   * Override the trigger method to automatically trigger pre-events when
          +   * there are events that can be prevented.
          +   */
          +  Select2.prototype.trigger = function (name, args) {
          +    var actualTrigger = Select2.__super__.trigger;
          +    var preTriggerMap = {
          +      'open': 'opening',
          +      'close': 'closing',
          +      'select': 'selecting',
          +      'unselect': 'unselecting'
          +    };
          +
          +    if (args === undefined) {
          +      args = {};
          +    }
          +
          +    if (name in preTriggerMap) {
          +      var preTriggerName = preTriggerMap[name];
          +      var preTriggerArgs = {
          +        prevented: false,
          +        name: name,
          +        args: args
          +      };
          +
          +      actualTrigger.call(this, preTriggerName, preTriggerArgs);
          +
          +      if (preTriggerArgs.prevented) {
          +        args.prevented = true;
          +
          +        return;
          +      }
          +    }
          +
          +    actualTrigger.call(this, name, args);
          +  };
          +
          +  Select2.prototype.toggleDropdown = function () {
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    if (this.isOpen()) {
          +      this.close();
          +    } else {
          +      this.open();
          +    }
          +  };
          +
          +  Select2.prototype.open = function () {
          +    if (this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('query', {});
          +  };
          +
          +  Select2.prototype.close = function () {
          +    if (!this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('close', {});
          +  };
          +
          +  Select2.prototype.isOpen = function () {
          +    return this.$container.hasClass('select2-container--open');
          +  };
          +
          +  Select2.prototype.hasFocus = function () {
          +    return this.$container.hasClass('select2-container--focus');
          +  };
          +
          +  Select2.prototype.focus = function (data) {
          +    // No need to re-trigger focus events if we are already focused
          +    if (this.hasFocus()) {
          +      return;
          +    }
          +
          +    this.$container.addClass('select2-container--focus');
          +    this.trigger('focus', {});
          +  };
          +
          +  Select2.prototype.enable = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("enable")` method has been deprecated and will' +
          +        ' be removed in later Select2 versions. Use $element.prop("disabled")' +
          +        ' instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      args = [true];
          +    }
          +
          +    var disabled = !args[0];
          +
          +    this.$element.prop('disabled', disabled);
          +  };
          +
          +  Select2.prototype.data = function () {
          +    if (this.options.get('debug') &&
          +        arguments.length > 0 && window.console && console.warn) {
          +      console.warn(
          +        'Select2: Data can no longer be set using `select2("data")`. You ' +
          +        'should consider setting the value instead using `$element.val()`.'
          +      );
          +    }
          +
          +    var data = [];
          +
          +    this.dataAdapter.current(function (currentData) {
          +      data = currentData;
          +    });
          +
          +    return data;
          +  };
          +
          +  Select2.prototype.val = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("val")` method has been deprecated and will be' +
          +        ' removed in later Select2 versions. Use $element.val() instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      return this.$element.val();
          +    }
          +
          +    var newVal = args[0];
          +
          +    if ($.isArray(newVal)) {
          +      newVal = $.map(newVal, function (obj) {
          +        return obj.toString();
          +      });
          +    }
          +
          +    this.$element.val(newVal).trigger('change');
          +  };
          +
          +  Select2.prototype.destroy = function () {
          +    this.$container.remove();
          +
          +    if (this.$element[0].detachEvent) {
          +      this.$element[0].detachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    if (this._observer != null) {
          +      this._observer.disconnect();
          +      this._observer = null;
          +    } else if (this.$element[0].removeEventListener) {
          +      this.$element[0]
          +        .removeEventListener('DOMAttrModified', this._syncA, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeInserted', this._syncS, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeRemoved', this._syncS, false);
          +    }
          +
          +    this._syncA = null;
          +    this._syncS = null;
          +
          +    this.$element.off('.select2');
          +    this.$element.attr('tabindex', this.$element.data('old-tabindex'));
          +
          +    this.$element.removeClass('select2-hidden-accessible');
          +    this.$element.attr('aria-hidden', 'false');
          +    this.$element.removeData('select2');
          +
          +    this.dataAdapter.destroy();
          +    this.selection.destroy();
          +    this.dropdown.destroy();
          +    this.results.destroy();
          +
          +    this.dataAdapter = null;
          +    this.selection = null;
          +    this.dropdown = null;
          +    this.results = null;
          +  };
          +
          +  Select2.prototype.render = function () {
          +    var $container = $(
          +      '<span class="select2 select2-container">' +
          +        '<span class="selection"></span>' +
          +        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
          +      '</span>'
          +    );
          +
          +    $container.attr('dir', this.options.get('dir'));
          +
          +    this.$container = $container;
          +
          +    this.$container.addClass('select2-container--' + this.options.get('theme'));
          +
          +    $container.data('element', this.$element);
          +
          +    return $container;
          +  };
          +
          +  return Select2;
          +});
          +
          +S2.define('select2/compat/utils',[
          +  'jquery'
          +], function ($) {
          +  function syncCssClasses ($dest, $src, adapter) {
          +    var classes, replacements = [], adapted;
          +
          +    classes = $.trim($dest.attr('class'));
          +
          +    if (classes) {
          +      classes = '' + classes; // for IE which returns object
          +
          +      $(classes.split(/\s+/)).each(function () {
          +        // Save all Select2 classes
          +        if (this.indexOf('select2-') === 0) {
          +          replacements.push(this);
          +        }
          +      });
          +    }
          +
          +    classes = $.trim($src.attr('class'));
          +
          +    if (classes) {
          +      classes = '' + classes; // for IE which returns object
          +
          +      $(classes.split(/\s+/)).each(function () {
          +        // Only adapt non-Select2 classes
          +        if (this.indexOf('select2-') !== 0) {
          +          adapted = adapter(this);
          +
          +          if (adapted != null) {
          +            replacements.push(adapted);
          +          }
          +        }
          +      });
          +    }
          +
          +    $dest.attr('class', replacements.join(' '));
          +  }
          +
          +  return {
          +    syncCssClasses: syncCssClasses
          +  };
          +});
          +
          +S2.define('select2/compat/containerCss',[
          +  'jquery',
          +  './utils'
          +], function ($, CompatUtils) {
          +  // No-op CSS adapter that discards all classes by default
          +  function _containerAdapter (clazz) {
          +    return null;
          +  }
          +
          +  function ContainerCSS () { }
          +
          +  ContainerCSS.prototype.render = function (decorated) {
          +    var $container = decorated.call(this);
          +
          +    var containerCssClass = this.options.get('containerCssClass') || '';
          +
          +    if ($.isFunction(containerCssClass)) {
          +      containerCssClass = containerCssClass(this.$element);
          +    }
          +
          +    var containerCssAdapter = this.options.get('adaptContainerCssClass');
          +    containerCssAdapter = containerCssAdapter || _containerAdapter;
          +
          +    if (containerCssClass.indexOf(':all:') !== -1) {
          +      containerCssClass = containerCssClass.replace(':all:', '');
          +
          +      var _cssAdapter = containerCssAdapter;
          +
          +      containerCssAdapter = function (clazz) {
          +        var adapted = _cssAdapter(clazz);
          +
          +        if (adapted != null) {
          +          // Append the old one along with the adapted one
          +          return adapted + ' ' + clazz;
          +        }
          +
          +        return clazz;
          +      };
          +    }
          +
          +    var containerCss = this.options.get('containerCss') || {};
          +
          +    if ($.isFunction(containerCss)) {
          +      containerCss = containerCss(this.$element);
          +    }
          +
          +    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
          +
          +    $container.css(containerCss);
          +    $container.addClass(containerCssClass);
          +
          +    return $container;
          +  };
          +
          +  return ContainerCSS;
          +});
          +
          +S2.define('select2/compat/dropdownCss',[
          +  'jquery',
          +  './utils'
          +], function ($, CompatUtils) {
          +  // No-op CSS adapter that discards all classes by default
          +  function _dropdownAdapter (clazz) {
          +    return null;
          +  }
          +
          +  function DropdownCSS () { }
          +
          +  DropdownCSS.prototype.render = function (decorated) {
          +    var $dropdown = decorated.call(this);
          +
          +    var dropdownCssClass = this.options.get('dropdownCssClass') || '';
          +
          +    if ($.isFunction(dropdownCssClass)) {
          +      dropdownCssClass = dropdownCssClass(this.$element);
          +    }
          +
          +    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
          +    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
          +
          +    if (dropdownCssClass.indexOf(':all:') !== -1) {
          +      dropdownCssClass = dropdownCssClass.replace(':all:', '');
          +
          +      var _cssAdapter = dropdownCssAdapter;
          +
          +      dropdownCssAdapter = function (clazz) {
          +        var adapted = _cssAdapter(clazz);
          +
          +        if (adapted != null) {
          +          // Append the old one along with the adapted one
          +          return adapted + ' ' + clazz;
          +        }
          +
          +        return clazz;
          +      };
          +    }
          +
          +    var dropdownCss = this.options.get('dropdownCss') || {};
          +
          +    if ($.isFunction(dropdownCss)) {
          +      dropdownCss = dropdownCss(this.$element);
          +    }
          +
          +    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
          +
          +    $dropdown.css(dropdownCss);
          +    $dropdown.addClass(dropdownCssClass);
          +
          +    return $dropdown;
          +  };
          +
          +  return DropdownCSS;
          +});
          +
          +S2.define('select2/compat/initSelection',[
          +  'jquery'
          +], function ($) {
          +  function InitSelection (decorated, $element, options) {
          +    if (options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `initSelection` option has been deprecated in favor' +
          +        ' of a custom data adapter that overrides the `current` method. ' +
          +        'This method is now called multiple times instead of a single ' +
          +        'time when the instance is initialized. Support will be removed ' +
          +        'for the `initSelection` option in future versions of Select2'
          +      );
          +    }
          +
          +    this.initSelection = options.get('initSelection');
          +    this._isInitialized = false;
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  InitSelection.prototype.current = function (decorated, callback) {
          +    var self = this;
          +
          +    if (this._isInitialized) {
          +      decorated.call(this, callback);
          +
          +      return;
          +    }
          +
          +    this.initSelection.call(null, this.$element, function (data) {
          +      self._isInitialized = true;
          +
          +      if (!$.isArray(data)) {
          +        data = [data];
          +      }
          +
          +      callback(data);
          +    });
          +  };
          +
          +  return InitSelection;
          +});
          +
          +S2.define('select2/compat/inputData',[
          +  'jquery'
          +], function ($) {
          +  function InputData (decorated, $element, options) {
          +    this._currentData = [];
          +    this._valueSeparator = options.get('valueSeparator') || ',';
          +
          +    if ($element.prop('type') === 'hidden') {
          +      if (options.get('debug') && console && console.warn) {
          +        console.warn(
          +          'Select2: Using a hidden input with Select2 is no longer ' +
          +          'supported and may stop working in the future. It is recommended ' +
          +          'to use a `<select>` element instead.'
          +        );
          +      }
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  InputData.prototype.current = function (_, callback) {
          +    function getSelected (data, selectedIds) {
          +      var selected = [];
          +
          +      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
          +        data.selected = true;
          +        selected.push(data);
          +      } else {
          +        data.selected = false;
          +      }
          +
          +      if (data.children) {
          +        selected.push.apply(selected, getSelected(data.children, selectedIds));
          +      }
          +
          +      return selected;
          +    }
          +
          +    var selected = [];
          +
          +    for (var d = 0; d < this._currentData.length; d++) {
          +      var data = this._currentData[d];
          +
          +      selected.push.apply(
          +        selected,
          +        getSelected(
          +          data,
          +          this.$element.val().split(
          +            this._valueSeparator
          +          )
          +        )
          +      );
          +    }
          +
          +    callback(selected);
          +  };
          +
          +  InputData.prototype.select = function (_, data) {
          +    if (!this.options.get('multiple')) {
          +      this.current(function (allData) {
          +        $.map(allData, function (data) {
          +          data.selected = false;
          +        });
          +      });
          +
          +      this.$element.val(data.id);
          +      this.$element.trigger('change');
          +    } else {
          +      var value = this.$element.val();
          +      value += this._valueSeparator + data.id;
          +
          +      this.$element.val(value);
          +      this.$element.trigger('change');
          +    }
          +  };
          +
          +  InputData.prototype.unselect = function (_, data) {
          +    var self = this;
          +
          +    data.selected = false;
          +
          +    this.current(function (allData) {
          +      var values = [];
          +
          +      for (var d = 0; d < allData.length; d++) {
          +        var item = allData[d];
          +
          +        if (data.id == item.id) {
          +          continue;
          +        }
          +
          +        values.push(item.id);
          +      }
          +
          +      self.$element.val(values.join(self._valueSeparator));
          +      self.$element.trigger('change');
          +    });
          +  };
          +
          +  InputData.prototype.query = function (_, params, callback) {
          +    var results = [];
          +
          +    for (var d = 0; d < this._currentData.length; d++) {
          +      var data = this._currentData[d];
          +
          +      var matches = this.matches(params, data);
          +
          +      if (matches !== null) {
          +        results.push(matches);
          +      }
          +    }
          +
          +    callback({
          +      results: results
          +    });
          +  };
          +
          +  InputData.prototype.addOptions = function (_, $options) {
          +    var options = $.map($options, function ($option) {
          +      return $.data($option[0], 'data');
          +    });
          +
          +    this._currentData.push.apply(this._currentData, options);
          +  };
          +
          +  return InputData;
          +});
          +
          +S2.define('select2/compat/matcher',[
          +  'jquery'
          +], function ($) {
          +  function oldMatcher (matcher) {
          +    function wrappedMatcher (params, data) {
          +      var match = $.extend(true, {}, data);
          +
          +      if (params.term == null || $.trim(params.term) === '') {
          +        return match;
          +      }
          +
          +      if (data.children) {
          +        for (var c = data.children.length - 1; c >= 0; c--) {
          +          var child = data.children[c];
          +
          +          // Check if the child object matches
          +          // The old matcher returned a boolean true or false
          +          var doesMatch = matcher(params.term, child.text, child);
          +
          +          // If the child didn't match, pop it off
          +          if (!doesMatch) {
          +            match.children.splice(c, 1);
          +          }
          +        }
          +
          +        if (match.children.length > 0) {
          +          return match;
          +        }
          +      }
          +
          +      if (matcher(params.term, data.text, data)) {
          +        return match;
          +      }
          +
          +      return null;
          +    }
          +
          +    return wrappedMatcher;
          +  }
          +
          +  return oldMatcher;
          +});
          +
          +S2.define('select2/compat/query',[
          +
          +], function () {
          +  function Query (decorated, $element, options) {
          +    if (options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `query` option has been deprecated in favor of a ' +
          +        'custom data adapter that overrides the `query` method. Support ' +
          +        'will be removed for the `query` option in future versions of ' +
          +        'Select2.'
          +      );
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Query.prototype.query = function (_, params, callback) {
          +    params.callback = callback;
          +
          +    var query = this.options.get('query');
          +
          +    query.call(null, params);
          +  };
          +
          +  return Query;
          +});
          +
          +S2.define('select2/dropdown/attachContainer',[
          +
          +], function () {
          +  function AttachContainer (decorated, $element, options) {
          +    decorated.call(this, $element, options);
          +  }
          +
          +  AttachContainer.prototype.position =
          +    function (decorated, $dropdown, $container) {
          +    var $dropdownContainer = $container.find('.dropdown-wrapper');
          +    $dropdownContainer.append($dropdown);
          +
          +    $dropdown.addClass('select2-dropdown--below');
          +    $container.addClass('select2-container--below');
          +  };
          +
          +  return AttachContainer;
          +});
          +
          +S2.define('select2/dropdown/stopPropagation',[
          +
          +], function () {
          +  function StopPropagation () { }
          +
          +  StopPropagation.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    var stoppedEvents = [
          +    'blur',
          +    'change',
          +    'click',
          +    'dblclick',
          +    'focus',
          +    'focusin',
          +    'focusout',
          +    'input',
          +    'keydown',
          +    'keyup',
          +    'keypress',
          +    'mousedown',
          +    'mouseenter',
          +    'mouseleave',
          +    'mousemove',
          +    'mouseover',
          +    'mouseup',
          +    'search',
          +    'touchend',
          +    'touchstart'
          +    ];
          +
          +    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  return StopPropagation;
          +});
          +
          +S2.define('select2/selection/stopPropagation',[
          +
          +], function () {
          +  function StopPropagation () { }
          +
          +  StopPropagation.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    var stoppedEvents = [
          +      'blur',
          +      'change',
          +      'click',
          +      'dblclick',
          +      'focus',
          +      'focusin',
          +      'focusout',
          +      'input',
          +      'keydown',
          +      'keyup',
          +      'keypress',
          +      'mousedown',
          +      'mouseenter',
          +      'mouseleave',
          +      'mousemove',
          +      'mouseover',
          +      'mouseup',
          +      'search',
          +      'touchend',
          +      'touchstart'
          +    ];
          +
          +    this.$selection.on(stoppedEvents.join(' '), function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  return StopPropagation;
          +});
          +
          +/*!
          + * jQuery Mousewheel 3.1.13
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * http://jquery.org/license
          + */
          +
          +(function (factory) {
          +    if ( typeof S2.define === 'function' && S2.define.amd ) {
          +        // AMD. Register as an anonymous module.
          +        S2.define('jquery-mousewheel',['jquery'], factory);
          +    } else if (typeof exports === 'object') {
          +        // Node/CommonJS style for Browserify
          +        module.exports = factory;
          +    } else {
          +        // Browser globals
          +        factory(jQuery);
          +    }
          +}(function ($) {
          +
          +    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
          +        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
          +                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
          +        slice  = Array.prototype.slice,
          +        nullLowestDeltaTimeout, lowestDelta;
          +
          +    if ( $.event.fixHooks ) {
          +        for ( var i = toFix.length; i; ) {
          +            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
          +        }
          +    }
          +
          +    var special = $.event.special.mousewheel = {
          +        version: '3.1.12',
          +
          +        setup: function() {
          +            if ( this.addEventListener ) {
          +                for ( var i = toBind.length; i; ) {
          +                    this.addEventListener( toBind[--i], handler, false );
          +                }
          +            } else {
          +                this.onmousewheel = handler;
          +            }
          +            // Store the line height and page height for this particular element
          +            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
          +            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
          +        },
          +
          +        teardown: function() {
          +            if ( this.removeEventListener ) {
          +                for ( var i = toBind.length; i; ) {
          +                    this.removeEventListener( toBind[--i], handler, false );
          +                }
          +            } else {
          +                this.onmousewheel = null;
          +            }
          +            // Clean up the data we added to the element
          +            $.removeData(this, 'mousewheel-line-height');
          +            $.removeData(this, 'mousewheel-page-height');
          +        },
          +
          +        getLineHeight: function(elem) {
          +            var $elem = $(elem),
          +                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
          +            if (!$parent.length) {
          +                $parent = $('body');
          +            }
          +            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
          +        },
          +
          +        getPageHeight: function(elem) {
          +            return $(elem).height();
          +        },
          +
          +        settings: {
          +            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
          +            normalizeOffset: true  // calls getBoundingClientRect for each event
          +        }
          +    };
          +
          +    $.fn.extend({
          +        mousewheel: function(fn) {
          +            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
          +        },
          +
          +        unmousewheel: function(fn) {
          +            return this.unbind('mousewheel', fn);
          +        }
          +    });
          +
          +
          +    function handler(event) {
          +        var orgEvent   = event || window.event,
          +            args       = slice.call(arguments, 1),
          +            delta      = 0,
          +            deltaX     = 0,
          +            deltaY     = 0,
          +            absDelta   = 0,
          +            offsetX    = 0,
          +            offsetY    = 0;
          +        event = $.event.fix(orgEvent);
          +        event.type = 'mousewheel';
          +
          +        // Old school scrollwheel delta
          +        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
          +        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
          +        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
          +        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
          +
          +        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
          +        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
          +            deltaX = deltaY * -1;
          +            deltaY = 0;
          +        }
          +
          +        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
          +        delta = deltaY === 0 ? deltaX : deltaY;
          +
          +        // New school wheel delta (wheel event)
          +        if ( 'deltaY' in orgEvent ) {
          +            deltaY = orgEvent.deltaY * -1;
          +            delta  = deltaY;
          +        }
          +        if ( 'deltaX' in orgEvent ) {
          +            deltaX = orgEvent.deltaX;
          +            if ( deltaY === 0 ) { delta  = deltaX * -1; }
          +        }
          +
          +        // No change actually happened, no reason to go any further
          +        if ( deltaY === 0 && deltaX === 0 ) { return; }
          +
          +        // Need to convert lines and pages to pixels if we aren't already in pixels
          +        // There are three delta modes:
          +        //   * deltaMode 0 is by pixels, nothing to do
          +        //   * deltaMode 1 is by lines
          +        //   * deltaMode 2 is by pages
          +        if ( orgEvent.deltaMode === 1 ) {
          +            var lineHeight = $.data(this, 'mousewheel-line-height');
          +            delta  *= lineHeight;
          +            deltaY *= lineHeight;
          +            deltaX *= lineHeight;
          +        } else if ( orgEvent.deltaMode === 2 ) {
          +            var pageHeight = $.data(this, 'mousewheel-page-height');
          +            delta  *= pageHeight;
          +            deltaY *= pageHeight;
          +            deltaX *= pageHeight;
          +        }
          +
          +        // Store lowest absolute delta to normalize the delta values
          +        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
          +
          +        if ( !lowestDelta || absDelta < lowestDelta ) {
          +            lowestDelta = absDelta;
          +
          +            // Adjust older deltas if necessary
          +            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
          +                lowestDelta /= 40;
          +            }
          +        }
          +
          +        // Adjust older deltas if necessary
          +        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
          +            // Divide all the things by 40!
          +            delta  /= 40;
          +            deltaX /= 40;
          +            deltaY /= 40;
          +        }
          +
          +        // Get a whole, normalized value for the deltas
          +        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
          +        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
          +        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
          +
          +        // Normalise offsetX and offsetY properties
          +        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
          +            var boundingRect = this.getBoundingClientRect();
          +            offsetX = event.clientX - boundingRect.left;
          +            offsetY = event.clientY - boundingRect.top;
          +        }
          +
          +        // Add information to the event object
          +        event.deltaX = deltaX;
          +        event.deltaY = deltaY;
          +        event.deltaFactor = lowestDelta;
          +        event.offsetX = offsetX;
          +        event.offsetY = offsetY;
          +        // Go ahead and set deltaMode to 0 since we converted to pixels
          +        // Although this is a little odd since we overwrite the deltaX/Y
          +        // properties with normalized deltas.
          +        event.deltaMode = 0;
          +
          +        // Add event and delta to the front of the arguments
          +        args.unshift(event, delta, deltaX, deltaY);
          +
          +        // Clearout lowestDelta after sometime to better
          +        // handle multiple device types that give different
          +        // a different lowestDelta
          +        // Ex: trackpad = 3 and mouse wheel = 120
          +        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
          +        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
          +
          +        return ($.event.dispatch || $.event.handle).apply(this, args);
          +    }
          +
          +    function nullLowestDelta() {
          +        lowestDelta = null;
          +    }
          +
          +    function shouldAdjustOldDeltas(orgEvent, absDelta) {
          +        // If this is an older event and the delta is divisable by 120,
          +        // then we are assuming that the browser is treating this as an
          +        // older mouse wheel event and that we should divide the deltas
          +        // by 40 to try and get a more usable deltaFactor.
          +        // Side note, this actually impacts the reported scroll distance
          +        // in older browsers and can cause scrolling to be slower than native.
          +        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
          +        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
          +    }
          +
          +}));
          +
          +S2.define('jquery.select2',[
          +  'jquery',
          +  'jquery-mousewheel',
          +
          +  './select2/core',
          +  './select2/defaults'
          +], function ($, _, Select2, Defaults) {
          +  if ($.fn.select2 == null) {
          +    // All methods that should return the element
          +    var thisMethods = ['open', 'close', 'destroy'];
          +
          +    $.fn.select2 = function (options) {
          +      options = options || {};
          +
          +      if (typeof options === 'object') {
          +        this.each(function () {
          +          var instanceOptions = $.extend(true, {}, options);
          +
          +          var instance = new Select2($(this), instanceOptions);
          +        });
          +
          +        return this;
          +      } else if (typeof options === 'string') {
          +        var ret;
          +        var args = Array.prototype.slice.call(arguments, 1);
          +
          +        this.each(function () {
          +          var instance = $(this).data('select2');
          +
          +          if (instance == null && window.console && console.error) {
          +            console.error(
          +              'The select2(\'' + options + '\') method was called on an ' +
          +              'element that is not using Select2.'
          +            );
          +          }
          +
          +          ret = instance[options].apply(instance, args);
          +        });
          +
          +        // Check if we should be returning `this`
          +        if ($.inArray(options, thisMethods) > -1) {
          +          return this;
          +        }
          +
          +        return ret;
          +      } else {
          +        throw new Error('Invalid arguments for Select2: ' + options);
          +      }
          +    };
          +  }
          +
          +  if ($.fn.select2.defaults == null) {
          +    $.fn.select2.defaults = Defaults;
          +  }
          +
          +  return Select2;
          +});
          +
          +  // Return the AMD loader configuration so it can be used outside of this file
          +  return {
          +    define: S2.define,
          +    require: S2.require
          +  };
          +}());
          +
          +  // Autoload the jQuery bindings
          +  // We know that all of the modules exist above this, so we're safe
          +  var select2 = S2.require('jquery.select2');
          +
          +  // Hold the AMD module references on the jQuery function that was just loaded
          +  // This allows Select2 to use the internal loader outside of this file, such
          +  // as in the language files.
          +  jQuery.fn.select2.amd = S2;
          +
          +  // Return the Select2 instance for anyone who is importing it.
          +  return select2;
          +}));
          diff --git a/public/theme/select2/dist/js/select2.full.min.js b/public/theme/select2/dist/js/select2.full.min.js
          new file mode 100644
          index 0000000..684edf3
          --- /dev/null
          +++ b/public/theme/select2/dist/js/select2.full.min.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");
          +if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null;
          +},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c;var d=this.options.get("query");d.call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){var d=c.find(".dropdown-wrapper");d.append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
          \ No newline at end of file
          diff --git a/public/theme/select2/dist/js/select2.js b/public/theme/select2/dist/js/select2.js
          new file mode 100644
          index 0000000..13b84fa
          --- /dev/null
          +++ b/public/theme/select2/dist/js/select2.js
          @@ -0,0 +1,5725 @@
          +/*!
          + * Select2 4.0.3
          + * https://select2.github.io
          + *
          + * Released under the MIT license
          + * https://github.com/select2/select2/blob/master/LICENSE.md
          + */
          +(function (factory) {
          +  if (typeof define === 'function' && define.amd) {
          +    // AMD. Register as an anonymous module.
          +    define(['jquery'], factory);
          +  } else if (typeof exports === 'object') {
          +    // Node/CommonJS
          +    factory(require('jquery'));
          +  } else {
          +    // Browser globals
          +    factory(jQuery);
          +  }
          +}(function (jQuery) {
          +  // This is needed so we can catch the AMD loader configuration and use it
          +  // The inner file should be wrapped (by `banner.start.js`) in a function that
          +  // returns the AMD loader references.
          +  var S2 =
          +(function () {
          +  // Restore the Select2 AMD loader so it can be used
          +  // Needed mostly in the language files, where the loader is not inserted
          +  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
          +    var S2 = jQuery.fn.select2.amd;
          +  }
          +var S2;(function () { if (!S2 || !S2.requirejs) {
          +if (!S2) { S2 = {}; } else { require = S2; }
          +/**
          + * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
          + * Available via the MIT or new BSD license.
          + * see: http://github.com/jrburke/almond for details
          + */
          +//Going sloppy to avoid 'use strict' string cost, but strict practices should
          +//be followed.
          +/*jslint sloppy: true */
          +/*global setTimeout: false */
          +
          +var requirejs, require, define;
          +(function (undef) {
          +    var main, req, makeMap, handlers,
          +        defined = {},
          +        waiting = {},
          +        config = {},
          +        defining = {},
          +        hasOwn = Object.prototype.hasOwnProperty,
          +        aps = [].slice,
          +        jsSuffixRegExp = /\.js$/;
          +
          +    function hasProp(obj, prop) {
          +        return hasOwn.call(obj, prop);
          +    }
          +
          +    /**
          +     * Given a relative module name, like ./something, normalize it to
          +     * a real name that can be mapped to a path.
          +     * @param {String} name the relative name
          +     * @param {String} baseName a real name that the name arg is relative
          +     * to.
          +     * @returns {String} normalized name
          +     */
          +    function normalize(name, baseName) {
          +        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
          +            foundI, foundStarMap, starI, i, j, part,
          +            baseParts = baseName && baseName.split("/"),
          +            map = config.map,
          +            starMap = (map && map['*']) || {};
          +
          +        //Adjust any relative paths.
          +        if (name && name.charAt(0) === ".") {
          +            //If have a base name, try to normalize against it,
          +            //otherwise, assume it is a top-level require that will
          +            //be relative to baseUrl in the end.
          +            if (baseName) {
          +                name = name.split('/');
          +                lastIndex = name.length - 1;
          +
          +                // Node .js allowance:
          +                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
          +                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
          +                }
          +
          +                //Lop off the last part of baseParts, so that . matches the
          +                //"directory" and not name of the baseName's module. For instance,
          +                //baseName of "one/two/three", maps to "one/two/three.js", but we
          +                //want the directory, "one/two" for this normalization.
          +                name = baseParts.slice(0, baseParts.length - 1).concat(name);
          +
          +                //start trimDots
          +                for (i = 0; i < name.length; i += 1) {
          +                    part = name[i];
          +                    if (part === ".") {
          +                        name.splice(i, 1);
          +                        i -= 1;
          +                    } else if (part === "..") {
          +                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {
          +                            //End of the line. Keep at least one non-dot
          +                            //path segment at the front so it can be mapped
          +                            //correctly to disk. Otherwise, there is likely
          +                            //no path mapping for a path starting with '..'.
          +                            //This can still fail, but catches the most reasonable
          +                            //uses of ..
          +                            break;
          +                        } else if (i > 0) {
          +                            name.splice(i - 1, 2);
          +                            i -= 2;
          +                        }
          +                    }
          +                }
          +                //end trimDots
          +
          +                name = name.join("/");
          +            } else if (name.indexOf('./') === 0) {
          +                // No baseName, so this is ID is resolved relative
          +                // to baseUrl, pull off the leading dot.
          +                name = name.substring(2);
          +            }
          +        }
          +
          +        //Apply map config if available.
          +        if ((baseParts || starMap) && map) {
          +            nameParts = name.split('/');
          +
          +            for (i = nameParts.length; i > 0; i -= 1) {
          +                nameSegment = nameParts.slice(0, i).join("/");
          +
          +                if (baseParts) {
          +                    //Find the longest baseName segment match in the config.
          +                    //So, do joins on the biggest to smallest lengths of baseParts.
          +                    for (j = baseParts.length; j > 0; j -= 1) {
          +                        mapValue = map[baseParts.slice(0, j).join('/')];
          +
          +                        //baseName segment has  config, find if it has one for
          +                        //this name.
          +                        if (mapValue) {
          +                            mapValue = mapValue[nameSegment];
          +                            if (mapValue) {
          +                                //Match, update name to the new value.
          +                                foundMap = mapValue;
          +                                foundI = i;
          +                                break;
          +                            }
          +                        }
          +                    }
          +                }
          +
          +                if (foundMap) {
          +                    break;
          +                }
          +
          +                //Check for a star map match, but just hold on to it,
          +                //if there is a shorter segment match later in a matching
          +                //config, then favor over this star map.
          +                if (!foundStarMap && starMap && starMap[nameSegment]) {
          +                    foundStarMap = starMap[nameSegment];
          +                    starI = i;
          +                }
          +            }
          +
          +            if (!foundMap && foundStarMap) {
          +                foundMap = foundStarMap;
          +                foundI = starI;
          +            }
          +
          +            if (foundMap) {
          +                nameParts.splice(0, foundI, foundMap);
          +                name = nameParts.join('/');
          +            }
          +        }
          +
          +        return name;
          +    }
          +
          +    function makeRequire(relName, forceSync) {
          +        return function () {
          +            //A version of a require function that passes a moduleName
          +            //value for items that may need to
          +            //look up paths relative to the moduleName
          +            var args = aps.call(arguments, 0);
          +
          +            //If first arg is not require('string'), and there is only
          +            //one arg, it is the array form without a callback. Insert
          +            //a null so that the following concat is correct.
          +            if (typeof args[0] !== 'string' && args.length === 1) {
          +                args.push(null);
          +            }
          +            return req.apply(undef, args.concat([relName, forceSync]));
          +        };
          +    }
          +
          +    function makeNormalize(relName) {
          +        return function (name) {
          +            return normalize(name, relName);
          +        };
          +    }
          +
          +    function makeLoad(depName) {
          +        return function (value) {
          +            defined[depName] = value;
          +        };
          +    }
          +
          +    function callDep(name) {
          +        if (hasProp(waiting, name)) {
          +            var args = waiting[name];
          +            delete waiting[name];
          +            defining[name] = true;
          +            main.apply(undef, args);
          +        }
          +
          +        if (!hasProp(defined, name) && !hasProp(defining, name)) {
          +            throw new Error('No ' + name);
          +        }
          +        return defined[name];
          +    }
          +
          +    //Turns a plugin!resource to [plugin, resource]
          +    //with the plugin being undefined if the name
          +    //did not have a plugin prefix.
          +    function splitPrefix(name) {
          +        var prefix,
          +            index = name ? name.indexOf('!') : -1;
          +        if (index > -1) {
          +            prefix = name.substring(0, index);
          +            name = name.substring(index + 1, name.length);
          +        }
          +        return [prefix, name];
          +    }
          +
          +    /**
          +     * Makes a name map, normalizing the name, and using a plugin
          +     * for normalization if necessary. Grabs a ref to plugin
          +     * too, as an optimization.
          +     */
          +    makeMap = function (name, relName) {
          +        var plugin,
          +            parts = splitPrefix(name),
          +            prefix = parts[0];
          +
          +        name = parts[1];
          +
          +        if (prefix) {
          +            prefix = normalize(prefix, relName);
          +            plugin = callDep(prefix);
          +        }
          +
          +        //Normalize according
          +        if (prefix) {
          +            if (plugin && plugin.normalize) {
          +                name = plugin.normalize(name, makeNormalize(relName));
          +            } else {
          +                name = normalize(name, relName);
          +            }
          +        } else {
          +            name = normalize(name, relName);
          +            parts = splitPrefix(name);
          +            prefix = parts[0];
          +            name = parts[1];
          +            if (prefix) {
          +                plugin = callDep(prefix);
          +            }
          +        }
          +
          +        //Using ridiculous property names for space reasons
          +        return {
          +            f: prefix ? prefix + '!' + name : name, //fullName
          +            n: name,
          +            pr: prefix,
          +            p: plugin
          +        };
          +    };
          +
          +    function makeConfig(name) {
          +        return function () {
          +            return (config && config.config && config.config[name]) || {};
          +        };
          +    }
          +
          +    handlers = {
          +        require: function (name) {
          +            return makeRequire(name);
          +        },
          +        exports: function (name) {
          +            var e = defined[name];
          +            if (typeof e !== 'undefined') {
          +                return e;
          +            } else {
          +                return (defined[name] = {});
          +            }
          +        },
          +        module: function (name) {
          +            return {
          +                id: name,
          +                uri: '',
          +                exports: defined[name],
          +                config: makeConfig(name)
          +            };
          +        }
          +    };
          +
          +    main = function (name, deps, callback, relName) {
          +        var cjsModule, depName, ret, map, i,
          +            args = [],
          +            callbackType = typeof callback,
          +            usingExports;
          +
          +        //Use name if no relName
          +        relName = relName || name;
          +
          +        //Call the callback to define the module, if necessary.
          +        if (callbackType === 'undefined' || callbackType === 'function') {
          +            //Pull out the defined dependencies and pass the ordered
          +            //values to the callback.
          +            //Default to [require, exports, module] if no deps
          +            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
          +            for (i = 0; i < deps.length; i += 1) {
          +                map = makeMap(deps[i], relName);
          +                depName = map.f;
          +
          +                //Fast path CommonJS standard dependencies.
          +                if (depName === "require") {
          +                    args[i] = handlers.require(name);
          +                } else if (depName === "exports") {
          +                    //CommonJS module spec 1.1
          +                    args[i] = handlers.exports(name);
          +                    usingExports = true;
          +                } else if (depName === "module") {
          +                    //CommonJS module spec 1.1
          +                    cjsModule = args[i] = handlers.module(name);
          +                } else if (hasProp(defined, depName) ||
          +                           hasProp(waiting, depName) ||
          +                           hasProp(defining, depName)) {
          +                    args[i] = callDep(depName);
          +                } else if (map.p) {
          +                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
          +                    args[i] = defined[depName];
          +                } else {
          +                    throw new Error(name + ' missing ' + depName);
          +                }
          +            }
          +
          +            ret = callback ? callback.apply(defined[name], args) : undefined;
          +
          +            if (name) {
          +                //If setting exports via "module" is in play,
          +                //favor that over return value and exports. After that,
          +                //favor a non-undefined return value over exports use.
          +                if (cjsModule && cjsModule.exports !== undef &&
          +                        cjsModule.exports !== defined[name]) {
          +                    defined[name] = cjsModule.exports;
          +                } else if (ret !== undef || !usingExports) {
          +                    //Use the return value from the function.
          +                    defined[name] = ret;
          +                }
          +            }
          +        } else if (name) {
          +            //May just be an object definition for the module. Only
          +            //worry about defining if have a module name.
          +            defined[name] = callback;
          +        }
          +    };
          +
          +    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
          +        if (typeof deps === "string") {
          +            if (handlers[deps]) {
          +                //callback in this case is really relName
          +                return handlers[deps](callback);
          +            }
          +            //Just return the module wanted. In this scenario, the
          +            //deps arg is the module name, and second arg (if passed)
          +            //is just the relName.
          +            //Normalize module name, if it contains . or ..
          +            return callDep(makeMap(deps, callback).f);
          +        } else if (!deps.splice) {
          +            //deps is a config object, not an array.
          +            config = deps;
          +            if (config.deps) {
          +                req(config.deps, config.callback);
          +            }
          +            if (!callback) {
          +                return;
          +            }
          +
          +            if (callback.splice) {
          +                //callback is an array, which means it is a dependency list.
          +                //Adjust args if there are dependencies
          +                deps = callback;
          +                callback = relName;
          +                relName = null;
          +            } else {
          +                deps = undef;
          +            }
          +        }
          +
          +        //Support require(['a'])
          +        callback = callback || function () {};
          +
          +        //If relName is a function, it is an errback handler,
          +        //so remove it.
          +        if (typeof relName === 'function') {
          +            relName = forceSync;
          +            forceSync = alt;
          +        }
          +
          +        //Simulate async callback;
          +        if (forceSync) {
          +            main(undef, deps, callback, relName);
          +        } else {
          +            //Using a non-zero value because of concern for what old browsers
          +            //do, and latest browsers "upgrade" to 4 if lower value is used:
          +            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
          +            //If want a value immediately, use require('id') instead -- something
          +            //that works in almond on the global level, but not guaranteed and
          +            //unlikely to work in other AMD implementations.
          +            setTimeout(function () {
          +                main(undef, deps, callback, relName);
          +            }, 4);
          +        }
          +
          +        return req;
          +    };
          +
          +    /**
          +     * Just drops the config on the floor, but returns req in case
          +     * the config return value is used.
          +     */
          +    req.config = function (cfg) {
          +        return req(cfg);
          +    };
          +
          +    /**
          +     * Expose module registry for debugging and tooling
          +     */
          +    requirejs._defined = defined;
          +
          +    define = function (name, deps, callback) {
          +        if (typeof name !== 'string') {
          +            throw new Error('See almond README: incorrect module build, no module name');
          +        }
          +
          +        //This module may not have dependencies
          +        if (!deps.splice) {
          +            //deps is not an array, so probably means
          +            //an object literal or factory function for
          +            //the value. Adjust args.
          +            callback = deps;
          +            deps = [];
          +        }
          +
          +        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
          +            waiting[name] = [name, deps, callback];
          +        }
          +    };
          +
          +    define.amd = {
          +        jQuery: true
          +    };
          +}());
          +
          +S2.requirejs = requirejs;S2.require = require;S2.define = define;
          +}
          +}());
          +S2.define("almond", function(){});
          +
          +/* global jQuery:false, $:false */
          +S2.define('jquery',[],function () {
          +  var _$ = jQuery || $;
          +
          +  if (_$ == null && console && console.error) {
          +    console.error(
          +      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
          +      'found. Make sure that you are including jQuery before Select2 on your ' +
          +      'web page.'
          +    );
          +  }
          +
          +  return _$;
          +});
          +
          +S2.define('select2/utils',[
          +  'jquery'
          +], function ($) {
          +  var Utils = {};
          +
          +  Utils.Extend = function (ChildClass, SuperClass) {
          +    var __hasProp = {}.hasOwnProperty;
          +
          +    function BaseConstructor () {
          +      this.constructor = ChildClass;
          +    }
          +
          +    for (var key in SuperClass) {
          +      if (__hasProp.call(SuperClass, key)) {
          +        ChildClass[key] = SuperClass[key];
          +      }
          +    }
          +
          +    BaseConstructor.prototype = SuperClass.prototype;
          +    ChildClass.prototype = new BaseConstructor();
          +    ChildClass.__super__ = SuperClass.prototype;
          +
          +    return ChildClass;
          +  };
          +
          +  function getMethods (theClass) {
          +    var proto = theClass.prototype;
          +
          +    var methods = [];
          +
          +    for (var methodName in proto) {
          +      var m = proto[methodName];
          +
          +      if (typeof m !== 'function') {
          +        continue;
          +      }
          +
          +      if (methodName === 'constructor') {
          +        continue;
          +      }
          +
          +      methods.push(methodName);
          +    }
          +
          +    return methods;
          +  }
          +
          +  Utils.Decorate = function (SuperClass, DecoratorClass) {
          +    var decoratedMethods = getMethods(DecoratorClass);
          +    var superMethods = getMethods(SuperClass);
          +
          +    function DecoratedClass () {
          +      var unshift = Array.prototype.unshift;
          +
          +      var argCount = DecoratorClass.prototype.constructor.length;
          +
          +      var calledConstructor = SuperClass.prototype.constructor;
          +
          +      if (argCount > 0) {
          +        unshift.call(arguments, SuperClass.prototype.constructor);
          +
          +        calledConstructor = DecoratorClass.prototype.constructor;
          +      }
          +
          +      calledConstructor.apply(this, arguments);
          +    }
          +
          +    DecoratorClass.displayName = SuperClass.displayName;
          +
          +    function ctr () {
          +      this.constructor = DecoratedClass;
          +    }
          +
          +    DecoratedClass.prototype = new ctr();
          +
          +    for (var m = 0; m < superMethods.length; m++) {
          +        var superMethod = superMethods[m];
          +
          +        DecoratedClass.prototype[superMethod] =
          +          SuperClass.prototype[superMethod];
          +    }
          +
          +    var calledMethod = function (methodName) {
          +      // Stub out the original method if it's not decorating an actual method
          +      var originalMethod = function () {};
          +
          +      if (methodName in DecoratedClass.prototype) {
          +        originalMethod = DecoratedClass.prototype[methodName];
          +      }
          +
          +      var decoratedMethod = DecoratorClass.prototype[methodName];
          +
          +      return function () {
          +        var unshift = Array.prototype.unshift;
          +
          +        unshift.call(arguments, originalMethod);
          +
          +        return decoratedMethod.apply(this, arguments);
          +      };
          +    };
          +
          +    for (var d = 0; d < decoratedMethods.length; d++) {
          +      var decoratedMethod = decoratedMethods[d];
          +
          +      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
          +    }
          +
          +    return DecoratedClass;
          +  };
          +
          +  var Observable = function () {
          +    this.listeners = {};
          +  };
          +
          +  Observable.prototype.on = function (event, callback) {
          +    this.listeners = this.listeners || {};
          +
          +    if (event in this.listeners) {
          +      this.listeners[event].push(callback);
          +    } else {
          +      this.listeners[event] = [callback];
          +    }
          +  };
          +
          +  Observable.prototype.trigger = function (event) {
          +    var slice = Array.prototype.slice;
          +    var params = slice.call(arguments, 1);
          +
          +    this.listeners = this.listeners || {};
          +
          +    // Params should always come in as an array
          +    if (params == null) {
          +      params = [];
          +    }
          +
          +    // If there are no arguments to the event, use a temporary object
          +    if (params.length === 0) {
          +      params.push({});
          +    }
          +
          +    // Set the `_type` of the first object to the event
          +    params[0]._type = event;
          +
          +    if (event in this.listeners) {
          +      this.invoke(this.listeners[event], slice.call(arguments, 1));
          +    }
          +
          +    if ('*' in this.listeners) {
          +      this.invoke(this.listeners['*'], arguments);
          +    }
          +  };
          +
          +  Observable.prototype.invoke = function (listeners, params) {
          +    for (var i = 0, len = listeners.length; i < len; i++) {
          +      listeners[i].apply(this, params);
          +    }
          +  };
          +
          +  Utils.Observable = Observable;
          +
          +  Utils.generateChars = function (length) {
          +    var chars = '';
          +
          +    for (var i = 0; i < length; i++) {
          +      var randomChar = Math.floor(Math.random() * 36);
          +      chars += randomChar.toString(36);
          +    }
          +
          +    return chars;
          +  };
          +
          +  Utils.bind = function (func, context) {
          +    return function () {
          +      func.apply(context, arguments);
          +    };
          +  };
          +
          +  Utils._convertData = function (data) {
          +    for (var originalKey in data) {
          +      var keys = originalKey.split('-');
          +
          +      var dataLevel = data;
          +
          +      if (keys.length === 1) {
          +        continue;
          +      }
          +
          +      for (var k = 0; k < keys.length; k++) {
          +        var key = keys[k];
          +
          +        // Lowercase the first letter
          +        // By default, dash-separated becomes camelCase
          +        key = key.substring(0, 1).toLowerCase() + key.substring(1);
          +
          +        if (!(key in dataLevel)) {
          +          dataLevel[key] = {};
          +        }
          +
          +        if (k == keys.length - 1) {
          +          dataLevel[key] = data[originalKey];
          +        }
          +
          +        dataLevel = dataLevel[key];
          +      }
          +
          +      delete data[originalKey];
          +    }
          +
          +    return data;
          +  };
          +
          +  Utils.hasScroll = function (index, el) {
          +    // Adapted from the function created by @ShadowScripter
          +    // and adapted by @BillBarry on the Stack Exchange Code Review website.
          +    // The original code can be found at
          +    // http://codereview.stackexchange.com/q/13338
          +    // and was designed to be used with the Sizzle selector engine.
          +
          +    var $el = $(el);
          +    var overflowX = el.style.overflowX;
          +    var overflowY = el.style.overflowY;
          +
          +    //Check both x and y declarations
          +    if (overflowX === overflowY &&
          +        (overflowY === 'hidden' || overflowY === 'visible')) {
          +      return false;
          +    }
          +
          +    if (overflowX === 'scroll' || overflowY === 'scroll') {
          +      return true;
          +    }
          +
          +    return ($el.innerHeight() < el.scrollHeight ||
          +      $el.innerWidth() < el.scrollWidth);
          +  };
          +
          +  Utils.escapeMarkup = function (markup) {
          +    var replaceMap = {
          +      '\\': '&#92;',
          +      '&': '&amp;',
          +      '<': '&lt;',
          +      '>': '&gt;',
          +      '"': '&quot;',
          +      '\'': '&#39;',
          +      '/': '&#47;'
          +    };
          +
          +    // Do not try to escape the markup if it's not a string
          +    if (typeof markup !== 'string') {
          +      return markup;
          +    }
          +
          +    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
          +      return replaceMap[match];
          +    });
          +  };
          +
          +  // Append an array of jQuery nodes to a given element.
          +  Utils.appendMany = function ($element, $nodes) {
          +    // jQuery 1.7.x does not support $.fn.append() with an array
          +    // Fall back to a jQuery object collection using $.fn.add()
          +    if ($.fn.jquery.substr(0, 3) === '1.7') {
          +      var $jqNodes = $();
          +
          +      $.map($nodes, function (node) {
          +        $jqNodes = $jqNodes.add(node);
          +      });
          +
          +      $nodes = $jqNodes;
          +    }
          +
          +    $element.append($nodes);
          +  };
          +
          +  return Utils;
          +});
          +
          +S2.define('select2/results',[
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Results ($element, options, dataAdapter) {
          +    this.$element = $element;
          +    this.data = dataAdapter;
          +    this.options = options;
          +
          +    Results.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Results, Utils.Observable);
          +
          +  Results.prototype.render = function () {
          +    var $results = $(
          +      '<ul class="select2-results__options" role="tree"></ul>'
          +    );
          +
          +    if (this.options.get('multiple')) {
          +      $results.attr('aria-multiselectable', 'true');
          +    }
          +
          +    this.$results = $results;
          +
          +    return $results;
          +  };
          +
          +  Results.prototype.clear = function () {
          +    this.$results.empty();
          +  };
          +
          +  Results.prototype.displayMessage = function (params) {
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    this.clear();
          +    this.hideLoading();
          +
          +    var $message = $(
          +      '<li role="treeitem" aria-live="assertive"' +
          +      ' class="select2-results__option"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get(params.message);
          +
          +    $message.append(
          +      escapeMarkup(
          +        message(params.args)
          +      )
          +    );
          +
          +    $message[0].className += ' select2-results__message';
          +
          +    this.$results.append($message);
          +  };
          +
          +  Results.prototype.hideMessages = function () {
          +    this.$results.find('.select2-results__message').remove();
          +  };
          +
          +  Results.prototype.append = function (data) {
          +    this.hideLoading();
          +
          +    var $options = [];
          +
          +    if (data.results == null || data.results.length === 0) {
          +      if (this.$results.children().length === 0) {
          +        this.trigger('results:message', {
          +          message: 'noResults'
          +        });
          +      }
          +
          +      return;
          +    }
          +
          +    data.results = this.sort(data.results);
          +
          +    for (var d = 0; d < data.results.length; d++) {
          +      var item = data.results[d];
          +
          +      var $option = this.option(item);
          +
          +      $options.push($option);
          +    }
          +
          +    this.$results.append($options);
          +  };
          +
          +  Results.prototype.position = function ($results, $dropdown) {
          +    var $resultsContainer = $dropdown.find('.select2-results');
          +    $resultsContainer.append($results);
          +  };
          +
          +  Results.prototype.sort = function (data) {
          +    var sorter = this.options.get('sorter');
          +
          +    return sorter(data);
          +  };
          +
          +  Results.prototype.highlightFirstItem = function () {
          +    var $options = this.$results
          +      .find('.select2-results__option[aria-selected]');
          +
          +    var $selected = $options.filter('[aria-selected=true]');
          +
          +    // Check if there are any selected options
          +    if ($selected.length > 0) {
          +      // If there are selected options, highlight the first
          +      $selected.first().trigger('mouseenter');
          +    } else {
          +      // If there are no selected options, highlight the first option
          +      // in the dropdown
          +      $options.first().trigger('mouseenter');
          +    }
          +
          +    this.ensureHighlightVisible();
          +  };
          +
          +  Results.prototype.setClasses = function () {
          +    var self = this;
          +
          +    this.data.current(function (selected) {
          +      var selectedIds = $.map(selected, function (s) {
          +        return s.id.toString();
          +      });
          +
          +      var $options = self.$results
          +        .find('.select2-results__option[aria-selected]');
          +
          +      $options.each(function () {
          +        var $option = $(this);
          +
          +        var item = $.data(this, 'data');
          +
          +        // id needs to be converted to a string when comparing
          +        var id = '' + item.id;
          +
          +        if ((item.element != null && item.element.selected) ||
          +            (item.element == null && $.inArray(id, selectedIds) > -1)) {
          +          $option.attr('aria-selected', 'true');
          +        } else {
          +          $option.attr('aria-selected', 'false');
          +        }
          +      });
          +
          +    });
          +  };
          +
          +  Results.prototype.showLoading = function (params) {
          +    this.hideLoading();
          +
          +    var loadingMore = this.options.get('translations').get('searching');
          +
          +    var loading = {
          +      disabled: true,
          +      loading: true,
          +      text: loadingMore(params)
          +    };
          +    var $loading = this.option(loading);
          +    $loading.className += ' loading-results';
          +
          +    this.$results.prepend($loading);
          +  };
          +
          +  Results.prototype.hideLoading = function () {
          +    this.$results.find('.loading-results').remove();
          +  };
          +
          +  Results.prototype.option = function (data) {
          +    var option = document.createElement('li');
          +    option.className = 'select2-results__option';
          +
          +    var attrs = {
          +      'role': 'treeitem',
          +      'aria-selected': 'false'
          +    };
          +
          +    if (data.disabled) {
          +      delete attrs['aria-selected'];
          +      attrs['aria-disabled'] = 'true';
          +    }
          +
          +    if (data.id == null) {
          +      delete attrs['aria-selected'];
          +    }
          +
          +    if (data._resultId != null) {
          +      option.id = data._resultId;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    if (data.children) {
          +      attrs.role = 'group';
          +      attrs['aria-label'] = data.text;
          +      delete attrs['aria-selected'];
          +    }
          +
          +    for (var attr in attrs) {
          +      var val = attrs[attr];
          +
          +      option.setAttribute(attr, val);
          +    }
          +
          +    if (data.children) {
          +      var $option = $(option);
          +
          +      var label = document.createElement('strong');
          +      label.className = 'select2-results__group';
          +
          +      var $label = $(label);
          +      this.template(data, label);
          +
          +      var $children = [];
          +
          +      for (var c = 0; c < data.children.length; c++) {
          +        var child = data.children[c];
          +
          +        var $child = this.option(child);
          +
          +        $children.push($child);
          +      }
          +
          +      var $childrenContainer = $('<ul></ul>', {
          +        'class': 'select2-results__options select2-results__options--nested'
          +      });
          +
          +      $childrenContainer.append($children);
          +
          +      $option.append(label);
          +      $option.append($childrenContainer);
          +    } else {
          +      this.template(data, option);
          +    }
          +
          +    $.data(option, 'data', data);
          +
          +    return option;
          +  };
          +
          +  Results.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-results';
          +
          +    this.$results.attr('id', id);
          +
          +    container.on('results:all', function (params) {
          +      self.clear();
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +        self.highlightFirstItem();
          +      }
          +    });
          +
          +    container.on('results:append', function (params) {
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +      }
          +    });
          +
          +    container.on('query', function (params) {
          +      self.hideMessages();
          +      self.showLoading(params);
          +    });
          +
          +    container.on('select', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('unselect', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expended="true"
          +      self.$results.attr('aria-expanded', 'true');
          +      self.$results.attr('aria-hidden', 'false');
          +
          +      self.setClasses();
          +      self.ensureHighlightVisible();
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expended="false"
          +      self.$results.attr('aria-expanded', 'false');
          +      self.$results.attr('aria-hidden', 'true');
          +      self.$results.removeAttr('aria-activedescendant');
          +    });
          +
          +    container.on('results:toggle', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      $highlighted.trigger('mouseup');
          +    });
          +
          +    container.on('results:select', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      var data = $highlighted.data('data');
          +
          +      if ($highlighted.attr('aria-selected') == 'true') {
          +        self.trigger('close', {});
          +      } else {
          +        self.trigger('select', {
          +          data: data
          +        });
          +      }
          +    });
          +
          +    container.on('results:previous', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      // If we are already at te top, don't move further
          +      if (currentIndex === 0) {
          +        return;
          +      }
          +
          +      var nextIndex = currentIndex - 1;
          +
          +      // If none are highlighted, highlight the first
          +      if ($highlighted.length === 0) {
          +        nextIndex = 0;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top;
          +      var nextTop = $next.offset().top;
          +      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextTop - currentOffset < 0) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:next', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      var nextIndex = currentIndex + 1;
          +
          +      // If we are at the last option, stay there
          +      if (nextIndex >= $options.length) {
          +        return;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var nextBottom = $next.offset().top + $next.outerHeight(false);
          +      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextBottom > currentOffset) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      params.element.addClass('select2-results__option--highlighted');
          +    });
          +
          +    container.on('results:message', function (params) {
          +      self.displayMessage(params);
          +    });
          +
          +    if ($.fn.mousewheel) {
          +      this.$results.on('mousewheel', function (e) {
          +        var top = self.$results.scrollTop();
          +
          +        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
          +
          +        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
          +        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
          +
          +        if (isAtTop) {
          +          self.$results.scrollTop(0);
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        } else if (isAtBottom) {
          +          self.$results.scrollTop(
          +            self.$results.get(0).scrollHeight - self.$results.height()
          +          );
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        }
          +      });
          +    }
          +
          +    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var $this = $(this);
          +
          +      var data = $this.data('data');
          +
          +      if ($this.attr('aria-selected') === 'true') {
          +        if (self.options.get('multiple')) {
          +          self.trigger('unselect', {
          +            originalEvent: evt,
          +            data: data
          +          });
          +        } else {
          +          self.trigger('close', {});
          +        }
          +
          +        return;
          +      }
          +
          +      self.trigger('select', {
          +        originalEvent: evt,
          +        data: data
          +      });
          +    });
          +
          +    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var data = $(this).data('data');
          +
          +      self.getHighlightedResults()
          +          .removeClass('select2-results__option--highlighted');
          +
          +      self.trigger('results:focus', {
          +        data: data,
          +        element: $(this)
          +      });
          +    });
          +  };
          +
          +  Results.prototype.getHighlightedResults = function () {
          +    var $highlighted = this.$results
          +    .find('.select2-results__option--highlighted');
          +
          +    return $highlighted;
          +  };
          +
          +  Results.prototype.destroy = function () {
          +    this.$results.remove();
          +  };
          +
          +  Results.prototype.ensureHighlightVisible = function () {
          +    var $highlighted = this.getHighlightedResults();
          +
          +    if ($highlighted.length === 0) {
          +      return;
          +    }
          +
          +    var $options = this.$results.find('[aria-selected]');
          +
          +    var currentIndex = $options.index($highlighted);
          +
          +    var currentOffset = this.$results.offset().top;
          +    var nextTop = $highlighted.offset().top;
          +    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
          +
          +    var offsetDelta = nextTop - currentOffset;
          +    nextOffset -= $highlighted.outerHeight(false) * 2;
          +
          +    if (currentIndex <= 2) {
          +      this.$results.scrollTop(0);
          +    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
          +      this.$results.scrollTop(nextOffset);
          +    }
          +  };
          +
          +  Results.prototype.template = function (result, container) {
          +    var template = this.options.get('templateResult');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    var content = template(result, container);
          +
          +    if (content == null) {
          +      container.style.display = 'none';
          +    } else if (typeof content === 'string') {
          +      container.innerHTML = escapeMarkup(content);
          +    } else {
          +      $(container).append(content);
          +    }
          +  };
          +
          +  return Results;
          +});
          +
          +S2.define('select2/keys',[
          +
          +], function () {
          +  var KEYS = {
          +    BACKSPACE: 8,
          +    TAB: 9,
          +    ENTER: 13,
          +    SHIFT: 16,
          +    CTRL: 17,
          +    ALT: 18,
          +    ESC: 27,
          +    SPACE: 32,
          +    PAGE_UP: 33,
          +    PAGE_DOWN: 34,
          +    END: 35,
          +    HOME: 36,
          +    LEFT: 37,
          +    UP: 38,
          +    RIGHT: 39,
          +    DOWN: 40,
          +    DELETE: 46
          +  };
          +
          +  return KEYS;
          +});
          +
          +S2.define('select2/selection/base',[
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function BaseSelection ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    BaseSelection.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseSelection, Utils.Observable);
          +
          +  BaseSelection.prototype.render = function () {
          +    var $selection = $(
          +      '<span class="select2-selection" role="combobox" ' +
          +      ' aria-haspopup="true" aria-expanded="false">' +
          +      '</span>'
          +    );
          +
          +    this._tabindex = 0;
          +
          +    if (this.$element.data('old-tabindex') != null) {
          +      this._tabindex = this.$element.data('old-tabindex');
          +    } else if (this.$element.attr('tabindex') != null) {
          +      this._tabindex = this.$element.attr('tabindex');
          +    }
          +
          +    $selection.attr('title', this.$element.attr('title'));
          +    $selection.attr('tabindex', this._tabindex);
          +
          +    this.$selection = $selection;
          +
          +    return $selection;
          +  };
          +
          +  BaseSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-container';
          +    var resultsId = container.id + '-results';
          +
          +    this.container = container;
          +
          +    this.$selection.on('focus', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      if (evt.which === KEYS.SPACE) {
          +        evt.preventDefault();
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$selection.attr('aria-activedescendant', params.data._resultId);
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expanded="true"
          +      self.$selection.attr('aria-expanded', 'true');
          +      self.$selection.attr('aria-owns', resultsId);
          +
          +      self._attachCloseHandler(container);
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expanded="false"
          +      self.$selection.attr('aria-expanded', 'false');
          +      self.$selection.removeAttr('aria-activedescendant');
          +      self.$selection.removeAttr('aria-owns');
          +
          +      self.$selection.focus();
          +
          +      self._detachCloseHandler(container);
          +    });
          +
          +    container.on('enable', function () {
          +      self.$selection.attr('tabindex', self._tabindex);
          +    });
          +
          +    container.on('disable', function () {
          +      self.$selection.attr('tabindex', '-1');
          +    });
          +  };
          +
          +  BaseSelection.prototype._handleBlur = function (evt) {
          +    var self = this;
          +
          +    // This needs to be delayed as the active element is the body when the tab
          +    // key is pressed, possibly along with others.
          +    window.setTimeout(function () {
          +      // Don't trigger `blur` if the focus is still in the selection
          +      if (
          +        (document.activeElement == self.$selection[0]) ||
          +        ($.contains(self.$selection[0], document.activeElement))
          +      ) {
          +        return;
          +      }
          +
          +      self.trigger('blur', evt);
          +    }, 1);
          +  };
          +
          +  BaseSelection.prototype._attachCloseHandler = function (container) {
          +    var self = this;
          +
          +    $(document.body).on('mousedown.select2.' + container.id, function (e) {
          +      var $target = $(e.target);
          +
          +      var $select = $target.closest('.select2');
          +
          +      var $all = $('.select2.select2-container--open');
          +
          +      $all.each(function () {
          +        var $this = $(this);
          +
          +        if (this == $select[0]) {
          +          return;
          +        }
          +
          +        var $element = $this.data('element');
          +
          +        $element.select2('close');
          +      });
          +    });
          +  };
          +
          +  BaseSelection.prototype._detachCloseHandler = function (container) {
          +    $(document.body).off('mousedown.select2.' + container.id);
          +  };
          +
          +  BaseSelection.prototype.position = function ($selection, $container) {
          +    var $selectionContainer = $container.find('.selection');
          +    $selectionContainer.append($selection);
          +  };
          +
          +  BaseSelection.prototype.destroy = function () {
          +    this._detachCloseHandler(this.container);
          +  };
          +
          +  BaseSelection.prototype.update = function (data) {
          +    throw new Error('The `update` method must be defined in child classes.');
          +  };
          +
          +  return BaseSelection;
          +});
          +
          +S2.define('select2/selection/single',[
          +  'jquery',
          +  './base',
          +  '../utils',
          +  '../keys'
          +], function ($, BaseSelection, Utils, KEYS) {
          +  function SingleSelection () {
          +    SingleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(SingleSelection, BaseSelection);
          +
          +  SingleSelection.prototype.render = function () {
          +    var $selection = SingleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--single');
          +
          +    $selection.html(
          +      '<span class="select2-selection__rendered"></span>' +
          +      '<span class="select2-selection__arrow" role="presentation">' +
          +        '<b role="presentation"></b>' +
          +      '</span>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  SingleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    SingleSelection.__super__.bind.apply(this, arguments);
          +
          +    var id = container.id + '-container';
          +
          +    this.$selection.find('.select2-selection__rendered').attr('id', id);
          +    this.$selection.attr('aria-labelledby', id);
          +
          +    this.$selection.on('mousedown', function (evt) {
          +      // Only respond to left clicks
          +      if (evt.which !== 1) {
          +        return;
          +      }
          +
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on('focus', function (evt) {
          +      // User focuses on the container
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      // User exits the container
          +    });
          +
          +    container.on('focus', function (evt) {
          +      if (!container.isOpen()) {
          +        self.$selection.focus();
          +      }
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +  };
          +
          +  SingleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  SingleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  SingleSelection.prototype.selectionContainer = function () {
          +    return $('<span></span>');
          +  };
          +
          +  SingleSelection.prototype.update = function (data) {
          +    if (data.length === 0) {
          +      this.clear();
          +      return;
          +    }
          +
          +    var selection = data[0];
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +    var formatted = this.display(selection, $rendered);
          +
          +    $rendered.empty().append(formatted);
          +    $rendered.prop('title', selection.title || selection.text);
          +  };
          +
          +  return SingleSelection;
          +});
          +
          +S2.define('select2/selection/multiple',[
          +  'jquery',
          +  './base',
          +  '../utils'
          +], function ($, BaseSelection, Utils) {
          +  function MultipleSelection ($element, options) {
          +    MultipleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(MultipleSelection, BaseSelection);
          +
          +  MultipleSelection.prototype.render = function () {
          +    var $selection = MultipleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--multiple');
          +
          +    $selection.html(
          +      '<ul class="select2-selection__rendered"></ul>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  MultipleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    MultipleSelection.__super__.bind.apply(this, arguments);
          +
          +    this.$selection.on('click', function (evt) {
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on(
          +      'click',
          +      '.select2-selection__choice__remove',
          +      function (evt) {
          +        // Ignore the event if it is disabled
          +        if (self.options.get('disabled')) {
          +          return;
          +        }
          +
          +        var $remove = $(this);
          +        var $selection = $remove.parent();
          +
          +        var data = $selection.data('data');
          +
          +        self.trigger('unselect', {
          +          originalEvent: evt,
          +          data: data
          +        });
          +      }
          +    );
          +  };
          +
          +  MultipleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  MultipleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  MultipleSelection.prototype.selectionContainer = function () {
          +    var $container = $(
          +      '<li class="select2-selection__choice">' +
          +        '<span class="select2-selection__choice__remove" role="presentation">' +
          +          '&times;' +
          +        '</span>' +
          +      '</li>'
          +    );
          +
          +    return $container;
          +  };
          +
          +  MultipleSelection.prototype.update = function (data) {
          +    this.clear();
          +
          +    if (data.length === 0) {
          +      return;
          +    }
          +
          +    var $selections = [];
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var selection = data[d];
          +
          +      var $selection = this.selectionContainer();
          +      var formatted = this.display(selection, $selection);
          +
          +      $selection.append(formatted);
          +      $selection.prop('title', selection.title || selection.text);
          +
          +      $selection.data('data', selection);
          +
          +      $selections.push($selection);
          +    }
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +
          +    Utils.appendMany($rendered, $selections);
          +  };
          +
          +  return MultipleSelection;
          +});
          +
          +S2.define('select2/selection/placeholder',[
          +  '../utils'
          +], function (Utils) {
          +  function Placeholder (decorated, $element, options) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
          +    var $placeholder = this.selectionContainer();
          +
          +    $placeholder.html(this.display(placeholder));
          +    $placeholder.addClass('select2-selection__placeholder')
          +                .removeClass('select2-selection__choice');
          +
          +    return $placeholder;
          +  };
          +
          +  Placeholder.prototype.update = function (decorated, data) {
          +    var singlePlaceholder = (
          +      data.length == 1 && data[0].id != this.placeholder.id
          +    );
          +    var multipleSelections = data.length > 1;
          +
          +    if (multipleSelections || singlePlaceholder) {
          +      return decorated.call(this, data);
          +    }
          +
          +    this.clear();
          +
          +    var $placeholder = this.createPlaceholder(this.placeholder);
          +
          +    this.$selection.find('.select2-selection__rendered').append($placeholder);
          +  };
          +
          +  return Placeholder;
          +});
          +
          +S2.define('select2/selection/allowClear',[
          +  'jquery',
          +  '../keys'
          +], function ($, KEYS) {
          +  function AllowClear () { }
          +
          +  AllowClear.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    if (this.placeholder == null) {
          +      if (this.options.get('debug') && window.console && console.error) {
          +        console.error(
          +          'Select2: The `allowClear` option should be used in combination ' +
          +          'with the `placeholder` option.'
          +        );
          +      }
          +    }
          +
          +    this.$selection.on('mousedown', '.select2-selection__clear',
          +      function (evt) {
          +        self._handleClear(evt);
          +    });
          +
          +    container.on('keypress', function (evt) {
          +      self._handleKeyboardClear(evt, container);
          +    });
          +  };
          +
          +  AllowClear.prototype._handleClear = function (_, evt) {
          +    // Ignore the event if it is disabled
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    var $clear = this.$selection.find('.select2-selection__clear');
          +
          +    // Ignore the event if nothing has been selected
          +    if ($clear.length === 0) {
          +      return;
          +    }
          +
          +    evt.stopPropagation();
          +
          +    var data = $clear.data('data');
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var unselectData = {
          +        data: data[d]
          +      };
          +
          +      // Trigger the `unselect` event, so people can prevent it from being
          +      // cleared.
          +      this.trigger('unselect', unselectData);
          +
          +      // If the event was prevented, don't clear it out.
          +      if (unselectData.prevented) {
          +        return;
          +      }
          +    }
          +
          +    this.$element.val(this.placeholder.id).trigger('change');
          +
          +    this.trigger('toggle', {});
          +  };
          +
          +  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
          +    if (container.isOpen()) {
          +      return;
          +    }
          +
          +    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
          +      this._handleClear(evt);
          +    }
          +  };
          +
          +  AllowClear.prototype.update = function (decorated, data) {
          +    decorated.call(this, data);
          +
          +    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
          +        data.length === 0) {
          +      return;
          +    }
          +
          +    var $remove = $(
          +      '<span class="select2-selection__clear">' +
          +        '&times;' +
          +      '</span>'
          +    );
          +    $remove.data('data', data);
          +
          +    this.$selection.find('.select2-selection__rendered').prepend($remove);
          +  };
          +
          +  return AllowClear;
          +});
          +
          +S2.define('select2/selection/search',[
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function Search (decorated, $element, options) {
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $search = $(
          +      '<li class="select2-search select2-search--inline">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
          +      '</li>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    var $rendered = decorated.call(this);
          +
          +    this._transferTabIndex();
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.val('');
          +      self.$search.removeAttr('aria-activedescendant');
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('enable', function () {
          +      self.$search.prop('disabled', false);
          +
          +      self._transferTabIndex();
          +    });
          +
          +    container.on('disable', function () {
          +      self.$search.prop('disabled', true);
          +    });
          +
          +    container.on('focus', function (evt) {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$search.attr('aria-activedescendant', params.id);
          +    });
          +
          +    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
          +      evt.stopPropagation();
          +
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +
          +      var key = evt.which;
          +
          +      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
          +        var $previousChoice = self.$searchContainer
          +          .prev('.select2-selection__choice');
          +
          +        if ($previousChoice.length > 0) {
          +          var item = $previousChoice.data('data');
          +
          +          self.searchRemoveChoice(item);
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +
          +    // Try to detect the IE version should the `documentMode` property that
          +    // is stored on the document. This is only implemented in IE and is
          +    // slightly cleaner than doing a user agent check.
          +    // This property is not available in Edge, but Edge also doesn't have
          +    // this bug.
          +    var msie = document.documentMode;
          +    var disableInputEvents = msie && msie <= 11;
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$selection.on(
          +      'input.searchcheck',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents) {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        // Unbind the duplicated `keyup` event
          +        self.$selection.off('keyup.search');
          +      }
          +    );
          +
          +    this.$selection.on(
          +      'keyup.search input.search',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents && evt.type === 'input') {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        var key = evt.which;
          +
          +        // We can freely ignore events from modifier keys
          +        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
          +          return;
          +        }
          +
          +        // Tabbing will be handled during the `keydown` phase
          +        if (key == KEYS.TAB) {
          +          return;
          +        }
          +
          +        self.handleSearch(evt);
          +      }
          +    );
          +  };
          +
          +  /**
          +   * This method will transfer the tabindex attribute from the rendered
          +   * selection to the search box. This allows for the search box to be used as
          +   * the primary focus instead of the selection container.
          +   *
          +   * @private
          +   */
          +  Search.prototype._transferTabIndex = function (decorated) {
          +    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
          +    this.$selection.attr('tabindex', '-1');
          +  };
          +
          +  Search.prototype.createPlaceholder = function (decorated, placeholder) {
          +    this.$search.attr('placeholder', placeholder.text);
          +  };
          +
          +  Search.prototype.update = function (decorated, data) {
          +    var searchHadFocus = this.$search[0] == document.activeElement;
          +
          +    this.$search.attr('placeholder', '');
          +
          +    decorated.call(this, data);
          +
          +    this.$selection.find('.select2-selection__rendered')
          +                   .append(this.$searchContainer);
          +
          +    this.resizeSearch();
          +    if (searchHadFocus) {
          +      this.$search.focus();
          +    }
          +  };
          +
          +  Search.prototype.handleSearch = function () {
          +    this.resizeSearch();
          +
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.searchRemoveChoice = function (decorated, item) {
          +    this.trigger('unselect', {
          +      data: item
          +    });
          +
          +    this.$search.val(item.text);
          +    this.handleSearch();
          +  };
          +
          +  Search.prototype.resizeSearch = function () {
          +    this.$search.css('width', '25px');
          +
          +    var width = '';
          +
          +    if (this.$search.attr('placeholder') !== '') {
          +      width = this.$selection.find('.select2-selection__rendered').innerWidth();
          +    } else {
          +      var minimumWidth = this.$search.val().length + 1;
          +
          +      width = (minimumWidth * 0.75) + 'em';
          +    }
          +
          +    this.$search.css('width', width);
          +  };
          +
          +  return Search;
          +});
          +
          +S2.define('select2/selection/eventRelay',[
          +  'jquery'
          +], function ($) {
          +  function EventRelay () { }
          +
          +  EventRelay.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +    var relayEvents = [
          +      'open', 'opening',
          +      'close', 'closing',
          +      'select', 'selecting',
          +      'unselect', 'unselecting'
          +    ];
          +
          +    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('*', function (name, params) {
          +      // Ignore events that should not be relayed
          +      if ($.inArray(name, relayEvents) === -1) {
          +        return;
          +      }
          +
          +      // The parameters should always be an object
          +      params = params || {};
          +
          +      // Generate the jQuery event for the Select2 event
          +      var evt = $.Event('select2:' + name, {
          +        params: params
          +      });
          +
          +      self.$element.trigger(evt);
          +
          +      // Only handle preventable events if it was one
          +      if ($.inArray(name, preventableEvents) === -1) {
          +        return;
          +      }
          +
          +      params.prevented = evt.isDefaultPrevented();
          +    });
          +  };
          +
          +  return EventRelay;
          +});
          +
          +S2.define('select2/translation',[
          +  'jquery',
          +  'require'
          +], function ($, require) {
          +  function Translation (dict) {
          +    this.dict = dict || {};
          +  }
          +
          +  Translation.prototype.all = function () {
          +    return this.dict;
          +  };
          +
          +  Translation.prototype.get = function (key) {
          +    return this.dict[key];
          +  };
          +
          +  Translation.prototype.extend = function (translation) {
          +    this.dict = $.extend({}, translation.all(), this.dict);
          +  };
          +
          +  // Static functions
          +
          +  Translation._cache = {};
          +
          +  Translation.loadPath = function (path) {
          +    if (!(path in Translation._cache)) {
          +      var translations = require(path);
          +
          +      Translation._cache[path] = translations;
          +    }
          +
          +    return new Translation(Translation._cache[path]);
          +  };
          +
          +  return Translation;
          +});
          +
          +S2.define('select2/diacritics',[
          +
          +], function () {
          +  var 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',
          +    '\u0386': '\u0391',
          +    '\u0388': '\u0395',
          +    '\u0389': '\u0397',
          +    '\u038A': '\u0399',
          +    '\u03AA': '\u0399',
          +    '\u038C': '\u039F',
          +    '\u038E': '\u03A5',
          +    '\u03AB': '\u03A5',
          +    '\u038F': '\u03A9',
          +    '\u03AC': '\u03B1',
          +    '\u03AD': '\u03B5',
          +    '\u03AE': '\u03B7',
          +    '\u03AF': '\u03B9',
          +    '\u03CA': '\u03B9',
          +    '\u0390': '\u03B9',
          +    '\u03CC': '\u03BF',
          +    '\u03CD': '\u03C5',
          +    '\u03CB': '\u03C5',
          +    '\u03B0': '\u03C5',
          +    '\u03C9': '\u03C9',
          +    '\u03C2': '\u03C3'
          +  };
          +
          +  return diacritics;
          +});
          +
          +S2.define('select2/data/base',[
          +  '../utils'
          +], function (Utils) {
          +  function BaseAdapter ($element, options) {
          +    BaseAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseAdapter, Utils.Observable);
          +
          +  BaseAdapter.prototype.current = function (callback) {
          +    throw new Error('The `current` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.query = function (params, callback) {
          +    throw new Error('The `query` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.bind = function (container, $container) {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.destroy = function () {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.generateResultId = function (container, data) {
          +    var id = container.id + '-result-';
          +
          +    id += Utils.generateChars(4);
          +
          +    if (data.id != null) {
          +      id += '-' + data.id.toString();
          +    } else {
          +      id += '-' + Utils.generateChars(4);
          +    }
          +    return id;
          +  };
          +
          +  return BaseAdapter;
          +});
          +
          +S2.define('select2/data/select',[
          +  './base',
          +  '../utils',
          +  'jquery'
          +], function (BaseAdapter, Utils, $) {
          +  function SelectAdapter ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    SelectAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(SelectAdapter, BaseAdapter);
          +
          +  SelectAdapter.prototype.current = function (callback) {
          +    var data = [];
          +    var self = this;
          +
          +    this.$element.find(':selected').each(function () {
          +      var $option = $(this);
          +
          +      var option = self.item($option);
          +
          +      data.push(option);
          +    });
          +
          +    callback(data);
          +  };
          +
          +  SelectAdapter.prototype.select = function (data) {
          +    var self = this;
          +
          +    data.selected = true;
          +
          +    // If data.element is a DOM node, use it instead
          +    if ($(data.element).is('option')) {
          +      data.element.selected = true;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    if (this.$element.prop('multiple')) {
          +      this.current(function (currentData) {
          +        var val = [];
          +
          +        data = [data];
          +        data.push.apply(data, currentData);
          +
          +        for (var d = 0; d < data.length; d++) {
          +          var id = data[d].id;
          +
          +          if ($.inArray(id, val) === -1) {
          +            val.push(id);
          +          }
          +        }
          +
          +        self.$element.val(val);
          +        self.$element.trigger('change');
          +      });
          +    } else {
          +      var val = data.id;
          +
          +      this.$element.val(val);
          +      this.$element.trigger('change');
          +    }
          +  };
          +
          +  SelectAdapter.prototype.unselect = function (data) {
          +    var self = this;
          +
          +    if (!this.$element.prop('multiple')) {
          +      return;
          +    }
          +
          +    data.selected = false;
          +
          +    if ($(data.element).is('option')) {
          +      data.element.selected = false;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    this.current(function (currentData) {
          +      var val = [];
          +
          +      for (var d = 0; d < currentData.length; d++) {
          +        var id = currentData[d].id;
          +
          +        if (id !== data.id && $.inArray(id, val) === -1) {
          +          val.push(id);
          +        }
          +      }
          +
          +      self.$element.val(val);
          +
          +      self.$element.trigger('change');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    this.container = container;
          +
          +    container.on('select', function (params) {
          +      self.select(params.data);
          +    });
          +
          +    container.on('unselect', function (params) {
          +      self.unselect(params.data);
          +    });
          +  };
          +
          +  SelectAdapter.prototype.destroy = function () {
          +    // Remove anything added to child elements
          +    this.$element.find('*').each(function () {
          +      // Remove any custom data set by Select2
          +      $.removeData(this, 'data');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.query = function (params, callback) {
          +    var data = [];
          +    var self = this;
          +
          +    var $options = this.$element.children();
          +
          +    $options.each(function () {
          +      var $option = $(this);
          +
          +      if (!$option.is('option') && !$option.is('optgroup')) {
          +        return;
          +      }
          +
          +      var option = self.item($option);
          +
          +      var matches = self.matches(params, option);
          +
          +      if (matches !== null) {
          +        data.push(matches);
          +      }
          +    });
          +
          +    callback({
          +      results: data
          +    });
          +  };
          +
          +  SelectAdapter.prototype.addOptions = function ($options) {
          +    Utils.appendMany(this.$element, $options);
          +  };
          +
          +  SelectAdapter.prototype.option = function (data) {
          +    var option;
          +
          +    if (data.children) {
          +      option = document.createElement('optgroup');
          +      option.label = data.text;
          +    } else {
          +      option = document.createElement('option');
          +
          +      if (option.textContent !== undefined) {
          +        option.textContent = data.text;
          +      } else {
          +        option.innerText = data.text;
          +      }
          +    }
          +
          +    if (data.id) {
          +      option.value = data.id;
          +    }
          +
          +    if (data.disabled) {
          +      option.disabled = true;
          +    }
          +
          +    if (data.selected) {
          +      option.selected = true;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    var $option = $(option);
          +
          +    var normalizedData = this._normalizeItem(data);
          +    normalizedData.element = option;
          +
          +    // Override the option's data with the combined data
          +    $.data(option, 'data', normalizedData);
          +
          +    return $option;
          +  };
          +
          +  SelectAdapter.prototype.item = function ($option) {
          +    var data = {};
          +
          +    data = $.data($option[0], 'data');
          +
          +    if (data != null) {
          +      return data;
          +    }
          +
          +    if ($option.is('option')) {
          +      data = {
          +        id: $option.val(),
          +        text: $option.text(),
          +        disabled: $option.prop('disabled'),
          +        selected: $option.prop('selected'),
          +        title: $option.prop('title')
          +      };
          +    } else if ($option.is('optgroup')) {
          +      data = {
          +        text: $option.prop('label'),
          +        children: [],
          +        title: $option.prop('title')
          +      };
          +
          +      var $children = $option.children('option');
          +      var children = [];
          +
          +      for (var c = 0; c < $children.length; c++) {
          +        var $child = $($children[c]);
          +
          +        var child = this.item($child);
          +
          +        children.push(child);
          +      }
          +
          +      data.children = children;
          +    }
          +
          +    data = this._normalizeItem(data);
          +    data.element = $option[0];
          +
          +    $.data($option[0], 'data', data);
          +
          +    return data;
          +  };
          +
          +  SelectAdapter.prototype._normalizeItem = function (item) {
          +    if (!$.isPlainObject(item)) {
          +      item = {
          +        id: item,
          +        text: item
          +      };
          +    }
          +
          +    item = $.extend({}, {
          +      text: ''
          +    }, item);
          +
          +    var defaults = {
          +      selected: false,
          +      disabled: false
          +    };
          +
          +    if (item.id != null) {
          +      item.id = item.id.toString();
          +    }
          +
          +    if (item.text != null) {
          +      item.text = item.text.toString();
          +    }
          +
          +    if (item._resultId == null && item.id && this.container != null) {
          +      item._resultId = this.generateResultId(this.container, item);
          +    }
          +
          +    return $.extend({}, defaults, item);
          +  };
          +
          +  SelectAdapter.prototype.matches = function (params, data) {
          +    var matcher = this.options.get('matcher');
          +
          +    return matcher(params, data);
          +  };
          +
          +  return SelectAdapter;
          +});
          +
          +S2.define('select2/data/array',[
          +  './select',
          +  '../utils',
          +  'jquery'
          +], function (SelectAdapter, Utils, $) {
          +  function ArrayAdapter ($element, options) {
          +    var data = options.get('data') || [];
          +
          +    ArrayAdapter.__super__.constructor.call(this, $element, options);
          +
          +    this.addOptions(this.convertToOptions(data));
          +  }
          +
          +  Utils.Extend(ArrayAdapter, SelectAdapter);
          +
          +  ArrayAdapter.prototype.select = function (data) {
          +    var $option = this.$element.find('option').filter(function (i, elm) {
          +      return elm.value == data.id.toString();
          +    });
          +
          +    if ($option.length === 0) {
          +      $option = this.option(data);
          +
          +      this.addOptions($option);
          +    }
          +
          +    ArrayAdapter.__super__.select.call(this, data);
          +  };
          +
          +  ArrayAdapter.prototype.convertToOptions = function (data) {
          +    var self = this;
          +
          +    var $existing = this.$element.find('option');
          +    var existingIds = $existing.map(function () {
          +      return self.item($(this)).id;
          +    }).get();
          +
          +    var $options = [];
          +
          +    // Filter out all items except for the one passed in the argument
          +    function onlyItem (item) {
          +      return function () {
          +        return $(this).val() == item.id;
          +      };
          +    }
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = this._normalizeItem(data[d]);
          +
          +      // Skip items which were pre-loaded, only merge the data
          +      if ($.inArray(item.id, existingIds) >= 0) {
          +        var $existingOption = $existing.filter(onlyItem(item));
          +
          +        var existingData = this.item($existingOption);
          +        var newData = $.extend(true, {}, item, existingData);
          +
          +        var $newOption = this.option(newData);
          +
          +        $existingOption.replaceWith($newOption);
          +
          +        continue;
          +      }
          +
          +      var $option = this.option(item);
          +
          +      if (item.children) {
          +        var $children = this.convertToOptions(item.children);
          +
          +        Utils.appendMany($option, $children);
          +      }
          +
          +      $options.push($option);
          +    }
          +
          +    return $options;
          +  };
          +
          +  return ArrayAdapter;
          +});
          +
          +S2.define('select2/data/ajax',[
          +  './array',
          +  '../utils',
          +  'jquery'
          +], function (ArrayAdapter, Utils, $) {
          +  function AjaxAdapter ($element, options) {
          +    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
          +
          +    if (this.ajaxOptions.processResults != null) {
          +      this.processResults = this.ajaxOptions.processResults;
          +    }
          +
          +    AjaxAdapter.__super__.constructor.call(this, $element, options);
          +  }
          +
          +  Utils.Extend(AjaxAdapter, ArrayAdapter);
          +
          +  AjaxAdapter.prototype._applyDefaults = function (options) {
          +    var defaults = {
          +      data: function (params) {
          +        return $.extend({}, params, {
          +          q: params.term
          +        });
          +      },
          +      transport: function (params, success, failure) {
          +        var $request = $.ajax(params);
          +
          +        $request.then(success);
          +        $request.fail(failure);
          +
          +        return $request;
          +      }
          +    };
          +
          +    return $.extend({}, defaults, options, true);
          +  };
          +
          +  AjaxAdapter.prototype.processResults = function (results) {
          +    return results;
          +  };
          +
          +  AjaxAdapter.prototype.query = function (params, callback) {
          +    var matches = [];
          +    var self = this;
          +
          +    if (this._request != null) {
          +      // JSONP requests cannot always be aborted
          +      if ($.isFunction(this._request.abort)) {
          +        this._request.abort();
          +      }
          +
          +      this._request = null;
          +    }
          +
          +    var options = $.extend({
          +      type: 'GET'
          +    }, this.ajaxOptions);
          +
          +    if (typeof options.url === 'function') {
          +      options.url = options.url.call(this.$element, params);
          +    }
          +
          +    if (typeof options.data === 'function') {
          +      options.data = options.data.call(this.$element, params);
          +    }
          +
          +    function request () {
          +      var $request = options.transport(options, function (data) {
          +        var results = self.processResults(data, params);
          +
          +        if (self.options.get('debug') && window.console && console.error) {
          +          // Check to make sure that the response included a `results` key.
          +          if (!results || !results.results || !$.isArray(results.results)) {
          +            console.error(
          +              'Select2: The AJAX results did not return an array in the ' +
          +              '`results` key of the response.'
          +            );
          +          }
          +        }
          +
          +        callback(results);
          +      }, function () {
          +        // Attempt to detect if a request was aborted
          +        // Only works if the transport exposes a status property
          +        if ($request.status && $request.status === '0') {
          +          return;
          +        }
          +
          +        self.trigger('results:message', {
          +          message: 'errorLoading'
          +        });
          +      });
          +
          +      self._request = $request;
          +    }
          +
          +    if (this.ajaxOptions.delay && params.term != null) {
          +      if (this._queryTimeout) {
          +        window.clearTimeout(this._queryTimeout);
          +      }
          +
          +      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
          +    } else {
          +      request();
          +    }
          +  };
          +
          +  return AjaxAdapter;
          +});
          +
          +S2.define('select2/data/tags',[
          +  'jquery'
          +], function ($) {
          +  function Tags (decorated, $element, options) {
          +    var tags = options.get('tags');
          +
          +    var createTag = options.get('createTag');
          +
          +    if (createTag !== undefined) {
          +      this.createTag = createTag;
          +    }
          +
          +    var insertTag = options.get('insertTag');
          +
          +    if (insertTag !== undefined) {
          +        this.insertTag = insertTag;
          +    }
          +
          +    decorated.call(this, $element, options);
          +
          +    if ($.isArray(tags)) {
          +      for (var t = 0; t < tags.length; t++) {
          +        var tag = tags[t];
          +        var item = this._normalizeItem(tag);
          +
          +        var $option = this.option(item);
          +
          +        this.$element.append($option);
          +      }
          +    }
          +  }
          +
          +  Tags.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    this._removeOldTags();
          +
          +    if (params.term == null || params.page != null) {
          +      decorated.call(this, params, callback);
          +      return;
          +    }
          +
          +    function wrapper (obj, child) {
          +      var data = obj.results;
          +
          +      for (var i = 0; i < data.length; i++) {
          +        var option = data[i];
          +
          +        var checkChildren = (
          +          option.children != null &&
          +          !wrapper({
          +            results: option.children
          +          }, true)
          +        );
          +
          +        var checkText = option.text === params.term;
          +
          +        if (checkText || checkChildren) {
          +          if (child) {
          +            return false;
          +          }
          +
          +          obj.data = data;
          +          callback(obj);
          +
          +          return;
          +        }
          +      }
          +
          +      if (child) {
          +        return true;
          +      }
          +
          +      var tag = self.createTag(params);
          +
          +      if (tag != null) {
          +        var $option = self.option(tag);
          +        $option.attr('data-select2-tag', true);
          +
          +        self.addOptions([$option]);
          +
          +        self.insertTag(data, tag);
          +      }
          +
          +      obj.results = data;
          +
          +      callback(obj);
          +    }
          +
          +    decorated.call(this, params, wrapper);
          +  };
          +
          +  Tags.prototype.createTag = function (decorated, params) {
          +    var term = $.trim(params.term);
          +
          +    if (term === '') {
          +      return null;
          +    }
          +
          +    return {
          +      id: term,
          +      text: term
          +    };
          +  };
          +
          +  Tags.prototype.insertTag = function (_, data, tag) {
          +    data.unshift(tag);
          +  };
          +
          +  Tags.prototype._removeOldTags = function (_) {
          +    var tag = this._lastTag;
          +
          +    var $options = this.$element.find('option[data-select2-tag]');
          +
          +    $options.each(function () {
          +      if (this.selected) {
          +        return;
          +      }
          +
          +      $(this).remove();
          +    });
          +  };
          +
          +  return Tags;
          +});
          +
          +S2.define('select2/data/tokenizer',[
          +  'jquery'
          +], function ($) {
          +  function Tokenizer (decorated, $element, options) {
          +    var tokenizer = options.get('tokenizer');
          +
          +    if (tokenizer !== undefined) {
          +      this.tokenizer = tokenizer;
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Tokenizer.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    this.$search =  container.dropdown.$search || container.selection.$search ||
          +      $container.find('.select2-search__field');
          +  };
          +
          +  Tokenizer.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    function createAndSelect (data) {
          +      // Normalize the data object so we can use it for checks
          +      var item = self._normalizeItem(data);
          +
          +      // Check if the data object already exists as a tag
          +      // Select it if it doesn't
          +      var $existingOptions = self.$element.find('option').filter(function () {
          +        return $(this).val() === item.id;
          +      });
          +
          +      // If an existing option wasn't found for it, create the option
          +      if (!$existingOptions.length) {
          +        var $option = self.option(item);
          +        $option.attr('data-select2-tag', true);
          +
          +        self._removeOldTags();
          +        self.addOptions([$option]);
          +      }
          +
          +      // Select the item, now that we know there is an option for it
          +      select(item);
          +    }
          +
          +    function select (data) {
          +      self.trigger('select', {
          +        data: data
          +      });
          +    }
          +
          +    params.term = params.term || '';
          +
          +    var tokenData = this.tokenizer(params, this.options, createAndSelect);
          +
          +    if (tokenData.term !== params.term) {
          +      // Replace the search term if we have the search box
          +      if (this.$search.length) {
          +        this.$search.val(tokenData.term);
          +        this.$search.focus();
          +      }
          +
          +      params.term = tokenData.term;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
          +    var separators = options.get('tokenSeparators') || [];
          +    var term = params.term;
          +    var i = 0;
          +
          +    var createTag = this.createTag || function (params) {
          +      return {
          +        id: params.term,
          +        text: params.term
          +      };
          +    };
          +
          +    while (i < term.length) {
          +      var termChar = term[i];
          +
          +      if ($.inArray(termChar, separators) === -1) {
          +        i++;
          +
          +        continue;
          +      }
          +
          +      var part = term.substr(0, i);
          +      var partParams = $.extend({}, params, {
          +        term: part
          +      });
          +
          +      var data = createTag(partParams);
          +
          +      if (data == null) {
          +        i++;
          +        continue;
          +      }
          +
          +      callback(data);
          +
          +      // Reset the term to not include the tokenized portion
          +      term = term.substr(i + 1) || '';
          +      i = 0;
          +    }
          +
          +    return {
          +      term: term
          +    };
          +  };
          +
          +  return Tokenizer;
          +});
          +
          +S2.define('select2/data/minimumInputLength',[
          +
          +], function () {
          +  function MinimumInputLength (decorated, $e, options) {
          +    this.minimumInputLength = options.get('minimumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MinimumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (params.term.length < this.minimumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooShort',
          +        args: {
          +          minimum: this.minimumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MinimumInputLength;
          +});
          +
          +S2.define('select2/data/maximumInputLength',[
          +
          +], function () {
          +  function MaximumInputLength (decorated, $e, options) {
          +    this.maximumInputLength = options.get('maximumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (this.maximumInputLength > 0 &&
          +        params.term.length > this.maximumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooLong',
          +        args: {
          +          maximum: this.maximumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MaximumInputLength;
          +});
          +
          +S2.define('select2/data/maximumSelectionLength',[
          +
          +], function (){
          +  function MaximumSelectionLength (decorated, $e, options) {
          +    this.maximumSelectionLength = options.get('maximumSelectionLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumSelectionLength.prototype.query =
          +    function (decorated, params, callback) {
          +      var self = this;
          +
          +      this.current(function (currentData) {
          +        var count = currentData != null ? currentData.length : 0;
          +        if (self.maximumSelectionLength > 0 &&
          +          count >= self.maximumSelectionLength) {
          +          self.trigger('results:message', {
          +            message: 'maximumSelected',
          +            args: {
          +              maximum: self.maximumSelectionLength
          +            }
          +          });
          +          return;
          +        }
          +        decorated.call(self, params, callback);
          +      });
          +  };
          +
          +  return MaximumSelectionLength;
          +});
          +
          +S2.define('select2/dropdown',[
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Dropdown ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    Dropdown.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Dropdown, Utils.Observable);
          +
          +  Dropdown.prototype.render = function () {
          +    var $dropdown = $(
          +      '<span class="select2-dropdown">' +
          +        '<span class="select2-results"></span>' +
          +      '</span>'
          +    );
          +
          +    $dropdown.attr('dir', this.options.get('dir'));
          +
          +    this.$dropdown = $dropdown;
          +
          +    return $dropdown;
          +  };
          +
          +  Dropdown.prototype.bind = function () {
          +    // Should be implemented in subclasses
          +  };
          +
          +  Dropdown.prototype.position = function ($dropdown, $container) {
          +    // Should be implmented in subclasses
          +  };
          +
          +  Dropdown.prototype.destroy = function () {
          +    // Remove the dropdown from the DOM
          +    this.$dropdown.remove();
          +  };
          +
          +  return Dropdown;
          +});
          +
          +S2.define('select2/dropdown/search',[
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function Search () { }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $rendered = decorated.call(this);
          +
          +    var $search = $(
          +      '<span class="select2-search select2-search--dropdown">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" />' +
          +      '</span>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    $rendered.prepend($search);
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    this.$search.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +    });
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$search.on('input', function (evt) {
          +      // Unbind the duplicated `keyup` event
          +      $(this).off('keyup');
          +    });
          +
          +    this.$search.on('keyup input', function (evt) {
          +      self.handleSearch(evt);
          +    });
          +
          +    container.on('open', function () {
          +      self.$search.attr('tabindex', 0);
          +
          +      self.$search.focus();
          +
          +      window.setTimeout(function () {
          +        self.$search.focus();
          +      }, 0);
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.attr('tabindex', -1);
          +
          +      self.$search.val('');
          +    });
          +
          +    container.on('focus', function () {
          +      if (container.isOpen()) {
          +        self.$search.focus();
          +      }
          +    });
          +
          +    container.on('results:all', function (params) {
          +      if (params.query.term == null || params.query.term === '') {
          +        var showSearch = self.showSearch(params);
          +
          +        if (showSearch) {
          +          self.$searchContainer.removeClass('select2-search--hide');
          +        } else {
          +          self.$searchContainer.addClass('select2-search--hide');
          +        }
          +      }
          +    });
          +  };
          +
          +  Search.prototype.handleSearch = function (evt) {
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.showSearch = function (_, params) {
          +    return true;
          +  };
          +
          +  return Search;
          +});
          +
          +S2.define('select2/dropdown/hidePlaceholder',[
          +
          +], function () {
          +  function HidePlaceholder (decorated, $element, options, dataAdapter) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  HidePlaceholder.prototype.append = function (decorated, data) {
          +    data.results = this.removePlaceholder(data.results);
          +
          +    decorated.call(this, data);
          +  };
          +
          +  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
          +    var modifiedData = data.slice(0);
          +
          +    for (var d = data.length - 1; d >= 0; d--) {
          +      var item = data[d];
          +
          +      if (this.placeholder.id === item.id) {
          +        modifiedData.splice(d, 1);
          +      }
          +    }
          +
          +    return modifiedData;
          +  };
          +
          +  return HidePlaceholder;
          +});
          +
          +S2.define('select2/dropdown/infiniteScroll',[
          +  'jquery'
          +], function ($) {
          +  function InfiniteScroll (decorated, $element, options, dataAdapter) {
          +    this.lastParams = {};
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +
          +    this.$loadingMore = this.createLoadingMore();
          +    this.loading = false;
          +  }
          +
          +  InfiniteScroll.prototype.append = function (decorated, data) {
          +    this.$loadingMore.remove();
          +    this.loading = false;
          +
          +    decorated.call(this, data);
          +
          +    if (this.showLoadingMore(data)) {
          +      this.$results.append(this.$loadingMore);
          +    }
          +  };
          +
          +  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('query', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    container.on('query:append', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    this.$results.on('scroll', function () {
          +      var isLoadMoreVisible = $.contains(
          +        document.documentElement,
          +        self.$loadingMore[0]
          +      );
          +
          +      if (self.loading || !isLoadMoreVisible) {
          +        return;
          +      }
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var loadingMoreOffset = self.$loadingMore.offset().top +
          +        self.$loadingMore.outerHeight(false);
          +
          +      if (currentOffset + 50 >= loadingMoreOffset) {
          +        self.loadMore();
          +      }
          +    });
          +  };
          +
          +  InfiniteScroll.prototype.loadMore = function () {
          +    this.loading = true;
          +
          +    var params = $.extend({}, {page: 1}, this.lastParams);
          +
          +    params.page++;
          +
          +    this.trigger('query:append', params);
          +  };
          +
          +  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
          +    return data.pagination && data.pagination.more;
          +  };
          +
          +  InfiniteScroll.prototype.createLoadingMore = function () {
          +    var $option = $(
          +      '<li ' +
          +      'class="select2-results__option select2-results__option--load-more"' +
          +      'role="treeitem" aria-disabled="true"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get('loadingMore');
          +
          +    $option.html(message(this.lastParams));
          +
          +    return $option;
          +  };
          +
          +  return InfiniteScroll;
          +});
          +
          +S2.define('select2/dropdown/attachBody',[
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function AttachBody (decorated, $element, options) {
          +    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  AttachBody.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    var setupResultsEvents = false;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self._showDropdown();
          +      self._attachPositioningHandler(container);
          +
          +      if (!setupResultsEvents) {
          +        setupResultsEvents = true;
          +
          +        container.on('results:all', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +
          +        container.on('results:append', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +      }
          +    });
          +
          +    container.on('close', function () {
          +      self._hideDropdown();
          +      self._detachPositioningHandler(container);
          +    });
          +
          +    this.$dropdownContainer.on('mousedown', function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  AttachBody.prototype.destroy = function (decorated) {
          +    decorated.call(this);
          +
          +    this.$dropdownContainer.remove();
          +  };
          +
          +  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
          +    // Clone all of the container classes
          +    $dropdown.attr('class', $container.attr('class'));
          +
          +    $dropdown.removeClass('select2');
          +    $dropdown.addClass('select2-container--open');
          +
          +    $dropdown.css({
          +      position: 'absolute',
          +      top: -999999
          +    });
          +
          +    this.$container = $container;
          +  };
          +
          +  AttachBody.prototype.render = function (decorated) {
          +    var $container = $('<span></span>');
          +
          +    var $dropdown = decorated.call(this);
          +    $container.append($dropdown);
          +
          +    this.$dropdownContainer = $container;
          +
          +    return $container;
          +  };
          +
          +  AttachBody.prototype._hideDropdown = function (decorated) {
          +    this.$dropdownContainer.detach();
          +  };
          +
          +  AttachBody.prototype._attachPositioningHandler =
          +      function (decorated, container) {
          +    var self = this;
          +
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.each(function () {
          +      $(this).data('select2-scroll-position', {
          +        x: $(this).scrollLeft(),
          +        y: $(this).scrollTop()
          +      });
          +    });
          +
          +    $watchers.on(scrollEvent, function (ev) {
          +      var position = $(this).data('select2-scroll-position');
          +      $(this).scrollTop(position.y);
          +    });
          +
          +    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
          +      function (e) {
          +      self._positionDropdown();
          +      self._resizeDropdown();
          +    });
          +  };
          +
          +  AttachBody.prototype._detachPositioningHandler =
          +      function (decorated, container) {
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.off(scrollEvent);
          +
          +    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
          +  };
          +
          +  AttachBody.prototype._positionDropdown = function () {
          +    var $window = $(window);
          +
          +    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
          +    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
          +
          +    var newDirection = null;
          +
          +    var offset = this.$container.offset();
          +
          +    offset.bottom = offset.top + this.$container.outerHeight(false);
          +
          +    var container = {
          +      height: this.$container.outerHeight(false)
          +    };
          +
          +    container.top = offset.top;
          +    container.bottom = offset.top + container.height;
          +
          +    var dropdown = {
          +      height: this.$dropdown.outerHeight(false)
          +    };
          +
          +    var viewport = {
          +      top: $window.scrollTop(),
          +      bottom: $window.scrollTop() + $window.height()
          +    };
          +
          +    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
          +    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
          +
          +    var css = {
          +      left: offset.left,
          +      top: container.bottom
          +    };
          +
          +    // Determine what the parent element is to use for calciulating the offset
          +    var $offsetParent = this.$dropdownParent;
          +
          +    // For statically positoned elements, we need to get the element
          +    // that is determining the offset
          +    if ($offsetParent.css('position') === 'static') {
          +      $offsetParent = $offsetParent.offsetParent();
          +    }
          +
          +    var parentOffset = $offsetParent.offset();
          +
          +    css.top -= parentOffset.top;
          +    css.left -= parentOffset.left;
          +
          +    if (!isCurrentlyAbove && !isCurrentlyBelow) {
          +      newDirection = 'below';
          +    }
          +
          +    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
          +      newDirection = 'above';
          +    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
          +      newDirection = 'below';
          +    }
          +
          +    if (newDirection == 'above' ||
          +      (isCurrentlyAbove && newDirection !== 'below')) {
          +      css.top = container.top - parentOffset.top - dropdown.height;
          +    }
          +
          +    if (newDirection != null) {
          +      this.$dropdown
          +        .removeClass('select2-dropdown--below select2-dropdown--above')
          +        .addClass('select2-dropdown--' + newDirection);
          +      this.$container
          +        .removeClass('select2-container--below select2-container--above')
          +        .addClass('select2-container--' + newDirection);
          +    }
          +
          +    this.$dropdownContainer.css(css);
          +  };
          +
          +  AttachBody.prototype._resizeDropdown = function () {
          +    var css = {
          +      width: this.$container.outerWidth(false) + 'px'
          +    };
          +
          +    if (this.options.get('dropdownAutoWidth')) {
          +      css.minWidth = css.width;
          +      css.position = 'relative';
          +      css.width = 'auto';
          +    }
          +
          +    this.$dropdown.css(css);
          +  };
          +
          +  AttachBody.prototype._showDropdown = function (decorated) {
          +    this.$dropdownContainer.appendTo(this.$dropdownParent);
          +
          +    this._positionDropdown();
          +    this._resizeDropdown();
          +  };
          +
          +  return AttachBody;
          +});
          +
          +S2.define('select2/dropdown/minimumResultsForSearch',[
          +
          +], function () {
          +  function countResults (data) {
          +    var count = 0;
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = data[d];
          +
          +      if (item.children) {
          +        count += countResults(item.children);
          +      } else {
          +        count++;
          +      }
          +    }
          +
          +    return count;
          +  }
          +
          +  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
          +    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
          +
          +    if (this.minimumResultsForSearch < 0) {
          +      this.minimumResultsForSearch = Infinity;
          +    }
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
          +    if (countResults(params.data.results) < this.minimumResultsForSearch) {
          +      return false;
          +    }
          +
          +    return decorated.call(this, params);
          +  };
          +
          +  return MinimumResultsForSearch;
          +});
          +
          +S2.define('select2/dropdown/selectOnClose',[
          +
          +], function () {
          +  function SelectOnClose () { }
          +
          +  SelectOnClose.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('close', function (params) {
          +      self._handleSelectOnClose(params);
          +    });
          +  };
          +
          +  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
          +    if (params && params.originalSelect2Event != null) {
          +      var event = params.originalSelect2Event;
          +
          +      // Don't select an item if the close event was triggered from a select or
          +      // unselect event
          +      if (event._type === 'select' || event._type === 'unselect') {
          +        return;
          +      }
          +    }
          +
          +    var $highlightedResults = this.getHighlightedResults();
          +
          +    // Only select highlighted results
          +    if ($highlightedResults.length < 1) {
          +      return;
          +    }
          +
          +    var data = $highlightedResults.data('data');
          +
          +    // Don't re-select already selected resulte
          +    if (
          +      (data.element != null && data.element.selected) ||
          +      (data.element == null && data.selected)
          +    ) {
          +      return;
          +    }
          +
          +    this.trigger('select', {
          +        data: data
          +    });
          +  };
          +
          +  return SelectOnClose;
          +});
          +
          +S2.define('select2/dropdown/closeOnSelect',[
          +
          +], function () {
          +  function CloseOnSelect () { }
          +
          +  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('select', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +
          +    container.on('unselect', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +  };
          +
          +  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
          +    var originalEvent = evt.originalEvent;
          +
          +    // Don't close if the control key is being held
          +    if (originalEvent && originalEvent.ctrlKey) {
          +      return;
          +    }
          +
          +    this.trigger('close', {
          +      originalEvent: originalEvent,
          +      originalSelect2Event: evt
          +    });
          +  };
          +
          +  return CloseOnSelect;
          +});
          +
          +S2.define('select2/i18n/en',[],function () {
          +  // English
          +  return {
          +    errorLoading: function () {
          +      return 'The results could not be loaded.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Please delete ' + overChars + ' character';
          +
          +      if (overChars != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Please enter ' + remainingChars + ' or more characters';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Loading more results…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'You can only select ' + args.maximum + ' item';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'No results found';
          +    },
          +    searching: function () {
          +      return 'Searching…';
          +    }
          +  };
          +});
          +
          +S2.define('select2/defaults',[
          +  'jquery',
          +  'require',
          +
          +  './results',
          +
          +  './selection/single',
          +  './selection/multiple',
          +  './selection/placeholder',
          +  './selection/allowClear',
          +  './selection/search',
          +  './selection/eventRelay',
          +
          +  './utils',
          +  './translation',
          +  './diacritics',
          +
          +  './data/select',
          +  './data/array',
          +  './data/ajax',
          +  './data/tags',
          +  './data/tokenizer',
          +  './data/minimumInputLength',
          +  './data/maximumInputLength',
          +  './data/maximumSelectionLength',
          +
          +  './dropdown',
          +  './dropdown/search',
          +  './dropdown/hidePlaceholder',
          +  './dropdown/infiniteScroll',
          +  './dropdown/attachBody',
          +  './dropdown/minimumResultsForSearch',
          +  './dropdown/selectOnClose',
          +  './dropdown/closeOnSelect',
          +
          +  './i18n/en'
          +], function ($, require,
          +
          +             ResultsList,
          +
          +             SingleSelection, MultipleSelection, Placeholder, AllowClear,
          +             SelectionSearch, EventRelay,
          +
          +             Utils, Translation, DIACRITICS,
          +
          +             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
          +             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
          +
          +             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
          +             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
          +
          +             EnglishTranslation) {
          +  function Defaults () {
          +    this.reset();
          +  }
          +
          +  Defaults.prototype.apply = function (options) {
          +    options = $.extend(true, {}, this.defaults, options);
          +
          +    if (options.dataAdapter == null) {
          +      if (options.ajax != null) {
          +        options.dataAdapter = AjaxData;
          +      } else if (options.data != null) {
          +        options.dataAdapter = ArrayData;
          +      } else {
          +        options.dataAdapter = SelectData;
          +      }
          +
          +      if (options.minimumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MinimumInputLength
          +        );
          +      }
          +
          +      if (options.maximumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumInputLength
          +        );
          +      }
          +
          +      if (options.maximumSelectionLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumSelectionLength
          +        );
          +      }
          +
          +      if (options.tags) {
          +        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
          +      }
          +
          +      if (options.tokenSeparators != null || options.tokenizer != null) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Tokenizer
          +        );
          +      }
          +
          +      if (options.query != null) {
          +        var Query = require(options.amdBase + 'compat/query');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Query
          +        );
          +      }
          +
          +      if (options.initSelection != null) {
          +        var InitSelection = require(options.amdBase + 'compat/initSelection');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          InitSelection
          +        );
          +      }
          +    }
          +
          +    if (options.resultsAdapter == null) {
          +      options.resultsAdapter = ResultsList;
          +
          +      if (options.ajax != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          InfiniteScroll
          +        );
          +      }
          +
          +      if (options.placeholder != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          HidePlaceholder
          +        );
          +      }
          +
          +      if (options.selectOnClose) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          SelectOnClose
          +        );
          +      }
          +    }
          +
          +    if (options.dropdownAdapter == null) {
          +      if (options.multiple) {
          +        options.dropdownAdapter = Dropdown;
          +      } else {
          +        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
          +
          +        options.dropdownAdapter = SearchableDropdown;
          +      }
          +
          +      if (options.minimumResultsForSearch !== 0) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          MinimumResultsForSearch
          +        );
          +      }
          +
          +      if (options.closeOnSelect) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          CloseOnSelect
          +        );
          +      }
          +
          +      if (
          +        options.dropdownCssClass != null ||
          +        options.dropdownCss != null ||
          +        options.adaptDropdownCssClass != null
          +      ) {
          +        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
          +
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          DropdownCSS
          +        );
          +      }
          +
          +      options.dropdownAdapter = Utils.Decorate(
          +        options.dropdownAdapter,
          +        AttachBody
          +      );
          +    }
          +
          +    if (options.selectionAdapter == null) {
          +      if (options.multiple) {
          +        options.selectionAdapter = MultipleSelection;
          +      } else {
          +        options.selectionAdapter = SingleSelection;
          +      }
          +
          +      // Add the placeholder mixin if a placeholder was specified
          +      if (options.placeholder != null) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          Placeholder
          +        );
          +      }
          +
          +      if (options.allowClear) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          AllowClear
          +        );
          +      }
          +
          +      if (options.multiple) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          SelectionSearch
          +        );
          +      }
          +
          +      if (
          +        options.containerCssClass != null ||
          +        options.containerCss != null ||
          +        options.adaptContainerCssClass != null
          +      ) {
          +        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
          +
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          ContainerCSS
          +        );
          +      }
          +
          +      options.selectionAdapter = Utils.Decorate(
          +        options.selectionAdapter,
          +        EventRelay
          +      );
          +    }
          +
          +    if (typeof options.language === 'string') {
          +      // Check if the language is specified with a region
          +      if (options.language.indexOf('-') > 0) {
          +        // Extract the region information if it is included
          +        var languageParts = options.language.split('-');
          +        var baseLanguage = languageParts[0];
          +
          +        options.language = [options.language, baseLanguage];
          +      } else {
          +        options.language = [options.language];
          +      }
          +    }
          +
          +    if ($.isArray(options.language)) {
          +      var languages = new Translation();
          +      options.language.push('en');
          +
          +      var languageNames = options.language;
          +
          +      for (var l = 0; l < languageNames.length; l++) {
          +        var name = languageNames[l];
          +        var language = {};
          +
          +        try {
          +          // Try to load it with the original name
          +          language = Translation.loadPath(name);
          +        } catch (e) {
          +          try {
          +            // If we couldn't load it, check if it wasn't the full path
          +            name = this.defaults.amdLanguageBase + name;
          +            language = Translation.loadPath(name);
          +          } catch (ex) {
          +            // The translation could not be loaded at all. Sometimes this is
          +            // because of a configuration problem, other times this can be
          +            // because of how Select2 helps load all possible translation files.
          +            if (options.debug && window.console && console.warn) {
          +              console.warn(
          +                'Select2: The language file for "' + name + '" could not be ' +
          +                'automatically loaded. A fallback will be used instead.'
          +              );
          +            }
          +
          +            continue;
          +          }
          +        }
          +
          +        languages.extend(language);
          +      }
          +
          +      options.translations = languages;
          +    } else {
          +      var baseTranslation = Translation.loadPath(
          +        this.defaults.amdLanguageBase + 'en'
          +      );
          +      var customTranslation = new Translation(options.language);
          +
          +      customTranslation.extend(baseTranslation);
          +
          +      options.translations = customTranslation;
          +    }
          +
          +    return options;
          +  };
          +
          +  Defaults.prototype.reset = function () {
          +    function stripDiacritics (text) {
          +      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
          +      function match(a) {
          +        return DIACRITICS[a] || a;
          +      }
          +
          +      return text.replace(/[^\u0000-\u007E]/g, match);
          +    }
          +
          +    function matcher (params, data) {
          +      // Always return the object if there is nothing to compare
          +      if ($.trim(params.term) === '') {
          +        return data;
          +      }
          +
          +      // Do a recursive check for options with children
          +      if (data.children && data.children.length > 0) {
          +        // Clone the data object if there are children
          +        // This is required as we modify the object to remove any non-matches
          +        var match = $.extend(true, {}, data);
          +
          +        // Check each child of the option
          +        for (var c = data.children.length - 1; c >= 0; c--) {
          +          var child = data.children[c];
          +
          +          var matches = matcher(params, child);
          +
          +          // If there wasn't a match, remove the object in the array
          +          if (matches == null) {
          +            match.children.splice(c, 1);
          +          }
          +        }
          +
          +        // If any children matched, return the new object
          +        if (match.children.length > 0) {
          +          return match;
          +        }
          +
          +        // If there were no matching children, check just the plain object
          +        return matcher(params, match);
          +      }
          +
          +      var original = stripDiacritics(data.text).toUpperCase();
          +      var term = stripDiacritics(params.term).toUpperCase();
          +
          +      // Check if the text contains the term
          +      if (original.indexOf(term) > -1) {
          +        return data;
          +      }
          +
          +      // If it doesn't contain the term, don't return anything
          +      return null;
          +    }
          +
          +    this.defaults = {
          +      amdBase: './',
          +      amdLanguageBase: './i18n/',
          +      closeOnSelect: true,
          +      debug: false,
          +      dropdownAutoWidth: false,
          +      escapeMarkup: Utils.escapeMarkup,
          +      language: EnglishTranslation,
          +      matcher: matcher,
          +      minimumInputLength: 0,
          +      maximumInputLength: 0,
          +      maximumSelectionLength: 0,
          +      minimumResultsForSearch: 0,
          +      selectOnClose: false,
          +      sorter: function (data) {
          +        return data;
          +      },
          +      templateResult: function (result) {
          +        return result.text;
          +      },
          +      templateSelection: function (selection) {
          +        return selection.text;
          +      },
          +      theme: 'default',
          +      width: 'resolve'
          +    };
          +  };
          +
          +  Defaults.prototype.set = function (key, value) {
          +    var camelKey = $.camelCase(key);
          +
          +    var data = {};
          +    data[camelKey] = value;
          +
          +    var convertedData = Utils._convertData(data);
          +
          +    $.extend(this.defaults, convertedData);
          +  };
          +
          +  var defaults = new Defaults();
          +
          +  return defaults;
          +});
          +
          +S2.define('select2/options',[
          +  'require',
          +  'jquery',
          +  './defaults',
          +  './utils'
          +], function (require, $, Defaults, Utils) {
          +  function Options (options, $element) {
          +    this.options = options;
          +
          +    if ($element != null) {
          +      this.fromElement($element);
          +    }
          +
          +    this.options = Defaults.apply(this.options);
          +
          +    if ($element && $element.is('input')) {
          +      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
          +
          +      this.options.dataAdapter = Utils.Decorate(
          +        this.options.dataAdapter,
          +        InputCompat
          +      );
          +    }
          +  }
          +
          +  Options.prototype.fromElement = function ($e) {
          +    var excludedData = ['select2'];
          +
          +    if (this.options.multiple == null) {
          +      this.options.multiple = $e.prop('multiple');
          +    }
          +
          +    if (this.options.disabled == null) {
          +      this.options.disabled = $e.prop('disabled');
          +    }
          +
          +    if (this.options.language == null) {
          +      if ($e.prop('lang')) {
          +        this.options.language = $e.prop('lang').toLowerCase();
          +      } else if ($e.closest('[lang]').prop('lang')) {
          +        this.options.language = $e.closest('[lang]').prop('lang');
          +      }
          +    }
          +
          +    if (this.options.dir == null) {
          +      if ($e.prop('dir')) {
          +        this.options.dir = $e.prop('dir');
          +      } else if ($e.closest('[dir]').prop('dir')) {
          +        this.options.dir = $e.closest('[dir]').prop('dir');
          +      } else {
          +        this.options.dir = 'ltr';
          +      }
          +    }
          +
          +    $e.prop('disabled', this.options.disabled);
          +    $e.prop('multiple', this.options.multiple);
          +
          +    if ($e.data('select2Tags')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-select2-tags` attribute has been changed to ' +
          +          'use the `data-data` and `data-tags="true"` attributes and will be ' +
          +          'removed in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.data('data', $e.data('select2Tags'));
          +      $e.data('tags', true);
          +    }
          +
          +    if ($e.data('ajaxUrl')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-ajax-url` attribute has been changed to ' +
          +          '`data-ajax--url` and support for the old attribute will be removed' +
          +          ' in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.attr('ajax--url', $e.data('ajaxUrl'));
          +      $e.data('ajax--url', $e.data('ajaxUrl'));
          +    }
          +
          +    var dataset = {};
          +
          +    // Prefer the element's `dataset` attribute if it exists
          +    // jQuery 1.x does not correctly handle data attributes with multiple dashes
          +    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
          +      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
          +    } else {
          +      dataset = $e.data();
          +    }
          +
          +    var data = $.extend(true, {}, dataset);
          +
          +    data = Utils._convertData(data);
          +
          +    for (var key in data) {
          +      if ($.inArray(key, excludedData) > -1) {
          +        continue;
          +      }
          +
          +      if ($.isPlainObject(this.options[key])) {
          +        $.extend(this.options[key], data[key]);
          +      } else {
          +        this.options[key] = data[key];
          +      }
          +    }
          +
          +    return this;
          +  };
          +
          +  Options.prototype.get = function (key) {
          +    return this.options[key];
          +  };
          +
          +  Options.prototype.set = function (key, val) {
          +    this.options[key] = val;
          +  };
          +
          +  return Options;
          +});
          +
          +S2.define('select2/core',[
          +  'jquery',
          +  './options',
          +  './utils',
          +  './keys'
          +], function ($, Options, Utils, KEYS) {
          +  var Select2 = function ($element, options) {
          +    if ($element.data('select2') != null) {
          +      $element.data('select2').destroy();
          +    }
          +
          +    this.$element = $element;
          +
          +    this.id = this._generateId($element);
          +
          +    options = options || {};
          +
          +    this.options = new Options(options, $element);
          +
          +    Select2.__super__.constructor.call(this);
          +
          +    // Set up the tabindex
          +
          +    var tabindex = $element.attr('tabindex') || 0;
          +    $element.data('old-tabindex', tabindex);
          +    $element.attr('tabindex', '-1');
          +
          +    // Set up containers and adapters
          +
          +    var DataAdapter = this.options.get('dataAdapter');
          +    this.dataAdapter = new DataAdapter($element, this.options);
          +
          +    var $container = this.render();
          +
          +    this._placeContainer($container);
          +
          +    var SelectionAdapter = this.options.get('selectionAdapter');
          +    this.selection = new SelectionAdapter($element, this.options);
          +    this.$selection = this.selection.render();
          +
          +    this.selection.position(this.$selection, $container);
          +
          +    var DropdownAdapter = this.options.get('dropdownAdapter');
          +    this.dropdown = new DropdownAdapter($element, this.options);
          +    this.$dropdown = this.dropdown.render();
          +
          +    this.dropdown.position(this.$dropdown, $container);
          +
          +    var ResultsAdapter = this.options.get('resultsAdapter');
          +    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
          +    this.$results = this.results.render();
          +
          +    this.results.position(this.$results, this.$dropdown);
          +
          +    // Bind events
          +
          +    var self = this;
          +
          +    // Bind the container to all of the adapters
          +    this._bindAdapters();
          +
          +    // Register any DOM event handlers
          +    this._registerDomEvents();
          +
          +    // Register any internal event handlers
          +    this._registerDataEvents();
          +    this._registerSelectionEvents();
          +    this._registerDropdownEvents();
          +    this._registerResultsEvents();
          +    this._registerEvents();
          +
          +    // Set the initial state
          +    this.dataAdapter.current(function (initialData) {
          +      self.trigger('selection:update', {
          +        data: initialData
          +      });
          +    });
          +
          +    // Hide the original select
          +    $element.addClass('select2-hidden-accessible');
          +    $element.attr('aria-hidden', 'true');
          +
          +    // Synchronize any monitored attributes
          +    this._syncAttributes();
          +
          +    $element.data('select2', this);
          +  };
          +
          +  Utils.Extend(Select2, Utils.Observable);
          +
          +  Select2.prototype._generateId = function ($element) {
          +    var id = '';
          +
          +    if ($element.attr('id') != null) {
          +      id = $element.attr('id');
          +    } else if ($element.attr('name') != null) {
          +      id = $element.attr('name') + '-' + Utils.generateChars(2);
          +    } else {
          +      id = Utils.generateChars(4);
          +    }
          +
          +    id = id.replace(/(:|\.|\[|\]|,)/g, '');
          +    id = 'select2-' + id;
          +
          +    return id;
          +  };
          +
          +  Select2.prototype._placeContainer = function ($container) {
          +    $container.insertAfter(this.$element);
          +
          +    var width = this._resolveWidth(this.$element, this.options.get('width'));
          +
          +    if (width != null) {
          +      $container.css('width', width);
          +    }
          +  };
          +
          +  Select2.prototype._resolveWidth = function ($element, method) {
          +    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
          +
          +    if (method == 'resolve') {
          +      var styleWidth = this._resolveWidth($element, 'style');
          +
          +      if (styleWidth != null) {
          +        return styleWidth;
          +      }
          +
          +      return this._resolveWidth($element, 'element');
          +    }
          +
          +    if (method == 'element') {
          +      var elementWidth = $element.outerWidth(false);
          +
          +      if (elementWidth <= 0) {
          +        return 'auto';
          +      }
          +
          +      return elementWidth + 'px';
          +    }
          +
          +    if (method == 'style') {
          +      var style = $element.attr('style');
          +
          +      if (typeof(style) !== 'string') {
          +        return null;
          +      }
          +
          +      var attrs = style.split(';');
          +
          +      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
          +        var attr = attrs[i].replace(/\s/g, '');
          +        var matches = attr.match(WIDTH);
          +
          +        if (matches !== null && matches.length >= 1) {
          +          return matches[1];
          +        }
          +      }
          +
          +      return null;
          +    }
          +
          +    return method;
          +  };
          +
          +  Select2.prototype._bindAdapters = function () {
          +    this.dataAdapter.bind(this, this.$container);
          +    this.selection.bind(this, this.$container);
          +
          +    this.dropdown.bind(this, this.$container);
          +    this.results.bind(this, this.$container);
          +  };
          +
          +  Select2.prototype._registerDomEvents = function () {
          +    var self = this;
          +
          +    this.$element.on('change.select2', function () {
          +      self.dataAdapter.current(function (data) {
          +        self.trigger('selection:update', {
          +          data: data
          +        });
          +      });
          +    });
          +
          +    this.$element.on('focus.select2', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this._syncA = Utils.bind(this._syncAttributes, this);
          +    this._syncS = Utils.bind(this._syncSubtree, this);
          +
          +    if (this.$element[0].attachEvent) {
          +      this.$element[0].attachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    var observer = window.MutationObserver ||
          +      window.WebKitMutationObserver ||
          +      window.MozMutationObserver
          +    ;
          +
          +    if (observer != null) {
          +      this._observer = new observer(function (mutations) {
          +        $.each(mutations, self._syncA);
          +        $.each(mutations, self._syncS);
          +      });
          +      this._observer.observe(this.$element[0], {
          +        attributes: true,
          +        childList: true,
          +        subtree: false
          +      });
          +    } else if (this.$element[0].addEventListener) {
          +      this.$element[0].addEventListener(
          +        'DOMAttrModified',
          +        self._syncA,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeInserted',
          +        self._syncS,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeRemoved',
          +        self._syncS,
          +        false
          +      );
          +    }
          +  };
          +
          +  Select2.prototype._registerDataEvents = function () {
          +    var self = this;
          +
          +    this.dataAdapter.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerSelectionEvents = function () {
          +    var self = this;
          +    var nonRelayEvents = ['toggle', 'focus'];
          +
          +    this.selection.on('toggle', function () {
          +      self.toggleDropdown();
          +    });
          +
          +    this.selection.on('focus', function (params) {
          +      self.focus(params);
          +    });
          +
          +    this.selection.on('*', function (name, params) {
          +      if ($.inArray(name, nonRelayEvents) !== -1) {
          +        return;
          +      }
          +
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerDropdownEvents = function () {
          +    var self = this;
          +
          +    this.dropdown.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerResultsEvents = function () {
          +    var self = this;
          +
          +    this.results.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerEvents = function () {
          +    var self = this;
          +
          +    this.on('open', function () {
          +      self.$container.addClass('select2-container--open');
          +    });
          +
          +    this.on('close', function () {
          +      self.$container.removeClass('select2-container--open');
          +    });
          +
          +    this.on('enable', function () {
          +      self.$container.removeClass('select2-container--disabled');
          +    });
          +
          +    this.on('disable', function () {
          +      self.$container.addClass('select2-container--disabled');
          +    });
          +
          +    this.on('blur', function () {
          +      self.$container.removeClass('select2-container--focus');
          +    });
          +
          +    this.on('query', function (params) {
          +      if (!self.isOpen()) {
          +        self.trigger('open', {});
          +      }
          +
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:all', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('query:append', function (params) {
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:append', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('keypress', function (evt) {
          +      var key = evt.which;
          +
          +      if (self.isOpen()) {
          +        if (key === KEYS.ESC || key === KEYS.TAB ||
          +            (key === KEYS.UP && evt.altKey)) {
          +          self.close();
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.ENTER) {
          +          self.trigger('results:select', {});
          +
          +          evt.preventDefault();
          +        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
          +          self.trigger('results:toggle', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.UP) {
          +          self.trigger('results:previous', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.DOWN) {
          +          self.trigger('results:next', {});
          +
          +          evt.preventDefault();
          +        }
          +      } else {
          +        if (key === KEYS.ENTER || key === KEYS.SPACE ||
          +            (key === KEYS.DOWN && evt.altKey)) {
          +          self.open();
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +  };
          +
          +  Select2.prototype._syncAttributes = function () {
          +    this.options.set('disabled', this.$element.prop('disabled'));
          +
          +    if (this.options.get('disabled')) {
          +      if (this.isOpen()) {
          +        this.close();
          +      }
          +
          +      this.trigger('disable', {});
          +    } else {
          +      this.trigger('enable', {});
          +    }
          +  };
          +
          +  Select2.prototype._syncSubtree = function (evt, mutations) {
          +    var changed = false;
          +    var self = this;
          +
          +    // Ignore any mutation events raised for elements that aren't options or
          +    // optgroups. This handles the case when the select element is destroyed
          +    if (
          +      evt && evt.target && (
          +        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
          +      )
          +    ) {
          +      return;
          +    }
          +
          +    if (!mutations) {
          +      // If mutation events aren't supported, then we can only assume that the
          +      // change affected the selections
          +      changed = true;
          +    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
          +      for (var n = 0; n < mutations.addedNodes.length; n++) {
          +        var node = mutations.addedNodes[n];
          +
          +        if (node.selected) {
          +          changed = true;
          +        }
          +      }
          +    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
          +      changed = true;
          +    }
          +
          +    // Only re-pull the data if we think there is a change
          +    if (changed) {
          +      this.dataAdapter.current(function (currentData) {
          +        self.trigger('selection:update', {
          +          data: currentData
          +        });
          +      });
          +    }
          +  };
          +
          +  /**
          +   * Override the trigger method to automatically trigger pre-events when
          +   * there are events that can be prevented.
          +   */
          +  Select2.prototype.trigger = function (name, args) {
          +    var actualTrigger = Select2.__super__.trigger;
          +    var preTriggerMap = {
          +      'open': 'opening',
          +      'close': 'closing',
          +      'select': 'selecting',
          +      'unselect': 'unselecting'
          +    };
          +
          +    if (args === undefined) {
          +      args = {};
          +    }
          +
          +    if (name in preTriggerMap) {
          +      var preTriggerName = preTriggerMap[name];
          +      var preTriggerArgs = {
          +        prevented: false,
          +        name: name,
          +        args: args
          +      };
          +
          +      actualTrigger.call(this, preTriggerName, preTriggerArgs);
          +
          +      if (preTriggerArgs.prevented) {
          +        args.prevented = true;
          +
          +        return;
          +      }
          +    }
          +
          +    actualTrigger.call(this, name, args);
          +  };
          +
          +  Select2.prototype.toggleDropdown = function () {
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    if (this.isOpen()) {
          +      this.close();
          +    } else {
          +      this.open();
          +    }
          +  };
          +
          +  Select2.prototype.open = function () {
          +    if (this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('query', {});
          +  };
          +
          +  Select2.prototype.close = function () {
          +    if (!this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('close', {});
          +  };
          +
          +  Select2.prototype.isOpen = function () {
          +    return this.$container.hasClass('select2-container--open');
          +  };
          +
          +  Select2.prototype.hasFocus = function () {
          +    return this.$container.hasClass('select2-container--focus');
          +  };
          +
          +  Select2.prototype.focus = function (data) {
          +    // No need to re-trigger focus events if we are already focused
          +    if (this.hasFocus()) {
          +      return;
          +    }
          +
          +    this.$container.addClass('select2-container--focus');
          +    this.trigger('focus', {});
          +  };
          +
          +  Select2.prototype.enable = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("enable")` method has been deprecated and will' +
          +        ' be removed in later Select2 versions. Use $element.prop("disabled")' +
          +        ' instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      args = [true];
          +    }
          +
          +    var disabled = !args[0];
          +
          +    this.$element.prop('disabled', disabled);
          +  };
          +
          +  Select2.prototype.data = function () {
          +    if (this.options.get('debug') &&
          +        arguments.length > 0 && window.console && console.warn) {
          +      console.warn(
          +        'Select2: Data can no longer be set using `select2("data")`. You ' +
          +        'should consider setting the value instead using `$element.val()`.'
          +      );
          +    }
          +
          +    var data = [];
          +
          +    this.dataAdapter.current(function (currentData) {
          +      data = currentData;
          +    });
          +
          +    return data;
          +  };
          +
          +  Select2.prototype.val = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("val")` method has been deprecated and will be' +
          +        ' removed in later Select2 versions. Use $element.val() instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      return this.$element.val();
          +    }
          +
          +    var newVal = args[0];
          +
          +    if ($.isArray(newVal)) {
          +      newVal = $.map(newVal, function (obj) {
          +        return obj.toString();
          +      });
          +    }
          +
          +    this.$element.val(newVal).trigger('change');
          +  };
          +
          +  Select2.prototype.destroy = function () {
          +    this.$container.remove();
          +
          +    if (this.$element[0].detachEvent) {
          +      this.$element[0].detachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    if (this._observer != null) {
          +      this._observer.disconnect();
          +      this._observer = null;
          +    } else if (this.$element[0].removeEventListener) {
          +      this.$element[0]
          +        .removeEventListener('DOMAttrModified', this._syncA, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeInserted', this._syncS, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeRemoved', this._syncS, false);
          +    }
          +
          +    this._syncA = null;
          +    this._syncS = null;
          +
          +    this.$element.off('.select2');
          +    this.$element.attr('tabindex', this.$element.data('old-tabindex'));
          +
          +    this.$element.removeClass('select2-hidden-accessible');
          +    this.$element.attr('aria-hidden', 'false');
          +    this.$element.removeData('select2');
          +
          +    this.dataAdapter.destroy();
          +    this.selection.destroy();
          +    this.dropdown.destroy();
          +    this.results.destroy();
          +
          +    this.dataAdapter = null;
          +    this.selection = null;
          +    this.dropdown = null;
          +    this.results = null;
          +  };
          +
          +  Select2.prototype.render = function () {
          +    var $container = $(
          +      '<span class="select2 select2-container">' +
          +        '<span class="selection"></span>' +
          +        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
          +      '</span>'
          +    );
          +
          +    $container.attr('dir', this.options.get('dir'));
          +
          +    this.$container = $container;
          +
          +    this.$container.addClass('select2-container--' + this.options.get('theme'));
          +
          +    $container.data('element', this.$element);
          +
          +    return $container;
          +  };
          +
          +  return Select2;
          +});
          +
          +S2.define('jquery-mousewheel',[
          +  'jquery'
          +], function ($) {
          +  // Used to shim jQuery.mousewheel for non-full builds.
          +  return $;
          +});
          +
          +S2.define('jquery.select2',[
          +  'jquery',
          +  'jquery-mousewheel',
          +
          +  './select2/core',
          +  './select2/defaults'
          +], function ($, _, Select2, Defaults) {
          +  if ($.fn.select2 == null) {
          +    // All methods that should return the element
          +    var thisMethods = ['open', 'close', 'destroy'];
          +
          +    $.fn.select2 = function (options) {
          +      options = options || {};
          +
          +      if (typeof options === 'object') {
          +        this.each(function () {
          +          var instanceOptions = $.extend(true, {}, options);
          +
          +          var instance = new Select2($(this), instanceOptions);
          +        });
          +
          +        return this;
          +      } else if (typeof options === 'string') {
          +        var ret;
          +        var args = Array.prototype.slice.call(arguments, 1);
          +
          +        this.each(function () {
          +          var instance = $(this).data('select2');
          +
          +          if (instance == null && window.console && console.error) {
          +            console.error(
          +              'The select2(\'' + options + '\') method was called on an ' +
          +              'element that is not using Select2.'
          +            );
          +          }
          +
          +          ret = instance[options].apply(instance, args);
          +        });
          +
          +        // Check if we should be returning `this`
          +        if ($.inArray(options, thisMethods) > -1) {
          +          return this;
          +        }
          +
          +        return ret;
          +      } else {
          +        throw new Error('Invalid arguments for Select2: ' + options);
          +      }
          +    };
          +  }
          +
          +  if ($.fn.select2.defaults == null) {
          +    $.fn.select2.defaults = Defaults;
          +  }
          +
          +  return Select2;
          +});
          +
          +  // Return the AMD loader configuration so it can be used outside of this file
          +  return {
          +    define: S2.define,
          +    require: S2.require
          +  };
          +}());
          +
          +  // Autoload the jQuery bindings
          +  // We know that all of the modules exist above this, so we're safe
          +  var select2 = S2.require('jquery.select2');
          +
          +  // Hold the AMD module references on the jQuery function that was just loaded
          +  // This allows Select2 to use the internal loader outside of this file, such
          +  // as in the language files.
          +  jQuery.fn.select2.amd = S2;
          +
          +  // Return the Select2 instance for anyone who is importing it.
          +  return select2;
          +}));
          diff --git a/public/theme/select2/dist/js/select2.min.js b/public/theme/select2/dist/js/select2.min.js
          new file mode 100644
          index 0000000..43f0a65
          --- /dev/null
          +++ b/public/theme/select2/dist/js/select2.min.js
          @@ -0,0 +1,3 @@
          +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");
          +if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null;
          +},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/.gitignore b/public/theme/select2/docs/.gitignore
          new file mode 100644
          index 0000000..aec6800
          --- /dev/null
          +++ b/public/theme/select2/docs/.gitignore
          @@ -0,0 +1,2 @@
          +_site
          +dist
          diff --git a/public/theme/select2/docs/README.md b/public/theme/select2/docs/README.md
          new file mode 100644
          index 0000000..b69aed1
          --- /dev/null
          +++ b/public/theme/select2/docs/README.md
          @@ -0,0 +1,38 @@
          +Select2 Documentation
          +=====================
          +[This repository][select2-docs-source] holds the latest documentation for
          +[Select2][select2].
          +
          +What is this?
          +-------------
          +The documentation is automatically extracted from the `docs` directory at the
          +[Select2 source repository][select2-source]. This is done periodically by
          +the maintainers of Select2.
          +
          +How can I fix an issue in these docs?
          +-------------------------------------
          +If you are reading this from the source repository, within the `docs` directory,
          +then you're already in the right place. You can fork the source repository,
          +commit your changes, and then make a pull request and it will be reviewed.
          +
          +**If you are reading this from the
          +[documentation repository][select2-docs-source], you are in the wrong place.**
          +Pull requests made directly to the documentation repository will be ignored and
          +eventually closed, so don't do that.
          +
          +How can I build these docs manually?
          +------------------------------------
          +In the [main Select2 repository][select2-source], you can build the
          +documentation by executing
          +
          +```bash
          +grunt docs
          +```
          +
          +Which will start up the documentation on port 4000. You will need
          +[Jekyll][jekyll] installed to build the documentation.
          +
          +[jekyll]: http://jekyllrb.com/
          +[select2]: https://select2.github.io
          +[select2-docs-source]: https://github.com/select2/select2.github.io
          +[select2-source]: https://github.com/select2/select2
          diff --git a/public/theme/select2/docs/_includes/examples/basics.html b/public/theme/select2/docs/_includes/examples/basics.html
          new file mode 100644
          index 0000000..a077da7
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/basics.html
          @@ -0,0 +1,97 @@
          +<section>
          +
          +  <h1 id="basics" class="page-header">The basics</h1>
          +
          +  <h2 id="single">Single select boxes</h2>
          +
          +  <p>
          +    Select2 can take a regular select box like this...
          +  </p>
          +
          +  <p>
          +    <select class="js-states form-control"></select>
          +  </p>
          +
          +  <p>
          +    and turn it into this...
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-basic-single js-states form-control"></select>
          +    </p>
          +  </div>
          +
          +{% highlight html linenos %}
          +<script type="text/javascript">
          +$(document).ready(function() {
          +  $(".js-example-basic-single").select2();
          +});
          +</script>
          +
          +<select class="js-example-basic-single">
          +  <option value="AL">Alabama</option>
          +    ...
          +  <option value="WY">Wyoming</option>
          +</select>
          +{% endhighlight %}
          +
          +  <h2 id="multiple">Multiple select boxes</h2>
          +
          +  <p>
          +    Select2 also supports multi-value select boxes. The select below is declared with the <code>multiple</code> attribute.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-basic-multiple js-states form-control" multiple="multiple"></select>
          +    </p>
          +  </div>
          +
          +{% highlight html linenos %}
          +<script type="text/javascript">
          +$(".js-example-basic-multiple").select2();
          +</script>
          +
          +<select class="js-example-basic-multiple" multiple="multiple">
          +  <option value="AL">Alabama</option>
          +    ...
          +  <option value="WY">Wyoming</option>
          +</select>
          +{% endhighlight %}
          +
          +  <h2>Select boxes with labels</h2>
          +
          +  <p>
          +    You can, and should, use a <code>&lt;label&gt;</code> with Select2, just like any other <code>&lt;select&gt</code> element.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <label for="id_label_single">
          +        Click this to highlight the single select element
          +        <select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
          +      </label>
          +    </p>
          +    <p>
          +      <label for="id_label_multiple">
          +        Click this to highlight the multiple select element
          +        <select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
          +      </label>
          +    </p>
          +  </div>
          +
          +{% highlight html linenos %}
          +<label for="id_label_single">
          +  Click this to highlight the single select element
          +
          +  <select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
          +</label>
          +
          +<label for="id_label_multiple">
          +  Click this to highlight the multiple select element
          +
          +  <select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
          +</label>
          +{% endhighlight %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/examples/data.html b/public/theme/select2/docs/_includes/examples/data.html
          new file mode 100644
          index 0000000..4b55a76
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/data.html
          @@ -0,0 +1,123 @@
          +<section>
          +
          +  <h1 id="data" class="page-header">
          +    Data sources
          +  </h1>
          +
          +  <p>In addition to handling options from a standard <code>&lt;select&gt;</code>, Select2 can also retrieve the results from other data sources.</p>
          +
          +  <h2 id="data-array" >Loading array data</h2>
          +
          +  <p>
          +    Select2 provides a way to load the data from a local array.
          +    You can provide initial selections with array data by providing the
          +    option tag for the selected values, similar to how it would be done for
          +    a standard select.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-data-array form-control"></select>
          +    </p>
          +    <p>
          +      <select class="js-example-data-array-selected form-control">
          +        <option value="2" selected="selected">duplicate</option>
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight html linenos %}
          +<script type="text/javascript">
          +var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
          +
          +$(".js-example-data-array").select2({
          +  data: data
          +})
          +
          +$(".js-example-data-array-selected").select2({
          +  data: data
          +})
          +</script>
          +
          +<select class="js-example-data-array"></select>
          +
          +<select class="js-example-data-array-selected">
          +  <option value="2" selected="selected">duplicate</option>
          +</select>
          +{% endhighlight %}
          +
          +  <h2 id="data-ajax" >Loading remote data</h2>
          +
          +  <p>
          +    Select2 comes with AJAX support built in, using jQuery's AJAX methods.
          +    In this example, we can search for repositories using GitHub's API.
          +  </p>
          +
          +  <p>
          +    <select class="js-example-data-ajax form-control">
          +      <option value="3620194" selected="selected">select2/select2</option>
          +    </select>
          +  </p>
          +
          +  <p>
          +    When using Select2 with remote data, the HTML required for the
          +    <code>select</code> is the same as any other Select2. If you need to
          +    provide default selections, you just need to include an
          +    <code>option</code> for each selection that contains the value and text
          +    that should be displayed.
          +  </p>
          +
          +{% highlight html linenos %}
          +<select class="js-data-example-ajax">
          +  <option value="3620194" selected="selected">select2/select2</option>
          +</select>
          +{% endhighlight %}
          +
          +  <p>
          +    You can configure how Select2 searches for remote data using the
          +    <code>ajax</code> option. More information on the individual options
          +    that Select2 handles can be found in the
          +    <a href="options.html#ajax">options documentation for <code>ajax</code></a>.
          +  </p>
          +
          +{% highlight js linenos %}
          +$(".js-data-example-ajax").select2({
          +  ajax: {
          +    url: "https://api.github.com/search/repositories",
          +    dataType: 'json',
          +    delay: 250,
          +    data: function (params) {
          +      return {
          +        q: params.term, // search term
          +        page: params.page
          +      };
          +    },
          +    processResults: function (data, params) {
          +      // parse the results into the format expected by Select2
          +      // since we are using custom formatting functions we do not need to
          +      // alter the remote JSON data, except to indicate that infinite
          +      // scrolling can be used
          +      params.page = params.page || 1;
          +
          +      return {
          +        results: data.items,
          +        pagination: {
          +          more: (params.page * 30) < data.total_count
          +        }
          +      };
          +    },
          +    cache: true
          +  },
          +  escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
          +  minimumInputLength: 1,
          +  templateResult: formatRepo, // omitted for brevity, see the source of this page
          +  templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
          +});
          +{% endhighlight %}
          +
          +  <p>
          +    Select2 will pass any options in the <code>ajax</code> object to
          +    jQuery's <code>$.ajax</code> function, or the <code>transport</code>
          +    function you specify.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/disabled-mode.html b/public/theme/select2/docs/_includes/examples/disabled-mode.html
          new file mode 100644
          index 0000000..309a2c2
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/disabled-mode.html
          @@ -0,0 +1,43 @@
          +<section>
          +
          +  <h1 id="disabled">Disabled mode</h1>
          +
          +  <p>
          +    Select2 will respond to the <code>disabled</code> attribute on
          +    <code>&lt;select&gt;</code> elements. You can also initialize Select2
          +    with <code>disabled: true</code> to get the same effect.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-disabled js-states form-control" disabled="disabled"></select>
          +    </p>
          +
          +    <p>
          +      <select class="js-example-disabled-multi js-states form-control" multiple="multiple" disabled="disabled"></select>
          +    </p>
          +    <div class="btn-group btn-group-sm" role="group" aria-label="Programmatic enabling and disabling">
          +      <button type="button" class="js-programmatic-enable btn btn-default">
          +        Enable
          +      </button>
          +      <button type="button" class="js-programmatic-disable btn btn-default">
          +        Disable
          +      </button>
          +    </div>
          +  </div>
          +
          +  <pre data-fill-from=".js-code-disabled"></pre>
          +
          +<script type="text/javascript" class="js-code-disabled">
          +$(".js-programmatic-enable").on("click", function () {
          +  $(".js-example-disabled").prop("disabled", false);
          +  $(".js-example-disabled-multi").prop("disabled", false);
          +});
          +
          +$(".js-programmatic-disable").on("click", function () {
          +  $(".js-example-disabled").prop("disabled", true);
          +  $(".js-example-disabled-multi").prop("disabled", true);
          +});
          +</script>
          +
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/disabled-results.html b/public/theme/select2/docs/_includes/examples/disabled-results.html
          new file mode 100644
          index 0000000..b695a3b
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/disabled-results.html
          @@ -0,0 +1,29 @@
          +<section>
          +
          +  <h1 id="disabled-results">Disabled results</h1>
          +
          +  <p>
          +    Select2 will correctly handle disabled results, both with data coming
          +    from a standard select (when the <code>disabled</code> attribute is set)
          +    and from remote sources, where the object has
          +    <code>disabled: true</code> set.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-disabled-results form-control">
          +        <option value="one">First</option>
          +        <option value="two" disabled="disabled">Second (disabled)</option>
          +        <option value="three">Third</option>
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight html linenos %}
          +<select class="js-example-disabled-results">
          +  <option value="one">First</option>
          +  <option value="two" disabled="disabled">Second (disabled)</option>
          +  <option value="three">Third</option>
          +</select>
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/hide-search.html b/public/theme/select2/docs/_includes/examples/hide-search.html
          new file mode 100644
          index 0000000..0203c1a
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/hide-search.html
          @@ -0,0 +1,22 @@
          +<section>
          +
          +  <h1 id="hide-search">Hiding the search box</h1>
          +
          +  <p>
          +    Select2 allows you to hide the search box depending on the number of
          +    options which are displayed. In this example, we use the value
          +    <code>Infinity</code> to tell Select2 to never display the search box.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-basic-hide-search js-states form-control"></select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-basic-hide-search").select2({
          +  minimumResultsForSearch: Infinity
          +});
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/localization-rtl-diacritics.html b/public/theme/select2/docs/_includes/examples/localization-rtl-diacritics.html
          new file mode 100644
          index 0000000..8b88158
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/localization-rtl-diacritics.html
          @@ -0,0 +1,82 @@
          +<section>
          +  <h1 id="localization-rtl-diacritics" class="page-header">
          +    Localization, RTL and diacritics support
          +  </h1>
          +
          +  <h2 id="language">Multiple languages</h2>
          +
          +  <p>
          +    Select2 supports displaying the messages in different languages, as well
          +    as providing your own
          +    <a href="options.html#language">custom messages</a>
          +    that can be displayed.
          +  </p>
          +
          +  <p>
          +    The language does not have to be defined when Select2 is being
          +    initialized, but instead can be defined in the <code>[lang]</code>
          +    attribute of any parent elements as <code>[lang="es"]</code>.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-language js-states form-control">
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-language").select2({
          +  language: "es"
          +});
          +{% endhighlight %}
          +
          +  <h2 id="rtl">RTL support</h2>
          +
          +  <p>
          +    Select2 will work on RTL websites if the <code>dir</code> attribute is
          +    set on the <code>&lt;select&gt;</code> or any parents of it. You can also
          +    initialize Select2 with <code>dir: "rtl"</code> set.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-rtl js-states form-control" dir="rtl"></select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-rtl").select2({
          +  dir: "rtl"
          +});
          +{% endhighlight %}
          +
          +  <h2 id="diacritics">Diacritics support</h2>
          +
          +  <p>
          +    Select2's default matcher will ignore diacritics, making it easier for
          +    users to filter results in international selects. Type "aero" into the
          +    select below.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-diacritics form-control">
          +        <option>Aeróbics</option>
          +        <option>Aeróbics en Agua</option>
          +        <option>Aerografía</option>
          +        <option>Aeromodelaje</option>
          +        <option>Águilas</option>
          +        <option>Ajedrez</option>
          +        <option>Ala Delta</option>
          +        <option>Álbumes de Música</option>
          +        <option>Alusivos</option>
          +        <option>Análisis de Escritura a Mano</option>
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-diacritics").select2();
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/matcher.html b/public/theme/select2/docs/_includes/examples/matcher.html
          new file mode 100644
          index 0000000..fbdcf1f
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/matcher.html
          @@ -0,0 +1,39 @@
          +<section>
          +  <h1 id="matcher">Customizing how results are matched</h1>
          +
          +  <p>
          +    Unlike other dropdowns on this page, this one matches options only if
          +    the term appears in the beginning of the string as opposed to anywhere:
          +  </p>
          +
          +  <p>
          +    This custom matcher uses a
          +    <a href="options.html#compat-matcher">compatibility module</a> that is
          +    only bundled in the
          +    <a href="index.html#builds-full">full version of Select2</a>. You also
          +    have the option of using a
          +    <a href="options.html#matcher">more complex matcher</a>.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-matcher-start js-states form-control"></select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +function matchStart (term, text) {
          +  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +    return true;
          +  }
          +
          +  return false;
          +}
          +
          +$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
          +  $(".js-example-matcher-start").select2({
          +    matcher: oldMatcher(matchStart)
          +  })
          +});
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/multiple-max.html b/public/theme/select2/docs/_includes/examples/multiple-max.html
          new file mode 100644
          index 0000000..6ec0056
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/multiple-max.html
          @@ -0,0 +1,24 @@
          +<section>
          +  <h1 id="multiple-max">
          +    Limiting the number of selections
          +  </h1>
          +
          +  <p>
          +    Select2 multi-value select boxes can set restrictions regarding the
          +    maximum number of options selected. The select below is declared with
          +    the <code>multiple</code> attribute with <code>maximumSelectionLength</code>
          +    in the select2 options.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-basic-multiple-limit js-states form-control" multiple="multiple"></select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-basic-multiple-limit").select2({
          +  maximumSelectionLength: 2
          +});
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/placeholders.html b/public/theme/select2/docs/_includes/examples/placeholders.html
          new file mode 100644
          index 0000000..1b6afda
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/placeholders.html
          @@ -0,0 +1,36 @@
          +<section>
          +  <h1 id="placeholders">Placeholders</h1>
          +
          +  <p>
          +    A placeholder value can be defined and will be displayed until a
          +    selection is made. Select2 uses the <code>placeholder</code> attribute
          +    on multiple select boxes, which requires IE 10+. You can support it in
          +    older versions with
          +    <a href="https://github.com/jamesallardice/Placeholders.js">the Placeholders.js polyfill</a>.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-placeholder-single js-states form-control">
          +        <option></option>
          +      </select>
          +    </p>
          +    <p>
          +      <select class="js-example-placeholder-multiple js-states form-control" multiple="multiple"></select>
          +    </p>
          +  </div>
          +
          +  <pre data-fill-from=".js-code-placeholder"></pre>
          +
          +<script type="text/javascript" class="js-code-placeholder">
          +$(".js-example-placeholder-single").select2({
          +  placeholder: "Select a state",
          +  allowClear: true
          +});
          +
          +$(".js-example-placeholder-multiple").select2({
          +  placeholder: "Select a state"
          +});
          +</script>
          +
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/programmatic-control.html b/public/theme/select2/docs/_includes/examples/programmatic-control.html
          new file mode 100644
          index 0000000..375eaa4
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/programmatic-control.html
          @@ -0,0 +1,155 @@
          +<section>
          +  <h1 id="programmatic-control" class="page-header">
          +    Programmatic control
          +  </h1>
          +
          +  <h2 id="events">DOM events</h2>
          +
          +  <p>
          +    Select2 will trigger some events on the original select element,
          +    allowing you to integrate it with other components. You can find more
          +    information on events
          +    <a href="options.html#events">on the options page</a>.
          +  </p>
          +
          +  <p>
          +    <code>change</code> is fired whenever an option is selected or removed.
          +  </p>
          +
          +  <p>
          +    <code>select2:open</code> is fired whenever the dropdown is opened.
          +    <code>select2:opening</code> is fired before this and can be prevented.
          +  </p>
          +
          +  <p>
          +    <code>select2:close</code> is fired whenever the dropdown is closed.
          +    <code>select2:closing</code> is fired before this and can be prevented.
          +  </p>
          +
          +  <p>
          +    <code>select2:select</code> is fired whenever a result is selected.
          +    <code>select2:selecting</code> is fired before this and can be prevented.
          +  </p>
          +
          +  <p>
          +    <code>select2:unselect</code> is fired whenever a result is unselected.
          +    <code>select2:unselecting</code> is fired before this and can be prevented.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-states js-example-events form-control"></select>
          +    </p>
          +    <p>
          +      <select class="js-states js-example-events form-control" multiple="multiple"></select>
          +    </p>
          +  </div>
          +
          +  <div class="s2-event-log">
          +    <ul class="js-event-log"></ul>
          +  </div>
          +
          +  <pre data-fill-from=".js-code-events"></pre>
          +
          +<script type="text/javascript" class="js-code-events">
          +var $eventLog = $(".js-event-log");
          +var $eventSelect = $(".js-example-events");
          +
          +$eventSelect.on("select2:open", function (e) { log("select2:open", e); });
          +$eventSelect.on("select2:close", function (e) { log("select2:close", e); });
          +$eventSelect.on("select2:select", function (e) { log("select2:select", e); });
          +$eventSelect.on("select2:unselect", function (e) { log("select2:unselect", e); });
          +
          +$eventSelect.on("change", function (e) { log("change"); });
          +
          +function log (name, evt) {
          +  if (!evt) {
          +    var args = "{}";
          +  } else {
          +    var args = JSON.stringify(evt.params, function (key, value) {
          +      if (value && value.nodeName) return "[DOM node]";
          +      if (value instanceof $.Event) return "[$.Event]";
          +      return value;
          +    });
          +  }
          +  var $e = $("<li>" + name + " -> " + args + "</li>");
          +  $eventLog.append($e);
          +  $e.animate({ opacity: 1 }, 10000, 'linear', function () {
          +    $e.animate({ opacity: 0 }, 2000, 'linear', function () {
          +      $e.remove();
          +    });
          +  });
          +}
          +</script>
          +
          +  <h2 id="programmatic">Programmatic access</h2>
          +
          +  <p>
          +    Select2 supports methods that allow programmatic control of the
          +    component.
          +  </p>
          +
          +  <div class="s2-example">
          +
          +    <p>
          +      <select class="js-example-programmatic js-states form-control"></select>
          +    </p>
          +
          +    <div class="btn-toolbar" role="toolbar" aria-label="Programmatic control">
          +      <div class="btn-group btn-group-sm" aria-label="Set Select2 option">
          +        <button class="js-programmatic-set-val btn btn-default">
          +          Set "California"
          +        </button>
          +      </div>
          +      <div class="btn-group btn-group-sm" role="group" aria-label="Open and close">
          +        <button class="js-programmatic-open btn btn-default">
          +          Open
          +        </button>
          +        <button class="js-programmatic-close btn btn-default">
          +          Close
          +        </button>
          +      </div>
          +      <div class="btn-group btn-group-sm" role="group" aria-label="Initialize and destroy">
          +        <button class="js-programmatic-init btn btn-default">
          +          Init
          +        </button>
          +        <button class="js-programmatic-destroy btn btn-default">
          +          Destroy
          +        </button>
          +      </div>
          +    </div>
          +
          +    <p>
          +      <select class="js-example-programmatic-multi js-states form-control" multiple="multiple"></select>
          +    </p>
          +
          +    <div class="btn-group btn-group-sm" role="group" aria-label="Programmatic setting and clearing Select2 options">
          +      <button type="button" class="js-programmatic-multi-set-val btn btn-default">
          +        Set to California and Alabama
          +      </button>
          +      <button type="button" class="js-programmatic-multi-clear btn btn-default">
          +        Clear
          +      </button>
          +    </div>
          +
          +  </div>
          +
          +  <pre data-fill-from=".js-code-programmatic"></pre>
          +
          +<script type="text/javascript" class="js-code-programmatic">
          +var $example = $(".js-example-programmatic").select2();
          +var $exampleMulti = $(".js-example-programmatic-multi").select2();
          +
          +$(".js-programmatic-set-val").on("click", function () { $example.val("CA").trigger("change"); });
          +
          +$(".js-programmatic-open").on("click", function () { $example.select2("open"); });
          +$(".js-programmatic-close").on("click", function () { $example.select2("close"); });
          +
          +$(".js-programmatic-init").on("click", function () { $example.select2(); });
          +$(".js-programmatic-destroy").on("click", function () { $example.select2("destroy"); });
          +
          +$(".js-programmatic-multi-set-val").on("click", function () { $exampleMulti.val(["CA", "AL"]).trigger("change"); });
          +$(".js-programmatic-multi-clear").on("click", function () { $exampleMulti.val(null).trigger("change"); });
          +</script>
          +
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/tags.html b/public/theme/select2/docs/_includes/examples/tags.html
          new file mode 100644
          index 0000000..69733a3
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/tags.html
          @@ -0,0 +1,29 @@
          +<section>
          +  <h1 id="tags">Tagging support</h1>
          +
          +  <p>
          +    Select2 can be used to quickly set up fields used for tagging.
          +  </p>
          +
          +  <p>
          +    Note that when tagging is enabled the user can select from pre-existing
          +    options or create a new tag by picking the first choice, which is what
          +    the user has typed into the search box so far.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-tags form-control" multiple="multiple">
          +        <option selected="selected">orange</option>
          +        <option>white</option>
          +        <option selected="selected">purple</option>
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-tags").select2({
          +  tags: true
          +})
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/themes-templating-responsive-design.html b/public/theme/select2/docs/_includes/examples/themes-templating-responsive-design.html
          new file mode 100644
          index 0000000..15537f7
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/themes-templating-responsive-design.html
          @@ -0,0 +1,104 @@
          +<section>
          +
          +  <h1 id="themes-templating-responsive-design" class="page-header">
          +    Themes, templating and responsive design
          +  </h1>
          +
          +  <h2 id="themes">Theme support</h2>
          +
          +  <p>
          +    Select2 supports custom themes using the
          +    <a href="options.html#theme">theme option</a>
          +    so you can style Select2 to match the rest of your application.
          +  </p>
          +
          +  <p>
          +    These are using the <code>classic</code> theme, which matches the old
          +    look of Select2.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-theme-single js-states form-control">
          +      </select>
          +    </p>
          +    <p>
          +      <select class="js-example-theme-multiple js-states form-control" multiple="multiple"></select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-theme-single").select2({
          +  theme: "classic"
          +});
          +
          +$(".js-example-theme-multiple").select2({
          +  theme: "classic"
          +});
          +{% endhighlight %}
          +
          +<h2 id="templating">Templating</h2>
          +
          +<p>
          +  Various display options of the Select2 component can be changed:
          +  You can access the <code>&lt;option&gt;</code> element
          +  (or <code>&lt;optgroup&gt;</code>) and any attributes on those elements
          +  using <code>.element</code>.
          +</p>
          +
          +<p>
          +  Templating is primarily controlled by the
          +  <a href="options.html#templateResult"><code>templateResult</code></a>
          +  and <a href="options.html#templateSelection"><code>templateSelection</code></a>
          +  options.
          +</p>
          +
          +<div class="s2-example">
          +  <p>
          +    <select class="js-example-templating js-states form-control"></select>
          +  </p>
          +</div>
          +
          +{% highlight js linenos %}
          +function formatState (state) {
          +  if (!state.id) { return state.text; }
          +  var $state = $(
          +    '<span><img src="vendor/images/flags/' + state.element.value.toLowerCase() + '.png" class="img-flag" /> ' + state.text + '</span>'
          +  );
          +  return $state;
          +};
          +
          +$(".js-example-templating").select2({
          +  templateResult: formatState
          +});
          +{% endhighlight %}
          +
          +<h2 id="responsive">Responsive design - Percent width</h2>
          +
          +<p>
          +  Select2's width can be set to a percentage of its parent to support
          +  responsive design. The two Select2 boxes below are styled to 50% and 75%
          +  width respectively.
          +</p>
          +
          +<div class="s2-example">
          +  <p>
          +    <select class="js-example-responsive js-states" style="width: 50%"></select>
          +  </p>
          +  <p>
          +    <select class="js-example-responsive js-states" multiple="multiple" style="width: 75%"></select>
          +  </p>
          +</div>
          +
          +{% highlight html linenos %}
          +<select class="js-example-responsive" style="width: 50%"></select>
          +<select class="js-example-responsive" multiple="multiple" style="width: 75%"></select>
          +{% endhighlight %}
          +
          +<div class="alert alert-warning">
          +  Select2 will do its best to resolve the percent width specified via a
          +  css class, but it is not always possible. The best way to ensure that
          +  Select2 is using a percent based width is to inline the
          +  <code>style</code> declaration into the tag.
          +</div>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/examples/tokenizer.html b/public/theme/select2/docs/_includes/examples/tokenizer.html
          new file mode 100644
          index 0000000..6fa04ca
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/examples/tokenizer.html
          @@ -0,0 +1,32 @@
          +<section>
          +  <h1 id="tokenizer">Automatic tokenization</h1>
          +
          +  <p>
          +    Select2 supports ability to add choices automatically as the user is
          +    typing into the search field. Try typing in the search field below and
          +    entering a space or a comma.
          +  </p>
          +
          +  <p>
          +    The separators that should be used when tokenizing can be specified
          +    using the <a href="options.html#tokenSeparators">tokenSeparators</a>
          +    options.
          +  </p>
          +
          +  <div class="s2-example">
          +    <p>
          +      <select class="js-example-tokenizer form-control" multiple="multiple">
          +        <option>red</option>
          +        <option>blue</option>
          +        <option>green</option>
          +      </select>
          +    </p>
          +  </div>
          +
          +{% highlight js linenos %}
          +$(".js-example-tokenizer").select2({
          +  tags: true,
          +  tokenSeparators: [',', ' ']
          +})
          +{% endhighlight %}
          +</section>
          diff --git a/public/theme/select2/docs/_includes/footer.html b/public/theme/select2/docs/_includes/footer.html
          new file mode 100644
          index 0000000..1198d5a
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/footer.html
          @@ -0,0 +1,20 @@
          +<footer class="s2-docs-footer" role="contentinfo">
          +  <div class="container">
          +    {% include social-buttons.html %}
          +    <p>
          +      Select2 is licensed under <a href="https://github.com/select2/select2/blob/master/LICENSE.md">MIT</a>, documentation under <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.
          +    </p>
          +    <p>
          +      Maintained by <a href="https://github.com/kevin-brown">Kevin Brown</a> and <a href="https://github.com/ivaynberg">Igor Vaynberg</a> with the help of <a href="https://github.com/select2/select2/graphs/contributors">our contributors</a>.
          +    </p>
          +    <ul class="s2-docs-footer-links">
          +      <li>Currently v4.0.3</li>
          +      <li><a href="https://github.com/select2/select2">GitHub</a></li>
          +      <li><a href="./examples.html">Examples</a></li>
          +      <li><a href="./options.html">Options</a></li>
          +      <li><a href="http://select2.github.io/select2/">v3.5.2 docs</a></li>
          +      <li><a href="https://github.com/select2/select2/issues">Issues</a></li>
          +      <li><a href="https://github.com/select2/select2/releases">Releases</a></li>
          +    </ul>
          +  </div>
          +</footer>
          diff --git a/public/theme/select2/docs/_includes/ga.html b/public/theme/select2/docs/_includes/ga.html
          new file mode 100644
          index 0000000..5ed5228
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/ga.html
          @@ -0,0 +1,9 @@
          +<script type="text/javascript">
          +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          +    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          +    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
          +
          +  ga('create', 'UA-57144786-2', 'auto');
          +  ga('send', 'pageview');
          +</script>
          diff --git a/public/theme/select2/docs/_includes/head.html b/public/theme/select2/docs/_includes/head.html
          new file mode 100644
          index 0000000..84270cf
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/head.html
          @@ -0,0 +1,31 @@
          +<meta charset="utf-8">
          +<meta http-equiv="X-UA-Compatible" content="IE=edge">
          +<meta name="viewport" content="width=device-width, initial-scale=1">
          +
          +<link rel="apple-touch-icon" sizes="57x57" href="/images/apple-touch-icon-57x57.png?v=699Nxpjr2A">
          +<link rel="apple-touch-icon" sizes="60x60" href="/images/apple-touch-icon-60x60.png?v=699Nxpjr2A">
          +<link rel="apple-touch-icon" sizes="72x72" href="/images/apple-touch-icon-72x72.png?v=699Nxpjr2A">
          +<link rel="icon" type="image/png" href="/images/favicon-32x32.png?v=699Nxpjr2A" sizes="32x32">
          +<link rel="icon" type="image/png" href="/images/favicon-16x16.png?v=699Nxpjr2A" sizes="16x16">
          +<link rel="manifest" href="/images/manifest.json?v=699Nxpjr2A">
          +<link rel="mask-icon" href="/images/safari-pinned-tab.svg?v=699Nxpjr2A" color="#F6F6F6">
          +<link rel="shortcut icon" href="/images/favicon.ico?v=699Nxpjr2A">
          +<meta name="msapplication-TileColor" content="#da532c">
          +<meta name="msapplication-config" content="/browserconfig.xml?v=699Nxpjr2A">
          +<meta name="theme-color" content="#f6f6f6">
          +
          +<title>
          +  {{ page.title }}
          +</title>
          +
          +<script type="text/javascript" src="vendor/js/jquery.min.js"></script>
          +<script type="text/javascript" src="dist/js/select2.full.js"></script>
          +<script type="text/javascript" src="vendor/js/bootstrap.min.js"></script>
          +<script type="text/javascript" src="vendor/js/prettify.min.js"></script>
          +<script type="text/javascript" src="vendor/js/anchor.min.js"></script>
          +
          +<link href="css/bootstrap.css" type="text/css" rel="stylesheet" />
          +<link href="dist/css/select2.min.css" type="text/css" rel="stylesheet" />
          +
          +<link href="css/font-awesome.css" type="text/css" rel="stylesheet" />
          +<link href="css/s2-docs.css" type="text/css" rel="stylesheet" >
          diff --git a/public/theme/select2/docs/_includes/js-source-states.html b/public/theme/select2/docs/_includes/js-source-states.html
          new file mode 100644
          index 0000000..34876be
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/js-source-states.html
          @@ -0,0 +1,62 @@
          +<select class="js-source-states">
          +  <optgroup label="Alaskan/Hawaiian Time Zone">
          +    <option value="AK">Alaska</option>
          +    <option value="HI">Hawaii</option>
          +  </optgroup>
          +  <optgroup label="Pacific Time Zone">
          +    <option value="CA">California</option>
          +    <option value="NV">Nevada</option>
          +    <option value="OR">Oregon</option>
          +    <option value="WA">Washington</option>
          +  </optgroup>
          +  <optgroup label="Mountain Time Zone">
          +    <option value="AZ">Arizona</option>
          +    <option value="CO">Colorado</option>
          +    <option value="ID">Idaho</option>
          +    <option value="MT">Montana</option>
          +    <option value="NE">Nebraska</option>
          +    <option value="NM">New Mexico</option>
          +    <option value="ND">North Dakota</option>
          +    <option value="UT">Utah</option>
          +    <option value="WY">Wyoming</option>
          +  </optgroup>
          +  <optgroup label="Central Time Zone">
          +    <option value="AL">Alabama</option>
          +    <option value="AR">Arkansas</option>
          +    <option value="IL">Illinois</option>
          +    <option value="IA">Iowa</option>
          +    <option value="KS">Kansas</option>
          +    <option value="KY">Kentucky</option>
          +    <option value="LA">Louisiana</option>
          +    <option value="MN">Minnesota</option>
          +    <option value="MS">Mississippi</option>
          +    <option value="MO">Missouri</option>
          +    <option value="OK">Oklahoma</option>
          +    <option value="SD">South Dakota</option>
          +    <option value="TX">Texas</option>
          +    <option value="TN">Tennessee</option>
          +    <option value="WI">Wisconsin</option>
          +  </optgroup>
          +  <optgroup label="Eastern Time Zone">
          +    <option value="CT">Connecticut</option>
          +    <option value="DE">Delaware</option>
          +    <option value="FL">Florida</option>
          +    <option value="GA">Georgia</option>
          +    <option value="IN">Indiana</option>
          +    <option value="ME">Maine</option>
          +    <option value="MD">Maryland</option>
          +    <option value="MA">Massachusetts</option>
          +    <option value="MI">Michigan</option>
          +    <option value="NH">New Hampshire</option>
          +    <option value="NJ">New Jersey</option>
          +    <option value="NY">New York</option>
          +    <option value="NC">North Carolina</option>
          +    <option value="OH">Ohio</option>
          +    <option value="PA">Pennsylvania</option>
          +    <option value="RI">Rhode Island</option>
          +    <option value="SC">South Carolina</option>
          +    <option value="VT">Vermont</option>
          +    <option value="VA">Virginia</option>
          +    <option value="WV">West Virginia</option>
          +  </optgroup>
          +</select>
          diff --git a/public/theme/select2/docs/_includes/nav/announcements-4.0.html b/public/theme/select2/docs/_includes/nav/announcements-4.0.html
          new file mode 100644
          index 0000000..733e2c4
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/nav/announcements-4.0.html
          @@ -0,0 +1,26 @@
          +<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
          +  <ul class="nav s2-docs-sidenav">
          +    <li>
          +      <a href="#select2-400">Select2 4.0.0</a>
          +      <ul class="nav">
          +        <li><a href="#new-features">New features</a></li>
          +        <li><a href="#plugin-system">Plugin system</a></li>
          +        <li><a href="#amd-based-build-system">AMD-based build system</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#migrating-from-select2-35">Migrating from Select2 3.5</a>
          +      <ul class="nav">
          +        <li><a href="#hidden-input">No more hidden input tags</a></li>
          +        <li><a href="#new-matcher">Advanced matching of searches</a></li>
          +        <li><a href="#flexible-placeholders">More flexible placeholders</a></li>
          +        <li><a href="#value-ordering">Display reflects the actual order of the values</a></li>
          +        <li><a href="#changed-options">Changed method and option names</a></li>
          +        <li><a href="#removed-methods">Deprecated and removed methods</a></li>
          +      </ul>
          +    </li>
          +  </ul>
          +  <a class="back-to-top" href="#top">
          +    Back to top
          +  </a>
          +</nav>
          diff --git a/public/theme/select2/docs/_includes/nav/examples.html b/public/theme/select2/docs/_includes/nav/examples.html
          new file mode 100644
          index 0000000..3e48e40
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/nav/examples.html
          @@ -0,0 +1,96 @@
          +<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
          +  <ul class="nav s2-docs-sidenav">
          +    <li>
          +      <a href="#basics">The basics</a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#single">Single select boxes</a>
          +        </li>
          +        <li>
          +          <a href="#multiple">Multiple select boxes</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#placeholders">Placeholders</a>
          +    </li>
          +    <li>
          +      <a href="#data">
          +        Data sources
          +      </a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#data-array">Loading array data</a>
          +        </li>
          +        <li>
          +          <a href="#data-ajax">Loading remote data</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#disabled">Disabled mode</a>
          +    </li>
          +    <li>
          +      <a href="#disabled-results">Disabled results</a>
          +    </li>
          +    <li>
          +      <a href="#multiple-max">Limiting the number of selections</a>
          +    </li>
          +    <li>
          +      <a href="#hide-search">Hiding the search box</a>
          +    </li>
          +    <li>
          +      <a href="#programmatic-control">Programmatic control</a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#events">DOM events</a>
          +        </li>
          +        <li>
          +          <a href="#programmatic">Programmatic access</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#tags">Tagging support</a>
          +    </li>
          +    <li>
          +      <a href="#tokenizer">Automatic tokenization</a>
          +    </li>
          +    <li>
          +      <a href="#matcher">Customizing how results are matched</a>
          +    </li>
          +    <li>
          +      <a href="#localization-rtl-diacritics">Localization, RTL and diacritics support</a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#language">Multiple languages</a>
          +        </li>
          +        <li>
          +          <a href="#rtl">RTL support</a>
          +        </li>
          +        <li>
          +          <a href="#diacritics">Diacritics support</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#themes-templating-responsive-design">
          +        Themes, templating and responsive design
          +      </a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#themes">Theme support</a>
          +        </li>
          +        <li>
          +          <a href="#templating">Templating</a>
          +        </li>
          +        <li>
          +          <a href="#responsive">Responsive design</a>
          +        </li>
          +      </ul>
          +    </li>
          +  </ul>
          +  <a class="back-to-top" href="#top">
          +    Back to top
          +  </a>
          +</nav>
          diff --git a/public/theme/select2/docs/_includes/nav/options-old.html b/public/theme/select2/docs/_includes/nav/options-old.html
          new file mode 100644
          index 0000000..b03d3d0
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/nav/options-old.html
          @@ -0,0 +1,55 @@
          +<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
          +  <ul class="nav s2-docs-sidenav">
          +    <li>
          +      <a href="#core-options">Core Options</a>
          +      <ul class="nav">
          +        <li><a href="#data-attributes">Declaring configuration in the <code>data-*</code> attributes</a></li>
          +        <li><a href="#amd">AMD compatibility</a></li>
          +        <li><a href="#core-options-display">Displaying selections</a></li>
          +        <li><a href="#core-options-results">Returning and displaying results</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#dropdown">Dropdown</a>
          +      <ul class="nav">
          +        <li><a href="#dropdownParent">Attached to body</a></li>
          +        <li><a href="#dropdown-attachContainer">Attached below the container</a></li>
          +        <li><a href="#dropdown-search">Search</a></li>
          +        <li><a href="#dropdown-select-on-close">Select the highlighted option on close</a></li>
          +        <li><a href="#closeOnSelect">Close the dropdown when a result is selected</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#events">Events</a>
          +      <ul class="nav">
          +        <li><a href="#events-public">Public events</a></li>
          +        <li><a href="#events-internal">Internal events</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#adapters">The plugin system (adapters)</a>
          +      <ul class="nav">
          +        <li><a href="#adapters-all">All adapters</a></li>
          +        <li><a href="#selectionAdapter">Container (selection)</a></li>
          +        <li><a href="#dataAdapter">Data set</a></li>
          +        <li><a href="#dropdownAdapter">Dropdown</a></li>
          +        <li><a href="#resultsAdapter">Results</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#setting-default-options">Setting default options</a>
          +    </li>
          +    <li>
          +      <a href="#backwards-compatibility">Backwards compatibility</a>
          +      <ul class="nav">
          +        <li><a href="#compat-matcher">Simplified function for matching data objects</a></li>
          +        <li><a href="#initSelection">Old initial selections with <code>initSelection</code></a></li>
          +        <li><a href="#query">Querying old data with <code>query</code></a></li>
          +        <li><a href="#input-fallback">Compatibility with <code>&lt;input type="text" /&gt;</code></a></li>
          +      </ul>
          +    </li>
          +  </ul>
          +  <a class="back-to-top" href="#top">
          +    Back to top
          +  </a>
          +</nav>
          diff --git a/public/theme/select2/docs/_includes/nav/options.html b/public/theme/select2/docs/_includes/nav/options.html
          new file mode 100644
          index 0000000..4c1be4f
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/nav/options.html
          @@ -0,0 +1,77 @@
          +<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
          +  <ul class="nav s2-docs-sidenav">
          +    <li>
          +      <a href="#core-options">Core options</a>
          +      <ul class="nav">
          +        <li><a href="#setting-default-options">Changing default options</a></li>
          +        <li><a href="#data-attributes">Declaring configuration in the HTML</a></li>
          +        <li><a href="#amd">AMD compatibility</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#data-adapters">Data adapters</a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#data-adapters-select-tag">Using a <code>&lt;select&gt;</code></a>
          +        </li>
          +        <li>
          +          <a href="#data">Loading data from an array</a>
          +        </li>
          +        <li>
          +          <a href="#ajax">Connecting to a remote data source</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#selections">Displaying selections</a>
          +      <ul class="nav">
          +        <li>
          +          <a href="#placeholder">Showing a placeholder</a>
          +        </li>
          +        <li>
          +          <a href="#allowClear">Clearing selections</a>
          +        </li>
          +        <li>
          +          <a href="#templateSelection">Templating</a>
          +        </li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#results">Displaying results</a>
          +      <ul class="nav">
          +        <li><a href="#can-i-change-when-search-results-are-loaded">Controlling result loading</a></li>
          +        <li><a href="#can-i-change-how-selecting-results-works">Making selections</a></li>
          +        <li><a href="#can-i-change-how-the-dropdown-is-placed">Placement</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#events">Events</a>
          +      <ul class="nav">
          +        <li><a href="#events-public">Public jQuery events</a></li>
          +        <li><a href="#events-internal">Internal events</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#adapters">The plugin system (adapters)</a>
          +      <ul class="nav">
          +        <li><a href="#adapters-all">All adapters</a></li>
          +        <li><a href="#selectionAdapter">Container (selection)</a></li>
          +        <li><a href="#dataAdapter">Data set</a></li>
          +        <li><a href="#dropdownAdapter">Dropdown</a></li>
          +        <li><a href="#resultsAdapter">Results</a></li>
          +      </ul>
          +    </li>
          +    <li>
          +      <a href="#backwards-compatibility">Deprecated options</a>
          +      <ul class="nav">
          +        <li><a href="#compat-matcher">Simplified function for matching data objects</a></li>
          +        <li><a href="#initSelection">Old initial selections with <code>initSelection</code></a></li>
          +        <li><a href="#query">Querying old data with <code>query</code></a></li>
          +        <li><a href="#input-fallback">Compatibility with <code>&lt;input type="text" /&gt;</code></a></li>
          +      </ul>
          +    </li>
          +  </ul>
          +  <a class="back-to-top" href="#top">
          +    Back to top
          +  </a>
          +</nav>
          diff --git a/public/theme/select2/docs/_includes/navigation.html b/public/theme/select2/docs/_includes/navigation.html
          new file mode 100644
          index 0000000..d694fa1
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/navigation.html
          @@ -0,0 +1,53 @@
          +<header class="s2-docs-nav navbar navbar-default navbar-static-top" id="top" role="banner">
          +  <div class="container">
          +    <div class="navbar-header">
          +      <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".select2-navbar-collapse">
          +        <span class="sr-only">Toggle navigation</span>
          +        <span class="icon-bar top-bar"></span>
          +        <span class="icon-bar middle-bar"></span>
          +        <span class="icon-bar bottom-bar"></span>
          +      </button>
          +      <a href="./" class="navbar-brand"><img src="/images/logo.png" height="20px"> Select2</a>
          +    </div>
          +
          +    <nav class="collapse navbar-collapse select2-navbar-collapse" role="navigation">
          +      <ul class="nav navbar-nav">
          +        <li{% if page.slug == "examples" %} class="active"{% endif %}>
          +          <a href="./examples.html">Examples</a>
          +        </li>
          +        <li{% if page.slug == "options" %} class="active"{% endif %}>
          +          <a href="./options.html">Options</a>
          +        </li>
          +        <li class="dropdown{% if page.slug == "announcements-4.0" %} active{% endif %}">
          +          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
          +            Topics
          +            <span class="caret"></span>
          +          </a>
          +          <ul class="dropdown-menu">
          +            <li{% if page.slug == "announcements-4.0" %} class="active"{% endif %}>
          +              <a href="./announcements-4.0.html">4.0 Announcement</a>
          +            </li>
          +            <li class="divider"></li>
          +            <li>
          +              <a href="https://github.com/select2/select2/releases">
          +                Release notes
          +              </a>
          +            </li>
          +          </ul>
          +        </li>
          +        <li{% if page.slug == "community" %} class="active"{% endif %}>
          +          <a href="./community.html">Community</a>
          +        </li>
          +      </ul>
          +
          +      <ul class="nav navbar-nav navbar-right">
          +        <li>
          +          <a href="https://github.com/select2/select2">
          +            <i class="fa fa-github"></i>
          +            GitHub
          +          </a>
          +        </li>
          +      </ul>
          +    </nav>
          +  </div>
          +</header>
          diff --git a/public/theme/select2/docs/_includes/notice-previous.html b/public/theme/select2/docs/_includes/notice-previous.html
          new file mode 100644
          index 0000000..9a444cf
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/notice-previous.html
          @@ -0,0 +1,7 @@
          +<section class="notice-previous">
          +  <div class="container text-center">
          +    <a href="http://select2.github.io/select2/">Looking for the Select2 3.5.2 docs?</a>
          +    We have moved them to a new location
          +    <a href="announcements-4.0.html">while we push forward with Select2 4.0</a>.
          +  </div>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/adapters.html b/public/theme/select2/docs/_includes/options-old/adapters.html
          new file mode 100644
          index 0000000..c0807ed
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/adapters.html
          @@ -0,0 +1,209 @@
          +<section>
          +  <div class="page-header">
          +    <h1 id="adapters">Adapters</h1>
          +  </div>
          +
          +  <p>
          +    Select2 allows plugins to add additional functionality through the core
          +    adapters. You can change almost anything involving the way Select2 works
          +    to the way Select2 interacts with the page by modifying the core adapters.
          +    Most third-party plugins should provide decorators (used to wrap adapters)
          +    and custom adapters that you can use.
          +  </p>
          +
          +  <p>
          +    Each adapter contains a set of methods which will must always be defined.
          +    Along with the global methods that all adapters must implement, these
          +    methods must be implemented.
          +  </p>
          +
          +  <h2 id="adapters-all">
          +    All adapters
          +  </h2>
          +
          +  <p>
          +    All adapters must implement a set of methods that Select2 will use to
          +    display them and bind any internal events.
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +// The basic HTML that should be rendered by Select2. A jQuery or DOM element
          +// should be returned, which will automatically be placed by Select2 within the
          +// DOM.
          +//
          +// @returns A jQuery or DOM element that contains any elements that must be
          +//   rendered by Select2.
          +Adapter.render = function () {
          +  return $jq;
          +};
          +
          +// Bind to any Select2 or DOM events.
          +//
          +// @param container The Select2 object that is bound to the jQuery element.  You
          +//   can listen to Select2 events with `on` and trigger Select2 events using the
          +//   `trigger` method.
          +// @param $container The jQuery DOM node that all default adapters will be
          +//   rendered within.
          +Adapter.bind = function (container, $container) { };
          +
          +// Position the DOM element within the Select2 DOM container, or in another
          +// place. This allows adapters to be located outside of the Select2 DOM,
          +// such as at the end of the document or in a specific place within the Select2
          +// DOM node.
          +//
          +// Note: This method is not called on data adapters.
          +//
          +// @param $rendered The rendered DOM element that was returned from the call to
          +//   `render`. This may have been modified by Select2, but the root element
          +//   will always be the same.
          +// @param $defaultContainer The default container that Select2 will typically
          +//   place the rendered DOM element within. For most adapters, this is the
          +//   Select2 DOM element.
          +Adapter.position = function ($rendered, $defaultContainer) { };
          +
          +// Destroy any events or DOM elements that have been created.
          +// This is called when `select2("destroy")` is called on an element.
          +Adapter.destroy = function () { };
          +</pre>
          +
          +  <h2 id="selectionAdapter">
          +    Container (selection)
          +  </h2>
          +
          +  <p>
          +    The selection is what is shown to the user as a replacement of the
          +    standard <code>&lt;select&gt;</code> box. It controls the display of the
          +    selection option(s), as well anything else that needs to be embedded
          +    within the container, such as a search box.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd>
          +      <code>selectionAdapter</code>
          +    </dd>
          +
          +    <dt>Default</dt>
          +    <dd>
          +      <code title="select2/selection/single">SingleSelection</code> or
          +      <code title="select2/selection/multiple">MultipleSelection</code>
          +    </dd>
          +
          +    <dt>Base</dt>
          +    <dd>
          +      <code title="select2/selection/base">BaseSelection</code>
          +    </dd>
          +  </dl>
          +
          +<pre class="prettyprint linenums">
          +// Update the selected data.
          +//
          +// @param data An array of data objects that have been generated by the data
          +//   adapter. If no objects should be selected, an empty array will be passed.
          +//
          +// Note: An array will always be passed into this method, even if Select2 is
          +// attached to a source which only accepts a single selection.
          +SelectionAdapter.update = function (data) { };
          +</pre>
          +
          +  <h2 id="dataAdapter">
          +    Data set
          +  </h2>
          +
          +  <p>
          +    The data set is what Select2 uses to generate the possible results that
          +    can be selected, as well as the currently selected results.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd>
          +      <code>dataAdapter</code>
          +    </dd>
          +
          +    <dt>Default</dt>
          +    <dd>
          +      <code title="select2/data/select">SelectAdapter</code>
          +    </dd>
          +
          +    <dt>Base</dt>
          +    <dd>
          +      <code title="select2/data/base">BaseAdapter</code>
          +    </dd>
          +  </dl>
          +
          +<pre class="prettyprint linenums">
          +// Get the currently selected options. This is called when trying to get the
          +// initial selection for Select2, as well as when Select2 needs to determine
          +// what options within the results are selected.
          +//
          +// @param callback A function that should be called when the current selection
          +//   has been retrieved. The first parameter to the function should be an array
          +//   of data objects.
          +DataAdapter.current = function (callback) {
          +  callback(currentData);
          +}
          +
          +// Get a set of options that are filtered based on the parameters that have
          +// been passed on in.
          +//
          +// @param params An object containing any number of parameters that the query
          +//   could be affected by. Only the core parameters will be documented.
          +// @param params.term A user-supplied term. This is typically the value of the
          +//   search box, if one exists, but can also be an empty string or null value.
          +// @param params.page The specific page that should be loaded. This is typically
          +//   provided when working with remote data sets, which rely on pagination to
          +//   determine what objects should be displayed.
          +// @param callback The function that should be called with the queried results.
          +DataAdapter.query = function (params, callback) {
          +  callback(queryiedData);
          +}
          +</pre>
          +
          +  <h2 id="dropdownAdapter">
          +    Dropdown
          +  </h2>
          +
          +  <p>
          +    The dropdown adapter defines the main container that the dropdown should
          +    be held in. <strong>It does not define any extra methods that can be used
          +    for decorators</strong>, but it is common for decorators to attach to the
          +    <code>render</code> and <code>position</code> methods to alter how the
          +    dropdown is altered and positioned.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd>
          +      <code>dropdownAdapter</code>
          +    </dd>
          +
          +    <dt>Default</dt>
          +    <dd>
          +      <code title="select2/dropdown">DropdownAdapter</code>
          +    </dd>
          +  </dl>
          +
          +  <h2 id="resultsAdapter">
          +    Results
          +  </h2>
          +
          +  <p>
          +    The results adapter controls the list of results that the user can select
          +    from. While the results adapter does not define any additional methods
          +    that must be implemented, it makes extensive use of the Select2 event
          +    system for controlling the display of results and messages.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd>
          +      <code>resultsAdapter</code>
          +    </dd>
          +
          +    <dt>Default</dt>
          +    <dd>
          +      <code title="select2/results">ResultsAdapter</code>
          +    </dd>
          +  </dl>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/backwards-compatibility.html b/public/theme/select2/docs/_includes/options-old/backwards-compatibility.html
          new file mode 100644
          index 0000000..4bdd937
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/backwards-compatibility.html
          @@ -0,0 +1,200 @@
          +<section>
          +  <div class="page-header">
          +    <h1 id="compatibility">Backwards compatibility</h1>
          +  </div>
          +
          +  <p>
          +    Select2 offers limited backwards compatibility with the previously 3.5.x
          +    release line, allowing people more efficiently transfer across releases
          +    and get the latest features. For many of the larger changes, such as the
          +    change in how custom data adapters work, compatibility modules were
          +    created that will be used to assist in the upgrade process. It is not
          +    recommended to rely on these compatibility modules, as they will not
          +    always exist, but they make upgrading easier for major changes.
          +  </p>
          +
          +  <p>
          +    <strong>The compatibility modules are only included in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2</strong>. These files end in <code>.full.js</code>, and the
          +    compatibility modules are prefixed with <code>select2/compat</code>.
          +  </p>
          +
          +  <h2 id="compat-matcher">
          +    Simplified function for matching data objects
          +  </h2>
          +
          +  <p class="alert alert-info">
          +    <a href="announcements-4.0.html#new-matcher" class="alert-link">Added in Select2 4.0.0.</a>
          +    This method was added to make upgrading easier from earlier versions of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    During the <a href="announcements-4.0.html">Select2 4.0.0 release</a>, the
          +    <code>matcher</code> function was changed to allow for more complex
          +    matching of nested objects.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>matcher</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking a search <code>term</code> and the data object
          +          <code>text</code>.
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/compat/matcher">oldMatcher</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    The <a href="examples.html#matcher">custom matcher example</a> provides a
          +    guide for how to use this in your own application. For those upgrading
          +    from older versions of Select2, you just need to wrap your old
          +    <code>matcher</code> with this function to maintain compatibility.
          +  </p>
          +
          +  <h2 id="initSelection">
          +    Old initial selections with <code>initSelection</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#removed-initselection" class="alert-link">Deprecated in Select2 4.0.</a>
          +    This has been replaced by another option and is only available in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    In the past, Select2 required an option called <code>initSelection</code>
          +    that was defined whenever a custom data source was being used, allowing
          +    for the initial selection for the component to be determined. This has
          +    been replaced by the <code>current</code> method on the
          +    <a href="#dataAdapter">data adapter</a>.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>initSelection</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking a <code>callback</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/compat/initSelection">InitSelection</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h2 id="query">
          +    Querying old data with <code>query</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#query-to-data-adapter" class="alert-link">Deprecated in Select2 4.0.</a>
          +    This has been replaced by another option and is only available in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    In the past, Select2 supported an option called <code>query</code> that
          +    allowed for a custom data source to be used. This option has been replaced
          +    by the <code>query</code> method on the
          +    <a href="#dataAdapter">data adapter</a> and takes a very similar set of
          +    parameters.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>query</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking <code>params</code> (including a <code>callback</code>)
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/compat/query">Query</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h2 id="input-fallback">
          +    Compatibility with <code>&lt;input type="text" /&gt;</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#hidden-input" class="alert-link">Deprecated in Select2 4.0.</a>
          +    It is now encouraged to use the <code>&lt;select&gt;</code> tag instead.
          +  </p>
          +
          +  <p>
          +    In past versions of Select2, a <code>&lt;select&gt;</code> element could
          +    only be used with a limited subset of options. An
          +    <code>&lt;input type="hidden" /&gt;</code> was required instead, which did
          +    not allow for a graceful fallback for users who did not have JavaScript
          +    enabled. Select2 now supports the <code>&lt;select&gt;</code> element for
          +    all options, so it is no longer required to use <code>&lt;input /&gt;</code>
          +    elements with Select2.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Adapter</dt>
          +    <dd>
          +      <code title="select2/data/base">DataAdapter</code>
          +    </dd>
          +
          +    <dt>Decorator</dt>
          +    <dd>
          +      <code title="select2/compat/inputData">InputData</code>
          +    </dd>
          +  </dl>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/core-options.html b/public/theme/select2/docs/_includes/options-old/core-options.html
          new file mode 100644
          index 0000000..c32ca56
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/core-options.html
          @@ -0,0 +1,790 @@
          +<section>
          +  <h1 id="core-options" class="page-header">Core options</h1>
          +
          +  <p>
          +    Select2 supports a small subset of options in every build that is
          +    generated. Each option typically has a decorator that is required that
          +    wraps an adapter, adding support for the option. This is only required
          +    when a custom adapter is being used, as Select2 will build the required
          +    adapters by default.
          +  </p>
          +
          +  <p>
          +    Select2 will automatically apply decorators to any adapters which have not
          +    been manually overridden. The only time you need to decorate adapters is
          +    when you are using third-party adapters not provided by Select2, or you
          +    are using features not provided in the Select2 core. You can apply a
          +    decorator to an adapter using the
          +    <code title="select2/utils">Utils.Decorate</code> method provided with
          +    Select2.
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +$.fn.select2.amd.require(
          +    ["select2/utils", "select2/selection/single", "select2/selection/placeholder"],
          +    function (Utils, SingleSelection, Placeholder) {
          +  var CustomSelectionAdapter = Utils.Decorate(SingleSelection, Placeholder);
          +});
          +</pre>
          +
          +  <p>
          +    All core options that use decorators or adapters will clearly state it
          +    in the "Decorator" or "Adapter" part of the documentation. Decorators are
          +    typically only compatible with a specific type of adapter, so make sure to
          +    note what adapter is given.
          +  </p>
          +
          +  <h2 id="data-attributes">
          +    Declaring configuration in the <code>data-*</code> attributes
          +  </h2>
          +
          +  <p>
          +    It is recommended that you declare your configuration options for Select2
          +    when initializing Select2. You can also define your configuration options
          +    by using the HTML5 <code>data-*</code> attributes, which will override
          +    any options set when initializing Select2 and any defaults.
          +  </p>
          +
          +  <p>
          +    This means that if you declare your <code>&lt;select&gt;</code> tag as...
          +  </p>
          +
          +<pre class="prettyprint">
          +&lt;select data-tags="true" data-placeholder="Select an option"&gt;&lt;/select&gt;
          +</pre>
          +
          +  <p>
          +    Will be interpreted the same as initializing Select2 as...
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +$("select").select2({
          +  tags: "true",
          +  placeholder: "Select an option"
          +});
          +</pre>
          +
          +  <p>
          +    You can also define nested configurations, which are typically needed for
          +    options such as AJAX. Each level of nesting should be separated by two
          +    dashes (<code>--</code>) instead of one. Due to
          +    <a href="https://github.com/jquery/jquery/issues/2070">a jQuery bug</a>,
          +    nested options using <code>data-*</code> attributes
          +    <a href="https://github.com/select2/select2/issues/2969">do not work in jQuery 1.x</a>.
          +  </p>
          +
          +<pre class="prettyprint">
          +&lt;select data-ajax--url="http://example.org/api/test" data-ajax--cache="true"&gt;&lt;/select&gt;
          +</pre>
          +
          +  <p>
          +    Which will be interpreted the same as initializing Select2 with...
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +$("select").select2({
          +  ajax: {
          +    url: "http://example.org/api/test",
          +    cache: "true"
          +  }
          +});
          +</pre>
          +
          +  <p>
          +    The value of the option is subject to jQuery's
          +    <a href="https://api.jquery.com/data/#data-html5">parsing rules</a> for
          +    HTML5 data attributes.
          +  </p>
          +
          +  <h2 id="amd">
          +    AMD compatibility
          +  </h2>
          +
          +  <p>
          +    You can find more information on how to integrate Select2 with your
          +    existing AMD-based project by
          +    <a href="announcements-4.0.html#builds">viewing the 4.0 release notes</a>.
          +    Select2 automatically loads some modules when the adapters are being
          +    automatically constructed, so those who are using Select2 with a custom
          +    AMD build using their own system may need to specify the paths that are
          +    generated to the Select2 modules.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>amdBase</code>
          +        </dd>
          +
          +        <dt>Default</dt>
          +        <dd>
          +          <code>select2/</code>
          +        </dd>
          +      </dl>
          +    </div>
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>amdLanguageBase</code>
          +        </dd>
          +
          +        <dt>Default</dt>
          +        <dd>
          +          <code>select2/i18n/</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h2 id="core-options-display">
          +    Displaying selections
          +  </h2>
          +
          +  <p>
          +    Select2 provides options that allow you to directly affect how the
          +    container that holds the current selection is displayed.
          +  </p>
          +
          +  <h3 id="placeholder">
          +    Placeholders
          +  </h3>
          +
          +  <p>
          +    Select2 can display a placeholder for a single-value select that will
          +    replace an option, or be shown when no options are selected for
          +    multiple-value selects. You can find an example on the
          +    <a href="examples.html#placeholders">example page</a>.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>placeholder</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>string or object</dd>
          +      </dl>
          +
          +      <hr />
          +
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/selection/base">SelectionAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/selection/placeholder">Placeholder</code>
          +          and
          +          <code title="select2/dropdown/hidePlaceholder">HidePlaceholder</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <div class="alert alert-warning">
          +        <strong>Heads up!</strong>
          +        Because browsers assume that the first <code>option</code> in
          +        single-value select boxes is selected, you should add an empty
          +        <code>&lt;option&gt;&lt;/option&gt;</code> tag that the placeholder
          +        should use or it may not work.
          +      </div>
          +    </div>
          +  </div>
          +
          +  <p>
          +    If the <strong>value is a string</strong>, the placeholder will be
          +    displayed when a <strong>blank option</strong> is used as the placeholder.
          +    The <strong>value</strong> will be the message to show to users as the
          +    placeholders.
          +  </p>
          +
          +<pre class="prettyprint">
          +placeholder: "Select a repository"
          +</pre>
          +
          +      <p>
          +        If the <strong>value is an object</strong>, the object should be
          +        compatible with Select2's internal objects. The <code>id</code> should
          +        be the id to look for when determining if the placeholder should be
          +        displayed. The <code>text</code> should be the placeholder to display
          +        when that option is selected.
          +      </p>
          +
          +<pre class="prettyprint linenums">
          +placeholder: {
          +  id: "-1",
          +  text: "Select a repository"
          +}
          +</pre>
          +
          +  <div class="alert alert-info">
          +    You should <strong>pass in an object</strong> when you are using a
          +    framework that <strong>creates its own placeholder option</strong>. The
          +    <strong>id</strong> should be the same as the <code>value</code>
          +    attribute on the <code>option</code>.
          +  </div>
          +
          +  <p id="allowClear">
          +    You can allow a selected option to be cleared back to the placeholder by
          +    enabling the <code>allowClear</code> option.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>allowClear</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>boolean</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/selection/base">SelectionAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/selection/allowClear">AllowClear</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    This will display an "x" that the user can click to clear the current
          +    selection. It is designed to be used for cases where a single selection
          +    can be made.
          +  </p>
          +
          +  <h3 id="multiple">
          +    Multiple selections
          +  </h3>
          +
          +  <p>
          +    Select2 can display either a single selection or multiple selections.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd><code>multiple</code></dd>
          +
          +    <dt>Value</dt>
          +    <dd>boolean (<code>true</code> or <code>false</code>)</dd>
          +  </dl>
          +
          +  <p>
          +    This option will determine what the <code>SelectAdapter</code> (used by
          +    default) should use to set the value of the underlying <code>select</code>
          +    element. It will also determine if the <code>MultipleSelection</code>
          +    adapter should be used.
          +  </p>
          +
          +  <h3 id="width">
          +    Container width
          +  </h3>
          +
          +  <p>
          +    Select2 will try to match the width of the original element as closely as
          +    possible. Sometimes this isn't perfect, which is what you can tell Select2
          +    how to determine the width.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <table class="table table-striped table-bordered">
          +        <thead>
          +          <tr>
          +            <th>Value</th>
          +            <th>Description</th>
          +          </tr>
          +        </thead>
          +        <tbody>
          +          <tr>
          +            <td><code>"element"</code></td>
          +            <td>
          +              Uses javascript to calculate the width of the source element.
          +            </td>
          +          </tr>
          +          <tr>
          +            <td><code>"style"</code></td>
          +            <td>
          +              Copies the value of the width <code>style</code> attribute set on the source element.
          +            </td>
          +          </tr>
          +          <tr>
          +            <td><code>"resolve"</code></td>
          +            <td>
          +              Tries to use <code>style</code> to determine the width, falling back to <code>element</code>.
          +            </td>
          +          </tr>
          +          <tr>
          +            <td>Anything else</td>
          +            <td>
          +              The value of the <code>width</code> option is directly set as the width of the container.
          +            </td>
          +          </tr>
          +        </tbody>
          +      </table>
          +    </div>
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>width</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>string</dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h3 id="language">
          +    Internationalization (Language support)
          +  </h3>
          +
          +  <p>
          +    Messages will be displayed to users when necessary, such as when no
          +    search results were found or more characters need to be entered in order
          +    for a search to be made. These messages have been
          +    <a href="community.html#translations">translated into many languages</a>
          +    by contributors to Select2, but you can also provide your own
          +    translations.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>language</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>object or string</dd>
          +      </dl>
          +
          +      <hr />
          +
          +      <dl class="dl-horizontal">
          +        <dt>Module</dt>
          +        <dd>
          +          <code title="select2/translation">Translation</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <p class="alert alert-warning">
          +        <strong>Heads up!</strong> When using translations provided by Select2,
          +        you must make sure to include the translation file in your page after
          +        Select2.
          +      </p>
          +    </div>
          +  </div>
          +
          +  <p>
          +    When a string is passed in as the language, Select2 will try to resolve
          +    it into a language file. This allows you to specify your own language
          +    files, which must be defined as an AMD module. If the language file
          +    cannot be found, Select2 will assume it is a language code controlled by
          +    Select2, and it will try to load the translations for that language
          +    instead.
          +  </p>
          +
          +  <p>
          +    You can include your own translations by providing an object similar to
          +    the one below.
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +language: {
          +  // You can find all of the options in the language files provided in the
          +  // build. They all must be functions that return the string that should be
          +  // displayed.
          +  inputTooShort: function () {
          +    return "You must enter more characters...";
          +  }
          +}
          +</pre>
          +
          +  <h3 id="templating">
          +    Templating results and selections
          +  </h3>
          +
          +  <p>
          +    By default, Select2 will display the option text within the list of
          +    results and when the option has been selected.  Select2 comes with options
          +    that allow you to further customize the display of results and selections,
          +    allowing you to display them however you want.
          +  </p>
          +
          +  <h4 id="templateSelection">
          +    Customizing the display of selections
          +  </h4>
          +
          +  <p>
          +    When an option is displayed after it has been selected, it is passed
          +    through a formatting function that determines what is displayed. By
          +    default, the function only returns the <code>text</code> key of the data
          +    object.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd><code>templateSelection</code></dd>
          +
          +    <dt>Value</dt>
          +    <dd>A function taking a <code>selection</code> object</dd>
          +  </dl>
          +
          +  <div class="alert alert-info">
          +    <strong>Anything rendered as a selection is templated.</strong>
          +    This includes placeholders and pre-existing selections that are displayed,
          +    so you must ensure that your templating functions can support them.
          +  </div>
          +
          +  <p>
          +    The <code>templateSelection</code> function should return a string
          +    containing the text to be displayed, or an object (such as a jQuery
          +    object) that contains the data that should be displayed.
          +  </p>
          +
          +  <p>
          +    <strong>Strings are assumed to contain only text</strong> and will be
          +    passed through the <code>escapeMarkup</code> function, which strips any
          +    HTML markup.
          +  </p>
          +
          +  <p>
          +    <strong>
          +      Anything else will be passed
          +      <a href="https://api.jquery.com/append/">directly to <code>jQuery.fn.append</code></a>
          +    </strong> and will be handled directly by jQuery.  Any markup, such as
          +    HTML, returned will not be escaped and it is up to you to escape any
          +    malicious input provided by users.
          +  </p>
          +
          +  <h4 id="templateResult">
          +    Customizing the display of results
          +  </h4>
          +
          +  <p>
          +    When an option is displayed after it has been selected, it is passed
          +    through a formatting function that determines what is displayed. By
          +    default, the function only returns the <code>text</code> key of the data
          +    object.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd><code>templateResult</code></dd>
          +
          +    <dt>Value</dt>
          +    <dd>A function taking a <code>result</code> object</dd>
          +  </dl>
          +
          +  <div class="alert alert-info">
          +    <strong>Anything rendered in the results is templated.</strong>
          +    This includes results such as the "Searching..." and "Loading more..."
          +    text which will periodically be displayed, which allows you to add more
          +    advanced formatting to these automatically generated options.
          +  </div>
          +
          +  <p>
          +    The <code>templateResult</code> function should return a string
          +    containing the text to be displayed, or an object (such as a jQuery
          +    object) that contains the data that should be displayed.  It can also
          +    return <code>null</code>, which will prevent the option from being
          +    displayed in the results list.
          +  </p>
          +
          +  <p>
          +    <strong>Strings are assumed to contain only text</strong> and will be
          +    passed through the <code>escapeMarkup</code> function, which strips any
          +    HTML markup.
          +  </p>
          +
          +  <p>
          +    <strong>
          +      Anything else will be passed
          +      <a href="https://api.jquery.com/append/">directly to <code>jQuery.fn.append</code></a>
          +    </strong> and will be handled directly by jQuery.  Any markup, such as
          +    HTML, returned will not be escaped and it is up to you to escape any
          +    malicious input provided by users.
          +  </p>
          +
          +  <h2 id="core-options-results">
          +    Returning and displaying results
          +  </h2>
          +
          +  <p>
          +    Select2 can work on many different data sets ranging from local options,
          +    the same way that a <code>&lt;select&gt;</code> typically works, from
          +    remote options where a server generates the results that users can select
          +    from.
          +  </p>
          +
          +  <h3 id="data">
          +    Array
          +  </h3>
          +
          +  <p>
          +    Select2 allows creating the results based on an array of data objects that
          +    is included when initializing Select2.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>data</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>array of objects</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/array">ArrayAdapter</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    The objects that the users can select from should be passed as an array
          +    with each object containing <code>id</code> and <code>text</code>
          +    properties.
          +  </p>
          +
          +  <h3 id="ajax">
          +    AJAX
          +  </h3>
          +
          +  <p>
          +    Select2 allows searching for results from remote data sources using AJAX
          +    requests.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>ajax</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>object</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/ajax">AjaxAdapter</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    All options passed to this option will be directly passed to the
          +    <code>$.ajax</code> function that executes AJAX requests. There are a few
          +    custom options that Select2 will intercept, allowing you to customize the
          +    request as it is being made.
          +
          +<pre class="prettyprint linenums">
          +ajax: {
          +  // The number of milliseconds to wait for the user to stop typing before
          +  // issuing the ajax request.
          +  delay: 250,
          +  // You can craft a custom url based on the parameters that are passed into the
          +  // request. This is useful if you are using a framework which has
          +  // JavaScript-based functions for generating the urls to make requests to.
          +  //
          +  // @param params The object containing the parameters used to generate the
          +  //   request.
          +  // @returns The url that the request should be made to.
          +  url: function (params) {
          +    return UrlGenerator.Random();
          +  },
          +  // You can pass custom data into the request based on the parameters used to
          +  // make the request. For `GET` requests, the default method, these are the
          +  // query parameters that are appended to the url. For `POST` requests, this
          +  // is the form data that will be passed into the request. For other requests,
          +  // the data returned from here should be customized based on what jQuery and
          +  // your server are expecting.
          +  //
          +  // @param params The object containing the parameters used to generate the
          +  //   request.
          +  // @returns Data to be directly passed into the request.
          +  data: function (params) {
          +    var queryParameters = {
          +      q: params.term
          +    }
          +
          +    return queryParameters;
          +  },
          +  // You can modify the results that are returned from the server, allowing you
          +  // to make last-minute changes to the data, or find the correct part of the
          +  // response to pass to Select2. Keep in mind that results should be passed as
          +  // an array of objects.
          +  //
          +  // @param data The data as it is returned directly by jQuery.
          +  // @returns An object containing the results data as well as any required
          +  //   metadata that is used by plugins. The object should contain an array of
          +  //   data objects as the `results` key.
          +  processResults: function (data) {
          +    return {
          +      results: data
          +    };
          +  },
          +  // You can use a custom AJAX transport function if you do not want to use the
          +  // default one provided by jQuery.
          +  //
          +  // @param params The object containing the parameters used to generate the
          +  //   request.
          +  // @param success A callback function that takes `data`, the results from the
          +  //   request.
          +  // @param failure A callback function that indicates that the request could
          +  //   not be completed.
          +  // @returns An object that has an `abort` function that can be called to abort
          +  //   the request if needed.
          +  transport: function (params, success, failure) {
          +    var $request = $.ajax(params);
          +
          +    $request.then(success);
          +    $request.fail(failure);
          +
          +    return $request;
          +  }
          +}
          +</pre>
          +  </p>
          +
          +  <h3 id="tags">
          +    Tags
          +  </h3>
          +
          +  <p>
          +    Users can create their own options based on the text that they have
          +    entered.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>tags</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>boolean / array of objects</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/data/tags">Tags</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    If the <code>tags</code> option is passed into Select2, if a user types
          +    anything into the search box which doesn't already exist, it will be
          +    displayed at the top and the user will be able to select it.
          +  </p>
          +
          +  <p>
          +    <strong>For backwards compatibility</strong>, if an array of objects is
          +    passed in with the <code>tags</code> option, the options will be
          +    automatically created and the user will be able to select from them.
          +    This is the <strong>same as how <a href="#data">array data</a>
          +    works</strong>, and has similar limitations.
          +  </p>
          +
          +  <h3 id="matcher">
          +    Change how options are matched when searching
          +  </h3>
          +
          +  <p>
          +    When users filter down the results by entering search terms into the
          +    search box, Select2 uses an internal "matcher" to match search terms to
          +    results. <strong>When a remote data set is used, Select2 expects that the
          +    returned results have already been filtered.</strong>
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Key</dt>
          +    <dd>
          +      <code>matcher</code>
          +    </dd>
          +
          +    <dt>Value</dt>
          +    <dd>
          +      A function taking search <code>params</code> and the
          +      <code>data</code> object.
          +    </dd>
          +  </dl>
          +
          +  <p>
          +    Select2 will pass the individual data objects that have been passed back
          +    from the data adapter into the <code>matcher</code> individually to
          +    determine if they should be displayed. Only the first-level objects will
          +    be passed in, so <strong>if you are working with nested data, you need to
          +    match those individually</strong>.
          +  </p>
          +
          +<pre class="prettyprint linenums">
          +matcher: function (params, data) {
          +  // If there are no search terms, return all of the data
          +  if ($.trim(params.term) === '') {
          +    return data;
          +  }
          +
          +  // `params.term` should be the term that is used for searching
          +  // `data.text` is the text that is displayed for the data object
          +  if (data.text.indexOf(params.term) > -1) {
          +    var modifiedData = $.extend({}, data, true);
          +    modifiedData.text += ' (matched)';
          +
          +    // You can return modified objects from here
          +    // This includes matching the `children` how you want in nested data sets
          +    return modifiedData;
          +  }
          +
          +  // Return `null` if the term should not be displayed
          +  return null;
          +}
          +</pre>
          +
          +  <p>
          +    This allows for more advanced matching when working with nested objects,
          +    allowing you to handle them however you want. For those who are not
          +    looking to implement highly customized matching, but instead are just
          +    looking to change the matching algorithm for the text, a
          +    <a href="#compat-matcher">compatibility modules</a> has been created to
          +    make it easier.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/dropdown.html b/public/theme/select2/docs/_includes/options-old/dropdown.html
          new file mode 100644
          index 0000000..8762907
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/dropdown.html
          @@ -0,0 +1,308 @@
          +<section>
          +  <div class="page-header">
          +    <h1 id="dropdown">Dropdown</h1>
          +  </div>
          +
          +  <p>
          +    Select2 allows you to change the way that the dropdown works, allowing you
          +    to do anything from attach it to a different location in the document or
          +    add a search box.
          +  </p>
          +
          +  <h2 id="dropdownParent">
          +    Attached to body
          +  </h2>
          +
          +  <p>
          +    By default, Select2 will attach the dropdown to the end of the body and
          +    will absolutely position it to appear below the selection container.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>dropdownParent</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>jQuery element or DOM node</dd>
          +
          +        <hr />
          +
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/dropdown">DropdownAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/dropdown/attachBody">AttachBody</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <div class="alert alert-warning">
          +        <strong>Heads up!</strong>
          +        This will cause DOM events to be raised outside of the standard
          +        Select2 DOM container. This can cause issues with
          +        third-party components such as modals.
          +      </div>
          +    </div>
          +  </div>
          +
          +  <p>
          +    When the dropdown is attached to the body, you are not limited to just
          +    displaying the dropdown below the container. Select2 will display above
          +    the container if there is not enough space below the container, but there
          +    is enough space above it. You are also not limited to displaying the
          +    dropdown within the parent container, which means Select2 will render
          +    correctly inside of modals and other small containers.
          +  </p>
          +
          +  <h2 id="dropdown-attachContainer">
          +    Attached below the container
          +  </h2>
          +
          +  <p>
          +    Select2 can place the dropdown directly after the selection container, so
          +    it will appear in the same location within the DOM as the rest of Select2.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/dropdown">DropdownAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/dropdown/attachContainer">AttachContainer</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <div class="alert alert-warning">
          +        <strong>Check your build.</strong> This module is only included in the
          +        <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +        Select2.
          +      </div>
          +    </div>
          +  </div>
          +
          +  <div class="alert alert-info">
          +    <strong>
          +      <a href="https://harvesthq.github.io/chosen/">Harvest Chosen</a>
          +      migrators!
          +    </strong>
          +    If you are migrating to Select2 from Chosen, this option will cause
          +    Select2 to position the dropdown in a similar way.
          +  </div>
          +
          +  <h2 id="dropdown-search">
          +    Search
          +  </h2>
          +
          +  <p>
          +    Users can filter down the results by typing a search term into a box that
          +    is displayed at the top of the dropdown.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Adapter</dt>
          +    <dd>
          +      <code title="select2/dropdown">DropdownAdapter</code>
          +    </dd>
          +
          +    <dt>Decorator</dt>
          +    <dd>
          +      <code title="select2/dropdown/search">DropdownSearch</code>
          +    </dd>
          +  </dl>
          +
          +  <p>
          +    A search box is added to the top of the dropdown automatically for select
          +    boxes where only a single option can be selected.
          +  </p>
          +
          +  <h3 id="dropdown-minimumInputLength">
          +    Minimum search term length to filter results
          +  </h3>
          +
          +  <p>
          +    Sometimes when working with large data sets, it is more efficient to start
          +    filtering the results when the search term is a certain length. This is
          +    very common when working with remote data sets, as allows for only
          +    significant search terms to be used.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>minimumInputLength</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>integer</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/data/minimumInputLength">MinimumInputLength</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h3 id="dropdown-maximumInputLength">
          +    Maximum search term length to filter results
          +  </h3>
          +
          +  <p>
          +    In some cases, search terms need to be limited to a certain range. Select2
          +    allows you to limit the length of the search term such that it does not
          +    exceed a certain length.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>maximumInputLength</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>integer</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/data/maximumInputLength">MaximumInputLength</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h3 id="dropdown-maximumInputLength">
          +    Minimum results to display the search box
          +  </h3>
          +
          +  <p>
          +    When working with smaller data sets, the search box can take up more space
          +    that is necessary, as there are not enough results for filtering to be
          +    effective. Select2 allows you to only display the search box when the
          +    number of search results reaches a certain threshold.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>minimumResultsForSearch</code></dd>
          +
          +        <dt>Value</dt>
          +        <dd>integer</dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/dropdown">DropdownAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/dropdown/minimumResultsForSearch">MinimumResultsForSearch</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <h2 id="dropdown-select-on-close">
          +    Select the highlighted option on close
          +  </h2>
          +
          +  <p>
          +    When users close the dropdown, the last highlighted option can be
          +    automatically selected. This is commonly used in combination with
          +    <a href="#tags">tagging</a> and <a href="#placeholder">placeholders</a>
          +    and other situations where the user is required to select an option, or
          +    they need to be able to quickly select multiple options.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Adapter</dt>
          +    <dd>
          +      <code title="select2/results">ResultsAdapter</code>
          +    </dd>
          +
          +    <dt>Decorator</dt>
          +    <dd>
          +      <code title="select2/dropdown/selectOnClose">SelectOnClose</code>
          +    </dd>
          +  </dl>
          +
          +  <h2 id="closeOnSelect">
          +    Close the dropdown when a result is selected
          +  </h2>
          +
          +  <p>
          +    Select2 will automatically close the dropdown when an element is selected,
          +    similar to what is done with a normal select box.  This behavior can be
          +    changed though to keep the dropdown open when results are selected,
          +    allowing for multiple options to be selected quickly.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd><code>closeOnSelect</code></dd>
          +
          +        <dt>Default</dt>
          +        <dd><code>true</code></dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/dropdown">DropdownAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/dropdown/closeOnSelect">CloseOnSelect</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    If this decorator is not used (or <code>closeOnSelect</code> is set to
          +    <code>false</code>), the dropdown will not automatically close when a
          +    result is selected.  The dropdown will also never close if the
          +    <kbd>ctrl</kbd> key is held down when the result is selected.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/events.html b/public/theme/select2/docs/_includes/options-old/events.html
          new file mode 100644
          index 0000000..bf4f39a
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/events.html
          @@ -0,0 +1,50 @@
          +<section>
          +  <div id="events" class="page-header">
          +    <h1>Events</h1>
          +  </div>
          +
          +  <p>
          +    Select2 has an internal event system that is used to notify parts of the
          +    component that state has changed, as well as an adapter that allows some
          +    of these events to be relayed to the outside word.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Adapter</dt>
          +    <dd>
          +      <code title="select2/selection">SelectionAdapter</code>
          +    </dd>
          +
          +    <dt>Decorator</dt>
          +    <dd>
          +      <code title="select2/selection/eventRelay">EventRelay</code>
          +    </dd>
          +  </dl>
          +
          +  <h2 id="events-public">
          +    Public events
          +  </h2>
          +
          +  <p>
          +    All public events are relayed using the jQuery event system, and they are
          +    triggered on the <code>&lt;select&gt;</code> element that Select2 is
          +    attached to. You can attach to them using the
          +    <a href="https://api.jquery.com/on/"><code>.on</code> method</a> provided
          +    by jQuery.
          +  </p>
          +
          +  <h2 id="events-internal">
          +    Internal events
          +  </h2>
          +
          +  <p>
          +    Select2 triggers internal events using its own internal event system,
          +    which allows adapters to communicate with each other. These events are not
          +    accessible through the jQuery event system.
          +  </p>
          +
          +  <p>
          +    You can find more information on the public events triggered by individual
          +    adapters in <a href="#adapters">the individual adapter documentation</a>.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options-old/setting-default-options.html b/public/theme/select2/docs/_includes/options-old/setting-default-options.html
          new file mode 100644
          index 0000000..f2c74f6
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options-old/setting-default-options.html
          @@ -0,0 +1,37 @@
          +<section>
          +  <h1 id="setting-default-options">Setting default options</h1>
          +
          +  <p>
          +    In some cases, you need to set the default options for all instances of
          +    Select2 in your web application. This is especially useful when you are
          +    migrating from past versions of Select2, or you are using non-standard
          +    options <a href="#amd">like custom AMD builds</a>. Select2 exposes the
          +    default options through <code>$.fn.select2.defaults</code>, which allows
          +    you to set them globally.
          +  </p>
          +
          +  <p>
          +    When setting options globally, any past defaults that have been set will
          +    be overriden. Default options are only used when an option is requested
          +    that has not been set during initialization.
          +  </p>
          +
          +  <p>
          +    <strong>You can set default options</strong> by calling
          +    <code>$.fn.select2.defaults.set("key", "value")</code>. The key that is
          +    set should take the same format as keys set using
          +    <a href="#data-attributes">HTML <code>data-*</code> attributes</a> which
          +    means that two dashes (<code>--</code>) will be replaced by a level of
          +    nesting, and a single dash (<code>-</code>) will convert it to a camelCase
          +    string.
          +  </p>
          +
          +<pre class="prettyprint">
          +$.fn.select2.defaults.set("theme", "classic");
          +</pre>
          +
          +  <p>
          +    <strong>You can reset the default options</strong> by calling
          +    <code>$.fn.select2.defaults.reset()</code>.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options/compatibility.html b/public/theme/select2/docs/_includes/options/compatibility.html
          new file mode 100644
          index 0000000..a7f6197
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility.html
          @@ -0,0 +1,10 @@
          +<section>
          +  <h1>
          +    Backwards compatibility
          +  </h1>
          +
          +  {% include options/compatibility/matcher.html %}
          +  {% include options/compatibility/initial-selection.html %}
          +  {% include options/compatibility/query-function.html %}
          +  {% include options/compatibility/text-input.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/compatibility/initial-selection.html b/public/theme/select2/docs/_includes/options/compatibility/initial-selection.html
          new file mode 100644
          index 0000000..62fd093
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility/initial-selection.html
          @@ -0,0 +1,50 @@
          +<section>
          +  <h2 id="initSelection">
          +    Old initial selections with <code>initSelection</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#removed-initselection" class="alert-link">Deprecated in Select2 4.0.</a>
          +    This has been replaced by another option and is only available in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    In the past, Select2 required an option called <code>initSelection</code>
          +    that was defined whenever a custom data source was being used, allowing
          +    for the initial selection for the component to be determined. This has
          +    been replaced by the <code>current</code> method on the
          +    <a href="#dataAdapter">data adapter</a>.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>initSelection</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking a <code>callback</code>
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/compat/initSelection">InitSelection</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/compatibility/introduction.html b/public/theme/select2/docs/_includes/options/compatibility/introduction.html
          new file mode 100644
          index 0000000..0e82aab
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility/introduction.html
          @@ -0,0 +1,18 @@
          +<section>
          +  <p>
          +    Select2 offers limited backwards compatibility with the previously 3.5.x
          +    release line, allowing people more efficiently transfer across releases
          +    and get the latest features. For many of the larger changes, such as the
          +    change in how custom data adapters work, compatibility modules were
          +    created that will be used to assist in the upgrade process. It is not
          +    recommended to rely on these compatibility modules, as they will not
          +    always exist, but they make upgrading easier for major changes.
          +  </p>
          +
          +  <p>
          +    <strong>The compatibility modules are only included in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2</strong>. These files end in <code>.full.js</code>, and the
          +    compatibility modules are prefixed with <code>select2/compat</code>.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/compatibility/matcher.html b/public/theme/select2/docs/_includes/options/compatibility/matcher.html
          new file mode 100644
          index 0000000..150f72c
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility/matcher.html
          @@ -0,0 +1,50 @@
          +<section>
          +  <h2 id="compat-matcher">
          +    Simplified function for matching data objects
          +  </h2>
          +
          +  <p class="alert alert-info">
          +    <a href="announcements-4.0.html#new-matcher" class="alert-link">Added in Select2 4.0.0.</a>
          +    This method was added to make upgrading easier from earlier versions of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    During the <a href="announcements-4.0.html">Select2 4.0.0 release</a>, the
          +    <code>matcher</code> function was changed to allow for more complex
          +    matching of nested objects.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>matcher</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking a search <code>term</code> and the data object
          +          <code>text</code>.
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/compat/matcher">oldMatcher</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +
          +  <p>
          +    The <a href="examples.html#matcher">custom matcher example</a> provides a
          +    guide for how to use this in your own application. For those upgrading
          +    from older versions of Select2, you just need to wrap your old
          +    <code>matcher</code> with this function to maintain compatibility.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/compatibility/query-function.html b/public/theme/select2/docs/_includes/options/compatibility/query-function.html
          new file mode 100644
          index 0000000..f5f557d
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility/query-function.html
          @@ -0,0 +1,50 @@
          +<section>
          +  <h2 id="query">
          +    Querying old data with <code>query</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#query-to-data-adapter" class="alert-link">Deprecated in Select2 4.0.</a>
          +    This has been replaced by another option and is only available in the
          +    <a href="index.html#builds-full" class="alert-link">full builds</a> of
          +    Select2.
          +  </p>
          +
          +  <p>
          +    In the past, Select2 supported an option called <code>query</code> that
          +    allowed for a custom data source to be used. This option has been replaced
          +    by the <code>query</code> method on the
          +    <a href="#dataAdapter">data adapter</a> and takes a very similar set of
          +    parameters.
          +  </p>
          +
          +  <div class="row">
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Key</dt>
          +        <dd>
          +          <code>query</code>
          +        </dd>
          +
          +        <dt>Value</dt>
          +        <dd>
          +          A function taking <code>params</code> (including a <code>callback</code>)
          +        </dd>
          +      </dl>
          +    </div>
          +
          +    <div class="col-sm-6">
          +      <dl class="dl-horizontal">
          +        <dt>Adapter</dt>
          +        <dd>
          +          <code title="select2/data/base">DataAdapter</code>
          +        </dd>
          +
          +        <dt>Decorator</dt>
          +        <dd>
          +          <code title="select2/compat/query">Query</code>
          +        </dd>
          +      </dl>
          +    </div>
          +  </div>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/compatibility/text-input.html b/public/theme/select2/docs/_includes/options/compatibility/text-input.html
          new file mode 100644
          index 0000000..4cea8c8
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/compatibility/text-input.html
          @@ -0,0 +1,32 @@
          +<section>
          +  <h2 id="input-fallback">
          +    Compatibility with <code>&lt;input type="text" /&gt;</code>
          +  </h2>
          +
          +  <p class="alert alert-warning">
          +    <a href="announcements-4.0.html#hidden-input" class="alert-link">Deprecated in Select2 4.0.</a>
          +    It is now encouraged to use the <code>&lt;select&gt;</code> tag instead.
          +  </p>
          +
          +  <p>
          +    In past versions of Select2, a <code>&lt;select&gt;</code> element could
          +    only be used with a limited subset of options. An
          +    <code>&lt;input type="hidden" /&gt;</code> was required instead, which did
          +    not allow for a graceful fallback for users who did not have JavaScript
          +    enabled. Select2 now supports the <code>&lt;select&gt;</code> element for
          +    all options, so it is no longer required to use <code>&lt;input /&gt;</code>
          +    elements with Select2.
          +  </p>
          +
          +  <dl class="dl-horizontal">
          +    <dt>Adapter</dt>
          +    <dd>
          +      <code title="select2/data/base">DataAdapter</code>
          +    </dd>
          +
          +    <dt>Decorator</dt>
          +    <dd>
          +      <code title="select2/compat/inputData">InputData</code>
          +    </dd>
          +  </dl>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/core.html b/public/theme/select2/docs/_includes/options/core.html
          new file mode 100644
          index 0000000..df83480
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/core.html
          @@ -0,0 +1,9 @@
          +<section>
          +  <h1>
          +    Core options
          +  </h1>
          +
          +  {% include options/core/options.html %}
          +  {% include options/core/data-attributes.html %}
          +  {% include options/core/amd-support.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/core/amd-support.html b/public/theme/select2/docs/_includes/options/core/amd-support.html
          new file mode 100644
          index 0000000..2cb6b30
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/core/amd-support.html
          @@ -0,0 +1,46 @@
          +<section>
          +  <h2 id="amd">
          +    Can I use Select2 with my AMD or CommonJS loader?
          +  </h2>
          +
          +  <p>
          +    Select2 should work with most AMD- or CommonJS-compliant module loaders, including <a href="http://requirejs.org/">RequireJS</a> and <a href="https://github.com/jrburke/almond">almond</a>. Select2 ships with a modified version of the <a href="https://github.com/umdjs/umd/blob/f208d385768ed30cd0025d5415997075345cd1c0/templates/jqueryPlugin.js">UMD jQuery template</a> that supports both CommonJS and AMD environments.
          +  </p>
          +
          +  <h3>
          +    How do I tell Select2 where to look for modules?
          +  </h3>
          +
          +  <p>
          +    For most AMD and CommonJS setups, the location of the data files used by Select2 will be automatically determined and handled without you needing to do anything.
          +  </p>
          +
          +  <p>
          +    If you are using Select2 in a build environment where preexisting module names are changed during a build step, Select2 may not be able to find optional dependencies or language files. You can manually set the prefixes to use for these files using the <code>amdBase</code> and <code>amdLanugageBase</code> options.
          +  </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.defaults.set('amdBase', 'select2/');
          +$.fn.select2.defaults.set('amdLanguageBase', 'select2/i18n/');
          +{% endhighlight %}
          +
          +  <h3>
          +    Select2 is being placed before jQuery in my JavaScript file
          +  </h3>
          +
          +  <p>
          +    Due to <a href="https://github.com/jrburke/requirejs/issues/1342">a bug in older versions</a> of the r.js build tool, Select2 was sometimes placed before jQuery in then compiled build file. Because of this, Select2 will trigger an error because it won't be able to find or load jQuery.
          +  </p>
          +
          +  <p>
          +    By upgrading to version 2.1.18 or higher of the r.js build tool, you will be able to fix the issue.
          +  </p>
          +
          +  <h3>
          +    Should I point to the files in <code>dist</code> or <code>src</code>?
          +  </h3>
          +
          +  <p>
          +    Select2 internally uses AMD and the r.js build tool to build the files located in the <code>dist</code> folder. These are built using the files in the <code>src</code> folder, so <em>you can</em> just point your modules to the Select2 source and load in <code>jquery.select2</code> or <code>select2/core</code> when you want to use Select2. The files located in the <code>dist</code> folder are also AMD-compatible, so you can point to that file if you want to load in all of the default Select2 modules.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/core/data-attributes.html b/public/theme/select2/docs/_includes/options/core/data-attributes.html
          new file mode 100644
          index 0000000..db6078d
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/core/data-attributes.html
          @@ -0,0 +1,76 @@
          +<section>
          +  <h2 id="data-attributes">
          +    Can I declare my configuration within the HTML?
          +  </h2>
          +
          +  <p>
          +    It is recommended that you declare your configuration options for Select2
          +    when initializing Select2. You can also define your configuration options
          +    by using the HTML5 <code>data-*</code> attributes, which will override
          +    any options set when initializing Select2 and any defaults.
          +  </p>
          +
          +  <h3>
          +    How should <code>camelCase</code> options be written?
          +  </h3>
          +
          +  <p>
          +    HTML data attributes are case-insensitive, so any options which contain capital letters will be parsed as if they were all lowercase. Because Select2 has many options which are camelCase, where words are separated by uppercase letters, you must write these options out with dashes instead. So an option that would normally be called <code>allowClear</code> should instead be defined as <code>allow-clear</code>.
          +  </p>
          +
          +  <p>
          +    This means that if you declare your <code>&lt;select&gt;</code> tag as...
          +  </p>
          +
          +{% highlight html linenos %}
          +<select data-tags="true" data-placeholder="Select an option" data-allow-clear="true"></select>
          +{% endhighlight %}
          +
          +  <p>
          +    Will be interpreted the same as initializing Select2 as...
          +  </p>
          +
          +{% highlight js linenos %}
          +$("select").select2({
          +  tags: "true",
          +  placeholder: "Select an option",
          +  allowClear: true
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    Are options with nested configurations supported?
          +  </h3>
          +
          +  <p>
          +    You can also define nested configurations, which are typically needed for
          +    options such as AJAX. Each level of nesting should be separated by two
          +    dashes (<code>--</code>) instead of one. Due to
          +    <a href="https://github.com/jquery/jquery/issues/2070">a jQuery bug</a>,
          +    nested options using <code>data-*</code> attributes
          +    <a href="https://github.com/select2/select2/issues/2969">do not work in jQuery 1.x</a>.
          +  </p>
          +
          +{% highlight html linenos %}
          +<select data-ajax--url="http://example.org/api/test" data-ajax--cache="true"></select>
          +{% endhighlight %}
          +
          +  <p>
          +    Which will be interpreted the same as initializing Select2 with...
          +  </p>
          +
          +{% highlight js linenos %}
          +$("select").select2({
          +  ajax: {
          +    url: "http://example.org/api/test",
          +    cache: true
          +  }
          +});
          +{% endhighlight %}
          +
          +  <p>
          +    The value of the option is subject to jQuery's
          +    <a href="https://api.jquery.com/data/#data-html5">parsing rules</a> for
          +    HTML5 data attributes.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/core/options.html b/public/theme/select2/docs/_includes/options/core/options.html
          new file mode 100644
          index 0000000..aaa2b11
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/core/options.html
          @@ -0,0 +1,80 @@
          +<section>
          +  <h2 id="options">
          +    How should Select2 be initialized?
          +  </h2>
          +
          +  <p>
          +    Select2 will register itself as a jQuery function if you use any of the distribution builds, so you can call <code>.select2()</code> on any jQuery element where you would like to initialize Select2.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2();
          +{% endhighlight %}
          +
          +  <p>
          +    You can optionally pass an object containing all of the options that you would like to initialize Select2 with.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  placeholder: 'Select an option'
          +});
          +{% endhighlight %}
          +
          +  <h3 id="setting-default-options">
          +    Can default options be set for all dropdowns?
          +  </h3>
          +
          +  <p>
          +    In some cases, you need to set the default options for all instances of
          +    Select2 in your web application. This is especially useful when you are
          +    migrating from past versions of Select2, or you are using non-standard
          +    options <a href="#amd">like custom AMD builds</a>. Select2 exposes the
          +    default options through <code>$.fn.select2.defaults</code>, which allows
          +    you to set them globally.
          +  </p>
          +
          +  <p>
          +    When setting options globally, any past defaults that have been set will
          +    be overriden. Default options are only used when an option is requested
          +    that has not been set during initialization.
          +  </p>
          +
          +  <p>
          +    <strong>You can set default options</strong> by calling
          +    <code>$.fn.select2.defaults.set("key", "value")</code>.
          +  </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.defaults.set("theme", "classic");
          +{% endhighlight %}
          +
          +  <h3>
          +    How can I set a default value for a nested option?
          +  </h3>
          +
          +  <p>
          +    The key that is
          +    set should take the same format as keys set using
          +    <a href="#data-attributes">HTML <code>data-*</code> attributes</a> which
          +    means that two dashes (<code>--</code>) will be replaced by a level of
          +    nesting, and a single dash (<code>-</code>) will convert it to a camelCase
          +    string.
          +  </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.defaults.set("ajax--cache", false);
          +{% endhighlight %}
          +
          +  <h3>
          +    How can I reset all of the global default options?
          +  </h3>
          +
          +  <p>
          +    You can reset the default options to their initial values by calling
          +  </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.defaults.reset();
          +{% endhighlight %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/data.html b/public/theme/select2/docs/_includes/options/data.html
          new file mode 100644
          index 0000000..c9c6f68
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/data.html
          @@ -0,0 +1,9 @@
          +<section>
          +  <h1>
          +    Data adapters
          +  </h1>
          +
          +  {% include options/data/select.html %}
          +  {% include options/data/array.html %}
          +  {% include options/data/ajax.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/data/ajax.html b/public/theme/select2/docs/_includes/options/data/ajax.html
          new file mode 100644
          index 0000000..7747274
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/data/ajax.html
          @@ -0,0 +1,147 @@
          +<section>
          +  <h2 id="ajax">
          +    Can Select2 be connected to a remote data source?
          +  </h2>
          +
          +  <p>
          +    Select2 supports connecting to a remote data source using the <code>ajax</code> option.
          +  </p>
          +
          +  <h3>
          +    How can I set the initially selected options when using AJAX?
          +  </h3>
          +
          +  <p>
          +    You can refer to the following Stack Overflow answer if you want to set the initial value for AJAX requests: <a href="http://stackoverflow.com/q/30316586/359284#30328989">Select2 4.0.0 initial value with AJAX</a>
          +  </p>
          +
          +  <h3>
          +    What should the results returned to Select2 look like?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Is there a way to modify the response before passing it back to Select2?
          +  </h3>
          +
          +  <p>
          +    You can use the <code>ajax.processResults</code> option to modify the data returned from the server before passing it to Select2.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    url: '/example/api',
          +    processResults: function (data) {
          +      return {
          +        results: data.items
          +      };
          +    }
          +  }
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    A request is being triggered on every key stroke, can I delay this?
          +  </h3>
          +
          +  <p>
          +    By default, Select2 will trigger a new AJAX request whenever the user changes their search term. You can set a time limit for debouncing requests using the <code>ajax.delay</code> option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    url: '/example/api',
          +    delay: 250
          +  }
          +});
          +{% endhighlight %}
          +
          +  <p>
          +    This will tell Select2 to wait 250 milliseconds before sending the request out to your API.
          +  </p>
          +
          +  <h3>
          +    How do I tell Select2 which URL to get the results from?
          +  </h3>
          +
          +  <p>
          +    When connecting Select2 to a remote data source, you have the option of using either a single endpoint (a single page which handles all requests) or a dynamic endpoint (one of many pages). You can point Select2 to a single endpoint during initialization by specifying a string for the <code>ajax.url</code> option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    url: '/path/to/search/endpoint'
          +  }
          +});
          +{% endhighlight %}
          +
          +  <p>
          +    If there isn't a single url for your search results, or you need to call a function to determine the url to use, you can specify a function for the <code>ajax.url</code> option, and this will be used instead. The query parameters will be passed in through the <code>params</code> option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    url: function (params) {
          +      return '/some/url/' + params.term;
          +    }
          +  }
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    I want to add more query parameters to the request, where can this be done?
          +  </h3>
          +
          +  <p>
          +    By default, Select2 will send the query term as well as the pagination data as query parameters in requests. You can override the data that is sent to your API, or change any of the query paramters, by overriding the <code>ajax.data</codE> option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    data: function (params) {
          +      var query = {
          +        search: params.term,
          +        page: params.page
          +      }
          +
          +      // Query paramters will be ?search=[term]&page=[page]
          +      return query;
          +    }
          +  }
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    The results that I am seeing never change
          +  </h3>
          +
          +  <p>
          +    Select2 expects that the results that are returned from the remote endpoint are already filtered ahead of time based on the search term. If your remote endpoint just returns the list of all possible options, you may be interested in using Select2's <a href="examples.html#data-array">support for data arrays</a>.
          +  </p>
          +
          +  <h3>
          +    Can an AJAX plugin other than <code>jQuery.ajax</code> be used?
          +  </h3>
          +
          +  <p>
          +    Select2 uses the transport method defined in <code>ajax.transport</code> to send requests to your API. By default, this transport method is <code>jQuery.ajax</code> but this can be changed.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    transport: function (params, success, failure) {
          +      var request = new AjaxRequest(params.url, params);
          +      request.on('success', success);
          +      request.on('failure', failure);
          +    }
          +  }
          +});
          +{% endhighlight %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/data/array.html b/public/theme/select2/docs/_includes/options/data/array.html
          new file mode 100644
          index 0000000..751635e
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/data/array.html
          @@ -0,0 +1,150 @@
          +<section>
          +  <h2 id="data">
          +    Can I load data into Select2 using an array?
          +  </h2>
          +
          +  <p>
          +    While Select2 is designed to be used with a <code>&lt;select&gt;</code> tag
          +    the data that is used to search through and display the results can be
          +    loaded from a JavaScript array using the <code>data</code> option. This
          +    option should be passed in during the initialization of Select2.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  data: [
          +    {
          +      id: 'value',
          +      text: 'Text to display'
          +    },
          +    // ... more data objects ...
          +  ]
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    What properties are required on the objects passed in to the array?
          +  </h3>
          +
          +  <p>
          +    The <code>id</code> and <code>text</code> properties are required on each
          +    object, and these are the properties that Select2 uses for the internal
          +    data objects. Any additional paramters passed in with data objects will be
          +    included on the data objects that Select2 exposes.
          +  </p>
          +
          +  <h3>
          +    Do the <code>id</code> properties have to be strings?
          +  </h3>
          +
          +  <p>
          +    Because the <code>value</code> attributes on a <code>&gt;select&lt;</code>
          +    tag must be strings, the <code>id</code> property on the data objects must
          +    also be strings. Select2 will attempt to convert anything that is not a
          +    string to a string, which will work for most situations, but it is
          +    recommended to force all of your ids to strings ahead of time.
          +  </p>
          +
          +  <h3>
          +    I can't select results with blank ids or an id of <code>0</code>!
          +  </h3>
          +
          +  <p>
          +    See <a href="#do-the-id-properties-have-to-be-strings">Do the <code>id</code> properties have to be strings?</a>.
          +  </p>
          +
          +  <h3>
          +    How should nested results be formatted?
          +  </h3>
          +
          +  <p>
          +    Nested results should be specified using the <code>children</code> property
          +    on the data objects that are passed in. This <code>children</code> property
          +    should be an array of data objects that are grouped under this option, and
          +    the label for the group should be specified as the <code>text</code>
          +    property on the root data object.
          +  </p>
          +
          +{% highlight js linenos %}
          +{
          +  text: 'Group label',
          +  children: [
          +    {
          +      id: 'nested-1',
          +      text: 'First nested option'
          +    },
          +    // ... more data objects ...
          +  ]
          +}
          +{% endhighlight %}
          +
          +  <h3>
          +    How many levels of nesting are allowed?
          +  </h3>
          +
          +  <p>
          +    Because Select2 falls back to an <code>&lt;optgroup&gt;</code> when
          +    creating nested options, only
          +    <a href="#how-many-levels-of-nesting-can-there-be">a single level of nesting</a>
          +    is supported. Any additional levels of nesting is not guarenteed to be
          +    displayed properly across all browsers and devices.
          +  </p>
          +
          +  <h3>
          +    Why are <code>&lt;option&gt;</code> tags being created?
          +  </h3>
          +
          +  <p>
          +    The <code>data</code> option is a shortcut that Select2 provides which
          +    allows you to load options into your <code>select</code> from a data array.
          +  </p>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    My objects don&apos;t use <code>id</code> for their unique identifiers,
          +    what can I do?
          +  </h3>
          +
          +  <p>
          +    Select2 requires that the <code>id</code> property is used to uniquely
          +    identify the options that are displayed in the results list. If you use a
          +    property other than <code>id</code> (like <code>pk</code>) to uniquely
          +    identify an option, you need to map your old property to <code>id</code>
          +    before passing it to Select2.
          +  </p>
          +
          +  <p>
          +    If you cannot do this on your server or you are in a situation where the
          +    identifier cannot be changed, you can do this in JavaScript before passing
          +    it to Select2.
          +  </p>
          +
          +{% highlight js linenos %}
          +var data = $.map(yourArrayData, function (obj) {
          +  obj.id = obj.id || obj.pk; // replace pk with your identifier
          +
          +  return obj;
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    My objects use a property other than <code>text</code> for the text that
          +    needs to be displayed
          +  </h3>
          +
          +  <p>
          +    Just like with the <code>id</code> property, Select2 requires that the text
          +    that should be displayed for an option is stored in the <code>text</code>
          +    property. You can map this property from any existing property using the
          +    following JavaScript.
          +  </p>
          +
          +{% highlight js linenos %}
          +var data = $.map(yourArrayData, function (obj) {
          +  obj.text = obj.text || obj.name; // replace name with the property used for the text
          +
          +  return obj;
          +});
          +{% endhighlight %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/data/select.html b/public/theme/select2/docs/_includes/options/data/select.html
          new file mode 100644
          index 0000000..aa32301
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/data/select.html
          @@ -0,0 +1,69 @@
          +<section>
          +  <h2 id="data-adapters-select-tag">
          +    Can Select2 be used with a <code>&lt;select&gt;</code> tag?
          +  </h2>
          +
          +  <p>
          +    Select2 was designed to be a replacement for the standard <code>&lt;select&gt;</code> boxes that are displayed by the browser, so by default it supports all options and operations that are available in a standard select box, but with added flexibility. There is no special configuration required to make Select2 work with a <code>&lt;select&gt;</code> tag.
          +  </p>
          +
          +  <h3>
          +    Does Select2 support nesting options?
          +  </h3>
          +
          +  <p>
          +    A standard <code>&lt;select&gt;</code> box can display nested options by wrapping them with in an <code>&lt;optgroup&gt;</code> tag.
          +  </p>
          +
          +{% highlight html linenos %}
          +<select>
          +  <optgroup label="Group Name">
          +    <option>Nested option</option>
          +  </optgroup>
          +</select>
          +{% endhighlight %}
          +
          +  <h3>
          +    How many levels of nesting can there be?
          +  </h3>
          +
          +  <p>
          +    Only a single level of nesting is allowed per the HTML specification. If you nest an <code>&lt;optgroup&gt;</code> within another <code>&lt;optgroup&gt;</code>, Select2 will not be able to detect the extra level of nesting and errors may be triggered as a result.
          +  </p>
          +
          +  <h3>
          +    Can <code>&lt;optgroup&gt;</code> tags be made selectable?
          +  </h3>
          +
          +  <p>
          +    No. This is a limitation of the HTML specification and is not a limitation that Select2 can overcome. You can emulate grouping by using an <code>&lt;option&gt;</code> instead of an <code>&lt;optgroup&gt;</code> and <a href="http://stackoverflow.com/q/30820215/359284#30948247">changing the style by using CSS</a>, but this is not recommended as it is not fully accessible.
          +  </p>
          +
          +  <h3>
          +    How are <code>&lt;option&gt;</code> and <code>&lt;optgroup&gt;</code> tags serialized into data objects?
          +  </h3>
          +
          +  <p>
          +    Select2 will convert the <code>&lt;option&gt;</code> tag into a data object based on the following rules.
          +  </p>
          +
          +{% highlight js linenos %}
          +{
          +  "id": "value attribute" || "option text",
          +  "text": "label attribute" || "option text",
          +  "element": HTMLOptionElement
          +}
          +{% endhighlight %}
          +
          +  <p>
          +    And <code>&lt;optgroup&gt;</code> tags will be converted into data objects using the following rules
          +  </p>
          +
          +{% highlight js linenos %}
          +{
          +  "text": "label attribute",
          +  "children": [ option data object, ... ],
          +  "elment": HTMLOptGroupElement
          +}
          +{% endhighlight %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/dropdown.html b/public/theme/select2/docs/_includes/options/dropdown.html
          new file mode 100644
          index 0000000..52d8ea2
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/dropdown.html
          @@ -0,0 +1,10 @@
          +<section>
          +  <h1 id="results">
          +    Displaying results
          +  </h1>
          +
          +  {% include options/dropdown/filtering.html %}
          +  {% include options/dropdown/selections.html %}
          +  {% include options/dropdown/tagging.html %}
          +  {% include options/dropdown/placement.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/dropdown/filtering.html b/public/theme/select2/docs/_includes/options/dropdown/filtering.html
          new file mode 100644
          index 0000000..7e6bce7
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/dropdown/filtering.html
          @@ -0,0 +1,55 @@
          +<section>
          +  <h2>
          +    Can I change when search results are loaded?
          +  </h2>
          +
          +  <h3>
          +    Can Select2 wait until the user has typed a search term before triggering the request?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  ajax: {
          +    delay: 250 // wait 250 milliseconds before triggering the request
          +  }
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Select2 is allowing long search terms, can this be prevented?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  maximumInputLength: 20 // only allow terms up to 20 characters long
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    I only want the search box if there are enough results
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  minimumResultsForSearch: 20 // at least 20 results must be displayed
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    How can I permanently hide the search box?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  minimumResultsForSearch: Infinity
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/dropdown/placement.html b/public/theme/select2/docs/_includes/options/dropdown/placement.html
          new file mode 100644
          index 0000000..1f78686
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/dropdown/placement.html
          @@ -0,0 +1,39 @@
          +<section>
          +  <h2>
          +    Can I change how the dropdown is placed?
          +  </h2>
          +
          +  <h3 id="dropdown-attachContainer">
          +    Can the dropdown be placed directly after the selection container?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3 id="dropdownParent">
          +    Can I pick an element for the dropdown to be appended to?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  dropdownParent: $('#my_amazing_modal')
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    I&apos;m using a Bootstrap modal and I can&apos;t use the search box
          +  </h3>
          +
          +  <p>
          +    Use the <code>dropdownParent</code> option, setting it to the modal.
          +  </p>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    I&apos;m using jQuery UI and I can&apos;t use the search box
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/dropdown/selections.html b/public/theme/select2/docs/_includes/options/dropdown/selections.html
          new file mode 100644
          index 0000000..1c9f86e
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/dropdown/selections.html
          @@ -0,0 +1,29 @@
          +<section>
          +  <h2>
          +    Can I change how selecting results works?
          +  </h2>
          +
          +  <h3>
          +    Can I select the highlighted result when the dropdown is closed?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  selectOnClose: true
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Can I prevent the dropdown from closing when a result is selected?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  closeOnSelect: false
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/dropdown/tagging.html b/public/theme/select2/docs/_includes/options/dropdown/tagging.html
          new file mode 100644
          index 0000000..43e1eb0
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/dropdown/tagging.html
          @@ -0,0 +1,89 @@
          +<section>
          +  <h2>
          +    Can options be created based on the search term?
          +  </h2>
          +
          +  <h3>
          +    How do I enable tagging?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  tags: true
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Does tagging work with a single select?
          +  </h3>
          +
          +  <p>
          +    Yes.
          +  </p>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    How do I add extra properties to the tag?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  createTag: function (params) {
          +    var term = $.trim(params.term);
          +
          +    if (term === '') {
          +      return null;
          +    }
          +
          +    return {
          +      id: term,
          +      text: term,
          +      newTag: true // add additional parameters
          +    }
          +  }
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Can I control when tags are created?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  createTag: function (params) {
          +    // Don't offset to create a tag if there is no @ symbol
          +    if (params.term.indexOf('@') === -1) {
          +      // Return null to disable tag creation
          +      return null;
          +    }
          +
          +    return {
          +      id: params.term,
          +      text: params.term
          +    }
          +  }
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    How do I control the placement of the option?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  insertTag: function (data, tag) {
          +    // Insert the tag at the end of the results
          +    data.push(tag);
          +  }
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/events.html b/public/theme/select2/docs/_includes/options/events.html
          new file mode 100644
          index 0000000..ea0dd2c
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/events.html
          @@ -0,0 +1,8 @@
          +<section>
          +  <h1>
          +    Events
          +  </h1>
          +
          +  {% include options/events/jquery.html %}
          +  {% include options/events/internal.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/events/internal.html b/public/theme/select2/docs/_includes/options/events/internal.html
          new file mode 100644
          index 0000000..df49d5c
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/events/internal.html
          @@ -0,0 +1,9 @@
          +<section>
          +  <h2 id="events-internal">
          +    Internal Select2 events
          +  </h2>
          +  
          +  <p>
          +    Select2 has an internal event system that works independently of the DOM event system. This internal event system is only accesssible from plugins and adapters that are connected to Select2.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/events/jquery.html b/public/theme/select2/docs/_includes/options/events/jquery.html
          new file mode 100644
          index 0000000..0c2bb22
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/events/jquery.html
          @@ -0,0 +1,101 @@
          +<section>
          +  <h2 id="events-public">
          +    Public jQuery events
          +  </h2>
          +
          +  <h3>
          +    What events will Select2 trigger?
          +  </h3>
          +
          +  <p>
          +    Select2 will trigger a few different events when different actions are taken using the component, allowing you to add custom hooks and perform actions.
          +  </p>
          +
          +  <dl class="s2-docs-panels">
          +    <dt>change</dt>
          +    <dd>Triggered whenever an option is selected or removed.</dd>
          +
          +    <dt>select2:close</dt>
          +    <dd>Triggered whenever the dropdown is closed.</dd>
          +
          +    <dt>select2:closing</dt>
          +    <dd>Triggered before the dropdown is closed. This event can be prevented.</dd>
          +
          +    <dt>select2:open</dt>
          +    <dd>Triggered whenever the dropdown is opened.</dd>
          +
          +    <dt>select2:opening</dt>
          +    <dd>Triggered before the dropdown is opened. This event can be prevented.</dd>
          +
          +    <dt>select2:select</dt>
          +    <dd>Triggered whenever a result is selected.</dd>
          +
          +    <dt>select2:selecting</dt>
          +    <dd>Triggered before a result is selected. This event can be prevented.</dd>
          +
          +    <dt>select2:unselect</dt>
          +    <dd>Triggered whenever a selection is removed.</dd>
          +
          +    <dt>select2:unselecting</dt>
          +    <dd>Triggered before a selection is removed. This event can be prevented.</dd>
          +  </dl>
          +
          +  <h3>
          +    Does Select2 include extra information in these events?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    How can I attach listeners for these events?
          +  </h3>
          +
          +{% highlight js linenos %}
          +$('select').on('select2:select', function (evt) {
          +  // Do something
          +});
          +{% endhighlight %}
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    What events does Select2 listen for?
          +  </h3>
          +
          +  <p>
          +    Select2 will listen for the <code>change</code> event on the
          +    <code>&lt;select&gt;</code> that it is attached to. If you make any
          +    external changes that need to be reflected in Select2 (such as changing the
          +    value), you should trigger this event.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').val('US'); // Select the option with a value of 'US'
          +$('select').trigger('change'); // Notify any JS components that the value changed
          +{% endhighlight %}
          +
          +  <h3>
          +    Can I trigger an event other than <code>change</code> to notify Select2 of changes?
          +  </h3>
          +
          +  <p>
          +    It's common for other components to be listening to the <code>change</code>
          +    event, or for custom event handlers to be attached that may have side
          +    effects. Select2 does not have a custom event (like
          +    <code>select2:update</code>) that can be triggered other than
          +    <code>change</code>. You can rely on jQuery's event namespacing to limit
          +    the scope to Select2 though by triggering the <code>change.select2</code>
          +    event.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').val('US'); // Change the value or make some change to the internal state
          +$('select').trigger('change.select2'); // Notify only Select2 of changes
          +{% endhighlight %}
          +
          +  <h3>
          +    What events can be prevented? How can I prevent a selection from being made?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/introduction.html b/public/theme/select2/docs/_includes/options/introduction.html
          new file mode 100644
          index 0000000..7cc343f
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/introduction.html
          @@ -0,0 +1,9 @@
          +<section>
          +  <div class="alert alert-warning">
          +    This page of the documentation is currently <strong>undergoing a rewrite and may be incomplete</strong>. If you do not find the answer you are looking for on this page, you may have better luck looking at <a href="options-old.html">the old options page</a>.
          +  </div>
          +
          +  <p>
          +    This documentation is set up in the form of a FAQ and covers the most common questions. If you do not find the answer to your question here, you may want to <a href="community.html">reach out to the community</a> to see if someone else can answer it.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/not-written.html b/public/theme/select2/docs/_includes/options/not-written.html
          new file mode 100644
          index 0000000..b496708
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/not-written.html
          @@ -0,0 +1,3 @@
          +<div class="alert alert-info">
          +  This answer to this question has not yet been written. You can <a href="https://github.com/select2/select2/blob/master/docs/README.md#how-can-i-fix-an-issue-in-these-docs">improve this documentation</a> by creating a pull request with an answer to this question.
          +</div>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/selections.html b/public/theme/select2/docs/_includes/options/selections.html
          new file mode 100644
          index 0000000..086c2ae
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/selections.html
          @@ -0,0 +1,10 @@
          +<section>
          +  <h1 id="selections">
          +    Displaying selections
          +  </h1>
          +
          +  {% include options/selections/multiple.html %}
          +  {% include options/selections/placeholder.html %}
          +  {% include options/selections/clearing-selections.html %}
          +  {% include options/selections/templating.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/selections/clearing-selections.html b/public/theme/select2/docs/_includes/options/selections/clearing-selections.html
          new file mode 100644
          index 0000000..dd9c10d
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/selections/clearing-selections.html
          @@ -0,0 +1,34 @@
          +<section>
          +  <h2 id="allowClear">
          +    Can I allow users to clear their selections?
          +  </h2>
          +
          +  <p>
          +    You can allow people to clear their current selections with the <code>allowClear</code> option when initializing Select2. Setting this option to <code>true</code> will enable an "x" icon that will reset the selection to the placeholder.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  placeholder: 'This is my placeholder',
          +  allowClear: true
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    Why is a placeholder required?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    The "x" icon is not clearing the selection
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    Can users remove all of their selections in a multiple select at once?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/selections/multiple.html b/public/theme/select2/docs/_includes/options/selections/multiple.html
          new file mode 100644
          index 0000000..645a0b6
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/selections/multiple.html
          @@ -0,0 +1,17 @@
          +<section>
          +  <h2 id="multiple">
          +    Can I allow users to make multiple selections?
          +  </h2>
          +
          +  <p>
          +    Yes, Select2 supports making multiple selections through the use of the <code>multiple</code> option that can be passed in when initializing Select2.
          +  </p>
          +
          +  <h3>
          +    Can the <code>multiple</code> attribute be used on my <code>&lt;select&gt;</code> element?
          +  </h3>
          +
          +  <p>
          +    Yes, Select2 will automatically map the value of the <code>multiple</code> attribute to the <code>multiple</code> option during initialization.
          +  </p>
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/options/selections/placeholder.html b/public/theme/select2/docs/_includes/options/selections/placeholder.html
          new file mode 100644
          index 0000000..3dd5ef9
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/selections/placeholder.html
          @@ -0,0 +1,84 @@
          +<section>
          +  <h2 id="placeholder">
          +    How can I have Select2 display a placeholder?
          +  </h2>
          +
          +  <p>
          +    Select2 supports displaying a placeholder by default using the <code>placeholder</code> option. This can be either a data object matching the placeholder option, or a string to display as the placeholder if you are using a blank placeholder option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  placeholder: 'Select an option'
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    My first option is being displayed instead of my placeholder
          +  </h3>
          +
          +  <p>
          +    This usually means that you do not have a blank <code>&lt;option&gt;&lt/option&gt;</code> as the first option in your <code>&lt;select&gt;</code>.
          +  </p>
          +
          +  <p>
          +    Note that this does not apply to multiple selects, as the browser does not select the first option by default when multiple selections can be made.
          +  </p>
          +
          +  <h3>
          +    I am using AJAX, can I still show a placeholder?
          +  </h3>
          +
          +  <p>
          +    Yes, Select2 supports placeholders for all configurations. You will still need to add in the placeholder option if you are using a single select.
          +  </p>
          +
          +  <h3>
          +    Can I use an option without a blank value as my placeholder?
          +  </h3>
          +
          +  <p>
          +    The <code>placeholder</code> option allows you to pass in a data object instead of just a string if you need more flexibility. The <code>id</code> of the data object should match the <code>value</code> of the placeholder option.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  placeholder: {
          +    id: '-1', // the value of the option
          +    text: 'Select an option'
          +  }
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    Can I change how the placeholder looks?
          +  </h3>
          +
          +  <p>
          +    When using Select2 <strong>when only a single selection can be made</strong>, the placeholder option will be passed through the standard templating methods, including the <code>templateSelection</code> option, so you are able to change how it is displayed.
          +  </p>
          +
          +{% highlight js linenos %}
          +$('select').select2({
          +  templateResult: function (data) {
          +    if (data.id === '') { // adjust for custom placeholder values
          +      return 'Custom styled placeholder text';
          +    }
          +
          +    return data.text;
          +  }
          +});
          +{% endhighlight %}
          +
          +  <p>
          +    <strong>When multiple selections are allowed</strong>, the placeholder will be displayed using the <code>placeholder</code> attribute on the search box. You can cusotmize the display of this placholder using CSS, as explained in the following Stack Overflow answer: <a href="http://stackoverflow.com/q/2610497/359284">Change an input's HTML5 placeholder color with CSS</a>
          +  </p>
          +
          +  <h3>
          +    My placeholders aren&apos;t being displayed in Internet Explorer
          +  </h3>
          +
          +  <p>
          +    Select2 uses the native <code>placeholder</code> attribute on input boxes for the multiple select, and that attribute is not supported in older versions of Internet Explorer. You need to include <a href="https://github.com/jamesallardice/Placeholders.js">Placeholders.js</a> on your page, or use the full build, in order to add <code>placeholder</code> attribute support to input boxes.
          +  </p>
          +</section>
          diff --git a/public/theme/select2/docs/_includes/options/selections/templating.html b/public/theme/select2/docs/_includes/options/selections/templating.html
          new file mode 100644
          index 0000000..19eb8f2
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/options/selections/templating.html
          @@ -0,0 +1,37 @@
          +<section>
          +  <h2 id="templateSelection">
          +    How can I customize the way selections are displayed?
          +  </h2>
          +
          +  <p>
          +    When a selection is made by the user Select2 will display the text of the option by default, just like how it is displayed in a standard select box.  You can override the display of the selection by setting the <code>templateSelection</code> option to a JavaScript function.
          +  </p>
          +
          +{% highlight js linenos %}
          +function template(data, container) {
          +  return data.text;
          +}
          +
          +$('select').select2({
          +  templateSelection: template
          +});
          +{% endhighlight %}
          +
          +  <h3>
          +    Nothing is being displayed when I select an option
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    I am using HTML in my selection template but it isn't displaying it
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +
          +  <h3>
          +    How can I access the container where the selection is displayed?
          +  </h3>
          +
          +  {% include options/not-written.html %}
          +</section>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_includes/social-buttons.html b/public/theme/select2/docs/_includes/social-buttons.html
          new file mode 100644
          index 0000000..bcf90cf
          --- /dev/null
          +++ b/public/theme/select2/docs/_includes/social-buttons.html
          @@ -0,0 +1,10 @@
          +<div class="s2-docs-social">
          +  <ul class="s2-docs-social-buttons">
          +    <li>
          +      <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=select2&amp;repo=select2&amp;type=watch&amp;count=true" width="100" height="20" title="Star on GitHub"></iframe>
          +    </li>
          +    <li>
          +      <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=select2&amp;repo=select2&amp;type=fork&amp;count=true" width="102" height="20" title="Fork on GitHub"></iframe>
          +    </li>
          +  </ul>
          +</div>
          diff --git a/public/theme/select2/docs/_layouts/default.html b/public/theme/select2/docs/_layouts/default.html
          new file mode 100644
          index 0000000..97bd987
          --- /dev/null
          +++ b/public/theme/select2/docs/_layouts/default.html
          @@ -0,0 +1,57 @@
          +<!doctype html>
          +<html>
          +  <head>
          +    {% include head.html %}
          +  </head>
          +  <body>
          +    {% include navigation.html %}
          +
          +    {{ content }}
          +
          +    {% include footer.html %}
          +
          +    <script>
          +      (function ($) {
          +        'use strict';
          +
          +        $(function () {
          +          var $window = $(window);
          +          var $body = $(document.body);
          +          var $sidebar = $('.s2-docs-sidebar');
          +
          +          $body.scrollspy({
          +            target: '.s2-docs-sidebar',
          +            offset: 40
          +          });
          +
          +          $window.on('load', function () {
          +            $body.scrollspy('refresh');
          +          });
          +
          +          $sidebar.affix({
          +            offset: {
          +              top: function () {
          +                var offsetTop = $sidebar.offset().top;
          +                var navOuterHeight = $('.s2-docs-nav').height();
          +
          +                return (this.top = offsetTop - navOuterHeight);
          +              },
          +              bottom: function () {
          +                return (this.bottom = $('.s2-docs-footer').outerHeight(true));
          +              }
          +            }
          +          });
          +        });
          +      })(jQuery);
          +
          +      (function () {
          +        'use strict';
          +
          +        anchors.options.placement = 'left';
          +        anchors.add('.s2-docs-container h1, .s2-docs-container h2, .s2-docs-container h3, .s2-docs-container h4, .s2-docs-container h5');
          +      })();
          +    </script>
          +
          +    {% include ga.html %}
          +  </body>
          +</html>
          diff --git a/public/theme/select2/docs/_layouts/home.html b/public/theme/select2/docs/_layouts/home.html
          new file mode 100644
          index 0000000..0732b29
          --- /dev/null
          +++ b/public/theme/select2/docs/_layouts/home.html
          @@ -0,0 +1,23 @@
          +<!doctype html>
          +<html class="s2-docs-home">
          +  <head>
          +    {% include head.html %}
          +  </head>
          +  <body>
          +    {% include navigation.html %}
          +
          +    {{ content }}
          +
          +    {% include footer.html %}
          +
          +    <script>
          +      (function () {
          +        'use strict';
          +
          +        prettyPrint();
          +      })();
          +    </script>
          +
          +    {% include ga.html %}
          +  </body>
          +</html>
          diff --git a/public/theme/select2/docs/_sass/_alert.scss b/public/theme/select2/docs/_sass/_alert.scss
          new file mode 100644
          index 0000000..cb5d54f
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_alert.scss
          @@ -0,0 +1,47 @@
          +// Alerts
          +//
          +// Modify Bootstrap's default alert styles to mimick
          +// the `.bs-callout` styles from Bootstrap's docs.
          +//
          +// @see https://github.com/twbs/bootstrap/blob/master/docs/assets/css/src/docs.css#L711
          +// @see https://github.com/twbs/bootstrap/blob/master/less/alerts.less
          +
          +.alert {
          +  background: #fff;
          +  border: 1px solid #eee;
          +  border-left-width: 5px;
          +  border-radius: 3px;
          +  color: #333;
          +  margin: 20px 0;
          +  padding: 20px;
          +
          +  h4 {
          +    font-size: 18px;
          +    margin-top: 0;
          +    margin-bottom: 5px;
          +  }
          +
          +  &-danger {
          +    border-left-color: #ce4844;
          +
          +    h4 {
          +      color: #ce4844;
          +    }
          +  }
          +
          +  &-info {
          +    border-left-color: #1b809e;
          +
          +    h4 {
          +      color: #1b809e;
          +    }
          +  }
          +
          +  &-warning {
          +    border-left-color: #aa6708;
          +
          +    h4 {
          +      color: #aa6708;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_anchorjs.scss b/public/theme/select2/docs/_sass/_anchorjs.scss
          new file mode 100644
          index 0000000..6190049
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_anchorjs.scss
          @@ -0,0 +1,27 @@
          +// AnchorJS Styles
          +
          +.anchorjs-link {
          +  color: inherit;
          +  transition: all .16s linear;
          +  text-decoration: none;
          +
          +  &:link,
          +  &:visited {
          +    text-decoration: none;
          +    color: inherit;
          +  }
          +
          +  @media (max-width: 480px) {
          +    display: none;
          +  }
          +}
          +
          +*:hover > .anchorjs-link {
          +  opacity: .5;
          +  margin-left: -0.9em !important;
          +}
          +
          +*:hover > .anchorjs-link:hover,
          +.anchorjs-link:focus {
          +  opacity: 1;
          +}
          diff --git a/public/theme/select2/docs/_sass/_buttons.scss b/public/theme/select2/docs/_sass/_buttons.scss
          new file mode 100644
          index 0000000..1ad8176
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_buttons.scss
          @@ -0,0 +1,20 @@
          +// Buttons
          +
          +.btn-outline-inverse {
          +  color: #428BCA;
          +  background-color: transparent;
          +  border-color: #428BCA;
          +  padding: 15px 30px;
          +  font-size: 20px;
          +  transition: all .1s ease-in-out;
          +
          +  &:hover {
          +    color: #fff;
          +    border-color: #428BCA;
          +    background-color: #428BCA;
          +  }
          +}
          +
          +.btn-toolbar {
          +  margin-bottom: 20px;
          +}
          diff --git a/public/theme/select2/docs/_sass/_code.scss b/public/theme/select2/docs/_sass/_code.scss
          new file mode 100644
          index 0000000..ecd3aa9
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_code.scss
          @@ -0,0 +1,16 @@
          +// Code (inline and block)
          +
          +// Inline code within headings retain the heading's background-color
          +h2 code,
          +h3 code,
          +h4 code {
          +  background-color: inherit;
          +}
          +
          +// Modify Bootstrap's styles for blocks of code
          +pre.prettyprint {
          +  padding: 9px 14px;
          +  margin-bottom: 14px;
          +  background-color: #f7f7f9;
          +  border: 1px solid #e1e1e8;
          +}
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_sass/_dl-panels.scss b/public/theme/select2/docs/_sass/_dl-panels.scss
          new file mode 100644
          index 0000000..76d5151
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_dl-panels.scss
          @@ -0,0 +1,24 @@
          +.s2-docs-panels {
          +    dt, dd {
          +        border: 1px solid $panel-default-border;
          +    }
          +
          +    dt {
          +        background-color: $panel-default-heading-bg;
          +        border-top-left-radius: $panel-border-radius;
          +        border-top-right-radius: $panel-border-radius;
          +        padding: 5px 7.5px;
          +    }
          +
          +    dd {
          +        background-color: $panel-bg;
          +        border-bottom-left-radius: $panel-border-radius;
          +        border-bottom-right-radius: $panel-border-radius;
          +        margin-bottom: 0.75em;
          +        padding: 7.5px;
          +    }
          +
          +    dt + dd {
          +        border-top: none;
          +    }
          +}
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_sass/_examples.scss b/public/theme/select2/docs/_sass/_examples.scss
          new file mode 100644
          index 0000000..0af5591
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_examples.scss
          @@ -0,0 +1,91 @@
          +// Examples
          +//
          +// Styles for the Select2 examples, largely copied
          +// from Bootstrap's docs styles.
          +//
          +// @see https://github.com/twbs/bootstrap/blob/master/docs/assets/css/src/docs.css#L533
          +
          +.s2-example {
          +  position: relative;
          +  padding: 45px 15px 15px;
          +  margin: 0 -15px 15px;
          +  background-color: #fafafa;
          +  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.05);
          +  border-color: #e5e5e5 #eee #eee;
          +  border-style: solid;
          +  border-width: 1px 0;
          +
          +  &:after {
          +    content: "Example";
          +    position: absolute;
          +    top: 15px;
          +    left: 15px;
          +    font-size: 12px;
          +    font-weight: bold;
          +    color: #bbb;
          +    text-transform: uppercase;
          +    letter-spacing: 1px;
          +  }
          +
          +  @media (min-width: 768px) {
          +    margin-left: 0;
          +    margin-right: 0;
          +    background-color: #fff;
          +    border-width: 1px;
          +    border-color: #eee;
          +    border-radius: 4px 4px 0 0;
          +    box-shadow: none;
          +  }
          +}
          +
          +// styles for the event log in the "DOM events" section of the docs
          +.s2-event-log {
          +  background: #002451;
          +  color: white;
          +  font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;
          +  margin: 0 -15px 15px;
          +  padding: 45px 15px 15px;
          +  position: relative;
          +
          +  &:after {
          +    content: "Event Log";
          +    position: absolute;
          +    top: 15px;
          +    left: 15px;
          +    font-size: 12px;
          +    font-weight: bold;
          +    color: #BBB;
          +    text-transform: uppercase;
          +    letter-spacing: 1px;
          +  }
          +
          +  @media (min-width: 768px) {
          +    margin-left: 0;
          +    margin-right: 0;
          +    margin-top: -15px;
          +    border-width: 1px;
          +    border-color: #eee;
          +    box-shadow: none;
          +  }
          +}
          +
          +.s2-example + pre,
          +.s2-example + figure,
          +.s2-event-log + pre {
          +  margin: -15px -15px 15px;
          +  border-radius: 0;
          +  border-width: 0 0 1px;
          +
          +  @media (min-width: 768px) {
          +    margin-top: -16px;
          +    margin-left: 0;
          +    margin-right: 0;
          +    border-width: 1px;
          +    border-bottom-left-radius: 4px;
          +    border-bottom-right-radius: 4px;
          +  }
          +}
          +
          +.s2-example + .s2-event-log {
          +  margin-top: -15px;
          +}
          diff --git a/public/theme/select2/docs/_sass/_featurette.scss b/public/theme/select2/docs/_sass/_featurette.scss
          new file mode 100644
          index 0000000..56eedf8
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_featurette.scss
          @@ -0,0 +1,16 @@
          +// Homepage featurettes
          +
          +.s2-docs-featurette {
          +  color: #777;
          +  padding: 15px 0;
          +  text-align: center;
          +
          +  h4 {
          +    margin: 30px 0 15px;
          +  }
          +
          +  .fa {
          +    font-size: 28px;
          +    color: #777;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_footer.scss b/public/theme/select2/docs/_sass/_footer.scss
          new file mode 100644
          index 0000000..dfe5d40
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_footer.scss
          @@ -0,0 +1,42 @@
          +// Footer
          +
          +.s2-docs-footer {
          +  border-top: 1px solid #eee;
          +  color: #767676;
          +  padding-top: 40px;
          +  padding-bottom: 40px;
          +  margin-top: 100px;
          +  text-align: center;
          +
          +  &-links {
          +    padding-left: 0;
          +    margin-top: 20px;
          +  }
          +
          +  &-links li {
          +    display: inline;
          +    padding: 0 2px;
          +
          +    &:after {
          +      content: "·";
          +      padding-left: 8px;
          +    }
          +
          +    &:first-child {
          +      padding-left: 0;
          +    }
          +
          +    &:last-child:after {
          +      content: "";
          +      padding-left: 0;
          +    }
          +  }
          +
          +  @media (min-width: 768px) {
          +    p {
          +      margin-bottom: 0;
          +    }
          +  }
          +}
          +
          +
          diff --git a/public/theme/select2/docs/_sass/_hamburger.scss b/public/theme/select2/docs/_sass/_hamburger.scss
          new file mode 100644
          index 0000000..759c53f
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_hamburger.scss
          @@ -0,0 +1,49 @@
          +// Animated hamburger icon
          +//
          +// Add an animation to Bootstrap's `.navbar-toggle` hamburger icon,
          +// courtesy of Julien Melissas.
          +//
          +// @see http://codepen.io/JulienMelissas/pen/LEBGLj
          +// @see http://julienmelissas.com/animated-x-icon-for-the-bootstrap-navbar-toggle/
          +
          +.navbar-toggle {
          +  border: none;
          +  background: transparent !important;
          +
          +  &:hover {
          +    background: transparent !important;
          +  }
          +
          +  .icon-bar {
          +    width: 22px;
          +    transition: all 0.2s;
          +  }
          +
          +  .top-bar {
          +    transform: rotate(45deg);
          +    transform-origin: 10% 10%;
          +  }
          +
          +  .middle-bar {
          +    opacity: 0;
          +  }
          +
          +  .bottom-bar {
          +    transform: rotate(-45deg);
          +    transform-origin: 10% 90%;
          +  }
          +
          +  &.collapsed {
          +    .top-bar {
          +      transform: rotate(0);
          +    }
          +
          +    .middle-bar {
          +      opacity: 1;
          +    }
          +
          +    .bottom-bar {
          +      transform: rotate(0);
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_home.scss b/public/theme/select2/docs/_sass/_home.scss
          new file mode 100644
          index 0000000..9853080
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_home.scss
          @@ -0,0 +1,31 @@
          +// Homepage-specific styles
          +
          +.s2-docs-home {
          +  .jumbotron {
          +    margin-bottom: 0;
          +    color: #000;
          +
          +    h1 {
          +      color: #000;
          +      margin-top: 20px;
          +    }
          +  }
          +
          +  .lead {
          +    text-align: center;
          +    max-width: 800px;
          +    margin: 0 auto 40px;
          +  }
          +
          +  .notice-previous {
          +    background: #f6f6f6;
          +    color: #666;
          +    border-bottom: 1px solid #eee;
          +    padding: 15px 20px;
          +  }
          +
          +  .half-rule {
          +    width: 100px;
          +    margin: 40px auto;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_jumbotron.scss b/public/theme/select2/docs/_sass/_jumbotron.scss
          new file mode 100644
          index 0000000..7b3cc5e
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_jumbotron.scss
          @@ -0,0 +1,24 @@
          +// Jumbotron
          +//
          +// Modify Bootstrap's default `.jumbotron` styles.
          +
          +.jumbotron {
          +  background-color: #F6F6F6;
          +  border-bottom: 1px solid #eee;
          +  color: #777;
          +  padding-left: 0;
          +  padding-right: 0;
          +
          +  h1 {
          +    color: #777;
          +    font-size: 36px;
          +    margin-top: 10px;
          +  }
          +
          +  .version {
          +    color: #999;
          +    font-size: 14px;
          +    font-weight: normal;
          +    margin-bottom: 30px;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_layout.scss b/public/theme/select2/docs/_sass/_layout.scss
          new file mode 100644
          index 0000000..e53a648
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_layout.scss
          @@ -0,0 +1,14 @@
          +// Layout
          +
          +.s2-docs-container {
          +  line-height: 1.6;
          +}
          +
          +section {
          +  margin-bottom: 40px;
          +}
          +
          +.page-header {
          +  padding-bottom: 19px;
          +  margin-bottom: 29px;
          +}
          diff --git a/public/theme/select2/docs/_sass/_nav.scss b/public/theme/select2/docs/_sass/_nav.scss
          new file mode 100644
          index 0000000..40fd17c
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_nav.scss
          @@ -0,0 +1,59 @@
          +// Main navigation
          +//
          +// Styles for the top `.navbar` and its dropdowns.
          +
          +.s2-docs-nav {
          +  margin-bottom: 0;
          +  border-color: #eee;
          +  background-color: #f6f6f6;
          +
          +  .navbar-brand {
          +    font-weight: 500;
          +    > img {
          +      display: inline;
          +      margin-right: 4px;
          +    }
          +  }
          +
          +  .navbar-nav > .active > a,
          +  .navbar-nav > .active > a:hover,
          +  .navbar-nav > .active > a:focus {
          +    background-color: #f0f0f0;
          +    color: #000;
          +  }
          +
          +  @media (min-width: 768px) {
          +
          +    .navbar-nav > li > .dropdown-menu:before {
          +      position: absolute;
          +      top: -21px;
          +      left: 24px;
          +      display: block;
          +      width: 0;
          +      height: 0;
          +      border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0.1);
          +      border-style: solid;
          +      border-width: 10px;
          +      content: "";
          +    }
          +
          +    .navbar-nav > li > .dropdown-menu:after {
          +      position: absolute;
          +      top: -20px;
          +      left: 24px;
          +      display: block;
          +      width: 0;
          +      height: 0;
          +      border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #FFF;
          +      border-style: solid;
          +      border-width: 10px;
          +      content: '';
          +    }
          +
          +    .navbar-nav .dropdown-menu {
          +      border-radius: 4px;
          +      border-color: #ddd;
          +      margin-top: -1px;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_prettify.scss b/public/theme/select2/docs/_sass/_prettify.scss
          new file mode 100644
          index 0000000..4b799d5
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_prettify.scss
          @@ -0,0 +1,50 @@
          +// Google Code Prettify styles
          +
          +.com {
          +  color: #999;
          +}
          +.lit {
          +  color: #195f91;
          +}
          +.pun, .opn, .clo {
          +  color: #93a1a1;
          +}
          +.fun {
          +  color: #dc322f;
          +}
          +.str, .atv {
          +  color: #C7254E;
          +}
          +.kwd, .prettyprint .tag {
          +  color: #2F6F9F;
          +}
          +.typ, .atn, .dec, .var {
          +  color: #428BCA;
          +}
          +.pln {
          +  color: #333;
          +}
          +
          +.prettyprint {
          +  padding: 9px 14px;
          +  margin-bottom: 20px;
          +  margin-top: 20px;
          +  border: 1px solid #eee;
          +
          +  &.linenums {
          +    -webkit-box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
          +       -moz-box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
          +            box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
          +  }
          +}
          +
          +// Specify class=linenums on a pre to get line numbering
          +ol.linenums {
          +  margin: 0 0 0 -12px;
          +
          +  li {
          +    padding-left: 12px;
          +    color: #bebebe;
          +    line-height: 18px;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_result-repository.scss b/public/theme/select2/docs/_sass/_result-repository.scss
          new file mode 100644
          index 0000000..a4e256a
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_result-repository.scss
          @@ -0,0 +1,62 @@
          +// Styles accompanying the "Loading remote data" example `templateResult
          +
          +.select2-result-repository {
          +  padding-top: 4px;
          +  padding-bottom: 3px;
          +
          +  &__avatar {
          +    float: left;
          +    width: 60px;
          +    margin-right: 10px;
          +
          +    img {
          +      width: 100%;
          +      height: auto;
          +      border-radius: 2px;
          +    }
          +  }
          +
          +  &__meta {
          +    margin-left: 70px;
          +  }
          +
          +  &__title {
          +    color: black;
          +    font-weight: bold;
          +    word-wrap: break-word;
          +    line-height: 1.1;
          +    margin-bottom: 4px;
          +  }
          +
          +  &__forks,
          +  &__stargazers {
          +    margin-right: 1em;
          +  }
          +
          +  &__forks,
          +  &__stargazers,
          +  &__watchers {
          +    display: inline-block;
          +    color: #aaa;
          +    font-size: 11px;
          +  }
          +
          +  &__description {
          +    font-size: 13px;
          +    color: #777;
          +    margin-top: 4px;
          +  }
          +
          +  .select2-results__option--highlighted & {
          +    &__title {
          +      color: white;
          +    }
          +
          +    &__forks,
          +    &__stargazers,
          +    &__description,
          +    &__watchers {
          +      color: mix(#428BCA, white, 30%);
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_sidenav.scss b/public/theme/select2/docs/_sass/_sidenav.scss
          new file mode 100644
          index 0000000..3608c15
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_sidenav.scss
          @@ -0,0 +1,152 @@
          +// Side navigation
          +//
          +// Scrollspy and affixed enhanced navigation to
          +// highlight sections and secondary sections of docs content`.
          +
          +.s2-docs-sidebar {
          +  // By default it is not affixed in mobile views, so undo that
          +  &.affix {
          +    position: static;
          +  }
          +
          +  @media (min-width: 768px) {
          +    padding-left: 20px;
          +  }
          +}
          +
          +// First level of nav
          +.s2-docs-sidenav {
          +  margin-top: 20px;
          +  margin-bottom: 20px;
          +}
          +
          +// All levels of nav
          +.s2-docs-sidebar .nav {
          +  > li > a {
          +    margin-left: -1px;
          +    display: block;
          +    padding: 4px 20px;
          +    font-size: 13px;
          +    font-weight: 500;
          +    color: #767676;
          +    border-left: 1px solid transparent;
          +    transition: color .2s, border-color .2s;
          +  }
          +
          +  > li > a code {
          +    background-color: inherit;
          +    color: inherit;
          +  }
          +
          +  > li > a:hover,
          +  > li > a:focus {
          +    color: #428BCA;
          +    text-decoration: none;
          +    background-color: transparent;
          +    border-left-color: #428BCA;
          +  }
          +
          +  > .active > a,
          +  > .active:hover > a,
          +  > .active:focus > a {
          +    padding-left: 19px;
          +    font-weight: bold;
          +    color: #428BCA;
          +    background-color: transparent;
          +    border-left: 2px solid #428BCA;
          +  }
          +
          +  // Nav: second level (shown on .active)
          +  .nav {
          +    display: none; // Hide by default, but at >768px, show it
          +    padding-bottom: 10px;
          +  }
          +
          +  .nav > li > a {
          +    padding-top: 1px;
          +    padding-bottom: 1px;
          +    padding-left: 30px;
          +    font-size: 12px;
          +    font-weight: normal;
          +  }
          +
          +  .nav > li > a:hover,
          +  .nav > li > a:focus {
          +    padding-left: 30px;
          +  }
          +
          +  .nav > .active > a,
          +  .nav > .active:hover > a,
          +  .nav > .active:focus > a {
          +    padding-left: 29px;
          +    font-weight: 400;
          +  }
          +}
          +
          +// Show and affix the side nav when space allows it
          +@media (min-width: 992px) {
          +  .s2-docs-sidebar .s2-docs-sidenav {
          +    padding-top: 40px;
          +    transition: border-color .2s;
          +    border-left: 1px solid transparent;
          +  }
          +
          +  .s2-docs-sidebar.affix .s2-docs-sidenav {
          +    border-left-color: #eee;
          +  }
          +
          +  .s2-docs-sidebar .nav > .active > ul {
          +    display: block;
          +  }
          +
          +  // Widen the fixed sidebar
          +  .s2-docs-sidebar.affix,
          +  .s2-docs-sidebar.affix-bottom {
          +    width: 213px;
          +  }
          +
          +  // Undo the static from mobile first approach
          +  .s2-docs-sidebar.affix {
          +    position: fixed;
          +    top: 0px;
          +  }
          +
          +  // Undo the static from mobile first approach
          +  .s2-docs-sidebar.affix-bottom {
          +    position: absolute;
          +  }
          +
          +  .s2-docs-sidebar.affix-bottom .s2-docs-sidenav,
          +  .s2-docs-sidebar.affix .s2-docs-sidenav {
          +    margin-top: 0;
          +    margin-bottom: 0;
          +  }
          +}
          +
          +@media (min-width: 1200px) {
          +  // Widen the fixed sidebar again
          +  .s2-docs-sidebar.affix-bottom,
          +  .s2-docs-sidebar.affix {
          +    width: 263px;
          +  }
          +}
          +
          +/* Back to top (hidden on mobile) */
          +.back-to-top {
          +  display: none;
          +  padding: 4px 10px;
          +  margin-top: 10px;
          +  margin-left: 10px;
          +  font-size: 12px;
          +  font-weight: 400;
          +  color: #999;
          +
          +  &:hover {
          +    color: #428BCA;
          +    text-decoration: none;
          +  }
          +
          +  @media (min-width: 768px) {
          +    display: block;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/_social.scss b/public/theme/select2/docs/_sass/_social.scss
          new file mode 100644
          index 0000000..0e8d073
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_social.scss
          @@ -0,0 +1,35 @@
          +// Social buttons
          +//
          +// Twitter and GitHub social action buttons.
          +
          +.s2-docs-social {
          +  margin-bottom: 20px;
          +  text-align: center;
          +}
          +
          +.s2-docs-social-buttons {
          +  display: inline-block;
          +  padding-left: 0;
          +  margin-bottom: 0;
          +  list-style: none;
          +
          +  li {
          +    display: inline-block;
          +    padding: 5px 8px;
          +    line-height: 1;
          +  }
          +
          +  .twitter-follow-button {
          +    width: 225px !important;
          +  }
          +
          +  .twitter-share-button {
          +    width: 98px !important;
          +  }
          +}
          +
          +// Style the GitHub buttons via CSS instead of inline attributes
          +.github-btn {
          +  overflow: hidden;
          +  border: 0;
          +}
          diff --git a/public/theme/select2/docs/_sass/_syntax-highlighting.scss b/public/theme/select2/docs/_sass/_syntax-highlighting.scss
          new file mode 100644
          index 0000000..9dca6bd
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_syntax-highlighting.scss
          @@ -0,0 +1,117 @@
          +// Jekyll syntax highlighting styles adjusted to match Google Code Prettify
          +
          +.highlight  {
          +    background: #fff;
          +
          +    // Text
          +    .nx {
          +        color: #333;
          +    }
          +
          +    // Keywords and operators
          +    .k, .o {
          +        font-weight: bold;
          +    }
          +
          +    // Attribute name
          +    .na {
          +        color: #428BCA;
          +    }
          +
          +    // Strings
          +    .s, .s1, .s2, .sb, .sc, .sd, .se, .sh, .si, .sx {
          +        color: #C7254E;
          +    }
          +
          +    // Literals
          +    .m, .mf, mh, .mi, .mo {
          +        color: #195f91;
          +    }
          +
          +    // Parentheses
          +    .p {
          +        color: #93a1a1;
          +    }
          +
          +    // Tag
          +    .nt {
          +        color: #2F6F9F;
          +    }
          +
          +    // Comments
          +    .c {
          +        color: #999;
          +        font-style: italic;
          +    }
          +
          +    // Error
          +    .err {
          +        background-color: #e3d2d2;
          +        color: #a61717;
          +    }
          +
          +    // Generic error
          +    .gr {
          +        color: #a00;
          +    }
          +
          +    // Container styles
          +    pre {
          +        border: none;
          +        margin: 0;
          +    }
          +
          +    & > pre {
          +        border: 1px solid #eee;
          +        padding: 0;
          +        margin-bottom: 14px;
          +    }
          +
          +    // Line numbers
          +    .lineno {
          +        background-color: #fbfbfb;
          +        color: #bebebe;
          +
          +        -ms-user-select: none;
          +        -moz-user-select: none;
          +        -webkit-user-select: none;
          +    }
          +}
          +
          +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
          +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
          +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
          +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
          +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
          +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
          +.highlight .ge { font-style: italic } /* Generic.Emph */
          +.highlight .gh { color: #999999 } /* Generic.Heading */
          +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
          +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
          +.highlight .go { color: #888888 } /* Generic.Output */
          +.highlight .gp { color: #555555 } /* Generic.Prompt */
          +.highlight .gs { font-weight: bold } /* Generic.Strong */
          +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
          +.highlight .gt { color: #aa0000 } /* Generic.Traceback */
          +.highlight .kc { font-weight: bold } /* Keyword.Constant */
          +.highlight .kd { font-weight: bold } /* Keyword.Declaration */
          +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
          +.highlight .kr { font-weight: bold } /* Keyword.Reserved */
          +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
          +.highlight .nb { color: #0086B3 } /* Name.Builtin */
          +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
          +.highlight .no { color: #008080 } /* Name.Constant */
          +.highlight .ni { color: #800080 } /* Name.Entity */
          +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
          +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
          +.highlight .nn { color: #555555 } /* Name.Namespace */
          +.highlight .nv { color: #008080 } /* Name.Variable */
          +.highlight .ow { font-weight: bold } /* Operator.Word */
          +.highlight .w { color: #bbbbbb } /* Text.Whitespace */
          +.highlight .sr { color: #009926 } /* Literal.String.Regex */
          +.highlight .ss { color: #990073 } /* Literal.String.Symbol */
          +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
          +.highlight .vc { color: #008080 } /* Name.Variable.Class */
          +.highlight .vg { color: #008080 } /* Name.Variable.Global */
          +.highlight .vi { color: #008080 } /* Name.Variable.Instance */
          +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/_sass/_typography.scss b/public/theme/select2/docs/_sass/_typography.scss
          new file mode 100644
          index 0000000..1046c99
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/_typography.scss
          @@ -0,0 +1,6 @@
          +// Typography
          +
          +h1[id] {
          +  padding-top: 20px;
          +  margin-top: 0;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_alerts.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_alerts.scss
          new file mode 100644
          index 0000000..7d1e1fd
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_alerts.scss
          @@ -0,0 +1,73 @@
          +//
          +// Alerts
          +// --------------------------------------------------
          +
          +
          +// Base styles
          +// -------------------------
          +
          +.alert {
          +  padding: $alert-padding;
          +  margin-bottom: $line-height-computed;
          +  border: 1px solid transparent;
          +  border-radius: $alert-border-radius;
          +
          +  // Headings for larger alerts
          +  h4 {
          +    margin-top: 0;
          +    // Specified for the h4 to prevent conflicts of changing $headings-color
          +    color: inherit;
          +  }
          +
          +  // Provide class for links that match alerts
          +  .alert-link {
          +    font-weight: $alert-link-font-weight;
          +  }
          +
          +  // Improve alignment and spacing of inner content
          +  > p,
          +  > ul {
          +    margin-bottom: 0;
          +  }
          +
          +  > p + p {
          +    margin-top: 5px;
          +  }
          +}
          +
          +// Dismissible alerts
          +//
          +// Expand the right padding and account for the close button's positioning.
          +
          +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
          +.alert-dismissible {
          +  padding-right: ($alert-padding + 20);
          +
          +  // Adjust close link position
          +  .close {
          +    position: relative;
          +    top: -2px;
          +    right: -21px;
          +    color: inherit;
          +  }
          +}
          +
          +// Alternate styles
          +//
          +// Generate contextual modifier classes for colorizing the alert.
          +
          +.alert-success {
          +  @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
          +}
          +
          +.alert-info {
          +  @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
          +}
          +
          +.alert-warning {
          +  @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
          +}
          +
          +.alert-danger {
          +  @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_badges.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_badges.scss
          new file mode 100644
          index 0000000..70002e0
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_badges.scss
          @@ -0,0 +1,68 @@
          +//
          +// Badges
          +// --------------------------------------------------
          +
          +
          +// Base class
          +.badge {
          +  display: inline-block;
          +  min-width: 10px;
          +  padding: 3px 7px;
          +  font-size: $font-size-small;
          +  font-weight: $badge-font-weight;
          +  color: $badge-color;
          +  line-height: $badge-line-height;
          +  vertical-align: middle;
          +  white-space: nowrap;
          +  text-align: center;
          +  background-color: $badge-bg;
          +  border-radius: $badge-border-radius;
          +
          +  // Empty badges collapse automatically (not available in IE8)
          +  &:empty {
          +    display: none;
          +  }
          +
          +  // Quick fix for badges in buttons
          +  .btn & {
          +    position: relative;
          +    top: -1px;
          +  }
          +
          +  .btn-xs &,
          +  .btn-group-xs > .btn & {
          +    top: 0;
          +    padding: 1px 5px;
          +  }
          +
          +  // [converter] extracted a& to a.badge
          +
          +  // Account for badges in navs
          +  .list-group-item.active > &,
          +  .nav-pills > .active > a > & {
          +    color: $badge-active-color;
          +    background-color: $badge-active-bg;
          +  }
          +
          +  .list-group-item > & {
          +    float: right;
          +  }
          +
          +  .list-group-item > & + & {
          +    margin-right: 5px;
          +  }
          +
          +  .nav-pills > li > a > & {
          +    margin-left: 3px;
          +  }
          +}
          +
          +// Hover state, but only for links
          +a.badge {
          +  &:hover,
          +  &:focus {
          +    color: $badge-link-hover-color;
          +    text-decoration: none;
          +    cursor: pointer;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss
          new file mode 100644
          index 0000000..b61f0c7
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss
          @@ -0,0 +1,28 @@
          +//
          +// Breadcrumbs
          +// --------------------------------------------------
          +
          +
          +.breadcrumb {
          +  padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;
          +  margin-bottom: $line-height-computed;
          +  list-style: none;
          +  background-color: $breadcrumb-bg;
          +  border-radius: $border-radius-base;
          +
          +  > li {
          +    display: inline-block;
          +
          +    + li:before {
          +      // [converter] Workaround for https://github.com/sass/libsass/issues/1115
          +      $nbsp: "\00a0";
          +      content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
          +      padding: 0 5px;
          +      color: $breadcrumb-color;
          +    }
          +  }
          +
          +  > .active {
          +    color: $breadcrumb-active-color;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_button-groups.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_button-groups.scss
          new file mode 100644
          index 0000000..baaacc4
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_button-groups.scss
          @@ -0,0 +1,244 @@
          +//
          +// Button groups
          +// --------------------------------------------------
          +
          +// Make the div behave like a button
          +.btn-group,
          +.btn-group-vertical {
          +  position: relative;
          +  display: inline-block;
          +  vertical-align: middle; // match .btn alignment given font-size hack above
          +  > .btn {
          +    position: relative;
          +    float: left;
          +    // Bring the "active" button to the front
          +    &:hover,
          +    &:focus,
          +    &:active,
          +    &.active {
          +      z-index: 2;
          +    }
          +  }
          +}
          +
          +// Prevent double borders when buttons are next to each other
          +.btn-group {
          +  .btn + .btn,
          +  .btn + .btn-group,
          +  .btn-group + .btn,
          +  .btn-group + .btn-group {
          +    margin-left: -1px;
          +  }
          +}
          +
          +// Optional: Group multiple button groups together for a toolbar
          +.btn-toolbar {
          +  margin-left: -5px; // Offset the first child's margin
          +  @include clearfix;
          +
          +  .btn,
          +  .btn-group,
          +  .input-group {
          +    float: left;
          +  }
          +  > .btn,
          +  > .btn-group,
          +  > .input-group {
          +    margin-left: 5px;
          +  }
          +}
          +
          +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
          +  border-radius: 0;
          +}
          +
          +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
          +.btn-group > .btn:first-child {
          +  margin-left: 0;
          +  &:not(:last-child):not(.dropdown-toggle) {
          +    @include border-right-radius(0);
          +  }
          +}
          +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
          +.btn-group > .btn:last-child:not(:first-child),
          +.btn-group > .dropdown-toggle:not(:first-child) {
          +  @include border-left-radius(0);
          +}
          +
          +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
          +.btn-group > .btn-group {
          +  float: left;
          +}
          +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
          +  border-radius: 0;
          +}
          +.btn-group > .btn-group:first-child:not(:last-child) {
          +  > .btn:last-child,
          +  > .dropdown-toggle {
          +    @include border-right-radius(0);
          +  }
          +}
          +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
          +  @include border-left-radius(0);
          +}
          +
          +// On active and open, don't show outline
          +.btn-group .dropdown-toggle:active,
          +.btn-group.open .dropdown-toggle {
          +  outline: 0;
          +}
          +
          +
          +// Sizing
          +//
          +// Remix the default button sizing classes into new ones for easier manipulation.
          +
          +.btn-group-xs > .btn { @extend .btn-xs; }
          +.btn-group-sm > .btn { @extend .btn-sm; }
          +.btn-group-lg > .btn { @extend .btn-lg; }
          +
          +
          +// Split button dropdowns
          +// ----------------------
          +
          +// Give the line between buttons some depth
          +.btn-group > .btn + .dropdown-toggle {
          +  padding-left: 8px;
          +  padding-right: 8px;
          +}
          +.btn-group > .btn-lg + .dropdown-toggle {
          +  padding-left: 12px;
          +  padding-right: 12px;
          +}
          +
          +// The clickable button for toggling the menu
          +// Remove the gradient and set the same inset shadow as the :active state
          +.btn-group.open .dropdown-toggle {
          +  @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
          +
          +  // Show no shadow for `.btn-link` since it has no other button styles.
          +  &.btn-link {
          +    @include box-shadow(none);
          +  }
          +}
          +
          +
          +// Reposition the caret
          +.btn .caret {
          +  margin-left: 0;
          +}
          +// Carets in other button sizes
          +.btn-lg .caret {
          +  border-width: $caret-width-large $caret-width-large 0;
          +  border-bottom-width: 0;
          +}
          +// Upside down carets for .dropup
          +.dropup .btn-lg .caret {
          +  border-width: 0 $caret-width-large $caret-width-large;
          +}
          +
          +
          +// Vertical button groups
          +// ----------------------
          +
          +.btn-group-vertical {
          +  > .btn,
          +  > .btn-group,
          +  > .btn-group > .btn {
          +    display: block;
          +    float: none;
          +    width: 100%;
          +    max-width: 100%;
          +  }
          +
          +  // Clear floats so dropdown menus can be properly placed
          +  > .btn-group {
          +    @include clearfix;
          +    > .btn {
          +      float: none;
          +    }
          +  }
          +
          +  > .btn + .btn,
          +  > .btn + .btn-group,
          +  > .btn-group + .btn,
          +  > .btn-group + .btn-group {
          +    margin-top: -1px;
          +    margin-left: 0;
          +  }
          +}
          +
          +.btn-group-vertical > .btn {
          +  &:not(:first-child):not(:last-child) {
          +    border-radius: 0;
          +  }
          +  &:first-child:not(:last-child) {
          +    @include border-top-radius($btn-border-radius-base);
          +    @include border-bottom-radius(0);
          +  }
          +  &:last-child:not(:first-child) {
          +    @include border-top-radius(0);
          +    @include border-bottom-radius($btn-border-radius-base);
          +  }
          +}
          +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
          +  border-radius: 0;
          +}
          +.btn-group-vertical > .btn-group:first-child:not(:last-child) {
          +  > .btn:last-child,
          +  > .dropdown-toggle {
          +    @include border-bottom-radius(0);
          +  }
          +}
          +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
          +  @include border-top-radius(0);
          +}
          +
          +
          +// Justified button groups
          +// ----------------------
          +
          +.btn-group-justified {
          +  display: table;
          +  width: 100%;
          +  table-layout: fixed;
          +  border-collapse: separate;
          +  > .btn,
          +  > .btn-group {
          +    float: none;
          +    display: table-cell;
          +    width: 1%;
          +  }
          +  > .btn-group .btn {
          +    width: 100%;
          +  }
          +
          +  > .btn-group .dropdown-menu {
          +    left: auto;
          +  }
          +}
          +
          +
          +// Checkbox and radio options
          +//
          +// In order to support the browser's form validation feedback, powered by the
          +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
          +// `display: none;` or `visibility: hidden;` as that also hides the popover.
          +// Simply visually hiding the inputs via `opacity` would leave them clickable in
          +// certain cases which is prevented by using `clip` and `pointer-events`.
          +// This way, we ensure a DOM element is visible to position the popover from.
          +//
          +// See https://github.com/twbs/bootstrap/pull/12794 and
          +// https://github.com/twbs/bootstrap/pull/14559 for more information.
          +
          +[data-toggle="buttons"] {
          +  > .btn,
          +  > .btn-group > .btn {
          +    input[type="radio"],
          +    input[type="checkbox"] {
          +      position: absolute;
          +      clip: rect(0,0,0,0);
          +      pointer-events: none;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_buttons.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_buttons.scss
          new file mode 100644
          index 0000000..6452b70
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_buttons.scss
          @@ -0,0 +1,168 @@
          +//
          +// Buttons
          +// --------------------------------------------------
          +
          +
          +// Base styles
          +// --------------------------------------------------
          +
          +.btn {
          +  display: inline-block;
          +  margin-bottom: 0; // For input.btn
          +  font-weight: $btn-font-weight;
          +  text-align: center;
          +  vertical-align: middle;
          +  touch-action: manipulation;
          +  cursor: pointer;
          +  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
          +  border: 1px solid transparent;
          +  white-space: nowrap;
          +  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
          +  @include user-select(none);
          +
          +  &,
          +  &:active,
          +  &.active {
          +    &:focus,
          +    &.focus {
          +      @include tab-focus;
          +    }
          +  }
          +
          +  &:hover,
          +  &:focus,
          +  &.focus {
          +    color: $btn-default-color;
          +    text-decoration: none;
          +  }
          +
          +  &:active,
          +  &.active {
          +    outline: 0;
          +    background-image: none;
          +    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
          +  }
          +
          +  &.disabled,
          +  &[disabled],
          +  fieldset[disabled] & {
          +    cursor: $cursor-disabled;
          +    @include opacity(.65);
          +    @include box-shadow(none);
          +  }
          +
          +  // [converter] extracted a& to a.btn
          +}
          +
          +a.btn {
          +  &.disabled,
          +  fieldset[disabled] & {
          +    pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
          +  }
          +}
          +
          +
          +// Alternate buttons
          +// --------------------------------------------------
          +
          +.btn-default {
          +  @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
          +}
          +.btn-primary {
          +  @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
          +}
          +// Success appears as green
          +.btn-success {
          +  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
          +}
          +// Info appears as blue-green
          +.btn-info {
          +  @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
          +}
          +// Warning appears as orange
          +.btn-warning {
          +  @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
          +}
          +// Danger and error appear as red
          +.btn-danger {
          +  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
          +}
          +
          +
          +// Link buttons
          +// -------------------------
          +
          +// Make a button look and behave like a link
          +.btn-link {
          +  color: $link-color;
          +  font-weight: normal;
          +  border-radius: 0;
          +
          +  &,
          +  &:active,
          +  &.active,
          +  &[disabled],
          +  fieldset[disabled] & {
          +    background-color: transparent;
          +    @include box-shadow(none);
          +  }
          +  &,
          +  &:hover,
          +  &:focus,
          +  &:active {
          +    border-color: transparent;
          +  }
          +  &:hover,
          +  &:focus {
          +    color: $link-hover-color;
          +    text-decoration: $link-hover-decoration;
          +    background-color: transparent;
          +  }
          +  &[disabled],
          +  fieldset[disabled] & {
          +    &:hover,
          +    &:focus {
          +      color: $btn-link-disabled-color;
          +      text-decoration: none;
          +    }
          +  }
          +}
          +
          +
          +// Button Sizes
          +// --------------------------------------------------
          +
          +.btn-lg {
          +  // line-height: ensure even-numbered height of button next to large input
          +  @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large);
          +}
          +.btn-sm {
          +  // line-height: ensure proper height of button next to small input
          +  @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
          +}
          +.btn-xs {
          +  @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
          +}
          +
          +
          +// Block button
          +// --------------------------------------------------
          +
          +.btn-block {
          +  display: block;
          +  width: 100%;
          +}
          +
          +// Vertically space out multiple block buttons
          +.btn-block + .btn-block {
          +  margin-top: 5px;
          +}
          +
          +// Specificity overrides
          +input[type="submit"],
          +input[type="reset"],
          +input[type="button"] {
          +  &.btn-block {
          +    width: 100%;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_carousel.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_carousel.scss
          new file mode 100644
          index 0000000..753d881
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_carousel.scss
          @@ -0,0 +1,270 @@
          +//
          +// Carousel
          +// --------------------------------------------------
          +
          +
          +// Wrapper for the slide container and indicators
          +.carousel {
          +  position: relative;
          +}
          +
          +.carousel-inner {
          +  position: relative;
          +  overflow: hidden;
          +  width: 100%;
          +
          +  > .item {
          +    display: none;
          +    position: relative;
          +    @include transition(.6s ease-in-out left);
          +
          +    // Account for jankitude on images
          +    > img,
          +    > a > img {
          +      @include img-responsive;
          +      line-height: 1;
          +    }
          +
          +    // WebKit CSS3 transforms for supported devices
          +    @media all and (transform-3d), (-webkit-transform-3d) {
          +      @include transition-transform(0.6s ease-in-out);
          +      @include backface-visibility(hidden);
          +      @include perspective(1000px);
          +
          +      &.next,
          +      &.active.right {
          +        @include translate3d(100%, 0, 0);
          +        left: 0;
          +      }
          +      &.prev,
          +      &.active.left {
          +        @include translate3d(-100%, 0, 0);
          +        left: 0;
          +      }
          +      &.next.left,
          +      &.prev.right,
          +      &.active {
          +        @include translate3d(0, 0, 0);
          +        left: 0;
          +      }
          +    }
          +  }
          +
          +  > .active,
          +  > .next,
          +  > .prev {
          +    display: block;
          +  }
          +
          +  > .active {
          +    left: 0;
          +  }
          +
          +  > .next,
          +  > .prev {
          +    position: absolute;
          +    top: 0;
          +    width: 100%;
          +  }
          +
          +  > .next {
          +    left: 100%;
          +  }
          +  > .prev {
          +    left: -100%;
          +  }
          +  > .next.left,
          +  > .prev.right {
          +    left: 0;
          +  }
          +
          +  > .active.left {
          +    left: -100%;
          +  }
          +  > .active.right {
          +    left: 100%;
          +  }
          +
          +}
          +
          +// Left/right controls for nav
          +// ---------------------------
          +
          +.carousel-control {
          +  position: absolute;
          +  top: 0;
          +  left: 0;
          +  bottom: 0;
          +  width: $carousel-control-width;
          +  @include opacity($carousel-control-opacity);
          +  font-size: $carousel-control-font-size;
          +  color: $carousel-control-color;
          +  text-align: center;
          +  text-shadow: $carousel-text-shadow;
          +  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
          +  // We can't have this transition here because WebKit cancels the carousel
          +  // animation if you trip this while in the middle of another animation.
          +
          +  // Set gradients for backgrounds
          +  &.left {
          +    @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
          +  }
          +  &.right {
          +    left: auto;
          +    right: 0;
          +    @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
          +  }
          +
          +  // Hover/focus state
          +  &:hover,
          +  &:focus {
          +    outline: 0;
          +    color: $carousel-control-color;
          +    text-decoration: none;
          +    @include opacity(.9);
          +  }
          +
          +  // Toggles
          +  .icon-prev,
          +  .icon-next,
          +  .glyphicon-chevron-left,
          +  .glyphicon-chevron-right {
          +    position: absolute;
          +    top: 50%;
          +    margin-top: -10px;
          +    z-index: 5;
          +    display: inline-block;
          +  }
          +  .icon-prev,
          +  .glyphicon-chevron-left {
          +    left: 50%;
          +    margin-left: -10px;
          +  }
          +  .icon-next,
          +  .glyphicon-chevron-right {
          +    right: 50%;
          +    margin-right: -10px;
          +  }
          +  .icon-prev,
          +  .icon-next {
          +    width:  20px;
          +    height: 20px;
          +    line-height: 1;
          +    font-family: serif;
          +  }
          +
          +
          +  .icon-prev {
          +    &:before {
          +      content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
          +    }
          +  }
          +  .icon-next {
          +    &:before {
          +      content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
          +    }
          +  }
          +}
          +
          +// Optional indicator pips
          +//
          +// Add an unordered list with the following class and add a list item for each
          +// slide your carousel holds.
          +
          +.carousel-indicators {
          +  position: absolute;
          +  bottom: 10px;
          +  left: 50%;
          +  z-index: 15;
          +  width: 60%;
          +  margin-left: -30%;
          +  padding-left: 0;
          +  list-style: none;
          +  text-align: center;
          +
          +  li {
          +    display: inline-block;
          +    width:  10px;
          +    height: 10px;
          +    margin: 1px;
          +    text-indent: -999px;
          +    border: 1px solid $carousel-indicator-border-color;
          +    border-radius: 10px;
          +    cursor: pointer;
          +
          +    // IE8-9 hack for event handling
          +    //
          +    // Internet Explorer 8-9 does not support clicks on elements without a set
          +    // `background-color`. We cannot use `filter` since that's not viewed as a
          +    // background color by the browser. Thus, a hack is needed.
          +    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
          +    //
          +    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
          +    // set alpha transparency for the best results possible.
          +    background-color: #000 \9; // IE8
          +    background-color: rgba(0,0,0,0); // IE9
          +  }
          +  .active {
          +    margin: 0;
          +    width:  12px;
          +    height: 12px;
          +    background-color: $carousel-indicator-active-bg;
          +  }
          +}
          +
          +// Optional captions
          +// -----------------------------
          +// Hidden by default for smaller viewports
          +.carousel-caption {
          +  position: absolute;
          +  left: 15%;
          +  right: 15%;
          +  bottom: 20px;
          +  z-index: 10;
          +  padding-top: 20px;
          +  padding-bottom: 20px;
          +  color: $carousel-caption-color;
          +  text-align: center;
          +  text-shadow: $carousel-text-shadow;
          +  & .btn {
          +    text-shadow: none; // No shadow for button elements in carousel-caption
          +  }
          +}
          +
          +
          +// Scale up controls for tablets and up
          +@media screen and (min-width: $screen-sm-min) {
          +
          +  // Scale up the controls a smidge
          +  .carousel-control {
          +    .glyphicon-chevron-left,
          +    .glyphicon-chevron-right,
          +    .icon-prev,
          +    .icon-next {
          +      width: ($carousel-control-font-size * 1.5);
          +      height: ($carousel-control-font-size * 1.5);
          +      margin-top: ($carousel-control-font-size / -2);
          +      font-size: ($carousel-control-font-size * 1.5);
          +    }
          +    .glyphicon-chevron-left,
          +    .icon-prev {
          +      margin-left: ($carousel-control-font-size / -2);
          +    }
          +    .glyphicon-chevron-right,
          +    .icon-next {
          +      margin-right: ($carousel-control-font-size / -2);
          +    }
          +  }
          +
          +  // Show and left align the captions
          +  .carousel-caption {
          +    left: 20%;
          +    right: 20%;
          +    padding-bottom: 30px;
          +  }
          +
          +  // Move up the indicators
          +  .carousel-indicators {
          +    bottom: 20px;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_close.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_close.scss
          new file mode 100644
          index 0000000..3b74d8a
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_close.scss
          @@ -0,0 +1,36 @@
          +//
          +// Close icons
          +// --------------------------------------------------
          +
          +
          +.close {
          +  float: right;
          +  font-size: ($font-size-base * 1.5);
          +  font-weight: $close-font-weight;
          +  line-height: 1;
          +  color: $close-color;
          +  text-shadow: $close-text-shadow;
          +  @include opacity(.2);
          +
          +  &:hover,
          +  &:focus {
          +    color: $close-color;
          +    text-decoration: none;
          +    cursor: pointer;
          +    @include opacity(.5);
          +  }
          +
          +  // [converter] extracted button& to button.close
          +}
          +
          +// Additional properties for button version
          +// iOS requires the button element instead of an anchor tag.
          +// If you want the anchor version, it requires `href="#"`.
          +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
          +button.close {
          +  padding: 0;
          +  cursor: pointer;
          +  background: transparent;
          +  border: 0;
          +  -webkit-appearance: none;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_code.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_code.scss
          new file mode 100644
          index 0000000..caa5f06
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_code.scss
          @@ -0,0 +1,69 @@
          +//
          +// Code (inline and block)
          +// --------------------------------------------------
          +
          +
          +// Inline and block code styles
          +code,
          +kbd,
          +pre,
          +samp {
          +  font-family: $font-family-monospace;
          +}
          +
          +// Inline code
          +code {
          +  padding: 2px 4px;
          +  font-size: 90%;
          +  color: $code-color;
          +  background-color: $code-bg;
          +  border-radius: $border-radius-base;
          +}
          +
          +// User input typically entered via keyboard
          +kbd {
          +  padding: 2px 4px;
          +  font-size: 90%;
          +  color: $kbd-color;
          +  background-color: $kbd-bg;
          +  border-radius: $border-radius-small;
          +  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
          +
          +  kbd {
          +    padding: 0;
          +    font-size: 100%;
          +    font-weight: bold;
          +    box-shadow: none;
          +  }
          +}
          +
          +// Blocks of code
          +pre {
          +  display: block;
          +  padding: (($line-height-computed - 1) / 2);
          +  margin: 0 0 ($line-height-computed / 2);
          +  font-size: ($font-size-base - 1); // 14px to 13px
          +  line-height: $line-height-base;
          +  word-break: break-all;
          +  word-wrap: break-word;
          +  color: $pre-color;
          +  background-color: $pre-bg;
          +  border: 1px solid $pre-border-color;
          +  border-radius: $border-radius-base;
          +
          +  // Account for some code outputs that place code tags in pre tags
          +  code {
          +    padding: 0;
          +    font-size: inherit;
          +    color: inherit;
          +    white-space: pre-wrap;
          +    background-color: transparent;
          +    border-radius: 0;
          +  }
          +}
          +
          +// Enable scrollable blocks of code
          +.pre-scrollable {
          +  max-height: $pre-scrollable-max-height;
          +  overflow-y: scroll;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_component-animations.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_component-animations.scss
          new file mode 100644
          index 0000000..ca3b43c
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_component-animations.scss
          @@ -0,0 +1,37 @@
          +//
          +// Component animations
          +// --------------------------------------------------
          +
          +// Heads up!
          +//
          +// We don't use the `.opacity()` mixin here since it causes a bug with text
          +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
          +
          +.fade {
          +  opacity: 0;
          +  @include transition(opacity .15s linear);
          +  &.in {
          +    opacity: 1;
          +  }
          +}
          +
          +.collapse {
          +  display: none;
          +
          +  &.in      { display: block; }
          +  // [converter] extracted tr&.in to tr.collapse.in
          +  // [converter] extracted tbody&.in to tbody.collapse.in
          +}
          +
          +tr.collapse.in    { display: table-row; }
          +
          +tbody.collapse.in { display: table-row-group; }
          +
          +.collapsing {
          +  position: relative;
          +  height: 0;
          +  overflow: hidden;
          +  @include transition-property(height, visibility);
          +  @include transition-duration(.35s);
          +  @include transition-timing-function(ease);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss
          new file mode 100644
          index 0000000..aac8459
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss
          @@ -0,0 +1,216 @@
          +//
          +// Dropdown menus
          +// --------------------------------------------------
          +
          +
          +// Dropdown arrow/caret
          +.caret {
          +  display: inline-block;
          +  width: 0;
          +  height: 0;
          +  margin-left: 2px;
          +  vertical-align: middle;
          +  border-top:   $caret-width-base dashed;
          +  border-top:   $caret-width-base solid \9; // IE8
          +  border-right: $caret-width-base solid transparent;
          +  border-left:  $caret-width-base solid transparent;
          +}
          +
          +// The dropdown wrapper (div)
          +.dropup,
          +.dropdown {
          +  position: relative;
          +}
          +
          +// Prevent the focus on the dropdown toggle when closing dropdowns
          +.dropdown-toggle:focus {
          +  outline: 0;
          +}
          +
          +// The dropdown menu (ul)
          +.dropdown-menu {
          +  position: absolute;
          +  top: 100%;
          +  left: 0;
          +  z-index: $zindex-dropdown;
          +  display: none; // none by default, but block on "open" of the menu
          +  float: left;
          +  min-width: 160px;
          +  padding: 5px 0;
          +  margin: 2px 0 0; // override default ul
          +  list-style: none;
          +  font-size: $font-size-base;
          +  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
          +  background-color: $dropdown-bg;
          +  border: 1px solid $dropdown-fallback-border; // IE8 fallback
          +  border: 1px solid $dropdown-border;
          +  border-radius: $border-radius-base;
          +  @include box-shadow(0 6px 12px rgba(0,0,0,.175));
          +  background-clip: padding-box;
          +
          +  // Aligns the dropdown menu to right
          +  //
          +  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
          +  &.pull-right {
          +    right: 0;
          +    left: auto;
          +  }
          +
          +  // Dividers (basically an hr) within the dropdown
          +  .divider {
          +    @include nav-divider($dropdown-divider-bg);
          +  }
          +
          +  // Links within the dropdown menu
          +  > li > a {
          +    display: block;
          +    padding: 3px 20px;
          +    clear: both;
          +    font-weight: normal;
          +    line-height: $line-height-base;
          +    color: $dropdown-link-color;
          +    white-space: nowrap; // prevent links from randomly breaking onto new lines
          +  }
          +}
          +
          +// Hover/Focus state
          +.dropdown-menu > li > a {
          +  &:hover,
          +  &:focus {
          +    text-decoration: none;
          +    color: $dropdown-link-hover-color;
          +    background-color: $dropdown-link-hover-bg;
          +  }
          +}
          +
          +// Active state
          +.dropdown-menu > .active > a {
          +  &,
          +  &:hover,
          +  &:focus {
          +    color: $dropdown-link-active-color;
          +    text-decoration: none;
          +    outline: 0;
          +    background-color: $dropdown-link-active-bg;
          +  }
          +}
          +
          +// Disabled state
          +//
          +// Gray out text and ensure the hover/focus state remains gray
          +
          +.dropdown-menu > .disabled > a {
          +  &,
          +  &:hover,
          +  &:focus {
          +    color: $dropdown-link-disabled-color;
          +  }
          +
          +  // Nuke hover/focus effects
          +  &:hover,
          +  &:focus {
          +    text-decoration: none;
          +    background-color: transparent;
          +    background-image: none; // Remove CSS gradient
          +    @include reset-filter;
          +    cursor: $cursor-disabled;
          +  }
          +}
          +
          +// Open state for the dropdown
          +.open {
          +  // Show the menu
          +  > .dropdown-menu {
          +    display: block;
          +  }
          +
          +  // Remove the outline when :focus is triggered
          +  > a {
          +    outline: 0;
          +  }
          +}
          +
          +// Menu positioning
          +//
          +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
          +// menu with the parent.
          +.dropdown-menu-right {
          +  left: auto; // Reset the default from `.dropdown-menu`
          +  right: 0;
          +}
          +// With v3, we enabled auto-flipping if you have a dropdown within a right
          +// aligned nav component. To enable the undoing of that, we provide an override
          +// to restore the default dropdown menu alignment.
          +//
          +// This is only for left-aligning a dropdown menu within a `.navbar-right` or
          +// `.pull-right` nav component.
          +.dropdown-menu-left {
          +  left: 0;
          +  right: auto;
          +}
          +
          +// Dropdown section headers
          +.dropdown-header {
          +  display: block;
          +  padding: 3px 20px;
          +  font-size: $font-size-small;
          +  line-height: $line-height-base;
          +  color: $dropdown-header-color;
          +  white-space: nowrap; // as with > li > a
          +}
          +
          +// Backdrop to catch body clicks on mobile, etc.
          +.dropdown-backdrop {
          +  position: fixed;
          +  left: 0;
          +  right: 0;
          +  bottom: 0;
          +  top: 0;
          +  z-index: ($zindex-dropdown - 10);
          +}
          +
          +// Right aligned dropdowns
          +.pull-right > .dropdown-menu {
          +  right: 0;
          +  left: auto;
          +}
          +
          +// Allow for dropdowns to go bottom up (aka, dropup-menu)
          +//
          +// Just add .dropup after the standard .dropdown class and you're set, bro.
          +// TODO: abstract this so that the navbar fixed styles are not placed here?
          +
          +.dropup,
          +.navbar-fixed-bottom .dropdown {
          +  // Reverse the caret
          +  .caret {
          +    border-top: 0;
          +    border-bottom: $caret-width-base dashed;
          +    border-bottom: $caret-width-base solid \9; // IE8
          +    content: "";
          +  }
          +  // Different positioning for bottom up menu
          +  .dropdown-menu {
          +    top: auto;
          +    bottom: 100%;
          +    margin-bottom: 2px;
          +  }
          +}
          +
          +
          +// Component alignment
          +//
          +// Reiterate per navbar.less and the modified component alignment there.
          +
          +@media (min-width: $grid-float-breakpoint) {
          +  .navbar-right {
          +    .dropdown-menu {
          +      right: 0; left: auto;
          +    }
          +    // Necessary for overrides of the default right aligned menu.
          +    // Will remove come v4 in all likelihood.
          +    .dropdown-menu-left {
          +      left: 0; right: auto;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_forms.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_forms.scss
          new file mode 100644
          index 0000000..11ba109
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_forms.scss
          @@ -0,0 +1,617 @@
          +//
          +// Forms
          +// --------------------------------------------------
          +
          +
          +// Normalize non-controls
          +//
          +// Restyle and baseline non-control form elements.
          +
          +fieldset {
          +  padding: 0;
          +  margin: 0;
          +  border: 0;
          +  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
          +  // so we reset that to ensure it behaves more like a standard block element.
          +  // See https://github.com/twbs/bootstrap/issues/12359.
          +  min-width: 0;
          +}
          +
          +legend {
          +  display: block;
          +  width: 100%;
          +  padding: 0;
          +  margin-bottom: $line-height-computed;
          +  font-size: ($font-size-base * 1.5);
          +  line-height: inherit;
          +  color: $legend-color;
          +  border: 0;
          +  border-bottom: 1px solid $legend-border-color;
          +}
          +
          +label {
          +  display: inline-block;
          +  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
          +  margin-bottom: 5px;
          +  font-weight: bold;
          +}
          +
          +
          +// Normalize form controls
          +//
          +// While most of our form styles require extra classes, some basic normalization
          +// is required to ensure optimum display with or without those classes to better
          +// address browser inconsistencies.
          +
          +// Override content-box in Normalize (* isn't specific enough)
          +input[type="search"] {
          +  @include box-sizing(border-box);
          +}
          +
          +// Position radios and checkboxes better
          +input[type="radio"],
          +input[type="checkbox"] {
          +  margin: 4px 0 0;
          +  margin-top: 1px \9; // IE8-9
          +  line-height: normal;
          +}
          +
          +input[type="file"] {
          +  display: block;
          +}
          +
          +// Make range inputs behave like textual form controls
          +input[type="range"] {
          +  display: block;
          +  width: 100%;
          +}
          +
          +// Make multiple select elements height not fixed
          +select[multiple],
          +select[size] {
          +  height: auto;
          +}
          +
          +// Focus for file, radio, and checkbox
          +input[type="file"]:focus,
          +input[type="radio"]:focus,
          +input[type="checkbox"]:focus {
          +  @include tab-focus;
          +}
          +
          +// Adjust output element
          +output {
          +  display: block;
          +  padding-top: ($padding-base-vertical + 1);
          +  font-size: $font-size-base;
          +  line-height: $line-height-base;
          +  color: $input-color;
          +}
          +
          +
          +// Common form controls
          +//
          +// Shared size and type resets for form controls. Apply `.form-control` to any
          +// of the following form controls:
          +//
          +// select
          +// textarea
          +// input[type="text"]
          +// input[type="password"]
          +// input[type="datetime"]
          +// input[type="datetime-local"]
          +// input[type="date"]
          +// input[type="month"]
          +// input[type="time"]
          +// input[type="week"]
          +// input[type="number"]
          +// input[type="email"]
          +// input[type="url"]
          +// input[type="search"]
          +// input[type="tel"]
          +// input[type="color"]
          +
          +.form-control {
          +  display: block;
          +  width: 100%;
          +  height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
          +  padding: $padding-base-vertical $padding-base-horizontal;
          +  font-size: $font-size-base;
          +  line-height: $line-height-base;
          +  color: $input-color;
          +  background-color: $input-bg;
          +  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
          +  border: 1px solid $input-border;
          +  border-radius: $input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
          +  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
          +  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
          +
          +  // Customize the `:focus` state to imitate native WebKit styles.
          +  @include form-control-focus;
          +
          +  // Placeholder
          +  @include placeholder;
          +
          +  // Unstyle the caret on `<select>`s in IE10+.
          +  &::-ms-expand {
          +    border: 0;
          +    background-color: transparent;
          +  }
          +
          +  // Disabled and read-only inputs
          +  //
          +  // HTML5 says that controls under a fieldset > legend:first-child won't be
          +  // disabled if the fieldset is disabled. Due to implementation difficulty, we
          +  // don't honor that edge case; we style them as disabled anyway.
          +  &[disabled],
          +  &[readonly],
          +  fieldset[disabled] & {
          +    background-color: $input-bg-disabled;
          +    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
          +  }
          +
          +  &[disabled],
          +  fieldset[disabled] & {
          +    cursor: $cursor-disabled;
          +  }
          +
          +  // [converter] extracted textarea& to textarea.form-control
          +}
          +
          +// Reset height for `textarea`s
          +textarea.form-control {
          +  height: auto;
          +}
          +
          +
          +// Search inputs in iOS
          +//
          +// This overrides the extra rounded corners on search inputs in iOS so that our
          +// `.form-control` class can properly style them. Note that this cannot simply
          +// be added to `.form-control` as it's not specific enough. For details, see
          +// https://github.com/twbs/bootstrap/issues/11586.
          +
          +input[type="search"] {
          +  -webkit-appearance: none;
          +}
          +
          +
          +// Special styles for iOS temporal inputs
          +//
          +// In Mobile Safari, setting `display: block` on temporal inputs causes the
          +// text within the input to become vertically misaligned. As a workaround, we
          +// set a pixel line-height that matches the given height of the input, but only
          +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
          +//
          +// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
          +
          +@media screen and (-webkit-min-device-pixel-ratio: 0) {
          +  input[type="date"],
          +  input[type="time"],
          +  input[type="datetime-local"],
          +  input[type="month"] {
          +    &.form-control {
          +      line-height: $input-height-base;
          +    }
          +
          +    &.input-sm,
          +    .input-group-sm & {
          +      line-height: $input-height-small;
          +    }
          +
          +    &.input-lg,
          +    .input-group-lg & {
          +      line-height: $input-height-large;
          +    }
          +  }
          +}
          +
          +
          +// Form groups
          +//
          +// Designed to help with the organization and spacing of vertical forms. For
          +// horizontal forms, use the predefined grid classes.
          +
          +.form-group {
          +  margin-bottom: $form-group-margin-bottom;
          +}
          +
          +
          +// Checkboxes and radios
          +//
          +// Indent the labels to position radios/checkboxes as hanging controls.
          +
          +.radio,
          +.checkbox {
          +  position: relative;
          +  display: block;
          +  margin-top: 10px;
          +  margin-bottom: 10px;
          +
          +  label {
          +    min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text
          +    padding-left: 20px;
          +    margin-bottom: 0;
          +    font-weight: normal;
          +    cursor: pointer;
          +  }
          +}
          +.radio input[type="radio"],
          +.radio-inline input[type="radio"],
          +.checkbox input[type="checkbox"],
          +.checkbox-inline input[type="checkbox"] {
          +  position: absolute;
          +  margin-left: -20px;
          +  margin-top: 4px \9;
          +}
          +
          +.radio + .radio,
          +.checkbox + .checkbox {
          +  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
          +}
          +
          +// Radios and checkboxes on same line
          +.radio-inline,
          +.checkbox-inline {
          +  position: relative;
          +  display: inline-block;
          +  padding-left: 20px;
          +  margin-bottom: 0;
          +  vertical-align: middle;
          +  font-weight: normal;
          +  cursor: pointer;
          +}
          +.radio-inline + .radio-inline,
          +.checkbox-inline + .checkbox-inline {
          +  margin-top: 0;
          +  margin-left: 10px; // space out consecutive inline controls
          +}
          +
          +// Apply same disabled cursor tweak as for inputs
          +// Some special care is needed because <label>s don't inherit their parent's `cursor`.
          +//
          +// Note: Neither radios nor checkboxes can be readonly.
          +input[type="radio"],
          +input[type="checkbox"] {
          +  &[disabled],
          +  &.disabled,
          +  fieldset[disabled] & {
          +    cursor: $cursor-disabled;
          +  }
          +}
          +// These classes are used directly on <label>s
          +.radio-inline,
          +.checkbox-inline {
          +  &.disabled,
          +  fieldset[disabled] & {
          +    cursor: $cursor-disabled;
          +  }
          +}
          +// These classes are used on elements with <label> descendants
          +.radio,
          +.checkbox {
          +  &.disabled,
          +  fieldset[disabled] & {
          +    label {
          +      cursor: $cursor-disabled;
          +    }
          +  }
          +}
          +
          +
          +// Static form control text
          +//
          +// Apply class to a `p` element to make any string of text align with labels in
          +// a horizontal form layout.
          +
          +.form-control-static {
          +  // Size it appropriately next to real form controls
          +  padding-top: ($padding-base-vertical + 1);
          +  padding-bottom: ($padding-base-vertical + 1);
          +  // Remove default margin from `p`
          +  margin-bottom: 0;
          +  min-height: ($line-height-computed + $font-size-base);
          +
          +  &.input-lg,
          +  &.input-sm {
          +    padding-left: 0;
          +    padding-right: 0;
          +  }
          +}
          +
          +
          +// Form control sizing
          +//
          +// Build on `.form-control` with modifier classes to decrease or increase the
          +// height and font-size of form controls.
          +//
          +// The `.form-group-* form-control` variations are sadly duplicated to avoid the
          +// issue documented in https://github.com/twbs/bootstrap/issues/15074.
          +
          +@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);
          +.form-group-sm {
          +  .form-control {
          +    height: $input-height-small;
          +    padding: $padding-small-vertical $padding-small-horizontal;
          +    font-size: $font-size-small;
          +    line-height: $line-height-small;
          +    border-radius: $input-border-radius-small;
          +  }
          +  select.form-control {
          +    height: $input-height-small;
          +    line-height: $input-height-small;
          +  }
          +  textarea.form-control,
          +  select[multiple].form-control {
          +    height: auto;
          +  }
          +  .form-control-static {
          +    height: $input-height-small;
          +    min-height: ($line-height-computed + $font-size-small);
          +    padding: ($padding-small-vertical + 1) $padding-small-horizontal;
          +    font-size: $font-size-small;
          +    line-height: $line-height-small;
          +  }
          +}
          +
          +@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);
          +.form-group-lg {
          +  .form-control {
          +    height: $input-height-large;
          +    padding: $padding-large-vertical $padding-large-horizontal;
          +    font-size: $font-size-large;
          +    line-height: $line-height-large;
          +    border-radius: $input-border-radius-large;
          +  }
          +  select.form-control {
          +    height: $input-height-large;
          +    line-height: $input-height-large;
          +  }
          +  textarea.form-control,
          +  select[multiple].form-control {
          +    height: auto;
          +  }
          +  .form-control-static {
          +    height: $input-height-large;
          +    min-height: ($line-height-computed + $font-size-large);
          +    padding: ($padding-large-vertical + 1) $padding-large-horizontal;
          +    font-size: $font-size-large;
          +    line-height: $line-height-large;
          +  }
          +}
          +
          +
          +// Form control feedback states
          +//
          +// Apply contextual and semantic states to individual form controls.
          +
          +.has-feedback {
          +  // Enable absolute positioning
          +  position: relative;
          +
          +  // Ensure icons don't overlap text
          +  .form-control {
          +    padding-right: ($input-height-base * 1.25);
          +  }
          +}
          +// Feedback icon (requires .glyphicon classes)
          +.form-control-feedback {
          +  position: absolute;
          +  top: 0;
          +  right: 0;
          +  z-index: 2; // Ensure icon is above input groups
          +  display: block;
          +  width: $input-height-base;
          +  height: $input-height-base;
          +  line-height: $input-height-base;
          +  text-align: center;
          +  pointer-events: none;
          +}
          +.input-lg + .form-control-feedback,
          +.input-group-lg + .form-control-feedback,
          +.form-group-lg .form-control + .form-control-feedback {
          +  width: $input-height-large;
          +  height: $input-height-large;
          +  line-height: $input-height-large;
          +}
          +.input-sm + .form-control-feedback,
          +.input-group-sm + .form-control-feedback,
          +.form-group-sm .form-control + .form-control-feedback {
          +  width: $input-height-small;
          +  height: $input-height-small;
          +  line-height: $input-height-small;
          +}
          +
          +// Feedback states
          +.has-success {
          +  @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
          +}
          +.has-warning {
          +  @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
          +}
          +.has-error {
          +  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
          +}
          +
          +// Reposition feedback icon if input has visible label above
          +.has-feedback label {
          +
          +  & ~ .form-control-feedback {
          +    top: ($line-height-computed + 5); // Height of the `label` and its margin
          +  }
          +  &.sr-only ~ .form-control-feedback {
          +    top: 0;
          +  }
          +}
          +
          +
          +// Help text
          +//
          +// Apply to any element you wish to create light text for placement immediately
          +// below a form control. Use for general help, formatting, or instructional text.
          +
          +.help-block {
          +  display: block; // account for any element using help-block
          +  margin-top: 5px;
          +  margin-bottom: 10px;
          +  color: lighten($text-color, 25%); // lighten the text some for contrast
          +}
          +
          +
          +// Inline forms
          +//
          +// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
          +// forms begin stacked on extra small (mobile) devices and then go inline when
          +// viewports reach <768px.
          +//
          +// Requires wrapping inputs and labels with `.form-group` for proper display of
          +// default HTML form controls and our custom form controls (e.g., input groups).
          +//
          +// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
          +
          +// [converter] extracted from `.form-inline` for libsass compatibility
          +@mixin form-inline {
          +
          +  // Kick in the inline
          +  @media (min-width: $screen-sm-min) {
          +    // Inline-block all the things for "inline"
          +    .form-group {
          +      display: inline-block;
          +      margin-bottom: 0;
          +      vertical-align: middle;
          +    }
          +
          +    // In navbar-form, allow folks to *not* use `.form-group`
          +    .form-control {
          +      display: inline-block;
          +      width: auto; // Prevent labels from stacking above inputs in `.form-group`
          +      vertical-align: middle;
          +    }
          +
          +    // Make static controls behave like regular ones
          +    .form-control-static {
          +      display: inline-block;
          +    }
          +
          +    .input-group {
          +      display: inline-table;
          +      vertical-align: middle;
          +
          +      .input-group-addon,
          +      .input-group-btn,
          +      .form-control {
          +        width: auto;
          +      }
          +    }
          +
          +    // Input groups need that 100% width though
          +    .input-group > .form-control {
          +      width: 100%;
          +    }
          +
          +    .control-label {
          +      margin-bottom: 0;
          +      vertical-align: middle;
          +    }
          +
          +    // Remove default margin on radios/checkboxes that were used for stacking, and
          +    // then undo the floating of radios and checkboxes to match.
          +    .radio,
          +    .checkbox {
          +      display: inline-block;
          +      margin-top: 0;
          +      margin-bottom: 0;
          +      vertical-align: middle;
          +
          +      label {
          +        padding-left: 0;
          +      }
          +    }
          +    .radio input[type="radio"],
          +    .checkbox input[type="checkbox"] {
          +      position: relative;
          +      margin-left: 0;
          +    }
          +
          +    // Re-override the feedback icon.
          +    .has-feedback .form-control-feedback {
          +      top: 0;
          +    }
          +  }
          +}
          +// [converter] extracted as `@mixin form-inline` for libsass compatibility
          +.form-inline {
          +  @include form-inline;
          +}
          +
          +
          +
          +// Horizontal forms
          +//
          +// Horizontal forms are built on grid classes and allow you to create forms with
          +// labels on the left and inputs on the right.
          +
          +.form-horizontal {
          +
          +  // Consistent vertical alignment of radios and checkboxes
          +  //
          +  // Labels also get some reset styles, but that is scoped to a media query below.
          +  .radio,
          +  .checkbox,
          +  .radio-inline,
          +  .checkbox-inline {
          +    margin-top: 0;
          +    margin-bottom: 0;
          +    padding-top: ($padding-base-vertical + 1); // Default padding plus a border
          +  }
          +  // Account for padding we're adding to ensure the alignment and of help text
          +  // and other content below items
          +  .radio,
          +  .checkbox {
          +    min-height: ($line-height-computed + ($padding-base-vertical + 1));
          +  }
          +
          +  // Make form groups behave like rows
          +  .form-group {
          +    @include make-row;
          +  }
          +
          +  // Reset spacing and right align labels, but scope to media queries so that
          +  // labels on narrow viewports stack the same as a default form example.
          +  @media (min-width: $screen-sm-min) {
          +    .control-label {
          +      text-align: right;
          +      margin-bottom: 0;
          +      padding-top: ($padding-base-vertical + 1); // Default padding plus a border
          +    }
          +  }
          +
          +  // Validation states
          +  //
          +  // Reposition the icon because it's now within a grid column and columns have
          +  // `position: relative;` on them. Also accounts for the grid gutter padding.
          +  .has-feedback .form-control-feedback {
          +    right: floor(($grid-gutter-width / 2));
          +  }
          +
          +  // Form group sizes
          +  //
          +  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
          +  // inputs and labels within a `.form-group`.
          +  .form-group-lg {
          +    @media (min-width: $screen-sm-min) {
          +      .control-label {
          +        padding-top: ($padding-large-vertical + 1);
          +        font-size: $font-size-large;
          +      }
          +    }
          +  }
          +  .form-group-sm {
          +    @media (min-width: $screen-sm-min) {
          +      .control-label {
          +        padding-top: ($padding-small-vertical + 1);
          +        font-size: $font-size-small;
          +      }
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss
          new file mode 100644
          index 0000000..07a0fc9
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss
          @@ -0,0 +1,307 @@
          +//
          +// Glyphicons for Bootstrap
          +//
          +// Since icons are fonts, they can be placed anywhere text is placed and are
          +// thus automatically sized to match the surrounding child. To use, create an
          +// inline element with the appropriate classes, like so:
          +//
          +// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
          +
          +@at-root {
          +  // Import the fonts
          +  @font-face {
          +    font-family: 'Glyphicons Halflings';
          +    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));
          +    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),
          +         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'),
          +         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),
          +         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),
          +         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');
          +  }
          +}
          +
          +// Catchall baseclass
          +.glyphicon {
          +  position: relative;
          +  top: 1px;
          +  display: inline-block;
          +  font-family: 'Glyphicons Halflings';
          +  font-style: normal;
          +  font-weight: normal;
          +  line-height: 1;
          +  -webkit-font-smoothing: antialiased;
          +  -moz-osx-font-smoothing: grayscale;
          +}
          +
          +// Individual icons
          +.glyphicon-asterisk               { &:before { content: "\002a"; } }
          +.glyphicon-plus                   { &:before { content: "\002b"; } }
          +.glyphicon-euro,
          +.glyphicon-eur                    { &:before { content: "\20ac"; } }
          +.glyphicon-minus                  { &:before { content: "\2212"; } }
          +.glyphicon-cloud                  { &:before { content: "\2601"; } }
          +.glyphicon-envelope               { &:before { content: "\2709"; } }
          +.glyphicon-pencil                 { &:before { content: "\270f"; } }
          +.glyphicon-glass                  { &:before { content: "\e001"; } }
          +.glyphicon-music                  { &:before { content: "\e002"; } }
          +.glyphicon-search                 { &:before { content: "\e003"; } }
          +.glyphicon-heart                  { &:before { content: "\e005"; } }
          +.glyphicon-star                   { &:before { content: "\e006"; } }
          +.glyphicon-star-empty             { &:before { content: "\e007"; } }
          +.glyphicon-user                   { &:before { content: "\e008"; } }
          +.glyphicon-film                   { &:before { content: "\e009"; } }
          +.glyphicon-th-large               { &:before { content: "\e010"; } }
          +.glyphicon-th                     { &:before { content: "\e011"; } }
          +.glyphicon-th-list                { &:before { content: "\e012"; } }
          +.glyphicon-ok                     { &:before { content: "\e013"; } }
          +.glyphicon-remove                 { &:before { content: "\e014"; } }
          +.glyphicon-zoom-in                { &:before { content: "\e015"; } }
          +.glyphicon-zoom-out               { &:before { content: "\e016"; } }
          +.glyphicon-off                    { &:before { content: "\e017"; } }
          +.glyphicon-signal                 { &:before { content: "\e018"; } }
          +.glyphicon-cog                    { &:before { content: "\e019"; } }
          +.glyphicon-trash                  { &:before { content: "\e020"; } }
          +.glyphicon-home                   { &:before { content: "\e021"; } }
          +.glyphicon-file                   { &:before { content: "\e022"; } }
          +.glyphicon-time                   { &:before { content: "\e023"; } }
          +.glyphicon-road                   { &:before { content: "\e024"; } }
          +.glyphicon-download-alt           { &:before { content: "\e025"; } }
          +.glyphicon-download               { &:before { content: "\e026"; } }
          +.glyphicon-upload                 { &:before { content: "\e027"; } }
          +.glyphicon-inbox                  { &:before { content: "\e028"; } }
          +.glyphicon-play-circle            { &:before { content: "\e029"; } }
          +.glyphicon-repeat                 { &:before { content: "\e030"; } }
          +.glyphicon-refresh                { &:before { content: "\e031"; } }
          +.glyphicon-list-alt               { &:before { content: "\e032"; } }
          +.glyphicon-lock                   { &:before { content: "\e033"; } }
          +.glyphicon-flag                   { &:before { content: "\e034"; } }
          +.glyphicon-headphones             { &:before { content: "\e035"; } }
          +.glyphicon-volume-off             { &:before { content: "\e036"; } }
          +.glyphicon-volume-down            { &:before { content: "\e037"; } }
          +.glyphicon-volume-up              { &:before { content: "\e038"; } }
          +.glyphicon-qrcode                 { &:before { content: "\e039"; } }
          +.glyphicon-barcode                { &:before { content: "\e040"; } }
          +.glyphicon-tag                    { &:before { content: "\e041"; } }
          +.glyphicon-tags                   { &:before { content: "\e042"; } }
          +.glyphicon-book                   { &:before { content: "\e043"; } }
          +.glyphicon-bookmark               { &:before { content: "\e044"; } }
          +.glyphicon-print                  { &:before { content: "\e045"; } }
          +.glyphicon-camera                 { &:before { content: "\e046"; } }
          +.glyphicon-font                   { &:before { content: "\e047"; } }
          +.glyphicon-bold                   { &:before { content: "\e048"; } }
          +.glyphicon-italic                 { &:before { content: "\e049"; } }
          +.glyphicon-text-height            { &:before { content: "\e050"; } }
          +.glyphicon-text-width             { &:before { content: "\e051"; } }
          +.glyphicon-align-left             { &:before { content: "\e052"; } }
          +.glyphicon-align-center           { &:before { content: "\e053"; } }
          +.glyphicon-align-right            { &:before { content: "\e054"; } }
          +.glyphicon-align-justify          { &:before { content: "\e055"; } }
          +.glyphicon-list                   { &:before { content: "\e056"; } }
          +.glyphicon-indent-left            { &:before { content: "\e057"; } }
          +.glyphicon-indent-right           { &:before { content: "\e058"; } }
          +.glyphicon-facetime-video         { &:before { content: "\e059"; } }
          +.glyphicon-picture                { &:before { content: "\e060"; } }
          +.glyphicon-map-marker             { &:before { content: "\e062"; } }
          +.glyphicon-adjust                 { &:before { content: "\e063"; } }
          +.glyphicon-tint                   { &:before { content: "\e064"; } }
          +.glyphicon-edit                   { &:before { content: "\e065"; } }
          +.glyphicon-share                  { &:before { content: "\e066"; } }
          +.glyphicon-check                  { &:before { content: "\e067"; } }
          +.glyphicon-move                   { &:before { content: "\e068"; } }
          +.glyphicon-step-backward          { &:before { content: "\e069"; } }
          +.glyphicon-fast-backward          { &:before { content: "\e070"; } }
          +.glyphicon-backward               { &:before { content: "\e071"; } }
          +.glyphicon-play                   { &:before { content: "\e072"; } }
          +.glyphicon-pause                  { &:before { content: "\e073"; } }
          +.glyphicon-stop                   { &:before { content: "\e074"; } }
          +.glyphicon-forward                { &:before { content: "\e075"; } }
          +.glyphicon-fast-forward           { &:before { content: "\e076"; } }
          +.glyphicon-step-forward           { &:before { content: "\e077"; } }
          +.glyphicon-eject                  { &:before { content: "\e078"; } }
          +.glyphicon-chevron-left           { &:before { content: "\e079"; } }
          +.glyphicon-chevron-right          { &:before { content: "\e080"; } }
          +.glyphicon-plus-sign              { &:before { content: "\e081"; } }
          +.glyphicon-minus-sign             { &:before { content: "\e082"; } }
          +.glyphicon-remove-sign            { &:before { content: "\e083"; } }
          +.glyphicon-ok-sign                { &:before { content: "\e084"; } }
          +.glyphicon-question-sign          { &:before { content: "\e085"; } }
          +.glyphicon-info-sign              { &:before { content: "\e086"; } }
          +.glyphicon-screenshot             { &:before { content: "\e087"; } }
          +.glyphicon-remove-circle          { &:before { content: "\e088"; } }
          +.glyphicon-ok-circle              { &:before { content: "\e089"; } }
          +.glyphicon-ban-circle             { &:before { content: "\e090"; } }
          +.glyphicon-arrow-left             { &:before { content: "\e091"; } }
          +.glyphicon-arrow-right            { &:before { content: "\e092"; } }
          +.glyphicon-arrow-up               { &:before { content: "\e093"; } }
          +.glyphicon-arrow-down             { &:before { content: "\e094"; } }
          +.glyphicon-share-alt              { &:before { content: "\e095"; } }
          +.glyphicon-resize-full            { &:before { content: "\e096"; } }
          +.glyphicon-resize-small           { &:before { content: "\e097"; } }
          +.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
          +.glyphicon-gift                   { &:before { content: "\e102"; } }
          +.glyphicon-leaf                   { &:before { content: "\e103"; } }
          +.glyphicon-fire                   { &:before { content: "\e104"; } }
          +.glyphicon-eye-open               { &:before { content: "\e105"; } }
          +.glyphicon-eye-close              { &:before { content: "\e106"; } }
          +.glyphicon-warning-sign           { &:before { content: "\e107"; } }
          +.glyphicon-plane                  { &:before { content: "\e108"; } }
          +.glyphicon-calendar               { &:before { content: "\e109"; } }
          +.glyphicon-random                 { &:before { content: "\e110"; } }
          +.glyphicon-comment                { &:before { content: "\e111"; } }
          +.glyphicon-magnet                 { &:before { content: "\e112"; } }
          +.glyphicon-chevron-up             { &:before { content: "\e113"; } }
          +.glyphicon-chevron-down           { &:before { content: "\e114"; } }
          +.glyphicon-retweet                { &:before { content: "\e115"; } }
          +.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
          +.glyphicon-folder-close           { &:before { content: "\e117"; } }
          +.glyphicon-folder-open            { &:before { content: "\e118"; } }
          +.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
          +.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
          +.glyphicon-hdd                    { &:before { content: "\e121"; } }
          +.glyphicon-bullhorn               { &:before { content: "\e122"; } }
          +.glyphicon-bell                   { &:before { content: "\e123"; } }
          +.glyphicon-certificate            { &:before { content: "\e124"; } }
          +.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
          +.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
          +.glyphicon-hand-right             { &:before { content: "\e127"; } }
          +.glyphicon-hand-left              { &:before { content: "\e128"; } }
          +.glyphicon-hand-up                { &:before { content: "\e129"; } }
          +.glyphicon-hand-down              { &:before { content: "\e130"; } }
          +.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
          +.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
          +.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
          +.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
          +.glyphicon-globe                  { &:before { content: "\e135"; } }
          +.glyphicon-wrench                 { &:before { content: "\e136"; } }
          +.glyphicon-tasks                  { &:before { content: "\e137"; } }
          +.glyphicon-filter                 { &:before { content: "\e138"; } }
          +.glyphicon-briefcase              { &:before { content: "\e139"; } }
          +.glyphicon-fullscreen             { &:before { content: "\e140"; } }
          +.glyphicon-dashboard              { &:before { content: "\e141"; } }
          +.glyphicon-paperclip              { &:before { content: "\e142"; } }
          +.glyphicon-heart-empty            { &:before { content: "\e143"; } }
          +.glyphicon-link                   { &:before { content: "\e144"; } }
          +.glyphicon-phone                  { &:before { content: "\e145"; } }
          +.glyphicon-pushpin                { &:before { content: "\e146"; } }
          +.glyphicon-usd                    { &:before { content: "\e148"; } }
          +.glyphicon-gbp                    { &:before { content: "\e149"; } }
          +.glyphicon-sort                   { &:before { content: "\e150"; } }
          +.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
          +.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
          +.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
          +.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
          +.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
          +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
          +.glyphicon-unchecked              { &:before { content: "\e157"; } }
          +.glyphicon-expand                 { &:before { content: "\e158"; } }
          +.glyphicon-collapse-down          { &:before { content: "\e159"; } }
          +.glyphicon-collapse-up            { &:before { content: "\e160"; } }
          +.glyphicon-log-in                 { &:before { content: "\e161"; } }
          +.glyphicon-flash                  { &:before { content: "\e162"; } }
          +.glyphicon-log-out                { &:before { content: "\e163"; } }
          +.glyphicon-new-window             { &:before { content: "\e164"; } }
          +.glyphicon-record                 { &:before { content: "\e165"; } }
          +.glyphicon-save                   { &:before { content: "\e166"; } }
          +.glyphicon-open                   { &:before { content: "\e167"; } }
          +.glyphicon-saved                  { &:before { content: "\e168"; } }
          +.glyphicon-import                 { &:before { content: "\e169"; } }
          +.glyphicon-export                 { &:before { content: "\e170"; } }
          +.glyphicon-send                   { &:before { content: "\e171"; } }
          +.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
          +.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
          +.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
          +.glyphicon-floppy-save            { &:before { content: "\e175"; } }
          +.glyphicon-floppy-open            { &:before { content: "\e176"; } }
          +.glyphicon-credit-card            { &:before { content: "\e177"; } }
          +.glyphicon-transfer               { &:before { content: "\e178"; } }
          +.glyphicon-cutlery                { &:before { content: "\e179"; } }
          +.glyphicon-header                 { &:before { content: "\e180"; } }
          +.glyphicon-compressed             { &:before { content: "\e181"; } }
          +.glyphicon-earphone               { &:before { content: "\e182"; } }
          +.glyphicon-phone-alt              { &:before { content: "\e183"; } }
          +.glyphicon-tower                  { &:before { content: "\e184"; } }
          +.glyphicon-stats                  { &:before { content: "\e185"; } }
          +.glyphicon-sd-video               { &:before { content: "\e186"; } }
          +.glyphicon-hd-video               { &:before { content: "\e187"; } }
          +.glyphicon-subtitles              { &:before { content: "\e188"; } }
          +.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
          +.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
          +.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
          +.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
          +.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
          +.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
          +.glyphicon-registration-mark      { &:before { content: "\e195"; } }
          +.glyphicon-cloud-download         { &:before { content: "\e197"; } }
          +.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
          +.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
          +.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
          +.glyphicon-cd                     { &:before { content: "\e201"; } }
          +.glyphicon-save-file              { &:before { content: "\e202"; } }
          +.glyphicon-open-file              { &:before { content: "\e203"; } }
          +.glyphicon-level-up               { &:before { content: "\e204"; } }
          +.glyphicon-copy                   { &:before { content: "\e205"; } }
          +.glyphicon-paste                  { &:before { content: "\e206"; } }
          +// The following 2 Glyphicons are omitted for the time being because
          +// they currently use Unicode codepoints that are outside the
          +// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
          +// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
          +// Notably, the bug affects some older versions of the Android Browser.
          +// More info: https://github.com/twbs/bootstrap/issues/10106
          +// .glyphicon-door                   { &:before { content: "\1f6aa"; } }
          +// .glyphicon-key                    { &:before { content: "\1f511"; } }
          +.glyphicon-alert                  { &:before { content: "\e209"; } }
          +.glyphicon-equalizer              { &:before { content: "\e210"; } }
          +.glyphicon-king                   { &:before { content: "\e211"; } }
          +.glyphicon-queen                  { &:before { content: "\e212"; } }
          +.glyphicon-pawn                   { &:before { content: "\e213"; } }
          +.glyphicon-bishop                 { &:before { content: "\e214"; } }
          +.glyphicon-knight                 { &:before { content: "\e215"; } }
          +.glyphicon-baby-formula           { &:before { content: "\e216"; } }
          +.glyphicon-tent                   { &:before { content: "\26fa"; } }
          +.glyphicon-blackboard             { &:before { content: "\e218"; } }
          +.glyphicon-bed                    { &:before { content: "\e219"; } }
          +.glyphicon-apple                  { &:before { content: "\f8ff"; } }
          +.glyphicon-erase                  { &:before { content: "\e221"; } }
          +.glyphicon-hourglass              { &:before { content: "\231b"; } }
          +.glyphicon-lamp                   { &:before { content: "\e223"; } }
          +.glyphicon-duplicate              { &:before { content: "\e224"; } }
          +.glyphicon-piggy-bank             { &:before { content: "\e225"; } }
          +.glyphicon-scissors               { &:before { content: "\e226"; } }
          +.glyphicon-bitcoin                { &:before { content: "\e227"; } }
          +.glyphicon-btc                    { &:before { content: "\e227"; } }
          +.glyphicon-xbt                    { &:before { content: "\e227"; } }
          +.glyphicon-yen                    { &:before { content: "\00a5"; } }
          +.glyphicon-jpy                    { &:before { content: "\00a5"; } }
          +.glyphicon-ruble                  { &:before { content: "\20bd"; } }
          +.glyphicon-rub                    { &:before { content: "\20bd"; } }
          +.glyphicon-scale                  { &:before { content: "\e230"; } }
          +.glyphicon-ice-lolly              { &:before { content: "\e231"; } }
          +.glyphicon-ice-lolly-tasted       { &:before { content: "\e232"; } }
          +.glyphicon-education              { &:before { content: "\e233"; } }
          +.glyphicon-option-horizontal      { &:before { content: "\e234"; } }
          +.glyphicon-option-vertical        { &:before { content: "\e235"; } }
          +.glyphicon-menu-hamburger         { &:before { content: "\e236"; } }
          +.glyphicon-modal-window           { &:before { content: "\e237"; } }
          +.glyphicon-oil                    { &:before { content: "\e238"; } }
          +.glyphicon-grain                  { &:before { content: "\e239"; } }
          +.glyphicon-sunglasses             { &:before { content: "\e240"; } }
          +.glyphicon-text-size              { &:before { content: "\e241"; } }
          +.glyphicon-text-color             { &:before { content: "\e242"; } }
          +.glyphicon-text-background        { &:before { content: "\e243"; } }
          +.glyphicon-object-align-top       { &:before { content: "\e244"; } }
          +.glyphicon-object-align-bottom    { &:before { content: "\e245"; } }
          +.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
          +.glyphicon-object-align-left      { &:before { content: "\e247"; } }
          +.glyphicon-object-align-vertical  { &:before { content: "\e248"; } }
          +.glyphicon-object-align-right     { &:before { content: "\e249"; } }
          +.glyphicon-triangle-right         { &:before { content: "\e250"; } }
          +.glyphicon-triangle-left          { &:before { content: "\e251"; } }
          +.glyphicon-triangle-bottom        { &:before { content: "\e252"; } }
          +.glyphicon-triangle-top           { &:before { content: "\e253"; } }
          +.glyphicon-console                { &:before { content: "\e254"; } }
          +.glyphicon-superscript            { &:before { content: "\e255"; } }
          +.glyphicon-subscript              { &:before { content: "\e256"; } }
          +.glyphicon-menu-left              { &:before { content: "\e257"; } }
          +.glyphicon-menu-right             { &:before { content: "\e258"; } }
          +.glyphicon-menu-down              { &:before { content: "\e259"; } }
          +.glyphicon-menu-up                { &:before { content: "\e260"; } }
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_grid.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_grid.scss
          new file mode 100644
          index 0000000..b15ca27
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_grid.scss
          @@ -0,0 +1,84 @@
          +//
          +// Grid system
          +// --------------------------------------------------
          +
          +
          +// Container widths
          +//
          +// Set the container width, and override it for fixed navbars in media queries.
          +
          +.container {
          +  @include container-fixed;
          +
          +  @media (min-width: $screen-sm-min) {
          +    width: $container-sm;
          +  }
          +  @media (min-width: $screen-md-min) {
          +    width: $container-md;
          +  }
          +  @media (min-width: $screen-lg-min) {
          +    width: $container-lg;
          +  }
          +}
          +
          +
          +// Fluid container
          +//
          +// Utilizes the mixin meant for fixed width containers, but without any defined
          +// width for fluid, full width layouts.
          +
          +.container-fluid {
          +  @include container-fixed;
          +}
          +
          +
          +// Row
          +//
          +// Rows contain and clear the floats of your columns.
          +
          +.row {
          +  @include make-row;
          +}
          +
          +
          +// Columns
          +//
          +// Common styles for small and large grid columns
          +
          +@include make-grid-columns;
          +
          +
          +// Extra small grid
          +//
          +// Columns, offsets, pushes, and pulls for extra small devices like
          +// smartphones.
          +
          +@include make-grid(xs);
          +
          +
          +// Small grid
          +//
          +// Columns, offsets, pushes, and pulls for the small device range, from phones
          +// to tablets.
          +
          +@media (min-width: $screen-sm-min) {
          +  @include make-grid(sm);
          +}
          +
          +
          +// Medium grid
          +//
          +// Columns, offsets, pushes, and pulls for the desktop device range.
          +
          +@media (min-width: $screen-md-min) {
          +  @include make-grid(md);
          +}
          +
          +
          +// Large grid
          +//
          +// Columns, offsets, pushes, and pulls for the large desktop device range.
          +
          +@media (min-width: $screen-lg-min) {
          +  @include make-grid(lg);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_input-groups.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_input-groups.scss
          new file mode 100644
          index 0000000..f7c1d60
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_input-groups.scss
          @@ -0,0 +1,171 @@
          +//
          +// Input groups
          +// --------------------------------------------------
          +
          +// Base styles
          +// -------------------------
          +.input-group {
          +  position: relative; // For dropdowns
          +  display: table;
          +  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
          +
          +  // Undo padding and float of grid classes
          +  &[class*="col-"] {
          +    float: none;
          +    padding-left: 0;
          +    padding-right: 0;
          +  }
          +
          +  .form-control {
          +    // Ensure that the input is always above the *appended* addon button for
          +    // proper border colors.
          +    position: relative;
          +    z-index: 2;
          +
          +    // IE9 fubars the placeholder attribute in text inputs and the arrows on
          +    // select elements in input groups. To fix it, we float the input. Details:
          +    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
          +    float: left;
          +
          +    width: 100%;
          +    margin-bottom: 0;
          +    
          +    &:focus {
          +      z-index: 3;
          +    }
          +  }
          +}
          +
          +// Sizing options
          +//
          +// Remix the default form control sizing classes into new ones for easier
          +// manipulation.
          +
          +.input-group-lg > .form-control,
          +.input-group-lg > .input-group-addon,
          +.input-group-lg > .input-group-btn > .btn {
          +  @extend .input-lg;
          +}
          +.input-group-sm > .form-control,
          +.input-group-sm > .input-group-addon,
          +.input-group-sm > .input-group-btn > .btn {
          +  @extend .input-sm;
          +}
          +
          +
          +// Display as table-cell
          +// -------------------------
          +.input-group-addon,
          +.input-group-btn,
          +.input-group .form-control {
          +  display: table-cell;
          +
          +  &:not(:first-child):not(:last-child) {
          +    border-radius: 0;
          +  }
          +}
          +// Addon and addon wrapper for buttons
          +.input-group-addon,
          +.input-group-btn {
          +  width: 1%;
          +  white-space: nowrap;
          +  vertical-align: middle; // Match the inputs
          +}
          +
          +// Text input groups
          +// -------------------------
          +.input-group-addon {
          +  padding: $padding-base-vertical $padding-base-horizontal;
          +  font-size: $font-size-base;
          +  font-weight: normal;
          +  line-height: 1;
          +  color: $input-color;
          +  text-align: center;
          +  background-color: $input-group-addon-bg;
          +  border: 1px solid $input-group-addon-border-color;
          +  border-radius: $input-border-radius;
          +
          +  // Sizing
          +  &.input-sm {
          +    padding: $padding-small-vertical $padding-small-horizontal;
          +    font-size: $font-size-small;
          +    border-radius: $input-border-radius-small;
          +  }
          +  &.input-lg {
          +    padding: $padding-large-vertical $padding-large-horizontal;
          +    font-size: $font-size-large;
          +    border-radius: $input-border-radius-large;
          +  }
          +
          +  // Nuke default margins from checkboxes and radios to vertically center within.
          +  input[type="radio"],
          +  input[type="checkbox"] {
          +    margin-top: 0;
          +  }
          +}
          +
          +// Reset rounded corners
          +.input-group .form-control:first-child,
          +.input-group-addon:first-child,
          +.input-group-btn:first-child > .btn,
          +.input-group-btn:first-child > .btn-group > .btn,
          +.input-group-btn:first-child > .dropdown-toggle,
          +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
          +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
          +  @include border-right-radius(0);
          +}
          +.input-group-addon:first-child {
          +  border-right: 0;
          +}
          +.input-group .form-control:last-child,
          +.input-group-addon:last-child,
          +.input-group-btn:last-child > .btn,
          +.input-group-btn:last-child > .btn-group > .btn,
          +.input-group-btn:last-child > .dropdown-toggle,
          +.input-group-btn:first-child > .btn:not(:first-child),
          +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
          +  @include border-left-radius(0);
          +}
          +.input-group-addon:last-child {
          +  border-left: 0;
          +}
          +
          +// Button input groups
          +// -------------------------
          +.input-group-btn {
          +  position: relative;
          +  // Jankily prevent input button groups from wrapping with `white-space` and
          +  // `font-size` in combination with `inline-block` on buttons.
          +  font-size: 0;
          +  white-space: nowrap;
          +
          +  // Negative margin for spacing, position for bringing hovered/focused/actived
          +  // element above the siblings.
          +  > .btn {
          +    position: relative;
          +    + .btn {
          +      margin-left: -1px;
          +    }
          +    // Bring the "active" button to the front
          +    &:hover,
          +    &:focus,
          +    &:active {
          +      z-index: 2;
          +    }
          +  }
          +
          +  // Negative margin to only have a 1px border between the two
          +  &:first-child {
          +    > .btn,
          +    > .btn-group {
          +      margin-right: -1px;
          +    }
          +  }
          +  &:last-child {
          +    > .btn,
          +    > .btn-group {
          +      z-index: 2;
          +      margin-left: -1px;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss
          new file mode 100644
          index 0000000..a27da47
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss
          @@ -0,0 +1,54 @@
          +//
          +// Jumbotron
          +// --------------------------------------------------
          +
          +
          +.jumbotron {
          +  padding-top:    $jumbotron-padding;
          +  padding-bottom: $jumbotron-padding;
          +  margin-bottom: $jumbotron-padding;
          +  color: $jumbotron-color;
          +  background-color: $jumbotron-bg;
          +
          +  h1,
          +  .h1 {
          +    color: $jumbotron-heading-color;
          +  }
          +
          +  p {
          +    margin-bottom: ($jumbotron-padding / 2);
          +    font-size: $jumbotron-font-size;
          +    font-weight: 200;
          +  }
          +
          +  > hr {
          +    border-top-color: darken($jumbotron-bg, 10%);
          +  }
          +
          +  .container &,
          +  .container-fluid & {
          +    border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
          +    padding-left:  ($grid-gutter-width / 2);
          +    padding-right: ($grid-gutter-width / 2);
          +  }
          +
          +  .container {
          +    max-width: 100%;
          +  }
          +
          +  @media screen and (min-width: $screen-sm-min) {
          +    padding-top:    ($jumbotron-padding * 1.6);
          +    padding-bottom: ($jumbotron-padding * 1.6);
          +
          +    .container &,
          +    .container-fluid & {
          +      padding-left:  ($jumbotron-padding * 2);
          +      padding-right: ($jumbotron-padding * 2);
          +    }
          +
          +    h1,
          +    .h1 {
          +      font-size: $jumbotron-heading-font-size;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_labels.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_labels.scss
          new file mode 100644
          index 0000000..42ed6ea
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_labels.scss
          @@ -0,0 +1,66 @@
          +//
          +// Labels
          +// --------------------------------------------------
          +
          +.label {
          +  display: inline;
          +  padding: .2em .6em .3em;
          +  font-size: 75%;
          +  font-weight: bold;
          +  line-height: 1;
          +  color: $label-color;
          +  text-align: center;
          +  white-space: nowrap;
          +  vertical-align: baseline;
          +  border-radius: .25em;
          +
          +  // [converter] extracted a& to a.label
          +
          +  // Empty labels collapse automatically (not available in IE8)
          +  &:empty {
          +    display: none;
          +  }
          +
          +  // Quick fix for labels in buttons
          +  .btn & {
          +    position: relative;
          +    top: -1px;
          +  }
          +}
          +
          +// Add hover effects, but only for links
          +a.label {
          +  &:hover,
          +  &:focus {
          +    color: $label-link-hover-color;
          +    text-decoration: none;
          +    cursor: pointer;
          +  }
          +}
          +
          +// Colors
          +// Contextual variations (linked labels get darker on :hover)
          +
          +.label-default {
          +  @include label-variant($label-default-bg);
          +}
          +
          +.label-primary {
          +  @include label-variant($label-primary-bg);
          +}
          +
          +.label-success {
          +  @include label-variant($label-success-bg);
          +}
          +
          +.label-info {
          +  @include label-variant($label-info-bg);
          +}
          +
          +.label-warning {
          +  @include label-variant($label-warning-bg);
          +}
          +
          +.label-danger {
          +  @include label-variant($label-danger-bg);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_list-group.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_list-group.scss
          new file mode 100644
          index 0000000..7cb83aa
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_list-group.scss
          @@ -0,0 +1,130 @@
          +//
          +// List groups
          +// --------------------------------------------------
          +
          +
          +// Base class
          +//
          +// Easily usable on <ul>, <ol>, or <div>.
          +
          +.list-group {
          +  // No need to set list-style: none; since .list-group-item is block level
          +  margin-bottom: 20px;
          +  padding-left: 0; // reset padding because ul and ol
          +}
          +
          +
          +// Individual list items
          +//
          +// Use on `li`s or `div`s within the `.list-group` parent.
          +
          +.list-group-item {
          +  position: relative;
          +  display: block;
          +  padding: 10px 15px;
          +  // Place the border on the list items and negative margin up for better styling
          +  margin-bottom: -1px;
          +  background-color: $list-group-bg;
          +  border: 1px solid $list-group-border;
          +
          +  // Round the first and last items
          +  &:first-child {
          +    @include border-top-radius($list-group-border-radius);
          +  }
          +  &:last-child {
          +    margin-bottom: 0;
          +    @include border-bottom-radius($list-group-border-radius);
          +  }
          +}
          +
          +
          +// Interactive list items
          +//
          +// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
          +// Includes an extra `.active` modifier class for showing selected items.
          +
          +a.list-group-item,
          +button.list-group-item {
          +  color: $list-group-link-color;
          +
          +  .list-group-item-heading {
          +    color: $list-group-link-heading-color;
          +  }
          +
          +  // Hover state
          +  &:hover,
          +  &:focus {
          +    text-decoration: none;
          +    color: $list-group-link-hover-color;
          +    background-color: $list-group-hover-bg;
          +  }
          +}
          +
          +button.list-group-item {
          +  width: 100%;
          +  text-align: left;
          +}
          +
          +.list-group-item {
          +  // Disabled state
          +  &.disabled,
          +  &.disabled:hover,
          +  &.disabled:focus {
          +    background-color: $list-group-disabled-bg;
          +    color: $list-group-disabled-color;
          +    cursor: $cursor-disabled;
          +
          +    // Force color to inherit for custom content
          +    .list-group-item-heading {
          +      color: inherit;
          +    }
          +    .list-group-item-text {
          +      color: $list-group-disabled-text-color;
          +    }
          +  }
          +
          +  // Active class on item itself, not parent
          +  &.active,
          +  &.active:hover,
          +  &.active:focus {
          +    z-index: 2; // Place active items above their siblings for proper border styling
          +    color: $list-group-active-color;
          +    background-color: $list-group-active-bg;
          +    border-color: $list-group-active-border;
          +
          +    // Force color to inherit for custom content
          +    .list-group-item-heading,
          +    .list-group-item-heading > small,
          +    .list-group-item-heading > .small {
          +      color: inherit;
          +    }
          +    .list-group-item-text {
          +      color: $list-group-active-text-color;
          +    }
          +  }
          +}
          +
          +
          +// Contextual variants
          +//
          +// Add modifier classes to change text and background color on individual items.
          +// Organizationally, this must come after the `:hover` states.
          +
          +@include list-group-item-variant(success, $state-success-bg, $state-success-text);
          +@include list-group-item-variant(info, $state-info-bg, $state-info-text);
          +@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
          +@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
          +
          +
          +// Custom content options
          +//
          +// Extra classes for creating well-formatted content within `.list-group-item`s.
          +
          +.list-group-item-heading {
          +  margin-top: 0;
          +  margin-bottom: 5px;
          +}
          +.list-group-item-text {
          +  margin-bottom: 0;
          +  line-height: 1.3;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_media.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_media.scss
          new file mode 100644
          index 0000000..8c835e8
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_media.scss
          @@ -0,0 +1,66 @@
          +.media {
          +  // Proper spacing between instances of .media
          +  margin-top: 15px;
          +
          +  &:first-child {
          +    margin-top: 0;
          +  }
          +}
          +
          +.media,
          +.media-body {
          +  zoom: 1;
          +  overflow: hidden;
          +}
          +
          +.media-body {
          +  width: 10000px;
          +}
          +
          +.media-object {
          +  display: block;
          +
          +  // Fix collapse in webkit from max-width: 100% and display: table-cell.
          +  &.img-thumbnail {
          +    max-width: none;
          +  }
          +}
          +
          +.media-right,
          +.media > .pull-right {
          +  padding-left: 10px;
          +}
          +
          +.media-left,
          +.media > .pull-left {
          +  padding-right: 10px;
          +}
          +
          +.media-left,
          +.media-right,
          +.media-body {
          +  display: table-cell;
          +  vertical-align: top;
          +}
          +
          +.media-middle {
          +  vertical-align: middle;
          +}
          +
          +.media-bottom {
          +  vertical-align: bottom;
          +}
          +
          +// Reset margins on headings for tighter default spacing
          +.media-heading {
          +  margin-top: 0;
          +  margin-bottom: 5px;
          +}
          +
          +// Media list variation
          +//
          +// Undo default ul/ol styles
          +.media-list {
          +  padding-left: 0;
          +  list-style: none;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_mixins.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_mixins.scss
          new file mode 100644
          index 0000000..78cd5aa
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_mixins.scss
          @@ -0,0 +1,40 @@
          +// Mixins
          +// --------------------------------------------------
          +
          +// Utilities
          +@import "mixins/hide-text";
          +@import "mixins/opacity";
          +@import "mixins/image";
          +@import "mixins/labels";
          +@import "mixins/reset-filter";
          +@import "mixins/resize";
          +@import "mixins/responsive-visibility";
          +@import "mixins/size";
          +@import "mixins/tab-focus";
          +@import "mixins/reset-text";
          +@import "mixins/text-emphasis";
          +@import "mixins/text-overflow";
          +@import "mixins/vendor-prefixes";
          +
          +// Components
          +@import "mixins/alerts";
          +@import "mixins/buttons";
          +@import "mixins/panels";
          +@import "mixins/pagination";
          +@import "mixins/list-group";
          +@import "mixins/nav-divider";
          +@import "mixins/forms";
          +@import "mixins/progress-bar";
          +@import "mixins/table-row";
          +
          +// Skins
          +@import "mixins/background-variant";
          +@import "mixins/border-radius";
          +@import "mixins/gradients";
          +
          +// Layout
          +@import "mixins/clearfix";
          +@import "mixins/center-block";
          +@import "mixins/nav-vertical-align";
          +@import "mixins/grid-framework";
          +@import "mixins/grid";
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_modals.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_modals.scss
          new file mode 100644
          index 0000000..823870f
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_modals.scss
          @@ -0,0 +1,150 @@
          +//
          +// Modals
          +// --------------------------------------------------
          +
          +// .modal-open      - body class for killing the scroll
          +// .modal           - container to scroll within
          +// .modal-dialog    - positioning shell for the actual modal
          +// .modal-content   - actual modal w/ bg and corners and shit
          +
          +// Kill the scroll on the body
          +.modal-open {
          +  overflow: hidden;
          +}
          +
          +// Container that the modal scrolls within
          +.modal {
          +  display: none;
          +  overflow: hidden;
          +  position: fixed;
          +  top: 0;
          +  right: 0;
          +  bottom: 0;
          +  left: 0;
          +  z-index: $zindex-modal;
          +  -webkit-overflow-scrolling: touch;
          +
          +  // Prevent Chrome on Windows from adding a focus outline. For details, see
          +  // https://github.com/twbs/bootstrap/pull/10951.
          +  outline: 0;
          +
          +  // When fading in the modal, animate it to slide down
          +  &.fade .modal-dialog {
          +    @include translate(0, -25%);
          +    @include transition-transform(0.3s ease-out);
          +  }
          +  &.in .modal-dialog { @include translate(0, 0) }
          +}
          +.modal-open .modal {
          +  overflow-x: hidden;
          +  overflow-y: auto;
          +}
          +
          +// Shell div to position the modal with bottom padding
          +.modal-dialog {
          +  position: relative;
          +  width: auto;
          +  margin: 10px;
          +}
          +
          +// Actual modal
          +.modal-content {
          +  position: relative;
          +  background-color: $modal-content-bg;
          +  border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
          +  border: 1px solid $modal-content-border-color;
          +  border-radius: $border-radius-large;
          +  @include box-shadow(0 3px 9px rgba(0,0,0,.5));
          +  background-clip: padding-box;
          +  // Remove focus outline from opened modal
          +  outline: 0;
          +}
          +
          +// Modal background
          +.modal-backdrop {
          +  position: fixed;
          +  top: 0;
          +  right: 0;
          +  bottom: 0;
          +  left: 0;
          +  z-index: $zindex-modal-background;
          +  background-color: $modal-backdrop-bg;
          +  // Fade for backdrop
          +  &.fade { @include opacity(0); }
          +  &.in { @include opacity($modal-backdrop-opacity); }
          +}
          +
          +// Modal header
          +// Top section of the modal w/ title and dismiss
          +.modal-header {
          +  padding: $modal-title-padding;
          +  border-bottom: 1px solid $modal-header-border-color;
          +  @include clearfix;
          +}
          +// Close icon
          +.modal-header .close {
          +  margin-top: -2px;
          +}
          +
          +// Title text within header
          +.modal-title {
          +  margin: 0;
          +  line-height: $modal-title-line-height;
          +}
          +
          +// Modal body
          +// Where all modal content resides (sibling of .modal-header and .modal-footer)
          +.modal-body {
          +  position: relative;
          +  padding: $modal-inner-padding;
          +}
          +
          +// Footer (for actions)
          +.modal-footer {
          +  padding: $modal-inner-padding;
          +  text-align: right; // right align buttons
          +  border-top: 1px solid $modal-footer-border-color;
          +  @include clearfix; // clear it in case folks use .pull-* classes on buttons
          +
          +  // Properly space out buttons
          +  .btn + .btn {
          +    margin-left: 5px;
          +    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
          +  }
          +  // but override that for button groups
          +  .btn-group .btn + .btn {
          +    margin-left: -1px;
          +  }
          +  // and override it for block buttons as well
          +  .btn-block + .btn-block {
          +    margin-left: 0;
          +  }
          +}
          +
          +// Measure scrollbar width for padding body during modal show/hide
          +.modal-scrollbar-measure {
          +  position: absolute;
          +  top: -9999px;
          +  width: 50px;
          +  height: 50px;
          +  overflow: scroll;
          +}
          +
          +// Scale up the modal
          +@media (min-width: $screen-sm-min) {
          +  // Automatically set modal's width for larger viewports
          +  .modal-dialog {
          +    width: $modal-md;
          +    margin: 30px auto;
          +  }
          +  .modal-content {
          +    @include box-shadow(0 5px 15px rgba(0,0,0,.5));
          +  }
          +
          +  // Modal sizes
          +  .modal-sm { width: $modal-sm; }
          +}
          +
          +@media (min-width: $screen-md-min) {
          +  .modal-lg { width: $modal-lg; }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_navbar.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_navbar.scss
          new file mode 100644
          index 0000000..11e5c01
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_navbar.scss
          @@ -0,0 +1,662 @@
          +//
          +// Navbars
          +// --------------------------------------------------
          +
          +
          +// Wrapper and base class
          +//
          +// Provide a static navbar from which we expand to create full-width, fixed, and
          +// other navbar variations.
          +
          +.navbar {
          +  position: relative;
          +  min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
          +  margin-bottom: $navbar-margin-bottom;
          +  border: 1px solid transparent;
          +
          +  // Prevent floats from breaking the navbar
          +  @include clearfix;
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    border-radius: $navbar-border-radius;
          +  }
          +}
          +
          +
          +// Navbar heading
          +//
          +// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
          +// styling of responsive aspects.
          +
          +.navbar-header {
          +  @include clearfix;
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    float: left;
          +  }
          +}
          +
          +
          +// Navbar collapse (body)
          +//
          +// Group your navbar content into this for easy collapsing and expanding across
          +// various device sizes. By default, this content is collapsed when <768px, but
          +// will expand past that for a horizontal display.
          +//
          +// To start (on mobile devices) the navbar links, forms, and buttons are stacked
          +// vertically and include a `max-height` to overflow in case you have too much
          +// content for the user's viewport.
          +
          +.navbar-collapse {
          +  overflow-x: visible;
          +  padding-right: $navbar-padding-horizontal;
          +  padding-left:  $navbar-padding-horizontal;
          +  border-top: 1px solid transparent;
          +  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
          +  @include clearfix;
          +  -webkit-overflow-scrolling: touch;
          +
          +  &.in {
          +    overflow-y: auto;
          +  }
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    width: auto;
          +    border-top: 0;
          +    box-shadow: none;
          +
          +    &.collapse {
          +      display: block !important;
          +      height: auto !important;
          +      padding-bottom: 0; // Override default setting
          +      overflow: visible !important;
          +    }
          +
          +    &.in {
          +      overflow-y: visible;
          +    }
          +
          +    // Undo the collapse side padding for navbars with containers to ensure
          +    // alignment of right-aligned contents.
          +    .navbar-fixed-top &,
          +    .navbar-static-top &,
          +    .navbar-fixed-bottom & {
          +      padding-left: 0;
          +      padding-right: 0;
          +    }
          +  }
          +}
          +
          +.navbar-fixed-top,
          +.navbar-fixed-bottom {
          +  .navbar-collapse {
          +    max-height: $navbar-collapse-max-height;
          +
          +    @media (max-device-width: $screen-xs-min) and (orientation: landscape) {
          +      max-height: 200px;
          +    }
          +  }
          +}
          +
          +
          +// Both navbar header and collapse
          +//
          +// When a container is present, change the behavior of the header and collapse.
          +
          +.container,
          +.container-fluid {
          +  > .navbar-header,
          +  > .navbar-collapse {
          +    margin-right: -$navbar-padding-horizontal;
          +    margin-left:  -$navbar-padding-horizontal;
          +
          +    @media (min-width: $grid-float-breakpoint) {
          +      margin-right: 0;
          +      margin-left:  0;
          +    }
          +  }
          +}
          +
          +
          +//
          +// Navbar alignment options
          +//
          +// Display the navbar across the entirety of the page or fixed it to the top or
          +// bottom of the page.
          +
          +// Static top (unfixed, but 100% wide) navbar
          +.navbar-static-top {
          +  z-index: $zindex-navbar;
          +  border-width: 0 0 1px;
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    border-radius: 0;
          +  }
          +}
          +
          +// Fix the top/bottom navbars when screen real estate supports it
          +.navbar-fixed-top,
          +.navbar-fixed-bottom {
          +  position: fixed;
          +  right: 0;
          +  left: 0;
          +  z-index: $zindex-navbar-fixed;
          +
          +  // Undo the rounded corners
          +  @media (min-width: $grid-float-breakpoint) {
          +    border-radius: 0;
          +  }
          +}
          +.navbar-fixed-top {
          +  top: 0;
          +  border-width: 0 0 1px;
          +}
          +.navbar-fixed-bottom {
          +  bottom: 0;
          +  margin-bottom: 0; // override .navbar defaults
          +  border-width: 1px 0 0;
          +}
          +
          +
          +// Brand/project name
          +
          +.navbar-brand {
          +  float: left;
          +  padding: $navbar-padding-vertical $navbar-padding-horizontal;
          +  font-size: $font-size-large;
          +  line-height: $line-height-computed;
          +  height: $navbar-height;
          +
          +  &:hover,
          +  &:focus {
          +    text-decoration: none;
          +  }
          +
          +  > img {
          +    display: block;
          +  }
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    .navbar > .container &,
          +    .navbar > .container-fluid & {
          +      margin-left: -$navbar-padding-horizontal;
          +    }
          +  }
          +}
          +
          +
          +// Navbar toggle
          +//
          +// Custom button for toggling the `.navbar-collapse`, powered by the collapse
          +// JavaScript plugin.
          +
          +.navbar-toggle {
          +  position: relative;
          +  float: right;
          +  margin-right: $navbar-padding-horizontal;
          +  padding: 9px 10px;
          +  @include navbar-vertical-align(34px);
          +  background-color: transparent;
          +  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
          +  border: 1px solid transparent;
          +  border-radius: $border-radius-base;
          +
          +  // We remove the `outline` here, but later compensate by attaching `:hover`
          +  // styles to `:focus`.
          +  &:focus {
          +    outline: 0;
          +  }
          +
          +  // Bars
          +  .icon-bar {
          +    display: block;
          +    width: 22px;
          +    height: 2px;
          +    border-radius: 1px;
          +  }
          +  .icon-bar + .icon-bar {
          +    margin-top: 4px;
          +  }
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    display: none;
          +  }
          +}
          +
          +
          +// Navbar nav links
          +//
          +// Builds on top of the `.nav` components with its own modifier class to make
          +// the nav the full height of the horizontal nav (above 768px).
          +
          +.navbar-nav {
          +  margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
          +
          +  > li > a {
          +    padding-top:    10px;
          +    padding-bottom: 10px;
          +    line-height: $line-height-computed;
          +  }
          +
          +  @media (max-width: $grid-float-breakpoint-max) {
          +    // Dropdowns get custom display when collapsed
          +    .open .dropdown-menu {
          +      position: static;
          +      float: none;
          +      width: auto;
          +      margin-top: 0;
          +      background-color: transparent;
          +      border: 0;
          +      box-shadow: none;
          +      > li > a,
          +      .dropdown-header {
          +        padding: 5px 15px 5px 25px;
          +      }
          +      > li > a {
          +        line-height: $line-height-computed;
          +        &:hover,
          +        &:focus {
          +          background-image: none;
          +        }
          +      }
          +    }
          +  }
          +
          +  // Uncollapse the nav
          +  @media (min-width: $grid-float-breakpoint) {
          +    float: left;
          +    margin: 0;
          +
          +    > li {
          +      float: left;
          +      > a {
          +        padding-top:    $navbar-padding-vertical;
          +        padding-bottom: $navbar-padding-vertical;
          +      }
          +    }
          +  }
          +}
          +
          +
          +// Navbar form
          +//
          +// Extension of the `.form-inline` with some extra flavor for optimum display in
          +// our navbars.
          +
          +.navbar-form {
          +  margin-left: -$navbar-padding-horizontal;
          +  margin-right: -$navbar-padding-horizontal;
          +  padding: 10px $navbar-padding-horizontal;
          +  border-top: 1px solid transparent;
          +  border-bottom: 1px solid transparent;
          +  $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
          +  @include box-shadow($shadow);
          +
          +  // Mixin behavior for optimum display
          +  @include form-inline;
          +
          +  .form-group {
          +    @media (max-width: $grid-float-breakpoint-max) {
          +      margin-bottom: 5px;
          +
          +      &:last-child {
          +        margin-bottom: 0;
          +      }
          +    }
          +  }
          +
          +  // Vertically center in expanded, horizontal navbar
          +  @include navbar-vertical-align($input-height-base);
          +
          +  // Undo 100% width for pull classes
          +  @media (min-width: $grid-float-breakpoint) {
          +    width: auto;
          +    border: 0;
          +    margin-left: 0;
          +    margin-right: 0;
          +    padding-top: 0;
          +    padding-bottom: 0;
          +    @include box-shadow(none);
          +  }
          +}
          +
          +
          +// Dropdown menus
          +
          +// Menu position and menu carets
          +.navbar-nav > li > .dropdown-menu {
          +  margin-top: 0;
          +  @include border-top-radius(0);
          +}
          +// Menu position and menu caret support for dropups via extra dropup class
          +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
          +  margin-bottom: 0;
          +  @include border-top-radius($navbar-border-radius);
          +  @include border-bottom-radius(0);
          +}
          +
          +
          +// Buttons in navbars
          +//
          +// Vertically center a button within a navbar (when *not* in a form).
          +
          +.navbar-btn {
          +  @include navbar-vertical-align($input-height-base);
          +
          +  &.btn-sm {
          +    @include navbar-vertical-align($input-height-small);
          +  }
          +  &.btn-xs {
          +    @include navbar-vertical-align(22);
          +  }
          +}
          +
          +
          +// Text in navbars
          +//
          +// Add a class to make any element properly align itself vertically within the navbars.
          +
          +.navbar-text {
          +  @include navbar-vertical-align($line-height-computed);
          +
          +  @media (min-width: $grid-float-breakpoint) {
          +    float: left;
          +    margin-left: $navbar-padding-horizontal;
          +    margin-right: $navbar-padding-horizontal;
          +  }
          +}
          +
          +
          +// Component alignment
          +//
          +// Repurpose the pull utilities as their own navbar utilities to avoid specificity
          +// issues with parents and chaining. Only do this when the navbar is uncollapsed
          +// though so that navbar contents properly stack and align in mobile.
          +//
          +// Declared after the navbar components to ensure more specificity on the margins.
          +
          +@media (min-width: $grid-float-breakpoint) {
          +  .navbar-left {
          +    float: left !important;
          +  }
          +  .navbar-right {
          +    float: right !important;
          +  margin-right: -$navbar-padding-horizontal;
          +
          +    ~ .navbar-right {
          +      margin-right: 0;
          +    }
          +  }
          +}
          +
          +
          +// Alternate navbars
          +// --------------------------------------------------
          +
          +// Default navbar
          +.navbar-default {
          +  background-color: $navbar-default-bg;
          +  border-color: $navbar-default-border;
          +
          +  .navbar-brand {
          +    color: $navbar-default-brand-color;
          +    &:hover,
          +    &:focus {
          +      color: $navbar-default-brand-hover-color;
          +      background-color: $navbar-default-brand-hover-bg;
          +    }
          +  }
          +
          +  .navbar-text {
          +    color: $navbar-default-color;
          +  }
          +
          +  .navbar-nav {
          +    > li > a {
          +      color: $navbar-default-link-color;
          +
          +      &:hover,
          +      &:focus {
          +        color: $navbar-default-link-hover-color;
          +        background-color: $navbar-default-link-hover-bg;
          +      }
          +    }
          +    > .active > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $navbar-default-link-active-color;
          +        background-color: $navbar-default-link-active-bg;
          +      }
          +    }
          +    > .disabled > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $navbar-default-link-disabled-color;
          +        background-color: $navbar-default-link-disabled-bg;
          +      }
          +    }
          +  }
          +
          +  .navbar-toggle {
          +    border-color: $navbar-default-toggle-border-color;
          +    &:hover,
          +    &:focus {
          +      background-color: $navbar-default-toggle-hover-bg;
          +    }
          +    .icon-bar {
          +      background-color: $navbar-default-toggle-icon-bar-bg;
          +    }
          +  }
          +
          +  .navbar-collapse,
          +  .navbar-form {
          +    border-color: $navbar-default-border;
          +  }
          +
          +  // Dropdown menu items
          +  .navbar-nav {
          +    // Remove background color from open dropdown
          +    > .open > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        background-color: $navbar-default-link-active-bg;
          +        color: $navbar-default-link-active-color;
          +      }
          +    }
          +
          +    @media (max-width: $grid-float-breakpoint-max) {
          +      // Dropdowns get custom display when collapsed
          +      .open .dropdown-menu {
          +        > li > a {
          +          color: $navbar-default-link-color;
          +          &:hover,
          +          &:focus {
          +            color: $navbar-default-link-hover-color;
          +            background-color: $navbar-default-link-hover-bg;
          +          }
          +        }
          +        > .active > a {
          +          &,
          +          &:hover,
          +          &:focus {
          +            color: $navbar-default-link-active-color;
          +            background-color: $navbar-default-link-active-bg;
          +          }
          +        }
          +        > .disabled > a {
          +          &,
          +          &:hover,
          +          &:focus {
          +            color: $navbar-default-link-disabled-color;
          +            background-color: $navbar-default-link-disabled-bg;
          +          }
          +        }
          +      }
          +    }
          +  }
          +
          +
          +  // Links in navbars
          +  //
          +  // Add a class to ensure links outside the navbar nav are colored correctly.
          +
          +  .navbar-link {
          +    color: $navbar-default-link-color;
          +    &:hover {
          +      color: $navbar-default-link-hover-color;
          +    }
          +  }
          +
          +  .btn-link {
          +    color: $navbar-default-link-color;
          +    &:hover,
          +    &:focus {
          +      color: $navbar-default-link-hover-color;
          +    }
          +    &[disabled],
          +    fieldset[disabled] & {
          +      &:hover,
          +      &:focus {
          +        color: $navbar-default-link-disabled-color;
          +      }
          +    }
          +  }
          +}
          +
          +// Inverse navbar
          +
          +.navbar-inverse {
          +  background-color: $navbar-inverse-bg;
          +  border-color: $navbar-inverse-border;
          +
          +  .navbar-brand {
          +    color: $navbar-inverse-brand-color;
          +    &:hover,
          +    &:focus {
          +      color: $navbar-inverse-brand-hover-color;
          +      background-color: $navbar-inverse-brand-hover-bg;
          +    }
          +  }
          +
          +  .navbar-text {
          +    color: $navbar-inverse-color;
          +  }
          +
          +  .navbar-nav {
          +    > li > a {
          +      color: $navbar-inverse-link-color;
          +
          +      &:hover,
          +      &:focus {
          +        color: $navbar-inverse-link-hover-color;
          +        background-color: $navbar-inverse-link-hover-bg;
          +      }
          +    }
          +    > .active > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $navbar-inverse-link-active-color;
          +        background-color: $navbar-inverse-link-active-bg;
          +      }
          +    }
          +    > .disabled > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $navbar-inverse-link-disabled-color;
          +        background-color: $navbar-inverse-link-disabled-bg;
          +      }
          +    }
          +  }
          +
          +  // Darken the responsive nav toggle
          +  .navbar-toggle {
          +    border-color: $navbar-inverse-toggle-border-color;
          +    &:hover,
          +    &:focus {
          +      background-color: $navbar-inverse-toggle-hover-bg;
          +    }
          +    .icon-bar {
          +      background-color: $navbar-inverse-toggle-icon-bar-bg;
          +    }
          +  }
          +
          +  .navbar-collapse,
          +  .navbar-form {
          +    border-color: darken($navbar-inverse-bg, 7%);
          +  }
          +
          +  // Dropdowns
          +  .navbar-nav {
          +    > .open > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        background-color: $navbar-inverse-link-active-bg;
          +        color: $navbar-inverse-link-active-color;
          +      }
          +    }
          +
          +    @media (max-width: $grid-float-breakpoint-max) {
          +      // Dropdowns get custom display
          +      .open .dropdown-menu {
          +        > .dropdown-header {
          +          border-color: $navbar-inverse-border;
          +        }
          +        .divider {
          +          background-color: $navbar-inverse-border;
          +        }
          +        > li > a {
          +          color: $navbar-inverse-link-color;
          +          &:hover,
          +          &:focus {
          +            color: $navbar-inverse-link-hover-color;
          +            background-color: $navbar-inverse-link-hover-bg;
          +          }
          +        }
          +        > .active > a {
          +          &,
          +          &:hover,
          +          &:focus {
          +            color: $navbar-inverse-link-active-color;
          +            background-color: $navbar-inverse-link-active-bg;
          +          }
          +        }
          +        > .disabled > a {
          +          &,
          +          &:hover,
          +          &:focus {
          +            color: $navbar-inverse-link-disabled-color;
          +            background-color: $navbar-inverse-link-disabled-bg;
          +          }
          +        }
          +      }
          +    }
          +  }
          +
          +  .navbar-link {
          +    color: $navbar-inverse-link-color;
          +    &:hover {
          +      color: $navbar-inverse-link-hover-color;
          +    }
          +  }
          +
          +  .btn-link {
          +    color: $navbar-inverse-link-color;
          +    &:hover,
          +    &:focus {
          +      color: $navbar-inverse-link-hover-color;
          +    }
          +    &[disabled],
          +    fieldset[disabled] & {
          +      &:hover,
          +      &:focus {
          +        color: $navbar-inverse-link-disabled-color;
          +      }
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_navs.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_navs.scss
          new file mode 100644
          index 0000000..9d369f3
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_navs.scss
          @@ -0,0 +1,242 @@
          +//
          +// Navs
          +// --------------------------------------------------
          +
          +
          +// Base class
          +// --------------------------------------------------
          +
          +.nav {
          +  margin-bottom: 0;
          +  padding-left: 0; // Override default ul/ol
          +  list-style: none;
          +  @include clearfix;
          +
          +  > li {
          +    position: relative;
          +    display: block;
          +
          +    > a {
          +      position: relative;
          +      display: block;
          +      padding: $nav-link-padding;
          +      &:hover,
          +      &:focus {
          +        text-decoration: none;
          +        background-color: $nav-link-hover-bg;
          +      }
          +    }
          +
          +    // Disabled state sets text to gray and nukes hover/tab effects
          +    &.disabled > a {
          +      color: $nav-disabled-link-color;
          +
          +      &:hover,
          +      &:focus {
          +        color: $nav-disabled-link-hover-color;
          +        text-decoration: none;
          +        background-color: transparent;
          +        cursor: $cursor-disabled;
          +      }
          +    }
          +  }
          +
          +  // Open dropdowns
          +  .open > a {
          +    &,
          +    &:hover,
          +    &:focus {
          +      background-color: $nav-link-hover-bg;
          +      border-color: $link-color;
          +    }
          +  }
          +
          +  // Nav dividers (deprecated with v3.0.1)
          +  //
          +  // This should have been removed in v3 with the dropping of `.nav-list`, but
          +  // we missed it. We don't currently support this anywhere, but in the interest
          +  // of maintaining backward compatibility in case you use it, it's deprecated.
          +  .nav-divider {
          +    @include nav-divider;
          +  }
          +
          +  // Prevent IE8 from misplacing imgs
          +  //
          +  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
          +  > li > a > img {
          +    max-width: none;
          +  }
          +}
          +
          +
          +// Tabs
          +// -------------------------
          +
          +// Give the tabs something to sit on
          +.nav-tabs {
          +  border-bottom: 1px solid $nav-tabs-border-color;
          +  > li {
          +    float: left;
          +    // Make the list-items overlay the bottom border
          +    margin-bottom: -1px;
          +
          +    // Actual tabs (as links)
          +    > a {
          +      margin-right: 2px;
          +      line-height: $line-height-base;
          +      border: 1px solid transparent;
          +      border-radius: $border-radius-base $border-radius-base 0 0;
          +      &:hover {
          +        border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
          +      }
          +    }
          +
          +    // Active state, and its :hover to override normal :hover
          +    &.active > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $nav-tabs-active-link-hover-color;
          +        background-color: $nav-tabs-active-link-hover-bg;
          +        border: 1px solid $nav-tabs-active-link-hover-border-color;
          +        border-bottom-color: transparent;
          +        cursor: default;
          +      }
          +    }
          +  }
          +  // pulling this in mainly for less shorthand
          +  &.nav-justified {
          +    @extend .nav-justified;
          +    @extend .nav-tabs-justified;
          +  }
          +}
          +
          +
          +// Pills
          +// -------------------------
          +.nav-pills {
          +  > li {
          +    float: left;
          +
          +    // Links rendered as pills
          +    > a {
          +      border-radius: $nav-pills-border-radius;
          +    }
          +    + li {
          +      margin-left: 2px;
          +    }
          +
          +    // Active state
          +    &.active > a {
          +      &,
          +      &:hover,
          +      &:focus {
          +        color: $nav-pills-active-link-hover-color;
          +        background-color: $nav-pills-active-link-hover-bg;
          +      }
          +    }
          +  }
          +}
          +
          +
          +// Stacked pills
          +.nav-stacked {
          +  > li {
          +    float: none;
          +    + li {
          +      margin-top: 2px;
          +      margin-left: 0; // no need for this gap between nav items
          +    }
          +  }
          +}
          +
          +
          +// Nav variations
          +// --------------------------------------------------
          +
          +// Justified nav links
          +// -------------------------
          +
          +.nav-justified {
          +  width: 100%;
          +
          +  > li {
          +    float: none;
          +    > a {
          +      text-align: center;
          +      margin-bottom: 5px;
          +    }
          +  }
          +
          +  > .dropdown .dropdown-menu {
          +    top: auto;
          +    left: auto;
          +  }
          +
          +  @media (min-width: $screen-sm-min) {
          +    > li {
          +      display: table-cell;
          +      width: 1%;
          +      > a {
          +        margin-bottom: 0;
          +      }
          +    }
          +  }
          +}
          +
          +// Move borders to anchors instead of bottom of list
          +//
          +// Mixin for adding on top the shared `.nav-justified` styles for our tabs
          +.nav-tabs-justified {
          +  border-bottom: 0;
          +
          +  > li > a {
          +    // Override margin from .nav-tabs
          +    margin-right: 0;
          +    border-radius: $border-radius-base;
          +  }
          +
          +  > .active > a,
          +  > .active > a:hover,
          +  > .active > a:focus {
          +    border: 1px solid $nav-tabs-justified-link-border-color;
          +  }
          +
          +  @media (min-width: $screen-sm-min) {
          +    > li > a {
          +      border-bottom: 1px solid $nav-tabs-justified-link-border-color;
          +      border-radius: $border-radius-base $border-radius-base 0 0;
          +    }
          +    > .active > a,
          +    > .active > a:hover,
          +    > .active > a:focus {
          +      border-bottom-color: $nav-tabs-justified-active-link-border-color;
          +    }
          +  }
          +}
          +
          +
          +// Tabbable tabs
          +// -------------------------
          +
          +// Hide tabbable panes to start, show them when `.active`
          +.tab-content {
          +  > .tab-pane {
          +    display: none;
          +  }
          +  > .active {
          +    display: block;
          +  }
          +}
          +
          +
          +// Dropdowns
          +// -------------------------
          +
          +// Specific dropdowns
          +.nav-tabs .dropdown-menu {
          +  // make dropdown border overlap tab border
          +  margin-top: -1px;
          +  // Remove the top rounded corners here since there is a hard edge above the menu
          +  @include border-top-radius(0);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_normalize.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_normalize.scss
          new file mode 100644
          index 0000000..9dddf73
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_normalize.scss
          @@ -0,0 +1,424 @@
          +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
          +
          +//
          +// 1. Set default font family to sans-serif.
          +// 2. Prevent iOS and IE text size adjust after device orientation change,
          +//    without disabling user zoom.
          +//
          +
          +html {
          +  font-family: sans-serif; // 1
          +  -ms-text-size-adjust: 100%; // 2
          +  -webkit-text-size-adjust: 100%; // 2
          +}
          +
          +//
          +// Remove default margin.
          +//
          +
          +body {
          +  margin: 0;
          +}
          +
          +// HTML5 display definitions
          +// ==========================================================================
          +
          +//
          +// Correct `block` display not defined for any HTML5 element in IE 8/9.
          +// Correct `block` display not defined for `details` or `summary` in IE 10/11
          +// and Firefox.
          +// Correct `block` display not defined for `main` in IE 11.
          +//
          +
          +article,
          +aside,
          +details,
          +figcaption,
          +figure,
          +footer,
          +header,
          +hgroup,
          +main,
          +menu,
          +nav,
          +section,
          +summary {
          +  display: block;
          +}
          +
          +//
          +// 1. Correct `inline-block` display not defined in IE 8/9.
          +// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
          +//
          +
          +audio,
          +canvas,
          +progress,
          +video {
          +  display: inline-block; // 1
          +  vertical-align: baseline; // 2
          +}
          +
          +//
          +// Prevent modern browsers from displaying `audio` without controls.
          +// Remove excess height in iOS 5 devices.
          +//
          +
          +audio:not([controls]) {
          +  display: none;
          +  height: 0;
          +}
          +
          +//
          +// Address `[hidden]` styling not present in IE 8/9/10.
          +// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
          +//
          +
          +[hidden],
          +template {
          +  display: none;
          +}
          +
          +// Links
          +// ==========================================================================
          +
          +//
          +// Remove the gray background color from active links in IE 10.
          +//
          +
          +a {
          +  background-color: transparent;
          +}
          +
          +//
          +// Improve readability of focused elements when they are also in an
          +// active/hover state.
          +//
          +
          +a:active,
          +a:hover {
          +  outline: 0;
          +}
          +
          +// Text-level semantics
          +// ==========================================================================
          +
          +//
          +// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
          +//
          +
          +abbr[title] {
          +  border-bottom: 1px dotted;
          +}
          +
          +//
          +// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
          +//
          +
          +b,
          +strong {
          +  font-weight: bold;
          +}
          +
          +//
          +// Address styling not present in Safari and Chrome.
          +//
          +
          +dfn {
          +  font-style: italic;
          +}
          +
          +//
          +// Address variable `h1` font-size and margin within `section` and `article`
          +// contexts in Firefox 4+, Safari, and Chrome.
          +//
          +
          +h1 {
          +  font-size: 2em;
          +  margin: 0.67em 0;
          +}
          +
          +//
          +// Address styling not present in IE 8/9.
          +//
          +
          +mark {
          +  background: #ff0;
          +  color: #000;
          +}
          +
          +//
          +// Address inconsistent and variable font size in all browsers.
          +//
          +
          +small {
          +  font-size: 80%;
          +}
          +
          +//
          +// Prevent `sub` and `sup` affecting `line-height` in all browsers.
          +//
          +
          +sub,
          +sup {
          +  font-size: 75%;
          +  line-height: 0;
          +  position: relative;
          +  vertical-align: baseline;
          +}
          +
          +sup {
          +  top: -0.5em;
          +}
          +
          +sub {
          +  bottom: -0.25em;
          +}
          +
          +// Embedded content
          +// ==========================================================================
          +
          +//
          +// Remove border when inside `a` element in IE 8/9/10.
          +//
          +
          +img {
          +  border: 0;
          +}
          +
          +//
          +// Correct overflow not hidden in IE 9/10/11.
          +//
          +
          +svg:not(:root) {
          +  overflow: hidden;
          +}
          +
          +// Grouping content
          +// ==========================================================================
          +
          +//
          +// Address margin not present in IE 8/9 and Safari.
          +//
          +
          +figure {
          +  margin: 1em 40px;
          +}
          +
          +//
          +// Address differences between Firefox and other browsers.
          +//
          +
          +hr {
          +  box-sizing: content-box;
          +  height: 0;
          +}
          +
          +//
          +// Contain overflow in all browsers.
          +//
          +
          +pre {
          +  overflow: auto;
          +}
          +
          +//
          +// Address odd `em`-unit font size rendering in all browsers.
          +//
          +
          +code,
          +kbd,
          +pre,
          +samp {
          +  font-family: monospace, monospace;
          +  font-size: 1em;
          +}
          +
          +// Forms
          +// ==========================================================================
          +
          +//
          +// Known limitation: by default, Chrome and Safari on OS X allow very limited
          +// styling of `select`, unless a `border` property is set.
          +//
          +
          +//
          +// 1. Correct color not being inherited.
          +//    Known issue: affects color of disabled elements.
          +// 2. Correct font properties not being inherited.
          +// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
          +//
          +
          +button,
          +input,
          +optgroup,
          +select,
          +textarea {
          +  color: inherit; // 1
          +  font: inherit; // 2
          +  margin: 0; // 3
          +}
          +
          +//
          +// Address `overflow` set to `hidden` in IE 8/9/10/11.
          +//
          +
          +button {
          +  overflow: visible;
          +}
          +
          +//
          +// Address inconsistent `text-transform` inheritance for `button` and `select`.
          +// All other form control elements do not inherit `text-transform` values.
          +// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
          +// Correct `select` style inheritance in Firefox.
          +//
          +
          +button,
          +select {
          +  text-transform: none;
          +}
          +
          +//
          +// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
          +//    and `video` controls.
          +// 2. Correct inability to style clickable `input` types in iOS.
          +// 3. Improve usability and consistency of cursor style between image-type
          +//    `input` and others.
          +//
          +
          +button,
          +html input[type="button"], // 1
          +input[type="reset"],
          +input[type="submit"] {
          +  -webkit-appearance: button; // 2
          +  cursor: pointer; // 3
          +}
          +
          +//
          +// Re-set default cursor for disabled elements.
          +//
          +
          +button[disabled],
          +html input[disabled] {
          +  cursor: default;
          +}
          +
          +//
          +// Remove inner padding and border in Firefox 4+.
          +//
          +
          +button::-moz-focus-inner,
          +input::-moz-focus-inner {
          +  border: 0;
          +  padding: 0;
          +}
          +
          +//
          +// Address Firefox 4+ setting `line-height` on `input` using `!important` in
          +// the UA stylesheet.
          +//
          +
          +input {
          +  line-height: normal;
          +}
          +
          +//
          +// It's recommended that you don't attempt to style these elements.
          +// Firefox's implementation doesn't respect box-sizing, padding, or width.
          +//
          +// 1. Address box sizing set to `content-box` in IE 8/9/10.
          +// 2. Remove excess padding in IE 8/9/10.
          +//
          +
          +input[type="checkbox"],
          +input[type="radio"] {
          +  box-sizing: border-box; // 1
          +  padding: 0; // 2
          +}
          +
          +//
          +// Fix the cursor style for Chrome's increment/decrement buttons. For certain
          +// `font-size` values of the `input`, it causes the cursor style of the
          +// decrement button to change from `default` to `text`.
          +//
          +
          +input[type="number"]::-webkit-inner-spin-button,
          +input[type="number"]::-webkit-outer-spin-button {
          +  height: auto;
          +}
          +
          +//
          +// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
          +// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
          +//
          +
          +input[type="search"] {
          +  -webkit-appearance: textfield; // 1
          +  box-sizing: content-box; //2
          +}
          +
          +//
          +// Remove inner padding and search cancel button in Safari and Chrome on OS X.
          +// Safari (but not Chrome) clips the cancel button when the search input has
          +// padding (and `textfield` appearance).
          +//
          +
          +input[type="search"]::-webkit-search-cancel-button,
          +input[type="search"]::-webkit-search-decoration {
          +  -webkit-appearance: none;
          +}
          +
          +//
          +// Define consistent border, margin, and padding.
          +//
          +
          +fieldset {
          +  border: 1px solid #c0c0c0;
          +  margin: 0 2px;
          +  padding: 0.35em 0.625em 0.75em;
          +}
          +
          +//
          +// 1. Correct `color` not being inherited in IE 8/9/10/11.
          +// 2. Remove padding so people aren't caught out if they zero out fieldsets.
          +//
          +
          +legend {
          +  border: 0; // 1
          +  padding: 0; // 2
          +}
          +
          +//
          +// Remove default vertical scrollbar in IE 8/9/10/11.
          +//
          +
          +textarea {
          +  overflow: auto;
          +}
          +
          +//
          +// Don't inherit the `font-weight` (applied by a rule above).
          +// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
          +//
          +
          +optgroup {
          +  font-weight: bold;
          +}
          +
          +// Tables
          +// ==========================================================================
          +
          +//
          +// Remove most spacing between table cells.
          +//
          +
          +table {
          +  border-collapse: collapse;
          +  border-spacing: 0;
          +}
          +
          +td,
          +th {
          +  padding: 0;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_pager.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_pager.scss
          new file mode 100644
          index 0000000..c234217
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_pager.scss
          @@ -0,0 +1,54 @@
          +//
          +// Pager pagination
          +// --------------------------------------------------
          +
          +
          +.pager {
          +  padding-left: 0;
          +  margin: $line-height-computed 0;
          +  list-style: none;
          +  text-align: center;
          +  @include clearfix;
          +  li {
          +    display: inline;
          +    > a,
          +    > span {
          +      display: inline-block;
          +      padding: 5px 14px;
          +      background-color: $pager-bg;
          +      border: 1px solid $pager-border;
          +      border-radius: $pager-border-radius;
          +    }
          +
          +    > a:hover,
          +    > a:focus {
          +      text-decoration: none;
          +      background-color: $pager-hover-bg;
          +    }
          +  }
          +
          +  .next {
          +    > a,
          +    > span {
          +      float: right;
          +    }
          +  }
          +
          +  .previous {
          +    > a,
          +    > span {
          +      float: left;
          +    }
          +  }
          +
          +  .disabled {
          +    > a,
          +    > a:hover,
          +    > a:focus,
          +    > span {
          +      color: $pager-disabled-color;
          +      background-color: $pager-bg;
          +      cursor: $cursor-disabled;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_pagination.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_pagination.scss
          new file mode 100644
          index 0000000..fecfa9c
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_pagination.scss
          @@ -0,0 +1,89 @@
          +//
          +// Pagination (multiple pages)
          +// --------------------------------------------------
          +.pagination {
          +  display: inline-block;
          +  padding-left: 0;
          +  margin: $line-height-computed 0;
          +  border-radius: $border-radius-base;
          +
          +  > li {
          +    display: inline; // Remove list-style and block-level defaults
          +    > a,
          +    > span {
          +      position: relative;
          +      float: left; // Collapse white-space
          +      padding: $padding-base-vertical $padding-base-horizontal;
          +      line-height: $line-height-base;
          +      text-decoration: none;
          +      color: $pagination-color;
          +      background-color: $pagination-bg;
          +      border: 1px solid $pagination-border;
          +      margin-left: -1px;
          +    }
          +    &:first-child {
          +      > a,
          +      > span {
          +        margin-left: 0;
          +        @include border-left-radius($border-radius-base);
          +      }
          +    }
          +    &:last-child {
          +      > a,
          +      > span {
          +        @include border-right-radius($border-radius-base);
          +      }
          +    }
          +  }
          +
          +  > li > a,
          +  > li > span {
          +    &:hover,
          +    &:focus {
          +      z-index: 2;
          +      color: $pagination-hover-color;
          +      background-color: $pagination-hover-bg;
          +      border-color: $pagination-hover-border;
          +    }
          +  }
          +
          +  > .active > a,
          +  > .active > span {
          +    &,
          +    &:hover,
          +    &:focus {
          +      z-index: 3;
          +      color: $pagination-active-color;
          +      background-color: $pagination-active-bg;
          +      border-color: $pagination-active-border;
          +      cursor: default;
          +    }
          +  }
          +
          +  > .disabled {
          +    > span,
          +    > span:hover,
          +    > span:focus,
          +    > a,
          +    > a:hover,
          +    > a:focus {
          +      color: $pagination-disabled-color;
          +      background-color: $pagination-disabled-bg;
          +      border-color: $pagination-disabled-border;
          +      cursor: $cursor-disabled;
          +    }
          +  }
          +}
          +
          +// Sizing
          +// --------------------------------------------------
          +
          +// Large
          +.pagination-lg {
          +  @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
          +}
          +
          +// Small
          +.pagination-sm {
          +  @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_panels.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_panels.scss
          new file mode 100644
          index 0000000..be9410f
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_panels.scss
          @@ -0,0 +1,271 @@
          +//
          +// Panels
          +// --------------------------------------------------
          +
          +
          +// Base class
          +.panel {
          +  margin-bottom: $line-height-computed;
          +  background-color: $panel-bg;
          +  border: 1px solid transparent;
          +  border-radius: $panel-border-radius;
          +  @include box-shadow(0 1px 1px rgba(0,0,0,.05));
          +}
          +
          +// Panel contents
          +.panel-body {
          +  padding: $panel-body-padding;
          +  @include clearfix;
          +}
          +
          +// Optional heading
          +.panel-heading {
          +  padding: $panel-heading-padding;
          +  border-bottom: 1px solid transparent;
          +  @include border-top-radius(($panel-border-radius - 1));
          +
          +  > .dropdown .dropdown-toggle {
          +    color: inherit;
          +  }
          +}
          +
          +// Within heading, strip any `h*` tag of its default margins for spacing.
          +.panel-title {
          +  margin-top: 0;
          +  margin-bottom: 0;
          +  font-size: ceil(($font-size-base * 1.125));
          +  color: inherit;
          +
          +  > a,
          +  > small,
          +  > .small,
          +  > small > a,
          +  > .small > a {
          +    color: inherit;
          +  }
          +}
          +
          +// Optional footer (stays gray in every modifier class)
          +.panel-footer {
          +  padding: $panel-footer-padding;
          +  background-color: $panel-footer-bg;
          +  border-top: 1px solid $panel-inner-border;
          +  @include border-bottom-radius(($panel-border-radius - 1));
          +}
          +
          +
          +// List groups in panels
          +//
          +// By default, space out list group content from panel headings to account for
          +// any kind of custom content between the two.
          +
          +.panel {
          +  > .list-group,
          +  > .panel-collapse > .list-group {
          +    margin-bottom: 0;
          +
          +    .list-group-item {
          +      border-width: 1px 0;
          +      border-radius: 0;
          +    }
          +
          +    // Add border top radius for first one
          +    &:first-child {
          +      .list-group-item:first-child {
          +        border-top: 0;
          +        @include border-top-radius(($panel-border-radius - 1));
          +      }
          +    }
          +
          +    // Add border bottom radius for last one
          +    &:last-child {
          +      .list-group-item:last-child {
          +        border-bottom: 0;
          +        @include border-bottom-radius(($panel-border-radius - 1));
          +      }
          +    }
          +  }
          +  > .panel-heading + .panel-collapse > .list-group {
          +    .list-group-item:first-child {
          +      @include border-top-radius(0);
          +    }
          +  }
          +}
          +// Collapse space between when there's no additional content.
          +.panel-heading + .list-group {
          +  .list-group-item:first-child {
          +    border-top-width: 0;
          +  }
          +}
          +.list-group + .panel-footer {
          +  border-top-width: 0;
          +}
          +
          +// Tables in panels
          +//
          +// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
          +// watch it go full width.
          +
          +.panel {
          +  > .table,
          +  > .table-responsive > .table,
          +  > .panel-collapse > .table {
          +    margin-bottom: 0;
          +
          +    caption {
          +      padding-left: $panel-body-padding;
          +      padding-right: $panel-body-padding;
          +    }
          +  }
          +  // Add border top radius for first one
          +  > .table:first-child,
          +  > .table-responsive:first-child > .table:first-child {
          +    @include border-top-radius(($panel-border-radius - 1));
          +
          +    > thead:first-child,
          +    > tbody:first-child {
          +      > tr:first-child {
          +        border-top-left-radius: ($panel-border-radius - 1);
          +        border-top-right-radius: ($panel-border-radius - 1);
          +
          +        td:first-child,
          +        th:first-child {
          +          border-top-left-radius: ($panel-border-radius - 1);
          +        }
          +        td:last-child,
          +        th:last-child {
          +          border-top-right-radius: ($panel-border-radius - 1);
          +        }
          +      }
          +    }
          +  }
          +  // Add border bottom radius for last one
          +  > .table:last-child,
          +  > .table-responsive:last-child > .table:last-child {
          +    @include border-bottom-radius(($panel-border-radius - 1));
          +
          +    > tbody:last-child,
          +    > tfoot:last-child {
          +      > tr:last-child {
          +        border-bottom-left-radius: ($panel-border-radius - 1);
          +        border-bottom-right-radius: ($panel-border-radius - 1);
          +
          +        td:first-child,
          +        th:first-child {
          +          border-bottom-left-radius: ($panel-border-radius - 1);
          +        }
          +        td:last-child,
          +        th:last-child {
          +          border-bottom-right-radius: ($panel-border-radius - 1);
          +        }
          +      }
          +    }
          +  }
          +  > .panel-body + .table,
          +  > .panel-body + .table-responsive,
          +  > .table + .panel-body,
          +  > .table-responsive + .panel-body {
          +    border-top: 1px solid $table-border-color;
          +  }
          +  > .table > tbody:first-child > tr:first-child th,
          +  > .table > tbody:first-child > tr:first-child td {
          +    border-top: 0;
          +  }
          +  > .table-bordered,
          +  > .table-responsive > .table-bordered {
          +    border: 0;
          +    > thead,
          +    > tbody,
          +    > tfoot {
          +      > tr {
          +        > th:first-child,
          +        > td:first-child {
          +          border-left: 0;
          +        }
          +        > th:last-child,
          +        > td:last-child {
          +          border-right: 0;
          +        }
          +      }
          +    }
          +    > thead,
          +    > tbody {
          +      > tr:first-child {
          +        > td,
          +        > th {
          +          border-bottom: 0;
          +        }
          +      }
          +    }
          +    > tbody,
          +    > tfoot {
          +      > tr:last-child {
          +        > td,
          +        > th {
          +          border-bottom: 0;
          +        }
          +      }
          +    }
          +  }
          +  > .table-responsive {
          +    border: 0;
          +    margin-bottom: 0;
          +  }
          +}
          +
          +
          +// Collapsable panels (aka, accordion)
          +//
          +// Wrap a series of panels in `.panel-group` to turn them into an accordion with
          +// the help of our collapse JavaScript plugin.
          +
          +.panel-group {
          +  margin-bottom: $line-height-computed;
          +
          +  // Tighten up margin so it's only between panels
          +  .panel {
          +    margin-bottom: 0;
          +    border-radius: $panel-border-radius;
          +
          +    + .panel {
          +      margin-top: 5px;
          +    }
          +  }
          +
          +  .panel-heading {
          +    border-bottom: 0;
          +
          +    + .panel-collapse > .panel-body,
          +    + .panel-collapse > .list-group {
          +      border-top: 1px solid $panel-inner-border;
          +    }
          +  }
          +
          +  .panel-footer {
          +    border-top: 0;
          +    + .panel-collapse .panel-body {
          +      border-bottom: 1px solid $panel-inner-border;
          +    }
          +  }
          +}
          +
          +
          +// Contextual variations
          +.panel-default {
          +  @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);
          +}
          +.panel-primary {
          +  @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);
          +}
          +.panel-success {
          +  @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);
          +}
          +.panel-info {
          +  @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);
          +}
          +.panel-warning {
          +  @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);
          +}
          +.panel-danger {
          +  @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_popovers.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_popovers.scss
          new file mode 100644
          index 0000000..9b90a2e
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_popovers.scss
          @@ -0,0 +1,131 @@
          +//
          +// Popovers
          +// --------------------------------------------------
          +
          +
          +.popover {
          +  position: absolute;
          +  top: 0;
          +  left: 0;
          +  z-index: $zindex-popover;
          +  display: none;
          +  max-width: $popover-max-width;
          +  padding: 1px;
          +  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
          +  // So reset our font and text properties to avoid inheriting weird values.
          +  @include reset-text;
          +  font-size: $font-size-base;
          +
          +  background-color: $popover-bg;
          +  background-clip: padding-box;
          +  border: 1px solid $popover-fallback-border-color;
          +  border: 1px solid $popover-border-color;
          +  border-radius: $border-radius-large;
          +  @include box-shadow(0 5px 10px rgba(0,0,0,.2));
          +
          +  // Offset the popover to account for the popover arrow
          +  &.top     { margin-top: -$popover-arrow-width; }
          +  &.right   { margin-left: $popover-arrow-width; }
          +  &.bottom  { margin-top: $popover-arrow-width; }
          +  &.left    { margin-left: -$popover-arrow-width; }
          +}
          +
          +.popover-title {
          +  margin: 0; // reset heading margin
          +  padding: 8px 14px;
          +  font-size: $font-size-base;
          +  background-color: $popover-title-bg;
          +  border-bottom: 1px solid darken($popover-title-bg, 5%);
          +  border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0;
          +}
          +
          +.popover-content {
          +  padding: 9px 14px;
          +}
          +
          +// Arrows
          +//
          +// .arrow is outer, .arrow:after is inner
          +
          +.popover > .arrow {
          +  &,
          +  &:after {
          +    position: absolute;
          +    display: block;
          +    width: 0;
          +    height: 0;
          +    border-color: transparent;
          +    border-style: solid;
          +  }
          +}
          +.popover > .arrow {
          +  border-width: $popover-arrow-outer-width;
          +}
          +.popover > .arrow:after {
          +  border-width: $popover-arrow-width;
          +  content: "";
          +}
          +
          +.popover {
          +  &.top > .arrow {
          +    left: 50%;
          +    margin-left: -$popover-arrow-outer-width;
          +    border-bottom-width: 0;
          +    border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
          +    border-top-color: $popover-arrow-outer-color;
          +    bottom: -$popover-arrow-outer-width;
          +    &:after {
          +      content: " ";
          +      bottom: 1px;
          +      margin-left: -$popover-arrow-width;
          +      border-bottom-width: 0;
          +      border-top-color: $popover-arrow-color;
          +    }
          +  }
          +  &.right > .arrow {
          +    top: 50%;
          +    left: -$popover-arrow-outer-width;
          +    margin-top: -$popover-arrow-outer-width;
          +    border-left-width: 0;
          +    border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
          +    border-right-color: $popover-arrow-outer-color;
          +    &:after {
          +      content: " ";
          +      left: 1px;
          +      bottom: -$popover-arrow-width;
          +      border-left-width: 0;
          +      border-right-color: $popover-arrow-color;
          +    }
          +  }
          +  &.bottom > .arrow {
          +    left: 50%;
          +    margin-left: -$popover-arrow-outer-width;
          +    border-top-width: 0;
          +    border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
          +    border-bottom-color: $popover-arrow-outer-color;
          +    top: -$popover-arrow-outer-width;
          +    &:after {
          +      content: " ";
          +      top: 1px;
          +      margin-left: -$popover-arrow-width;
          +      border-top-width: 0;
          +      border-bottom-color: $popover-arrow-color;
          +    }
          +  }
          +
          +  &.left > .arrow {
          +    top: 50%;
          +    right: -$popover-arrow-outer-width;
          +    margin-top: -$popover-arrow-outer-width;
          +    border-right-width: 0;
          +    border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
          +    border-left-color: $popover-arrow-outer-color;
          +    &:after {
          +      content: " ";
          +      right: 1px;
          +      border-right-width: 0;
          +      border-left-color: $popover-arrow-color;
          +      bottom: -$popover-arrow-width;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_print.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_print.scss
          new file mode 100644
          index 0000000..66e54ab
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_print.scss
          @@ -0,0 +1,101 @@
          +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
          +
          +// ==========================================================================
          +// Print styles.
          +// Inlined to avoid the additional HTTP request: h5bp.com/r
          +// ==========================================================================
          +
          +@media print {
          +    *,
          +    *:before,
          +    *:after {
          +        background: transparent !important;
          +        color: #000 !important; // Black prints faster: h5bp.com/s
          +        box-shadow: none !important;
          +        text-shadow: none !important;
          +    }
          +
          +    a,
          +    a:visited {
          +        text-decoration: underline;
          +    }
          +
          +    a[href]:after {
          +        content: " (" attr(href) ")";
          +    }
          +
          +    abbr[title]:after {
          +        content: " (" attr(title) ")";
          +    }
          +
          +    // Don't show links that are fragment identifiers,
          +    // or use the `javascript:` pseudo protocol
          +    a[href^="#"]:after,
          +    a[href^="javascript:"]:after {
          +        content: "";
          +    }
          +
          +    pre,
          +    blockquote {
          +        border: 1px solid #999;
          +        page-break-inside: avoid;
          +    }
          +
          +    thead {
          +        display: table-header-group; // h5bp.com/t
          +    }
          +
          +    tr,
          +    img {
          +        page-break-inside: avoid;
          +    }
          +
          +    img {
          +        max-width: 100% !important;
          +    }
          +
          +    p,
          +    h2,
          +    h3 {
          +        orphans: 3;
          +        widows: 3;
          +    }
          +
          +    h2,
          +    h3 {
          +        page-break-after: avoid;
          +    }
          +
          +    // Bootstrap specific changes start
          +
          +    // Bootstrap components
          +    .navbar {
          +        display: none;
          +    }
          +    .btn,
          +    .dropup > .btn {
          +        > .caret {
          +            border-top-color: #000 !important;
          +        }
          +    }
          +    .label {
          +        border: 1px solid #000;
          +    }
          +
          +    .table {
          +        border-collapse: collapse !important;
          +
          +        td,
          +        th {
          +            background-color: #fff !important;
          +        }
          +    }
          +    .table-bordered {
          +        th,
          +        td {
          +            border: 1px solid #ddd !important;
          +        }
          +    }
          +
          +    // Bootstrap specific changes end
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss
          new file mode 100644
          index 0000000..343df63
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss
          @@ -0,0 +1,87 @@
          +//
          +// Progress bars
          +// --------------------------------------------------
          +
          +
          +// Bar animations
          +// -------------------------
          +
          +// WebKit
          +@-webkit-keyframes progress-bar-stripes {
          +  from  { background-position: 40px 0; }
          +  to    { background-position: 0 0; }
          +}
          +
          +// Spec and IE10+
          +@keyframes progress-bar-stripes {
          +  from  { background-position: 40px 0; }
          +  to    { background-position: 0 0; }
          +}
          +
          +
          +// Bar itself
          +// -------------------------
          +
          +// Outer container
          +.progress {
          +  overflow: hidden;
          +  height: $line-height-computed;
          +  margin-bottom: $line-height-computed;
          +  background-color: $progress-bg;
          +  border-radius: $progress-border-radius;
          +  @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
          +}
          +
          +// Bar of progress
          +.progress-bar {
          +  float: left;
          +  width: 0%;
          +  height: 100%;
          +  font-size: $font-size-small;
          +  line-height: $line-height-computed;
          +  color: $progress-bar-color;
          +  text-align: center;
          +  background-color: $progress-bar-bg;
          +  @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
          +  @include transition(width .6s ease);
          +}
          +
          +// Striped bars
          +//
          +// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
          +// `.progress-bar-striped` class, which you just add to an existing
          +// `.progress-bar`.
          +.progress-striped .progress-bar,
          +.progress-bar-striped {
          +  @include gradient-striped;
          +  background-size: 40px 40px;
          +}
          +
          +// Call animation for the active one
          +//
          +// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
          +// `.progress-bar.active` approach.
          +.progress.active .progress-bar,
          +.progress-bar.active {
          +  @include animation(progress-bar-stripes 2s linear infinite);
          +}
          +
          +
          +// Variations
          +// -------------------------
          +
          +.progress-bar-success {
          +  @include progress-bar-variant($progress-bar-success-bg);
          +}
          +
          +.progress-bar-info {
          +  @include progress-bar-variant($progress-bar-info-bg);
          +}
          +
          +.progress-bar-warning {
          +  @include progress-bar-variant($progress-bar-warning-bg);
          +}
          +
          +.progress-bar-danger {
          +  @include progress-bar-variant($progress-bar-danger-bg);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss
          new file mode 100644
          index 0000000..080a511
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss
          @@ -0,0 +1,35 @@
          +// Embeds responsive
          +//
          +// Credit: Nicolas Gallagher and SUIT CSS.
          +
          +.embed-responsive {
          +  position: relative;
          +  display: block;
          +  height: 0;
          +  padding: 0;
          +  overflow: hidden;
          +
          +  .embed-responsive-item,
          +  iframe,
          +  embed,
          +  object,
          +  video {
          +    position: absolute;
          +    top: 0;
          +    left: 0;
          +    bottom: 0;
          +    height: 100%;
          +    width: 100%;
          +    border: 0;
          +  }
          +}
          +
          +// Modifier class for 16:9 aspect ratio
          +.embed-responsive-16by9 {
          +  padding-bottom: 56.25%;
          +}
          +
          +// Modifier class for 4:3 aspect ratio
          +.embed-responsive-4by3 {
          +  padding-bottom: 75%;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss
          new file mode 100644
          index 0000000..f3f0c83
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss
          @@ -0,0 +1,179 @@
          +//
          +// Responsive: Utility classes
          +// --------------------------------------------------
          +
          +
          +// IE10 in Windows (Phone) 8
          +//
          +// Support for responsive views via media queries is kind of borked in IE10, for
          +// Surface/desktop in split view and for Windows Phone 8. This particular fix
          +// must be accompanied by a snippet of JavaScript to sniff the user agent and
          +// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
          +// our Getting Started page for more information on this bug.
          +//
          +// For more information, see the following:
          +//
          +// Issue: https://github.com/twbs/bootstrap/issues/10497
          +// Docs: http://getbootstrap.com/getting-started/#support-ie10-width
          +// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
          +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
          +
          +@at-root {
          +  @-ms-viewport {
          +    width: device-width;
          +  }
          +}
          +
          +
          +// Visibility utilities
          +// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
          +
          +@include responsive-invisibility('.visible-xs');
          +@include responsive-invisibility('.visible-sm');
          +@include responsive-invisibility('.visible-md');
          +@include responsive-invisibility('.visible-lg');
          +
          +.visible-xs-block,
          +.visible-xs-inline,
          +.visible-xs-inline-block,
          +.visible-sm-block,
          +.visible-sm-inline,
          +.visible-sm-inline-block,
          +.visible-md-block,
          +.visible-md-inline,
          +.visible-md-inline-block,
          +.visible-lg-block,
          +.visible-lg-inline,
          +.visible-lg-inline-block {
          +  display: none !important;
          +}
          +
          +@media (max-width: $screen-xs-max) {
          +  @include responsive-visibility('.visible-xs');
          +}
          +.visible-xs-block {
          +  @media (max-width: $screen-xs-max) {
          +    display: block !important;
          +  }
          +}
          +.visible-xs-inline {
          +  @media (max-width: $screen-xs-max) {
          +    display: inline !important;
          +  }
          +}
          +.visible-xs-inline-block {
          +  @media (max-width: $screen-xs-max) {
          +    display: inline-block !important;
          +  }
          +}
          +
          +@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          +  @include responsive-visibility('.visible-sm');
          +}
          +.visible-sm-block {
          +  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          +    display: block !important;
          +  }
          +}
          +.visible-sm-inline {
          +  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          +    display: inline !important;
          +  }
          +}
          +.visible-sm-inline-block {
          +  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          +    display: inline-block !important;
          +  }
          +}
          +
          +@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
          +  @include responsive-visibility('.visible-md');
          +}
          +.visible-md-block {
          +  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
          +    display: block !important;
          +  }
          +}
          +.visible-md-inline {
          +  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
          +    display: inline !important;
          +  }
          +}
          +.visible-md-inline-block {
          +  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
          +    display: inline-block !important;
          +  }
          +}
          +
          +@media (min-width: $screen-lg-min) {
          +  @include responsive-visibility('.visible-lg');
          +}
          +.visible-lg-block {
          +  @media (min-width: $screen-lg-min) {
          +    display: block !important;
          +  }
          +}
          +.visible-lg-inline {
          +  @media (min-width: $screen-lg-min) {
          +    display: inline !important;
          +  }
          +}
          +.visible-lg-inline-block {
          +  @media (min-width: $screen-lg-min) {
          +    display: inline-block !important;
          +  }
          +}
          +
          +@media (max-width: $screen-xs-max) {
          +  @include responsive-invisibility('.hidden-xs');
          +}
          +
          +@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          +  @include responsive-invisibility('.hidden-sm');
          +}
          +
          +@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
          +  @include responsive-invisibility('.hidden-md');
          +}
          +
          +@media (min-width: $screen-lg-min) {
          +  @include responsive-invisibility('.hidden-lg');
          +}
          +
          +
          +// Print utilities
          +//
          +// Media queries are placed on the inside to be mixin-friendly.
          +
          +// Note: Deprecated .visible-print as of v3.2.0
          +
          +@include responsive-invisibility('.visible-print');
          +
          +@media print {
          +  @include responsive-visibility('.visible-print');
          +}
          +.visible-print-block {
          +  display: none !important;
          +
          +  @media print {
          +    display: block !important;
          +  }
          +}
          +.visible-print-inline {
          +  display: none !important;
          +
          +  @media print {
          +    display: inline !important;
          +  }
          +}
          +.visible-print-inline-block {
          +  display: none !important;
          +
          +  @media print {
          +    display: inline-block !important;
          +  }
          +}
          +
          +@media print {
          +  @include responsive-invisibility('.hidden-print');
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss
          new file mode 100644
          index 0000000..83adb5d
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss
          @@ -0,0 +1,161 @@
          +//
          +// Scaffolding
          +// --------------------------------------------------
          +
          +
          +// Reset the box-sizing
          +//
          +// Heads up! This reset may cause conflicts with some third-party widgets.
          +// For recommendations on resolving such conflicts, see
          +// http://getbootstrap.com/getting-started/#third-box-sizing
          +* {
          +  @include box-sizing(border-box);
          +}
          +*:before,
          +*:after {
          +  @include box-sizing(border-box);
          +}
          +
          +
          +// Body reset
          +
          +html {
          +  font-size: 10px;
          +  -webkit-tap-highlight-color: rgba(0,0,0,0);
          +}
          +
          +body {
          +  font-family: $font-family-base;
          +  font-size: $font-size-base;
          +  line-height: $line-height-base;
          +  color: $text-color;
          +  background-color: $body-bg;
          +}
          +
          +// Reset fonts for relevant elements
          +input,
          +button,
          +select,
          +textarea {
          +  font-family: inherit;
          +  font-size: inherit;
          +  line-height: inherit;
          +}
          +
          +
          +// Links
          +
          +a {
          +  color: $link-color;
          +  text-decoration: none;
          +
          +  &:hover,
          +  &:focus {
          +    color: $link-hover-color;
          +    text-decoration: $link-hover-decoration;
          +  }
          +
          +  &:focus {
          +    @include tab-focus;
          +  }
          +}
          +
          +
          +// Figures
          +//
          +// We reset this here because previously Normalize had no `figure` margins. This
          +// ensures we don't break anyone's use of the element.
          +
          +figure {
          +  margin: 0;
          +}
          +
          +
          +// Images
          +
          +img {
          +  vertical-align: middle;
          +}
          +
          +// Responsive images (ensure images don't scale beyond their parents)
          +.img-responsive {
          +  @include img-responsive;
          +}
          +
          +// Rounded corners
          +.img-rounded {
          +  border-radius: $border-radius-large;
          +}
          +
          +// Image thumbnails
          +//
          +// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
          +.img-thumbnail {
          +  padding: $thumbnail-padding;
          +  line-height: $line-height-base;
          +  background-color: $thumbnail-bg;
          +  border: 1px solid $thumbnail-border;
          +  border-radius: $thumbnail-border-radius;
          +  @include transition(all .2s ease-in-out);
          +
          +  // Keep them at most 100% wide
          +  @include img-responsive(inline-block);
          +}
          +
          +// Perfect circle
          +.img-circle {
          +  border-radius: 50%; // set radius in percents
          +}
          +
          +
          +// Horizontal rules
          +
          +hr {
          +  margin-top:    $line-height-computed;
          +  margin-bottom: $line-height-computed;
          +  border: 0;
          +  border-top: 1px solid $hr-border;
          +}
          +
          +
          +// Only display content to screen readers
          +//
          +// See: http://a11yproject.com/posts/how-to-hide-content/
          +
          +.sr-only {
          +  position: absolute;
          +  width: 1px;
          +  height: 1px;
          +  margin: -1px;
          +  padding: 0;
          +  overflow: hidden;
          +  clip: rect(0,0,0,0);
          +  border: 0;
          +}
          +
          +// Use in conjunction with .sr-only to only display content when it's focused.
          +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
          +// Credit: HTML5 Boilerplate
          +
          +.sr-only-focusable {
          +  &:active,
          +  &:focus {
          +    position: static;
          +    width: auto;
          +    height: auto;
          +    margin: 0;
          +    overflow: visible;
          +    clip: auto;
          +  }
          +}
          +
          +
          +// iOS "clickable elements" fix for role="button"
          +//
          +// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
          +// for traditionally non-focusable elements with role="button"
          +// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
          +
          +[role="button"] {
          +  cursor: pointer;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_tables.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_tables.scss
          new file mode 100644
          index 0000000..affcc58
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_tables.scss
          @@ -0,0 +1,234 @@
          +//
          +// Tables
          +// --------------------------------------------------
          +
          +
          +table {
          +  background-color: $table-bg;
          +}
          +caption {
          +  padding-top: $table-cell-padding;
          +  padding-bottom: $table-cell-padding;
          +  color: $text-muted;
          +  text-align: left;
          +}
          +th {
          +  text-align: left;
          +}
          +
          +
          +// Baseline styles
          +
          +.table {
          +  width: 100%;
          +  max-width: 100%;
          +  margin-bottom: $line-height-computed;
          +  // Cells
          +  > thead,
          +  > tbody,
          +  > tfoot {
          +    > tr {
          +      > th,
          +      > td {
          +        padding: $table-cell-padding;
          +        line-height: $line-height-base;
          +        vertical-align: top;
          +        border-top: 1px solid $table-border-color;
          +      }
          +    }
          +  }
          +  // Bottom align for column headings
          +  > thead > tr > th {
          +    vertical-align: bottom;
          +    border-bottom: 2px solid $table-border-color;
          +  }
          +  // Remove top border from thead by default
          +  > caption + thead,
          +  > colgroup + thead,
          +  > thead:first-child {
          +    > tr:first-child {
          +      > th,
          +      > td {
          +        border-top: 0;
          +      }
          +    }
          +  }
          +  // Account for multiple tbody instances
          +  > tbody + tbody {
          +    border-top: 2px solid $table-border-color;
          +  }
          +
          +  // Nesting
          +  .table {
          +    background-color: $body-bg;
          +  }
          +}
          +
          +
          +// Condensed table w/ half padding
          +
          +.table-condensed {
          +  > thead,
          +  > tbody,
          +  > tfoot {
          +    > tr {
          +      > th,
          +      > td {
          +        padding: $table-condensed-cell-padding;
          +      }
          +    }
          +  }
          +}
          +
          +
          +// Bordered version
          +//
          +// Add borders all around the table and between all the columns.
          +
          +.table-bordered {
          +  border: 1px solid $table-border-color;
          +  > thead,
          +  > tbody,
          +  > tfoot {
          +    > tr {
          +      > th,
          +      > td {
          +        border: 1px solid $table-border-color;
          +      }
          +    }
          +  }
          +  > thead > tr {
          +    > th,
          +    > td {
          +      border-bottom-width: 2px;
          +    }
          +  }
          +}
          +
          +
          +// Zebra-striping
          +//
          +// Default zebra-stripe styles (alternating gray and transparent backgrounds)
          +
          +.table-striped {
          +  > tbody > tr:nth-of-type(odd) {
          +    background-color: $table-bg-accent;
          +  }
          +}
          +
          +
          +// Hover effect
          +//
          +// Placed here since it has to come after the potential zebra striping
          +
          +.table-hover {
          +  > tbody > tr:hover {
          +    background-color: $table-bg-hover;
          +  }
          +}
          +
          +
          +// Table cell sizing
          +//
          +// Reset default table behavior
          +
          +table col[class*="col-"] {
          +  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
          +  float: none;
          +  display: table-column;
          +}
          +table {
          +  td,
          +  th {
          +    &[class*="col-"] {
          +      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
          +      float: none;
          +      display: table-cell;
          +    }
          +  }
          +}
          +
          +
          +// Table backgrounds
          +//
          +// Exact selectors below required to override `.table-striped` and prevent
          +// inheritance to nested tables.
          +
          +// Generate the contextual variants
          +@include table-row-variant('active', $table-bg-active);
          +@include table-row-variant('success', $state-success-bg);
          +@include table-row-variant('info', $state-info-bg);
          +@include table-row-variant('warning', $state-warning-bg);
          +@include table-row-variant('danger', $state-danger-bg);
          +
          +
          +// Responsive tables
          +//
          +// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
          +// by enabling horizontal scrolling. Only applies <768px. Everything above that
          +// will display normally.
          +
          +.table-responsive {
          +  overflow-x: auto;
          +  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
          +
          +  @media screen and (max-width: $screen-xs-max) {
          +    width: 100%;
          +    margin-bottom: ($line-height-computed * 0.75);
          +    overflow-y: hidden;
          +    -ms-overflow-style: -ms-autohiding-scrollbar;
          +    border: 1px solid $table-border-color;
          +
          +    // Tighten up spacing
          +    > .table {
          +      margin-bottom: 0;
          +
          +      // Ensure the content doesn't wrap
          +      > thead,
          +      > tbody,
          +      > tfoot {
          +        > tr {
          +          > th,
          +          > td {
          +            white-space: nowrap;
          +          }
          +        }
          +      }
          +    }
          +
          +    // Special overrides for the bordered tables
          +    > .table-bordered {
          +      border: 0;
          +
          +      // Nuke the appropriate borders so that the parent can handle them
          +      > thead,
          +      > tbody,
          +      > tfoot {
          +        > tr {
          +          > th:first-child,
          +          > td:first-child {
          +            border-left: 0;
          +          }
          +          > th:last-child,
          +          > td:last-child {
          +            border-right: 0;
          +          }
          +        }
          +      }
          +
          +      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
          +      // chances are there will be only one `tr` in a `thead` and that would
          +      // remove the border altogether.
          +      > tbody,
          +      > tfoot {
          +        > tr:last-child {
          +          > th,
          +          > td {
          +            border-bottom: 0;
          +          }
          +        }
          +      }
          +
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_theme.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_theme.scss
          new file mode 100644
          index 0000000..c64b3d6
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_theme.scss
          @@ -0,0 +1,291 @@
          +/*!
          + * Bootstrap v3.3.6 (http://getbootstrap.com)
          + * Copyright 2011-2015 Twitter, Inc.
          + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
          + */
          +
          +//
          +// Load core variables and mixins
          +// --------------------------------------------------
          +
          +@import "variables";
          +@import "mixins";
          +
          +
          +//
          +// Buttons
          +// --------------------------------------------------
          +
          +// Common styles
          +.btn-default,
          +.btn-primary,
          +.btn-success,
          +.btn-info,
          +.btn-warning,
          +.btn-danger {
          +  text-shadow: 0 -1px 0 rgba(0,0,0,.2);
          +  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
          +  @include box-shadow($shadow);
          +
          +  // Reset the shadow
          +  &:active,
          +  &.active {
          +    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
          +  }
          +
          +  &.disabled,
          +  &[disabled],
          +  fieldset[disabled] & {
          +    @include box-shadow(none);
          +  }
          +
          +  .badge {
          +    text-shadow: none;
          +  }
          +}
          +
          +// Mixin for generating new styles
          +@mixin btn-styles($btn-color: #555) {
          +  @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));
          +  @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
          +  background-repeat: repeat-x;
          +  border-color: darken($btn-color, 14%);
          +
          +  &:hover,
          +  &:focus  {
          +    background-color: darken($btn-color, 12%);
          +    background-position: 0 -15px;
          +  }
          +
          +  &:active,
          +  &.active {
          +    background-color: darken($btn-color, 12%);
          +    border-color: darken($btn-color, 14%);
          +  }
          +
          +  &.disabled,
          +  &[disabled],
          +  fieldset[disabled] & {
          +    &,
          +    &:hover,
          +    &:focus,
          +    &.focus,
          +    &:active,
          +    &.active {
          +      background-color: darken($btn-color, 12%);
          +      background-image: none;
          +    }
          +  }
          +}
          +
          +// Common styles
          +.btn {
          +  // Remove the gradient for the pressed/active state
          +  &:active,
          +  &.active {
          +    background-image: none;
          +  }
          +}
          +
          +// Apply the mixin to the buttons
          +.btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
          +.btn-primary { @include btn-styles($btn-primary-bg); }
          +.btn-success { @include btn-styles($btn-success-bg); }
          +.btn-info    { @include btn-styles($btn-info-bg); }
          +.btn-warning { @include btn-styles($btn-warning-bg); }
          +.btn-danger  { @include btn-styles($btn-danger-bg); }
          +
          +
          +//
          +// Images
          +// --------------------------------------------------
          +
          +.thumbnail,
          +.img-thumbnail {
          +  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
          +}
          +
          +
          +//
          +// Dropdowns
          +// --------------------------------------------------
          +
          +.dropdown-menu > li > a:hover,
          +.dropdown-menu > li > a:focus {
          +  @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
          +  background-color: darken($dropdown-link-hover-bg, 5%);
          +}
          +.dropdown-menu > .active > a,
          +.dropdown-menu > .active > a:hover,
          +.dropdown-menu > .active > a:focus {
          +  @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
          +  background-color: darken($dropdown-link-active-bg, 5%);
          +}
          +
          +
          +//
          +// Navbar
          +// --------------------------------------------------
          +
          +// Default navbar
          +.navbar-default {
          +  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
          +  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
          +  border-radius: $navbar-border-radius;
          +  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
          +  @include box-shadow($shadow);
          +
          +  .navbar-nav > .open > a,
          +  .navbar-nav > .active > a {
          +    @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%));
          +    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
          +  }
          +}
          +.navbar-brand,
          +.navbar-nav > li > a {
          +  text-shadow: 0 1px 0 rgba(255,255,255,.25);
          +}
          +
          +// Inverted navbar
          +.navbar-inverse {
          +  @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
          +  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
          +  border-radius: $navbar-border-radius;
          +  .navbar-nav > .open > a,
          +  .navbar-nav > .active > a {
          +    @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%));
          +    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.25));
          +  }
          +
          +  .navbar-brand,
          +  .navbar-nav > li > a {
          +    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
          +  }
          +}
          +
          +// Undo rounded corners in static and fixed navbars
          +.navbar-static-top,
          +.navbar-fixed-top,
          +.navbar-fixed-bottom {
          +  border-radius: 0;
          +}
          +
          +// Fix active state of dropdown items in collapsed mode
          +@media (max-width: $grid-float-breakpoint-max) {
          +  .navbar .navbar-nav .open .dropdown-menu > .active > a {
          +    &,
          +    &:hover,
          +    &:focus {
          +      color: #fff;
          +      @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
          +    }
          +  }
          +}
          +
          +
          +//
          +// Alerts
          +// --------------------------------------------------
          +
          +// Common styles
          +.alert {
          +  text-shadow: 0 1px 0 rgba(255,255,255,.2);
          +  $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
          +  @include box-shadow($shadow);
          +}
          +
          +// Mixin for generating new styles
          +@mixin alert-styles($color) {
          +  @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
          +  border-color: darken($color, 15%);
          +}
          +
          +// Apply the mixin to the alerts
          +.alert-success    { @include alert-styles($alert-success-bg); }
          +.alert-info       { @include alert-styles($alert-info-bg); }
          +.alert-warning    { @include alert-styles($alert-warning-bg); }
          +.alert-danger     { @include alert-styles($alert-danger-bg); }
          +
          +
          +//
          +// Progress bars
          +// --------------------------------------------------
          +
          +// Give the progress background some depth
          +.progress {
          +  @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
          +}
          +
          +// Mixin for generating new styles
          +@mixin progress-bar-styles($color) {
          +  @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
          +}
          +
          +// Apply the mixin to the progress bars
          +.progress-bar            { @include progress-bar-styles($progress-bar-bg); }
          +.progress-bar-success    { @include progress-bar-styles($progress-bar-success-bg); }
          +.progress-bar-info       { @include progress-bar-styles($progress-bar-info-bg); }
          +.progress-bar-warning    { @include progress-bar-styles($progress-bar-warning-bg); }
          +.progress-bar-danger     { @include progress-bar-styles($progress-bar-danger-bg); }
          +
          +// Reset the striped class because our mixins don't do multiple gradients and
          +// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
          +.progress-bar-striped {
          +  @include gradient-striped;
          +}
          +
          +
          +//
          +// List groups
          +// --------------------------------------------------
          +
          +.list-group {
          +  border-radius: $border-radius-base;
          +  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
          +}
          +.list-group-item.active,
          +.list-group-item.active:hover,
          +.list-group-item.active:focus {
          +  text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
          +  @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
          +  border-color: darken($list-group-active-border, 7.5%);
          +
          +  .badge {
          +    text-shadow: none;
          +  }
          +}
          +
          +
          +//
          +// Panels
          +// --------------------------------------------------
          +
          +// Common styles
          +.panel {
          +  @include box-shadow(0 1px 2px rgba(0,0,0,.05));
          +}
          +
          +// Mixin for generating new styles
          +@mixin panel-heading-styles($color) {
          +  @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
          +}
          +
          +// Apply the mixin to the panel headings only
          +.panel-default > .panel-heading   { @include panel-heading-styles($panel-default-heading-bg); }
          +.panel-primary > .panel-heading   { @include panel-heading-styles($panel-primary-heading-bg); }
          +.panel-success > .panel-heading   { @include panel-heading-styles($panel-success-heading-bg); }
          +.panel-info > .panel-heading      { @include panel-heading-styles($panel-info-heading-bg); }
          +.panel-warning > .panel-heading   { @include panel-heading-styles($panel-warning-heading-bg); }
          +.panel-danger > .panel-heading    { @include panel-heading-styles($panel-danger-heading-bg); }
          +
          +
          +//
          +// Wells
          +// --------------------------------------------------
          +
          +.well {
          +  @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
          +  border-color: darken($well-bg, 10%);
          +  $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
          +  @include box-shadow($shadow);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss
          new file mode 100644
          index 0000000..da0e1e7
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss
          @@ -0,0 +1,38 @@
          +//
          +// Thumbnails
          +// --------------------------------------------------
          +
          +
          +// Mixin and adjust the regular image class
          +.thumbnail {
          +  display: block;
          +  padding: $thumbnail-padding;
          +  margin-bottom: $line-height-computed;
          +  line-height: $line-height-base;
          +  background-color: $thumbnail-bg;
          +  border: 1px solid $thumbnail-border;
          +  border-radius: $thumbnail-border-radius;
          +  @include transition(border .2s ease-in-out);
          +
          +  > img,
          +  a > img {
          +    @include img-responsive;
          +    margin-left: auto;
          +    margin-right: auto;
          +  }
          +
          +  // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active
          +
          +  // Image captions
          +  .caption {
          +    padding: $thumbnail-caption-padding;
          +    color: $thumbnail-caption-color;
          +  }
          +}
          +
          +// Add a hover state for linked versions only
          +a.thumbnail:hover,
          +a.thumbnail:focus,
          +a.thumbnail.active {
          +  border-color: $link-color;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_tooltip.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_tooltip.scss
          new file mode 100644
          index 0000000..f0c1658
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_tooltip.scss
          @@ -0,0 +1,101 @@
          +//
          +// Tooltips
          +// --------------------------------------------------
          +
          +
          +// Base class
          +.tooltip {
          +  position: absolute;
          +  z-index: $zindex-tooltip;
          +  display: block;
          +  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
          +  // So reset our font and text properties to avoid inheriting weird values.
          +  @include reset-text;
          +  font-size: $font-size-small;
          +
          +  @include opacity(0);
          +
          +  &.in     { @include opacity($tooltip-opacity); }
          +  &.top    { margin-top:  -3px; padding: $tooltip-arrow-width 0; }
          +  &.right  { margin-left:  3px; padding: 0 $tooltip-arrow-width; }
          +  &.bottom { margin-top:   3px; padding: $tooltip-arrow-width 0; }
          +  &.left   { margin-left: -3px; padding: 0 $tooltip-arrow-width; }
          +}
          +
          +// Wrapper for the tooltip content
          +.tooltip-inner {
          +  max-width: $tooltip-max-width;
          +  padding: 3px 8px;
          +  color: $tooltip-color;
          +  text-align: center;
          +  background-color: $tooltip-bg;
          +  border-radius: $border-radius-base;
          +}
          +
          +// Arrows
          +.tooltip-arrow {
          +  position: absolute;
          +  width: 0;
          +  height: 0;
          +  border-color: transparent;
          +  border-style: solid;
          +}
          +// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
          +.tooltip {
          +  &.top .tooltip-arrow {
          +    bottom: 0;
          +    left: 50%;
          +    margin-left: -$tooltip-arrow-width;
          +    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
          +    border-top-color: $tooltip-arrow-color;
          +  }
          +  &.top-left .tooltip-arrow {
          +    bottom: 0;
          +    right: $tooltip-arrow-width;
          +    margin-bottom: -$tooltip-arrow-width;
          +    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
          +    border-top-color: $tooltip-arrow-color;
          +  }
          +  &.top-right .tooltip-arrow {
          +    bottom: 0;
          +    left: $tooltip-arrow-width;
          +    margin-bottom: -$tooltip-arrow-width;
          +    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
          +    border-top-color: $tooltip-arrow-color;
          +  }
          +  &.right .tooltip-arrow {
          +    top: 50%;
          +    left: 0;
          +    margin-top: -$tooltip-arrow-width;
          +    border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
          +    border-right-color: $tooltip-arrow-color;
          +  }
          +  &.left .tooltip-arrow {
          +    top: 50%;
          +    right: 0;
          +    margin-top: -$tooltip-arrow-width;
          +    border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
          +    border-left-color: $tooltip-arrow-color;
          +  }
          +  &.bottom .tooltip-arrow {
          +    top: 0;
          +    left: 50%;
          +    margin-left: -$tooltip-arrow-width;
          +    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
          +    border-bottom-color: $tooltip-arrow-color;
          +  }
          +  &.bottom-left .tooltip-arrow {
          +    top: 0;
          +    right: $tooltip-arrow-width;
          +    margin-top: -$tooltip-arrow-width;
          +    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
          +    border-bottom-color: $tooltip-arrow-color;
          +  }
          +  &.bottom-right .tooltip-arrow {
          +    top: 0;
          +    left: $tooltip-arrow-width;
          +    margin-top: -$tooltip-arrow-width;
          +    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
          +    border-bottom-color: $tooltip-arrow-color;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_type.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_type.scss
          new file mode 100644
          index 0000000..620796a
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_type.scss
          @@ -0,0 +1,298 @@
          +//
          +// Typography
          +// --------------------------------------------------
          +
          +
          +// Headings
          +// -------------------------
          +
          +h1, h2, h3, h4, h5, h6,
          +.h1, .h2, .h3, .h4, .h5, .h6 {
          +  font-family: $headings-font-family;
          +  font-weight: $headings-font-weight;
          +  line-height: $headings-line-height;
          +  color: $headings-color;
          +
          +  small,
          +  .small {
          +    font-weight: normal;
          +    line-height: 1;
          +    color: $headings-small-color;
          +  }
          +}
          +
          +h1, .h1,
          +h2, .h2,
          +h3, .h3 {
          +  margin-top: $line-height-computed;
          +  margin-bottom: ($line-height-computed / 2);
          +
          +  small,
          +  .small {
          +    font-size: 65%;
          +  }
          +}
          +h4, .h4,
          +h5, .h5,
          +h6, .h6 {
          +  margin-top: ($line-height-computed / 2);
          +  margin-bottom: ($line-height-computed / 2);
          +
          +  small,
          +  .small {
          +    font-size: 75%;
          +  }
          +}
          +
          +h1, .h1 { font-size: $font-size-h1; }
          +h2, .h2 { font-size: $font-size-h2; }
          +h3, .h3 { font-size: $font-size-h3; }
          +h4, .h4 { font-size: $font-size-h4; }
          +h5, .h5 { font-size: $font-size-h5; }
          +h6, .h6 { font-size: $font-size-h6; }
          +
          +
          +// Body text
          +// -------------------------
          +
          +p {
          +  margin: 0 0 ($line-height-computed / 2);
          +}
          +
          +.lead {
          +  margin-bottom: $line-height-computed;
          +  font-size: floor(($font-size-base * 1.15));
          +  font-weight: 300;
          +  line-height: 1.4;
          +
          +  @media (min-width: $screen-sm-min) {
          +    font-size: ($font-size-base * 1.5);
          +  }
          +}
          +
          +
          +// Emphasis & misc
          +// -------------------------
          +
          +// Ex: (12px small font / 14px base font) * 100% = about 85%
          +small,
          +.small {
          +  font-size: floor((100% * $font-size-small / $font-size-base));
          +}
          +
          +mark,
          +.mark {
          +  background-color: $state-warning-bg;
          +  padding: .2em;
          +}
          +
          +// Alignment
          +.text-left           { text-align: left; }
          +.text-right          { text-align: right; }
          +.text-center         { text-align: center; }
          +.text-justify        { text-align: justify; }
          +.text-nowrap         { white-space: nowrap; }
          +
          +// Transformation
          +.text-lowercase      { text-transform: lowercase; }
          +.text-uppercase      { text-transform: uppercase; }
          +.text-capitalize     { text-transform: capitalize; }
          +
          +// Contextual colors
          +.text-muted {
          +  color: $text-muted;
          +}
          +
          +@include text-emphasis-variant('.text-primary', $brand-primary);
          +
          +@include text-emphasis-variant('.text-success', $state-success-text);
          +
          +@include text-emphasis-variant('.text-info', $state-info-text);
          +
          +@include text-emphasis-variant('.text-warning', $state-warning-text);
          +
          +@include text-emphasis-variant('.text-danger', $state-danger-text);
          +
          +// Contextual backgrounds
          +// For now we'll leave these alongside the text classes until v4 when we can
          +// safely shift things around (per SemVer rules).
          +.bg-primary {
          +  // Given the contrast here, this is the only class to have its color inverted
          +  // automatically.
          +  color: #fff;
          +}
          +@include bg-variant('.bg-primary', $brand-primary);
          +
          +@include bg-variant('.bg-success', $state-success-bg);
          +
          +@include bg-variant('.bg-info', $state-info-bg);
          +
          +@include bg-variant('.bg-warning', $state-warning-bg);
          +
          +@include bg-variant('.bg-danger', $state-danger-bg);
          +
          +
          +// Page header
          +// -------------------------
          +
          +.page-header {
          +  padding-bottom: (($line-height-computed / 2) - 1);
          +  margin: ($line-height-computed * 2) 0 $line-height-computed;
          +  border-bottom: 1px solid $page-header-border-color;
          +}
          +
          +
          +// Lists
          +// -------------------------
          +
          +// Unordered and Ordered lists
          +ul,
          +ol {
          +  margin-top: 0;
          +  margin-bottom: ($line-height-computed / 2);
          +  ul,
          +  ol {
          +    margin-bottom: 0;
          +  }
          +}
          +
          +// List options
          +
          +// [converter] extracted from `.list-unstyled` for libsass compatibility
          +@mixin list-unstyled {
          +  padding-left: 0;
          +  list-style: none;
          +}
          +// [converter] extracted as `@mixin list-unstyled` for libsass compatibility
          +.list-unstyled {
          +  @include list-unstyled;
          +}
          +
          +
          +// Inline turns list items into inline-block
          +.list-inline {
          +  @include list-unstyled;
          +  margin-left: -5px;
          +
          +  > li {
          +    display: inline-block;
          +    padding-left: 5px;
          +    padding-right: 5px;
          +  }
          +}
          +
          +// Description Lists
          +dl {
          +  margin-top: 0; // Remove browser default
          +  margin-bottom: $line-height-computed;
          +}
          +dt,
          +dd {
          +  line-height: $line-height-base;
          +}
          +dt {
          +  font-weight: bold;
          +}
          +dd {
          +  margin-left: 0; // Undo browser default
          +}
          +
          +// Horizontal description lists
          +//
          +// Defaults to being stacked without any of the below styles applied, until the
          +// grid breakpoint is reached (default of ~768px).
          +
          +.dl-horizontal {
          +  dd {
          +    @include clearfix; // Clear the floated `dt` if an empty `dd` is present
          +  }
          +
          +  @media (min-width: $dl-horizontal-breakpoint) {
          +    dt {
          +      float: left;
          +      width: ($dl-horizontal-offset - 20);
          +      clear: left;
          +      text-align: right;
          +      @include text-overflow;
          +    }
          +    dd {
          +      margin-left: $dl-horizontal-offset;
          +    }
          +  }
          +}
          +
          +
          +// Misc
          +// -------------------------
          +
          +// Abbreviations and acronyms
          +abbr[title],
          +// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
          +abbr[data-original-title] {
          +  cursor: help;
          +  border-bottom: 1px dotted $abbr-border-color;
          +}
          +.initialism {
          +  font-size: 90%;
          +  @extend .text-uppercase;
          +}
          +
          +// Blockquotes
          +blockquote {
          +  padding: ($line-height-computed / 2) $line-height-computed;
          +  margin: 0 0 $line-height-computed;
          +  font-size: $blockquote-font-size;
          +  border-left: 5px solid $blockquote-border-color;
          +
          +  p,
          +  ul,
          +  ol {
          +    &:last-child {
          +      margin-bottom: 0;
          +    }
          +  }
          +
          +  // Note: Deprecated small and .small as of v3.1.0
          +  // Context: https://github.com/twbs/bootstrap/issues/11660
          +  footer,
          +  small,
          +  .small {
          +    display: block;
          +    font-size: 80%; // back to default font-size
          +    line-height: $line-height-base;
          +    color: $blockquote-small-color;
          +
          +    &:before {
          +      content: '\2014 \00A0'; // em dash, nbsp
          +    }
          +  }
          +}
          +
          +// Opposite alignment of blockquote
          +//
          +// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
          +.blockquote-reverse,
          +blockquote.pull-right {
          +  padding-right: 15px;
          +  padding-left: 0;
          +  border-right: 5px solid $blockquote-border-color;
          +  border-left: 0;
          +  text-align: right;
          +
          +  // Account for citation
          +  footer,
          +  small,
          +  .small {
          +    &:before { content: ''; }
          +    &:after {
          +      content: '\00A0 \2014'; // nbsp, em dash
          +    }
          +  }
          +}
          +
          +// Addresses
          +address {
          +  margin-bottom: $line-height-computed;
          +  font-style: normal;
          +  line-height: $line-height-base;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_utilities.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_utilities.scss
          new file mode 100644
          index 0000000..8c99c71
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_utilities.scss
          @@ -0,0 +1,55 @@
          +//
          +// Utility classes
          +// --------------------------------------------------
          +
          +
          +// Floats
          +// -------------------------
          +
          +.clearfix {
          +  @include clearfix;
          +}
          +.center-block {
          +  @include center-block;
          +}
          +.pull-right {
          +  float: right !important;
          +}
          +.pull-left {
          +  float: left !important;
          +}
          +
          +
          +// Toggling content
          +// -------------------------
          +
          +// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
          +.hide {
          +  display: none !important;
          +}
          +.show {
          +  display: block !important;
          +}
          +.invisible {
          +  visibility: hidden;
          +}
          +.text-hide {
          +  @include text-hide;
          +}
          +
          +
          +// Hide from screenreaders and browsers
          +//
          +// Credit: HTML5 Boilerplate
          +
          +.hidden {
          +  display: none !important;
          +}
          +
          +
          +// For Affix plugin
          +// -------------------------
          +
          +.affix {
          +  position: fixed;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_variables.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_variables.scss
          new file mode 100644
          index 0000000..0703b0c
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_variables.scss
          @@ -0,0 +1,874 @@
          +$bootstrap-sass-asset-helper: false !default;
          +//
          +// Variables
          +// --------------------------------------------------
          +
          +
          +//== Colors
          +//
          +//## Gray and brand colors for use across Bootstrap.
          +
          +$gray-base:              #000 !default;
          +$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
          +$gray-dark:              lighten($gray-base, 20%) !default;   // #333
          +$gray:                   lighten($gray-base, 33.5%) !default; // #555
          +$gray-light:             lighten($gray-base, 46.7%) !default; // #777
          +$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
          +
          +$brand-primary:         darken(#428bca, 6.5%) !default; // #337ab7
          +$brand-success:         #5cb85c !default;
          +$brand-info:            #5bc0de !default;
          +$brand-warning:         #f0ad4e !default;
          +$brand-danger:          #d9534f !default;
          +
          +
          +//== Scaffolding
          +//
          +//## Settings for some of the most global styles.
          +
          +//** Background color for `<body>`.
          +$body-bg:               #fff !default;
          +//** Global text color on `<body>`.
          +$text-color:            $gray-dark !default;
          +
          +//** Global textual link color.
          +$link-color:            $brand-primary !default;
          +//** Link hover color set via `darken()` function.
          +$link-hover-color:      darken($link-color, 15%) !default;
          +//** Link hover decoration.
          +$link-hover-decoration: underline !default;
          +
          +
          +//== Typography
          +//
          +//## Font, line-height, and color for body text, headings, and more.
          +
          +$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
          +$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
          +//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
          +$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
          +$font-family-base:        $font-family-sans-serif !default;
          +
          +$font-size-base:          14px !default;
          +$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
          +$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
          +
          +$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
          +$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
          +$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
          +$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
          +$font-size-h5:            $font-size-base !default;
          +$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
          +
          +//** Unit-less `line-height` for use in components like buttons.
          +$line-height-base:        1.428571429 !default; // 20/14
          +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
          +$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
          +
          +//** By default, this inherits from the `<body>`.
          +$headings-font-family:    inherit !default;
          +$headings-font-weight:    500 !default;
          +$headings-line-height:    1.1 !default;
          +$headings-color:          inherit !default;
          +
          +
          +//== Iconography
          +//
          +//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
          +
          +//** Load fonts from this directory.
          +
          +// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
          +// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
          +$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
          +
          +//** File name for all font files.
          +$icon-font-name:          "glyphicons-halflings-regular" !default;
          +//** Element ID within SVG icon file.
          +$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
          +
          +
          +//== Components
          +//
          +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
          +
          +$padding-base-vertical:     6px !default;
          +$padding-base-horizontal:   12px !default;
          +
          +$padding-large-vertical:    10px !default;
          +$padding-large-horizontal:  16px !default;
          +
          +$padding-small-vertical:    5px !default;
          +$padding-small-horizontal:  10px !default;
          +
          +$padding-xs-vertical:       1px !default;
          +$padding-xs-horizontal:     5px !default;
          +
          +$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
          +$line-height-small:         1.5 !default;
          +
          +$border-radius-base:        4px !default;
          +$border-radius-large:       6px !default;
          +$border-radius-small:       3px !default;
          +
          +//** Global color for active items (e.g., navs or dropdowns).
          +$component-active-color:    #fff !default;
          +//** Global background color for active items (e.g., navs or dropdowns).
          +$component-active-bg:       $brand-primary !default;
          +
          +//** Width of the `border` for generating carets that indicator dropdowns.
          +$caret-width-base:          4px !default;
          +//** Carets increase slightly in size for larger components.
          +$caret-width-large:         5px !default;
          +
          +
          +//== Tables
          +//
          +//## Customizes the `.table` component with basic values, each used across all table variations.
          +
          +//** Padding for `<th>`s and `<td>`s.
          +$table-cell-padding:            8px !default;
          +//** Padding for cells in `.table-condensed`.
          +$table-condensed-cell-padding:  5px !default;
          +
          +//** Default background color used for all tables.
          +$table-bg:                      transparent !default;
          +//** Background color used for `.table-striped`.
          +$table-bg-accent:               #f9f9f9 !default;
          +//** Background color used for `.table-hover`.
          +$table-bg-hover:                #f5f5f5 !default;
          +$table-bg-active:               $table-bg-hover !default;
          +
          +//** Border color for table and cell borders.
          +$table-border-color:            #ddd !default;
          +
          +
          +//== Buttons
          +//
          +//## For each of Bootstrap's buttons, define text, background and border color.
          +
          +$btn-font-weight:                normal !default;
          +
          +$btn-default-color:              #333 !default;
          +$btn-default-bg:                 #fff !default;
          +$btn-default-border:             #ccc !default;
          +
          +$btn-primary-color:              #fff !default;
          +$btn-primary-bg:                 $brand-primary !default;
          +$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
          +
          +$btn-success-color:              #fff !default;
          +$btn-success-bg:                 $brand-success !default;
          +$btn-success-border:             darken($btn-success-bg, 5%) !default;
          +
          +$btn-info-color:                 #fff !default;
          +$btn-info-bg:                    $brand-info !default;
          +$btn-info-border:                darken($btn-info-bg, 5%) !default;
          +
          +$btn-warning-color:              #fff !default;
          +$btn-warning-bg:                 $brand-warning !default;
          +$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
          +
          +$btn-danger-color:               #fff !default;
          +$btn-danger-bg:                  $brand-danger !default;
          +$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
          +
          +$btn-link-disabled-color:        $gray-light !default;
          +
          +// Allows for customizing button radius independently from global border radius
          +$btn-border-radius-base:         $border-radius-base !default;
          +$btn-border-radius-large:        $border-radius-large !default;
          +$btn-border-radius-small:        $border-radius-small !default;
          +
          +
          +//== Forms
          +//
          +//##
          +
          +//** `<input>` background color
          +$input-bg:                       #fff !default;
          +//** `<input disabled>` background color
          +$input-bg-disabled:              $gray-lighter !default;
          +
          +//** Text color for `<input>`s
          +$input-color:                    $gray !default;
          +//** `<input>` border color
          +$input-border:                   #ccc !default;
          +
          +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
          +//** Default `.form-control` border radius
          +// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
          +$input-border-radius:            $border-radius-base !default;
          +//** Large `.form-control` border radius
          +$input-border-radius-large:      $border-radius-large !default;
          +//** Small `.form-control` border radius
          +$input-border-radius-small:      $border-radius-small !default;
          +
          +//** Border color for inputs on focus
          +$input-border-focus:             #66afe9 !default;
          +
          +//** Placeholder text color
          +$input-color-placeholder:        #999 !default;
          +
          +//** Default `.form-control` height
          +$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
          +//** Large `.form-control` height
          +$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
          +//** Small `.form-control` height
          +$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
          +
          +//** `.form-group` margin
          +$form-group-margin-bottom:       15px !default;
          +
          +$legend-color:                   $gray-dark !default;
          +$legend-border-color:            #e5e5e5 !default;
          +
          +//** Background color for textual input addons
          +$input-group-addon-bg:           $gray-lighter !default;
          +//** Border color for textual input addons
          +$input-group-addon-border-color: $input-border !default;
          +
          +//** Disabled cursor for form controls and buttons.
          +$cursor-disabled:                not-allowed !default;
          +
          +
          +//== Dropdowns
          +//
          +//## Dropdown menu container and contents.
          +
          +//** Background for the dropdown menu.
          +$dropdown-bg:                    #fff !default;
          +//** Dropdown menu `border-color`.
          +$dropdown-border:                rgba(0,0,0,.15) !default;
          +//** Dropdown menu `border-color` **for IE8**.
          +$dropdown-fallback-border:       #ccc !default;
          +//** Divider color for between dropdown items.
          +$dropdown-divider-bg:            #e5e5e5 !default;
          +
          +//** Dropdown link text color.
          +$dropdown-link-color:            $gray-dark !default;
          +//** Hover color for dropdown links.
          +$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
          +//** Hover background for dropdown links.
          +$dropdown-link-hover-bg:         #f5f5f5 !default;
          +
          +//** Active dropdown menu item text color.
          +$dropdown-link-active-color:     $component-active-color !default;
          +//** Active dropdown menu item background color.
          +$dropdown-link-active-bg:        $component-active-bg !default;
          +
          +//** Disabled dropdown menu item background color.
          +$dropdown-link-disabled-color:   $gray-light !default;
          +
          +//** Text color for headers within dropdown menus.
          +$dropdown-header-color:          $gray-light !default;
          +
          +//** Deprecated `$dropdown-caret-color` as of v3.1.0
          +$dropdown-caret-color:           #000 !default;
          +
          +
          +//-- Z-index master list
          +//
          +// Warning: Avoid customizing these values. They're used for a bird's eye view
          +// of components dependent on the z-axis and are designed to all work together.
          +//
          +// Note: These variables are not generated into the Customizer.
          +
          +$zindex-navbar:            1000 !default;
          +$zindex-dropdown:          1000 !default;
          +$zindex-popover:           1060 !default;
          +$zindex-tooltip:           1070 !default;
          +$zindex-navbar-fixed:      1030 !default;
          +$zindex-modal-background:  1040 !default;
          +$zindex-modal:             1050 !default;
          +
          +
          +//== Media queries breakpoints
          +//
          +//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
          +
          +// Extra small screen / phone
          +//** Deprecated `$screen-xs` as of v3.0.1
          +$screen-xs:                  480px !default;
          +//** Deprecated `$screen-xs-min` as of v3.2.0
          +$screen-xs-min:              $screen-xs !default;
          +//** Deprecated `$screen-phone` as of v3.0.1
          +$screen-phone:               $screen-xs-min !default;
          +
          +// Small screen / tablet
          +//** Deprecated `$screen-sm` as of v3.0.1
          +$screen-sm:                  768px !default;
          +$screen-sm-min:              $screen-sm !default;
          +//** Deprecated `$screen-tablet` as of v3.0.1
          +$screen-tablet:              $screen-sm-min !default;
          +
          +// Medium screen / desktop
          +//** Deprecated `$screen-md` as of v3.0.1
          +$screen-md:                  992px !default;
          +$screen-md-min:              $screen-md !default;
          +//** Deprecated `$screen-desktop` as of v3.0.1
          +$screen-desktop:             $screen-md-min !default;
          +
          +// Large screen / wide desktop
          +//** Deprecated `$screen-lg` as of v3.0.1
          +$screen-lg:                  1200px !default;
          +$screen-lg-min:              $screen-lg !default;
          +//** Deprecated `$screen-lg-desktop` as of v3.0.1
          +$screen-lg-desktop:          $screen-lg-min !default;
          +
          +// So media queries don't overlap when required, provide a maximum
          +$screen-xs-max:              ($screen-sm-min - 1) !default;
          +$screen-sm-max:              ($screen-md-min - 1) !default;
          +$screen-md-max:              ($screen-lg-min - 1) !default;
          +
          +
          +//== Grid system
          +//
          +//## Define your custom responsive grid.
          +
          +//** Number of columns in the grid.
          +$grid-columns:              12 !default;
          +//** Padding between columns. Gets divided in half for the left and right.
          +$grid-gutter-width:         30px !default;
          +// Navbar collapse
          +//** Point at which the navbar becomes uncollapsed.
          +$grid-float-breakpoint:     $screen-sm-min !default;
          +//** Point at which the navbar begins collapsing.
          +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
          +
          +
          +//== Container sizes
          +//
          +//## Define the maximum width of `.container` for different screen sizes.
          +
          +// Small screen / tablet
          +$container-tablet:             (720px + $grid-gutter-width) !default;
          +//** For `$screen-sm-min` and up.
          +$container-sm:                 $container-tablet !default;
          +
          +// Medium screen / desktop
          +$container-desktop:            (940px + $grid-gutter-width) !default;
          +//** For `$screen-md-min` and up.
          +$container-md:                 $container-desktop !default;
          +
          +// Large screen / wide desktop
          +$container-large-desktop:      (1140px + $grid-gutter-width) !default;
          +//** For `$screen-lg-min` and up.
          +$container-lg:                 $container-large-desktop !default;
          +
          +
          +//== Navbar
          +//
          +//##
          +
          +// Basics of a navbar
          +$navbar-height:                    50px !default;
          +$navbar-margin-bottom:             $line-height-computed !default;
          +$navbar-border-radius:             $border-radius-base !default;
          +$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
          +$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
          +$navbar-collapse-max-height:       340px !default;
          +
          +$navbar-default-color:             #777 !default;
          +$navbar-default-bg:                #f8f8f8 !default;
          +$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
          +
          +// Navbar links
          +$navbar-default-link-color:                #777 !default;
          +$navbar-default-link-hover-color:          #333 !default;
          +$navbar-default-link-hover-bg:             transparent !default;
          +$navbar-default-link-active-color:         #555 !default;
          +$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
          +$navbar-default-link-disabled-color:       #ccc !default;
          +$navbar-default-link-disabled-bg:          transparent !default;
          +
          +// Navbar brand label
          +$navbar-default-brand-color:               $navbar-default-link-color !default;
          +$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;
          +$navbar-default-brand-hover-bg:            transparent !default;
          +
          +// Navbar toggle
          +$navbar-default-toggle-hover-bg:           #ddd !default;
          +$navbar-default-toggle-icon-bar-bg:        #888 !default;
          +$navbar-default-toggle-border-color:       #ddd !default;
          +
          +
          +//=== Inverted navbar
          +// Reset inverted navbar basics
          +$navbar-inverse-color:                      lighten($gray-light, 15%) !default;
          +$navbar-inverse-bg:                         #222 !default;
          +$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
          +
          +// Inverted navbar links
          +$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;
          +$navbar-inverse-link-hover-color:           #fff !default;
          +$navbar-inverse-link-hover-bg:              transparent !default;
          +$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
          +$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
          +$navbar-inverse-link-disabled-color:        #444 !default;
          +$navbar-inverse-link-disabled-bg:           transparent !default;
          +
          +// Inverted navbar brand label
          +$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
          +$navbar-inverse-brand-hover-color:          #fff !default;
          +$navbar-inverse-brand-hover-bg:             transparent !default;
          +
          +// Inverted navbar toggle
          +$navbar-inverse-toggle-hover-bg:            #333 !default;
          +$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
          +$navbar-inverse-toggle-border-color:        #333 !default;
          +
          +
          +//== Navs
          +//
          +//##
          +
          +//=== Shared nav styles
          +$nav-link-padding:                          10px 15px !default;
          +$nav-link-hover-bg:                         $gray-lighter !default;
          +
          +$nav-disabled-link-color:                   $gray-light !default;
          +$nav-disabled-link-hover-color:             $gray-light !default;
          +
          +//== Tabs
          +$nav-tabs-border-color:                     #ddd !default;
          +
          +$nav-tabs-link-hover-border-color:          $gray-lighter !default;
          +
          +$nav-tabs-active-link-hover-bg:             $body-bg !default;
          +$nav-tabs-active-link-hover-color:          $gray !default;
          +$nav-tabs-active-link-hover-border-color:   #ddd !default;
          +
          +$nav-tabs-justified-link-border-color:            #ddd !default;
          +$nav-tabs-justified-active-link-border-color:     $body-bg !default;
          +
          +//== Pills
          +$nav-pills-border-radius:                   $border-radius-base !default;
          +$nav-pills-active-link-hover-bg:            $component-active-bg !default;
          +$nav-pills-active-link-hover-color:         $component-active-color !default;
          +
          +
          +//== Pagination
          +//
          +//##
          +
          +$pagination-color:                     $link-color !default;
          +$pagination-bg:                        #fff !default;
          +$pagination-border:                    #ddd !default;
          +
          +$pagination-hover-color:               $link-hover-color !default;
          +$pagination-hover-bg:                  $gray-lighter !default;
          +$pagination-hover-border:              #ddd !default;
          +
          +$pagination-active-color:              #fff !default;
          +$pagination-active-bg:                 $brand-primary !default;
          +$pagination-active-border:             $brand-primary !default;
          +
          +$pagination-disabled-color:            $gray-light !default;
          +$pagination-disabled-bg:               #fff !default;
          +$pagination-disabled-border:           #ddd !default;
          +
          +
          +//== Pager
          +//
          +//##
          +
          +$pager-bg:                             $pagination-bg !default;
          +$pager-border:                         $pagination-border !default;
          +$pager-border-radius:                  15px !default;
          +
          +$pager-hover-bg:                       $pagination-hover-bg !default;
          +
          +$pager-active-bg:                      $pagination-active-bg !default;
          +$pager-active-color:                   $pagination-active-color !default;
          +
          +$pager-disabled-color:                 $pagination-disabled-color !default;
          +
          +
          +//== Jumbotron
          +//
          +//##
          +
          +$jumbotron-padding:              30px !default;
          +$jumbotron-color:                inherit !default;
          +$jumbotron-bg:                   $gray-lighter !default;
          +$jumbotron-heading-color:        inherit !default;
          +$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
          +$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
          +
          +
          +//== Form states and alerts
          +//
          +//## Define colors for form feedback states and, by default, alerts.
          +
          +$state-success-text:             #3c763d !default;
          +$state-success-bg:               #dff0d8 !default;
          +$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
          +
          +$state-info-text:                #31708f !default;
          +$state-info-bg:                  #d9edf7 !default;
          +$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
          +
          +$state-warning-text:             #8a6d3b !default;
          +$state-warning-bg:               #fcf8e3 !default;
          +$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
          +
          +$state-danger-text:              #a94442 !default;
          +$state-danger-bg:                #f2dede !default;
          +$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
          +
          +
          +//== Tooltips
          +//
          +//##
          +
          +//** Tooltip max width
          +$tooltip-max-width:           200px !default;
          +//** Tooltip text color
          +$tooltip-color:               #fff !default;
          +//** Tooltip background color
          +$tooltip-bg:                  #000 !default;
          +$tooltip-opacity:             .9 !default;
          +
          +//** Tooltip arrow width
          +$tooltip-arrow-width:         5px !default;
          +//** Tooltip arrow color
          +$tooltip-arrow-color:         $tooltip-bg !default;
          +
          +
          +//== Popovers
          +//
          +//##
          +
          +//** Popover body background color
          +$popover-bg:                          #fff !default;
          +//** Popover maximum width
          +$popover-max-width:                   276px !default;
          +//** Popover border color
          +$popover-border-color:                rgba(0,0,0,.2) !default;
          +//** Popover fallback border color
          +$popover-fallback-border-color:       #ccc !default;
          +
          +//** Popover title background color
          +$popover-title-bg:                    darken($popover-bg, 3%) !default;
          +
          +//** Popover arrow width
          +$popover-arrow-width:                 10px !default;
          +//** Popover arrow color
          +$popover-arrow-color:                 $popover-bg !default;
          +
          +//** Popover outer arrow width
          +$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
          +//** Popover outer arrow color
          +$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;
          +//** Popover outer arrow fallback color
          +$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
          +
          +
          +//== Labels
          +//
          +//##
          +
          +//** Default label background color
          +$label-default-bg:            $gray-light !default;
          +//** Primary label background color
          +$label-primary-bg:            $brand-primary !default;
          +//** Success label background color
          +$label-success-bg:            $brand-success !default;
          +//** Info label background color
          +$label-info-bg:               $brand-info !default;
          +//** Warning label background color
          +$label-warning-bg:            $brand-warning !default;
          +//** Danger label background color
          +$label-danger-bg:             $brand-danger !default;
          +
          +//** Default label text color
          +$label-color:                 #fff !default;
          +//** Default text color of a linked label
          +$label-link-hover-color:      #fff !default;
          +
          +
          +//== Modals
          +//
          +//##
          +
          +//** Padding applied to the modal body
          +$modal-inner-padding:         15px !default;
          +
          +//** Padding applied to the modal title
          +$modal-title-padding:         15px !default;
          +//** Modal title line-height
          +$modal-title-line-height:     $line-height-base !default;
          +
          +//** Background color of modal content area
          +$modal-content-bg:                             #fff !default;
          +//** Modal content border color
          +$modal-content-border-color:                   rgba(0,0,0,.2) !default;
          +//** Modal content border color **for IE8**
          +$modal-content-fallback-border-color:          #999 !default;
          +
          +//** Modal backdrop background color
          +$modal-backdrop-bg:           #000 !default;
          +//** Modal backdrop opacity
          +$modal-backdrop-opacity:      .5 !default;
          +//** Modal header border color
          +$modal-header-border-color:   #e5e5e5 !default;
          +//** Modal footer border color
          +$modal-footer-border-color:   $modal-header-border-color !default;
          +
          +$modal-lg:                    900px !default;
          +$modal-md:                    600px !default;
          +$modal-sm:                    300px !default;
          +
          +
          +//== Alerts
          +//
          +//## Define alert colors, border radius, and padding.
          +
          +$alert-padding:               15px !default;
          +$alert-border-radius:         $border-radius-base !default;
          +$alert-link-font-weight:      bold !default;
          +
          +$alert-success-bg:            $state-success-bg !default;
          +$alert-success-text:          $state-success-text !default;
          +$alert-success-border:        $state-success-border !default;
          +
          +$alert-info-bg:               $state-info-bg !default;
          +$alert-info-text:             $state-info-text !default;
          +$alert-info-border:           $state-info-border !default;
          +
          +$alert-warning-bg:            $state-warning-bg !default;
          +$alert-warning-text:          $state-warning-text !default;
          +$alert-warning-border:        $state-warning-border !default;
          +
          +$alert-danger-bg:             $state-danger-bg !default;
          +$alert-danger-text:           $state-danger-text !default;
          +$alert-danger-border:         $state-danger-border !default;
          +
          +
          +//== Progress bars
          +//
          +//##
          +
          +//** Background color of the whole progress component
          +$progress-bg:                 #f5f5f5 !default;
          +//** Progress bar text color
          +$progress-bar-color:          #fff !default;
          +//** Variable for setting rounded corners on progress bar.
          +$progress-border-radius:      $border-radius-base !default;
          +
          +//** Default progress bar color
          +$progress-bar-bg:             $brand-primary !default;
          +//** Success progress bar color
          +$progress-bar-success-bg:     $brand-success !default;
          +//** Warning progress bar color
          +$progress-bar-warning-bg:     $brand-warning !default;
          +//** Danger progress bar color
          +$progress-bar-danger-bg:      $brand-danger !default;
          +//** Info progress bar color
          +$progress-bar-info-bg:        $brand-info !default;
          +
          +
          +//== List group
          +//
          +//##
          +
          +//** Background color on `.list-group-item`
          +$list-group-bg:                 #fff !default;
          +//** `.list-group-item` border color
          +$list-group-border:             #ddd !default;
          +//** List group border radius
          +$list-group-border-radius:      $border-radius-base !default;
          +
          +//** Background color of single list items on hover
          +$list-group-hover-bg:           #f5f5f5 !default;
          +//** Text color of active list items
          +$list-group-active-color:       $component-active-color !default;
          +//** Background color of active list items
          +$list-group-active-bg:          $component-active-bg !default;
          +//** Border color of active list elements
          +$list-group-active-border:      $list-group-active-bg !default;
          +//** Text color for content within active list items
          +$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
          +
          +//** Text color of disabled list items
          +$list-group-disabled-color:      $gray-light !default;
          +//** Background color of disabled list items
          +$list-group-disabled-bg:         $gray-lighter !default;
          +//** Text color for content within disabled list items
          +$list-group-disabled-text-color: $list-group-disabled-color !default;
          +
          +$list-group-link-color:         #555 !default;
          +$list-group-link-hover-color:   $list-group-link-color !default;
          +$list-group-link-heading-color: #333 !default;
          +
          +
          +//== Panels
          +//
          +//##
          +
          +$panel-bg:                    #fff !default;
          +$panel-body-padding:          15px !default;
          +$panel-heading-padding:       10px 15px !default;
          +$panel-footer-padding:        $panel-heading-padding !default;
          +$panel-border-radius:         $border-radius-base !default;
          +
          +//** Border color for elements within panels
          +$panel-inner-border:          #ddd !default;
          +$panel-footer-bg:             #f5f5f5 !default;
          +
          +$panel-default-text:          $gray-dark !default;
          +$panel-default-border:        #ddd !default;
          +$panel-default-heading-bg:    #f5f5f5 !default;
          +
          +$panel-primary-text:          #fff !default;
          +$panel-primary-border:        $brand-primary !default;
          +$panel-primary-heading-bg:    $brand-primary !default;
          +
          +$panel-success-text:          $state-success-text !default;
          +$panel-success-border:        $state-success-border !default;
          +$panel-success-heading-bg:    $state-success-bg !default;
          +
          +$panel-info-text:             $state-info-text !default;
          +$panel-info-border:           $state-info-border !default;
          +$panel-info-heading-bg:       $state-info-bg !default;
          +
          +$panel-warning-text:          $state-warning-text !default;
          +$panel-warning-border:        $state-warning-border !default;
          +$panel-warning-heading-bg:    $state-warning-bg !default;
          +
          +$panel-danger-text:           $state-danger-text !default;
          +$panel-danger-border:         $state-danger-border !default;
          +$panel-danger-heading-bg:     $state-danger-bg !default;
          +
          +
          +//== Thumbnails
          +//
          +//##
          +
          +//** Padding around the thumbnail image
          +$thumbnail-padding:           4px !default;
          +//** Thumbnail background color
          +$thumbnail-bg:                $body-bg !default;
          +//** Thumbnail border color
          +$thumbnail-border:            #ddd !default;
          +//** Thumbnail border radius
          +$thumbnail-border-radius:     $border-radius-base !default;
          +
          +//** Custom text color for thumbnail captions
          +$thumbnail-caption-color:     $text-color !default;
          +//** Padding around the thumbnail caption
          +$thumbnail-caption-padding:   9px !default;
          +
          +
          +//== Wells
          +//
          +//##
          +
          +$well-bg:                     #f5f5f5 !default;
          +$well-border:                 darken($well-bg, 7%) !default;
          +
          +
          +//== Badges
          +//
          +//##
          +
          +$badge-color:                 #fff !default;
          +//** Linked badge text color on hover
          +$badge-link-hover-color:      #fff !default;
          +$badge-bg:                    $gray-light !default;
          +
          +//** Badge text color in active nav link
          +$badge-active-color:          $link-color !default;
          +//** Badge background color in active nav link
          +$badge-active-bg:             #fff !default;
          +
          +$badge-font-weight:           bold !default;
          +$badge-line-height:           1 !default;
          +$badge-border-radius:         10px !default;
          +
          +
          +//== Breadcrumbs
          +//
          +//##
          +
          +$breadcrumb-padding-vertical:   8px !default;
          +$breadcrumb-padding-horizontal: 15px !default;
          +//** Breadcrumb background color
          +$breadcrumb-bg:                 #f5f5f5 !default;
          +//** Breadcrumb text color
          +$breadcrumb-color:              #ccc !default;
          +//** Text color of current page in the breadcrumb
          +$breadcrumb-active-color:       $gray-light !default;
          +//** Textual separator for between breadcrumb elements
          +$breadcrumb-separator:          "/" !default;
          +
          +
          +//== Carousel
          +//
          +//##
          +
          +$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
          +
          +$carousel-control-color:                      #fff !default;
          +$carousel-control-width:                      15% !default;
          +$carousel-control-opacity:                    .5 !default;
          +$carousel-control-font-size:                  20px !default;
          +
          +$carousel-indicator-active-bg:                #fff !default;
          +$carousel-indicator-border-color:             #fff !default;
          +
          +$carousel-caption-color:                      #fff !default;
          +
          +
          +//== Close
          +//
          +//##
          +
          +$close-font-weight:           bold !default;
          +$close-color:                 #000 !default;
          +$close-text-shadow:           0 1px 0 #fff !default;
          +
          +
          +//== Code
          +//
          +//##
          +
          +$code-color:                  #c7254e !default;
          +$code-bg:                     #f9f2f4 !default;
          +
          +$kbd-color:                   #fff !default;
          +$kbd-bg:                      #333 !default;
          +
          +$pre-bg:                      #f5f5f5 !default;
          +$pre-color:                   $gray-dark !default;
          +$pre-border-color:            #ccc !default;
          +$pre-scrollable-max-height:   340px !default;
          +
          +
          +//== Type
          +//
          +//##
          +
          +//** Horizontal offset for forms and lists.
          +$component-offset-horizontal: 180px !default;
          +//** Text muted color
          +$text-muted:                  $gray-light !default;
          +//** Abbreviations and acronyms border color
          +$abbr-border-color:           $gray-light !default;
          +//** Headings small color
          +$headings-small-color:        $gray-light !default;
          +//** Blockquote small color
          +$blockquote-small-color:      $gray-light !default;
          +//** Blockquote font size
          +$blockquote-font-size:        ($font-size-base * 1.25) !default;
          +//** Blockquote border color
          +$blockquote-border-color:     $gray-lighter !default;
          +//** Page header border color
          +$page-header-border-color:    $gray-lighter !default;
          +//** Width of horizontal description list titles
          +$dl-horizontal-offset:        $component-offset-horizontal !default;
          +//** Point at which .dl-horizontal becomes horizontal
          +$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
          +//** Horizontal line color.
          +$hr-border:                   $gray-lighter !default;
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/_wells.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/_wells.scss
          new file mode 100644
          index 0000000..b865711
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/_wells.scss
          @@ -0,0 +1,29 @@
          +//
          +// Wells
          +// --------------------------------------------------
          +
          +
          +// Base class
          +.well {
          +  min-height: 20px;
          +  padding: 19px;
          +  margin-bottom: 20px;
          +  background-color: $well-bg;
          +  border: 1px solid $well-border;
          +  border-radius: $border-radius-base;
          +  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
          +  blockquote {
          +    border-color: #ddd;
          +    border-color: rgba(0,0,0,.15);
          +  }
          +}
          +
          +// Sizes
          +.well-lg {
          +  padding: 24px;
          +  border-radius: $border-radius-large;
          +}
          +.well-sm {
          +  padding: 9px;
          +  border-radius: $border-radius-small;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss
          new file mode 100644
          index 0000000..3faf0b5
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss
          @@ -0,0 +1,14 @@
          +// Alerts
          +
          +@mixin alert-variant($background, $border, $text-color) {
          +  background-color: $background;
          +  border-color: $border;
          +  color: $text-color;
          +
          +  hr {
          +    border-top-color: darken($border, 5%);
          +  }
          +  .alert-link {
          +    color: darken($text-color, 10%);
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss
          new file mode 100644
          index 0000000..4c7769e
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss
          @@ -0,0 +1,12 @@
          +// Contextual backgrounds
          +
          +// [converter] $parent hack
          +@mixin bg-variant($parent, $color) {
          +  #{$parent} {
          +    background-color: $color;
          +  }
          +  a#{$parent}:hover,
          +  a#{$parent}:focus {
          +    background-color: darken($color, 10%);
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss
          new file mode 100644
          index 0000000..ce19499
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss
          @@ -0,0 +1,18 @@
          +// Single side border-radius
          +
          +@mixin border-top-radius($radius) {
          +  border-top-right-radius: $radius;
          +   border-top-left-radius: $radius;
          +}
          +@mixin border-right-radius($radius) {
          +  border-bottom-right-radius: $radius;
          +     border-top-right-radius: $radius;
          +}
          +@mixin border-bottom-radius($radius) {
          +  border-bottom-right-radius: $radius;
          +   border-bottom-left-radius: $radius;
          +}
          +@mixin border-left-radius($radius) {
          +  border-bottom-left-radius: $radius;
          +     border-top-left-radius: $radius;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss
          new file mode 100644
          index 0000000..b93f84b
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss
          @@ -0,0 +1,65 @@
          +// Button variants
          +//
          +// Easily pump out default styles, as well as :hover, :focus, :active,
          +// and disabled options for all buttons
          +
          +@mixin button-variant($color, $background, $border) {
          +  color: $color;
          +  background-color: $background;
          +  border-color: $border;
          +
          +  &:focus,
          +  &.focus {
          +    color: $color;
          +    background-color: darken($background, 10%);
          +        border-color: darken($border, 25%);
          +  }
          +  &:hover {
          +    color: $color;
          +    background-color: darken($background, 10%);
          +        border-color: darken($border, 12%);
          +  }
          +  &:active,
          +  &.active,
          +  .open > &.dropdown-toggle {
          +    color: $color;
          +    background-color: darken($background, 10%);
          +        border-color: darken($border, 12%);
          +
          +    &:hover,
          +    &:focus,
          +    &.focus {
          +      color: $color;
          +      background-color: darken($background, 17%);
          +          border-color: darken($border, 25%);
          +    }
          +  }
          +  &:active,
          +  &.active,
          +  .open > &.dropdown-toggle {
          +    background-image: none;
          +  }
          +  &.disabled,
          +  &[disabled],
          +  fieldset[disabled] & {
          +    &:hover,
          +    &:focus,
          +    &.focus {
          +      background-color: $background;
          +          border-color: $border;
          +    }
          +  }
          +
          +  .badge {
          +    color: $background;
          +    background-color: $color;
          +  }
          +}
          +
          +// Button sizes
          +@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
          +  padding: $padding-vertical $padding-horizontal;
          +  font-size: $font-size;
          +  line-height: $line-height;
          +  border-radius: $border-radius;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss
          new file mode 100644
          index 0000000..e06fb5e
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss
          @@ -0,0 +1,7 @@
          +// Center-align a block level element
          +
          +@mixin center-block() {
          +  display: block;
          +  margin-left: auto;
          +  margin-right: auto;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss
          new file mode 100644
          index 0000000..dc3e2ab
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss
          @@ -0,0 +1,22 @@
          +// Clearfix
          +//
          +// For modern browsers
          +// 1. The space content is one way to avoid an Opera bug when the
          +//    contenteditable attribute is included anywhere else in the document.
          +//    Otherwise it causes space to appear at the top and bottom of elements
          +//    that are clearfixed.
          +// 2. The use of `table` rather than `block` is only necessary if using
          +//    `:before` to contain the top-margins of child elements.
          +//
          +// Source: http://nicolasgallagher.com/micro-clearfix-hack/
          +
          +@mixin clearfix() {
          +  &:before,
          +  &:after {
          +    content: " "; // 1
          +    display: table; // 2
          +  }
          +  &:after {
          +    clear: both;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss
          new file mode 100644
          index 0000000..277aa5f
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss
          @@ -0,0 +1,88 @@
          +// Form validation states
          +//
          +// Used in forms.less to generate the form validation CSS for warnings, errors,
          +// and successes.
          +
          +@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
          +  // Color the label and help text
          +  .help-block,
          +  .control-label,
          +  .radio,
          +  .checkbox,
          +  .radio-inline,
          +  .checkbox-inline,
          +  &.radio label,
          +  &.checkbox label,
          +  &.radio-inline label,
          +  &.checkbox-inline label  {
          +    color: $text-color;
          +  }
          +  // Set the border and box shadow on specific inputs to match
          +  .form-control {
          +    border-color: $border-color;
          +    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
          +    &:focus {
          +      border-color: darken($border-color, 10%);
          +      $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
          +      @include box-shadow($shadow);
          +    }
          +  }
          +  // Set validation states also for addons
          +  .input-group-addon {
          +    color: $text-color;
          +    border-color: $border-color;
          +    background-color: $background-color;
          +  }
          +  // Optional feedback icon
          +  .form-control-feedback {
          +    color: $text-color;
          +  }
          +}
          +
          +
          +// Form control focus state
          +//
          +// Generate a customized focus state and for any input with the specified color,
          +// which defaults to the `$input-border-focus` variable.
          +//
          +// We highly encourage you to not customize the default value, but instead use
          +// this to tweak colors on an as-needed basis. This aesthetic change is based on
          +// WebKit's default styles, but applicable to a wider range of browsers. Its
          +// usability and accessibility should be taken into account with any change.
          +//
          +// Example usage: change the default blue border and shadow to white for better
          +// contrast against a dark gray background.
          +@mixin form-control-focus($color: $input-border-focus) {
          +  $color-rgba: rgba(red($color), green($color), blue($color), .6);
          +  &:focus {
          +    border-color: $color;
          +    outline: 0;
          +    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
          +  }
          +}
          +
          +// Form control sizing
          +//
          +// Relative text size, padding, and border-radii changes for form controls. For
          +// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
          +// element gets special love because it's special, and that's a fact!
          +// [converter] $parent hack
          +@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
          +  #{$parent} {
          +    height: $input-height;
          +    padding: $padding-vertical $padding-horizontal;
          +    font-size: $font-size;
          +    line-height: $line-height;
          +    border-radius: $border-radius;
          +  }
          +
          +  select#{$parent} {
          +    height: $input-height;
          +    line-height: $input-height;
          +  }
          +
          +  textarea#{$parent},
          +  select[multiple]#{$parent} {
          +    height: auto;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss
          new file mode 100644
          index 0000000..a8939f5
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss
          @@ -0,0 +1,58 @@
          +// Gradients
          +
          +
          +
          +// Horizontal gradient, from left to right
          +//
          +// Creates two color stops, start and end, by specifying a color and position for each color stop.
          +// Color stops are not available in IE9 and below.
          +@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
          +  background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
          +  background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12
          +  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
          +}
          +
          +// Vertical gradient, from top to bottom
          +//
          +// Creates two color stops, start and end, by specifying a color and position for each color stop.
          +// Color stops are not available in IE9 and below.
          +@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
          +  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+
          +  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12
          +  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
          +}
          +
          +@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
          +  background-repeat: repeat-x;
          +  background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
          +  background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12
          +  background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
          +}
          +@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
          +  background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
          +  background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
          +  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
          +  background-repeat: no-repeat;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
          +}
          +@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
          +  background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
          +  background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);
          +  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
          +  background-repeat: no-repeat;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
          +}
          +@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
          +  background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
          +  background-image: radial-gradient(circle, $inner-color, $outer-color);
          +  background-repeat: no-repeat;
          +}
          +@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
          +  background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
          +  background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
          +  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss
          new file mode 100644
          index 0000000..16d038c
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss
          @@ -0,0 +1,81 @@
          +// Framework grid generation
          +//
          +// Used only by Bootstrap to generate the correct number of grid classes given
          +// any value of `$grid-columns`.
          +
          +// [converter] This is defined recursively in LESS, but Sass supports real loops
          +@mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") {
          +  @for $i from (1 + 1) through $grid-columns {
          +    $list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}";
          +  }
          +  #{$list} {
          +    position: relative;
          +    // Prevent columns from collapsing when empty
          +    min-height: 1px;
          +    // Inner gutter via padding
          +    padding-left:  ceil(($grid-gutter-width / 2));
          +    padding-right: floor(($grid-gutter-width / 2));
          +  }
          +}
          +
          +
          +// [converter] This is defined recursively in LESS, but Sass supports real loops
          +@mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") {
          +  @for $i from (1 + 1) through $grid-columns {
          +    $list: "#{$list}, .col-#{$class}-#{$i}";
          +  }
          +  #{$list} {
          +    float: left;
          +  }
          +}
          +
          +
          +@mixin calc-grid-column($index, $class, $type) {
          +  @if ($type == width) and ($index > 0) {
          +    .col-#{$class}-#{$index} {
          +      width: percentage(($index / $grid-columns));
          +    }
          +  }
          +  @if ($type == push) and ($index > 0) {
          +    .col-#{$class}-push-#{$index} {
          +      left: percentage(($index / $grid-columns));
          +    }
          +  }
          +  @if ($type == push) and ($index == 0) {
          +    .col-#{$class}-push-0 {
          +      left: auto;
          +    }
          +  }
          +  @if ($type == pull) and ($index > 0) {
          +    .col-#{$class}-pull-#{$index} {
          +      right: percentage(($index / $grid-columns));
          +    }
          +  }
          +  @if ($type == pull) and ($index == 0) {
          +    .col-#{$class}-pull-0 {
          +      right: auto;
          +    }
          +  }
          +  @if ($type == offset) {
          +    .col-#{$class}-offset-#{$index} {
          +      margin-left: percentage(($index / $grid-columns));
          +    }
          +  }
          +}
          +
          +// [converter] This is defined recursively in LESS, but Sass supports real loops
          +@mixin loop-grid-columns($columns, $class, $type) {
          +  @for $i from 0 through $columns {
          +    @include calc-grid-column($i, $class, $type);
          +  }
          +}
          +
          +
          +// Create grid for specific class
          +@mixin make-grid($class) {
          +  @include float-grid-columns($class);
          +  @include loop-grid-columns($grid-columns, $class, width);
          +  @include loop-grid-columns($grid-columns, $class, pull);
          +  @include loop-grid-columns($grid-columns, $class, push);
          +  @include loop-grid-columns($grid-columns, $class, offset);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss
          new file mode 100644
          index 0000000..59551da
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss
          @@ -0,0 +1,122 @@
          +// Grid system
          +//
          +// Generate semantic grid columns with these mixins.
          +
          +// Centered container element
          +@mixin container-fixed($gutter: $grid-gutter-width) {
          +  margin-right: auto;
          +  margin-left: auto;
          +  padding-left:  floor(($gutter / 2));
          +  padding-right: ceil(($gutter / 2));
          +  @include clearfix;
          +}
          +
          +// Creates a wrapper for a series of columns
          +@mixin make-row($gutter: $grid-gutter-width) {
          +  margin-left:  ceil(($gutter / -2));
          +  margin-right: floor(($gutter / -2));
          +  @include clearfix;
          +}
          +
          +// Generate the extra small columns
          +@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
          +  position: relative;
          +  float: left;
          +  width: percentage(($columns / $grid-columns));
          +  min-height: 1px;
          +  padding-left:  ($gutter / 2);
          +  padding-right: ($gutter / 2);
          +}
          +@mixin make-xs-column-offset($columns) {
          +  margin-left: percentage(($columns / $grid-columns));
          +}
          +@mixin make-xs-column-push($columns) {
          +  left: percentage(($columns / $grid-columns));
          +}
          +@mixin make-xs-column-pull($columns) {
          +  right: percentage(($columns / $grid-columns));
          +}
          +
          +// Generate the small columns
          +@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
          +  position: relative;
          +  min-height: 1px;
          +  padding-left:  ($gutter / 2);
          +  padding-right: ($gutter / 2);
          +
          +  @media (min-width: $screen-sm-min) {
          +    float: left;
          +    width: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-sm-column-offset($columns) {
          +  @media (min-width: $screen-sm-min) {
          +    margin-left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-sm-column-push($columns) {
          +  @media (min-width: $screen-sm-min) {
          +    left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-sm-column-pull($columns) {
          +  @media (min-width: $screen-sm-min) {
          +    right: percentage(($columns / $grid-columns));
          +  }
          +}
          +
          +// Generate the medium columns
          +@mixin make-md-column($columns, $gutter: $grid-gutter-width) {
          +  position: relative;
          +  min-height: 1px;
          +  padding-left:  ($gutter / 2);
          +  padding-right: ($gutter / 2);
          +
          +  @media (min-width: $screen-md-min) {
          +    float: left;
          +    width: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-md-column-offset($columns) {
          +  @media (min-width: $screen-md-min) {
          +    margin-left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-md-column-push($columns) {
          +  @media (min-width: $screen-md-min) {
          +    left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-md-column-pull($columns) {
          +  @media (min-width: $screen-md-min) {
          +    right: percentage(($columns / $grid-columns));
          +  }
          +}
          +
          +// Generate the large columns
          +@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
          +  position: relative;
          +  min-height: 1px;
          +  padding-left:  ($gutter / 2);
          +  padding-right: ($gutter / 2);
          +
          +  @media (min-width: $screen-lg-min) {
          +    float: left;
          +    width: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-lg-column-offset($columns) {
          +  @media (min-width: $screen-lg-min) {
          +    margin-left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-lg-column-push($columns) {
          +  @media (min-width: $screen-lg-min) {
          +    left: percentage(($columns / $grid-columns));
          +  }
          +}
          +@mixin make-lg-column-pull($columns) {
          +  @media (min-width: $screen-lg-min) {
          +    right: percentage(($columns / $grid-columns));
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss
          new file mode 100644
          index 0000000..1767e02
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss
          @@ -0,0 +1,21 @@
          +// CSS image replacement
          +//
          +// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
          +// mixins being reused as classes with the same name, this doesn't hold up. As
          +// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
          +//
          +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
          +
          +// Deprecated as of v3.0.1 (has been removed in v4)
          +@mixin hide-text() {
          +  font: 0/0 a;
          +  color: transparent;
          +  text-shadow: none;
          +  background-color: transparent;
          +  border: 0;
          +}
          +
          +// New mixin to use as of v3.0.1
          +@mixin text-hide() {
          +  @include hide-text;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss
          new file mode 100644
          index 0000000..c8dcf5e
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss
          @@ -0,0 +1,33 @@
          +// Image Mixins
          +// - Responsive image
          +// - Retina image
          +
          +
          +// Responsive image
          +//
          +// Keep images from scaling beyond the width of their parents.
          +@mixin img-responsive($display: block) {
          +  display: $display;
          +  max-width: 100%; // Part 1: Set a maximum relative to the parent
          +  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
          +}
          +
          +
          +// Retina image
          +//
          +// Short retina mixin for setting background-image and -size. Note that the
          +// spelling of `min--moz-device-pixel-ratio` is intentional.
          +@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
          +  background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}"));
          +
          +  @media
          +  only screen and (-webkit-min-device-pixel-ratio: 2),
          +  only screen and (   min--moz-device-pixel-ratio: 2),
          +  only screen and (     -o-min-device-pixel-ratio: 2/1),
          +  only screen and (        min-device-pixel-ratio: 2),
          +  only screen and (                min-resolution: 192dpi),
          +  only screen and (                min-resolution: 2dppx) {
          +    background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}"));
          +    background-size: $width-1x $height-1x;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss
          new file mode 100644
          index 0000000..eda6dfd
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss
          @@ -0,0 +1,12 @@
          +// Labels
          +
          +@mixin label-variant($color) {
          +  background-color: $color;
          +
          +  &[href] {
          +    &:hover,
          +    &:focus {
          +      background-color: darken($color, 10%);
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss
          new file mode 100644
          index 0000000..c478eeb
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss
          @@ -0,0 +1,32 @@
          +// List Groups
          +
          +@mixin list-group-item-variant($state, $background, $color) {
          +  .list-group-item-#{$state} {
          +    color: $color;
          +    background-color: $background;
          +
          +    // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state}
          +  }
          +
          +  a.list-group-item-#{$state},
          +  button.list-group-item-#{$state} {
          +    color: $color;
          +
          +    .list-group-item-heading {
          +      color: inherit;
          +    }
          +
          +    &:hover,
          +    &:focus {
          +      color: $color;
          +      background-color: darken($background, 5%);
          +    }
          +    &.active,
          +    &.active:hover,
          +    &.active:focus {
          +      color: #fff;
          +      background-color: $color;
          +      border-color: $color;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss
          new file mode 100644
          index 0000000..2e6da02
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss
          @@ -0,0 +1,10 @@
          +// Horizontal dividers
          +//
          +// Dividers (basically an hr) within dropdowns and nav lists
          +
          +@mixin nav-divider($color: #e5e5e5) {
          +  height: 1px;
          +  margin: (($line-height-computed / 2) - 1) 0;
          +  overflow: hidden;
          +  background-color: $color;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss
          new file mode 100644
          index 0000000..c8fbf1a
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss
          @@ -0,0 +1,9 @@
          +// Navbar vertical align
          +//
          +// Vertically center elements in the navbar.
          +// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
          +
          +@mixin navbar-vertical-align($element-height) {
          +  margin-top: (($navbar-height - $element-height) / 2);
          +  margin-bottom: (($navbar-height - $element-height) / 2);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss
          new file mode 100644
          index 0000000..88e9a57
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss
          @@ -0,0 +1,8 @@
          +// Opacity
          +
          +@mixin opacity($opacity) {
          +  opacity: $opacity;
          +  // IE8 filter
          +  $opacity-ie: ($opacity * 100);
          +  filter: alpha(opacity=$opacity-ie);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss
          new file mode 100644
          index 0000000..d4a5404
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss
          @@ -0,0 +1,24 @@
          +// Pagination
          +
          +@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
          +  > li {
          +    > a,
          +    > span {
          +      padding: $padding-vertical $padding-horizontal;
          +      font-size: $font-size;
          +      line-height: $line-height;
          +    }
          +    &:first-child {
          +      > a,
          +      > span {
          +        @include border-left-radius($border-radius);
          +      }
          +    }
          +    &:last-child {
          +      > a,
          +      > span {
          +        @include border-right-radius($border-radius);
          +      }
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss
          new file mode 100644
          index 0000000..3ff31ae
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss
          @@ -0,0 +1,24 @@
          +// Panels
          +
          +@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
          +  border-color: $border;
          +
          +  & > .panel-heading {
          +    color: $heading-text-color;
          +    background-color: $heading-bg-color;
          +    border-color: $heading-border;
          +
          +    + .panel-collapse > .panel-body {
          +      border-top-color: $border;
          +    }
          +    .badge {
          +      color: $heading-bg-color;
          +      background-color: $heading-text-color;
          +    }
          +  }
          +  & > .panel-footer {
          +    + .panel-collapse > .panel-body {
          +      border-bottom-color: $border;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss
          new file mode 100644
          index 0000000..90a62af
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss
          @@ -0,0 +1,10 @@
          +// Progress bars
          +
          +@mixin progress-bar-variant($color) {
          +  background-color: $color;
          +
          +  // Deprecated parent class requirement as of v3.2.0
          +  .progress-striped & {
          +    @include gradient-striped;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss
          new file mode 100644
          index 0000000..bf73051
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss
          @@ -0,0 +1,8 @@
          +// Reset filters for IE
          +//
          +// When you need to remove a gradient background, do not forget to use this to reset
          +// the IE filter for IE9 and below.
          +
          +@mixin reset-filter() {
          +  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss
          new file mode 100644
          index 0000000..c9c2841
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss
          @@ -0,0 +1,18 @@
          +@mixin reset-text() {
          +  font-family: $font-family-base;
          +  // We deliberately do NOT reset font-size.
          +  font-style: normal;
          +  font-weight: normal;
          +  letter-spacing: normal;
          +  line-break: auto;
          +  line-height: $line-height-base;
          +  text-align: left; // Fallback for where `start` is not supported
          +  text-align: start;
          +  text-decoration: none;
          +  text-shadow: none;
          +  text-transform: none;
          +  white-space: normal;
          +  word-break: normal;
          +  word-spacing: normal;
          +  word-wrap: normal;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss
          new file mode 100644
          index 0000000..83fa637
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss
          @@ -0,0 +1,6 @@
          +// Resize anything
          +
          +@mixin resizable($direction) {
          +  resize: $direction; // Options: horizontal, vertical, both
          +  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss
          new file mode 100644
          index 0000000..cbdf777
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss
          @@ -0,0 +1,21 @@
          +// Responsive utilities
          +
          +//
          +// More easily include all the states for responsive-utilities.less.
          +// [converter] $parent hack
          +@mixin responsive-visibility($parent) {
          +  #{$parent} {
          +    display: block !important;
          +  }
          +  table#{$parent}  { display: table !important; }
          +  tr#{$parent}     { display: table-row !important; }
          +  th#{$parent},
          +  td#{$parent}     { display: table-cell !important; }
          +}
          +
          +// [converter] $parent hack
          +@mixin responsive-invisibility($parent) {
          +  #{$parent} {
          +    display: none !important;
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss
          new file mode 100644
          index 0000000..abbe246
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss
          @@ -0,0 +1,10 @@
          +// Sizing shortcuts
          +
          +@mixin size($width, $height) {
          +  width: $width;
          +  height: $height;
          +}
          +
          +@mixin square($size) {
          +  @include size($size, $size);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss
          new file mode 100644
          index 0000000..7df0ae7
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss
          @@ -0,0 +1,9 @@
          +// WebKit-style focus
          +
          +@mixin tab-focus() {
          +  // Default
          +  outline: thin dotted;
          +  // WebKit
          +  outline: 5px auto -webkit-focus-ring-color;
          +  outline-offset: -2px;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss
          new file mode 100644
          index 0000000..1367950
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss
          @@ -0,0 +1,28 @@
          +// Tables
          +
          +@mixin table-row-variant($state, $background) {
          +  // Exact selectors below required to override `.table-striped` and prevent
          +  // inheritance to nested tables.
          +  .table > thead > tr,
          +  .table > tbody > tr,
          +  .table > tfoot > tr {
          +    > td.#{$state},
          +    > th.#{$state},
          +    &.#{$state} > td,
          +    &.#{$state} > th {
          +      background-color: $background;
          +    }
          +  }
          +
          +  // Hover states for `.table-hover`
          +  // Note: this is not available for cells or rows within `thead` or `tfoot`.
          +  .table-hover > tbody > tr {
          +    > td.#{$state}:hover,
          +    > th.#{$state}:hover,
          +    &.#{$state}:hover > td,
          +    &:hover > .#{$state},
          +    &.#{$state}:hover > th {
          +      background-color: darken($background, 5%);
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss
          new file mode 100644
          index 0000000..3b446c4
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss
          @@ -0,0 +1,12 @@
          +// Typography
          +
          +// [converter] $parent hack
          +@mixin text-emphasis-variant($parent, $color) {
          +  #{$parent} {
          +    color: $color;
          +  }
          +  a#{$parent}:hover,
          +  a#{$parent}:focus {
          +    color: darken($color, 10%);
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss
          new file mode 100644
          index 0000000..1593b25
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss
          @@ -0,0 +1,8 @@
          +// Text overflow
          +// Requires inline-block or block for proper styling
          +
          +@mixin text-overflow() {
          +  overflow: hidden;
          +  text-overflow: ellipsis;
          +  white-space: nowrap;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss
          new file mode 100644
          index 0000000..b3d0371
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss
          @@ -0,0 +1,222 @@
          +// Vendor Prefixes
          +//
          +// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
          +// Autoprefixer in our Gruntfile. They have been removed in v4.
          +
          +// - Animations
          +// - Backface visibility
          +// - Box shadow
          +// - Box sizing
          +// - Content columns
          +// - Hyphens
          +// - Placeholder text
          +// - Transformations
          +// - Transitions
          +// - User Select
          +
          +
          +// Animations
          +@mixin animation($animation) {
          +  -webkit-animation: $animation;
          +       -o-animation: $animation;
          +          animation: $animation;
          +}
          +@mixin animation-name($name) {
          +  -webkit-animation-name: $name;
          +          animation-name: $name;
          +}
          +@mixin animation-duration($duration) {
          +  -webkit-animation-duration: $duration;
          +          animation-duration: $duration;
          +}
          +@mixin animation-timing-function($timing-function) {
          +  -webkit-animation-timing-function: $timing-function;
          +          animation-timing-function: $timing-function;
          +}
          +@mixin animation-delay($delay) {
          +  -webkit-animation-delay: $delay;
          +          animation-delay: $delay;
          +}
          +@mixin animation-iteration-count($iteration-count) {
          +  -webkit-animation-iteration-count: $iteration-count;
          +          animation-iteration-count: $iteration-count;
          +}
          +@mixin animation-direction($direction) {
          +  -webkit-animation-direction: $direction;
          +          animation-direction: $direction;
          +}
          +@mixin animation-fill-mode($fill-mode) {
          +  -webkit-animation-fill-mode: $fill-mode;
          +          animation-fill-mode: $fill-mode;
          +}
          +
          +// Backface visibility
          +// Prevent browsers from flickering when using CSS 3D transforms.
          +// Default value is `visible`, but can be changed to `hidden`
          +
          +@mixin backface-visibility($visibility) {
          +  -webkit-backface-visibility: $visibility;
          +     -moz-backface-visibility: $visibility;
          +          backface-visibility: $visibility;
          +}
          +
          +// Drop shadows
          +//
          +// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
          +// supported browsers that have box shadow capabilities now support it.
          +
          +@mixin box-shadow($shadow...) {
          +  -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
          +          box-shadow: $shadow;
          +}
          +
          +// Box sizing
          +@mixin box-sizing($boxmodel) {
          +  -webkit-box-sizing: $boxmodel;
          +     -moz-box-sizing: $boxmodel;
          +          box-sizing: $boxmodel;
          +}
          +
          +// CSS3 Content Columns
          +@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
          +  -webkit-column-count: $column-count;
          +     -moz-column-count: $column-count;
          +          column-count: $column-count;
          +  -webkit-column-gap: $column-gap;
          +     -moz-column-gap: $column-gap;
          +          column-gap: $column-gap;
          +}
          +
          +// Optional hyphenation
          +@mixin hyphens($mode: auto) {
          +  word-wrap: break-word;
          +  -webkit-hyphens: $mode;
          +     -moz-hyphens: $mode;
          +      -ms-hyphens: $mode; // IE10+
          +       -o-hyphens: $mode;
          +          hyphens: $mode;
          +}
          +
          +// Placeholder text
          +@mixin placeholder($color: $input-color-placeholder) {
          +  // Firefox
          +  &::-moz-placeholder {
          +    color: $color;
          +    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
          +  }
          +  &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
          +  &::-webkit-input-placeholder  { color: $color; } // Safari and Chrome
          +}
          +
          +// Transformations
          +@mixin scale($ratio...) {
          +  -webkit-transform: scale($ratio);
          +      -ms-transform: scale($ratio); // IE9 only
          +       -o-transform: scale($ratio);
          +          transform: scale($ratio);
          +}
          +
          +@mixin scaleX($ratio) {
          +  -webkit-transform: scaleX($ratio);
          +      -ms-transform: scaleX($ratio); // IE9 only
          +       -o-transform: scaleX($ratio);
          +          transform: scaleX($ratio);
          +}
          +@mixin scaleY($ratio) {
          +  -webkit-transform: scaleY($ratio);
          +      -ms-transform: scaleY($ratio); // IE9 only
          +       -o-transform: scaleY($ratio);
          +          transform: scaleY($ratio);
          +}
          +@mixin skew($x, $y) {
          +  -webkit-transform: skewX($x) skewY($y);
          +      -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
          +       -o-transform: skewX($x) skewY($y);
          +          transform: skewX($x) skewY($y);
          +}
          +@mixin translate($x, $y) {
          +  -webkit-transform: translate($x, $y);
          +      -ms-transform: translate($x, $y); // IE9 only
          +       -o-transform: translate($x, $y);
          +          transform: translate($x, $y);
          +}
          +@mixin translate3d($x, $y, $z) {
          +  -webkit-transform: translate3d($x, $y, $z);
          +          transform: translate3d($x, $y, $z);
          +}
          +@mixin rotate($degrees) {
          +  -webkit-transform: rotate($degrees);
          +      -ms-transform: rotate($degrees); // IE9 only
          +       -o-transform: rotate($degrees);
          +          transform: rotate($degrees);
          +}
          +@mixin rotateX($degrees) {
          +  -webkit-transform: rotateX($degrees);
          +      -ms-transform: rotateX($degrees); // IE9 only
          +       -o-transform: rotateX($degrees);
          +          transform: rotateX($degrees);
          +}
          +@mixin rotateY($degrees) {
          +  -webkit-transform: rotateY($degrees);
          +      -ms-transform: rotateY($degrees); // IE9 only
          +       -o-transform: rotateY($degrees);
          +          transform: rotateY($degrees);
          +}
          +@mixin perspective($perspective) {
          +  -webkit-perspective: $perspective;
          +     -moz-perspective: $perspective;
          +          perspective: $perspective;
          +}
          +@mixin perspective-origin($perspective) {
          +  -webkit-perspective-origin: $perspective;
          +     -moz-perspective-origin: $perspective;
          +          perspective-origin: $perspective;
          +}
          +@mixin transform-origin($origin) {
          +  -webkit-transform-origin: $origin;
          +     -moz-transform-origin: $origin;
          +      -ms-transform-origin: $origin; // IE9 only
          +          transform-origin: $origin;
          +}
          +
          +
          +// Transitions
          +
          +@mixin transition($transition...) {
          +  -webkit-transition: $transition;
          +       -o-transition: $transition;
          +          transition: $transition;
          +}
          +@mixin transition-property($transition-property...) {
          +  -webkit-transition-property: $transition-property;
          +          transition-property: $transition-property;
          +}
          +@mixin transition-delay($transition-delay) {
          +  -webkit-transition-delay: $transition-delay;
          +          transition-delay: $transition-delay;
          +}
          +@mixin transition-duration($transition-duration...) {
          +  -webkit-transition-duration: $transition-duration;
          +          transition-duration: $transition-duration;
          +}
          +@mixin transition-timing-function($timing-function) {
          +  -webkit-transition-timing-function: $timing-function;
          +          transition-timing-function: $timing-function;
          +}
          +@mixin transition-transform($transition...) {
          +  -webkit-transition: -webkit-transform $transition;
          +     -moz-transition: -moz-transform $transition;
          +       -o-transition: -o-transform $transition;
          +          transition: transform $transition;
          +}
          +
          +
          +// User select
          +// For selecting text on the page
          +
          +@mixin user-select($select) {
          +  -webkit-user-select: $select;
          +     -moz-user-select: $select;
          +      -ms-user-select: $select; // IE10+
          +          user-select: $select;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_animated.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_animated.scss
          new file mode 100644
          index 0000000..8a020db
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_animated.scss
          @@ -0,0 +1,34 @@
          +// Spinning Icons
          +// --------------------------
          +
          +.#{$fa-css-prefix}-spin {
          +  -webkit-animation: fa-spin 2s infinite linear;
          +          animation: fa-spin 2s infinite linear;
          +}
          +
          +.#{$fa-css-prefix}-pulse {
          +  -webkit-animation: fa-spin 1s infinite steps(8);
          +          animation: fa-spin 1s infinite steps(8);
          +}
          +
          +@-webkit-keyframes fa-spin {
          +  0% {
          +    -webkit-transform: rotate(0deg);
          +            transform: rotate(0deg);
          +  }
          +  100% {
          +    -webkit-transform: rotate(359deg);
          +            transform: rotate(359deg);
          +  }
          +}
          +
          +@keyframes fa-spin {
          +  0% {
          +    -webkit-transform: rotate(0deg);
          +            transform: rotate(0deg);
          +  }
          +  100% {
          +    -webkit-transform: rotate(359deg);
          +            transform: rotate(359deg);
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss
          new file mode 100644
          index 0000000..d4b85a0
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss
          @@ -0,0 +1,25 @@
          +// Bordered & Pulled
          +// -------------------------
          +
          +.#{$fa-css-prefix}-border {
          +  padding: .2em .25em .15em;
          +  border: solid .08em $fa-border-color;
          +  border-radius: .1em;
          +}
          +
          +.#{$fa-css-prefix}-pull-left { float: left; }
          +.#{$fa-css-prefix}-pull-right { float: right; }
          +
          +.#{$fa-css-prefix} {
          +  &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
          +  &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
          +}
          +
          +/* Deprecated as of 4.4.0 */
          +.pull-right { float: right; }
          +.pull-left { float: left; }
          +
          +.#{$fa-css-prefix} {
          +  &.pull-left { margin-right: .3em; }
          +  &.pull-right { margin-left: .3em; }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_core.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_core.scss
          new file mode 100644
          index 0000000..7425ef8
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_core.scss
          @@ -0,0 +1,12 @@
          +// Base Class Definition
          +// -------------------------
          +
          +.#{$fa-css-prefix} {
          +  display: inline-block;
          +  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
          +  font-size: inherit; // can't have font-size inherit on line above, so need to override
          +  text-rendering: auto; // optimizelegibility throws things off #1094
          +  -webkit-font-smoothing: antialiased;
          +  -moz-osx-font-smoothing: grayscale;
          +
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss
          new file mode 100644
          index 0000000..b221c98
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss
          @@ -0,0 +1,6 @@
          +// Fixed Width Icons
          +// -------------------------
          +.#{$fa-css-prefix}-fw {
          +  width: (18em / 14);
          +  text-align: center;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_icons.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_icons.scss
          new file mode 100644
          index 0000000..6f93759
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_icons.scss
          @@ -0,0 +1,697 @@
          +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
          +   readers do not read off random characters that represent icons */
          +
          +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
          +.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
          +.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
          +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
          +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
          +.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
          +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
          +.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
          +.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
          +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
          +.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
          +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
          +.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
          +.#{$fa-css-prefix}-remove:before,
          +.#{$fa-css-prefix}-close:before,
          +.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
          +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
          +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
          +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
          +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
          +.#{$fa-css-prefix}-gear:before,
          +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
          +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
          +.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
          +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
          +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
          +.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
          +.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
          +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
          +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
          +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
          +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
          +.#{$fa-css-prefix}-rotate-right:before,
          +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
          +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
          +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
          +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
          +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
          +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
          +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
          +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
          +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
          +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
          +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
          +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
          +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
          +.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
          +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
          +.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
          +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
          +.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
          +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
          +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
          +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
          +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
          +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
          +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
          +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
          +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
          +.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
          +.#{$fa-css-prefix}-dedent:before,
          +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
          +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
          +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
          +.#{$fa-css-prefix}-photo:before,
          +.#{$fa-css-prefix}-image:before,
          +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
          +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
          +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
          +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
          +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
          +.#{$fa-css-prefix}-edit:before,
          +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
          +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
          +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
          +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
          +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
          +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
          +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
          +.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
          +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
          +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
          +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
          +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
          +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
          +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
          +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
          +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
          +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
          +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
          +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
          +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
          +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
          +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
          +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
          +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
          +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
          +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
          +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
          +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
          +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
          +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
          +.#{$fa-css-prefix}-mail-forward:before,
          +.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
          +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
          +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
          +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
          +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
          +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
          +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
          +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
          +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
          +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
          +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
          +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
          +.#{$fa-css-prefix}-warning:before,
          +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
          +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
          +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
          +.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
          +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
          +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
          +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
          +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
          +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
          +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
          +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
          +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
          +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
          +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
          +.#{$fa-css-prefix}-bar-chart-o:before,
          +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
          +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
          +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
          +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
          +.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
          +.#{$fa-css-prefix}-gears:before,
          +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
          +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
          +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
          +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
          +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
          +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
          +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
          +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
          +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
          +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
          +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
          +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
          +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
          +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
          +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
          +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
          +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
          +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
          +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
          +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
          +.#{$fa-css-prefix}-facebook-f:before,
          +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
          +.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
          +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
          +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
          +.#{$fa-css-prefix}-feed:before,
          +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
          +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
          +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
          +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
          +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
          +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
          +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
          +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
          +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
          +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
          +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
          +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
          +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
          +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
          +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
          +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
          +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
          +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
          +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
          +.#{$fa-css-prefix}-group:before,
          +.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
          +.#{$fa-css-prefix}-chain:before,
          +.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
          +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
          +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
          +.#{$fa-css-prefix}-cut:before,
          +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
          +.#{$fa-css-prefix}-copy:before,
          +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
          +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
          +.#{$fa-css-prefix}-save:before,
          +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
          +.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
          +.#{$fa-css-prefix}-navicon:before,
          +.#{$fa-css-prefix}-reorder:before,
          +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
          +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
          +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
          +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
          +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
          +.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
          +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
          +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
          +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
          +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
          +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
          +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
          +.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
          +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
          +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
          +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
          +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
          +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
          +.#{$fa-css-prefix}-unsorted:before,
          +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
          +.#{$fa-css-prefix}-sort-down:before,
          +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
          +.#{$fa-css-prefix}-sort-up:before,
          +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
          +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
          +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
          +.#{$fa-css-prefix}-rotate-left:before,
          +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
          +.#{$fa-css-prefix}-legal:before,
          +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
          +.#{$fa-css-prefix}-dashboard:before,
          +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
          +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
          +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
          +.#{$fa-css-prefix}-flash:before,
          +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
          +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
          +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
          +.#{$fa-css-prefix}-paste:before,
          +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
          +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
          +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
          +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
          +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
          +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
          +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
          +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
          +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
          +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
          +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
          +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
          +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
          +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
          +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
          +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
          +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
          +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
          +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
          +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
          +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
          +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
          +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
          +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
          +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
          +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
          +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
          +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
          +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
          +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
          +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
          +.#{$fa-css-prefix}-mobile-phone:before,
          +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
          +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
          +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
          +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
          +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
          +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
          +.#{$fa-css-prefix}-mail-reply:before,
          +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
          +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
          +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
          +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
          +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
          +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
          +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
          +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
          +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
          +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
          +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
          +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
          +.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
          +.#{$fa-css-prefix}-mail-reply-all:before,
          +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
          +.#{$fa-css-prefix}-star-half-empty:before,
          +.#{$fa-css-prefix}-star-half-full:before,
          +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
          +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
          +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
          +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
          +.#{$fa-css-prefix}-unlink:before,
          +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
          +.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
          +.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
          +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
          +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
          +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
          +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
          +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
          +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
          +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
          +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
          +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
          +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
          +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
          +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
          +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
          +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
          +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
          +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
          +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
          +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
          +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
          +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
          +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
          +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
          +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
          +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
          +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
          +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
          +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
          +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
          +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
          +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
          +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
          +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
          +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
          +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
          +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
          +.#{$fa-css-prefix}-toggle-down:before,
          +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
          +.#{$fa-css-prefix}-toggle-up:before,
          +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
          +.#{$fa-css-prefix}-toggle-right:before,
          +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
          +.#{$fa-css-prefix}-euro:before,
          +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
          +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
          +.#{$fa-css-prefix}-dollar:before,
          +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
          +.#{$fa-css-prefix}-rupee:before,
          +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
          +.#{$fa-css-prefix}-cny:before,
          +.#{$fa-css-prefix}-rmb:before,
          +.#{$fa-css-prefix}-yen:before,
          +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
          +.#{$fa-css-prefix}-ruble:before,
          +.#{$fa-css-prefix}-rouble:before,
          +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
          +.#{$fa-css-prefix}-won:before,
          +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
          +.#{$fa-css-prefix}-bitcoin:before,
          +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
          +.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
          +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
          +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
          +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
          +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
          +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
          +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
          +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
          +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
          +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
          +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
          +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
          +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
          +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
          +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
          +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
          +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
          +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
          +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
          +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
          +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
          +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
          +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
          +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
          +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
          +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
          +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
          +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
          +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
          +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
          +.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
          +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
          +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
          +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
          +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
          +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
          +.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
          +.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
          +.#{$fa-css-prefix}-gittip:before,
          +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
          +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
          +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
          +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
          +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
          +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
          +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
          +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
          +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
          +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
          +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
          +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
          +.#{$fa-css-prefix}-toggle-left:before,
          +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
          +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
          +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
          +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
          +.#{$fa-css-prefix}-turkish-lira:before,
          +.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
          +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
          +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
          +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
          +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
          +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
          +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
          +.#{$fa-css-prefix}-institution:before,
          +.#{$fa-css-prefix}-bank:before,
          +.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
          +.#{$fa-css-prefix}-mortar-board:before,
          +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
          +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
          +.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
          +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
          +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
          +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
          +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
          +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
          +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
          +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
          +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
          +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
          +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
          +.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
          +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
          +.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
          +.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
          +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
          +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
          +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
          +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
          +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
          +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
          +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
          +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
          +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
          +.#{$fa-css-prefix}-automobile:before,
          +.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
          +.#{$fa-css-prefix}-cab:before,
          +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
          +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
          +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
          +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
          +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
          +.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
          +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
          +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
          +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
          +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
          +.#{$fa-css-prefix}-file-photo-o:before,
          +.#{$fa-css-prefix}-file-picture-o:before,
          +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
          +.#{$fa-css-prefix}-file-zip-o:before,
          +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
          +.#{$fa-css-prefix}-file-sound-o:before,
          +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
          +.#{$fa-css-prefix}-file-movie-o:before,
          +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
          +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
          +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
          +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
          +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
          +.#{$fa-css-prefix}-life-bouy:before,
          +.#{$fa-css-prefix}-life-buoy:before,
          +.#{$fa-css-prefix}-life-saver:before,
          +.#{$fa-css-prefix}-support:before,
          +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
          +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
          +.#{$fa-css-prefix}-ra:before,
          +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
          +.#{$fa-css-prefix}-ge:before,
          +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
          +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
          +.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
          +.#{$fa-css-prefix}-y-combinator-square:before,
          +.#{$fa-css-prefix}-yc-square:before,
          +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
          +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
          +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
          +.#{$fa-css-prefix}-wechat:before,
          +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
          +.#{$fa-css-prefix}-send:before,
          +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
          +.#{$fa-css-prefix}-send-o:before,
          +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
          +.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
          +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
          +.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
          +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
          +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
          +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
          +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
          +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
          +.#{$fa-css-prefix}-soccer-ball-o:before,
          +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
          +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
          +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
          +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
          +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
          +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
          +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
          +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
          +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
          +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
          +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
          +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
          +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
          +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
          +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
          +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
          +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
          +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
          +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
          +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
          +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
          +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
          +.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
          +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
          +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
          +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
          +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
          +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
          +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
          +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
          +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
          +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
          +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
          +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
          +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
          +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
          +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
          +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
          +.#{$fa-css-prefix}-shekel:before,
          +.#{$fa-css-prefix}-sheqel:before,
          +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
          +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
          +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
          +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
          +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
          +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
          +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
          +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
          +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
          +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
          +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
          +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
          +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
          +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
          +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
          +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
          +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
          +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
          +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
          +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
          +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
          +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
          +.#{$fa-css-prefix}-intersex:before,
          +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
          +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
          +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
          +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
          +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
          +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
          +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
          +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
          +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
          +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
          +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
          +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
          +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
          +.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
          +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
          +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
          +.#{$fa-css-prefix}-hotel:before,
          +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
          +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
          +.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
          +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
          +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
          +.#{$fa-css-prefix}-yc:before,
          +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
          +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
          +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
          +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
          +.#{$fa-css-prefix}-battery-4:before,
          +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
          +.#{$fa-css-prefix}-battery-3:before,
          +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
          +.#{$fa-css-prefix}-battery-2:before,
          +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
          +.#{$fa-css-prefix}-battery-1:before,
          +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
          +.#{$fa-css-prefix}-battery-0:before,
          +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
          +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
          +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
          +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
          +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
          +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
          +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
          +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
          +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
          +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
          +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
          +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
          +.#{$fa-css-prefix}-hourglass-1:before,
          +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
          +.#{$fa-css-prefix}-hourglass-2:before,
          +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
          +.#{$fa-css-prefix}-hourglass-3:before,
          +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
          +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
          +.#{$fa-css-prefix}-hand-grab-o:before,
          +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
          +.#{$fa-css-prefix}-hand-stop-o:before,
          +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
          +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
          +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
          +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
          +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
          +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
          +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
          +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
          +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
          +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
          +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
          +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
          +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
          +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
          +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
          +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
          +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
          +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
          +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
          +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
          +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
          +.#{$fa-css-prefix}-tv:before,
          +.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
          +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
          +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
          +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
          +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
          +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
          +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
          +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
          +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
          +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
          +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
          +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
          +.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
          +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
          +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
          +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
          +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
          +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
          +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
          +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
          +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
          +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
          +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
          +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
          +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
          +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
          +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
          +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
          +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
          +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
          +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
          +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
          +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
          +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
          +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
          +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
          +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
          +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
          +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_larger.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_larger.scss
          new file mode 100644
          index 0000000..41e9a81
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_larger.scss
          @@ -0,0 +1,13 @@
          +// Icon Sizes
          +// -------------------------
          +
          +/* makes the font 33% larger relative to the icon container */
          +.#{$fa-css-prefix}-lg {
          +  font-size: (4em / 3);
          +  line-height: (3em / 4);
          +  vertical-align: -15%;
          +}
          +.#{$fa-css-prefix}-2x { font-size: 2em; }
          +.#{$fa-css-prefix}-3x { font-size: 3em; }
          +.#{$fa-css-prefix}-4x { font-size: 4em; }
          +.#{$fa-css-prefix}-5x { font-size: 5em; }
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_list.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_list.scss
          new file mode 100644
          index 0000000..7d1e4d5
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_list.scss
          @@ -0,0 +1,19 @@
          +// List Icons
          +// -------------------------
          +
          +.#{$fa-css-prefix}-ul {
          +  padding-left: 0;
          +  margin-left: $fa-li-width;
          +  list-style-type: none;
          +  > li { position: relative; }
          +}
          +.#{$fa-css-prefix}-li {
          +  position: absolute;
          +  left: -$fa-li-width;
          +  width: $fa-li-width;
          +  top: (2em / 14);
          +  text-align: center;
          +  &.#{$fa-css-prefix}-lg {
          +    left: -$fa-li-width + (4em / 14);
          +  }
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_mixins.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_mixins.scss
          new file mode 100644
          index 0000000..f96719b
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_mixins.scss
          @@ -0,0 +1,26 @@
          +// Mixins
          +// --------------------------
          +
          +@mixin fa-icon() {
          +  display: inline-block;
          +  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
          +  font-size: inherit; // can't have font-size inherit on line above, so need to override
          +  text-rendering: auto; // optimizelegibility throws things off #1094
          +  -webkit-font-smoothing: antialiased;
          +  -moz-osx-font-smoothing: grayscale;
          +
          +}
          +
          +@mixin fa-icon-rotate($degrees, $rotation) {
          +  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
          +  -webkit-transform: rotate($degrees);
          +      -ms-transform: rotate($degrees);
          +          transform: rotate($degrees);
          +}
          +
          +@mixin fa-icon-flip($horiz, $vert, $rotation) {
          +  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
          +  -webkit-transform: scale($horiz, $vert);
          +      -ms-transform: scale($horiz, $vert);
          +          transform: scale($horiz, $vert);
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_path.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_path.scss
          new file mode 100644
          index 0000000..bb457c2
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_path.scss
          @@ -0,0 +1,15 @@
          +/* FONT PATH
          + * -------------------------- */
          +
          +@font-face {
          +  font-family: 'FontAwesome';
          +  src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
          +  src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
          +    url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
          +    url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
          +    url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
          +    url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
          +//  src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
          +  font-weight: normal;
          +  font-style: normal;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss
          new file mode 100644
          index 0000000..a3558fd
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss
          @@ -0,0 +1,20 @@
          +// Rotated & Flipped Icons
          +// -------------------------
          +
          +.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }
          +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
          +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
          +
          +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
          +.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }
          +
          +// Hook for IE8-9
          +// -------------------------
          +
          +:root .#{$fa-css-prefix}-rotate-90,
          +:root .#{$fa-css-prefix}-rotate-180,
          +:root .#{$fa-css-prefix}-rotate-270,
          +:root .#{$fa-css-prefix}-flip-horizontal,
          +:root .#{$fa-css-prefix}-flip-vertical {
          +  filter: none;
          +}
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_stacked.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_stacked.scss
          new file mode 100644
          index 0000000..aef7403
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_stacked.scss
          @@ -0,0 +1,20 @@
          +// Stacked Icons
          +// -------------------------
          +
          +.#{$fa-css-prefix}-stack {
          +  position: relative;
          +  display: inline-block;
          +  width: 2em;
          +  height: 2em;
          +  line-height: 2em;
          +  vertical-align: middle;
          +}
          +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
          +  position: absolute;
          +  left: 0;
          +  width: 100%;
          +  text-align: center;
          +}
          +.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
          +.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
          +.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
          diff --git a/public/theme/select2/docs/_sass/vendor/font-awesome/_variables.scss b/public/theme/select2/docs/_sass/vendor/font-awesome/_variables.scss
          new file mode 100644
          index 0000000..0a47110
          --- /dev/null
          +++ b/public/theme/select2/docs/_sass/vendor/font-awesome/_variables.scss
          @@ -0,0 +1,708 @@
          +// Variables
          +// --------------------------
          +
          +$fa-font-path:        "../fonts" !default;
          +$fa-font-size-base:   14px !default;
          +$fa-line-height-base: 1 !default;
          +//$fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly
          +$fa-css-prefix:       fa !default;
          +$fa-version:          "4.5.0" !default;
          +$fa-border-color:     #eee !default;
          +$fa-inverse:          #fff !default;
          +$fa-li-width:         (30em / 14) !default;
          +
          +$fa-var-500px: "\f26e";
          +$fa-var-adjust: "\f042";
          +$fa-var-adn: "\f170";
          +$fa-var-align-center: "\f037";
          +$fa-var-align-justify: "\f039";
          +$fa-var-align-left: "\f036";
          +$fa-var-align-right: "\f038";
          +$fa-var-amazon: "\f270";
          +$fa-var-ambulance: "\f0f9";
          +$fa-var-anchor: "\f13d";
          +$fa-var-android: "\f17b";
          +$fa-var-angellist: "\f209";
          +$fa-var-angle-double-down: "\f103";
          +$fa-var-angle-double-left: "\f100";
          +$fa-var-angle-double-right: "\f101";
          +$fa-var-angle-double-up: "\f102";
          +$fa-var-angle-down: "\f107";
          +$fa-var-angle-left: "\f104";
          +$fa-var-angle-right: "\f105";
          +$fa-var-angle-up: "\f106";
          +$fa-var-apple: "\f179";
          +$fa-var-archive: "\f187";
          +$fa-var-area-chart: "\f1fe";
          +$fa-var-arrow-circle-down: "\f0ab";
          +$fa-var-arrow-circle-left: "\f0a8";
          +$fa-var-arrow-circle-o-down: "\f01a";
          +$fa-var-arrow-circle-o-left: "\f190";
          +$fa-var-arrow-circle-o-right: "\f18e";
          +$fa-var-arrow-circle-o-up: "\f01b";
          +$fa-var-arrow-circle-right: "\f0a9";
          +$fa-var-arrow-circle-up: "\f0aa";
          +$fa-var-arrow-down: "\f063";
          +$fa-var-arrow-left: "\f060";
          +$fa-var-arrow-right: "\f061";
          +$fa-var-arrow-up: "\f062";
          +$fa-var-arrows: "\f047";
          +$fa-var-arrows-alt: "\f0b2";
          +$fa-var-arrows-h: "\f07e";
          +$fa-var-arrows-v: "\f07d";
          +$fa-var-asterisk: "\f069";
          +$fa-var-at: "\f1fa";
          +$fa-var-automobile: "\f1b9";
          +$fa-var-backward: "\f04a";
          +$fa-var-balance-scale: "\f24e";
          +$fa-var-ban: "\f05e";
          +$fa-var-bank: "\f19c";
          +$fa-var-bar-chart: "\f080";
          +$fa-var-bar-chart-o: "\f080";
          +$fa-var-barcode: "\f02a";
          +$fa-var-bars: "\f0c9";
          +$fa-var-battery-0: "\f244";
          +$fa-var-battery-1: "\f243";
          +$fa-var-battery-2: "\f242";
          +$fa-var-battery-3: "\f241";
          +$fa-var-battery-4: "\f240";
          +$fa-var-battery-empty: "\f244";
          +$fa-var-battery-full: "\f240";
          +$fa-var-battery-half: "\f242";
          +$fa-var-battery-quarter: "\f243";
          +$fa-var-battery-three-quarters: "\f241";
          +$fa-var-bed: "\f236";
          +$fa-var-beer: "\f0fc";
          +$fa-var-behance: "\f1b4";
          +$fa-var-behance-square: "\f1b5";
          +$fa-var-bell: "\f0f3";
          +$fa-var-bell-o: "\f0a2";
          +$fa-var-bell-slash: "\f1f6";
          +$fa-var-bell-slash-o: "\f1f7";
          +$fa-var-bicycle: "\f206";
          +$fa-var-binoculars: "\f1e5";
          +$fa-var-birthday-cake: "\f1fd";
          +$fa-var-bitbucket: "\f171";
          +$fa-var-bitbucket-square: "\f172";
          +$fa-var-bitcoin: "\f15a";
          +$fa-var-black-tie: "\f27e";
          +$fa-var-bluetooth: "\f293";
          +$fa-var-bluetooth-b: "\f294";
          +$fa-var-bold: "\f032";
          +$fa-var-bolt: "\f0e7";
          +$fa-var-bomb: "\f1e2";
          +$fa-var-book: "\f02d";
          +$fa-var-bookmark: "\f02e";
          +$fa-var-bookmark-o: "\f097";
          +$fa-var-briefcase: "\f0b1";
          +$fa-var-btc: "\f15a";
          +$fa-var-bug: "\f188";
          +$fa-var-building: "\f1ad";
          +$fa-var-building-o: "\f0f7";
          +$fa-var-bullhorn: "\f0a1";
          +$fa-var-bullseye: "\f140";
          +$fa-var-bus: "\f207";
          +$fa-var-buysellads: "\f20d";
          +$fa-var-cab: "\f1ba";
          +$fa-var-calculator: "\f1ec";
          +$fa-var-calendar: "\f073";
          +$fa-var-calendar-check-o: "\f274";
          +$fa-var-calendar-minus-o: "\f272";
          +$fa-var-calendar-o: "\f133";
          +$fa-var-calendar-plus-o: "\f271";
          +$fa-var-calendar-times-o: "\f273";
          +$fa-var-camera: "\f030";
          +$fa-var-camera-retro: "\f083";
          +$fa-var-car: "\f1b9";
          +$fa-var-caret-down: "\f0d7";
          +$fa-var-caret-left: "\f0d9";
          +$fa-var-caret-right: "\f0da";
          +$fa-var-caret-square-o-down: "\f150";
          +$fa-var-caret-square-o-left: "\f191";
          +$fa-var-caret-square-o-right: "\f152";
          +$fa-var-caret-square-o-up: "\f151";
          +$fa-var-caret-up: "\f0d8";
          +$fa-var-cart-arrow-down: "\f218";
          +$fa-var-cart-plus: "\f217";
          +$fa-var-cc: "\f20a";
          +$fa-var-cc-amex: "\f1f3";
          +$fa-var-cc-diners-club: "\f24c";
          +$fa-var-cc-discover: "\f1f2";
          +$fa-var-cc-jcb: "\f24b";
          +$fa-var-cc-mastercard: "\f1f1";
          +$fa-var-cc-paypal: "\f1f4";
          +$fa-var-cc-stripe: "\f1f5";
          +$fa-var-cc-visa: "\f1f0";
          +$fa-var-certificate: "\f0a3";
          +$fa-var-chain: "\f0c1";
          +$fa-var-chain-broken: "\f127";
          +$fa-var-check: "\f00c";
          +$fa-var-check-circle: "\f058";
          +$fa-var-check-circle-o: "\f05d";
          +$fa-var-check-square: "\f14a";
          +$fa-var-check-square-o: "\f046";
          +$fa-var-chevron-circle-down: "\f13a";
          +$fa-var-chevron-circle-left: "\f137";
          +$fa-var-chevron-circle-right: "\f138";
          +$fa-var-chevron-circle-up: "\f139";
          +$fa-var-chevron-down: "\f078";
          +$fa-var-chevron-left: "\f053";
          +$fa-var-chevron-right: "\f054";
          +$fa-var-chevron-up: "\f077";
          +$fa-var-child: "\f1ae";
          +$fa-var-chrome: "\f268";
          +$fa-var-circle: "\f111";
          +$fa-var-circle-o: "\f10c";
          +$fa-var-circle-o-notch: "\f1ce";
          +$fa-var-circle-thin: "\f1db";
          +$fa-var-clipboard: "\f0ea";
          +$fa-var-clock-o: "\f017";
          +$fa-var-clone: "\f24d";
          +$fa-var-close: "\f00d";
          +$fa-var-cloud: "\f0c2";
          +$fa-var-cloud-download: "\f0ed";
          +$fa-var-cloud-upload: "\f0ee";
          +$fa-var-cny: "\f157";
          +$fa-var-code: "\f121";
          +$fa-var-code-fork: "\f126";
          +$fa-var-codepen: "\f1cb";
          +$fa-var-codiepie: "\f284";
          +$fa-var-coffee: "\f0f4";
          +$fa-var-cog: "\f013";
          +$fa-var-cogs: "\f085";
          +$fa-var-columns: "\f0db";
          +$fa-var-comment: "\f075";
          +$fa-var-comment-o: "\f0e5";
          +$fa-var-commenting: "\f27a";
          +$fa-var-commenting-o: "\f27b";
          +$fa-var-comments: "\f086";
          +$fa-var-comments-o: "\f0e6";
          +$fa-var-compass: "\f14e";
          +$fa-var-compress: "\f066";
          +$fa-var-connectdevelop: "\f20e";
          +$fa-var-contao: "\f26d";
          +$fa-var-copy: "\f0c5";
          +$fa-var-copyright: "\f1f9";
          +$fa-var-creative-commons: "\f25e";
          +$fa-var-credit-card: "\f09d";
          +$fa-var-credit-card-alt: "\f283";
          +$fa-var-crop: "\f125";
          +$fa-var-crosshairs: "\f05b";
          +$fa-var-css3: "\f13c";
          +$fa-var-cube: "\f1b2";
          +$fa-var-cubes: "\f1b3";
          +$fa-var-cut: "\f0c4";
          +$fa-var-cutlery: "\f0f5";
          +$fa-var-dashboard: "\f0e4";
          +$fa-var-dashcube: "\f210";
          +$fa-var-database: "\f1c0";
          +$fa-var-dedent: "\f03b";
          +$fa-var-delicious: "\f1a5";
          +$fa-var-desktop: "\f108";
          +$fa-var-deviantart: "\f1bd";
          +$fa-var-diamond: "\f219";
          +$fa-var-digg: "\f1a6";
          +$fa-var-dollar: "\f155";
          +$fa-var-dot-circle-o: "\f192";
          +$fa-var-download: "\f019";
          +$fa-var-dribbble: "\f17d";
          +$fa-var-dropbox: "\f16b";
          +$fa-var-drupal: "\f1a9";
          +$fa-var-edge: "\f282";
          +$fa-var-edit: "\f044";
          +$fa-var-eject: "\f052";
          +$fa-var-ellipsis-h: "\f141";
          +$fa-var-ellipsis-v: "\f142";
          +$fa-var-empire: "\f1d1";
          +$fa-var-envelope: "\f0e0";
          +$fa-var-envelope-o: "\f003";
          +$fa-var-envelope-square: "\f199";
          +$fa-var-eraser: "\f12d";
          +$fa-var-eur: "\f153";
          +$fa-var-euro: "\f153";
          +$fa-var-exchange: "\f0ec";
          +$fa-var-exclamation: "\f12a";
          +$fa-var-exclamation-circle: "\f06a";
          +$fa-var-exclamation-triangle: "\f071";
          +$fa-var-expand: "\f065";
          +$fa-var-expeditedssl: "\f23e";
          +$fa-var-external-link: "\f08e";
          +$fa-var-external-link-square: "\f14c";
          +$fa-var-eye: "\f06e";
          +$fa-var-eye-slash: "\f070";
          +$fa-var-eyedropper: "\f1fb";
          +$fa-var-facebook: "\f09a";
          +$fa-var-facebook-f: "\f09a";
          +$fa-var-facebook-official: "\f230";
          +$fa-var-facebook-square: "\f082";
          +$fa-var-fast-backward: "\f049";
          +$fa-var-fast-forward: "\f050";
          +$fa-var-fax: "\f1ac";
          +$fa-var-feed: "\f09e";
          +$fa-var-female: "\f182";
          +$fa-var-fighter-jet: "\f0fb";
          +$fa-var-file: "\f15b";
          +$fa-var-file-archive-o: "\f1c6";
          +$fa-var-file-audio-o: "\f1c7";
          +$fa-var-file-code-o: "\f1c9";
          +$fa-var-file-excel-o: "\f1c3";
          +$fa-var-file-image-o: "\f1c5";
          +$fa-var-file-movie-o: "\f1c8";
          +$fa-var-file-o: "\f016";
          +$fa-var-file-pdf-o: "\f1c1";
          +$fa-var-file-photo-o: "\f1c5";
          +$fa-var-file-picture-o: "\f1c5";
          +$fa-var-file-powerpoint-o: "\f1c4";
          +$fa-var-file-sound-o: "\f1c7";
          +$fa-var-file-text: "\f15c";
          +$fa-var-file-text-o: "\f0f6";
          +$fa-var-file-video-o: "\f1c8";
          +$fa-var-file-word-o: "\f1c2";
          +$fa-var-file-zip-o: "\f1c6";
          +$fa-var-files-o: "\f0c5";
          +$fa-var-film: "\f008";
          +$fa-var-filter: "\f0b0";
          +$fa-var-fire: "\f06d";
          +$fa-var-fire-extinguisher: "\f134";
          +$fa-var-firefox: "\f269";
          +$fa-var-flag: "\f024";
          +$fa-var-flag-checkered: "\f11e";
          +$fa-var-flag-o: "\f11d";
          +$fa-var-flash: "\f0e7";
          +$fa-var-flask: "\f0c3";
          +$fa-var-flickr: "\f16e";
          +$fa-var-floppy-o: "\f0c7";
          +$fa-var-folder: "\f07b";
          +$fa-var-folder-o: "\f114";
          +$fa-var-folder-open: "\f07c";
          +$fa-var-folder-open-o: "\f115";
          +$fa-var-font: "\f031";
          +$fa-var-fonticons: "\f280";
          +$fa-var-fort-awesome: "\f286";
          +$fa-var-forumbee: "\f211";
          +$fa-var-forward: "\f04e";
          +$fa-var-foursquare: "\f180";
          +$fa-var-frown-o: "\f119";
          +$fa-var-futbol-o: "\f1e3";
          +$fa-var-gamepad: "\f11b";
          +$fa-var-gavel: "\f0e3";
          +$fa-var-gbp: "\f154";
          +$fa-var-ge: "\f1d1";
          +$fa-var-gear: "\f013";
          +$fa-var-gears: "\f085";
          +$fa-var-genderless: "\f22d";
          +$fa-var-get-pocket: "\f265";
          +$fa-var-gg: "\f260";
          +$fa-var-gg-circle: "\f261";
          +$fa-var-gift: "\f06b";
          +$fa-var-git: "\f1d3";
          +$fa-var-git-square: "\f1d2";
          +$fa-var-github: "\f09b";
          +$fa-var-github-alt: "\f113";
          +$fa-var-github-square: "\f092";
          +$fa-var-gittip: "\f184";
          +$fa-var-glass: "\f000";
          +$fa-var-globe: "\f0ac";
          +$fa-var-google: "\f1a0";
          +$fa-var-google-plus: "\f0d5";
          +$fa-var-google-plus-square: "\f0d4";
          +$fa-var-google-wallet: "\f1ee";
          +$fa-var-graduation-cap: "\f19d";
          +$fa-var-gratipay: "\f184";
          +$fa-var-group: "\f0c0";
          +$fa-var-h-square: "\f0fd";
          +$fa-var-hacker-news: "\f1d4";
          +$fa-var-hand-grab-o: "\f255";
          +$fa-var-hand-lizard-o: "\f258";
          +$fa-var-hand-o-down: "\f0a7";
          +$fa-var-hand-o-left: "\f0a5";
          +$fa-var-hand-o-right: "\f0a4";
          +$fa-var-hand-o-up: "\f0a6";
          +$fa-var-hand-paper-o: "\f256";
          +$fa-var-hand-peace-o: "\f25b";
          +$fa-var-hand-pointer-o: "\f25a";
          +$fa-var-hand-rock-o: "\f255";
          +$fa-var-hand-scissors-o: "\f257";
          +$fa-var-hand-spock-o: "\f259";
          +$fa-var-hand-stop-o: "\f256";
          +$fa-var-hashtag: "\f292";
          +$fa-var-hdd-o: "\f0a0";
          +$fa-var-header: "\f1dc";
          +$fa-var-headphones: "\f025";
          +$fa-var-heart: "\f004";
          +$fa-var-heart-o: "\f08a";
          +$fa-var-heartbeat: "\f21e";
          +$fa-var-history: "\f1da";
          +$fa-var-home: "\f015";
          +$fa-var-hospital-o: "\f0f8";
          +$fa-var-hotel: "\f236";
          +$fa-var-hourglass: "\f254";
          +$fa-var-hourglass-1: "\f251";
          +$fa-var-hourglass-2: "\f252";
          +$fa-var-hourglass-3: "\f253";
          +$fa-var-hourglass-end: "\f253";
          +$fa-var-hourglass-half: "\f252";
          +$fa-var-hourglass-o: "\f250";
          +$fa-var-hourglass-start: "\f251";
          +$fa-var-houzz: "\f27c";
          +$fa-var-html5: "\f13b";
          +$fa-var-i-cursor: "\f246";
          +$fa-var-ils: "\f20b";
          +$fa-var-image: "\f03e";
          +$fa-var-inbox: "\f01c";
          +$fa-var-indent: "\f03c";
          +$fa-var-industry: "\f275";
          +$fa-var-info: "\f129";
          +$fa-var-info-circle: "\f05a";
          +$fa-var-inr: "\f156";
          +$fa-var-instagram: "\f16d";
          +$fa-var-institution: "\f19c";
          +$fa-var-internet-explorer: "\f26b";
          +$fa-var-intersex: "\f224";
          +$fa-var-ioxhost: "\f208";
          +$fa-var-italic: "\f033";
          +$fa-var-joomla: "\f1aa";
          +$fa-var-jpy: "\f157";
          +$fa-var-jsfiddle: "\f1cc";
          +$fa-var-key: "\f084";
          +$fa-var-keyboard-o: "\f11c";
          +$fa-var-krw: "\f159";
          +$fa-var-language: "\f1ab";
          +$fa-var-laptop: "\f109";
          +$fa-var-lastfm: "\f202";
          +$fa-var-lastfm-square: "\f203";
          +$fa-var-leaf: "\f06c";
          +$fa-var-leanpub: "\f212";
          +$fa-var-legal: "\f0e3";
          +$fa-var-lemon-o: "\f094";
          +$fa-var-level-down: "\f149";
          +$fa-var-level-up: "\f148";
          +$fa-var-life-bouy: "\f1cd";
          +$fa-var-life-buoy: "\f1cd";
          +$fa-var-life-ring: "\f1cd";
          +$fa-var-life-saver: "\f1cd";
          +$fa-var-lightbulb-o: "\f0eb";
          +$fa-var-line-chart: "\f201";
          +$fa-var-link: "\f0c1";
          +$fa-var-linkedin: "\f0e1";
          +$fa-var-linkedin-square: "\f08c";
          +$fa-var-linux: "\f17c";
          +$fa-var-list: "\f03a";
          +$fa-var-list-alt: "\f022";
          +$fa-var-list-ol: "\f0cb";
          +$fa-var-list-ul: "\f0ca";
          +$fa-var-location-arrow: "\f124";
          +$fa-var-lock: "\f023";
          +$fa-var-long-arrow-down: "\f175";
          +$fa-var-long-arrow-left: "\f177";
          +$fa-var-long-arrow-right: "\f178";
          +$fa-var-long-arrow-up: "\f176";
          +$fa-var-magic: "\f0d0";
          +$fa-var-magnet: "\f076";
          +$fa-var-mail-forward: "\f064";
          +$fa-var-mail-reply: "\f112";
          +$fa-var-mail-reply-all: "\f122";
          +$fa-var-male: "\f183";
          +$fa-var-map: "\f279";
          +$fa-var-map-marker: "\f041";
          +$fa-var-map-o: "\f278";
          +$fa-var-map-pin: "\f276";
          +$fa-var-map-signs: "\f277";
          +$fa-var-mars: "\f222";
          +$fa-var-mars-double: "\f227";
          +$fa-var-mars-stroke: "\f229";
          +$fa-var-mars-stroke-h: "\f22b";
          +$fa-var-mars-stroke-v: "\f22a";
          +$fa-var-maxcdn: "\f136";
          +$fa-var-meanpath: "\f20c";
          +$fa-var-medium: "\f23a";
          +$fa-var-medkit: "\f0fa";
          +$fa-var-meh-o: "\f11a";
          +$fa-var-mercury: "\f223";
          +$fa-var-microphone: "\f130";
          +$fa-var-microphone-slash: "\f131";
          +$fa-var-minus: "\f068";
          +$fa-var-minus-circle: "\f056";
          +$fa-var-minus-square: "\f146";
          +$fa-var-minus-square-o: "\f147";
          +$fa-var-mixcloud: "\f289";
          +$fa-var-mobile: "\f10b";
          +$fa-var-mobile-phone: "\f10b";
          +$fa-var-modx: "\f285";
          +$fa-var-money: "\f0d6";
          +$fa-var-moon-o: "\f186";
          +$fa-var-mortar-board: "\f19d";
          +$fa-var-motorcycle: "\f21c";
          +$fa-var-mouse-pointer: "\f245";
          +$fa-var-music: "\f001";
          +$fa-var-navicon: "\f0c9";
          +$fa-var-neuter: "\f22c";
          +$fa-var-newspaper-o: "\f1ea";
          +$fa-var-object-group: "\f247";
          +$fa-var-object-ungroup: "\f248";
          +$fa-var-odnoklassniki: "\f263";
          +$fa-var-odnoklassniki-square: "\f264";
          +$fa-var-opencart: "\f23d";
          +$fa-var-openid: "\f19b";
          +$fa-var-opera: "\f26a";
          +$fa-var-optin-monster: "\f23c";
          +$fa-var-outdent: "\f03b";
          +$fa-var-pagelines: "\f18c";
          +$fa-var-paint-brush: "\f1fc";
          +$fa-var-paper-plane: "\f1d8";
          +$fa-var-paper-plane-o: "\f1d9";
          +$fa-var-paperclip: "\f0c6";
          +$fa-var-paragraph: "\f1dd";
          +$fa-var-paste: "\f0ea";
          +$fa-var-pause: "\f04c";
          +$fa-var-pause-circle: "\f28b";
          +$fa-var-pause-circle-o: "\f28c";
          +$fa-var-paw: "\f1b0";
          +$fa-var-paypal: "\f1ed";
          +$fa-var-pencil: "\f040";
          +$fa-var-pencil-square: "\f14b";
          +$fa-var-pencil-square-o: "\f044";
          +$fa-var-percent: "\f295";
          +$fa-var-phone: "\f095";
          +$fa-var-phone-square: "\f098";
          +$fa-var-photo: "\f03e";
          +$fa-var-picture-o: "\f03e";
          +$fa-var-pie-chart: "\f200";
          +$fa-var-pied-piper: "\f1a7";
          +$fa-var-pied-piper-alt: "\f1a8";
          +$fa-var-pinterest: "\f0d2";
          +$fa-var-pinterest-p: "\f231";
          +$fa-var-pinterest-square: "\f0d3";
          +$fa-var-plane: "\f072";
          +$fa-var-play: "\f04b";
          +$fa-var-play-circle: "\f144";
          +$fa-var-play-circle-o: "\f01d";
          +$fa-var-plug: "\f1e6";
          +$fa-var-plus: "\f067";
          +$fa-var-plus-circle: "\f055";
          +$fa-var-plus-square: "\f0fe";
          +$fa-var-plus-square-o: "\f196";
          +$fa-var-power-off: "\f011";
          +$fa-var-print: "\f02f";
          +$fa-var-product-hunt: "\f288";
          +$fa-var-puzzle-piece: "\f12e";
          +$fa-var-qq: "\f1d6";
          +$fa-var-qrcode: "\f029";
          +$fa-var-question: "\f128";
          +$fa-var-question-circle: "\f059";
          +$fa-var-quote-left: "\f10d";
          +$fa-var-quote-right: "\f10e";
          +$fa-var-ra: "\f1d0";
          +$fa-var-random: "\f074";
          +$fa-var-rebel: "\f1d0";
          +$fa-var-recycle: "\f1b8";
          +$fa-var-reddit: "\f1a1";
          +$fa-var-reddit-alien: "\f281";
          +$fa-var-reddit-square: "\f1a2";
          +$fa-var-refresh: "\f021";
          +$fa-var-registered: "\f25d";
          +$fa-var-remove: "\f00d";
          +$fa-var-renren: "\f18b";
          +$fa-var-reorder: "\f0c9";
          +$fa-var-repeat: "\f01e";
          +$fa-var-reply: "\f112";
          +$fa-var-reply-all: "\f122";
          +$fa-var-retweet: "\f079";
          +$fa-var-rmb: "\f157";
          +$fa-var-road: "\f018";
          +$fa-var-rocket: "\f135";
          +$fa-var-rotate-left: "\f0e2";
          +$fa-var-rotate-right: "\f01e";
          +$fa-var-rouble: "\f158";
          +$fa-var-rss: "\f09e";
          +$fa-var-rss-square: "\f143";
          +$fa-var-rub: "\f158";
          +$fa-var-ruble: "\f158";
          +$fa-var-rupee: "\f156";
          +$fa-var-safari: "\f267";
          +$fa-var-save: "\f0c7";
          +$fa-var-scissors: "\f0c4";
          +$fa-var-scribd: "\f28a";
          +$fa-var-search: "\f002";
          +$fa-var-search-minus: "\f010";
          +$fa-var-search-plus: "\f00e";
          +$fa-var-sellsy: "\f213";
          +$fa-var-send: "\f1d8";
          +$fa-var-send-o: "\f1d9";
          +$fa-var-server: "\f233";
          +$fa-var-share: "\f064";
          +$fa-var-share-alt: "\f1e0";
          +$fa-var-share-alt-square: "\f1e1";
          +$fa-var-share-square: "\f14d";
          +$fa-var-share-square-o: "\f045";
          +$fa-var-shekel: "\f20b";
          +$fa-var-sheqel: "\f20b";
          +$fa-var-shield: "\f132";
          +$fa-var-ship: "\f21a";
          +$fa-var-shirtsinbulk: "\f214";
          +$fa-var-shopping-bag: "\f290";
          +$fa-var-shopping-basket: "\f291";
          +$fa-var-shopping-cart: "\f07a";
          +$fa-var-sign-in: "\f090";
          +$fa-var-sign-out: "\f08b";
          +$fa-var-signal: "\f012";
          +$fa-var-simplybuilt: "\f215";
          +$fa-var-sitemap: "\f0e8";
          +$fa-var-skyatlas: "\f216";
          +$fa-var-skype: "\f17e";
          +$fa-var-slack: "\f198";
          +$fa-var-sliders: "\f1de";
          +$fa-var-slideshare: "\f1e7";
          +$fa-var-smile-o: "\f118";
          +$fa-var-soccer-ball-o: "\f1e3";
          +$fa-var-sort: "\f0dc";
          +$fa-var-sort-alpha-asc: "\f15d";
          +$fa-var-sort-alpha-desc: "\f15e";
          +$fa-var-sort-amount-asc: "\f160";
          +$fa-var-sort-amount-desc: "\f161";
          +$fa-var-sort-asc: "\f0de";
          +$fa-var-sort-desc: "\f0dd";
          +$fa-var-sort-down: "\f0dd";
          +$fa-var-sort-numeric-asc: "\f162";
          +$fa-var-sort-numeric-desc: "\f163";
          +$fa-var-sort-up: "\f0de";
          +$fa-var-soundcloud: "\f1be";
          +$fa-var-space-shuttle: "\f197";
          +$fa-var-spinner: "\f110";
          +$fa-var-spoon: "\f1b1";
          +$fa-var-spotify: "\f1bc";
          +$fa-var-square: "\f0c8";
          +$fa-var-square-o: "\f096";
          +$fa-var-stack-exchange: "\f18d";
          +$fa-var-stack-overflow: "\f16c";
          +$fa-var-star: "\f005";
          +$fa-var-star-half: "\f089";
          +$fa-var-star-half-empty: "\f123";
          +$fa-var-star-half-full: "\f123";
          +$fa-var-star-half-o: "\f123";
          +$fa-var-star-o: "\f006";
          +$fa-var-steam: "\f1b6";
          +$fa-var-steam-square: "\f1b7";
          +$fa-var-step-backward: "\f048";
          +$fa-var-step-forward: "\f051";
          +$fa-var-stethoscope: "\f0f1";
          +$fa-var-sticky-note: "\f249";
          +$fa-var-sticky-note-o: "\f24a";
          +$fa-var-stop: "\f04d";
          +$fa-var-stop-circle: "\f28d";
          +$fa-var-stop-circle-o: "\f28e";
          +$fa-var-street-view: "\f21d";
          +$fa-var-strikethrough: "\f0cc";
          +$fa-var-stumbleupon: "\f1a4";
          +$fa-var-stumbleupon-circle: "\f1a3";
          +$fa-var-subscript: "\f12c";
          +$fa-var-subway: "\f239";
          +$fa-var-suitcase: "\f0f2";
          +$fa-var-sun-o: "\f185";
          +$fa-var-superscript: "\f12b";
          +$fa-var-support: "\f1cd";
          +$fa-var-table: "\f0ce";
          +$fa-var-tablet: "\f10a";
          +$fa-var-tachometer: "\f0e4";
          +$fa-var-tag: "\f02b";
          +$fa-var-tags: "\f02c";
          +$fa-var-tasks: "\f0ae";
          +$fa-var-taxi: "\f1ba";
          +$fa-var-television: "\f26c";
          +$fa-var-tencent-weibo: "\f1d5";
          +$fa-var-terminal: "\f120";
          +$fa-var-text-height: "\f034";
          +$fa-var-text-width: "\f035";
          +$fa-var-th: "\f00a";
          +$fa-var-th-large: "\f009";
          +$fa-var-th-list: "\f00b";
          +$fa-var-thumb-tack: "\f08d";
          +$fa-var-thumbs-down: "\f165";
          +$fa-var-thumbs-o-down: "\f088";
          +$fa-var-thumbs-o-up: "\f087";
          +$fa-var-thumbs-up: "\f164";
          +$fa-var-ticket: "\f145";
          +$fa-var-times: "\f00d";
          +$fa-var-times-circle: "\f057";
          +$fa-var-times-circle-o: "\f05c";
          +$fa-var-tint: "\f043";
          +$fa-var-toggle-down: "\f150";
          +$fa-var-toggle-left: "\f191";
          +$fa-var-toggle-off: "\f204";
          +$fa-var-toggle-on: "\f205";
          +$fa-var-toggle-right: "\f152";
          +$fa-var-toggle-up: "\f151";
          +$fa-var-trademark: "\f25c";
          +$fa-var-train: "\f238";
          +$fa-var-transgender: "\f224";
          +$fa-var-transgender-alt: "\f225";
          +$fa-var-trash: "\f1f8";
          +$fa-var-trash-o: "\f014";
          +$fa-var-tree: "\f1bb";
          +$fa-var-trello: "\f181";
          +$fa-var-tripadvisor: "\f262";
          +$fa-var-trophy: "\f091";
          +$fa-var-truck: "\f0d1";
          +$fa-var-try: "\f195";
          +$fa-var-tty: "\f1e4";
          +$fa-var-tumblr: "\f173";
          +$fa-var-tumblr-square: "\f174";
          +$fa-var-turkish-lira: "\f195";
          +$fa-var-tv: "\f26c";
          +$fa-var-twitch: "\f1e8";
          +$fa-var-twitter: "\f099";
          +$fa-var-twitter-square: "\f081";
          +$fa-var-umbrella: "\f0e9";
          +$fa-var-underline: "\f0cd";
          +$fa-var-undo: "\f0e2";
          +$fa-var-university: "\f19c";
          +$fa-var-unlink: "\f127";
          +$fa-var-unlock: "\f09c";
          +$fa-var-unlock-alt: "\f13e";
          +$fa-var-unsorted: "\f0dc";
          +$fa-var-upload: "\f093";
          +$fa-var-usb: "\f287";
          +$fa-var-usd: "\f155";
          +$fa-var-user: "\f007";
          +$fa-var-user-md: "\f0f0";
          +$fa-var-user-plus: "\f234";
          +$fa-var-user-secret: "\f21b";
          +$fa-var-user-times: "\f235";
          +$fa-var-users: "\f0c0";
          +$fa-var-venus: "\f221";
          +$fa-var-venus-double: "\f226";
          +$fa-var-venus-mars: "\f228";
          +$fa-var-viacoin: "\f237";
          +$fa-var-video-camera: "\f03d";
          +$fa-var-vimeo: "\f27d";
          +$fa-var-vimeo-square: "\f194";
          +$fa-var-vine: "\f1ca";
          +$fa-var-vk: "\f189";
          +$fa-var-volume-down: "\f027";
          +$fa-var-volume-off: "\f026";
          +$fa-var-volume-up: "\f028";
          +$fa-var-warning: "\f071";
          +$fa-var-wechat: "\f1d7";
          +$fa-var-weibo: "\f18a";
          +$fa-var-weixin: "\f1d7";
          +$fa-var-whatsapp: "\f232";
          +$fa-var-wheelchair: "\f193";
          +$fa-var-wifi: "\f1eb";
          +$fa-var-wikipedia-w: "\f266";
          +$fa-var-windows: "\f17a";
          +$fa-var-won: "\f159";
          +$fa-var-wordpress: "\f19a";
          +$fa-var-wrench: "\f0ad";
          +$fa-var-xing: "\f168";
          +$fa-var-xing-square: "\f169";
          +$fa-var-y-combinator: "\f23b";
          +$fa-var-y-combinator-square: "\f1d4";
          +$fa-var-yahoo: "\f19e";
          +$fa-var-yc: "\f23b";
          +$fa-var-yc-square: "\f1d4";
          +$fa-var-yelp: "\f1e9";
          +$fa-var-yen: "\f157";
          +$fa-var-youtube: "\f167";
          +$fa-var-youtube-play: "\f16a";
          +$fa-var-youtube-square: "\f166";
          +
          diff --git a/public/theme/select2/docs/announcements-4.0.html b/public/theme/select2/docs/announcements-4.0.html
          new file mode 100644
          index 0000000..165af9e
          --- /dev/null
          +++ b/public/theme/select2/docs/announcements-4.0.html
          @@ -0,0 +1,752 @@
          +---
          +layout: default
          +title: Select2 4.0.0 Released
          +slug: announcements-4.0
          +---
          +<section id="pre-release" class="jumbotron">
          +  <div class="container">
          +    <h1>Announcing Select2 4.0.0</h1>
          +  </div>
          +</section>
          +
          +<div class="container s2-docs-container">
          +  <div class="row">
          +    <div class="col-md-9" role="main">
          +
          +      <section id="release">
          +        <h1 class="page-header">Select2 4.0.0</h1>
          +
          +        <p class="lead">
          +          The 4.0 release of Select2 is the result of three years of working on the
          +          code base and watching where it needs to go. At the core, it is a full
          +          rewrite that addresses many of the extensibility and usability problems
          +          that could not be addressed in previous versions.
          +        </p>
          +
          +        <p>
          +          This release contains many breaking changes, but easy-upgrade paths have
          +          been created as well as helper modules that will allow for backwards
          +          compatibility to be maintained with past versions of Select2. Upgrading
          +          <em>will</em> require you to read the release notes carefully, but the
          +          migration path should be relatively straightforward. You can view a list
          +          of the most common changes that you will need to make
          +          <a href="https://github.com/select2/select2/releases">in the release notes</a>.
          +        </p>
          +
          +        <p>
          +          Below is an in-depth review of what is new in Select2, as well as some of
          +          the major changes that have been made.
          +        </p>
          +      </section>
          +
          +      <section id="new">
          +        <h2>New features</h2>
          +
          +        <p>
          +          The notable features of this new release include:
          +        </p>
          +
          +        <ul>
          +          <li>
          +            A more flexible plugin framework that allows you to override Select2 to
          +            behave exactly how you want it to.
          +          </li>
          +          <li>
          +            Consistency with standard <code>&lt;select&gt;</code> elements for all
          +            data adapters, removing the need for hidden <code>&lt;input&gt;</code>
          +            elements.
          +          </li>
          +          <li>
          +            A new build system that uses AMD to keep everything organized.
          +          </li>
          +          <li>
          +            Less specific selectors allowing for Select2 to be styled to fit the
          +            rest of your application.
          +          </li>
          +        </ul>
          +      </section>
          +
          +      <section id="plugins">
          +        <h2>Plugin system</h2>
          +
          +        <p>
          +          Select2 now provides interfaces that allow for it to be easily extended,
          +          allowing for anyone to create a plugin that changes the way Select2 works.
          +          This is the result of Select2 being broken into four distinct sections,
          +          each of which can be extended and used together to create your unique
          +          Select2.
          +        </p>
          +
          +        <p>
          +          The adapters implement a consistent interface that is documented in the
          +          <a href="options.html#adapters">options section for adapters</a>, allowing
          +          you to customize Select2 to do exactly what you are looking for. Select2
          +          is designed such that you can mix and match plugins, with most of the core
          +          options being built as decorators that wrap the standard adapters.
          +        </p>
          +      </section>
          +
          +      <section id="amd-builds">
          +        <h2>AMD-based build system</h2>
          +
          +        <p>
          +          Select2 now uses an
          +          <a href="https://en.wikipedia.org/wiki/Asynchronous_module_definition">AMD-based build system</a>,
          +          allowing for builds that only require the parts of Select2 that you need.
          +          While a custom build system has not yet been created, Select2 is open
          +          source and will gladly accept a pull request for one.
          +        </p>
          +
          +        <p>
          +          Select2 includes the minimal <a href="https://github.com/jrburke/almond">almond</a>
          +          AMD loader, but a custom <code>select2.amd.js</code> build is available
          +          if you already use an AMD loader. The code base (available in the
          +          <code>src</code> directory) also uses AMD, allowing you to include Select2
          +          in your own build system and generate your own builds alongside your
          +          existing infrastructure.
          +        </p>
          +
          +        <p>
          +          The AMD methods used by Select2 are available as
          +          <code>jQuery.fn.select2.amd.define()/require()</code>, allowing you to use the
          +          included almond loader. These methods are primarily used by the
          +          translations, but they are the recommended way to access custom modules
          +          that Select2 provides.
          +        </p>
          +      </section>
          +
          +      <section id="migrating">
          +        <h1>Migrating from Select2 3.5</h1>
          +
          +        <p>
          +          There are a few breaking changes that migrators should be aware of when
          +          they are coming from older versions of Select2.
          +        </p>
          +
          +        <p>
          +          If you use the full build of Select2 (<code>select2.full.js</code>), you
          +          will be automatically notified of the major breaking changes, and
          +          compatibility modules will be used in some cases to ensure that your code
          +          still behaves how you were expecting.
          +        </p>
          +
          +        <h2 id="hidden-input">No more hidden input tags</h2>
          +
          +        <p>
          +          In past versions of Select2, an <code>&lt;input type="hidden" /&gt;</code>
          +          tag was recommended if you wanted to do anything advanced with Select2,
          +          such as work with remote data sources or allow users to add their own
          +          tags. This had the unfortunate side-effect of servers not receiving the
          +          data from Select2 as an array, like a standard <code>&lt;select&gt;</code>
          +          element does, but instead sending a string containing the comma-separated
          +          strings. The code base ended up being littered with special cases for the
          +          hidden input, and libraries using Select2 had to work around the
          +          differences it caused.
          +        </p>
          +
          +        <p>
          +          In Select2 4.0, the <code>&lt;select&gt;</code> element supports all core
          +          options, and support for the old
          +          <code>&lt;input type="hidden" /&gt;</code> has been deprecated. This means
          +          that if you previously declared an AJAX field with some pre-selected
          +          options that looked like…
          +        </p>
          +
          +{% highlight html linenos %}
          +<input type="hidden" name="select-boxes" value="1,2,4,6" />
          +{% endhighlight %}
          +
          +        <p>
          +          It will need to be recreated as a <code>&lt;select&gt;</code> element with
          +          some <code>&lt;option&gt;</code> tags that have <code>value</code>
          +          attributes that match the old value.
          +        </p>
          +
          +{% highlight html linenos %}
          +<select name="select-boxes" multiple="multiple">
          +  <option value="1" selected="selected">Select2</option>
          +  <option value="2" selected="selected">Chosen</option>
          +  <option value="4" selected="selected">selectize.js</option>
          +  <option value="6" selected="selected">typeahead.js</option>
          +</select>
          +{% endhighlight %}
          +
          +        <p>
          +          The options that you create should have <code>selected="selected"</code>
          +          set so Select2 and the browser knows that they should be selected. The
          +          <code>value</code> attribute of the option should also be set to the value
          +          that will be returned from the server for the result, so Select2 can
          +          highlight it as selected in the dropdown. The text within the option
          +          should also reflect the value that should be displayed by default for the
          +          option.
          +        </p>
          +
          +        <h2 id="new-matcher">Advanced matching of searches</h2>
          +
          +        <p>
          +          In past versions of Select2, when matching search terms to individual
          +          options, which limited the control that you had when displaying results,
          +          especially in cases where there was nested data. The <code>matcher</code>
          +          function was only given the individual option, even if it was a nested
          +          options, without any context.
          +        </p>
          +
          +        <p>
          +          With the new matcher function, only the root-level options are matched and
          +          matchers are expected to limit the results of any children options that
          +          they contain. This allows developers to customize how options within
          +          groups can be displayed, and modify how the results are returned.
          +        </p>
          +
          +        <p>
          +          A function has been created that allows old-style matcher functions to be
          +          converted to the new style. You can retrieve the function from the
          +          <code>select2/compat/matcher</code> module, which should just wrap the old
          +          matcher function.
          +        </p>
          +
          +        <p>
          +          So if your old code used a matcher that only displayed options if they
          +          started with the term that was entered, it would look something like…
          +        </p>
          +
          +{% highlight js linenos %}
          +function matchStart (term, text) {
          +  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +    return true;
          +  }
          +
          +  return false;
          +}
          +
          +$("select").select2({
          +  matcher: matchStart
          +})
          +{% endhighlight %}
          +
          +        <p>
          +          Then in Select2 4.0, you would need to wrap the <code>matchStart</code>
          +          method (or the name of the matcher you created) with a
          +          <code>oldMatcher</code> method that we have created.
          +        </p>
          +
          +{% highlight js linenos %}
          +function matchStart (term, text) {
          +  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +    return true;
          +  }
          +
          +  return false;
          +}
          +
          +$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
          +  $("select").select2({
          +    matcher: oldMatcher(matchStart)
          +  })
          +});
          +{% endhighlight %}
          +
          +        <p>
          +          This will work for any matchers that only took in the search term and the
          +          text of the option as parameters. If your matcher relied on the third
          +          parameter containing the jQuery element representing the original
          +          <code>&lt;option&gt;</code> tag, then you may need to slightly change
          +          your matcher to expect the full JavaScript data object being passed in
          +          instead. You can still retrieve the jQuery element from the data object
          +          using the <code>data.element</code> property.
          +        </p>
          +
          +        <h2 id="flexible-placeholders">More flexible placeholders</h2>
          +
          +        <p>
          +          In the most recent versions of Select2, placeholders could only be
          +          applied to the first (typically the default) option in a
          +          <code>&lt;select&gt;</code> if it was blank. The
          +          <code>placeholderOption</code> option was added to Select2 to allow users
          +          using the <code>select</code> tag to select a different option, typically
          +          an automatically generated option with a different value.
          +        </p>
          +
          +        <p>
          +          The <code>placeholder</code> option can now take an object as well as just
          +          a string. This replaces the need for the old
          +          <code>placeholderOption</code>, as now the <code>id</code> of the object
          +          can be set to the <code>value</code> attribute of the
          +          <code>&lt;option&gt;</code> tag.
          +        </p>
          +
          +        <p>
          +          For a select that looks like the following, where the first option (with a
          +          value of <code>-1</code>) is the placeholder option…
          +        </p>
          +
          +{% highlight html linenos %}
          +<select>
          +  <option value="-1" selected="selected">Select an option</option>
          +  <option value="1">Something else</option>
          +</select>
          +{% endhighlight %}
          +
          +        <p>
          +          You would have previously had to get the placeholder option through the
          +          <code>placeholderOption</code>, but now you can do it through the
          +          <code>placeholder</code> option by setting an <code>id</code>.
          +        </p>
          +
          +{% highlight js linenos %}
          +$("select").select2({
          +  placeholder: {
          +    id: "-1",
          +    placeholder: "Select an option"
          +  }
          +})
          +{% endhighlight %}
          +
          +        <p>
          +          And Select2 will automatically display the placeholder when the value of
          +          the select is <code>-1</code>, which it will be by default. This does not
          +          break the old functionality of Select2 where the placeholder option was
          +          blank by default.
          +        </p>
          +
          +        <h2 id="value-ordering">Display reflects the actual order of the values</h2>
          +
          +        <p>
          +          In past versions of Select2, choices were displayed in the order that
          +          they were selected. In cases where Select2 was used on a
          +          <code>&lt;select&gt;</code> element, the order that the server received
          +          the selections did not always match the order that the choices were
          +          displayed, resulting in confusion in situations where the order is
          +          important.
          +        </p>
          +
          +        <p>
          +          Select2 will now order selected choices in the same order that will be
          +          sent to the server.
          +        </p>
          +
          +        <h2 id="changed-options">Changed method and option names</h2>
          +
          +        <p>
          +          When designing the future option set for Select2 4.0, special care was
          +          taken to ensure that the most commonly used options were brought over.
          +          For the most part, the commonly used options of Select2 can still be
          +          referenced under their previous names, but there were some changes which
          +          have been noted.
          +        </p>
          +
          +        <h3 id="removed-initselection">
          +          Removed the requirement of <code>initSelection</code>
          +        </h3>
          +
          +        <p>
          +          In the past, whenever you wanted to use a custom data adapter, such as
          +          AJAX or tagging, you needed to help Select2 out in determining the initial
          +          values that were selected. This was typically done through the
          +          <code>initSelection</code> option, which took the underlying data of the
          +          input and converted it into data objects that Select2 could use.
          +        </p>
          +
          +        <p>
          +          This is now handled by
          +          <a href="options.html#dataAdapter">the data adapter</a> in the
          +          <code>current</code> method, which allows Select2 to convert the currently
          +          selected values into data objects that can be displayed. The default
          +          implementation converts the text and value of <code>option</code> elements
          +          into data objects, and is probably suitable for most cases. An example of
          +          the old <code>initSelection</code> option is included below, which
          +          converts the value of the selected options into a data object with both
          +          the <code>id</code> and <code>text</code> matching the selected value.
          +        </p>
          +
          +{% highlight js linenos %}
          +{
          +  initSelection : function (element, callback) {
          +    var data = [];
          +    $(element.val()).each(function () {
          +      data.push({id: this, text: this});
          +    });
          +    callback(data);
          +  }
          +}
          +{% endhighlight %}
          +
          +        <p>
          +          When using the new <code>current</code> method of the custom data adapter,
          +          <strong>this method is called any time Select2 needs a list</strong> of
          +          the currently selected options. This is different from the old
          +          <code>initSelection</code> in that it was only called once, so it could
          +          suffer from being relatively slow to process the data (such as from a
          +          remote data source).
          +        </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.amd.require([
          +  'select2/data/array',
          +  'select2/utils'
          +], function (ArrayData, Utils) {
          +  function CustomData ($element, options) {
          +    CustomData.__super__.constructor.call(this, $element, options);
          +  }
          +
          +  Utils.Extend(CustomData, ArrayData);
          +
          +  CustomData.prototype.current = function (callback) {
          +    var data = [];
          +    var currentVal = this.$element.val();
          +
          +    if (!this.$element.prop('multiple')) {
          +      currentVal = [currentVal];
          +    }
          +
          +    for (var v = 0; v < currentVal.length; v++) {
          +      data.push({
          +        id: currentVal[v],
          +        text: currentVal[v]
          +      });
          +    }
          +
          +    callback(data);
          +  };
          +
          +  $("#select").select2({
          +    dataAdapter: CustomData
          +  });
          +}
          +{% endhighlight %}
          +
          +        <p>
          +          The new <code>current</code> method of the data adapter works in a similar
          +          way to the old <code>initSelection</code> method, with three notable
          +          differences. The first, and most important, is that <strong>it is called
          +          whenever the current selections are needed</strong> to ensure that Select2
          +          is always displaying the most accurate and up to date data. No matter
          +          what type of element Select2 is attached to, whether it supports a
          +          single or multiple selections, the data passed to the callback
          +          <strong>must be an array, even if it contains one selection</strong>.
          +          The last is that there is only one parameter, the callback to be
          +          executed with the latest data, and the current element that Select2 is
          +          attached to is available on the class itself as
          +          <code>this.$element</code>.
          +        </p>
          +
          +        <p>
          +          If you only need to load in the initial options once, and otherwise will
          +          be letting Select2 handle the state of the selections, you don't need to
          +          use a custom data adapter. You can just create the
          +          <code>&lt;option&gt;</code> tags on your own, and Select2 will pick up
          +          the changes.
          +        </p>
          +
          +{% highlight js linenos %}
          +var $element = $('select').select2(); // the select element you are working with
          +
          +var $request = $.ajax({
          +  url: '/my/remote/source' // wherever your data is actually coming from
          +});
          +
          +$request.then(function (data) {
          +  // This assumes that the data comes back as an array of data objects
          +  // The idea is that you are using the same callback as the old `initSelection`
          +
          +  for (var d = 0; d < data.length; d++) {
          +    var item = data[d];
          +
          +    // Create the DOM option that is pre-selected by default
          +    var option = new Option(item.text, item.id, true, true);
          +
          +    // Append it to the select
          +    $element.append(option);
          +  }
          +
          +  // Update the selected options that are displayed
          +  $element.trigger('change');
          +});
          +{% endhighlight %}
          +
          +        <h3 id="query-to-data-adapter">
          +          Custom data adapters instead of <code>query</code>
          +        </h3>
          +
          +        <p>
          +          <a href="http://select2.github.io/select2/#data">In the past</a>, any time
          +          you wanted to hook Select2 up to a different data source you would be
          +          required to implement custom <code>query</code> and
          +          <code>initSelection</code> methods. This allowed Select2 to determine the
          +          initial selection and the list of results to display, and it would handle
          +          everything else internally, which was fine more most people.
          +        </p>
          +
          +        <p>
          +          The custom <code>query</code> and <code>initSelection</code> methods have
          +          been replaced by
          +          <a href="options.html#dataAdapter">custom data adapters</a> that handle
          +          how Select2 stores and retrieves the data that will be displayed to the
          +          user. An example of the old <code>query</code> option is provided below,
          +          which is
          +          <a href="http://select2.github.io/select2/#data">the same as the old example</a>,
          +          and it generates results that contain the search term repeated a certain
          +          number of times.
          +        </p>
          +
          +{% highlight js linenos %}
          +{
          +  query: function (query) {
          +    var data = {results: []}, i, j, s;
          +    for (i = 1; i < 5; i++) {
          +      s = "";
          +      for (j = 0; j < i; j++) {s = s + query.term;}
          +      data.results.push({id: query.term + i, text: s});
          +    }
          +    query.callback(data);
          +  }
          +}
          +{% endhighlight %}
          +
          +        <p>
          +          This has been replaced by custom data adapters which define a similarly
          +          named <code>query</code> method. The comparable data adapter is provided
          +          below as an example.
          +        </p>
          +
          +{% highlight js linenos %}
          +$.fn.select2.amd.require([
          +  'select2/data/array',
          +  'select2/utils'
          +], function (ArrayData, Utils) {
          +  function CustomData ($element, options) {
          +    CustomData.__super__.constructor.call(this, $element, options);
          +  }
          +
          +  Utils.Extend(CustomData, ArrayData);
          +
          +  CustomData.prototype.query = function (params, callback) {
          +    var data = {
          +      results: []
          +    };
          +
          +    for (var i = 1; i < 5; i++) {
          +      var s = "";
          +
          +      for (var j = 0; j < i; j++) {
          +        s = s + params.term;
          +      }
          +
          +      data.results.push({
          +        id: params.term + i,
          +        text: s
          +      });
          +    }
          +
          +    callback(data);
          +  };
          +
          +  $("#select").select2({
          +    dataAdapter: CustomData
          +  });
          +}
          +{% endhighlight %}
          +
          +        <p>
          +          The new <code>query</code> method of the data adapter is very similar to
          +          the old <code>query</code> option that was passed into Select2 when
          +          initializing it. The old <code>query</code> argument is mostly the same as
          +          the new <code>params</code> that are passed in to query on, and the
          +          callback that should be used to return the results is now passed in as the
          +          second parameter.
          +        </p>
          +
          +        <h3 id="changed-templating">Renamed templating options</h3>
          +
          +        <p>
          +          Select2 previously provided multiple options for formatting the results
          +          list and selected options, commonly referred to as "formatters", using the
          +          <code>formatSelection</code> and <code>formatResult</code> options. As the
          +          "formatters" were also used for things such as localization,
          +          <a href="#changed-translations">which has also changed</a>, they have been
          +          renamed to <code>templateSelection</code> and <code>templateResult</code>
          +          and their signatures have changed as well.
          +        </p>
          +
          +        <p>
          +          You should refer to the updated
          +          <a href="options.html#templating">documentation on templates</a> when
          +          migrating from previous versions of Select2.
          +        </p>
          +
          +        <h3 id="changed-id">
          +          The <code>id</code> and <code>text</code> properties are strictly enforced
          +        </h3>
          +
          +        <p>
          +          When working with array and AJAX data in the past, Select2 allowed a
          +          custom <code>id</code> function or attribute to be set in various places,
          +          ranging from the initialization of Select2 to when the remote data was
          +          being returned. This allowed Select2 to better integrate with existing
          +          data sources that did not necessarily use the <code>id</code> attribute to
          +          indicate the unique identifier for an object.
          +        </p>
          +
          +        <p>
          +          Select2 no longer supports a custom <code>id</code> or <code>text</code>
          +          to be used, but provides integration points for converting incorrect data
          +          to the expected format.
          +        </p>
          +
          +        <h4>
          +          When working with array data
          +        </h4>
          +
          +        <p>
          +          Select2 previously supported defining array data as an object that matched
          +          the signature of an AJAX response. A <code>text</code> property could be
          +          specified that would map the given property to the <code>text</code>
          +          property on the individual objects. You can now do this when initializing
          +          Select2 by using the following jQuery code to map the old
          +          <code>text</code> and <code>id</code> properties to the new ones.
          +        </p>
          +
          +{% highlight js linenos %}
          +var data = $.map([
          +  {
          +    pk: 1,
          +    word: 'one'
          +  },
          +  {
          +    pk: 2,
          +    word: 'two'
          +  }
          +], function (obj) {
          +  obj.id = obj.id || obj.pk;
          +  obj.text = obj.text || obj.word;
          +
          +  return obj;
          +});
          +{% endhighlight %}
          +
          +        <p>
          +          This will result in an array of data objects that have the <code>id</code>
          +          properties that match the existing <code>pk</code> properties and
          +          <code>text</code> properties that match the existing <code>word</code>
          +          properties.
          +        </p>
          +
          +        <h4>
          +          When working with remote data
          +        </h4>
          +
          +        <p>
          +          The same code that was given above can be used in the
          +          <code>processResults</code> method of an AJAX call to map properties there
          +          as well.
          +        </p>
          +
          +        <h3 id="changed-translations">Renamed translation options</h3>
          +
          +        <p>
          +          In previous versions of Select2, the default messages provided to users
          +          could be localized to fit the language of the website that it was being
          +          used on. Select2 only comes with the English language by default, but
          +          provides
          +          <a href="options.html#language">community-contributed translations</a> for
          +          many common languages. Many of the formatters have been moved to the
          +          <code>language</code> option and the signatures of the formatters have
          +          been changed to handle future additions.
          +        </p>
          +
          +        <h3 id="changed-data">
          +          Declaring options using <code>data-*</code> attributes
          +        </h3>
          +
          +        <p>
          +          In the past, Select2 has only supported declaring a subset of options
          +          using <code>data-*</code> attributes. Select2 now supports declaring all
          +          options using the attributes, using
          +          <a href="options.html#data-attributes">the format specified in the documentation</a>.
          +        </p>
          +
          +        <p>
          +          You could previously declare the URL that was used for AJAX requests using
          +          the <code>data-ajax-url</code> attribute. While Select2 still allows for
          +          this, the new attribute that should be used is the
          +          <code>data-ajax--url</code> attribute. Support for the old attribute will
          +          be removed in Select2 4.1.
          +        </p>
          +
          +        <p>
          +          Although it was not documented, a list of possible tags could also be
          +          provided using the <code>data-select2-tags</code> attribute and passing in
          +          a JSON-formatted array of objects for tags. As the method for specifying
          +          tags has changed in 4.0, you should now provide the array of objects using
          +          the <code>data-data</code> attribute, which maps to
          +          <a href="options.html#data">the array data</a> option. You should also
          +          enable tags by setting <code>data-tags="true"</code> on the object, to
          +          maintain the ability for users to create their own options as well.
          +        </p>
          +
          +        <p>
          +          If you previously declared the list of tags as…
          +        </p>
          +
          +{% highlight html linenos %}
          +<select data-select2-tags='[{"id": "1", "text": "One"}, {"id": "2", "text": "Two"}]'></select>
          +{% endhighlight %}
          +
          +        <p>
          +          …then you should now declare it as…
          +        </p>
          +
          +{% highlight html linenos %}
          +<select data-data='[{"id": "1", "text": "One"}, {"id": "2", "text": "Two"}]' data-tags="true"></select>
          +{% endhighlight %}
          +
          +        <h2 id="removed-methods">Deprecated and removed methods</h2>
          +
          +        <p>
          +          As Select2 now uses a <code>&lt;select&gt;</code> element for all data
          +          sources, a few methods that were available by calling
          +          <code>.select2()</code> are no longer required.
          +        </p>
          +
          +        <h3>.select2("val")</h3>
          +
          +        <p>
          +          The <code>"val"</code> method has been deprecated and will be removed in
          +          Select2 4.1. The deprecated method no longer includes the
          +          <code>triggerChange</code> parameter.
          +        </p>
          +
          +        <p>
          +          You should directly call <code>.val</code> on the underlying
          +          <code>&lt;select&gt;</code> element instead. If you needed the second
          +          parameter (<code>triggerChange</code>), you should also call
          +          <code>.trigger("change")</code> on the element.
          +        </p>
          +
          +{% highlight js linenos %}
          +$("select").val("1").trigger("change"); // instead of $("select").select2("val", "1");
          +{% endhighlight %}
          +
          +        <h3>.select2("enable")</h3>
          +
          +        <p>
          +          Select2 will respect the <code>disabled</code> property of the underlying
          +          select element. In order to enable or disable Select2, you should call
          +          <code>.prop('disabled', true/false)</code> on the
          +          <code>&lt;select&gt;</code> element. Support for the old methods will be
          +          completely removed in Select2 4.1.
          +        </p>
          +
          +{% highlight js linenos %}
          +$("select").prop("disabled", true); // instead of $("select").enable(false);
          +{% endhighlight %}
          +
          +      </section>
          +    </div>
          +    <div class="col-md-3" role="complementary">
          +
          +      {% include nav/announcements-4.0.html %}
          +
          +    </div>
          +  </div>
          +</div>
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/browserconfig.xml b/public/theme/select2/docs/browserconfig.xml
          new file mode 100644
          index 0000000..beca4f5
          --- /dev/null
          +++ b/public/theme/select2/docs/browserconfig.xml
          @@ -0,0 +1,11 @@
          +<?xml version="1.0" encoding="utf-8"?>
          +<browserconfig>
          +  <msapplication>
          +    <tile>
          +      <square70x70logo src="/images/mstile-70x70.png?v=699Nxpjr2A"/>
          +      <square150x150logo src="/images/mstile-150x150.png?v=699Nxpjr2A"/>
          +      <wide310x150logo src="/images/mstile-310x150.png?v=699Nxpjr2A"/>
          +      <TileColor>#da532c</TileColor>
          +    </tile>
          +  </msapplication>
          +</browserconfig>
          diff --git a/public/theme/select2/docs/community.html b/public/theme/select2/docs/community.html
          new file mode 100644
          index 0000000..54830af
          --- /dev/null
          +++ b/public/theme/select2/docs/community.html
          @@ -0,0 +1,154 @@
          +---
          +layout: default
          +title: Community - Select2
          +slug: community
          +---
          +
          +<section class="jumbotron">
          +  <div class="container">
          +    <h1>
          +      Community
          +    </h1>
          +    <p class="lead">
          +      Select2 has an active community that enjoys helping each other out.
          +    </p>
          +  </div>
          +</section>
          +
          +<div class="container">
          +  <section id="support">
          +    <div class="page-header">
          +      <h1>Getting support</h1>
          +    </div>
          +
          +    <p>
          +      Having trouble getting Select2 working on your website? Is it not working
          +      together with another plugin, even though you think it should? Select2 has a
          +      few communities that you can go to for help getting it all working together.
          +    </p>
          +
          +    <ol>
          +      <li>
          +        Try sending a message to the
          +        <a href="https://groups.google.com/d/forum/select2">
          +          Select2 discussion group
          +        </a>
          +        or searching the archives.
          +      </li>
          +      <li>
          +        Ask in the <code>#select2</code> channel on
          +        <code>chat.freenode.net</code> or use the
          +        <a href="https://webchat.freenode.net/?channels=select2">
          +          web irc client.
          +        </a>
          +      </li>
          +      <li>
          +        Raise a question on
          +        <a href="http://stackoverflow.com/">Stack Overflow</a>,
          +        make sure to include the
          +        <a href="http://stackoverflow.com/questions/tagged/jquery-select2?sort=votes">
          +          "jquery-select2"
          +        </a>
          +        tag.
          +      </li>
          +    </ol>
          +  </section>
          +
          +  <section id="reporting-bugs">
          +    <div class="page-header">
          +      <h1>Reporting bugs</h1>
          +    </div>
          +
          +    <p>
          +      Found a problem with Select2? Feel free to open a ticket on the Select2
          +      repository on GitHub, but you should keep a few things in mind:
          +    </p>
          +
          +    <ol>
          +      <li>
          +        Use the
          +        <a href="https://github.com/select2/select2/search?q=&type=Issues">
          +          GitHub issue search
          +        </a>
          +        to check if your issue has already been reported.
          +      </li>
          +      <li>
          +        Try to isolate your problem as much as possible, so we can easily test if
          +        the issue has been fixed.
          +      </li>
          +      <li>
          +        Once you are sure the issue is with Select2, and not a third party
          +        library,
          +        <a href="https://github.com/select2/select2/issues/new">
          +          submit a ticket
          +        </a>
          +        to the repository.
          +      </li>
          +    </ol>
          +
          +    <p>
          +      You can find more information on reporting bugs in the
          +      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#reporting-bugs-with-select2">
          +        contributing guide,
          +      </a>
          +      including tips on what information to include.
          +    </p>
          +  </section>
          +
          +  <section id="requesting-features">
          +    <div class="page-header">
          +      <h1>Requesting new features</h1>
          +    </div>
          +
          +    <p>
          +      New feature requests are usually requested by the
          +      <a href="https://github.com/select2/select2/issues">
          +        Select2 community on GitHub,
          +      </a>
          +      and are often fulfilled by
          +      <a href="#contributing">
          +        fellow contributors.
          +      </a>
          +    </p>
          +
          +    <ol>
          +      <li>
          +        Use the
          +        <a href="https://github.com/select2/select2/search?q=&type=Issues">
          +          GitHub issue search
          +        </a>
          +        to check if your feature has already been requested.
          +      </li>
          +      <li>
          +        Check if it hasn't already been implemented as a
          +        <a href="">
          +          third party plugin.
          +        </a>
          +      </li>
          +      <li>
          +        Please make sure you are only requesting a single feature, and not a
          +        collection of smaller features.
          +      </li>
          +    </ol>
          +
          +    <p>
          +      You can find more information on requesting new features in the
          +      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#requesting-features-in-select2">
          +        contributing guide.
          +      </a>
          +    </p>
          +  </section>
          +
          +  <section id="contributing">
          +    <div class="page-header">
          +      <h1>Getting involved</h1>
          +    </div>
          +
          +    <p>
          +      You can find more information on getting involved with Select2 in the
          +      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#triaging-issues-and-pull-requests">
          +        contributing guide.
          +      </a>
          +    </p>
          +  </section>
          +</div>
          diff --git a/public/theme/select2/docs/css/bootstrap.scss b/public/theme/select2/docs/css/bootstrap.scss
          new file mode 100644
          index 0000000..83fc0c7
          --- /dev/null
          +++ b/public/theme/select2/docs/css/bootstrap.scss
          @@ -0,0 +1,51 @@
          +---
          +---
          +
          +/*!
          + * Bootstrap v3.3.6 (http://getbootstrap.com)
          + * Copyright 2011-2015 Twitter, Inc.
          + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
          + */
          +
          +// Core variables and mixins
          +@import "vendor/bootstrap/variables";
          +@import "vendor/bootstrap/mixins";
          +
          +// Reset and dependencies
          +@import "vendor/bootstrap/normalize";
          +@import "vendor/bootstrap/print";
          +
          +// Core CSS
          +@import "vendor/bootstrap/scaffolding";
          +@import "vendor/bootstrap/type";
          +@import "vendor/bootstrap/code";
          +@import "vendor/bootstrap/grid";
          +@import "vendor/bootstrap/tables";
          +@import "vendor/bootstrap/forms";
          +@import "vendor/bootstrap/buttons";
          +
          +// Components
          +@import "vendor/bootstrap/component-animations";
          +@import "vendor/bootstrap/dropdowns";
          +@import "vendor/bootstrap/button-groups";
          +@import "vendor/bootstrap/input-groups";
          +@import "vendor/bootstrap/navs";
          +@import "vendor/bootstrap/navbar";
          +@import "vendor/bootstrap/breadcrumbs";
          +@import "vendor/bootstrap/pagination";
          +@import "vendor/bootstrap/pager";
          +@import "vendor/bootstrap/labels";
          +@import "vendor/bootstrap/badges";
          +@import "vendor/bootstrap/jumbotron";
          +@import "vendor/bootstrap/thumbnails";
          +@import "vendor/bootstrap/alerts";
          +@import "vendor/bootstrap/media";
          +@import "vendor/bootstrap/list-group";
          +@import "vendor/bootstrap/panels";
          +@import "vendor/bootstrap/responsive-embed";
          +@import "vendor/bootstrap/wells";
          +@import "vendor/bootstrap/close";
          +
          +// Utility classes
          +@import "vendor/bootstrap/utilities";
          +@import "vendor/bootstrap/responsive-utilities";
          diff --git a/public/theme/select2/docs/css/font-awesome.scss b/public/theme/select2/docs/css/font-awesome.scss
          new file mode 100644
          index 0000000..d72cf94
          --- /dev/null
          +++ b/public/theme/select2/docs/css/font-awesome.scss
          @@ -0,0 +1,16 @@
          +---
          +---
          +
          +/*!
          + *  Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
          + *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
          + */
          +
          +$fa-font-path: "../vendor/fonts";
          +
          +@import "vendor/font-awesome/variables";
          +@import "vendor/font-awesome/mixins";
          +@import "vendor/font-awesome/path";
          +@import "vendor/font-awesome/core";
          +@import "vendor/font-awesome/list";
          +@import "vendor/font-awesome/icons";
          diff --git a/public/theme/select2/docs/css/s2-docs.scss b/public/theme/select2/docs/css/s2-docs.scss
          new file mode 100644
          index 0000000..6b66a37
          --- /dev/null
          +++ b/public/theme/select2/docs/css/s2-docs.scss
          @@ -0,0 +1,24 @@
          +---
          +---
          +
          +@import "vendor/bootstrap/variables";
          +
          +@import "result-repository";
          +@import "sidenav";
          +@import "hamburger";
          +@import "code";
          +@import "featurette";
          +@import "layout";
          +@import "nav";
          +@import "footer";
          +@import "alert";
          +@import "home";
          +@import "examples";
          +@import "social";
          +@import "buttons";
          +@import "anchorjs";
          +@import "jumbotron";
          +@import "prettify";
          +@import "syntax-highlighting";
          +@import "typography";
          +@import "dl-panels";
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/examples.html b/public/theme/select2/docs/examples.html
          new file mode 100644
          index 0000000..aeb329b
          --- /dev/null
          +++ b/public/theme/select2/docs/examples.html
          @@ -0,0 +1,256 @@
          +---
          +layout: default
          +title: Examples - Select2
          +slug: examples
          +---
          +
          +<script type="text/javascript" src="vendor/js/placeholders.jquery.min.js"></script>
          +<script type="text/javascript" src="dist/js/i18n/es.js"></script>
          +
          +<style type="text/css">
          +  .img-flag {
          +    height: 15px;
          +    width: 18px;
          +  }
          +</style>
          +
          +<section class="jumbotron">
          +  <div class="container">
          +    <h1>
          +      Examples
          +    </h1>
          +  </div>
          +</section>
          +
          +<div class="container s2-docs-container">
          +  <div class="row">
          +    <div class="col-md-9" role="main">
          +
          +      {% include examples/basics.html %}
          +      {% include examples/placeholders.html %}
          +      {% include examples/data.html %}
          +      {% include examples/disabled-mode.html %}
          +      {% include examples/disabled-results.html %}
          +      {% include examples/multiple-max.html %}
          +      {% include examples/hide-search.html %}
          +      {% include examples/programmatic-control.html %}
          +      {% include examples/tags.html %}
          +      {% include examples/tokenizer.html %}
          +      {% include examples/matcher.html %}
          +      {% include examples/localization-rtl-diacritics.html %}
          +      {% include examples/themes-templating-responsive-design.html %}
          +
          +    </div>
          +    <div class="col-md-3" role="complementary">
          +
          +      {% include nav/examples.html %}
          +
          +    </div>
          +  </div>
          +</div>
          +
          +{% include js-source-states.html %}
          +
          +<script type="text/javascript">
          +  var $states = $(".js-source-states");
          +  var statesOptions = $states.html();
          +  $states.remove();
          +
          +  $(".js-states").append(statesOptions);
          +
          +  $("[data-fill-from]").each(function () {
          +    var $this = $(this);
          +
          +    var codeContainer = $this.data("fill-from");
          +    var $container = $(codeContainer);
          +
          +    var code = $.trim($container.html());
          +
          +    $this.text(code);
          +    $this.addClass("prettyprint linenums");
          +  });
          +
          +  prettyPrint();
          +
          +  $.fn.select2.amd.require([
          +    "select2/core",
          +    "select2/utils",
          +    "select2/compat/matcher"
          +  ], function (Select2, Utils, oldMatcher) {
          +    var $basicSingle = $(".js-example-basic-single");
          +    var $basicMultiple = $(".js-example-basic-multiple");
          +    var $limitMultiple = $(".js-example-basic-multiple-limit");
          +
          +    var $dataArray = $(".js-example-data-array");
          +    var $dataArraySelected = $(".js-example-data-array-selected");
          +
          +    var data = [
          +      { id: 0, text: 'enhancement' },
          +      { id: 1, text: 'bug' },
          +      { id: 2, text: 'duplicate' },
          +      { id: 3, text: 'invalid' },
          +      { id: 4, text: 'wontfix' }
          +    ];
          +
          +    var $ajax = $(".js-example-data-ajax");
          +
          +    var $disabledResults = $(".js-example-disabled-results");
          +
          +    var $tags = $(".js-example-tags");
          +
          +    var $matcherStart = $('.js-example-matcher-start');
          +
          +    var $diacritics = $(".js-example-diacritics");
          +    var $language = $(".js-example-language");
          +
          +    $.fn.select2.defaults.set("width", "100%");
          +
          +    $basicSingle.select2();
          +    $basicMultiple.select2();
          +    $limitMultiple.select2({
          +      maximumSelectionLength: 2
          +    });
          +
          +    function formatState (state) {
          +      if (!state.id) {
          +        return state.text;
          +      }
          +      var $state = $(
          +        '<span>' +
          +          '<img src="vendor/images/flags/' +
          +            state.element.value.toLowerCase() +
          +          '.png" class="img-flag" /> ' +
          +          state.text +
          +        '</span>'
          +      );
          +      return $state;
          +    };
          +
          +    $(".js-example-templating").select2({
          +      templateResult: formatState,
          +      templateSelection: formatState
          +    });
          +
          +    $dataArray.select2({
          +      data: data
          +    });
          +
          +    $dataArraySelected.select2({
          +      data: data
          +    });
          +
          +    function formatRepo (repo) {
          +      if (repo.loading) return repo.text;
          +
          +      var markup = "<div class='select2-result-repository clearfix'>" +
          +        "<div class='select2-result-repository__avatar'><img src='" + repo.owner.avatar_url + "' /></div>" +
          +        "<div class='select2-result-repository__meta'>" +
          +          "<div class='select2-result-repository__title'>" + repo.full_name + "</div>";
          +
          +      if (repo.description) {
          +        markup += "<div class='select2-result-repository__description'>" + repo.description + "</div>";
          +      }
          +
          +      markup += "<div class='select2-result-repository__statistics'>" +
          +        "<div class='select2-result-repository__forks'><i class='fa fa-flash'></i> " + repo.forks_count + " Forks</div>" +
          +        "<div class='select2-result-repository__stargazers'><i class='fa fa-star'></i> " + repo.stargazers_count + " Stars</div>" +
          +        "<div class='select2-result-repository__watchers'><i class='fa fa-eye'></i> " + repo.watchers_count + " Watchers</div>" +
          +      "</div>" +
          +      "</div></div>";
          +
          +      return markup;
          +    }
          +
          +    function formatRepoSelection (repo) {
          +      return repo.full_name || repo.text;
          +    }
          +
          +    $ajax.select2({
          +      ajax: {
          +        url: "https://api.github.com/search/repositories",
          +        dataType: 'json',
          +        delay: 250,
          +        data: function (params) {
          +          return {
          +            q: params.term, // search term
          +            page: params.page
          +          };
          +        },
          +        processResults: function (data, params) {
          +          // parse the results into the format expected by Select2
          +          // since we are using custom formatting functions we do not need to
          +          // alter the remote JSON data, except to indicate that infinite
          +          // scrolling can be used
          +          params.page = params.page || 1;
          +
          +          return {
          +            results: data.items,
          +            pagination: {
          +              more: (params.page * 30) < data.total_count
          +            }
          +          };
          +        },
          +        cache: true
          +      },
          +      escapeMarkup: function (markup) { return markup; },
          +      minimumInputLength: 1,
          +      templateResult: formatRepo,
          +      templateSelection: formatRepoSelection
          +    });
          +
          +    $(".js-example-disabled").select2();
          +    $(".js-example-disabled-multi").select2();
          +
          +    $(".js-example-responsive").select2({
          +        width: 'resolve' // need to override the changed default
          +    });
          +
          +    $disabledResults.select2();
          +
          +    $(".js-example-programmatic").select2();
          +    $(".js-example-programmatic-multi").select2();
          +
          +    $eventSelect.select2();
          +
          +    $tags.select2({
          +      tags: ['red', 'blue', 'green']
          +    });
          +
          +    $(".js-example-tokenizer").select2({
          +      tags: true,
          +      tokenSeparators: [',', ' ']
          +    });
          +
          +    function matchStart (term, text) {
          +      if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +        return true;
          +      }
          +
          +      return false;
          +    }
          +
          +    $matcherStart.select2({
          +      matcher: oldMatcher(matchStart)
          +    });
          +
          +    $(".js-example-basic-hide-search").select2({
          +      minimumResultsForSearch: Infinity
          +    });
          +
          +    $diacritics.select2();
          +
          +    $language.select2({
          +      language: "es"
          +    });
          +
          +    $(".js-example-theme-single").select2({
          +      theme: "classic"
          +    });
          +
          +    $(".js-example-theme-multiple").select2({
          +      theme: "classic"
          +    });
          +
          +    $(".js-example-rtl").select2();
          +  });
          +</script>
          diff --git a/public/theme/select2/docs/images/android-chrome-36x36.png b/public/theme/select2/docs/images/android-chrome-36x36.png
          new file mode 100644
          index 0000000..12a3dc6
          Binary files /dev/null and b/public/theme/select2/docs/images/android-chrome-36x36.png differ
          diff --git a/public/theme/select2/docs/images/android-chrome-48x48.png b/public/theme/select2/docs/images/android-chrome-48x48.png
          new file mode 100644
          index 0000000..64aa46a
          Binary files /dev/null and b/public/theme/select2/docs/images/android-chrome-48x48.png differ
          diff --git a/public/theme/select2/docs/images/android-chrome-72x72.png b/public/theme/select2/docs/images/android-chrome-72x72.png
          new file mode 100644
          index 0000000..2c2c829
          Binary files /dev/null and b/public/theme/select2/docs/images/android-chrome-72x72.png differ
          diff --git a/public/theme/select2/docs/images/apple-touch-icon-57x57.png b/public/theme/select2/docs/images/apple-touch-icon-57x57.png
          new file mode 100644
          index 0000000..ae24323
          Binary files /dev/null and b/public/theme/select2/docs/images/apple-touch-icon-57x57.png differ
          diff --git a/public/theme/select2/docs/images/apple-touch-icon-60x60.png b/public/theme/select2/docs/images/apple-touch-icon-60x60.png
          new file mode 100644
          index 0000000..e3f8d21
          Binary files /dev/null and b/public/theme/select2/docs/images/apple-touch-icon-60x60.png differ
          diff --git a/public/theme/select2/docs/images/apple-touch-icon-72x72.png b/public/theme/select2/docs/images/apple-touch-icon-72x72.png
          new file mode 100644
          index 0000000..e539920
          Binary files /dev/null and b/public/theme/select2/docs/images/apple-touch-icon-72x72.png differ
          diff --git a/public/theme/select2/docs/images/apple-touch-icon-precomposed.png b/public/theme/select2/docs/images/apple-touch-icon-precomposed.png
          new file mode 100644
          index 0000000..31b912e
          Binary files /dev/null and b/public/theme/select2/docs/images/apple-touch-icon-precomposed.png differ
          diff --git a/public/theme/select2/docs/images/apple-touch-icon.png b/public/theme/select2/docs/images/apple-touch-icon.png
          new file mode 100644
          index 0000000..e539920
          Binary files /dev/null and b/public/theme/select2/docs/images/apple-touch-icon.png differ
          diff --git a/public/theme/select2/docs/images/favicon-16x16.png b/public/theme/select2/docs/images/favicon-16x16.png
          new file mode 100644
          index 0000000..ab60a1d
          Binary files /dev/null and b/public/theme/select2/docs/images/favicon-16x16.png differ
          diff --git a/public/theme/select2/docs/images/favicon-32x32.png b/public/theme/select2/docs/images/favicon-32x32.png
          new file mode 100644
          index 0000000..5319e04
          Binary files /dev/null and b/public/theme/select2/docs/images/favicon-32x32.png differ
          diff --git a/public/theme/select2/docs/images/favicon.ico b/public/theme/select2/docs/images/favicon.ico
          new file mode 100644
          index 0000000..91dcfd5
          Binary files /dev/null and b/public/theme/select2/docs/images/favicon.ico differ
          diff --git a/public/theme/select2/docs/images/logo.png b/public/theme/select2/docs/images/logo.png
          new file mode 100644
          index 0000000..8de094f
          Binary files /dev/null and b/public/theme/select2/docs/images/logo.png differ
          diff --git a/public/theme/select2/docs/images/manifest.json b/public/theme/select2/docs/images/manifest.json
          new file mode 100644
          index 0000000..99bc8aa
          --- /dev/null
          +++ b/public/theme/select2/docs/images/manifest.json
          @@ -0,0 +1,23 @@
          +{
          +	"name": "Select2",
          +	"icons": [
          +		{
          +			"src": "\/images\/android-chrome-36x36.png?v=699Nxpjr2A",
          +			"sizes": "36x36",
          +			"type": "image\/png",
          +			"density": 0.75
          +		},
          +		{
          +			"src": "\/images\/android-chrome-48x48.png?v=699Nxpjr2A",
          +			"sizes": "48x48",
          +			"type": "image\/png",
          +			"density": 1
          +		},
          +		{
          +			"src": "\/images\/android-chrome-72x72.png?v=699Nxpjr2A",
          +			"sizes": "72x72",
          +			"type": "image\/png",
          +			"density": 1.5
          +		}
          +	]
          +}
          diff --git a/public/theme/select2/docs/images/mstile-150x150.png b/public/theme/select2/docs/images/mstile-150x150.png
          new file mode 100644
          index 0000000..9dede7d
          Binary files /dev/null and b/public/theme/select2/docs/images/mstile-150x150.png differ
          diff --git a/public/theme/select2/docs/images/mstile-310x150.png b/public/theme/select2/docs/images/mstile-310x150.png
          new file mode 100644
          index 0000000..a266af2
          Binary files /dev/null and b/public/theme/select2/docs/images/mstile-310x150.png differ
          diff --git a/public/theme/select2/docs/images/mstile-70x70.png b/public/theme/select2/docs/images/mstile-70x70.png
          new file mode 100644
          index 0000000..f2efb68
          Binary files /dev/null and b/public/theme/select2/docs/images/mstile-70x70.png differ
          diff --git a/public/theme/select2/docs/images/safari-pinned-tab.svg b/public/theme/select2/docs/images/safari-pinned-tab.svg
          new file mode 100644
          index 0000000..700213c
          --- /dev/null
          +++ b/public/theme/select2/docs/images/safari-pinned-tab.svg
          @@ -0,0 +1,17 @@
          +<?xml version="1.0" standalone="no"?>
          +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
          + "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
          +<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
          + width="72.000000pt" height="72.000000pt" viewBox="0 0 72.000000 72.000000"
          + preserveAspectRatio="xMidYMid meet">
          +<metadata>
          +Created by potrace 1.11, written by Peter Selinger 2001-2013
          +</metadata>
          +<g transform="translate(0.000000,72.000000) scale(0.100000,-0.100000)"
          +fill="#000000" stroke="none">
          +<path d="M177 598 l-179 -120 86 -57 c47 -31 86 -59 86 -63 0 -3 -39 -32 -86
          +-63 l-86 -58 181 -119 181 -119 181 122 180 121 -82 54 c-46 30 -84 56 -86 58
          +-3 2 21 21 52 42 31 22 70 49 86 61 l30 21 -180 121 c-99 67 -181 121 -183
          +120 -2 0 -83 -54 -181 -121z"/>
          +</g>
          +</svg>
          diff --git a/public/theme/select2/docs/index.html b/public/theme/select2/docs/index.html
          new file mode 100644
          index 0000000..accd1db
          --- /dev/null
          +++ b/public/theme/select2/docs/index.html
          @@ -0,0 +1,237 @@
          +---
          +layout: home
          +title: Select2 - The jQuery replacement for select boxes
          +slug: home
          +---
          +
          +<main class="jumbotron" role="main">
          +  <div class="container text-center">
          +    <h1>Select2</h1>
          +    <p class="lead">
          +      The jQuery replacement for select boxes
          +    </p>
          +    <p>
          +      <a href="https://github.com/select2/select2/releases" class="btn btn-outline-inverse btn-lg">
          +        Download Select2
          +      </a>
          +    </p>
          +    <p class="version">
          +      Currently v4.0.3</a>
          +    </p>
          +  </div>
          +</main>
          +
          +{% include notice-previous.html %}
          +
          +<div class="container">
          +  <section id="lead" class="lead">
          +    Select2 gives you a customizable select box with support for searching,
          +    tagging, remote data sets, infinite scrolling, and many other highly used
          +    options.
          +  </section>
          +
          +  <hr class="half-rule">
          +
          +  <div class="s2-docs-featurette">
          +    <div class="row">
          +      <div class="col-sm-4">
          +        <i class="fa fa-language"></i>
          +        <h4>In your language</h4>
          +        <p>
          +          Select2 comes with support for
          +          <a href="examples.html#rtl">RTL environments</a>,
          +          <a href="examples.html#diacritics">searching with diacritics</a> and
          +          <a href="examples.html#language">over 40 languages</a> built-in.
          +        </p>
          +      </div>
          +
          +      <div class="col-sm-4">
          +        <i class="fa fa-database"></i>
          +        <h4>Remote data support</h4>
          +        <p>
          +          <a href="examples.html#data-ajax">Using AJAX</a> you can efficiently
          +          search large lists of items.
          +        </p>
          +      </div>
          +
          +      <div class="col-sm-4">
          +        <i class="fa fa-paint-brush"></i>
          +        <h4>Fits in with your theme</h4>
          +        <p>
          +          Fully skinnable, CSS built with Sass and an
          +          <a href="https://github.com/select2/select2-bootstrap-theme">optional theme for Bootstrap 3</a>.
          +        </p>
          +      </div>
          +    </div>
          +
          +    <div class="row">
          +      <div class="col-sm-4">
          +        <i class="fa fa-plug"></i>
          +        <h4>Fully extensible</h4>
          +        <p>
          +          The <a href="announcements-4.0.html#plugin-system">plugin system</a>
          +          allows you to easily customize Select2 to work exactly how you want it
          +          to.
          +        </p>
          +      </div>
          +
          +      <div class="col-sm-4">
          +        <i class="fa fa-tag"></i>
          +        <h4>Dynamic item creation</h4>
          +        <p>
          +          Allow users to type in a new option and
          +          <a href="examples.html#tags">add it on the fly</a>.
          +        </p>
          +      </div>
          +
          +      <div class="col-sm-4">
          +        <i class="fa fa-html5"></i>
          +        <h4>Full browser support</h4>
          +        <p>Support for both modern and legacy browsers is built-in, even including Internet Explorer 8.</p>
          +      </div>
          +    </div>
          +  </div>
          +
          +  <hr class="half-rule">
          +
          +  <section id="getting-started">
          +    <h2>
          +      Getting started with Select2
          +    </h2>
          +
          +    <p>
          +      In order to use Select2, you must include the JavaScript and CSS file on
          +      your website. You can get these files built for you from many different
          +      locations.
          +    </p>
          +
          +    <h3>
          +      Using Select2 from a CDN
          +    </h3>
          +
          +    <p>
          +      Select2 is hosted on both the
          +      <a href="https://cdnjs.com/libraries/select2">cdnjs</a> and
          +      <a href="https://www.jsdelivr.com/#!select2">jsDelivr</a> CDNs, allowing
          +      you to quickly include Select2 on your website.
          +    </p>
          +
          +    <ol>
          +      <li>
          +        <p>
          +          Include the following lines of code in the <code>&lt;head&gt;</code>
          +          section of your HTML.
          +        </p>
          +
          +{% highlight html %}
          +<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
          +<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
          +{% endhighlight %}
          +
          +        <div class="alert alert-info">
          +          <i class="fa fa-info-circle"></i>
          +          Immediately following a new release, it takes some time for CDNs to
          +          catch up and get the new versions live on the CDN.
          +        </div>
          +      </li>
          +      <li>
          +        <p>
          +          Initialize Select2 on the <code>&lt;select&gt;</code> element that you
          +          want to make awesome.
          +        </p>
          +
          +{% highlight html %}
          +<script type="text/javascript">
          +  $('select').select2();
          +</script>
          +{% endhighlight %}
          +
          +      </li>
          +      <li>
          +        Check out the <a href="examples.html">examples page</a> to start using
          +        the additional features of Select2.
          +      </li>
          +    </ol>
          +
          +    <h3>
          +      Downloading the code locally
          +    </h3>
          +
          +    <p>
          +      In some situations, you can't use Select2 from a CDN and you must include
          +      the files through your own static file servers.
          +    </p>
          +
          +    <ol>
          +      <li>
          +        <p>
          +          <a href="https://github.com/select2/select2/tags">
          +            Download the code
          +          </a>
          +          from GitHub and copy the <code>dist</code> directory to your project.
          +        </p>
          +      </li>
          +      <li>
          +        <p>
          +          Include the following lines of code in the <code>&lt;head&gt;</code>
          +          section of your HTML.
          +        </p>
          +
          +{% highlight html %}
          +<link href="path/to/select2.min.css" rel="stylesheet" />
          +<script src="path/to/select2.min.js"></script>
          +{% endhighlight %}
          +
          +      </li>
          +      <li>
          +        Check out the <a href="examples.html">examples page</a> to start using
          +        the additional features of Select2.
          +      </li>
          +    </ol>
          +  </section>
          +
          +  <section id="builds">
          +    <h2>
          +      The different Select2 builds
          +    </h2>
          +
          +    <p>
          +      Select2 provides multiple builds that are tailored to different
          +      environments where it is going to be used. If you think you need to use
          +      Select2 in a nonstandard environment, like when you are using AMD, you
          +      should read over the list below.
          +    </p>
          +
          +    <table class="table table-bordered table-striped">
          +      <thead>
          +        <tr>
          +          <th>Build name</th>
          +          <th>When you should use it</th>
          +        </tr>
          +      </thead>
          +      <tbody>
          +        <tr id="builds-standard">
          +          <td>
          +            Standard (<code>select2.js</code> / <code>select2.min.js</code>)
          +          </td>
          +          <td>
          +            This is the build that most people should be using for Select2. It
          +            includes the most commonly used features.
          +          </td>
          +        </tr>
          +        <tr id="builds-full">
          +          <td>
          +            Full (<code>select2.full.js</code> / <code>select2.full.min.js</code>)
          +          </td>
          +          <td>
          +            You should only use this build if you need the additional features
          +            from Select2, like the
          +            <a href="options.html#compatibility">compatibility modules</a> or
          +            recommended includes like
          +            <a href="https://github.com/jquery/jquery-mousewheel">jquery.mousewheel</a>
          +          </td>
          +        </tr>
          +      </tbody>
          +    </table>
          +  </section>
          +</div>
          diff --git a/public/theme/select2/docs/options-old.html b/public/theme/select2/docs/options-old.html
          new file mode 100644
          index 0000000..65690d1
          --- /dev/null
          +++ b/public/theme/select2/docs/options-old.html
          @@ -0,0 +1,37 @@
          +---
          +layout: default
          +title: Options - Select2
          +slug: options
          +---
          +
          +<section class="jumbotron">
          +  <div class="container">
          +    <h1>
          +      Options
          +    </h1>
          +  </div>
          +</section>
          +
          +<div class="container s2-docs-container">
          +  <div class="row">
          +    <div class="col-md-9" role="main">
          +
          +      {% include options-old/core-options.html %}
          +      {% include options-old/dropdown.html %}
          +      {% include options-old/events.html %}
          +      {% include options-old/adapters.html %}
          +      {% include options-old/setting-default-options.html %}
          +      {% include options-old/backwards-compatibility.html %}
          +
          +    </div>
          +    <div class="col-md-3" role="complementary">
          +
          +      {% include nav/options-old.html %}
          +
          +    </div>
          +  </div>
          +</div>
          +
          +<script type="text/javascript">
          +  prettyPrint();
          +</script>
          diff --git a/public/theme/select2/docs/options.html b/public/theme/select2/docs/options.html
          new file mode 100644
          index 0000000..5670c1c
          --- /dev/null
          +++ b/public/theme/select2/docs/options.html
          @@ -0,0 +1,37 @@
          +---
          +layout: default
          +title: Options - Select2
          +slug: options
          +---
          +
          +<section class="jumbotron">
          +  <div class="container">
          +    <h1>
          +      Options
          +    </h1>
          +    <p class="lead">
          +      Select2 supports a wide variety of options that allow you to customize it to your needs.
          +    </p>
          +  </div>
          +</section>
          +
          +<div class="container s2-docs-container">
          +  <div class="row">
          +    <div class="col-md-9" role="main">
          +      {% include options/introduction.html %}
          +      {% include options/core.html %}
          +      {% include options/data.html %}
          +      {% include options/selections.html %}
          +      {% include options/dropdown.html %}
          +      {% include options/events.html %}
          +      {% include options/compatibility.html %}
          +    </div>
          +    <div class="col-md-3" role="complementary">
          +      {% include nav/options.html %}
          +    </div>
          +  </div>
          +</div>
          +
          +<script type="text/javascript">
          +  prettyPrint();
          +</script>
          diff --git a/public/theme/select2/docs/vendor/fonts/FontAwesome.otf b/public/theme/select2/docs/vendor/fonts/FontAwesome.otf
          new file mode 100644
          index 0000000..3ed7f8b
          Binary files /dev/null and b/public/theme/select2/docs/vendor/fonts/FontAwesome.otf differ
          diff --git a/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.eot b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.eot
          new file mode 100644
          index 0000000..9b6afae
          Binary files /dev/null and b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.eot differ
          diff --git a/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.svg b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.svg
          new file mode 100644
          index 0000000..d05688e
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.svg
          @@ -0,0 +1,655 @@
          +<?xml version="1.0" standalone="no"?>
          +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
          +<svg xmlns="http://www.w3.org/2000/svg">
          +<metadata></metadata>
          +<defs>
          +<font id="fontawesomeregular" horiz-adv-x="1536" >
          +<font-face units-per-em="1792" ascent="1536" descent="-256" />
          +<missing-glyph horiz-adv-x="448" />
          +<glyph unicode=" "  horiz-adv-x="448" />
          +<glyph unicode="&#x09;" horiz-adv-x="448" />
          +<glyph unicode="&#xa0;" horiz-adv-x="448" />
          +<glyph unicode="&#xa8;" horiz-adv-x="1792" />
          +<glyph unicode="&#xa9;" horiz-adv-x="1792" />
          +<glyph unicode="&#xae;" horiz-adv-x="1792" />
          +<glyph unicode="&#xb4;" horiz-adv-x="1792" />
          +<glyph unicode="&#xc6;" horiz-adv-x="1792" />
          +<glyph unicode="&#xd8;" horiz-adv-x="1792" />
          +<glyph unicode="&#x2000;" horiz-adv-x="768" />
          +<glyph unicode="&#x2001;" horiz-adv-x="1537" />
          +<glyph unicode="&#x2002;" horiz-adv-x="768" />
          +<glyph unicode="&#x2003;" horiz-adv-x="1537" />
          +<glyph unicode="&#x2004;" horiz-adv-x="512" />
          +<glyph unicode="&#x2005;" horiz-adv-x="384" />
          +<glyph unicode="&#x2006;" horiz-adv-x="256" />
          +<glyph unicode="&#x2007;" horiz-adv-x="256" />
          +<glyph unicode="&#x2008;" horiz-adv-x="192" />
          +<glyph unicode="&#x2009;" horiz-adv-x="307" />
          +<glyph unicode="&#x200a;" horiz-adv-x="85" />
          +<glyph unicode="&#x202f;" horiz-adv-x="307" />
          +<glyph unicode="&#x205f;" horiz-adv-x="384" />
          +<glyph unicode="&#x2122;" horiz-adv-x="1792" />
          +<glyph unicode="&#x221e;" horiz-adv-x="1792" />
          +<glyph unicode="&#x2260;" horiz-adv-x="1792" />
          +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
          +<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
          +<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
          +<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
          +<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
          +<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
          +<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
          +<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
          +<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
          +<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
          +<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
          +<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
          +<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
          +<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
          +<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
          +<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
          +<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
          +<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
          +<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
          +<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
          +<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
          +<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
          +<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
          +<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
          +<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
          +<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
          +<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
          +<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
          +<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
          +<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
          +<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
          +<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
          +<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
          +<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
          +<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
          +<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
          +<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
          +<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
          +<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
          +<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
          +<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
          +<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
          +<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
          +<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
          +<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
          +<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
          +<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
          +<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
          +<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
          +<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
          +<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
          +<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
          +<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
          +<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
          +<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
          +<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
          +<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
          +<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
          +<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
          +<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
          +<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
          +<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
          +<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
          +<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
          +<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
          +<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
          +<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
          +<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
          +<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
          +<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
          +<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
          +<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
          +<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
          +<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
          +<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
          +<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
          +<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
          +<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
          +<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
          +<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
          +<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
          +<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
          +<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
          +<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
          +<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
          +<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
          +<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
          +<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
          +<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
          +<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
          +<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
          +<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
          +<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
          +<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
          +<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
          +<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
          +<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
          +<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
          +<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
          +<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
          +<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
          +<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
          +<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
          +<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
          +<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
          +<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
          +<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
          +<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
          +<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
          +<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
          +<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
          +<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
          +<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
          +<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
          +<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
          +<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
          +<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
          +<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
          +<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
          +<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
          +<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
          +<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
          +<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
          +<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
          +<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
          +<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
          +<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
          +<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
          +<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
          +<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
          +<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
          +<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
          +<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
          +<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
          +<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
          +<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
          +<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
          +<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
          +<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
          +<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
          +<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
          +<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
          +<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
          +<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
          +<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
          +<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
          +<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
          +<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
          +<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
          +<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
          +<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
          +<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
          +<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
          +<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
          +<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
          +<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
          +<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
          +<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
          +<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
          +<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
          +<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
          +<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
          +<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
          +<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
          +<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
          +<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
          +<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
          +<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
          +<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
          +<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
          +<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
          +<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
          +<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
          +<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
          +<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
          +<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
          +<glyph unicode="&#xf116;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf117;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
          +<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
          +<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
          +<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
          +<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
          +<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
          +<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
          +<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
          +<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
          +<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
          +<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
          +<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
          +<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
          +<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
          +<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
          +<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
          +<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
          +<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
          +<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
          +<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
          +<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
          +<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
          +<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
          +<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
          +<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
          +<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
          +<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
          +<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
          +<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
          +<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
          +<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
          +<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
          +<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
          +<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
          +<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
          +<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
          +<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
          +<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
          +<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
          +<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
          +<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
          +<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
          +<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
          +<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
          +<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
          +<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
          +<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
          +<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
          +<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
          +<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
          +<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
          +<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
          +<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
          +<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
          +<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
          +<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
          +<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
          +<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
          +<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
          +<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
          +<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
          +<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
          +<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
          +<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
          +<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
          +<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
          +<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
          +<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
          +<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
          +<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
          +<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
          +<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
          +<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
          +<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
          +<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
          +<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
          +<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
          +<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
          +<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
          +<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
          +<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
          +<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
          +<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
          +<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
          +<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
          +<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
          +<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
          +<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
          +<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
          +<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
          +<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
          +<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
          +<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
          +<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
          +<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
          +<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
          +<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
          +<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
          +<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
          +<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
          +<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
          +<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
          +<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
          +<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
          +<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
          +<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
          +<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
          +<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
          +<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
          +<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
          +<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
          +<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
          +<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
          +<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
          +<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
          +<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
          +<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
          +<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
          +<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
          +<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
          +<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
          +<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
          +<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
          +<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
          +<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
          +<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
          +<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
          +<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
          +<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
          +<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
          +<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
          +<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
          +<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
          +<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
          +<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
          +<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
          +<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
          +<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
          +<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
          +<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
          +<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
          +<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
          +<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
          +<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
          +<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
          +<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
          +<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
          +<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
          +<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
          +<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
          +<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
          +<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
          +<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
          +<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
          +<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
          +<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
          +<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
          +<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
          +<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
          +<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
          +<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
          +<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
          +<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
          +<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
          +<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
          +<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
          +<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
          +<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
          +<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
          +<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
          +<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
          +<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
          +<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
          +<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
          +<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
          +<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
          +<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
          +<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
          +<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
          +<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
          +<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
          +<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
          +<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
          +<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
          +<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
          +<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
          +<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
          +<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
          +<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
          +<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
          +<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
          +<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
          +<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
          +<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
          +<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
          +<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
          +<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
          +<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
          +<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
          +<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
          +<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
          +<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
          +<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
          +<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
          +<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
          +<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
          +<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
          +<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
          +<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
          +<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
          +<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
          +<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" />
          +<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
          +<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
          +<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
          +<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
          +<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
          +<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
          +<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" />
          +<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
          +<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" />
          +<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
          +<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" />
          +<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" />
          +<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" />
          +<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" />
          +<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
          +<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
          +<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
          +<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
          +<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
          +<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
          +<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
          +<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
          +<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
          +<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
          +<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " />
          +<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
          +<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
          +<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
          +<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
          +<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
          +<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
          +<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
          +<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
          +<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
          +<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
          +<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
          +<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
          +<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
          +<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
          +<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
          +<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
          +<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
          +<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
          +<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
          +<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
          +<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
          +<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" />
          +<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
          +<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h16v393q-32 19 -32 55q0 26 19 45t45 19t45 -19t19 -45q0 -36 -32 -55v-9h272q16 0 16 -16v-224q0 -16 -16 -16h-272v-128h16q16 0 16 -16v-112h128 v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96q16 0 16 -16z" />
          +<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
          +<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
          +<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
          +<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
          +<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
          +<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
          +<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
          +<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
          +<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
          +<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
          +<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" />
          +<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
          +<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
          +<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
          +<glyph unicode="&#xf296;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf297;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf298;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf299;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf29a;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf29b;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf29c;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf29d;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf29e;" horiz-adv-x="1792" />
          +<glyph unicode="&#xf500;" horiz-adv-x="1792" />
          +</font>
          +</defs></svg> 
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.ttf b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.ttf
          new file mode 100644
          index 0000000..26dea79
          Binary files /dev/null and b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.ttf differ
          diff --git a/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff
          new file mode 100644
          index 0000000..dc35ce3
          Binary files /dev/null and b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff differ
          diff --git a/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff2 b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff2
          new file mode 100644
          index 0000000..500e517
          Binary files /dev/null and b/public/theme/select2/docs/vendor/fonts/fontawesome-webfont.woff2 differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ak.png b/public/theme/select2/docs/vendor/images/flags/ak.png
          new file mode 100644
          index 0000000..d79dc4f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ak.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/al.png b/public/theme/select2/docs/vendor/images/flags/al.png
          new file mode 100644
          index 0000000..a729794
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/al.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ar.png b/public/theme/select2/docs/vendor/images/flags/ar.png
          new file mode 100644
          index 0000000..6357a8f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ar.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/az.png b/public/theme/select2/docs/vendor/images/flags/az.png
          new file mode 100644
          index 0000000..b6d8aae
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/az.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ca.png b/public/theme/select2/docs/vendor/images/flags/ca.png
          new file mode 100644
          index 0000000..9d6d955
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ca.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/co.png b/public/theme/select2/docs/vendor/images/flags/co.png
          new file mode 100644
          index 0000000..888e830
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/co.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ct.png b/public/theme/select2/docs/vendor/images/flags/ct.png
          new file mode 100644
          index 0000000..a953918
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ct.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/de.png b/public/theme/select2/docs/vendor/images/flags/de.png
          new file mode 100644
          index 0000000..1bfb3ba
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/de.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/fl.png b/public/theme/select2/docs/vendor/images/flags/fl.png
          new file mode 100644
          index 0000000..199a2f1
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/fl.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ga.png b/public/theme/select2/docs/vendor/images/flags/ga.png
          new file mode 100644
          index 0000000..03f52bb
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ga.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/hi.png b/public/theme/select2/docs/vendor/images/flags/hi.png
          new file mode 100644
          index 0000000..36de7a5
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/hi.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ia.png b/public/theme/select2/docs/vendor/images/flags/ia.png
          new file mode 100644
          index 0000000..c2c4cf0
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ia.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/id.png b/public/theme/select2/docs/vendor/images/flags/id.png
          new file mode 100644
          index 0000000..bfbf897
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/id.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/il.png b/public/theme/select2/docs/vendor/images/flags/il.png
          new file mode 100644
          index 0000000..5c13e67
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/il.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/in.png b/public/theme/select2/docs/vendor/images/flags/in.png
          new file mode 100644
          index 0000000..5952580
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/in.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ks.png b/public/theme/select2/docs/vendor/images/flags/ks.png
          new file mode 100644
          index 0000000..9190b24
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ks.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ky.png b/public/theme/select2/docs/vendor/images/flags/ky.png
          new file mode 100644
          index 0000000..5c8d0ca
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ky.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/la.png b/public/theme/select2/docs/vendor/images/flags/la.png
          new file mode 100644
          index 0000000..3f2c478
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/la.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ma.png b/public/theme/select2/docs/vendor/images/flags/ma.png
          new file mode 100644
          index 0000000..a502081
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ma.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/md.png b/public/theme/select2/docs/vendor/images/flags/md.png
          new file mode 100644
          index 0000000..1717a26
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/md.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/me.png b/public/theme/select2/docs/vendor/images/flags/me.png
          new file mode 100644
          index 0000000..7e696f3
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/me.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/mi.png b/public/theme/select2/docs/vendor/images/flags/mi.png
          new file mode 100644
          index 0000000..49494fc
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/mi.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/mn.png b/public/theme/select2/docs/vendor/images/flags/mn.png
          new file mode 100644
          index 0000000..602f36b
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/mn.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/mo.png b/public/theme/select2/docs/vendor/images/flags/mo.png
          new file mode 100644
          index 0000000..413ea1a
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/mo.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ms.png b/public/theme/select2/docs/vendor/images/flags/ms.png
          new file mode 100644
          index 0000000..d3e4a1c
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ms.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/mt.png b/public/theme/select2/docs/vendor/images/flags/mt.png
          new file mode 100644
          index 0000000..6822acb
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/mt.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nc.png b/public/theme/select2/docs/vendor/images/flags/nc.png
          new file mode 100644
          index 0000000..9555820
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nc.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nd.png b/public/theme/select2/docs/vendor/images/flags/nd.png
          new file mode 100644
          index 0000000..87e401c
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nd.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ne.png b/public/theme/select2/docs/vendor/images/flags/ne.png
          new file mode 100644
          index 0000000..a69e15f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ne.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nh.png b/public/theme/select2/docs/vendor/images/flags/nh.png
          new file mode 100644
          index 0000000..d6ad1cb
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nh.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nj.png b/public/theme/select2/docs/vendor/images/flags/nj.png
          new file mode 100644
          index 0000000..f2c6466
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nj.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nm.png b/public/theme/select2/docs/vendor/images/flags/nm.png
          new file mode 100644
          index 0000000..c273181
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nm.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/nv.png b/public/theme/select2/docs/vendor/images/flags/nv.png
          new file mode 100644
          index 0000000..8f1a855
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/nv.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ny.png b/public/theme/select2/docs/vendor/images/flags/ny.png
          new file mode 100644
          index 0000000..794b86e
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ny.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/oh.png b/public/theme/select2/docs/vendor/images/flags/oh.png
          new file mode 100644
          index 0000000..08601a6
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/oh.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ok.png b/public/theme/select2/docs/vendor/images/flags/ok.png
          new file mode 100644
          index 0000000..543be91
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ok.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/or.png b/public/theme/select2/docs/vendor/images/flags/or.png
          new file mode 100644
          index 0000000..846b4a6
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/or.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/pa.png b/public/theme/select2/docs/vendor/images/flags/pa.png
          new file mode 100644
          index 0000000..55f6c0f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/pa.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ri.png b/public/theme/select2/docs/vendor/images/flags/ri.png
          new file mode 100644
          index 0000000..5cece5d
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ri.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/sc.png b/public/theme/select2/docs/vendor/images/flags/sc.png
          new file mode 100644
          index 0000000..9e39303
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/sc.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/sd.png b/public/theme/select2/docs/vendor/images/flags/sd.png
          new file mode 100644
          index 0000000..154618f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/sd.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/tn.png b/public/theme/select2/docs/vendor/images/flags/tn.png
          new file mode 100644
          index 0000000..321b48c
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/tn.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/tx.png b/public/theme/select2/docs/vendor/images/flags/tx.png
          new file mode 100644
          index 0000000..0914b31
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/tx.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/ut.png b/public/theme/select2/docs/vendor/images/flags/ut.png
          new file mode 100644
          index 0000000..7a01ae6
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/ut.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/va.png b/public/theme/select2/docs/vendor/images/flags/va.png
          new file mode 100644
          index 0000000..ce58c01
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/va.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/vt.png b/public/theme/select2/docs/vendor/images/flags/vt.png
          new file mode 100644
          index 0000000..fe1b19f
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/vt.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/wa.png b/public/theme/select2/docs/vendor/images/flags/wa.png
          new file mode 100644
          index 0000000..0c0d8f0
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/wa.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/wi.png b/public/theme/select2/docs/vendor/images/flags/wi.png
          new file mode 100644
          index 0000000..2569f17
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/wi.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/wv.png b/public/theme/select2/docs/vendor/images/flags/wv.png
          new file mode 100644
          index 0000000..b403899
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/wv.png differ
          diff --git a/public/theme/select2/docs/vendor/images/flags/wy.png b/public/theme/select2/docs/vendor/images/flags/wy.png
          new file mode 100644
          index 0000000..82a453c
          Binary files /dev/null and b/public/theme/select2/docs/vendor/images/flags/wy.png differ
          diff --git a/public/theme/select2/docs/vendor/js/anchor.min.js b/public/theme/select2/docs/vendor/js/anchor.min.js
          new file mode 100644
          index 0000000..68c3cb7
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/js/anchor.min.js
          @@ -0,0 +1,6 @@
          +/*!
          + * AnchorJS - v1.1.1 - 2015-05-23
          + * https://github.com/bryanbraun/anchorjs
          + * Copyright (c) 2015 Bryan Braun; Licensed MIT
          + */
          +function AnchorJS(A){"use strict";this.options=A||{},this._applyRemainingDefaultOptions=function(A){this.options.icon=this.options.hasOwnProperty("icon")?A.icon:"&#xe9cb",this.options.visible=this.options.hasOwnProperty("visible")?A.visible:"hover",this.options.placement=this.options.hasOwnProperty("placement")?A.placement:"right",this.options.class=this.options.hasOwnProperty("class")?A.class:""},this._applyRemainingDefaultOptions(A),this.add=function(A){var e,t,o,n,i,s,a,l,c,r,h,g,B,Q;if(this._applyRemainingDefaultOptions(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(e=document.querySelectorAll(A),0===e.length)return!1;for(this._addBaselineStyles(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i<e.length;i++){if(e[i].hasAttribute("id"))n=e[i].getAttribute("id");else{s=e[i].textContent,a=s.replace(/[^\w\s-]/gi,"").replace(/\s+/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase(),r=a,c=0;do void 0!==l&&(r=a+"-"+c),l=o.indexOf(r),c+=1;while(-1!==l);l=void 0,o.push(r),e[i].setAttribute("id",r),n=r}h=n.replace(/-/g," "),g='<a class="anchorjs-link '+this.options.class+'" href="#'+n+'" aria-label="Anchor link for: '+h+'" data-anchorjs-icon="'+this.options.icon+'"></a>',B=document.createElement("div"),B.innerHTML=g,Q=B.childNodes,"always"===this.options.visible&&(Q[0].style.opacity="1"),"&#xe9cb"===this.options.icon&&(Q[0].style.fontFamily="anchorjs-icons",Q[0].style.fontStyle="normal",Q[0].style.fontVariant="normal",Q[0].style.fontWeight="normal"),"left"===this.options.placement?(Q[0].style.position="absolute",Q[0].style.marginLeft="-1em",Q[0].style.paddingRight="0.5em",e[i].insertBefore(Q[0],e[i].firstChild)):(Q[0].style.paddingLeft="0.375em",e[i].appendChild(Q[0]))}return this},this.remove=function(A){for(var e,t=document.querySelectorAll(A),o=0;o<t.length;o++)e=t[o].querySelector(".anchorjs-link"),e&&t[o].removeChild(e);return this},this._addBaselineStyles=function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style"),t=" .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",o=" *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",n=' @font-face {   font-family: "anchorjs-icons";   font-style: normal;   font-weight: normal;   src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }";e.className="anchorjs",e.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(t,e.sheet.cssRules.length),e.sheet.insertRule(o,e.sheet.cssRules.length),e.sheet.insertRule(i,e.sheet.cssRules.length),e.sheet.insertRule(n,e.sheet.cssRules.length)}}}var anchors=new AnchorJS;
          diff --git a/public/theme/select2/docs/vendor/js/bootstrap.min.js b/public/theme/select2/docs/vendor/js/bootstrap.min.js
          new file mode 100644
          index 0000000..7c1561a
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/js/bootstrap.min.js
          @@ -0,0 +1,6 @@
          +/*!
          + * Bootstrap v3.2.0 (http://getbootstrap.com)
          + * Copyright 2011-2014 Twitter, Inc.
          + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
          + */
          +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/vendor/js/jquery.min.js b/public/theme/select2/docs/vendor/js/jquery.min.js
          new file mode 100644
          index 0000000..e6a051d
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/js/jquery.min.js
          @@ -0,0 +1,4 @@
          +/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
          +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
          +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)
          +}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
          diff --git a/public/theme/select2/docs/vendor/js/placeholders.jquery.min.js b/public/theme/select2/docs/vendor/js/placeholders.jquery.min.js
          new file mode 100644
          index 0000000..02845bf
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/js/placeholders.jquery.min.js
          @@ -0,0 +1,2 @@
          +/* Placeholders.js v3.0.2 */
          +(function(t){"use strict";function e(t,e,r){return t.addEventListener?t.addEventListener(e,r,!1):t.attachEvent?t.attachEvent("on"+e,r):void 0}function r(t,e){var r,n;for(r=0,n=t.length;n>r;r++)if(t[r]===e)return!0;return!1}function n(t,e){var r;t.createTextRange?(r=t.createTextRange(),r.move("character",e),r.select()):t.selectionStart&&(t.focus(),t.setSelectionRange(e,e))}function a(t,e){try{return t.type=e,!0}catch(r){return!1}}t.Placeholders={Utils:{addEventListener:e,inArray:r,moveCaret:n,changeType:a}}})(this),function(t){"use strict";function e(){}function r(){try{return document.activeElement}catch(t){}}function n(t,e){var r,n,a=!!e&&t.value!==e,u=t.value===t.getAttribute(V);return(a||u)&&"true"===t.getAttribute(P)?(t.removeAttribute(P),t.value=t.value.replace(t.getAttribute(V),""),t.className=t.className.replace(R,""),n=t.getAttribute(z),parseInt(n,10)>=0&&(t.setAttribute("maxLength",n),t.removeAttribute(z)),r=t.getAttribute(D),r&&(t.type=r),!0):!1}function a(t){var e,r,n=t.getAttribute(V);return""===t.value&&n?(t.setAttribute(P,"true"),t.value=n,t.className+=" "+I,r=t.getAttribute(z),r||(t.setAttribute(z,t.maxLength),t.removeAttribute("maxLength")),e=t.getAttribute(D),e?t.type="text":"password"===t.type&&K.changeType(t,"text")&&t.setAttribute(D,"password"),!0):!1}function u(t,e){var r,n,a,u,i,l,o;if(t&&t.getAttribute(V))e(t);else for(a=t?t.getElementsByTagName("input"):f,u=t?t.getElementsByTagName("textarea"):h,r=a?a.length:0,n=u?u.length:0,o=0,l=r+n;l>o;o++)i=r>o?a[o]:u[o-r],e(i)}function i(t){u(t,n)}function l(t){u(t,a)}function o(t){return function(){b&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)?K.moveCaret(t,0):n(t)}}function c(t){return function(){a(t)}}function s(t){return function(e){return A=t.value,"true"===t.getAttribute(P)&&A===t.getAttribute(V)&&K.inArray(C,e.keyCode)?(e.preventDefault&&e.preventDefault(),!1):void 0}}function d(t){return function(){n(t,A),""===t.value&&(t.blur(),K.moveCaret(t,0))}}function v(t){return function(){t===r()&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)&&K.moveCaret(t,0)}}function g(t){return function(){i(t)}}function p(t){t.form&&(T=t.form,"string"==typeof T&&(T=document.getElementById(T)),T.getAttribute(U)||(K.addEventListener(T,"submit",g(T)),T.setAttribute(U,"true"))),K.addEventListener(t,"focus",o(t)),K.addEventListener(t,"blur",c(t)),b&&(K.addEventListener(t,"keydown",s(t)),K.addEventListener(t,"keyup",d(t)),K.addEventListener(t,"click",v(t))),t.setAttribute(j,"true"),t.setAttribute(V,x),(b||t!==r())&&a(t)}var f,h,b,m,A,y,E,x,L,T,S,N,w,B=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],k="#ccc",I="placeholdersjs",R=RegExp("(?:^|\\s)"+I+"(?!\\S)"),V="data-placeholder-value",P="data-placeholder-active",D="data-placeholder-type",U="data-placeholder-submit",j="data-placeholder-bound",q="data-placeholder-focus",Q="data-placeholder-live",z="data-placeholder-maxlength",F=document.createElement("input"),G=document.getElementsByTagName("head")[0],H=document.documentElement,J=t.Placeholders,K=J.Utils;if(J.nativeSupport=void 0!==F.placeholder,!J.nativeSupport){for(f=document.getElementsByTagName("input"),h=document.getElementsByTagName("textarea"),b="false"===H.getAttribute(q),m="false"!==H.getAttribute(Q),y=document.createElement("style"),y.type="text/css",E=document.createTextNode("."+I+" { color:"+k+"; }"),y.styleSheet?y.styleSheet.cssText=E.nodeValue:y.appendChild(E),G.insertBefore(y,G.firstChild),w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x&&(x=x.nodeValue,x&&K.inArray(B,S.type)&&p(S));L=setInterval(function(){for(w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x?(x=x.nodeValue,x&&K.inArray(B,S.type)&&(S.getAttribute(j)||p(S),(x!==S.getAttribute(V)||"password"===S.type&&!S.getAttribute(D))&&("password"===S.type&&!S.getAttribute(D)&&K.changeType(S,"text")&&S.setAttribute(D,"password"),S.value===S.getAttribute(V)&&(S.value=x),S.setAttribute(V,x)))):S.getAttribute(P)&&(n(S),S.removeAttribute(V));m||clearInterval(L)},100)}K.addEventListener(t,"beforeunload",function(){J.disable()}),J.disable=J.nativeSupport?e:i,J.enable=J.nativeSupport?e:l}(this),function(t){"use strict";var e=t.fn.val,r=t.fn.prop;Placeholders.nativeSupport||(t.fn.val=function(t){var r=e.apply(this,arguments),n=this.eq(0).data("placeholder-value");return void 0===t&&this.eq(0).data("placeholder-active")&&r===n?"":r},t.fn.prop=function(t,e){return void 0===e&&this.eq(0).data("placeholder-active")&&"value"===t?"":r.apply(this,arguments)})}(jQuery);
          \ No newline at end of file
          diff --git a/public/theme/select2/docs/vendor/js/prettify.min.js b/public/theme/select2/docs/vendor/js/prettify.min.js
          new file mode 100644
          index 0000000..f66f6f2
          --- /dev/null
          +++ b/public/theme/select2/docs/vendor/js/prettify.min.js
          @@ -0,0 +1,28 @@
          +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
          +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
          +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
          +f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
          +(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
          +{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
          +t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
          +"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
          +l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
          +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
          +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
          +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
          +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
          +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
          +m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
          +a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
          +j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
          +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
          +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
          +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
          +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
          +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
          +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
          +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
          +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
          +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
          +250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
          +PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
          \ No newline at end of file
          diff --git a/public/theme/select2/package.json b/public/theme/select2/package.json
          new file mode 100644
          index 0000000..3eda0e8
          --- /dev/null
          +++ b/public/theme/select2/package.json
          @@ -0,0 +1,66 @@
          +{
          +  "name": "select2",
          +  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
          +  "homepage": "https://select2.github.io",
          +  "author": {
          +    "name": "Kevin Brown",
          +    "url": "https://github.com/kevin-brown"
          +  },
          +  "contributors": [
          +    {
          +      "name": "Igor Vaynberg",
          +      "url": "https://github.com/ivaynberg"
          +    }
          +  ],
          +  "repository": {
          +    "type": "git",
          +    "url": "git://github.com/select2/select2.git"
          +  },
          +  "bugs": {
          +    "url": "https://github.com/select2/select2/issues"
          +  },
          +  "keywords": [
          +    "select",
          +    "autocomplete",
          +    "typeahead",
          +    "dropdown",
          +    "multiselect",
          +    "tag",
          +    "tagging"
          +  ],
          +  "license": "MIT",
          +  "main": "dist/js/select2.js",
          +  "files": [
          +    "src",
          +    "dist"
          +  ],
          +  "version": "4.0.3",
          +  "jspm": {
          +    "main": "js/select2",
          +    "directories": {
          +      "lib": "dist"
          +    }
          +  },
          +  "devDependencies": {
          +    "grunt": "^0.4.5",
          +    "grunt-cli": "^0.1.13",
          +    "grunt-contrib-clean": "^0.6.0",
          +    "grunt-contrib-concat": "^0.4.0",
          +    "grunt-contrib-connect": "^0.9.0",
          +    "grunt-contrib-jshint": "^0.10.0",
          +    "grunt-contrib-nodeunit": "~0.3.3",
          +    "grunt-contrib-qunit": "~0.4.0",
          +    "grunt-contrib-requirejs": "^0.4.4",
          +    "grunt-contrib-symlink": "^0.3.0",
          +    "grunt-contrib-uglify": "~0.4.0",
          +    "grunt-contrib-watch": "~0.6.0",
          +    "grunt-gh-pages": "^0.9.1",
          +    "grunt-jekyll": "^0.4.2",
          +    "grunt-sass": "^1.0.0",
          +    "grunt-saucelabs": "^8.6.0"
          +  },
          +  "dependencies": {
          +    "almond": "~0.3.1",
          +    "jquery-mousewheel": "~3.1.13"
          +  }
          +}
          diff --git a/public/theme/select2/select2.jquery.json b/public/theme/select2/select2.jquery.json
          new file mode 100644
          index 0000000..e2df6ef
          --- /dev/null
          +++ b/public/theme/select2/select2.jquery.json
          @@ -0,0 +1,32 @@
          +{
          +    "name": "select2",
          +    "title": "Select2",
          +    "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
          +    "keywords": [
          +        "select",
          +        "autocomplete",
          +        "typeahead",
          +        "dropdown",
          +        "multiselect",
          +        "tag",
          +        "tagging"
          +    ],
          +    "version": "4.0.3",
          +    "author": {
          +        "name": "Kevin Brown",
          +        "url": "https://github.com/kevin-brown"
          +    },
          +    "licenses": [
          +        {
          +            "type": "MIT",
          +            "url": "http://opensource.org/licenses/MIT"
          +        }
          +    ],
          +    "bugs": "https://github.com/select2/select2/issues",
          +    "homepage": "https://select2.github.io",
          +    "docs": "https://select2.github.io",
          +    "download": "https://github.com/select2/select2/releases",
          +    "dependencies": {
          +        "jquery": ">=1.7.2"
          +    }
          +}
          diff --git a/public/theme/select2/src/js/banner.end.js b/public/theme/select2/src/js/banner.end.js
          new file mode 100644
          index 0000000..ea00a03
          --- /dev/null
          +++ b/public/theme/select2/src/js/banner.end.js
          @@ -0,0 +1,6 @@
          +  // Return the AMD loader configuration so it can be used outside of this file
          +  return {
          +    define: S2.define,
          +    require: S2.require
          +  };
          +}());
          diff --git a/public/theme/select2/src/js/banner.start.js b/public/theme/select2/src/js/banner.start.js
          new file mode 100644
          index 0000000..78fe8b0
          --- /dev/null
          +++ b/public/theme/select2/src/js/banner.start.js
          @@ -0,0 +1,6 @@
          +(function () {
          +  // Restore the Select2 AMD loader so it can be used
          +  // Needed mostly in the language files, where the loader is not inserted
          +  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
          +    var S2 = jQuery.fn.select2.amd;
          +  }
          diff --git a/public/theme/select2/src/js/jquery.mousewheel.shim.js b/public/theme/select2/src/js/jquery.mousewheel.shim.js
          new file mode 100644
          index 0000000..a27fda0
          --- /dev/null
          +++ b/public/theme/select2/src/js/jquery.mousewheel.shim.js
          @@ -0,0 +1,6 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  // Used to shim jQuery.mousewheel for non-full builds.
          +  return $;
          +});
          diff --git a/public/theme/select2/src/js/jquery.select2.js b/public/theme/select2/src/js/jquery.select2.js
          new file mode 100644
          index 0000000..a3f8eff
          --- /dev/null
          +++ b/public/theme/select2/src/js/jquery.select2.js
          @@ -0,0 +1,57 @@
          +define([
          +  'jquery',
          +  'jquery-mousewheel',
          +
          +  './select2/core',
          +  './select2/defaults'
          +], function ($, _, Select2, Defaults) {
          +  if ($.fn.select2 == null) {
          +    // All methods that should return the element
          +    var thisMethods = ['open', 'close', 'destroy'];
          +
          +    $.fn.select2 = function (options) {
          +      options = options || {};
          +
          +      if (typeof options === 'object') {
          +        this.each(function () {
          +          var instanceOptions = $.extend(true, {}, options);
          +
          +          var instance = new Select2($(this), instanceOptions);
          +        });
          +
          +        return this;
          +      } else if (typeof options === 'string') {
          +        var ret;
          +        var args = Array.prototype.slice.call(arguments, 1);
          +
          +        this.each(function () {
          +          var instance = $(this).data('select2');
          +
          +          if (instance == null && window.console && console.error) {
          +            console.error(
          +              'The select2(\'' + options + '\') method was called on an ' +
          +              'element that is not using Select2.'
          +            );
          +          }
          +
          +          ret = instance[options].apply(instance, args);
          +        });
          +
          +        // Check if we should be returning `this`
          +        if ($.inArray(options, thisMethods) > -1) {
          +          return this;
          +        }
          +
          +        return ret;
          +      } else {
          +        throw new Error('Invalid arguments for Select2: ' + options);
          +      }
          +    };
          +  }
          +
          +  if ($.fn.select2.defaults == null) {
          +    $.fn.select2.defaults = Defaults;
          +  }
          +
          +  return Select2;
          +});
          diff --git a/public/theme/select2/src/js/jquery.shim.js b/public/theme/select2/src/js/jquery.shim.js
          new file mode 100644
          index 0000000..880993a
          --- /dev/null
          +++ b/public/theme/select2/src/js/jquery.shim.js
          @@ -0,0 +1,14 @@
          +/* global jQuery:false, $:false */
          +define(function () {
          +  var _$ = jQuery || $;
          +
          +  if (_$ == null && console && console.error) {
          +    console.error(
          +      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
          +      'found. Make sure that you are including jQuery before Select2 on your ' +
          +      'web page.'
          +    );
          +  }
          +
          +  return _$;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/containerCss.js b/public/theme/select2/src/js/select2/compat/containerCss.js
          new file mode 100644
          index 0000000..45703ac
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/containerCss.js
          @@ -0,0 +1,56 @@
          +define([
          +  'jquery',
          +  './utils'
          +], function ($, CompatUtils) {
          +  // No-op CSS adapter that discards all classes by default
          +  function _containerAdapter (clazz) {
          +    return null;
          +  }
          +
          +  function ContainerCSS () { }
          +
          +  ContainerCSS.prototype.render = function (decorated) {
          +    var $container = decorated.call(this);
          +
          +    var containerCssClass = this.options.get('containerCssClass') || '';
          +
          +    if ($.isFunction(containerCssClass)) {
          +      containerCssClass = containerCssClass(this.$element);
          +    }
          +
          +    var containerCssAdapter = this.options.get('adaptContainerCssClass');
          +    containerCssAdapter = containerCssAdapter || _containerAdapter;
          +
          +    if (containerCssClass.indexOf(':all:') !== -1) {
          +      containerCssClass = containerCssClass.replace(':all:', '');
          +
          +      var _cssAdapter = containerCssAdapter;
          +
          +      containerCssAdapter = function (clazz) {
          +        var adapted = _cssAdapter(clazz);
          +
          +        if (adapted != null) {
          +          // Append the old one along with the adapted one
          +          return adapted + ' ' + clazz;
          +        }
          +
          +        return clazz;
          +      };
          +    }
          +
          +    var containerCss = this.options.get('containerCss') || {};
          +
          +    if ($.isFunction(containerCss)) {
          +      containerCss = containerCss(this.$element);
          +    }
          +
          +    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
          +
          +    $container.css(containerCss);
          +    $container.addClass(containerCssClass);
          +
          +    return $container;
          +  };
          +
          +  return ContainerCSS;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/dropdownCss.js b/public/theme/select2/src/js/select2/compat/dropdownCss.js
          new file mode 100644
          index 0000000..02f5582
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/dropdownCss.js
          @@ -0,0 +1,56 @@
          +define([
          +  'jquery',
          +  './utils'
          +], function ($, CompatUtils) {
          +  // No-op CSS adapter that discards all classes by default
          +  function _dropdownAdapter (clazz) {
          +    return null;
          +  }
          +
          +  function DropdownCSS () { }
          +
          +  DropdownCSS.prototype.render = function (decorated) {
          +    var $dropdown = decorated.call(this);
          +
          +    var dropdownCssClass = this.options.get('dropdownCssClass') || '';
          +
          +    if ($.isFunction(dropdownCssClass)) {
          +      dropdownCssClass = dropdownCssClass(this.$element);
          +    }
          +
          +    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
          +    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
          +
          +    if (dropdownCssClass.indexOf(':all:') !== -1) {
          +      dropdownCssClass = dropdownCssClass.replace(':all:', '');
          +
          +      var _cssAdapter = dropdownCssAdapter;
          +
          +      dropdownCssAdapter = function (clazz) {
          +        var adapted = _cssAdapter(clazz);
          +
          +        if (adapted != null) {
          +          // Append the old one along with the adapted one
          +          return adapted + ' ' + clazz;
          +        }
          +
          +        return clazz;
          +      };
          +    }
          +
          +    var dropdownCss = this.options.get('dropdownCss') || {};
          +
          +    if ($.isFunction(dropdownCss)) {
          +      dropdownCss = dropdownCss(this.$element);
          +    }
          +
          +    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
          +
          +    $dropdown.css(dropdownCss);
          +    $dropdown.addClass(dropdownCssClass);
          +
          +    return $dropdown;
          +  };
          +
          +  return DropdownCSS;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/initSelection.js b/public/theme/select2/src/js/select2/compat/initSelection.js
          new file mode 100644
          index 0000000..71ee29d
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/initSelection.js
          @@ -0,0 +1,42 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function InitSelection (decorated, $element, options) {
          +    if (options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `initSelection` option has been deprecated in favor' +
          +        ' of a custom data adapter that overrides the `current` method. ' +
          +        'This method is now called multiple times instead of a single ' +
          +        'time when the instance is initialized. Support will be removed ' +
          +        'for the `initSelection` option in future versions of Select2'
          +      );
          +    }
          +
          +    this.initSelection = options.get('initSelection');
          +    this._isInitialized = false;
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  InitSelection.prototype.current = function (decorated, callback) {
          +    var self = this;
          +
          +    if (this._isInitialized) {
          +      decorated.call(this, callback);
          +
          +      return;
          +    }
          +
          +    this.initSelection.call(null, this.$element, function (data) {
          +      self._isInitialized = true;
          +
          +      if (!$.isArray(data)) {
          +        data = [data];
          +      }
          +
          +      callback(data);
          +    });
          +  };
          +
          +  return InitSelection;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/inputData.js b/public/theme/select2/src/js/select2/compat/inputData.js
          new file mode 100644
          index 0000000..a338bf1
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/inputData.js
          @@ -0,0 +1,127 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function InputData (decorated, $element, options) {
          +    this._currentData = [];
          +    this._valueSeparator = options.get('valueSeparator') || ',';
          +
          +    if ($element.prop('type') === 'hidden') {
          +      if (options.get('debug') && console && console.warn) {
          +        console.warn(
          +          'Select2: Using a hidden input with Select2 is no longer ' +
          +          'supported and may stop working in the future. It is recommended ' +
          +          'to use a `<select>` element instead.'
          +        );
          +      }
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  InputData.prototype.current = function (_, callback) {
          +    function getSelected (data, selectedIds) {
          +      var selected = [];
          +
          +      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
          +        data.selected = true;
          +        selected.push(data);
          +      } else {
          +        data.selected = false;
          +      }
          +
          +      if (data.children) {
          +        selected.push.apply(selected, getSelected(data.children, selectedIds));
          +      }
          +
          +      return selected;
          +    }
          +
          +    var selected = [];
          +
          +    for (var d = 0; d < this._currentData.length; d++) {
          +      var data = this._currentData[d];
          +
          +      selected.push.apply(
          +        selected,
          +        getSelected(
          +          data,
          +          this.$element.val().split(
          +            this._valueSeparator
          +          )
          +        )
          +      );
          +    }
          +
          +    callback(selected);
          +  };
          +
          +  InputData.prototype.select = function (_, data) {
          +    if (!this.options.get('multiple')) {
          +      this.current(function (allData) {
          +        $.map(allData, function (data) {
          +          data.selected = false;
          +        });
          +      });
          +
          +      this.$element.val(data.id);
          +      this.$element.trigger('change');
          +    } else {
          +      var value = this.$element.val();
          +      value += this._valueSeparator + data.id;
          +
          +      this.$element.val(value);
          +      this.$element.trigger('change');
          +    }
          +  };
          +
          +  InputData.prototype.unselect = function (_, data) {
          +    var self = this;
          +
          +    data.selected = false;
          +
          +    this.current(function (allData) {
          +      var values = [];
          +
          +      for (var d = 0; d < allData.length; d++) {
          +        var item = allData[d];
          +
          +        if (data.id == item.id) {
          +          continue;
          +        }
          +
          +        values.push(item.id);
          +      }
          +
          +      self.$element.val(values.join(self._valueSeparator));
          +      self.$element.trigger('change');
          +    });
          +  };
          +
          +  InputData.prototype.query = function (_, params, callback) {
          +    var results = [];
          +
          +    for (var d = 0; d < this._currentData.length; d++) {
          +      var data = this._currentData[d];
          +
          +      var matches = this.matches(params, data);
          +
          +      if (matches !== null) {
          +        results.push(matches);
          +      }
          +    }
          +
          +    callback({
          +      results: results
          +    });
          +  };
          +
          +  InputData.prototype.addOptions = function (_, $options) {
          +    var options = $.map($options, function ($option) {
          +      return $.data($option[0], 'data');
          +    });
          +
          +    this._currentData.push.apply(this._currentData, options);
          +  };
          +
          +  return InputData;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/matcher.js b/public/theme/select2/src/js/select2/compat/matcher.js
          new file mode 100644
          index 0000000..a975fdd
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/matcher.js
          @@ -0,0 +1,42 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function oldMatcher (matcher) {
          +    function wrappedMatcher (params, data) {
          +      var match = $.extend(true, {}, data);
          +
          +      if (params.term == null || $.trim(params.term) === '') {
          +        return match;
          +      }
          +
          +      if (data.children) {
          +        for (var c = data.children.length - 1; c >= 0; c--) {
          +          var child = data.children[c];
          +
          +          // Check if the child object matches
          +          // The old matcher returned a boolean true or false
          +          var doesMatch = matcher(params.term, child.text, child);
          +
          +          // If the child didn't match, pop it off
          +          if (!doesMatch) {
          +            match.children.splice(c, 1);
          +          }
          +        }
          +
          +        if (match.children.length > 0) {
          +          return match;
          +        }
          +      }
          +
          +      if (matcher(params.term, data.text, data)) {
          +        return match;
          +      }
          +
          +      return null;
          +    }
          +
          +    return wrappedMatcher;
          +  }
          +
          +  return oldMatcher;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/query.js b/public/theme/select2/src/js/select2/compat/query.js
          new file mode 100644
          index 0000000..f2884a7
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/query.js
          @@ -0,0 +1,26 @@
          +define([
          +
          +], function () {
          +  function Query (decorated, $element, options) {
          +    if (options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `query` option has been deprecated in favor of a ' +
          +        'custom data adapter that overrides the `query` method. Support ' +
          +        'will be removed for the `query` option in future versions of ' +
          +        'Select2.'
          +      );
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Query.prototype.query = function (_, params, callback) {
          +    params.callback = callback;
          +
          +    var query = this.options.get('query');
          +
          +    query.call(null, params);
          +  };
          +
          +  return Query;
          +});
          diff --git a/public/theme/select2/src/js/select2/compat/utils.js b/public/theme/select2/src/js/select2/compat/utils.js
          new file mode 100644
          index 0000000..5a3ea1c
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/compat/utils.js
          @@ -0,0 +1,43 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function syncCssClasses ($dest, $src, adapter) {
          +    var classes, replacements = [], adapted;
          +
          +    classes = $.trim($dest.attr('class'));
          +
          +    if (classes) {
          +      classes = '' + classes; // for IE which returns object
          +
          +      $(classes.split(/\s+/)).each(function () {
          +        // Save all Select2 classes
          +        if (this.indexOf('select2-') === 0) {
          +          replacements.push(this);
          +        }
          +      });
          +    }
          +
          +    classes = $.trim($src.attr('class'));
          +
          +    if (classes) {
          +      classes = '' + classes; // for IE which returns object
          +
          +      $(classes.split(/\s+/)).each(function () {
          +        // Only adapt non-Select2 classes
          +        if (this.indexOf('select2-') !== 0) {
          +          adapted = adapter(this);
          +
          +          if (adapted != null) {
          +            replacements.push(adapted);
          +          }
          +        }
          +      });
          +    }
          +
          +    $dest.attr('class', replacements.join(' '));
          +  }
          +
          +  return {
          +    syncCssClasses: syncCssClasses
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/core.js b/public/theme/select2/src/js/select2/core.js
          new file mode 100644
          index 0000000..4ba06ed
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/core.js
          @@ -0,0 +1,612 @@
          +define([
          +  'jquery',
          +  './options',
          +  './utils',
          +  './keys'
          +], function ($, Options, Utils, KEYS) {
          +  var Select2 = function ($element, options) {
          +    if ($element.data('select2') != null) {
          +      $element.data('select2').destroy();
          +    }
          +
          +    this.$element = $element;
          +
          +    this.id = this._generateId($element);
          +
          +    options = options || {};
          +
          +    this.options = new Options(options, $element);
          +
          +    Select2.__super__.constructor.call(this);
          +
          +    // Set up the tabindex
          +
          +    var tabindex = $element.attr('tabindex') || 0;
          +    $element.data('old-tabindex', tabindex);
          +    $element.attr('tabindex', '-1');
          +
          +    // Set up containers and adapters
          +
          +    var DataAdapter = this.options.get('dataAdapter');
          +    this.dataAdapter = new DataAdapter($element, this.options);
          +
          +    var $container = this.render();
          +
          +    this._placeContainer($container);
          +
          +    var SelectionAdapter = this.options.get('selectionAdapter');
          +    this.selection = new SelectionAdapter($element, this.options);
          +    this.$selection = this.selection.render();
          +
          +    this.selection.position(this.$selection, $container);
          +
          +    var DropdownAdapter = this.options.get('dropdownAdapter');
          +    this.dropdown = new DropdownAdapter($element, this.options);
          +    this.$dropdown = this.dropdown.render();
          +
          +    this.dropdown.position(this.$dropdown, $container);
          +
          +    var ResultsAdapter = this.options.get('resultsAdapter');
          +    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
          +    this.$results = this.results.render();
          +
          +    this.results.position(this.$results, this.$dropdown);
          +
          +    // Bind events
          +
          +    var self = this;
          +
          +    // Bind the container to all of the adapters
          +    this._bindAdapters();
          +
          +    // Register any DOM event handlers
          +    this._registerDomEvents();
          +
          +    // Register any internal event handlers
          +    this._registerDataEvents();
          +    this._registerSelectionEvents();
          +    this._registerDropdownEvents();
          +    this._registerResultsEvents();
          +    this._registerEvents();
          +
          +    // Set the initial state
          +    this.dataAdapter.current(function (initialData) {
          +      self.trigger('selection:update', {
          +        data: initialData
          +      });
          +    });
          +
          +    // Hide the original select
          +    $element.addClass('select2-hidden-accessible');
          +    $element.attr('aria-hidden', 'true');
          +
          +    // Synchronize any monitored attributes
          +    this._syncAttributes();
          +
          +    $element.data('select2', this);
          +  };
          +
          +  Utils.Extend(Select2, Utils.Observable);
          +
          +  Select2.prototype._generateId = function ($element) {
          +    var id = '';
          +
          +    if ($element.attr('id') != null) {
          +      id = $element.attr('id');
          +    } else if ($element.attr('name') != null) {
          +      id = $element.attr('name') + '-' + Utils.generateChars(2);
          +    } else {
          +      id = Utils.generateChars(4);
          +    }
          +
          +    id = id.replace(/(:|\.|\[|\]|,)/g, '');
          +    id = 'select2-' + id;
          +
          +    return id;
          +  };
          +
          +  Select2.prototype._placeContainer = function ($container) {
          +    $container.insertAfter(this.$element);
          +
          +    var width = this._resolveWidth(this.$element, this.options.get('width'));
          +
          +    if (width != null) {
          +      $container.css('width', width);
          +    }
          +  };
          +
          +  Select2.prototype._resolveWidth = function ($element, method) {
          +    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
          +
          +    if (method == 'resolve') {
          +      var styleWidth = this._resolveWidth($element, 'style');
          +
          +      if (styleWidth != null) {
          +        return styleWidth;
          +      }
          +
          +      return this._resolveWidth($element, 'element');
          +    }
          +
          +    if (method == 'element') {
          +      var elementWidth = $element.outerWidth(false);
          +
          +      if (elementWidth <= 0) {
          +        return 'auto';
          +      }
          +
          +      return elementWidth + 'px';
          +    }
          +
          +    if (method == 'style') {
          +      var style = $element.attr('style');
          +
          +      if (typeof(style) !== 'string') {
          +        return null;
          +      }
          +
          +      var attrs = style.split(';');
          +
          +      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
          +        var attr = attrs[i].replace(/\s/g, '');
          +        var matches = attr.match(WIDTH);
          +
          +        if (matches !== null && matches.length >= 1) {
          +          return matches[1];
          +        }
          +      }
          +
          +      return null;
          +    }
          +
          +    return method;
          +  };
          +
          +  Select2.prototype._bindAdapters = function () {
          +    this.dataAdapter.bind(this, this.$container);
          +    this.selection.bind(this, this.$container);
          +
          +    this.dropdown.bind(this, this.$container);
          +    this.results.bind(this, this.$container);
          +  };
          +
          +  Select2.prototype._registerDomEvents = function () {
          +    var self = this;
          +
          +    this.$element.on('change.select2', function () {
          +      self.dataAdapter.current(function (data) {
          +        self.trigger('selection:update', {
          +          data: data
          +        });
          +      });
          +    });
          +
          +    this.$element.on('focus.select2', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this._syncA = Utils.bind(this._syncAttributes, this);
          +    this._syncS = Utils.bind(this._syncSubtree, this);
          +
          +    if (this.$element[0].attachEvent) {
          +      this.$element[0].attachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    var observer = window.MutationObserver ||
          +      window.WebKitMutationObserver ||
          +      window.MozMutationObserver
          +    ;
          +
          +    if (observer != null) {
          +      this._observer = new observer(function (mutations) {
          +        $.each(mutations, self._syncA);
          +        $.each(mutations, self._syncS);
          +      });
          +      this._observer.observe(this.$element[0], {
          +        attributes: true,
          +        childList: true,
          +        subtree: false
          +      });
          +    } else if (this.$element[0].addEventListener) {
          +      this.$element[0].addEventListener(
          +        'DOMAttrModified',
          +        self._syncA,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeInserted',
          +        self._syncS,
          +        false
          +      );
          +      this.$element[0].addEventListener(
          +        'DOMNodeRemoved',
          +        self._syncS,
          +        false
          +      );
          +    }
          +  };
          +
          +  Select2.prototype._registerDataEvents = function () {
          +    var self = this;
          +
          +    this.dataAdapter.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerSelectionEvents = function () {
          +    var self = this;
          +    var nonRelayEvents = ['toggle', 'focus'];
          +
          +    this.selection.on('toggle', function () {
          +      self.toggleDropdown();
          +    });
          +
          +    this.selection.on('focus', function (params) {
          +      self.focus(params);
          +    });
          +
          +    this.selection.on('*', function (name, params) {
          +      if ($.inArray(name, nonRelayEvents) !== -1) {
          +        return;
          +      }
          +
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerDropdownEvents = function () {
          +    var self = this;
          +
          +    this.dropdown.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerResultsEvents = function () {
          +    var self = this;
          +
          +    this.results.on('*', function (name, params) {
          +      self.trigger(name, params);
          +    });
          +  };
          +
          +  Select2.prototype._registerEvents = function () {
          +    var self = this;
          +
          +    this.on('open', function () {
          +      self.$container.addClass('select2-container--open');
          +    });
          +
          +    this.on('close', function () {
          +      self.$container.removeClass('select2-container--open');
          +    });
          +
          +    this.on('enable', function () {
          +      self.$container.removeClass('select2-container--disabled');
          +    });
          +
          +    this.on('disable', function () {
          +      self.$container.addClass('select2-container--disabled');
          +    });
          +
          +    this.on('blur', function () {
          +      self.$container.removeClass('select2-container--focus');
          +    });
          +
          +    this.on('query', function (params) {
          +      if (!self.isOpen()) {
          +        self.trigger('open', {});
          +      }
          +
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:all', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('query:append', function (params) {
          +      this.dataAdapter.query(params, function (data) {
          +        self.trigger('results:append', {
          +          data: data,
          +          query: params
          +        });
          +      });
          +    });
          +
          +    this.on('keypress', function (evt) {
          +      var key = evt.which;
          +
          +      if (self.isOpen()) {
          +        if (key === KEYS.ESC || key === KEYS.TAB ||
          +            (key === KEYS.UP && evt.altKey)) {
          +          self.close();
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.ENTER) {
          +          self.trigger('results:select', {});
          +
          +          evt.preventDefault();
          +        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
          +          self.trigger('results:toggle', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.UP) {
          +          self.trigger('results:previous', {});
          +
          +          evt.preventDefault();
          +        } else if (key === KEYS.DOWN) {
          +          self.trigger('results:next', {});
          +
          +          evt.preventDefault();
          +        }
          +      } else {
          +        if (key === KEYS.ENTER || key === KEYS.SPACE ||
          +            (key === KEYS.DOWN && evt.altKey)) {
          +          self.open();
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +  };
          +
          +  Select2.prototype._syncAttributes = function () {
          +    this.options.set('disabled', this.$element.prop('disabled'));
          +
          +    if (this.options.get('disabled')) {
          +      if (this.isOpen()) {
          +        this.close();
          +      }
          +
          +      this.trigger('disable', {});
          +    } else {
          +      this.trigger('enable', {});
          +    }
          +  };
          +
          +  Select2.prototype._syncSubtree = function (evt, mutations) {
          +    var changed = false;
          +    var self = this;
          +
          +    // Ignore any mutation events raised for elements that aren't options or
          +    // optgroups. This handles the case when the select element is destroyed
          +    if (
          +      evt && evt.target && (
          +        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
          +      )
          +    ) {
          +      return;
          +    }
          +
          +    if (!mutations) {
          +      // If mutation events aren't supported, then we can only assume that the
          +      // change affected the selections
          +      changed = true;
          +    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
          +      for (var n = 0; n < mutations.addedNodes.length; n++) {
          +        var node = mutations.addedNodes[n];
          +
          +        if (node.selected) {
          +          changed = true;
          +        }
          +      }
          +    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
          +      changed = true;
          +    }
          +
          +    // Only re-pull the data if we think there is a change
          +    if (changed) {
          +      this.dataAdapter.current(function (currentData) {
          +        self.trigger('selection:update', {
          +          data: currentData
          +        });
          +      });
          +    }
          +  };
          +
          +  /**
          +   * Override the trigger method to automatically trigger pre-events when
          +   * there are events that can be prevented.
          +   */
          +  Select2.prototype.trigger = function (name, args) {
          +    var actualTrigger = Select2.__super__.trigger;
          +    var preTriggerMap = {
          +      'open': 'opening',
          +      'close': 'closing',
          +      'select': 'selecting',
          +      'unselect': 'unselecting'
          +    };
          +
          +    if (args === undefined) {
          +      args = {};
          +    }
          +
          +    if (name in preTriggerMap) {
          +      var preTriggerName = preTriggerMap[name];
          +      var preTriggerArgs = {
          +        prevented: false,
          +        name: name,
          +        args: args
          +      };
          +
          +      actualTrigger.call(this, preTriggerName, preTriggerArgs);
          +
          +      if (preTriggerArgs.prevented) {
          +        args.prevented = true;
          +
          +        return;
          +      }
          +    }
          +
          +    actualTrigger.call(this, name, args);
          +  };
          +
          +  Select2.prototype.toggleDropdown = function () {
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    if (this.isOpen()) {
          +      this.close();
          +    } else {
          +      this.open();
          +    }
          +  };
          +
          +  Select2.prototype.open = function () {
          +    if (this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('query', {});
          +  };
          +
          +  Select2.prototype.close = function () {
          +    if (!this.isOpen()) {
          +      return;
          +    }
          +
          +    this.trigger('close', {});
          +  };
          +
          +  Select2.prototype.isOpen = function () {
          +    return this.$container.hasClass('select2-container--open');
          +  };
          +
          +  Select2.prototype.hasFocus = function () {
          +    return this.$container.hasClass('select2-container--focus');
          +  };
          +
          +  Select2.prototype.focus = function (data) {
          +    // No need to re-trigger focus events if we are already focused
          +    if (this.hasFocus()) {
          +      return;
          +    }
          +
          +    this.$container.addClass('select2-container--focus');
          +    this.trigger('focus', {});
          +  };
          +
          +  Select2.prototype.enable = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("enable")` method has been deprecated and will' +
          +        ' be removed in later Select2 versions. Use $element.prop("disabled")' +
          +        ' instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      args = [true];
          +    }
          +
          +    var disabled = !args[0];
          +
          +    this.$element.prop('disabled', disabled);
          +  };
          +
          +  Select2.prototype.data = function () {
          +    if (this.options.get('debug') &&
          +        arguments.length > 0 && window.console && console.warn) {
          +      console.warn(
          +        'Select2: Data can no longer be set using `select2("data")`. You ' +
          +        'should consider setting the value instead using `$element.val()`.'
          +      );
          +    }
          +
          +    var data = [];
          +
          +    this.dataAdapter.current(function (currentData) {
          +      data = currentData;
          +    });
          +
          +    return data;
          +  };
          +
          +  Select2.prototype.val = function (args) {
          +    if (this.options.get('debug') && window.console && console.warn) {
          +      console.warn(
          +        'Select2: The `select2("val")` method has been deprecated and will be' +
          +        ' removed in later Select2 versions. Use $element.val() instead.'
          +      );
          +    }
          +
          +    if (args == null || args.length === 0) {
          +      return this.$element.val();
          +    }
          +
          +    var newVal = args[0];
          +
          +    if ($.isArray(newVal)) {
          +      newVal = $.map(newVal, function (obj) {
          +        return obj.toString();
          +      });
          +    }
          +
          +    this.$element.val(newVal).trigger('change');
          +  };
          +
          +  Select2.prototype.destroy = function () {
          +    this.$container.remove();
          +
          +    if (this.$element[0].detachEvent) {
          +      this.$element[0].detachEvent('onpropertychange', this._syncA);
          +    }
          +
          +    if (this._observer != null) {
          +      this._observer.disconnect();
          +      this._observer = null;
          +    } else if (this.$element[0].removeEventListener) {
          +      this.$element[0]
          +        .removeEventListener('DOMAttrModified', this._syncA, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeInserted', this._syncS, false);
          +      this.$element[0]
          +        .removeEventListener('DOMNodeRemoved', this._syncS, false);
          +    }
          +
          +    this._syncA = null;
          +    this._syncS = null;
          +
          +    this.$element.off('.select2');
          +    this.$element.attr('tabindex', this.$element.data('old-tabindex'));
          +
          +    this.$element.removeClass('select2-hidden-accessible');
          +    this.$element.attr('aria-hidden', 'false');
          +    this.$element.removeData('select2');
          +
          +    this.dataAdapter.destroy();
          +    this.selection.destroy();
          +    this.dropdown.destroy();
          +    this.results.destroy();
          +
          +    this.dataAdapter = null;
          +    this.selection = null;
          +    this.dropdown = null;
          +    this.results = null;
          +  };
          +
          +  Select2.prototype.render = function () {
          +    var $container = $(
          +      '<span class="select2 select2-container">' +
          +        '<span class="selection"></span>' +
          +        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
          +      '</span>'
          +    );
          +
          +    $container.attr('dir', this.options.get('dir'));
          +
          +    this.$container = $container;
          +
          +    this.$container.addClass('select2-container--' + this.options.get('theme'));
          +
          +    $container.data('element', this.$element);
          +
          +    return $container;
          +  };
          +
          +  return Select2;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/ajax.js b/public/theme/select2/src/js/select2/data/ajax.js
          new file mode 100644
          index 0000000..97d3416
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/ajax.js
          @@ -0,0 +1,109 @@
          +define([
          +  './array',
          +  '../utils',
          +  'jquery'
          +], function (ArrayAdapter, Utils, $) {
          +  function AjaxAdapter ($element, options) {
          +    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
          +
          +    if (this.ajaxOptions.processResults != null) {
          +      this.processResults = this.ajaxOptions.processResults;
          +    }
          +
          +    AjaxAdapter.__super__.constructor.call(this, $element, options);
          +  }
          +
          +  Utils.Extend(AjaxAdapter, ArrayAdapter);
          +
          +  AjaxAdapter.prototype._applyDefaults = function (options) {
          +    var defaults = {
          +      data: function (params) {
          +        return $.extend({}, params, {
          +          q: params.term
          +        });
          +      },
          +      transport: function (params, success, failure) {
          +        var $request = $.ajax(params);
          +
          +        $request.then(success);
          +        $request.fail(failure);
          +
          +        return $request;
          +      }
          +    };
          +
          +    return $.extend({}, defaults, options, true);
          +  };
          +
          +  AjaxAdapter.prototype.processResults = function (results) {
          +    return results;
          +  };
          +
          +  AjaxAdapter.prototype.query = function (params, callback) {
          +    var matches = [];
          +    var self = this;
          +
          +    if (this._request != null) {
          +      // JSONP requests cannot always be aborted
          +      if ($.isFunction(this._request.abort)) {
          +        this._request.abort();
          +      }
          +
          +      this._request = null;
          +    }
          +
          +    var options = $.extend({
          +      type: 'GET'
          +    }, this.ajaxOptions);
          +
          +    if (typeof options.url === 'function') {
          +      options.url = options.url.call(this.$element, params);
          +    }
          +
          +    if (typeof options.data === 'function') {
          +      options.data = options.data.call(this.$element, params);
          +    }
          +
          +    function request () {
          +      var $request = options.transport(options, function (data) {
          +        var results = self.processResults(data, params);
          +
          +        if (self.options.get('debug') && window.console && console.error) {
          +          // Check to make sure that the response included a `results` key.
          +          if (!results || !results.results || !$.isArray(results.results)) {
          +            console.error(
          +              'Select2: The AJAX results did not return an array in the ' +
          +              '`results` key of the response.'
          +            );
          +          }
          +        }
          +
          +        callback(results);
          +      }, function () {
          +        // Attempt to detect if a request was aborted
          +        // Only works if the transport exposes a status property
          +        if ($request.status && $request.status === '0') {
          +          return;
          +        }
          +
          +        self.trigger('results:message', {
          +          message: 'errorLoading'
          +        });
          +      });
          +
          +      self._request = $request;
          +    }
          +
          +    if (this.ajaxOptions.delay && params.term != null) {
          +      if (this._queryTimeout) {
          +        window.clearTimeout(this._queryTimeout);
          +      }
          +
          +      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
          +    } else {
          +      request();
          +    }
          +  };
          +
          +  return AjaxAdapter;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/array.js b/public/theme/select2/src/js/select2/data/array.js
          new file mode 100644
          index 0000000..b889966
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/array.js
          @@ -0,0 +1,79 @@
          +define([
          +  './select',
          +  '../utils',
          +  'jquery'
          +], function (SelectAdapter, Utils, $) {
          +  function ArrayAdapter ($element, options) {
          +    var data = options.get('data') || [];
          +
          +    ArrayAdapter.__super__.constructor.call(this, $element, options);
          +
          +    this.addOptions(this.convertToOptions(data));
          +  }
          +
          +  Utils.Extend(ArrayAdapter, SelectAdapter);
          +
          +  ArrayAdapter.prototype.select = function (data) {
          +    var $option = this.$element.find('option').filter(function (i, elm) {
          +      return elm.value == data.id.toString();
          +    });
          +
          +    if ($option.length === 0) {
          +      $option = this.option(data);
          +
          +      this.addOptions($option);
          +    }
          +
          +    ArrayAdapter.__super__.select.call(this, data);
          +  };
          +
          +  ArrayAdapter.prototype.convertToOptions = function (data) {
          +    var self = this;
          +
          +    var $existing = this.$element.find('option');
          +    var existingIds = $existing.map(function () {
          +      return self.item($(this)).id;
          +    }).get();
          +
          +    var $options = [];
          +
          +    // Filter out all items except for the one passed in the argument
          +    function onlyItem (item) {
          +      return function () {
          +        return $(this).val() == item.id;
          +      };
          +    }
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = this._normalizeItem(data[d]);
          +
          +      // Skip items which were pre-loaded, only merge the data
          +      if ($.inArray(item.id, existingIds) >= 0) {
          +        var $existingOption = $existing.filter(onlyItem(item));
          +
          +        var existingData = this.item($existingOption);
          +        var newData = $.extend(true, {}, item, existingData);
          +
          +        var $newOption = this.option(newData);
          +
          +        $existingOption.replaceWith($newOption);
          +
          +        continue;
          +      }
          +
          +      var $option = this.option(item);
          +
          +      if (item.children) {
          +        var $children = this.convertToOptions(item.children);
          +
          +        Utils.appendMany($option, $children);
          +      }
          +
          +      $options.push($option);
          +    }
          +
          +    return $options;
          +  };
          +
          +  return ArrayAdapter;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/base.js b/public/theme/select2/src/js/select2/data/base.js
          new file mode 100644
          index 0000000..e35054d
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/base.js
          @@ -0,0 +1,40 @@
          +define([
          +  '../utils'
          +], function (Utils) {
          +  function BaseAdapter ($element, options) {
          +    BaseAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseAdapter, Utils.Observable);
          +
          +  BaseAdapter.prototype.current = function (callback) {
          +    throw new Error('The `current` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.query = function (params, callback) {
          +    throw new Error('The `query` method must be defined in child classes.');
          +  };
          +
          +  BaseAdapter.prototype.bind = function (container, $container) {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.destroy = function () {
          +    // Can be implemented in subclasses
          +  };
          +
          +  BaseAdapter.prototype.generateResultId = function (container, data) {
          +    var id = container.id + '-result-';
          +
          +    id += Utils.generateChars(4);
          +
          +    if (data.id != null) {
          +      id += '-' + data.id.toString();
          +    } else {
          +      id += '-' + Utils.generateChars(4);
          +    }
          +    return id;
          +  };
          +
          +  return BaseAdapter;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/maximumInputLength.js b/public/theme/select2/src/js/select2/data/maximumInputLength.js
          new file mode 100644
          index 0000000..f303ba8
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/maximumInputLength.js
          @@ -0,0 +1,31 @@
          +define([
          +
          +], function () {
          +  function MaximumInputLength (decorated, $e, options) {
          +    this.maximumInputLength = options.get('maximumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (this.maximumInputLength > 0 &&
          +        params.term.length > this.maximumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooLong',
          +        args: {
          +          maximum: this.maximumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MaximumInputLength;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/maximumSelectionLength.js b/public/theme/select2/src/js/select2/data/maximumSelectionLength.js
          new file mode 100644
          index 0000000..ae72752
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/maximumSelectionLength.js
          @@ -0,0 +1,31 @@
          +define([
          +
          +], function (){
          +  function MaximumSelectionLength (decorated, $e, options) {
          +    this.maximumSelectionLength = options.get('maximumSelectionLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MaximumSelectionLength.prototype.query =
          +    function (decorated, params, callback) {
          +      var self = this;
          +
          +      this.current(function (currentData) {
          +        var count = currentData != null ? currentData.length : 0;
          +        if (self.maximumSelectionLength > 0 &&
          +          count >= self.maximumSelectionLength) {
          +          self.trigger('results:message', {
          +            message: 'maximumSelected',
          +            args: {
          +              maximum: self.maximumSelectionLength
          +            }
          +          });
          +          return;
          +        }
          +        decorated.call(self, params, callback);
          +      });
          +  };
          +
          +  return MaximumSelectionLength;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/minimumInputLength.js b/public/theme/select2/src/js/select2/data/minimumInputLength.js
          new file mode 100644
          index 0000000..c19f71c
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/minimumInputLength.js
          @@ -0,0 +1,30 @@
          +define([
          +
          +], function () {
          +  function MinimumInputLength (decorated, $e, options) {
          +    this.minimumInputLength = options.get('minimumInputLength');
          +
          +    decorated.call(this, $e, options);
          +  }
          +
          +  MinimumInputLength.prototype.query = function (decorated, params, callback) {
          +    params.term = params.term || '';
          +
          +    if (params.term.length < this.minimumInputLength) {
          +      this.trigger('results:message', {
          +        message: 'inputTooShort',
          +        args: {
          +          minimum: this.minimumInputLength,
          +          input: params.term,
          +          params: params
          +        }
          +      });
          +
          +      return;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  return MinimumInputLength;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/select.js b/public/theme/select2/src/js/select2/data/select.js
          new file mode 100644
          index 0000000..ab50410
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/select.js
          @@ -0,0 +1,285 @@
          +define([
          +  './base',
          +  '../utils',
          +  'jquery'
          +], function (BaseAdapter, Utils, $) {
          +  function SelectAdapter ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    SelectAdapter.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(SelectAdapter, BaseAdapter);
          +
          +  SelectAdapter.prototype.current = function (callback) {
          +    var data = [];
          +    var self = this;
          +
          +    this.$element.find(':selected').each(function () {
          +      var $option = $(this);
          +
          +      var option = self.item($option);
          +
          +      data.push(option);
          +    });
          +
          +    callback(data);
          +  };
          +
          +  SelectAdapter.prototype.select = function (data) {
          +    var self = this;
          +
          +    data.selected = true;
          +
          +    // If data.element is a DOM node, use it instead
          +    if ($(data.element).is('option')) {
          +      data.element.selected = true;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    if (this.$element.prop('multiple')) {
          +      this.current(function (currentData) {
          +        var val = [];
          +
          +        data = [data];
          +        data.push.apply(data, currentData);
          +
          +        for (var d = 0; d < data.length; d++) {
          +          var id = data[d].id;
          +
          +          if ($.inArray(id, val) === -1) {
          +            val.push(id);
          +          }
          +        }
          +
          +        self.$element.val(val);
          +        self.$element.trigger('change');
          +      });
          +    } else {
          +      var val = data.id;
          +
          +      this.$element.val(val);
          +      this.$element.trigger('change');
          +    }
          +  };
          +
          +  SelectAdapter.prototype.unselect = function (data) {
          +    var self = this;
          +
          +    if (!this.$element.prop('multiple')) {
          +      return;
          +    }
          +
          +    data.selected = false;
          +
          +    if ($(data.element).is('option')) {
          +      data.element.selected = false;
          +
          +      this.$element.trigger('change');
          +
          +      return;
          +    }
          +
          +    this.current(function (currentData) {
          +      var val = [];
          +
          +      for (var d = 0; d < currentData.length; d++) {
          +        var id = currentData[d].id;
          +
          +        if (id !== data.id && $.inArray(id, val) === -1) {
          +          val.push(id);
          +        }
          +      }
          +
          +      self.$element.val(val);
          +
          +      self.$element.trigger('change');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    this.container = container;
          +
          +    container.on('select', function (params) {
          +      self.select(params.data);
          +    });
          +
          +    container.on('unselect', function (params) {
          +      self.unselect(params.data);
          +    });
          +  };
          +
          +  SelectAdapter.prototype.destroy = function () {
          +    // Remove anything added to child elements
          +    this.$element.find('*').each(function () {
          +      // Remove any custom data set by Select2
          +      $.removeData(this, 'data');
          +    });
          +  };
          +
          +  SelectAdapter.prototype.query = function (params, callback) {
          +    var data = [];
          +    var self = this;
          +
          +    var $options = this.$element.children();
          +
          +    $options.each(function () {
          +      var $option = $(this);
          +
          +      if (!$option.is('option') && !$option.is('optgroup')) {
          +        return;
          +      }
          +
          +      var option = self.item($option);
          +
          +      var matches = self.matches(params, option);
          +
          +      if (matches !== null) {
          +        data.push(matches);
          +      }
          +    });
          +
          +    callback({
          +      results: data
          +    });
          +  };
          +
          +  SelectAdapter.prototype.addOptions = function ($options) {
          +    Utils.appendMany(this.$element, $options);
          +  };
          +
          +  SelectAdapter.prototype.option = function (data) {
          +    var option;
          +
          +    if (data.children) {
          +      option = document.createElement('optgroup');
          +      option.label = data.text;
          +    } else {
          +      option = document.createElement('option');
          +
          +      if (option.textContent !== undefined) {
          +        option.textContent = data.text;
          +      } else {
          +        option.innerText = data.text;
          +      }
          +    }
          +
          +    if (data.id) {
          +      option.value = data.id;
          +    }
          +
          +    if (data.disabled) {
          +      option.disabled = true;
          +    }
          +
          +    if (data.selected) {
          +      option.selected = true;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    var $option = $(option);
          +
          +    var normalizedData = this._normalizeItem(data);
          +    normalizedData.element = option;
          +
          +    // Override the option's data with the combined data
          +    $.data(option, 'data', normalizedData);
          +
          +    return $option;
          +  };
          +
          +  SelectAdapter.prototype.item = function ($option) {
          +    var data = {};
          +
          +    data = $.data($option[0], 'data');
          +
          +    if (data != null) {
          +      return data;
          +    }
          +
          +    if ($option.is('option')) {
          +      data = {
          +        id: $option.val(),
          +        text: $option.text(),
          +        disabled: $option.prop('disabled'),
          +        selected: $option.prop('selected'),
          +        title: $option.prop('title')
          +      };
          +    } else if ($option.is('optgroup')) {
          +      data = {
          +        text: $option.prop('label'),
          +        children: [],
          +        title: $option.prop('title')
          +      };
          +
          +      var $children = $option.children('option');
          +      var children = [];
          +
          +      for (var c = 0; c < $children.length; c++) {
          +        var $child = $($children[c]);
          +
          +        var child = this.item($child);
          +
          +        children.push(child);
          +      }
          +
          +      data.children = children;
          +    }
          +
          +    data = this._normalizeItem(data);
          +    data.element = $option[0];
          +
          +    $.data($option[0], 'data', data);
          +
          +    return data;
          +  };
          +
          +  SelectAdapter.prototype._normalizeItem = function (item) {
          +    if (!$.isPlainObject(item)) {
          +      item = {
          +        id: item,
          +        text: item
          +      };
          +    }
          +
          +    item = $.extend({}, {
          +      text: ''
          +    }, item);
          +
          +    var defaults = {
          +      selected: false,
          +      disabled: false
          +    };
          +
          +    if (item.id != null) {
          +      item.id = item.id.toString();
          +    }
          +
          +    if (item.text != null) {
          +      item.text = item.text.toString();
          +    }
          +
          +    if (item._resultId == null && item.id && this.container != null) {
          +      item._resultId = this.generateResultId(this.container, item);
          +    }
          +
          +    return $.extend({}, defaults, item);
          +  };
          +
          +  SelectAdapter.prototype.matches = function (params, data) {
          +    var matcher = this.options.get('matcher');
          +
          +    return matcher(params, data);
          +  };
          +
          +  return SelectAdapter;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/tags.js b/public/theme/select2/src/js/select2/data/tags.js
          new file mode 100644
          index 0000000..db42faa
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/tags.js
          @@ -0,0 +1,125 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function Tags (decorated, $element, options) {
          +    var tags = options.get('tags');
          +
          +    var createTag = options.get('createTag');
          +
          +    if (createTag !== undefined) {
          +      this.createTag = createTag;
          +    }
          +
          +    var insertTag = options.get('insertTag');
          +
          +    if (insertTag !== undefined) {
          +        this.insertTag = insertTag;
          +    }
          +
          +    decorated.call(this, $element, options);
          +
          +    if ($.isArray(tags)) {
          +      for (var t = 0; t < tags.length; t++) {
          +        var tag = tags[t];
          +        var item = this._normalizeItem(tag);
          +
          +        var $option = this.option(item);
          +
          +        this.$element.append($option);
          +      }
          +    }
          +  }
          +
          +  Tags.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    this._removeOldTags();
          +
          +    if (params.term == null || params.page != null) {
          +      decorated.call(this, params, callback);
          +      return;
          +    }
          +
          +    function wrapper (obj, child) {
          +      var data = obj.results;
          +
          +      for (var i = 0; i < data.length; i++) {
          +        var option = data[i];
          +
          +        var checkChildren = (
          +          option.children != null &&
          +          !wrapper({
          +            results: option.children
          +          }, true)
          +        );
          +
          +        var checkText = option.text === params.term;
          +
          +        if (checkText || checkChildren) {
          +          if (child) {
          +            return false;
          +          }
          +
          +          obj.data = data;
          +          callback(obj);
          +
          +          return;
          +        }
          +      }
          +
          +      if (child) {
          +        return true;
          +      }
          +
          +      var tag = self.createTag(params);
          +
          +      if (tag != null) {
          +        var $option = self.option(tag);
          +        $option.attr('data-select2-tag', true);
          +
          +        self.addOptions([$option]);
          +
          +        self.insertTag(data, tag);
          +      }
          +
          +      obj.results = data;
          +
          +      callback(obj);
          +    }
          +
          +    decorated.call(this, params, wrapper);
          +  };
          +
          +  Tags.prototype.createTag = function (decorated, params) {
          +    var term = $.trim(params.term);
          +
          +    if (term === '') {
          +      return null;
          +    }
          +
          +    return {
          +      id: term,
          +      text: term
          +    };
          +  };
          +
          +  Tags.prototype.insertTag = function (_, data, tag) {
          +    data.unshift(tag);
          +  };
          +
          +  Tags.prototype._removeOldTags = function (_) {
          +    var tag = this._lastTag;
          +
          +    var $options = this.$element.find('option[data-select2-tag]');
          +
          +    $options.each(function () {
          +      if (this.selected) {
          +        return;
          +      }
          +
          +      $(this).remove();
          +    });
          +  };
          +
          +  return Tags;
          +});
          diff --git a/public/theme/select2/src/js/select2/data/tokenizer.js b/public/theme/select2/src/js/select2/data/tokenizer.js
          new file mode 100644
          index 0000000..7757655
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/data/tokenizer.js
          @@ -0,0 +1,116 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function Tokenizer (decorated, $element, options) {
          +    var tokenizer = options.get('tokenizer');
          +
          +    if (tokenizer !== undefined) {
          +      this.tokenizer = tokenizer;
          +    }
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Tokenizer.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    this.$search =  container.dropdown.$search || container.selection.$search ||
          +      $container.find('.select2-search__field');
          +  };
          +
          +  Tokenizer.prototype.query = function (decorated, params, callback) {
          +    var self = this;
          +
          +    function createAndSelect (data) {
          +      // Normalize the data object so we can use it for checks
          +      var item = self._normalizeItem(data);
          +
          +      // Check if the data object already exists as a tag
          +      // Select it if it doesn't
          +      var $existingOptions = self.$element.find('option').filter(function () {
          +        return $(this).val() === item.id;
          +      });
          +
          +      // If an existing option wasn't found for it, create the option
          +      if (!$existingOptions.length) {
          +        var $option = self.option(item);
          +        $option.attr('data-select2-tag', true);
          +
          +        self._removeOldTags();
          +        self.addOptions([$option]);
          +      }
          +
          +      // Select the item, now that we know there is an option for it
          +      select(item);
          +    }
          +
          +    function select (data) {
          +      self.trigger('select', {
          +        data: data
          +      });
          +    }
          +
          +    params.term = params.term || '';
          +
          +    var tokenData = this.tokenizer(params, this.options, createAndSelect);
          +
          +    if (tokenData.term !== params.term) {
          +      // Replace the search term if we have the search box
          +      if (this.$search.length) {
          +        this.$search.val(tokenData.term);
          +        this.$search.focus();
          +      }
          +
          +      params.term = tokenData.term;
          +    }
          +
          +    decorated.call(this, params, callback);
          +  };
          +
          +  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
          +    var separators = options.get('tokenSeparators') || [];
          +    var term = params.term;
          +    var i = 0;
          +
          +    var createTag = this.createTag || function (params) {
          +      return {
          +        id: params.term,
          +        text: params.term
          +      };
          +    };
          +
          +    while (i < term.length) {
          +      var termChar = term[i];
          +
          +      if ($.inArray(termChar, separators) === -1) {
          +        i++;
          +
          +        continue;
          +      }
          +
          +      var part = term.substr(0, i);
          +      var partParams = $.extend({}, params, {
          +        term: part
          +      });
          +
          +      var data = createTag(partParams);
          +
          +      if (data == null) {
          +        i++;
          +        continue;
          +      }
          +
          +      callback(data);
          +
          +      // Reset the term to not include the tokenized portion
          +      term = term.substr(i + 1) || '';
          +      i = 0;
          +    }
          +
          +    return {
          +      term: term
          +    };
          +  };
          +
          +  return Tokenizer;
          +});
          diff --git a/public/theme/select2/src/js/select2/defaults.js b/public/theme/select2/src/js/select2/defaults.js
          new file mode 100644
          index 0000000..ad4d224
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/defaults.js
          @@ -0,0 +1,396 @@
          +define([
          +  'jquery',
          +  'require',
          +
          +  './results',
          +
          +  './selection/single',
          +  './selection/multiple',
          +  './selection/placeholder',
          +  './selection/allowClear',
          +  './selection/search',
          +  './selection/eventRelay',
          +
          +  './utils',
          +  './translation',
          +  './diacritics',
          +
          +  './data/select',
          +  './data/array',
          +  './data/ajax',
          +  './data/tags',
          +  './data/tokenizer',
          +  './data/minimumInputLength',
          +  './data/maximumInputLength',
          +  './data/maximumSelectionLength',
          +
          +  './dropdown',
          +  './dropdown/search',
          +  './dropdown/hidePlaceholder',
          +  './dropdown/infiniteScroll',
          +  './dropdown/attachBody',
          +  './dropdown/minimumResultsForSearch',
          +  './dropdown/selectOnClose',
          +  './dropdown/closeOnSelect',
          +
          +  './i18n/en'
          +], function ($, require,
          +
          +             ResultsList,
          +
          +             SingleSelection, MultipleSelection, Placeholder, AllowClear,
          +             SelectionSearch, EventRelay,
          +
          +             Utils, Translation, DIACRITICS,
          +
          +             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
          +             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
          +
          +             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
          +             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
          +
          +             EnglishTranslation) {
          +  function Defaults () {
          +    this.reset();
          +  }
          +
          +  Defaults.prototype.apply = function (options) {
          +    options = $.extend(true, {}, this.defaults, options);
          +
          +    if (options.dataAdapter == null) {
          +      if (options.ajax != null) {
          +        options.dataAdapter = AjaxData;
          +      } else if (options.data != null) {
          +        options.dataAdapter = ArrayData;
          +      } else {
          +        options.dataAdapter = SelectData;
          +      }
          +
          +      if (options.minimumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MinimumInputLength
          +        );
          +      }
          +
          +      if (options.maximumInputLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumInputLength
          +        );
          +      }
          +
          +      if (options.maximumSelectionLength > 0) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          MaximumSelectionLength
          +        );
          +      }
          +
          +      if (options.tags) {
          +        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
          +      }
          +
          +      if (options.tokenSeparators != null || options.tokenizer != null) {
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Tokenizer
          +        );
          +      }
          +
          +      if (options.query != null) {
          +        var Query = require(options.amdBase + 'compat/query');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          Query
          +        );
          +      }
          +
          +      if (options.initSelection != null) {
          +        var InitSelection = require(options.amdBase + 'compat/initSelection');
          +
          +        options.dataAdapter = Utils.Decorate(
          +          options.dataAdapter,
          +          InitSelection
          +        );
          +      }
          +    }
          +
          +    if (options.resultsAdapter == null) {
          +      options.resultsAdapter = ResultsList;
          +
          +      if (options.ajax != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          InfiniteScroll
          +        );
          +      }
          +
          +      if (options.placeholder != null) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          HidePlaceholder
          +        );
          +      }
          +
          +      if (options.selectOnClose) {
          +        options.resultsAdapter = Utils.Decorate(
          +          options.resultsAdapter,
          +          SelectOnClose
          +        );
          +      }
          +    }
          +
          +    if (options.dropdownAdapter == null) {
          +      if (options.multiple) {
          +        options.dropdownAdapter = Dropdown;
          +      } else {
          +        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
          +
          +        options.dropdownAdapter = SearchableDropdown;
          +      }
          +
          +      if (options.minimumResultsForSearch !== 0) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          MinimumResultsForSearch
          +        );
          +      }
          +
          +      if (options.closeOnSelect) {
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          CloseOnSelect
          +        );
          +      }
          +
          +      if (
          +        options.dropdownCssClass != null ||
          +        options.dropdownCss != null ||
          +        options.adaptDropdownCssClass != null
          +      ) {
          +        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
          +
          +        options.dropdownAdapter = Utils.Decorate(
          +          options.dropdownAdapter,
          +          DropdownCSS
          +        );
          +      }
          +
          +      options.dropdownAdapter = Utils.Decorate(
          +        options.dropdownAdapter,
          +        AttachBody
          +      );
          +    }
          +
          +    if (options.selectionAdapter == null) {
          +      if (options.multiple) {
          +        options.selectionAdapter = MultipleSelection;
          +      } else {
          +        options.selectionAdapter = SingleSelection;
          +      }
          +
          +      // Add the placeholder mixin if a placeholder was specified
          +      if (options.placeholder != null) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          Placeholder
          +        );
          +      }
          +
          +      if (options.allowClear) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          AllowClear
          +        );
          +      }
          +
          +      if (options.multiple) {
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          SelectionSearch
          +        );
          +      }
          +
          +      if (
          +        options.containerCssClass != null ||
          +        options.containerCss != null ||
          +        options.adaptContainerCssClass != null
          +      ) {
          +        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
          +
          +        options.selectionAdapter = Utils.Decorate(
          +          options.selectionAdapter,
          +          ContainerCSS
          +        );
          +      }
          +
          +      options.selectionAdapter = Utils.Decorate(
          +        options.selectionAdapter,
          +        EventRelay
          +      );
          +    }
          +
          +    if (typeof options.language === 'string') {
          +      // Check if the language is specified with a region
          +      if (options.language.indexOf('-') > 0) {
          +        // Extract the region information if it is included
          +        var languageParts = options.language.split('-');
          +        var baseLanguage = languageParts[0];
          +
          +        options.language = [options.language, baseLanguage];
          +      } else {
          +        options.language = [options.language];
          +      }
          +    }
          +
          +    if ($.isArray(options.language)) {
          +      var languages = new Translation();
          +      options.language.push('en');
          +
          +      var languageNames = options.language;
          +
          +      for (var l = 0; l < languageNames.length; l++) {
          +        var name = languageNames[l];
          +        var language = {};
          +
          +        try {
          +          // Try to load it with the original name
          +          language = Translation.loadPath(name);
          +        } catch (e) {
          +          try {
          +            // If we couldn't load it, check if it wasn't the full path
          +            name = this.defaults.amdLanguageBase + name;
          +            language = Translation.loadPath(name);
          +          } catch (ex) {
          +            // The translation could not be loaded at all. Sometimes this is
          +            // because of a configuration problem, other times this can be
          +            // because of how Select2 helps load all possible translation files.
          +            if (options.debug && window.console && console.warn) {
          +              console.warn(
          +                'Select2: The language file for "' + name + '" could not be ' +
          +                'automatically loaded. A fallback will be used instead.'
          +              );
          +            }
          +
          +            continue;
          +          }
          +        }
          +
          +        languages.extend(language);
          +      }
          +
          +      options.translations = languages;
          +    } else {
          +      var baseTranslation = Translation.loadPath(
          +        this.defaults.amdLanguageBase + 'en'
          +      );
          +      var customTranslation = new Translation(options.language);
          +
          +      customTranslation.extend(baseTranslation);
          +
          +      options.translations = customTranslation;
          +    }
          +
          +    return options;
          +  };
          +
          +  Defaults.prototype.reset = function () {
          +    function stripDiacritics (text) {
          +      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
          +      function match(a) {
          +        return DIACRITICS[a] || a;
          +      }
          +
          +      return text.replace(/[^\u0000-\u007E]/g, match);
          +    }
          +
          +    function matcher (params, data) {
          +      // Always return the object if there is nothing to compare
          +      if ($.trim(params.term) === '') {
          +        return data;
          +      }
          +
          +      // Do a recursive check for options with children
          +      if (data.children && data.children.length > 0) {
          +        // Clone the data object if there are children
          +        // This is required as we modify the object to remove any non-matches
          +        var match = $.extend(true, {}, data);
          +
          +        // Check each child of the option
          +        for (var c = data.children.length - 1; c >= 0; c--) {
          +          var child = data.children[c];
          +
          +          var matches = matcher(params, child);
          +
          +          // If there wasn't a match, remove the object in the array
          +          if (matches == null) {
          +            match.children.splice(c, 1);
          +          }
          +        }
          +
          +        // If any children matched, return the new object
          +        if (match.children.length > 0) {
          +          return match;
          +        }
          +
          +        // If there were no matching children, check just the plain object
          +        return matcher(params, match);
          +      }
          +
          +      var original = stripDiacritics(data.text).toUpperCase();
          +      var term = stripDiacritics(params.term).toUpperCase();
          +
          +      // Check if the text contains the term
          +      if (original.indexOf(term) > -1) {
          +        return data;
          +      }
          +
          +      // If it doesn't contain the term, don't return anything
          +      return null;
          +    }
          +
          +    this.defaults = {
          +      amdBase: './',
          +      amdLanguageBase: './i18n/',
          +      closeOnSelect: true,
          +      debug: false,
          +      dropdownAutoWidth: false,
          +      escapeMarkup: Utils.escapeMarkup,
          +      language: EnglishTranslation,
          +      matcher: matcher,
          +      minimumInputLength: 0,
          +      maximumInputLength: 0,
          +      maximumSelectionLength: 0,
          +      minimumResultsForSearch: 0,
          +      selectOnClose: false,
          +      sorter: function (data) {
          +        return data;
          +      },
          +      templateResult: function (result) {
          +        return result.text;
          +      },
          +      templateSelection: function (selection) {
          +        return selection.text;
          +      },
          +      theme: 'default',
          +      width: 'resolve'
          +    };
          +  };
          +
          +  Defaults.prototype.set = function (key, value) {
          +    var camelKey = $.camelCase(key);
          +
          +    var data = {};
          +    data[camelKey] = value;
          +
          +    var convertedData = Utils._convertData(data);
          +
          +    $.extend(this.defaults, convertedData);
          +  };
          +
          +  var defaults = new Defaults();
          +
          +  return defaults;
          +});
          diff --git a/public/theme/select2/src/js/select2/diacritics.js b/public/theme/select2/src/js/select2/diacritics.js
          new file mode 100644
          index 0000000..c99ae61
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/diacritics.js
          @@ -0,0 +1,847 @@
          +define([
          +
          +], function () {
          +  var 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',
          +    '\u0386': '\u0391',
          +    '\u0388': '\u0395',
          +    '\u0389': '\u0397',
          +    '\u038A': '\u0399',
          +    '\u03AA': '\u0399',
          +    '\u038C': '\u039F',
          +    '\u038E': '\u03A5',
          +    '\u03AB': '\u03A5',
          +    '\u038F': '\u03A9',
          +    '\u03AC': '\u03B1',
          +    '\u03AD': '\u03B5',
          +    '\u03AE': '\u03B7',
          +    '\u03AF': '\u03B9',
          +    '\u03CA': '\u03B9',
          +    '\u0390': '\u03B9',
          +    '\u03CC': '\u03BF',
          +    '\u03CD': '\u03C5',
          +    '\u03CB': '\u03C5',
          +    '\u03B0': '\u03C5',
          +    '\u03C9': '\u03C9',
          +    '\u03C2': '\u03C3'
          +  };
          +
          +  return diacritics;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown.js b/public/theme/select2/src/js/select2/dropdown.js
          new file mode 100644
          index 0000000..a6fc40b
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown.js
          @@ -0,0 +1,42 @@
          +define([
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Dropdown ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    Dropdown.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Dropdown, Utils.Observable);
          +
          +  Dropdown.prototype.render = function () {
          +    var $dropdown = $(
          +      '<span class="select2-dropdown">' +
          +        '<span class="select2-results"></span>' +
          +      '</span>'
          +    );
          +
          +    $dropdown.attr('dir', this.options.get('dir'));
          +
          +    this.$dropdown = $dropdown;
          +
          +    return $dropdown;
          +  };
          +
          +  Dropdown.prototype.bind = function () {
          +    // Should be implemented in subclasses
          +  };
          +
          +  Dropdown.prototype.position = function ($dropdown, $container) {
          +    // Should be implmented in subclasses
          +  };
          +
          +  Dropdown.prototype.destroy = function () {
          +    // Remove the dropdown from the DOM
          +    this.$dropdown.remove();
          +  };
          +
          +  return Dropdown;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/attachBody.js b/public/theme/select2/src/js/select2/dropdown/attachBody.js
          new file mode 100644
          index 0000000..70a10d4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/attachBody.js
          @@ -0,0 +1,222 @@
          +define([
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function AttachBody (decorated, $element, options) {
          +    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  AttachBody.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    var setupResultsEvents = false;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self._showDropdown();
          +      self._attachPositioningHandler(container);
          +
          +      if (!setupResultsEvents) {
          +        setupResultsEvents = true;
          +
          +        container.on('results:all', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +
          +        container.on('results:append', function () {
          +          self._positionDropdown();
          +          self._resizeDropdown();
          +        });
          +      }
          +    });
          +
          +    container.on('close', function () {
          +      self._hideDropdown();
          +      self._detachPositioningHandler(container);
          +    });
          +
          +    this.$dropdownContainer.on('mousedown', function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  AttachBody.prototype.destroy = function (decorated) {
          +    decorated.call(this);
          +
          +    this.$dropdownContainer.remove();
          +  };
          +
          +  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
          +    // Clone all of the container classes
          +    $dropdown.attr('class', $container.attr('class'));
          +
          +    $dropdown.removeClass('select2');
          +    $dropdown.addClass('select2-container--open');
          +
          +    $dropdown.css({
          +      position: 'absolute',
          +      top: -999999
          +    });
          +
          +    this.$container = $container;
          +  };
          +
          +  AttachBody.prototype.render = function (decorated) {
          +    var $container = $('<span></span>');
          +
          +    var $dropdown = decorated.call(this);
          +    $container.append($dropdown);
          +
          +    this.$dropdownContainer = $container;
          +
          +    return $container;
          +  };
          +
          +  AttachBody.prototype._hideDropdown = function (decorated) {
          +    this.$dropdownContainer.detach();
          +  };
          +
          +  AttachBody.prototype._attachPositioningHandler =
          +      function (decorated, container) {
          +    var self = this;
          +
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.each(function () {
          +      $(this).data('select2-scroll-position', {
          +        x: $(this).scrollLeft(),
          +        y: $(this).scrollTop()
          +      });
          +    });
          +
          +    $watchers.on(scrollEvent, function (ev) {
          +      var position = $(this).data('select2-scroll-position');
          +      $(this).scrollTop(position.y);
          +    });
          +
          +    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
          +      function (e) {
          +      self._positionDropdown();
          +      self._resizeDropdown();
          +    });
          +  };
          +
          +  AttachBody.prototype._detachPositioningHandler =
          +      function (decorated, container) {
          +    var scrollEvent = 'scroll.select2.' + container.id;
          +    var resizeEvent = 'resize.select2.' + container.id;
          +    var orientationEvent = 'orientationchange.select2.' + container.id;
          +
          +    var $watchers = this.$container.parents().filter(Utils.hasScroll);
          +    $watchers.off(scrollEvent);
          +
          +    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
          +  };
          +
          +  AttachBody.prototype._positionDropdown = function () {
          +    var $window = $(window);
          +
          +    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
          +    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
          +
          +    var newDirection = null;
          +
          +    var offset = this.$container.offset();
          +
          +    offset.bottom = offset.top + this.$container.outerHeight(false);
          +
          +    var container = {
          +      height: this.$container.outerHeight(false)
          +    };
          +
          +    container.top = offset.top;
          +    container.bottom = offset.top + container.height;
          +
          +    var dropdown = {
          +      height: this.$dropdown.outerHeight(false)
          +    };
          +
          +    var viewport = {
          +      top: $window.scrollTop(),
          +      bottom: $window.scrollTop() + $window.height()
          +    };
          +
          +    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
          +    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
          +
          +    var css = {
          +      left: offset.left,
          +      top: container.bottom
          +    };
          +
          +    // Determine what the parent element is to use for calciulating the offset
          +    var $offsetParent = this.$dropdownParent;
          +
          +    // For statically positoned elements, we need to get the element
          +    // that is determining the offset
          +    if ($offsetParent.css('position') === 'static') {
          +      $offsetParent = $offsetParent.offsetParent();
          +    }
          +
          +    var parentOffset = $offsetParent.offset();
          +
          +    css.top -= parentOffset.top;
          +    css.left -= parentOffset.left;
          +
          +    if (!isCurrentlyAbove && !isCurrentlyBelow) {
          +      newDirection = 'below';
          +    }
          +
          +    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
          +      newDirection = 'above';
          +    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
          +      newDirection = 'below';
          +    }
          +
          +    if (newDirection == 'above' ||
          +      (isCurrentlyAbove && newDirection !== 'below')) {
          +      css.top = container.top - parentOffset.top - dropdown.height;
          +    }
          +
          +    if (newDirection != null) {
          +      this.$dropdown
          +        .removeClass('select2-dropdown--below select2-dropdown--above')
          +        .addClass('select2-dropdown--' + newDirection);
          +      this.$container
          +        .removeClass('select2-container--below select2-container--above')
          +        .addClass('select2-container--' + newDirection);
          +    }
          +
          +    this.$dropdownContainer.css(css);
          +  };
          +
          +  AttachBody.prototype._resizeDropdown = function () {
          +    var css = {
          +      width: this.$container.outerWidth(false) + 'px'
          +    };
          +
          +    if (this.options.get('dropdownAutoWidth')) {
          +      css.minWidth = css.width;
          +      css.position = 'relative';
          +      css.width = 'auto';
          +    }
          +
          +    this.$dropdown.css(css);
          +  };
          +
          +  AttachBody.prototype._showDropdown = function (decorated) {
          +    this.$dropdownContainer.appendTo(this.$dropdownParent);
          +
          +    this._positionDropdown();
          +    this._resizeDropdown();
          +  };
          +
          +  return AttachBody;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/attachContainer.js b/public/theme/select2/src/js/select2/dropdown/attachContainer.js
          new file mode 100644
          index 0000000..4995df4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/attachContainer.js
          @@ -0,0 +1,18 @@
          +define([
          +
          +], function () {
          +  function AttachContainer (decorated, $element, options) {
          +    decorated.call(this, $element, options);
          +  }
          +
          +  AttachContainer.prototype.position =
          +    function (decorated, $dropdown, $container) {
          +    var $dropdownContainer = $container.find('.dropdown-wrapper');
          +    $dropdownContainer.append($dropdown);
          +
          +    $dropdown.addClass('select2-dropdown--below');
          +    $container.addClass('select2-container--below');
          +  };
          +
          +  return AttachContainer;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/closeOnSelect.js b/public/theme/select2/src/js/select2/dropdown/closeOnSelect.js
          new file mode 100644
          index 0000000..fa6a82c
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/closeOnSelect.js
          @@ -0,0 +1,35 @@
          +define([
          +
          +], function () {
          +  function CloseOnSelect () { }
          +
          +  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('select', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +
          +    container.on('unselect', function (evt) {
          +      self._selectTriggered(evt);
          +    });
          +  };
          +
          +  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
          +    var originalEvent = evt.originalEvent;
          +
          +    // Don't close if the control key is being held
          +    if (originalEvent && originalEvent.ctrlKey) {
          +      return;
          +    }
          +
          +    this.trigger('close', {
          +      originalEvent: originalEvent,
          +      originalSelect2Event: evt
          +    });
          +  };
          +
          +  return CloseOnSelect;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/hidePlaceholder.js b/public/theme/select2/src/js/select2/dropdown/hidePlaceholder.js
          new file mode 100644
          index 0000000..2901f68
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/hidePlaceholder.js
          @@ -0,0 +1,42 @@
          +define([
          +
          +], function () {
          +  function HidePlaceholder (decorated, $element, options, dataAdapter) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  HidePlaceholder.prototype.append = function (decorated, data) {
          +    data.results = this.removePlaceholder(data.results);
          +
          +    decorated.call(this, data);
          +  };
          +
          +  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
          +    var modifiedData = data.slice(0);
          +
          +    for (var d = data.length - 1; d >= 0; d--) {
          +      var item = data[d];
          +
          +      if (this.placeholder.id === item.id) {
          +        modifiedData.splice(d, 1);
          +      }
          +    }
          +
          +    return modifiedData;
          +  };
          +
          +  return HidePlaceholder;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/infiniteScroll.js b/public/theme/select2/src/js/select2/dropdown/infiniteScroll.js
          new file mode 100644
          index 0000000..41d85de
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/infiniteScroll.js
          @@ -0,0 +1,89 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function InfiniteScroll (decorated, $element, options, dataAdapter) {
          +    this.lastParams = {};
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +
          +    this.$loadingMore = this.createLoadingMore();
          +    this.loading = false;
          +  }
          +
          +  InfiniteScroll.prototype.append = function (decorated, data) {
          +    this.$loadingMore.remove();
          +    this.loading = false;
          +
          +    decorated.call(this, data);
          +
          +    if (this.showLoadingMore(data)) {
          +      this.$results.append(this.$loadingMore);
          +    }
          +  };
          +
          +  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('query', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    container.on('query:append', function (params) {
          +      self.lastParams = params;
          +      self.loading = true;
          +    });
          +
          +    this.$results.on('scroll', function () {
          +      var isLoadMoreVisible = $.contains(
          +        document.documentElement,
          +        self.$loadingMore[0]
          +      );
          +
          +      if (self.loading || !isLoadMoreVisible) {
          +        return;
          +      }
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var loadingMoreOffset = self.$loadingMore.offset().top +
          +        self.$loadingMore.outerHeight(false);
          +
          +      if (currentOffset + 50 >= loadingMoreOffset) {
          +        self.loadMore();
          +      }
          +    });
          +  };
          +
          +  InfiniteScroll.prototype.loadMore = function () {
          +    this.loading = true;
          +
          +    var params = $.extend({}, {page: 1}, this.lastParams);
          +
          +    params.page++;
          +
          +    this.trigger('query:append', params);
          +  };
          +
          +  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
          +    return data.pagination && data.pagination.more;
          +  };
          +
          +  InfiniteScroll.prototype.createLoadingMore = function () {
          +    var $option = $(
          +      '<li ' +
          +      'class="select2-results__option select2-results__option--load-more"' +
          +      'role="treeitem" aria-disabled="true"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get('loadingMore');
          +
          +    $option.html(message(this.lastParams));
          +
          +    return $option;
          +  };
          +
          +  return InfiniteScroll;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/minimumResultsForSearch.js b/public/theme/select2/src/js/select2/dropdown/minimumResultsForSearch.js
          new file mode 100644
          index 0000000..b3625d4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/minimumResultsForSearch.js
          @@ -0,0 +1,39 @@
          +define([
          +
          +], function () {
          +  function countResults (data) {
          +    var count = 0;
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var item = data[d];
          +
          +      if (item.children) {
          +        count += countResults(item.children);
          +      } else {
          +        count++;
          +      }
          +    }
          +
          +    return count;
          +  }
          +
          +  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
          +    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
          +
          +    if (this.minimumResultsForSearch < 0) {
          +      this.minimumResultsForSearch = Infinity;
          +    }
          +
          +    decorated.call(this, $element, options, dataAdapter);
          +  }
          +
          +  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
          +    if (countResults(params.data.results) < this.minimumResultsForSearch) {
          +      return false;
          +    }
          +
          +    return decorated.call(this, params);
          +  };
          +
          +  return MinimumResultsForSearch;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/search.js b/public/theme/select2/src/js/select2/dropdown/search.js
          new file mode 100644
          index 0000000..3e9df40
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/search.js
          @@ -0,0 +1,101 @@
          +define([
          +  'jquery',
          +  '../utils'
          +], function ($, Utils) {
          +  function Search () { }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $rendered = decorated.call(this);
          +
          +    var $search = $(
          +      '<span class="select2-search select2-search--dropdown">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" />' +
          +      '</span>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    $rendered.prepend($search);
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    this.$search.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +    });
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$search.on('input', function (evt) {
          +      // Unbind the duplicated `keyup` event
          +      $(this).off('keyup');
          +    });
          +
          +    this.$search.on('keyup input', function (evt) {
          +      self.handleSearch(evt);
          +    });
          +
          +    container.on('open', function () {
          +      self.$search.attr('tabindex', 0);
          +
          +      self.$search.focus();
          +
          +      window.setTimeout(function () {
          +        self.$search.focus();
          +      }, 0);
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.attr('tabindex', -1);
          +
          +      self.$search.val('');
          +    });
          +
          +    container.on('focus', function () {
          +      if (container.isOpen()) {
          +        self.$search.focus();
          +      }
          +    });
          +
          +    container.on('results:all', function (params) {
          +      if (params.query.term == null || params.query.term === '') {
          +        var showSearch = self.showSearch(params);
          +
          +        if (showSearch) {
          +          self.$searchContainer.removeClass('select2-search--hide');
          +        } else {
          +          self.$searchContainer.addClass('select2-search--hide');
          +        }
          +      }
          +    });
          +  };
          +
          +  Search.prototype.handleSearch = function (evt) {
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.showSearch = function (_, params) {
          +    return true;
          +  };
          +
          +  return Search;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/selectOnClose.js b/public/theme/select2/src/js/select2/dropdown/selectOnClose.js
          new file mode 100644
          index 0000000..430c032
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/selectOnClose.js
          @@ -0,0 +1,50 @@
          +define([
          +
          +], function () {
          +  function SelectOnClose () { }
          +
          +  SelectOnClose.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('close', function (params) {
          +      self._handleSelectOnClose(params);
          +    });
          +  };
          +
          +  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
          +    if (params && params.originalSelect2Event != null) {
          +      var event = params.originalSelect2Event;
          +
          +      // Don't select an item if the close event was triggered from a select or
          +      // unselect event
          +      if (event._type === 'select' || event._type === 'unselect') {
          +        return;
          +      }
          +    }
          +
          +    var $highlightedResults = this.getHighlightedResults();
          +
          +    // Only select highlighted results
          +    if ($highlightedResults.length < 1) {
          +      return;
          +    }
          +
          +    var data = $highlightedResults.data('data');
          +
          +    // Don't re-select already selected resulte
          +    if (
          +      (data.element != null && data.element.selected) ||
          +      (data.element == null && data.selected)
          +    ) {
          +      return;
          +    }
          +
          +    this.trigger('select', {
          +        data: data
          +    });
          +  };
          +
          +  return SelectOnClose;
          +});
          diff --git a/public/theme/select2/src/js/select2/dropdown/stopPropagation.js b/public/theme/select2/src/js/select2/dropdown/stopPropagation.js
          new file mode 100644
          index 0000000..4f64182
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/dropdown/stopPropagation.js
          @@ -0,0 +1,38 @@
          +define([
          +
          +], function () {
          +  function StopPropagation () { }
          +
          +  StopPropagation.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    var stoppedEvents = [
          +    'blur',
          +    'change',
          +    'click',
          +    'dblclick',
          +    'focus',
          +    'focusin',
          +    'focusout',
          +    'input',
          +    'keydown',
          +    'keyup',
          +    'keypress',
          +    'mousedown',
          +    'mouseenter',
          +    'mouseleave',
          +    'mousemove',
          +    'mouseover',
          +    'mouseup',
          +    'search',
          +    'touchend',
          +    'touchstart'
          +    ];
          +
          +    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  return StopPropagation;
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ar.js b/public/theme/select2/src/js/select2/i18n/ar.js
          new file mode 100644
          index 0000000..b7d44f4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ar.js
          @@ -0,0 +1,36 @@
          +define(function () {
          +  // Arabic
          +  return {
          +    errorLoading: function () {
          +      return 'لا يمكن تحميل النتائج';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'الرجاء حذف ' + overChars + ' عناصر';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'الرجاء إضافة ' + remainingChars + ' عناصر';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'جاري تحميل نتائج إضافية...';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'تستطيع إختيار ' + args.maximum + ' بنود فقط';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'لم يتم العثور على أي نتائج';
          +    },
          +    searching: function () {
          +      return 'جاري البحث…';
          +    }
          +  };
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/src/js/select2/i18n/az.js b/public/theme/select2/src/js/select2/i18n/az.js
          new file mode 100644
          index 0000000..0d9bda4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/az.js
          @@ -0,0 +1,27 @@
          +define(function () {
          +  // Azerbaijani
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return overChars + ' simvol silin';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return remainingChars + ' simvol daxil edin';
          +    },
          +    loadingMore: function () {
          +      return 'Daha çox nəticə yüklənir…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Sadəcə ' + args.maximum + ' element seçə bilərsiniz';
          +    },
          +    noResults: function () {
          +      return 'Nəticə tapılmadı';
          +    },
          +    searching: function () {
          +      return 'Axtarılır…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/bg.js b/public/theme/select2/src/js/select2/i18n/bg.js
          new file mode 100644
          index 0000000..909b4e5
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/bg.js
          @@ -0,0 +1,47 @@
          +define(function () {
          +  // Bulgarian
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Моля въведете с ' + overChars + ' по-малко символ';
          +
          +      if (overChars > 1) {
          +        message += 'a';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Моля въведете още ' + remainingChars + ' символ';
          +
          +      if (remainingChars > 1) {
          +        message += 'a';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Зареждат се още…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Можете да направите до ' + args.maximum + ' ';
          +
          +      if (args.maximum > 1) {
          +        message += 'избора';
          +      } else {
          +        message += 'избор';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Няма намерени съвпадения';
          +    },
          +    searching: function () {
          +      return 'Търсене…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ca.js b/public/theme/select2/src/js/select2/i18n/ca.js
          new file mode 100644
          index 0000000..7aa8cc6
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ca.js
          @@ -0,0 +1,52 @@
          +define(function () {
          +  // Catalan
          +  return {
          +    errorLoading: function () {
          +      return 'La càrrega ha fallat';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Si us plau, elimina ' + overChars + ' car';
          +
          +      if (overChars == 1) {
          +        message += 'àcter';
          +      } else {
          +        message += 'àcters';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Si us plau, introdueix ' + remainingChars + ' car';
          +
          +      if (remainingChars == 1) {
          +        message += 'àcter';
          +      } else {
          +        message += 'àcters';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Carregant més resultats…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Només es pot seleccionar ' + args.maximum + ' element';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'No s\'han trobat resultats';
          +    },
          +    searching: function () {
          +      return 'Cercant…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/cs.js b/public/theme/select2/src/js/select2/i18n/cs.js
          new file mode 100644
          index 0000000..3769e2a
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/cs.js
          @@ -0,0 +1,61 @@
          +define(function () {
          +  // Czech
          +  function small (count, masc) {
          +    switch(count) {
          +      case 2:
          +        return masc ? 'dva' : 'dvě';
          +      case 3:
          +        return 'tři';
          +      case 4:
          +        return 'čtyři';
          +    }
          +    return '';
          +  }
          +  return {
          +    errorLoading: function () {
          +      return 'Výsledky nemohly být načteny.';
          +    },
          +    inputTooLong: function (args) {
          +      var n = args.input.length - args.maximum;
          +
          +      if (n == 1) {
          +        return 'Prosím zadejte o jeden znak méně';
          +      } else if (n <= 4) {
          +        return 'Prosím zadejte o ' + small(n, true) + ' znaky méně';
          +      } else {
          +        return 'Prosím zadejte o ' + n + ' znaků méně';
          +      }
          +    },
          +    inputTooShort: function (args) {
          +      var n = args.minimum - args.input.length;
          +
          +      if (n == 1) {
          +        return 'Prosím zadejte ještě jeden znak';
          +      } else if (n <= 4) {
          +        return 'Prosím zadejte ještě další ' + small(n, true) + ' znaky';
          +      } else {
          +        return 'Prosím zadejte ještě dalších ' + n + ' znaků';
          +      }
          +    },
          +    loadingMore: function () {
          +      return 'Načítají se další výsledky…';
          +    },
          +    maximumSelected: function (args) {
          +      var n = args.maximum;
          +
          +      if (n == 1) {
          +        return 'Můžete zvolit jen jednu položku';
          +      } else if (n <= 4) {
          +        return 'Můžete zvolit maximálně ' + small(n, false) + ' položky';
          +      } else {
          +        return 'Můžete zvolit maximálně ' + n + ' položek';
          +      }
          +    },
          +    noResults: function () {
          +      return 'Nenalezeny žádné položky';
          +    },
          +    searching: function () {
          +      return 'Vyhledávání…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/da.js b/public/theme/select2/src/js/select2/i18n/da.js
          new file mode 100644
          index 0000000..896d659
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/da.js
          @@ -0,0 +1,40 @@
          +define(function () {
          +  // Danish
          +  return {
          +    errorLoading: function () {
          +      return 'Resultaterne kunne ikke indlæses.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Angiv venligst ' + overChars + ' tegn mindre';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Angiv venligst ' + remainingChars + ' tegn mere';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Indlæser flere resultater…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Du kan kun vælge ' + args.maximum + ' emne';
          +
          +      if (args.maximum != 1) {
          +        message += 'r';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Ingen resultater fundet';
          +    },
          +    searching: function () {
          +      return 'Søger…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/de.js b/public/theme/select2/src/js/select2/i18n/de.js
          new file mode 100644
          index 0000000..482a2e7
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/de.js
          @@ -0,0 +1,37 @@
          +define(function () {
          +  // German
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Bitte ' + overChars + ' Zeichen weniger eingeben';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Bitte ' + remainingChars + ' Zeichen mehr eingeben';
          +    },
          +    loadingMore: function () {
          +      return 'Lade mehr Ergebnisse…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Sie können nur ' + args.maximum + ' Eintr';
          +
          +      if (args.maximum === 1) {
          +        message += 'ag';
          +      } else {
          +        message += 'äge';
          +      }
          +
          +      message += ' auswählen';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Keine Übereinstimmungen gefunden';
          +    },
          +    searching: function () {
          +      return 'Suche…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/el.js b/public/theme/select2/src/js/select2/i18n/el.js
          new file mode 100644
          index 0000000..9cf8ee4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/el.js
          @@ -0,0 +1,52 @@
          +define(function () {
          +  // Greek (el)
          +  return {
          +    errorLoading: function () {
          +      return 'Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Παρακαλώ διαγράψτε ' + overChars + ' χαρακτήρ';
          +
          +      if (overChars == 1) {
          +        message += 'α';
          +      }
          +      if (overChars != 1) {
          +        message += 'ες';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Παρακαλώ συμπληρώστε ' + remainingChars +
          +        ' ή περισσότερους χαρακτήρες';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Φόρτωση περισσότερων αποτελεσμάτων…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Μπορείτε να επιλέξετε μόνο ' + args.maximum + ' επιλογ';
          +
          +      if (args.maximum == 1) {
          +        message += 'ή';
          +      }
          +
          +      if (args.maximum != 1) {
          +        message += 'ές';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Δεν βρέθηκαν αποτελέσματα';
          +    },
          +    searching: function () {
          +      return 'Αναζήτηση…';
          +    }
          +  };
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/src/js/select2/i18n/en.js b/public/theme/select2/src/js/select2/i18n/en.js
          new file mode 100644
          index 0000000..f226f2c
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/en.js
          @@ -0,0 +1,44 @@
          +define(function () {
          +  // English
          +  return {
          +    errorLoading: function () {
          +      return 'The results could not be loaded.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Please delete ' + overChars + ' character';
          +
          +      if (overChars != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Please enter ' + remainingChars + ' or more characters';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Loading more results…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'You can only select ' + args.maximum + ' item';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'No results found';
          +    },
          +    searching: function () {
          +      return 'Searching…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/es.js b/public/theme/select2/src/js/select2/i18n/es.js
          new file mode 100644
          index 0000000..f17826d
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/es.js
          @@ -0,0 +1,52 @@
          +define(function () {
          +  // Spanish
          +  return {
          +    errorLoading: function () {
          +      return 'La carga falló';
          +    },
          +    inputTooLong: function (args) {
          +      var remainingChars = args.input.length - args.maximum;
          +
          +      var message = 'Por favor, elimine ' + remainingChars + ' car';
          +
          +      if (remainingChars == 1) {
          +        message += 'ácter';
          +      } else {
          +        message += 'acteres';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Por favor, introduzca ' + remainingChars + ' car';
          +
          +      if (remainingChars == 1) {
          +        message += 'ácter';
          +      } else {
          +        message += 'acteres';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Cargando más resultados…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Sólo puede seleccionar ' + args.maximum + ' elemento';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'No se encontraron resultados';
          +    },
          +    searching: function () {
          +      return 'Buscando…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/et.js b/public/theme/select2/src/js/select2/i18n/et.js
          new file mode 100644
          index 0000000..d546ade
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/et.js
          @@ -0,0 +1,53 @@
          +define(function () {
          +  // Estonian
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Sisesta ' + overChars + ' täht';
          +
          +      if (overChars != 1) {
          +        message += 'e';
          +      }
          +
          +      message += ' vähem';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Sisesta ' + remainingChars + ' täht';
          +
          +      if (remainingChars != 1) {
          +        message += 'e';
          +      }
          +
          +      message += ' rohkem';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Laen tulemusi…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Saad vaid ' + args.maximum + ' tulemus';
          +
          +      if (args.maximum == 1) {
          +        message += 'e';
          +      } else {
          +        message += 't';
          +      }
          +
          +      message += ' valida';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Tulemused puuduvad';
          +    },
          +    searching: function () {
          +      return 'Otsin…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/eu.js b/public/theme/select2/src/js/select2/i18n/eu.js
          new file mode 100644
          index 0000000..4a1f894
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/eu.js
          @@ -0,0 +1,51 @@
          +define(function () {
          +  // Basque
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Idatzi ';
          +
          +      if (overChars == 1) {
          +        message += 'karaktere bat';
          +      } else {
          +        message += overChars + ' karaktere';
          +      }
          +
          +      message += ' gutxiago';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Idatzi ';
          +
          +      if (remainingChars == 1) {
          +        message += 'karaktere bat';
          +      } else {
          +        message += remainingChars + ' karaktere';
          +      }
          +
          +      message += ' gehiago';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Emaitza gehiago kargatzen…';
          +    },
          +    maximumSelected: function (args) {
          +      if (args.maximum === 1) {
          +        return 'Elementu bakarra hauta dezakezu';
          +      } else {
          +        return args.maximum + ' elementu hauta ditzakezu soilik';
          +      }
          +    },
          +    noResults: function () {
          +      return 'Ez da bat datorrenik aurkitu';
          +    },
          +    searching: function () {
          +      return 'Bilatzen…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/fa.js b/public/theme/select2/src/js/select2/i18n/fa.js
          new file mode 100644
          index 0000000..64ce1a5
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/fa.js
          @@ -0,0 +1,38 @@
          +/* jshint -W100 */
          +/* jslint maxlen: 86 */
          +define(function () {
          +  // Farsi (Persian)
          +  return {
          +    errorLoading: function () {
          +      return 'امکان بارگذاری نتایج وجود ندارد.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'لطفاً ' + overChars + ' کاراکتر را حذف نمایید';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'لطفاً تعداد ' + remainingChars + ' کاراکتر یا بیشتر وارد نمایید';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'در حال بارگذاری نتایج بیشتر...';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'شما تنها می‌توانید ' + args.maximum + ' آیتم را انتخاب نمایید';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'هیچ نتیجه‌ای یافت نشد';
          +    },
          +    searching: function () {
          +      return 'در حال جستجو...';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/fi.js b/public/theme/select2/src/js/select2/i18n/fi.js
          new file mode 100644
          index 0000000..94605af
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/fi.js
          @@ -0,0 +1,27 @@
          +define(function () {
          +  // Finnish
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Ole hyvä ja anna ' + overChars + ' merkkiä vähemmän';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Ole hyvä ja anna ' + remainingChars + ' merkkiä lisää';
          +    },
          +    loadingMore: function () {
          +      return 'Ladataan lisää tuloksia…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Voit valita ainoastaan ' + args.maximum + ' kpl';
          +    },
          +    noResults: function () {
          +      return 'Ei tuloksia';
          +    },
          +    searching: function () {
          +
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/fr.js b/public/theme/select2/src/js/select2/i18n/fr.js
          new file mode 100644
          index 0000000..0f4fbdc
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/fr.js
          @@ -0,0 +1,49 @@
          +define(function () {
          +  // French
          +  return {
          +    errorLoading: function () {
          +      return 'Les résultats ne peuvent pas être chargés.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Supprimez ' + overChars + ' caractère';
          +
          +      if (overChars !== 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Saisissez ' + remainingChars + ' caractère';
          +
          +      if (remainingChars !== 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Chargement de résultats supplémentaires…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Vous pouvez seulement sélectionner ' +
          +        args.maximum + ' élément';
          +
          +      if (args.maximum !== 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Aucun résultat trouvé';
          +    },
          +    searching: function () {
          +      return 'Recherche en cours…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/gl.js b/public/theme/select2/src/js/select2/i18n/gl.js
          new file mode 100644
          index 0000000..1d89f0a
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/gl.js
          @@ -0,0 +1,51 @@
          +define(function () {
          +  // Galician
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Elimine ';
          +
          +      if (overChars === 1) {
          +        message += 'un carácter';
          +      } else {
          +        message += overChars + ' caracteres';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Engada ';
          +
          +      if (remainingChars === 1) {
          +        message += 'un carácter';
          +      } else {
          +        message += remainingChars + ' caracteres';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Cargando máis resultados…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Só pode ';
          +
          +      if (args.maximum === 1) {
          +        message += 'un elemento';
          +      } else {
          +        message += args.maximum + ' elementos';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Non se atoparon resultados';
          +    },
          +    searching: function () {
          +      return 'Buscando…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/he.js b/public/theme/select2/src/js/select2/i18n/he.js
          new file mode 100644
          index 0000000..5a27f81
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/he.js
          @@ -0,0 +1,56 @@
          +define(function () {
          +  // Hebrew
          +  return {
          +    errorLoading: function () {
          +      return 'שגיאה בטעינת התוצאות';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'נא למחוק ';
          +
          +      if (overChars === 1) {
          +        message += 'תו אחד';
          +      } else {
          +        message += overChars + ' תווים';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'נא להכניס ';
          +
          +      if (remainingChars === 1) {
          +        message += 'תו אחד';
          +      } else {
          +        message += remainingChars + ' תווים';
          +      }
          +
          +      message += ' או יותר';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'טוען תוצאות נוספות…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'באפשרותך לבחור עד ';
          +
          +      if (args.maximum === 1) {
          +        message += 'פריט אחד';
          +      } else {
          +        message += args.maximum + ' פריטים';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'לא נמצאו תוצאות';
          +    },
          +    searching: function () {
          +      return 'מחפש…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/hi.js b/public/theme/select2/src/js/select2/i18n/hi.js
          new file mode 100644
          index 0000000..e8ee153
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/hi.js
          @@ -0,0 +1,39 @@
          +define(function () {
          +  // Hindi
          +  return {
          +    errorLoading: function () {
          +      return 'परिणामों को लोड नहीं किया जा सका।';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message =  overChars + ' अक्षर को हटा दें';
          +
          +      if (overChars > 1) {
          +        message = overChars + ' अक्षरों को हटा दें ';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'कृपया ' + remainingChars + ' या अधिक अक्षर दर्ज करें';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'अधिक परिणाम लोड हो रहे है...';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'आप केवल ' + args.maximum + ' आइटम का चयन कर सकते हैं';
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'कोई परिणाम नहीं मिला';
          +    },
          +    searching: function () {
          +      return 'खोज रहा है...';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/hr.js b/public/theme/select2/src/js/select2/i18n/hr.js
          new file mode 100644
          index 0000000..81462a5
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/hr.js
          @@ -0,0 +1,44 @@
          +define(function () {
          +  // Croatian
          +  function character (n) {
          +    var message = ' ' + n + ' znak';
          +
          +    if (n % 10 < 5 && n % 10 > 0 && (n % 100 < 5 || n % 100 > 19)) {
          +      if (n % 10 > 1) {
          +        message += 'a';
          +      }
          +    } else {
          +      message += 'ova';
          +    }
          +
          +    return message;
          +  }
          +
          +  return {
          +    errorLoading: function () {
          +      return 'Preuzimanje nije uspjelo.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Unesite ' + character(overChars);
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Unesite još ' + character(remainingChars);
          +    },
          +    loadingMore: function () {
          +      return 'Učitavanje rezultata…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Maksimalan broj odabranih stavki je ' + args.maximum;
          +    },
          +    noResults: function () {
          +      return 'Nema rezultata';
          +    },
          +    searching: function () {
          +      return 'Pretraga…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/hu.js b/public/theme/select2/src/js/select2/i18n/hu.js
          new file mode 100644
          index 0000000..3fd8ada
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/hu.js
          @@ -0,0 +1,27 @@
          +define(function () {
          +  // Hungarian
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Túl hosszú. ' + overChars + ' karakterrel több, mint kellene.';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Túl rövid. Még ' + remainingChars + ' karakter hiányzik.';
          +    },
          +    loadingMore: function () {
          +      return 'Töltés…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Csak ' + args.maximum + ' elemet lehet kiválasztani.';
          +    },
          +    noResults: function () {
          +      return 'Nincs találat.';
          +    },
          +    searching: function () {
          +      return 'Keresés…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/id.js b/public/theme/select2/src/js/select2/i18n/id.js
          new file mode 100644
          index 0000000..43b632e
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/id.js
          @@ -0,0 +1,30 @@
          +define(function () {
          +  // Indonesian
          +  return {
          +    errorLoading: function () {
          +      return 'Data tidak boleh diambil.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Hapuskan ' + overChars + ' huruf';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Masukkan ' + remainingChars + ' huruf lagi';
          +    },
          +    loadingMore: function () {
          +      return 'Mengambil data…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Anda hanya dapat memilih ' + args.maximum + ' pilihan';
          +    },
          +    noResults: function () {
          +      return 'Tidak ada data yang sesuai';
          +    },
          +    searching: function () {
          +      return 'Mencari…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/is.js b/public/theme/select2/src/js/select2/i18n/is.js
          new file mode 100644
          index 0000000..7a835f5
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/is.js
          @@ -0,0 +1,41 @@
          +define(function () {
          +  // Icelandic
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Vinsamlegast styttið texta um ' + overChars + ' staf';
          +
          +      if (overChars <= 1) {
          +        return message;
          +      }
          +
          +      return message + 'i';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Vinsamlegast skrifið ' + remainingChars + ' staf';
          +
          +      if (remainingChars > 1) {
          +        message += 'i';
          +      }
          +
          +      message += ' í viðbót';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Sæki fleiri niðurstöður…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Þú getur aðeins valið ' + args.maximum + ' atriði';
          +    },
          +    noResults: function () {
          +      return 'Ekkert fannst';
          +    },
          +    searching: function () {
          +      return 'Leita…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/it.js b/public/theme/select2/src/js/select2/i18n/it.js
          new file mode 100644
          index 0000000..76c2e4b
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/it.js
          @@ -0,0 +1,48 @@
          +define(function () {
          +  // Italian
          +  return {
          +    errorLoading: function () {
          +      return 'I risultati non possono essere caricati.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Per favore cancella ' + overChars + ' caratter';
          +
          +      if (overChars !== 1) {
          +        message += 'i';
          +      } else {
          +        message += 'e';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Per favore inserisci ' +remainingChars+ ' o più caratteri';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Caricando più risultati…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Puoi selezionare solo ' + args.maximum + ' element';
          +
          +      if (args.maximum !== 1) {
          +        message += 'i';
          +      } else {
          +        message += 'o';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Nessun risultato trovato';
          +    },
          +    searching: function () {
          +      return 'Sto cercando…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ja.js b/public/theme/select2/src/js/select2/i18n/ja.js
          new file mode 100644
          index 0000000..c954c4f
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ja.js
          @@ -0,0 +1,36 @@
          +define(function () {
          +  // Japanese
          +  return {
          +    errorLoading: function () {
          +      return '結果が読み込まれませんでした';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = overChars + ' 文字を削除してください';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = '少なくとも ' + remainingChars + ' 文字を入力してください';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return '読み込み中…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = args.maximum + ' 件しか選択できません';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return '対象が見つかりません';
          +    },
          +    searching: function () {
          +      return '検索しています…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/km.js b/public/theme/select2/src/js/select2/i18n/km.js
          new file mode 100644
          index 0000000..10e3d7e
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/km.js
          @@ -0,0 +1,36 @@
          +define(function () {
          +  // Khmer
          +  return {
          +    errorLoading: function () {
          +      return 'មិនអាចទាញយកទិន្នន័យ';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'សូមលុបចេញ  ' + overChars + ' អក្សរ';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'សូមបញ្ចូល' + remainingChars + ' អក្សរ រឺ ច្រើនជាងនេះ';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'កំពុងទាញយកទិន្នន័យបន្ថែម...';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'អ្នកអាចជ្រើសរើសបានតែ ' + args.maximum + ' ជម្រើសប៉ុណ្ណោះ';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'មិនមានលទ្ធផល';
          +    },
          +    searching: function () {
          +      return 'កំពុងស្វែងរក...';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ko.js b/public/theme/select2/src/js/select2/i18n/ko.js
          new file mode 100644
          index 0000000..9a2de10
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ko.js
          @@ -0,0 +1,36 @@
          +define(function () {
          +  // Korean
          +  return {
          +    errorLoading: function () {
          +      return '결과를 불러올 수 없습니다.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = '너무 깁니다. ' + overChars + ' 글자 지워주세요.';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = '너무 짧습니다. ' + remainingChars + ' 글자 더 입력해주세요.';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return '불러오는 중…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = '최대 ' + args.maximum + '개까지만 선택 가능합니다.';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return '결과가 없습니다.';
          +    },
          +    searching: function () {
          +      return '검색 중…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/lt.js b/public/theme/select2/src/js/select2/i18n/lt.js
          new file mode 100644
          index 0000000..500a519
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/lt.js
          @@ -0,0 +1,52 @@
          +define(function () {
          +  // rules from
          +  // http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html#lt
          +  function ending(count, one, few, other) {
          +    if (count % 10 === 1 && (count % 100 < 11 || count % 100 > 19)) {
          +      return one;
          +    } else if (
          +      (count % 10 >= 2 && count % 10 <= 9) &&
          +      (count % 100 < 11 || count % 100 > 19)) {
          +      return few;
          +    } else {
          +      return other;
          +    }
          +  }
          +
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Pašalinkite ' + overChars + ' simbol';
          +
          +      message += ending(overChars, 'į', 'ius', 'ių');
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Įrašykite dar ' + remainingChars + ' simbol';
          +
          +      message += ending(remainingChars, 'į', 'ius', 'ių');
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Kraunama daugiau rezultatų…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Jūs galite pasirinkti tik ' + args.maximum + ' element';
          +
          +      message += ending(args.maximum, 'ą', 'us', 'ų');
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Atitikmenų nerasta';
          +    },
          +    searching: function () {
          +      return 'Ieškoma…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/lv.js b/public/theme/select2/src/js/select2/i18n/lv.js
          new file mode 100644
          index 0000000..560cab0
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/lv.js
          @@ -0,0 +1,51 @@
          +define(function () {
          +  // Latvian
          +  function ending (count, eleven, singular, other) {
          +    if (count === 11) {
          +      return eleven;
          +    }
          +
          +    if (count % 10 === 1) {
          +      return singular;
          +    }
          +
          +    return other;
          +  }
          +
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Lūdzu ievadiet par  ' + overChars;
          +
          +      message += ' simbol' + ending(overChars, 'iem', 'u', 'iem');
          +
          +      return message + ' mazāk';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Lūdzu ievadiet vēl ' + remainingChars;
          +
          +      message += ' simbol' + ending(remainingChars, 'us', 'u', 'us');
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Datu ielāde…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Jūs varat izvēlēties ne vairāk kā ' + args.maximum;
          +
          +      message += ' element' + ending(args.maximum, 'us', 'u', 'us');
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Sakritību nav';
          +    },
          +    searching: function () {
          +      return 'Meklēšana…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/mk.js b/public/theme/select2/src/js/select2/i18n/mk.js
          new file mode 100644
          index 0000000..a27f0e8
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/mk.js
          @@ -0,0 +1,47 @@
          +define(function () {
          +  // Macedonian
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Ве молиме внесете ' + args.maximum + ' помалку карактер';
          +
          +      if (args.maximum !== 1) {
          +        message += 'и';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Ве молиме внесете уште ' + args.maximum + ' карактер';
          +
          +      if (args.maximum !== 1) {
          +        message += 'и';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Вчитување резултати…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Можете да изберете само ' + args.maximum + ' ставк';
          +
          +      if (args.maximum === 1) {
          +        message += 'а';
          +      } else {
          +        message += 'и';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Нема пронајдено совпаѓања';
          +    },
          +    searching: function () {
          +      return 'Пребарување…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ms.js b/public/theme/select2/src/js/select2/i18n/ms.js
          new file mode 100644
          index 0000000..3c11562
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ms.js
          @@ -0,0 +1,30 @@
          +define(function () {
          +  // Malay
          +  return {
          +    errorLoading: function () {
          +      return 'Keputusan tidak berjaya dimuatkan.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Sila hapuskan ' + overChars + ' aksara';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      return 'Sila masukkan ' + remainingChars + ' atau lebih aksara';
          +    },
          +    loadingMore: function () {
          +      return 'Sedang memuatkan keputusan…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Anda hanya boleh memilih ' + args.maximum + ' pilihan';
          +    },
          +    noResults: function () {
          +      return 'Tiada padanan yang ditemui';
          +    },
          +    searching: function () {
          +      return 'Mencari…';
          +    }
          +  };
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/src/js/select2/i18n/nb.js b/public/theme/select2/src/js/select2/i18n/nb.js
          new file mode 100644
          index 0000000..2b7fe16
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/nb.js
          @@ -0,0 +1,38 @@
          +define(function () {
          +  // Norwegian (Bokmål)
          +  return {
          +    errorLoading: function () {
          +      return 'Kunne ikke hente resultater.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Vennligst fjern ' + overChars + ' tegn';
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Vennligst skriv inn ';
          +
          +      if (remainingChars > 1) {
          +        message += ' flere tegn';
          +      } else {
          +        message += ' tegn til';
          +      }
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Laster flere resultater…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Du kan velge maks ' + args.maximum + ' elementer';
          +    },
          +    noResults: function () {
          +      return 'Ingen treff';
          +    },
          +    searching: function () {
          +      return 'Søker…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/nl.js b/public/theme/select2/src/js/select2/i18n/nl.js
          new file mode 100644
          index 0000000..e8c016a
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/nl.js
          @@ -0,0 +1,43 @@
          +define(function () {
          +  // Dutch
          +  return {
          +    errorLoading: function () {
          +      return 'De resultaten konden niet worden geladen.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Gelieve ' + overChars + ' karakters te verwijderen';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Gelieve ' + remainingChars +
          +        ' of meer karakters in te voeren';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Meer resultaten laden…';
          +    },
          +    maximumSelected: function (args) {
          +      var verb = args.maximum == 1 ? 'kan' : 'kunnen';
          +      var message = 'Er ' + verb + ' maar ' + args.maximum + ' item';
          +
          +      if (args.maximum != 1) {
          +        message += 's';
          +      }
          +      message += ' worden geselecteerd';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Geen resultaten gevonden…';
          +    },
          +    searching: function () {
          +      return 'Zoeken…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/pl.js b/public/theme/select2/src/js/select2/i18n/pl.js
          new file mode 100644
          index 0000000..030a4dd
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/pl.js
          @@ -0,0 +1,45 @@
          +define(function () {
          +  // Polish
          +  var charsWords = ['znak', 'znaki', 'znaków'];
          +  var itemsWords = ['element', 'elementy', 'elementów'];
          +
          +  var pluralWord = function pluralWord(numberOfChars, words) {
          +    if (numberOfChars === 1) {
          +        return words[0];
          +    } else if (numberOfChars > 1 && numberOfChars <= 4) {
          +      return words[1];
          +    } else if (numberOfChars >= 5) {
          +      return words[2];
          +    }
          +  };
          +  
          +  return {
          +    errorLoading: function () {
          +      return 'Nie można załadować wyników.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      return 'Usuń ' + overChars + ' ' + pluralWord(overChars, charsWords);
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +      
          +      return 'Podaj przynajmniej ' + remainingChars + ' ' +
          +        pluralWord(remainingChars, charsWords);
          +    },
          +    loadingMore: function () {
          +      return 'Trwa ładowanie…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Możesz zaznaczyć tylko ' + args.maximum + ' ' +
          +        pluralWord(args.maximum, itemsWords);
          +    },
          +    noResults: function () {
          +      return 'Brak wyników';
          +    },
          +    searching: function () {
          +      return 'Trwa wyszukiwanie…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/pt-BR.js b/public/theme/select2/src/js/select2/i18n/pt-BR.js
          new file mode 100644
          index 0000000..7f769b6
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/pt-BR.js
          @@ -0,0 +1,46 @@
          +define(function () {
          +  // Brazilian Portuguese
          +  return {
          +    errorLoading: function () {
          +      return 'Os resultados não puderam ser carregados.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Apague ' + overChars + ' caracter';
          +
          +      if (overChars != 1) {
          +        message += 'es';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Digite ' + remainingChars + ' ou mais caracteres';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Carregando mais resultados…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Você só pode selecionar ' + args.maximum + ' ite';
          +
          +      if (args.maximum == 1) {
          +        message += 'm';
          +      } else {
          +        message += 'ns';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Nenhum resultado encontrado';
          +    },
          +    searching: function () {
          +      return 'Buscando…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/pt.js b/public/theme/select2/src/js/select2/i18n/pt.js
          new file mode 100644
          index 0000000..4919f69
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/pt.js
          @@ -0,0 +1,40 @@
          +define(function () {
          +  // European Portuguese
          +  return {
          +    errorLoading: function () {
          +      return 'Os resultados não puderam ser carregados.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Por favor apague ' + overChars + ' ';
          +
          +      message += overChars != 1 ? 'caracteres' : 'carácter';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Introduza ' + remainingChars + ' ou mais caracteres';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'A carregar mais resultados…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Apenas pode seleccionar ' + args.maximum + ' ';
          +
          +      message += args.maximum != 1 ? 'itens' : 'item';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Sem resultados';
          +    },
          +    searching: function () {
          +      return 'A procurar…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ro.js b/public/theme/select2/src/js/select2/i18n/ro.js
          new file mode 100644
          index 0000000..d62133a
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ro.js
          @@ -0,0 +1,46 @@
          +define(function () {
          +  // Romanian
          +  return {
          +    errorLoading: function () {
          +      return 'Rezultatele nu au putut fi incărcate.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Vă rugăm să ștergeți' + overChars + ' caracter';
          +
          +      if (overChars !== 1) {
          +        message += 'e';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Vă rugăm să introduceți ' + remainingChars +
          +        'sau mai multe caractere';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Se încarcă mai multe rezultate…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Aveți voie să selectați cel mult ' + args.maximum;
          +      message += ' element';
          +
          +      if (args.maximum !== 1) {
          +        message += 'e';
          +      }
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Nu au fost găsite rezultate';
          +    },
          +    searching: function () {
          +      return 'Căutare…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/ru.js b/public/theme/select2/src/js/select2/i18n/ru.js
          new file mode 100644
          index 0000000..2ac11ec
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/ru.js
          @@ -0,0 +1,58 @@
          +define(function () {
          +  // Russian
          +  function ending (count, one, couple, more) {
          +    if (count % 10 < 5 && count % 10 > 0 &&
          +        count % 100 < 5 || count % 100 > 20) {
          +      if (count % 10 > 1) {
          +        return couple;
          +      }
          +    } else {
          +      return more;
          +    }
          +
          +    return one;
          +  }
          +
          +  return {
          +    errorLoading: function () {
          +      return 'Невозможно загрузить результаты';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Пожалуйста, введите на ' + overChars + ' символ';
          +
          +      message += ending(overChars, '', 'a', 'ов');
          +
          +      message += ' меньше';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Пожалуйста, введите еще хотя бы ' + remainingChars +
          +        ' символ';
          +
          +      message += ending(remainingChars, '', 'a', 'ов');
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Загрузка данных…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Вы можете выбрать не более ' + args.maximum + ' элемент';
          +
          +      message += ending(args.maximum, '', 'a', 'ов');
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Совпадений не найдено';
          +    },
          +    searching: function () {
          +      return 'Поиск…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/sk.js b/public/theme/select2/src/js/select2/i18n/sk.js
          new file mode 100644
          index 0000000..449754e
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/sk.js
          @@ -0,0 +1,56 @@
          +define(function () {
          +  // Slovak
          +
          +  // use text for the numbers 2 through 4
          +  var smallNumbers = {
          +    2: function (masc) { return (masc ? 'dva' : 'dve'); },
          +    3: function () { return 'tri'; },
          +    4: function () { return 'štyri'; }
          +  };
          +
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      if (overChars == 1) {
          +        return 'Prosím, zadajte o jeden znak menej';
          +      } else if (overChars >= 2 && overChars <= 4) {
          +        return 'Prosím, zadajte o ' + smallNumbers[overChars](true) +
          +          ' znaky menej';
          +      } else {
          +        return 'Prosím, zadajte o ' + overChars + ' znakov menej';
          +      }
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      if (remainingChars == 1) {
          +        return 'Prosím, zadajte ešte jeden znak';
          +      } else if (remainingChars <= 4) {
          +        return 'Prosím, zadajte ešte ďalšie ' +
          +          smallNumbers[remainingChars](true) + ' znaky';
          +      } else {
          +        return 'Prosím, zadajte ešte ďalších ' + remainingChars + ' znakov';
          +      }
          +    },
          +    loadingMore: function () {
          +      return 'Loading more results…';
          +    },
          +    maximumSelected: function (args) {
          +      if (args.maximum == 1) {
          +        return 'Môžete zvoliť len jednu položku';
          +      } else if (args.maximum >= 2 && args.maximum <= 4) {
          +        return 'Môžete zvoliť najviac ' + smallNumbers[args.maximum](false) +
          +          ' položky';
          +      } else {
          +        return 'Môžete zvoliť najviac ' + args.maximum + ' položiek';
          +      }
          +    },
          +    noResults: function () {
          +      return 'Nenašli sa žiadne položky';
          +    },
          +    searching: function () {
          +      return 'Vyhľadávanie…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/sr-Cyrl.js b/public/theme/select2/src/js/select2/i18n/sr-Cyrl.js
          new file mode 100644
          index 0000000..c61184e
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/sr-Cyrl.js
          @@ -0,0 +1,55 @@
          +define(function () {
          +  // Serbian Cyrilic
          +  function ending (count, one, some, many) {
          +    if (count % 10 == 1 && count % 100 != 11) {
          +      return one;
          +    }
          +
          +    if (count % 10 >= 2 && count % 10 <= 4 &&
          +      (count % 100 < 12 || count % 100 > 14)) {
          +        return some;
          +    }
          +
          +    return many;
          +  }
          +
          +  return {
          +    errorLoading: function () {
          +      return 'Преузимање није успело.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Обришите ' + overChars + ' симбол';
          +
          +      message += ending(overChars, '', 'а', 'а');
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Укуцајте бар још ' + remainingChars + ' симбол';
          +
          +      message += ending(remainingChars, '', 'а', 'а');
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Преузимање још резултата…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Можете изабрати само ' + args.maximum + ' ставк';
          +
          +      message += ending(args.maximum, 'у', 'е', 'и');
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Ништа није пронађено';
          +    },
          +    searching: function () {
          +      return 'Претрага…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/sr.js b/public/theme/select2/src/js/select2/i18n/sr.js
          new file mode 100644
          index 0000000..7821b2b
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/sr.js
          @@ -0,0 +1,55 @@
          +define(function () {
          +  // Serbian
          +  function ending (count, one, some, many) {
          +    if (count % 10 == 1 && count % 100 != 11) {
          +      return one;
          +    }
          +
          +    if (count % 10 >= 2 && count % 10 <= 4 &&
          +      (count % 100 < 12 || count % 100 > 14)) {
          +        return some;
          +    }
          +
          +    return many;
          +  }
          +
          +  return {
          +    errorLoading: function () {
          +      return 'Preuzimanje nije uspelo.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Obrišite ' + overChars + ' simbol';
          +
          +      message += ending(overChars, '', 'a', 'a');
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Ukucajte bar još ' + remainingChars + ' simbol';
          +
          +      message += ending(remainingChars, '', 'a', 'a');
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Preuzimanje još rezultata…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Možete izabrati samo ' + args.maximum + ' stavk';
          +
          +      message += ending(args.maximum, 'u', 'e', 'i');
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Ništa nije pronađeno';
          +    },
          +    searching: function () {
          +      return 'Pretraga…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/sv.js b/public/theme/select2/src/js/select2/i18n/sv.js
          new file mode 100644
          index 0000000..42bed7e
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/sv.js
          @@ -0,0 +1,37 @@
          +define(function () {
          +  // Swedish
          +  return {
          +    errorLoading: function () {
          +      return 'Resultat kunde inte laddas.';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Vänligen sudda ut ' + overChars + ' tecken';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Vänligen skriv in ' + remainingChars +
          +                    ' eller fler tecken';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Laddar fler resultat…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Du kan max välja ' + args.maximum + ' element';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Inga träffar';
          +    },
          +    searching: function () {
          +      return 'Söker…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/th.js b/public/theme/select2/src/js/select2/i18n/th.js
          new file mode 100644
          index 0000000..3f6efb7
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/th.js
          @@ -0,0 +1,33 @@
          +define(function () {
          +  // Thai
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'โปรดลบออก ' + overChars + ' ตัวอักษร';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'โปรดพิมพ์เพิ่มอีก ' + remainingChars + ' ตัวอักษร';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'กำลังค้นข้อมูลเพิ่ม…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'คุณสามารถเลือกได้ไม่เกิน ' + args.maximum + ' รายการ';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'ไม่พบข้อมูล';
          +    },
          +    searching: function () {
          +      return 'กำลังค้นข้อมูล…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/tr.js b/public/theme/select2/src/js/select2/i18n/tr.js
          new file mode 100644
          index 0000000..636132f
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/tr.js
          @@ -0,0 +1,33 @@
          +define(function () {
          +  // Turkish
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = overChars + ' karakter daha girmelisiniz';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'En az ' + remainingChars + ' karakter daha girmelisiniz';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Daha fazla…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Sadece ' + args.maximum + ' seçim yapabilirsiniz';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Sonuç bulunamadı';
          +    },
          +    searching: function () {
          +      return 'Aranıyor…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/uk.js b/public/theme/select2/src/js/select2/i18n/uk.js
          new file mode 100644
          index 0000000..72067c9
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/uk.js
          @@ -0,0 +1,43 @@
          +define(function () {
          +  // Ukranian
          +  function ending (count, one, couple, more) {
          +    if (count % 100 > 10 && count % 100 < 15) {
          +      return more;
          +    }
          +    if (count % 10 === 1) {
          +      return one;
          +    }
          +    if (count % 10 > 1 && count % 10 < 5) {
          +      return couple;
          +    }
          +    return more;
          +  }
          +
          +  return {
          +    errorLoading: function () {
          +      return 'Неможливо завантажити результати';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +      return 'Будь ласка, видаліть ' + overChars + ' ' +
          +        ending(args.maximum, 'літеру', 'літери', 'літер');
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +      return 'Будь ласка, введіть ' + remainingChars + ' або більше літер';
          +    },
          +    loadingMore: function () {
          +      return 'Завантаження інших результатів…';
          +    },
          +    maximumSelected: function (args) {
          +      return 'Ви можете вибрати лише ' + args.maximum + ' ' +
          +        ending(args.maximum, 'пункт', 'пункти', 'пунктів');
          +    },
          +    noResults: function () {
          +      return 'Нічого не знайдено';
          +    },
          +    searching: function () {
          +      return 'Пошук…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/vi.js b/public/theme/select2/src/js/select2/i18n/vi.js
          new file mode 100644
          index 0000000..f50ff75
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/vi.js
          @@ -0,0 +1,37 @@
          +define(function () {
          +  // Vietnamese
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = 'Vui lòng nhập ít hơn ' + overChars + ' ký tự';
          +
          +      if (overChars != 1) {
          +        message += 's';
          +      }
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = 'Vui lòng nhập nhiều hơn ' + remainingChars + ' ký tự"';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return 'Đang lấy thêm kết quả…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = 'Chỉ có thể chọn được ' + args.maximum + ' lựa chọn';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return 'Không tìm thấy kết quả';
          +    },
          +    searching: function () {
          +      return 'Đang tìm…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/zh-CN.js b/public/theme/select2/src/js/select2/i18n/zh-CN.js
          new file mode 100644
          index 0000000..4aaec39
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/zh-CN.js
          @@ -0,0 +1,36 @@
          +define(function () {
          +  // Chinese (Simplified)
          +  return {
          +    errorLoading: function () {
          +      return '无法载入结果。';
          +    },
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = '请删除' + overChars + '个字符';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = '请再输入至少' + remainingChars + '个字符';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return '载入更多结果…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = '最多只能选择' + args.maximum + '个项目';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return '未找到结果';
          +    },
          +    searching: function () {
          +      return '搜索中…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/i18n/zh-TW.js b/public/theme/select2/src/js/select2/i18n/zh-TW.js
          new file mode 100644
          index 0000000..80624f1
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/i18n/zh-TW.js
          @@ -0,0 +1,33 @@
          +define(function () {
          +  // Chinese (Traditional)
          +  return {
          +    inputTooLong: function (args) {
          +      var overChars = args.input.length - args.maximum;
          +
          +      var message = '請刪掉' + overChars + '個字元';
          +
          +      return message;
          +    },
          +    inputTooShort: function (args) {
          +      var remainingChars = args.minimum - args.input.length;
          +
          +      var message = '請再輸入' + remainingChars + '個字元';
          +
          +      return message;
          +    },
          +    loadingMore: function () {
          +      return '載入中…';
          +    },
          +    maximumSelected: function (args) {
          +      var message = '你只能選擇最多' + args.maximum + '項';
          +
          +      return message;
          +    },
          +    noResults: function () {
          +      return '沒有找到相符的項目';
          +    },
          +    searching: function () {
          +      return '搜尋中…';
          +    }
          +  };
          +});
          diff --git a/public/theme/select2/src/js/select2/keys.js b/public/theme/select2/src/js/select2/keys.js
          new file mode 100644
          index 0000000..f449ba4
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/keys.js
          @@ -0,0 +1,25 @@
          +define([
          +
          +], function () {
          +  var KEYS = {
          +    BACKSPACE: 8,
          +    TAB: 9,
          +    ENTER: 13,
          +    SHIFT: 16,
          +    CTRL: 17,
          +    ALT: 18,
          +    ESC: 27,
          +    SPACE: 32,
          +    PAGE_UP: 33,
          +    PAGE_DOWN: 34,
          +    END: 35,
          +    HOME: 36,
          +    LEFT: 37,
          +    UP: 38,
          +    RIGHT: 39,
          +    DOWN: 40,
          +    DELETE: 46
          +  };
          +
          +  return KEYS;
          +});
          diff --git a/public/theme/select2/src/js/select2/options.js b/public/theme/select2/src/js/select2/options.js
          new file mode 100644
          index 0000000..3e48dee
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/options.js
          @@ -0,0 +1,122 @@
          +define([
          +  'require',
          +  'jquery',
          +  './defaults',
          +  './utils'
          +], function (require, $, Defaults, Utils) {
          +  function Options (options, $element) {
          +    this.options = options;
          +
          +    if ($element != null) {
          +      this.fromElement($element);
          +    }
          +
          +    this.options = Defaults.apply(this.options);
          +
          +    if ($element && $element.is('input')) {
          +      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
          +
          +      this.options.dataAdapter = Utils.Decorate(
          +        this.options.dataAdapter,
          +        InputCompat
          +      );
          +    }
          +  }
          +
          +  Options.prototype.fromElement = function ($e) {
          +    var excludedData = ['select2'];
          +
          +    if (this.options.multiple == null) {
          +      this.options.multiple = $e.prop('multiple');
          +    }
          +
          +    if (this.options.disabled == null) {
          +      this.options.disabled = $e.prop('disabled');
          +    }
          +
          +    if (this.options.language == null) {
          +      if ($e.prop('lang')) {
          +        this.options.language = $e.prop('lang').toLowerCase();
          +      } else if ($e.closest('[lang]').prop('lang')) {
          +        this.options.language = $e.closest('[lang]').prop('lang');
          +      }
          +    }
          +
          +    if (this.options.dir == null) {
          +      if ($e.prop('dir')) {
          +        this.options.dir = $e.prop('dir');
          +      } else if ($e.closest('[dir]').prop('dir')) {
          +        this.options.dir = $e.closest('[dir]').prop('dir');
          +      } else {
          +        this.options.dir = 'ltr';
          +      }
          +    }
          +
          +    $e.prop('disabled', this.options.disabled);
          +    $e.prop('multiple', this.options.multiple);
          +
          +    if ($e.data('select2Tags')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-select2-tags` attribute has been changed to ' +
          +          'use the `data-data` and `data-tags="true"` attributes and will be ' +
          +          'removed in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.data('data', $e.data('select2Tags'));
          +      $e.data('tags', true);
          +    }
          +
          +    if ($e.data('ajaxUrl')) {
          +      if (this.options.debug && window.console && console.warn) {
          +        console.warn(
          +          'Select2: The `data-ajax-url` attribute has been changed to ' +
          +          '`data-ajax--url` and support for the old attribute will be removed' +
          +          ' in future versions of Select2.'
          +        );
          +      }
          +
          +      $e.attr('ajax--url', $e.data('ajaxUrl'));
          +      $e.data('ajax--url', $e.data('ajaxUrl'));
          +    }
          +
          +    var dataset = {};
          +
          +    // Prefer the element's `dataset` attribute if it exists
          +    // jQuery 1.x does not correctly handle data attributes with multiple dashes
          +    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
          +      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
          +    } else {
          +      dataset = $e.data();
          +    }
          +
          +    var data = $.extend(true, {}, dataset);
          +
          +    data = Utils._convertData(data);
          +
          +    for (var key in data) {
          +      if ($.inArray(key, excludedData) > -1) {
          +        continue;
          +      }
          +
          +      if ($.isPlainObject(this.options[key])) {
          +        $.extend(this.options[key], data[key]);
          +      } else {
          +        this.options[key] = data[key];
          +      }
          +    }
          +
          +    return this;
          +  };
          +
          +  Options.prototype.get = function (key) {
          +    return this.options[key];
          +  };
          +
          +  Options.prototype.set = function (key, val) {
          +    this.options[key] = val;
          +  };
          +
          +  return Options;
          +});
          diff --git a/public/theme/select2/src/js/select2/results.js b/public/theme/select2/src/js/select2/results.js
          new file mode 100644
          index 0000000..a16b65f
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/results.js
          @@ -0,0 +1,523 @@
          +define([
          +  'jquery',
          +  './utils'
          +], function ($, Utils) {
          +  function Results ($element, options, dataAdapter) {
          +    this.$element = $element;
          +    this.data = dataAdapter;
          +    this.options = options;
          +
          +    Results.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(Results, Utils.Observable);
          +
          +  Results.prototype.render = function () {
          +    var $results = $(
          +      '<ul class="select2-results__options" role="tree"></ul>'
          +    );
          +
          +    if (this.options.get('multiple')) {
          +      $results.attr('aria-multiselectable', 'true');
          +    }
          +
          +    this.$results = $results;
          +
          +    return $results;
          +  };
          +
          +  Results.prototype.clear = function () {
          +    this.$results.empty();
          +  };
          +
          +  Results.prototype.displayMessage = function (params) {
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    this.clear();
          +    this.hideLoading();
          +
          +    var $message = $(
          +      '<li role="treeitem" aria-live="assertive"' +
          +      ' class="select2-results__option"></li>'
          +    );
          +
          +    var message = this.options.get('translations').get(params.message);
          +
          +    $message.append(
          +      escapeMarkup(
          +        message(params.args)
          +      )
          +    );
          +
          +    $message[0].className += ' select2-results__message';
          +
          +    this.$results.append($message);
          +  };
          +
          +  Results.prototype.hideMessages = function () {
          +    this.$results.find('.select2-results__message').remove();
          +  };
          +
          +  Results.prototype.append = function (data) {
          +    this.hideLoading();
          +
          +    var $options = [];
          +
          +    if (data.results == null || data.results.length === 0) {
          +      if (this.$results.children().length === 0) {
          +        this.trigger('results:message', {
          +          message: 'noResults'
          +        });
          +      }
          +
          +      return;
          +    }
          +
          +    data.results = this.sort(data.results);
          +
          +    for (var d = 0; d < data.results.length; d++) {
          +      var item = data.results[d];
          +
          +      var $option = this.option(item);
          +
          +      $options.push($option);
          +    }
          +
          +    this.$results.append($options);
          +  };
          +
          +  Results.prototype.position = function ($results, $dropdown) {
          +    var $resultsContainer = $dropdown.find('.select2-results');
          +    $resultsContainer.append($results);
          +  };
          +
          +  Results.prototype.sort = function (data) {
          +    var sorter = this.options.get('sorter');
          +
          +    return sorter(data);
          +  };
          +
          +  Results.prototype.highlightFirstItem = function () {
          +    var $options = this.$results
          +      .find('.select2-results__option[aria-selected]');
          +
          +    var $selected = $options.filter('[aria-selected=true]');
          +
          +    // Check if there are any selected options
          +    if ($selected.length > 0) {
          +      // If there are selected options, highlight the first
          +      $selected.first().trigger('mouseenter');
          +    } else {
          +      // If there are no selected options, highlight the first option
          +      // in the dropdown
          +      $options.first().trigger('mouseenter');
          +    }
          +
          +    this.ensureHighlightVisible();
          +  };
          +
          +  Results.prototype.setClasses = function () {
          +    var self = this;
          +
          +    this.data.current(function (selected) {
          +      var selectedIds = $.map(selected, function (s) {
          +        return s.id.toString();
          +      });
          +
          +      var $options = self.$results
          +        .find('.select2-results__option[aria-selected]');
          +
          +      $options.each(function () {
          +        var $option = $(this);
          +
          +        var item = $.data(this, 'data');
          +
          +        // id needs to be converted to a string when comparing
          +        var id = '' + item.id;
          +
          +        if ((item.element != null && item.element.selected) ||
          +            (item.element == null && $.inArray(id, selectedIds) > -1)) {
          +          $option.attr('aria-selected', 'true');
          +        } else {
          +          $option.attr('aria-selected', 'false');
          +        }
          +      });
          +
          +    });
          +  };
          +
          +  Results.prototype.showLoading = function (params) {
          +    this.hideLoading();
          +
          +    var loadingMore = this.options.get('translations').get('searching');
          +
          +    var loading = {
          +      disabled: true,
          +      loading: true,
          +      text: loadingMore(params)
          +    };
          +    var $loading = this.option(loading);
          +    $loading.className += ' loading-results';
          +
          +    this.$results.prepend($loading);
          +  };
          +
          +  Results.prototype.hideLoading = function () {
          +    this.$results.find('.loading-results').remove();
          +  };
          +
          +  Results.prototype.option = function (data) {
          +    var option = document.createElement('li');
          +    option.className = 'select2-results__option';
          +
          +    var attrs = {
          +      'role': 'treeitem',
          +      'aria-selected': 'false'
          +    };
          +
          +    if (data.disabled) {
          +      delete attrs['aria-selected'];
          +      attrs['aria-disabled'] = 'true';
          +    }
          +
          +    if (data.id == null) {
          +      delete attrs['aria-selected'];
          +    }
          +
          +    if (data._resultId != null) {
          +      option.id = data._resultId;
          +    }
          +
          +    if (data.title) {
          +      option.title = data.title;
          +    }
          +
          +    if (data.children) {
          +      attrs.role = 'group';
          +      attrs['aria-label'] = data.text;
          +      delete attrs['aria-selected'];
          +    }
          +
          +    for (var attr in attrs) {
          +      var val = attrs[attr];
          +
          +      option.setAttribute(attr, val);
          +    }
          +
          +    if (data.children) {
          +      var $option = $(option);
          +
          +      var label = document.createElement('strong');
          +      label.className = 'select2-results__group';
          +
          +      var $label = $(label);
          +      this.template(data, label);
          +
          +      var $children = [];
          +
          +      for (var c = 0; c < data.children.length; c++) {
          +        var child = data.children[c];
          +
          +        var $child = this.option(child);
          +
          +        $children.push($child);
          +      }
          +
          +      var $childrenContainer = $('<ul></ul>', {
          +        'class': 'select2-results__options select2-results__options--nested'
          +      });
          +
          +      $childrenContainer.append($children);
          +
          +      $option.append(label);
          +      $option.append($childrenContainer);
          +    } else {
          +      this.template(data, option);
          +    }
          +
          +    $.data(option, 'data', data);
          +
          +    return option;
          +  };
          +
          +  Results.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-results';
          +
          +    this.$results.attr('id', id);
          +
          +    container.on('results:all', function (params) {
          +      self.clear();
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +        self.highlightFirstItem();
          +      }
          +    });
          +
          +    container.on('results:append', function (params) {
          +      self.append(params.data);
          +
          +      if (container.isOpen()) {
          +        self.setClasses();
          +      }
          +    });
          +
          +    container.on('query', function (params) {
          +      self.hideMessages();
          +      self.showLoading(params);
          +    });
          +
          +    container.on('select', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('unselect', function () {
          +      if (!container.isOpen()) {
          +        return;
          +      }
          +
          +      self.setClasses();
          +      self.highlightFirstItem();
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expended="true"
          +      self.$results.attr('aria-expanded', 'true');
          +      self.$results.attr('aria-hidden', 'false');
          +
          +      self.setClasses();
          +      self.ensureHighlightVisible();
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expended="false"
          +      self.$results.attr('aria-expanded', 'false');
          +      self.$results.attr('aria-hidden', 'true');
          +      self.$results.removeAttr('aria-activedescendant');
          +    });
          +
          +    container.on('results:toggle', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      $highlighted.trigger('mouseup');
          +    });
          +
          +    container.on('results:select', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      if ($highlighted.length === 0) {
          +        return;
          +      }
          +
          +      var data = $highlighted.data('data');
          +
          +      if ($highlighted.attr('aria-selected') == 'true') {
          +        self.trigger('close', {});
          +      } else {
          +        self.trigger('select', {
          +          data: data
          +        });
          +      }
          +    });
          +
          +    container.on('results:previous', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      // If we are already at te top, don't move further
          +      if (currentIndex === 0) {
          +        return;
          +      }
          +
          +      var nextIndex = currentIndex - 1;
          +
          +      // If none are highlighted, highlight the first
          +      if ($highlighted.length === 0) {
          +        nextIndex = 0;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top;
          +      var nextTop = $next.offset().top;
          +      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextTop - currentOffset < 0) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:next', function () {
          +      var $highlighted = self.getHighlightedResults();
          +
          +      var $options = self.$results.find('[aria-selected]');
          +
          +      var currentIndex = $options.index($highlighted);
          +
          +      var nextIndex = currentIndex + 1;
          +
          +      // If we are at the last option, stay there
          +      if (nextIndex >= $options.length) {
          +        return;
          +      }
          +
          +      var $next = $options.eq(nextIndex);
          +
          +      $next.trigger('mouseenter');
          +
          +      var currentOffset = self.$results.offset().top +
          +        self.$results.outerHeight(false);
          +      var nextBottom = $next.offset().top + $next.outerHeight(false);
          +      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
          +
          +      if (nextIndex === 0) {
          +        self.$results.scrollTop(0);
          +      } else if (nextBottom > currentOffset) {
          +        self.$results.scrollTop(nextOffset);
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      params.element.addClass('select2-results__option--highlighted');
          +    });
          +
          +    container.on('results:message', function (params) {
          +      self.displayMessage(params);
          +    });
          +
          +    if ($.fn.mousewheel) {
          +      this.$results.on('mousewheel', function (e) {
          +        var top = self.$results.scrollTop();
          +
          +        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
          +
          +        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
          +        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
          +
          +        if (isAtTop) {
          +          self.$results.scrollTop(0);
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        } else if (isAtBottom) {
          +          self.$results.scrollTop(
          +            self.$results.get(0).scrollHeight - self.$results.height()
          +          );
          +
          +          e.preventDefault();
          +          e.stopPropagation();
          +        }
          +      });
          +    }
          +
          +    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var $this = $(this);
          +
          +      var data = $this.data('data');
          +
          +      if ($this.attr('aria-selected') === 'true') {
          +        if (self.options.get('multiple')) {
          +          self.trigger('unselect', {
          +            originalEvent: evt,
          +            data: data
          +          });
          +        } else {
          +          self.trigger('close', {});
          +        }
          +
          +        return;
          +      }
          +
          +      self.trigger('select', {
          +        originalEvent: evt,
          +        data: data
          +      });
          +    });
          +
          +    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
          +      function (evt) {
          +      var data = $(this).data('data');
          +
          +      self.getHighlightedResults()
          +          .removeClass('select2-results__option--highlighted');
          +
          +      self.trigger('results:focus', {
          +        data: data,
          +        element: $(this)
          +      });
          +    });
          +  };
          +
          +  Results.prototype.getHighlightedResults = function () {
          +    var $highlighted = this.$results
          +    .find('.select2-results__option--highlighted');
          +
          +    return $highlighted;
          +  };
          +
          +  Results.prototype.destroy = function () {
          +    this.$results.remove();
          +  };
          +
          +  Results.prototype.ensureHighlightVisible = function () {
          +    var $highlighted = this.getHighlightedResults();
          +
          +    if ($highlighted.length === 0) {
          +      return;
          +    }
          +
          +    var $options = this.$results.find('[aria-selected]');
          +
          +    var currentIndex = $options.index($highlighted);
          +
          +    var currentOffset = this.$results.offset().top;
          +    var nextTop = $highlighted.offset().top;
          +    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
          +
          +    var offsetDelta = nextTop - currentOffset;
          +    nextOffset -= $highlighted.outerHeight(false) * 2;
          +
          +    if (currentIndex <= 2) {
          +      this.$results.scrollTop(0);
          +    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
          +      this.$results.scrollTop(nextOffset);
          +    }
          +  };
          +
          +  Results.prototype.template = function (result, container) {
          +    var template = this.options.get('templateResult');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    var content = template(result, container);
          +
          +    if (content == null) {
          +      container.style.display = 'none';
          +    } else if (typeof content === 'string') {
          +      container.innerHTML = escapeMarkup(content);
          +    } else {
          +      $(container).append(content);
          +    }
          +  };
          +
          +  return Results;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/allowClear.js b/public/theme/select2/src/js/select2/selection/allowClear.js
          new file mode 100644
          index 0000000..d350206
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/allowClear.js
          @@ -0,0 +1,97 @@
          +define([
          +  'jquery',
          +  '../keys'
          +], function ($, KEYS) {
          +  function AllowClear () { }
          +
          +  AllowClear.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    if (this.placeholder == null) {
          +      if (this.options.get('debug') && window.console && console.error) {
          +        console.error(
          +          'Select2: The `allowClear` option should be used in combination ' +
          +          'with the `placeholder` option.'
          +        );
          +      }
          +    }
          +
          +    this.$selection.on('mousedown', '.select2-selection__clear',
          +      function (evt) {
          +        self._handleClear(evt);
          +    });
          +
          +    container.on('keypress', function (evt) {
          +      self._handleKeyboardClear(evt, container);
          +    });
          +  };
          +
          +  AllowClear.prototype._handleClear = function (_, evt) {
          +    // Ignore the event if it is disabled
          +    if (this.options.get('disabled')) {
          +      return;
          +    }
          +
          +    var $clear = this.$selection.find('.select2-selection__clear');
          +
          +    // Ignore the event if nothing has been selected
          +    if ($clear.length === 0) {
          +      return;
          +    }
          +
          +    evt.stopPropagation();
          +
          +    var data = $clear.data('data');
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var unselectData = {
          +        data: data[d]
          +      };
          +
          +      // Trigger the `unselect` event, so people can prevent it from being
          +      // cleared.
          +      this.trigger('unselect', unselectData);
          +
          +      // If the event was prevented, don't clear it out.
          +      if (unselectData.prevented) {
          +        return;
          +      }
          +    }
          +
          +    this.$element.val(this.placeholder.id).trigger('change');
          +
          +    this.trigger('toggle', {});
          +  };
          +
          +  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
          +    if (container.isOpen()) {
          +      return;
          +    }
          +
          +    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
          +      this._handleClear(evt);
          +    }
          +  };
          +
          +  AllowClear.prototype.update = function (decorated, data) {
          +    decorated.call(this, data);
          +
          +    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
          +        data.length === 0) {
          +      return;
          +    }
          +
          +    var $remove = $(
          +      '<span class="select2-selection__clear">' +
          +        '&times;' +
          +      '</span>'
          +    );
          +    $remove.data('data', data);
          +
          +    this.$selection.find('.select2-selection__rendered').prepend($remove);
          +  };
          +
          +  return AllowClear;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/base.js b/public/theme/select2/src/js/select2/selection/base.js
          new file mode 100644
          index 0000000..cd3aafd
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/base.js
          @@ -0,0 +1,158 @@
          +define([
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function BaseSelection ($element, options) {
          +    this.$element = $element;
          +    this.options = options;
          +
          +    BaseSelection.__super__.constructor.call(this);
          +  }
          +
          +  Utils.Extend(BaseSelection, Utils.Observable);
          +
          +  BaseSelection.prototype.render = function () {
          +    var $selection = $(
          +      '<span class="select2-selection" role="combobox" ' +
          +      ' aria-haspopup="true" aria-expanded="false">' +
          +      '</span>'
          +    );
          +
          +    this._tabindex = 0;
          +
          +    if (this.$element.data('old-tabindex') != null) {
          +      this._tabindex = this.$element.data('old-tabindex');
          +    } else if (this.$element.attr('tabindex') != null) {
          +      this._tabindex = this.$element.attr('tabindex');
          +    }
          +
          +    $selection.attr('title', this.$element.attr('title'));
          +    $selection.attr('tabindex', this._tabindex);
          +
          +    this.$selection = $selection;
          +
          +    return $selection;
          +  };
          +
          +  BaseSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    var id = container.id + '-container';
          +    var resultsId = container.id + '-results';
          +
          +    this.container = container;
          +
          +    this.$selection.on('focus', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', function (evt) {
          +      self.trigger('keypress', evt);
          +
          +      if (evt.which === KEYS.SPACE) {
          +        evt.preventDefault();
          +      }
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$selection.attr('aria-activedescendant', params.data._resultId);
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +
          +    container.on('open', function () {
          +      // When the dropdown is open, aria-expanded="true"
          +      self.$selection.attr('aria-expanded', 'true');
          +      self.$selection.attr('aria-owns', resultsId);
          +
          +      self._attachCloseHandler(container);
          +    });
          +
          +    container.on('close', function () {
          +      // When the dropdown is closed, aria-expanded="false"
          +      self.$selection.attr('aria-expanded', 'false');
          +      self.$selection.removeAttr('aria-activedescendant');
          +      self.$selection.removeAttr('aria-owns');
          +
          +      self.$selection.focus();
          +
          +      self._detachCloseHandler(container);
          +    });
          +
          +    container.on('enable', function () {
          +      self.$selection.attr('tabindex', self._tabindex);
          +    });
          +
          +    container.on('disable', function () {
          +      self.$selection.attr('tabindex', '-1');
          +    });
          +  };
          +
          +  BaseSelection.prototype._handleBlur = function (evt) {
          +    var self = this;
          +
          +    // This needs to be delayed as the active element is the body when the tab
          +    // key is pressed, possibly along with others.
          +    window.setTimeout(function () {
          +      // Don't trigger `blur` if the focus is still in the selection
          +      if (
          +        (document.activeElement == self.$selection[0]) ||
          +        ($.contains(self.$selection[0], document.activeElement))
          +      ) {
          +        return;
          +      }
          +
          +      self.trigger('blur', evt);
          +    }, 1);
          +  };
          +
          +  BaseSelection.prototype._attachCloseHandler = function (container) {
          +    var self = this;
          +
          +    $(document.body).on('mousedown.select2.' + container.id, function (e) {
          +      var $target = $(e.target);
          +
          +      var $select = $target.closest('.select2');
          +
          +      var $all = $('.select2.select2-container--open');
          +
          +      $all.each(function () {
          +        var $this = $(this);
          +
          +        if (this == $select[0]) {
          +          return;
          +        }
          +
          +        var $element = $this.data('element');
          +
          +        $element.select2('close');
          +      });
          +    });
          +  };
          +
          +  BaseSelection.prototype._detachCloseHandler = function (container) {
          +    $(document.body).off('mousedown.select2.' + container.id);
          +  };
          +
          +  BaseSelection.prototype.position = function ($selection, $container) {
          +    var $selectionContainer = $container.find('.selection');
          +    $selectionContainer.append($selection);
          +  };
          +
          +  BaseSelection.prototype.destroy = function () {
          +    this._detachCloseHandler(this.container);
          +  };
          +
          +  BaseSelection.prototype.update = function (data) {
          +    throw new Error('The `update` method must be defined in child classes.');
          +  };
          +
          +  return BaseSelection;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/clickMask.js b/public/theme/select2/src/js/select2/selection/clickMask.js
          new file mode 100644
          index 0000000..2b4ac30
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/clickMask.js
          @@ -0,0 +1,29 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function ClickMask () { }
          +
          +  ClickMask.prototype.bind = function (decorate, $container, container) {
          +    var self = this;
          +
          +    decorate.call(this, $container, container);
          +
          +    this.$mask = $(
          +      '<div class="select2-close-mask"></div>'
          +    );
          +
          +    this.$mask.on('mousedown touchstart click', function () {
          +      self.trigger('close', {});
          +    });
          +  };
          +
          +  ClickMask.prototype._attachCloseHandler = function (decorate, container) {
          +    $(document.body).append(this.$mask);
          +  };
          +
          +  ClickMask.prototype._detachCloseHandler = function (deocrate, container) {
          +    this.$mask.detach();
          +  };
          +
          +  return ClickMask;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/eventRelay.js b/public/theme/select2/src/js/select2/selection/eventRelay.js
          new file mode 100644
          index 0000000..a91e9c5
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/eventRelay.js
          @@ -0,0 +1,45 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  function EventRelay () { }
          +
          +  EventRelay.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +    var relayEvents = [
          +      'open', 'opening',
          +      'close', 'closing',
          +      'select', 'selecting',
          +      'unselect', 'unselecting'
          +    ];
          +
          +    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('*', function (name, params) {
          +      // Ignore events that should not be relayed
          +      if ($.inArray(name, relayEvents) === -1) {
          +        return;
          +      }
          +
          +      // The parameters should always be an object
          +      params = params || {};
          +
          +      // Generate the jQuery event for the Select2 event
          +      var evt = $.Event('select2:' + name, {
          +        params: params
          +      });
          +
          +      self.$element.trigger(evt);
          +
          +      // Only handle preventable events if it was one
          +      if ($.inArray(name, preventableEvents) === -1) {
          +        return;
          +      }
          +
          +      params.prevented = evt.isDefaultPrevented();
          +    });
          +  };
          +
          +  return EventRelay;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/multiple.js b/public/theme/select2/src/js/select2/selection/multiple.js
          new file mode 100644
          index 0000000..ae0f7cc
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/multiple.js
          @@ -0,0 +1,109 @@
          +define([
          +  'jquery',
          +  './base',
          +  '../utils'
          +], function ($, BaseSelection, Utils) {
          +  function MultipleSelection ($element, options) {
          +    MultipleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(MultipleSelection, BaseSelection);
          +
          +  MultipleSelection.prototype.render = function () {
          +    var $selection = MultipleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--multiple');
          +
          +    $selection.html(
          +      '<ul class="select2-selection__rendered"></ul>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  MultipleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    MultipleSelection.__super__.bind.apply(this, arguments);
          +
          +    this.$selection.on('click', function (evt) {
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on(
          +      'click',
          +      '.select2-selection__choice__remove',
          +      function (evt) {
          +        // Ignore the event if it is disabled
          +        if (self.options.get('disabled')) {
          +          return;
          +        }
          +
          +        var $remove = $(this);
          +        var $selection = $remove.parent();
          +
          +        var data = $selection.data('data');
          +
          +        self.trigger('unselect', {
          +          originalEvent: evt,
          +          data: data
          +        });
          +      }
          +    );
          +  };
          +
          +  MultipleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  MultipleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  MultipleSelection.prototype.selectionContainer = function () {
          +    var $container = $(
          +      '<li class="select2-selection__choice">' +
          +        '<span class="select2-selection__choice__remove" role="presentation">' +
          +          '&times;' +
          +        '</span>' +
          +      '</li>'
          +    );
          +
          +    return $container;
          +  };
          +
          +  MultipleSelection.prototype.update = function (data) {
          +    this.clear();
          +
          +    if (data.length === 0) {
          +      return;
          +    }
          +
          +    var $selections = [];
          +
          +    for (var d = 0; d < data.length; d++) {
          +      var selection = data[d];
          +
          +      var $selection = this.selectionContainer();
          +      var formatted = this.display(selection, $selection);
          +
          +      $selection.append(formatted);
          +      $selection.prop('title', selection.title || selection.text);
          +
          +      $selection.data('data', selection);
          +
          +      $selections.push($selection);
          +    }
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +
          +    Utils.appendMany($rendered, $selections);
          +  };
          +
          +  return MultipleSelection;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/placeholder.js b/public/theme/select2/src/js/select2/selection/placeholder.js
          new file mode 100644
          index 0000000..87fbeda
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/placeholder.js
          @@ -0,0 +1,49 @@
          +define([
          +  '../utils'
          +], function (Utils) {
          +  function Placeholder (decorated, $element, options) {
          +    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
          +
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
          +    if (typeof placeholder === 'string') {
          +      placeholder = {
          +        id: '',
          +        text: placeholder
          +      };
          +    }
          +
          +    return placeholder;
          +  };
          +
          +  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
          +    var $placeholder = this.selectionContainer();
          +
          +    $placeholder.html(this.display(placeholder));
          +    $placeholder.addClass('select2-selection__placeholder')
          +                .removeClass('select2-selection__choice');
          +
          +    return $placeholder;
          +  };
          +
          +  Placeholder.prototype.update = function (decorated, data) {
          +    var singlePlaceholder = (
          +      data.length == 1 && data[0].id != this.placeholder.id
          +    );
          +    var multipleSelections = data.length > 1;
          +
          +    if (multipleSelections || singlePlaceholder) {
          +      return decorated.call(this, data);
          +    }
          +
          +    this.clear();
          +
          +    var $placeholder = this.createPlaceholder(this.placeholder);
          +
          +    this.$selection.find('.select2-selection__rendered').append($placeholder);
          +  };
          +
          +  return Placeholder;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/search.js b/public/theme/select2/src/js/select2/selection/search.js
          new file mode 100644
          index 0000000..77c4edc
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/search.js
          @@ -0,0 +1,222 @@
          +define([
          +  'jquery',
          +  '../utils',
          +  '../keys'
          +], function ($, Utils, KEYS) {
          +  function Search (decorated, $element, options) {
          +    decorated.call(this, $element, options);
          +  }
          +
          +  Search.prototype.render = function (decorated) {
          +    var $search = $(
          +      '<li class="select2-search select2-search--inline">' +
          +        '<input class="select2-search__field" type="search" tabindex="-1"' +
          +        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
          +        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
          +      '</li>'
          +    );
          +
          +    this.$searchContainer = $search;
          +    this.$search = $search.find('input');
          +
          +    var $rendered = decorated.call(this);
          +
          +    this._transferTabIndex();
          +
          +    return $rendered;
          +  };
          +
          +  Search.prototype.bind = function (decorated, container, $container) {
          +    var self = this;
          +
          +    decorated.call(this, container, $container);
          +
          +    container.on('open', function () {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('close', function () {
          +      self.$search.val('');
          +      self.$search.removeAttr('aria-activedescendant');
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('enable', function () {
          +      self.$search.prop('disabled', false);
          +
          +      self._transferTabIndex();
          +    });
          +
          +    container.on('disable', function () {
          +      self.$search.prop('disabled', true);
          +    });
          +
          +    container.on('focus', function (evt) {
          +      self.$search.trigger('focus');
          +    });
          +
          +    container.on('results:focus', function (params) {
          +      self.$search.attr('aria-activedescendant', params.id);
          +    });
          +
          +    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
          +      self.trigger('focus', evt);
          +    });
          +
          +    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
          +      self._handleBlur(evt);
          +    });
          +
          +    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
          +      evt.stopPropagation();
          +
          +      self.trigger('keypress', evt);
          +
          +      self._keyUpPrevented = evt.isDefaultPrevented();
          +
          +      var key = evt.which;
          +
          +      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
          +        var $previousChoice = self.$searchContainer
          +          .prev('.select2-selection__choice');
          +
          +        if ($previousChoice.length > 0) {
          +          var item = $previousChoice.data('data');
          +
          +          self.searchRemoveChoice(item);
          +
          +          evt.preventDefault();
          +        }
          +      }
          +    });
          +
          +    // Try to detect the IE version should the `documentMode` property that
          +    // is stored on the document. This is only implemented in IE and is
          +    // slightly cleaner than doing a user agent check.
          +    // This property is not available in Edge, but Edge also doesn't have
          +    // this bug.
          +    var msie = document.documentMode;
          +    var disableInputEvents = msie && msie <= 11;
          +
          +    // Workaround for browsers which do not support the `input` event
          +    // This will prevent double-triggering of events for browsers which support
          +    // both the `keyup` and `input` events.
          +    this.$selection.on(
          +      'input.searchcheck',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents) {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        // Unbind the duplicated `keyup` event
          +        self.$selection.off('keyup.search');
          +      }
          +    );
          +
          +    this.$selection.on(
          +      'keyup.search input.search',
          +      '.select2-search--inline',
          +      function (evt) {
          +        // IE will trigger the `input` event when a placeholder is used on a
          +        // search box. To get around this issue, we are forced to ignore all
          +        // `input` events in IE and keep using `keyup`.
          +        if (disableInputEvents && evt.type === 'input') {
          +          self.$selection.off('input.search input.searchcheck');
          +          return;
          +        }
          +
          +        var key = evt.which;
          +
          +        // We can freely ignore events from modifier keys
          +        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
          +          return;
          +        }
          +
          +        // Tabbing will be handled during the `keydown` phase
          +        if (key == KEYS.TAB) {
          +          return;
          +        }
          +
          +        self.handleSearch(evt);
          +      }
          +    );
          +  };
          +
          +  /**
          +   * This method will transfer the tabindex attribute from the rendered
          +   * selection to the search box. This allows for the search box to be used as
          +   * the primary focus instead of the selection container.
          +   *
          +   * @private
          +   */
          +  Search.prototype._transferTabIndex = function (decorated) {
          +    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
          +    this.$selection.attr('tabindex', '-1');
          +  };
          +
          +  Search.prototype.createPlaceholder = function (decorated, placeholder) {
          +    this.$search.attr('placeholder', placeholder.text);
          +  };
          +
          +  Search.prototype.update = function (decorated, data) {
          +    var searchHadFocus = this.$search[0] == document.activeElement;
          +
          +    this.$search.attr('placeholder', '');
          +
          +    decorated.call(this, data);
          +
          +    this.$selection.find('.select2-selection__rendered')
          +                   .append(this.$searchContainer);
          +
          +    this.resizeSearch();
          +    if (searchHadFocus) {
          +      this.$search.focus();
          +    }
          +  };
          +
          +  Search.prototype.handleSearch = function () {
          +    this.resizeSearch();
          +
          +    if (!this._keyUpPrevented) {
          +      var input = this.$search.val();
          +
          +      this.trigger('query', {
          +        term: input
          +      });
          +    }
          +
          +    this._keyUpPrevented = false;
          +  };
          +
          +  Search.prototype.searchRemoveChoice = function (decorated, item) {
          +    this.trigger('unselect', {
          +      data: item
          +    });
          +
          +    this.$search.val(item.text);
          +    this.handleSearch();
          +  };
          +
          +  Search.prototype.resizeSearch = function () {
          +    this.$search.css('width', '25px');
          +
          +    var width = '';
          +
          +    if (this.$search.attr('placeholder') !== '') {
          +      width = this.$selection.find('.select2-selection__rendered').innerWidth();
          +    } else {
          +      var minimumWidth = this.$search.val().length + 1;
          +
          +      width = (minimumWidth * 0.75) + 'em';
          +    }
          +
          +    this.$search.css('width', width);
          +  };
          +
          +  return Search;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/single.js b/public/theme/select2/src/js/select2/selection/single.js
          new file mode 100644
          index 0000000..89c21db
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/single.js
          @@ -0,0 +1,99 @@
          +define([
          +  'jquery',
          +  './base',
          +  '../utils',
          +  '../keys'
          +], function ($, BaseSelection, Utils, KEYS) {
          +  function SingleSelection () {
          +    SingleSelection.__super__.constructor.apply(this, arguments);
          +  }
          +
          +  Utils.Extend(SingleSelection, BaseSelection);
          +
          +  SingleSelection.prototype.render = function () {
          +    var $selection = SingleSelection.__super__.render.call(this);
          +
          +    $selection.addClass('select2-selection--single');
          +
          +    $selection.html(
          +      '<span class="select2-selection__rendered"></span>' +
          +      '<span class="select2-selection__arrow" role="presentation">' +
          +        '<b role="presentation"></b>' +
          +      '</span>'
          +    );
          +
          +    return $selection;
          +  };
          +
          +  SingleSelection.prototype.bind = function (container, $container) {
          +    var self = this;
          +
          +    SingleSelection.__super__.bind.apply(this, arguments);
          +
          +    var id = container.id + '-container';
          +
          +    this.$selection.find('.select2-selection__rendered').attr('id', id);
          +    this.$selection.attr('aria-labelledby', id);
          +
          +    this.$selection.on('mousedown', function (evt) {
          +      // Only respond to left clicks
          +      if (evt.which !== 1) {
          +        return;
          +      }
          +
          +      self.trigger('toggle', {
          +        originalEvent: evt
          +      });
          +    });
          +
          +    this.$selection.on('focus', function (evt) {
          +      // User focuses on the container
          +    });
          +
          +    this.$selection.on('blur', function (evt) {
          +      // User exits the container
          +    });
          +
          +    container.on('focus', function (evt) {
          +      if (!container.isOpen()) {
          +        self.$selection.focus();
          +      }
          +    });
          +
          +    container.on('selection:update', function (params) {
          +      self.update(params.data);
          +    });
          +  };
          +
          +  SingleSelection.prototype.clear = function () {
          +    this.$selection.find('.select2-selection__rendered').empty();
          +  };
          +
          +  SingleSelection.prototype.display = function (data, container) {
          +    var template = this.options.get('templateSelection');
          +    var escapeMarkup = this.options.get('escapeMarkup');
          +
          +    return escapeMarkup(template(data, container));
          +  };
          +
          +  SingleSelection.prototype.selectionContainer = function () {
          +    return $('<span></span>');
          +  };
          +
          +  SingleSelection.prototype.update = function (data) {
          +    if (data.length === 0) {
          +      this.clear();
          +      return;
          +    }
          +
          +    var selection = data[0];
          +
          +    var $rendered = this.$selection.find('.select2-selection__rendered');
          +    var formatted = this.display(selection, $rendered);
          +
          +    $rendered.empty().append(formatted);
          +    $rendered.prop('title', selection.title || selection.text);
          +  };
          +
          +  return SingleSelection;
          +});
          diff --git a/public/theme/select2/src/js/select2/selection/stopPropagation.js b/public/theme/select2/src/js/select2/selection/stopPropagation.js
          new file mode 100644
          index 0000000..382f1e7
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/selection/stopPropagation.js
          @@ -0,0 +1,38 @@
          +define([
          +
          +], function () {
          +  function StopPropagation () { }
          +
          +  StopPropagation.prototype.bind = function (decorated, container, $container) {
          +    decorated.call(this, container, $container);
          +
          +    var stoppedEvents = [
          +      'blur',
          +      'change',
          +      'click',
          +      'dblclick',
          +      'focus',
          +      'focusin',
          +      'focusout',
          +      'input',
          +      'keydown',
          +      'keyup',
          +      'keypress',
          +      'mousedown',
          +      'mouseenter',
          +      'mouseleave',
          +      'mousemove',
          +      'mouseover',
          +      'mouseup',
          +      'search',
          +      'touchend',
          +      'touchstart'
          +    ];
          +
          +    this.$selection.on(stoppedEvents.join(' '), function (evt) {
          +      evt.stopPropagation();
          +    });
          +  };
          +
          +  return StopPropagation;
          +});
          diff --git a/public/theme/select2/src/js/select2/translation.js b/public/theme/select2/src/js/select2/translation.js
          new file mode 100644
          index 0000000..5394c18
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/translation.js
          @@ -0,0 +1,36 @@
          +define([
          +  'jquery',
          +  'require'
          +], function ($, require) {
          +  function Translation (dict) {
          +    this.dict = dict || {};
          +  }
          +
          +  Translation.prototype.all = function () {
          +    return this.dict;
          +  };
          +
          +  Translation.prototype.get = function (key) {
          +    return this.dict[key];
          +  };
          +
          +  Translation.prototype.extend = function (translation) {
          +    this.dict = $.extend({}, translation.all(), this.dict);
          +  };
          +
          +  // Static functions
          +
          +  Translation._cache = {};
          +
          +  Translation.loadPath = function (path) {
          +    if (!(path in Translation._cache)) {
          +      var translations = require(path);
          +
          +      Translation._cache[path] = translations;
          +    }
          +
          +    return new Translation(Translation._cache[path]);
          +  };
          +
          +  return Translation;
          +});
          diff --git a/public/theme/select2/src/js/select2/utils.js b/public/theme/select2/src/js/select2/utils.js
          new file mode 100644
          index 0000000..d1a23d2
          --- /dev/null
          +++ b/public/theme/select2/src/js/select2/utils.js
          @@ -0,0 +1,276 @@
          +define([
          +  'jquery'
          +], function ($) {
          +  var Utils = {};
          +
          +  Utils.Extend = function (ChildClass, SuperClass) {
          +    var __hasProp = {}.hasOwnProperty;
          +
          +    function BaseConstructor () {
          +      this.constructor = ChildClass;
          +    }
          +
          +    for (var key in SuperClass) {
          +      if (__hasProp.call(SuperClass, key)) {
          +        ChildClass[key] = SuperClass[key];
          +      }
          +    }
          +
          +    BaseConstructor.prototype = SuperClass.prototype;
          +    ChildClass.prototype = new BaseConstructor();
          +    ChildClass.__super__ = SuperClass.prototype;
          +
          +    return ChildClass;
          +  };
          +
          +  function getMethods (theClass) {
          +    var proto = theClass.prototype;
          +
          +    var methods = [];
          +
          +    for (var methodName in proto) {
          +      var m = proto[methodName];
          +
          +      if (typeof m !== 'function') {
          +        continue;
          +      }
          +
          +      if (methodName === 'constructor') {
          +        continue;
          +      }
          +
          +      methods.push(methodName);
          +    }
          +
          +    return methods;
          +  }
          +
          +  Utils.Decorate = function (SuperClass, DecoratorClass) {
          +    var decoratedMethods = getMethods(DecoratorClass);
          +    var superMethods = getMethods(SuperClass);
          +
          +    function DecoratedClass () {
          +      var unshift = Array.prototype.unshift;
          +
          +      var argCount = DecoratorClass.prototype.constructor.length;
          +
          +      var calledConstructor = SuperClass.prototype.constructor;
          +
          +      if (argCount > 0) {
          +        unshift.call(arguments, SuperClass.prototype.constructor);
          +
          +        calledConstructor = DecoratorClass.prototype.constructor;
          +      }
          +
          +      calledConstructor.apply(this, arguments);
          +    }
          +
          +    DecoratorClass.displayName = SuperClass.displayName;
          +
          +    function ctr () {
          +      this.constructor = DecoratedClass;
          +    }
          +
          +    DecoratedClass.prototype = new ctr();
          +
          +    for (var m = 0; m < superMethods.length; m++) {
          +        var superMethod = superMethods[m];
          +
          +        DecoratedClass.prototype[superMethod] =
          +          SuperClass.prototype[superMethod];
          +    }
          +
          +    var calledMethod = function (methodName) {
          +      // Stub out the original method if it's not decorating an actual method
          +      var originalMethod = function () {};
          +
          +      if (methodName in DecoratedClass.prototype) {
          +        originalMethod = DecoratedClass.prototype[methodName];
          +      }
          +
          +      var decoratedMethod = DecoratorClass.prototype[methodName];
          +
          +      return function () {
          +        var unshift = Array.prototype.unshift;
          +
          +        unshift.call(arguments, originalMethod);
          +
          +        return decoratedMethod.apply(this, arguments);
          +      };
          +    };
          +
          +    for (var d = 0; d < decoratedMethods.length; d++) {
          +      var decoratedMethod = decoratedMethods[d];
          +
          +      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
          +    }
          +
          +    return DecoratedClass;
          +  };
          +
          +  var Observable = function () {
          +    this.listeners = {};
          +  };
          +
          +  Observable.prototype.on = function (event, callback) {
          +    this.listeners = this.listeners || {};
          +
          +    if (event in this.listeners) {
          +      this.listeners[event].push(callback);
          +    } else {
          +      this.listeners[event] = [callback];
          +    }
          +  };
          +
          +  Observable.prototype.trigger = function (event) {
          +    var slice = Array.prototype.slice;
          +    var params = slice.call(arguments, 1);
          +
          +    this.listeners = this.listeners || {};
          +
          +    // Params should always come in as an array
          +    if (params == null) {
          +      params = [];
          +    }
          +
          +    // If there are no arguments to the event, use a temporary object
          +    if (params.length === 0) {
          +      params.push({});
          +    }
          +
          +    // Set the `_type` of the first object to the event
          +    params[0]._type = event;
          +
          +    if (event in this.listeners) {
          +      this.invoke(this.listeners[event], slice.call(arguments, 1));
          +    }
          +
          +    if ('*' in this.listeners) {
          +      this.invoke(this.listeners['*'], arguments);
          +    }
          +  };
          +
          +  Observable.prototype.invoke = function (listeners, params) {
          +    for (var i = 0, len = listeners.length; i < len; i++) {
          +      listeners[i].apply(this, params);
          +    }
          +  };
          +
          +  Utils.Observable = Observable;
          +
          +  Utils.generateChars = function (length) {
          +    var chars = '';
          +
          +    for (var i = 0; i < length; i++) {
          +      var randomChar = Math.floor(Math.random() * 36);
          +      chars += randomChar.toString(36);
          +    }
          +
          +    return chars;
          +  };
          +
          +  Utils.bind = function (func, context) {
          +    return function () {
          +      func.apply(context, arguments);
          +    };
          +  };
          +
          +  Utils._convertData = function (data) {
          +    for (var originalKey in data) {
          +      var keys = originalKey.split('-');
          +
          +      var dataLevel = data;
          +
          +      if (keys.length === 1) {
          +        continue;
          +      }
          +
          +      for (var k = 0; k < keys.length; k++) {
          +        var key = keys[k];
          +
          +        // Lowercase the first letter
          +        // By default, dash-separated becomes camelCase
          +        key = key.substring(0, 1).toLowerCase() + key.substring(1);
          +
          +        if (!(key in dataLevel)) {
          +          dataLevel[key] = {};
          +        }
          +
          +        if (k == keys.length - 1) {
          +          dataLevel[key] = data[originalKey];
          +        }
          +
          +        dataLevel = dataLevel[key];
          +      }
          +
          +      delete data[originalKey];
          +    }
          +
          +    return data;
          +  };
          +
          +  Utils.hasScroll = function (index, el) {
          +    // Adapted from the function created by @ShadowScripter
          +    // and adapted by @BillBarry on the Stack Exchange Code Review website.
          +    // The original code can be found at
          +    // http://codereview.stackexchange.com/q/13338
          +    // and was designed to be used with the Sizzle selector engine.
          +
          +    var $el = $(el);
          +    var overflowX = el.style.overflowX;
          +    var overflowY = el.style.overflowY;
          +
          +    //Check both x and y declarations
          +    if (overflowX === overflowY &&
          +        (overflowY === 'hidden' || overflowY === 'visible')) {
          +      return false;
          +    }
          +
          +    if (overflowX === 'scroll' || overflowY === 'scroll') {
          +      return true;
          +    }
          +
          +    return ($el.innerHeight() < el.scrollHeight ||
          +      $el.innerWidth() < el.scrollWidth);
          +  };
          +
          +  Utils.escapeMarkup = function (markup) {
          +    var replaceMap = {
          +      '\\': '&#92;',
          +      '&': '&amp;',
          +      '<': '&lt;',
          +      '>': '&gt;',
          +      '"': '&quot;',
          +      '\'': '&#39;',
          +      '/': '&#47;'
          +    };
          +
          +    // Do not try to escape the markup if it's not a string
          +    if (typeof markup !== 'string') {
          +      return markup;
          +    }
          +
          +    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
          +      return replaceMap[match];
          +    });
          +  };
          +
          +  // Append an array of jQuery nodes to a given element.
          +  Utils.appendMany = function ($element, $nodes) {
          +    // jQuery 1.7.x does not support $.fn.append() with an array
          +    // Fall back to a jQuery object collection using $.fn.add()
          +    if ($.fn.jquery.substr(0, 3) === '1.7') {
          +      var $jqNodes = $();
          +
          +      $.map($nodes, function (node) {
          +        $jqNodes = $jqNodes.add(node);
          +      });
          +
          +      $nodes = $jqNodes;
          +    }
          +
          +    $element.append($nodes);
          +  };
          +
          +  return Utils;
          +});
          diff --git a/public/theme/select2/src/js/wrapper.end.js b/public/theme/select2/src/js/wrapper.end.js
          new file mode 100644
          index 0000000..4367829
          --- /dev/null
          +++ b/public/theme/select2/src/js/wrapper.end.js
          @@ -0,0 +1,12 @@
          +  // Autoload the jQuery bindings
          +  // We know that all of the modules exist above this, so we're safe
          +  var select2 = S2.require('jquery.select2');
          +
          +  // Hold the AMD module references on the jQuery function that was just loaded
          +  // This allows Select2 to use the internal loader outside of this file, such
          +  // as in the language files.
          +  jQuery.fn.select2.amd = S2;
          +
          +  // Return the Select2 instance for anyone who is importing it.
          +  return select2;
          +}));
          diff --git a/public/theme/select2/src/js/wrapper.start.js b/public/theme/select2/src/js/wrapper.start.js
          new file mode 100644
          index 0000000..76caaba
          --- /dev/null
          +++ b/public/theme/select2/src/js/wrapper.start.js
          @@ -0,0 +1,23 @@
          +/*!
          + * Select2 <%= package.version %>
          + * https://select2.github.io
          + *
          + * Released under the MIT license
          + * https://github.com/select2/select2/blob/master/LICENSE.md
          + */
          +(function (factory) {
          +  if (typeof define === 'function' && define.amd) {
          +    // AMD. Register as an anonymous module.
          +    define(['jquery'], factory);
          +  } else if (typeof exports === 'object') {
          +    // Node/CommonJS
          +    factory(require('jquery'));
          +  } else {
          +    // Browser globals
          +    factory(jQuery);
          +  }
          +}(function (jQuery) {
          +  // This is needed so we can catch the AMD loader configuration and use it
          +  // The inner file should be wrapped (by `banner.start.js`) in a function that
          +  // returns the AMD loader references.
          +  var S2 =
          diff --git a/public/theme/select2/src/scss/_dropdown.scss b/public/theme/select2/src/scss/_dropdown.scss
          new file mode 100644
          index 0000000..fb891d3
          --- /dev/null
          +++ b/public/theme/select2/src/scss/_dropdown.scss
          @@ -0,0 +1,73 @@
          +.select2-dropdown {
          +  background-color: white;
          +
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +
          +  box-sizing: border-box;
          +
          +  display: block;
          +
          +  position: absolute;
          +  left: -100000px;
          +
          +  width: 100%;
          +
          +  z-index: 1051;
          +}
          +
          +.select2-results {
          +  display: block;
          +}
          +
          +.select2-results__options {
          +  list-style: none;
          +  margin: 0;
          +  padding: 0;
          +}
          +
          +.select2-results__option {
          +  padding: 6px;
          +
          +  user-select: none;
          +  -webkit-user-select: none;
          +
          +  &[aria-selected] {
          +    cursor: pointer;
          +  }
          +}
          +
          +.select2-container--open .select2-dropdown {
          +  left: 0;
          +}
          +
          +.select2-container--open .select2-dropdown--above {
          +  border-bottom: none;
          +  border-bottom-left-radius: 0;
          +  border-bottom-right-radius: 0;
          +}
          +
          +.select2-container--open .select2-dropdown--below {
          +  border-top: none;
          +  border-top-left-radius: 0;
          +  border-top-right-radius: 0;
          +}
          +
          +.select2-search--dropdown {
          +  display: block;
          +  padding: 4px;
          +
          +  .select2-search__field {
          +    padding: 4px;
          +    width: 100%;
          +    box-sizing: border-box;
          +
          +    &::-webkit-search-cancel-button {
          +      -webkit-appearance: none;
          +    }
          +  }
          +
          +  &.select2-search--hide {
          +    display: none;
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/_multiple.scss b/public/theme/select2/src/scss/_multiple.scss
          new file mode 100644
          index 0000000..981d208
          --- /dev/null
          +++ b/public/theme/select2/src/scss/_multiple.scss
          @@ -0,0 +1,35 @@
          +.select2-selection--multiple {
          +  box-sizing: border-box;
          +
          +  cursor: pointer;
          +  display: block;
          +
          +  min-height: 32px;
          +
          +  user-select: none;
          +  -webkit-user-select: none;
          +
          +  .select2-selection__rendered {
          +    display: inline-block;
          +    overflow: hidden;
          +    padding-left: 8px;
          +    text-overflow: ellipsis;
          +    white-space: nowrap;
          +  }
          +}
          +
          +.select2-search--inline {
          +  float: left;
          +
          +  .select2-search__field {
          +    box-sizing: border-box;
          +    border: none;
          +    font-size: 100%;
          +    margin-top: 5px;
          +    padding: 0;
          +
          +    &::-webkit-search-cancel-button {
          +      -webkit-appearance: none;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/_single.scss b/public/theme/select2/src/scss/_single.scss
          new file mode 100644
          index 0000000..6c3418e
          --- /dev/null
          +++ b/public/theme/select2/src/scss/_single.scss
          @@ -0,0 +1,34 @@
          +.select2-selection--single {
          +  box-sizing: border-box;
          +
          +  cursor: pointer;
          +  display: block;
          +
          +  height: 28px;
          +
          +  user-select: none;
          +  -webkit-user-select: none;
          +
          +  .select2-selection__rendered {
          +    display: block;
          +    padding-left: 8px;
          +    padding-right: 20px;
          +
          +    overflow: hidden;
          +    text-overflow: ellipsis;
          +    white-space: nowrap;
          +  }
          +
          +  .select2-selection__clear {
          +    position: relative;
          +  }
          +}
          +
          +&[dir="rtl"] {
          +  .select2-selection--single {
          +    .select2-selection__rendered {
          +      padding-right: 8px;
          +      padding-left: 20px;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/core.scss b/public/theme/select2/src/scss/core.scss
          new file mode 100644
          index 0000000..3d69538
          --- /dev/null
          +++ b/public/theme/select2/src/scss/core.scss
          @@ -0,0 +1,48 @@
          +.select2-container {
          +  box-sizing: border-box;
          +
          +  display: inline-block;
          +  margin: 0;
          +  position: relative;
          +  vertical-align: middle;
          +
          +  @import "single";
          +  @import "multiple";
          +}
          +
          +@import "dropdown";
          +
          +.select2-close-mask {
          +  border: 0;
          +  margin: 0;
          +  padding: 0;
          +  display: block;
          +  position: fixed;
          +  left: 0;
          +  top: 0;
          +  min-height: 100%;
          +  min-width: 100%;
          +  height: auto;
          +  width: auto;
          +  opacity: 0;
          +  z-index: 99;
          +
          +  // styles required for IE to work
          +
          +  background-color: #fff;
          +  filter: alpha(opacity=0);
          +}
          +
          +.select2-hidden-accessible {
          +  border: 0 !important;
          +  clip: rect(0 0 0 0) !important;
          +  height: 1px !important;
          +  margin: -1px !important;
          +  overflow: hidden !important;
          +  padding: 0 !important;
          +  position: absolute !important;
          +  width: 1px !important;
          +}
          +
          +@import "theme/default/layout";
          +@import "theme/classic/layout";
          diff --git a/public/theme/select2/src/scss/mixins/_gradients.scss b/public/theme/select2/src/scss/mixins/_gradients.scss
          new file mode 100644
          index 0000000..05a6195
          --- /dev/null
          +++ b/public/theme/select2/src/scss/mixins/_gradients.scss
          @@ -0,0 +1,13 @@
          +// https://github.com/twbs/bootstrap-sass/blob/3.3-stable/assets/stylesheets/bootstrap/mixins/_gradients.scss#L17-L27
          +
          +// Vertical gradient, from top to bottom
          +//
          +// Creates two color stops, start and end, by specifying a color and position for each color stop.
          +// Color stops are not available in IE9 and below.
          +@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
          +  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+
          +  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12
          +  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
          +  background-repeat: repeat-x;
          +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
          +}
          diff --git a/public/theme/select2/src/scss/theme/classic/_defaults.scss b/public/theme/select2/src/scss/theme/classic/_defaults.scss
          new file mode 100644
          index 0000000..aa20456
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/classic/_defaults.scss
          @@ -0,0 +1,34 @@
          +$remove-color: #888 !default;
          +$remove-hover-color: #555 !default;
          +$remove-width: 20px !default;
          +
          +$selection-color: #444 !default;
          +
          +$border-color: #aaa !default;
          +$border-radius: 4px !default;
          +
          +$focus-border-color: #5897fb !default;
          +
          +$container-height: 28px !default;
          +
          +$selection-bg-top-color: white !default;
          +$selection-bg-bottom-color: #eeeeee !default;
          +
          +$container-placeholder-color: #999 !default;
          +
          +$container-focus-border-color: blue !default;
          +
          +$selection-opened-bg-top-color: $selection-bg-bottom-color !default;
          +$selection-opened-bg-bottom-color: $selection-bg-top-color !default;
          +
          +$dropdown-z-index: 1 !default;
          +
          +$dropdown-bg-color: $selection-bg-top-color !default;
          +
          +$results-max-height: 200px !default;
          +$results-nested-padding: 20px !default;
          +
          +$results-choice-bg-hover-color: #3875d7 !default;
          +$results-choice-fg-hover-color: white !default;
          +
          +$results-choice-fg-unselectable-color: grey !default;
          diff --git a/public/theme/select2/src/scss/theme/classic/_multiple.scss b/public/theme/select2/src/scss/theme/classic/_multiple.scss
          new file mode 100644
          index 0000000..e472418
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/classic/_multiple.scss
          @@ -0,0 +1,93 @@
          +.select2-selection--multiple {
          +  background-color: white;
          +
          +  border: 1px solid $border-color;
          +  border-radius: $border-radius;
          +
          +  cursor: text;
          +
          +  outline: 0;
          +
          +  &:focus {
          +    border: 1px solid $focus-border-color;
          +  }
          +
          +  .select2-selection__rendered {
          +    list-style: none;
          +    margin: 0;
          +    padding: 0 5px;
          +  }
          +
          +  .select2-selection__clear {
          +    display: none;
          +  }
          +
          +  .select2-selection__choice {
          +    background-color: #e4e4e4;
          +
          +    border: 1px solid $border-color;
          +    border-radius: $border-radius;
          +
          +    cursor: default;
          +
          +    float: left;
          +
          +    margin-right: 5px;
          +    margin-top: 5px;
          +    padding: 0 5px;
          +  }
          +
          +  .select2-selection__choice__remove {
          +    color: $remove-color;
          +    cursor: pointer;
          +
          +    display: inline-block;
          +    font-weight: bold;
          +
          +    margin-right: 2px;
          +
          +    &:hover {
          +      color: $remove-hover-color;
          +    }
          +  }
          +}
          +
          +&[dir="rtl"] {
          +  .select2-selection--multiple {
          +    .select2-selection__choice {
          +      float: right;
          +    }
          +
          +    .select2-selection__choice {
          +      margin-left: 5px;
          +      margin-right: auto;
          +    }
          +
          +    .select2-selection__choice__remove {
          +      margin-left: 2px;
          +      margin-right: auto;
          +    }
          +  }
          +}
          +
          +&.select2-container--open {
          +  .select2-selection--multiple {
          +    border: 1px solid $focus-border-color;
          +  }
          +
          +  &.select2-container--above {
          +    .select2-selection--multiple {
          +      border-top: none;
          +      border-top-left-radius: 0;
          +      border-top-right-radius: 0;
          +    }
          +  }
          +
          +  &.select2-container--below {
          +    .select2-selection--multiple {
          +      border-bottom: none;
          +      border-bottom-left-radius: 0;
          +      border-bottom-right-radius: 0;
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/theme/classic/_single.scss b/public/theme/select2/src/scss/theme/classic/_single.scss
          new file mode 100644
          index 0000000..e21de9a
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/classic/_single.scss
          @@ -0,0 +1,124 @@
          +.select2-selection--single {
          +  background-color: mix($selection-bg-top-color, $selection-bg-bottom-color);
          +
          +  border: 1px solid $border-color;
          +  border-radius: $border-radius;
          +
          +  outline: 0;
          +
          +  @include gradient-vertical($selection-bg-top-color, $selection-bg-bottom-color, 50%, 100%);
          +
          +  &:focus {
          +    border: 1px solid $focus-border-color;
          +  }
          +
          +  .select2-selection__rendered {
          +    color: #444;
          +    line-height: 28px;
          +  }
          +
          +  .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold;
          +    margin-right: 10px;
          +  }
          +
          +  .select2-selection__placeholder {
          +    color: #999;
          +  }
          +
          +  .select2-selection__arrow {
          +    background-color: #ddd;
          +
          +    border: none;
          +    border-left: 1px solid $border-color;
          +    border-top-right-radius: $border-radius;
          +    border-bottom-right-radius: $border-radius;
          +
          +    height: 26px;
          +
          +    position: absolute;
          +
          +    top: 1px;
          +    right: 1px;
          +
          +    width: 20px;
          +
          +    @include gradient-vertical(#eeeeee, #cccccc, 50%, 100%);
          +
          +    b {
          +      border-color: #888 transparent transparent transparent;
          +      border-style: solid;
          +      border-width: 5px 4px 0 4px;
          +
          +      height: 0;
          +      left: 50%;
          +
          +      margin-left: -4px;
          +      margin-top: -2px;
          +
          +      position: absolute;
          +
          +      top: 50%;
          +      width: 0;
          +    }
          +  }
          +}
          +
          +&[dir="rtl"] {
          +  .select2-selection--single {
          +    .select2-selection__clear {
          +      float: left;
          +    }
          +
          +    .select2-selection__arrow {
          +      border: none;
          +      border-right: 1px solid $border-color;
          +
          +      border-radius: 0;
          +      border-top-left-radius: $border-radius;
          +      border-bottom-left-radius: $border-radius;
          +
          +      left: 1px;
          +      right: auto;
          +    }
          +  }
          +}
          +
          +&.select2-container--open {
          +  .select2-selection--single {
          +    border: 1px solid $focus-border-color;
          +
          +    .select2-selection__arrow {
          +      background: transparent;
          +
          +      border: none;
          +
          +      b {
          +        border-color: transparent transparent #888 transparent;
          +        border-width: 0 4px 5px 4px;
          +      }
          +    }
          +  }
          +
          +  &.select2-container--above {
          +    .select2-selection--single {
          +      border-top: none;
          +      border-top-left-radius: 0;
          +      border-top-right-radius: 0;
          +
          +      @include gradient-vertical($selection-opened-bg-bottom-color, $selection-opened-bg-top-color, 0%, 50%);
          +    }
          +  }
          +
          +  &.select2-container--below {
          +    .select2-selection--single {
          +      border-bottom: none;
          +      border-bottom-left-radius: 0;
          +      border-bottom-right-radius: 0;
          +
          +      @include gradient-vertical($selection-opened-bg-top-color, $selection-opened-bg-bottom-color, 50%, 100%);
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/theme/classic/layout.scss b/public/theme/select2/src/scss/theme/classic/layout.scss
          new file mode 100644
          index 0000000..d63e1d2
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/classic/layout.scss
          @@ -0,0 +1,64 @@
          +@import "defaults";
          +@import "../../mixins/gradients";
          +
          +.select2-container--classic {
          +  @import "single";
          +  @import "multiple";
          +
          +  .select2-search--dropdown {
          +    .select2-search__field {
          +      border: 1px solid $border-color;
          +      outline: 0;
          +    }
          +  }
          +
          +  .select2-search--inline {
          +    .select2-search__field {
          +      outline: 0;
          +      box-shadow: none;
          +    }
          +  }
          +
          +  .select2-dropdown {
          +    background-color: $dropdown-bg-color;
          +    border: 1px solid transparent;
          +  }
          +
          +  .select2-dropdown--above {
          +    border-bottom: none;
          +  }
          +
          +  .select2-dropdown--below {
          +    border-top: none;
          +  }
          +
          +  .select2-results > .select2-results__options {
          +    max-height: $results-max-height;
          +    overflow-y: auto;
          +  }
          +
          +  .select2-results__option {
          +    &[role=group] {
          +      padding: 0;
          +    }
          +
          +    &[aria-disabled=true] {
          +      color: $results-choice-fg-unselectable-color;
          +    }
          +  }
          +
          +  .select2-results__option--highlighted[aria-selected] {
          +    background-color: $results-choice-bg-hover-color;
          +    color: $results-choice-fg-hover-color;
          +  }
          +
          +  .select2-results__group {
          +    cursor: default;
          +    display: block;
          +    padding: 6px;
          +  }
          +
          +  &.select2-container--open .select2-dropdown {
          +    border-color: $focus-border-color;
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/theme/default/_multiple.scss b/public/theme/select2/src/scss/theme/default/_multiple.scss
          new file mode 100644
          index 0000000..9e204f3
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/default/_multiple.scss
          @@ -0,0 +1,98 @@
          +.select2-selection--multiple {
          +  background-color: white;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +  cursor: text;
          +
          +  .select2-selection__rendered {
          +    box-sizing: border-box;
          +    list-style: none;
          +    margin: 0;
          +    padding: 0 5px;
          +    width: 100%;
          +
          +    li {
          +      list-style: none;
          +    }
          +  }
          +
          +  .select2-selection__placeholder {
          +    color: #999;
          +
          +    margin-top: 5px;
          +
          +    float: left;
          +  }
          +
          +  .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold;
          +    margin-top: 5px;
          +    margin-right: 10px;
          +  }
          +
          +  .select2-selection__choice {
          +    background-color: #e4e4e4;
          +
          +    border: 1px solid #aaa;
          +    border-radius: 4px;
          +    cursor: default;
          +
          +    float: left;
          +
          +    margin-right: 5px;
          +    margin-top: 5px;
          +    padding: 0 5px;
          +  }
          +
          +  .select2-selection__choice__remove {
          +    color: #999;
          +    cursor: pointer;
          +
          +    display: inline-block;
          +    font-weight: bold;
          +
          +    margin-right: 2px;
          +
          +    &:hover {
          +      color: #333;
          +    }
          +  }
          +}
          +
          +&[dir="rtl"] {
          +  .select2-selection--multiple {
          +    .select2-selection__choice, .select2-selection__placeholder, .select2-search--inline {
          +      float: right;
          +    }
          +
          +    .select2-selection__choice {
          +      margin-left: 5px;
          +      margin-right: auto;
          +    }
          +
          +    .select2-selection__choice__remove {
          +      margin-left: 2px;
          +      margin-right: auto;
          +    }
          +  }
          +}
          +
          +&.select2-container--focus {
          +  .select2-selection--multiple {
          +    border: solid black 1px;
          +    outline: 0;
          +  }
          +}
          +
          +&.select2-container--disabled {
          +  .select2-selection--multiple {
          +    background-color: #eee;
          +    cursor: default;
          +  }
          +
          +  .select2-selection__choice__remove {
          +    display: none;
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/theme/default/_single.scss b/public/theme/select2/src/scss/theme/default/_single.scss
          new file mode 100644
          index 0000000..1387af0
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/default/_single.scss
          @@ -0,0 +1,83 @@
          +.select2-selection--single {
          +  background-color: #fff;
          +  border: 1px solid #aaa;
          +  border-radius: 4px;
          +
          +  .select2-selection__rendered {
          +    color: #444;
          +    line-height: 28px;
          +  }
          +
          +  .select2-selection__clear {
          +    cursor: pointer;
          +    float: right;
          +    font-weight: bold;
          +  }
          +
          +  .select2-selection__placeholder {
          +    color: #999;
          +  }
          +
          +  .select2-selection__arrow {
          +    height: 26px;
          +
          +    position: absolute;
          +
          +    top: 1px;
          +    right: 1px;
          +
          +    width: 20px;
          +
          +    b {
          +      border-color: #888 transparent transparent transparent;
          +      border-style: solid;
          +      border-width: 5px 4px 0 4px;
          +
          +      height: 0;
          +      left: 50%;
          +
          +      margin-left: -4px;
          +      margin-top: -2px;
          +
          +      position: absolute;
          +
          +      top: 50%;
          +      width: 0;
          +    }
          +  }
          +}
          +
          +&[dir="rtl"] {
          +  .select2-selection--single {
          +    .select2-selection__clear {
          +      float: left;
          +    }
          +
          +    .select2-selection__arrow {
          +      left: 1px;
          +      right: auto;
          +    }
          +  }
          +}
          +
          +&.select2-container--disabled {
          +  .select2-selection--single {
          +    background-color: #eee;
          +    cursor: default;
          +
          +    .select2-selection__clear {
          +      display: none;
          +    }
          +  }
          +}
          +
          +&.select2-container--open {
          +  .select2-selection--single {
          +    .select2-selection__arrow {
          +      b {
          +        border-color: transparent transparent #888 transparent;
          +        border-width: 0 4px 5px 4px;
          +      }
          +    }
          +  }
          +}
          diff --git a/public/theme/select2/src/scss/theme/default/layout.scss b/public/theme/select2/src/scss/theme/default/layout.scss
          new file mode 100644
          index 0000000..ea3d939
          --- /dev/null
          +++ b/public/theme/select2/src/scss/theme/default/layout.scss
          @@ -0,0 +1,97 @@
          +.select2-container--default {
          +  @import "single";
          +  @import "multiple";
          +
          +  &.select2-container--open.select2-container--above {
          +    .select2-selection--single, .select2-selection--multiple {
          +      border-top-left-radius: 0;
          +      border-top-right-radius: 0;
          +    }
          +  }
          +
          +  &.select2-container--open.select2-container--below {
          +    .select2-selection--single, .select2-selection--multiple {
          +      border-bottom-left-radius: 0;
          +      border-bottom-right-radius: 0;
          +    }
          +  }
          +
          +  .select2-search--dropdown {
          +    .select2-search__field {
          +      border: 1px solid #aaa;
          +    }
          +  }
          +
          +  .select2-search--inline {
          +    .select2-search__field {
          +      background: transparent;
          +      border: none;
          +      outline: 0;
          +      box-shadow: none;
          +      -webkit-appearance: textfield;
          +    }
          +  }
          +
          +  .select2-results > .select2-results__options {
          +    max-height: 200px;
          +    overflow-y: auto;
          +  }
          +
          +  .select2-results__option {
          +    &[role=group] {
          +      padding: 0;
          +    }
          +
          +    &[aria-disabled=true] {
          +      color: #999;
          +    }
          +
          +    &[aria-selected=true] {
          +      background-color: #ddd;
          +    }
          +
          +    .select2-results__option {
          +      padding-left: 1em;
          +
          +      .select2-results__group {
          +        padding-left: 0;
          +      }
          +
          +      .select2-results__option {
          +        margin-left: -1em;
          +        padding-left: 2em;
          +
          +        .select2-results__option {
          +          margin-left: -2em;
          +          padding-left: 3em;
          +
          +          .select2-results__option {
          +            margin-left: -3em;
          +            padding-left: 4em;
          +
          +            .select2-results__option {
          +              margin-left: -4em;
          +              padding-left: 5em;
          +
          +              .select2-results__option {
          +                margin-left: -5em;
          +                padding-left: 6em;
          +              }
          +            }
          +          }
          +        }
          +      }
          +    }
          +  }
          +
          +  .select2-results__option--highlighted[aria-selected] {
          +    background-color: #5897fb;
          +    color: white;
          +  }
          +
          +  .select2-results__group {
          +    cursor: default;
          +    display: block;
          +    padding: 6px;
          +  }
          +}
          diff --git a/public/theme/select2/tests/a11y/search-tests.js b/public/theme/select2/tests/a11y/search-tests.js
          new file mode 100644
          index 0000000..58e5649
          --- /dev/null
          +++ b/public/theme/select2/tests/a11y/search-tests.js
          @@ -0,0 +1,51 @@
          +module('Accessibility - Search');
          +
          +var MultipleSelection = require('select2/selection/multiple');
          +var InlineSearch = require('select2/selection/search');
          +
          +var $ = require('jquery');
          +
          +var Utils = require('select2/utils');
          +var Options = require('select2/options');
          +var options = new Options({});
          +
          +test('aria-autocomplete attribute is present', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +  var selection = new CustomSelection($select, options);
          +  var $selection = selection.render();
          +
          +  // Update the selection so the search is rendered
          +  selection.update([]);
          +
          +  assert.equal(
          +    $selection.find('input').attr('aria-autocomplete'),
          +    'list',
          +    'The search box is marked as autocomplete'
          +  );
          +});
          +
          +test('aria-activedescendant should be removed when closed', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +  var selection = new CustomSelection($select, options);
          +  var $selection = selection.render();
          +
          +  var container = new MockContainer();
          +  selection.bind(container, $('<span></span>'));
          +
          +  // Update the selection so the search is rendered
          +  selection.update([]);
          +
          +  var $search = $selection.find('input');
          +  $search.attr('aria-activedescendant', 'something');
          +
          +  container.trigger('close');
          +
          +  assert.ok(
          +    !$search.attr('aria-activedescendant'),
          +    'There is no active descendant when the dropdown is closed'
          +  );
          +});
          diff --git a/public/theme/select2/tests/a11y/selection-tests.js b/public/theme/select2/tests/a11y/selection-tests.js
          new file mode 100644
          index 0000000..e2c1460
          --- /dev/null
          +++ b/public/theme/select2/tests/a11y/selection-tests.js
          @@ -0,0 +1,154 @@
          +module('Accessibility - All');
          +
          +var BaseSelection = require('select2/selection/base');
          +var SingleSelection = require('select2/selection/single');
          +var MultipleSelection = require('select2/selection/multiple');
          +
          +var $ = require('jquery');
          +
          +var Options = require('select2/options');
          +var options = new Options({});
          +
          +test('title is carried over from original element', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var selection = new BaseSelection($select, options);
          +  var $selection = selection.render();
          +
          +  assert.equal(
          +    $selection.attr('title'),
          +    $select.attr('title'),
          +    'The title should have been copied over from the original element'
          +  );
          +});
          +
          +test('aria-expanded reflects the state of the container', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var selection = new BaseSelection($select, options);
          +  var $selection = selection.render();
          +
          +  var container = new MockContainer();
          +
          +  selection.bind(container, $('<span></span>'));
          +
          +  assert.equal(
          +    $selection.attr('aria-expanded'),
          +    'false',
          +    'The container should not be expanded when it is closed'
          +  );
          +
          +  container.trigger('open');
          +
          +  assert.equal(
          +    $selection.attr('aria-expanded'),
          +    'true',
          +    'The container should be expanded when it is opened'
          +  );
          +});
          +
          +test('static aria attributes are present', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var selection = new BaseSelection($select, options);
          +  var $selection = selection.render();
          +
          +  assert.equal(
          +    $selection.attr('role'),
          +    'combobox',
          +    'The container should identify as a combobox'
          +  );
          +
          +  assert.equal(
          +    $selection.attr('aria-haspopup'),
          +    'true',
          +    'The dropdown is considered a popup of the container'
          +  );
          +});
          +
          +test('the container should be in the tab order', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var selection = new BaseSelection($select, options);
          +  var $selection = selection.render();
          +
          +  var container = new MockContainer();
          +  selection.bind(container, $('<span></span>'));
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '0',
          +    'The tab index should allow it to fit in the natural tab order'
          +  );
          +
          +  container.trigger('disable');
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '-1',
          +    'The selection should be dropped out of the tab order when disabled'
          +  );
          +
          +  container.trigger('enable');
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '0',
          +    'The tab index should be restored when re-enabled'
          +  );
          +});
          +
          +test('a custom tabindex is copied', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +  $select.attr('tabindex', '999');
          +
          +  var selection = new BaseSelection($select, options);
          +  var $selection = selection.render();
          +
          +  var container = new MockContainer();
          +  selection.bind(container, $('<span></span>'));
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '999',
          +    'The tab index should match the original tab index'
          +  );
          +
          +  container.trigger('disable');
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '-1',
          +    'The selection should be dropped out of the tab order when disabled'
          +  );
          +
          +  container.trigger('enable');
          +
          +  assert.equal(
          +    $selection.attr('tabindex'),
          +    '999',
          +    'The tab index should be restored when re-enabled'
          +  );
          +});
          +
          +module('Accessibility - Single');
          +
          +test('aria-labelledby should match the rendered container', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var selection = new SingleSelection($select, options);
          +  var $selection = selection.render();
          +
          +  var container = new MockContainer();
          +  selection.bind(container, $('<span></span>'));
          +
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  assert.equal(
          +    $selection.attr('aria-labelledby'),
          +    $rendered.attr('id'),
          +    'The rendered selection should label the container'
          +  );
          +});
          +
          +module('Accessibility - Multiple');
          diff --git a/public/theme/select2/tests/data/array-tests.js b/public/theme/select2/tests/data/array-tests.js
          new file mode 100644
          index 0000000..65a6e32
          --- /dev/null
          +++ b/public/theme/select2/tests/data/array-tests.js
          @@ -0,0 +1,318 @@
          +module('Data adapters - Array');
          +
          +var ArrayData = require('select2/data/array');
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +
          +var arrayOptions = new Options({
          +  data: [
          +    {
          +      id: 'default',
          +      text: 'Default'
          +    },
          +    {
          +      id: '1',
          +      text: 'One'
          +    },
          +    {
          +      id: '2',
          +      text: '2'
          +    }
          +  ]
          +});
          +
          +var extraOptions = new Options ({
          +  data: [
          +    {
          +      id: 'default',
          +      text: 'Default',
          +      extra: true
          +    },
          +    {
          +      id: 'One',
          +      text: 'One',
          +      extra: true
          +    }
          +  ]
          +});
          +
          +var nestedOptions = new Options({
          +  data: [
          +    {
          +      text: 'Default',
          +      children: [
          +        {
          +          text: 'Next',
          +          children: [
          +            {
          +              id: 'a',
          +              text: 'Option'
          +            }
          +          ]
          +        }
          +      ]
          +    }
          +  ]
          +});
          +
          +test('current gets default for single', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  data.current(function (val) {
          +    assert.equal(
          +      val.length,
          +      1,
          +      'There should always be a selected item for array data.'
          +    );
          +
          +    var item = val[0];
          +
          +    assert.equal(
          +      item.id,
          +      'default',
          +      'The first item should be selected'
          +    );
          +  });
          +});
          +
          +test('current gets default for multiple', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  data.current(function (val) {
          +    assert.equal(
          +      val.length,
          +      0,
          +      'There should be no default selection.'
          +    );
          +  });
          +});
          +
          +test('current works with existing selections', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  $select.val(['One']);
          +
          +  data.current(function (val) {
          +    assert.equal(
          +      val.length,
          +      1,
          +      'There should only be one existing selection.'
          +    );
          +
          +    var option = val[0];
          +
          +    assert.equal(
          +      option.id,
          +      'One',
          +      'The id should be equal to the value of the option tag.'
          +    );
          +
          +    assert.equal(
          +      option.text,
          +      'One',
          +      'The text should be equal to the text of the option tag.'
          +    );
          +  });
          +});
          +
          +test('current works with selected data', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  data.select({
          +    id: '2',
          +    text: '2'
          +  });
          +
          +  data.current(function (val) {
          +    assert.equal(
          +      val.length,
          +      1,
          +      'There should only be one option selected.'
          +    );
          +
          +    var option = val[0];
          +
          +    assert.equal(
          +      option.id,
          +      '2',
          +      'The id should match the original id from the array.'
          +    );
          +
          +    assert.equal(
          +      option.text,
          +      '2',
          +      'The text should match the original text from the array.'
          +    );
          +  });
          +});
          +
          +test('select works for single', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  assert.equal(
          +    $select.val(),
          +    'default',
          +    'There should already be a selection'
          +  );
          +
          +  data.select({
          +    id: '1',
          +    text: 'One'
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    '1',
          +    'The selected value should be the same as the selected id'
          +  );
          +});
          +
          +test('multiple sets the value', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  assert.equal($select.val(), null);
          +
          +  data.select({
          +    id: 'default',
          +    text: 'Default'
          +  });
          +
          +  assert.deepEqual($select.val(), ['default']);
          +});
          +
          +test('multiple adds to the old value', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  $select.val(['One']);
          +
          +  assert.deepEqual($select.val(), ['One']);
          +
          +  data.select({
          +    id: 'default',
          +    text: 'Default'
          +  });
          +
          +  assert.deepEqual($select.val(), ['One', 'default']);
          +});
          +
          +test('option tags are automatically generated', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, arrayOptions);
          +
          +  assert.equal(
          +    $select.find('option').length,
          +    3,
          +    'An <option> element should be created for each object'
          +  );
          +});
          +
          +test('option tags can receive new data', function(assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new ArrayData($select, extraOptions);
          +
          +  assert.equal(
          +    $select.find('option').length,
          +    2,
          +    'Only one more <option> element should be created'
          +  );
          +
          +  data.select({
          +    id: 'default'
          +  });
          +
          +  assert.ok(
          +    $select.find(':selected').data('data').extra,
          +    '<option> default should have new data'
          +  );
          +
          +  data.select({
          +    id: 'One'
          +  });
          +
          +  assert.ok(
          +    $select.find(':selected').data('data').extra,
          +    '<option> One should have new data'
          +  );
          +});
          +
          +test('optgroup tags can also be generated', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, nestedOptions);
          +
          +  assert.equal(
          +    $select.find('option').length,
          +    1,
          +    'An <option> element should be created for the one selectable object'
          +  );
          +
          +  assert.equal(
          +    $select.find('optgroup').length,
          +    2,
          +    'An <optgroup> element should be created for the two with children'
          +  );
          +});
          +
          +test('optgroup tags have the right properties', function (assert) {
          +  var $select = $('#qunit-fixture .single-empty');
          +
          +  var data = new ArrayData($select, nestedOptions);
          +
          +  var $group = $select.children('optgroup');
          +
          +  assert.equal(
          +    $group.prop('label'),
          +    'Default',
          +    'An `<optgroup>` label should match the text property'
          +  );
          +
          +  assert.equal(
          +    $group.children().length,
          +    1,
          +    'The <optgroup> should have one child under it'
          +  );
          +});
          +
          +test('existing selections are respected on initialization', function (assert) {
          +   var $select = $(
          +     '<select>' +
          +        '<option>First</option>' +
          +        '<option selected>Second</option>' +
          +      '</select>'
          +    );
          +
          +    var options = new Options({
          +      data: [
          +        {
          +          id: 'Second',
          +          text: 'Second'
          +        },
          +        {
          +          id: 'Third',
          +          text: 'Third'
          +        }
          +      ]
          +    });
          +
          +    assert.equal($select.val(), 'Second');
          +
          +    var data = new ArrayData($select, options);
          +
          +    assert.equal($select.val(), 'Second');
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/data/base-tests.js b/public/theme/select2/tests/data/base-tests.js
          new file mode 100644
          index 0000000..b90158f
          --- /dev/null
          +++ b/public/theme/select2/tests/data/base-tests.js
          @@ -0,0 +1,29 @@
          +module('Data adapters - Base');
          +
          +var BaseData = require('select2/data/base');
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +
          +var options = new Options({});
          +
          +test('current is required', function (assert) {
          +  var data = new BaseData($('#qunit-fixture select'), options);
          +
          +  assert.throws(
          +    function () {
          +      data.current(function () {});
          +    },
          +    'current has no default implementation'
          +  );
          +});
          +
          +test('query is required', function (assert) {
          +  var data = new BaseData($('#qunit-fixture select'), options);
          +
          +  assert.throws(
          +    function () {
          +      data.query({}, function () {});
          +    },
          +    'query has no default implementation'
          +  );
          +});
          diff --git a/public/theme/select2/tests/data/inputData-tests.js b/public/theme/select2/tests/data/inputData-tests.js
          new file mode 100644
          index 0000000..f2124ef
          --- /dev/null
          +++ b/public/theme/select2/tests/data/inputData-tests.js
          @@ -0,0 +1,158 @@
          +module('Data adapters - <input> compatibility');
          +
          +var $ = require('jquery');
          +
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var ArrayData = require('select2/data/array');
          +var InputData = require('select2/compat/inputData');
          +
          +var InputAdapter = Utils.Decorate(ArrayData, InputData);
          +
          +test('test that options can be selected', function (assert) {
          +  var options = new Options({
          +    data: [
          +      {
          +        id: 'test',
          +        text: 'Test'
          +      }
          +    ]
          +  });
          +  var $element = $('<input />');
          +
          +  var adapter = new InputAdapter($element, options);
          +
          +  adapter.select({
          +    id: 'test'
          +  });
          +
          +  assert.equal(
          +    $element.val(),
          +    'test',
          +    'The id of the item should be the value'
          +  );
          +});
          +
          +test('unselect the single selected option clears the value', function (assert) {
          +  var options = new Options({
          +    data: [
          +      {
          +        id: 'test',
          +        text: 'Test',
          +        selected: true
          +      }
          +    ]
          +  });
          +  var $element = $('<input />');
          +
          +  var adapter = new InputAdapter($element, options);
          +
          +  adapter.unselect({
          +    id: 'test'
          +  });
          +
          +  assert.equal(
          +    $element.val(),
          +    '',
          +    'The id should no longer be in the value'
          +  );
          +});
          +
          +test('options can be unselected individually', function (assert) {
          +  var options = new Options({
          +    data: [
          +      {
          +        id: 'test',
          +        text: 'Test'
          +      },
          +      {
          +        id: 'test2',
          +        text: 'Test2'
          +      },
          +      {
          +        id: 'test3',
          +        text: 'Test3'
          +      }
          +    ]
          +  });
          +  var $element = $('<input />');
          +  $element.val('test,test2,test3');
          +
          +  var adapter = new InputAdapter($element, options);
          +
          +  adapter.unselect({
          +    id: 'test2'
          +  });
          +
          +  assert.equal(
          +    $element.val(),
          +    'test,test3',
          +    'The value should contain all the still selected options'
          +  );
          +});
          +
          +test('default values can be set', function (assert) {
          +  assert.expect(4);
          +
          +  var options = new Options({
          +    data: [
          +      {
          +        id: 'test',
          +        text: 'Test'
          +      }
          +    ]
          +  });
          +  var $element = $('<input value="test" />');
          +
          +  var adapter = new InputAdapter($element, options);
          +
          +  adapter.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should only be a single selected option'
          +    );
          +
          +    var item = data[0];
          +
          +    assert.equal(item.id, 'test');
          +    assert.equal(item.text, 'Test');
          +  });
          +
          +  assert.equal(
          +    $element.val(),
          +    'test',
          +    'The value should not have been altered'
          +  );
          +});
          +
          +test('no default value', function (assert) {
          +  assert.expect(2);
          +
          +  var options = new Options({
          +    data: [
          +      {
          +        id: 'test',
          +        text: 'Test'
          +      }
          +    ]
          +  });
          +  var $element = $('<input />');
          +
          +  var adapter = new InputAdapter($element, options);
          +
          +  adapter.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      0,
          +      'There should be no selected options'
          +    );
          +  });
          +
          +  assert.equal(
          +    $element.val(),
          +    '',
          +    'The value should not have been altered'
          +  );
          +});
          diff --git a/public/theme/select2/tests/data/maximumInputLength-tests.js b/public/theme/select2/tests/data/maximumInputLength-tests.js
          new file mode 100644
          index 0000000..e855713
          --- /dev/null
          +++ b/public/theme/select2/tests/data/maximumInputLength-tests.js
          @@ -0,0 +1,138 @@
          +module('Data adapters - Maximum input length');
          +
          +var MaximumInputLength = require('select2/data/maximumInputLength');
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +function MaximumInputStub () {
          +  this.called = false;
          +}
          +
          +MaximumInputStub.prototype.query = function (params, callback) {
          +  this.called = true;
          +};
          +
          +var MaximumInputData = Utils.Decorate(MaximumInputStub, MaximumInputLength);
          +
          +test('0 never displays the notice', function (assert) {
          +  var zeroOptions = new Options({
          +    maximumInputLength: 0
          +  });
          +
          +  var data = new MaximumInputData(null, zeroOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumInputData(null, zeroOptions);
          +
          +  data.query({
          +    term: 'test'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('< 0 never displays the notice', function (assert) {
          +  var negativeOptions = new Options({
          +    maximumInputLength: -1
          +  });
          +
          +  var data = new MaximumInputData(null, negativeOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumInputData(null, negativeOptions);
          +
          +  data.query({
          +    term: 'test'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('triggers when input is too long', function (assert) {
          +  var options = new Options({
          +    maximumInputLength: 1
          +  });
          +
          +  var data = new MaximumInputData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(true, 'The event should be triggered.');
          +  };
          +
          +  data.query({
          +    term: 'no'
          +  });
          +
          +  assert.ok(!data.called, 'The adapter should not be called');
          +});
          +
          +test('does not trigger when equal', function (assert) {
          +  var options = new Options({
          +    maximumInputLength: 10
          +  });
          +
          +  var data = new MaximumInputData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'The event should not be triggered.');
          +  };
          +
          +  data.query({
          +    term: '1234567890'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('does not trigger when less', function (assert) {
          +  var options = new Options({
          +    maximumInputLength: 10
          +  });
          +
          +  var data = new MaximumInputData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'The event should not be triggered.');
          +  };
          +
          +  data.query({
          +    term: '123'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('works with null term', function (assert) {
          +  var options = new Options({
          +    maximumInputLength: 1
          +  });
          +
          +  var data = new MaximumInputData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'The event should not be triggered');
          +  };
          +
          +  data.query({});
          +
          +  assert.ok(data.called);
          +});
          diff --git a/public/theme/select2/tests/data/maximumSelectionLength-tests.js b/public/theme/select2/tests/data/maximumSelectionLength-tests.js
          new file mode 100644
          index 0000000..89943b3
          --- /dev/null
          +++ b/public/theme/select2/tests/data/maximumSelectionLength-tests.js
          @@ -0,0 +1,202 @@
          +module('Data adapters - Maximum selection length');
          +
          +var MaximumSelectionLength = require('select2/data/maximumSelectionLength');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +function MaximumSelectionStub () {
          +  this.called = false;
          +  this.currentData = [];
          +}
          +
          +MaximumSelectionStub.prototype.current = function (callback) {
          +  callback(this.currentData);
          +};
          +
          +MaximumSelectionStub.prototype.val = function (val) {
          +  this.currentData.push(val);
          +};
          +
          +MaximumSelectionStub.prototype.query = function (params, callback) {
          +  this.called = true;
          +};
          +
          +var MaximumSelectionData = Utils.Decorate(
          +  MaximumSelectionStub,
          +  MaximumSelectionLength
          +);
          +
          +test('0 never displays the notice', function (assert) {
          +  var zeroOptions = new Options({
          +    maximumSelectionLength: 0
          +  });
          +
          +  var data = new MaximumSelectionData(null, zeroOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, zeroOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.val('1');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, zeroOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.val('1');
          +  data.val('2');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('< 0 never displays the notice', function (assert) {
          +  var negativeOptions = new Options({
          +    maximumSelectionLength: -1
          +  });
          +
          +  var data = new MaximumSelectionData(null, negativeOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, negativeOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.val('1');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, negativeOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.val('1');
          +  data.val('2');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('triggers when >= 1 selection' , function (assert) {
          +  var maxOfOneOptions = new Options({
          +    maximumSelectionLength: 1
          +  });
          +  var data = new MaximumSelectionData(null, maxOfOneOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, maxOfOneOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(true, 'The event should be triggered.');
          +  };
          +
          +  data.val('1');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(!data.called);
          +
          +});
          +
          +test('triggers when >= 2 selections' , function (assert) {
          +  var maxOfTwoOptions = new Options({
          +    maximumSelectionLength: 2
          +  });
          +  var data = new MaximumSelectionData(null, maxOfTwoOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, maxOfTwoOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.val('1');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MaximumSelectionData(null, maxOfTwoOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(true, 'The event should be triggered.');
          +  };
          +
          +  data.val('1');
          +  data.val('2');
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(!data.called);
          +
          +});
          diff --git a/public/theme/select2/tests/data/minimumInputLength-tests.js b/public/theme/select2/tests/data/minimumInputLength-tests.js
          new file mode 100644
          index 0000000..a67db08
          --- /dev/null
          +++ b/public/theme/select2/tests/data/minimumInputLength-tests.js
          @@ -0,0 +1,138 @@
          +module('Data adapters - Minimum input length');
          +
          +var MinimumInputLength = require('select2/data/minimumInputLength');
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +function StubData () {
          +  this.called = false;
          +}
          +
          +StubData.prototype.query = function (params, callback) {
          +  this.called = true;
          +};
          +
          +var MinimumData = Utils.Decorate(StubData, MinimumInputLength);
          +
          +test('0 never displays the notice', function (assert) {
          +  var zeroOptions = new Options({
          +    minimumInputLength: 0
          +  });
          +
          +  var data = new MinimumData(null, zeroOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MinimumData(null, zeroOptions);
          +
          +  data.query({
          +    term: 'test'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('< 0 never displays the notice', function (assert) {
          +  var negativeOptions = new Options({
          +    minimumInputLength: -1
          +  });
          +
          +  var data = new MinimumData(null, negativeOptions);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'No events should be triggered');
          +  };
          +
          +  data.query({
          +    term: ''
          +  });
          +
          +  assert.ok(data.called);
          +
          +  data = new MinimumData(null, negativeOptions);
          +
          +  data.query({
          +    term: 'test'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('triggers when input is not long enough', function (assert) {
          +  var options = new Options({
          +    minimumInputLength: 10
          +  });
          +
          +  var data = new MinimumData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(true, 'The event should be triggered.');
          +  };
          +
          +  data.query({
          +    term: 'no'
          +  });
          +
          +  assert.ok(!data.called);
          +});
          +
          +test('does not trigger when equal', function (assert) {
          +  var options = new Options({
          +    minimumInputLength: 10
          +  });
          +
          +  var data = new MinimumData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'The event should not be triggered.');
          +  };
          +
          +  data.query({
          +    term: '1234567890'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('does not trigger when greater', function (assert) {
          +  var options = new Options({
          +    minimumInputLength: 10
          +  });
          +
          +  var data = new MinimumData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(false, 'The event should not be triggered.');
          +  };
          +
          +  data.query({
          +    term: '12345678901'
          +  });
          +
          +  assert.ok(data.called);
          +});
          +
          +test('works with null term', function (assert) {
          +  var options = new Options({
          +    minimumInputLength: 1
          +  });
          +
          +  var data = new MinimumData(null, options);
          +
          +  data.trigger = function () {
          +    assert.ok(true, 'The event should be triggered');
          +  };
          +
          +  data.query({});
          +
          +  assert.ok(!data.called);
          +});
          diff --git a/public/theme/select2/tests/data/select-tests.js b/public/theme/select2/tests/data/select-tests.js
          new file mode 100644
          index 0000000..90d9609
          --- /dev/null
          +++ b/public/theme/select2/tests/data/select-tests.js
          @@ -0,0 +1,457 @@
          +module('Data adapters - Select - current');
          +
          +var SelectData = require('select2/data/select');
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var selectOptions = new Options({});
          +
          +test('current gets default for single', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should only be one selected option'
          +    );
          +
          +    var option = data[0];
          +
          +    assert.equal(
          +      option.id,
          +      'One',
          +      'The value of the option tag should be the id'
          +    );
          +
          +    assert.equal(
          +      option.text,
          +      'One',
          +      'The text within the option tag should be the text'
          +    );
          +  });
          +});
          +
          +test('current gets default for multiple', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      0,
          +      'Multiple selects have no default selection.'
          +    );
          +  });
          +});
          +
          +test('current gets options with explicit value', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var $option = $('<option value="1">One</option>');
          +  $select.append($option);
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  $select.val('1');
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should be one selected option'
          +    );
          +
          +    var option = data[0];
          +
          +    assert.equal(
          +      option.id,
          +      '1',
          +      'The option value should be the selected id'
          +    );
          +
          +    assert.equal(
          +      option.text,
          +      'One',
          +      'The text should match the text for the option tag'
          +    );
          +  });
          +});
          +
          +test('current gets options with implicit value', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  $select.val('One');
          +
          +  data.current(function (val) {
          +    assert.equal(
          +      val.length,
          +      1,
          +      'There should only be one selected value'
          +    );
          +
          +    var option = val[0];
          +
          +    assert.equal(
          +      option.id,
          +      'One',
          +      'The id should be the same as the option text'
          +    );
          +
          +    assert.equal(
          +      option.text,
          +      'One',
          +      'The text should be the same as the option text'
          +    );
          +  });
          +});
          +
          +test('select works for single', function (assert) {
          +  var $select = $('#qunit-fixture .single-with-placeholder');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  assert.equal($select.val(), 'placeholder');
          +
          +  data.select({
          +    id: 'One',
          +    text: 'One'
          +  });
          +
          +  assert.equal($select.val(), 'One');
          +});
          +
          +test('multiple sets the value', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  assert.equal($select.val(), null);
          +
          +  data.select({
          +    id: 'Two',
          +    text: 'Two'
          +  });
          +
          +  assert.deepEqual($select.val(), ['Two']);
          +});
          +
          +test('multiple adds to the old value', function (assert) {
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  $select.val(['Two']);
          +
          +  assert.deepEqual($select.val(), ['Two']);
          +
          +  data.select({
          +    id: 'One',
          +    text: 'One'
          +  });
          +
          +  assert.deepEqual($select.val(), ['One', 'Two']);
          +});
          +
          +test('duplicates - single - same id on select triggers change',
          +  function (assert) {
          +  var $select = $('#qunit-fixture .duplicates');
          +
          +  var data = new SelectData($select, data);
          +  var second = $('#qunit-fixture .duplicates option')[2];
          +
          +  var changeTriggered = false;
          +
          +  assert.equal($select.val(), 'one');
          +
          +  $select.on('change', function () {
          +    changeTriggered = true;
          +  });
          +
          +  data.select({
          +    id: 'one',
          +    text: 'Uno',
          +    element: second
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'one',
          +    'The value never changed'
          +  );
          +
          +  assert.ok(
          +    changeTriggered,
          +    'The change event should be triggered'
          +  );
          +
          +  assert.ok(
          +    second.selected,
          +    'The second duplicate is selected, not the first'
          +  );
          +});
          +
          +test('duplicates - single - different id on select triggers change',
          +  function (assert) {
          +  var $select = $('#qunit-fixture .duplicates');
          +
          +  var data = new SelectData($select, data);
          +  var second = $('#qunit-fixture .duplicates option')[2];
          +
          +  var changeTriggered = false;
          +
          +  $select.val('two');
          +
          +  $select.on('change', function () {
          +    changeTriggered = true;
          +  });
          +
          +  data.select({
          +    id: 'one',
          +    text: 'Uno',
          +    element: second
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'one',
          +    'The value changed to the duplicate id'
          +  );
          +
          +  assert.ok(
          +    changeTriggered,
          +    'The change event should be triggered'
          +  );
          +
          +  assert.ok(
          +    second.selected,
          +    'The second duplicate is selected, not the first'
          +  );
          +});
          +
          +test('duplicates - multiple - same id on select triggers change',
          +function (assert) {
          +  var $select = $('#qunit-fixture .duplicates-multi');
          +
          +  var data = new SelectData($select, data);
          +  var second = $('#qunit-fixture .duplicates-multi option')[2];
          +
          +  var changeTriggered = false;
          +
          +  $select.val(['one']);
          +
          +  $select.on('change', function () {
          +    changeTriggered = true;
          +  });
          +
          +  data.select({
          +    id: 'one',
          +    text: 'Uno',
          +    element: second
          +  });
          +
          +  assert.deepEqual(
          +    $select.val(),
          +    ['one', 'one'],
          +    'The value now has duplicates'
          +  );
          +
          +  assert.ok(
          +    changeTriggered,
          +    'The change event should be triggered'
          +  );
          +
          +  assert.ok(
          +    second.selected,
          +    'The second duplicate is selected, not the first'
          +  );
          +});
          +
          +test('duplicates - multiple - different id on select triggers change',
          +function (assert) {
          +  var $select = $('#qunit-fixture .duplicates-multi');
          +
          +  var data = new SelectData($select, data);
          +  var second = $('#qunit-fixture .duplicates-multi option')[2];
          +
          +  var changeTriggered = false;
          +
          +  $select.val(['two']);
          +
          +  $select.on('change', function () {
          +    changeTriggered = true;
          +  });
          +
          +  data.select({
          +    id: 'one',
          +    text: 'Uno',
          +    element: second
          +  });
          +
          +  assert.deepEqual(
          +    $select.val(),
          +    ['two', 'one'],
          +    'The value has the new id'
          +  );
          +
          +  assert.ok(
          +    changeTriggered,
          +    'The change event should be triggered'
          +  );
          +
          +  assert.ok(
          +    second.selected,
          +    'The second duplicate is selected, not the first'
          +  );
          +});
          +
          +module('Data adapter - Select - query');
          +
          +test('all options are returned with no term', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({}, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      1,
          +      'The number of items returned should be equal to the number of options'
          +    );
          +  });
          +});
          +
          +test('the matcher checks the text', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({
          +    term: 'One'
          +  }, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      1,
          +      'Only the "One" option should be found'
          +    );
          +  });
          +});
          +
          +test('the matcher ignores case', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({
          +    term: 'one'
          +  }, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      1,
          +      'The "One" option should still be found'
          +    );
          +  });
          +});
          +
          +test('no options may be returned with no matches', function (assert) {
          +  var $select = $('#qunit-fixture .single');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({
          +    term: 'qwerty'
          +  }, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      0,
          +      'Only matching items should be returned'
          +    );
          +  });
          +});
          +
          +test('optgroup tags are marked with children', function (assert) {
          +  var $select = $('#qunit-fixture .groups');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({}, function (data) {
          +    assert.ok(
          +      'children' in data.results[0],
          +      'The optgroup element should have children when queried'
          +    );
          +  });
          +});
          +
          +test('empty optgroups are still shown when queried', function (assert) {
          +  var $select = $('#qunit-fixture .groups');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({}, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      2,
          +      'The empty optgroup element should still be returned when queried'
          +    );
          +
          +    var item = data.results[1];
          +
          +    assert.equal(
          +      item.text,
          +      'Empty',
          +      'The text of the empty optgroup should match the label'
          +    );
          +
          +    assert.equal(
          +      item.children.length,
          +      0,
          +      'There should be no children in the empty opgroup'
          +    );
          +  });
          +});
          +
          +test('multiple options with the same value are returned', function (assert) {
          +  var $select = $('#qunit-fixture .duplicates');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  data.query({}, function (data) {
          +    assert.equal(
          +      data.results.length,
          +      3,
          +      'The duplicate option should still be returned when queried'
          +    );
          +
          +    var first = data.results[0];
          +    var duplicate = data.results[2];
          +
          +    assert.equal(
          +      first.id,
          +      duplicate.id,
          +      'The duplicates should have the same id'
          +    );
          +
          +    assert.notEqual(
          +      first.text,
          +      duplicate.text,
          +      'The duplicates do not have the same text'
          +    );
          +  });
          +});
          +
          +test('data objects use the text of the option', function (assert) {
          +  var $select = $('#qunit-fixture .duplicates');
          +
          +  var data = new SelectData($select, selectOptions);
          +
          +  var $option = $('<option>&amp;</option>');
          +
          +  var item = data.item($option);
          +
          +  assert.equal(item.id, '&');
          +  assert.equal(item.text, '&');
          +});
          diff --git a/public/theme/select2/tests/data/tags-tests.js b/public/theme/select2/tests/data/tags-tests.js
          new file mode 100644
          index 0000000..95b3fde
          --- /dev/null
          +++ b/public/theme/select2/tests/data/tags-tests.js
          @@ -0,0 +1,261 @@
          +module('Data adapters - Tags');
          +
          +var SelectData = require('select2/data/select');
          +var Tags = require('select2/data/tags');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var SelectTags = Utils.Decorate(SelectData, Tags);
          +var options = new Options({
          +  tags: true
          +});
          +
          +test('does not trigger on blank or null terms', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: ''
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'One');
          +    assert.equal(item.text, 'One');
          +  });
          +
          +  data.query({
          +    term: null
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'One');
          +    assert.equal(item.text, 'One');
          +  });
          +});
          +
          +test('white space is trimmed by default', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: '  '
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'One');
          +    assert.equal(item.text, 'One');
          +  });
          +
          +  data.query({
          +    term: ' One '
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'One');
          +    assert.equal(item.text, 'One');
          +  });
          +});
          +
          +test('does not trigger for additional pages', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    page: 2
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'One');
          +    assert.equal(item.text, 'One');
          +  });
          +});
          +
          +test('creates tag at beginning', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: 'o'
          +  }, function (data) {
          +    assert.equal(data.results.length, 2);
          +
          +    var first = data.results[0];
          +
          +    assert.equal(first.id, 'o');
          +    assert.equal(first.text, 'o');
          +  });
          +});
          +
          +test('tags can be the only result', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: 'test'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'test');
          +    assert.equal(item.text, 'test');
          +  });
          +});
          +
          +test('tags are injected as options', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: 'test'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var $children = $('#qunit-fixture .single option');
          +
          +    assert.equal($children.length, 2);
          +
          +    var $tag = $children.last();
          +
          +    assert.equal($tag.val(), 'test');
          +    assert.equal($tag.text(), 'test');
          +  });
          +});
          +
          +test('old tags are removed automatically', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: 'first'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var $children = $('#qunit-fixture .single option');
          +
          +    assert.equal($children.length, 2);
          +  });
          +
          +  data.query({
          +    term: 'second'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var $children = $('#qunit-fixture .single option');
          +
          +    assert.equal($children.length, 2);
          +
          +    var $tag = $children.last();
          +
          +    assert.equal($tag.val(), 'second');
          +    assert.equal($tag.text(), 'second');
          +  });
          +});
          +
          +test('insertTag controls the tag location', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.insertTag = function (data, tag) {
          +    data.push(tag);
          +  };
          +
          +  data.query({
          +    term: 'o'
          +  }, function (data) {
          +    assert.equal(data.results.length, 2);
          +
          +    var item = data.results[1];
          +
          +    assert.equal(item.id, 'o');
          +    assert.equal(item.text, 'o');
          +  });
          +});
          +
          +test('insertTag can be controlled through the options', function (assert) {
          +  var options = new Options({
          +    insertTag: function (data, tag) {
          +      data.push(tag);
          +    }
          +  });
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.query({
          +    term: 'o'
          +  }, function (data) {
          +    assert.equal(data.results.length, 2);
          +
          +    var item = data.results[1];
          +
          +    assert.equal(item.id, 'o');
          +    assert.equal(item.text, 'o');
          +  });
          +});
          +
          +test('createTag controls the tag object', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.createTag = function (params) {
          +    return {
          +      id: 0,
          +      text: params.term
          +    };
          +  };
          +
          +  data.query({
          +    term: 'test'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 0);
          +    assert.equal(item.text, 'test');
          +  });
          +});
          +
          +test('createTag returns null for no tag', function (assert) {
          +  var data = new SelectTags($('#qunit-fixture .single'), options);
          +
          +  data.createTag = function (params) {
          +    return null;
          +  };
          +
          +  data.query({
          +    term: 'o'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +  });
          +});
          +
          +test('the createTag options customizes the function', function (assert) {
          +  var data = new SelectTags(
          +    $('#qunit-fixture .single'),
          +    new Options({
          +      tags: true,
          +      createTag: function (params) {
          +        return {
          +          id: params.term,
          +          text: params.term,
          +          tag: true
          +        };
          +      }
          +    })
          +  );
          +
          +  data.query({
          +    term: 'test'
          +  }, function (data) {
          +    assert.equal(data.results.length, 1);
          +
          +    var item = data.results[0];
          +
          +    assert.equal(item.id, 'test');
          +    assert.equal(item.text, 'test');
          +    assert.equal(item.tag, true);
          +  });
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/data/tokenizer-tests.js b/public/theme/select2/tests/data/tokenizer-tests.js
          new file mode 100644
          index 0000000..2fa0121
          --- /dev/null
          +++ b/public/theme/select2/tests/data/tokenizer-tests.js
          @@ -0,0 +1,219 @@
          +module('Data adaptor - Tokenizer');
          +
          +test('triggers the select event', function (assert) {
          +  assert.expect(2);
          +
          +  var SelectData = require('select2/data/select');
          +  var Tokenizer = require('select2/data/tokenizer');
          +  var Tags = require('select2/data/tags');
          +
          +  var Options = require('select2/options');
          +  var Utils = require('select2/utils');
          +
          +  var $ = require('jquery');
          +
          +  var TokenizedSelect = Utils.Decorate(
          +    Utils.Decorate(SelectData, Tags),
          +    Tokenizer
          +  );
          +  var $select = $('#qunit-fixture .single');
          +
          +  var options = new Options({
          +    tags: true,
          +    tokenSeparators: [',']
          +  });
          +
          +  var container = new MockContainer();
          +  container.dropdown = container.selection = {};
          +
          +  var $container = $('<div></div>');
          +
          +  var data = new TokenizedSelect($select, options);
          +  data.bind(container, $container);
          +
          +  data.on('select', function () {
          +    assert.ok(true, 'The select event should be triggered');
          +  });
          +
          +  data.query({
          +    term: 'first,second'
          +  }, function () {
          +    assert.ok(true, 'The callback should have succeeded');
          +  });
          +});
          +
          +test('createTag can return null', function (assert) {
          +  assert.expect(3);
          +
          +  var SelectData = require('select2/data/select');
          +  var Tokenizer = require('select2/data/tokenizer');
          +  var Tags = require('select2/data/tags');
          +
          +  var Options = require('select2/options');
          +  var Utils = require('select2/utils');
          +
          +  var $ = require('jquery');
          +
          +  var TokenizedSelect = Utils.Decorate(
          +    Utils.Decorate(SelectData, Tags),
          +    Tokenizer
          +  );
          +  var $select = $('#qunit-fixture .single');
          +
          +  var options = new Options({
          +    tags: true,
          +    tokenSeparators: [','],
          +    createTag: function () {
          +      assert.ok(true, 'createTag should have been called');
          +
          +      return null;
          +    }
          +  });
          +
          +  var container = new MockContainer();
          +  container.dropdown = container.selection = {};
          +
          +  var $container = $('<div></div>');
          +
          +  var data = new TokenizedSelect($select, options);
          +  data.bind(container, $container);
          +
          +  data.on('select', function (params) {
          +    if (params.data == null) {
          +      assert.ok(false, 'Null data should never be selected');
          +    }
          +  });
          +
          +  data.query({
          +    term: 'first,second'
          +  }, function () {
          +    assert.ok(true, 'The callback should have succeeded');
          +  });
          +});
          +
          +test('createTag returning null does not cut the term', function (assert) {
          +  assert.expect(4);
          +
          +  var SelectData = require('select2/data/select');
          +  var Tokenizer = require('select2/data/tokenizer');
          +  var Tags = require('select2/data/tags');
          +
          +  var Options = require('select2/options');
          +  var Utils = require('select2/utils');
          +
          +  var $ = require('jquery');
          +
          +  var TokenizedSelect = Utils.Decorate(
          +    Utils.Decorate(SelectData, Tags),
          +    Tokenizer
          +  );
          +  var $select = $('#qunit-fixture .single');
          +
          +  var options = new Options({
          +    tags: true,
          +    tokenSeparators: [',', '"'],
          +    createTag: function (params) {
          +      var term = params.term;
          +
          +      // Ignore blanks
          +      if (term.length === 0) {
          +        return null;
          +      }
          +
          +      // Ignore the leading quote
          +      if (term === '"') {
          +        return null;
          +      }
          +
          +      // If there is a leading quote, check for a second one
          +      if (term[0] === '"' && term[term.length - 1] !== '"') {
          +        return null;
          +      }
          +
          +      var text = term.substr(1, term.length - 2);
          +
          +      return {
          +        id: term,
          +        text: text
          +      };
          +    }
          +  });
          +
          +  var container = new MockContainer();
          +  container.dropdown = container.selection = {};
          +
          +  var $container = $('<div></div>');
          +
          +  var data = new TokenizedSelect($select, options);
          +  data.bind(container, $container);
          +
          +  data.on('select', function (params) {
          +    assert.ok(params.data, 'Data should not be null');
          +
          +    assert.equal(
          +      params.data.id,
          +      '"first, second"',
          +      'The id should have the quotes'
          +    );
          +
          +    assert.equal(
          +      params.data.text,
          +      'first, second',
          +      'The text should not have the quotes'
          +    );
          +  });
          +
          +  data.query({
          +    term: '"first, second",abc'
          +  }, function () {
          +    assert.ok(true, 'The callback should have succeeded');
          +  });
          +});
          +
          +test('works with multiple tokens given', function (assert) {
          +  assert.expect(4);
          +
          +  var SelectData = require('select2/data/select');
          +  var Tokenizer = require('select2/data/tokenizer');
          +  var Tags = require('select2/data/tags');
          +
          +  var Options = require('select2/options');
          +  var Utils = require('select2/utils');
          +
          +  var $ = require('jquery');
          +
          +  var TokenizedSelect = Utils.Decorate(
          +    Utils.Decorate(SelectData, Tags),
          +    Tokenizer
          +  );
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var options = new Options({
          +    tags: true,
          +    tokenSeparators: [',']
          +  });
          +
          +  var container = new MockContainer();
          +  container.dropdown = container.selection = {};
          +
          +  var $container = $('<div></div>');
          +
          +  var data = new TokenizedSelect($select, options);
          +  data.bind(container, $container);
          +
          +  data.on('select', function () {
          +    assert.ok(true, 'The select event should be triggered');
          +  });
          +
          +  data.query({
          +    term: 'first,second,third'
          +  }, function () {
          +    assert.ok(true, 'The callback should have succeeded');
          +  });
          +
          +  assert.equal(
          +    $select.children('option').length,
          +    3,
          +    'The two new tags should have been created'
          +  );
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/dropdown/dropdownCss-tests.js b/public/theme/select2/tests/dropdown/dropdownCss-tests.js
          new file mode 100644
          index 0000000..9969335
          --- /dev/null
          +++ b/public/theme/select2/tests/dropdown/dropdownCss-tests.js
          @@ -0,0 +1,104 @@
          +module('Dropdown - dropdownCssClass compatibility');
          +
          +var $ = require('jquery');
          +var Utils = require('select2/utils');
          +var Options = require('select2/options');
          +
          +var Dropdown = require('select2/dropdown');
          +var DropdownCSS = Utils.Decorate(
          +  Dropdown,
          +  require('select2/compat/dropdownCss')
          +);
          +
          +test('all classes will be copied if :all: is used', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    dropdownCssClass: ':all:'
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok($dropdown.hasClass('test'));
          +  assert.ok($dropdown.hasClass('copy'));
          +  assert.ok($dropdown.hasClass('works'));
          +  assert.ok(!$dropdown.hasClass(':all:'));
          +});
          +
          +test(':all: can be used with other classes', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    dropdownCssClass: ':all: other'
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok($dropdown.hasClass('test'));
          +  assert.ok($dropdown.hasClass('copy'));
          +  assert.ok($dropdown.hasClass('works'));
          +  assert.ok($dropdown.hasClass('other'));
          +  assert.ok(!$dropdown.hasClass(':all:'));
          +});
          +
          +test('classes can be passed in as a string', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    dropdownCssClass: 'other'
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok($dropdown.hasClass('other'));
          +});
          +
          +test('a function can be used based on the element', function (assert){
          +  var $element = $('<select class="test"></select>');
          +  var options = new Options({
          +    dropdownCssClass: function ($element) {
          +      return 'function';
          +    }
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok($dropdown.hasClass('function'));
          +  assert.ok(!$dropdown.hasClass('test'));
          +});
          +
          +test(':all: works around custom adapters', function (assert) {
          +  var $element = $('<select class="test"></select>');
          +  var options = new Options({
          +    dropdownCssClass: ':all: something',
          +    adaptDropdownCssClass: function (clazz) {
          +      return clazz + '-modified';
          +    }
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok($dropdown.hasClass('something'));
          +
          +  assert.ok($dropdown.hasClass('test'));
          +  assert.ok($dropdown.hasClass('test-modified'));
          +});
          +
          +module('Dropdown - adaptDropdownCss compatibility');
          +
          +test('only return when adapted', function (assert) {
          +  var $element = $('<select class="original"></select>');
          +  var options = new Options({
          +    adaptDropdownCssClass: function (clazz) {
          +      return 'modified';
          +    }
          +  });
          +
          +  var select = new DropdownCSS($element, options);
          +  var $dropdown = select.render();
          +
          +  assert.ok(!$dropdown.hasClass('original'));
          +  assert.ok($dropdown.hasClass('modified'));
          +});
          diff --git a/public/theme/select2/tests/dropdown/positioning-tests.js b/public/theme/select2/tests/dropdown/positioning-tests.js
          new file mode 100644
          index 0000000..37c2b06
          --- /dev/null
          +++ b/public/theme/select2/tests/dropdown/positioning-tests.js
          @@ -0,0 +1,177 @@
          +module('Dropdown - attachBody - positioning');
          +
          +test('appends to the dropdown parent', function (assert) {
          +    assert.expect(4);
          +
          +    var $ = require('jquery');
          +
          +    var $select = $('<select></select>');
          +    var $parent = $('<div></div>');
          +
          +    var $container = $('<span></span>');
          +    var container = new MockContainer();
          +
          +    $parent.appendTo($('#qunit-fixture'));
          +    $select.appendTo($parent);
          +
          +    var Utils = require('select2/utils');
          +    var Options = require('select2/options');
          +
          +    var Dropdown = require('select2/dropdown');
          +    var AttachBody = require('select2/dropdown/attachBody');
          +
          +    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
          +
          +    var dropdown = new DropdownAdapter($select, new Options({
          +        dropdownParent: $parent
          +    }));
          +
          +    assert.equal(
          +        $parent.children().length,
          +        1,
          +        'Only the select should be in the container'
          +    );
          +
          +    var $dropdown = dropdown.render();
          +
          +    dropdown.bind(container, $container);
          +
          +    dropdown.position($dropdown, $container);
          +
          +    assert.equal(
          +        $parent.children().length,
          +        1,
          +        'The dropdown should not be placed until after it is opened'
          +    );
          +
          +    dropdown._showDropdown();
          +
          +    assert.equal(
          +        $parent.children().length,
          +        2,
          +        'The dropdown should now be in the container as well'
          +    );
          +
          +    assert.ok(
          +        $.contains($parent[0], $dropdown[0]),
          +        'The dropdown should be contained within the parent container'
          +    );
          +});
          +
          +test('dropdown is positioned down with static margins', function (assert) {
          +    var $ = require('jquery');
          +    var $select = $('<select></select>');
          +    var $parent = $('<div></div>');
          +    $parent.css({
          +        position: 'static',
          +        marginTop: '5px',
          +        marginLeft: '10px'
          +    });
          +
          +    var $container = $('<span>test</span>');
          +    var container = new MockContainer();
          +
          +    $('#qunit-fixture').empty();
          +
          +    $parent.appendTo($('#qunit-fixture'));
          +    $container.appendTo($parent);
          +
          +    var Utils = require('select2/utils');
          +    var Options = require('select2/options');
          +
          +    var Dropdown = require('select2/dropdown');
          +    var AttachBody = require('select2/dropdown/attachBody');
          +
          +    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
          +
          +    var dropdown = new DropdownAdapter($select, new Options({
          +        dropdownParent: $parent
          +    }));
          +
          +    var $dropdown = dropdown.render();
          +
          +    assert.equal(
          +        $dropdown[0].style.top,
          +        0,
          +        'The drodpown should not have any offset before it is displayed'
          +    );
          +
          +    dropdown.bind(container, $container);
          +    dropdown.position($dropdown, $container);
          +    dropdown._showDropdown();
          +
          +    assert.ok(
          +        dropdown.$dropdown.hasClass('select2-dropdown--below'),
          +        'The dropdown should be forced down'
          +    );
          +
          +    assert.equal(
          +        $dropdown.css('top').substring(0, 2),
          +        $container.outerHeight() + 5,
          +        'The offset should be 5px at the top'
          +    );
          +
          +    assert.equal(
          +        $dropdown.css('left'),
          +        '10px',
          +        'The offset should be 10px on the left'
          +    );
          +});
          +
          +test('dropdown is positioned down with absolute offsets', function (assert) {
          +    var $ = require('jquery');
          +    var $select = $('<select></select>');
          +    var $parent = $('<div></div>');
          +    $parent.css({
          +        position: 'absolute',
          +        top: '10px',
          +        left: '5px'
          +    });
          +
          +    var $container = $('<span>test</span>');
          +    var container = new MockContainer();
          +
          +    $parent.appendTo($('#qunit-fixture'));
          +    $container.appendTo($parent);
          +
          +    var Utils = require('select2/utils');
          +    var Options = require('select2/options');
          +
          +    var Dropdown = require('select2/dropdown');
          +    var AttachBody = require('select2/dropdown/attachBody');
          +
          +    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
          +
          +    var dropdown = new DropdownAdapter($select, new Options({
          +        dropdownParent: $parent
          +    }));
          +
          +    var $dropdown = dropdown.render();
          +
          +    assert.equal(
          +        $dropdown[0].style.top,
          +        0,
          +        'The drodpown should not have any offset before it is displayed'
          +    );
          +
          +    dropdown.bind(container, $container);
          +    dropdown.position($dropdown, $container);
          +    dropdown._showDropdown();
          +
          +    assert.ok(
          +        dropdown.$dropdown.hasClass('select2-dropdown--below'),
          +        'The dropdown should be forced down'
          +    );
          +
          +    assert.equal(
          +        $dropdown.css('top').substring(0, 2),
          +        $container.outerHeight(),
          +        'There should not be an extra top offset'
          +    );
          +
          +    assert.equal(
          +        $dropdown.css('left'),
          +        '0px',
          +        'There should not be an extra left offset'
          +    );
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/dropdown/selectOnClose-tests.js b/public/theme/select2/tests/dropdown/selectOnClose-tests.js
          new file mode 100644
          index 0000000..3f1d1d4
          --- /dev/null
          +++ b/public/theme/select2/tests/dropdown/selectOnClose-tests.js
          @@ -0,0 +1,137 @@
          +module('Dropdown - selectOnClose');
          +
          +var $ = require('jquery');
          +
          +var Utils = require('select2/utils');
          +var Options = require('select2/options');
          +
          +var SelectData = require('select2/data/select');
          +
          +var Results = require('select2/results');
          +var SelectOnClose = require('select2/dropdown/selectOnClose');
          +
          +var ModifiedResults = Utils.Decorate(Results, SelectOnClose);
          +
          +var options = new Options({
          +  selectOnClose: true
          +});
          +
          +test('will not trigger if no results were given', function (assert) {
          +  assert.expect(0);
          +
          +  var $element = $('<select></select>');
          +  var select = new ModifiedResults($element, options, new SelectData($element));
          +
          +  var $dropdown = select.render();
          +
          +  var container = new MockContainer();
          +  select.bind(container, $('<div></div>'));
          +
          +  select.on('select', function () {
          +    assert.ok(false, 'The select event should not have been triggered');
          +  });
          +
          +  container.trigger('close');
          +});
          +
          +test('will not trigger if the results list is empty', function (assert) {
          +  assert.expect(1);
          +
          +  var $element = $('<select></select>');
          +  var select = new ModifiedResults($element, options, new SelectData($element));
          +
          +  var $dropdown = select.render();
          +
          +  var container = new MockContainer();
          +  select.bind(container, $('<div></div>'));
          +
          +  select.on('select', function () {
          +    assert.ok(false, 'The select event should not have been triggered');
          +  });
          +
          +  select.append({
          +    results: []
          +  });
          +
          +  assert.equal(
          +    $dropdown.find('li').length,
          +    0,
          +    'There should not be any results in the dropdown'
          +  );
          +
          +  container.trigger('close');
          +});
          +
          +test('will not trigger if no results here highlighted', function (assert) {
          +  assert.expect(2);
          +
          +  var $element = $('<select></select>');
          +  var select = new ModifiedResults($element, options, new SelectData($element));
          +
          +  var $dropdown = select.render();
          +
          +  var container = new MockContainer();
          +  select.bind(container, $('<div></div>'));
          +
          +  select.on('select', function () {
          +    assert.ok(false, 'The select event should not have been triggered');
          +  });
          +
          +  select.append({
          +    results: [
          +      {
          +        id: '1',
          +        text: 'Test'
          +      }
          +    ]
          +  });
          +
          +  assert.equal(
          +    $dropdown.find('li').length,
          +    1,
          +    'There should be one result in the dropdown'
          +  );
          +
          +  assert.equal(
          +    $.trim($dropdown.find('li').text()),
          +    'Test',
          +    'The result should be the same as the one we appended'
          +  );
          +
          +  container.trigger('close');
          +});
          +
          +test('will trigger if there is a highlighted result', function (assert) {
          +  assert.expect(2);
          +
          +  var $element = $('<select></select>');
          +  var select = new ModifiedResults($element, options, new SelectData($element));
          +
          +  var $dropdown = select.render();
          +
          +  var container = new MockContainer();
          +  select.bind(container, $('<div></div>'));
          +
          +  select.on('select', function () {
          +    assert.ok(true, 'The select event should have been triggered');
          +  });
          +
          +  select.append({
          +    results: [
          +      {
          +        id: '1',
          +        text: 'Test'
          +      }
          +    ]
          +  });
          +
          +  assert.equal(
          +    $dropdown.find('li').length,
          +    1,
          +    'There should be one result in the dropdown'
          +  );
          +
          +  $dropdown.find('li').addClass('select2-results__option--highlighted');
          +
          +  container.trigger('close');
          +});
          diff --git a/public/theme/select2/tests/dropdown/stopPropagation-tests.js b/public/theme/select2/tests/dropdown/stopPropagation-tests.js
          new file mode 100644
          index 0000000..240a3e6
          --- /dev/null
          +++ b/public/theme/select2/tests/dropdown/stopPropagation-tests.js
          @@ -0,0 +1,33 @@
          +module('Dropdown - Stoping event propagation');
          +
          +var Dropdown = require('select2/dropdown');
          +var StopPropagation = require('select2/dropdown/stopPropagation');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var CustomDropdown = Utils.Decorate(Dropdown, StopPropagation);
          +
          +var options = new Options();
          +
          +test('click event does not propagate', function (assert) {
          +  assert.expect(1);
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var dropdown = new CustomDropdown($('#qunit-fixture select'), options);
          +
          +  var $dropdown = dropdown.render();
          +  dropdown.bind(container, $container);
          +
          +  $container.append($dropdown);
          +  $container.on('click', function () {
          +    assert.ok(false, 'The click event should have been stopped');
          +  });
          +
          +  $dropdown.trigger('click');
          +
          +  assert.ok(true, 'Something went wrong if this failed');
          +});
          diff --git a/public/theme/select2/tests/helpers.js b/public/theme/select2/tests/helpers.js
          new file mode 100644
          index 0000000..e0c9fa2
          --- /dev/null
          +++ b/public/theme/select2/tests/helpers.js
          @@ -0,0 +1,46 @@
          +// Restore the require/define
          +var require = $.fn.select2.amd.require;
          +var define = $.fn.select2.amd.define;
          +
          +// Disable jQuery's binding to $
          +jQuery.noConflict();
          +
          +var Utils = require('select2/utils');
          +
          +function MockContainer () {
          +  MockContainer.__super__.constructor.call(this);
          +}
          +
          +Utils.Extend(MockContainer, Utils.Observable);
          +
          +MockContainer.prototype.isOpen = function () {
          +  return this.isOpen;
          +};
          +
          +var log = [];
          +var testName;
          +
          +QUnit.done(function (test_results) {
          +  var tests = [];
          +  for(var i = 0, len = log.length; i < len; i++) {
          +    var details = log[i];
          +    tests.push({
          +      name: details.name,
          +      result: details.result,
          +      expected: details.expected,
          +      actual: details.actual,
          +      source: details.source
          +    });
          +  }
          +  test_results.tests = tests;
          +
          +  window.global_test_results = test_results;
          +});
          +QUnit.testStart(function(testDetails){
          +  QUnit.log(function(details){
          +    if (!details.result) {
          +      details.name = testDetails.name;
          +      log.push(details);
          +    }
          +  });
          +});
          diff --git a/public/theme/select2/tests/integration.html b/public/theme/select2/tests/integration.html
          new file mode 100644
          index 0000000..d8d0ef5
          --- /dev/null
          +++ b/public/theme/select2/tests/integration.html
          @@ -0,0 +1,21 @@
          +<!doctype html>
          +<html>
          +  <head>
          +    <link rel="stylesheet" href="vendor/qunit-1.23.1.css" type="text/css" />
          +    <link rel="stylesheet" href="../../dist/css/select2.css" type="text/css" />
          +  </head>
          +  <body>
          +    <div id="qunit"></div>
          +    <div id="qunit-fixture"></div>
          +
          +    <script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
          +    <script src="vendor/jquery-1.7.2.js" type="text/javascript"></script>
          +    <script src="../dist/js/select2.full.js" type="text/javascript"></script>
          +
          +    <script src="helpers.js" type="text/javascript"></script>
          +
          +    <script src="integration/dom-changes.js" type="text/javascript"></script>
          +    <script src="integration/jquery-calls.js" type="text/javascript"></script>
          +    <script src="integration/select2-methods.js" type="text/javascript"></script>
          +  </body>
          +</html>
          diff --git a/public/theme/select2/tests/integration/dom-changes.js b/public/theme/select2/tests/integration/dom-changes.js
          new file mode 100644
          index 0000000..2d89ae2
          --- /dev/null
          +++ b/public/theme/select2/tests/integration/dom-changes.js
          @@ -0,0 +1,257 @@
          +module('DOM integration');
          +
          +test('adding a new unselected option changes nothing', function (assert) {
          +  // Any browsers which support mutation observers will not trigger the event
          +  var expected = 4;
          +  if (window.MutationObserver) {
          +    expected = 2;
          +  } else if (!window.addEventListener) {
          +    expected = 2;
          +  }
          +
          +  assert.expect(expected);
          +
          +  var asyncDone = null;
          +  var syncDone = assert.async();
          +
          +  if (expected != 2) {
          +    asyncDone = assert.async();
          +  }
          +
          +  var $ = require('jquery');
          +  var Options = require('select2/options');
          +  var Select2 = require('select2/core');
          +
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +    '</select>'
          +  );
          +
          +  $('#qunit-fixture').append($select);
          +
          +  var select = new Select2($select);
          +
          +  select.on('selection:update', function (args) {
          +    assert.equal(
          +      args.data.length,
          +      1,
          +      'There was more than one selection'
          +    );
          +
          +    assert.equal(
          +      args.data[0].id,
          +      'One',
          +      'The selection changed to something other than One'
          +    );
          +
          +    if (expected != 2) {
          +      asyncDone();
          +    }
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  var $option = $('<option>Three</option>');
          +
          +  $select.append($option);
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  syncDone();
          +});
          +
          +test('adding a new selected option changes the value', function (assert) {
          +  // handle IE 8 not being supported
          +  var expected = 4;
          +  if (!window.MutationObserver && !window.addEventListener) {
          +    expected = 2;
          +  }
          +
          +  assert.expect(expected);
          +
          +  var asyncDone = null;
          +  var syncDone = assert.async();
          +
          +  if (expected != 2) {
          +    asyncDone = assert.async();
          +  }
          +
          +  var $ = require('jquery');
          +  var Options = require('select2/options');
          +  var Select2 = require('select2/core');
          +
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +    '</select>'
          +  );
          +
          +  $('#qunit-fixture').append($select);
          +
          +  var select = new Select2($select);
          +
          +  select.on('selection:update', function (args) {
          +    assert.equal(
          +      args.data.length,
          +      1,
          +      'There was more than one selection'
          +    );
          +
          +    assert.equal(
          +      args.data[0].id,
          +      'Three',
          +      'The selection did not change to Three'
          +    );
          +
          +    if (expected != 2) {
          +      asyncDone();
          +    }
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  var $option = $('<option selected>Three</option>');
          +
          +  $select.append($option);
          +
          +  assert.equal(
          +    $select.val(),
          +    'Three'
          +  );
          +
          +  syncDone();
          +});
          +
          +test('removing an unselected option changes nothing', function (assert) {
          +  // Any browsers which support mutation observers will not trigger the event
          +  var expected = 4;
          +  if (!window.MutationObserver && !window.addEventListener) {
          +    expected = 2;
          +  }
          +
          +  assert.expect(expected);
          +
          +  var asyncDone = null;
          +  var syncDone = assert.async();
          +
          +  if (expected != 2) {
          +    asyncDone = assert.async();
          +  }
          +
          +  var $ = require('jquery');
          +  var Options = require('select2/options');
          +  var Select2 = require('select2/core');
          +
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +    '</select>'
          +  );
          +
          +  $('#qunit-fixture').append($select);
          +
          +  var select = new Select2($select);
          +
          +  select.on('selection:update', function (args) {
          +    assert.equal(
          +      args.data.length,
          +      1,
          +      'There was more than one selection'
          +    );
          +
          +    assert.equal(
          +      args.data[0].id,
          +      'One',
          +      'The selection changed to something other than One'
          +    );
          +
          +    if (expected != 2) {
          +      asyncDone();
          +    }
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  $select.children().eq(1).remove();
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  syncDone();
          +});
          +
          +test('removing a selected option changes the value', function (assert) {
          +  // handle IE 8 not being supported
          +  var expected = 3;
          +  if (!window.MutationObserver && !window.addEventListener) {
          +    expected = 2;
          +  }
          +
          +  assert.expect(expected);
          +
          +  var asyncDone = null;
          +  var syncDone = assert.async();
          +
          +  if (expected != 2) {
          +    asyncDone = assert.async();
          +  }
          +
          +  var $ = require('jquery');
          +  var Options = require('select2/options');
          +  var Select2 = require('select2/core');
          +
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +    '</select>'
          +  );
          +
          +  $('#qunit-fixture').append($select);
          +
          +  var select = new Select2($select);
          +
          +  select.on('selection:update', function (args) {
          +    assert.equal(
          +      args.data.length,
          +      1,
          +      'There was more than one selection'
          +    );
          +
          +    if (expected != 2) {
          +      asyncDone();
          +    }
          +  });
          +
          +  assert.equal(
          +    $select.val(),
          +    'One'
          +  );
          +
          +  $select.children().eq(0).remove();
          +
          +  assert.equal(
          +    $select.val(),
          +    'Two'
          +  );
          +
          +  syncDone();
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/integration/jquery-calls.js b/public/theme/select2/tests/integration/jquery-calls.js
          new file mode 100644
          index 0000000..6a30137
          --- /dev/null
          +++ b/public/theme/select2/tests/integration/jquery-calls.js
          @@ -0,0 +1,30 @@
          +module('select2(val)');
          +
          +test('multiple elements with arguments works', function (assert) {
          +  var $ = require('jquery');
          +  require('jquery.select2');
          +
          +  var $first = $(
          +    '<select>' +
          +      '<option>1</option>' +
          +      '<option>2</option>' +
          +    '</select>'
          +  );
          +  var $second = $first.clone();
          +
          +  var $both = $first.add($second);
          +  $both.select2();
          +
          +  $both.select2('val', '2');
          +
          +  assert.equal(
          +    $first.val(),
          +    '2',
          +    'The call should change the value on the first element'
          +  );
          +  assert.equal(
          +    $second.val(),
          +    '2',
          +    'The call should also change the value on the second element'
          +  );
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/integration/select2-methods.js b/public/theme/select2/tests/integration/select2-methods.js
          new file mode 100644
          index 0000000..b1e344a
          --- /dev/null
          +++ b/public/theme/select2/tests/integration/select2-methods.js
          @@ -0,0 +1,139 @@
          +module('select2(data)');
          +
          +var $ = require('jquery');
          +var Select2 = require('select2/core');
          +var Options = require('select2/options');
          +
          +test('single default selection returned', function (assert) {
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +      '<option value="3" selected>Three</option>' +
          +    '</select>'
          +  );
          +  var options = new Options({});
          +
          +  var select = new Select2($select, options);
          +
          +  var items = select.data();
          +
          +  assert.equal(
          +    items.length,
          +    1,
          +    'The one selected item should be returned'
          +  );
          +
          +  var first = items[0];
          +
          +  assert.equal(
          +    first.id,
          +    '3',
          +    'The first option was correct'
          +  );
          +
          +  assert.equal(
          +    first.text,
          +    'Three',
          +    'The first option was correct'
          +  );
          +});
          +
          +test('multiple default selections returned', function (assert) {
          +  var $select = $(
          +    '<select multiple>' +
          +      '<option selected>One</option>' +
          +      '<option>Two</option>' +
          +      '<option value="3" selected>Three</option>' +
          +    '</select>'
          +  );
          +  var options = new Options({});
          +
          +  var select = new Select2($select, options);
          +
          +  var items = select.data();
          +
          +  assert.equal(
          +    items.length,
          +    2,
          +    'The two selected items should be returned'
          +  );
          +
          +  var first = items[0];
          +
          +  assert.equal(
          +    first.id,
          +    'One',
          +    'The first option was correct'
          +  );
          +
          +  var second = items[1];
          +
          +  assert.equal(
          +    second.id,
          +    '3',
          +    'The option value should be pulled correctly'
          +  );
          +});
          +
          +module('select2(val)');
          +
          +test('single value matches jquery value', function (assert) {
          +  var $select = $(
          +    '<select>' +
          +      '<option>One</option>' +
          +      '<option>Two</option>' +
          +      '<option value="3" selected>Three</option>' +
          +    '</select>'
          +  );
          +  var options = new Options({});
          +
          +  var select = new Select2($select, options);
          +
          +  var value = select.val();
          +
          +  assert.equal(
          +    value,
          +    '3',
          +    'The value should match the option tag attribute'
          +  );
          +
          +  assert.equal(
          +    value,
          +    $select.val(),
          +    'The value should match the jquery value'
          +  );
          +});
          +
          +test('multiple value matches the jquery value', function (assert) {
          +  var $select = $(
          +    '<select multiple>' +
          +      '<option selected>One</option>' +
          +      '<option>Two</option>' +
          +      '<option value="3" selected>Three</option>' +
          +    '</select>'
          +  );
          +  var options = new Options({});
          +
          +  var select = new Select2($select, options);
          +
          +  var value = select.val();
          +
          +  assert.equal(
          +    value.length,
          +    2,
          +    'Two options should be selected'
          +  );
          +
          +  assert.deepEqual(
          +    value,
          +    ['One', '3'],
          +    'The values should match the option tag attribute'
          +  );
          +
          +  assert.deepEqual(
          +    value,
          +    $select.val(),
          +    'The values should match the jquery values'
          +  );
          +});
          diff --git a/public/theme/select2/tests/options/ajax-tests.js b/public/theme/select2/tests/options/ajax-tests.js
          new file mode 100644
          index 0000000..7d8537a
          --- /dev/null
          +++ b/public/theme/select2/tests/options/ajax-tests.js
          @@ -0,0 +1,32 @@
          +module('Defaults - Ajax');
          +
          +test('options are merged recursively with default options', function (assert) {
          +  var defaults = require('select2/defaults');
          +
          +  var ajaxDelay = 250;
          +  var ajaxUrl = 'http://www.test.com';
          +
          +  var mergedOptions;
          +
          +  defaults.set('ajax--delay', ajaxDelay);
          +
          +  mergedOptions = defaults.apply({
          +    ajax: {
          +      url: ajaxUrl
          +    }
          +  });
          +
          +  assert.equal(
          +    mergedOptions.ajax.delay,
          +    ajaxDelay,
          +    'Ajax default options are present on the merged options'
          +  );
          +
          +  assert.equal(
          +    mergedOptions.ajax.url,
          +    ajaxUrl,
          +    'Ajax provided options are present on the merged options'
          +  );
          +
          +  defaults.reset();
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/options/data-tests.js b/public/theme/select2/tests/options/data-tests.js
          new file mode 100644
          index 0000000..107a2f0
          --- /dev/null
          +++ b/public/theme/select2/tests/options/data-tests.js
          @@ -0,0 +1,44 @@
          +module('Options - Attributes');
          +
          +var $ = require('jquery');
          +
          +var Options = require('select2/options');
          +
          +test('no nesting', function (assert) {
          +  var $test = $('<select data-test="test"></select>');
          +
          +  var options = new Options({}, $test);
          +
          +  assert.equal(options.get('test'), 'test');
          +});
          +
          +test('with nesting', function (assert) {
          +  var $test = $('<select data-first--second="test"></select>');
          +
          +  if ($test[0].dataset == null) {
          +    assert.ok(
          +      true,
          +      'We can not run this test with jQuery 1.x if dataset is not implemented'
          +    );
          +
          +    return;
          +  }
          +
          +  var options = new Options({}, $test);
          +
          +  assert.ok(!(options.get('first-Second')));
          +  assert.equal(options.get('first').second, 'test');
          +});
          +
          +test('overrides initialized data', function (assert) {
          +  var $test = $('<select data-override="yes" data-data="yes"></select>');
          +
          +  var options = new Options({
          +    options: 'yes',
          +    override: 'no'
          +  }, $test);
          +
          +  assert.equal(options.get('options'), 'yes');
          +  assert.equal(options.get('override'), 'yes');
          +  assert.equal(options.get('data'), 'yes');
          +});
          diff --git a/public/theme/select2/tests/options/deprecated-tests.js b/public/theme/select2/tests/options/deprecated-tests.js
          new file mode 100644
          index 0000000..a51bba3
          --- /dev/null
          +++ b/public/theme/select2/tests/options/deprecated-tests.js
          @@ -0,0 +1,250 @@
          +module('Options - Deprecated - initSelection');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +
          +test('converted into dataAdapter.current', function (assert) {
          +  assert.expect(5);
          +
          +  var $test = $('<select></select>');
          +  var called = false;
          +
          +  var options = new Options({
          +    initSelection: function ($element, callback) {
          +      called = true;
          +
          +      callback([{
          +        id: '1',
          +        text: '2'
          +      }]);
          +    }
          +  }, $test);
          +
          +  assert.ok(!called, 'initSelection should not have been called');
          +
          +  var DataAdapter = options.get('dataAdapter');
          +  var data = new DataAdapter($test, options);
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should have only been one object selected'
          +    );
          +
          +    var item = data[0];
          +
          +    assert.equal(
          +      item.id,
          +      '1',
          +      'The id should have been set by initSelection'
          +    );
          +
          +    assert.equal(
          +      item.text,
          +      '2',
          +      'The text should have been set by initSelection'
          +    );
          +  });
          +
          +  assert.ok(called, 'initSelection should have been called');
          +});
          +
          +test('single option converted to array automatically', function (assert) {
          +  assert.expect(2);
          +
          +  var $test = $('<select></select>');
          +  var called = false;
          +
          +  var options = new Options({
          +    initSelection: function ($element, callback) {
          +      called = true;
          +
          +      callback({
          +        id: '1',
          +        text: '2'
          +      });
          +    }
          +  }, $test);
          +
          +  var DataAdapter = options.get('dataAdapter');
          +  var data = new DataAdapter($test, options);
          +
          +  data.current(function (data) {
          +    assert.ok(
          +      $.isArray(data),
          +      'The data should have been converted to an array'
          +    );
          +  });
          +
          +  assert.ok(called, 'initSelection should have been called');
          +});
          +
          +test('only called once', function (assert) {
          +  assert.expect(8);
          +
          +  var $test = $('<select><option value="3" selected>4</option></select>');
          +  var called = 0;
          +
          +  var options = new Options({
          +    initSelection: function ($element, callback) {
          +      called++;
          +
          +      callback([{
          +        id: '1',
          +        text: '2'
          +      }]);
          +    }
          +  }, $test);
          +
          +  var DataAdapter = options.get('dataAdapter');
          +  var data = new DataAdapter($test, options);
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should have only been a single option'
          +    );
          +
          +    var item = data[0];
          +
          +    assert.equal(
          +      item.id,
          +      '1',
          +      'The id should match the one given by initSelection'
          +    );
          +
          +    assert.equal(
          +      item.text,
          +      '2',
          +      'The text should match the one given by initSelection'
          +    );
          +  });
          +
          +  assert.equal(
          +    called,
          +    1,
          +    'initSelection should have been called'
          +  );
          +
          +  data.current(function (data) {
          +    assert.equal(
          +      data.length,
          +      1,
          +      'There should have only been a single option'
          +    );
          +
          +    var item = data[0];
          +
          +    assert.equal(
          +      item.id,
          +      '3',
          +      'The id should match the value given in the DOM'
          +    );
          +
          +    assert.equal(
          +      item.text,
          +      '4',
          +      'The text should match the text given in the DOM'
          +    );
          +  });
          +
          +  assert.equal(
          +    called,
          +    1,
          +    'initSelection should have only been called once'
          +  );
          +});
          +
          +module('Options - Deprecated - query');
          +
          +test('converted into dataAdapter.query automatically', function (assert) {
          +  assert.expect(6);
          +
          +  var $test = $('<select></select>');
          +  var called = false;
          +
          +  var options = new Options({
          +    query: function (params) {
          +      called = true;
          +
          +      params.callback({
          +        results: [
          +          {
          +            id: 'test',
          +            text: params.term
          +          }
          +        ]
          +      });
          +    }
          +  }, $test);
          +
          +  assert.ok(!called, 'The query option should not have been called');
          +
          +  var DataAdapter = options.get('dataAdapter');
          +  var data = new DataAdapter($test, options);
          +
          +  data.query({
          +    term: 'term'
          +  }, function (data) {
          +    assert.ok(
          +      'results' in data,
          +      'It should have included the results key'
          +    );
          +
          +    assert.equal(
          +      data.results.length,
          +      1,
          +      'There should have only been a single result returned'
          +    );
          +
          +    var item = data.results[0];
          +
          +    assert.equal(
          +      item.id,
          +      'test',
          +      'The id should have been returned from the query function'
          +    );
          +
          +    assert.equal(
          +      item.text,
          +      'term',
          +      'The text should have matched the term that was passed in'
          +    );
          +  });
          +
          +  assert.ok(called, 'The query function should have been called');
          +});
          +
          +module('Options - deprecated - data-ajax-url');
          +
          +test('converted ajax-url to ajax--url automatically', function (assert) {
          +  var $test = $('<select data-ajax-url="test://url"></select>');
          +  var options = new Options({}, $test);
          +
          +  assert.ok(
          +    options.get('ajax'),
          +    'The `ajax` key was automatically created'
          +  );
          +  assert.equal(
          +    options.get('ajax').url,
          +    'test://url',
          +    'The `url` property for the `ajax` option was filled in correctly'
          +  );
          +});
          +
          +test('converted select2-tags to data/tags automatically', function (assert) {
          +  var $test = $('<select data-select2-tags="original data"></select>');
          +  var options = new Options({}, $test);
          +
          +  assert.ok(
          +    options.get('tags'),
          +    'The `tags` key is automatically set to true'
          +  );
          +  assert.equal(
          +    options.get('data'),
          +    'original data',
          +    'The `data` key is created with the original data'
          +  );
          +});
          diff --git a/public/theme/select2/tests/options/translation-tests.js b/public/theme/select2/tests/options/translation-tests.js
          new file mode 100644
          index 0000000..ab433b6
          --- /dev/null
          +++ b/public/theme/select2/tests/options/translation-tests.js
          @@ -0,0 +1,28 @@
          +module('Options - Translations');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +
          +test('partial dictionaries can be passed', function (assert) {
          +  var options = new Options({
          +    language: {
          +      searching: function () {
          +        return 'Something';
          +      }
          +    }
          +  });
          +
          +  var translations = options.get('translations');
          +
          +  assert.equal(
          +    translations.get('searching')(),
          +    'Something',
          +    'The partial dictionary still overrides translations'
          +  );
          +
          +  assert.equal(
          +    translations.get('noResults')(),
          +    'No results found',
          +    'You can still get English translations for keys not passed in'
          +  );
          +});
          diff --git a/public/theme/select2/tests/options/width-tests.js b/public/theme/select2/tests/options/width-tests.js
          new file mode 100644
          index 0000000..e724034
          --- /dev/null
          +++ b/public/theme/select2/tests/options/width-tests.js
          @@ -0,0 +1,66 @@
          +module('Options - Width');
          +
          +var $ = require('jquery');
          +
          +var Select2 = require('select2/core');
          +var select = new Select2($('<select></select>'));
          +
          +test('string passed as width', function (assert) {
          +  var $test = $('<select></select>');
          +
          +  var width = select._resolveWidth($test, '80%');
          +
          +  assert.equal(width, '80%');
          +});
          +
          +test('width from style attribute', function (assert) {
          +  var $test = $('<select style="width: 50%;"></selct>');
          +
          +  var width = select._resolveWidth($test, 'style');
          +
          +  assert.equal(width, '50%');
          +});
          +
          +test('width from style returns null if nothing is found', function (assert) {
          +  var $test = $('<select></selct>');
          +
          +  var width = select._resolveWidth($test, 'style');
          +
          +  assert.equal(width, null);
          +});
          +
          +test('width from computed element width', function (assert) {
          +  var $style = $(
          +    '<style type="text/css">.css-set-width { width: 500px; }</style>'
          +  );
          +  var $test = $('<select class="css-set-width"></select>');
          +
          +  $('#qunit-fixture').append($style);
          +  $('#qunit-fixture').append($test);
          +
          +  var width = select._resolveWidth($test, 'element');
          +
          +  assert.equal(width, '500px');
          +});
          +
          +test('resolve gets the style if it is there', function (assert) {
          +  var $test = $('<select style="width: 20%;"></selct>');
          +
          +  var width = select._resolveWidth($test, 'resolve');
          +
          +  assert.equal(width, '20%');
          +});
          +
          +test('resolve falls back to element if there is no style', function (assert) {
          +  var $style = $(
          +    '<style type="text/css">.css-set-width { width: 500px; }</style>'
          +  );
          +  var $test = $('<select class="css-set-width"></select>');
          +
          +  $('#qunit-fixture').append($style);
          +  $('#qunit-fixture').append($test);
          +
          +  var width = select._resolveWidth($test, 'resolve');
          +
          +  assert.equal(width, '500px');
          +});
          diff --git a/public/theme/select2/tests/results/focusing-tests.js b/public/theme/select2/tests/results/focusing-tests.js
          new file mode 100644
          index 0000000..135d001
          --- /dev/null
          +++ b/public/theme/select2/tests/results/focusing-tests.js
          @@ -0,0 +1,138 @@
          +module('Results - highlighting results');
          +
          +test('results:all with no data skips results:focus', function (assert) {
          +  assert.expect(0);
          +
          +  var $ = require('jquery');
          +
          +  var $select = $('<select></select>');
          +  var $parent = $('<div></div>');
          +
          +  var $container = $('<span></span>');
          +  var container = new MockContainer();
          +
          +  $parent.appendTo($('#qunit-fixture'));
          +  $select.appendTo($parent);
          +
          +  var Utils = require('select2/utils');
          +  var Options = require('select2/options');
          +
          +  var Results = require('select2/results');
          +
          +  var results = new Results($select, new Options({}));
          +
          +  // Fake the data adapter for the `setClasses` method
          +  results.data = {};
          +  results.data.current = function (callback) {
          +    callback([{ id: 'test' }]);
          +  };
          +
          +  results.render();
          +
          +  results.bind(container, $container);
          +
          +  results.on('results:focus', function (params) {
          +    assert.ok(false, 'The results:focus event was triggered');
          +  });
          +
          +  container.trigger('results:all', {
          +    data: {
          +      results: []
          +    }
          +  });
          +});
          +
          +test('results:all triggers results:focus on the first item', function (assert) {
          +  assert.expect(2);
          +
          +  var $ = require('jquery');
          +
          +  var $select = $('<select></select>');
          +  var $parent = $('<div></div>');
          +
          +  var $container = $('<span></span>');
          +  var container = new MockContainer();
          +
          +  $parent.appendTo($('#qunit-fixture'));
          +  $select.appendTo($parent);
          +
          +  var Utils = require('select2/utils');
          +  var Options = require('select2/options');
          +
          +  var Results = require('select2/results');
          +
          +  var results = new Results($select, new Options({}));
          +
          +  // Fake the data adapter for the `setClasses` method
          +  results.data = {};
          +  results.data.current = function (callback) {
          +    callback([{ id: 'test' }]);
          +  };
          +
          +  results.render();
          +
          +  results.bind(container, $container);
          +
          +  results.on('results:focus', function (params) {
          +    assert.equal(params.data.id, 'test');
          +    assert.equal(params.data.text, 'Test');
          +  });
          +
          +  container.trigger('results:all', {
          +    data: {
          +      results: [
          +        {
          +          id: 'test',
          +          text: 'Test'
          +        }
          +      ]
          +    }
          +  });
          +});
          +
          +test('results:append does not trigger results:focus', function (assert) {
          +  assert.expect(0);
          +
          +  var $ = require('jquery');
          +
          +  var $select = $('<select></select>');
          +  var $parent = $('<div></div>');
          +
          +  var $container = $('<span></span>');
          +  var container = new MockContainer();
          +
          +  $parent.appendTo($('#qunit-fixture'));
          +  $select.appendTo($parent);
          +
          +  var Utils = require('select2/utils');
          +  var Options = require('select2/options');
          +
          +  var Results = require('select2/results');
          +
          +  var results = new Results($select, new Options({}));
          +
          +  // Fake the data adapter for the `setClasses` method
          +  results.data = {};
          +  results.data.current = function (callback) {
          +    callback([{ id: 'test' }]);
          +  };
          +
          +  results.render();
          +
          +  results.bind(container, $container);
          +
          +  results.on('results:focus', function () {
          +    assert.ok(false, 'The results:focus event was triggered');
          +  });
          +
          +  container.trigger('results:append', {
          +    data: {
          +      results: [
          +        {
          +          id: 'test',
          +          text: 'Test'
          +        }
          +      ]
          +    }
          +  });
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/selection/allowClear-tests.js b/public/theme/select2/tests/selection/allowClear-tests.js
          new file mode 100644
          index 0000000..efa132a
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/allowClear-tests.js
          @@ -0,0 +1,218 @@
          +module('Selection containers - Placeholders - Allow clear');
          +
          +var Placeholder = require('select2/selection/placeholder');
          +var AllowClear = require('select2/selection/allowClear');
          +
          +var SingleSelection = require('select2/selection/single');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var AllowClearPlaceholder = Utils.Decorate(
          +  Utils.Decorate(SingleSelection, Placeholder),
          +  AllowClear
          +);
          +
          +var allowClearOptions = new Options({
          +  placeholder: {
          +    id: 'placeholder',
          +    text: 'This is the placeholder'
          +  },
          +  allowClear: true
          +});
          +
          +test('clear is not displayed for single placeholder', function (assert) {
          +  var selection = new AllowClearPlaceholder(
          +    $('#qunit-fixture .single-with-placeholder'),
          +    allowClearOptions
          +  );
          +
          +  var $selection = selection.render();
          +
          +  selection.update([{
          +    id: 'placeholder'
          +  }]);
          +
          +  assert.equal(
          +    $selection.find('.select2-selection__clear').length,
          +    0,
          +    'The clear icon should not be displayed'
          +  );
          +});
          +
          +test('clear is not displayed for multiple placeholder', function (assert) {
          +  var selection = new AllowClearPlaceholder(
          +    $('#qunit-fixture .single-with-placeholder'),
          +    allowClearOptions
          +  );
          +
          +  var $selection = selection.render();
          +
          +  selection.update([]);
          +
          +  assert.equal(
          +    $selection.find('.select2-selection__clear').length,
          +    0,
          +    'The clear icon should not be displayed'
          +  );
          +});
          +
          +
          +test('clear is displayed for placeholder', function (assert) {
          +  var selection = new AllowClearPlaceholder(
          +    $('#qunit-fixture .single-with-placeholder'),
          +    allowClearOptions
          +  );
          +
          +  var $selection = selection.render();
          +
          +  selection.update([{
          +    id: 'one',
          +    test: 'one'
          +  }]);
          +
          +  assert.equal(
          +    $selection.find('.select2-selection__clear').length,
          +    1,
          +    'The clear icon should be displayed'
          +  );
          +});
          +
          +test('clicking clear will set the placeholder value', function (assert) {
          +  var $element = $('#qunit-fixture .single-with-placeholder');
          +
          +  var selection = new AllowClearPlaceholder(
          +    $element,
          +    allowClearOptions
          +  );
          +  var container = new MockContainer();
          +
          +  var $selection = selection.render();
          +
          +  selection.bind(container, $('<div></div'));
          +
          +  $element.val('One');
          +  selection.update([{
          +    id: 'One',
          +    text: 'One'
          +  }]);
          +
          +  var $remove = $selection.find('.select2-selection__clear');
          +  $remove.trigger('mousedown');
          +
          +  assert.equal(
          +    $element.val(),
          +    'placeholder',
          +    'The value should have been reset to the placeholder'
          +  );
          +});
          +
          +test('clicking clear will trigger the unselect event', function (assert) {
          +  assert.expect(3);
          +
          +  var $element = $('#qunit-fixture .single-with-placeholder');
          +
          +  var selection = new AllowClearPlaceholder(
          +    $element,
          +    allowClearOptions
          +  );
          +  var container = new MockContainer();
          +
          +  var $selection = selection.render();
          +
          +  selection.bind(container, $('<div></div'));
          +
          +  $element.val('One');
          +  selection.update([{
          +    id: 'One',
          +    text: 'One'
          +  }]);
          +
          +  selection.on('unselect', function (ev) {
          +    assert.ok(
          +      'data' in ev && ev.data,
          +      'The event should have been triggered with the data property'
          +    );
          +
          +    assert.ok(
          +      $.isPlainObject(ev.data),
          +      'The data should be an object'
          +    );
          +
          +    assert.equal(
          +      ev.data.id,
          +      'One',
          +      'The previous object should be unselected'
          +    );
          +  });
          +
          +  var $remove = $selection.find('.select2-selection__clear');
          +  $remove.trigger('mousedown');
          +});
          +
          +
          +
          +test('preventing the unselect event cancels the clearing', function (assert) {
          +  var $element = $('#qunit-fixture .single-with-placeholder');
          +
          +  var selection = new AllowClearPlaceholder(
          +    $element,
          +    allowClearOptions
          +  );
          +  var container = new MockContainer();
          +
          +  var $selection = selection.render();
          +
          +  selection.bind(container, $('<div></div'));
          +
          +  $element.val('One');
          +  selection.update([{
          +    id: 'One',
          +    text: 'One'
          +  }]);
          +
          +  selection.on('unselect', function (ev) {
          +    ev.prevented = true;
          +  });
          +
          +  var $remove = $selection.find('.select2-selection__clear');
          +  $remove.trigger('mousedown');
          +
          +  assert.equal(
          +    $element.val(),
          +    'One',
          +    'The placeholder should not have been set'
          +  );
          +});
          +
          +test('clear does not work when disabled', function (assert) {
          +  var $element = $('#qunit-fixture .single-with-placeholder');
          +
          +  var selection = new AllowClearPlaceholder(
          +    $element,
          +    allowClearOptions
          +  );
          +  var container = new MockContainer();
          +
          +  var $selection = selection.render();
          +
          +  selection.bind(container, $('<div></div'));
          +
          +  selection.update([{
          +    id: 'One',
          +    text: 'One'
          +  }]);
          +
          +  $element.val('One');
          +  selection.options.set('disabled', true);
          +
          +  var $remove = $selection.find('.select2-selection__clear');
          +  $remove.trigger('mousedown');
          +
          +  assert.equal(
          +    $element.val(),
          +    'One',
          +    'The placeholder should not have been set'
          +  );
          +});
          diff --git a/public/theme/select2/tests/selection/containerCss-tests.js b/public/theme/select2/tests/selection/containerCss-tests.js
          new file mode 100644
          index 0000000..522703a
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/containerCss-tests.js
          @@ -0,0 +1,104 @@
          +module('Dropdown - containerCssClass compatibility');
          +
          +var $ = require('jquery');
          +var Utils = require('select2/utils');
          +var Options = require('select2/options');
          +
          +var SingleSelection = require('select2/selection/single');
          +var ContainerCSS = Utils.Decorate(
          +  SingleSelection,
          +  require('select2/compat/containerCss')
          +);
          +
          +test('all classes will be copied if :all: is used', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    containerCssClass: ':all:'
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok($container.hasClass('test'));
          +  assert.ok($container.hasClass('copy'));
          +  assert.ok($container.hasClass('works'));
          +  assert.ok(!$container.hasClass(':all:'));
          +});
          +
          +test(':all: can be used with other classes', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    containerCssClass: ':all: other'
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok($container.hasClass('test'));
          +  assert.ok($container.hasClass('copy'));
          +  assert.ok($container.hasClass('works'));
          +  assert.ok($container.hasClass('other'));
          +  assert.ok(!$container.hasClass(':all:'));
          +});
          +
          +test('classes can be passed in as a string', function (assert) {
          +  var $element = $('<select class="test copy works"></select>');
          +  var options = new Options({
          +    containerCssClass: 'other'
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok($container.hasClass('other'));
          +});
          +
          +test('a function can be used based on the element', function (assert){
          +  var $element = $('<select class="test"></select>');
          +  var options = new Options({
          +    containerCssClass: function ($element) {
          +      return 'function';
          +    }
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok($container.hasClass('function'));
          +  assert.ok(!$container.hasClass('test'));
          +});
          +
          +test(':all: works around custom adapters', function (assert) {
          +  var $element = $('<select class="test"></select>');
          +  var options = new Options({
          +    containerCssClass: ':all: something',
          +    adaptContainerCssClass: function (clazz) {
          +      return clazz + '-modified';
          +    }
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok($container.hasClass('something'));
          +
          +  assert.ok($container.hasClass('test'));
          +  assert.ok($container.hasClass('test-modified'));
          +});
          +
          +module('Selection - adaptContainerCss compatibility');
          +
          +test('only return when adapted', function (assert) {
          +  var $element = $('<select class="original"></select>');
          +  var options = new Options({
          +    adaptContainerCssClass: function (clazz) {
          +      return 'modified';
          +    }
          +  });
          +
          +  var select = new ContainerCSS($element, options);
          +  var $container = select.render();
          +
          +  assert.ok(!$container.hasClass('original'));
          +  assert.ok($container.hasClass('modified'));
          +});
          diff --git a/public/theme/select2/tests/selection/multiple-tests.js b/public/theme/select2/tests/selection/multiple-tests.js
          new file mode 100644
          index 0000000..0d0f9c2
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/multiple-tests.js
          @@ -0,0 +1,149 @@
          +module('Selection containers - Multiple');
          +
          +var MultipleSelection = require('select2/selection/multiple');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var options = new Options({});
          +
          +test('display uses templateSelection', function (assert) {
          +  var called = false;
          +
          +  var templateOptions = new Options({
          +    templateSelection: function (data) {
          +      called = true;
          +
          +      return data.text;
          +    }
          +  });
          +
          +  var selection = new MultipleSelection(
          +    $('#qunit-fixture .multiple'),
          +    templateOptions
          +  );
          +
          +  var out = selection.display({
          +    text: 'test'
          +  });
          +
          +  assert.ok(called);
          +
          +  assert.equal(out, 'test');
          +});
          +
          +test('templateSelection can addClass', function (assert) {
          +  var called = false;
          +
          +  var templateOptions = new Options({
          +    templateSelection: function (data, container) {
          +      called = true;
          +      container.addClass('testclass');
          +      return data.text;
          +    }
          +  });
          +
          +  var selection = new MultipleSelection(
          +    $('#qunit-fixture .multiple'),
          +    templateOptions
          +  );
          +
          +  var $container = selection.selectionContainer();
          +
          +  var out = selection.display({
          +    text: 'test'
          +  }, $container);
          +
          +  assert.ok(called);
          +
          +  assert.equal(out, 'test');
          +
          +  assert.ok($container.hasClass('testclass'));
          +});
          +
          +test('empty update clears the selection', function (assert) {
          +  var selection = new MultipleSelection(
          +    $('#qunit-fixture .multiple'),
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  $rendered.text('testing');
          +
          +  selection.update([]);
          +
          +  assert.equal($rendered.text(), '');
          +});
          +
          +test('escapeMarkup is being used', function (assert) {
          +  var selection = new MultipleSelection(
          +    $('#qunit-fixture .multiple'),
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  var unescapedText = '<script>bad("stuff");</script>';
          +
          +  selection.update([{
          +    text: unescapedText
          +  }]);
          +
          +  assert.equal(
          +    $rendered.text().substr(1),
          +    unescapedText,
          +    'The text should be escaped by default to prevent injection'
          +  );
          +});
          +
          +test('clear button respects the disabled state', function (assert) {
          +  var options = new Options({
          +    disabled: true
          +  });
          +
          +  var $select = $('#qunit-fixture .multiple');
          +
          +  var container = new MockContainer();
          +  var $container = $('<div></div>');
          +
          +  var selection = new MultipleSelection(
          +    $select,
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  $container.append($selection);
          +
          +  selection.bind(container, $container);
          +
          +  // Select an option
          +  selection.update([{
          +    text: 'Test'
          +  }]);
          +
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  var $pill = $rendered.find('.select2-selection__choice');
          +
          +  assert.equal($pill.length, 1, 'There should only be one selection');
          +
          +  var $remove = $pill.find('.select2-selection__choice__remove');
          +
          +  assert.equal(
          +    $remove.length,
          +    1,
          +    'The remove icon is displayed for the selection'
          +  );
          +
          +  // Set up the unselect handler
          +  selection.on('unselect', function (params) {
          +    assert.ok(false, 'The unselect handler should not be triggered');
          +  });
          +
          +  // Trigger the handler for the remove icon
          +  $remove.trigger('click');
          +});
          diff --git a/public/theme/select2/tests/selection/placeholder-tests.js b/public/theme/select2/tests/selection/placeholder-tests.js
          new file mode 100644
          index 0000000..8a436ff
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/placeholder-tests.js
          @@ -0,0 +1,74 @@
          +module('Selection containers - Placeholders');
          +
          +var Placeholder = require('select2/selection/placeholder');
          +var SingleSelection = require('select2/selection/single');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var SinglePlaceholder = Utils.Decorate(SingleSelection, Placeholder);
          +
          +var placeholderOptions = new Options({
          +  placeholder: {
          +    id: 'placeholder',
          +    text: 'This is the placeholder'
          +  }
          +});
          +
          +test('normalizing placeholder ignores objects', function (assert) {
          +  var selection = new SinglePlaceholder(
          +    $('#qunit-fixture .single'),
          +    placeholderOptions
          +  );
          +
          +  var original = {
          +    id: 'test',
          +    text: 'testing'
          +  };
          +
          +  var normalized = selection.normalizePlaceholder(original);
          +
          +  assert.equal(original, normalized);
          +});
          +
          +test('normalizing placeholder gives object for string', function (assert) {
          +  var selection = new SinglePlaceholder(
          +    $('#qunit-fixture .single'),
          +    placeholderOptions
          +  );
          +
          +  var normalized = selection.normalizePlaceholder('placeholder');
          +
          +  assert.equal(normalized.id, '');
          +  assert.equal(normalized.text, 'placeholder');
          +});
          +
          +
          +test('text is shown for placeholder option on single', function (assert) {
          +  var selection = new SinglePlaceholder(
          +    $('#qunit-fixture .single'),
          +    placeholderOptions
          +  );
          +
          +  var $selection = selection.render();
          +
          +  selection.update([{
          +    id: 'placeholder'
          +  }]);
          +
          +  assert.equal($selection.text(), 'This is the placeholder');
          +});
          +
          +test('placeholder is shown when no options are selected', function (assert) {
          +  var selection = new SinglePlaceholder(
          +    $('#qunit-fixture .multiple'),
          +    placeholderOptions
          +  );
          +
          +  var $selection = selection.render();
          +
          +  selection.update([]);
          +
          +  assert.equal($selection.text(), 'This is the placeholder');
          +});
          diff --git a/public/theme/select2/tests/selection/search-tests.js b/public/theme/select2/tests/selection/search-tests.js
          new file mode 100644
          index 0000000..43345d7
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/search-tests.js
          @@ -0,0 +1,191 @@
          +module('Selection containers - Inline search');
          +
          +var MultipleSelection = require('select2/selection/multiple');
          +var InlineSearch = require('select2/selection/search');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var options = new Options({});
          +
          +test('backspace will remove a choice', function (assert) {
          +  assert.expect(3);
          +
          +  var KEYS = require('select2/keys');
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +
          +  var $element = $('#qunit-fixture .multiple');
          +  var selection = new CustomSelection($element, options);
          +
          +  var $selection = selection.render();
          +  selection.bind(container, $container);
          +
          +  // The unselect event should be triggered at some point
          +  selection.on('unselect', function () {
          +    assert.ok(true, 'A choice was unselected');
          +  });
          +
          +  // Add some selections and render the search
          +  selection.update([
          +    {
          +      id: '1',
          +      text: 'One'
          +    }
          +  ]);
          +
          +  var $search = $selection.find('input');
          +  var $choices = $selection.find('.select2-selection__choice');
          +
          +  assert.equal($search.length, 1, 'The search was visible');
          +  assert.equal($choices.length, 1, 'The choice was rendered');
          +
          +  // Trigger the backspace on the search
          +  var backspace = $.Event('keydown', {
          +    which: KEYS.BACKSPACE
          +  });
          +  $search.trigger(backspace);
          +});
          +
          +test('backspace will set the search text', function (assert) {
          +  assert.expect(3);
          +
          +  var KEYS = require('select2/keys');
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +
          +  var $element = $('#qunit-fixture .multiple');
          +  var selection = new CustomSelection($element, options);
          +
          +  var $selection = selection.render();
          +  selection.bind(container, $container);
          +
          +  // Add some selections and render the search
          +  selection.update([
          +    {
          +      id: '1',
          +      text: 'One'
          +    }
          +  ]);
          +
          +  var $search = $selection.find('input');
          +  var $choices = $selection.find('.select2-selection__choice');
          +
          +  assert.equal($search.length, 1, 'The search was visible');
          +  assert.equal($choices.length, 1, 'The choice was rendered');
          +
          +  // Trigger the backspace on the search
          +  var backspace = $.Event('keydown', {
          +    which: KEYS.BACKSPACE
          +  });
          +  $search.trigger(backspace);
          +
          +  assert.equal($search.val(), 'One', 'The search text was set');
          +});
          +
          +test('updating selection does not shift the focus', function (assert) {
          +  // Check for IE 8, which triggers a false negative during testing
          +  if (window.attachEvent && !window.addEventListener) {
          +    // We must expect 0 assertions or the test will fail
          +    assert.expect(0);
          +    return;
          +  }
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +
          +  var $element = $('#qunit-fixture .multiple');
          +  var selection = new CustomSelection($element, options);
          +
          +  var $selection = selection.render();
          +  selection.bind(container, $container);
          +
          +  // Update the selection so the search is rendered
          +  selection.update([]);
          +
          +  // Make it visible so the browser can place focus on the search
          +  $container.append($selection);
          +
          +  var $search = $selection.find('input');
          +  $search.trigger('focus');
          +
          +  assert.equal($search.length, 1, 'The search was not visible');
          +
          +  assert.equal(
          +    document.activeElement,
          +    $search[0],
          +    'The search did not have focus originally'
          +  );
          +
          +  // Trigger an update, this should redraw the search box
          +  selection.update([]);
          +
          +  assert.equal($search.length, 1, 'The search box disappeared');
          +
          +  assert.equal(
          +    document.activeElement,
          +    $search[0],
          +    'The search did not have focus after the selection was updated'
          +  );
          +});
          +
          +test('the focus event shifts the focus', function (assert) {
          +  // Check for IE 8, which triggers a false negative during testing
          +  if (window.attachEvent && !window.addEventListener) {
          +    // We must expect 0 assertions or the test will fail
          +    assert.expect(0);
          +    return;
          +  }
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
          +
          +  var $element = $('#qunit-fixture .multiple');
          +  var selection = new CustomSelection($element, options);
          +
          +  var $selection = selection.render();
          +  selection.bind(container, $container);
          +
          +  // Update the selection so the search is rendered
          +  selection.update([]);
          +
          +  // Make it visible so the browser can place focus on the search
          +  $container.append($selection);
          +
          +  // The search should not be automatically focused
          +
          +  var $search = $selection.find('input');
          +
          +  assert.notEqual(
          +    document.activeElement,
          +    $search[0],
          +    'The search had focus originally'
          +  );
          +
          +  assert.equal($search.length, 1, 'The search was not visible');
          +
          +  // Focus the container
          +
          +  container.trigger('focus');
          +
          +  // Make sure it focuses the search
          +
          +  assert.equal($search.length, 1, 'The search box disappeared');
          +
          +  assert.equal(
          +    document.activeElement,
          +    $search[0],
          +    'The search did not have focus originally'
          +  );
          +});
          \ No newline at end of file
          diff --git a/public/theme/select2/tests/selection/single-tests.js b/public/theme/select2/tests/selection/single-tests.js
          new file mode 100644
          index 0000000..2731b2a
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/single-tests.js
          @@ -0,0 +1,117 @@
          +module('Selection containers - Single');
          +
          +var SingleSelection = require('select2/selection/single');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var options = new Options({});
          +
          +test('display uses templateSelection', function (assert) {
          +  var called = false;
          +
          +  var templateOptions = new Options({
          +    templateSelection: function (data) {
          +      called = true;
          +
          +      return data.text;
          +    }
          +  });
          +
          +  var selection = new SingleSelection(
          +    $('#qunit-fixture .single'),
          +    templateOptions
          +  );
          +
          +  var out = selection.display({
          +    text: 'test'
          +  });
          +
          +  assert.ok(called);
          +
          +  assert.equal(out, 'test');
          +});
          +
          +test('templateSelection can addClass', function (assert) {
          +  var called = false;
          +
          +  var templateOptions = new Options({
          +    templateSelection: function (data, container) {
          +      called = true;
          +      container.addClass('testclass');
          +      return data.text;
          +    }
          +  });
          +
          +  var selection = new SingleSelection(
          +    $('#qunit-fixture .single'),
          +    templateOptions
          +  );
          +
          +  var $container = selection.selectionContainer();
          +  
          +  var out = selection.display({
          +    text: 'test'
          +  }, $container);
          +
          +  assert.ok(called);
          +
          +  assert.equal(out, 'test');
          +  
          +  assert.ok($container.hasClass('testclass'));
          +});
          +
          +test('empty update clears the selection', function (assert) {
          +  var selection = new SingleSelection(
          +    $('#qunit-fixture .single'),
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  $rendered.text('testing');
          +
          +  selection.update([]);
          +
          +  assert.equal($rendered.text(), '');
          +});
          +
          +test('update renders the data text', function (assert) {
          +  var selection = new SingleSelection(
          +    $('#qunit-fixture .single'),
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  selection.update([{
          +    text: 'test'
          +  }]);
          +
          +  assert.equal($rendered.text(), 'test');
          +});
          +
          +test('escapeMarkup is being used', function (assert) {
          +  var selection = new SingleSelection(
          +    $('#qunit-fixture .single'),
          +    options
          +  );
          +
          +  var $selection = selection.render();
          +  var $rendered = $selection.find('.select2-selection__rendered');
          +
          +  var unescapedText = '<script>bad("stuff");</script>';
          +
          +  selection.update([{
          +    text: unescapedText
          +  }]);
          +
          +  assert.equal(
          +    $rendered.text(),
          +    unescapedText,
          +    'The text should be escaped by default to prevent injection'
          +  );
          +});
          diff --git a/public/theme/select2/tests/selection/stopPropagation-tests.js b/public/theme/select2/tests/selection/stopPropagation-tests.js
          new file mode 100644
          index 0000000..d8d8897
          --- /dev/null
          +++ b/public/theme/select2/tests/selection/stopPropagation-tests.js
          @@ -0,0 +1,33 @@
          +module('Selection containers - Stoping event propagation');
          +
          +var SingleSelection = require('select2/selection/single');
          +var StopPropagation = require('select2/selection/stopPropagation');
          +
          +var $ = require('jquery');
          +var Options = require('select2/options');
          +var Utils = require('select2/utils');
          +
          +var CutomSelection = Utils.Decorate(SingleSelection, StopPropagation);
          +
          +var options = new Options();
          +
          +test('click event does not propagate', function (assert) {
          +  assert.expect(1);
          +
          +  var $container = $('#qunit-fixture .event-container');
          +  var container = new MockContainer();
          +
          +  var selection = new CutomSelection($('#qunit-fixture select'), options);
          +
          +  var $selection = selection.render();
          +  selection.bind(container, $container);
          +
          +  $container.append($selection);
          +  $container.on('click', function () {
          +    assert.ok(false, 'The click event should have been stopped');
          +  });
          +
          +  $selection.trigger('click');
          +
          +  assert.ok(true, 'Something went wrong if this failed');
          +});
          diff --git a/public/theme/select2/tests/unit.html b/public/theme/select2/tests/unit.html
          new file mode 100644
          index 0000000..384deb2
          --- /dev/null
          +++ b/public/theme/select2/tests/unit.html
          @@ -0,0 +1,95 @@
          +<!doctype html>
          +<html>
          +  <head>
          +    <link rel="stylesheet" href="vendor/qunit-1.23.1.css" type="text/css" />
          +    <link rel="stylesheet" href="../../dist/css/select2.css" type="text/css" />
          +  </head>
          +  <body>
          +    <div id="qunit"></div>
          +    <div id="qunit-fixture">
          +      <div class="event-container">
          +        <select></select>
          +      </div>
          +
          +      <select class="single">
          +        <option>One</option>
          +      </select>
          +
          +      <select class="single-empty"></select>
          +
          +      <select class="single-with-placeholder">
          +        <option>placeholder</option>
          +        <option>One</option>
          +      </select>
          +
          +      <select class="multiple" multiple="multiple">
          +        <option>One</option>
          +        <option>Two</option>
          +      </select>
          +
          +      <select class="groups">
          +        <optgroup label="Test">
          +          <option value="one">One</option>
          +          <option value="two">Two</option>
          +        </optgroup>
          +        <optgroup label="Empty"></optgroup>
          +      </select>
          +
          +      <select class="duplicates">
          +        <option value="one">One</option>
          +        <option value="two">Two</option>
          +        <option value="one">Uno</option>
          +      </select>
          +
          +      <select class="duplicates-multi" multiple="multiple">
          +        <option value="one">One</option>
          +        <option value="two">Two</option>
          +        <option value="one">Uno</option>
          +      </select>
          +    </div>
          +
          +    <script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
          +    <script src="vendor/jquery-1.7.2.js" type="text/javascript"></script>
          +    <script src="../dist/js/select2.full.js" type="text/javascript"></script>
          +
          +    <script src="helpers.js" type="text/javascript"></script>
          +
          +    <script src="a11y/selection-tests.js" type="text/javascript"></script>
          +    <script src="a11y/search-tests.js" type="text/javascript"></script>
          +
          +    <script src="data/array-tests.js" type="text/javascript"></script>
          +    <script src="data/base-tests.js" type="text/javascript"></script>
          +    <script src="data/inputData-tests.js" type="text/javascript"></script>
          +    <script src="data/select-tests.js" type="text/javascript"></script>
          +    <script src="data/tags-tests.js" type="text/javascript"></script>
          +    <script src="data/tokenizer-tests.js" type="text/javascript"></script>
          +
          +    <script src="data/maximumInputLength-tests.js" type="text/javascript"></script>
          +    <script src="data/maximumSelectionLength-tests.js" type="text/javascript"></script>
          +    <script src="data/minimumInputLength-tests.js" type="text/javascript"></script>
          +
          +    <script src="dropdown/dropdownCss-tests.js" type="text/javascript"></script>
          +    <script src="dropdown/positioning-tests.js" type="text/javascript"></script>
          +    <script src="dropdown/selectOnClose-tests.js" type="text/javascript"></script>
          +    <script src="dropdown/stopPropagation-tests.js" type="text/javascript"></script>
          +
          +    <script src="options/ajax-tests.js" type="text/javascript"></script>
          +    <script src="options/data-tests.js" type="text/javascript"></script>
          +    <script src="options/deprecated-tests.js" type="text/javascript"></script>
          +    <script src="options/translation-tests.js" type="text/javascript"></script>
          +    <script src="options/width-tests.js" type="text/javascript"></script>
          +
          +    <script src="results/focusing-tests.js" type="text/javascript"></script>
          +
          +    <script src="selection/allowClear-tests.js" type="text/javascript"></script>
          +    <script src="selection/containerCss-tests.js" type="text/javascript"></script>
          +    <script src="selection/multiple-tests.js" type="text/javascript"></script>
          +    <script src="selection/placeholder-tests.js" type="text/javascript"></script>
          +    <script src="selection/search-tests.js" type="text/javascript"></script>
          +    <script src="selection/single-tests.js" type="text/javascript"></script>
          +    <script src="selection/stopPropagation-tests.js" type="text/javascript"></script>
          +
          +    <script src="utils/decorator-tests.js" type="text/javascript"></script>
          +    <script src="utils/escapeMarkup-tests.js" type="text/javascript"></script>
          +  </body>
          +</html>
          diff --git a/public/theme/select2/tests/utils/decorator-tests.js b/public/theme/select2/tests/utils/decorator-tests.js
          new file mode 100644
          index 0000000..4888991
          --- /dev/null
          +++ b/public/theme/select2/tests/utils/decorator-tests.js
          @@ -0,0 +1,189 @@
          +module('Decorators');
          +
          +var Utils = require('select2/utils');
          +
          +test('overridden - method', function (assert) {
          +  function BaseClass () {}
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass () {}
          +
          +  DecoratorClass.prototype.hello = function () {
          +    return 'B';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.strictEqual(inst.hello(), 'B');
          +});
          +
          +test('overridden - constructor', function (assert) {
          +  function BaseClass () {
          +    this.inherited = true;
          +  }
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass (decorated) {
          +    this.called = true;
          +  }
          +
          +  DecoratorClass.prototype.other = function () {
          +    return 'B';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.ok(inst.called);
          +  assert.ok(!inst.inherited);
          +});
          +
          +test('not overridden - method', function (assert) {
          +  function BaseClass () {}
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass () {}
          +
          +  DecoratorClass.prototype.other = function () {
          +    return 'B';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.strictEqual(inst.hello(), 'A');
          +});
          +
          +test('not overridden - constructor', function (assert) {
          +  function BaseClass () {
          +    this.called = true;
          +  }
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass () {}
          +
          +  DecoratorClass.prototype.other = function () {
          +    return 'B';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.ok(inst.called);
          +});
          +
          +test('inherited - method', function (assert) {
          +  function BaseClass () {}
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass (decorated) {}
          +
          +  DecoratorClass.prototype.hello = function (decorated) {
          +    return 'B' + decorated.call(this) + 'C';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.strictEqual(inst.hello(), 'BAC');
          +});
          +
          +test('inherited - constructor', function (assert) {
          +  function BaseClass () {
          +    this.inherited = true;
          +  }
          +
          +  BaseClass.prototype.hello = function () {
          +    return 'A';
          +  };
          +
          +  function DecoratorClass (decorated) {
          +    this.called = true;
          +
          +    decorated.call(this);
          +  }
          +
          +  DecoratorClass.prototype.other = function () {
          +    return 'B';
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
          +
          +  var inst = new DecoratedClass();
          +
          +  assert.ok(inst.called);
          +  assert.ok(inst.inherited);
          +});
          +
          +test('inherited - three levels', function (assert) {
          +  function BaseClass (testArgument) {
          +    this.baseCalled = true;
          +    this.baseTestArgument = testArgument;
          +  }
          +
          +  BaseClass.prototype.test = function (a) {
          +    return a + 'c';
          +  };
          +
          +  function MiddleClass (decorated, testArgument) {
          +    this.middleCalled = true;
          +    this.middleTestArgument = testArgument;
          +
          +    decorated.call(this, testArgument);
          +  }
          +
          +  MiddleClass.prototype.test = function (decorated, a) {
          +    return decorated.call(this, a + 'b');
          +  };
          +
          +  function DecoratorClass (decorated, testArgument) {
          +    this.decoratorCalled = true;
          +    this.decoratorTestArgument = testArgument;
          +
          +    decorated.call(this, testArgument);
          +  }
          +
          +  DecoratorClass.prototype.test = function (decorated, a) {
          +    return decorated.call(this, a + 'a');
          +  };
          +
          +  var DecoratedClass = Utils.Decorate(
          +    Utils.Decorate(BaseClass, MiddleClass),
          +    DecoratorClass
          +  );
          +
          +  var inst = new DecoratedClass('test');
          +
          +  assert.ok(inst.baseCalled, 'The base class contructor was called');
          +  assert.ok(inst.middleCalled, 'The middle class constructor was called');
          +  assert.ok(inst.decoratorCalled, 'The decorator constructor was called');
          +
          +  assert.strictEqual(inst.baseTestArgument, 'test');
          +  assert.strictEqual(inst.middleTestArgument, 'test');
          +  assert.strictEqual(inst.decoratorTestArgument, 'test');
          +
          +  var out = inst.test('test');
          +
          +  assert.strictEqual(out, 'testabc');
          +});
          diff --git a/public/theme/select2/tests/utils/escapeMarkup-tests.js b/public/theme/select2/tests/utils/escapeMarkup-tests.js
          new file mode 100644
          index 0000000..726f09d
          --- /dev/null
          +++ b/public/theme/select2/tests/utils/escapeMarkup-tests.js
          @@ -0,0 +1,36 @@
          +module('Utils - escapeMarkup');
          +
          +var Utils = require('select2/utils');
          +
          +test('text passes through', function (assert) {
          +  var text = 'testing this';
          +  var escaped = Utils.escapeMarkup(text);
          +
          +  assert.equal(text, escaped);
          +});
          +
          +test('html tags are escaped', function (assert) {
          +  var text = '<script>alert("bad");</script>';
          +  var escaped = Utils.escapeMarkup(text);
          +
          +  assert.notEqual(text, escaped);
          +  assert.equal(escaped.indexOf('<script>'), -1);
          +});
          +
          +test('quotes are killed as well', function (assert) {
          +  var text = 'testin\' these "quotes"';
          +  var escaped = Utils.escapeMarkup(text);
          +
          +  assert.notEqual(text, escaped);
          +  assert.equal(escaped.indexOf('\''), -1);
          +  assert.equal(escaped.indexOf('"'), -1);
          +});
          +
          +test('DocumentFragment options pass through', function (assert) {
          +  var frag = document.createDocumentFragment();
          +  frag.innerHTML = '<strong>test</strong>';
          +
          +  var escaped = Utils.escapeMarkup(frag);
          +
          +  assert.equal(frag, escaped);
          +});
          diff --git a/public/theme/select2/tests/vendor/jquery-1.7.2.js b/public/theme/select2/tests/vendor/jquery-1.7.2.js
          new file mode 100644
          index 0000000..ceb681f
          --- /dev/null
          +++ b/public/theme/select2/tests/vendor/jquery-1.7.2.js
          @@ -0,0 +1,9404 @@
          +/*!
          + * jQuery JavaScript Library v1.7.2
          + * http://jquery.com/
          + *
          + * Copyright 2011, John Resig
          + * Dual licensed under the MIT or GPL Version 2 licenses.
          + * http://jquery.org/license
          + *
          + * Includes Sizzle.js
          + * http://sizzlejs.com/
          + * Copyright 2011, The Dojo Foundation
          + * Released under the MIT, BSD, and GPL Licenses.
          + *
          + * Date: Wed Mar 21 12:46:34 2012 -0700
          + */
          +(function( window, undefined ) {
          +
          +// Use the correct document accordingly with window argument (sandbox)
          +var document = window.document,
          +	navigator = window.navigator,
          +	location = window.location;
          +var jQuery = (function() {
          +
          +// Define a local copy of jQuery
          +var jQuery = function( selector, context ) {
          +		// The jQuery object is actually just the init constructor 'enhanced'
          +		return new jQuery.fn.init( selector, context, rootjQuery );
          +	},
          +
          +	// Map over jQuery in case of overwrite
          +	_jQuery = window.jQuery,
          +
          +	// Map over the $ in case of overwrite
          +	_$ = window.$,
          +
          +	// A central reference to the root jQuery(document)
          +	rootjQuery,
          +
          +	// A simple way to check for HTML strings or ID strings
          +	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
          +	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
          +
          +	// Check if a string has a non-whitespace character in it
          +	rnotwhite = /\S/,
          +
          +	// Used for trimming whitespace
          +	trimLeft = /^\s+/,
          +	trimRight = /\s+$/,
          +
          +	// Match a standalone tag
          +	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
          +
          +	// JSON RegExp
          +	rvalidchars = /^[\],:{}\s]*$/,
          +	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
          +	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
          +	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
          +
          +	// Useragent RegExp
          +	rwebkit = /(webkit)[ \/]([\w.]+)/,
          +	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
          +	rmsie = /(msie) ([\w.]+)/,
          +	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
          +
          +	// Matches dashed string for camelizing
          +	rdashAlpha = /-([a-z]|[0-9])/ig,
          +	rmsPrefix = /^-ms-/,
          +
          +	// Used by jQuery.camelCase as callback to replace()
          +	fcamelCase = function( all, letter ) {
          +		return ( letter + "" ).toUpperCase();
          +	},
          +
          +	// Keep a UserAgent string for use with jQuery.browser
          +	userAgent = navigator.userAgent,
          +
          +	// For matching the engine and version of the browser
          +	browserMatch,
          +
          +	// The deferred used on DOM ready
          +	readyList,
          +
          +	// The ready event handler
          +	DOMContentLoaded,
          +
          +	// Save a reference to some core methods
          +	toString = Object.prototype.toString,
          +	hasOwn = Object.prototype.hasOwnProperty,
          +	push = Array.prototype.push,
          +	slice = Array.prototype.slice,
          +	trim = String.prototype.trim,
          +	indexOf = Array.prototype.indexOf,
          +
          +	// [[Class]] -> type pairs
          +	class2type = {};
          +
          +jQuery.fn = jQuery.prototype = {
          +	constructor: jQuery,
          +	init: function( selector, context, rootjQuery ) {
          +		var match, elem, ret, doc;
          +
          +		// Handle $(""), $(null), or $(undefined)
          +		if ( !selector ) {
          +			return this;
          +		}
          +
          +		// Handle $(DOMElement)
          +		if ( selector.nodeType ) {
          +			this.context = this[0] = selector;
          +			this.length = 1;
          +			return this;
          +		}
          +
          +		// The body element only exists once, optimize finding it
          +		if ( selector === "body" && !context && document.body ) {
          +			this.context = document;
          +			this[0] = document.body;
          +			this.selector = selector;
          +			this.length = 1;
          +			return this;
          +		}
          +
          +		// Handle HTML strings
          +		if ( typeof selector === "string" ) {
          +			// Are we dealing with HTML string or an ID?
          +			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
          +				// Assume that strings that start and end with <> are HTML and skip the regex check
          +				match = [ null, selector, null ];
          +
          +			} else {
          +				match = quickExpr.exec( selector );
          +			}
          +
          +			// Verify a match, and that no context was specified for #id
          +			if ( match && (match[1] || !context) ) {
          +
          +				// HANDLE: $(html) -> $(array)
          +				if ( match[1] ) {
          +					context = context instanceof jQuery ? context[0] : context;
          +					doc = ( context ? context.ownerDocument || context : document );
          +
          +					// If a single string is passed in and it's a single tag
          +					// just do a createElement and skip the rest
          +					ret = rsingleTag.exec( selector );
          +
          +					if ( ret ) {
          +						if ( jQuery.isPlainObject( context ) ) {
          +							selector = [ document.createElement( ret[1] ) ];
          +							jQuery.fn.attr.call( selector, context, true );
          +
          +						} else {
          +							selector = [ doc.createElement( ret[1] ) ];
          +						}
          +
          +					} else {
          +						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
          +						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
          +					}
          +
          +					return jQuery.merge( this, selector );
          +
          +				// HANDLE: $("#id")
          +				} else {
          +					elem = document.getElementById( match[2] );
          +
          +					// Check parentNode to catch when Blackberry 4.6 returns
          +					// nodes that are no longer in the document #6963
          +					if ( elem && elem.parentNode ) {
          +						// Handle the case where IE and Opera return items
          +						// by name instead of ID
          +						if ( elem.id !== match[2] ) {
          +							return rootjQuery.find( selector );
          +						}
          +
          +						// Otherwise, we inject the element directly into the jQuery object
          +						this.length = 1;
          +						this[0] = elem;
          +					}
          +
          +					this.context = document;
          +					this.selector = selector;
          +					return this;
          +				}
          +
          +			// HANDLE: $(expr, $(...))
          +			} else if ( !context || context.jquery ) {
          +				return ( context || rootjQuery ).find( selector );
          +
          +			// HANDLE: $(expr, context)
          +			// (which is just equivalent to: $(context).find(expr)
          +			} else {
          +				return this.constructor( context ).find( selector );
          +			}
          +
          +		// HANDLE: $(function)
          +		// Shortcut for document ready
          +		} else if ( jQuery.isFunction( selector ) ) {
          +			return rootjQuery.ready( selector );
          +		}
          +
          +		if ( selector.selector !== undefined ) {
          +			this.selector = selector.selector;
          +			this.context = selector.context;
          +		}
          +
          +		return jQuery.makeArray( selector, this );
          +	},
          +
          +	// Start with an empty selector
          +	selector: "",
          +
          +	// The current version of jQuery being used
          +	jquery: "1.7.2",
          +
          +	// The default length of a jQuery object is 0
          +	length: 0,
          +
          +	// The number of elements contained in the matched element set
          +	size: function() {
          +		return this.length;
          +	},
          +
          +	toArray: function() {
          +		return slice.call( this, 0 );
          +	},
          +
          +	// Get the Nth element in the matched element set OR
          +	// Get the whole matched element set as a clean array
          +	get: function( num ) {
          +		return num == null ?
          +
          +			// Return a 'clean' array
          +			this.toArray() :
          +
          +			// Return just the object
          +			( num < 0 ? this[ this.length + num ] : this[ num ] );
          +	},
          +
          +	// Take an array of elements and push it onto the stack
          +	// (returning the new matched element set)
          +	pushStack: function( elems, name, selector ) {
          +		// Build a new jQuery matched element set
          +		var ret = this.constructor();
          +
          +		if ( jQuery.isArray( elems ) ) {
          +			push.apply( ret, elems );
          +
          +		} else {
          +			jQuery.merge( ret, elems );
          +		}
          +
          +		// Add the old object onto the stack (as a reference)
          +		ret.prevObject = this;
          +
          +		ret.context = this.context;
          +
          +		if ( name === "find" ) {
          +			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
          +		} else if ( name ) {
          +			ret.selector = this.selector + "." + name + "(" + selector + ")";
          +		}
          +
          +		// Return the newly-formed element set
          +		return ret;
          +	},
          +
          +	// Execute a callback for every element in the matched set.
          +	// (You can seed the arguments with an array of args, but this is
          +	// only used internally.)
          +	each: function( callback, args ) {
          +		return jQuery.each( this, callback, args );
          +	},
          +
          +	ready: function( fn ) {
          +		// Attach the listeners
          +		jQuery.bindReady();
          +
          +		// Add the callback
          +		readyList.add( fn );
          +
          +		return this;
          +	},
          +
          +	eq: function( i ) {
          +		i = +i;
          +		return i === -1 ?
          +			this.slice( i ) :
          +			this.slice( i, i + 1 );
          +	},
          +
          +	first: function() {
          +		return this.eq( 0 );
          +	},
          +
          +	last: function() {
          +		return this.eq( -1 );
          +	},
          +
          +	slice: function() {
          +		return this.pushStack( slice.apply( this, arguments ),
          +			"slice", slice.call(arguments).join(",") );
          +	},
          +
          +	map: function( callback ) {
          +		return this.pushStack( jQuery.map(this, function( elem, i ) {
          +			return callback.call( elem, i, elem );
          +		}));
          +	},
          +
          +	end: function() {
          +		return this.prevObject || this.constructor(null);
          +	},
          +
          +	// For internal use only.
          +	// Behaves like an Array's method, not like a jQuery method.
          +	push: push,
          +	sort: [].sort,
          +	splice: [].splice
          +};
          +
          +// Give the init function the jQuery prototype for later instantiation
          +jQuery.fn.init.prototype = jQuery.fn;
          +
          +jQuery.extend = jQuery.fn.extend = function() {
          +	var options, name, src, copy, copyIsArray, clone,
          +		target = arguments[0] || {},
          +		i = 1,
          +		length = arguments.length,
          +		deep = false;
          +
          +	// Handle a deep copy situation
          +	if ( typeof target === "boolean" ) {
          +		deep = target;
          +		target = arguments[1] || {};
          +		// skip the boolean and the target
          +		i = 2;
          +	}
          +
          +	// Handle case when target is a string or something (possible in deep copy)
          +	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
          +		target = {};
          +	}
          +
          +	// extend jQuery itself if only one argument is passed
          +	if ( length === i ) {
          +		target = this;
          +		--i;
          +	}
          +
          +	for ( ; i < length; i++ ) {
          +		// Only deal with non-null/undefined values
          +		if ( (options = arguments[ i ]) != null ) {
          +			// Extend the base object
          +			for ( name in options ) {
          +				src = target[ name ];
          +				copy = options[ name ];
          +
          +				// Prevent never-ending loop
          +				if ( target === copy ) {
          +					continue;
          +				}
          +
          +				// Recurse if we're merging plain objects or arrays
          +				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
          +					if ( copyIsArray ) {
          +						copyIsArray = false;
          +						clone = src && jQuery.isArray(src) ? src : [];
          +
          +					} else {
          +						clone = src && jQuery.isPlainObject(src) ? src : {};
          +					}
          +
          +					// Never move original objects, clone them
          +					target[ name ] = jQuery.extend( deep, clone, copy );
          +
          +				// Don't bring in undefined values
          +				} else if ( copy !== undefined ) {
          +					target[ name ] = copy;
          +				}
          +			}
          +		}
          +	}
          +
          +	// Return the modified object
          +	return target;
          +};
          +
          +jQuery.extend({
          +	noConflict: function( deep ) {
          +		if ( window.$ === jQuery ) {
          +			window.$ = _$;
          +		}
          +
          +		if ( deep && window.jQuery === jQuery ) {
          +			window.jQuery = _jQuery;
          +		}
          +
          +		return jQuery;
          +	},
          +
          +	// Is the DOM ready to be used? Set to true once it occurs.
          +	isReady: false,
          +
          +	// A counter to track how many items to wait for before
          +	// the ready event fires. See #6781
          +	readyWait: 1,
          +
          +	// Hold (or release) the ready event
          +	holdReady: function( hold ) {
          +		if ( hold ) {
          +			jQuery.readyWait++;
          +		} else {
          +			jQuery.ready( true );
          +		}
          +	},
          +
          +	// Handle when the DOM is ready
          +	ready: function( wait ) {
          +		// Either a released hold or an DOMready/load event and not yet ready
          +		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
          +			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
          +			if ( !document.body ) {
          +				return setTimeout( jQuery.ready, 1 );
          +			}
          +
          +			// Remember that the DOM is ready
          +			jQuery.isReady = true;
          +
          +			// If a normal DOM Ready event fired, decrement, and wait if need be
          +			if ( wait !== true && --jQuery.readyWait > 0 ) {
          +				return;
          +			}
          +
          +			// If there are functions bound, to execute
          +			readyList.fireWith( document, [ jQuery ] );
          +
          +			// Trigger any bound ready events
          +			if ( jQuery.fn.trigger ) {
          +				jQuery( document ).trigger( "ready" ).off( "ready" );
          +			}
          +		}
          +	},
          +
          +	bindReady: function() {
          +		if ( readyList ) {
          +			return;
          +		}
          +
          +		readyList = jQuery.Callbacks( "once memory" );
          +
          +		// Catch cases where $(document).ready() is called after the
          +		// browser event has already occurred.
          +		if ( document.readyState === "complete" ) {
          +			// Handle it asynchronously to allow scripts the opportunity to delay ready
          +			return setTimeout( jQuery.ready, 1 );
          +		}
          +
          +		// Mozilla, Opera and webkit nightlies currently support this event
          +		if ( document.addEventListener ) {
          +			// Use the handy event callback
          +			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
          +
          +			// A fallback to window.onload, that will always work
          +			window.addEventListener( "load", jQuery.ready, false );
          +
          +		// If IE event model is used
          +		} else if ( document.attachEvent ) {
          +			// ensure firing before onload,
          +			// maybe late but safe also for iframes
          +			document.attachEvent( "onreadystatechange", DOMContentLoaded );
          +
          +			// A fallback to window.onload, that will always work
          +			window.attachEvent( "onload", jQuery.ready );
          +
          +			// If IE and not a frame
          +			// continually check to see if the document is ready
          +			var toplevel = false;
          +
          +			try {
          +				toplevel = window.frameElement == null;
          +			} catch(e) {}
          +
          +			if ( document.documentElement.doScroll && toplevel ) {
          +				doScrollCheck();
          +			}
          +		}
          +	},
          +
          +	// See test/unit/core.js for details concerning isFunction.
          +	// Since version 1.3, DOM methods and functions like alert
          +	// aren't supported. They return false on IE (#2968).
          +	isFunction: function( obj ) {
          +		return jQuery.type(obj) === "function";
          +	},
          +
          +	isArray: Array.isArray || function( obj ) {
          +		return jQuery.type(obj) === "array";
          +	},
          +
          +	isWindow: function( obj ) {
          +		return obj != null && obj == obj.window;
          +	},
          +
          +	isNumeric: function( obj ) {
          +		return !isNaN( parseFloat(obj) ) && isFinite( obj );
          +	},
          +
          +	type: function( obj ) {
          +		return obj == null ?
          +			String( obj ) :
          +			class2type[ toString.call(obj) ] || "object";
          +	},
          +
          +	isPlainObject: function( obj ) {
          +		// Must be an Object.
          +		// Because of IE, we also have to check the presence of the constructor property.
          +		// Make sure that DOM nodes and window objects don't pass through, as well
          +		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
          +			return false;
          +		}
          +
          +		try {
          +			// Not own constructor property must be Object
          +			if ( obj.constructor &&
          +				!hasOwn.call(obj, "constructor") &&
          +				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
          +				return false;
          +			}
          +		} catch ( e ) {
          +			// IE8,9 Will throw exceptions on certain host objects #9897
          +			return false;
          +		}
          +
          +		// Own properties are enumerated firstly, so to speed up,
          +		// if last one is own, then all properties are own.
          +
          +		var key;
          +		for ( key in obj ) {}
          +
          +		return key === undefined || hasOwn.call( obj, key );
          +	},
          +
          +	isEmptyObject: function( obj ) {
          +		for ( var name in obj ) {
          +			return false;
          +		}
          +		return true;
          +	},
          +
          +	error: function( msg ) {
          +		throw new Error( msg );
          +	},
          +
          +	parseJSON: function( data ) {
          +		if ( typeof data !== "string" || !data ) {
          +			return null;
          +		}
          +
          +		// Make sure leading/trailing whitespace is removed (IE can't handle it)
          +		data = jQuery.trim( data );
          +
          +		// Attempt to parse using the native JSON parser first
          +		if ( window.JSON && window.JSON.parse ) {
          +			return window.JSON.parse( data );
          +		}
          +
          +		// Make sure the incoming data is actual JSON
          +		// Logic borrowed from http://json.org/json2.js
          +		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
          +			.replace( rvalidtokens, "]" )
          +			.replace( rvalidbraces, "")) ) {
          +
          +			return ( new Function( "return " + data ) )();
          +
          +		}
          +		jQuery.error( "Invalid JSON: " + data );
          +	},
          +
          +	// Cross-browser xml parsing
          +	parseXML: function( data ) {
          +		if ( typeof data !== "string" || !data ) {
          +			return null;
          +		}
          +		var xml, tmp;
          +		try {
          +			if ( window.DOMParser ) { // Standard
          +				tmp = new DOMParser();
          +				xml = tmp.parseFromString( data , "text/xml" );
          +			} else { // IE
          +				xml = new ActiveXObject( "Microsoft.XMLDOM" );
          +				xml.async = "false";
          +				xml.loadXML( data );
          +			}
          +		} catch( e ) {
          +			xml = undefined;
          +		}
          +		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
          +			jQuery.error( "Invalid XML: " + data );
          +		}
          +		return xml;
          +	},
          +
          +	noop: function() {},
          +
          +	// Evaluates a script in a global context
          +	// Workarounds based on findings by Jim Driscoll
          +	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
          +	globalEval: function( data ) {
          +		if ( data && rnotwhite.test( data ) ) {
          +			// We use execScript on Internet Explorer
          +			// We use an anonymous function so that context is window
          +			// rather than jQuery in Firefox
          +			( window.execScript || function( data ) {
          +				window[ "eval" ].call( window, data );
          +			} )( data );
          +		}
          +	},
          +
          +	// Convert dashed to camelCase; used by the css and data modules
          +	// Microsoft forgot to hump their vendor prefix (#9572)
          +	camelCase: function( string ) {
          +		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
          +	},
          +
          +	nodeName: function( elem, name ) {
          +		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
          +	},
          +
          +	// args is for internal usage only
          +	each: function( object, callback, args ) {
          +		var name, i = 0,
          +			length = object.length,
          +			isObj = length === undefined || jQuery.isFunction( object );
          +
          +		if ( args ) {
          +			if ( isObj ) {
          +				for ( name in object ) {
          +					if ( callback.apply( object[ name ], args ) === false ) {
          +						break;
          +					}
          +				}
          +			} else {
          +				for ( ; i < length; ) {
          +					if ( callback.apply( object[ i++ ], args ) === false ) {
          +						break;
          +					}
          +				}
          +			}
          +
          +		// A special, fast, case for the most common use of each
          +		} else {
          +			if ( isObj ) {
          +				for ( name in object ) {
          +					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
          +						break;
          +					}
          +				}
          +			} else {
          +				for ( ; i < length; ) {
          +					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
          +						break;
          +					}
          +				}
          +			}
          +		}
          +
          +		return object;
          +	},
          +
          +	// Use native String.trim function wherever possible
          +	trim: trim ?
          +		function( text ) {
          +			return text == null ?
          +				"" :
          +				trim.call( text );
          +		} :
          +
          +		// Otherwise use our own trimming functionality
          +		function( text ) {
          +			return text == null ?
          +				"" :
          +				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
          +		},
          +
          +	// results is for internal usage only
          +	makeArray: function( array, results ) {
          +		var ret = results || [];
          +
          +		if ( array != null ) {
          +			// The window, strings (and functions) also have 'length'
          +			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
          +			var type = jQuery.type( array );
          +
          +			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
          +				push.call( ret, array );
          +			} else {
          +				jQuery.merge( ret, array );
          +			}
          +		}
          +
          +		return ret;
          +	},
          +
          +	inArray: function( elem, array, i ) {
          +		var len;
          +
          +		if ( array ) {
          +			if ( indexOf ) {
          +				return indexOf.call( array, elem, i );
          +			}
          +
          +			len = array.length;
          +			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
          +
          +			for ( ; i < len; i++ ) {
          +				// Skip accessing in sparse arrays
          +				if ( i in array && array[ i ] === elem ) {
          +					return i;
          +				}
          +			}
          +		}
          +
          +		return -1;
          +	},
          +
          +	merge: function( first, second ) {
          +		var i = first.length,
          +			j = 0;
          +
          +		if ( typeof second.length === "number" ) {
          +			for ( var l = second.length; j < l; j++ ) {
          +				first[ i++ ] = second[ j ];
          +			}
          +
          +		} else {
          +			while ( second[j] !== undefined ) {
          +				first[ i++ ] = second[ j++ ];
          +			}
          +		}
          +
          +		first.length = i;
          +
          +		return first;
          +	},
          +
          +	grep: function( elems, callback, inv ) {
          +		var ret = [], retVal;
          +		inv = !!inv;
          +
          +		// Go through the array, only saving the items
          +		// that pass the validator function
          +		for ( var i = 0, length = elems.length; i < length; i++ ) {
          +			retVal = !!callback( elems[ i ], i );
          +			if ( inv !== retVal ) {
          +				ret.push( elems[ i ] );
          +			}
          +		}
          +
          +		return ret;
          +	},
          +
          +	// arg is for internal usage only
          +	map: function( elems, callback, arg ) {
          +		var value, key, ret = [],
          +			i = 0,
          +			length = elems.length,
          +			// jquery objects are treated as arrays
          +			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
          +
          +		// Go through the array, translating each of the items to their
          +		if ( isArray ) {
          +			for ( ; i < length; i++ ) {
          +				value = callback( elems[ i ], i, arg );
          +
          +				if ( value != null ) {
          +					ret[ ret.length ] = value;
          +				}
          +			}
          +
          +		// Go through every key on the object,
          +		} else {
          +			for ( key in elems ) {
          +				value = callback( elems[ key ], key, arg );
          +
          +				if ( value != null ) {
          +					ret[ ret.length ] = value;
          +				}
          +			}
          +		}
          +
          +		// Flatten any nested arrays
          +		return ret.concat.apply( [], ret );
          +	},
          +
          +	// A global GUID counter for objects
          +	guid: 1,
          +
          +	// Bind a function to a context, optionally partially applying any
          +	// arguments.
          +	proxy: function( fn, context ) {
          +		if ( typeof context === "string" ) {
          +			var tmp = fn[ context ];
          +			context = fn;
          +			fn = tmp;
          +		}
          +
          +		// Quick check to determine if target is callable, in the spec
          +		// this throws a TypeError, but we will just return undefined.
          +		if ( !jQuery.isFunction( fn ) ) {
          +			return undefined;
          +		}
          +
          +		// Simulated bind
          +		var args = slice.call( arguments, 2 ),
          +			proxy = function() {
          +				return fn.apply( context, args.concat( slice.call( arguments ) ) );
          +			};
          +
          +		// Set the guid of unique handler to the same of original handler, so it can be removed
          +		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
          +
          +		return proxy;
          +	},
          +
          +	// Mutifunctional method to get and set values to a collection
          +	// The value/s can optionally be executed if it's a function
          +	access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
          +		var exec,
          +			bulk = key == null,
          +			i = 0,
          +			length = elems.length;
          +
          +		// Sets many values
          +		if ( key && typeof key === "object" ) {
          +			for ( i in key ) {
          +				jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
          +			}
          +			chainable = 1;
          +
          +		// Sets one value
          +		} else if ( value !== undefined ) {
          +			// Optionally, function values get executed if exec is true
          +			exec = pass === undefined && jQuery.isFunction( value );
          +
          +			if ( bulk ) {
          +				// Bulk operations only iterate when executing function values
          +				if ( exec ) {
          +					exec = fn;
          +					fn = function( elem, key, value ) {
          +						return exec.call( jQuery( elem ), value );
          +					};
          +
          +				// Otherwise they run against the entire set
          +				} else {
          +					fn.call( elems, value );
          +					fn = null;
          +				}
          +			}
          +
          +			if ( fn ) {
          +				for (; i < length; i++ ) {
          +					fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
          +				}
          +			}
          +
          +			chainable = 1;
          +		}
          +
          +		return chainable ?
          +			elems :
          +
          +			// Gets
          +			bulk ?
          +				fn.call( elems ) :
          +				length ? fn( elems[0], key ) : emptyGet;
          +	},
          +
          +	now: function() {
          +		return ( new Date() ).getTime();
          +	},
          +
          +	// Use of jQuery.browser is frowned upon.
          +	// More details: http://docs.jquery.com/Utilities/jQuery.browser
          +	uaMatch: function( ua ) {
          +		ua = ua.toLowerCase();
          +
          +		var match = rwebkit.exec( ua ) ||
          +			ropera.exec( ua ) ||
          +			rmsie.exec( ua ) ||
          +			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
          +			[];
          +
          +		return { browser: match[1] || "", version: match[2] || "0" };
          +	},
          +
          +	sub: function() {
          +		function jQuerySub( selector, context ) {
          +			return new jQuerySub.fn.init( selector, context );
          +		}
          +		jQuery.extend( true, jQuerySub, this );
          +		jQuerySub.superclass = this;
          +		jQuerySub.fn = jQuerySub.prototype = this();
          +		jQuerySub.fn.constructor = jQuerySub;
          +		jQuerySub.sub = this.sub;
          +		jQuerySub.fn.init = function init( selector, context ) {
          +			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
          +				context = jQuerySub( context );
          +			}
          +
          +			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
          +		};
          +		jQuerySub.fn.init.prototype = jQuerySub.fn;
          +		var rootjQuerySub = jQuerySub(document);
          +		return jQuerySub;
          +	},
          +
          +	browser: {}
          +});
          +
          +// Populate the class2type map
          +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
          +	class2type[ "[object " + name + "]" ] = name.toLowerCase();
          +});
          +
          +browserMatch = jQuery.uaMatch( userAgent );
          +if ( browserMatch.browser ) {
          +	jQuery.browser[ browserMatch.browser ] = true;
          +	jQuery.browser.version = browserMatch.version;
          +}
          +
          +// Deprecated, use jQuery.browser.webkit instead
          +if ( jQuery.browser.webkit ) {
          +	jQuery.browser.safari = true;
          +}
          +
          +// IE doesn't match non-breaking spaces with \s
          +if ( rnotwhite.test( "\xA0" ) ) {
          +	trimLeft = /^[\s\xA0]+/;
          +	trimRight = /[\s\xA0]+$/;
          +}
          +
          +// All jQuery objects should point back to these
          +rootjQuery = jQuery(document);
          +
          +// Cleanup functions for the document ready method
          +if ( document.addEventListener ) {
          +	DOMContentLoaded = function() {
          +		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
          +		jQuery.ready();
          +	};
          +
          +} else if ( document.attachEvent ) {
          +	DOMContentLoaded = function() {
          +		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
          +		if ( document.readyState === "complete" ) {
          +			document.detachEvent( "onreadystatechange", DOMContentLoaded );
          +			jQuery.ready();
          +		}
          +	};
          +}
          +
          +// The DOM ready check for Internet Explorer
          +function doScrollCheck() {
          +	if ( jQuery.isReady ) {
          +		return;
          +	}
          +
          +	try {
          +		// If IE is used, use the trick by Diego Perini
          +		// http://javascript.nwbox.com/IEContentLoaded/
          +		document.documentElement.doScroll("left");
          +	} catch(e) {
          +		setTimeout( doScrollCheck, 1 );
          +		return;
          +	}
          +
          +	// and execute any waiting functions
          +	jQuery.ready();
          +}
          +
          +return jQuery;
          +
          +})();
          +
          +
          +// String to Object flags format cache
          +var flagsCache = {};
          +
          +// Convert String-formatted flags into Object-formatted ones and store in cache
          +function createFlags( flags ) {
          +	var object = flagsCache[ flags ] = {},
          +		i, length;
          +	flags = flags.split( /\s+/ );
          +	for ( i = 0, length = flags.length; i < length; i++ ) {
          +		object[ flags[i] ] = true;
          +	}
          +	return object;
          +}
          +
          +/*
          + * Create a callback list using the following parameters:
          + *
          + *	flags:	an optional list of space-separated flags that will change how
          + *			the callback list behaves
          + *
          + * By default a callback list will act like an event callback list and can be
          + * "fired" multiple times.
          + *
          + * Possible flags:
          + *
          + *	once:			will ensure the callback list can only be fired once (like a Deferred)
          + *
          + *	memory:			will keep track of previous values and will call any callback added
          + *					after the list has been fired right away with the latest "memorized"
          + *					values (like a Deferred)
          + *
          + *	unique:			will ensure a callback can only be added once (no duplicate in the list)
          + *
          + *	stopOnFalse:	interrupt callings when a callback returns false
          + *
          + */
          +jQuery.Callbacks = function( flags ) {
          +
          +	// Convert flags from String-formatted to Object-formatted
          +	// (we check in cache first)
          +	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
          +
          +	var // Actual callback list
          +		list = [],
          +		// Stack of fire calls for repeatable lists
          +		stack = [],
          +		// Last fire value (for non-forgettable lists)
          +		memory,
          +		// Flag to know if list was already fired
          +		fired,
          +		// Flag to know if list is currently firing
          +		firing,
          +		// First callback to fire (used internally by add and fireWith)
          +		firingStart,
          +		// End of the loop when firing
          +		firingLength,
          +		// Index of currently firing callback (modified by remove if needed)
          +		firingIndex,
          +		// Add one or several callbacks to the list
          +		add = function( args ) {
          +			var i,
          +				length,
          +				elem,
          +				type,
          +				actual;
          +			for ( i = 0, length = args.length; i < length; i++ ) {
          +				elem = args[ i ];
          +				type = jQuery.type( elem );
          +				if ( type === "array" ) {
          +					// Inspect recursively
          +					add( elem );
          +				} else if ( type === "function" ) {
          +					// Add if not in unique mode and callback is not in
          +					if ( !flags.unique || !self.has( elem ) ) {
          +						list.push( elem );
          +					}
          +				}
          +			}
          +		},
          +		// Fire callbacks
          +		fire = function( context, args ) {
          +			args = args || [];
          +			memory = !flags.memory || [ context, args ];
          +			fired = true;
          +			firing = true;
          +			firingIndex = firingStart || 0;
          +			firingStart = 0;
          +			firingLength = list.length;
          +			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
          +				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
          +					memory = true; // Mark as halted
          +					break;
          +				}
          +			}
          +			firing = false;
          +			if ( list ) {
          +				if ( !flags.once ) {
          +					if ( stack && stack.length ) {
          +						memory = stack.shift();
          +						self.fireWith( memory[ 0 ], memory[ 1 ] );
          +					}
          +				} else if ( memory === true ) {
          +					self.disable();
          +				} else {
          +					list = [];
          +				}
          +			}
          +		},
          +		// Actual Callbacks object
          +		self = {
          +			// Add a callback or a collection of callbacks to the list
          +			add: function() {
          +				if ( list ) {
          +					var length = list.length;
          +					add( arguments );
          +					// Do we need to add the callbacks to the
          +					// current firing batch?
          +					if ( firing ) {
          +						firingLength = list.length;
          +					// With memory, if we're not firing then
          +					// we should call right away, unless previous
          +					// firing was halted (stopOnFalse)
          +					} else if ( memory && memory !== true ) {
          +						firingStart = length;
          +						fire( memory[ 0 ], memory[ 1 ] );
          +					}
          +				}
          +				return this;
          +			},
          +			// Remove a callback from the list
          +			remove: function() {
          +				if ( list ) {
          +					var args = arguments,
          +						argIndex = 0,
          +						argLength = args.length;
          +					for ( ; argIndex < argLength ; argIndex++ ) {
          +						for ( var i = 0; i < list.length; i++ ) {
          +							if ( args[ argIndex ] === list[ i ] ) {
          +								// Handle firingIndex and firingLength
          +								if ( firing ) {
          +									if ( i <= firingLength ) {
          +										firingLength--;
          +										if ( i <= firingIndex ) {
          +											firingIndex--;
          +										}
          +									}
          +								}
          +								// Remove the element
          +								list.splice( i--, 1 );
          +								// If we have some unicity property then
          +								// we only need to do this once
          +								if ( flags.unique ) {
          +									break;
          +								}
          +							}
          +						}
          +					}
          +				}
          +				return this;
          +			},
          +			// Control if a given callback is in the list
          +			has: function( fn ) {
          +				if ( list ) {
          +					var i = 0,
          +						length = list.length;
          +					for ( ; i < length; i++ ) {
          +						if ( fn === list[ i ] ) {
          +							return true;
          +						}
          +					}
          +				}
          +				return false;
          +			},
          +			// Remove all callbacks from the list
          +			empty: function() {
          +				list = [];
          +				return this;
          +			},
          +			// Have the list do nothing anymore
          +			disable: function() {
          +				list = stack = memory = undefined;
          +				return this;
          +			},
          +			// Is it disabled?
          +			disabled: function() {
          +				return !list;
          +			},
          +			// Lock the list in its current state
          +			lock: function() {
          +				stack = undefined;
          +				if ( !memory || memory === true ) {
          +					self.disable();
          +				}
          +				return this;
          +			},
          +			// Is it locked?
          +			locked: function() {
          +				return !stack;
          +			},
          +			// Call all callbacks with the given context and arguments
          +			fireWith: function( context, args ) {
          +				if ( stack ) {
          +					if ( firing ) {
          +						if ( !flags.once ) {
          +							stack.push( [ context, args ] );
          +						}
          +					} else if ( !( flags.once && memory ) ) {
          +						fire( context, args );
          +					}
          +				}
          +				return this;
          +			},
          +			// Call all the callbacks with the given arguments
          +			fire: function() {
          +				self.fireWith( this, arguments );
          +				return this;
          +			},
          +			// To know if the callbacks have already been called at least once
          +			fired: function() {
          +				return !!fired;
          +			}
          +		};
          +
          +	return self;
          +};
          +
          +
          +
          +
          +var // Static reference to slice
          +	sliceDeferred = [].slice;
          +
          +jQuery.extend({
          +
          +	Deferred: function( func ) {
          +		var doneList = jQuery.Callbacks( "once memory" ),
          +			failList = jQuery.Callbacks( "once memory" ),
          +			progressList = jQuery.Callbacks( "memory" ),
          +			state = "pending",
          +			lists = {
          +				resolve: doneList,
          +				reject: failList,
          +				notify: progressList
          +			},
          +			promise = {
          +				done: doneList.add,
          +				fail: failList.add,
          +				progress: progressList.add,
          +
          +				state: function() {
          +					return state;
          +				},
          +
          +				// Deprecated
          +				isResolved: doneList.fired,
          +				isRejected: failList.fired,
          +
          +				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
          +					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
          +					return this;
          +				},
          +				always: function() {
          +					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
          +					return this;
          +				},
          +				pipe: function( fnDone, fnFail, fnProgress ) {
          +					return jQuery.Deferred(function( newDefer ) {
          +						jQuery.each( {
          +							done: [ fnDone, "resolve" ],
          +							fail: [ fnFail, "reject" ],
          +							progress: [ fnProgress, "notify" ]
          +						}, function( handler, data ) {
          +							var fn = data[ 0 ],
          +								action = data[ 1 ],
          +								returned;
          +							if ( jQuery.isFunction( fn ) ) {
          +								deferred[ handler ](function() {
          +									returned = fn.apply( this, arguments );
          +									if ( returned && jQuery.isFunction( returned.promise ) ) {
          +										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
          +									} else {
          +										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
          +									}
          +								});
          +							} else {
          +								deferred[ handler ]( newDefer[ action ] );
          +							}
          +						});
          +					}).promise();
          +				},
          +				// Get a promise for this deferred
          +				// If obj is provided, the promise aspect is added to the object
          +				promise: function( obj ) {
          +					if ( obj == null ) {
          +						obj = promise;
          +					} else {
          +						for ( var key in promise ) {
          +							obj[ key ] = promise[ key ];
          +						}
          +					}
          +					return obj;
          +				}
          +			},
          +			deferred = promise.promise({}),
          +			key;
          +
          +		for ( key in lists ) {
          +			deferred[ key ] = lists[ key ].fire;
          +			deferred[ key + "With" ] = lists[ key ].fireWith;
          +		}
          +
          +		// Handle state
          +		deferred.done( function() {
          +			state = "resolved";
          +		}, failList.disable, progressList.lock ).fail( function() {
          +			state = "rejected";
          +		}, doneList.disable, progressList.lock );
          +
          +		// Call given func if any
          +		if ( func ) {
          +			func.call( deferred, deferred );
          +		}
          +
          +		// All done!
          +		return deferred;
          +	},
          +
          +	// Deferred helper
          +	when: function( firstParam ) {
          +		var args = sliceDeferred.call( arguments, 0 ),
          +			i = 0,
          +			length = args.length,
          +			pValues = new Array( length ),
          +			count = length,
          +			pCount = length,
          +			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
          +				firstParam :
          +				jQuery.Deferred(),
          +			promise = deferred.promise();
          +		function resolveFunc( i ) {
          +			return function( value ) {
          +				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
          +				if ( !( --count ) ) {
          +					deferred.resolveWith( deferred, args );
          +				}
          +			};
          +		}
          +		function progressFunc( i ) {
          +			return function( value ) {
          +				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
          +				deferred.notifyWith( promise, pValues );
          +			};
          +		}
          +		if ( length > 1 ) {
          +			for ( ; i < length; i++ ) {
          +				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
          +					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
          +				} else {
          +					--count;
          +				}
          +			}
          +			if ( !count ) {
          +				deferred.resolveWith( deferred, args );
          +			}
          +		} else if ( deferred !== firstParam ) {
          +			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
          +		}
          +		return promise;
          +	}
          +});
          +
          +
          +
          +
          +jQuery.support = (function() {
          +
          +	var support,
          +		all,
          +		a,
          +		select,
          +		opt,
          +		input,
          +		fragment,
          +		tds,
          +		events,
          +		eventName,
          +		i,
          +		isSupported,
          +		div = document.createElement( "div" ),
          +		documentElement = document.documentElement;
          +
          +	// Preliminary tests
          +	div.setAttribute("className", "t");
          +	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
          +
          +	all = div.getElementsByTagName( "*" );
          +	a = div.getElementsByTagName( "a" )[ 0 ];
          +
          +	// Can't get basic test support
          +	if ( !all || !all.length || !a ) {
          +		return {};
          +	}
          +
          +	// First batch of supports tests
          +	select = document.createElement( "select" );
          +	opt = select.appendChild( document.createElement("option") );
          +	input = div.getElementsByTagName( "input" )[ 0 ];
          +
          +	support = {
          +		// IE strips leading whitespace when .innerHTML is used
          +		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
          +
          +		// Make sure that tbody elements aren't automatically inserted
          +		// IE will insert them into empty tables
          +		tbody: !div.getElementsByTagName("tbody").length,
          +
          +		// Make sure that link elements get serialized correctly by innerHTML
          +		// This requires a wrapper element in IE
          +		htmlSerialize: !!div.getElementsByTagName("link").length,
          +
          +		// Get the style information from getAttribute
          +		// (IE uses .cssText instead)
          +		style: /top/.test( a.getAttribute("style") ),
          +
          +		// Make sure that URLs aren't manipulated
          +		// (IE normalizes it by default)
          +		hrefNormalized: ( a.getAttribute("href") === "/a" ),
          +
          +		// Make sure that element opacity exists
          +		// (IE uses filter instead)
          +		// Use a regex to work around a WebKit issue. See #5145
          +		opacity: /^0.55/.test( a.style.opacity ),
          +
          +		// Verify style float existence
          +		// (IE uses styleFloat instead of cssFloat)
          +		cssFloat: !!a.style.cssFloat,
          +
          +		// Make sure that if no value is specified for a checkbox
          +		// that it defaults to "on".
          +		// (WebKit defaults to "" instead)
          +		checkOn: ( input.value === "on" ),
          +
          +		// Make sure that a selected-by-default option has a working selected property.
          +		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
          +		optSelected: opt.selected,
          +
          +		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
          +		getSetAttribute: div.className !== "t",
          +
          +		// Tests for enctype support on a form(#6743)
          +		enctype: !!document.createElement("form").enctype,
          +
          +		// Makes sure cloning an html5 element does not cause problems
          +		// Where outerHTML is undefined, this still works
          +		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
          +
          +		// Will be defined later
          +		submitBubbles: true,
          +		changeBubbles: true,
          +		focusinBubbles: false,
          +		deleteExpando: true,
          +		noCloneEvent: true,
          +		inlineBlockNeedsLayout: false,
          +		shrinkWrapBlocks: false,
          +		reliableMarginRight: true,
          +		pixelMargin: true
          +	};
          +
          +	// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
          +	jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
          +
          +	// Make sure checked status is properly cloned
          +	input.checked = true;
          +	support.noCloneChecked = input.cloneNode( true ).checked;
          +
          +	// Make sure that the options inside disabled selects aren't marked as disabled
          +	// (WebKit marks them as disabled)
          +	select.disabled = true;
          +	support.optDisabled = !opt.disabled;
          +
          +	// Test to see if it's possible to delete an expando from an element
          +	// Fails in Internet Explorer
          +	try {
          +		delete div.test;
          +	} catch( e ) {
          +		support.deleteExpando = false;
          +	}
          +
          +	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
          +		div.attachEvent( "onclick", function() {
          +			// Cloning a node shouldn't copy over any
          +			// bound event handlers (IE does this)
          +			support.noCloneEvent = false;
          +		});
          +		div.cloneNode( true ).fireEvent( "onclick" );
          +	}
          +
          +	// Check if a radio maintains its value
          +	// after being appended to the DOM
          +	input = document.createElement("input");
          +	input.value = "t";
          +	input.setAttribute("type", "radio");
          +	support.radioValue = input.value === "t";
          +
          +	input.setAttribute("checked", "checked");
          +
          +	// #11217 - WebKit loses check when the name is after the checked attribute
          +	input.setAttribute( "name", "t" );
          +
          +	div.appendChild( input );
          +	fragment = document.createDocumentFragment();
          +	fragment.appendChild( div.lastChild );
          +
          +	// WebKit doesn't clone checked state correctly in fragments
          +	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
          +
          +	// Check if a disconnected checkbox will retain its checked
          +	// value of true after appended to the DOM (IE6/7)
          +	support.appendChecked = input.checked;
          +
          +	fragment.removeChild( input );
          +	fragment.appendChild( div );
          +
          +	// Technique from Juriy Zaytsev
          +	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
          +	// We only care about the case where non-standard event systems
          +	// are used, namely in IE. Short-circuiting here helps us to
          +	// avoid an eval call (in setAttribute) which can cause CSP
          +	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
          +	if ( div.attachEvent ) {
          +		for ( i in {
          +			submit: 1,
          +			change: 1,
          +			focusin: 1
          +		}) {
          +			eventName = "on" + i;
          +			isSupported = ( eventName in div );
          +			if ( !isSupported ) {
          +				div.setAttribute( eventName, "return;" );
          +				isSupported = ( typeof div[ eventName ] === "function" );
          +			}
          +			support[ i + "Bubbles" ] = isSupported;
          +		}
          +	}
          +
          +	fragment.removeChild( div );
          +
          +	// Null elements to avoid leaks in IE
          +	fragment = select = opt = div = input = null;
          +
          +	// Run tests that need a body at doc ready
          +	jQuery(function() {
          +		var container, outer, inner, table, td, offsetSupport,
          +			marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
          +			paddingMarginBorderVisibility, paddingMarginBorder,
          +			body = document.getElementsByTagName("body")[0];
          +
          +		if ( !body ) {
          +			// Return for frameset docs that don't have a body
          +			return;
          +		}
          +
          +		conMarginTop = 1;
          +		paddingMarginBorder = "padding:0;margin:0;border:";
          +		positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
          +		paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
          +		style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
          +		html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
          +			"<table " + style + "' cellpadding='0' cellspacing='0'>" +
          +			"<tr><td></td></tr></table>";
          +
          +		container = document.createElement("div");
          +		container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
          +		body.insertBefore( container, body.firstChild );
          +
          +		// Construct the test element
          +		div = document.createElement("div");
          +		container.appendChild( div );
          +
          +		// Check if table cells still have offsetWidth/Height when they are set
          +		// to display:none and there are still other visible table cells in a
          +		// table row; if so, offsetWidth/Height are not reliable for use when
          +		// determining if an element has been hidden directly using
          +		// display:none (it is still safe to use offsets if a parent element is
          +		// hidden; don safety goggles and see bug #4512 for more information).
          +		// (only IE 8 fails this test)
          +		div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
          +		tds = div.getElementsByTagName( "td" );
          +		isSupported = ( tds[ 0 ].offsetHeight === 0 );
          +
          +		tds[ 0 ].style.display = "";
          +		tds[ 1 ].style.display = "none";
          +
          +		// Check if empty table cells still have offsetWidth/Height
          +		// (IE <= 8 fail this test)
          +		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
          +
          +		// Check if div with explicit width and no margin-right incorrectly
          +		// gets computed margin-right based on width of container. For more
          +		// info see bug #3333
          +		// Fails in WebKit before Feb 2011 nightlies
          +		// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
          +		if ( window.getComputedStyle ) {
          +			div.innerHTML = "";
          +			marginDiv = document.createElement( "div" );
          +			marginDiv.style.width = "0";
          +			marginDiv.style.marginRight = "0";
          +			div.style.width = "2px";
          +			div.appendChild( marginDiv );
          +			support.reliableMarginRight =
          +				( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
          +		}
          +
          +		if ( typeof div.style.zoom !== "undefined" ) {
          +			// Check if natively block-level elements act like inline-block
          +			// elements when setting their display to 'inline' and giving
          +			// them layout
          +			// (IE < 8 does this)
          +			div.innerHTML = "";
          +			div.style.width = div.style.padding = "1px";
          +			div.style.border = 0;
          +			div.style.overflow = "hidden";
          +			div.style.display = "inline";
          +			div.style.zoom = 1;
          +			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
          +
          +			// Check if elements with layout shrink-wrap their children
          +			// (IE 6 does this)
          +			div.style.display = "block";
          +			div.style.overflow = "visible";
          +			div.innerHTML = "<div style='width:5px;'></div>";
          +			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
          +		}
          +
          +		div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
          +		div.innerHTML = html;
          +
          +		outer = div.firstChild;
          +		inner = outer.firstChild;
          +		td = outer.nextSibling.firstChild.firstChild;
          +
          +		offsetSupport = {
          +			doesNotAddBorder: ( inner.offsetTop !== 5 ),
          +			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
          +		};
          +
          +		inner.style.position = "fixed";
          +		inner.style.top = "20px";
          +
          +		// safari subtracts parent border width here which is 5px
          +		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
          +		inner.style.position = inner.style.top = "";
          +
          +		outer.style.overflow = "hidden";
          +		outer.style.position = "relative";
          +
          +		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
          +		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
          +
          +		if ( window.getComputedStyle ) {
          +			div.style.marginTop = "1%";
          +			support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
          +		}
          +
          +		if ( typeof container.style.zoom !== "undefined" ) {
          +			container.style.zoom = 1;
          +		}
          +
          +		body.removeChild( container );
          +		marginDiv = div = container = null;
          +
          +		jQuery.extend( support, offsetSupport );
          +	});
          +
          +	return support;
          +})();
          +
          +
          +
          +
          +var rbrace = /^(?:\{.*\}|\[.*\])$/,
          +	rmultiDash = /([A-Z])/g;
          +
          +jQuery.extend({
          +	cache: {},
          +
          +	// Please use with caution
          +	uuid: 0,
          +
          +	// Unique for each copy of jQuery on the page
          +	// Non-digits removed to match rinlinejQuery
          +	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
          +
          +	// The following elements throw uncatchable exceptions if you
          +	// attempt to add expando properties to them.
          +	noData: {
          +		"embed": true,
          +		// Ban all objects except for Flash (which handle expandos)
          +		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
          +		"applet": true
          +	},
          +
          +	hasData: function( elem ) {
          +		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
          +		return !!elem && !isEmptyDataObject( elem );
          +	},
          +
          +	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
          +		if ( !jQuery.acceptData( elem ) ) {
          +			return;
          +		}
          +
          +		var privateCache, thisCache, ret,
          +			internalKey = jQuery.expando,
          +			getByName = typeof name === "string",
          +
          +			// We have to handle DOM nodes and JS objects differently because IE6-7
          +			// can't GC object references properly across the DOM-JS boundary
          +			isNode = elem.nodeType,
          +
          +			// Only DOM nodes need the global jQuery cache; JS object data is
          +			// attached directly to the object so GC can occur automatically
          +			cache = isNode ? jQuery.cache : elem,
          +
          +			// Only defining an ID for JS objects if its cache already exists allows
          +			// the code to shortcut on the same path as a DOM node with no cache
          +			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
          +			isEvents = name === "events";
          +
          +		// Avoid doing any more work than we need to when trying to get data on an
          +		// object that has no data at all
          +		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
          +			return;
          +		}
          +
          +		if ( !id ) {
          +			// Only DOM nodes need a new unique ID for each element since their data
          +			// ends up in the global cache
          +			if ( isNode ) {
          +				elem[ internalKey ] = id = ++jQuery.uuid;
          +			} else {
          +				id = internalKey;
          +			}
          +		}
          +
          +		if ( !cache[ id ] ) {
          +			cache[ id ] = {};
          +
          +			// Avoids exposing jQuery metadata on plain JS objects when the object
          +			// is serialized using JSON.stringify
          +			if ( !isNode ) {
          +				cache[ id ].toJSON = jQuery.noop;
          +			}
          +		}
          +
          +		// An object can be passed to jQuery.data instead of a key/value pair; this gets
          +		// shallow copied over onto the existing cache
          +		if ( typeof name === "object" || typeof name === "function" ) {
          +			if ( pvt ) {
          +				cache[ id ] = jQuery.extend( cache[ id ], name );
          +			} else {
          +				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
          +			}
          +		}
          +
          +		privateCache = thisCache = cache[ id ];
          +
          +		// jQuery data() is stored in a separate object inside the object's internal data
          +		// cache in order to avoid key collisions between internal data and user-defined
          +		// data.
          +		if ( !pvt ) {
          +			if ( !thisCache.data ) {
          +				thisCache.data = {};
          +			}
          +
          +			thisCache = thisCache.data;
          +		}
          +
          +		if ( data !== undefined ) {
          +			thisCache[ jQuery.camelCase( name ) ] = data;
          +		}
          +
          +		// Users should not attempt to inspect the internal events object using jQuery.data,
          +		// it is undocumented and subject to change. But does anyone listen? No.
          +		if ( isEvents && !thisCache[ name ] ) {
          +			return privateCache.events;
          +		}
          +
          +		// Check for both converted-to-camel and non-converted data property names
          +		// If a data property was specified
          +		if ( getByName ) {
          +
          +			// First Try to find as-is property data
          +			ret = thisCache[ name ];
          +
          +			// Test for null|undefined property data
          +			if ( ret == null ) {
          +
          +				// Try to find the camelCased property
          +				ret = thisCache[ jQuery.camelCase( name ) ];
          +			}
          +		} else {
          +			ret = thisCache;
          +		}
          +
          +		return ret;
          +	},
          +
          +	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
          +		if ( !jQuery.acceptData( elem ) ) {
          +			return;
          +		}
          +
          +		var thisCache, i, l,
          +
          +			// Reference to internal data cache key
          +			internalKey = jQuery.expando,
          +
          +			isNode = elem.nodeType,
          +
          +			// See jQuery.data for more information
          +			cache = isNode ? jQuery.cache : elem,
          +
          +			// See jQuery.data for more information
          +			id = isNode ? elem[ internalKey ] : internalKey;
          +
          +		// If there is already no cache entry for this object, there is no
          +		// purpose in continuing
          +		if ( !cache[ id ] ) {
          +			return;
          +		}
          +
          +		if ( name ) {
          +
          +			thisCache = pvt ? cache[ id ] : cache[ id ].data;
          +
          +			if ( thisCache ) {
          +
          +				// Support array or space separated string names for data keys
          +				if ( !jQuery.isArray( name ) ) {
          +
          +					// try the string as a key before any manipulation
          +					if ( name in thisCache ) {
          +						name = [ name ];
          +					} else {
          +
          +						// split the camel cased version by spaces unless a key with the spaces exists
          +						name = jQuery.camelCase( name );
          +						if ( name in thisCache ) {
          +							name = [ name ];
          +						} else {
          +							name = name.split( " " );
          +						}
          +					}
          +				}
          +
          +				for ( i = 0, l = name.length; i < l; i++ ) {
          +					delete thisCache[ name[i] ];
          +				}
          +
          +				// If there is no data left in the cache, we want to continue
          +				// and let the cache object itself get destroyed
          +				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
          +					return;
          +				}
          +			}
          +		}
          +
          +		// See jQuery.data for more information
          +		if ( !pvt ) {
          +			delete cache[ id ].data;
          +
          +			// Don't destroy the parent cache unless the internal data object
          +			// had been the only thing left in it
          +			if ( !isEmptyDataObject(cache[ id ]) ) {
          +				return;
          +			}
          +		}
          +
          +		// Browsers that fail expando deletion also refuse to delete expandos on
          +		// the window, but it will allow it on all other JS objects; other browsers
          +		// don't care
          +		// Ensure that `cache` is not a window object #10080
          +		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
          +			delete cache[ id ];
          +		} else {
          +			cache[ id ] = null;
          +		}
          +
          +		// We destroyed the cache and need to eliminate the expando on the node to avoid
          +		// false lookups in the cache for entries that no longer exist
          +		if ( isNode ) {
          +			// IE does not allow us to delete expando properties from nodes,
          +			// nor does it have a removeAttribute function on Document nodes;
          +			// we must handle all of these cases
          +			if ( jQuery.support.deleteExpando ) {
          +				delete elem[ internalKey ];
          +			} else if ( elem.removeAttribute ) {
          +				elem.removeAttribute( internalKey );
          +			} else {
          +				elem[ internalKey ] = null;
          +			}
          +		}
          +	},
          +
          +	// For internal use only.
          +	_data: function( elem, name, data ) {
          +		return jQuery.data( elem, name, data, true );
          +	},
          +
          +	// A method for determining if a DOM node can handle the data expando
          +	acceptData: function( elem ) {
          +		if ( elem.nodeName ) {
          +			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
          +
          +			if ( match ) {
          +				return !(match === true || elem.getAttribute("classid") !== match);
          +			}
          +		}
          +
          +		return true;
          +	}
          +});
          +
          +jQuery.fn.extend({
          +	data: function( key, value ) {
          +		var parts, part, attr, name, l,
          +			elem = this[0],
          +			i = 0,
          +			data = null;
          +
          +		// Gets all values
          +		if ( key === undefined ) {
          +			if ( this.length ) {
          +				data = jQuery.data( elem );
          +
          +				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
          +					attr = elem.attributes;
          +					for ( l = attr.length; i < l; i++ ) {
          +						name = attr[i].name;
          +
          +						if ( name.indexOf( "data-" ) === 0 ) {
          +							name = jQuery.camelCase( name.substring(5) );
          +
          +							dataAttr( elem, name, data[ name ] );
          +						}
          +					}
          +					jQuery._data( elem, "parsedAttrs", true );
          +				}
          +			}
          +
          +			return data;
          +		}
          +
          +		// Sets multiple values
          +		if ( typeof key === "object" ) {
          +			return this.each(function() {
          +				jQuery.data( this, key );
          +			});
          +		}
          +
          +		parts = key.split( ".", 2 );
          +		parts[1] = parts[1] ? "." + parts[1] : "";
          +		part = parts[1] + "!";
          +
          +		return jQuery.access( this, function( value ) {
          +
          +			if ( value === undefined ) {
          +				data = this.triggerHandler( "getData" + part, [ parts[0] ] );
          +
          +				// Try to fetch any internally stored data first
          +				if ( data === undefined && elem ) {
          +					data = jQuery.data( elem, key );
          +					data = dataAttr( elem, key, data );
          +				}
          +
          +				return data === undefined && parts[1] ?
          +					this.data( parts[0] ) :
          +					data;
          +			}
          +
          +			parts[1] = value;
          +			this.each(function() {
          +				var self = jQuery( this );
          +
          +				self.triggerHandler( "setData" + part, parts );
          +				jQuery.data( this, key, value );
          +				self.triggerHandler( "changeData" + part, parts );
          +			});
          +		}, null, value, arguments.length > 1, null, false );
          +	},
          +
          +	removeData: function( key ) {
          +		return this.each(function() {
          +			jQuery.removeData( this, key );
          +		});
          +	}
          +});
          +
          +function dataAttr( elem, key, data ) {
          +	// If nothing was found internally, try to fetch any
          +	// data from the HTML5 data-* attribute
          +	if ( data === undefined && elem.nodeType === 1 ) {
          +
          +		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
          +
          +		data = elem.getAttribute( name );
          +
          +		if ( typeof data === "string" ) {
          +			try {
          +				data = data === "true" ? true :
          +				data === "false" ? false :
          +				data === "null" ? null :
          +				jQuery.isNumeric( data ) ? +data :
          +					rbrace.test( data ) ? jQuery.parseJSON( data ) :
          +					data;
          +			} catch( e ) {}
          +
          +			// Make sure we set the data so it isn't changed later
          +			jQuery.data( elem, key, data );
          +
          +		} else {
          +			data = undefined;
          +		}
          +	}
          +
          +	return data;
          +}
          +
          +// checks a cache object for emptiness
          +function isEmptyDataObject( obj ) {
          +	for ( var name in obj ) {
          +
          +		// if the public data object is empty, the private is still empty
          +		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
          +			continue;
          +		}
          +		if ( name !== "toJSON" ) {
          +			return false;
          +		}
          +	}
          +
          +	return true;
          +}
          +
          +
          +
          +
          +function handleQueueMarkDefer( elem, type, src ) {
          +	var deferDataKey = type + "defer",
          +		queueDataKey = type + "queue",
          +		markDataKey = type + "mark",
          +		defer = jQuery._data( elem, deferDataKey );
          +	if ( defer &&
          +		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
          +		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
          +		// Give room for hard-coded callbacks to fire first
          +		// and eventually mark/queue something else on the element
          +		setTimeout( function() {
          +			if ( !jQuery._data( elem, queueDataKey ) &&
          +				!jQuery._data( elem, markDataKey ) ) {
          +				jQuery.removeData( elem, deferDataKey, true );
          +				defer.fire();
          +			}
          +		}, 0 );
          +	}
          +}
          +
          +jQuery.extend({
          +
          +	_mark: function( elem, type ) {
          +		if ( elem ) {
          +			type = ( type || "fx" ) + "mark";
          +			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
          +		}
          +	},
          +
          +	_unmark: function( force, elem, type ) {
          +		if ( force !== true ) {
          +			type = elem;
          +			elem = force;
          +			force = false;
          +		}
          +		if ( elem ) {
          +			type = type || "fx";
          +			var key = type + "mark",
          +				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
          +			if ( count ) {
          +				jQuery._data( elem, key, count );
          +			} else {
          +				jQuery.removeData( elem, key, true );
          +				handleQueueMarkDefer( elem, type, "mark" );
          +			}
          +		}
          +	},
          +
          +	queue: function( elem, type, data ) {
          +		var q;
          +		if ( elem ) {
          +			type = ( type || "fx" ) + "queue";
          +			q = jQuery._data( elem, type );
          +
          +			// Speed up dequeue by getting out quickly if this is just a lookup
          +			if ( data ) {
          +				if ( !q || jQuery.isArray(data) ) {
          +					q = jQuery._data( elem, type, jQuery.makeArray(data) );
          +				} else {
          +					q.push( data );
          +				}
          +			}
          +			return q || [];
          +		}
          +	},
          +
          +	dequeue: function( elem, type ) {
          +		type = type || "fx";
          +
          +		var queue = jQuery.queue( elem, type ),
          +			fn = queue.shift(),
          +			hooks = {};
          +
          +		// If the fx queue is dequeued, always remove the progress sentinel
          +		if ( fn === "inprogress" ) {
          +			fn = queue.shift();
          +		}
          +
          +		if ( fn ) {
          +			// Add a progress sentinel to prevent the fx queue from being
          +			// automatically dequeued
          +			if ( type === "fx" ) {
          +				queue.unshift( "inprogress" );
          +			}
          +
          +			jQuery._data( elem, type + ".run", hooks );
          +			fn.call( elem, function() {
          +				jQuery.dequeue( elem, type );
          +			}, hooks );
          +		}
          +
          +		if ( !queue.length ) {
          +			jQuery.removeData( elem, type + "queue " + type + ".run", true );
          +			handleQueueMarkDefer( elem, type, "queue" );
          +		}
          +	}
          +});
          +
          +jQuery.fn.extend({
          +	queue: function( type, data ) {
          +		var setter = 2;
          +
          +		if ( typeof type !== "string" ) {
          +			data = type;
          +			type = "fx";
          +			setter--;
          +		}
          +
          +		if ( arguments.length < setter ) {
          +			return jQuery.queue( this[0], type );
          +		}
          +
          +		return data === undefined ?
          +			this :
          +			this.each(function() {
          +				var queue = jQuery.queue( this, type, data );
          +
          +				if ( type === "fx" && queue[0] !== "inprogress" ) {
          +					jQuery.dequeue( this, type );
          +				}
          +			});
          +	},
          +	dequeue: function( type ) {
          +		return this.each(function() {
          +			jQuery.dequeue( this, type );
          +		});
          +	},
          +	// Based off of the plugin by Clint Helfers, with permission.
          +	// http://blindsignals.com/index.php/2009/07/jquery-delay/
          +	delay: function( time, type ) {
          +		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
          +		type = type || "fx";
          +
          +		return this.queue( type, function( next, hooks ) {
          +			var timeout = setTimeout( next, time );
          +			hooks.stop = function() {
          +				clearTimeout( timeout );
          +			};
          +		});
          +	},
          +	clearQueue: function( type ) {
          +		return this.queue( type || "fx", [] );
          +	},
          +	// Get a promise resolved when queues of a certain type
          +	// are emptied (fx is the type by default)
          +	promise: function( type, object ) {
          +		if ( typeof type !== "string" ) {
          +			object = type;
          +			type = undefined;
          +		}
          +		type = type || "fx";
          +		var defer = jQuery.Deferred(),
          +			elements = this,
          +			i = elements.length,
          +			count = 1,
          +			deferDataKey = type + "defer",
          +			queueDataKey = type + "queue",
          +			markDataKey = type + "mark",
          +			tmp;
          +		function resolve() {
          +			if ( !( --count ) ) {
          +				defer.resolveWith( elements, [ elements ] );
          +			}
          +		}
          +		while( i-- ) {
          +			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
          +					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
          +						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
          +					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
          +				count++;
          +				tmp.add( resolve );
          +			}
          +		}
          +		resolve();
          +		return defer.promise( object );
          +	}
          +});
          +
          +
          +
          +
          +var rclass = /[\n\t\r]/g,
          +	rspace = /\s+/,
          +	rreturn = /\r/g,
          +	rtype = /^(?:button|input)$/i,
          +	rfocusable = /^(?:button|input|object|select|textarea)$/i,
          +	rclickable = /^a(?:rea)?$/i,
          +	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
          +	getSetAttribute = jQuery.support.getSetAttribute,
          +	nodeHook, boolHook, fixSpecified;
          +
          +jQuery.fn.extend({
          +	attr: function( name, value ) {
          +		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
          +	},
          +
          +	removeAttr: function( name ) {
          +		return this.each(function() {
          +			jQuery.removeAttr( this, name );
          +		});
          +	},
          +
          +	prop: function( name, value ) {
          +		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
          +	},
          +
          +	removeProp: function( name ) {
          +		name = jQuery.propFix[ name ] || name;
          +		return this.each(function() {
          +			// try/catch handles cases where IE balks (such as removing a property on window)
          +			try {
          +				this[ name ] = undefined;
          +				delete this[ name ];
          +			} catch( e ) {}
          +		});
          +	},
          +
          +	addClass: function( value ) {
          +		var classNames, i, l, elem,
          +			setClass, c, cl;
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each(function( j ) {
          +				jQuery( this ).addClass( value.call(this, j, this.className) );
          +			});
          +		}
          +
          +		if ( value && typeof value === "string" ) {
          +			classNames = value.split( rspace );
          +
          +			for ( i = 0, l = this.length; i < l; i++ ) {
          +				elem = this[ i ];
          +
          +				if ( elem.nodeType === 1 ) {
          +					if ( !elem.className && classNames.length === 1 ) {
          +						elem.className = value;
          +
          +					} else {
          +						setClass = " " + elem.className + " ";
          +
          +						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
          +							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
          +								setClass += classNames[ c ] + " ";
          +							}
          +						}
          +						elem.className = jQuery.trim( setClass );
          +					}
          +				}
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	removeClass: function( value ) {
          +		var classNames, i, l, elem, className, c, cl;
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each(function( j ) {
          +				jQuery( this ).removeClass( value.call(this, j, this.className) );
          +			});
          +		}
          +
          +		if ( (value && typeof value === "string") || value === undefined ) {
          +			classNames = ( value || "" ).split( rspace );
          +
          +			for ( i = 0, l = this.length; i < l; i++ ) {
          +				elem = this[ i ];
          +
          +				if ( elem.nodeType === 1 && elem.className ) {
          +					if ( value ) {
          +						className = (" " + elem.className + " ").replace( rclass, " " );
          +						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
          +							className = className.replace(" " + classNames[ c ] + " ", " ");
          +						}
          +						elem.className = jQuery.trim( className );
          +
          +					} else {
          +						elem.className = "";
          +					}
          +				}
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	toggleClass: function( value, stateVal ) {
          +		var type = typeof value,
          +			isBool = typeof stateVal === "boolean";
          +
          +		if ( jQuery.isFunction( value ) ) {
          +			return this.each(function( i ) {
          +				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
          +			});
          +		}
          +
          +		return this.each(function() {
          +			if ( type === "string" ) {
          +				// toggle individual class names
          +				var className,
          +					i = 0,
          +					self = jQuery( this ),
          +					state = stateVal,
          +					classNames = value.split( rspace );
          +
          +				while ( (className = classNames[ i++ ]) ) {
          +					// check each className given, space seperated list
          +					state = isBool ? state : !self.hasClass( className );
          +					self[ state ? "addClass" : "removeClass" ]( className );
          +				}
          +
          +			} else if ( type === "undefined" || type === "boolean" ) {
          +				if ( this.className ) {
          +					// store className if set
          +					jQuery._data( this, "__className__", this.className );
          +				}
          +
          +				// toggle whole className
          +				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
          +			}
          +		});
          +	},
          +
          +	hasClass: function( selector ) {
          +		var className = " " + selector + " ",
          +			i = 0,
          +			l = this.length;
          +		for ( ; i < l; i++ ) {
          +			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
          +				return true;
          +			}
          +		}
          +
          +		return false;
          +	},
          +
          +	val: function( value ) {
          +		var hooks, ret, isFunction,
          +			elem = this[0];
          +
          +		if ( !arguments.length ) {
          +			if ( elem ) {
          +				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
          +
          +				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
          +					return ret;
          +				}
          +
          +				ret = elem.value;
          +
          +				return typeof ret === "string" ?
          +					// handle most common string cases
          +					ret.replace(rreturn, "") :
          +					// handle cases where value is null/undef or number
          +					ret == null ? "" : ret;
          +			}
          +
          +			return;
          +		}
          +
          +		isFunction = jQuery.isFunction( value );
          +
          +		return this.each(function( i ) {
          +			var self = jQuery(this), val;
          +
          +			if ( this.nodeType !== 1 ) {
          +				return;
          +			}
          +
          +			if ( isFunction ) {
          +				val = value.call( this, i, self.val() );
          +			} else {
          +				val = value;
          +			}
          +
          +			// Treat null/undefined as ""; convert numbers to string
          +			if ( val == null ) {
          +				val = "";
          +			} else if ( typeof val === "number" ) {
          +				val += "";
          +			} else if ( jQuery.isArray( val ) ) {
          +				val = jQuery.map(val, function ( value ) {
          +					return value == null ? "" : value + "";
          +				});
          +			}
          +
          +			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
          +
          +			// If set returns undefined, fall back to normal setting
          +			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
          +				this.value = val;
          +			}
          +		});
          +	}
          +});
          +
          +jQuery.extend({
          +	valHooks: {
          +		option: {
          +			get: function( elem ) {
          +				// attributes.value is undefined in Blackberry 4.7 but
          +				// uses .value. See #6932
          +				var val = elem.attributes.value;
          +				return !val || val.specified ? elem.value : elem.text;
          +			}
          +		},
          +		select: {
          +			get: function( elem ) {
          +				var value, i, max, option,
          +					index = elem.selectedIndex,
          +					values = [],
          +					options = elem.options,
          +					one = elem.type === "select-one";
          +
          +				// Nothing was selected
          +				if ( index < 0 ) {
          +					return null;
          +				}
          +
          +				// Loop through all the selected options
          +				i = one ? index : 0;
          +				max = one ? index + 1 : options.length;
          +				for ( ; i < max; i++ ) {
          +					option = options[ i ];
          +
          +					// Don't return options that are disabled or in a disabled optgroup
          +					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
          +							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
          +
          +						// Get the specific value for the option
          +						value = jQuery( option ).val();
          +
          +						// We don't need an array for one selects
          +						if ( one ) {
          +							return value;
          +						}
          +
          +						// Multi-Selects return an array
          +						values.push( value );
          +					}
          +				}
          +
          +				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
          +				if ( one && !values.length && options.length ) {
          +					return jQuery( options[ index ] ).val();
          +				}
          +
          +				return values;
          +			},
          +
          +			set: function( elem, value ) {
          +				var values = jQuery.makeArray( value );
          +
          +				jQuery(elem).find("option").each(function() {
          +					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
          +				});
          +
          +				if ( !values.length ) {
          +					elem.selectedIndex = -1;
          +				}
          +				return values;
          +			}
          +		}
          +	},
          +
          +	attrFn: {
          +		val: true,
          +		css: true,
          +		html: true,
          +		text: true,
          +		data: true,
          +		width: true,
          +		height: true,
          +		offset: true
          +	},
          +
          +	attr: function( elem, name, value, pass ) {
          +		var ret, hooks, notxml,
          +			nType = elem.nodeType;
          +
          +		// don't get/set attributes on text, comment and attribute nodes
          +		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
          +			return;
          +		}
          +
          +		if ( pass && name in jQuery.attrFn ) {
          +			return jQuery( elem )[ name ]( value );
          +		}
          +
          +		// Fallback to prop when attributes are not supported
          +		if ( typeof elem.getAttribute === "undefined" ) {
          +			return jQuery.prop( elem, name, value );
          +		}
          +
          +		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
          +
          +		// All attributes are lowercase
          +		// Grab necessary hook if one is defined
          +		if ( notxml ) {
          +			name = name.toLowerCase();
          +			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
          +		}
          +
          +		if ( value !== undefined ) {
          +
          +			if ( value === null ) {
          +				jQuery.removeAttr( elem, name );
          +				return;
          +
          +			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
          +				return ret;
          +
          +			} else {
          +				elem.setAttribute( name, "" + value );
          +				return value;
          +			}
          +
          +		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
          +			return ret;
          +
          +		} else {
          +
          +			ret = elem.getAttribute( name );
          +
          +			// Non-existent attributes return null, we normalize to undefined
          +			return ret === null ?
          +				undefined :
          +				ret;
          +		}
          +	},
          +
          +	removeAttr: function( elem, value ) {
          +		var propName, attrNames, name, l, isBool,
          +			i = 0;
          +
          +		if ( value && elem.nodeType === 1 ) {
          +			attrNames = value.toLowerCase().split( rspace );
          +			l = attrNames.length;
          +
          +			for ( ; i < l; i++ ) {
          +				name = attrNames[ i ];
          +
          +				if ( name ) {
          +					propName = jQuery.propFix[ name ] || name;
          +					isBool = rboolean.test( name );
          +
          +					// See #9699 for explanation of this approach (setting first, then removal)
          +					// Do not do this for boolean attributes (see #10870)
          +					if ( !isBool ) {
          +						jQuery.attr( elem, name, "" );
          +					}
          +					elem.removeAttribute( getSetAttribute ? name : propName );
          +
          +					// Set corresponding property to false for boolean attributes
          +					if ( isBool && propName in elem ) {
          +						elem[ propName ] = false;
          +					}
          +				}
          +			}
          +		}
          +	},
          +
          +	attrHooks: {
          +		type: {
          +			set: function( elem, value ) {
          +				// We can't allow the type property to be changed (since it causes problems in IE)
          +				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
          +					jQuery.error( "type property can't be changed" );
          +				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
          +					// Setting the type on a radio button after the value resets the value in IE6-9
          +					// Reset value to it's default in case type is set after value
          +					// This is for element creation
          +					var val = elem.value;
          +					elem.setAttribute( "type", value );
          +					if ( val ) {
          +						elem.value = val;
          +					}
          +					return value;
          +				}
          +			}
          +		},
          +		// Use the value property for back compat
          +		// Use the nodeHook for button elements in IE6/7 (#1954)
          +		value: {
          +			get: function( elem, name ) {
          +				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
          +					return nodeHook.get( elem, name );
          +				}
          +				return name in elem ?
          +					elem.value :
          +					null;
          +			},
          +			set: function( elem, value, name ) {
          +				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
          +					return nodeHook.set( elem, value, name );
          +				}
          +				// Does not return so that setAttribute is also used
          +				elem.value = value;
          +			}
          +		}
          +	},
          +
          +	propFix: {
          +		tabindex: "tabIndex",
          +		readonly: "readOnly",
          +		"for": "htmlFor",
          +		"class": "className",
          +		maxlength: "maxLength",
          +		cellspacing: "cellSpacing",
          +		cellpadding: "cellPadding",
          +		rowspan: "rowSpan",
          +		colspan: "colSpan",
          +		usemap: "useMap",
          +		frameborder: "frameBorder",
          +		contenteditable: "contentEditable"
          +	},
          +
          +	prop: function( elem, name, value ) {
          +		var ret, hooks, notxml,
          +			nType = elem.nodeType;
          +
          +		// don't get/set properties on text, comment and attribute nodes
          +		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
          +			return;
          +		}
          +
          +		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
          +
          +		if ( notxml ) {
          +			// Fix name and attach hooks
          +			name = jQuery.propFix[ name ] || name;
          +			hooks = jQuery.propHooks[ name ];
          +		}
          +
          +		if ( value !== undefined ) {
          +			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
          +				return ret;
          +
          +			} else {
          +				return ( elem[ name ] = value );
          +			}
          +
          +		} else {
          +			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
          +				return ret;
          +
          +			} else {
          +				return elem[ name ];
          +			}
          +		}
          +	},
          +
          +	propHooks: {
          +		tabIndex: {
          +			get: function( elem ) {
          +				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
          +				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
          +				var attributeNode = elem.getAttributeNode("tabindex");
          +
          +				return attributeNode && attributeNode.specified ?
          +					parseInt( attributeNode.value, 10 ) :
          +					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
          +						0 :
          +						undefined;
          +			}
          +		}
          +	}
          +});
          +
          +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
          +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
          +
          +// Hook for boolean attributes
          +boolHook = {
          +	get: function( elem, name ) {
          +		// Align boolean attributes with corresponding properties
          +		// Fall back to attribute presence where some booleans are not supported
          +		var attrNode,
          +			property = jQuery.prop( elem, name );
          +		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
          +			name.toLowerCase() :
          +			undefined;
          +	},
          +	set: function( elem, value, name ) {
          +		var propName;
          +		if ( value === false ) {
          +			// Remove boolean attributes when set to false
          +			jQuery.removeAttr( elem, name );
          +		} else {
          +			// value is true since we know at this point it's type boolean and not false
          +			// Set boolean attributes to the same name and set the DOM property
          +			propName = jQuery.propFix[ name ] || name;
          +			if ( propName in elem ) {
          +				// Only set the IDL specifically if it already exists on the element
          +				elem[ propName ] = true;
          +			}
          +
          +			elem.setAttribute( name, name.toLowerCase() );
          +		}
          +		return name;
          +	}
          +};
          +
          +// IE6/7 do not support getting/setting some attributes with get/setAttribute
          +if ( !getSetAttribute ) {
          +
          +	fixSpecified = {
          +		name: true,
          +		id: true,
          +		coords: true
          +	};
          +
          +	// Use this for any attribute in IE6/7
          +	// This fixes almost every IE6/7 issue
          +	nodeHook = jQuery.valHooks.button = {
          +		get: function( elem, name ) {
          +			var ret;
          +			ret = elem.getAttributeNode( name );
          +			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
          +				ret.nodeValue :
          +				undefined;
          +		},
          +		set: function( elem, value, name ) {
          +			// Set the existing or create a new attribute node
          +			var ret = elem.getAttributeNode( name );
          +			if ( !ret ) {
          +				ret = document.createAttribute( name );
          +				elem.setAttributeNode( ret );
          +			}
          +			return ( ret.nodeValue = value + "" );
          +		}
          +	};
          +
          +	// Apply the nodeHook to tabindex
          +	jQuery.attrHooks.tabindex.set = nodeHook.set;
          +
          +	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
          +	// This is for removals
          +	jQuery.each([ "width", "height" ], function( i, name ) {
          +		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
          +			set: function( elem, value ) {
          +				if ( value === "" ) {
          +					elem.setAttribute( name, "auto" );
          +					return value;
          +				}
          +			}
          +		});
          +	});
          +
          +	// Set contenteditable to false on removals(#10429)
          +	// Setting to empty string throws an error as an invalid value
          +	jQuery.attrHooks.contenteditable = {
          +		get: nodeHook.get,
          +		set: function( elem, value, name ) {
          +			if ( value === "" ) {
          +				value = "false";
          +			}
          +			nodeHook.set( elem, value, name );
          +		}
          +	};
          +}
          +
          +
          +// Some attributes require a special call on IE
          +if ( !jQuery.support.hrefNormalized ) {
          +	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
          +		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
          +			get: function( elem ) {
          +				var ret = elem.getAttribute( name, 2 );
          +				return ret === null ? undefined : ret;
          +			}
          +		});
          +	});
          +}
          +
          +if ( !jQuery.support.style ) {
          +	jQuery.attrHooks.style = {
          +		get: function( elem ) {
          +			// Return undefined in the case of empty string
          +			// Normalize to lowercase since IE uppercases css property names
          +			return elem.style.cssText.toLowerCase() || undefined;
          +		},
          +		set: function( elem, value ) {
          +			return ( elem.style.cssText = "" + value );
          +		}
          +	};
          +}
          +
          +// Safari mis-reports the default selected property of an option
          +// Accessing the parent's selectedIndex property fixes it
          +if ( !jQuery.support.optSelected ) {
          +	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
          +		get: function( elem ) {
          +			var parent = elem.parentNode;
          +
          +			if ( parent ) {
          +				parent.selectedIndex;
          +
          +				// Make sure that it also works with optgroups, see #5701
          +				if ( parent.parentNode ) {
          +					parent.parentNode.selectedIndex;
          +				}
          +			}
          +			return null;
          +		}
          +	});
          +}
          +
          +// IE6/7 call enctype encoding
          +if ( !jQuery.support.enctype ) {
          +	jQuery.propFix.enctype = "encoding";
          +}
          +
          +// Radios and checkboxes getter/setter
          +if ( !jQuery.support.checkOn ) {
          +	jQuery.each([ "radio", "checkbox" ], function() {
          +		jQuery.valHooks[ this ] = {
          +			get: function( elem ) {
          +				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
          +				return elem.getAttribute("value") === null ? "on" : elem.value;
          +			}
          +		};
          +	});
          +}
          +jQuery.each([ "radio", "checkbox" ], function() {
          +	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
          +		set: function( elem, value ) {
          +			if ( jQuery.isArray( value ) ) {
          +				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
          +			}
          +		}
          +	});
          +});
          +
          +
          +
          +
          +var rformElems = /^(?:textarea|input|select)$/i,
          +	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
          +	rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
          +	rkeyEvent = /^key/,
          +	rmouseEvent = /^(?:mouse|contextmenu)|click/,
          +	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
          +	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
          +	quickParse = function( selector ) {
          +		var quick = rquickIs.exec( selector );
          +		if ( quick ) {
          +			//   0  1    2   3
          +			// [ _, tag, id, class ]
          +			quick[1] = ( quick[1] || "" ).toLowerCase();
          +			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
          +		}
          +		return quick;
          +	},
          +	quickIs = function( elem, m ) {
          +		var attrs = elem.attributes || {};
          +		return (
          +			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
          +			(!m[2] || (attrs.id || {}).value === m[2]) &&
          +			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
          +		);
          +	},
          +	hoverHack = function( events ) {
          +		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
          +	};
          +
          +/*
          + * Helper functions for managing events -- not part of the public interface.
          + * Props to Dean Edwards' addEvent library for many of the ideas.
          + */
          +jQuery.event = {
          +
          +	add: function( elem, types, handler, data, selector ) {
          +
          +		var elemData, eventHandle, events,
          +			t, tns, type, namespaces, handleObj,
          +			handleObjIn, quick, handlers, special;
          +
          +		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
          +		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
          +			return;
          +		}
          +
          +		// Caller can pass in an object of custom data in lieu of the handler
          +		if ( handler.handler ) {
          +			handleObjIn = handler;
          +			handler = handleObjIn.handler;
          +			selector = handleObjIn.selector;
          +		}
          +
          +		// Make sure that the handler has a unique ID, used to find/remove it later
          +		if ( !handler.guid ) {
          +			handler.guid = jQuery.guid++;
          +		}
          +
          +		// Init the element's event structure and main handler, if this is the first
          +		events = elemData.events;
          +		if ( !events ) {
          +			elemData.events = events = {};
          +		}
          +		eventHandle = elemData.handle;
          +		if ( !eventHandle ) {
          +			elemData.handle = eventHandle = function( e ) {
          +				// Discard the second event of a jQuery.event.trigger() and
          +				// when an event is called after a page has unloaded
          +				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
          +					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
          +					undefined;
          +			};
          +			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
          +			eventHandle.elem = elem;
          +		}
          +
          +		// Handle multiple events separated by a space
          +		// jQuery(...).bind("mouseover mouseout", fn);
          +		types = jQuery.trim( hoverHack(types) ).split( " " );
          +		for ( t = 0; t < types.length; t++ ) {
          +
          +			tns = rtypenamespace.exec( types[t] ) || [];
          +			type = tns[1];
          +			namespaces = ( tns[2] || "" ).split( "." ).sort();
          +
          +			// If event changes its type, use the special event handlers for the changed type
          +			special = jQuery.event.special[ type ] || {};
          +
          +			// If selector defined, determine special event api type, otherwise given type
          +			type = ( selector ? special.delegateType : special.bindType ) || type;
          +
          +			// Update special based on newly reset type
          +			special = jQuery.event.special[ type ] || {};
          +
          +			// handleObj is passed to all event handlers
          +			handleObj = jQuery.extend({
          +				type: type,
          +				origType: tns[1],
          +				data: data,
          +				handler: handler,
          +				guid: handler.guid,
          +				selector: selector,
          +				quick: selector && quickParse( selector ),
          +				namespace: namespaces.join(".")
          +			}, handleObjIn );
          +
          +			// Init the event handler queue if we're the first
          +			handlers = events[ type ];
          +			if ( !handlers ) {
          +				handlers = events[ type ] = [];
          +				handlers.delegateCount = 0;
          +
          +				// Only use addEventListener/attachEvent if the special events handler returns false
          +				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
          +					// Bind the global event handler to the element
          +					if ( elem.addEventListener ) {
          +						elem.addEventListener( type, eventHandle, false );
          +
          +					} else if ( elem.attachEvent ) {
          +						elem.attachEvent( "on" + type, eventHandle );
          +					}
          +				}
          +			}
          +
          +			if ( special.add ) {
          +				special.add.call( elem, handleObj );
          +
          +				if ( !handleObj.handler.guid ) {
          +					handleObj.handler.guid = handler.guid;
          +				}
          +			}
          +
          +			// Add to the element's handler list, delegates in front
          +			if ( selector ) {
          +				handlers.splice( handlers.delegateCount++, 0, handleObj );
          +			} else {
          +				handlers.push( handleObj );
          +			}
          +
          +			// Keep track of which events have ever been used, for event optimization
          +			jQuery.event.global[ type ] = true;
          +		}
          +
          +		// Nullify elem to prevent memory leaks in IE
          +		elem = null;
          +	},
          +
          +	global: {},
          +
          +	// Detach an event or set of events from an element
          +	remove: function( elem, types, handler, selector, mappedTypes ) {
          +
          +		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
          +			t, tns, type, origType, namespaces, origCount,
          +			j, events, special, handle, eventType, handleObj;
          +
          +		if ( !elemData || !(events = elemData.events) ) {
          +			return;
          +		}
          +
          +		// Once for each type.namespace in types; type may be omitted
          +		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
          +		for ( t = 0; t < types.length; t++ ) {
          +			tns = rtypenamespace.exec( types[t] ) || [];
          +			type = origType = tns[1];
          +			namespaces = tns[2];
          +
          +			// Unbind all events (on this namespace, if provided) for the element
          +			if ( !type ) {
          +				for ( type in events ) {
          +					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
          +				}
          +				continue;
          +			}
          +
          +			special = jQuery.event.special[ type ] || {};
          +			type = ( selector? special.delegateType : special.bindType ) || type;
          +			eventType = events[ type ] || [];
          +			origCount = eventType.length;
          +			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
          +
          +			// Remove matching events
          +			for ( j = 0; j < eventType.length; j++ ) {
          +				handleObj = eventType[ j ];
          +
          +				if ( ( mappedTypes || origType === handleObj.origType ) &&
          +					 ( !handler || handler.guid === handleObj.guid ) &&
          +					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
          +					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
          +					eventType.splice( j--, 1 );
          +
          +					if ( handleObj.selector ) {
          +						eventType.delegateCount--;
          +					}
          +					if ( special.remove ) {
          +						special.remove.call( elem, handleObj );
          +					}
          +				}
          +			}
          +
          +			// Remove generic event handler if we removed something and no more handlers exist
          +			// (avoids potential for endless recursion during removal of special event handlers)
          +			if ( eventType.length === 0 && origCount !== eventType.length ) {
          +				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
          +					jQuery.removeEvent( elem, type, elemData.handle );
          +				}
          +
          +				delete events[ type ];
          +			}
          +		}
          +
          +		// Remove the expando if it's no longer used
          +		if ( jQuery.isEmptyObject( events ) ) {
          +			handle = elemData.handle;
          +			if ( handle ) {
          +				handle.elem = null;
          +			}
          +
          +			// removeData also checks for emptiness and clears the expando if empty
          +			// so use it instead of delete
          +			jQuery.removeData( elem, [ "events", "handle" ], true );
          +		}
          +	},
          +
          +	// Events that are safe to short-circuit if no handlers are attached.
          +	// Native DOM events should not be added, they may have inline handlers.
          +	customEvent: {
          +		"getData": true,
          +		"setData": true,
          +		"changeData": true
          +	},
          +
          +	trigger: function( event, data, elem, onlyHandlers ) {
          +		// Don't do events on text and comment nodes
          +		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
          +			return;
          +		}
          +
          +		// Event object or event type
          +		var type = event.type || event,
          +			namespaces = [],
          +			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
          +
          +		// focus/blur morphs to focusin/out; ensure we're not firing them right now
          +		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
          +			return;
          +		}
          +
          +		if ( type.indexOf( "!" ) >= 0 ) {
          +			// Exclusive events trigger only for the exact event (no namespaces)
          +			type = type.slice(0, -1);
          +			exclusive = true;
          +		}
          +
          +		if ( type.indexOf( "." ) >= 0 ) {
          +			// Namespaced trigger; create a regexp to match event type in handle()
          +			namespaces = type.split(".");
          +			type = namespaces.shift();
          +			namespaces.sort();
          +		}
          +
          +		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
          +			// No jQuery handlers for this event type, and it can't have inline handlers
          +			return;
          +		}
          +
          +		// Caller can pass in an Event, Object, or just an event type string
          +		event = typeof event === "object" ?
          +			// jQuery.Event object
          +			event[ jQuery.expando ] ? event :
          +			// Object literal
          +			new jQuery.Event( type, event ) :
          +			// Just the event type (string)
          +			new jQuery.Event( type );
          +
          +		event.type = type;
          +		event.isTrigger = true;
          +		event.exclusive = exclusive;
          +		event.namespace = namespaces.join( "." );
          +		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
          +		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
          +
          +		// Handle a global trigger
          +		if ( !elem ) {
          +
          +			// TODO: Stop taunting the data cache; remove global events and always attach to document
          +			cache = jQuery.cache;
          +			for ( i in cache ) {
          +				if ( cache[ i ].events && cache[ i ].events[ type ] ) {
          +					jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
          +				}
          +			}
          +			return;
          +		}
          +
          +		// Clean up the event in case it is being reused
          +		event.result = undefined;
          +		if ( !event.target ) {
          +			event.target = elem;
          +		}
          +
          +		// Clone any incoming data and prepend the event, creating the handler arg list
          +		data = data != null ? jQuery.makeArray( data ) : [];
          +		data.unshift( event );
          +
          +		// Allow special events to draw outside the lines
          +		special = jQuery.event.special[ type ] || {};
          +		if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
          +			return;
          +		}
          +
          +		// Determine event propagation path in advance, per W3C events spec (#9951)
          +		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
          +		eventPath = [[ elem, special.bindType || type ]];
          +		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
          +
          +			bubbleType = special.delegateType || type;
          +			cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
          +			old = null;
          +			for ( ; cur; cur = cur.parentNode ) {
          +				eventPath.push([ cur, bubbleType ]);
          +				old = cur;
          +			}
          +
          +			// Only add window if we got to document (e.g., not plain obj or detached DOM)
          +			if ( old && old === elem.ownerDocument ) {
          +				eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
          +			}
          +		}
          +
          +		// Fire handlers on the event path
          +		for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
          +
          +			cur = eventPath[i][0];
          +			event.type = eventPath[i][1];
          +
          +			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
          +			if ( handle ) {
          +				handle.apply( cur, data );
          +			}
          +			// Note that this is a bare JS function and not a jQuery handler
          +			handle = ontype && cur[ ontype ];
          +			if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
          +				event.preventDefault();
          +			}
          +		}
          +		event.type = type;
          +
          +		// If nobody prevented the default action, do it now
          +		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
          +
          +			if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
          +				!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
          +
          +				// Call a native DOM method on the target with the same name name as the event.
          +				// Can't use an .isFunction() check here because IE6/7 fails that test.
          +				// Don't do default actions on window, that's where global variables be (#6170)
          +				// IE<9 dies on focus/blur to hidden element (#1486)
          +				if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
          +
          +					// Don't re-trigger an onFOO event when we call its FOO() method
          +					old = elem[ ontype ];
          +
          +					if ( old ) {
          +						elem[ ontype ] = null;
          +					}
          +
          +					// Prevent re-triggering of the same event, since we already bubbled it above
          +					jQuery.event.triggered = type;
          +					elem[ type ]();
          +					jQuery.event.triggered = undefined;
          +
          +					if ( old ) {
          +						elem[ ontype ] = old;
          +					}
          +				}
          +			}
          +		}
          +
          +		return event.result;
          +	},
          +
          +	dispatch: function( event ) {
          +
          +		// Make a writable jQuery.Event from the native event object
          +		event = jQuery.event.fix( event || window.event );
          +
          +		var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
          +			delegateCount = handlers.delegateCount,
          +			args = [].slice.call( arguments, 0 ),
          +			run_all = !event.exclusive && !event.namespace,
          +			special = jQuery.event.special[ event.type ] || {},
          +			handlerQueue = [],
          +			i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
          +
          +		// Use the fix-ed jQuery.Event rather than the (read-only) native event
          +		args[0] = event;
          +		event.delegateTarget = this;
          +
          +		// Call the preDispatch hook for the mapped type, and let it bail if desired
          +		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
          +			return;
          +		}
          +
          +		// Determine handlers that should run if there are delegated events
          +		// Avoid non-left-click bubbling in Firefox (#3861)
          +		if ( delegateCount && !(event.button && event.type === "click") ) {
          +
          +			// Pregenerate a single jQuery object for reuse with .is()
          +			jqcur = jQuery(this);
          +			jqcur.context = this.ownerDocument || this;
          +
          +			for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
          +
          +				// Don't process events on disabled elements (#6911, #8165)
          +				if ( cur.disabled !== true ) {
          +					selMatch = {};
          +					matches = [];
          +					jqcur[0] = cur;
          +					for ( i = 0; i < delegateCount; i++ ) {
          +						handleObj = handlers[ i ];
          +						sel = handleObj.selector;
          +
          +						if ( selMatch[ sel ] === undefined ) {
          +							selMatch[ sel ] = (
          +								handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
          +							);
          +						}
          +						if ( selMatch[ sel ] ) {
          +							matches.push( handleObj );
          +						}
          +					}
          +					if ( matches.length ) {
          +						handlerQueue.push({ elem: cur, matches: matches });
          +					}
          +				}
          +			}
          +		}
          +
          +		// Add the remaining (directly-bound) handlers
          +		if ( handlers.length > delegateCount ) {
          +			handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
          +		}
          +
          +		// Run delegates first; they may want to stop propagation beneath us
          +		for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
          +			matched = handlerQueue[ i ];
          +			event.currentTarget = matched.elem;
          +
          +			for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
          +				handleObj = matched.matches[ j ];
          +
          +				// Triggered event must either 1) be non-exclusive and have no namespace, or
          +				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
          +				if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
          +
          +					event.data = handleObj.data;
          +					event.handleObj = handleObj;
          +
          +					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
          +							.apply( matched.elem, args );
          +
          +					if ( ret !== undefined ) {
          +						event.result = ret;
          +						if ( ret === false ) {
          +							event.preventDefault();
          +							event.stopPropagation();
          +						}
          +					}
          +				}
          +			}
          +		}
          +
          +		// Call the postDispatch hook for the mapped type
          +		if ( special.postDispatch ) {
          +			special.postDispatch.call( this, event );
          +		}
          +
          +		return event.result;
          +	},
          +
          +	// Includes some event props shared by KeyEvent and MouseEvent
          +	// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
          +	props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
          +
          +	fixHooks: {},
          +
          +	keyHooks: {
          +		props: "char charCode key keyCode".split(" "),
          +		filter: function( event, original ) {
          +
          +			// Add which for key events
          +			if ( event.which == null ) {
          +				event.which = original.charCode != null ? original.charCode : original.keyCode;
          +			}
          +
          +			return event;
          +		}
          +	},
          +
          +	mouseHooks: {
          +		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
          +		filter: function( event, original ) {
          +			var eventDoc, doc, body,
          +				button = original.button,
          +				fromElement = original.fromElement;
          +
          +			// Calculate pageX/Y if missing and clientX/Y available
          +			if ( event.pageX == null && original.clientX != null ) {
          +				eventDoc = event.target.ownerDocument || document;
          +				doc = eventDoc.documentElement;
          +				body = eventDoc.body;
          +
          +				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
          +				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
          +			}
          +
          +			// Add relatedTarget, if necessary
          +			if ( !event.relatedTarget && fromElement ) {
          +				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
          +			}
          +
          +			// Add which for click: 1 === left; 2 === middle; 3 === right
          +			// Note: button is not normalized, so don't use it
          +			if ( !event.which && button !== undefined ) {
          +				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
          +			}
          +
          +			return event;
          +		}
          +	},
          +
          +	fix: function( event ) {
          +		if ( event[ jQuery.expando ] ) {
          +			return event;
          +		}
          +
          +		// Create a writable copy of the event object and normalize some properties
          +		var i, prop,
          +			originalEvent = event,
          +			fixHook = jQuery.event.fixHooks[ event.type ] || {},
          +			copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
          +
          +		event = jQuery.Event( originalEvent );
          +
          +		for ( i = copy.length; i; ) {
          +			prop = copy[ --i ];
          +			event[ prop ] = originalEvent[ prop ];
          +		}
          +
          +		// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
          +		if ( !event.target ) {
          +			event.target = originalEvent.srcElement || document;
          +		}
          +
          +		// Target should not be a text node (#504, Safari)
          +		if ( event.target.nodeType === 3 ) {
          +			event.target = event.target.parentNode;
          +		}
          +
          +		// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
          +		if ( event.metaKey === undefined ) {
          +			event.metaKey = event.ctrlKey;
          +		}
          +
          +		return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
          +	},
          +
          +	special: {
          +		ready: {
          +			// Make sure the ready event is setup
          +			setup: jQuery.bindReady
          +		},
          +
          +		load: {
          +			// Prevent triggered image.load events from bubbling to window.load
          +			noBubble: true
          +		},
          +
          +		focus: {
          +			delegateType: "focusin"
          +		},
          +		blur: {
          +			delegateType: "focusout"
          +		},
          +
          +		beforeunload: {
          +			setup: function( data, namespaces, eventHandle ) {
          +				// We only want to do this special case on windows
          +				if ( jQuery.isWindow( this ) ) {
          +					this.onbeforeunload = eventHandle;
          +				}
          +			},
          +
          +			teardown: function( namespaces, eventHandle ) {
          +				if ( this.onbeforeunload === eventHandle ) {
          +					this.onbeforeunload = null;
          +				}
          +			}
          +		}
          +	},
          +
          +	simulate: function( type, elem, event, bubble ) {
          +		// Piggyback on a donor event to simulate a different one.
          +		// Fake originalEvent to avoid donor's stopPropagation, but if the
          +		// simulated event prevents default then we do the same on the donor.
          +		var e = jQuery.extend(
          +			new jQuery.Event(),
          +			event,
          +			{ type: type,
          +				isSimulated: true,
          +				originalEvent: {}
          +			}
          +		);
          +		if ( bubble ) {
          +			jQuery.event.trigger( e, null, elem );
          +		} else {
          +			jQuery.event.dispatch.call( elem, e );
          +		}
          +		if ( e.isDefaultPrevented() ) {
          +			event.preventDefault();
          +		}
          +	}
          +};
          +
          +// Some plugins are using, but it's undocumented/deprecated and will be removed.
          +// The 1.7 special event interface should provide all the hooks needed now.
          +jQuery.event.handle = jQuery.event.dispatch;
          +
          +jQuery.removeEvent = document.removeEventListener ?
          +	function( elem, type, handle ) {
          +		if ( elem.removeEventListener ) {
          +			elem.removeEventListener( type, handle, false );
          +		}
          +	} :
          +	function( elem, type, handle ) {
          +		if ( elem.detachEvent ) {
          +			elem.detachEvent( "on" + type, handle );
          +		}
          +	};
          +
          +jQuery.Event = function( src, props ) {
          +	// Allow instantiation without the 'new' keyword
          +	if ( !(this instanceof jQuery.Event) ) {
          +		return new jQuery.Event( src, props );
          +	}
          +
          +	// Event object
          +	if ( src && src.type ) {
          +		this.originalEvent = src;
          +		this.type = src.type;
          +
          +		// Events bubbling up the document may have been marked as prevented
          +		// by a handler lower down the tree; reflect the correct value.
          +		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
          +			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
          +
          +	// Event type
          +	} else {
          +		this.type = src;
          +	}
          +
          +	// Put explicitly provided properties onto the event object
          +	if ( props ) {
          +		jQuery.extend( this, props );
          +	}
          +
          +	// Create a timestamp if incoming event doesn't have one
          +	this.timeStamp = src && src.timeStamp || jQuery.now();
          +
          +	// Mark it as fixed
          +	this[ jQuery.expando ] = true;
          +};
          +
          +function returnFalse() {
          +	return false;
          +}
          +function returnTrue() {
          +	return true;
          +}
          +
          +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
          +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
          +jQuery.Event.prototype = {
          +	preventDefault: function() {
          +		this.isDefaultPrevented = returnTrue;
          +
          +		var e = this.originalEvent;
          +		if ( !e ) {
          +			return;
          +		}
          +
          +		// if preventDefault exists run it on the original event
          +		if ( e.preventDefault ) {
          +			e.preventDefault();
          +
          +		// otherwise set the returnValue property of the original event to false (IE)
          +		} else {
          +			e.returnValue = false;
          +		}
          +	},
          +	stopPropagation: function() {
          +		this.isPropagationStopped = returnTrue;
          +
          +		var e = this.originalEvent;
          +		if ( !e ) {
          +			return;
          +		}
          +		// if stopPropagation exists run it on the original event
          +		if ( e.stopPropagation ) {
          +			e.stopPropagation();
          +		}
          +		// otherwise set the cancelBubble property of the original event to true (IE)
          +		e.cancelBubble = true;
          +	},
          +	stopImmediatePropagation: function() {
          +		this.isImmediatePropagationStopped = returnTrue;
          +		this.stopPropagation();
          +	},
          +	isDefaultPrevented: returnFalse,
          +	isPropagationStopped: returnFalse,
          +	isImmediatePropagationStopped: returnFalse
          +};
          +
          +// Create mouseenter/leave events using mouseover/out and event-time checks
          +jQuery.each({
          +	mouseenter: "mouseover",
          +	mouseleave: "mouseout"
          +}, function( orig, fix ) {
          +	jQuery.event.special[ orig ] = {
          +		delegateType: fix,
          +		bindType: fix,
          +
          +		handle: function( event ) {
          +			var target = this,
          +				related = event.relatedTarget,
          +				handleObj = event.handleObj,
          +				selector = handleObj.selector,
          +				ret;
          +
          +			// For mousenter/leave call the handler if related is outside the target.
          +			// NB: No relatedTarget if the mouse left/entered the browser window
          +			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
          +				event.type = handleObj.origType;
          +				ret = handleObj.handler.apply( this, arguments );
          +				event.type = fix;
          +			}
          +			return ret;
          +		}
          +	};
          +});
          +
          +// IE submit delegation
          +if ( !jQuery.support.submitBubbles ) {
          +
          +	jQuery.event.special.submit = {
          +		setup: function() {
          +			// Only need this for delegated form submit events
          +			if ( jQuery.nodeName( this, "form" ) ) {
          +				return false;
          +			}
          +
          +			// Lazy-add a submit handler when a descendant form may potentially be submitted
          +			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
          +				// Node name check avoids a VML-related crash in IE (#9807)
          +				var elem = e.target,
          +					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
          +				if ( form && !form._submit_attached ) {
          +					jQuery.event.add( form, "submit._submit", function( event ) {
          +						event._submit_bubble = true;
          +					});
          +					form._submit_attached = true;
          +				}
          +			});
          +			// return undefined since we don't need an event listener
          +		},
          +
          +		postDispatch: function( event ) {
          +			// If form was submitted by the user, bubble the event up the tree
          +			if ( event._submit_bubble ) {
          +				delete event._submit_bubble;
          +				if ( this.parentNode && !event.isTrigger ) {
          +					jQuery.event.simulate( "submit", this.parentNode, event, true );
          +				}
          +			}
          +		},
          +
          +		teardown: function() {
          +			// Only need this for delegated form submit events
          +			if ( jQuery.nodeName( this, "form" ) ) {
          +				return false;
          +			}
          +
          +			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
          +			jQuery.event.remove( this, "._submit" );
          +		}
          +	};
          +}
          +
          +// IE change delegation and checkbox/radio fix
          +if ( !jQuery.support.changeBubbles ) {
          +
          +	jQuery.event.special.change = {
          +
          +		setup: function() {
          +
          +			if ( rformElems.test( this.nodeName ) ) {
          +				// IE doesn't fire change on a check/radio until blur; trigger it on click
          +				// after a propertychange. Eat the blur-change in special.change.handle.
          +				// This still fires onchange a second time for check/radio after blur.
          +				if ( this.type === "checkbox" || this.type === "radio" ) {
          +					jQuery.event.add( this, "propertychange._change", function( event ) {
          +						if ( event.originalEvent.propertyName === "checked" ) {
          +							this._just_changed = true;
          +						}
          +					});
          +					jQuery.event.add( this, "click._change", function( event ) {
          +						if ( this._just_changed && !event.isTrigger ) {
          +							this._just_changed = false;
          +							jQuery.event.simulate( "change", this, event, true );
          +						}
          +					});
          +				}
          +				return false;
          +			}
          +			// Delegated event; lazy-add a change handler on descendant inputs
          +			jQuery.event.add( this, "beforeactivate._change", function( e ) {
          +				var elem = e.target;
          +
          +				if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
          +					jQuery.event.add( elem, "change._change", function( event ) {
          +						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
          +							jQuery.event.simulate( "change", this.parentNode, event, true );
          +						}
          +					});
          +					elem._change_attached = true;
          +				}
          +			});
          +		},
          +
          +		handle: function( event ) {
          +			var elem = event.target;
          +
          +			// Swallow native change events from checkbox/radio, we already triggered them above
          +			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
          +				return event.handleObj.handler.apply( this, arguments );
          +			}
          +		},
          +
          +		teardown: function() {
          +			jQuery.event.remove( this, "._change" );
          +
          +			return rformElems.test( this.nodeName );
          +		}
          +	};
          +}
          +
          +// Create "bubbling" focus and blur events
          +if ( !jQuery.support.focusinBubbles ) {
          +	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
          +
          +		// Attach a single capturing handler while someone wants focusin/focusout
          +		var attaches = 0,
          +			handler = function( event ) {
          +				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
          +			};
          +
          +		jQuery.event.special[ fix ] = {
          +			setup: function() {
          +				if ( attaches++ === 0 ) {
          +					document.addEventListener( orig, handler, true );
          +				}
          +			},
          +			teardown: function() {
          +				if ( --attaches === 0 ) {
          +					document.removeEventListener( orig, handler, true );
          +				}
          +			}
          +		};
          +	});
          +}
          +
          +jQuery.fn.extend({
          +
          +	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
          +		var origFn, type;
          +
          +		// Types can be a map of types/handlers
          +		if ( typeof types === "object" ) {
          +			// ( types-Object, selector, data )
          +			if ( typeof selector !== "string" ) { // && selector != null
          +				// ( types-Object, data )
          +				data = data || selector;
          +				selector = undefined;
          +			}
          +			for ( type in types ) {
          +				this.on( type, selector, data, types[ type ], one );
          +			}
          +			return this;
          +		}
          +
          +		if ( data == null && fn == null ) {
          +			// ( types, fn )
          +			fn = selector;
          +			data = selector = undefined;
          +		} else if ( fn == null ) {
          +			if ( typeof selector === "string" ) {
          +				// ( types, selector, fn )
          +				fn = data;
          +				data = undefined;
          +			} else {
          +				// ( types, data, fn )
          +				fn = data;
          +				data = selector;
          +				selector = undefined;
          +			}
          +		}
          +		if ( fn === false ) {
          +			fn = returnFalse;
          +		} else if ( !fn ) {
          +			return this;
          +		}
          +
          +		if ( one === 1 ) {
          +			origFn = fn;
          +			fn = function( event ) {
          +				// Can use an empty set, since event contains the info
          +				jQuery().off( event );
          +				return origFn.apply( this, arguments );
          +			};
          +			// Use same guid so caller can remove using origFn
          +			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
          +		}
          +		return this.each( function() {
          +			jQuery.event.add( this, types, fn, data, selector );
          +		});
          +	},
          +	one: function( types, selector, data, fn ) {
          +		return this.on( types, selector, data, fn, 1 );
          +	},
          +	off: function( types, selector, fn ) {
          +		if ( types && types.preventDefault && types.handleObj ) {
          +			// ( event )  dispatched jQuery.Event
          +			var handleObj = types.handleObj;
          +			jQuery( types.delegateTarget ).off(
          +				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
          +				handleObj.selector,
          +				handleObj.handler
          +			);
          +			return this;
          +		}
          +		if ( typeof types === "object" ) {
          +			// ( types-object [, selector] )
          +			for ( var type in types ) {
          +				this.off( type, selector, types[ type ] );
          +			}
          +			return this;
          +		}
          +		if ( selector === false || typeof selector === "function" ) {
          +			// ( types [, fn] )
          +			fn = selector;
          +			selector = undefined;
          +		}
          +		if ( fn === false ) {
          +			fn = returnFalse;
          +		}
          +		return this.each(function() {
          +			jQuery.event.remove( this, types, fn, selector );
          +		});
          +	},
          +
          +	bind: function( types, data, fn ) {
          +		return this.on( types, null, data, fn );
          +	},
          +	unbind: function( types, fn ) {
          +		return this.off( types, null, fn );
          +	},
          +
          +	live: function( types, data, fn ) {
          +		jQuery( this.context ).on( types, this.selector, data, fn );
          +		return this;
          +	},
          +	die: function( types, fn ) {
          +		jQuery( this.context ).off( types, this.selector || "**", fn );
          +		return this;
          +	},
          +
          +	delegate: function( selector, types, data, fn ) {
          +		return this.on( types, selector, data, fn );
          +	},
          +	undelegate: function( selector, types, fn ) {
          +		// ( namespace ) or ( selector, types [, fn] )
          +		return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
          +	},
          +
          +	trigger: function( type, data ) {
          +		return this.each(function() {
          +			jQuery.event.trigger( type, data, this );
          +		});
          +	},
          +	triggerHandler: function( type, data ) {
          +		if ( this[0] ) {
          +			return jQuery.event.trigger( type, data, this[0], true );
          +		}
          +	},
          +
          +	toggle: function( fn ) {
          +		// Save reference to arguments for access in closure
          +		var args = arguments,
          +			guid = fn.guid || jQuery.guid++,
          +			i = 0,
          +			toggler = function( event ) {
          +				// Figure out which function to execute
          +				var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
          +				jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
          +
          +				// Make sure that clicks stop
          +				event.preventDefault();
          +
          +				// and execute the function
          +				return args[ lastToggle ].apply( this, arguments ) || false;
          +			};
          +
          +		// link all the functions, so any of them can unbind this click handler
          +		toggler.guid = guid;
          +		while ( i < args.length ) {
          +			args[ i++ ].guid = guid;
          +		}
          +
          +		return this.click( toggler );
          +	},
          +
          +	hover: function( fnOver, fnOut ) {
          +		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
          +	}
          +});
          +
          +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
          +	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
          +	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
          +
          +	// Handle event binding
          +	jQuery.fn[ name ] = function( data, fn ) {
          +		if ( fn == null ) {
          +			fn = data;
          +			data = null;
          +		}
          +
          +		return arguments.length > 0 ?
          +			this.on( name, null, data, fn ) :
          +			this.trigger( name );
          +	};
          +
          +	if ( jQuery.attrFn ) {
          +		jQuery.attrFn[ name ] = true;
          +	}
          +
          +	if ( rkeyEvent.test( name ) ) {
          +		jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
          +	}
          +
          +	if ( rmouseEvent.test( name ) ) {
          +		jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
          +	}
          +});
          +
          +
          +
          +/*!
          + * Sizzle CSS Selector Engine
          + *  Copyright 2011, The Dojo Foundation
          + *  Released under the MIT, BSD, and GPL Licenses.
          + *  More information: http://sizzlejs.com/
          + */
          +(function(){
          +
          +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
          +	expando = "sizcache" + (Math.random() + '').replace('.', ''),
          +	done = 0,
          +	toString = Object.prototype.toString,
          +	hasDuplicate = false,
          +	baseHasDuplicate = true,
          +	rBackslash = /\\/g,
          +	rReturn = /\r\n/g,
          +	rNonWord = /\W/;
          +
          +// Here we check if the JavaScript engine is using some sort of
          +// optimization where it does not always call our comparision
          +// function. If that is the case, discard the hasDuplicate value.
          +//   Thus far that includes Google Chrome.
          +[0, 0].sort(function() {
          +	baseHasDuplicate = false;
          +	return 0;
          +});
          +
          +var Sizzle = function( selector, context, results, seed ) {
          +	results = results || [];
          +	context = context || document;
          +
          +	var origContext = context;
          +
          +	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
          +		return [];
          +	}
          +
          +	if ( !selector || typeof selector !== "string" ) {
          +		return results;
          +	}
          +
          +	var m, set, checkSet, extra, ret, cur, pop, i,
          +		prune = true,
          +		contextXML = Sizzle.isXML( context ),
          +		parts = [],
          +		soFar = selector;
          +
          +	// Reset the position of the chunker regexp (start from head)
          +	do {
          +		chunker.exec( "" );
          +		m = chunker.exec( soFar );
          +
          +		if ( m ) {
          +			soFar = m[3];
          +
          +			parts.push( m[1] );
          +
          +			if ( m[2] ) {
          +				extra = m[3];
          +				break;
          +			}
          +		}
          +	} while ( m );
          +
          +	if ( parts.length > 1 && origPOS.exec( selector ) ) {
          +
          +		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
          +			set = posProcess( parts[0] + parts[1], context, seed );
          +
          +		} else {
          +			set = Expr.relative[ parts[0] ] ?
          +				[ context ] :
          +				Sizzle( parts.shift(), context );
          +
          +			while ( parts.length ) {
          +				selector = parts.shift();
          +
          +				if ( Expr.relative[ selector ] ) {
          +					selector += parts.shift();
          +				}
          +
          +				set = posProcess( selector, set, seed );
          +			}
          +		}
          +
          +	} else {
          +		// Take a shortcut and set the context if the root selector is an ID
          +		// (but not if it'll be faster if the inner selector is an ID)
          +		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
          +				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
          +
          +			ret = Sizzle.find( parts.shift(), context, contextXML );
          +			context = ret.expr ?
          +				Sizzle.filter( ret.expr, ret.set )[0] :
          +				ret.set[0];
          +		}
          +
          +		if ( context ) {
          +			ret = seed ?
          +				{ expr: parts.pop(), set: makeArray(seed) } :
          +				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
          +
          +			set = ret.expr ?
          +				Sizzle.filter( ret.expr, ret.set ) :
          +				ret.set;
          +
          +			if ( parts.length > 0 ) {
          +				checkSet = makeArray( set );
          +
          +			} else {
          +				prune = false;
          +			}
          +
          +			while ( parts.length ) {
          +				cur = parts.pop();
          +				pop = cur;
          +
          +				if ( !Expr.relative[ cur ] ) {
          +					cur = "";
          +				} else {
          +					pop = parts.pop();
          +				}
          +
          +				if ( pop == null ) {
          +					pop = context;
          +				}
          +
          +				Expr.relative[ cur ]( checkSet, pop, contextXML );
          +			}
          +
          +		} else {
          +			checkSet = parts = [];
          +		}
          +	}
          +
          +	if ( !checkSet ) {
          +		checkSet = set;
          +	}
          +
          +	if ( !checkSet ) {
          +		Sizzle.error( cur || selector );
          +	}
          +
          +	if ( toString.call(checkSet) === "[object Array]" ) {
          +		if ( !prune ) {
          +			results.push.apply( results, checkSet );
          +
          +		} else if ( context && context.nodeType === 1 ) {
          +			for ( i = 0; checkSet[i] != null; i++ ) {
          +				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
          +					results.push( set[i] );
          +				}
          +			}
          +
          +		} else {
          +			for ( i = 0; checkSet[i] != null; i++ ) {
          +				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
          +					results.push( set[i] );
          +				}
          +			}
          +		}
          +
          +	} else {
          +		makeArray( checkSet, results );
          +	}
          +
          +	if ( extra ) {
          +		Sizzle( extra, origContext, results, seed );
          +		Sizzle.uniqueSort( results );
          +	}
          +
          +	return results;
          +};
          +
          +Sizzle.uniqueSort = function( results ) {
          +	if ( sortOrder ) {
          +		hasDuplicate = baseHasDuplicate;
          +		results.sort( sortOrder );
          +
          +		if ( hasDuplicate ) {
          +			for ( var i = 1; i < results.length; i++ ) {
          +				if ( results[i] === results[ i - 1 ] ) {
          +					results.splice( i--, 1 );
          +				}
          +			}
          +		}
          +	}
          +
          +	return results;
          +};
          +
          +Sizzle.matches = function( expr, set ) {
          +	return Sizzle( expr, null, null, set );
          +};
          +
          +Sizzle.matchesSelector = function( node, expr ) {
          +	return Sizzle( expr, null, null, [node] ).length > 0;
          +};
          +
          +Sizzle.find = function( expr, context, isXML ) {
          +	var set, i, len, match, type, left;
          +
          +	if ( !expr ) {
          +		return [];
          +	}
          +
          +	for ( i = 0, len = Expr.order.length; i < len; i++ ) {
          +		type = Expr.order[i];
          +
          +		if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
          +			left = match[1];
          +			match.splice( 1, 1 );
          +
          +			if ( left.substr( left.length - 1 ) !== "\\" ) {
          +				match[1] = (match[1] || "").replace( rBackslash, "" );
          +				set = Expr.find[ type ]( match, context, isXML );
          +
          +				if ( set != null ) {
          +					expr = expr.replace( Expr.match[ type ], "" );
          +					break;
          +				}
          +			}
          +		}
          +	}
          +
          +	if ( !set ) {
          +		set = typeof context.getElementsByTagName !== "undefined" ?
          +			context.getElementsByTagName( "*" ) :
          +			[];
          +	}
          +
          +	return { set: set, expr: expr };
          +};
          +
          +Sizzle.filter = function( expr, set, inplace, not ) {
          +	var match, anyFound,
          +		type, found, item, filter, left,
          +		i, pass,
          +		old = expr,
          +		result = [],
          +		curLoop = set,
          +		isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
          +
          +	while ( expr && set.length ) {
          +		for ( type in Expr.filter ) {
          +			if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
          +				filter = Expr.filter[ type ];
          +				left = match[1];
          +
          +				anyFound = false;
          +
          +				match.splice(1,1);
          +
          +				if ( left.substr( left.length - 1 ) === "\\" ) {
          +					continue;
          +				}
          +
          +				if ( curLoop === result ) {
          +					result = [];
          +				}
          +
          +				if ( Expr.preFilter[ type ] ) {
          +					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
          +
          +					if ( !match ) {
          +						anyFound = found = true;
          +
          +					} else if ( match === true ) {
          +						continue;
          +					}
          +				}
          +
          +				if ( match ) {
          +					for ( i = 0; (item = curLoop[i]) != null; i++ ) {
          +						if ( item ) {
          +							found = filter( item, match, i, curLoop );
          +							pass = not ^ found;
          +
          +							if ( inplace && found != null ) {
          +								if ( pass ) {
          +									anyFound = true;
          +
          +								} else {
          +									curLoop[i] = false;
          +								}
          +
          +							} else if ( pass ) {
          +								result.push( item );
          +								anyFound = true;
          +							}
          +						}
          +					}
          +				}
          +
          +				if ( found !== undefined ) {
          +					if ( !inplace ) {
          +						curLoop = result;
          +					}
          +
          +					expr = expr.replace( Expr.match[ type ], "" );
          +
          +					if ( !anyFound ) {
          +						return [];
          +					}
          +
          +					break;
          +				}
          +			}
          +		}
          +
          +		// Improper expression
          +		if ( expr === old ) {
          +			if ( anyFound == null ) {
          +				Sizzle.error( expr );
          +
          +			} else {
          +				break;
          +			}
          +		}
          +
          +		old = expr;
          +	}
          +
          +	return curLoop;
          +};
          +
          +Sizzle.error = function( msg ) {
          +	throw new Error( "Syntax error, unrecognized expression: " + msg );
          +};
          +
          +/**
          + * Utility function for retreiving the text value of an array of DOM nodes
          + * @param {Array|Element} elem
          + */
          +var getText = Sizzle.getText = function( elem ) {
          +    var i, node,
          +		nodeType = elem.nodeType,
          +		ret = "";
          +
          +	if ( nodeType ) {
          +		if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
          +			// Use textContent || innerText for elements
          +			if ( typeof elem.textContent === 'string' ) {
          +				return elem.textContent;
          +			} else if ( typeof elem.innerText === 'string' ) {
          +				// Replace IE's carriage returns
          +				return elem.innerText.replace( rReturn, '' );
          +			} else {
          +				// Traverse it's children
          +				for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
          +					ret += getText( elem );
          +				}
          +			}
          +		} else if ( nodeType === 3 || nodeType === 4 ) {
          +			return elem.nodeValue;
          +		}
          +	} else {
          +
          +		// If no nodeType, this is expected to be an array
          +		for ( i = 0; (node = elem[i]); i++ ) {
          +			// Do not traverse comment nodes
          +			if ( node.nodeType !== 8 ) {
          +				ret += getText( node );
          +			}
          +		}
          +	}
          +	return ret;
          +};
          +
          +var Expr = Sizzle.selectors = {
          +	order: [ "ID", "NAME", "TAG" ],
          +
          +	match: {
          +		ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
          +		CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
          +		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
          +		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
          +		TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
          +		CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
          +		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
          +		PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
          +	},
          +
          +	leftMatch: {},
          +
          +	attrMap: {
          +		"class": "className",
          +		"for": "htmlFor"
          +	},
          +
          +	attrHandle: {
          +		href: function( elem ) {
          +			return elem.getAttribute( "href" );
          +		},
          +		type: function( elem ) {
          +			return elem.getAttribute( "type" );
          +		}
          +	},
          +
          +	relative: {
          +		"+": function(checkSet, part){
          +			var isPartStr = typeof part === "string",
          +				isTag = isPartStr && !rNonWord.test( part ),
          +				isPartStrNotTag = isPartStr && !isTag;
          +
          +			if ( isTag ) {
          +				part = part.toLowerCase();
          +			}
          +
          +			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
          +				if ( (elem = checkSet[i]) ) {
          +					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
          +
          +					checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
          +						elem || false :
          +						elem === part;
          +				}
          +			}
          +
          +			if ( isPartStrNotTag ) {
          +				Sizzle.filter( part, checkSet, true );
          +			}
          +		},
          +
          +		">": function( checkSet, part ) {
          +			var elem,
          +				isPartStr = typeof part === "string",
          +				i = 0,
          +				l = checkSet.length;
          +
          +			if ( isPartStr && !rNonWord.test( part ) ) {
          +				part = part.toLowerCase();
          +
          +				for ( ; i < l; i++ ) {
          +					elem = checkSet[i];
          +
          +					if ( elem ) {
          +						var parent = elem.parentNode;
          +						checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
          +					}
          +				}
          +
          +			} else {
          +				for ( ; i < l; i++ ) {
          +					elem = checkSet[i];
          +
          +					if ( elem ) {
          +						checkSet[i] = isPartStr ?
          +							elem.parentNode :
          +							elem.parentNode === part;
          +					}
          +				}
          +
          +				if ( isPartStr ) {
          +					Sizzle.filter( part, checkSet, true );
          +				}
          +			}
          +		},
          +
          +		"": function(checkSet, part, isXML){
          +			var nodeCheck,
          +				doneName = done++,
          +				checkFn = dirCheck;
          +
          +			if ( typeof part === "string" && !rNonWord.test( part ) ) {
          +				part = part.toLowerCase();
          +				nodeCheck = part;
          +				checkFn = dirNodeCheck;
          +			}
          +
          +			checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
          +		},
          +
          +		"~": function( checkSet, part, isXML ) {
          +			var nodeCheck,
          +				doneName = done++,
          +				checkFn = dirCheck;
          +
          +			if ( typeof part === "string" && !rNonWord.test( part ) ) {
          +				part = part.toLowerCase();
          +				nodeCheck = part;
          +				checkFn = dirNodeCheck;
          +			}
          +
          +			checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
          +		}
          +	},
          +
          +	find: {
          +		ID: function( match, context, isXML ) {
          +			if ( typeof context.getElementById !== "undefined" && !isXML ) {
          +				var m = context.getElementById(match[1]);
          +				// Check parentNode to catch when Blackberry 4.6 returns
          +				// nodes that are no longer in the document #6963
          +				return m && m.parentNode ? [m] : [];
          +			}
          +		},
          +
          +		NAME: function( match, context ) {
          +			if ( typeof context.getElementsByName !== "undefined" ) {
          +				var ret = [],
          +					results = context.getElementsByName( match[1] );
          +
          +				for ( var i = 0, l = results.length; i < l; i++ ) {
          +					if ( results[i].getAttribute("name") === match[1] ) {
          +						ret.push( results[i] );
          +					}
          +				}
          +
          +				return ret.length === 0 ? null : ret;
          +			}
          +		},
          +
          +		TAG: function( match, context ) {
          +			if ( typeof context.getElementsByTagName !== "undefined" ) {
          +				return context.getElementsByTagName( match[1] );
          +			}
          +		}
          +	},
          +	preFilter: {
          +		CLASS: function( match, curLoop, inplace, result, not, isXML ) {
          +			match = " " + match[1].replace( rBackslash, "" ) + " ";
          +
          +			if ( isXML ) {
          +				return match;
          +			}
          +
          +			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
          +				if ( elem ) {
          +					if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
          +						if ( !inplace ) {
          +							result.push( elem );
          +						}
          +
          +					} else if ( inplace ) {
          +						curLoop[i] = false;
          +					}
          +				}
          +			}
          +
          +			return false;
          +		},
          +
          +		ID: function( match ) {
          +			return match[1].replace( rBackslash, "" );
          +		},
          +
          +		TAG: function( match, curLoop ) {
          +			return match[1].replace( rBackslash, "" ).toLowerCase();
          +		},
          +
          +		CHILD: function( match ) {
          +			if ( match[1] === "nth" ) {
          +				if ( !match[2] ) {
          +					Sizzle.error( match[0] );
          +				}
          +
          +				match[2] = match[2].replace(/^\+|\s*/g, '');
          +
          +				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
          +				var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
          +					match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
          +					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
          +
          +				// calculate the numbers (first)n+(last) including if they are negative
          +				match[2] = (test[1] + (test[2] || 1)) - 0;
          +				match[3] = test[3] - 0;
          +			}
          +			else if ( match[2] ) {
          +				Sizzle.error( match[0] );
          +			}
          +
          +			// TODO: Move to normal caching system
          +			match[0] = done++;
          +
          +			return match;
          +		},
          +
          +		ATTR: function( match, curLoop, inplace, result, not, isXML ) {
          +			var name = match[1] = match[1].replace( rBackslash, "" );
          +
          +			if ( !isXML && Expr.attrMap[name] ) {
          +				match[1] = Expr.attrMap[name];
          +			}
          +
          +			// Handle if an un-quoted value was used
          +			match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
          +
          +			if ( match[2] === "~=" ) {
          +				match[4] = " " + match[4] + " ";
          +			}
          +
          +			return match;
          +		},
          +
          +		PSEUDO: function( match, curLoop, inplace, result, not ) {
          +			if ( match[1] === "not" ) {
          +				// If we're dealing with a complex expression, or a simple one
          +				if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
          +					match[3] = Sizzle(match[3], null, null, curLoop);
          +
          +				} else {
          +					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
          +
          +					if ( !inplace ) {
          +						result.push.apply( result, ret );
          +					}
          +
          +					return false;
          +				}
          +
          +			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
          +				return true;
          +			}
          +
          +			return match;
          +		},
          +
          +		POS: function( match ) {
          +			match.unshift( true );
          +
          +			return match;
          +		}
          +	},
          +
          +	filters: {
          +		enabled: function( elem ) {
          +			return elem.disabled === false && elem.type !== "hidden";
          +		},
          +
          +		disabled: function( elem ) {
          +			return elem.disabled === true;
          +		},
          +
          +		checked: function( elem ) {
          +			return elem.checked === true;
          +		},
          +
          +		selected: function( elem ) {
          +			// Accessing this property makes selected-by-default
          +			// options in Safari work properly
          +			if ( elem.parentNode ) {
          +				elem.parentNode.selectedIndex;
          +			}
          +
          +			return elem.selected === true;
          +		},
          +
          +		parent: function( elem ) {
          +			return !!elem.firstChild;
          +		},
          +
          +		empty: function( elem ) {
          +			return !elem.firstChild;
          +		},
          +
          +		has: function( elem, i, match ) {
          +			return !!Sizzle( match[3], elem ).length;
          +		},
          +
          +		header: function( elem ) {
          +			return (/h\d/i).test( elem.nodeName );
          +		},
          +
          +		text: function( elem ) {
          +			var attr = elem.getAttribute( "type" ), type = elem.type;
          +			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
          +			// use getAttribute instead to test this case
          +			return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
          +		},
          +
          +		radio: function( elem ) {
          +			return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
          +		},
          +
          +		checkbox: function( elem ) {
          +			return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
          +		},
          +
          +		file: function( elem ) {
          +			return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
          +		},
          +
          +		password: function( elem ) {
          +			return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
          +		},
          +
          +		submit: function( elem ) {
          +			var name = elem.nodeName.toLowerCase();
          +			return (name === "input" || name === "button") && "submit" === elem.type;
          +		},
          +
          +		image: function( elem ) {
          +			return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
          +		},
          +
          +		reset: function( elem ) {
          +			var name = elem.nodeName.toLowerCase();
          +			return (name === "input" || name === "button") && "reset" === elem.type;
          +		},
          +
          +		button: function( elem ) {
          +			var name = elem.nodeName.toLowerCase();
          +			return name === "input" && "button" === elem.type || name === "button";
          +		},
          +
          +		input: function( elem ) {
          +			return (/input|select|textarea|button/i).test( elem.nodeName );
          +		},
          +
          +		focus: function( elem ) {
          +			return elem === elem.ownerDocument.activeElement;
          +		}
          +	},
          +	setFilters: {
          +		first: function( elem, i ) {
          +			return i === 0;
          +		},
          +
          +		last: function( elem, i, match, array ) {
          +			return i === array.length - 1;
          +		},
          +
          +		even: function( elem, i ) {
          +			return i % 2 === 0;
          +		},
          +
          +		odd: function( elem, i ) {
          +			return i % 2 === 1;
          +		},
          +
          +		lt: function( elem, i, match ) {
          +			return i < match[3] - 0;
          +		},
          +
          +		gt: function( elem, i, match ) {
          +			return i > match[3] - 0;
          +		},
          +
          +		nth: function( elem, i, match ) {
          +			return match[3] - 0 === i;
          +		},
          +
          +		eq: function( elem, i, match ) {
          +			return match[3] - 0 === i;
          +		}
          +	},
          +	filter: {
          +		PSEUDO: function( elem, match, i, array ) {
          +			var name = match[1],
          +				filter = Expr.filters[ name ];
          +
          +			if ( filter ) {
          +				return filter( elem, i, match, array );
          +
          +			} else if ( name === "contains" ) {
          +				return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
          +
          +			} else if ( name === "not" ) {
          +				var not = match[3];
          +
          +				for ( var j = 0, l = not.length; j < l; j++ ) {
          +					if ( not[j] === elem ) {
          +						return false;
          +					}
          +				}
          +
          +				return true;
          +
          +			} else {
          +				Sizzle.error( name );
          +			}
          +		},
          +
          +		CHILD: function( elem, match ) {
          +			var first, last,
          +				doneName, parent, cache,
          +				count, diff,
          +				type = match[1],
          +				node = elem;
          +
          +			switch ( type ) {
          +				case "only":
          +				case "first":
          +					while ( (node = node.previousSibling) ) {
          +						if ( node.nodeType === 1 ) {
          +							return false;
          +						}
          +					}
          +
          +					if ( type === "first" ) {
          +						return true;
          +					}
          +
          +					node = elem;
          +
          +					/* falls through */
          +				case "last":
          +					while ( (node = node.nextSibling) ) {
          +						if ( node.nodeType === 1 ) {
          +							return false;
          +						}
          +					}
          +
          +					return true;
          +
          +				case "nth":
          +					first = match[2];
          +					last = match[3];
          +
          +					if ( first === 1 && last === 0 ) {
          +						return true;
          +					}
          +
          +					doneName = match[0];
          +					parent = elem.parentNode;
          +
          +					if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
          +						count = 0;
          +
          +						for ( node = parent.firstChild; node; node = node.nextSibling ) {
          +							if ( node.nodeType === 1 ) {
          +								node.nodeIndex = ++count;
          +							}
          +						}
          +
          +						parent[ expando ] = doneName;
          +					}
          +
          +					diff = elem.nodeIndex - last;
          +
          +					if ( first === 0 ) {
          +						return diff === 0;
          +
          +					} else {
          +						return ( diff % first === 0 && diff / first >= 0 );
          +					}
          +			}
          +		},
          +
          +		ID: function( elem, match ) {
          +			return elem.nodeType === 1 && elem.getAttribute("id") === match;
          +		},
          +
          +		TAG: function( elem, match ) {
          +			return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
          +		},
          +
          +		CLASS: function( elem, match ) {
          +			return (" " + (elem.className || elem.getAttribute("class")) + " ")
          +				.indexOf( match ) > -1;
          +		},
          +
          +		ATTR: function( elem, match ) {
          +			var name = match[1],
          +				result = Sizzle.attr ?
          +					Sizzle.attr( elem, name ) :
          +					Expr.attrHandle[ name ] ?
          +					Expr.attrHandle[ name ]( elem ) :
          +					elem[ name ] != null ?
          +						elem[ name ] :
          +						elem.getAttribute( name ),
          +				value = result + "",
          +				type = match[2],
          +				check = match[4];
          +
          +			return result == null ?
          +				type === "!=" :
          +				!type && Sizzle.attr ?
          +				result != null :
          +				type === "=" ?
          +				value === check :
          +				type === "*=" ?
          +				value.indexOf(check) >= 0 :
          +				type === "~=" ?
          +				(" " + value + " ").indexOf(check) >= 0 :
          +				!check ?
          +				value && result !== false :
          +				type === "!=" ?
          +				value !== check :
          +				type === "^=" ?
          +				value.indexOf(check) === 0 :
          +				type === "$=" ?
          +				value.substr(value.length - check.length) === check :
          +				type === "|=" ?
          +				value === check || value.substr(0, check.length + 1) === check + "-" :
          +				false;
          +		},
          +
          +		POS: function( elem, match, i, array ) {
          +			var name = match[2],
          +				filter = Expr.setFilters[ name ];
          +
          +			if ( filter ) {
          +				return filter( elem, i, match, array );
          +			}
          +		}
          +	}
          +};
          +
          +var origPOS = Expr.match.POS,
          +	fescape = function(all, num){
          +		return "\\" + (num - 0 + 1);
          +	};
          +
          +for ( var type in Expr.match ) {
          +	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
          +	Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
          +}
          +// Expose origPOS
          +// "global" as in regardless of relation to brackets/parens
          +Expr.match.globalPOS = origPOS;
          +
          +var makeArray = function( array, results ) {
          +	array = Array.prototype.slice.call( array, 0 );
          +
          +	if ( results ) {
          +		results.push.apply( results, array );
          +		return results;
          +	}
          +
          +	return array;
          +};
          +
          +// Perform a simple check to determine if the browser is capable of
          +// converting a NodeList to an array using builtin methods.
          +// Also verifies that the returned array holds DOM nodes
          +// (which is not the case in the Blackberry browser)
          +try {
          +	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
          +
          +// Provide a fallback method if it does not work
          +} catch( e ) {
          +	makeArray = function( array, results ) {
          +		var i = 0,
          +			ret = results || [];
          +
          +		if ( toString.call(array) === "[object Array]" ) {
          +			Array.prototype.push.apply( ret, array );
          +
          +		} else {
          +			if ( typeof array.length === "number" ) {
          +				for ( var l = array.length; i < l; i++ ) {
          +					ret.push( array[i] );
          +				}
          +
          +			} else {
          +				for ( ; array[i]; i++ ) {
          +					ret.push( array[i] );
          +				}
          +			}
          +		}
          +
          +		return ret;
          +	};
          +}
          +
          +var sortOrder, siblingCheck;
          +
          +if ( document.documentElement.compareDocumentPosition ) {
          +	sortOrder = function( a, b ) {
          +		if ( a === b ) {
          +			hasDuplicate = true;
          +			return 0;
          +		}
          +
          +		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
          +			return a.compareDocumentPosition ? -1 : 1;
          +		}
          +
          +		return a.compareDocumentPosition(b) & 4 ? -1 : 1;
          +	};
          +
          +} else {
          +	sortOrder = function( a, b ) {
          +		// The nodes are identical, we can exit early
          +		if ( a === b ) {
          +			hasDuplicate = true;
          +			return 0;
          +
          +		// Fallback to using sourceIndex (in IE) if it's available on both nodes
          +		} else if ( a.sourceIndex && b.sourceIndex ) {
          +			return a.sourceIndex - b.sourceIndex;
          +		}
          +
          +		var al, bl,
          +			ap = [],
          +			bp = [],
          +			aup = a.parentNode,
          +			bup = b.parentNode,
          +			cur = aup;
          +
          +		// If the nodes are siblings (or identical) we can do a quick check
          +		if ( aup === bup ) {
          +			return siblingCheck( a, b );
          +
          +		// If no parents were found then the nodes are disconnected
          +		} else if ( !aup ) {
          +			return -1;
          +
          +		} else if ( !bup ) {
          +			return 1;
          +		}
          +
          +		// Otherwise they're somewhere else in the tree so we need
          +		// to build up a full list of the parentNodes for comparison
          +		while ( cur ) {
          +			ap.unshift( cur );
          +			cur = cur.parentNode;
          +		}
          +
          +		cur = bup;
          +
          +		while ( cur ) {
          +			bp.unshift( cur );
          +			cur = cur.parentNode;
          +		}
          +
          +		al = ap.length;
          +		bl = bp.length;
          +
          +		// Start walking down the tree looking for a discrepancy
          +		for ( var i = 0; i < al && i < bl; i++ ) {
          +			if ( ap[i] !== bp[i] ) {
          +				return siblingCheck( ap[i], bp[i] );
          +			}
          +		}
          +
          +		// We ended someplace up the tree so do a sibling check
          +		return i === al ?
          +			siblingCheck( a, bp[i], -1 ) :
          +			siblingCheck( ap[i], b, 1 );
          +	};
          +
          +	siblingCheck = function( a, b, ret ) {
          +		if ( a === b ) {
          +			return ret;
          +		}
          +
          +		var cur = a.nextSibling;
          +
          +		while ( cur ) {
          +			if ( cur === b ) {
          +				return -1;
          +			}
          +
          +			cur = cur.nextSibling;
          +		}
          +
          +		return 1;
          +	};
          +}
          +
          +// Check to see if the browser returns elements by name when
          +// querying by getElementById (and provide a workaround)
          +(function(){
          +	// We're going to inject a fake input element with a specified name
          +	var form = document.createElement("div"),
          +		id = "script" + (new Date()).getTime(),
          +		root = document.documentElement;
          +
          +	form.innerHTML = "<a name='" + id + "'/>";
          +
          +	// Inject it into the root element, check its status, and remove it quickly
          +	root.insertBefore( form, root.firstChild );
          +
          +	// The workaround has to do additional checks after a getElementById
          +	// Which slows things down for other browsers (hence the branching)
          +	if ( document.getElementById( id ) ) {
          +		Expr.find.ID = function( match, context, isXML ) {
          +			if ( typeof context.getElementById !== "undefined" && !isXML ) {
          +				var m = context.getElementById(match[1]);
          +
          +				return m ?
          +					m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
          +						[m] :
          +						undefined :
          +					[];
          +			}
          +		};
          +
          +		Expr.filter.ID = function( elem, match ) {
          +			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
          +
          +			return elem.nodeType === 1 && node && node.nodeValue === match;
          +		};
          +	}
          +
          +	root.removeChild( form );
          +
          +	// release memory in IE
          +	root = form = null;
          +})();
          +
          +(function(){
          +	// Check to see if the browser returns only elements
          +	// when doing getElementsByTagName("*")
          +
          +	// Create a fake element
          +	var div = document.createElement("div");
          +	div.appendChild( document.createComment("") );
          +
          +	// Make sure no comments are found
          +	if ( div.getElementsByTagName("*").length > 0 ) {
          +		Expr.find.TAG = function( match, context ) {
          +			var results = context.getElementsByTagName( match[1] );
          +
          +			// Filter out possible comments
          +			if ( match[1] === "*" ) {
          +				var tmp = [];
          +
          +				for ( var i = 0; results[i]; i++ ) {
          +					if ( results[i].nodeType === 1 ) {
          +						tmp.push( results[i] );
          +					}
          +				}
          +
          +				results = tmp;
          +			}
          +
          +			return results;
          +		};
          +	}
          +
          +	// Check to see if an attribute returns normalized href attributes
          +	div.innerHTML = "<a href='#'></a>";
          +
          +	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
          +			div.firstChild.getAttribute("href") !== "#" ) {
          +
          +		Expr.attrHandle.href = function( elem ) {
          +			return elem.getAttribute( "href", 2 );
          +		};
          +	}
          +
          +	// release memory in IE
          +	div = null;
          +})();
          +
          +if ( document.querySelectorAll ) {
          +	(function(){
          +		var oldSizzle = Sizzle,
          +			div = document.createElement("div"),
          +			id = "__sizzle__";
          +
          +		div.innerHTML = "<p class='TEST'></p>";
          +
          +		// Safari can't handle uppercase or unicode characters when
          +		// in quirks mode.
          +		if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
          +			return;
          +		}
          +
          +		Sizzle = function( query, context, extra, seed ) {
          +			context = context || document;
          +
          +			// Only use querySelectorAll on non-XML documents
          +			// (ID selectors don't work in non-HTML documents)
          +			if ( !seed && !Sizzle.isXML(context) ) {
          +				// See if we find a selector to speed up
          +				var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
          +
          +				if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
          +					// Speed-up: Sizzle("TAG")
          +					if ( match[1] ) {
          +						return makeArray( context.getElementsByTagName( query ), extra );
          +
          +					// Speed-up: Sizzle(".CLASS")
          +					} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
          +						return makeArray( context.getElementsByClassName( match[2] ), extra );
          +					}
          +				}
          +
          +				if ( context.nodeType === 9 ) {
          +					// Speed-up: Sizzle("body")
          +					// The body element only exists once, optimize finding it
          +					if ( query === "body" && context.body ) {
          +						return makeArray( [ context.body ], extra );
          +
          +					// Speed-up: Sizzle("#ID")
          +					} else if ( match && match[3] ) {
          +						var elem = context.getElementById( match[3] );
          +
          +						// Check parentNode to catch when Blackberry 4.6 returns
          +						// nodes that are no longer in the document #6963
          +						if ( elem && elem.parentNode ) {
          +							// Handle the case where IE and Opera return items
          +							// by name instead of ID
          +							if ( elem.id === match[3] ) {
          +								return makeArray( [ elem ], extra );
          +							}
          +
          +						} else {
          +							return makeArray( [], extra );
          +						}
          +					}
          +
          +					try {
          +						return makeArray( context.querySelectorAll(query), extra );
          +					} catch(qsaError) {}
          +
          +				// qSA works strangely on Element-rooted queries
          +				// We can work around this by specifying an extra ID on the root
          +				// and working up from there (Thanks to Andrew Dupont for the technique)
          +				// IE 8 doesn't work on object elements
          +				} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
          +					var oldContext = context,
          +						old = context.getAttribute( "id" ),
          +						nid = old || id,
          +						hasParent = context.parentNode,
          +						relativeHierarchySelector = /^\s*[+~]/.test( query );
          +
          +					if ( !old ) {
          +						context.setAttribute( "id", nid );
          +					} else {
          +						nid = nid.replace( /'/g, "\\$&" );
          +					}
          +					if ( relativeHierarchySelector && hasParent ) {
          +						context = context.parentNode;
          +					}
          +
          +					try {
          +						if ( !relativeHierarchySelector || hasParent ) {
          +							return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
          +						}
          +
          +					} catch(pseudoError) {
          +					} finally {
          +						if ( !old ) {
          +							oldContext.removeAttribute( "id" );
          +						}
          +					}
          +				}
          +			}
          +
          +			return oldSizzle(query, context, extra, seed);
          +		};
          +
          +		for ( var prop in oldSizzle ) {
          +			Sizzle[ prop ] = oldSizzle[ prop ];
          +		}
          +
          +		// release memory in IE
          +		div = null;
          +	})();
          +}
          +
          +(function(){
          +	var html = document.documentElement,
          +		matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
          +
          +	if ( matches ) {
          +		// Check to see if it's possible to do matchesSelector
          +		// on a disconnected node (IE 9 fails this)
          +		var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
          +			pseudoWorks = false;
          +
          +		try {
          +			// This should fail with an exception
          +			// Gecko does not error, returns false instead
          +			matches.call( document.documentElement, "[test!='']:sizzle" );
          +
          +		} catch( pseudoError ) {
          +			pseudoWorks = true;
          +		}
          +
          +		Sizzle.matchesSelector = function( node, expr ) {
          +			// Make sure that attribute selectors are quoted
          +			expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
          +
          +			if ( !Sizzle.isXML( node ) ) {
          +				try {
          +					if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
          +						var ret = matches.call( node, expr );
          +
          +						// IE 9's matchesSelector returns false on disconnected nodes
          +						if ( ret || !disconnectedMatch ||
          +								// As well, disconnected nodes are said to be in a document
          +								// fragment in IE 9, so check for that
          +								node.document && node.document.nodeType !== 11 ) {
          +							return ret;
          +						}
          +					}
          +				} catch(e) {}
          +			}
          +
          +			return Sizzle(expr, null, null, [node]).length > 0;
          +		};
          +	}
          +})();
          +
          +(function(){
          +	var div = document.createElement("div");
          +
          +	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
          +
          +	// Opera can't find a second classname (in 9.6)
          +	// Also, make sure that getElementsByClassName actually exists
          +	if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
          +		return;
          +	}
          +
          +	// Safari caches class attributes, doesn't catch changes (in 3.2)
          +	div.lastChild.className = "e";
          +
          +	if ( div.getElementsByClassName("e").length === 1 ) {
          +		return;
          +	}
          +
          +	Expr.order.splice(1, 0, "CLASS");
          +	Expr.find.CLASS = function( match, context, isXML ) {
          +		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
          +			return context.getElementsByClassName(match[1]);
          +		}
          +	};
          +
          +	// release memory in IE
          +	div = null;
          +})();
          +
          +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
          +	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
          +		var elem = checkSet[i];
          +
          +		if ( elem ) {
          +			var match = false;
          +
          +			elem = elem[dir];
          +
          +			while ( elem ) {
          +				if ( elem[ expando ] === doneName ) {
          +					match = checkSet[elem.sizset];
          +					break;
          +				}
          +
          +				if ( elem.nodeType === 1 && !isXML ){
          +					elem[ expando ] = doneName;
          +					elem.sizset = i;
          +				}
          +
          +				if ( elem.nodeName.toLowerCase() === cur ) {
          +					match = elem;
          +					break;
          +				}
          +
          +				elem = elem[dir];
          +			}
          +
          +			checkSet[i] = match;
          +		}
          +	}
          +}
          +
          +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
          +	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
          +		var elem = checkSet[i];
          +
          +		if ( elem ) {
          +			var match = false;
          +
          +			elem = elem[dir];
          +
          +			while ( elem ) {
          +				if ( elem[ expando ] === doneName ) {
          +					match = checkSet[elem.sizset];
          +					break;
          +				}
          +
          +				if ( elem.nodeType === 1 ) {
          +					if ( !isXML ) {
          +						elem[ expando ] = doneName;
          +						elem.sizset = i;
          +					}
          +
          +					if ( typeof cur !== "string" ) {
          +						if ( elem === cur ) {
          +							match = true;
          +							break;
          +						}
          +
          +					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
          +						match = elem;
          +						break;
          +					}
          +				}
          +
          +				elem = elem[dir];
          +			}
          +
          +			checkSet[i] = match;
          +		}
          +	}
          +}
          +
          +if ( document.documentElement.contains ) {
          +	Sizzle.contains = function( a, b ) {
          +		return a !== b && (a.contains ? a.contains(b) : true);
          +	};
          +
          +} else if ( document.documentElement.compareDocumentPosition ) {
          +	Sizzle.contains = function( a, b ) {
          +		return !!(a.compareDocumentPosition(b) & 16);
          +	};
          +
          +} else {
          +	Sizzle.contains = function() {
          +		return false;
          +	};
          +}
          +
          +Sizzle.isXML = function( elem ) {
          +	// documentElement is verified for cases where it doesn't yet exist
          +	// (such as loading iframes in IE - #4833)
          +	var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
          +
          +	return documentElement ? documentElement.nodeName !== "HTML" : false;
          +};
          +
          +var posProcess = function( selector, context, seed ) {
          +	var match,
          +		tmpSet = [],
          +		later = "",
          +		root = context.nodeType ? [context] : context;
          +
          +	// Position selectors must be done after the filter
          +	// And so must :not(positional) so we move all PSEUDOs to the end
          +	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
          +		later += match[0];
          +		selector = selector.replace( Expr.match.PSEUDO, "" );
          +	}
          +
          +	selector = Expr.relative[selector] ? selector + "*" : selector;
          +
          +	for ( var i = 0, l = root.length; i < l; i++ ) {
          +		Sizzle( selector, root[i], tmpSet, seed );
          +	}
          +
          +	return Sizzle.filter( later, tmpSet );
          +};
          +
          +// EXPOSE
          +// Override sizzle attribute retrieval
          +Sizzle.attr = jQuery.attr;
          +Sizzle.selectors.attrMap = {};
          +jQuery.find = Sizzle;
          +jQuery.expr = Sizzle.selectors;
          +jQuery.expr[":"] = jQuery.expr.filters;
          +jQuery.unique = Sizzle.uniqueSort;
          +jQuery.text = Sizzle.getText;
          +jQuery.isXMLDoc = Sizzle.isXML;
          +jQuery.contains = Sizzle.contains;
          +
          +
          +})();
          +
          +
          +var runtil = /Until$/,
          +	rparentsprev = /^(?:parents|prevUntil|prevAll)/,
          +	// Note: This RegExp should be improved, or likely pulled from Sizzle
          +	rmultiselector = /,/,
          +	isSimple = /^.[^:#\[\.,]*$/,
          +	slice = Array.prototype.slice,
          +	POS = jQuery.expr.match.globalPOS,
          +	// methods guaranteed to produce a unique set when starting from a unique set
          +	guaranteedUnique = {
          +		children: true,
          +		contents: true,
          +		next: true,
          +		prev: true
          +	};
          +
          +jQuery.fn.extend({
          +	find: function( selector ) {
          +		var self = this,
          +			i, l;
          +
          +		if ( typeof selector !== "string" ) {
          +			return jQuery( selector ).filter(function() {
          +				for ( i = 0, l = self.length; i < l; i++ ) {
          +					if ( jQuery.contains( self[ i ], this ) ) {
          +						return true;
          +					}
          +				}
          +			});
          +		}
          +
          +		var ret = this.pushStack( "", "find", selector ),
          +			length, n, r;
          +
          +		for ( i = 0, l = this.length; i < l; i++ ) {
          +			length = ret.length;
          +			jQuery.find( selector, this[i], ret );
          +
          +			if ( i > 0 ) {
          +				// Make sure that the results are unique
          +				for ( n = length; n < ret.length; n++ ) {
          +					for ( r = 0; r < length; r++ ) {
          +						if ( ret[r] === ret[n] ) {
          +							ret.splice(n--, 1);
          +							break;
          +						}
          +					}
          +				}
          +			}
          +		}
          +
          +		return ret;
          +	},
          +
          +	has: function( target ) {
          +		var targets = jQuery( target );
          +		return this.filter(function() {
          +			for ( var i = 0, l = targets.length; i < l; i++ ) {
          +				if ( jQuery.contains( this, targets[i] ) ) {
          +					return true;
          +				}
          +			}
          +		});
          +	},
          +
          +	not: function( selector ) {
          +		return this.pushStack( winnow(this, selector, false), "not", selector);
          +	},
          +
          +	filter: function( selector ) {
          +		return this.pushStack( winnow(this, selector, true), "filter", selector );
          +	},
          +
          +	is: function( selector ) {
          +		return !!selector && (
          +			typeof selector === "string" ?
          +				// If this is a positional selector, check membership in the returned set
          +				// so $("p:first").is("p:last") won't return true for a doc with two "p".
          +				POS.test( selector ) ?
          +					jQuery( selector, this.context ).index( this[0] ) >= 0 :
          +					jQuery.filter( selector, this ).length > 0 :
          +				this.filter( selector ).length > 0 );
          +	},
          +
          +	closest: function( selectors, context ) {
          +		var ret = [], i, l, cur = this[0];
          +
          +		// Array (deprecated as of jQuery 1.7)
          +		if ( jQuery.isArray( selectors ) ) {
          +			var level = 1;
          +
          +			while ( cur && cur.ownerDocument && cur !== context ) {
          +				for ( i = 0; i < selectors.length; i++ ) {
          +
          +					if ( jQuery( cur ).is( selectors[ i ] ) ) {
          +						ret.push({ selector: selectors[ i ], elem: cur, level: level });
          +					}
          +				}
          +
          +				cur = cur.parentNode;
          +				level++;
          +			}
          +
          +			return ret;
          +		}
          +
          +		// String
          +		var pos = POS.test( selectors ) || typeof selectors !== "string" ?
          +				jQuery( selectors, context || this.context ) :
          +				0;
          +
          +		for ( i = 0, l = this.length; i < l; i++ ) {
          +			cur = this[i];
          +
          +			while ( cur ) {
          +				if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
          +					ret.push( cur );
          +					break;
          +
          +				} else {
          +					cur = cur.parentNode;
          +					if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
          +						break;
          +					}
          +				}
          +			}
          +		}
          +
          +		ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
          +
          +		return this.pushStack( ret, "closest", selectors );
          +	},
          +
          +	// Determine the position of an element within
          +	// the matched set of elements
          +	index: function( elem ) {
          +
          +		// No argument, return index in parent
          +		if ( !elem ) {
          +			return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
          +		}
          +
          +		// index in selector
          +		if ( typeof elem === "string" ) {
          +			return jQuery.inArray( this[0], jQuery( elem ) );
          +		}
          +
          +		// Locate the position of the desired element
          +		return jQuery.inArray(
          +			// If it receives a jQuery object, the first element is used
          +			elem.jquery ? elem[0] : elem, this );
          +	},
          +
          +	add: function( selector, context ) {
          +		var set = typeof selector === "string" ?
          +				jQuery( selector, context ) :
          +				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
          +			all = jQuery.merge( this.get(), set );
          +
          +		return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
          +			all :
          +			jQuery.unique( all ) );
          +	},
          +
          +	andSelf: function() {
          +		return this.add( this.prevObject );
          +	}
          +});
          +
          +// A painfully simple check to see if an element is disconnected
          +// from a document (should be improved, where feasible).
          +function isDisconnected( node ) {
          +	return !node || !node.parentNode || node.parentNode.nodeType === 11;
          +}
          +
          +jQuery.each({
          +	parent: function( elem ) {
          +		var parent = elem.parentNode;
          +		return parent && parent.nodeType !== 11 ? parent : null;
          +	},
          +	parents: function( elem ) {
          +		return jQuery.dir( elem, "parentNode" );
          +	},
          +	parentsUntil: function( elem, i, until ) {
          +		return jQuery.dir( elem, "parentNode", until );
          +	},
          +	next: function( elem ) {
          +		return jQuery.nth( elem, 2, "nextSibling" );
          +	},
          +	prev: function( elem ) {
          +		return jQuery.nth( elem, 2, "previousSibling" );
          +	},
          +	nextAll: function( elem ) {
          +		return jQuery.dir( elem, "nextSibling" );
          +	},
          +	prevAll: function( elem ) {
          +		return jQuery.dir( elem, "previousSibling" );
          +	},
          +	nextUntil: function( elem, i, until ) {
          +		return jQuery.dir( elem, "nextSibling", until );
          +	},
          +	prevUntil: function( elem, i, until ) {
          +		return jQuery.dir( elem, "previousSibling", until );
          +	},
          +	siblings: function( elem ) {
          +		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
          +	},
          +	children: function( elem ) {
          +		return jQuery.sibling( elem.firstChild );
          +	},
          +	contents: function( elem ) {
          +		return jQuery.nodeName( elem, "iframe" ) ?
          +			elem.contentDocument || elem.contentWindow.document :
          +			jQuery.makeArray( elem.childNodes );
          +	}
          +}, function( name, fn ) {
          +	jQuery.fn[ name ] = function( until, selector ) {
          +		var ret = jQuery.map( this, fn, until );
          +
          +		if ( !runtil.test( name ) ) {
          +			selector = until;
          +		}
          +
          +		if ( selector && typeof selector === "string" ) {
          +			ret = jQuery.filter( selector, ret );
          +		}
          +
          +		ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
          +
          +		if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
          +			ret = ret.reverse();
          +		}
          +
          +		return this.pushStack( ret, name, slice.call( arguments ).join(",") );
          +	};
          +});
          +
          +jQuery.extend({
          +	filter: function( expr, elems, not ) {
          +		if ( not ) {
          +			expr = ":not(" + expr + ")";
          +		}
          +
          +		return elems.length === 1 ?
          +			jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
          +			jQuery.find.matches(expr, elems);
          +	},
          +
          +	dir: function( elem, dir, until ) {
          +		var matched = [],
          +			cur = elem[ dir ];
          +
          +		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
          +			if ( cur.nodeType === 1 ) {
          +				matched.push( cur );
          +			}
          +			cur = cur[dir];
          +		}
          +		return matched;
          +	},
          +
          +	nth: function( cur, result, dir, elem ) {
          +		result = result || 1;
          +		var num = 0;
          +
          +		for ( ; cur; cur = cur[dir] ) {
          +			if ( cur.nodeType === 1 && ++num === result ) {
          +				break;
          +			}
          +		}
          +
          +		return cur;
          +	},
          +
          +	sibling: function( n, elem ) {
          +		var r = [];
          +
          +		for ( ; n; n = n.nextSibling ) {
          +			if ( n.nodeType === 1 && n !== elem ) {
          +				r.push( n );
          +			}
          +		}
          +
          +		return r;
          +	}
          +});
          +
          +// Implement the identical functionality for filter and not
          +function winnow( elements, qualifier, keep ) {
          +
          +	// Can't pass null or undefined to indexOf in Firefox 4
          +	// Set to 0 to skip string check
          +	qualifier = qualifier || 0;
          +
          +	if ( jQuery.isFunction( qualifier ) ) {
          +		return jQuery.grep(elements, function( elem, i ) {
          +			var retVal = !!qualifier.call( elem, i, elem );
          +			return retVal === keep;
          +		});
          +
          +	} else if ( qualifier.nodeType ) {
          +		return jQuery.grep(elements, function( elem, i ) {
          +			return ( elem === qualifier ) === keep;
          +		});
          +
          +	} else if ( typeof qualifier === "string" ) {
          +		var filtered = jQuery.grep(elements, function( elem ) {
          +			return elem.nodeType === 1;
          +		});
          +
          +		if ( isSimple.test( qualifier ) ) {
          +			return jQuery.filter(qualifier, filtered, !keep);
          +		} else {
          +			qualifier = jQuery.filter( qualifier, filtered );
          +		}
          +	}
          +
          +	return jQuery.grep(elements, function( elem, i ) {
          +		return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
          +	});
          +}
          +
          +
          +
          +
          +function createSafeFragment( document ) {
          +	var list = nodeNames.split( "|" ),
          +	safeFrag = document.createDocumentFragment();
          +
          +	if ( safeFrag.createElement ) {
          +		while ( list.length ) {
          +			safeFrag.createElement(
          +				list.pop()
          +			);
          +		}
          +	}
          +	return safeFrag;
          +}
          +
          +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
          +		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
          +	rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
          +	rleadingWhitespace = /^\s+/,
          +	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
          +	rtagName = /<([\w:]+)/,
          +	rtbody = /<tbody/i,
          +	rhtml = /<|&#?\w+;/,
          +	rnoInnerhtml = /<(?:script|style)/i,
          +	rnocache = /<(?:script|object|embed|option|style)/i,
          +	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
          +	// checked="checked" or checked
          +	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
          +	rscriptType = /\/(java|ecma)script/i,
          +	rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
          +	wrapMap = {
          +		option: [ 1, "<select multiple='multiple'>", "</select>" ],
          +		legend: [ 1, "<fieldset>", "</fieldset>" ],
          +		thead: [ 1, "<table>", "</table>" ],
          +		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
          +		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
          +		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
          +		area: [ 1, "<map>", "</map>" ],
          +		_default: [ 0, "", "" ]
          +	},
          +	safeFragment = createSafeFragment( document );
          +
          +wrapMap.optgroup = wrapMap.option;
          +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
          +wrapMap.th = wrapMap.td;
          +
          +// IE can't serialize <link> and <script> tags normally
          +if ( !jQuery.support.htmlSerialize ) {
          +	wrapMap._default = [ 1, "div<div>", "</div>" ];
          +}
          +
          +jQuery.fn.extend({
          +	text: function( value ) {
          +		return jQuery.access( this, function( value ) {
          +			return value === undefined ?
          +				jQuery.text( this ) :
          +				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
          +		}, null, value, arguments.length );
          +	},
          +
          +	wrapAll: function( html ) {
          +		if ( jQuery.isFunction( html ) ) {
          +			return this.each(function(i) {
          +				jQuery(this).wrapAll( html.call(this, i) );
          +			});
          +		}
          +
          +		if ( this[0] ) {
          +			// The elements to wrap the target around
          +			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
          +
          +			if ( this[0].parentNode ) {
          +				wrap.insertBefore( this[0] );
          +			}
          +
          +			wrap.map(function() {
          +				var elem = this;
          +
          +				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
          +					elem = elem.firstChild;
          +				}
          +
          +				return elem;
          +			}).append( this );
          +		}
          +
          +		return this;
          +	},
          +
          +	wrapInner: function( html ) {
          +		if ( jQuery.isFunction( html ) ) {
          +			return this.each(function(i) {
          +				jQuery(this).wrapInner( html.call(this, i) );
          +			});
          +		}
          +
          +		return this.each(function() {
          +			var self = jQuery( this ),
          +				contents = self.contents();
          +
          +			if ( contents.length ) {
          +				contents.wrapAll( html );
          +
          +			} else {
          +				self.append( html );
          +			}
          +		});
          +	},
          +
          +	wrap: function( html ) {
          +		var isFunction = jQuery.isFunction( html );
          +
          +		return this.each(function(i) {
          +			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
          +		});
          +	},
          +
          +	unwrap: function() {
          +		return this.parent().each(function() {
          +			if ( !jQuery.nodeName( this, "body" ) ) {
          +				jQuery( this ).replaceWith( this.childNodes );
          +			}
          +		}).end();
          +	},
          +
          +	append: function() {
          +		return this.domManip(arguments, true, function( elem ) {
          +			if ( this.nodeType === 1 ) {
          +				this.appendChild( elem );
          +			}
          +		});
          +	},
          +
          +	prepend: function() {
          +		return this.domManip(arguments, true, function( elem ) {
          +			if ( this.nodeType === 1 ) {
          +				this.insertBefore( elem, this.firstChild );
          +			}
          +		});
          +	},
          +
          +	before: function() {
          +		if ( this[0] && this[0].parentNode ) {
          +			return this.domManip(arguments, false, function( elem ) {
          +				this.parentNode.insertBefore( elem, this );
          +			});
          +		} else if ( arguments.length ) {
          +			var set = jQuery.clean( arguments );
          +			set.push.apply( set, this.toArray() );
          +			return this.pushStack( set, "before", arguments );
          +		}
          +	},
          +
          +	after: function() {
          +		if ( this[0] && this[0].parentNode ) {
          +			return this.domManip(arguments, false, function( elem ) {
          +				this.parentNode.insertBefore( elem, this.nextSibling );
          +			});
          +		} else if ( arguments.length ) {
          +			var set = this.pushStack( this, "after", arguments );
          +			set.push.apply( set, jQuery.clean(arguments) );
          +			return set;
          +		}
          +	},
          +
          +	// keepData is for internal use only--do not document
          +	remove: function( selector, keepData ) {
          +		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
          +			if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
          +				if ( !keepData && elem.nodeType === 1 ) {
          +					jQuery.cleanData( elem.getElementsByTagName("*") );
          +					jQuery.cleanData( [ elem ] );
          +				}
          +
          +				if ( elem.parentNode ) {
          +					elem.parentNode.removeChild( elem );
          +				}
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	empty: function() {
          +		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
          +			// Remove element nodes and prevent memory leaks
          +			if ( elem.nodeType === 1 ) {
          +				jQuery.cleanData( elem.getElementsByTagName("*") );
          +			}
          +
          +			// Remove any remaining nodes
          +			while ( elem.firstChild ) {
          +				elem.removeChild( elem.firstChild );
          +			}
          +		}
          +
          +		return this;
          +	},
          +
          +	clone: function( dataAndEvents, deepDataAndEvents ) {
          +		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
          +		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
          +
          +		return this.map( function () {
          +			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
          +		});
          +	},
          +
          +	html: function( value ) {
          +		return jQuery.access( this, function( value ) {
          +			var elem = this[0] || {},
          +				i = 0,
          +				l = this.length;
          +
          +			if ( value === undefined ) {
          +				return elem.nodeType === 1 ?
          +					elem.innerHTML.replace( rinlinejQuery, "" ) :
          +					null;
          +			}
          +
          +
          +			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
          +				( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
          +				!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
          +
          +				value = value.replace( rxhtmlTag, "<$1></$2>" );
          +
          +				try {
          +					for (; i < l; i++ ) {
          +						// Remove element nodes and prevent memory leaks
          +						elem = this[i] || {};
          +						if ( elem.nodeType === 1 ) {
          +							jQuery.cleanData( elem.getElementsByTagName( "*" ) );
          +							elem.innerHTML = value;
          +						}
          +					}
          +
          +					elem = 0;
          +
          +				// If using innerHTML throws an exception, use the fallback method
          +				} catch(e) {}
          +			}
          +
          +			if ( elem ) {
          +				this.empty().append( value );
          +			}
          +		}, null, value, arguments.length );
          +	},
          +
          +	replaceWith: function( value ) {
          +		if ( this[0] && this[0].parentNode ) {
          +			// Make sure that the elements are removed from the DOM before they are inserted
          +			// this can help fix replacing a parent with child elements
          +			if ( jQuery.isFunction( value ) ) {
          +				return this.each(function(i) {
          +					var self = jQuery(this), old = self.html();
          +					self.replaceWith( value.call( this, i, old ) );
          +				});
          +			}
          +
          +			if ( typeof value !== "string" ) {
          +				value = jQuery( value ).detach();
          +			}
          +
          +			return this.each(function() {
          +				var next = this.nextSibling,
          +					parent = this.parentNode;
          +
          +				jQuery( this ).remove();
          +
          +				if ( next ) {
          +					jQuery(next).before( value );
          +				} else {
          +					jQuery(parent).append( value );
          +				}
          +			});
          +		} else {
          +			return this.length ?
          +				this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
          +				this;
          +		}
          +	},
          +
          +	detach: function( selector ) {
          +		return this.remove( selector, true );
          +	},
          +
          +	domManip: function( args, table, callback ) {
          +		var results, first, fragment, parent,
          +			value = args[0],
          +			scripts = [];
          +
          +		// We can't cloneNode fragments that contain checked, in WebKit
          +		if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
          +			return this.each(function() {
          +				jQuery(this).domManip( args, table, callback, true );
          +			});
          +		}
          +
          +		if ( jQuery.isFunction(value) ) {
          +			return this.each(function(i) {
          +				var self = jQuery(this);
          +				args[0] = value.call(this, i, table ? self.html() : undefined);
          +				self.domManip( args, table, callback );
          +			});
          +		}
          +
          +		if ( this[0] ) {
          +			parent = value && value.parentNode;
          +
          +			// If we're in a fragment, just use that instead of building a new one
          +			if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
          +				results = { fragment: parent };
          +
          +			} else {
          +				results = jQuery.buildFragment( args, this, scripts );
          +			}
          +
          +			fragment = results.fragment;
          +
          +			if ( fragment.childNodes.length === 1 ) {
          +				first = fragment = fragment.firstChild;
          +			} else {
          +				first = fragment.firstChild;
          +			}
          +
          +			if ( first ) {
          +				table = table && jQuery.nodeName( first, "tr" );
          +
          +				for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
          +					callback.call(
          +						table ?
          +							root(this[i], first) :
          +							this[i],
          +						// Make sure that we do not leak memory by inadvertently discarding
          +						// the original fragment (which might have attached data) instead of
          +						// using it; in addition, use the original fragment object for the last
          +						// item instead of first because it can end up being emptied incorrectly
          +						// in certain situations (Bug #8070).
          +						// Fragments from the fragment cache must always be cloned and never used
          +						// in place.
          +						results.cacheable || ( l > 1 && i < lastIndex ) ?
          +							jQuery.clone( fragment, true, true ) :
          +							fragment
          +					);
          +				}
          +			}
          +
          +			if ( scripts.length ) {
          +				jQuery.each( scripts, function( i, elem ) {
          +					if ( elem.src ) {
          +						jQuery.ajax({
          +							type: "GET",
          +							global: false,
          +							url: elem.src,
          +							async: false,
          +							dataType: "script"
          +						});
          +					} else {
          +						jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
          +					}
          +
          +					if ( elem.parentNode ) {
          +						elem.parentNode.removeChild( elem );
          +					}
          +				});
          +			}
          +		}
          +
          +		return this;
          +	}
          +});
          +
          +function root( elem, cur ) {
          +	return jQuery.nodeName(elem, "table") ?
          +		(elem.getElementsByTagName("tbody")[0] ||
          +		elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
          +		elem;
          +}
          +
          +function cloneCopyEvent( src, dest ) {
          +
          +	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
          +		return;
          +	}
          +
          +	var type, i, l,
          +		oldData = jQuery._data( src ),
          +		curData = jQuery._data( dest, oldData ),
          +		events = oldData.events;
          +
          +	if ( events ) {
          +		delete curData.handle;
          +		curData.events = {};
          +
          +		for ( type in events ) {
          +			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
          +				jQuery.event.add( dest, type, events[ type ][ i ] );
          +			}
          +		}
          +	}
          +
          +	// make the cloned public data object a copy from the original
          +	if ( curData.data ) {
          +		curData.data = jQuery.extend( {}, curData.data );
          +	}
          +}
          +
          +function cloneFixAttributes( src, dest ) {
          +	var nodeName;
          +
          +	// We do not need to do anything for non-Elements
          +	if ( dest.nodeType !== 1 ) {
          +		return;
          +	}
          +
          +	// clearAttributes removes the attributes, which we don't want,
          +	// but also removes the attachEvent events, which we *do* want
          +	if ( dest.clearAttributes ) {
          +		dest.clearAttributes();
          +	}
          +
          +	// mergeAttributes, in contrast, only merges back on the
          +	// original attributes, not the events
          +	if ( dest.mergeAttributes ) {
          +		dest.mergeAttributes( src );
          +	}
          +
          +	nodeName = dest.nodeName.toLowerCase();
          +
          +	// IE6-8 fail to clone children inside object elements that use
          +	// the proprietary classid attribute value (rather than the type
          +	// attribute) to identify the type of content to display
          +	if ( nodeName === "object" ) {
          +		dest.outerHTML = src.outerHTML;
          +
          +	} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
          +		// IE6-8 fails to persist the checked state of a cloned checkbox
          +		// or radio button. Worse, IE6-7 fail to give the cloned element
          +		// a checked appearance if the defaultChecked value isn't also set
          +		if ( src.checked ) {
          +			dest.defaultChecked = dest.checked = src.checked;
          +		}
          +
          +		// IE6-7 get confused and end up setting the value of a cloned
          +		// checkbox/radio button to an empty string instead of "on"
          +		if ( dest.value !== src.value ) {
          +			dest.value = src.value;
          +		}
          +
          +	// IE6-8 fails to return the selected option to the default selected
          +	// state when cloning options
          +	} else if ( nodeName === "option" ) {
          +		dest.selected = src.defaultSelected;
          +
          +	// IE6-8 fails to set the defaultValue to the correct value when
          +	// cloning other types of input fields
          +	} else if ( nodeName === "input" || nodeName === "textarea" ) {
          +		dest.defaultValue = src.defaultValue;
          +
          +	// IE blanks contents when cloning scripts
          +	} else if ( nodeName === "script" && dest.text !== src.text ) {
          +		dest.text = src.text;
          +	}
          +
          +	// Event data gets referenced instead of copied if the expando
          +	// gets copied too
          +	dest.removeAttribute( jQuery.expando );
          +
          +	// Clear flags for bubbling special change/submit events, they must
          +	// be reattached when the newly cloned events are first activated
          +	dest.removeAttribute( "_submit_attached" );
          +	dest.removeAttribute( "_change_attached" );
          +}
          +
          +jQuery.buildFragment = function( args, nodes, scripts ) {
          +	var fragment, cacheable, cacheresults, doc,
          +	first = args[ 0 ];
          +
          +	// nodes may contain either an explicit document object,
          +	// a jQuery collection or context object.
          +	// If nodes[0] contains a valid object to assign to doc
          +	if ( nodes && nodes[0] ) {
          +		doc = nodes[0].ownerDocument || nodes[0];
          +	}
          +
          +	// Ensure that an attr object doesn't incorrectly stand in as a document object
          +	// Chrome and Firefox seem to allow this to occur and will throw exception
          +	// Fixes #8950
          +	if ( !doc.createDocumentFragment ) {
          +		doc = document;
          +	}
          +
          +	// Only cache "small" (1/2 KB) HTML strings that are associated with the main document
          +	// Cloning options loses the selected state, so don't cache them
          +	// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
          +	// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
          +	// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
          +	if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
          +		first.charAt(0) === "<" && !rnocache.test( first ) &&
          +		(jQuery.support.checkClone || !rchecked.test( first )) &&
          +		(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
          +
          +		cacheable = true;
          +
          +		cacheresults = jQuery.fragments[ first ];
          +		if ( cacheresults && cacheresults !== 1 ) {
          +			fragment = cacheresults;
          +		}
          +	}
          +
          +	if ( !fragment ) {
          +		fragment = doc.createDocumentFragment();
          +		jQuery.clean( args, doc, fragment, scripts );
          +	}
          +
          +	if ( cacheable ) {
          +		jQuery.fragments[ first ] = cacheresults ? fragment : 1;
          +	}
          +
          +	return { fragment: fragment, cacheable: cacheable };
          +};
          +
          +jQuery.fragments = {};
          +
          +jQuery.each({
          +	appendTo: "append",
          +	prependTo: "prepend",
          +	insertBefore: "before",
          +	insertAfter: "after",
          +	replaceAll: "replaceWith"
          +}, function( name, original ) {
          +	jQuery.fn[ name ] = function( selector ) {
          +		var ret = [],
          +			insert = jQuery( selector ),
          +			parent = this.length === 1 && this[0].parentNode;
          +
          +		if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
          +			insert[ original ]( this[0] );
          +			return this;
          +
          +		} else {
          +			for ( var i = 0, l = insert.length; i < l; i++ ) {
          +				var elems = ( i > 0 ? this.clone(true) : this ).get();
          +				jQuery( insert[i] )[ original ]( elems );
          +				ret = ret.concat( elems );
          +			}
          +
          +			return this.pushStack( ret, name, insert.selector );
          +		}
          +	};
          +});
          +
          +function getAll( elem ) {
          +	if ( typeof elem.getElementsByTagName !== "undefined" ) {
          +		return elem.getElementsByTagName( "*" );
          +
          +	} else if ( typeof elem.querySelectorAll !== "undefined" ) {
          +		return elem.querySelectorAll( "*" );
          +
          +	} else {
          +		return [];
          +	}
          +}
          +
          +// Used in clean, fixes the defaultChecked property
          +function fixDefaultChecked( elem ) {
          +	if ( elem.type === "checkbox" || elem.type === "radio" ) {
          +		elem.defaultChecked = elem.checked;
          +	}
          +}
          +// Finds all inputs and passes them to fixDefaultChecked
          +function findInputs( elem ) {
          +	var nodeName = ( elem.nodeName || "" ).toLowerCase();
          +	if ( nodeName === "input" ) {
          +		fixDefaultChecked( elem );
          +	// Skip scripts, get other children
          +	} else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
          +		jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
          +	}
          +}
          +
          +// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
          +function shimCloneNode( elem ) {
          +	var div = document.createElement( "div" );
          +	safeFragment.appendChild( div );
          +
          +	div.innerHTML = elem.outerHTML;
          +	return div.firstChild;
          +}
          +
          +jQuery.extend({
          +	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
          +		var srcElements,
          +			destElements,
          +			i,
          +			// IE<=8 does not properly clone detached, unknown element nodes
          +			clone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?
          +				elem.cloneNode( true ) :
          +				shimCloneNode( elem );
          +
          +		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
          +				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
          +			// IE copies events bound via attachEvent when using cloneNode.
          +			// Calling detachEvent on the clone will also remove the events
          +			// from the original. In order to get around this, we use some
          +			// proprietary methods to clear the events. Thanks to MooTools
          +			// guys for this hotness.
          +
          +			cloneFixAttributes( elem, clone );
          +
          +			// Using Sizzle here is crazy slow, so we use getElementsByTagName instead
          +			srcElements = getAll( elem );
          +			destElements = getAll( clone );
          +
          +			// Weird iteration because IE will replace the length property
          +			// with an element if you are cloning the body and one of the
          +			// elements on the page has a name or id of "length"
          +			for ( i = 0; srcElements[i]; ++i ) {
          +				// Ensure that the destination node is not null; Fixes #9587
          +				if ( destElements[i] ) {
          +					cloneFixAttributes( srcElements[i], destElements[i] );
          +				}
          +			}
          +		}
          +
          +		// Copy the events from the original to the clone
          +		if ( dataAndEvents ) {
          +			cloneCopyEvent( elem, clone );
          +
          +			if ( deepDataAndEvents ) {
          +				srcElements = getAll( elem );
          +				destElements = getAll( clone );
          +
          +				for ( i = 0; srcElements[i]; ++i ) {
          +					cloneCopyEvent( srcElements[i], destElements[i] );
          +				}
          +			}
          +		}
          +
          +		srcElements = destElements = null;
          +
          +		// Return the cloned set
          +		return clone;
          +	},
          +
          +	clean: function( elems, context, fragment, scripts ) {
          +		var checkScriptType, script, j,
          +				ret = [];
          +
          +		context = context || document;
          +
          +		// !context.createElement fails in IE with an error but returns typeof 'object'
          +		if ( typeof context.createElement === "undefined" ) {
          +			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
          +		}
          +
          +		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
          +			if ( typeof elem === "number" ) {
          +				elem += "";
          +			}
          +
          +			if ( !elem ) {
          +				continue;
          +			}
          +
          +			// Convert html string into DOM nodes
          +			if ( typeof elem === "string" ) {
          +				if ( !rhtml.test( elem ) ) {
          +					elem = context.createTextNode( elem );
          +				} else {
          +					// Fix "XHTML"-style tags in all browsers
          +					elem = elem.replace(rxhtmlTag, "<$1></$2>");
          +
          +					// Trim whitespace, otherwise indexOf won't work as expected
          +					var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
          +						wrap = wrapMap[ tag ] || wrapMap._default,
          +						depth = wrap[0],
          +						div = context.createElement("div"),
          +						safeChildNodes = safeFragment.childNodes,
          +						remove;
          +
          +					// Append wrapper element to unknown element safe doc fragment
          +					if ( context === document ) {
          +						// Use the fragment we've already created for this document
          +						safeFragment.appendChild( div );
          +					} else {
          +						// Use a fragment created with the owner document
          +						createSafeFragment( context ).appendChild( div );
          +					}
          +
          +					// Go to html and back, then peel off extra wrappers
          +					div.innerHTML = wrap[1] + elem + wrap[2];
          +
          +					// Move to the right depth
          +					while ( depth-- ) {
          +						div = div.lastChild;
          +					}
          +
          +					// Remove IE's autoinserted <tbody> from table fragments
          +					if ( !jQuery.support.tbody ) {
          +
          +						// String was a <table>, *may* have spurious <tbody>
          +						var hasBody = rtbody.test(elem),
          +							tbody = tag === "table" && !hasBody ?
          +								div.firstChild && div.firstChild.childNodes :
          +
          +								// String was a bare <thead> or <tfoot>
          +								wrap[1] === "<table>" && !hasBody ?
          +									div.childNodes :
          +									[];
          +
          +						for ( j = tbody.length - 1; j >= 0 ; --j ) {
          +							if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
          +								tbody[ j ].parentNode.removeChild( tbody[ j ] );
          +							}
          +						}
          +					}
          +
          +					// IE completely kills leading whitespace when innerHTML is used
          +					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
          +						div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
          +					}
          +
          +					elem = div.childNodes;
          +
          +					// Clear elements from DocumentFragment (safeFragment or otherwise)
          +					// to avoid hoarding elements. Fixes #11356
          +					if ( div ) {
          +						div.parentNode.removeChild( div );
          +
          +						// Guard against -1 index exceptions in FF3.6
          +						if ( safeChildNodes.length > 0 ) {
          +							remove = safeChildNodes[ safeChildNodes.length - 1 ];
          +
          +							if ( remove && remove.parentNode ) {
          +								remove.parentNode.removeChild( remove );
          +							}
          +						}
          +					}
          +				}
          +			}
          +
          +			// Resets defaultChecked for any radios and checkboxes
          +			// about to be appended to the DOM in IE 6/7 (#8060)
          +			var len;
          +			if ( !jQuery.support.appendChecked ) {
          +				if ( elem[0] && typeof (len = elem.length) === "number" ) {
          +					for ( j = 0; j < len; j++ ) {
          +						findInputs( elem[j] );
          +					}
          +				} else {
          +					findInputs( elem );
          +				}
          +			}
          +
          +			if ( elem.nodeType ) {
          +				ret.push( elem );
          +			} else {
          +				ret = jQuery.merge( ret, elem );
          +			}
          +		}
          +
          +		if ( fragment ) {
          +			checkScriptType = function( elem ) {
          +				return !elem.type || rscriptType.test( elem.type );
          +			};
          +			for ( i = 0; ret[i]; i++ ) {
          +				script = ret[i];
          +				if ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {
          +					scripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );
          +
          +				} else {
          +					if ( script.nodeType === 1 ) {
          +						var jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );
          +
          +						ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
          +					}
          +					fragment.appendChild( script );
          +				}
          +			}
          +		}
          +
          +		return ret;
          +	},
          +
          +	cleanData: function( elems ) {
          +		var data, id,
          +			cache = jQuery.cache,
          +			special = jQuery.event.special,
          +			deleteExpando = jQuery.support.deleteExpando;
          +
          +		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
          +			if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
          +				continue;
          +			}
          +
          +			id = elem[ jQuery.expando ];
          +
          +			if ( id ) {
          +				data = cache[ id ];
          +
          +				if ( data && data.events ) {
          +					for ( var type in data.events ) {
          +						if ( special[ type ] ) {
          +							jQuery.event.remove( elem, type );
          +
          +						// This is a shortcut to avoid jQuery.event.remove's overhead
          +						} else {
          +							jQuery.removeEvent( elem, type, data.handle );
          +						}
          +					}
          +
          +					// Null the DOM reference to avoid IE6/7/8 leak (#7054)
          +					if ( data.handle ) {
          +						data.handle.elem = null;
          +					}
          +				}
          +
          +				if ( deleteExpando ) {
          +					delete elem[ jQuery.expando ];
          +
          +				} else if ( elem.removeAttribute ) {
          +					elem.removeAttribute( jQuery.expando );
          +				}
          +
          +				delete cache[ id ];
          +			}
          +		}
          +	}
          +});
          +
          +
          +
          +
          +var ralpha = /alpha\([^)]*\)/i,
          +	ropacity = /opacity=([^)]*)/,
          +	// fixed for IE9, see #8346
          +	rupper = /([A-Z]|^ms)/g,
          +	rnum = /^[\-+]?(?:\d*\.)?\d+$/i,
          +	rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
          +	rrelNum = /^([\-+])=([\-+.\de]+)/,
          +	rmargin = /^margin/,
          +
          +	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
          +
          +	// order is important!
          +	cssExpand = [ "Top", "Right", "Bottom", "Left" ],
          +
          +	curCSS,
          +
          +	getComputedStyle,
          +	currentStyle;
          +
          +jQuery.fn.css = function( name, value ) {
          +	return jQuery.access( this, function( elem, name, value ) {
          +		return value !== undefined ?
          +			jQuery.style( elem, name, value ) :
          +			jQuery.css( elem, name );
          +	}, name, value, arguments.length > 1 );
          +};
          +
          +jQuery.extend({
          +	// Add in style property hooks for overriding the default
          +	// behavior of getting and setting a style property
          +	cssHooks: {
          +		opacity: {
          +			get: function( elem, computed ) {
          +				if ( computed ) {
          +					// We should always get a number back from opacity
          +					var ret = curCSS( elem, "opacity" );
          +					return ret === "" ? "1" : ret;
          +
          +				} else {
          +					return elem.style.opacity;
          +				}
          +			}
          +		}
          +	},
          +
          +	// Exclude the following css properties to add px
          +	cssNumber: {
          +		"fillOpacity": true,
          +		"fontWeight": true,
          +		"lineHeight": true,
          +		"opacity": true,
          +		"orphans": true,
          +		"widows": true,
          +		"zIndex": true,
          +		"zoom": true
          +	},
          +
          +	// Add in properties whose names you wish to fix before
          +	// setting or getting the value
          +	cssProps: {
          +		// normalize float css property
          +		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
          +	},
          +
          +	// Get and set the style property on a DOM Node
          +	style: function( elem, name, value, extra ) {
          +		// Don't set styles on text and comment nodes
          +		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
          +			return;
          +		}
          +
          +		// Make sure that we're working with the right name
          +		var ret, type, origName = jQuery.camelCase( name ),
          +			style = elem.style, hooks = jQuery.cssHooks[ origName ];
          +
          +		name = jQuery.cssProps[ origName ] || origName;
          +
          +		// Check if we're setting a value
          +		if ( value !== undefined ) {
          +			type = typeof value;
          +
          +			// convert relative number strings (+= or -=) to relative numbers. #7345
          +			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
          +				value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
          +				// Fixes bug #9237
          +				type = "number";
          +			}
          +
          +			// Make sure that NaN and null values aren't set. See: #7116
          +			if ( value == null || type === "number" && isNaN( value ) ) {
          +				return;
          +			}
          +
          +			// If a number was passed in, add 'px' to the (except for certain CSS properties)
          +			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
          +				value += "px";
          +			}
          +
          +			// If a hook was provided, use that value, otherwise just set the specified value
          +			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
          +				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
          +				// Fixes bug #5509
          +				try {
          +					style[ name ] = value;
          +				} catch(e) {}
          +			}
          +
          +		} else {
          +			// If a hook was provided get the non-computed value from there
          +			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
          +				return ret;
          +			}
          +
          +			// Otherwise just get the value from the style object
          +			return style[ name ];
          +		}
          +	},
          +
          +	css: function( elem, name, extra ) {
          +		var ret, hooks;
          +
          +		// Make sure that we're working with the right name
          +		name = jQuery.camelCase( name );
          +		hooks = jQuery.cssHooks[ name ];
          +		name = jQuery.cssProps[ name ] || name;
          +
          +		// cssFloat needs a special treatment
          +		if ( name === "cssFloat" ) {
          +			name = "float";
          +		}
          +
          +		// If a hook was provided get the computed value from there
          +		if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
          +			return ret;
          +
          +		// Otherwise, if a way to get the computed value exists, use that
          +		} else if ( curCSS ) {
          +			return curCSS( elem, name );
          +		}
          +	},
          +
          +	// A method for quickly swapping in/out CSS properties to get correct calculations
          +	swap: function( elem, options, callback ) {
          +		var old = {},
          +			ret, name;
          +
          +		// Remember the old values, and insert the new ones
          +		for ( name in options ) {
          +			old[ name ] = elem.style[ name ];
          +			elem.style[ name ] = options[ name ];
          +		}
          +
          +		ret = callback.call( elem );
          +
          +		// Revert the old values
          +		for ( name in options ) {
          +			elem.style[ name ] = old[ name ];
          +		}
          +
          +		return ret;
          +	}
          +});
          +
          +// DEPRECATED in 1.3, Use jQuery.css() instead
          +jQuery.curCSS = jQuery.css;
          +
          +if ( document.defaultView && document.defaultView.getComputedStyle ) {
          +	getComputedStyle = function( elem, name ) {
          +		var ret, defaultView, computedStyle, width,
          +			style = elem.style;
          +
          +		name = name.replace( rupper, "-$1" ).toLowerCase();
          +
          +		if ( (defaultView = elem.ownerDocument.defaultView) &&
          +				(computedStyle = defaultView.getComputedStyle( elem, null )) ) {
          +
          +			ret = computedStyle.getPropertyValue( name );
          +			if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
          +				ret = jQuery.style( elem, name );
          +			}
          +		}
          +
          +		// A tribute to the "awesome hack by Dean Edwards"
          +		// WebKit uses "computed value (percentage if specified)" instead of "used value" for margins
          +		// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
          +		if ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {
          +			width = style.width;
          +			style.width = ret;
          +			ret = computedStyle.width;
          +			style.width = width;
          +		}
          +
          +		return ret;
          +	};
          +}
          +
          +if ( document.documentElement.currentStyle ) {
          +	currentStyle = function( elem, name ) {
          +		var left, rsLeft, uncomputed,
          +			ret = elem.currentStyle && elem.currentStyle[ name ],
          +			style = elem.style;
          +
          +		// Avoid setting ret to empty string here
          +		// so we don't default to auto
          +		if ( ret == null && style && (uncomputed = style[ name ]) ) {
          +			ret = uncomputed;
          +		}
          +
          +		// From the awesome hack by Dean Edwards
          +		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
          +
          +		// If we're not dealing with a regular pixel number
          +		// but a number that has a weird ending, we need to convert it to pixels
          +		if ( rnumnonpx.test( ret ) ) {
          +
          +			// Remember the original values
          +			left = style.left;
          +			rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
          +
          +			// Put in the new values to get a computed value out
          +			if ( rsLeft ) {
          +				elem.runtimeStyle.left = elem.currentStyle.left;
          +			}
          +			style.left = name === "fontSize" ? "1em" : ret;
          +			ret = style.pixelLeft + "px";
          +
          +			// Revert the changed values
          +			style.left = left;
          +			if ( rsLeft ) {
          +				elem.runtimeStyle.left = rsLeft;
          +			}
          +		}
          +
          +		return ret === "" ? "auto" : ret;
          +	};
          +}
          +
          +curCSS = getComputedStyle || currentStyle;
          +
          +function getWidthOrHeight( elem, name, extra ) {
          +
          +	// Start with offset property
          +	var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
          +		i = name === "width" ? 1 : 0,
          +		len = 4;
          +
          +	if ( val > 0 ) {
          +		if ( extra !== "border" ) {
          +			for ( ; i < len; i += 2 ) {
          +				if ( !extra ) {
          +					val -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
          +				}
          +				if ( extra === "margin" ) {
          +					val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;
          +				} else {
          +					val -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
          +				}
          +			}
          +		}
          +
          +		return val + "px";
          +	}
          +
          +	// Fall back to computed then uncomputed css if necessary
          +	val = curCSS( elem, name );
          +	if ( val < 0 || val == null ) {
          +		val = elem.style[ name ];
          +	}
          +
          +	// Computed unit is not pixels. Stop here and return.
          +	if ( rnumnonpx.test(val) ) {
          +		return val;
          +	}
          +
          +	// Normalize "", auto, and prepare for extra
          +	val = parseFloat( val ) || 0;
          +
          +	// Add padding, border, margin
          +	if ( extra ) {
          +		for ( ; i < len; i += 2 ) {
          +			val += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
          +			if ( extra !== "padding" ) {
          +				val += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
          +			}
          +			if ( extra === "margin" ) {
          +				val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;
          +			}
          +		}
          +	}
          +
          +	return val + "px";
          +}
          +
          +jQuery.each([ "height", "width" ], function( i, name ) {
          +	jQuery.cssHooks[ name ] = {
          +		get: function( elem, computed, extra ) {
          +			if ( computed ) {
          +				if ( elem.offsetWidth !== 0 ) {
          +					return getWidthOrHeight( elem, name, extra );
          +				} else {
          +					return jQuery.swap( elem, cssShow, function() {
          +						return getWidthOrHeight( elem, name, extra );
          +					});
          +				}
          +			}
          +		},
          +
          +		set: function( elem, value ) {
          +			return rnum.test( value ) ?
          +				value + "px" :
          +				value;
          +		}
          +	};
          +});
          +
          +if ( !jQuery.support.opacity ) {
          +	jQuery.cssHooks.opacity = {
          +		get: function( elem, computed ) {
          +			// IE uses filters for opacity
          +			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
          +				( parseFloat( RegExp.$1 ) / 100 ) + "" :
          +				computed ? "1" : "";
          +		},
          +
          +		set: function( elem, value ) {
          +			var style = elem.style,
          +				currentStyle = elem.currentStyle,
          +				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
          +				filter = currentStyle && currentStyle.filter || style.filter || "";
          +
          +			// IE has trouble with opacity if it does not have layout
          +			// Force it by setting the zoom level
          +			style.zoom = 1;
          +
          +			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
          +			if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
          +
          +				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
          +				// if "filter:" is present at all, clearType is disabled, we want to avoid this
          +				// style.removeAttribute is IE Only, but so apparently is this code path...
          +				style.removeAttribute( "filter" );
          +
          +				// if there there is no filter style applied in a css rule, we are done
          +				if ( currentStyle && !currentStyle.filter ) {
          +					return;
          +				}
          +			}
          +
          +			// otherwise, set new filter values
          +			style.filter = ralpha.test( filter ) ?
          +				filter.replace( ralpha, opacity ) :
          +				filter + " " + opacity;
          +		}
          +	};
          +}
          +
          +jQuery(function() {
          +	// This hook cannot be added until DOM ready because the support test
          +	// for it is not run until after DOM ready
          +	if ( !jQuery.support.reliableMarginRight ) {
          +		jQuery.cssHooks.marginRight = {
          +			get: function( elem, computed ) {
          +				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
          +				// Work around by temporarily setting element display to inline-block
          +				return jQuery.swap( elem, { "display": "inline-block" }, function() {
          +					if ( computed ) {
          +						return curCSS( elem, "margin-right" );
          +					} else {
          +						return elem.style.marginRight;
          +					}
          +				});
          +			}
          +		};
          +	}
          +});
          +
          +if ( jQuery.expr && jQuery.expr.filters ) {
          +	jQuery.expr.filters.hidden = function( elem ) {
          +		var width = elem.offsetWidth,
          +			height = elem.offsetHeight;
          +
          +		return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
          +	};
          +
          +	jQuery.expr.filters.visible = function( elem ) {
          +		return !jQuery.expr.filters.hidden( elem );
          +	};
          +}
          +
          +// These hooks are used by animate to expand properties
          +jQuery.each({
          +	margin: "",
          +	padding: "",
          +	border: "Width"
          +}, function( prefix, suffix ) {
          +
          +	jQuery.cssHooks[ prefix + suffix ] = {
          +		expand: function( value ) {
          +			var i,
          +
          +				// assumes a single number if not a string
          +				parts = typeof value === "string" ? value.split(" ") : [ value ],
          +				expanded = {};
          +
          +			for ( i = 0; i < 4; i++ ) {
          +				expanded[ prefix + cssExpand[ i ] + suffix ] =
          +					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
          +			}
          +
          +			return expanded;
          +		}
          +	};
          +});
          +
          +
          +
          +
          +var r20 = /%20/g,
          +	rbracket = /\[\]$/,
          +	rCRLF = /\r?\n/g,
          +	rhash = /#.*$/,
          +	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
          +	rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
          +	// #7653, #8125, #8152: local protocol detection
          +	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
          +	rnoContent = /^(?:GET|HEAD)$/,
          +	rprotocol = /^\/\//,
          +	rquery = /\?/,
          +	rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
          +	rselectTextarea = /^(?:select|textarea)/i,
          +	rspacesAjax = /\s+/,
          +	rts = /([?&])_=[^&]*/,
          +	rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
          +
          +	// Keep a copy of the old load method
          +	_load = jQuery.fn.load,
          +
          +	/* Prefilters
          +	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
          +	 * 2) These are called:
          +	 *    - BEFORE asking for a transport
          +	 *    - AFTER param serialization (s.data is a string if s.processData is true)
          +	 * 3) key is the dataType
          +	 * 4) the catchall symbol "*" can be used
          +	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
          +	 */
          +	prefilters = {},
          +
          +	/* Transports bindings
          +	 * 1) key is the dataType
          +	 * 2) the catchall symbol "*" can be used
          +	 * 3) selection will start with transport dataType and THEN go to "*" if needed
          +	 */
          +	transports = {},
          +
          +	// Document location
          +	ajaxLocation,
          +
          +	// Document location segments
          +	ajaxLocParts,
          +
          +	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
          +	allTypes = ["*/"] + ["*"];
          +
          +// #8138, IE may throw an exception when accessing
          +// a field from window.location if document.domain has been set
          +try {
          +	ajaxLocation = location.href;
          +} catch( e ) {
          +	// Use the href attribute of an A element
          +	// since IE will modify it given document.location
          +	ajaxLocation = document.createElement( "a" );
          +	ajaxLocation.href = "";
          +	ajaxLocation = ajaxLocation.href;
          +}
          +
          +// Segment location into parts
          +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
          +
          +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
          +function addToPrefiltersOrTransports( structure ) {
          +
          +	// dataTypeExpression is optional and defaults to "*"
          +	return function( dataTypeExpression, func ) {
          +
          +		if ( typeof dataTypeExpression !== "string" ) {
          +			func = dataTypeExpression;
          +			dataTypeExpression = "*";
          +		}
          +
          +		if ( jQuery.isFunction( func ) ) {
          +			var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
          +				i = 0,
          +				length = dataTypes.length,
          +				dataType,
          +				list,
          +				placeBefore;
          +
          +			// For each dataType in the dataTypeExpression
          +			for ( ; i < length; i++ ) {
          +				dataType = dataTypes[ i ];
          +				// We control if we're asked to add before
          +				// any existing element
          +				placeBefore = /^\+/.test( dataType );
          +				if ( placeBefore ) {
          +					dataType = dataType.substr( 1 ) || "*";
          +				}
          +				list = structure[ dataType ] = structure[ dataType ] || [];
          +				// then we add to the structure accordingly
          +				list[ placeBefore ? "unshift" : "push" ]( func );
          +			}
          +		}
          +	};
          +}
          +
          +// Base inspection function for prefilters and transports
          +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
          +		dataType /* internal */, inspected /* internal */ ) {
          +
          +	dataType = dataType || options.dataTypes[ 0 ];
          +	inspected = inspected || {};
          +
          +	inspected[ dataType ] = true;
          +
          +	var list = structure[ dataType ],
          +		i = 0,
          +		length = list ? list.length : 0,
          +		executeOnly = ( structure === prefilters ),
          +		selection;
          +
          +	for ( ; i < length && ( executeOnly || !selection ); i++ ) {
          +		selection = list[ i ]( options, originalOptions, jqXHR );
          +		// If we got redirected to another dataType
          +		// we try there if executing only and not done already
          +		if ( typeof selection === "string" ) {
          +			if ( !executeOnly || inspected[ selection ] ) {
          +				selection = undefined;
          +			} else {
          +				options.dataTypes.unshift( selection );
          +				selection = inspectPrefiltersOrTransports(
          +						structure, options, originalOptions, jqXHR, selection, inspected );
          +			}
          +		}
          +	}
          +	// If we're only executing or nothing was selected
          +	// we try the catchall dataType if not done already
          +	if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
          +		selection = inspectPrefiltersOrTransports(
          +				structure, options, originalOptions, jqXHR, "*", inspected );
          +	}
          +	// unnecessary when only executing (prefilters)
          +	// but it'll be ignored by the caller in that case
          +	return selection;
          +}
          +
          +// A special extend for ajax options
          +// that takes "flat" options (not to be deep extended)
          +// Fixes #9887
          +function ajaxExtend( target, src ) {
          +	var key, deep,
          +		flatOptions = jQuery.ajaxSettings.flatOptions || {};
          +	for ( key in src ) {
          +		if ( src[ key ] !== undefined ) {
          +			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
          +		}
          +	}
          +	if ( deep ) {
          +		jQuery.extend( true, target, deep );
          +	}
          +}
          +
          +jQuery.fn.extend({
          +	load: function( url, params, callback ) {
          +		if ( typeof url !== "string" && _load ) {
          +			return _load.apply( this, arguments );
          +
          +		// Don't do a request if no elements are being requested
          +		} else if ( !this.length ) {
          +			return this;
          +		}
          +
          +		var off = url.indexOf( " " );
          +		if ( off >= 0 ) {
          +			var selector = url.slice( off, url.length );
          +			url = url.slice( 0, off );
          +		}
          +
          +		// Default to a GET request
          +		var type = "GET";
          +
          +		// If the second parameter was provided
          +		if ( params ) {
          +			// If it's a function
          +			if ( jQuery.isFunction( params ) ) {
          +				// We assume that it's the callback
          +				callback = params;
          +				params = undefined;
          +
          +			// Otherwise, build a param string
          +			} else if ( typeof params === "object" ) {
          +				params = jQuery.param( params, jQuery.ajaxSettings.traditional );
          +				type = "POST";
          +			}
          +		}
          +
          +		var self = this;
          +
          +		// Request the remote document
          +		jQuery.ajax({
          +			url: url,
          +			type: type,
          +			dataType: "html",
          +			data: params,
          +			// Complete callback (responseText is used internally)
          +			complete: function( jqXHR, status, responseText ) {
          +				// Store the response as specified by the jqXHR object
          +				responseText = jqXHR.responseText;
          +				// If successful, inject the HTML into all the matched elements
          +				if ( jqXHR.isResolved() ) {
          +					// #4825: Get the actual response in case
          +					// a dataFilter is present in ajaxSettings
          +					jqXHR.done(function( r ) {
          +						responseText = r;
          +					});
          +					// See if a selector was specified
          +					self.html( selector ?
          +						// Create a dummy div to hold the results
          +						jQuery("<div>")
          +							// inject the contents of the document in, removing the scripts
          +							// to avoid any 'Permission Denied' errors in IE
          +							.append(responseText.replace(rscript, ""))
          +
          +							// Locate the specified elements
          +							.find(selector) :
          +
          +						// If not, just inject the full result
          +						responseText );
          +				}
          +
          +				if ( callback ) {
          +					self.each( callback, [ responseText, status, jqXHR ] );
          +				}
          +			}
          +		});
          +
          +		return this;
          +	},
          +
          +	serialize: function() {
          +		return jQuery.param( this.serializeArray() );
          +	},
          +
          +	serializeArray: function() {
          +		return this.map(function(){
          +			return this.elements ? jQuery.makeArray( this.elements ) : this;
          +		})
          +		.filter(function(){
          +			return this.name && !this.disabled &&
          +				( this.checked || rselectTextarea.test( this.nodeName ) ||
          +					rinput.test( this.type ) );
          +		})
          +		.map(function( i, elem ){
          +			var val = jQuery( this ).val();
          +
          +			return val == null ?
          +				null :
          +				jQuery.isArray( val ) ?
          +					jQuery.map( val, function( val, i ){
          +						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +					}) :
          +					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +		}).get();
          +	}
          +});
          +
          +// Attach a bunch of functions for handling common AJAX events
          +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
          +	jQuery.fn[ o ] = function( f ){
          +		return this.on( o, f );
          +	};
          +});
          +
          +jQuery.each( [ "get", "post" ], function( i, method ) {
          +	jQuery[ method ] = function( url, data, callback, type ) {
          +		// shift arguments if data argument was omitted
          +		if ( jQuery.isFunction( data ) ) {
          +			type = type || callback;
          +			callback = data;
          +			data = undefined;
          +		}
          +
          +		return jQuery.ajax({
          +			type: method,
          +			url: url,
          +			data: data,
          +			success: callback,
          +			dataType: type
          +		});
          +	};
          +});
          +
          +jQuery.extend({
          +
          +	getScript: function( url, callback ) {
          +		return jQuery.get( url, undefined, callback, "script" );
          +	},
          +
          +	getJSON: function( url, data, callback ) {
          +		return jQuery.get( url, data, callback, "json" );
          +	},
          +
          +	// Creates a full fledged settings object into target
          +	// with both ajaxSettings and settings fields.
          +	// If target is omitted, writes into ajaxSettings.
          +	ajaxSetup: function( target, settings ) {
          +		if ( settings ) {
          +			// Building a settings object
          +			ajaxExtend( target, jQuery.ajaxSettings );
          +		} else {
          +			// Extending ajaxSettings
          +			settings = target;
          +			target = jQuery.ajaxSettings;
          +		}
          +		ajaxExtend( target, settings );
          +		return target;
          +	},
          +
          +	ajaxSettings: {
          +		url: ajaxLocation,
          +		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
          +		global: true,
          +		type: "GET",
          +		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
          +		processData: true,
          +		async: true,
          +		/*
          +		timeout: 0,
          +		data: null,
          +		dataType: null,
          +		username: null,
          +		password: null,
          +		cache: null,
          +		traditional: false,
          +		headers: {},
          +		*/
          +
          +		accepts: {
          +			xml: "application/xml, text/xml",
          +			html: "text/html",
          +			text: "text/plain",
          +			json: "application/json, text/javascript",
          +			"*": allTypes
          +		},
          +
          +		contents: {
          +			xml: /xml/,
          +			html: /html/,
          +			json: /json/
          +		},
          +
          +		responseFields: {
          +			xml: "responseXML",
          +			text: "responseText"
          +		},
          +
          +		// List of data converters
          +		// 1) key format is "source_type destination_type" (a single space in-between)
          +		// 2) the catchall symbol "*" can be used for source_type
          +		converters: {
          +
          +			// Convert anything to text
          +			"* text": window.String,
          +
          +			// Text to html (true = no transformation)
          +			"text html": true,
          +
          +			// Evaluate text as a json expression
          +			"text json": jQuery.parseJSON,
          +
          +			// Parse text as xml
          +			"text xml": jQuery.parseXML
          +		},
          +
          +		// For options that shouldn't be deep extended:
          +		// you can add your own custom options here if
          +		// and when you create one that shouldn't be
          +		// deep extended (see ajaxExtend)
          +		flatOptions: {
          +			context: true,
          +			url: true
          +		}
          +	},
          +
          +	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
          +	ajaxTransport: addToPrefiltersOrTransports( transports ),
          +
          +	// Main method
          +	ajax: function( url, options ) {
          +
          +		// If url is an object, simulate pre-1.5 signature
          +		if ( typeof url === "object" ) {
          +			options = url;
          +			url = undefined;
          +		}
          +
          +		// Force options to be an object
          +		options = options || {};
          +
          +		var // Create the final options object
          +			s = jQuery.ajaxSetup( {}, options ),
          +			// Callbacks context
          +			callbackContext = s.context || s,
          +			// Context for global events
          +			// It's the callbackContext if one was provided in the options
          +			// and if it's a DOM node or a jQuery collection
          +			globalEventContext = callbackContext !== s &&
          +				( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
          +						jQuery( callbackContext ) : jQuery.event,
          +			// Deferreds
          +			deferred = jQuery.Deferred(),
          +			completeDeferred = jQuery.Callbacks( "once memory" ),
          +			// Status-dependent callbacks
          +			statusCode = s.statusCode || {},
          +			// ifModified key
          +			ifModifiedKey,
          +			// Headers (they are sent all at once)
          +			requestHeaders = {},
          +			requestHeadersNames = {},
          +			// Response headers
          +			responseHeadersString,
          +			responseHeaders,
          +			// transport
          +			transport,
          +			// timeout handle
          +			timeoutTimer,
          +			// Cross-domain detection vars
          +			parts,
          +			// The jqXHR state
          +			state = 0,
          +			// To know if global events are to be dispatched
          +			fireGlobals,
          +			// Loop variable
          +			i,
          +			// Fake xhr
          +			jqXHR = {
          +
          +				readyState: 0,
          +
          +				// Caches the header
          +				setRequestHeader: function( name, value ) {
          +					if ( !state ) {
          +						var lname = name.toLowerCase();
          +						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
          +						requestHeaders[ name ] = value;
          +					}
          +					return this;
          +				},
          +
          +				// Raw string
          +				getAllResponseHeaders: function() {
          +					return state === 2 ? responseHeadersString : null;
          +				},
          +
          +				// Builds headers hashtable if needed
          +				getResponseHeader: function( key ) {
          +					var match;
          +					if ( state === 2 ) {
          +						if ( !responseHeaders ) {
          +							responseHeaders = {};
          +							while( ( match = rheaders.exec( responseHeadersString ) ) ) {
          +								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
          +							}
          +						}
          +						match = responseHeaders[ key.toLowerCase() ];
          +					}
          +					return match === undefined ? null : match;
          +				},
          +
          +				// Overrides response content-type header
          +				overrideMimeType: function( type ) {
          +					if ( !state ) {
          +						s.mimeType = type;
          +					}
          +					return this;
          +				},
          +
          +				// Cancel the request
          +				abort: function( statusText ) {
          +					statusText = statusText || "abort";
          +					if ( transport ) {
          +						transport.abort( statusText );
          +					}
          +					done( 0, statusText );
          +					return this;
          +				}
          +			};
          +
          +		// Callback for when everything is done
          +		// It is defined here because jslint complains if it is declared
          +		// at the end of the function (which would be more logical and readable)
          +		function done( status, nativeStatusText, responses, headers ) {
          +
          +			// Called once
          +			if ( state === 2 ) {
          +				return;
          +			}
          +
          +			// State is "done" now
          +			state = 2;
          +
          +			// Clear timeout if it exists
          +			if ( timeoutTimer ) {
          +				clearTimeout( timeoutTimer );
          +			}
          +
          +			// Dereference transport for early garbage collection
          +			// (no matter how long the jqXHR object will be used)
          +			transport = undefined;
          +
          +			// Cache response headers
          +			responseHeadersString = headers || "";
          +
          +			// Set readyState
          +			jqXHR.readyState = status > 0 ? 4 : 0;
          +
          +			var isSuccess,
          +				success,
          +				error,
          +				statusText = nativeStatusText,
          +				response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
          +				lastModified,
          +				etag;
          +
          +			// If successful, handle type chaining
          +			if ( status >= 200 && status < 300 || status === 304 ) {
          +
          +				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +				if ( s.ifModified ) {
          +
          +					if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
          +						jQuery.lastModified[ ifModifiedKey ] = lastModified;
          +					}
          +					if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
          +						jQuery.etag[ ifModifiedKey ] = etag;
          +					}
          +				}
          +
          +				// If not modified
          +				if ( status === 304 ) {
          +
          +					statusText = "notmodified";
          +					isSuccess = true;
          +
          +				// If we have data
          +				} else {
          +
          +					try {
          +						success = ajaxConvert( s, response );
          +						statusText = "success";
          +						isSuccess = true;
          +					} catch(e) {
          +						// We have a parsererror
          +						statusText = "parsererror";
          +						error = e;
          +					}
          +				}
          +			} else {
          +				// We extract error from statusText
          +				// then normalize statusText and status for non-aborts
          +				error = statusText;
          +				if ( !statusText || status ) {
          +					statusText = "error";
          +					if ( status < 0 ) {
          +						status = 0;
          +					}
          +				}
          +			}
          +
          +			// Set data for the fake xhr object
          +			jqXHR.status = status;
          +			jqXHR.statusText = "" + ( nativeStatusText || statusText );
          +
          +			// Success/Error
          +			if ( isSuccess ) {
          +				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
          +			} else {
          +				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
          +			}
          +
          +			// Status-dependent callbacks
          +			jqXHR.statusCode( statusCode );
          +			statusCode = undefined;
          +
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
          +						[ jqXHR, s, isSuccess ? success : error ] );
          +			}
          +
          +			// Complete
          +			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
          +
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
          +				// Handle the global AJAX counter
          +				if ( !( --jQuery.active ) ) {
          +					jQuery.event.trigger( "ajaxStop" );
          +				}
          +			}
          +		}
          +
          +		// Attach deferreds
          +		deferred.promise( jqXHR );
          +		jqXHR.success = jqXHR.done;
          +		jqXHR.error = jqXHR.fail;
          +		jqXHR.complete = completeDeferred.add;
          +
          +		// Status-dependent callbacks
          +		jqXHR.statusCode = function( map ) {
          +			if ( map ) {
          +				var tmp;
          +				if ( state < 2 ) {
          +					for ( tmp in map ) {
          +						statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
          +					}
          +				} else {
          +					tmp = map[ jqXHR.status ];
          +					jqXHR.then( tmp, tmp );
          +				}
          +			}
          +			return this;
          +		};
          +
          +		// Remove hash character (#7531: and string promotion)
          +		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
          +		// We also use the url parameter if available
          +		s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
          +
          +		// Extract dataTypes list
          +		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
          +
          +		// Determine if a cross-domain request is in order
          +		if ( s.crossDomain == null ) {
          +			parts = rurl.exec( s.url.toLowerCase() );
          +			s.crossDomain = !!( parts &&
          +				( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
          +					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
          +						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
          +			);
          +		}
          +
          +		// Convert data if not already a string
          +		if ( s.data && s.processData && typeof s.data !== "string" ) {
          +			s.data = jQuery.param( s.data, s.traditional );
          +		}
          +
          +		// Apply prefilters
          +		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
          +
          +		// If request was aborted inside a prefilter, stop there
          +		if ( state === 2 ) {
          +			return false;
          +		}
          +
          +		// We can fire global events as of now if asked to
          +		fireGlobals = s.global;
          +
          +		// Uppercase the type
          +		s.type = s.type.toUpperCase();
          +
          +		// Determine if request has content
          +		s.hasContent = !rnoContent.test( s.type );
          +
          +		// Watch for a new set of requests
          +		if ( fireGlobals && jQuery.active++ === 0 ) {
          +			jQuery.event.trigger( "ajaxStart" );
          +		}
          +
          +		// More options handling for requests with no content
          +		if ( !s.hasContent ) {
          +
          +			// If data is available, append data to url
          +			if ( s.data ) {
          +				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
          +				// #9682: remove data so that it's not used in an eventual retry
          +				delete s.data;
          +			}
          +
          +			// Get ifModifiedKey before adding the anti-cache parameter
          +			ifModifiedKey = s.url;
          +
          +			// Add anti-cache in url if needed
          +			if ( s.cache === false ) {
          +
          +				var ts = jQuery.now(),
          +					// try replacing _= if it is there
          +					ret = s.url.replace( rts, "$1_=" + ts );
          +
          +				// if nothing was replaced, add timestamp to the end
          +				s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
          +			}
          +		}
          +
          +		// Set the correct header, if data is being sent
          +		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
          +			jqXHR.setRequestHeader( "Content-Type", s.contentType );
          +		}
          +
          +		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +		if ( s.ifModified ) {
          +			ifModifiedKey = ifModifiedKey || s.url;
          +			if ( jQuery.lastModified[ ifModifiedKey ] ) {
          +				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
          +			}
          +			if ( jQuery.etag[ ifModifiedKey ] ) {
          +				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
          +			}
          +		}
          +
          +		// Set the Accepts header for the server, depending on the dataType
          +		jqXHR.setRequestHeader(
          +			"Accept",
          +			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
          +				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
          +				s.accepts[ "*" ]
          +		);
          +
          +		// Check for headers option
          +		for ( i in s.headers ) {
          +			jqXHR.setRequestHeader( i, s.headers[ i ] );
          +		}
          +
          +		// Allow custom headers/mimetypes and early abort
          +		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
          +				// Abort if not done already
          +				jqXHR.abort();
          +				return false;
          +
          +		}
          +
          +		// Install callbacks on deferreds
          +		for ( i in { success: 1, error: 1, complete: 1 } ) {
          +			jqXHR[ i ]( s[ i ] );
          +		}
          +
          +		// Get transport
          +		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
          +
          +		// If no transport, we auto-abort
          +		if ( !transport ) {
          +			done( -1, "No Transport" );
          +		} else {
          +			jqXHR.readyState = 1;
          +			// Send global event
          +			if ( fireGlobals ) {
          +				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
          +			}
          +			// Timeout
          +			if ( s.async && s.timeout > 0 ) {
          +				timeoutTimer = setTimeout( function(){
          +					jqXHR.abort( "timeout" );
          +				}, s.timeout );
          +			}
          +
          +			try {
          +				state = 1;
          +				transport.send( requestHeaders, done );
          +			} catch (e) {
          +				// Propagate exception as error if not done
          +				if ( state < 2 ) {
          +					done( -1, e );
          +				// Simply rethrow otherwise
          +				} else {
          +					throw e;
          +				}
          +			}
          +		}
          +
          +		return jqXHR;
          +	},
          +
          +	// Serialize an array of form elements or a set of
          +	// key/values into a query string
          +	param: function( a, traditional ) {
          +		var s = [],
          +			add = function( key, value ) {
          +				// If value is a function, invoke it and return its value
          +				value = jQuery.isFunction( value ) ? value() : value;
          +				s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
          +			};
          +
          +		// Set traditional to true for jQuery <= 1.3.2 behavior.
          +		if ( traditional === undefined ) {
          +			traditional = jQuery.ajaxSettings.traditional;
          +		}
          +
          +		// If an array was passed in, assume that it is an array of form elements.
          +		if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
          +			// Serialize the form elements
          +			jQuery.each( a, function() {
          +				add( this.name, this.value );
          +			});
          +
          +		} else {
          +			// If traditional, encode the "old" way (the way 1.3.2 or older
          +			// did it), otherwise encode params recursively.
          +			for ( var prefix in a ) {
          +				buildParams( prefix, a[ prefix ], traditional, add );
          +			}
          +		}
          +
          +		// Return the resulting serialization
          +		return s.join( "&" ).replace( r20, "+" );
          +	}
          +});
          +
          +function buildParams( prefix, obj, traditional, add ) {
          +	if ( jQuery.isArray( obj ) ) {
          +		// Serialize array item.
          +		jQuery.each( obj, function( i, v ) {
          +			if ( traditional || rbracket.test( prefix ) ) {
          +				// Treat each array item as a scalar.
          +				add( prefix, v );
          +
          +			} else {
          +				// If array item is non-scalar (array or object), encode its
          +				// numeric index to resolve deserialization ambiguity issues.
          +				// Note that rack (as of 1.0.0) can't currently deserialize
          +				// nested arrays properly, and attempting to do so may cause
          +				// a server error. Possible fixes are to modify rack's
          +				// deserialization algorithm or to provide an option or flag
          +				// to force array serialization to be shallow.
          +				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
          +			}
          +		});
          +
          +	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
          +		// Serialize object item.
          +		for ( var name in obj ) {
          +			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
          +		}
          +
          +	} else {
          +		// Serialize scalar item.
          +		add( prefix, obj );
          +	}
          +}
          +
          +// This is still on the jQuery object... for now
          +// Want to move this to jQuery.ajax some day
          +jQuery.extend({
          +
          +	// Counter for holding the number of active queries
          +	active: 0,
          +
          +	// Last-Modified header cache for next request
          +	lastModified: {},
          +	etag: {}
          +
          +});
          +
          +/* Handles responses to an ajax request:
          + * - sets all responseXXX fields accordingly
          + * - finds the right dataType (mediates between content-type and expected dataType)
          + * - returns the corresponding response
          + */
          +function ajaxHandleResponses( s, jqXHR, responses ) {
          +
          +	var contents = s.contents,
          +		dataTypes = s.dataTypes,
          +		responseFields = s.responseFields,
          +		ct,
          +		type,
          +		finalDataType,
          +		firstDataType;
          +
          +	// Fill responseXXX fields
          +	for ( type in responseFields ) {
          +		if ( type in responses ) {
          +			jqXHR[ responseFields[type] ] = responses[ type ];
          +		}
          +	}
          +
          +	// Remove auto dataType and get content-type in the process
          +	while( dataTypes[ 0 ] === "*" ) {
          +		dataTypes.shift();
          +		if ( ct === undefined ) {
          +			ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
          +		}
          +	}
          +
          +	// Check if we're dealing with a known content-type
          +	if ( ct ) {
          +		for ( type in contents ) {
          +			if ( contents[ type ] && contents[ type ].test( ct ) ) {
          +				dataTypes.unshift( type );
          +				break;
          +			}
          +		}
          +	}
          +
          +	// Check to see if we have a response for the expected dataType
          +	if ( dataTypes[ 0 ] in responses ) {
          +		finalDataType = dataTypes[ 0 ];
          +	} else {
          +		// Try convertible dataTypes
          +		for ( type in responses ) {
          +			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
          +				finalDataType = type;
          +				break;
          +			}
          +			if ( !firstDataType ) {
          +				firstDataType = type;
          +			}
          +		}
          +		// Or just use first one
          +		finalDataType = finalDataType || firstDataType;
          +	}
          +
          +	// If we found a dataType
          +	// We add the dataType to the list if needed
          +	// and return the corresponding response
          +	if ( finalDataType ) {
          +		if ( finalDataType !== dataTypes[ 0 ] ) {
          +			dataTypes.unshift( finalDataType );
          +		}
          +		return responses[ finalDataType ];
          +	}
          +}
          +
          +// Chain conversions given the request and the original response
          +function ajaxConvert( s, response ) {
          +
          +	// Apply the dataFilter if provided
          +	if ( s.dataFilter ) {
          +		response = s.dataFilter( response, s.dataType );
          +	}
          +
          +	var dataTypes = s.dataTypes,
          +		converters = {},
          +		i,
          +		key,
          +		length = dataTypes.length,
          +		tmp,
          +		// Current and previous dataTypes
          +		current = dataTypes[ 0 ],
          +		prev,
          +		// Conversion expression
          +		conversion,
          +		// Conversion function
          +		conv,
          +		// Conversion functions (transitive conversion)
          +		conv1,
          +		conv2;
          +
          +	// For each dataType in the chain
          +	for ( i = 1; i < length; i++ ) {
          +
          +		// Create converters map
          +		// with lowercased keys
          +		if ( i === 1 ) {
          +			for ( key in s.converters ) {
          +				if ( typeof key === "string" ) {
          +					converters[ key.toLowerCase() ] = s.converters[ key ];
          +				}
          +			}
          +		}
          +
          +		// Get the dataTypes
          +		prev = current;
          +		current = dataTypes[ i ];
          +
          +		// If current is auto dataType, update it to prev
          +		if ( current === "*" ) {
          +			current = prev;
          +		// If no auto and dataTypes are actually different
          +		} else if ( prev !== "*" && prev !== current ) {
          +
          +			// Get the converter
          +			conversion = prev + " " + current;
          +			conv = converters[ conversion ] || converters[ "* " + current ];
          +
          +			// If there is no direct converter, search transitively
          +			if ( !conv ) {
          +				conv2 = undefined;
          +				for ( conv1 in converters ) {
          +					tmp = conv1.split( " " );
          +					if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
          +						conv2 = converters[ tmp[1] + " " + current ];
          +						if ( conv2 ) {
          +							conv1 = converters[ conv1 ];
          +							if ( conv1 === true ) {
          +								conv = conv2;
          +							} else if ( conv2 === true ) {
          +								conv = conv1;
          +							}
          +							break;
          +						}
          +					}
          +				}
          +			}
          +			// If we found no converter, dispatch an error
          +			if ( !( conv || conv2 ) ) {
          +				jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
          +			}
          +			// If found converter is not an equivalence
          +			if ( conv !== true ) {
          +				// Convert with 1 or 2 converters accordingly
          +				response = conv ? conv( response ) : conv2( conv1(response) );
          +			}
          +		}
          +	}
          +	return response;
          +}
          +
          +
          +
          +
          +var jsc = jQuery.now(),
          +	jsre = /(\=)\?(&|$)|\?\?/i;
          +
          +// Default jsonp settings
          +jQuery.ajaxSetup({
          +	jsonp: "callback",
          +	jsonpCallback: function() {
          +		return jQuery.expando + "_" + ( jsc++ );
          +	}
          +});
          +
          +// Detect, normalize options and install callbacks for jsonp requests
          +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
          +
          +	var inspectData = ( typeof s.data === "string" ) && /^application\/x\-www\-form\-urlencoded/.test( s.contentType );
          +
          +	if ( s.dataTypes[ 0 ] === "jsonp" ||
          +		s.jsonp !== false && ( jsre.test( s.url ) ||
          +				inspectData && jsre.test( s.data ) ) ) {
          +
          +		var responseContainer,
          +			jsonpCallback = s.jsonpCallback =
          +				jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
          +			previous = window[ jsonpCallback ],
          +			url = s.url,
          +			data = s.data,
          +			replace = "$1" + jsonpCallback + "$2";
          +
          +		if ( s.jsonp !== false ) {
          +			url = url.replace( jsre, replace );
          +			if ( s.url === url ) {
          +				if ( inspectData ) {
          +					data = data.replace( jsre, replace );
          +				}
          +				if ( s.data === data ) {
          +					// Add callback manually
          +					url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
          +				}
          +			}
          +		}
          +
          +		s.url = url;
          +		s.data = data;
          +
          +		// Install callback
          +		window[ jsonpCallback ] = function( response ) {
          +			responseContainer = [ response ];
          +		};
          +
          +		// Clean-up function
          +		jqXHR.always(function() {
          +			// Set callback back to previous value
          +			window[ jsonpCallback ] = previous;
          +			// Call if it was a function and we have a response
          +			if ( responseContainer && jQuery.isFunction( previous ) ) {
          +				window[ jsonpCallback ]( responseContainer[ 0 ] );
          +			}
          +		});
          +
          +		// Use data converter to retrieve json after script execution
          +		s.converters["script json"] = function() {
          +			if ( !responseContainer ) {
          +				jQuery.error( jsonpCallback + " was not called" );
          +			}
          +			return responseContainer[ 0 ];
          +		};
          +
          +		// force json dataType
          +		s.dataTypes[ 0 ] = "json";
          +
          +		// Delegate to script
          +		return "script";
          +	}
          +});
          +
          +
          +
          +
          +// Install script dataType
          +jQuery.ajaxSetup({
          +	accepts: {
          +		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
          +	},
          +	contents: {
          +		script: /javascript|ecmascript/
          +	},
          +	converters: {
          +		"text script": function( text ) {
          +			jQuery.globalEval( text );
          +			return text;
          +		}
          +	}
          +});
          +
          +// Handle cache's special case and global
          +jQuery.ajaxPrefilter( "script", function( s ) {
          +	if ( s.cache === undefined ) {
          +		s.cache = false;
          +	}
          +	if ( s.crossDomain ) {
          +		s.type = "GET";
          +		s.global = false;
          +	}
          +});
          +
          +// Bind script tag hack transport
          +jQuery.ajaxTransport( "script", function(s) {
          +
          +	// This transport only deals with cross domain requests
          +	if ( s.crossDomain ) {
          +
          +		var script,
          +			head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
          +
          +		return {
          +
          +			send: function( _, callback ) {
          +
          +				script = document.createElement( "script" );
          +
          +				script.async = "async";
          +
          +				if ( s.scriptCharset ) {
          +					script.charset = s.scriptCharset;
          +				}
          +
          +				script.src = s.url;
          +
          +				// Attach handlers for all browsers
          +				script.onload = script.onreadystatechange = function( _, isAbort ) {
          +
          +					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
          +
          +						// Handle memory leak in IE
          +						script.onload = script.onreadystatechange = null;
          +
          +						// Remove the script
          +						if ( head && script.parentNode ) {
          +							head.removeChild( script );
          +						}
          +
          +						// Dereference the script
          +						script = undefined;
          +
          +						// Callback if not abort
          +						if ( !isAbort ) {
          +							callback( 200, "success" );
          +						}
          +					}
          +				};
          +				// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
          +				// This arises when a base node is used (#2709 and #4378).
          +				head.insertBefore( script, head.firstChild );
          +			},
          +
          +			abort: function() {
          +				if ( script ) {
          +					script.onload( 0, 1 );
          +				}
          +			}
          +		};
          +	}
          +});
          +
          +
          +
          +
          +var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
          +	xhrOnUnloadAbort = window.ActiveXObject ? function() {
          +		// Abort all pending requests
          +		for ( var key in xhrCallbacks ) {
          +			xhrCallbacks[ key ]( 0, 1 );
          +		}
          +	} : false,
          +	xhrId = 0,
          +	xhrCallbacks;
          +
          +// Functions to create xhrs
          +function createStandardXHR() {
          +	try {
          +		return new window.XMLHttpRequest();
          +	} catch( e ) {}
          +}
          +
          +function createActiveXHR() {
          +	try {
          +		return new window.ActiveXObject( "Microsoft.XMLHTTP" );
          +	} catch( e ) {}
          +}
          +
          +// Create the request object
          +// (This is still attached to ajaxSettings for backward compatibility)
          +jQuery.ajaxSettings.xhr = window.ActiveXObject ?
          +	/* Microsoft failed to properly
          +	 * implement the XMLHttpRequest in IE7 (can't request local files),
          +	 * so we use the ActiveXObject when it is available
          +	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
          +	 * we need a fallback.
          +	 */
          +	function() {
          +		return !this.isLocal && createStandardXHR() || createActiveXHR();
          +	} :
          +	// For all other browsers, use the standard XMLHttpRequest object
          +	createStandardXHR;
          +
          +// Determine support properties
          +(function( xhr ) {
          +	jQuery.extend( jQuery.support, {
          +		ajax: !!xhr,
          +		cors: !!xhr && ( "withCredentials" in xhr )
          +	});
          +})( jQuery.ajaxSettings.xhr() );
          +
          +// Create transport if the browser can provide an xhr
          +if ( jQuery.support.ajax ) {
          +
          +	jQuery.ajaxTransport(function( s ) {
          +		// Cross domain only allowed if supported through XMLHttpRequest
          +		if ( !s.crossDomain || jQuery.support.cors ) {
          +
          +			var callback;
          +
          +			return {
          +				send: function( headers, complete ) {
          +
          +					// Get a new xhr
          +					var xhr = s.xhr(),
          +						handle,
          +						i;
          +
          +					// Open the socket
          +					// Passing null username, generates a login popup on Opera (#2865)
          +					if ( s.username ) {
          +						xhr.open( s.type, s.url, s.async, s.username, s.password );
          +					} else {
          +						xhr.open( s.type, s.url, s.async );
          +					}
          +
          +					// Apply custom fields if provided
          +					if ( s.xhrFields ) {
          +						for ( i in s.xhrFields ) {
          +							xhr[ i ] = s.xhrFields[ i ];
          +						}
          +					}
          +
          +					// Override mime type if needed
          +					if ( s.mimeType && xhr.overrideMimeType ) {
          +						xhr.overrideMimeType( s.mimeType );
          +					}
          +
          +					// X-Requested-With header
          +					// For cross-domain requests, seeing as conditions for a preflight are
          +					// akin to a jigsaw puzzle, we simply never set it to be sure.
          +					// (it can always be set on a per-request basis or even using ajaxSetup)
          +					// For same-domain requests, won't change header if already provided.
          +					if ( !s.crossDomain && !headers["X-Requested-With"] ) {
          +						headers[ "X-Requested-With" ] = "XMLHttpRequest";
          +					}
          +
          +					// Need an extra try/catch for cross domain requests in Firefox 3
          +					try {
          +						for ( i in headers ) {
          +							xhr.setRequestHeader( i, headers[ i ] );
          +						}
          +					} catch( _ ) {}
          +
          +					// Do send the request
          +					// This may raise an exception which is actually
          +					// handled in jQuery.ajax (so no try/catch here)
          +					xhr.send( ( s.hasContent && s.data ) || null );
          +
          +					// Listener
          +					callback = function( _, isAbort ) {
          +
          +						var status,
          +							statusText,
          +							responseHeaders,
          +							responses,
          +							xml;
          +
          +						// Firefox throws exceptions when accessing properties
          +						// of an xhr when a network error occured
          +						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
          +						try {
          +
          +							// Was never called and is aborted or complete
          +							if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
          +
          +								// Only called once
          +								callback = undefined;
          +
          +								// Do not keep as active anymore
          +								if ( handle ) {
          +									xhr.onreadystatechange = jQuery.noop;
          +									if ( xhrOnUnloadAbort ) {
          +										delete xhrCallbacks[ handle ];
          +									}
          +								}
          +
          +								// If it's an abort
          +								if ( isAbort ) {
          +									// Abort it manually if needed
          +									if ( xhr.readyState !== 4 ) {
          +										xhr.abort();
          +									}
          +								} else {
          +									status = xhr.status;
          +									responseHeaders = xhr.getAllResponseHeaders();
          +									responses = {};
          +									xml = xhr.responseXML;
          +
          +									// Construct response list
          +									if ( xml && xml.documentElement /* #4958 */ ) {
          +										responses.xml = xml;
          +									}
          +
          +									// When requesting binary data, IE6-9 will throw an exception
          +									// on any attempt to access responseText (#11426)
          +									try {
          +										responses.text = xhr.responseText;
          +									} catch( _ ) {
          +									}
          +
          +									// Firefox throws an exception when accessing
          +									// statusText for faulty cross-domain requests
          +									try {
          +										statusText = xhr.statusText;
          +									} catch( e ) {
          +										// We normalize with Webkit giving an empty statusText
          +										statusText = "";
          +									}
          +
          +									// Filter status for non standard behaviors
          +
          +									// If the request is local and we have data: assume a success
          +									// (success with no data won't get notified, that's the best we
          +									// can do given current implementations)
          +									if ( !status && s.isLocal && !s.crossDomain ) {
          +										status = responses.text ? 200 : 404;
          +									// IE - #1450: sometimes returns 1223 when it should be 204
          +									} else if ( status === 1223 ) {
          +										status = 204;
          +									}
          +								}
          +							}
          +						} catch( firefoxAccessException ) {
          +							if ( !isAbort ) {
          +								complete( -1, firefoxAccessException );
          +							}
          +						}
          +
          +						// Call complete if needed
          +						if ( responses ) {
          +							complete( status, statusText, responses, responseHeaders );
          +						}
          +					};
          +
          +					// if we're in sync mode or it's in cache
          +					// and has been retrieved directly (IE6 & IE7)
          +					// we need to manually fire the callback
          +					if ( !s.async || xhr.readyState === 4 ) {
          +						callback();
          +					} else {
          +						handle = ++xhrId;
          +						if ( xhrOnUnloadAbort ) {
          +							// Create the active xhrs callbacks list if needed
          +							// and attach the unload handler
          +							if ( !xhrCallbacks ) {
          +								xhrCallbacks = {};
          +								jQuery( window ).unload( xhrOnUnloadAbort );
          +							}
          +							// Add to list of active xhrs callbacks
          +							xhrCallbacks[ handle ] = callback;
          +						}
          +						xhr.onreadystatechange = callback;
          +					}
          +				},
          +
          +				abort: function() {
          +					if ( callback ) {
          +						callback(0,1);
          +					}
          +				}
          +			};
          +		}
          +	});
          +}
          +
          +
          +
          +
          +var elemdisplay = {},
          +	iframe, iframeDoc,
          +	rfxtypes = /^(?:toggle|show|hide)$/,
          +	rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
          +	timerId,
          +	fxAttrs = [
          +		// height animations
          +		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
          +		// width animations
          +		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
          +		// opacity animations
          +		[ "opacity" ]
          +	],
          +	fxNow;
          +
          +jQuery.fn.extend({
          +	show: function( speed, easing, callback ) {
          +		var elem, display;
          +
          +		if ( speed || speed === 0 ) {
          +			return this.animate( genFx("show", 3), speed, easing, callback );
          +
          +		} else {
          +			for ( var i = 0, j = this.length; i < j; i++ ) {
          +				elem = this[ i ];
          +
          +				if ( elem.style ) {
          +					display = elem.style.display;
          +
          +					// Reset the inline display of this element to learn if it is
          +					// being hidden by cascaded rules or not
          +					if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
          +						display = elem.style.display = "";
          +					}
          +
          +					// Set elements which have been overridden with display: none
          +					// in a stylesheet to whatever the default browser style is
          +					// for such an element
          +					if ( (display === "" && jQuery.css(elem, "display") === "none") ||
          +						!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
          +						jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
          +					}
          +				}
          +			}
          +
          +			// Set the display of most of the elements in a second loop
          +			// to avoid the constant reflow
          +			for ( i = 0; i < j; i++ ) {
          +				elem = this[ i ];
          +
          +				if ( elem.style ) {
          +					display = elem.style.display;
          +
          +					if ( display === "" || display === "none" ) {
          +						elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
          +					}
          +				}
          +			}
          +
          +			return this;
          +		}
          +	},
          +
          +	hide: function( speed, easing, callback ) {
          +		if ( speed || speed === 0 ) {
          +			return this.animate( genFx("hide", 3), speed, easing, callback);
          +
          +		} else {
          +			var elem, display,
          +				i = 0,
          +				j = this.length;
          +
          +			for ( ; i < j; i++ ) {
          +				elem = this[i];
          +				if ( elem.style ) {
          +					display = jQuery.css( elem, "display" );
          +
          +					if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
          +						jQuery._data( elem, "olddisplay", display );
          +					}
          +				}
          +			}
          +
          +			// Set the display of the elements in a second loop
          +			// to avoid the constant reflow
          +			for ( i = 0; i < j; i++ ) {
          +				if ( this[i].style ) {
          +					this[i].style.display = "none";
          +				}
          +			}
          +
          +			return this;
          +		}
          +	},
          +
          +	// Save the old toggle function
          +	_toggle: jQuery.fn.toggle,
          +
          +	toggle: function( fn, fn2, callback ) {
          +		var bool = typeof fn === "boolean";
          +
          +		if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
          +			this._toggle.apply( this, arguments );
          +
          +		} else if ( fn == null || bool ) {
          +			this.each(function() {
          +				var state = bool ? fn : jQuery(this).is(":hidden");
          +				jQuery(this)[ state ? "show" : "hide" ]();
          +			});
          +
          +		} else {
          +			this.animate(genFx("toggle", 3), fn, fn2, callback);
          +		}
          +
          +		return this;
          +	},
          +
          +	fadeTo: function( speed, to, easing, callback ) {
          +		return this.filter(":hidden").css("opacity", 0).show().end()
          +					.animate({opacity: to}, speed, easing, callback);
          +	},
          +
          +	animate: function( prop, speed, easing, callback ) {
          +		var optall = jQuery.speed( speed, easing, callback );
          +
          +		if ( jQuery.isEmptyObject( prop ) ) {
          +			return this.each( optall.complete, [ false ] );
          +		}
          +
          +		// Do not change referenced properties as per-property easing will be lost
          +		prop = jQuery.extend( {}, prop );
          +
          +		function doAnimation() {
          +			// XXX 'this' does not always have a nodeName when running the
          +			// test suite
          +
          +			if ( optall.queue === false ) {
          +				jQuery._mark( this );
          +			}
          +
          +			var opt = jQuery.extend( {}, optall ),
          +				isElement = this.nodeType === 1,
          +				hidden = isElement && jQuery(this).is(":hidden"),
          +				name, val, p, e, hooks, replace,
          +				parts, start, end, unit,
          +				method;
          +
          +			// will store per property easing and be used to determine when an animation is complete
          +			opt.animatedProperties = {};
          +
          +			// first pass over propertys to expand / normalize
          +			for ( p in prop ) {
          +				name = jQuery.camelCase( p );
          +				if ( p !== name ) {
          +					prop[ name ] = prop[ p ];
          +					delete prop[ p ];
          +				}
          +
          +				if ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {
          +					replace = hooks.expand( prop[ name ] );
          +					delete prop[ name ];
          +
          +					// not quite $.extend, this wont overwrite keys already present.
          +					// also - reusing 'p' from above because we have the correct "name"
          +					for ( p in replace ) {
          +						if ( ! ( p in prop ) ) {
          +							prop[ p ] = replace[ p ];
          +						}
          +					}
          +				}
          +			}
          +
          +			for ( name in prop ) {
          +				val = prop[ name ];
          +				// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
          +				if ( jQuery.isArray( val ) ) {
          +					opt.animatedProperties[ name ] = val[ 1 ];
          +					val = prop[ name ] = val[ 0 ];
          +				} else {
          +					opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
          +				}
          +
          +				if ( val === "hide" && hidden || val === "show" && !hidden ) {
          +					return opt.complete.call( this );
          +				}
          +
          +				if ( isElement && ( name === "height" || name === "width" ) ) {
          +					// Make sure that nothing sneaks out
          +					// Record all 3 overflow attributes because IE does not
          +					// change the overflow attribute when overflowX and
          +					// overflowY are set to the same value
          +					opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
          +
          +					// Set display property to inline-block for height/width
          +					// animations on inline elements that are having width/height animated
          +					if ( jQuery.css( this, "display" ) === "inline" &&
          +							jQuery.css( this, "float" ) === "none" ) {
          +
          +						// inline-level elements accept inline-block;
          +						// block-level elements need to be inline with layout
          +						if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
          +							this.style.display = "inline-block";
          +
          +						} else {
          +							this.style.zoom = 1;
          +						}
          +					}
          +				}
          +			}
          +
          +			if ( opt.overflow != null ) {
          +				this.style.overflow = "hidden";
          +			}
          +
          +			for ( p in prop ) {
          +				e = new jQuery.fx( this, opt, p );
          +				val = prop[ p ];
          +
          +				if ( rfxtypes.test( val ) ) {
          +
          +					// Tracks whether to show or hide based on private
          +					// data attached to the element
          +					method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
          +					if ( method ) {
          +						jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
          +						e[ method ]();
          +					} else {
          +						e[ val ]();
          +					}
          +
          +				} else {
          +					parts = rfxnum.exec( val );
          +					start = e.cur();
          +
          +					if ( parts ) {
          +						end = parseFloat( parts[2] );
          +						unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
          +
          +						// We need to compute starting value
          +						if ( unit !== "px" ) {
          +							jQuery.style( this, p, (end || 1) + unit);
          +							start = ( (end || 1) / e.cur() ) * start;
          +							jQuery.style( this, p, start + unit);
          +						}
          +
          +						// If a +=/-= token was provided, we're doing a relative animation
          +						if ( parts[1] ) {
          +							end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
          +						}
          +
          +						e.custom( start, end, unit );
          +
          +					} else {
          +						e.custom( start, val, "" );
          +					}
          +				}
          +			}
          +
          +			// For JS strict compliance
          +			return true;
          +		}
          +
          +		return optall.queue === false ?
          +			this.each( doAnimation ) :
          +			this.queue( optall.queue, doAnimation );
          +	},
          +
          +	stop: function( type, clearQueue, gotoEnd ) {
          +		if ( typeof type !== "string" ) {
          +			gotoEnd = clearQueue;
          +			clearQueue = type;
          +			type = undefined;
          +		}
          +		if ( clearQueue && type !== false ) {
          +			this.queue( type || "fx", [] );
          +		}
          +
          +		return this.each(function() {
          +			var index,
          +				hadTimers = false,
          +				timers = jQuery.timers,
          +				data = jQuery._data( this );
          +
          +			// clear marker counters if we know they won't be
          +			if ( !gotoEnd ) {
          +				jQuery._unmark( true, this );
          +			}
          +
          +			function stopQueue( elem, data, index ) {
          +				var hooks = data[ index ];
          +				jQuery.removeData( elem, index, true );
          +				hooks.stop( gotoEnd );
          +			}
          +
          +			if ( type == null ) {
          +				for ( index in data ) {
          +					if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
          +						stopQueue( this, data, index );
          +					}
          +				}
          +			} else if ( data[ index = type + ".run" ] && data[ index ].stop ){
          +				stopQueue( this, data, index );
          +			}
          +
          +			for ( index = timers.length; index--; ) {
          +				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
          +					if ( gotoEnd ) {
          +
          +						// force the next step to be the last
          +						timers[ index ]( true );
          +					} else {
          +						timers[ index ].saveState();
          +					}
          +					hadTimers = true;
          +					timers.splice( index, 1 );
          +				}
          +			}
          +
          +			// start the next in the queue if the last step wasn't forced
          +			// timers currently will call their complete callbacks, which will dequeue
          +			// but only if they were gotoEnd
          +			if ( !( gotoEnd && hadTimers ) ) {
          +				jQuery.dequeue( this, type );
          +			}
          +		});
          +	}
          +
          +});
          +
          +// Animations created synchronously will run synchronously
          +function createFxNow() {
          +	setTimeout( clearFxNow, 0 );
          +	return ( fxNow = jQuery.now() );
          +}
          +
          +function clearFxNow() {
          +	fxNow = undefined;
          +}
          +
          +// Generate parameters to create a standard animation
          +function genFx( type, num ) {
          +	var obj = {};
          +
          +	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
          +		obj[ this ] = type;
          +	});
          +
          +	return obj;
          +}
          +
          +// Generate shortcuts for custom animations
          +jQuery.each({
          +	slideDown: genFx( "show", 1 ),
          +	slideUp: genFx( "hide", 1 ),
          +	slideToggle: genFx( "toggle", 1 ),
          +	fadeIn: { opacity: "show" },
          +	fadeOut: { opacity: "hide" },
          +	fadeToggle: { opacity: "toggle" }
          +}, function( name, props ) {
          +	jQuery.fn[ name ] = function( speed, easing, callback ) {
          +		return this.animate( props, speed, easing, callback );
          +	};
          +});
          +
          +jQuery.extend({
          +	speed: function( speed, easing, fn ) {
          +		var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
          +			complete: fn || !fn && easing ||
          +				jQuery.isFunction( speed ) && speed,
          +			duration: speed,
          +			easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
          +		};
          +
          +		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
          +			opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
          +
          +		// normalize opt.queue - true/undefined/null -> "fx"
          +		if ( opt.queue == null || opt.queue === true ) {
          +			opt.queue = "fx";
          +		}
          +
          +		// Queueing
          +		opt.old = opt.complete;
          +
          +		opt.complete = function( noUnmark ) {
          +			if ( jQuery.isFunction( opt.old ) ) {
          +				opt.old.call( this );
          +			}
          +
          +			if ( opt.queue ) {
          +				jQuery.dequeue( this, opt.queue );
          +			} else if ( noUnmark !== false ) {
          +				jQuery._unmark( this );
          +			}
          +		};
          +
          +		return opt;
          +	},
          +
          +	easing: {
          +		linear: function( p ) {
          +			return p;
          +		},
          +		swing: function( p ) {
          +			return ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;
          +		}
          +	},
          +
          +	timers: [],
          +
          +	fx: function( elem, options, prop ) {
          +		this.options = options;
          +		this.elem = elem;
          +		this.prop = prop;
          +
          +		options.orig = options.orig || {};
          +	}
          +
          +});
          +
          +jQuery.fx.prototype = {
          +	// Simple function for setting a style value
          +	update: function() {
          +		if ( this.options.step ) {
          +			this.options.step.call( this.elem, this.now, this );
          +		}
          +
          +		( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
          +	},
          +
          +	// Get the current size
          +	cur: function() {
          +		if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
          +			return this.elem[ this.prop ];
          +		}
          +
          +		var parsed,
          +			r = jQuery.css( this.elem, this.prop );
          +		// Empty strings, null, undefined and "auto" are converted to 0,
          +		// complex values such as "rotate(1rad)" are returned as is,
          +		// simple values such as "10px" are parsed to Float.
          +		return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
          +	},
          +
          +	// Start an animation from one number to another
          +	custom: function( from, to, unit ) {
          +		var self = this,
          +			fx = jQuery.fx;
          +
          +		this.startTime = fxNow || createFxNow();
          +		this.end = to;
          +		this.now = this.start = from;
          +		this.pos = this.state = 0;
          +		this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
          +
          +		function t( gotoEnd ) {
          +			return self.step( gotoEnd );
          +		}
          +
          +		t.queue = this.options.queue;
          +		t.elem = this.elem;
          +		t.saveState = function() {
          +			if ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
          +				if ( self.options.hide ) {
          +					jQuery._data( self.elem, "fxshow" + self.prop, self.start );
          +				} else if ( self.options.show ) {
          +					jQuery._data( self.elem, "fxshow" + self.prop, self.end );
          +				}
          +			}
          +		};
          +
          +		if ( t() && jQuery.timers.push(t) && !timerId ) {
          +			timerId = setInterval( fx.tick, fx.interval );
          +		}
          +	},
          +
          +	// Simple 'show' function
          +	show: function() {
          +		var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
          +
          +		// Remember where we started, so that we can go back to it later
          +		this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
          +		this.options.show = true;
          +
          +		// Begin the animation
          +		// Make sure that we start at a small width/height to avoid any flash of content
          +		if ( dataShow !== undefined ) {
          +			// This show is picking up where a previous hide or show left off
          +			this.custom( this.cur(), dataShow );
          +		} else {
          +			this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
          +		}
          +
          +		// Start by showing the element
          +		jQuery( this.elem ).show();
          +	},
          +
          +	// Simple 'hide' function
          +	hide: function() {
          +		// Remember where we started, so that we can go back to it later
          +		this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
          +		this.options.hide = true;
          +
          +		// Begin the animation
          +		this.custom( this.cur(), 0 );
          +	},
          +
          +	// Each step of an animation
          +	step: function( gotoEnd ) {
          +		var p, n, complete,
          +			t = fxNow || createFxNow(),
          +			done = true,
          +			elem = this.elem,
          +			options = this.options;
          +
          +		if ( gotoEnd || t >= options.duration + this.startTime ) {
          +			this.now = this.end;
          +			this.pos = this.state = 1;
          +			this.update();
          +
          +			options.animatedProperties[ this.prop ] = true;
          +
          +			for ( p in options.animatedProperties ) {
          +				if ( options.animatedProperties[ p ] !== true ) {
          +					done = false;
          +				}
          +			}
          +
          +			if ( done ) {
          +				// Reset the overflow
          +				if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
          +
          +					jQuery.each( [ "", "X", "Y" ], function( index, value ) {
          +						elem.style[ "overflow" + value ] = options.overflow[ index ];
          +					});
          +				}
          +
          +				// Hide the element if the "hide" operation was done
          +				if ( options.hide ) {
          +					jQuery( elem ).hide();
          +				}
          +
          +				// Reset the properties, if the item has been hidden or shown
          +				if ( options.hide || options.show ) {
          +					for ( p in options.animatedProperties ) {
          +						jQuery.style( elem, p, options.orig[ p ] );
          +						jQuery.removeData( elem, "fxshow" + p, true );
          +						// Toggle data is no longer needed
          +						jQuery.removeData( elem, "toggle" + p, true );
          +					}
          +				}
          +
          +				// Execute the complete function
          +				// in the event that the complete function throws an exception
          +				// we must ensure it won't be called twice. #5684
          +
          +				complete = options.complete;
          +				if ( complete ) {
          +
          +					options.complete = false;
          +					complete.call( elem );
          +				}
          +			}
          +
          +			return false;
          +
          +		} else {
          +			// classical easing cannot be used with an Infinity duration
          +			if ( options.duration == Infinity ) {
          +				this.now = t;
          +			} else {
          +				n = t - this.startTime;
          +				this.state = n / options.duration;
          +
          +				// Perform the easing function, defaults to swing
          +				this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
          +				this.now = this.start + ( (this.end - this.start) * this.pos );
          +			}
          +			// Perform the next step of the animation
          +			this.update();
          +		}
          +
          +		return true;
          +	}
          +};
          +
          +jQuery.extend( jQuery.fx, {
          +	tick: function() {
          +		var timer,
          +			timers = jQuery.timers,
          +			i = 0;
          +
          +		for ( ; i < timers.length; i++ ) {
          +			timer = timers[ i ];
          +			// Checks the timer has not already been removed
          +			if ( !timer() && timers[ i ] === timer ) {
          +				timers.splice( i--, 1 );
          +			}
          +		}
          +
          +		if ( !timers.length ) {
          +			jQuery.fx.stop();
          +		}
          +	},
          +
          +	interval: 13,
          +
          +	stop: function() {
          +		clearInterval( timerId );
          +		timerId = null;
          +	},
          +
          +	speeds: {
          +		slow: 600,
          +		fast: 200,
          +		// Default speed
          +		_default: 400
          +	},
          +
          +	step: {
          +		opacity: function( fx ) {
          +			jQuery.style( fx.elem, "opacity", fx.now );
          +		},
          +
          +		_default: function( fx ) {
          +			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
          +				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
          +			} else {
          +				fx.elem[ fx.prop ] = fx.now;
          +			}
          +		}
          +	}
          +});
          +
          +// Ensure props that can't be negative don't go there on undershoot easing
          +jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {
          +	// exclude marginTop, marginLeft, marginBottom and marginRight from this list
          +	if ( prop.indexOf( "margin" ) ) {
          +		jQuery.fx.step[ prop ] = function( fx ) {
          +			jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
          +		};
          +	}
          +});
          +
          +if ( jQuery.expr && jQuery.expr.filters ) {
          +	jQuery.expr.filters.animated = function( elem ) {
          +		return jQuery.grep(jQuery.timers, function( fn ) {
          +			return elem === fn.elem;
          +		}).length;
          +	};
          +}
          +
          +// Try to restore the default display value of an element
          +function defaultDisplay( nodeName ) {
          +
          +	if ( !elemdisplay[ nodeName ] ) {
          +
          +		var body = document.body,
          +			elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
          +			display = elem.css( "display" );
          +		elem.remove();
          +
          +		// If the simple way fails,
          +		// get element's real default display by attaching it to a temp iframe
          +		if ( display === "none" || display === "" ) {
          +			// No iframe to use yet, so create it
          +			if ( !iframe ) {
          +				iframe = document.createElement( "iframe" );
          +				iframe.frameBorder = iframe.width = iframe.height = 0;
          +			}
          +
          +			body.appendChild( iframe );
          +
          +			// Create a cacheable copy of the iframe document on first call.
          +			// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
          +			// document to it; WebKit & Firefox won't allow reusing the iframe document.
          +			if ( !iframeDoc || !iframe.createElement ) {
          +				iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
          +				iframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );
          +				iframeDoc.close();
          +			}
          +
          +			elem = iframeDoc.createElement( nodeName );
          +
          +			iframeDoc.body.appendChild( elem );
          +
          +			display = jQuery.css( elem, "display" );
          +			body.removeChild( iframe );
          +		}
          +
          +		// Store the correct default display
          +		elemdisplay[ nodeName ] = display;
          +	}
          +
          +	return elemdisplay[ nodeName ];
          +}
          +
          +
          +
          +
          +var getOffset,
          +	rtable = /^t(?:able|d|h)$/i,
          +	rroot = /^(?:body|html)$/i;
          +
          +if ( "getBoundingClientRect" in document.documentElement ) {
          +	getOffset = function( elem, doc, docElem, box ) {
          +		try {
          +			box = elem.getBoundingClientRect();
          +		} catch(e) {}
          +
          +		// Make sure we're not dealing with a disconnected DOM node
          +		if ( !box || !jQuery.contains( docElem, elem ) ) {
          +			return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
          +		}
          +
          +		var body = doc.body,
          +			win = getWindow( doc ),
          +			clientTop  = docElem.clientTop  || body.clientTop  || 0,
          +			clientLeft = docElem.clientLeft || body.clientLeft || 0,
          +			scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
          +			scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
          +			top  = box.top  + scrollTop  - clientTop,
          +			left = box.left + scrollLeft - clientLeft;
          +
          +		return { top: top, left: left };
          +	};
          +
          +} else {
          +	getOffset = function( elem, doc, docElem ) {
          +		var computedStyle,
          +			offsetParent = elem.offsetParent,
          +			prevOffsetParent = elem,
          +			body = doc.body,
          +			defaultView = doc.defaultView,
          +			prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
          +			top = elem.offsetTop,
          +			left = elem.offsetLeft;
          +
          +		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
          +			if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
          +				break;
          +			}
          +
          +			computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
          +			top  -= elem.scrollTop;
          +			left -= elem.scrollLeft;
          +
          +			if ( elem === offsetParent ) {
          +				top  += elem.offsetTop;
          +				left += elem.offsetLeft;
          +
          +				if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
          +					top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
          +					left += parseFloat( computedStyle.borderLeftWidth ) || 0;
          +				}
          +
          +				prevOffsetParent = offsetParent;
          +				offsetParent = elem.offsetParent;
          +			}
          +
          +			if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
          +				top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
          +				left += parseFloat( computedStyle.borderLeftWidth ) || 0;
          +			}
          +
          +			prevComputedStyle = computedStyle;
          +		}
          +
          +		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
          +			top  += body.offsetTop;
          +			left += body.offsetLeft;
          +		}
          +
          +		if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
          +			top  += Math.max( docElem.scrollTop, body.scrollTop );
          +			left += Math.max( docElem.scrollLeft, body.scrollLeft );
          +		}
          +
          +		return { top: top, left: left };
          +	};
          +}
          +
          +jQuery.fn.offset = function( options ) {
          +	if ( arguments.length ) {
          +		return options === undefined ?
          +			this :
          +			this.each(function( i ) {
          +				jQuery.offset.setOffset( this, options, i );
          +			});
          +	}
          +
          +	var elem = this[0],
          +		doc = elem && elem.ownerDocument;
          +
          +	if ( !doc ) {
          +		return null;
          +	}
          +
          +	if ( elem === doc.body ) {
          +		return jQuery.offset.bodyOffset( elem );
          +	}
          +
          +	return getOffset( elem, doc, doc.documentElement );
          +};
          +
          +jQuery.offset = {
          +
          +	bodyOffset: function( body ) {
          +		var top = body.offsetTop,
          +			left = body.offsetLeft;
          +
          +		if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
          +			top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
          +			left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
          +		}
          +
          +		return { top: top, left: left };
          +	},
          +
          +	setOffset: function( elem, options, i ) {
          +		var position = jQuery.css( elem, "position" );
          +
          +		// set position first, in-case top/left are set even on static elem
          +		if ( position === "static" ) {
          +			elem.style.position = "relative";
          +		}
          +
          +		var curElem = jQuery( elem ),
          +			curOffset = curElem.offset(),
          +			curCSSTop = jQuery.css( elem, "top" ),
          +			curCSSLeft = jQuery.css( elem, "left" ),
          +			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
          +			props = {}, curPosition = {}, curTop, curLeft;
          +
          +		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
          +		if ( calculatePosition ) {
          +			curPosition = curElem.position();
          +			curTop = curPosition.top;
          +			curLeft = curPosition.left;
          +		} else {
          +			curTop = parseFloat( curCSSTop ) || 0;
          +			curLeft = parseFloat( curCSSLeft ) || 0;
          +		}
          +
          +		if ( jQuery.isFunction( options ) ) {
          +			options = options.call( elem, i, curOffset );
          +		}
          +
          +		if ( options.top != null ) {
          +			props.top = ( options.top - curOffset.top ) + curTop;
          +		}
          +		if ( options.left != null ) {
          +			props.left = ( options.left - curOffset.left ) + curLeft;
          +		}
          +
          +		if ( "using" in options ) {
          +			options.using.call( elem, props );
          +		} else {
          +			curElem.css( props );
          +		}
          +	}
          +};
          +
          +
          +jQuery.fn.extend({
          +
          +	position: function() {
          +		if ( !this[0] ) {
          +			return null;
          +		}
          +
          +		var elem = this[0],
          +
          +		// Get *real* offsetParent
          +		offsetParent = this.offsetParent(),
          +
          +		// Get correct offsets
          +		offset       = this.offset(),
          +		parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
          +
          +		// Subtract element margins
          +		// note: when an element has margin: auto the offsetLeft and marginLeft
          +		// are the same in Safari causing offset.left to incorrectly be 0
          +		offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
          +		offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
          +
          +		// Add offsetParent borders
          +		parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
          +		parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
          +
          +		// Subtract the two offsets
          +		return {
          +			top:  offset.top  - parentOffset.top,
          +			left: offset.left - parentOffset.left
          +		};
          +	},
          +
          +	offsetParent: function() {
          +		return this.map(function() {
          +			var offsetParent = this.offsetParent || document.body;
          +			while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
          +				offsetParent = offsetParent.offsetParent;
          +			}
          +			return offsetParent;
          +		});
          +	}
          +});
          +
          +
          +// Create scrollLeft and scrollTop methods
          +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
          +	var top = /Y/.test( prop );
          +
          +	jQuery.fn[ method ] = function( val ) {
          +		return jQuery.access( this, function( elem, method, val ) {
          +			var win = getWindow( elem );
          +
          +			if ( val === undefined ) {
          +				return win ? (prop in win) ? win[ prop ] :
          +					jQuery.support.boxModel && win.document.documentElement[ method ] ||
          +						win.document.body[ method ] :
          +					elem[ method ];
          +			}
          +
          +			if ( win ) {
          +				win.scrollTo(
          +					!top ? val : jQuery( win ).scrollLeft(),
          +					 top ? val : jQuery( win ).scrollTop()
          +				);
          +
          +			} else {
          +				elem[ method ] = val;
          +			}
          +		}, method, val, arguments.length, null );
          +	};
          +});
          +
          +function getWindow( elem ) {
          +	return jQuery.isWindow( elem ) ?
          +		elem :
          +		elem.nodeType === 9 ?
          +			elem.defaultView || elem.parentWindow :
          +			false;
          +}
          +
          +
          +
          +
          +// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
          +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
          +	var clientProp = "client" + name,
          +		scrollProp = "scroll" + name,
          +		offsetProp = "offset" + name;
          +
          +	// innerHeight and innerWidth
          +	jQuery.fn[ "inner" + name ] = function() {
          +		var elem = this[0];
          +		return elem ?
          +			elem.style ?
          +			parseFloat( jQuery.css( elem, type, "padding" ) ) :
          +			this[ type ]() :
          +			null;
          +	};
          +
          +	// outerHeight and outerWidth
          +	jQuery.fn[ "outer" + name ] = function( margin ) {
          +		var elem = this[0];
          +		return elem ?
          +			elem.style ?
          +			parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
          +			this[ type ]() :
          +			null;
          +	};
          +
          +	jQuery.fn[ type ] = function( value ) {
          +		return jQuery.access( this, function( elem, type, value ) {
          +			var doc, docElemProp, orig, ret;
          +
          +			if ( jQuery.isWindow( elem ) ) {
          +				// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
          +				doc = elem.document;
          +				docElemProp = doc.documentElement[ clientProp ];
          +				return jQuery.support.boxModel && docElemProp ||
          +					doc.body && doc.body[ clientProp ] || docElemProp;
          +			}
          +
          +			// Get document width or height
          +			if ( elem.nodeType === 9 ) {
          +				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
          +				doc = elem.documentElement;
          +
          +				// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]
          +				// so we can't use max, as it'll choose the incorrect offset[Width/Height]
          +				// instead we use the correct client[Width/Height]
          +				// support:IE6
          +				if ( doc[ clientProp ] >= doc[ scrollProp ] ) {
          +					return doc[ clientProp ];
          +				}
          +
          +				return Math.max(
          +					elem.body[ scrollProp ], doc[ scrollProp ],
          +					elem.body[ offsetProp ], doc[ offsetProp ]
          +				);
          +			}
          +
          +			// Get width or height on the element
          +			if ( value === undefined ) {
          +				orig = jQuery.css( elem, type );
          +				ret = parseFloat( orig );
          +				return jQuery.isNumeric( ret ) ? ret : orig;
          +			}
          +
          +			// Set the width or height on the element
          +			jQuery( elem ).css( type, value );
          +		}, type, value, arguments.length, null );
          +	};
          +});
          +
          +
          +
          +
          +// Expose jQuery to the global object
          +window.jQuery = window.$ = jQuery;
          +
          +// Expose jQuery as an AMD module, but only for AMD loaders that
          +// understand the issues with loading multiple versions of jQuery
          +// in a page that all might call define(). The loader will indicate
          +// they have special allowances for multiple jQuery versions by
          +// specifying define.amd.jQuery = true. Register as a named module,
          +// since jQuery can be concatenated with other files that may use define,
          +// but not use a proper concatenation script that understands anonymous
          +// AMD modules. A named AMD is safest and most robust way to register.
          +// Lowercase jquery is used because AMD module names are derived from
          +// file names, and jQuery is normally delivered in a lowercase file name.
          +// Do this after creating the global so that if an AMD module wants to call
          +// noConflict to hide this version of jQuery, it will work.
          +if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
          +	define( "jquery", [], function () { return jQuery; } );
          +}
          +
          +
          +
          +})( window );
          diff --git a/public/theme/select2/tests/vendor/qunit-1.23.1.css b/public/theme/select2/tests/vendor/qunit-1.23.1.css
          new file mode 100644
          index 0000000..ae68fc4
          --- /dev/null
          +++ b/public/theme/select2/tests/vendor/qunit-1.23.1.css
          @@ -0,0 +1,305 @@
          +/*!
          + * QUnit 1.23.1
          + * https://qunitjs.com/
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * https://jquery.org/license
          + *
          + * Date: 2016-04-12T17:29Z
          + */
          +
          +/** Font Family and Sizes */
          +
          +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
          +	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
          +}
          +
          +#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
          +#qunit-tests { font-size: smaller; }
          +
          +
          +/** Resets */
          +
          +#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
          +	margin: 0;
          +	padding: 0;
          +}
          +
          +
          +/** Header */
          +
          +#qunit-header {
          +	padding: 0.5em 0 0.5em 1em;
          +
          +	color: #8699A4;
          +	background-color: #0D3349;
          +
          +	font-size: 1.5em;
          +	line-height: 1em;
          +	font-weight: 400;
          +
          +	border-radius: 5px 5px 0 0;
          +}
          +
          +#qunit-header a {
          +	text-decoration: none;
          +	color: #C2CCD1;
          +}
          +
          +#qunit-header a:hover,
          +#qunit-header a:focus {
          +	color: #FFF;
          +}
          +
          +#qunit-testrunner-toolbar label {
          +	display: inline-block;
          +	padding: 0 0.5em 0 0.1em;
          +}
          +
          +#qunit-banner {
          +	height: 5px;
          +}
          +
          +#qunit-testrunner-toolbar {
          +	padding: 0.5em 1em 0.5em 1em;
          +	color: #5E740B;
          +	background-color: #EEE;
          +	overflow: hidden;
          +}
          +
          +#qunit-filteredTest {
          +	padding: 0.5em 1em 0.5em 1em;
          +	background-color: #F4FF77;
          +	color: #366097;
          +}
          +
          +#qunit-userAgent {
          +	padding: 0.5em 1em 0.5em 1em;
          +	background-color: #2B81AF;
          +	color: #FFF;
          +	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
          +}
          +
          +#qunit-modulefilter-container {
          +	float: right;
          +	padding: 0.2em;
          +}
          +
          +.qunit-url-config {
          +	display: inline-block;
          +	padding: 0.1em;
          +}
          +
          +.qunit-filter {
          +	display: block;
          +	float: right;
          +	margin-left: 1em;
          +}
          +
          +/** Tests: Pass/Fail */
          +
          +#qunit-tests {
          +	list-style-position: inside;
          +}
          +
          +#qunit-tests li {
          +	padding: 0.4em 1em 0.4em 1em;
          +	border-bottom: 1px solid #FFF;
          +	list-style-position: inside;
          +}
          +
          +#qunit-tests > li {
          +	display: none;
          +}
          +
          +#qunit-tests li.running,
          +#qunit-tests li.pass,
          +#qunit-tests li.fail,
          +#qunit-tests li.skipped {
          +	display: list-item;
          +}
          +
          +#qunit-tests.hidepass {
          +	position: relative;
          +}
          +
          +#qunit-tests.hidepass li.running,
          +#qunit-tests.hidepass li.pass {
          +	visibility: hidden;
          +	position: absolute;
          +	width:   0;
          +	height:  0;
          +	padding: 0;
          +	border:  0;
          +	margin:  0;
          +}
          +
          +#qunit-tests li strong {
          +	cursor: pointer;
          +}
          +
          +#qunit-tests li.skipped strong {
          +	cursor: default;
          +}
          +
          +#qunit-tests li a {
          +	padding: 0.5em;
          +	color: #C2CCD1;
          +	text-decoration: none;
          +}
          +
          +#qunit-tests li p a {
          +	padding: 0.25em;
          +	color: #6B6464;
          +}
          +#qunit-tests li a:hover,
          +#qunit-tests li a:focus {
          +	color: #000;
          +}
          +
          +#qunit-tests li .runtime {
          +	float: right;
          +	font-size: smaller;
          +}
          +
          +.qunit-assert-list {
          +	margin-top: 0.5em;
          +	padding: 0.5em;
          +
          +	background-color: #FFF;
          +
          +	border-radius: 5px;
          +}
          +
          +.qunit-source {
          +	margin: 0.6em 0 0.3em;
          +}
          +
          +.qunit-collapsed {
          +	display: none;
          +}
          +
          +#qunit-tests table {
          +	border-collapse: collapse;
          +	margin-top: 0.2em;
          +}
          +
          +#qunit-tests th {
          +	text-align: right;
          +	vertical-align: top;
          +	padding: 0 0.5em 0 0;
          +}
          +
          +#qunit-tests td {
          +	vertical-align: top;
          +}
          +
          +#qunit-tests pre {
          +	margin: 0;
          +	white-space: pre-wrap;
          +	word-wrap: break-word;
          +}
          +
          +#qunit-tests del {
          +	background-color: #E0F2BE;
          +	color: #374E0C;
          +	text-decoration: none;
          +}
          +
          +#qunit-tests ins {
          +	background-color: #FFCACA;
          +	color: #500;
          +	text-decoration: none;
          +}
          +
          +/*** Test Counts */
          +
          +#qunit-tests b.counts                       { color: #000; }
          +#qunit-tests b.passed                       { color: #5E740B; }
          +#qunit-tests b.failed                       { color: #710909; }
          +
          +#qunit-tests li li {
          +	padding: 5px;
          +	background-color: #FFF;
          +	border-bottom: none;
          +	list-style-position: inside;
          +}
          +
          +/*** Passing Styles */
          +
          +#qunit-tests li li.pass {
          +	color: #3C510C;
          +	background-color: #FFF;
          +	border-left: 10px solid #C6E746;
          +}
          +
          +#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
          +#qunit-tests .pass .test-name               { color: #366097; }
          +
          +#qunit-tests .pass .test-actual,
          +#qunit-tests .pass .test-expected           { color: #999; }
          +
          +#qunit-banner.qunit-pass                    { background-color: #C6E746; }
          +
          +/*** Failing Styles */
          +
          +#qunit-tests li li.fail {
          +	color: #710909;
          +	background-color: #FFF;
          +	border-left: 10px solid #EE5757;
          +	white-space: pre;
          +}
          +
          +#qunit-tests > li:last-child {
          +	border-radius: 0 0 5px 5px;
          +}
          +
          +#qunit-tests .fail                          { color: #000; background-color: #EE5757; }
          +#qunit-tests .fail .test-name,
          +#qunit-tests .fail .module-name             { color: #000; }
          +
          +#qunit-tests .fail .test-actual             { color: #EE5757; }
          +#qunit-tests .fail .test-expected           { color: #008000; }
          +
          +#qunit-banner.qunit-fail                    { background-color: #EE5757; }
          +
          +/*** Skipped tests */
          +
          +#qunit-tests .skipped {
          +	background-color: #EBECE9;
          +}
          +
          +#qunit-tests .qunit-skipped-label {
          +	background-color: #F4FF77;
          +	display: inline-block;
          +	font-style: normal;
          +	color: #366097;
          +	line-height: 1.8em;
          +	padding: 0 0.5em;
          +	margin: -0.4em 0.4em -0.4em 0;
          +}
          +
          +/** Result */
          +
          +#qunit-testresult {
          +	padding: 0.5em 1em 0.5em 1em;
          +
          +	color: #2B81AF;
          +	background-color: #D2E0E6;
          +
          +	border-bottom: 1px solid #FFF;
          +}
          +#qunit-testresult .module-name {
          +	font-weight: 700;
          +}
          +
          +/** Fixture */
          +
          +#qunit-fixture {
          +	position: absolute;
          +	top: -10000px;
          +	left: -10000px;
          +	width: 1000px;
          +	height: 1000px;
          +}
          diff --git a/public/theme/select2/tests/vendor/qunit-1.23.1.js b/public/theme/select2/tests/vendor/qunit-1.23.1.js
          new file mode 100644
          index 0000000..5df0822
          --- /dev/null
          +++ b/public/theme/select2/tests/vendor/qunit-1.23.1.js
          @@ -0,0 +1,4334 @@
          +/*!
          + * QUnit 1.23.1
          + * https://qunitjs.com/
          + *
          + * Copyright jQuery Foundation and other contributors
          + * Released under the MIT license
          + * https://jquery.org/license
          + *
          + * Date: 2016-04-12T17:29Z
          + */
          +
          +( function( global ) {
          +
          +var QUnit = {};
          +
          +var Date = global.Date;
          +var now = Date.now || function() {
          +	return new Date().getTime();
          +};
          +
          +var setTimeout = global.setTimeout;
          +var clearTimeout = global.clearTimeout;
          +
          +// Store a local window from the global to allow direct references.
          +var window = global.window;
          +
          +var defined = {
          +	document: window && window.document !== undefined,
          +	setTimeout: setTimeout !== undefined,
          +	sessionStorage: ( function() {
          +		var x = "qunit-test-string";
          +		try {
          +			sessionStorage.setItem( x, x );
          +			sessionStorage.removeItem( x );
          +			return true;
          +		} catch ( e ) {
          +			return false;
          +		}
          +	}() )
          +};
          +
          +var fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" );
          +var globalStartCalled = false;
          +var runStarted = false;
          +
          +var toString = Object.prototype.toString,
          +	hasOwn = Object.prototype.hasOwnProperty;
          +
          +// Returns a new Array with the elements that are in a but not in b
          +function diff( a, b ) {
          +	var i, j,
          +		result = a.slice();
          +
          +	for ( i = 0; i < result.length; i++ ) {
          +		for ( j = 0; j < b.length; j++ ) {
          +			if ( result[ i ] === b[ j ] ) {
          +				result.splice( i, 1 );
          +				i--;
          +				break;
          +			}
          +		}
          +	}
          +	return result;
          +}
          +
          +// From jquery.js
          +function inArray( elem, array ) {
          +	if ( array.indexOf ) {
          +		return array.indexOf( elem );
          +	}
          +
          +	for ( var i = 0, length = array.length; i < length; i++ ) {
          +		if ( array[ i ] === elem ) {
          +			return i;
          +		}
          +	}
          +
          +	return -1;
          +}
          +
          +/**
          + * Makes a clone of an object using only Array or Object as base,
          + * and copies over the own enumerable properties.
          + *
          + * @param {Object} obj
          + * @return {Object} New object with only the own properties (recursively).
          + */
          +function objectValues ( obj ) {
          +	var key, val,
          +		vals = QUnit.is( "array", obj ) ? [] : {};
          +	for ( key in obj ) {
          +		if ( hasOwn.call( obj, key ) ) {
          +			val = obj[ key ];
          +			vals[ key ] = val === Object( val ) ? objectValues( val ) : val;
          +		}
          +	}
          +	return vals;
          +}
          +
          +function extend( a, b, undefOnly ) {
          +	for ( var prop in b ) {
          +		if ( hasOwn.call( b, prop ) ) {
          +
          +			// Avoid "Member not found" error in IE8 caused by messing with window.constructor
          +			// This block runs on every environment, so `global` is being used instead of `window`
          +			// to avoid errors on node.
          +			if ( prop !== "constructor" || a !== global ) {
          +				if ( b[ prop ] === undefined ) {
          +					delete a[ prop ];
          +				} else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) {
          +					a[ prop ] = b[ prop ];
          +				}
          +			}
          +		}
          +	}
          +
          +	return a;
          +}
          +
          +function objectType( obj ) {
          +	if ( typeof obj === "undefined" ) {
          +		return "undefined";
          +	}
          +
          +	// Consider: typeof null === object
          +	if ( obj === null ) {
          +		return "null";
          +	}
          +
          +	var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ),
          +		type = match && match[ 1 ];
          +
          +	switch ( type ) {
          +		case "Number":
          +			if ( isNaN( obj ) ) {
          +				return "nan";
          +			}
          +			return "number";
          +		case "String":
          +		case "Boolean":
          +		case "Array":
          +		case "Set":
          +		case "Map":
          +		case "Date":
          +		case "RegExp":
          +		case "Function":
          +		case "Symbol":
          +			return type.toLowerCase();
          +	}
          +	if ( typeof obj === "object" ) {
          +		return "object";
          +	}
          +}
          +
          +// Safe object type checking
          +function is( type, obj ) {
          +	return QUnit.objectType( obj ) === type;
          +}
          +
          +// Doesn't support IE6 to IE9, it will return undefined on these browsers
          +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
          +function extractStacktrace( e, offset ) {
          +	offset = offset === undefined ? 4 : offset;
          +
          +	var stack, include, i;
          +
          +	if ( e.stack ) {
          +		stack = e.stack.split( "\n" );
          +		if ( /^error$/i.test( stack[ 0 ] ) ) {
          +			stack.shift();
          +		}
          +		if ( fileName ) {
          +			include = [];
          +			for ( i = offset; i < stack.length; i++ ) {
          +				if ( stack[ i ].indexOf( fileName ) !== -1 ) {
          +					break;
          +				}
          +				include.push( stack[ i ] );
          +			}
          +			if ( include.length ) {
          +				return include.join( "\n" );
          +			}
          +		}
          +		return stack[ offset ];
          +
          +	// Support: Safari <=6 only
          +	} else if ( e.sourceURL ) {
          +
          +		// Exclude useless self-reference for generated Error objects
          +		if ( /qunit.js$/.test( e.sourceURL ) ) {
          +			return;
          +		}
          +
          +		// For actual exceptions, this is useful
          +		return e.sourceURL + ":" + e.line;
          +	}
          +}
          +
          +function sourceFromStacktrace( offset ) {
          +	var error = new Error();
          +
          +	// Support: Safari <=7 only, IE <=10 - 11 only
          +	// Not all browsers generate the `stack` property for `new Error()`, see also #636
          +	if ( !error.stack ) {
          +		try {
          +			throw error;
          +		} catch ( err ) {
          +			error = err;
          +		}
          +	}
          +
          +	return extractStacktrace( error, offset );
          +}
          +
          +/**
          + * Config object: Maintain internal state
          + * Later exposed as QUnit.config
          + * `config` initialized at top of scope
          + */
          +var config = {
          +
          +	// The queue of tests to run
          +	queue: [],
          +
          +	// Block until document ready
          +	blocking: true,
          +
          +	// By default, run previously failed tests first
          +	// very useful in combination with "Hide passed tests" checked
          +	reorder: true,
          +
          +	// By default, modify document.title when suite is done
          +	altertitle: true,
          +
          +	// HTML Reporter: collapse every test except the first failing test
          +	// If false, all failing tests will be expanded
          +	collapse: true,
          +
          +	// By default, scroll to top of the page when suite is done
          +	scrolltop: true,
          +
          +	// Depth up-to which object will be dumped
          +	maxDepth: 5,
          +
          +	// When enabled, all tests must call expect()
          +	requireExpects: false,
          +
          +	// Placeholder for user-configurable form-exposed URL parameters
          +	urlConfig: [],
          +
          +	// Set of all modules.
          +	modules: [],
          +
          +	// Stack of nested modules
          +	moduleStack: [],
          +
          +	// The first unnamed module
          +	currentModule: {
          +		name: "",
          +		tests: []
          +	},
          +
          +	callbacks: {}
          +};
          +
          +// Push a loose unnamed module to the modules collection
          +config.modules.push( config.currentModule );
          +
          +var loggingCallbacks = {};
          +
          +// Register logging callbacks
          +function registerLoggingCallbacks( obj ) {
          +	var i, l, key,
          +		callbackNames = [ "begin", "done", "log", "testStart", "testDone",
          +			"moduleStart", "moduleDone" ];
          +
          +	function registerLoggingCallback( key ) {
          +		var loggingCallback = function( callback ) {
          +			if ( objectType( callback ) !== "function" ) {
          +				throw new Error(
          +					"QUnit logging methods require a callback function as their first parameters."
          +				);
          +			}
          +
          +			config.callbacks[ key ].push( callback );
          +		};
          +
          +		// DEPRECATED: This will be removed on QUnit 2.0.0+
          +		// Stores the registered functions allowing restoring
          +		// at verifyLoggingCallbacks() if modified
          +		loggingCallbacks[ key ] = loggingCallback;
          +
          +		return loggingCallback;
          +	}
          +
          +	for ( i = 0, l = callbackNames.length; i < l; i++ ) {
          +		key = callbackNames[ i ];
          +
          +		// Initialize key collection of logging callback
          +		if ( objectType( config.callbacks[ key ] ) === "undefined" ) {
          +			config.callbacks[ key ] = [];
          +		}
          +
          +		obj[ key ] = registerLoggingCallback( key );
          +	}
          +}
          +
          +function runLoggingCallbacks( key, args ) {
          +	var i, l, callbacks;
          +
          +	callbacks = config.callbacks[ key ];
          +	for ( i = 0, l = callbacks.length; i < l; i++ ) {
          +		callbacks[ i ]( args );
          +	}
          +}
          +
          +// DEPRECATED: This will be removed on 2.0.0+
          +// This function verifies if the loggingCallbacks were modified by the user
          +// If so, it will restore it, assign the given callback and print a console warning
          +function verifyLoggingCallbacks() {
          +	var loggingCallback, userCallback;
          +
          +	for ( loggingCallback in loggingCallbacks ) {
          +		if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) {
          +
          +			userCallback = QUnit[ loggingCallback ];
          +
          +			// Restore the callback function
          +			QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ];
          +
          +			// Assign the deprecated given callback
          +			QUnit[ loggingCallback ]( userCallback );
          +
          +			if ( global.console && global.console.warn ) {
          +				global.console.warn(
          +					"QUnit." + loggingCallback + " was replaced with a new value.\n" +
          +					"Please, check out the documentation on how to apply logging callbacks.\n" +
          +					"Reference: https://api.qunitjs.com/category/callbacks/"
          +				);
          +			}
          +		}
          +	}
          +}
          +
          +( function() {
          +	if ( !defined.document ) {
          +		return;
          +	}
          +
          +	// `onErrorFnPrev` initialized at top of scope
          +	// Preserve other handlers
          +	var onErrorFnPrev = window.onerror;
          +
          +	// Cover uncaught exceptions
          +	// Returning true will suppress the default browser handler,
          +	// returning false will let it run.
          +	window.onerror = function( error, filePath, linerNr ) {
          +		var ret = false;
          +		if ( onErrorFnPrev ) {
          +			ret = onErrorFnPrev( error, filePath, linerNr );
          +		}
          +
          +		// Treat return value as window.onerror itself does,
          +		// Only do our handling if not suppressed.
          +		if ( ret !== true ) {
          +			if ( QUnit.config.current ) {
          +				if ( QUnit.config.current.ignoreGlobalErrors ) {
          +					return true;
          +				}
          +				QUnit.pushFailure( error, filePath + ":" + linerNr );
          +			} else {
          +				QUnit.test( "global failure", extend( function() {
          +					QUnit.pushFailure( error, filePath + ":" + linerNr );
          +				}, { validTest: true } ) );
          +			}
          +			return false;
          +		}
          +
          +		return ret;
          +	};
          +}() );
          +
          +// Figure out if we're running the tests from a server or not
          +QUnit.isLocal = !( defined.document && window.location.protocol !== "file:" );
          +
          +// Expose the current QUnit version
          +QUnit.version = "1.23.1";
          +
          +extend( QUnit, {
          +
          +	// Call on start of module test to prepend name to all tests
          +	module: function( name, testEnvironment, executeNow ) {
          +		var module, moduleFns;
          +		var currentModule = config.currentModule;
          +
          +		if ( arguments.length === 2 ) {
          +			if ( objectType( testEnvironment ) === "function" ) {
          +				executeNow = testEnvironment;
          +				testEnvironment = undefined;
          +			}
          +		}
          +
          +		// DEPRECATED: handles setup/teardown functions,
          +		// beforeEach and afterEach should be used instead
          +		if ( testEnvironment && testEnvironment.setup ) {
          +			testEnvironment.beforeEach = testEnvironment.setup;
          +			delete testEnvironment.setup;
          +		}
          +		if ( testEnvironment && testEnvironment.teardown ) {
          +			testEnvironment.afterEach = testEnvironment.teardown;
          +			delete testEnvironment.teardown;
          +		}
          +
          +		module = createModule();
          +
          +		moduleFns = {
          +			beforeEach: setHook( module, "beforeEach" ),
          +			afterEach: setHook( module, "afterEach" )
          +		};
          +
          +		if ( objectType( executeNow ) === "function" ) {
          +			config.moduleStack.push( module );
          +			setCurrentModule( module );
          +			executeNow.call( module.testEnvironment, moduleFns );
          +			config.moduleStack.pop();
          +			module = module.parentModule || currentModule;
          +		}
          +
          +		setCurrentModule( module );
          +
          +		function createModule() {
          +			var parentModule = config.moduleStack.length ?
          +				config.moduleStack.slice( -1 )[ 0 ] : null;
          +			var moduleName = parentModule !== null ?
          +				[ parentModule.name, name ].join( " > " ) : name;
          +			var module = {
          +				name: moduleName,
          +				parentModule: parentModule,
          +				tests: [],
          +				moduleId: generateHash( moduleName )
          +			};
          +
          +			var env = {};
          +			if ( parentModule ) {
          +				extend( env, parentModule.testEnvironment );
          +				delete env.beforeEach;
          +				delete env.afterEach;
          +			}
          +			extend( env, testEnvironment );
          +			module.testEnvironment = env;
          +
          +			config.modules.push( module );
          +			return module;
          +		}
          +
          +		function setCurrentModule( module ) {
          +			config.currentModule = module;
          +		}
          +
          +	},
          +
          +	// DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0.
          +	asyncTest: asyncTest,
          +
          +	test: test,
          +
          +	skip: skip,
          +
          +	only: only,
          +
          +	// DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0.
          +	// In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior.
          +	start: function( count ) {
          +		var globalStartAlreadyCalled = globalStartCalled;
          +
          +		if ( !config.current ) {
          +			globalStartCalled = true;
          +
          +			if ( runStarted ) {
          +				throw new Error( "Called start() outside of a test context while already started" );
          +			} else if ( globalStartAlreadyCalled || count > 1 ) {
          +				throw new Error( "Called start() outside of a test context too many times" );
          +			} else if ( config.autostart ) {
          +				throw new Error( "Called start() outside of a test context when " +
          +					"QUnit.config.autostart was true" );
          +			} else if ( !config.pageLoaded ) {
          +
          +				// The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it
          +				config.autostart = true;
          +				return;
          +			}
          +		} else {
          +
          +			// If a test is running, adjust its semaphore
          +			config.current.semaphore -= count || 1;
          +
          +			// If semaphore is non-numeric, throw error
          +			if ( isNaN( config.current.semaphore ) ) {
          +				config.current.semaphore = 0;
          +
          +				QUnit.pushFailure(
          +					"Called start() with a non-numeric decrement.",
          +					sourceFromStacktrace( 2 )
          +				);
          +				return;
          +			}
          +
          +			// Don't start until equal number of stop-calls
          +			if ( config.current.semaphore > 0 ) {
          +				return;
          +			}
          +
          +			// Throw an Error if start is called more often than stop
          +			if ( config.current.semaphore < 0 ) {
          +				config.current.semaphore = 0;
          +
          +				QUnit.pushFailure(
          +					"Called start() while already started (test's semaphore was 0 already)",
          +					sourceFromStacktrace( 2 )
          +				);
          +				return;
          +			}
          +		}
          +
          +		resumeProcessing();
          +	},
          +
          +	// DEPRECATED: QUnit.stop() will be removed in QUnit 2.0.
          +	stop: function( count ) {
          +
          +		// If there isn't a test running, don't allow QUnit.stop() to be called
          +		if ( !config.current ) {
          +			throw new Error( "Called stop() outside of a test context" );
          +		}
          +
          +		// If a test is running, adjust its semaphore
          +		config.current.semaphore += count || 1;
          +
          +		pauseProcessing();
          +	},
          +
          +	config: config,
          +
          +	is: is,
          +
          +	objectType: objectType,
          +
          +	extend: extend,
          +
          +	load: function() {
          +		config.pageLoaded = true;
          +
          +		// Initialize the configuration options
          +		extend( config, {
          +			stats: { all: 0, bad: 0 },
          +			moduleStats: { all: 0, bad: 0 },
          +			started: 0,
          +			updateRate: 1000,
          +			autostart: true,
          +			filter: ""
          +		}, true );
          +
          +		config.blocking = false;
          +
          +		if ( config.autostart ) {
          +			resumeProcessing();
          +		}
          +	},
          +
          +	stack: function( offset ) {
          +		offset = ( offset || 0 ) + 2;
          +		return sourceFromStacktrace( offset );
          +	}
          +} );
          +
          +registerLoggingCallbacks( QUnit );
          +
          +function begin() {
          +	var i, l,
          +		modulesLog = [];
          +
          +	// If the test run hasn't officially begun yet
          +	if ( !config.started ) {
          +
          +		// Record the time of the test run's beginning
          +		config.started = now();
          +
          +		verifyLoggingCallbacks();
          +
          +		// Delete the loose unnamed module if unused.
          +		if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) {
          +			config.modules.shift();
          +		}
          +
          +		// Avoid unnecessary information by not logging modules' test environments
          +		for ( i = 0, l = config.modules.length; i < l; i++ ) {
          +			modulesLog.push( {
          +				name: config.modules[ i ].name,
          +				tests: config.modules[ i ].tests
          +			} );
          +		}
          +
          +		// The test run is officially beginning now
          +		runLoggingCallbacks( "begin", {
          +			totalTests: Test.count,
          +			modules: modulesLog
          +		} );
          +	}
          +
          +	config.blocking = false;
          +	process( true );
          +}
          +
          +function process( last ) {
          +	function next() {
          +		process( last );
          +	}
          +	var start = now();
          +	config.depth = ( config.depth || 0 ) + 1;
          +
          +	while ( config.queue.length && !config.blocking ) {
          +		if ( !defined.setTimeout || config.updateRate <= 0 ||
          +				( ( now() - start ) < config.updateRate ) ) {
          +			if ( config.current ) {
          +
          +				// Reset async tracking for each phase of the Test lifecycle
          +				config.current.usedAsync = false;
          +			}
          +			config.queue.shift()();
          +		} else {
          +			setTimeout( next, 13 );
          +			break;
          +		}
          +	}
          +	config.depth--;
          +	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
          +		done();
          +	}
          +}
          +
          +function pauseProcessing() {
          +	config.blocking = true;
          +
          +	if ( config.testTimeout && defined.setTimeout ) {
          +		clearTimeout( config.timeout );
          +		config.timeout = setTimeout( function() {
          +			if ( config.current ) {
          +				config.current.semaphore = 0;
          +				QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) );
          +			} else {
          +				throw new Error( "Test timed out" );
          +			}
          +			resumeProcessing();
          +		}, config.testTimeout );
          +	}
          +}
          +
          +function resumeProcessing() {
          +	runStarted = true;
          +
          +	// A slight delay to allow this iteration of the event loop to finish (more assertions, etc.)
          +	if ( defined.setTimeout ) {
          +		setTimeout( function() {
          +			if ( config.current && config.current.semaphore > 0 ) {
          +				return;
          +			}
          +			if ( config.timeout ) {
          +				clearTimeout( config.timeout );
          +			}
          +
          +			begin();
          +		}, 13 );
          +	} else {
          +		begin();
          +	}
          +}
          +
          +function done() {
          +	var runtime, passed;
          +
          +	config.autorun = true;
          +
          +	// Log the last module results
          +	if ( config.previousModule ) {
          +		runLoggingCallbacks( "moduleDone", {
          +			name: config.previousModule.name,
          +			tests: config.previousModule.tests,
          +			failed: config.moduleStats.bad,
          +			passed: config.moduleStats.all - config.moduleStats.bad,
          +			total: config.moduleStats.all,
          +			runtime: now() - config.moduleStats.started
          +		} );
          +	}
          +	delete config.previousModule;
          +
          +	runtime = now() - config.started;
          +	passed = config.stats.all - config.stats.bad;
          +
          +	runLoggingCallbacks( "done", {
          +		failed: config.stats.bad,
          +		passed: passed,
          +		total: config.stats.all,
          +		runtime: runtime
          +	} );
          +}
          +
          +function setHook( module, hookName ) {
          +	if ( module.testEnvironment === undefined ) {
          +		module.testEnvironment = {};
          +	}
          +
          +	return function( callback ) {
          +		module.testEnvironment[ hookName ] = callback;
          +	};
          +}
          +
          +var focused = false;
          +var priorityCount = 0;
          +var unitSampler;
          +
          +function Test( settings ) {
          +	var i, l;
          +
          +	++Test.count;
          +
          +	extend( this, settings );
          +	this.assertions = [];
          +	this.semaphore = 0;
          +	this.usedAsync = false;
          +	this.module = config.currentModule;
          +	this.stack = sourceFromStacktrace( 3 );
          +
          +	// Register unique strings
          +	for ( i = 0, l = this.module.tests; i < l.length; i++ ) {
          +		if ( this.module.tests[ i ].name === this.testName ) {
          +			this.testName += " ";
          +		}
          +	}
          +
          +	this.testId = generateHash( this.module.name, this.testName );
          +
          +	this.module.tests.push( {
          +		name: this.testName,
          +		testId: this.testId
          +	} );
          +
          +	if ( settings.skip ) {
          +
          +		// Skipped tests will fully ignore any sent callback
          +		this.callback = function() {};
          +		this.async = false;
          +		this.expected = 0;
          +	} else {
          +		this.assert = new Assert( this );
          +	}
          +}
          +
          +Test.count = 0;
          +
          +Test.prototype = {
          +	before: function() {
          +		if (
          +
          +			// Emit moduleStart when we're switching from one module to another
          +			this.module !== config.previousModule ||
          +
          +				// They could be equal (both undefined) but if the previousModule property doesn't
          +				// yet exist it means this is the first test in a suite that isn't wrapped in a
          +				// module, in which case we'll just emit a moduleStart event for 'undefined'.
          +				// Without this, reporters can get testStart before moduleStart  which is a problem.
          +				!hasOwn.call( config, "previousModule" )
          +		) {
          +			if ( hasOwn.call( config, "previousModule" ) ) {
          +				runLoggingCallbacks( "moduleDone", {
          +					name: config.previousModule.name,
          +					tests: config.previousModule.tests,
          +					failed: config.moduleStats.bad,
          +					passed: config.moduleStats.all - config.moduleStats.bad,
          +					total: config.moduleStats.all,
          +					runtime: now() - config.moduleStats.started
          +				} );
          +			}
          +			config.previousModule = this.module;
          +			config.moduleStats = { all: 0, bad: 0, started: now() };
          +			runLoggingCallbacks( "moduleStart", {
          +				name: this.module.name,
          +				tests: this.module.tests
          +			} );
          +		}
          +
          +		config.current = this;
          +
          +		if ( this.module.testEnvironment ) {
          +			delete this.module.testEnvironment.beforeEach;
          +			delete this.module.testEnvironment.afterEach;
          +		}
          +		this.testEnvironment = extend( {}, this.module.testEnvironment );
          +
          +		this.started = now();
          +		runLoggingCallbacks( "testStart", {
          +			name: this.testName,
          +			module: this.module.name,
          +			testId: this.testId
          +		} );
          +
          +		if ( !config.pollution ) {
          +			saveGlobal();
          +		}
          +	},
          +
          +	run: function() {
          +		var promise;
          +
          +		config.current = this;
          +
          +		if ( this.async ) {
          +			QUnit.stop();
          +		}
          +
          +		this.callbackStarted = now();
          +
          +		if ( config.notrycatch ) {
          +			runTest( this );
          +			return;
          +		}
          +
          +		try {
          +			runTest( this );
          +		} catch ( e ) {
          +			this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " +
          +				this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
          +
          +			// Else next test will carry the responsibility
          +			saveGlobal();
          +
          +			// Restart the tests if they're blocking
          +			if ( config.blocking ) {
          +				QUnit.start();
          +			}
          +		}
          +
          +		function runTest( test ) {
          +			promise = test.callback.call( test.testEnvironment, test.assert );
          +			test.resolvePromise( promise );
          +		}
          +	},
          +
          +	after: function() {
          +		checkPollution();
          +	},
          +
          +	queueHook: function( hook, hookName ) {
          +		var promise,
          +			test = this;
          +		return function runHook() {
          +			config.current = test;
          +			if ( config.notrycatch ) {
          +				callHook();
          +				return;
          +			}
          +			try {
          +				callHook();
          +			} catch ( error ) {
          +				test.pushFailure( hookName + " failed on " + test.testName + ": " +
          +				( error.message || error ), extractStacktrace( error, 0 ) );
          +			}
          +
          +			function callHook() {
          +				promise = hook.call( test.testEnvironment, test.assert );
          +				test.resolvePromise( promise, hookName );
          +			}
          +		};
          +	},
          +
          +	// Currently only used for module level hooks, can be used to add global level ones
          +	hooks: function( handler ) {
          +		var hooks = [];
          +
          +		function processHooks( test, module ) {
          +			if ( module.parentModule ) {
          +				processHooks( test, module.parentModule );
          +			}
          +			if ( module.testEnvironment &&
          +				QUnit.objectType( module.testEnvironment[ handler ] ) === "function" ) {
          +				hooks.push( test.queueHook( module.testEnvironment[ handler ], handler ) );
          +			}
          +		}
          +
          +		// Hooks are ignored on skipped tests
          +		if ( !this.skip ) {
          +			processHooks( this, this.module );
          +		}
          +		return hooks;
          +	},
          +
          +	finish: function() {
          +		config.current = this;
          +		if ( config.requireExpects && this.expected === null ) {
          +			this.pushFailure( "Expected number of assertions to be defined, but expect() was " +
          +				"not called.", this.stack );
          +		} else if ( this.expected !== null && this.expected !== this.assertions.length ) {
          +			this.pushFailure( "Expected " + this.expected + " assertions, but " +
          +				this.assertions.length + " were run", this.stack );
          +		} else if ( this.expected === null && !this.assertions.length ) {
          +			this.pushFailure( "Expected at least one assertion, but none were run - call " +
          +				"expect(0) to accept zero assertions.", this.stack );
          +		}
          +
          +		var i,
          +			bad = 0;
          +
          +		this.runtime = now() - this.started;
          +		config.stats.all += this.assertions.length;
          +		config.moduleStats.all += this.assertions.length;
          +
          +		for ( i = 0; i < this.assertions.length; i++ ) {
          +			if ( !this.assertions[ i ].result ) {
          +				bad++;
          +				config.stats.bad++;
          +				config.moduleStats.bad++;
          +			}
          +		}
          +
          +		runLoggingCallbacks( "testDone", {
          +			name: this.testName,
          +			module: this.module.name,
          +			skipped: !!this.skip,
          +			failed: bad,
          +			passed: this.assertions.length - bad,
          +			total: this.assertions.length,
          +			runtime: this.runtime,
          +
          +			// HTML Reporter use
          +			assertions: this.assertions,
          +			testId: this.testId,
          +
          +			// Source of Test
          +			source: this.stack,
          +
          +			// DEPRECATED: this property will be removed in 2.0.0, use runtime instead
          +			duration: this.runtime
          +		} );
          +
          +		// QUnit.reset() is deprecated and will be replaced for a new
          +		// fixture reset function on QUnit 2.0/2.1.
          +		// It's still called here for backwards compatibility handling
          +		QUnit.reset();
          +
          +		config.current = undefined;
          +	},
          +
          +	queue: function() {
          +		var priority,
          +			test = this;
          +
          +		if ( !this.valid() ) {
          +			return;
          +		}
          +
          +		function run() {
          +
          +			// Each of these can by async
          +			synchronize( [
          +				function() {
          +					test.before();
          +				},
          +
          +				test.hooks( "beforeEach" ),
          +				function() {
          +					test.run();
          +				},
          +
          +				test.hooks( "afterEach" ).reverse(),
          +
          +				function() {
          +					test.after();
          +				},
          +				function() {
          +					test.finish();
          +				}
          +			] );
          +		}
          +
          +		// Prioritize previously failed tests, detected from sessionStorage
          +		priority = QUnit.config.reorder && defined.sessionStorage &&
          +				+sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName );
          +
          +		return synchronize( run, priority, config.seed );
          +	},
          +
          +	pushResult: function( resultInfo ) {
          +
          +		// Destructure of resultInfo = { result, actual, expected, message, negative }
          +		var source,
          +			details = {
          +				module: this.module.name,
          +				name: this.testName,
          +				result: resultInfo.result,
          +				message: resultInfo.message,
          +				actual: resultInfo.actual,
          +				expected: resultInfo.expected,
          +				testId: this.testId,
          +				negative: resultInfo.negative || false,
          +				runtime: now() - this.started
          +			};
          +
          +		if ( !resultInfo.result ) {
          +			source = sourceFromStacktrace();
          +
          +			if ( source ) {
          +				details.source = source;
          +			}
          +		}
          +
          +		runLoggingCallbacks( "log", details );
          +
          +		this.assertions.push( {
          +			result: !!resultInfo.result,
          +			message: resultInfo.message
          +		} );
          +	},
          +
          +	pushFailure: function( message, source, actual ) {
          +		if ( !( this instanceof Test ) ) {
          +			throw new Error( "pushFailure() assertion outside test context, was " +
          +				sourceFromStacktrace( 2 ) );
          +		}
          +
          +		var details = {
          +				module: this.module.name,
          +				name: this.testName,
          +				result: false,
          +				message: message || "error",
          +				actual: actual || null,
          +				testId: this.testId,
          +				runtime: now() - this.started
          +			};
          +
          +		if ( source ) {
          +			details.source = source;
          +		}
          +
          +		runLoggingCallbacks( "log", details );
          +
          +		this.assertions.push( {
          +			result: false,
          +			message: message
          +		} );
          +	},
          +
          +	resolvePromise: function( promise, phase ) {
          +		var then, message,
          +			test = this;
          +		if ( promise != null ) {
          +			then = promise.then;
          +			if ( QUnit.objectType( then ) === "function" ) {
          +				QUnit.stop();
          +				then.call(
          +					promise,
          +					function() { QUnit.start(); },
          +					function( error ) {
          +						message = "Promise rejected " +
          +							( !phase ? "during" : phase.replace( /Each$/, "" ) ) +
          +							" " + test.testName + ": " + ( error.message || error );
          +						test.pushFailure( message, extractStacktrace( error, 0 ) );
          +
          +						// Else next test will carry the responsibility
          +						saveGlobal();
          +
          +						// Unblock
          +						QUnit.start();
          +					}
          +				);
          +			}
          +		}
          +	},
          +
          +	valid: function() {
          +		var filter = config.filter,
          +			regexFilter = /^(!?)\/([\w\W]*)\/(i?$)/.exec( filter ),
          +			module = config.module && config.module.toLowerCase(),
          +			fullName = ( this.module.name + ": " + this.testName );
          +
          +		function moduleChainNameMatch( testModule ) {
          +			var testModuleName = testModule.name ? testModule.name.toLowerCase() : null;
          +			if ( testModuleName === module ) {
          +				return true;
          +			} else if ( testModule.parentModule ) {
          +				return moduleChainNameMatch( testModule.parentModule );
          +			} else {
          +				return false;
          +			}
          +		}
          +
          +		function moduleChainIdMatch( testModule ) {
          +			return inArray( testModule.moduleId, config.moduleId ) > -1 ||
          +				testModule.parentModule && moduleChainIdMatch( testModule.parentModule );
          +		}
          +
          +		// Internally-generated tests are always valid
          +		if ( this.callback && this.callback.validTest ) {
          +			return true;
          +		}
          +
          +		if ( config.moduleId && config.moduleId.length > 0 &&
          +			!moduleChainIdMatch( this.module ) ) {
          +
          +			return false;
          +		}
          +
          +		if ( config.testId && config.testId.length > 0 &&
          +			inArray( this.testId, config.testId ) < 0 ) {
          +
          +			return false;
          +		}
          +
          +		if ( module && !moduleChainNameMatch( this.module ) ) {
          +			return false;
          +		}
          +
          +		if ( !filter ) {
          +			return true;
          +		}
          +
          +		return regexFilter ?
          +			this.regexFilter( !!regexFilter[ 1 ], regexFilter[ 2 ], regexFilter[ 3 ], fullName ) :
          +			this.stringFilter( filter, fullName );
          +	},
          +
          +	regexFilter: function( exclude, pattern, flags, fullName ) {
          +		var regex = new RegExp( pattern, flags );
          +		var match = regex.test( fullName );
          +
          +		return match !== exclude;
          +	},
          +
          +	stringFilter: function( filter, fullName ) {
          +		filter = filter.toLowerCase();
          +		fullName = fullName.toLowerCase();
          +
          +		var include = filter.charAt( 0 ) !== "!";
          +		if ( !include ) {
          +			filter = filter.slice( 1 );
          +		}
          +
          +		// If the filter matches, we need to honour include
          +		if ( fullName.indexOf( filter ) !== -1 ) {
          +			return include;
          +		}
          +
          +		// Otherwise, do the opposite
          +		return !include;
          +	}
          +};
          +
          +// Resets the test setup. Useful for tests that modify the DOM.
          +/*
          +DEPRECATED: Use multiple tests instead of resetting inside a test.
          +Use testStart or testDone for custom cleanup.
          +This method will throw an error in 2.0, and will be removed in 2.1
          +*/
          +QUnit.reset = function() {
          +
          +	// Return on non-browser environments
          +	// This is necessary to not break on node tests
          +	if ( !defined.document ) {
          +		return;
          +	}
          +
          +	var fixture = defined.document && document.getElementById &&
          +			document.getElementById( "qunit-fixture" );
          +
          +	if ( fixture ) {
          +		fixture.innerHTML = config.fixture;
          +	}
          +};
          +
          +QUnit.pushFailure = function() {
          +	if ( !QUnit.config.current ) {
          +		throw new Error( "pushFailure() assertion outside test context, in " +
          +			sourceFromStacktrace( 2 ) );
          +	}
          +
          +	// Gets current test obj
          +	var currentTest = QUnit.config.current;
          +
          +	return currentTest.pushFailure.apply( currentTest, arguments );
          +};
          +
          +// Based on Java's String.hashCode, a simple but not
          +// rigorously collision resistant hashing function
          +function generateHash( module, testName ) {
          +	var hex,
          +		i = 0,
          +		hash = 0,
          +		str = module + "\x1C" + testName,
          +		len = str.length;
          +
          +	for ( ; i < len; i++ ) {
          +		hash  = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
          +		hash |= 0;
          +	}
          +
          +	// Convert the possibly negative integer hash code into an 8 character hex string, which isn't
          +	// strictly necessary but increases user understanding that the id is a SHA-like hash
          +	hex = ( 0x100000000 + hash ).toString( 16 );
          +	if ( hex.length < 8 ) {
          +		hex = "0000000" + hex;
          +	}
          +
          +	return hex.slice( -8 );
          +}
          +
          +function synchronize( callback, priority, seed ) {
          +	var last = !priority,
          +		index;
          +
          +	if ( QUnit.objectType( callback ) === "array" ) {
          +		while ( callback.length ) {
          +			synchronize( callback.shift() );
          +		}
          +		return;
          +	}
          +
          +	if ( priority ) {
          +		config.queue.splice( priorityCount++, 0, callback );
          +	} else if ( seed ) {
          +		if ( !unitSampler ) {
          +			unitSampler = unitSamplerGenerator( seed );
          +		}
          +
          +		// Insert into a random position after all priority items
          +		index = Math.floor( unitSampler() * ( config.queue.length - priorityCount + 1 ) );
          +		config.queue.splice( priorityCount + index, 0, callback );
          +	} else {
          +		config.queue.push( callback );
          +	}
          +
          +	if ( config.autorun && !config.blocking ) {
          +		process( last );
          +	}
          +}
          +
          +function unitSamplerGenerator( seed ) {
          +
          +	// 32-bit xorshift, requires only a nonzero seed
          +	// http://excamera.com/sphinx/article-xorshift.html
          +	var sample = parseInt( generateHash( seed ), 16 ) || -1;
          +	return function() {
          +		sample ^= sample << 13;
          +		sample ^= sample >>> 17;
          +		sample ^= sample << 5;
          +
          +		// ECMAScript has no unsigned number type
          +		if ( sample < 0 ) {
          +			sample += 0x100000000;
          +		}
          +
          +		return sample / 0x100000000;
          +	};
          +}
          +
          +function saveGlobal() {
          +	config.pollution = [];
          +
          +	if ( config.noglobals ) {
          +		for ( var key in global ) {
          +			if ( hasOwn.call( global, key ) ) {
          +
          +				// In Opera sometimes DOM element ids show up here, ignore them
          +				if ( /^qunit-test-output/.test( key ) ) {
          +					continue;
          +				}
          +				config.pollution.push( key );
          +			}
          +		}
          +	}
          +}
          +
          +function checkPollution() {
          +	var newGlobals,
          +		deletedGlobals,
          +		old = config.pollution;
          +
          +	saveGlobal();
          +
          +	newGlobals = diff( config.pollution, old );
          +	if ( newGlobals.length > 0 ) {
          +		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) );
          +	}
          +
          +	deletedGlobals = diff( old, config.pollution );
          +	if ( deletedGlobals.length > 0 ) {
          +		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) );
          +	}
          +}
          +
          +// Will be exposed as QUnit.asyncTest
          +function asyncTest( testName, expected, callback ) {
          +	if ( arguments.length === 2 ) {
          +		callback = expected;
          +		expected = null;
          +	}
          +
          +	QUnit.test( testName, expected, callback, true );
          +}
          +
          +// Will be exposed as QUnit.test
          +function test( testName, expected, callback, async ) {
          +	if ( focused )  { return; }
          +
          +	var newTest;
          +
          +	if ( arguments.length === 2 ) {
          +		callback = expected;
          +		expected = null;
          +	}
          +
          +	newTest = new Test( {
          +		testName: testName,
          +		expected: expected,
          +		async: async,
          +		callback: callback
          +	} );
          +
          +	newTest.queue();
          +}
          +
          +// Will be exposed as QUnit.skip
          +function skip( testName ) {
          +	if ( focused )  { return; }
          +
          +	var test = new Test( {
          +		testName: testName,
          +		skip: true
          +	} );
          +
          +	test.queue();
          +}
          +
          +// Will be exposed as QUnit.only
          +function only( testName, expected, callback, async ) {
          +	var newTest;
          +
          +	if ( focused )  { return; }
          +
          +	QUnit.config.queue.length = 0;
          +	focused = true;
          +
          +	if ( arguments.length === 2 ) {
          +		callback = expected;
          +		expected = null;
          +	}
          +
          +	newTest = new Test( {
          +		testName: testName,
          +		expected: expected,
          +		async: async,
          +		callback: callback
          +	} );
          +
          +	newTest.queue();
          +}
          +
          +function Assert( testContext ) {
          +	this.test = testContext;
          +}
          +
          +// Assert helpers
          +QUnit.assert = Assert.prototype = {
          +
          +	// Specify the number of expected assertions to guarantee that failed test
          +	// (no assertions are run at all) don't slip through.
          +	expect: function( asserts ) {
          +		if ( arguments.length === 1 ) {
          +			this.test.expected = asserts;
          +		} else {
          +			return this.test.expected;
          +		}
          +	},
          +
          +	// Increment this Test's semaphore counter, then return a function that
          +	// decrements that counter a maximum of once.
          +	async: function( count ) {
          +		var test = this.test,
          +			popped = false,
          +			acceptCallCount = count;
          +
          +		if ( typeof acceptCallCount === "undefined" ) {
          +			acceptCallCount = 1;
          +		}
          +
          +		test.semaphore += 1;
          +		test.usedAsync = true;
          +		pauseProcessing();
          +
          +		return function done() {
          +
          +			if ( popped ) {
          +				test.pushFailure( "Too many calls to the `assert.async` callback",
          +					sourceFromStacktrace( 2 ) );
          +				return;
          +			}
          +			acceptCallCount -= 1;
          +			if ( acceptCallCount > 0 ) {
          +				return;
          +			}
          +
          +			test.semaphore -= 1;
          +			popped = true;
          +			resumeProcessing();
          +		};
          +	},
          +
          +	// Exports test.push() to the user API
          +	// Alias of pushResult.
          +	push: function( result, actual, expected, message, negative ) {
          +		var currentAssert = this instanceof Assert ? this : QUnit.config.current.assert;
          +		return currentAssert.pushResult( {
          +			result: result,
          +			actual: actual,
          +			expected: expected,
          +			message: message,
          +			negative: negative
          +		} );
          +	},
          +
          +	pushResult: function( resultInfo ) {
          +
          +		// Destructure of resultInfo = { result, actual, expected, message, negative }
          +		var assert = this,
          +			currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current;
          +
          +		// Backwards compatibility fix.
          +		// Allows the direct use of global exported assertions and QUnit.assert.*
          +		// Although, it's use is not recommended as it can leak assertions
          +		// to other tests from async tests, because we only get a reference to the current test,
          +		// not exactly the test where assertion were intended to be called.
          +		if ( !currentTest ) {
          +			throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) );
          +		}
          +
          +		if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) {
          +			currentTest.pushFailure( "Assertion after the final `assert.async` was resolved",
          +				sourceFromStacktrace( 2 ) );
          +
          +			// Allow this assertion to continue running anyway...
          +		}
          +
          +		if ( !( assert instanceof Assert ) ) {
          +			assert = currentTest.assert;
          +		}
          +
          +		return assert.test.pushResult( resultInfo );
          +	},
          +
          +	ok: function( result, message ) {
          +		message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " +
          +			QUnit.dump.parse( result ) );
          +		this.pushResult( {
          +			result: !!result,
          +			actual: result,
          +			expected: true,
          +			message: message
          +		} );
          +	},
          +
          +	notOk: function( result, message ) {
          +		message = message || ( !result ? "okay" : "failed, expected argument to be falsy, was: " +
          +			QUnit.dump.parse( result ) );
          +		this.pushResult( {
          +			result: !result,
          +			actual: result,
          +			expected: false,
          +			message: message
          +		} );
          +	},
          +
          +	equal: function( actual, expected, message ) {
          +		/*jshint eqeqeq:false */
          +		this.pushResult( {
          +			result: expected == actual,
          +			actual: actual,
          +			expected: expected,
          +			message: message
          +		} );
          +	},
          +
          +	notEqual: function( actual, expected, message ) {
          +		/*jshint eqeqeq:false */
          +		this.pushResult( {
          +			result: expected != actual,
          +			actual: actual,
          +			expected: expected,
          +			message: message,
          +			negative: true
          +		} );
          +	},
          +
          +	propEqual: function( actual, expected, message ) {
          +		actual = objectValues( actual );
          +		expected = objectValues( expected );
          +		this.pushResult( {
          +			result: QUnit.equiv( actual, expected ),
          +			actual: actual,
          +			expected: expected,
          +			message: message
          +		} );
          +	},
          +
          +	notPropEqual: function( actual, expected, message ) {
          +		actual = objectValues( actual );
          +		expected = objectValues( expected );
          +		this.pushResult( {
          +			result: !QUnit.equiv( actual, expected ),
          +			actual: actual,
          +			expected: expected,
          +			message: message,
          +			negative: true
          +		} );
          +	},
          +
          +	deepEqual: function( actual, expected, message ) {
          +		this.pushResult( {
          +			result: QUnit.equiv( actual, expected ),
          +			actual: actual,
          +			expected: expected,
          +			message: message
          +		} );
          +	},
          +
          +	notDeepEqual: function( actual, expected, message ) {
          +		this.pushResult( {
          +			result: !QUnit.equiv( actual, expected ),
          +			actual: actual,
          +			expected: expected,
          +			message: message,
          +			negative: true
          +		} );
          +	},
          +
          +	strictEqual: function( actual, expected, message ) {
          +		this.pushResult( {
          +			result: expected === actual,
          +			actual: actual,
          +			expected: expected,
          +			message: message
          +		} );
          +	},
          +
          +	notStrictEqual: function( actual, expected, message ) {
          +		this.pushResult( {
          +			result: expected !== actual,
          +			actual: actual,
          +			expected: expected,
          +			message: message,
          +			negative: true
          +		} );
          +	},
          +
          +	"throws": function( block, expected, message ) {
          +		var actual, expectedType,
          +			expectedOutput = expected,
          +			ok = false,
          +			currentTest = ( this instanceof Assert && this.test ) || QUnit.config.current;
          +
          +		// 'expected' is optional unless doing string comparison
          +		if ( message == null && typeof expected === "string" ) {
          +			message = expected;
          +			expected = null;
          +		}
          +
          +		currentTest.ignoreGlobalErrors = true;
          +		try {
          +			block.call( currentTest.testEnvironment );
          +		} catch ( e ) {
          +			actual = e;
          +		}
          +		currentTest.ignoreGlobalErrors = false;
          +
          +		if ( actual ) {
          +			expectedType = QUnit.objectType( expected );
          +
          +			// We don't want to validate thrown error
          +			if ( !expected ) {
          +				ok = true;
          +				expectedOutput = null;
          +
          +			// Expected is a regexp
          +			} else if ( expectedType === "regexp" ) {
          +				ok = expected.test( errorString( actual ) );
          +
          +			// Expected is a string
          +			} else if ( expectedType === "string" ) {
          +				ok = expected === errorString( actual );
          +
          +			// Expected is a constructor, maybe an Error constructor
          +			} else if ( expectedType === "function" && actual instanceof expected ) {
          +				ok = true;
          +
          +			// Expected is an Error object
          +			} else if ( expectedType === "object" ) {
          +				ok = actual instanceof expected.constructor &&
          +					actual.name === expected.name &&
          +					actual.message === expected.message;
          +
          +			// Expected is a validation function which returns true if validation passed
          +			} else if ( expectedType === "function" && expected.call( {}, actual ) === true ) {
          +				expectedOutput = null;
          +				ok = true;
          +			}
          +		}
          +
          +		currentTest.assert.pushResult( {
          +			result: ok,
          +			actual: actual,
          +			expected: expectedOutput,
          +			message: message
          +		} );
          +	}
          +};
          +
          +// Provide an alternative to assert.throws(), for environments that consider throws a reserved word
          +// Known to us are: Closure Compiler, Narwhal
          +( function() {
          +	/*jshint sub:true */
          +	Assert.prototype.raises = Assert.prototype [ "throws" ]; //jscs:ignore requireDotNotation
          +}() );
          +
          +function errorString( error ) {
          +	var name, message,
          +		resultErrorString = error.toString();
          +	if ( resultErrorString.substring( 0, 7 ) === "[object" ) {
          +		name = error.name ? error.name.toString() : "Error";
          +		message = error.message ? error.message.toString() : "";
          +		if ( name && message ) {
          +			return name + ": " + message;
          +		} else if ( name ) {
          +			return name;
          +		} else if ( message ) {
          +			return message;
          +		} else {
          +			return "Error";
          +		}
          +	} else {
          +		return resultErrorString;
          +	}
          +}
          +
          +// Test for equality any JavaScript type.
          +// Author: Philippe Rathé <prathe@gmail.com>
          +QUnit.equiv = ( function() {
          +
          +	// Stack to decide between skip/abort functions
          +	var callers = [];
          +
          +	// Stack to avoiding loops from circular referencing
          +	var parents = [];
          +	var parentsB = [];
          +
          +	var getProto = Object.getPrototypeOf || function( obj ) {
          +
          +		/*jshint proto: true */
          +		return obj.__proto__;
          +	};
          +
          +	function useStrictEquality( b, a ) {
          +
          +		// To catch short annotation VS 'new' annotation of a declaration. e.g.:
          +		// `var i = 1;`
          +		// `var j = new Number(1);`
          +		if ( typeof a === "object" ) {
          +			a = a.valueOf();
          +		}
          +		if ( typeof b === "object" ) {
          +			b = b.valueOf();
          +		}
          +
          +		return a === b;
          +	}
          +
          +	function compareConstructors( a, b ) {
          +		var protoA = getProto( a );
          +		var protoB = getProto( b );
          +
          +		// Comparing constructors is more strict than using `instanceof`
          +		if ( a.constructor === b.constructor ) {
          +			return true;
          +		}
          +
          +		// Ref #851
          +		// If the obj prototype descends from a null constructor, treat it
          +		// as a null prototype.
          +		if ( protoA && protoA.constructor === null ) {
          +			protoA = null;
          +		}
          +		if ( protoB && protoB.constructor === null ) {
          +			protoB = null;
          +		}
          +
          +		// Allow objects with no prototype to be equivalent to
          +		// objects with Object as their constructor.
          +		if ( ( protoA === null && protoB === Object.prototype ) ||
          +				( protoB === null && protoA === Object.prototype ) ) {
          +			return true;
          +		}
          +
          +		return false;
          +	}
          +
          +	function getRegExpFlags( regexp ) {
          +		return "flags" in regexp ? regexp.flags : regexp.toString().match( /[gimuy]*$/ )[ 0 ];
          +	}
          +
          +	var callbacks = {
          +		"string": useStrictEquality,
          +		"boolean": useStrictEquality,
          +		"number": useStrictEquality,
          +		"null": useStrictEquality,
          +		"undefined": useStrictEquality,
          +		"symbol": useStrictEquality,
          +		"date": useStrictEquality,
          +
          +		"nan": function() {
          +			return true;
          +		},
          +
          +		"regexp": function( b, a ) {
          +			return a.source === b.source &&
          +
          +				// Include flags in the comparison
          +				getRegExpFlags( a ) === getRegExpFlags( b );
          +		},
          +
          +		// - skip when the property is a method of an instance (OOP)
          +		// - abort otherwise,
          +		// initial === would have catch identical references anyway
          +		"function": function() {
          +			var caller = callers[ callers.length - 1 ];
          +			return caller !== Object && typeof caller !== "undefined";
          +		},
          +
          +		"array": function( b, a ) {
          +			var i, j, len, loop, aCircular, bCircular;
          +
          +			len = a.length;
          +			if ( len !== b.length ) {
          +
          +				// Safe and faster
          +				return false;
          +			}
          +
          +			// Track reference to avoid circular references
          +			parents.push( a );
          +			parentsB.push( b );
          +			for ( i = 0; i < len; i++ ) {
          +				loop = false;
          +				for ( j = 0; j < parents.length; j++ ) {
          +					aCircular = parents[ j ] === a[ i ];
          +					bCircular = parentsB[ j ] === b[ i ];
          +					if ( aCircular || bCircular ) {
          +						if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
          +							loop = true;
          +						} else {
          +							parents.pop();
          +							parentsB.pop();
          +							return false;
          +						}
          +					}
          +				}
          +				if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
          +					parents.pop();
          +					parentsB.pop();
          +					return false;
          +				}
          +			}
          +			parents.pop();
          +			parentsB.pop();
          +			return true;
          +		},
          +
          +		"set": function( b, a ) {
          +			var innerEq,
          +				outerEq = true;
          +
          +			if ( a.size !== b.size ) {
          +				return false;
          +			}
          +
          +			a.forEach( function( aVal ) {
          +				innerEq = false;
          +
          +				b.forEach( function( bVal ) {
          +					if ( innerEquiv( bVal, aVal ) ) {
          +						innerEq = true;
          +					}
          +				} );
          +
          +				if ( !innerEq ) {
          +					outerEq = false;
          +				}
          +			} );
          +
          +			return outerEq;
          +		},
          +
          +		"map": function( b, a ) {
          +			var innerEq,
          +				outerEq = true;
          +
          +			if ( a.size !== b.size ) {
          +				return false;
          +			}
          +
          +			a.forEach( function( aVal, aKey ) {
          +				innerEq = false;
          +
          +				b.forEach( function( bVal, bKey ) {
          +					if ( innerEquiv( [ bVal, bKey ], [ aVal, aKey ] ) ) {
          +						innerEq = true;
          +					}
          +				} );
          +
          +				if ( !innerEq ) {
          +					outerEq = false;
          +				}
          +			} );
          +
          +			return outerEq;
          +		},
          +
          +		"object": function( b, a ) {
          +			var i, j, loop, aCircular, bCircular;
          +
          +			// Default to true
          +			var eq = true;
          +			var aProperties = [];
          +			var bProperties = [];
          +
          +			if ( compareConstructors( a, b ) === false ) {
          +				return false;
          +			}
          +
          +			// Stack constructor before traversing properties
          +			callers.push( a.constructor );
          +
          +			// Track reference to avoid circular references
          +			parents.push( a );
          +			parentsB.push( b );
          +
          +			// Be strict: don't ensure hasOwnProperty and go deep
          +			for ( i in a ) {
          +				loop = false;
          +				for ( j = 0; j < parents.length; j++ ) {
          +					aCircular = parents[ j ] === a[ i ];
          +					bCircular = parentsB[ j ] === b[ i ];
          +					if ( aCircular || bCircular ) {
          +						if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
          +							loop = true;
          +						} else {
          +							eq = false;
          +							break;
          +						}
          +					}
          +				}
          +				aProperties.push( i );
          +				if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
          +					eq = false;
          +					break;
          +				}
          +			}
          +
          +			parents.pop();
          +			parentsB.pop();
          +
          +			// Unstack, we are done
          +			callers.pop();
          +
          +			for ( i in b ) {
          +
          +				// Collect b's properties
          +				bProperties.push( i );
          +			}
          +
          +			// Ensures identical properties name
          +			return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
          +		}
          +	};
          +
          +	function typeEquiv( a, b ) {
          +		var type = QUnit.objectType( a );
          +		return QUnit.objectType( b ) === type && callbacks[ type ]( b, a );
          +	}
          +
          +	// The real equiv function
          +	function innerEquiv( a, b ) {
          +
          +		// We're done when there's nothing more to compare
          +		if ( arguments.length < 2 ) {
          +			return true;
          +		}
          +
          +		// Require type-specific equality
          +		return ( a === b || typeEquiv( a, b ) ) &&
          +
          +			// ...across all consecutive argument pairs
          +			( arguments.length === 2 || innerEquiv.apply( this, [].slice.call( arguments, 1 ) ) );
          +	}
          +
          +	return innerEquiv;
          +}() );
          +
          +// Based on jsDump by Ariel Flesler
          +// http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html
          +QUnit.dump = ( function() {
          +	function quote( str ) {
          +		return "\"" + str.toString().replace( /\\/g, "\\\\" ).replace( /"/g, "\\\"" ) + "\"";
          +	}
          +	function literal( o ) {
          +		return o + "";
          +	}
          +	function join( pre, arr, post ) {
          +		var s = dump.separator(),
          +			base = dump.indent(),
          +			inner = dump.indent( 1 );
          +		if ( arr.join ) {
          +			arr = arr.join( "," + s + inner );
          +		}
          +		if ( !arr ) {
          +			return pre + post;
          +		}
          +		return [ pre, inner + arr, base + post ].join( s );
          +	}
          +	function array( arr, stack ) {
          +		var i = arr.length,
          +			ret = new Array( i );
          +
          +		if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
          +			return "[object Array]";
          +		}
          +
          +		this.up();
          +		while ( i-- ) {
          +			ret[ i ] = this.parse( arr[ i ], undefined, stack );
          +		}
          +		this.down();
          +		return join( "[", ret, "]" );
          +	}
          +
          +	var reName = /^function (\w+)/,
          +		dump = {
          +
          +			// The objType is used mostly internally, you can fix a (custom) type in advance
          +			parse: function( obj, objType, stack ) {
          +				stack = stack || [];
          +				var res, parser, parserType,
          +					inStack = inArray( obj, stack );
          +
          +				if ( inStack !== -1 ) {
          +					return "recursion(" + ( inStack - stack.length ) + ")";
          +				}
          +
          +				objType = objType || this.typeOf( obj  );
          +				parser = this.parsers[ objType ];
          +				parserType = typeof parser;
          +
          +				if ( parserType === "function" ) {
          +					stack.push( obj );
          +					res = parser.call( this, obj, stack );
          +					stack.pop();
          +					return res;
          +				}
          +				return ( parserType === "string" ) ? parser : this.parsers.error;
          +			},
          +			typeOf: function( obj ) {
          +				var type;
          +				if ( obj === null ) {
          +					type = "null";
          +				} else if ( typeof obj === "undefined" ) {
          +					type = "undefined";
          +				} else if ( QUnit.is( "regexp", obj ) ) {
          +					type = "regexp";
          +				} else if ( QUnit.is( "date", obj ) ) {
          +					type = "date";
          +				} else if ( QUnit.is( "function", obj ) ) {
          +					type = "function";
          +				} else if ( obj.setInterval !== undefined &&
          +						obj.document !== undefined &&
          +						obj.nodeType === undefined ) {
          +					type = "window";
          +				} else if ( obj.nodeType === 9 ) {
          +					type = "document";
          +				} else if ( obj.nodeType ) {
          +					type = "node";
          +				} else if (
          +
          +					// Native arrays
          +					toString.call( obj ) === "[object Array]" ||
          +
          +					// NodeList objects
          +					( typeof obj.length === "number" && obj.item !== undefined &&
          +					( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null &&
          +					obj[ 0 ] === undefined ) ) )
          +				) {
          +					type = "array";
          +				} else if ( obj.constructor === Error.prototype.constructor ) {
          +					type = "error";
          +				} else {
          +					type = typeof obj;
          +				}
          +				return type;
          +			},
          +
          +			separator: function() {
          +				return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&#160;" : " ";
          +			},
          +
          +			// Extra can be a number, shortcut for increasing-calling-decreasing
          +			indent: function( extra ) {
          +				if ( !this.multiline ) {
          +					return "";
          +				}
          +				var chr = this.indentChar;
          +				if ( this.HTML ) {
          +					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&#160;" );
          +				}
          +				return new Array( this.depth + ( extra || 0 ) ).join( chr );
          +			},
          +			up: function( a ) {
          +				this.depth += a || 1;
          +			},
          +			down: function( a ) {
          +				this.depth -= a || 1;
          +			},
          +			setParser: function( name, parser ) {
          +				this.parsers[ name ] = parser;
          +			},
          +
          +			// The next 3 are exposed so you can use them
          +			quote: quote,
          +			literal: literal,
          +			join: join,
          +			depth: 1,
          +			maxDepth: QUnit.config.maxDepth,
          +
          +			// This is the list of parsers, to modify them, use dump.setParser
          +			parsers: {
          +				window: "[Window]",
          +				document: "[Document]",
          +				error: function( error ) {
          +					return "Error(\"" + error.message + "\")";
          +				},
          +				unknown: "[Unknown]",
          +				"null": "null",
          +				"undefined": "undefined",
          +				"function": function( fn ) {
          +					var ret = "function",
          +
          +						// Functions never have name in IE
          +						name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ];
          +
          +					if ( name ) {
          +						ret += " " + name;
          +					}
          +					ret += "(";
          +
          +					ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" );
          +					return join( ret, dump.parse( fn, "functionCode" ), "}" );
          +				},
          +				array: array,
          +				nodelist: array,
          +				"arguments": array,
          +				object: function( map, stack ) {
          +					var keys, key, val, i, nonEnumerableProperties,
          +						ret = [];
          +
          +					if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
          +						return "[object Object]";
          +					}
          +
          +					dump.up();
          +					keys = [];
          +					for ( key in map ) {
          +						keys.push( key );
          +					}
          +
          +					// Some properties are not always enumerable on Error objects.
          +					nonEnumerableProperties = [ "message", "name" ];
          +					for ( i in nonEnumerableProperties ) {
          +						key = nonEnumerableProperties[ i ];
          +						if ( key in map && inArray( key, keys ) < 0 ) {
          +							keys.push( key );
          +						}
          +					}
          +					keys.sort();
          +					for ( i = 0; i < keys.length; i++ ) {
          +						key = keys[ i ];
          +						val = map[ key ];
          +						ret.push( dump.parse( key, "key" ) + ": " +
          +							dump.parse( val, undefined, stack ) );
          +					}
          +					dump.down();
          +					return join( "{", ret, "}" );
          +				},
          +				node: function( node ) {
          +					var len, i, val,
          +						open = dump.HTML ? "&lt;" : "<",
          +						close = dump.HTML ? "&gt;" : ">",
          +						tag = node.nodeName.toLowerCase(),
          +						ret = open + tag,
          +						attrs = node.attributes;
          +
          +					if ( attrs ) {
          +						for ( i = 0, len = attrs.length; i < len; i++ ) {
          +							val = attrs[ i ].nodeValue;
          +
          +							// IE6 includes all attributes in .attributes, even ones not explicitly
          +							// set. Those have values like undefined, null, 0, false, "" or
          +							// "inherit".
          +							if ( val && val !== "inherit" ) {
          +								ret += " " + attrs[ i ].nodeName + "=" +
          +									dump.parse( val, "attribute" );
          +							}
          +						}
          +					}
          +					ret += close;
          +
          +					// Show content of TextNode or CDATASection
          +					if ( node.nodeType === 3 || node.nodeType === 4 ) {
          +						ret += node.nodeValue;
          +					}
          +
          +					return ret + open + "/" + tag + close;
          +				},
          +
          +				// Function calls it internally, it's the arguments part of the function
          +				functionArgs: function( fn ) {
          +					var args,
          +						l = fn.length;
          +
          +					if ( !l ) {
          +						return "";
          +					}
          +
          +					args = new Array( l );
          +					while ( l-- ) {
          +
          +						// 97 is 'a'
          +						args[ l ] = String.fromCharCode( 97 + l );
          +					}
          +					return " " + args.join( ", " ) + " ";
          +				},
          +
          +				// Object calls it internally, the key part of an item in a map
          +				key: quote,
          +
          +				// Function calls it internally, it's the content of the function
          +				functionCode: "[code]",
          +
          +				// Node calls it internally, it's a html attribute value
          +				attribute: quote,
          +				string: quote,
          +				date: quote,
          +				regexp: literal,
          +				number: literal,
          +				"boolean": literal
          +			},
          +
          +			// If true, entities are escaped ( <, >, \t, space and \n )
          +			HTML: false,
          +
          +			// Indentation unit
          +			indentChar: "  ",
          +
          +			// If true, items in a collection, are separated by a \n, else just a space.
          +			multiline: true
          +		};
          +
          +	return dump;
          +}() );
          +
          +// Back compat
          +QUnit.jsDump = QUnit.dump;
          +
          +// Deprecated
          +// Extend assert methods to QUnit for Backwards compatibility
          +( function() {
          +	var i,
          +		assertions = Assert.prototype;
          +
          +	function applyCurrent( current ) {
          +		return function() {
          +			var assert = new Assert( QUnit.config.current );
          +			current.apply( assert, arguments );
          +		};
          +	}
          +
          +	for ( i in assertions ) {
          +		QUnit[ i ] = applyCurrent( assertions[ i ] );
          +	}
          +}() );
          +
          +// For browser, export only select globals
          +if ( defined.document ) {
          +
          +	( function() {
          +		var i, l,
          +			keys = [
          +				"test",
          +				"module",
          +				"expect",
          +				"asyncTest",
          +				"start",
          +				"stop",
          +				"ok",
          +				"notOk",
          +				"equal",
          +				"notEqual",
          +				"propEqual",
          +				"notPropEqual",
          +				"deepEqual",
          +				"notDeepEqual",
          +				"strictEqual",
          +				"notStrictEqual",
          +				"throws",
          +				"raises"
          +			];
          +
          +		for ( i = 0, l = keys.length; i < l; i++ ) {
          +			window[ keys[ i ] ] = QUnit[ keys[ i ] ];
          +		}
          +	}() );
          +
          +	window.QUnit = QUnit;
          +}
          +
          +// For nodejs
          +if ( typeof module !== "undefined" && module && module.exports ) {
          +	module.exports = QUnit;
          +
          +	// For consistency with CommonJS environments' exports
          +	module.exports.QUnit = QUnit;
          +}
          +
          +// For CommonJS with exports, but without module.exports, like Rhino
          +if ( typeof exports !== "undefined" && exports ) {
          +	exports.QUnit = QUnit;
          +}
          +
          +if ( typeof define === "function" && define.amd ) {
          +	define( function() {
          +		return QUnit;
          +	} );
          +	QUnit.config.autostart = false;
          +}
          +
          +// Get a reference to the global object, like window in browsers
          +}( ( function() {
          +	return this;
          +}() ) ) );
          +
          +( function() {
          +
          +// Only interact with URLs via window.location
          +var location = typeof window !== "undefined" && window.location;
          +if ( !location ) {
          +	return;
          +}
          +
          +var urlParams = getUrlParams();
          +
          +QUnit.urlParams = urlParams;
          +
          +// Match module/test by inclusion in an array
          +QUnit.config.moduleId = [].concat( urlParams.moduleId || [] );
          +QUnit.config.testId = [].concat( urlParams.testId || [] );
          +
          +// Exact case-insensitive match of the module name
          +QUnit.config.module = urlParams.module;
          +
          +// Regular expression or case-insenstive substring match against "moduleName: testName"
          +QUnit.config.filter = urlParams.filter;
          +
          +// Test order randomization
          +if ( urlParams.seed === true ) {
          +
          +	// Generate a random seed if the option is specified without a value
          +	QUnit.config.seed = Math.random().toString( 36 ).slice( 2 );
          +} else if ( urlParams.seed ) {
          +	QUnit.config.seed = urlParams.seed;
          +}
          +
          +// Add URL-parameter-mapped config values with UI form rendering data
          +QUnit.config.urlConfig.push(
          +	{
          +		id: "hidepassed",
          +		label: "Hide passed tests",
          +		tooltip: "Only show tests and assertions that fail. Stored as query-strings."
          +	},
          +	{
          +		id: "noglobals",
          +		label: "Check for Globals",
          +		tooltip: "Enabling this will test if any test introduces new properties on the " +
          +			"global object (`window` in Browsers). Stored as query-strings."
          +	},
          +	{
          +		id: "notrycatch",
          +		label: "No try-catch",
          +		tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " +
          +			"exceptions in IE reasonable. Stored as query-strings."
          +	}
          +);
          +
          +QUnit.begin( function() {
          +	var i, option,
          +		urlConfig = QUnit.config.urlConfig;
          +
          +	for ( i = 0; i < urlConfig.length; i++ ) {
          +
          +		// Options can be either strings or objects with nonempty "id" properties
          +		option = QUnit.config.urlConfig[ i ];
          +		if ( typeof option !== "string" ) {
          +			option = option.id;
          +		}
          +
          +		if ( QUnit.config[ option ] === undefined ) {
          +			QUnit.config[ option ] = urlParams[ option ];
          +		}
          +	}
          +} );
          +
          +function getUrlParams() {
          +	var i, param, name, value;
          +	var urlParams = {};
          +	var params = location.search.slice( 1 ).split( "&" );
          +	var length = params.length;
          +
          +	for ( i = 0; i < length; i++ ) {
          +		if ( params[ i ] ) {
          +			param = params[ i ].split( "=" );
          +			name = decodeURIComponent( param[ 0 ] );
          +
          +			// Allow just a key to turn on a flag, e.g., test.html?noglobals
          +			value = param.length === 1 ||
          +				decodeURIComponent( param.slice( 1 ).join( "=" ) ) ;
          +			if ( urlParams[ name ] ) {
          +				urlParams[ name ] = [].concat( urlParams[ name ], value );
          +			} else {
          +				urlParams[ name ] = value;
          +			}
          +		}
          +	}
          +
          +	return urlParams;
          +}
          +
          +// Don't load the HTML Reporter on non-browser environments
          +if ( typeof window === "undefined" || !window.document ) {
          +	return;
          +}
          +
          +// Deprecated QUnit.init - Ref #530
          +// Re-initialize the configuration options
          +QUnit.init = function() {
          +	var config = QUnit.config;
          +
          +	config.stats = { all: 0, bad: 0 };
          +	config.moduleStats = { all: 0, bad: 0 };
          +	config.started = 0;
          +	config.updateRate = 1000;
          +	config.blocking = false;
          +	config.autostart = true;
          +	config.autorun = false;
          +	config.filter = "";
          +	config.queue = [];
          +
          +	appendInterface();
          +};
          +
          +var config = QUnit.config,
          +	document = window.document,
          +	collapseNext = false,
          +	hasOwn = Object.prototype.hasOwnProperty,
          +	unfilteredUrl = setUrl( { filter: undefined, module: undefined,
          +		moduleId: undefined, testId: undefined } ),
          +	defined = {
          +		sessionStorage: ( function() {
          +			var x = "qunit-test-string";
          +			try {
          +				sessionStorage.setItem( x, x );
          +				sessionStorage.removeItem( x );
          +				return true;
          +			} catch ( e ) {
          +				return false;
          +			}
          +		}() )
          +	},
          +	modulesList = [];
          +
          +/**
          +* Escape text for attribute or text content.
          +*/
          +function escapeText( s ) {
          +	if ( !s ) {
          +		return "";
          +	}
          +	s = s + "";
          +
          +	// Both single quotes and double quotes (for attributes)
          +	return s.replace( /['"<>&]/g, function( s ) {
          +		switch ( s ) {
          +		case "'":
          +			return "&#039;";
          +		case "\"":
          +			return "&quot;";
          +		case "<":
          +			return "&lt;";
          +		case ">":
          +			return "&gt;";
          +		case "&":
          +			return "&amp;";
          +		}
          +	} );
          +}
          +
          +/**
          + * @param {HTMLElement} elem
          + * @param {string} type
          + * @param {Function} fn
          + */
          +function addEvent( elem, type, fn ) {
          +	if ( elem.addEventListener ) {
          +
          +		// Standards-based browsers
          +		elem.addEventListener( type, fn, false );
          +	} else if ( elem.attachEvent ) {
          +
          +		// Support: IE <9
          +		elem.attachEvent( "on" + type, function() {
          +			var event = window.event;
          +			if ( !event.target ) {
          +				event.target = event.srcElement || document;
          +			}
          +
          +			fn.call( elem, event );
          +		} );
          +	}
          +}
          +
          +/**
          + * @param {Array|NodeList} elems
          + * @param {string} type
          + * @param {Function} fn
          + */
          +function addEvents( elems, type, fn ) {
          +	var i = elems.length;
          +	while ( i-- ) {
          +		addEvent( elems[ i ], type, fn );
          +	}
          +}
          +
          +function hasClass( elem, name ) {
          +	return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0;
          +}
          +
          +function addClass( elem, name ) {
          +	if ( !hasClass( elem, name ) ) {
          +		elem.className += ( elem.className ? " " : "" ) + name;
          +	}
          +}
          +
          +function toggleClass( elem, name, force ) {
          +	if ( force || typeof force === "undefined" && !hasClass( elem, name ) ) {
          +		addClass( elem, name );
          +	} else {
          +		removeClass( elem, name );
          +	}
          +}
          +
          +function removeClass( elem, name ) {
          +	var set = " " + elem.className + " ";
          +
          +	// Class name may appear multiple times
          +	while ( set.indexOf( " " + name + " " ) >= 0 ) {
          +		set = set.replace( " " + name + " ", " " );
          +	}
          +
          +	// Trim for prettiness
          +	elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" );
          +}
          +
          +function id( name ) {
          +	return document.getElementById && document.getElementById( name );
          +}
          +
          +function getUrlConfigHtml() {
          +	var i, j, val,
          +		escaped, escapedTooltip,
          +		selection = false,
          +		urlConfig = config.urlConfig,
          +		urlConfigHtml = "";
          +
          +	for ( i = 0; i < urlConfig.length; i++ ) {
          +
          +		// Options can be either strings or objects with nonempty "id" properties
          +		val = config.urlConfig[ i ];
          +		if ( typeof val === "string" ) {
          +			val = {
          +				id: val,
          +				label: val
          +			};
          +		}
          +
          +		escaped = escapeText( val.id );
          +		escapedTooltip = escapeText( val.tooltip );
          +
          +		if ( !val.value || typeof val.value === "string" ) {
          +			urlConfigHtml += "<input id='qunit-urlconfig-" + escaped +
          +				"' name='" + escaped + "' type='checkbox'" +
          +				( val.value ? " value='" + escapeText( val.value ) + "'" : "" ) +
          +				( config[ val.id ] ? " checked='checked'" : "" ) +
          +				" title='" + escapedTooltip + "' /><label for='qunit-urlconfig-" + escaped +
          +				"' title='" + escapedTooltip + "'>" + val.label + "</label>";
          +		} else {
          +			urlConfigHtml += "<label for='qunit-urlconfig-" + escaped +
          +				"' title='" + escapedTooltip + "'>" + val.label +
          +				": </label><select id='qunit-urlconfig-" + escaped +
          +				"' name='" + escaped + "' title='" + escapedTooltip + "'><option></option>";
          +
          +			if ( QUnit.is( "array", val.value ) ) {
          +				for ( j = 0; j < val.value.length; j++ ) {
          +					escaped = escapeText( val.value[ j ] );
          +					urlConfigHtml += "<option value='" + escaped + "'" +
          +						( config[ val.id ] === val.value[ j ] ?
          +							( selection = true ) && " selected='selected'" : "" ) +
          +						">" + escaped + "</option>";
          +				}
          +			} else {
          +				for ( j in val.value ) {
          +					if ( hasOwn.call( val.value, j ) ) {
          +						urlConfigHtml += "<option value='" + escapeText( j ) + "'" +
          +							( config[ val.id ] === j ?
          +								( selection = true ) && " selected='selected'" : "" ) +
          +							">" + escapeText( val.value[ j ] ) + "</option>";
          +					}
          +				}
          +			}
          +			if ( config[ val.id ] && !selection ) {
          +				escaped = escapeText( config[ val.id ] );
          +				urlConfigHtml += "<option value='" + escaped +
          +					"' selected='selected' disabled='disabled'>" + escaped + "</option>";
          +			}
          +			urlConfigHtml += "</select>";
          +		}
          +	}
          +
          +	return urlConfigHtml;
          +}
          +
          +// Handle "click" events on toolbar checkboxes and "change" for select menus.
          +// Updates the URL with the new state of `config.urlConfig` values.
          +function toolbarChanged() {
          +	var updatedUrl, value, tests,
          +		field = this,
          +		params = {};
          +
          +	// Detect if field is a select menu or a checkbox
          +	if ( "selectedIndex" in field ) {
          +		value = field.options[ field.selectedIndex ].value || undefined;
          +	} else {
          +		value = field.checked ? ( field.defaultValue || true ) : undefined;
          +	}
          +
          +	params[ field.name ] = value;
          +	updatedUrl = setUrl( params );
          +
          +	// Check if we can apply the change without a page refresh
          +	if ( "hidepassed" === field.name && "replaceState" in window.history ) {
          +		QUnit.urlParams[ field.name ] = value;
          +		config[ field.name ] = value || false;
          +		tests = id( "qunit-tests" );
          +		if ( tests ) {
          +			toggleClass( tests, "hidepass", value || false );
          +		}
          +		window.history.replaceState( null, "", updatedUrl );
          +	} else {
          +		window.location = updatedUrl;
          +	}
          +}
          +
          +function setUrl( params ) {
          +	var key, arrValue, i,
          +		querystring = "?",
          +		location = window.location;
          +
          +	params = QUnit.extend( QUnit.extend( {}, QUnit.urlParams ), params );
          +
          +	for ( key in params ) {
          +
          +		// Skip inherited or undefined properties
          +		if ( hasOwn.call( params, key ) && params[ key ] !== undefined ) {
          +
          +			// Output a parameter for each value of this key (but usually just one)
          +			arrValue = [].concat( params[ key ] );
          +			for ( i = 0; i < arrValue.length; i++ ) {
          +				querystring += encodeURIComponent( key );
          +				if ( arrValue[ i ] !== true ) {
          +					querystring += "=" + encodeURIComponent( arrValue[ i ] );
          +				}
          +				querystring += "&";
          +			}
          +		}
          +	}
          +	return location.protocol + "//" + location.host +
          +		location.pathname + querystring.slice( 0, -1 );
          +}
          +
          +function applyUrlParams() {
          +	var selectedModule,
          +		modulesList = id( "qunit-modulefilter" ),
          +		filter = id( "qunit-filter-input" ).value;
          +
          +	selectedModule = modulesList ?
          +		decodeURIComponent( modulesList.options[ modulesList.selectedIndex ].value ) :
          +		undefined;
          +
          +	window.location = setUrl( {
          +		module: ( selectedModule === "" ) ? undefined : selectedModule,
          +		filter: ( filter === "" ) ? undefined : filter,
          +
          +		// Remove moduleId and testId filters
          +		moduleId: undefined,
          +		testId: undefined
          +	} );
          +}
          +
          +function toolbarUrlConfigContainer() {
          +	var urlConfigContainer = document.createElement( "span" );
          +
          +	urlConfigContainer.innerHTML = getUrlConfigHtml();
          +	addClass( urlConfigContainer, "qunit-url-config" );
          +
          +	// For oldIE support:
          +	// * Add handlers to the individual elements instead of the container
          +	// * Use "click" instead of "change" for checkboxes
          +	addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged );
          +	addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged );
          +
          +	return urlConfigContainer;
          +}
          +
          +function toolbarLooseFilter() {
          +	var filter = document.createElement( "form" ),
          +		label = document.createElement( "label" ),
          +		input = document.createElement( "input" ),
          +		button = document.createElement( "button" );
          +
          +	addClass( filter, "qunit-filter" );
          +
          +	label.innerHTML = "Filter: ";
          +
          +	input.type = "text";
          +	input.value = config.filter || "";
          +	input.name = "filter";
          +	input.id = "qunit-filter-input";
          +
          +	button.innerHTML = "Go";
          +
          +	label.appendChild( input );
          +
          +	filter.appendChild( label );
          +	filter.appendChild( button );
          +	addEvent( filter, "submit", function( ev ) {
          +		applyUrlParams();
          +
          +		if ( ev && ev.preventDefault ) {
          +			ev.preventDefault();
          +		}
          +
          +		return false;
          +	} );
          +
          +	return filter;
          +}
          +
          +function toolbarModuleFilterHtml() {
          +	var i,
          +		moduleFilterHtml = "";
          +
          +	if ( !modulesList.length ) {
          +		return false;
          +	}
          +
          +	moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label>" +
          +		"<select id='qunit-modulefilter' name='modulefilter'><option value='' " +
          +		( QUnit.urlParams.module === undefined ? "selected='selected'" : "" ) +
          +		">< All Modules ></option>";
          +
          +	for ( i = 0; i < modulesList.length; i++ ) {
          +		moduleFilterHtml += "<option value='" +
          +			escapeText( encodeURIComponent( modulesList[ i ] ) ) + "' " +
          +			( QUnit.urlParams.module === modulesList[ i ] ? "selected='selected'" : "" ) +
          +			">" + escapeText( modulesList[ i ] ) + "</option>";
          +	}
          +	moduleFilterHtml += "</select>";
          +
          +	return moduleFilterHtml;
          +}
          +
          +function toolbarModuleFilter() {
          +	var toolbar = id( "qunit-testrunner-toolbar" ),
          +		moduleFilter = document.createElement( "span" ),
          +		moduleFilterHtml = toolbarModuleFilterHtml();
          +
          +	if ( !toolbar || !moduleFilterHtml ) {
          +		return false;
          +	}
          +
          +	moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
          +	moduleFilter.innerHTML = moduleFilterHtml;
          +
          +	addEvent( moduleFilter.lastChild, "change", applyUrlParams );
          +
          +	toolbar.appendChild( moduleFilter );
          +}
          +
          +function appendToolbar() {
          +	var toolbar = id( "qunit-testrunner-toolbar" );
          +
          +	if ( toolbar ) {
          +		toolbar.appendChild( toolbarUrlConfigContainer() );
          +		toolbar.appendChild( toolbarLooseFilter() );
          +		toolbarModuleFilter();
          +	}
          +}
          +
          +function appendHeader() {
          +	var header = id( "qunit-header" );
          +
          +	if ( header ) {
          +		header.innerHTML = "<a href='" + escapeText( unfilteredUrl ) + "'>" + header.innerHTML +
          +			"</a> ";
          +	}
          +}
          +
          +function appendBanner() {
          +	var banner = id( "qunit-banner" );
          +
          +	if ( banner ) {
          +		banner.className = "";
          +	}
          +}
          +
          +function appendTestResults() {
          +	var tests = id( "qunit-tests" ),
          +		result = id( "qunit-testresult" );
          +
          +	if ( result ) {
          +		result.parentNode.removeChild( result );
          +	}
          +
          +	if ( tests ) {
          +		tests.innerHTML = "";
          +		result = document.createElement( "p" );
          +		result.id = "qunit-testresult";
          +		result.className = "result";
          +		tests.parentNode.insertBefore( result, tests );
          +		result.innerHTML = "Running...<br />&#160;";
          +	}
          +}
          +
          +function storeFixture() {
          +	var fixture = id( "qunit-fixture" );
          +	if ( fixture ) {
          +		config.fixture = fixture.innerHTML;
          +	}
          +}
          +
          +function appendFilteredTest() {
          +	var testId = QUnit.config.testId;
          +	if ( !testId || testId.length <= 0 ) {
          +		return "";
          +	}
          +	return "<div id='qunit-filteredTest'>Rerunning selected tests: " +
          +		escapeText( testId.join( ", " ) ) +
          +		" <a id='qunit-clearFilter' href='" +
          +		escapeText( unfilteredUrl ) +
          +		"'>Run all tests</a></div>";
          +}
          +
          +function appendUserAgent() {
          +	var userAgent = id( "qunit-userAgent" );
          +
          +	if ( userAgent ) {
          +		userAgent.innerHTML = "";
          +		userAgent.appendChild(
          +			document.createTextNode(
          +				"QUnit " + QUnit.version + "; " + navigator.userAgent
          +			)
          +		);
          +	}
          +}
          +
          +function appendInterface() {
          +	var qunit = id( "qunit" );
          +
          +	if ( qunit ) {
          +		qunit.innerHTML =
          +			"<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
          +			"<h2 id='qunit-banner'></h2>" +
          +			"<div id='qunit-testrunner-toolbar'></div>" +
          +			appendFilteredTest() +
          +			"<h2 id='qunit-userAgent'></h2>" +
          +			"<ol id='qunit-tests'></ol>";
          +	}
          +
          +	appendHeader();
          +	appendBanner();
          +	appendTestResults();
          +	appendUserAgent();
          +	appendToolbar();
          +}
          +
          +function appendTestsList( modules ) {
          +	var i, l, x, z, test, moduleObj;
          +
          +	for ( i = 0, l = modules.length; i < l; i++ ) {
          +		moduleObj = modules[ i ];
          +
          +		for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) {
          +			test = moduleObj.tests[ x ];
          +
          +			appendTest( test.name, test.testId, moduleObj.name );
          +		}
          +	}
          +}
          +
          +function appendTest( name, testId, moduleName ) {
          +	var title, rerunTrigger, testBlock, assertList,
          +		tests = id( "qunit-tests" );
          +
          +	if ( !tests ) {
          +		return;
          +	}
          +
          +	title = document.createElement( "strong" );
          +	title.innerHTML = getNameHtml( name, moduleName );
          +
          +	rerunTrigger = document.createElement( "a" );
          +	rerunTrigger.innerHTML = "Rerun";
          +	rerunTrigger.href = setUrl( { testId: testId } );
          +
          +	testBlock = document.createElement( "li" );
          +	testBlock.appendChild( title );
          +	testBlock.appendChild( rerunTrigger );
          +	testBlock.id = "qunit-test-output-" + testId;
          +
          +	assertList = document.createElement( "ol" );
          +	assertList.className = "qunit-assert-list";
          +
          +	testBlock.appendChild( assertList );
          +
          +	tests.appendChild( testBlock );
          +}
          +
          +// HTML Reporter initialization and load
          +QUnit.begin( function( details ) {
          +	var i, moduleObj, tests;
          +
          +	// Sort modules by name for the picker
          +	for ( i = 0; i < details.modules.length; i++ ) {
          +		moduleObj = details.modules[ i ];
          +		if ( moduleObj.name ) {
          +			modulesList.push( moduleObj.name );
          +		}
          +	}
          +	modulesList.sort( function( a, b ) {
          +		return a.localeCompare( b );
          +	} );
          +
          +	// Capture fixture HTML from the page
          +	storeFixture();
          +
          +	// Initialize QUnit elements
          +	appendInterface();
          +	appendTestsList( details.modules );
          +	tests = id( "qunit-tests" );
          +	if ( tests && config.hidepassed ) {
          +		addClass( tests, "hidepass" );
          +	}
          +} );
          +
          +QUnit.done( function( details ) {
          +	var i, key,
          +		banner = id( "qunit-banner" ),
          +		tests = id( "qunit-tests" ),
          +		html = [
          +			"Tests completed in ",
          +			details.runtime,
          +			" milliseconds.<br />",
          +			"<span class='passed'>",
          +			details.passed,
          +			"</span> assertions of <span class='total'>",
          +			details.total,
          +			"</span> passed, <span class='failed'>",
          +			details.failed,
          +			"</span> failed."
          +		].join( "" );
          +
          +	if ( banner ) {
          +		banner.className = details.failed ? "qunit-fail" : "qunit-pass";
          +	}
          +
          +	if ( tests ) {
          +		id( "qunit-testresult" ).innerHTML = html;
          +	}
          +
          +	if ( config.altertitle && document.title ) {
          +
          +		// Show ✖ for good, ✔ for bad suite result in title
          +		// use escape sequences in case file gets loaded with non-utf-8-charset
          +		document.title = [
          +			( details.failed ? "\u2716" : "\u2714" ),
          +			document.title.replace( /^[\u2714\u2716] /i, "" )
          +		].join( " " );
          +	}
          +
          +	// Clear own sessionStorage items if all tests passed
          +	if ( config.reorder && defined.sessionStorage && details.failed === 0 ) {
          +		for ( i = 0; i < sessionStorage.length; i++ ) {
          +			key = sessionStorage.key( i++ );
          +			if ( key.indexOf( "qunit-test-" ) === 0 ) {
          +				sessionStorage.removeItem( key );
          +			}
          +		}
          +	}
          +
          +	// Scroll back to top to show results
          +	if ( config.scrolltop && window.scrollTo ) {
          +		window.scrollTo( 0, 0 );
          +	}
          +} );
          +
          +function getNameHtml( name, module ) {
          +	var nameHtml = "";
          +
          +	if ( module ) {
          +		nameHtml = "<span class='module-name'>" + escapeText( module ) + "</span>: ";
          +	}
          +
          +	nameHtml += "<span class='test-name'>" + escapeText( name ) + "</span>";
          +
          +	return nameHtml;
          +}
          +
          +QUnit.testStart( function( details ) {
          +	var running, testBlock, bad;
          +
          +	testBlock = id( "qunit-test-output-" + details.testId );
          +	if ( testBlock ) {
          +		testBlock.className = "running";
          +	} else {
          +
          +		// Report later registered tests
          +		appendTest( details.name, details.testId, details.module );
          +	}
          +
          +	running = id( "qunit-testresult" );
          +	if ( running ) {
          +		bad = QUnit.config.reorder && defined.sessionStorage &&
          +			+sessionStorage.getItem( "qunit-test-" + details.module + "-" + details.name );
          +
          +		running.innerHTML = ( bad ?
          +			"Rerunning previously failed test: <br />" :
          +			"Running: <br />" ) +
          +			getNameHtml( details.name, details.module );
          +	}
          +
          +} );
          +
          +function stripHtml( string ) {
          +
          +	// Strip tags, html entity and whitespaces
          +	return string.replace( /<\/?[^>]+(>|$)/g, "" ).replace( /\&quot;/g, "" ).replace( /\s+/g, "" );
          +}
          +
          +QUnit.log( function( details ) {
          +	var assertList, assertLi,
          +		message, expected, actual, diff,
          +		showDiff = false,
          +		testItem = id( "qunit-test-output-" + details.testId );
          +
          +	if ( !testItem ) {
          +		return;
          +	}
          +
          +	message = escapeText( details.message ) || ( details.result ? "okay" : "failed" );
          +	message = "<span class='test-message'>" + message + "</span>";
          +	message += "<span class='runtime'>@ " + details.runtime + " ms</span>";
          +
          +	// The pushFailure doesn't provide details.expected
          +	// when it calls, it's implicit to also not show expected and diff stuff
          +	// Also, we need to check details.expected existence, as it can exist and be undefined
          +	if ( !details.result && hasOwn.call( details, "expected" ) ) {
          +		if ( details.negative ) {
          +			expected = "NOT " + QUnit.dump.parse( details.expected );
          +		} else {
          +			expected = QUnit.dump.parse( details.expected );
          +		}
          +
          +		actual = QUnit.dump.parse( details.actual );
          +		message += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" +
          +			escapeText( expected ) +
          +			"</pre></td></tr>";
          +
          +		if ( actual !== expected ) {
          +
          +			message += "<tr class='test-actual'><th>Result: </th><td><pre>" +
          +				escapeText( actual ) + "</pre></td></tr>";
          +
          +			// Don't show diff if actual or expected are booleans
          +			if ( !( /^(true|false)$/.test( actual ) ) &&
          +					!( /^(true|false)$/.test( expected ) ) ) {
          +				diff = QUnit.diff( expected, actual );
          +				showDiff = stripHtml( diff ).length !==
          +					stripHtml( expected ).length +
          +					stripHtml( actual ).length;
          +			}
          +
          +			// Don't show diff if expected and actual are totally different
          +			if ( showDiff ) {
          +				message += "<tr class='test-diff'><th>Diff: </th><td><pre>" +
          +					diff + "</pre></td></tr>";
          +			}
          +		} else if ( expected.indexOf( "[object Array]" ) !== -1 ||
          +				expected.indexOf( "[object Object]" ) !== -1 ) {
          +			message += "<tr class='test-message'><th>Message: </th><td>" +
          +				"Diff suppressed as the depth of object is more than current max depth (" +
          +				QUnit.config.maxDepth + ").<p>Hint: Use <code>QUnit.dump.maxDepth</code> to " +
          +				" run with a higher max depth or <a href='" +
          +				escapeText( setUrl( { maxDepth: -1 } ) ) + "'>" +
          +				"Rerun</a> without max depth.</p></td></tr>";
          +		} else {
          +			message += "<tr class='test-message'><th>Message: </th><td>" +
          +				"Diff suppressed as the expected and actual results have an equivalent" +
          +				" serialization</td></tr>";
          +		}
          +
          +		if ( details.source ) {
          +			message += "<tr class='test-source'><th>Source: </th><td><pre>" +
          +				escapeText( details.source ) + "</pre></td></tr>";
          +		}
          +
          +		message += "</table>";
          +
          +	// This occurs when pushFailure is set and we have an extracted stack trace
          +	} else if ( !details.result && details.source ) {
          +		message += "<table>" +
          +			"<tr class='test-source'><th>Source: </th><td><pre>" +
          +			escapeText( details.source ) + "</pre></td></tr>" +
          +			"</table>";
          +	}
          +
          +	assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
          +
          +	assertLi = document.createElement( "li" );
          +	assertLi.className = details.result ? "pass" : "fail";
          +	assertLi.innerHTML = message;
          +	assertList.appendChild( assertLi );
          +} );
          +
          +QUnit.testDone( function( details ) {
          +	var testTitle, time, testItem, assertList,
          +		good, bad, testCounts, skipped, sourceName,
          +		tests = id( "qunit-tests" );
          +
          +	if ( !tests ) {
          +		return;
          +	}
          +
          +	testItem = id( "qunit-test-output-" + details.testId );
          +
          +	assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
          +
          +	good = details.passed;
          +	bad = details.failed;
          +
          +	// Store result when possible
          +	if ( config.reorder && defined.sessionStorage ) {
          +		if ( bad ) {
          +			sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad );
          +		} else {
          +			sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name );
          +		}
          +	}
          +
          +	if ( bad === 0 ) {
          +
          +		// Collapse the passing tests
          +		addClass( assertList, "qunit-collapsed" );
          +	} else if ( bad && config.collapse && !collapseNext ) {
          +
          +		// Skip collapsing the first failing test
          +		collapseNext = true;
          +	} else {
          +
          +		// Collapse remaining tests
          +		addClass( assertList, "qunit-collapsed" );
          +	}
          +
          +	// The testItem.firstChild is the test name
          +	testTitle = testItem.firstChild;
          +
          +	testCounts = bad ?
          +		"<b class='failed'>" + bad + "</b>, " + "<b class='passed'>" + good + "</b>, " :
          +		"";
          +
          +	testTitle.innerHTML += " <b class='counts'>(" + testCounts +
          +		details.assertions.length + ")</b>";
          +
          +	if ( details.skipped ) {
          +		testItem.className = "skipped";
          +		skipped = document.createElement( "em" );
          +		skipped.className = "qunit-skipped-label";
          +		skipped.innerHTML = "skipped";
          +		testItem.insertBefore( skipped, testTitle );
          +	} else {
          +		addEvent( testTitle, "click", function() {
          +			toggleClass( assertList, "qunit-collapsed" );
          +		} );
          +
          +		testItem.className = bad ? "fail" : "pass";
          +
          +		time = document.createElement( "span" );
          +		time.className = "runtime";
          +		time.innerHTML = details.runtime + " ms";
          +		testItem.insertBefore( time, assertList );
          +	}
          +
          +	// Show the source of the test when showing assertions
          +	if ( details.source ) {
          +		sourceName = document.createElement( "p" );
          +		sourceName.innerHTML = "<strong>Source: </strong>" + details.source;
          +		addClass( sourceName, "qunit-source" );
          +		if ( bad === 0 ) {
          +			addClass( sourceName, "qunit-collapsed" );
          +		}
          +		addEvent( testTitle, "click", function() {
          +			toggleClass( sourceName, "qunit-collapsed" );
          +		} );
          +		testItem.appendChild( sourceName );
          +	}
          +} );
          +
          +// Avoid readyState issue with phantomjs
          +// Ref: #818
          +var notPhantom = ( function( p ) {
          +	return !( p && p.version && p.version.major > 0 );
          +} )( window.phantom );
          +
          +if ( notPhantom && document.readyState === "complete" ) {
          +	QUnit.load();
          +} else {
          +	addEvent( window, "load", QUnit.load );
          +}
          +
          +/*
          + * This file is a modified version of google-diff-match-patch's JavaScript implementation
          + * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js),
          + * modifications are licensed as more fully set forth in LICENSE.txt.
          + *
          + * The original source of google-diff-match-patch is attributable and licensed as follows:
          + *
          + * Copyright 2006 Google Inc.
          + * https://code.google.com/p/google-diff-match-patch/
          + *
          + * Licensed under the Apache License, Version 2.0 (the "License");
          + * you may not use this file except in compliance with the License.
          + * You may obtain a copy of the License at
          + *
          + * https://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + *
          + * More Info:
          + *  https://code.google.com/p/google-diff-match-patch/
          + *
          + * Usage: QUnit.diff(expected, actual)
          + *
          + */
          +QUnit.diff = ( function() {
          +	function DiffMatchPatch() {
          +	}
          +
          +	//  DIFF FUNCTIONS
          +
          +	/**
          +	 * The data structure representing a diff is an array of tuples:
          +	 * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
          +	 * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
          +	 */
          +	var DIFF_DELETE = -1,
          +		DIFF_INSERT = 1,
          +		DIFF_EQUAL = 0;
          +
          +	/**
          +	 * Find the differences between two texts.  Simplifies the problem by stripping
          +	 * any common prefix or suffix off the texts before diffing.
          +	 * @param {string} text1 Old string to be diffed.
          +	 * @param {string} text2 New string to be diffed.
          +	 * @param {boolean=} optChecklines Optional speedup flag. If present and false,
          +	 *     then don't run a line-level diff first to identify the changed areas.
          +	 *     Defaults to true, which does a faster, slightly less optimal diff.
          +	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
          +	 */
          +	DiffMatchPatch.prototype.DiffMain = function( text1, text2, optChecklines ) {
          +		var deadline, checklines, commonlength,
          +			commonprefix, commonsuffix, diffs;
          +
          +		// The diff must be complete in up to 1 second.
          +		deadline = ( new Date() ).getTime() + 1000;
          +
          +		// Check for null inputs.
          +		if ( text1 === null || text2 === null ) {
          +			throw new Error( "Null input. (DiffMain)" );
          +		}
          +
          +		// Check for equality (speedup).
          +		if ( text1 === text2 ) {
          +			if ( text1 ) {
          +				return [
          +					[ DIFF_EQUAL, text1 ]
          +				];
          +			}
          +			return [];
          +		}
          +
          +		if ( typeof optChecklines === "undefined" ) {
          +			optChecklines = true;
          +		}
          +
          +		checklines = optChecklines;
          +
          +		// Trim off common prefix (speedup).
          +		commonlength = this.diffCommonPrefix( text1, text2 );
          +		commonprefix = text1.substring( 0, commonlength );
          +		text1 = text1.substring( commonlength );
          +		text2 = text2.substring( commonlength );
          +
          +		// Trim off common suffix (speedup).
          +		commonlength = this.diffCommonSuffix( text1, text2 );
          +		commonsuffix = text1.substring( text1.length - commonlength );
          +		text1 = text1.substring( 0, text1.length - commonlength );
          +		text2 = text2.substring( 0, text2.length - commonlength );
          +
          +		// Compute the diff on the middle block.
          +		diffs = this.diffCompute( text1, text2, checklines, deadline );
          +
          +		// Restore the prefix and suffix.
          +		if ( commonprefix ) {
          +			diffs.unshift( [ DIFF_EQUAL, commonprefix ] );
          +		}
          +		if ( commonsuffix ) {
          +			diffs.push( [ DIFF_EQUAL, commonsuffix ] );
          +		}
          +		this.diffCleanupMerge( diffs );
          +		return diffs;
          +	};
          +
          +	/**
          +	 * Reduce the number of edits by eliminating operationally trivial equalities.
          +	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
          +	 */
          +	DiffMatchPatch.prototype.diffCleanupEfficiency = function( diffs ) {
          +		var changes, equalities, equalitiesLength, lastequality,
          +			pointer, preIns, preDel, postIns, postDel;
          +		changes = false;
          +		equalities = []; // Stack of indices where equalities are found.
          +		equalitiesLength = 0; // Keeping our own length var is faster in JS.
          +		/** @type {?string} */
          +		lastequality = null;
          +
          +		// Always equal to diffs[equalities[equalitiesLength - 1]][1]
          +		pointer = 0; // Index of current position.
          +
          +		// Is there an insertion operation before the last equality.
          +		preIns = false;
          +
          +		// Is there a deletion operation before the last equality.
          +		preDel = false;
          +
          +		// Is there an insertion operation after the last equality.
          +		postIns = false;
          +
          +		// Is there a deletion operation after the last equality.
          +		postDel = false;
          +		while ( pointer < diffs.length ) {
          +
          +			// Equality found.
          +			if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) {
          +				if ( diffs[ pointer ][ 1 ].length < 4 && ( postIns || postDel ) ) {
          +
          +					// Candidate found.
          +					equalities[ equalitiesLength++ ] = pointer;
          +					preIns = postIns;
          +					preDel = postDel;
          +					lastequality = diffs[ pointer ][ 1 ];
          +				} else {
          +
          +					// Not a candidate, and can never become one.
          +					equalitiesLength = 0;
          +					lastequality = null;
          +				}
          +				postIns = postDel = false;
          +
          +			// An insertion or deletion.
          +			} else {
          +
          +				if ( diffs[ pointer ][ 0 ] === DIFF_DELETE ) {
          +					postDel = true;
          +				} else {
          +					postIns = true;
          +				}
          +
          +				/*
          +				 * Five types to be split:
          +				 * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
          +				 * <ins>A</ins>X<ins>C</ins><del>D</del>
          +				 * <ins>A</ins><del>B</del>X<ins>C</ins>
          +				 * <ins>A</del>X<ins>C</ins><del>D</del>
          +				 * <ins>A</ins><del>B</del>X<del>C</del>
          +				 */
          +				if ( lastequality && ( ( preIns && preDel && postIns && postDel ) ||
          +						( ( lastequality.length < 2 ) &&
          +						( preIns + preDel + postIns + postDel ) === 3 ) ) ) {
          +
          +					// Duplicate record.
          +					diffs.splice(
          +						equalities[ equalitiesLength - 1 ],
          +						0,
          +						[ DIFF_DELETE, lastequality ]
          +					);
          +
          +					// Change second copy to insert.
          +					diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
          +					equalitiesLength--; // Throw away the equality we just deleted;
          +					lastequality = null;
          +					if ( preIns && preDel ) {
          +
          +						// No changes made which could affect previous entry, keep going.
          +						postIns = postDel = true;
          +						equalitiesLength = 0;
          +					} else {
          +						equalitiesLength--; // Throw away the previous equality.
          +						pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
          +						postIns = postDel = false;
          +					}
          +					changes = true;
          +				}
          +			}
          +			pointer++;
          +		}
          +
          +		if ( changes ) {
          +			this.diffCleanupMerge( diffs );
          +		}
          +	};
          +
          +	/**
          +	 * Convert a diff array into a pretty HTML report.
          +	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
          +	 * @param {integer} string to be beautified.
          +	 * @return {string} HTML representation.
          +	 */
          +	DiffMatchPatch.prototype.diffPrettyHtml = function( diffs ) {
          +		var op, data, x,
          +			html = [];
          +		for ( x = 0; x < diffs.length; x++ ) {
          +			op = diffs[ x ][ 0 ]; // Operation (insert, delete, equal)
          +			data = diffs[ x ][ 1 ]; // Text of change.
          +			switch ( op ) {
          +			case DIFF_INSERT:
          +				html[ x ] = "<ins>" + escapeText( data ) + "</ins>";
          +				break;
          +			case DIFF_DELETE:
          +				html[ x ] = "<del>" + escapeText( data ) + "</del>";
          +				break;
          +			case DIFF_EQUAL:
          +				html[ x ] = "<span>" + escapeText( data ) + "</span>";
          +				break;
          +			}
          +		}
          +		return html.join( "" );
          +	};
          +
          +	/**
          +	 * Determine the common prefix of two strings.
          +	 * @param {string} text1 First string.
          +	 * @param {string} text2 Second string.
          +	 * @return {number} The number of characters common to the start of each
          +	 *     string.
          +	 */
          +	DiffMatchPatch.prototype.diffCommonPrefix = function( text1, text2 ) {
          +		var pointermid, pointermax, pointermin, pointerstart;
          +
          +		// Quick check for common null cases.
          +		if ( !text1 || !text2 || text1.charAt( 0 ) !== text2.charAt( 0 ) ) {
          +			return 0;
          +		}
          +
          +		// Binary search.
          +		// Performance analysis: https://neil.fraser.name/news/2007/10/09/
          +		pointermin = 0;
          +		pointermax = Math.min( text1.length, text2.length );
          +		pointermid = pointermax;
          +		pointerstart = 0;
          +		while ( pointermin < pointermid ) {
          +			if ( text1.substring( pointerstart, pointermid ) ===
          +					text2.substring( pointerstart, pointermid ) ) {
          +				pointermin = pointermid;
          +				pointerstart = pointermin;
          +			} else {
          +				pointermax = pointermid;
          +			}
          +			pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
          +		}
          +		return pointermid;
          +	};
          +
          +	/**
          +	 * Determine the common suffix of two strings.
          +	 * @param {string} text1 First string.
          +	 * @param {string} text2 Second string.
          +	 * @return {number} The number of characters common to the end of each string.
          +	 */
          +	DiffMatchPatch.prototype.diffCommonSuffix = function( text1, text2 ) {
          +		var pointermid, pointermax, pointermin, pointerend;
          +
          +		// Quick check for common null cases.
          +		if ( !text1 ||
          +				!text2 ||
          +				text1.charAt( text1.length - 1 ) !== text2.charAt( text2.length - 1 ) ) {
          +			return 0;
          +		}
          +
          +		// Binary search.
          +		// Performance analysis: https://neil.fraser.name/news/2007/10/09/
          +		pointermin = 0;
          +		pointermax = Math.min( text1.length, text2.length );
          +		pointermid = pointermax;
          +		pointerend = 0;
          +		while ( pointermin < pointermid ) {
          +			if ( text1.substring( text1.length - pointermid, text1.length - pointerend ) ===
          +					text2.substring( text2.length - pointermid, text2.length - pointerend ) ) {
          +				pointermin = pointermid;
          +				pointerend = pointermin;
          +			} else {
          +				pointermax = pointermid;
          +			}
          +			pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
          +		}
          +		return pointermid;
          +	};
          +
          +	/**
          +	 * Find the differences between two texts.  Assumes that the texts do not
          +	 * have any common prefix or suffix.
          +	 * @param {string} text1 Old string to be diffed.
          +	 * @param {string} text2 New string to be diffed.
          +	 * @param {boolean} checklines Speedup flag.  If false, then don't run a
          +	 *     line-level diff first to identify the changed areas.
          +	 *     If true, then run a faster, slightly less optimal diff.
          +	 * @param {number} deadline Time when the diff should be complete by.
          +	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffCompute = function( text1, text2, checklines, deadline ) {
          +		var diffs, longtext, shorttext, i, hm,
          +			text1A, text2A, text1B, text2B,
          +			midCommon, diffsA, diffsB;
          +
          +		if ( !text1 ) {
          +
          +			// Just add some text (speedup).
          +			return [
          +				[ DIFF_INSERT, text2 ]
          +			];
          +		}
          +
          +		if ( !text2 ) {
          +
          +			// Just delete some text (speedup).
          +			return [
          +				[ DIFF_DELETE, text1 ]
          +			];
          +		}
          +
          +		longtext = text1.length > text2.length ? text1 : text2;
          +		shorttext = text1.length > text2.length ? text2 : text1;
          +		i = longtext.indexOf( shorttext );
          +		if ( i !== -1 ) {
          +
          +			// Shorter text is inside the longer text (speedup).
          +			diffs = [
          +				[ DIFF_INSERT, longtext.substring( 0, i ) ],
          +				[ DIFF_EQUAL, shorttext ],
          +				[ DIFF_INSERT, longtext.substring( i + shorttext.length ) ]
          +			];
          +
          +			// Swap insertions for deletions if diff is reversed.
          +			if ( text1.length > text2.length ) {
          +				diffs[ 0 ][ 0 ] = diffs[ 2 ][ 0 ] = DIFF_DELETE;
          +			}
          +			return diffs;
          +		}
          +
          +		if ( shorttext.length === 1 ) {
          +
          +			// Single character string.
          +			// After the previous speedup, the character can't be an equality.
          +			return [
          +				[ DIFF_DELETE, text1 ],
          +				[ DIFF_INSERT, text2 ]
          +			];
          +		}
          +
          +		// Check to see if the problem can be split in two.
          +		hm = this.diffHalfMatch( text1, text2 );
          +		if ( hm ) {
          +
          +			// A half-match was found, sort out the return data.
          +			text1A = hm[ 0 ];
          +			text1B = hm[ 1 ];
          +			text2A = hm[ 2 ];
          +			text2B = hm[ 3 ];
          +			midCommon = hm[ 4 ];
          +
          +			// Send both pairs off for separate processing.
          +			diffsA = this.DiffMain( text1A, text2A, checklines, deadline );
          +			diffsB = this.DiffMain( text1B, text2B, checklines, deadline );
          +
          +			// Merge the results.
          +			return diffsA.concat( [
          +				[ DIFF_EQUAL, midCommon ]
          +			], diffsB );
          +		}
          +
          +		if ( checklines && text1.length > 100 && text2.length > 100 ) {
          +			return this.diffLineMode( text1, text2, deadline );
          +		}
          +
          +		return this.diffBisect( text1, text2, deadline );
          +	};
          +
          +	/**
          +	 * Do the two texts share a substring which is at least half the length of the
          +	 * longer text?
          +	 * This speedup can produce non-minimal diffs.
          +	 * @param {string} text1 First string.
          +	 * @param {string} text2 Second string.
          +	 * @return {Array.<string>} Five element Array, containing the prefix of
          +	 *     text1, the suffix of text1, the prefix of text2, the suffix of
          +	 *     text2 and the common middle.  Or null if there was no match.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffHalfMatch = function( text1, text2 ) {
          +		var longtext, shorttext, dmp,
          +			text1A, text2B, text2A, text1B, midCommon,
          +			hm1, hm2, hm;
          +
          +		longtext = text1.length > text2.length ? text1 : text2;
          +		shorttext = text1.length > text2.length ? text2 : text1;
          +		if ( longtext.length < 4 || shorttext.length * 2 < longtext.length ) {
          +			return null; // Pointless.
          +		}
          +		dmp = this; // 'this' becomes 'window' in a closure.
          +
          +		/**
          +		 * Does a substring of shorttext exist within longtext such that the substring
          +		 * is at least half the length of longtext?
          +		 * Closure, but does not reference any external variables.
          +		 * @param {string} longtext Longer string.
          +		 * @param {string} shorttext Shorter string.
          +		 * @param {number} i Start index of quarter length substring within longtext.
          +		 * @return {Array.<string>} Five element Array, containing the prefix of
          +		 *     longtext, the suffix of longtext, the prefix of shorttext, the suffix
          +		 *     of shorttext and the common middle.  Or null if there was no match.
          +		 * @private
          +		 */
          +		function diffHalfMatchI( longtext, shorttext, i ) {
          +			var seed, j, bestCommon, prefixLength, suffixLength,
          +				bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB;
          +
          +			// Start with a 1/4 length substring at position i as a seed.
          +			seed = longtext.substring( i, i + Math.floor( longtext.length / 4 ) );
          +			j = -1;
          +			bestCommon = "";
          +			while ( ( j = shorttext.indexOf( seed, j + 1 ) ) !== -1 ) {
          +				prefixLength = dmp.diffCommonPrefix( longtext.substring( i ),
          +					shorttext.substring( j ) );
          +				suffixLength = dmp.diffCommonSuffix( longtext.substring( 0, i ),
          +					shorttext.substring( 0, j ) );
          +				if ( bestCommon.length < suffixLength + prefixLength ) {
          +					bestCommon = shorttext.substring( j - suffixLength, j ) +
          +						shorttext.substring( j, j + prefixLength );
          +					bestLongtextA = longtext.substring( 0, i - suffixLength );
          +					bestLongtextB = longtext.substring( i + prefixLength );
          +					bestShorttextA = shorttext.substring( 0, j - suffixLength );
          +					bestShorttextB = shorttext.substring( j + prefixLength );
          +				}
          +			}
          +			if ( bestCommon.length * 2 >= longtext.length ) {
          +				return [ bestLongtextA, bestLongtextB,
          +					bestShorttextA, bestShorttextB, bestCommon
          +				];
          +			} else {
          +				return null;
          +			}
          +		}
          +
          +		// First check if the second quarter is the seed for a half-match.
          +		hm1 = diffHalfMatchI( longtext, shorttext,
          +			Math.ceil( longtext.length / 4 ) );
          +
          +		// Check again based on the third quarter.
          +		hm2 = diffHalfMatchI( longtext, shorttext,
          +			Math.ceil( longtext.length / 2 ) );
          +		if ( !hm1 && !hm2 ) {
          +			return null;
          +		} else if ( !hm2 ) {
          +			hm = hm1;
          +		} else if ( !hm1 ) {
          +			hm = hm2;
          +		} else {
          +
          +			// Both matched.  Select the longest.
          +			hm = hm1[ 4 ].length > hm2[ 4 ].length ? hm1 : hm2;
          +		}
          +
          +		// A half-match was found, sort out the return data.
          +		text1A, text1B, text2A, text2B;
          +		if ( text1.length > text2.length ) {
          +			text1A = hm[ 0 ];
          +			text1B = hm[ 1 ];
          +			text2A = hm[ 2 ];
          +			text2B = hm[ 3 ];
          +		} else {
          +			text2A = hm[ 0 ];
          +			text2B = hm[ 1 ];
          +			text1A = hm[ 2 ];
          +			text1B = hm[ 3 ];
          +		}
          +		midCommon = hm[ 4 ];
          +		return [ text1A, text1B, text2A, text2B, midCommon ];
          +	};
          +
          +	/**
          +	 * Do a quick line-level diff on both strings, then rediff the parts for
          +	 * greater accuracy.
          +	 * This speedup can produce non-minimal diffs.
          +	 * @param {string} text1 Old string to be diffed.
          +	 * @param {string} text2 New string to be diffed.
          +	 * @param {number} deadline Time when the diff should be complete by.
          +	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffLineMode = function( text1, text2, deadline ) {
          +		var a, diffs, linearray, pointer, countInsert,
          +			countDelete, textInsert, textDelete, j;
          +
          +		// Scan the text on a line-by-line basis first.
          +		a = this.diffLinesToChars( text1, text2 );
          +		text1 = a.chars1;
          +		text2 = a.chars2;
          +		linearray = a.lineArray;
          +
          +		diffs = this.DiffMain( text1, text2, false, deadline );
          +
          +		// Convert the diff back to original text.
          +		this.diffCharsToLines( diffs, linearray );
          +
          +		// Eliminate freak matches (e.g. blank lines)
          +		this.diffCleanupSemantic( diffs );
          +
          +		// Rediff any replacement blocks, this time character-by-character.
          +		// Add a dummy entry at the end.
          +		diffs.push( [ DIFF_EQUAL, "" ] );
          +		pointer = 0;
          +		countDelete = 0;
          +		countInsert = 0;
          +		textDelete = "";
          +		textInsert = "";
          +		while ( pointer < diffs.length ) {
          +			switch ( diffs[ pointer ][ 0 ] ) {
          +			case DIFF_INSERT:
          +				countInsert++;
          +				textInsert += diffs[ pointer ][ 1 ];
          +				break;
          +			case DIFF_DELETE:
          +				countDelete++;
          +				textDelete += diffs[ pointer ][ 1 ];
          +				break;
          +			case DIFF_EQUAL:
          +
          +				// Upon reaching an equality, check for prior redundancies.
          +				if ( countDelete >= 1 && countInsert >= 1 ) {
          +
          +					// Delete the offending records and add the merged ones.
          +					diffs.splice( pointer - countDelete - countInsert,
          +						countDelete + countInsert );
          +					pointer = pointer - countDelete - countInsert;
          +					a = this.DiffMain( textDelete, textInsert, false, deadline );
          +					for ( j = a.length - 1; j >= 0; j-- ) {
          +						diffs.splice( pointer, 0, a[ j ] );
          +					}
          +					pointer = pointer + a.length;
          +				}
          +				countInsert = 0;
          +				countDelete = 0;
          +				textDelete = "";
          +				textInsert = "";
          +				break;
          +			}
          +			pointer++;
          +		}
          +		diffs.pop(); // Remove the dummy entry at the end.
          +
          +		return diffs;
          +	};
          +
          +	/**
          +	 * Find the 'middle snake' of a diff, split the problem in two
          +	 * and return the recursively constructed diff.
          +	 * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
          +	 * @param {string} text1 Old string to be diffed.
          +	 * @param {string} text2 New string to be diffed.
          +	 * @param {number} deadline Time at which to bail if not yet complete.
          +	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffBisect = function( text1, text2, deadline ) {
          +		var text1Length, text2Length, maxD, vOffset, vLength,
          +			v1, v2, x, delta, front, k1start, k1end, k2start,
          +			k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2;
          +
          +		// Cache the text lengths to prevent multiple calls.
          +		text1Length = text1.length;
          +		text2Length = text2.length;
          +		maxD = Math.ceil( ( text1Length + text2Length ) / 2 );
          +		vOffset = maxD;
          +		vLength = 2 * maxD;
          +		v1 = new Array( vLength );
          +		v2 = new Array( vLength );
          +
          +		// Setting all elements to -1 is faster in Chrome & Firefox than mixing
          +		// integers and undefined.
          +		for ( x = 0; x < vLength; x++ ) {
          +			v1[ x ] = -1;
          +			v2[ x ] = -1;
          +		}
          +		v1[ vOffset + 1 ] = 0;
          +		v2[ vOffset + 1 ] = 0;
          +		delta = text1Length - text2Length;
          +
          +		// If the total number of characters is odd, then the front path will collide
          +		// with the reverse path.
          +		front = ( delta % 2 !== 0 );
          +
          +		// Offsets for start and end of k loop.
          +		// Prevents mapping of space beyond the grid.
          +		k1start = 0;
          +		k1end = 0;
          +		k2start = 0;
          +		k2end = 0;
          +		for ( d = 0; d < maxD; d++ ) {
          +
          +			// Bail out if deadline is reached.
          +			if ( ( new Date() ).getTime() > deadline ) {
          +				break;
          +			}
          +
          +			// Walk the front path one step.
          +			for ( k1 = -d + k1start; k1 <= d - k1end; k1 += 2 ) {
          +				k1Offset = vOffset + k1;
          +				if ( k1 === -d || ( k1 !== d && v1[ k1Offset - 1 ] < v1[ k1Offset + 1 ] ) ) {
          +					x1 = v1[ k1Offset + 1 ];
          +				} else {
          +					x1 = v1[ k1Offset - 1 ] + 1;
          +				}
          +				y1 = x1 - k1;
          +				while ( x1 < text1Length && y1 < text2Length &&
          +					text1.charAt( x1 ) === text2.charAt( y1 ) ) {
          +					x1++;
          +					y1++;
          +				}
          +				v1[ k1Offset ] = x1;
          +				if ( x1 > text1Length ) {
          +
          +					// Ran off the right of the graph.
          +					k1end += 2;
          +				} else if ( y1 > text2Length ) {
          +
          +					// Ran off the bottom of the graph.
          +					k1start += 2;
          +				} else if ( front ) {
          +					k2Offset = vOffset + delta - k1;
          +					if ( k2Offset >= 0 && k2Offset < vLength && v2[ k2Offset ] !== -1 ) {
          +
          +						// Mirror x2 onto top-left coordinate system.
          +						x2 = text1Length - v2[ k2Offset ];
          +						if ( x1 >= x2 ) {
          +
          +							// Overlap detected.
          +							return this.diffBisectSplit( text1, text2, x1, y1, deadline );
          +						}
          +					}
          +				}
          +			}
          +
          +			// Walk the reverse path one step.
          +			for ( k2 = -d + k2start; k2 <= d - k2end; k2 += 2 ) {
          +				k2Offset = vOffset + k2;
          +				if ( k2 === -d || ( k2 !== d && v2[ k2Offset - 1 ] < v2[ k2Offset + 1 ] ) ) {
          +					x2 = v2[ k2Offset + 1 ];
          +				} else {
          +					x2 = v2[ k2Offset - 1 ] + 1;
          +				}
          +				y2 = x2 - k2;
          +				while ( x2 < text1Length && y2 < text2Length &&
          +					text1.charAt( text1Length - x2 - 1 ) ===
          +					text2.charAt( text2Length - y2 - 1 ) ) {
          +					x2++;
          +					y2++;
          +				}
          +				v2[ k2Offset ] = x2;
          +				if ( x2 > text1Length ) {
          +
          +					// Ran off the left of the graph.
          +					k2end += 2;
          +				} else if ( y2 > text2Length ) {
          +
          +					// Ran off the top of the graph.
          +					k2start += 2;
          +				} else if ( !front ) {
          +					k1Offset = vOffset + delta - k2;
          +					if ( k1Offset >= 0 && k1Offset < vLength && v1[ k1Offset ] !== -1 ) {
          +						x1 = v1[ k1Offset ];
          +						y1 = vOffset + x1 - k1Offset;
          +
          +						// Mirror x2 onto top-left coordinate system.
          +						x2 = text1Length - x2;
          +						if ( x1 >= x2 ) {
          +
          +							// Overlap detected.
          +							return this.diffBisectSplit( text1, text2, x1, y1, deadline );
          +						}
          +					}
          +				}
          +			}
          +		}
          +
          +		// Diff took too long and hit the deadline or
          +		// number of diffs equals number of characters, no commonality at all.
          +		return [
          +			[ DIFF_DELETE, text1 ],
          +			[ DIFF_INSERT, text2 ]
          +		];
          +	};
          +
          +	/**
          +	 * Given the location of the 'middle snake', split the diff in two parts
          +	 * and recurse.
          +	 * @param {string} text1 Old string to be diffed.
          +	 * @param {string} text2 New string to be diffed.
          +	 * @param {number} x Index of split point in text1.
          +	 * @param {number} y Index of split point in text2.
          +	 * @param {number} deadline Time at which to bail if not yet complete.
          +	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffBisectSplit = function( text1, text2, x, y, deadline ) {
          +		var text1a, text1b, text2a, text2b, diffs, diffsb;
          +		text1a = text1.substring( 0, x );
          +		text2a = text2.substring( 0, y );
          +		text1b = text1.substring( x );
          +		text2b = text2.substring( y );
          +
          +		// Compute both diffs serially.
          +		diffs = this.DiffMain( text1a, text2a, false, deadline );
          +		diffsb = this.DiffMain( text1b, text2b, false, deadline );
          +
          +		return diffs.concat( diffsb );
          +	};
          +
          +	/**
          +	 * Reduce the number of edits by eliminating semantically trivial equalities.
          +	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
          +	 */
          +	DiffMatchPatch.prototype.diffCleanupSemantic = function( diffs ) {
          +		var changes, equalities, equalitiesLength, lastequality,
          +			pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1,
          +			lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2;
          +		changes = false;
          +		equalities = []; // Stack of indices where equalities are found.
          +		equalitiesLength = 0; // Keeping our own length var is faster in JS.
          +		/** @type {?string} */
          +		lastequality = null;
          +
          +		// Always equal to diffs[equalities[equalitiesLength - 1]][1]
          +		pointer = 0; // Index of current position.
          +
          +		// Number of characters that changed prior to the equality.
          +		lengthInsertions1 = 0;
          +		lengthDeletions1 = 0;
          +
          +		// Number of characters that changed after the equality.
          +		lengthInsertions2 = 0;
          +		lengthDeletions2 = 0;
          +		while ( pointer < diffs.length ) {
          +			if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) { // Equality found.
          +				equalities[ equalitiesLength++ ] = pointer;
          +				lengthInsertions1 = lengthInsertions2;
          +				lengthDeletions1 = lengthDeletions2;
          +				lengthInsertions2 = 0;
          +				lengthDeletions2 = 0;
          +				lastequality = diffs[ pointer ][ 1 ];
          +			} else { // An insertion or deletion.
          +				if ( diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
          +					lengthInsertions2 += diffs[ pointer ][ 1 ].length;
          +				} else {
          +					lengthDeletions2 += diffs[ pointer ][ 1 ].length;
          +				}
          +
          +				// Eliminate an equality that is smaller or equal to the edits on both
          +				// sides of it.
          +				if ( lastequality && ( lastequality.length <=
          +						Math.max( lengthInsertions1, lengthDeletions1 ) ) &&
          +						( lastequality.length <= Math.max( lengthInsertions2,
          +							lengthDeletions2 ) ) ) {
          +
          +					// Duplicate record.
          +					diffs.splice(
          +						equalities[ equalitiesLength - 1 ],
          +						0,
          +						[ DIFF_DELETE, lastequality ]
          +					);
          +
          +					// Change second copy to insert.
          +					diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
          +
          +					// Throw away the equality we just deleted.
          +					equalitiesLength--;
          +
          +					// Throw away the previous equality (it needs to be reevaluated).
          +					equalitiesLength--;
          +					pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
          +
          +					// Reset the counters.
          +					lengthInsertions1 = 0;
          +					lengthDeletions1 = 0;
          +					lengthInsertions2 = 0;
          +					lengthDeletions2 = 0;
          +					lastequality = null;
          +					changes = true;
          +				}
          +			}
          +			pointer++;
          +		}
          +
          +		// Normalize the diff.
          +		if ( changes ) {
          +			this.diffCleanupMerge( diffs );
          +		}
          +
          +		// Find any overlaps between deletions and insertions.
          +		// e.g: <del>abcxxx</del><ins>xxxdef</ins>
          +		//   -> <del>abc</del>xxx<ins>def</ins>
          +		// e.g: <del>xxxabc</del><ins>defxxx</ins>
          +		//   -> <ins>def</ins>xxx<del>abc</del>
          +		// Only extract an overlap if it is as big as the edit ahead or behind it.
          +		pointer = 1;
          +		while ( pointer < diffs.length ) {
          +			if ( diffs[ pointer - 1 ][ 0 ] === DIFF_DELETE &&
          +					diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
          +				deletion = diffs[ pointer - 1 ][ 1 ];
          +				insertion = diffs[ pointer ][ 1 ];
          +				overlapLength1 = this.diffCommonOverlap( deletion, insertion );
          +				overlapLength2 = this.diffCommonOverlap( insertion, deletion );
          +				if ( overlapLength1 >= overlapLength2 ) {
          +					if ( overlapLength1 >= deletion.length / 2 ||
          +							overlapLength1 >= insertion.length / 2 ) {
          +
          +						// Overlap found.  Insert an equality and trim the surrounding edits.
          +						diffs.splice(
          +							pointer,
          +							0,
          +							[ DIFF_EQUAL, insertion.substring( 0, overlapLength1 ) ]
          +						);
          +						diffs[ pointer - 1 ][ 1 ] =
          +							deletion.substring( 0, deletion.length - overlapLength1 );
          +						diffs[ pointer + 1 ][ 1 ] = insertion.substring( overlapLength1 );
          +						pointer++;
          +					}
          +				} else {
          +					if ( overlapLength2 >= deletion.length / 2 ||
          +							overlapLength2 >= insertion.length / 2 ) {
          +
          +						// Reverse overlap found.
          +						// Insert an equality and swap and trim the surrounding edits.
          +						diffs.splice(
          +							pointer,
          +							0,
          +							[ DIFF_EQUAL, deletion.substring( 0, overlapLength2 ) ]
          +						);
          +
          +						diffs[ pointer - 1 ][ 0 ] = DIFF_INSERT;
          +						diffs[ pointer - 1 ][ 1 ] =
          +							insertion.substring( 0, insertion.length - overlapLength2 );
          +						diffs[ pointer + 1 ][ 0 ] = DIFF_DELETE;
          +						diffs[ pointer + 1 ][ 1 ] =
          +							deletion.substring( overlapLength2 );
          +						pointer++;
          +					}
          +				}
          +				pointer++;
          +			}
          +			pointer++;
          +		}
          +	};
          +
          +	/**
          +	 * Determine if the suffix of one string is the prefix of another.
          +	 * @param {string} text1 First string.
          +	 * @param {string} text2 Second string.
          +	 * @return {number} The number of characters common to the end of the first
          +	 *     string and the start of the second string.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffCommonOverlap = function( text1, text2 ) {
          +		var text1Length, text2Length, textLength,
          +			best, length, pattern, found;
          +
          +		// Cache the text lengths to prevent multiple calls.
          +		text1Length = text1.length;
          +		text2Length = text2.length;
          +
          +		// Eliminate the null case.
          +		if ( text1Length === 0 || text2Length === 0 ) {
          +			return 0;
          +		}
          +
          +		// Truncate the longer string.
          +		if ( text1Length > text2Length ) {
          +			text1 = text1.substring( text1Length - text2Length );
          +		} else if ( text1Length < text2Length ) {
          +			text2 = text2.substring( 0, text1Length );
          +		}
          +		textLength = Math.min( text1Length, text2Length );
          +
          +		// Quick check for the worst case.
          +		if ( text1 === text2 ) {
          +			return textLength;
          +		}
          +
          +		// Start by looking for a single character match
          +		// and increase length until no match is found.
          +		// Performance analysis: https://neil.fraser.name/news/2010/11/04/
          +		best = 0;
          +		length = 1;
          +		while ( true ) {
          +			pattern = text1.substring( textLength - length );
          +			found = text2.indexOf( pattern );
          +			if ( found === -1 ) {
          +				return best;
          +			}
          +			length += found;
          +			if ( found === 0 || text1.substring( textLength - length ) ===
          +					text2.substring( 0, length ) ) {
          +				best = length;
          +				length++;
          +			}
          +		}
          +	};
          +
          +	/**
          +	 * Split two texts into an array of strings.  Reduce the texts to a string of
          +	 * hashes where each Unicode character represents one line.
          +	 * @param {string} text1 First string.
          +	 * @param {string} text2 Second string.
          +	 * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}
          +	 *     An object containing the encoded text1, the encoded text2 and
          +	 *     the array of unique strings.
          +	 *     The zeroth element of the array of unique strings is intentionally blank.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffLinesToChars = function( text1, text2 ) {
          +		var lineArray, lineHash, chars1, chars2;
          +		lineArray = []; // E.g. lineArray[4] === 'Hello\n'
          +		lineHash = {};  // E.g. lineHash['Hello\n'] === 4
          +
          +		// '\x00' is a valid character, but various debuggers don't like it.
          +		// So we'll insert a junk entry to avoid generating a null character.
          +		lineArray[ 0 ] = "";
          +
          +		/**
          +		 * Split a text into an array of strings.  Reduce the texts to a string of
          +		 * hashes where each Unicode character represents one line.
          +		 * Modifies linearray and linehash through being a closure.
          +		 * @param {string} text String to encode.
          +		 * @return {string} Encoded string.
          +		 * @private
          +		 */
          +		function diffLinesToCharsMunge( text ) {
          +			var chars, lineStart, lineEnd, lineArrayLength, line;
          +			chars = "";
          +
          +			// Walk the text, pulling out a substring for each line.
          +			// text.split('\n') would would temporarily double our memory footprint.
          +			// Modifying text would create many large strings to garbage collect.
          +			lineStart = 0;
          +			lineEnd = -1;
          +
          +			// Keeping our own length variable is faster than looking it up.
          +			lineArrayLength = lineArray.length;
          +			while ( lineEnd < text.length - 1 ) {
          +				lineEnd = text.indexOf( "\n", lineStart );
          +				if ( lineEnd === -1 ) {
          +					lineEnd = text.length - 1;
          +				}
          +				line = text.substring( lineStart, lineEnd + 1 );
          +				lineStart = lineEnd + 1;
          +
          +				if ( lineHash.hasOwnProperty ? lineHash.hasOwnProperty( line ) :
          +							( lineHash[ line ] !== undefined ) ) {
          +					chars += String.fromCharCode( lineHash[ line ] );
          +				} else {
          +					chars += String.fromCharCode( lineArrayLength );
          +					lineHash[ line ] = lineArrayLength;
          +					lineArray[ lineArrayLength++ ] = line;
          +				}
          +			}
          +			return chars;
          +		}
          +
          +		chars1 = diffLinesToCharsMunge( text1 );
          +		chars2 = diffLinesToCharsMunge( text2 );
          +		return {
          +			chars1: chars1,
          +			chars2: chars2,
          +			lineArray: lineArray
          +		};
          +	};
          +
          +	/**
          +	 * Rehydrate the text in a diff from a string of line hashes to real lines of
          +	 * text.
          +	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
          +	 * @param {!Array.<string>} lineArray Array of unique strings.
          +	 * @private
          +	 */
          +	DiffMatchPatch.prototype.diffCharsToLines = function( diffs, lineArray ) {
          +		var x, chars, text, y;
          +		for ( x = 0; x < diffs.length; x++ ) {
          +			chars = diffs[ x ][ 1 ];
          +			text = [];
          +			for ( y = 0; y < chars.length; y++ ) {
          +				text[ y ] = lineArray[ chars.charCodeAt( y ) ];
          +			}
          +			diffs[ x ][ 1 ] = text.join( "" );
          +		}
          +	};
          +
          +	/**
          +	 * Reorder and merge like edit sections.  Merge equalities.
          +	 * Any edit section can move as long as it doesn't cross an equality.
          +	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
          +	 */
          +	DiffMatchPatch.prototype.diffCleanupMerge = function( diffs ) {
          +		var pointer, countDelete, countInsert, textInsert, textDelete,
          +			commonlength, changes, diffPointer, position;
          +		diffs.push( [ DIFF_EQUAL, "" ] ); // Add a dummy entry at the end.
          +		pointer = 0;
          +		countDelete = 0;
          +		countInsert = 0;
          +		textDelete = "";
          +		textInsert = "";
          +		commonlength;
          +		while ( pointer < diffs.length ) {
          +			switch ( diffs[ pointer ][ 0 ] ) {
          +			case DIFF_INSERT:
          +				countInsert++;
          +				textInsert += diffs[ pointer ][ 1 ];
          +				pointer++;
          +				break;
          +			case DIFF_DELETE:
          +				countDelete++;
          +				textDelete += diffs[ pointer ][ 1 ];
          +				pointer++;
          +				break;
          +			case DIFF_EQUAL:
          +
          +				// Upon reaching an equality, check for prior redundancies.
          +				if ( countDelete + countInsert > 1 ) {
          +					if ( countDelete !== 0 && countInsert !== 0 ) {
          +
          +						// Factor out any common prefixes.
          +						commonlength = this.diffCommonPrefix( textInsert, textDelete );
          +						if ( commonlength !== 0 ) {
          +							if ( ( pointer - countDelete - countInsert ) > 0 &&
          +									diffs[ pointer - countDelete - countInsert - 1 ][ 0 ] ===
          +									DIFF_EQUAL ) {
          +								diffs[ pointer - countDelete - countInsert - 1 ][ 1 ] +=
          +									textInsert.substring( 0, commonlength );
          +							} else {
          +								diffs.splice( 0, 0, [ DIFF_EQUAL,
          +									textInsert.substring( 0, commonlength )
          +								] );
          +								pointer++;
          +							}
          +							textInsert = textInsert.substring( commonlength );
          +							textDelete = textDelete.substring( commonlength );
          +						}
          +
          +						// Factor out any common suffixies.
          +						commonlength = this.diffCommonSuffix( textInsert, textDelete );
          +						if ( commonlength !== 0 ) {
          +							diffs[ pointer ][ 1 ] = textInsert.substring( textInsert.length -
          +									commonlength ) + diffs[ pointer ][ 1 ];
          +							textInsert = textInsert.substring( 0, textInsert.length -
          +								commonlength );
          +							textDelete = textDelete.substring( 0, textDelete.length -
          +								commonlength );
          +						}
          +					}
          +
          +					// Delete the offending records and add the merged ones.
          +					if ( countDelete === 0 ) {
          +						diffs.splice( pointer - countInsert,
          +							countDelete + countInsert, [ DIFF_INSERT, textInsert ] );
          +					} else if ( countInsert === 0 ) {
          +						diffs.splice( pointer - countDelete,
          +							countDelete + countInsert, [ DIFF_DELETE, textDelete ] );
          +					} else {
          +						diffs.splice(
          +							pointer - countDelete - countInsert,
          +							countDelete + countInsert,
          +							[ DIFF_DELETE, textDelete ], [ DIFF_INSERT, textInsert ]
          +						);
          +					}
          +					pointer = pointer - countDelete - countInsert +
          +						( countDelete ? 1 : 0 ) + ( countInsert ? 1 : 0 ) + 1;
          +				} else if ( pointer !== 0 && diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL ) {
          +
          +					// Merge this equality with the previous one.
          +					diffs[ pointer - 1 ][ 1 ] += diffs[ pointer ][ 1 ];
          +					diffs.splice( pointer, 1 );
          +				} else {
          +					pointer++;
          +				}
          +				countInsert = 0;
          +				countDelete = 0;
          +				textDelete = "";
          +				textInsert = "";
          +				break;
          +			}
          +		}
          +		if ( diffs[ diffs.length - 1 ][ 1 ] === "" ) {
          +			diffs.pop(); // Remove the dummy entry at the end.
          +		}
          +
          +		// Second pass: look for single edits surrounded on both sides by equalities
          +		// which can be shifted sideways to eliminate an equality.
          +		// e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
          +		changes = false;
          +		pointer = 1;
          +
          +		// Intentionally ignore the first and last element (don't need checking).
          +		while ( pointer < diffs.length - 1 ) {
          +			if ( diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL &&
          +					diffs[ pointer + 1 ][ 0 ] === DIFF_EQUAL ) {
          +
          +				diffPointer = diffs[ pointer ][ 1 ];
          +				position = diffPointer.substring(
          +					diffPointer.length - diffs[ pointer - 1 ][ 1 ].length
          +				);
          +
          +				// This is a single edit surrounded by equalities.
          +				if ( position === diffs[ pointer - 1 ][ 1 ] ) {
          +
          +					// Shift the edit over the previous equality.
          +					diffs[ pointer ][ 1 ] = diffs[ pointer - 1 ][ 1 ] +
          +						diffs[ pointer ][ 1 ].substring( 0, diffs[ pointer ][ 1 ].length -
          +							diffs[ pointer - 1 ][ 1 ].length );
          +					diffs[ pointer + 1 ][ 1 ] =
          +						diffs[ pointer - 1 ][ 1 ] + diffs[ pointer + 1 ][ 1 ];
          +					diffs.splice( pointer - 1, 1 );
          +					changes = true;
          +				} else if ( diffPointer.substring( 0, diffs[ pointer + 1 ][ 1 ].length ) ===
          +						diffs[ pointer + 1 ][ 1 ] ) {
          +
          +					// Shift the edit over the next equality.
          +					diffs[ pointer - 1 ][ 1 ] += diffs[ pointer + 1 ][ 1 ];
          +					diffs[ pointer ][ 1 ] =
          +						diffs[ pointer ][ 1 ].substring( diffs[ pointer + 1 ][ 1 ].length ) +
          +						diffs[ pointer + 1 ][ 1 ];
          +					diffs.splice( pointer + 1, 1 );
          +					changes = true;
          +				}
          +			}
          +			pointer++;
          +		}
          +
          +		// If shifts were made, the diff needs reordering and another shift sweep.
          +		if ( changes ) {
          +			this.diffCleanupMerge( diffs );
          +		}
          +	};
          +
          +	return function( o, n ) {
          +		var diff, output, text;
          +		diff = new DiffMatchPatch();
          +		output = diff.DiffMain( o, n );
          +		diff.diffCleanupEfficiency( output );
          +		text = diff.diffPrettyHtml( output );
          +
          +		return text;
          +	};
          +}() );
          +
          +}() );
          diff --git a/public/theme/select2/vendor/jquery-2.1.0.js b/public/theme/select2/vendor/jquery-2.1.0.js
          new file mode 100644
          index 0000000..d405ae7
          --- /dev/null
          +++ b/public/theme/select2/vendor/jquery-2.1.0.js
          @@ -0,0 +1,9111 @@
          +/*!
          + * jQuery JavaScript Library v2.1.0
          + * http://jquery.com/
          + *
          + * Includes Sizzle.js
          + * http://sizzlejs.com/
          + *
          + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
          + * Released under the MIT license
          + * http://jquery.org/license
          + *
          + * Date: 2014-01-23T21:10Z
          + */
          +
          +(function( global, factory ) {
          +
          +    if ( typeof module === "object" && typeof module.exports === "object" ) {
          +        // For CommonJS and CommonJS-like environments where a proper window is present,
          +        // execute the factory and get jQuery
          +        // For environments that do not inherently posses a window with a document
          +        // (such as Node.js), expose a jQuery-making factory as module.exports
          +        // This accentuates the need for the creation of a real window
          +        // e.g. var jQuery = require("jquery")(window);
          +        // See ticket #14549 for more info
          +        module.exports = global.document ?
          +            factory( global, true ) :
          +            function( w ) {
          +                if ( !w.document ) {
          +                    throw new Error( "jQuery requires a window with a document" );
          +                }
          +                return factory( w );
          +            };
          +    } else {
          +        factory( global );
          +    }
          +
          +// Pass this if window is not defined yet
          +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
          +
          +// Can't do this because several apps including ASP.NET trace
          +// the stack via arguments.caller.callee and Firefox dies if
          +// you try to trace through "use strict" call chains. (#13335)
          +// Support: Firefox 18+
          +//
          +
          +    var arr = [];
          +
          +    var slice = arr.slice;
          +
          +    var concat = arr.concat;
          +
          +    var push = arr.push;
          +
          +    var indexOf = arr.indexOf;
          +
          +    var class2type = {};
          +
          +    var toString = class2type.toString;
          +
          +    var hasOwn = class2type.hasOwnProperty;
          +
          +    var trim = "".trim;
          +
          +    var support = {};
          +
          +
          +
          +    var
          +    // Use the correct document accordingly with window argument (sandbox)
          +        document = window.document,
          +
          +        version = "2.1.0",
          +
          +    // Define a local copy of jQuery
          +        jQuery = function( selector, context ) {
          +            // The jQuery object is actually just the init constructor 'enhanced'
          +            // Need init if jQuery is called (just allow error to be thrown if not included)
          +            return new jQuery.fn.init( selector, context );
          +        },
          +
          +    // Matches dashed string for camelizing
          +        rmsPrefix = /^-ms-/,
          +        rdashAlpha = /-([\da-z])/gi,
          +
          +    // Used by jQuery.camelCase as callback to replace()
          +        fcamelCase = function( all, letter ) {
          +            return letter.toUpperCase();
          +        };
          +
          +    jQuery.fn = jQuery.prototype = {
          +        // The current version of jQuery being used
          +        jquery: version,
          +
          +        constructor: jQuery,
          +
          +        // Start with an empty selector
          +        selector: "",
          +
          +        // The default length of a jQuery object is 0
          +        length: 0,
          +
          +        toArray: function() {
          +            return slice.call( this );
          +        },
          +
          +        // Get the Nth element in the matched element set OR
          +        // Get the whole matched element set as a clean array
          +        get: function( num ) {
          +            return num != null ?
          +
          +                // Return a 'clean' array
          +                ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
          +
          +                // Return just the object
          +                slice.call( this );
          +        },
          +
          +        // Take an array of elements and push it onto the stack
          +        // (returning the new matched element set)
          +        pushStack: function( elems ) {
          +
          +            // Build a new jQuery matched element set
          +            var ret = jQuery.merge( this.constructor(), elems );
          +
          +            // Add the old object onto the stack (as a reference)
          +            ret.prevObject = this;
          +            ret.context = this.context;
          +
          +            // Return the newly-formed element set
          +            return ret;
          +        },
          +
          +        // Execute a callback for every element in the matched set.
          +        // (You can seed the arguments with an array of args, but this is
          +        // only used internally.)
          +        each: function( callback, args ) {
          +            return jQuery.each( this, callback, args );
          +        },
          +
          +        map: function( callback ) {
          +            return this.pushStack( jQuery.map(this, function( elem, i ) {
          +                return callback.call( elem, i, elem );
          +            }));
          +        },
          +
          +        slice: function() {
          +            return this.pushStack( slice.apply( this, arguments ) );
          +        },
          +
          +        first: function() {
          +            return this.eq( 0 );
          +        },
          +
          +        last: function() {
          +            return this.eq( -1 );
          +        },
          +
          +        eq: function( i ) {
          +            var len = this.length,
          +                j = +i + ( i < 0 ? len : 0 );
          +            return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
          +        },
          +
          +        end: function() {
          +            return this.prevObject || this.constructor(null);
          +        },
          +
          +        // For internal use only.
          +        // Behaves like an Array's method, not like a jQuery method.
          +        push: push,
          +        sort: arr.sort,
          +        splice: arr.splice
          +    };
          +
          +    jQuery.extend = jQuery.fn.extend = function() {
          +        var options, name, src, copy, copyIsArray, clone,
          +            target = arguments[0] || {},
          +            i = 1,
          +            length = arguments.length,
          +            deep = false;
          +
          +        // Handle a deep copy situation
          +        if ( typeof target === "boolean" ) {
          +            deep = target;
          +
          +            // skip the boolean and the target
          +            target = arguments[ i ] || {};
          +            i++;
          +        }
          +
          +        // Handle case when target is a string or something (possible in deep copy)
          +        if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
          +            target = {};
          +        }
          +
          +        // extend jQuery itself if only one argument is passed
          +        if ( i === length ) {
          +            target = this;
          +            i--;
          +        }
          +
          +        for ( ; i < length; i++ ) {
          +            // Only deal with non-null/undefined values
          +            if ( (options = arguments[ i ]) != null ) {
          +                // Extend the base object
          +                for ( name in options ) {
          +                    src = target[ name ];
          +                    copy = options[ name ];
          +
          +                    // Prevent never-ending loop
          +                    if ( target === copy ) {
          +                        continue;
          +                    }
          +
          +                    // Recurse if we're merging plain objects or arrays
          +                    if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
          +                        if ( copyIsArray ) {
          +                            copyIsArray = false;
          +                            clone = src && jQuery.isArray(src) ? src : [];
          +
          +                        } else {
          +                            clone = src && jQuery.isPlainObject(src) ? src : {};
          +                        }
          +
          +                        // Never move original objects, clone them
          +                        target[ name ] = jQuery.extend( deep, clone, copy );
          +
          +                        // Don't bring in undefined values
          +                    } else if ( copy !== undefined ) {
          +                        target[ name ] = copy;
          +                    }
          +                }
          +            }
          +        }
          +
          +        // Return the modified object
          +        return target;
          +    };
          +
          +    jQuery.extend({
          +        // Unique for each copy of jQuery on the page
          +        expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
          +
          +        // Assume jQuery is ready without the ready module
          +        isReady: true,
          +
          +        error: function( msg ) {
          +            throw new Error( msg );
          +        },
          +
          +        noop: function() {},
          +
          +        // See test/unit/core.js for details concerning isFunction.
          +        // Since version 1.3, DOM methods and functions like alert
          +        // aren't supported. They return false on IE (#2968).
          +        isFunction: function( obj ) {
          +            return jQuery.type(obj) === "function";
          +        },
          +
          +        isArray: Array.isArray,
          +
          +        isWindow: function( obj ) {
          +            return obj != null && obj === obj.window;
          +        },
          +
          +        isNumeric: function( obj ) {
          +            // parseFloat NaNs numeric-cast false positives (null|true|false|"")
          +            // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
          +            // subtraction forces infinities to NaN
          +            return obj - parseFloat( obj ) >= 0;
          +        },
          +
          +        isPlainObject: function( obj ) {
          +            // Not plain objects:
          +            // - Any object or value whose internal [[Class]] property is not "[object Object]"
          +            // - DOM nodes
          +            // - window
          +            if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
          +                return false;
          +            }
          +
          +            // Support: Firefox <20
          +            // The try/catch suppresses exceptions thrown when attempting to access
          +            // the "constructor" property of certain host objects, ie. |window.location|
          +            // https://bugzilla.mozilla.org/show_bug.cgi?id=814622
          +            try {
          +                if ( obj.constructor &&
          +                    !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
          +                    return false;
          +                }
          +            } catch ( e ) {
          +                return false;
          +            }
          +
          +            // If the function hasn't returned already, we're confident that
          +            // |obj| is a plain object, created by {} or constructed with new Object
          +            return true;
          +        },
          +
          +        isEmptyObject: function( obj ) {
          +            var name;
          +            for ( name in obj ) {
          +                return false;
          +            }
          +            return true;
          +        },
          +
          +        type: function( obj ) {
          +            if ( obj == null ) {
          +                return obj + "";
          +            }
          +            // Support: Android < 4.0, iOS < 6 (functionish RegExp)
          +            return typeof obj === "object" || typeof obj === "function" ?
          +                class2type[ toString.call(obj) ] || "object" :
          +                typeof obj;
          +        },
          +
          +        // Evaluates a script in a global context
          +        globalEval: function( code ) {
          +            var script,
          +                indirect = eval;
          +
          +            code = jQuery.trim( code );
          +
          +            if ( code ) {
          +                // If the code includes a valid, prologue position
          +                // strict mode pragma, execute code by injecting a
          +                // script tag into the document.
          +                if ( code.indexOf("use strict") === 1 ) {
          +                    script = document.createElement("script");
          +                    script.text = code;
          +                    document.head.appendChild( script ).parentNode.removeChild( script );
          +                } else {
          +                    // Otherwise, avoid the DOM node creation, insertion
          +                    // and removal by using an indirect global eval
          +                    indirect( code );
          +                }
          +            }
          +        },
          +
          +        // Convert dashed to camelCase; used by the css and data modules
          +        // Microsoft forgot to hump their vendor prefix (#9572)
          +        camelCase: function( string ) {
          +            return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
          +        },
          +
          +        nodeName: function( elem, name ) {
          +            return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
          +        },
          +
          +        // args is for internal usage only
          +        each: function( obj, callback, args ) {
          +            var value,
          +                i = 0,
          +                length = obj.length,
          +                isArray = isArraylike( obj );
          +
          +            if ( args ) {
          +                if ( isArray ) {
          +                    for ( ; i < length; i++ ) {
          +                        value = callback.apply( obj[ i ], args );
          +
          +                        if ( value === false ) {
          +                            break;
          +                        }
          +                    }
          +                } else {
          +                    for ( i in obj ) {
          +                        value = callback.apply( obj[ i ], args );
          +
          +                        if ( value === false ) {
          +                            break;
          +                        }
          +                    }
          +                }
          +
          +                // A special, fast, case for the most common use of each
          +            } else {
          +                if ( isArray ) {
          +                    for ( ; i < length; i++ ) {
          +                        value = callback.call( obj[ i ], i, obj[ i ] );
          +
          +                        if ( value === false ) {
          +                            break;
          +                        }
          +                    }
          +                } else {
          +                    for ( i in obj ) {
          +                        value = callback.call( obj[ i ], i, obj[ i ] );
          +
          +                        if ( value === false ) {
          +                            break;
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return obj;
          +        },
          +
          +        trim: function( text ) {
          +            return text == null ? "" : trim.call( text );
          +        },
          +
          +        // results is for internal usage only
          +        makeArray: function( arr, results ) {
          +            var ret = results || [];
          +
          +            if ( arr != null ) {
          +                if ( isArraylike( Object(arr) ) ) {
          +                    jQuery.merge( ret,
          +                        typeof arr === "string" ?
          +                            [ arr ] : arr
          +                    );
          +                } else {
          +                    push.call( ret, arr );
          +                }
          +            }
          +
          +            return ret;
          +        },
          +
          +        inArray: function( elem, arr, i ) {
          +            return arr == null ? -1 : indexOf.call( arr, elem, i );
          +        },
          +
          +        merge: function( first, second ) {
          +            var len = +second.length,
          +                j = 0,
          +                i = first.length;
          +
          +            for ( ; j < len; j++ ) {
          +                first[ i++ ] = second[ j ];
          +            }
          +
          +            first.length = i;
          +
          +            return first;
          +        },
          +
          +        grep: function( elems, callback, invert ) {
          +            var callbackInverse,
          +                matches = [],
          +                i = 0,
          +                length = elems.length,
          +                callbackExpect = !invert;
          +
          +            // Go through the array, only saving the items
          +            // that pass the validator function
          +            for ( ; i < length; i++ ) {
          +                callbackInverse = !callback( elems[ i ], i );
          +                if ( callbackInverse !== callbackExpect ) {
          +                    matches.push( elems[ i ] );
          +                }
          +            }
          +
          +            return matches;
          +        },
          +
          +        // arg is for internal usage only
          +        map: function( elems, callback, arg ) {
          +            var value,
          +                i = 0,
          +                length = elems.length,
          +                isArray = isArraylike( elems ),
          +                ret = [];
          +
          +            // Go through the array, translating each of the items to their new values
          +            if ( isArray ) {
          +                for ( ; i < length; i++ ) {
          +                    value = callback( elems[ i ], i, arg );
          +
          +                    if ( value != null ) {
          +                        ret.push( value );
          +                    }
          +                }
          +
          +                // Go through every key on the object,
          +            } else {
          +                for ( i in elems ) {
          +                    value = callback( elems[ i ], i, arg );
          +
          +                    if ( value != null ) {
          +                        ret.push( value );
          +                    }
          +                }
          +            }
          +
          +            // Flatten any nested arrays
          +            return concat.apply( [], ret );
          +        },
          +
          +        // A global GUID counter for objects
          +        guid: 1,
          +
          +        // Bind a function to a context, optionally partially applying any
          +        // arguments.
          +        proxy: function( fn, context ) {
          +            var tmp, args, proxy;
          +
          +            if ( typeof context === "string" ) {
          +                tmp = fn[ context ];
          +                context = fn;
          +                fn = tmp;
          +            }
          +
          +            // Quick check to determine if target is callable, in the spec
          +            // this throws a TypeError, but we will just return undefined.
          +            if ( !jQuery.isFunction( fn ) ) {
          +                return undefined;
          +            }
          +
          +            // Simulated bind
          +            args = slice.call( arguments, 2 );
          +            proxy = function() {
          +                return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
          +            };
          +
          +            // Set the guid of unique handler to the same of original handler, so it can be removed
          +            proxy.guid = fn.guid = fn.guid || jQuery.guid++;
          +
          +            return proxy;
          +        },
          +
          +        now: Date.now,
          +
          +        // jQuery.support is not used in Core but other projects attach their
          +        // properties to it so it needs to exist.
          +        support: support
          +    });
          +
          +// Populate the class2type map
          +    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
          +        class2type[ "[object " + name + "]" ] = name.toLowerCase();
          +    });
          +
          +    function isArraylike( obj ) {
          +        var length = obj.length,
          +            type = jQuery.type( obj );
          +
          +        if ( type === "function" || jQuery.isWindow( obj ) ) {
          +            return false;
          +        }
          +
          +        if ( obj.nodeType === 1 && length ) {
          +            return true;
          +        }
          +
          +        return type === "array" || length === 0 ||
          +            typeof length === "number" && length > 0 && ( length - 1 ) in obj;
          +    }
          +    var Sizzle =
          +        /*!
          +         * Sizzle CSS Selector Engine v1.10.16
          +         * http://sizzlejs.com/
          +         *
          +         * Copyright 2013 jQuery Foundation, Inc. and other contributors
          +         * Released under the MIT license
          +         * http://jquery.org/license
          +         *
          +         * Date: 2014-01-13
          +         */
          +        (function( window ) {
          +
          +            var i,
          +                support,
          +                Expr,
          +                getText,
          +                isXML,
          +                compile,
          +                outermostContext,
          +                sortInput,
          +                hasDuplicate,
          +
          +            // Local document vars
          +                setDocument,
          +                document,
          +                docElem,
          +                documentIsHTML,
          +                rbuggyQSA,
          +                rbuggyMatches,
          +                matches,
          +                contains,
          +
          +            // Instance-specific data
          +                expando = "sizzle" + -(new Date()),
          +                preferredDoc = window.document,
          +                dirruns = 0,
          +                done = 0,
          +                classCache = createCache(),
          +                tokenCache = createCache(),
          +                compilerCache = createCache(),
          +                sortOrder = function( a, b ) {
          +                    if ( a === b ) {
          +                        hasDuplicate = true;
          +                    }
          +                    return 0;
          +                },
          +
          +            // General-purpose constants
          +                strundefined = typeof undefined,
          +                MAX_NEGATIVE = 1 << 31,
          +
          +            // Instance methods
          +                hasOwn = ({}).hasOwnProperty,
          +                arr = [],
          +                pop = arr.pop,
          +                push_native = arr.push,
          +                push = arr.push,
          +                slice = arr.slice,
          +            // Use a stripped-down indexOf if we can't use a native one
          +                indexOf = arr.indexOf || function( elem ) {
          +                    var i = 0,
          +                        len = this.length;
          +                    for ( ; i < len; i++ ) {
          +                        if ( this[i] === elem ) {
          +                            return i;
          +                        }
          +                    }
          +                    return -1;
          +                },
          +
          +                booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
          +
          +            // Regular expressions
          +
          +            // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
          +                whitespace = "[\\x20\\t\\r\\n\\f]",
          +            // http://www.w3.org/TR/css3-syntax/#characters
          +                characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
          +
          +            // Loosely modeled on CSS identifier characters
          +            // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
          +            // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
          +                identifier = characterEncoding.replace( "w", "w#" ),
          +
          +            // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
          +                attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
          +                    "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
          +
          +            // Prefer arguments quoted,
          +            //   then not containing pseudos/brackets,
          +            //   then attribute selectors/non-parenthetical expressions,
          +            //   then anything else
          +            // These preferences are here to reduce the number of selectors
          +            //   needing tokenize in the PSEUDO preFilter
          +                pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
          +
          +            // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
          +                rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
          +
          +                rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
          +                rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
          +
          +                rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
          +
          +                rpseudo = new RegExp( pseudos ),
          +                ridentifier = new RegExp( "^" + identifier + "$" ),
          +
          +                matchExpr = {
          +                    "ID": new RegExp( "^#(" + characterEncoding + ")" ),
          +                    "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
          +                    "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
          +                    "ATTR": new RegExp( "^" + attributes ),
          +                    "PSEUDO": new RegExp( "^" + pseudos ),
          +                    "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
          +                        "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
          +                        "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
          +                    "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
          +                    // For use in libraries implementing .is()
          +                    // We use this for POS matching in `select`
          +                    "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
          +                        whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
          +                },
          +
          +                rinputs = /^(?:input|select|textarea|button)$/i,
          +                rheader = /^h\d$/i,
          +
          +                rnative = /^[^{]+\{\s*\[native \w/,
          +
          +            // Easily-parseable/retrievable ID or TAG or CLASS selectors
          +                rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
          +
          +                rsibling = /[+~]/,
          +                rescape = /'|\\/g,
          +
          +            // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
          +                runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
          +                funescape = function( _, escaped, escapedWhitespace ) {
          +                    var high = "0x" + escaped - 0x10000;
          +                    // NaN means non-codepoint
          +                    // Support: Firefox
          +                    // Workaround erroneous numeric interpretation of +"0x"
          +                    return high !== high || escapedWhitespace ?
          +                        escaped :
          +                        high < 0 ?
          +                            // BMP codepoint
          +                            String.fromCharCode( high + 0x10000 ) :
          +                            // Supplemental Plane codepoint (surrogate pair)
          +                            String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
          +                };
          +
          +// Optimize for push.apply( _, NodeList )
          +            try {
          +                push.apply(
          +                    (arr = slice.call( preferredDoc.childNodes )),
          +                    preferredDoc.childNodes
          +                );
          +                // Support: Android<4.0
          +                // Detect silently failing push.apply
          +                arr[ preferredDoc.childNodes.length ].nodeType;
          +            } catch ( e ) {
          +                push = { apply: arr.length ?
          +
          +                    // Leverage slice if possible
          +                    function( target, els ) {
          +                        push_native.apply( target, slice.call(els) );
          +                    } :
          +
          +                    // Support: IE<9
          +                    // Otherwise append directly
          +                    function( target, els ) {
          +                        var j = target.length,
          +                            i = 0;
          +                        // Can't trust NodeList.length
          +                        while ( (target[j++] = els[i++]) ) {}
          +                        target.length = j - 1;
          +                    }
          +                };
          +            }
          +
          +            function Sizzle( selector, context, results, seed ) {
          +                var match, elem, m, nodeType,
          +                // QSA vars
          +                    i, groups, old, nid, newContext, newSelector;
          +
          +                if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
          +                    setDocument( context );
          +                }
          +
          +                context = context || document;
          +                results = results || [];
          +
          +                if ( !selector || typeof selector !== "string" ) {
          +                    return results;
          +                }
          +
          +                if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
          +                    return [];
          +                }
          +
          +                if ( documentIsHTML && !seed ) {
          +
          +                    // Shortcuts
          +                    if ( (match = rquickExpr.exec( selector )) ) {
          +                        // Speed-up: Sizzle("#ID")
          +                        if ( (m = match[1]) ) {
          +                            if ( nodeType === 9 ) {
          +                                elem = context.getElementById( m );
          +                                // Check parentNode to catch when Blackberry 4.6 returns
          +                                // nodes that are no longer in the document (jQuery #6963)
          +                                if ( elem && elem.parentNode ) {
          +                                    // Handle the case where IE, Opera, and Webkit return items
          +                                    // by name instead of ID
          +                                    if ( elem.id === m ) {
          +                                        results.push( elem );
          +                                        return results;
          +                                    }
          +                                } else {
          +                                    return results;
          +                                }
          +                            } else {
          +                                // Context is not a document
          +                                if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
          +                                    contains( context, elem ) && elem.id === m ) {
          +                                    results.push( elem );
          +                                    return results;
          +                                }
          +                            }
          +
          +                            // Speed-up: Sizzle("TAG")
          +                        } else if ( match[2] ) {
          +                            push.apply( results, context.getElementsByTagName( selector ) );
          +                            return results;
          +
          +                            // Speed-up: Sizzle(".CLASS")
          +                        } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
          +                            push.apply( results, context.getElementsByClassName( m ) );
          +                            return results;
          +                        }
          +                    }
          +
          +                    // QSA path
          +                    if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
          +                        nid = old = expando;
          +                        newContext = context;
          +                        newSelector = nodeType === 9 && selector;
          +
          +                        // qSA works strangely on Element-rooted queries
          +                        // We can work around this by specifying an extra ID on the root
          +                        // and working up from there (Thanks to Andrew Dupont for the technique)
          +                        // IE 8 doesn't work on object elements
          +                        if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
          +                            groups = tokenize( selector );
          +
          +                            if ( (old = context.getAttribute("id")) ) {
          +                                nid = old.replace( rescape, "\\$&" );
          +                            } else {
          +                                context.setAttribute( "id", nid );
          +                            }
          +                            nid = "[id='" + nid + "'] ";
          +
          +                            i = groups.length;
          +                            while ( i-- ) {
          +                                groups[i] = nid + toSelector( groups[i] );
          +                            }
          +                            newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
          +                            newSelector = groups.join(",");
          +                        }
          +
          +                        if ( newSelector ) {
          +                            try {
          +                                push.apply( results,
          +                                    newContext.querySelectorAll( newSelector )
          +                                );
          +                                return results;
          +                            } catch(qsaError) {
          +                            } finally {
          +                                if ( !old ) {
          +                                    context.removeAttribute("id");
          +                                }
          +                            }
          +                        }
          +                    }
          +                }
          +
          +                // All others
          +                return select( selector.replace( rtrim, "$1" ), context, results, seed );
          +            }
          +
          +            /**
          +             * Create key-value caches of limited size
          +             * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
          +             *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
          +             *	deleting the oldest entry
          +             */
          +            function createCache() {
          +                var keys = [];
          +
          +                function cache( key, value ) {
          +                    // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
          +                    if ( keys.push( key + " " ) > Expr.cacheLength ) {
          +                        // Only keep the most recent entries
          +                        delete cache[ keys.shift() ];
          +                    }
          +                    return (cache[ key + " " ] = value);
          +                }
          +                return cache;
          +            }
          +
          +            /**
          +             * Mark a function for special use by Sizzle
          +             * @param {Function} fn The function to mark
          +             */
          +            function markFunction( fn ) {
          +                fn[ expando ] = true;
          +                return fn;
          +            }
          +
          +            /**
          +             * Support testing using an element
          +             * @param {Function} fn Passed the created div and expects a boolean result
          +             */
          +            function assert( fn ) {
          +                var div = document.createElement("div");
          +
          +                try {
          +                    return !!fn( div );
          +                } catch (e) {
          +                    return false;
          +                } finally {
          +                    // Remove from its parent by default
          +                    if ( div.parentNode ) {
          +                        div.parentNode.removeChild( div );
          +                    }
          +                    // release memory in IE
          +                    div = null;
          +                }
          +            }
          +
          +            /**
          +             * Adds the same handler for all of the specified attrs
          +             * @param {String} attrs Pipe-separated list of attributes
          +             * @param {Function} handler The method that will be applied
          +             */
          +            function addHandle( attrs, handler ) {
          +                var arr = attrs.split("|"),
          +                    i = attrs.length;
          +
          +                while ( i-- ) {
          +                    Expr.attrHandle[ arr[i] ] = handler;
          +                }
          +            }
          +
          +            /**
          +             * Checks document order of two siblings
          +             * @param {Element} a
          +             * @param {Element} b
          +             * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
          +             */
          +            function siblingCheck( a, b ) {
          +                var cur = b && a,
          +                    diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
          +                        ( ~b.sourceIndex || MAX_NEGATIVE ) -
          +                            ( ~a.sourceIndex || MAX_NEGATIVE );
          +
          +                // Use IE sourceIndex if available on both nodes
          +                if ( diff ) {
          +                    return diff;
          +                }
          +
          +                // Check if b follows a
          +                if ( cur ) {
          +                    while ( (cur = cur.nextSibling) ) {
          +                        if ( cur === b ) {
          +                            return -1;
          +                        }
          +                    }
          +                }
          +
          +                return a ? 1 : -1;
          +            }
          +
          +            /**
          +             * Returns a function to use in pseudos for input types
          +             * @param {String} type
          +             */
          +            function createInputPseudo( type ) {
          +                return function( elem ) {
          +                    var name = elem.nodeName.toLowerCase();
          +                    return name === "input" && elem.type === type;
          +                };
          +            }
          +
          +            /**
          +             * Returns a function to use in pseudos for buttons
          +             * @param {String} type
          +             */
          +            function createButtonPseudo( type ) {
          +                return function( elem ) {
          +                    var name = elem.nodeName.toLowerCase();
          +                    return (name === "input" || name === "button") && elem.type === type;
          +                };
          +            }
          +
          +            /**
          +             * Returns a function to use in pseudos for positionals
          +             * @param {Function} fn
          +             */
          +            function createPositionalPseudo( fn ) {
          +                return markFunction(function( argument ) {
          +                    argument = +argument;
          +                    return markFunction(function( seed, matches ) {
          +                        var j,
          +                            matchIndexes = fn( [], seed.length, argument ),
          +                            i = matchIndexes.length;
          +
          +                        // Match elements found at the specified indexes
          +                        while ( i-- ) {
          +                            if ( seed[ (j = matchIndexes[i]) ] ) {
          +                                seed[j] = !(matches[j] = seed[j]);
          +                            }
          +                        }
          +                    });
          +                });
          +            }
          +
          +            /**
          +             * Checks a node for validity as a Sizzle context
          +             * @param {Element|Object=} context
          +             * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
          +             */
          +            function testContext( context ) {
          +                return context && typeof context.getElementsByTagName !== strundefined && context;
          +            }
          +
          +// Expose support vars for convenience
          +            support = Sizzle.support = {};
          +
          +            /**
          +             * Detects XML nodes
          +             * @param {Element|Object} elem An element or a document
          +             * @returns {Boolean} True iff elem is a non-HTML XML node
          +             */
          +            isXML = Sizzle.isXML = function( elem ) {
          +                // documentElement is verified for cases where it doesn't yet exist
          +                // (such as loading iframes in IE - #4833)
          +                var documentElement = elem && (elem.ownerDocument || elem).documentElement;
          +                return documentElement ? documentElement.nodeName !== "HTML" : false;
          +            };
          +
          +            /**
          +             * Sets document-related variables once based on the current document
          +             * @param {Element|Object} [doc] An element or document object to use to set the document
          +             * @returns {Object} Returns the current document
          +             */
          +            setDocument = Sizzle.setDocument = function( node ) {
          +                var hasCompare,
          +                    doc = node ? node.ownerDocument || node : preferredDoc,
          +                    parent = doc.defaultView;
          +
          +                // If no document and documentElement is available, return
          +                if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
          +                    return document;
          +                }
          +
          +                // Set our document
          +                document = doc;
          +                docElem = doc.documentElement;
          +
          +                // Support tests
          +                documentIsHTML = !isXML( doc );
          +
          +                // Support: IE>8
          +                // If iframe document is assigned to "document" variable and if iframe has been reloaded,
          +                // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
          +                // IE6-8 do not support the defaultView property so parent will be undefined
          +                if ( parent && parent !== parent.top ) {
          +                    // IE11 does not have attachEvent, so all must suffer
          +                    if ( parent.addEventListener ) {
          +                        parent.addEventListener( "unload", function() {
          +                            setDocument();
          +                        }, false );
          +                    } else if ( parent.attachEvent ) {
          +                        parent.attachEvent( "onunload", function() {
          +                            setDocument();
          +                        });
          +                    }
          +                }
          +
          +                /* Attributes
          +                 ---------------------------------------------------------------------- */
          +
          +                // Support: IE<8
          +                // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
          +                support.attributes = assert(function( div ) {
          +                    div.className = "i";
          +                    return !div.getAttribute("className");
          +                });
          +
          +                /* getElement(s)By*
          +                 ---------------------------------------------------------------------- */
          +
          +                // Check if getElementsByTagName("*") returns only elements
          +                support.getElementsByTagName = assert(function( div ) {
          +                    div.appendChild( doc.createComment("") );
          +                    return !div.getElementsByTagName("*").length;
          +                });
          +
          +                // Check if getElementsByClassName can be trusted
          +                support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
          +                    div.innerHTML = "<div class='a'></div><div class='a i'></div>";
          +
          +                    // Support: Safari<4
          +                    // Catch class over-caching
          +                    div.firstChild.className = "i";
          +                    // Support: Opera<10
          +                    // Catch gEBCN failure to find non-leading classes
          +                    return div.getElementsByClassName("i").length === 2;
          +                });
          +
          +                // Support: IE<10
          +                // Check if getElementById returns elements by name
          +                // The broken getElementById methods don't pick up programatically-set names,
          +                // so use a roundabout getElementsByName test
          +                support.getById = assert(function( div ) {
          +                    docElem.appendChild( div ).id = expando;
          +                    return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
          +                });
          +
          +                // ID find and filter
          +                if ( support.getById ) {
          +                    Expr.find["ID"] = function( id, context ) {
          +                        if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
          +                            var m = context.getElementById( id );
          +                            // Check parentNode to catch when Blackberry 4.6 returns
          +                            // nodes that are no longer in the document #6963
          +                            return m && m.parentNode ? [m] : [];
          +                        }
          +                    };
          +                    Expr.filter["ID"] = function( id ) {
          +                        var attrId = id.replace( runescape, funescape );
          +                        return function( elem ) {
          +                            return elem.getAttribute("id") === attrId;
          +                        };
          +                    };
          +                } else {
          +                    // Support: IE6/7
          +                    // getElementById is not reliable as a find shortcut
          +                    delete Expr.find["ID"];
          +
          +                    Expr.filter["ID"] =  function( id ) {
          +                        var attrId = id.replace( runescape, funescape );
          +                        return function( elem ) {
          +                            var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
          +                            return node && node.value === attrId;
          +                        };
          +                    };
          +                }
          +
          +                // Tag
          +                Expr.find["TAG"] = support.getElementsByTagName ?
          +                    function( tag, context ) {
          +                        if ( typeof context.getElementsByTagName !== strundefined ) {
          +                            return context.getElementsByTagName( tag );
          +                        }
          +                    } :
          +                    function( tag, context ) {
          +                        var elem,
          +                            tmp = [],
          +                            i = 0,
          +                            results = context.getElementsByTagName( tag );
          +
          +                        // Filter out possible comments
          +                        if ( tag === "*" ) {
          +                            while ( (elem = results[i++]) ) {
          +                                if ( elem.nodeType === 1 ) {
          +                                    tmp.push( elem );
          +                                }
          +                            }
          +
          +                            return tmp;
          +                        }
          +                        return results;
          +                    };
          +
          +                // Class
          +                Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
          +                    if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
          +                        return context.getElementsByClassName( className );
          +                    }
          +                };
          +
          +                /* QSA/matchesSelector
          +                 ---------------------------------------------------------------------- */
          +
          +                // QSA and matchesSelector support
          +
          +                // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
          +                rbuggyMatches = [];
          +
          +                // qSa(:focus) reports false when true (Chrome 21)
          +                // We allow this because of a bug in IE8/9 that throws an error
          +                // whenever `document.activeElement` is accessed on an iframe
          +                // So, we allow :focus to pass through QSA all the time to avoid the IE error
          +                // See http://bugs.jquery.com/ticket/13378
          +                rbuggyQSA = [];
          +
          +                if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
          +                    // Build QSA regex
          +                    // Regex strategy adopted from Diego Perini
          +                    assert(function( div ) {
          +                        // Select is set to empty string on purpose
          +                        // This is to test IE's treatment of not explicitly
          +                        // setting a boolean content attribute,
          +                        // since its presence should be enough
          +                        // http://bugs.jquery.com/ticket/12359
          +                        div.innerHTML = "<select t=''><option selected=''></option></select>";
          +
          +                        // Support: IE8, Opera 10-12
          +                        // Nothing should be selected when empty strings follow ^= or $= or *=
          +                        if ( div.querySelectorAll("[t^='']").length ) {
          +                            rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
          +                        }
          +
          +                        // Support: IE8
          +                        // Boolean attributes and "value" are not treated correctly
          +                        if ( !div.querySelectorAll("[selected]").length ) {
          +                            rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
          +                        }
          +
          +                        // Webkit/Opera - :checked should return selected option elements
          +                        // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
          +                        // IE8 throws error here and will not see later tests
          +                        if ( !div.querySelectorAll(":checked").length ) {
          +                            rbuggyQSA.push(":checked");
          +                        }
          +                    });
          +
          +                    assert(function( div ) {
          +                        // Support: Windows 8 Native Apps
          +                        // The type and name attributes are restricted during .innerHTML assignment
          +                        var input = doc.createElement("input");
          +                        input.setAttribute( "type", "hidden" );
          +                        div.appendChild( input ).setAttribute( "name", "D" );
          +
          +                        // Support: IE8
          +                        // Enforce case-sensitivity of name attribute
          +                        if ( div.querySelectorAll("[name=d]").length ) {
          +                            rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
          +                        }
          +
          +                        // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
          +                        // IE8 throws error here and will not see later tests
          +                        if ( !div.querySelectorAll(":enabled").length ) {
          +                            rbuggyQSA.push( ":enabled", ":disabled" );
          +                        }
          +
          +                        // Opera 10-11 does not throw on post-comma invalid pseudos
          +                        div.querySelectorAll("*,:x");
          +                        rbuggyQSA.push(",.*:");
          +                    });
          +                }
          +
          +                if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
          +                    docElem.mozMatchesSelector ||
          +                    docElem.oMatchesSelector ||
          +                    docElem.msMatchesSelector) )) ) {
          +
          +                    assert(function( div ) {
          +                        // Check to see if it's possible to do matchesSelector
          +                        // on a disconnected node (IE 9)
          +                        support.disconnectedMatch = matches.call( div, "div" );
          +
          +                        // This should fail with an exception
          +                        // Gecko does not error, returns false instead
          +                        matches.call( div, "[s!='']:x" );
          +                        rbuggyMatches.push( "!=", pseudos );
          +                    });
          +                }
          +
          +                rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
          +                rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
          +
          +                /* Contains
          +                 ---------------------------------------------------------------------- */
          +                hasCompare = rnative.test( docElem.compareDocumentPosition );
          +
          +                // Element contains another
          +                // Purposefully does not implement inclusive descendent
          +                // As in, an element does not contain itself
          +                contains = hasCompare || rnative.test( docElem.contains ) ?
          +                    function( a, b ) {
          +                        var adown = a.nodeType === 9 ? a.documentElement : a,
          +                            bup = b && b.parentNode;
          +                        return a === bup || !!( bup && bup.nodeType === 1 && (
          +                            adown.contains ?
          +                                adown.contains( bup ) :
          +                                a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
          +                            ));
          +                    } :
          +                    function( a, b ) {
          +                        if ( b ) {
          +                            while ( (b = b.parentNode) ) {
          +                                if ( b === a ) {
          +                                    return true;
          +                                }
          +                            }
          +                        }
          +                        return false;
          +                    };
          +
          +                /* Sorting
          +                 ---------------------------------------------------------------------- */
          +
          +                // Document order sorting
          +                sortOrder = hasCompare ?
          +                    function( a, b ) {
          +
          +                        // Flag for duplicate removal
          +                        if ( a === b ) {
          +                            hasDuplicate = true;
          +                            return 0;
          +                        }
          +
          +                        // Sort on method existence if only one input has compareDocumentPosition
          +                        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
          +                        if ( compare ) {
          +                            return compare;
          +                        }
          +
          +                        // Calculate position if both inputs belong to the same document
          +                        compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
          +                            a.compareDocumentPosition( b ) :
          +
          +                            // Otherwise we know they are disconnected
          +                            1;
          +
          +                        // Disconnected nodes
          +                        if ( compare & 1 ||
          +                            (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
          +
          +                            // Choose the first element that is related to our preferred document
          +                            if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
          +                                return -1;
          +                            }
          +                            if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
          +                                return 1;
          +                            }
          +
          +                            // Maintain original order
          +                            return sortInput ?
          +                                ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
          +                                0;
          +                        }
          +
          +                        return compare & 4 ? -1 : 1;
          +                    } :
          +                    function( a, b ) {
          +                        // Exit early if the nodes are identical
          +                        if ( a === b ) {
          +                            hasDuplicate = true;
          +                            return 0;
          +                        }
          +
          +                        var cur,
          +                            i = 0,
          +                            aup = a.parentNode,
          +                            bup = b.parentNode,
          +                            ap = [ a ],
          +                            bp = [ b ];
          +
          +                        // Parentless nodes are either documents or disconnected
          +                        if ( !aup || !bup ) {
          +                            return a === doc ? -1 :
          +                                b === doc ? 1 :
          +                                    aup ? -1 :
          +                                        bup ? 1 :
          +                                            sortInput ?
          +                                                ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
          +                                                0;
          +
          +                            // If the nodes are siblings, we can do a quick check
          +                        } else if ( aup === bup ) {
          +                            return siblingCheck( a, b );
          +                        }
          +
          +                        // Otherwise we need full lists of their ancestors for comparison
          +                        cur = a;
          +                        while ( (cur = cur.parentNode) ) {
          +                            ap.unshift( cur );
          +                        }
          +                        cur = b;
          +                        while ( (cur = cur.parentNode) ) {
          +                            bp.unshift( cur );
          +                        }
          +
          +                        // Walk down the tree looking for a discrepancy
          +                        while ( ap[i] === bp[i] ) {
          +                            i++;
          +                        }
          +
          +                        return i ?
          +                            // Do a sibling check if the nodes have a common ancestor
          +                            siblingCheck( ap[i], bp[i] ) :
          +
          +                            // Otherwise nodes in our document sort first
          +                            ap[i] === preferredDoc ? -1 :
          +                                bp[i] === preferredDoc ? 1 :
          +                                    0;
          +                    };
          +
          +                return doc;
          +            };
          +
          +            Sizzle.matches = function( expr, elements ) {
          +                return Sizzle( expr, null, null, elements );
          +            };
          +
          +            Sizzle.matchesSelector = function( elem, expr ) {
          +                // Set document vars if needed
          +                if ( ( elem.ownerDocument || elem ) !== document ) {
          +                    setDocument( elem );
          +                }
          +
          +                // Make sure that attribute selectors are quoted
          +                expr = expr.replace( rattributeQuotes, "='$1']" );
          +
          +                if ( support.matchesSelector && documentIsHTML &&
          +                    ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
          +                    ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
          +
          +                    try {
          +                        var ret = matches.call( elem, expr );
          +
          +                        // IE 9's matchesSelector returns false on disconnected nodes
          +                        if ( ret || support.disconnectedMatch ||
          +                            // As well, disconnected nodes are said to be in a document
          +                            // fragment in IE 9
          +                            elem.document && elem.document.nodeType !== 11 ) {
          +                            return ret;
          +                        }
          +                    } catch(e) {}
          +                }
          +
          +                return Sizzle( expr, document, null, [elem] ).length > 0;
          +            };
          +
          +            Sizzle.contains = function( context, elem ) {
          +                // Set document vars if needed
          +                if ( ( context.ownerDocument || context ) !== document ) {
          +                    setDocument( context );
          +                }
          +                return contains( context, elem );
          +            };
          +
          +            Sizzle.attr = function( elem, name ) {
          +                // Set document vars if needed
          +                if ( ( elem.ownerDocument || elem ) !== document ) {
          +                    setDocument( elem );
          +                }
          +
          +                var fn = Expr.attrHandle[ name.toLowerCase() ],
          +                // Don't get fooled by Object.prototype properties (jQuery #13807)
          +                    val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
          +                        fn( elem, name, !documentIsHTML ) :
          +                        undefined;
          +
          +                return val !== undefined ?
          +                    val :
          +                    support.attributes || !documentIsHTML ?
          +                        elem.getAttribute( name ) :
          +                        (val = elem.getAttributeNode(name)) && val.specified ?
          +                            val.value :
          +                            null;
          +            };
          +
          +            Sizzle.error = function( msg ) {
          +                throw new Error( "Syntax error, unrecognized expression: " + msg );
          +            };
          +
          +            /**
          +             * Document sorting and removing duplicates
          +             * @param {ArrayLike} results
          +             */
          +            Sizzle.uniqueSort = function( results ) {
          +                var elem,
          +                    duplicates = [],
          +                    j = 0,
          +                    i = 0;
          +
          +                // Unless we *know* we can detect duplicates, assume their presence
          +                hasDuplicate = !support.detectDuplicates;
          +                sortInput = !support.sortStable && results.slice( 0 );
          +                results.sort( sortOrder );
          +
          +                if ( hasDuplicate ) {
          +                    while ( (elem = results[i++]) ) {
          +                        if ( elem === results[ i ] ) {
          +                            j = duplicates.push( i );
          +                        }
          +                    }
          +                    while ( j-- ) {
          +                        results.splice( duplicates[ j ], 1 );
          +                    }
          +                }
          +
          +                // Clear input after sorting to release objects
          +                // See https://github.com/jquery/sizzle/pull/225
          +                sortInput = null;
          +
          +                return results;
          +            };
          +
          +            /**
          +             * Utility function for retrieving the text value of an array of DOM nodes
          +             * @param {Array|Element} elem
          +             */
          +            getText = Sizzle.getText = function( elem ) {
          +                var node,
          +                    ret = "",
          +                    i = 0,
          +                    nodeType = elem.nodeType;
          +
          +                if ( !nodeType ) {
          +                    // If no nodeType, this is expected to be an array
          +                    while ( (node = elem[i++]) ) {
          +                        // Do not traverse comment nodes
          +                        ret += getText( node );
          +                    }
          +                } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
          +                    // Use textContent for elements
          +                    // innerText usage removed for consistency of new lines (jQuery #11153)
          +                    if ( typeof elem.textContent === "string" ) {
          +                        return elem.textContent;
          +                    } else {
          +                        // Traverse its children
          +                        for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
          +                            ret += getText( elem );
          +                        }
          +                    }
          +                } else if ( nodeType === 3 || nodeType === 4 ) {
          +                    return elem.nodeValue;
          +                }
          +                // Do not include comment or processing instruction nodes
          +
          +                return ret;
          +            };
          +
          +            Expr = Sizzle.selectors = {
          +
          +                // Can be adjusted by the user
          +                cacheLength: 50,
          +
          +                createPseudo: markFunction,
          +
          +                match: matchExpr,
          +
          +                attrHandle: {},
          +
          +                find: {},
          +
          +                relative: {
          +                    ">": { dir: "parentNode", first: true },
          +                    " ": { dir: "parentNode" },
          +                    "+": { dir: "previousSibling", first: true },
          +                    "~": { dir: "previousSibling" }
          +                },
          +
          +                preFilter: {
          +                    "ATTR": function( match ) {
          +                        match[1] = match[1].replace( runescape, funescape );
          +
          +                        // Move the given value to match[3] whether quoted or unquoted
          +                        match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
          +
          +                        if ( match[2] === "~=" ) {
          +                            match[3] = " " + match[3] + " ";
          +                        }
          +
          +                        return match.slice( 0, 4 );
          +                    },
          +
          +                    "CHILD": function( match ) {
          +                        /* matches from matchExpr["CHILD"]
          +                         1 type (only|nth|...)
          +                         2 what (child|of-type)
          +                         3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
          +                         4 xn-component of xn+y argument ([+-]?\d*n|)
          +                         5 sign of xn-component
          +                         6 x of xn-component
          +                         7 sign of y-component
          +                         8 y of y-component
          +                         */
          +                        match[1] = match[1].toLowerCase();
          +
          +                        if ( match[1].slice( 0, 3 ) === "nth" ) {
          +                            // nth-* requires argument
          +                            if ( !match[3] ) {
          +                                Sizzle.error( match[0] );
          +                            }
          +
          +                            // numeric x and y parameters for Expr.filter.CHILD
          +                            // remember that false/true cast respectively to 0/1
          +                            match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
          +                            match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
          +
          +                            // other types prohibit arguments
          +                        } else if ( match[3] ) {
          +                            Sizzle.error( match[0] );
          +                        }
          +
          +                        return match;
          +                    },
          +
          +                    "PSEUDO": function( match ) {
          +                        var excess,
          +                            unquoted = !match[5] && match[2];
          +
          +                        if ( matchExpr["CHILD"].test( match[0] ) ) {
          +                            return null;
          +                        }
          +
          +                        // Accept quoted arguments as-is
          +                        if ( match[3] && match[4] !== undefined ) {
          +                            match[2] = match[4];
          +
          +                            // Strip excess characters from unquoted arguments
          +                        } else if ( unquoted && rpseudo.test( unquoted ) &&
          +                            // Get excess from tokenize (recursively)
          +                            (excess = tokenize( unquoted, true )) &&
          +                            // advance to the next closing parenthesis
          +                            (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
          +
          +                            // excess is a negative index
          +                            match[0] = match[0].slice( 0, excess );
          +                            match[2] = unquoted.slice( 0, excess );
          +                        }
          +
          +                        // Return only captures needed by the pseudo filter method (type and argument)
          +                        return match.slice( 0, 3 );
          +                    }
          +                },
          +
          +                filter: {
          +
          +                    "TAG": function( nodeNameSelector ) {
          +                        var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
          +                        return nodeNameSelector === "*" ?
          +                            function() { return true; } :
          +                            function( elem ) {
          +                                return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
          +                            };
          +                    },
          +
          +                    "CLASS": function( className ) {
          +                        var pattern = classCache[ className + " " ];
          +
          +                        return pattern ||
          +                            (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
          +                                classCache( className, function( elem ) {
          +                                    return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
          +                                });
          +                    },
          +
          +                    "ATTR": function( name, operator, check ) {
          +                        return function( elem ) {
          +                            var result = Sizzle.attr( elem, name );
          +
          +                            if ( result == null ) {
          +                                return operator === "!=";
          +                            }
          +                            if ( !operator ) {
          +                                return true;
          +                            }
          +
          +                            result += "";
          +
          +                            return operator === "=" ? result === check :
          +                                operator === "!=" ? result !== check :
          +                                    operator === "^=" ? check && result.indexOf( check ) === 0 :
          +                                        operator === "*=" ? check && result.indexOf( check ) > -1 :
          +                                            operator === "$=" ? check && result.slice( -check.length ) === check :
          +                                                operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
          +                                                    operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
          +                                                        false;
          +                        };
          +                    },
          +
          +                    "CHILD": function( type, what, argument, first, last ) {
          +                        var simple = type.slice( 0, 3 ) !== "nth",
          +                            forward = type.slice( -4 ) !== "last",
          +                            ofType = what === "of-type";
          +
          +                        return first === 1 && last === 0 ?
          +
          +                            // Shortcut for :nth-*(n)
          +                            function( elem ) {
          +                                return !!elem.parentNode;
          +                            } :
          +
          +                            function( elem, context, xml ) {
          +                                var cache, outerCache, node, diff, nodeIndex, start,
          +                                    dir = simple !== forward ? "nextSibling" : "previousSibling",
          +                                    parent = elem.parentNode,
          +                                    name = ofType && elem.nodeName.toLowerCase(),
          +                                    useCache = !xml && !ofType;
          +
          +                                if ( parent ) {
          +
          +                                    // :(first|last|only)-(child|of-type)
          +                                    if ( simple ) {
          +                                        while ( dir ) {
          +                                            node = elem;
          +                                            while ( (node = node[ dir ]) ) {
          +                                                if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
          +                                                    return false;
          +                                                }
          +                                            }
          +                                            // Reverse direction for :only-* (if we haven't yet done so)
          +                                            start = dir = type === "only" && !start && "nextSibling";
          +                                        }
          +                                        return true;
          +                                    }
          +
          +                                    start = [ forward ? parent.firstChild : parent.lastChild ];
          +
          +                                    // non-xml :nth-child(...) stores cache data on `parent`
          +                                    if ( forward && useCache ) {
          +                                        // Seek `elem` from a previously-cached index
          +                                        outerCache = parent[ expando ] || (parent[ expando ] = {});
          +                                        cache = outerCache[ type ] || [];
          +                                        nodeIndex = cache[0] === dirruns && cache[1];
          +                                        diff = cache[0] === dirruns && cache[2];
          +                                        node = nodeIndex && parent.childNodes[ nodeIndex ];
          +
          +                                        while ( (node = ++nodeIndex && node && node[ dir ] ||
          +
          +                                            // Fallback to seeking `elem` from the start
          +                                            (diff = nodeIndex = 0) || start.pop()) ) {
          +
          +                                            // When found, cache indexes on `parent` and break
          +                                            if ( node.nodeType === 1 && ++diff && node === elem ) {
          +                                                outerCache[ type ] = [ dirruns, nodeIndex, diff ];
          +                                                break;
          +                                            }
          +                                        }
          +
          +                                        // Use previously-cached element index if available
          +                                    } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
          +                                        diff = cache[1];
          +
          +                                        // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
          +                                    } else {
          +                                        // Use the same loop as above to seek `elem` from the start
          +                                        while ( (node = ++nodeIndex && node && node[ dir ] ||
          +                                            (diff = nodeIndex = 0) || start.pop()) ) {
          +
          +                                            if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
          +                                                // Cache the index of each encountered element
          +                                                if ( useCache ) {
          +                                                    (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
          +                                                }
          +
          +                                                if ( node === elem ) {
          +                                                    break;
          +                                                }
          +                                            }
          +                                        }
          +                                    }
          +
          +                                    // Incorporate the offset, then check against cycle size
          +                                    diff -= last;
          +                                    return diff === first || ( diff % first === 0 && diff / first >= 0 );
          +                                }
          +                            };
          +                    },
          +
          +                    "PSEUDO": function( pseudo, argument ) {
          +                        // pseudo-class names are case-insensitive
          +                        // http://www.w3.org/TR/selectors/#pseudo-classes
          +                        // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
          +                        // Remember that setFilters inherits from pseudos
          +                        var args,
          +                            fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
          +                                Sizzle.error( "unsupported pseudo: " + pseudo );
          +
          +                        // The user may use createPseudo to indicate that
          +                        // arguments are needed to create the filter function
          +                        // just as Sizzle does
          +                        if ( fn[ expando ] ) {
          +                            return fn( argument );
          +                        }
          +
          +                        // But maintain support for old signatures
          +                        if ( fn.length > 1 ) {
          +                            args = [ pseudo, pseudo, "", argument ];
          +                            return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
          +                                markFunction(function( seed, matches ) {
          +                                    var idx,
          +                                        matched = fn( seed, argument ),
          +                                        i = matched.length;
          +                                    while ( i-- ) {
          +                                        idx = indexOf.call( seed, matched[i] );
          +                                        seed[ idx ] = !( matches[ idx ] = matched[i] );
          +                                    }
          +                                }) :
          +                                function( elem ) {
          +                                    return fn( elem, 0, args );
          +                                };
          +                        }
          +
          +                        return fn;
          +                    }
          +                },
          +
          +                pseudos: {
          +                    // Potentially complex pseudos
          +                    "not": markFunction(function( selector ) {
          +                        // Trim the selector passed to compile
          +                        // to avoid treating leading and trailing
          +                        // spaces as combinators
          +                        var input = [],
          +                            results = [],
          +                            matcher = compile( selector.replace( rtrim, "$1" ) );
          +
          +                        return matcher[ expando ] ?
          +                            markFunction(function( seed, matches, context, xml ) {
          +                                var elem,
          +                                    unmatched = matcher( seed, null, xml, [] ),
          +                                    i = seed.length;
          +
          +                                // Match elements unmatched by `matcher`
          +                                while ( i-- ) {
          +                                    if ( (elem = unmatched[i]) ) {
          +                                        seed[i] = !(matches[i] = elem);
          +                                    }
          +                                }
          +                            }) :
          +                            function( elem, context, xml ) {
          +                                input[0] = elem;
          +                                matcher( input, null, xml, results );
          +                                return !results.pop();
          +                            };
          +                    }),
          +
          +                    "has": markFunction(function( selector ) {
          +                        return function( elem ) {
          +                            return Sizzle( selector, elem ).length > 0;
          +                        };
          +                    }),
          +
          +                    "contains": markFunction(function( text ) {
          +                        return function( elem ) {
          +                            return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
          +                        };
          +                    }),
          +
          +                    // "Whether an element is represented by a :lang() selector
          +                    // is based solely on the element's language value
          +                    // being equal to the identifier C,
          +                    // or beginning with the identifier C immediately followed by "-".
          +                    // The matching of C against the element's language value is performed case-insensitively.
          +                    // The identifier C does not have to be a valid language name."
          +                    // http://www.w3.org/TR/selectors/#lang-pseudo
          +                    "lang": markFunction( function( lang ) {
          +                        // lang value must be a valid identifier
          +                        if ( !ridentifier.test(lang || "") ) {
          +                            Sizzle.error( "unsupported lang: " + lang );
          +                        }
          +                        lang = lang.replace( runescape, funescape ).toLowerCase();
          +                        return function( elem ) {
          +                            var elemLang;
          +                            do {
          +                                if ( (elemLang = documentIsHTML ?
          +                                    elem.lang :
          +                                    elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
          +
          +                                    elemLang = elemLang.toLowerCase();
          +                                    return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
          +                                }
          +                            } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
          +                            return false;
          +                        };
          +                    }),
          +
          +                    // Miscellaneous
          +                    "target": function( elem ) {
          +                        var hash = window.location && window.location.hash;
          +                        return hash && hash.slice( 1 ) === elem.id;
          +                    },
          +
          +                    "root": function( elem ) {
          +                        return elem === docElem;
          +                    },
          +
          +                    "focus": function( elem ) {
          +                        return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
          +                    },
          +
          +                    // Boolean properties
          +                    "enabled": function( elem ) {
          +                        return elem.disabled === false;
          +                    },
          +
          +                    "disabled": function( elem ) {
          +                        return elem.disabled === true;
          +                    },
          +
          +                    "checked": function( elem ) {
          +                        // In CSS3, :checked should return both checked and selected elements
          +                        // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
          +                        var nodeName = elem.nodeName.toLowerCase();
          +                        return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
          +                    },
          +
          +                    "selected": function( elem ) {
          +                        // Accessing this property makes selected-by-default
          +                        // options in Safari work properly
          +                        if ( elem.parentNode ) {
          +                            elem.parentNode.selectedIndex;
          +                        }
          +
          +                        return elem.selected === true;
          +                    },
          +
          +                    // Contents
          +                    "empty": function( elem ) {
          +                        // http://www.w3.org/TR/selectors/#empty-pseudo
          +                        // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
          +                        //   but not by others (comment: 8; processing instruction: 7; etc.)
          +                        // nodeType < 6 works because attributes (2) do not appear as children
          +                        for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
          +                            if ( elem.nodeType < 6 ) {
          +                                return false;
          +                            }
          +                        }
          +                        return true;
          +                    },
          +
          +                    "parent": function( elem ) {
          +                        return !Expr.pseudos["empty"]( elem );
          +                    },
          +
          +                    // Element/input types
          +                    "header": function( elem ) {
          +                        return rheader.test( elem.nodeName );
          +                    },
          +
          +                    "input": function( elem ) {
          +                        return rinputs.test( elem.nodeName );
          +                    },
          +
          +                    "button": function( elem ) {
          +                        var name = elem.nodeName.toLowerCase();
          +                        return name === "input" && elem.type === "button" || name === "button";
          +                    },
          +
          +                    "text": function( elem ) {
          +                        var attr;
          +                        return elem.nodeName.toLowerCase() === "input" &&
          +                            elem.type === "text" &&
          +
          +                            // Support: IE<8
          +                            // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
          +                            ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
          +                    },
          +
          +                    // Position-in-collection
          +                    "first": createPositionalPseudo(function() {
          +                        return [ 0 ];
          +                    }),
          +
          +                    "last": createPositionalPseudo(function( matchIndexes, length ) {
          +                        return [ length - 1 ];
          +                    }),
          +
          +                    "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +                        return [ argument < 0 ? argument + length : argument ];
          +                    }),
          +
          +                    "even": createPositionalPseudo(function( matchIndexes, length ) {
          +                        var i = 0;
          +                        for ( ; i < length; i += 2 ) {
          +                            matchIndexes.push( i );
          +                        }
          +                        return matchIndexes;
          +                    }),
          +
          +                    "odd": createPositionalPseudo(function( matchIndexes, length ) {
          +                        var i = 1;
          +                        for ( ; i < length; i += 2 ) {
          +                            matchIndexes.push( i );
          +                        }
          +                        return matchIndexes;
          +                    }),
          +
          +                    "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +                        var i = argument < 0 ? argument + length : argument;
          +                        for ( ; --i >= 0; ) {
          +                            matchIndexes.push( i );
          +                        }
          +                        return matchIndexes;
          +                    }),
          +
          +                    "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
          +                        var i = argument < 0 ? argument + length : argument;
          +                        for ( ; ++i < length; ) {
          +                            matchIndexes.push( i );
          +                        }
          +                        return matchIndexes;
          +                    })
          +                }
          +            };
          +
          +            Expr.pseudos["nth"] = Expr.pseudos["eq"];
          +
          +// Add button/input type pseudos
          +            for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
          +                Expr.pseudos[ i ] = createInputPseudo( i );
          +            }
          +            for ( i in { submit: true, reset: true } ) {
          +                Expr.pseudos[ i ] = createButtonPseudo( i );
          +            }
          +
          +// Easy API for creating new setFilters
          +            function setFilters() {}
          +            setFilters.prototype = Expr.filters = Expr.pseudos;
          +            Expr.setFilters = new setFilters();
          +
          +            function tokenize( selector, parseOnly ) {
          +                var matched, match, tokens, type,
          +                    soFar, groups, preFilters,
          +                    cached = tokenCache[ selector + " " ];
          +
          +                if ( cached ) {
          +                    return parseOnly ? 0 : cached.slice( 0 );
          +                }
          +
          +                soFar = selector;
          +                groups = [];
          +                preFilters = Expr.preFilter;
          +
          +                while ( soFar ) {
          +
          +                    // Comma and first run
          +                    if ( !matched || (match = rcomma.exec( soFar )) ) {
          +                        if ( match ) {
          +                            // Don't consume trailing commas as valid
          +                            soFar = soFar.slice( match[0].length ) || soFar;
          +                        }
          +                        groups.push( (tokens = []) );
          +                    }
          +
          +                    matched = false;
          +
          +                    // Combinators
          +                    if ( (match = rcombinators.exec( soFar )) ) {
          +                        matched = match.shift();
          +                        tokens.push({
          +                            value: matched,
          +                            // Cast descendant combinators to space
          +                            type: match[0].replace( rtrim, " " )
          +                        });
          +                        soFar = soFar.slice( matched.length );
          +                    }
          +
          +                    // Filters
          +                    for ( type in Expr.filter ) {
          +                        if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
          +                            (match = preFilters[ type ]( match ))) ) {
          +                            matched = match.shift();
          +                            tokens.push({
          +                                value: matched,
          +                                type: type,
          +                                matches: match
          +                            });
          +                            soFar = soFar.slice( matched.length );
          +                        }
          +                    }
          +
          +                    if ( !matched ) {
          +                        break;
          +                    }
          +                }
          +
          +                // Return the length of the invalid excess
          +                // if we're just parsing
          +                // Otherwise, throw an error or return tokens
          +                return parseOnly ?
          +                    soFar.length :
          +                    soFar ?
          +                        Sizzle.error( selector ) :
          +                        // Cache the tokens
          +                        tokenCache( selector, groups ).slice( 0 );
          +            }
          +
          +            function toSelector( tokens ) {
          +                var i = 0,
          +                    len = tokens.length,
          +                    selector = "";
          +                for ( ; i < len; i++ ) {
          +                    selector += tokens[i].value;
          +                }
          +                return selector;
          +            }
          +
          +            function addCombinator( matcher, combinator, base ) {
          +                var dir = combinator.dir,
          +                    checkNonElements = base && dir === "parentNode",
          +                    doneName = done++;
          +
          +                return combinator.first ?
          +                    // Check against closest ancestor/preceding element
          +                    function( elem, context, xml ) {
          +                        while ( (elem = elem[ dir ]) ) {
          +                            if ( elem.nodeType === 1 || checkNonElements ) {
          +                                return matcher( elem, context, xml );
          +                            }
          +                        }
          +                    } :
          +
          +                    // Check against all ancestor/preceding elements
          +                    function( elem, context, xml ) {
          +                        var oldCache, outerCache,
          +                            newCache = [ dirruns, doneName ];
          +
          +                        // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
          +                        if ( xml ) {
          +                            while ( (elem = elem[ dir ]) ) {
          +                                if ( elem.nodeType === 1 || checkNonElements ) {
          +                                    if ( matcher( elem, context, xml ) ) {
          +                                        return true;
          +                                    }
          +                                }
          +                            }
          +                        } else {
          +                            while ( (elem = elem[ dir ]) ) {
          +                                if ( elem.nodeType === 1 || checkNonElements ) {
          +                                    outerCache = elem[ expando ] || (elem[ expando ] = {});
          +                                    if ( (oldCache = outerCache[ dir ]) &&
          +                                        oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
          +
          +                                        // Assign to newCache so results back-propagate to previous elements
          +                                        return (newCache[ 2 ] = oldCache[ 2 ]);
          +                                    } else {
          +                                        // Reuse newcache so results back-propagate to previous elements
          +                                        outerCache[ dir ] = newCache;
          +
          +                                        // A match means we're done; a fail means we have to keep checking
          +                                        if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
          +                                            return true;
          +                                        }
          +                                    }
          +                                }
          +                            }
          +                        }
          +                    };
          +            }
          +
          +            function elementMatcher( matchers ) {
          +                return matchers.length > 1 ?
          +                    function( elem, context, xml ) {
          +                        var i = matchers.length;
          +                        while ( i-- ) {
          +                            if ( !matchers[i]( elem, context, xml ) ) {
          +                                return false;
          +                            }
          +                        }
          +                        return true;
          +                    } :
          +                    matchers[0];
          +            }
          +
          +            function condense( unmatched, map, filter, context, xml ) {
          +                var elem,
          +                    newUnmatched = [],
          +                    i = 0,
          +                    len = unmatched.length,
          +                    mapped = map != null;
          +
          +                for ( ; i < len; i++ ) {
          +                    if ( (elem = unmatched[i]) ) {
          +                        if ( !filter || filter( elem, context, xml ) ) {
          +                            newUnmatched.push( elem );
          +                            if ( mapped ) {
          +                                map.push( i );
          +                            }
          +                        }
          +                    }
          +                }
          +
          +                return newUnmatched;
          +            }
          +
          +            function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
          +                if ( postFilter && !postFilter[ expando ] ) {
          +                    postFilter = setMatcher( postFilter );
          +                }
          +                if ( postFinder && !postFinder[ expando ] ) {
          +                    postFinder = setMatcher( postFinder, postSelector );
          +                }
          +                return markFunction(function( seed, results, context, xml ) {
          +                    var temp, i, elem,
          +                        preMap = [],
          +                        postMap = [],
          +                        preexisting = results.length,
          +
          +                    // Get initial elements from seed or context
          +                        elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
          +
          +                    // Prefilter to get matcher input, preserving a map for seed-results synchronization
          +                        matcherIn = preFilter && ( seed || !selector ) ?
          +                            condense( elems, preMap, preFilter, context, xml ) :
          +                            elems,
          +
          +                        matcherOut = matcher ?
          +                            // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
          +                            postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
          +
          +                                // ...intermediate processing is necessary
          +                                [] :
          +
          +                                // ...otherwise use results directly
          +                                results :
          +                            matcherIn;
          +
          +                    // Find primary matches
          +                    if ( matcher ) {
          +                        matcher( matcherIn, matcherOut, context, xml );
          +                    }
          +
          +                    // Apply postFilter
          +                    if ( postFilter ) {
          +                        temp = condense( matcherOut, postMap );
          +                        postFilter( temp, [], context, xml );
          +
          +                        // Un-match failing elements by moving them back to matcherIn
          +                        i = temp.length;
          +                        while ( i-- ) {
          +                            if ( (elem = temp[i]) ) {
          +                                matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
          +                            }
          +                        }
          +                    }
          +
          +                    if ( seed ) {
          +                        if ( postFinder || preFilter ) {
          +                            if ( postFinder ) {
          +                                // Get the final matcherOut by condensing this intermediate into postFinder contexts
          +                                temp = [];
          +                                i = matcherOut.length;
          +                                while ( i-- ) {
          +                                    if ( (elem = matcherOut[i]) ) {
          +                                        // Restore matcherIn since elem is not yet a final match
          +                                        temp.push( (matcherIn[i] = elem) );
          +                                    }
          +                                }
          +                                postFinder( null, (matcherOut = []), temp, xml );
          +                            }
          +
          +                            // Move matched elements from seed to results to keep them synchronized
          +                            i = matcherOut.length;
          +                            while ( i-- ) {
          +                                if ( (elem = matcherOut[i]) &&
          +                                    (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
          +
          +                                    seed[temp] = !(results[temp] = elem);
          +                                }
          +                            }
          +                        }
          +
          +                        // Add elements to results, through postFinder if defined
          +                    } else {
          +                        matcherOut = condense(
          +                            matcherOut === results ?
          +                                matcherOut.splice( preexisting, matcherOut.length ) :
          +                                matcherOut
          +                        );
          +                        if ( postFinder ) {
          +                            postFinder( null, results, matcherOut, xml );
          +                        } else {
          +                            push.apply( results, matcherOut );
          +                        }
          +                    }
          +                });
          +            }
          +
          +            function matcherFromTokens( tokens ) {
          +                var checkContext, matcher, j,
          +                    len = tokens.length,
          +                    leadingRelative = Expr.relative[ tokens[0].type ],
          +                    implicitRelative = leadingRelative || Expr.relative[" "],
          +                    i = leadingRelative ? 1 : 0,
          +
          +                // The foundational matcher ensures that elements are reachable from top-level context(s)
          +                    matchContext = addCombinator( function( elem ) {
          +                        return elem === checkContext;
          +                    }, implicitRelative, true ),
          +                    matchAnyContext = addCombinator( function( elem ) {
          +                        return indexOf.call( checkContext, elem ) > -1;
          +                    }, implicitRelative, true ),
          +                    matchers = [ function( elem, context, xml ) {
          +                        return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
          +                            (checkContext = context).nodeType ?
          +                                matchContext( elem, context, xml ) :
          +                                matchAnyContext( elem, context, xml ) );
          +                    } ];
          +
          +                for ( ; i < len; i++ ) {
          +                    if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
          +                        matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
          +                    } else {
          +                        matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
          +
          +                        // Return special upon seeing a positional matcher
          +                        if ( matcher[ expando ] ) {
          +                            // Find the next relative operator (if any) for proper handling
          +                            j = ++i;
          +                            for ( ; j < len; j++ ) {
          +                                if ( Expr.relative[ tokens[j].type ] ) {
          +                                    break;
          +                                }
          +                            }
          +                            return setMatcher(
          +                                i > 1 && elementMatcher( matchers ),
          +                                i > 1 && toSelector(
          +                                    // If the preceding token was a descendant combinator, insert an implicit any-element `*`
          +                                    tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
          +                                ).replace( rtrim, "$1" ),
          +                                matcher,
          +                                i < j && matcherFromTokens( tokens.slice( i, j ) ),
          +                                j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
          +                                j < len && toSelector( tokens )
          +                            );
          +                        }
          +                        matchers.push( matcher );
          +                    }
          +                }
          +
          +                return elementMatcher( matchers );
          +            }
          +
          +            function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
          +                var bySet = setMatchers.length > 0,
          +                    byElement = elementMatchers.length > 0,
          +                    superMatcher = function( seed, context, xml, results, outermost ) {
          +                        var elem, j, matcher,
          +                            matchedCount = 0,
          +                            i = "0",
          +                            unmatched = seed && [],
          +                            setMatched = [],
          +                            contextBackup = outermostContext,
          +                        // We must always have either seed elements or outermost context
          +                            elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
          +                        // Use integer dirruns iff this is the outermost matcher
          +                            dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
          +                            len = elems.length;
          +
          +                        if ( outermost ) {
          +                            outermostContext = context !== document && context;
          +                        }
          +
          +                        // Add elements passing elementMatchers directly to results
          +                        // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
          +                        // Support: IE<9, Safari
          +                        // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
          +                        for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
          +                            if ( byElement && elem ) {
          +                                j = 0;
          +                                while ( (matcher = elementMatchers[j++]) ) {
          +                                    if ( matcher( elem, context, xml ) ) {
          +                                        results.push( elem );
          +                                        break;
          +                                    }
          +                                }
          +                                if ( outermost ) {
          +                                    dirruns = dirrunsUnique;
          +                                }
          +                            }
          +
          +                            // Track unmatched elements for set filters
          +                            if ( bySet ) {
          +                                // They will have gone through all possible matchers
          +                                if ( (elem = !matcher && elem) ) {
          +                                    matchedCount--;
          +                                }
          +
          +                                // Lengthen the array for every element, matched or not
          +                                if ( seed ) {
          +                                    unmatched.push( elem );
          +                                }
          +                            }
          +                        }
          +
          +                        // Apply set filters to unmatched elements
          +                        matchedCount += i;
          +                        if ( bySet && i !== matchedCount ) {
          +                            j = 0;
          +                            while ( (matcher = setMatchers[j++]) ) {
          +                                matcher( unmatched, setMatched, context, xml );
          +                            }
          +
          +                            if ( seed ) {
          +                                // Reintegrate element matches to eliminate the need for sorting
          +                                if ( matchedCount > 0 ) {
          +                                    while ( i-- ) {
          +                                        if ( !(unmatched[i] || setMatched[i]) ) {
          +                                            setMatched[i] = pop.call( results );
          +                                        }
          +                                    }
          +                                }
          +
          +                                // Discard index placeholder values to get only actual matches
          +                                setMatched = condense( setMatched );
          +                            }
          +
          +                            // Add matches to results
          +                            push.apply( results, setMatched );
          +
          +                            // Seedless set matches succeeding multiple successful matchers stipulate sorting
          +                            if ( outermost && !seed && setMatched.length > 0 &&
          +                                ( matchedCount + setMatchers.length ) > 1 ) {
          +
          +                                Sizzle.uniqueSort( results );
          +                            }
          +                        }
          +
          +                        // Override manipulation of globals by nested matchers
          +                        if ( outermost ) {
          +                            dirruns = dirrunsUnique;
          +                            outermostContext = contextBackup;
          +                        }
          +
          +                        return unmatched;
          +                    };
          +
          +                return bySet ?
          +                    markFunction( superMatcher ) :
          +                    superMatcher;
          +            }
          +
          +            compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
          +                var i,
          +                    setMatchers = [],
          +                    elementMatchers = [],
          +                    cached = compilerCache[ selector + " " ];
          +
          +                if ( !cached ) {
          +                    // Generate a function of recursive functions that can be used to check each element
          +                    if ( !group ) {
          +                        group = tokenize( selector );
          +                    }
          +                    i = group.length;
          +                    while ( i-- ) {
          +                        cached = matcherFromTokens( group[i] );
          +                        if ( cached[ expando ] ) {
          +                            setMatchers.push( cached );
          +                        } else {
          +                            elementMatchers.push( cached );
          +                        }
          +                    }
          +
          +                    // Cache the compiled function
          +                    cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
          +                }
          +                return cached;
          +            };
          +
          +            function multipleContexts( selector, contexts, results ) {
          +                var i = 0,
          +                    len = contexts.length;
          +                for ( ; i < len; i++ ) {
          +                    Sizzle( selector, contexts[i], results );
          +                }
          +                return results;
          +            }
          +
          +            function select( selector, context, results, seed ) {
          +                var i, tokens, token, type, find,
          +                    match = tokenize( selector );
          +
          +                if ( !seed ) {
          +                    // Try to minimize operations if there is only one group
          +                    if ( match.length === 1 ) {
          +
          +                        // Take a shortcut and set the context if the root selector is an ID
          +                        tokens = match[0] = match[0].slice( 0 );
          +                        if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
          +                            support.getById && context.nodeType === 9 && documentIsHTML &&
          +                            Expr.relative[ tokens[1].type ] ) {
          +
          +                            context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
          +                            if ( !context ) {
          +                                return results;
          +                            }
          +                            selector = selector.slice( tokens.shift().value.length );
          +                        }
          +
          +                        // Fetch a seed set for right-to-left matching
          +                        i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
          +                        while ( i-- ) {
          +                            token = tokens[i];
          +
          +                            // Abort if we hit a combinator
          +                            if ( Expr.relative[ (type = token.type) ] ) {
          +                                break;
          +                            }
          +                            if ( (find = Expr.find[ type ]) ) {
          +                                // Search, expanding context for leading sibling combinators
          +                                if ( (seed = find(
          +                                    token.matches[0].replace( runescape, funescape ),
          +                                    rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
          +                                )) ) {
          +
          +                                    // If seed is empty or no tokens remain, we can return early
          +                                    tokens.splice( i, 1 );
          +                                    selector = seed.length && toSelector( tokens );
          +                                    if ( !selector ) {
          +                                        push.apply( results, seed );
          +                                        return results;
          +                                    }
          +
          +                                    break;
          +                                }
          +                            }
          +                        }
          +                    }
          +                }
          +
          +                // Compile and execute a filtering function
          +                // Provide `match` to avoid retokenization if we modified the selector above
          +                compile( selector, match )(
          +                    seed,
          +                    context,
          +                    !documentIsHTML,
          +                    results,
          +                    rsibling.test( selector ) && testContext( context.parentNode ) || context
          +                );
          +                return results;
          +            }
          +
          +// One-time assignments
          +
          +// Sort stability
          +            support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
          +
          +// Support: Chrome<14
          +// Always assume duplicates if they aren't passed to the comparison function
          +            support.detectDuplicates = !!hasDuplicate;
          +
          +// Initialize against the default document
          +            setDocument();
          +
          +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
          +// Detached nodes confoundingly follow *each other*
          +            support.sortDetached = assert(function( div1 ) {
          +                // Should return 1, but returns 4 (following)
          +                return div1.compareDocumentPosition( document.createElement("div") ) & 1;
          +            });
          +
          +// Support: IE<8
          +// Prevent attribute/property "interpolation"
          +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
          +            if ( !assert(function( div ) {
          +                div.innerHTML = "<a href='#'></a>";
          +                return div.firstChild.getAttribute("href") === "#" ;
          +            }) ) {
          +                addHandle( "type|href|height|width", function( elem, name, isXML ) {
          +                    if ( !isXML ) {
          +                        return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
          +                    }
          +                });
          +            }
          +
          +// Support: IE<9
          +// Use defaultValue in place of getAttribute("value")
          +            if ( !support.attributes || !assert(function( div ) {
          +                div.innerHTML = "<input/>";
          +                div.firstChild.setAttribute( "value", "" );
          +                return div.firstChild.getAttribute( "value" ) === "";
          +            }) ) {
          +                addHandle( "value", function( elem, name, isXML ) {
          +                    if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
          +                        return elem.defaultValue;
          +                    }
          +                });
          +            }
          +
          +// Support: IE<9
          +// Use getAttributeNode to fetch booleans when getAttribute lies
          +            if ( !assert(function( div ) {
          +                return div.getAttribute("disabled") == null;
          +            }) ) {
          +                addHandle( booleans, function( elem, name, isXML ) {
          +                    var val;
          +                    if ( !isXML ) {
          +                        return elem[ name ] === true ? name.toLowerCase() :
          +                            (val = elem.getAttributeNode( name )) && val.specified ?
          +                                val.value :
          +                                null;
          +                    }
          +                });
          +            }
          +
          +            return Sizzle;
          +
          +        })( window );
          +
          +
          +
          +    jQuery.find = Sizzle;
          +    jQuery.expr = Sizzle.selectors;
          +    jQuery.expr[":"] = jQuery.expr.pseudos;
          +    jQuery.unique = Sizzle.uniqueSort;
          +    jQuery.text = Sizzle.getText;
          +    jQuery.isXMLDoc = Sizzle.isXML;
          +    jQuery.contains = Sizzle.contains;
          +
          +
          +
          +    var rneedsContext = jQuery.expr.match.needsContext;
          +
          +    var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
          +
          +
          +
          +    var risSimple = /^.[^:#\[\.,]*$/;
          +
          +// Implement the identical functionality for filter and not
          +    function winnow( elements, qualifier, not ) {
          +        if ( jQuery.isFunction( qualifier ) ) {
          +            return jQuery.grep( elements, function( elem, i ) {
          +                /* jshint -W018 */
          +                return !!qualifier.call( elem, i, elem ) !== not;
          +            });
          +
          +        }
          +
          +        if ( qualifier.nodeType ) {
          +            return jQuery.grep( elements, function( elem ) {
          +                return ( elem === qualifier ) !== not;
          +            });
          +
          +        }
          +
          +        if ( typeof qualifier === "string" ) {
          +            if ( risSimple.test( qualifier ) ) {
          +                return jQuery.filter( qualifier, elements, not );
          +            }
          +
          +            qualifier = jQuery.filter( qualifier, elements );
          +        }
          +
          +        return jQuery.grep( elements, function( elem ) {
          +            return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
          +        });
          +    }
          +
          +    jQuery.filter = function( expr, elems, not ) {
          +        var elem = elems[ 0 ];
          +
          +        if ( not ) {
          +            expr = ":not(" + expr + ")";
          +        }
          +
          +        return elems.length === 1 && elem.nodeType === 1 ?
          +            jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
          +            jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
          +                return elem.nodeType === 1;
          +            }));
          +    };
          +
          +    jQuery.fn.extend({
          +        find: function( selector ) {
          +            var i,
          +                len = this.length,
          +                ret = [],
          +                self = this;
          +
          +            if ( typeof selector !== "string" ) {
          +                return this.pushStack( jQuery( selector ).filter(function() {
          +                    for ( i = 0; i < len; i++ ) {
          +                        if ( jQuery.contains( self[ i ], this ) ) {
          +                            return true;
          +                        }
          +                    }
          +                }) );
          +            }
          +
          +            for ( i = 0; i < len; i++ ) {
          +                jQuery.find( selector, self[ i ], ret );
          +            }
          +
          +            // Needed because $( selector, context ) becomes $( context ).find( selector )
          +            ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
          +            ret.selector = this.selector ? this.selector + " " + selector : selector;
          +            return ret;
          +        },
          +        filter: function( selector ) {
          +            return this.pushStack( winnow(this, selector || [], false) );
          +        },
          +        not: function( selector ) {
          +            return this.pushStack( winnow(this, selector || [], true) );
          +        },
          +        is: function( selector ) {
          +            return !!winnow(
          +                this,
          +
          +                // If this is a positional/relative selector, check membership in the returned set
          +                // so $("p:first").is("p:last") won't return true for a doc with two "p".
          +                typeof selector === "string" && rneedsContext.test( selector ) ?
          +                    jQuery( selector ) :
          +                    selector || [],
          +                false
          +            ).length;
          +        }
          +    });
          +
          +
          +// Initialize a jQuery object
          +
          +
          +// A central reference to the root jQuery(document)
          +    var rootjQuery,
          +
          +    // A simple way to check for HTML strings
          +    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
          +    // Strict HTML recognition (#11290: must start with <)
          +        rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
          +
          +        init = jQuery.fn.init = function( selector, context ) {
          +            var match, elem;
          +
          +            // HANDLE: $(""), $(null), $(undefined), $(false)
          +            if ( !selector ) {
          +                return this;
          +            }
          +
          +            // Handle HTML strings
          +            if ( typeof selector === "string" ) {
          +                if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
          +                    // Assume that strings that start and end with <> are HTML and skip the regex check
          +                    match = [ null, selector, null ];
          +
          +                } else {
          +                    match = rquickExpr.exec( selector );
          +                }
          +
          +                // Match html or make sure no context is specified for #id
          +                if ( match && (match[1] || !context) ) {
          +
          +                    // HANDLE: $(html) -> $(array)
          +                    if ( match[1] ) {
          +                        context = context instanceof jQuery ? context[0] : context;
          +
          +                        // scripts is true for back-compat
          +                        // Intentionally let the error be thrown if parseHTML is not present
          +                        jQuery.merge( this, jQuery.parseHTML(
          +                            match[1],
          +                            context && context.nodeType ? context.ownerDocument || context : document,
          +                            true
          +                        ) );
          +
          +                        // HANDLE: $(html, props)
          +                        if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
          +                            for ( match in context ) {
          +                                // Properties of context are called as methods if possible
          +                                if ( jQuery.isFunction( this[ match ] ) ) {
          +                                    this[ match ]( context[ match ] );
          +
          +                                    // ...and otherwise set as attributes
          +                                } else {
          +                                    this.attr( match, context[ match ] );
          +                                }
          +                            }
          +                        }
          +
          +                        return this;
          +
          +                        // HANDLE: $(#id)
          +                    } else {
          +                        elem = document.getElementById( match[2] );
          +
          +                        // Check parentNode to catch when Blackberry 4.6 returns
          +                        // nodes that are no longer in the document #6963
          +                        if ( elem && elem.parentNode ) {
          +                            // Inject the element directly into the jQuery object
          +                            this.length = 1;
          +                            this[0] = elem;
          +                        }
          +
          +                        this.context = document;
          +                        this.selector = selector;
          +                        return this;
          +                    }
          +
          +                    // HANDLE: $(expr, $(...))
          +                } else if ( !context || context.jquery ) {
          +                    return ( context || rootjQuery ).find( selector );
          +
          +                    // HANDLE: $(expr, context)
          +                    // (which is just equivalent to: $(context).find(expr)
          +                } else {
          +                    return this.constructor( context ).find( selector );
          +                }
          +
          +                // HANDLE: $(DOMElement)
          +            } else if ( selector.nodeType ) {
          +                this.context = this[0] = selector;
          +                this.length = 1;
          +                return this;
          +
          +                // HANDLE: $(function)
          +                // Shortcut for document ready
          +            } else if ( jQuery.isFunction( selector ) ) {
          +                return typeof rootjQuery.ready !== "undefined" ?
          +                    rootjQuery.ready( selector ) :
          +                    // Execute immediately if ready is not present
          +                    selector( jQuery );
          +            }
          +
          +            if ( selector.selector !== undefined ) {
          +                this.selector = selector.selector;
          +                this.context = selector.context;
          +            }
          +
          +            return jQuery.makeArray( selector, this );
          +        };
          +
          +// Give the init function the jQuery prototype for later instantiation
          +    init.prototype = jQuery.fn;
          +
          +// Initialize central reference
          +    rootjQuery = jQuery( document );
          +
          +
          +    var rparentsprev = /^(?:parents|prev(?:Until|All))/,
          +    // methods guaranteed to produce a unique set when starting from a unique set
          +        guaranteedUnique = {
          +            children: true,
          +            contents: true,
          +            next: true,
          +            prev: true
          +        };
          +
          +    jQuery.extend({
          +        dir: function( elem, dir, until ) {
          +            var matched = [],
          +                truncate = until !== undefined;
          +
          +            while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
          +                if ( elem.nodeType === 1 ) {
          +                    if ( truncate && jQuery( elem ).is( until ) ) {
          +                        break;
          +                    }
          +                    matched.push( elem );
          +                }
          +            }
          +            return matched;
          +        },
          +
          +        sibling: function( n, elem ) {
          +            var matched = [];
          +
          +            for ( ; n; n = n.nextSibling ) {
          +                if ( n.nodeType === 1 && n !== elem ) {
          +                    matched.push( n );
          +                }
          +            }
          +
          +            return matched;
          +        }
          +    });
          +
          +    jQuery.fn.extend({
          +        has: function( target ) {
          +            var targets = jQuery( target, this ),
          +                l = targets.length;
          +
          +            return this.filter(function() {
          +                var i = 0;
          +                for ( ; i < l; i++ ) {
          +                    if ( jQuery.contains( this, targets[i] ) ) {
          +                        return true;
          +                    }
          +                }
          +            });
          +        },
          +
          +        closest: function( selectors, context ) {
          +            var cur,
          +                i = 0,
          +                l = this.length,
          +                matched = [],
          +                pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
          +                    jQuery( selectors, context || this.context ) :
          +                    0;
          +
          +            for ( ; i < l; i++ ) {
          +                for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
          +                    // Always skip document fragments
          +                    if ( cur.nodeType < 11 && (pos ?
          +                        pos.index(cur) > -1 :
          +
          +                        // Don't pass non-elements to Sizzle
          +                        cur.nodeType === 1 &&
          +                            jQuery.find.matchesSelector(cur, selectors)) ) {
          +
          +                        matched.push( cur );
          +                        break;
          +                    }
          +                }
          +            }
          +
          +            return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
          +        },
          +
          +        // Determine the position of an element within
          +        // the matched set of elements
          +        index: function( elem ) {
          +
          +            // No argument, return index in parent
          +            if ( !elem ) {
          +                return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
          +            }
          +
          +            // index in selector
          +            if ( typeof elem === "string" ) {
          +                return indexOf.call( jQuery( elem ), this[ 0 ] );
          +            }
          +
          +            // Locate the position of the desired element
          +            return indexOf.call( this,
          +
          +                // If it receives a jQuery object, the first element is used
          +                elem.jquery ? elem[ 0 ] : elem
          +            );
          +        },
          +
          +        add: function( selector, context ) {
          +            return this.pushStack(
          +                jQuery.unique(
          +                    jQuery.merge( this.get(), jQuery( selector, context ) )
          +                )
          +            );
          +        },
          +
          +        addBack: function( selector ) {
          +            return this.add( selector == null ?
          +                this.prevObject : this.prevObject.filter(selector)
          +            );
          +        }
          +    });
          +
          +    function sibling( cur, dir ) {
          +        while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
          +        return cur;
          +    }
          +
          +    jQuery.each({
          +        parent: function( elem ) {
          +            var parent = elem.parentNode;
          +            return parent && parent.nodeType !== 11 ? parent : null;
          +        },
          +        parents: function( elem ) {
          +            return jQuery.dir( elem, "parentNode" );
          +        },
          +        parentsUntil: function( elem, i, until ) {
          +            return jQuery.dir( elem, "parentNode", until );
          +        },
          +        next: function( elem ) {
          +            return sibling( elem, "nextSibling" );
          +        },
          +        prev: function( elem ) {
          +            return sibling( elem, "previousSibling" );
          +        },
          +        nextAll: function( elem ) {
          +            return jQuery.dir( elem, "nextSibling" );
          +        },
          +        prevAll: function( elem ) {
          +            return jQuery.dir( elem, "previousSibling" );
          +        },
          +        nextUntil: function( elem, i, until ) {
          +            return jQuery.dir( elem, "nextSibling", until );
          +        },
          +        prevUntil: function( elem, i, until ) {
          +            return jQuery.dir( elem, "previousSibling", until );
          +        },
          +        siblings: function( elem ) {
          +            return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
          +        },
          +        children: function( elem ) {
          +            return jQuery.sibling( elem.firstChild );
          +        },
          +        contents: function( elem ) {
          +            return elem.contentDocument || jQuery.merge( [], elem.childNodes );
          +        }
          +    }, function( name, fn ) {
          +        jQuery.fn[ name ] = function( until, selector ) {
          +            var matched = jQuery.map( this, fn, until );
          +
          +            if ( name.slice( -5 ) !== "Until" ) {
          +                selector = until;
          +            }
          +
          +            if ( selector && typeof selector === "string" ) {
          +                matched = jQuery.filter( selector, matched );
          +            }
          +
          +            if ( this.length > 1 ) {
          +                // Remove duplicates
          +                if ( !guaranteedUnique[ name ] ) {
          +                    jQuery.unique( matched );
          +                }
          +
          +                // Reverse order for parents* and prev-derivatives
          +                if ( rparentsprev.test( name ) ) {
          +                    matched.reverse();
          +                }
          +            }
          +
          +            return this.pushStack( matched );
          +        };
          +    });
          +    var rnotwhite = (/\S+/g);
          +
          +
          +
          +// String to Object options format cache
          +    var optionsCache = {};
          +
          +// Convert String-formatted options into Object-formatted ones and store in cache
          +    function createOptions( options ) {
          +        var object = optionsCache[ options ] = {};
          +        jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
          +            object[ flag ] = true;
          +        });
          +        return object;
          +    }
          +
          +    /*
          +     * Create a callback list using the following parameters:
          +     *
          +     *	options: an optional list of space-separated options that will change how
          +     *			the callback list behaves or a more traditional option object
          +     *
          +     * By default a callback list will act like an event callback list and can be
          +     * "fired" multiple times.
          +     *
          +     * Possible options:
          +     *
          +     *	once:			will ensure the callback list can only be fired once (like a Deferred)
          +     *
          +     *	memory:			will keep track of previous values and will call any callback added
          +     *					after the list has been fired right away with the latest "memorized"
          +     *					values (like a Deferred)
          +     *
          +     *	unique:			will ensure a callback can only be added once (no duplicate in the list)
          +     *
          +     *	stopOnFalse:	interrupt callings when a callback returns false
          +     *
          +     */
          +    jQuery.Callbacks = function( options ) {
          +
          +        // Convert options from String-formatted to Object-formatted if needed
          +        // (we check in cache first)
          +        options = typeof options === "string" ?
          +            ( optionsCache[ options ] || createOptions( options ) ) :
          +            jQuery.extend( {}, options );
          +
          +        var // Last fire value (for non-forgettable lists)
          +            memory,
          +        // Flag to know if list was already fired
          +            fired,
          +        // Flag to know if list is currently firing
          +            firing,
          +        // First callback to fire (used internally by add and fireWith)
          +            firingStart,
          +        // End of the loop when firing
          +            firingLength,
          +        // Index of currently firing callback (modified by remove if needed)
          +            firingIndex,
          +        // Actual callback list
          +            list = [],
          +        // Stack of fire calls for repeatable lists
          +            stack = !options.once && [],
          +        // Fire callbacks
          +            fire = function( data ) {
          +                memory = options.memory && data;
          +                fired = true;
          +                firingIndex = firingStart || 0;
          +                firingStart = 0;
          +                firingLength = list.length;
          +                firing = true;
          +                for ( ; list && firingIndex < firingLength; firingIndex++ ) {
          +                    if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
          +                        memory = false; // To prevent further calls using add
          +                        break;
          +                    }
          +                }
          +                firing = false;
          +                if ( list ) {
          +                    if ( stack ) {
          +                        if ( stack.length ) {
          +                            fire( stack.shift() );
          +                        }
          +                    } else if ( memory ) {
          +                        list = [];
          +                    } else {
          +                        self.disable();
          +                    }
          +                }
          +            },
          +        // Actual Callbacks object
          +            self = {
          +                // Add a callback or a collection of callbacks to the list
          +                add: function() {
          +                    if ( list ) {
          +                        // First, we save the current length
          +                        var start = list.length;
          +                        (function add( args ) {
          +                            jQuery.each( args, function( _, arg ) {
          +                                var type = jQuery.type( arg );
          +                                if ( type === "function" ) {
          +                                    if ( !options.unique || !self.has( arg ) ) {
          +                                        list.push( arg );
          +                                    }
          +                                } else if ( arg && arg.length && type !== "string" ) {
          +                                    // Inspect recursively
          +                                    add( arg );
          +                                }
          +                            });
          +                        })( arguments );
          +                        // Do we need to add the callbacks to the
          +                        // current firing batch?
          +                        if ( firing ) {
          +                            firingLength = list.length;
          +                            // With memory, if we're not firing then
          +                            // we should call right away
          +                        } else if ( memory ) {
          +                            firingStart = start;
          +                            fire( memory );
          +                        }
          +                    }
          +                    return this;
          +                },
          +                // Remove a callback from the list
          +                remove: function() {
          +                    if ( list ) {
          +                        jQuery.each( arguments, function( _, arg ) {
          +                            var index;
          +                            while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
          +                                list.splice( index, 1 );
          +                                // Handle firing indexes
          +                                if ( firing ) {
          +                                    if ( index <= firingLength ) {
          +                                        firingLength--;
          +                                    }
          +                                    if ( index <= firingIndex ) {
          +                                        firingIndex--;
          +                                    }
          +                                }
          +                            }
          +                        });
          +                    }
          +                    return this;
          +                },
          +                // Check if a given callback is in the list.
          +                // If no argument is given, return whether or not list has callbacks attached.
          +                has: function( fn ) {
          +                    return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
          +                },
          +                // Remove all callbacks from the list
          +                empty: function() {
          +                    list = [];
          +                    firingLength = 0;
          +                    return this;
          +                },
          +                // Have the list do nothing anymore
          +                disable: function() {
          +                    list = stack = memory = undefined;
          +                    return this;
          +                },
          +                // Is it disabled?
          +                disabled: function() {
          +                    return !list;
          +                },
          +                // Lock the list in its current state
          +                lock: function() {
          +                    stack = undefined;
          +                    if ( !memory ) {
          +                        self.disable();
          +                    }
          +                    return this;
          +                },
          +                // Is it locked?
          +                locked: function() {
          +                    return !stack;
          +                },
          +                // Call all callbacks with the given context and arguments
          +                fireWith: function( context, args ) {
          +                    if ( list && ( !fired || stack ) ) {
          +                        args = args || [];
          +                        args = [ context, args.slice ? args.slice() : args ];
          +                        if ( firing ) {
          +                            stack.push( args );
          +                        } else {
          +                            fire( args );
          +                        }
          +                    }
          +                    return this;
          +                },
          +                // Call all the callbacks with the given arguments
          +                fire: function() {
          +                    self.fireWith( this, arguments );
          +                    return this;
          +                },
          +                // To know if the callbacks have already been called at least once
          +                fired: function() {
          +                    return !!fired;
          +                }
          +            };
          +
          +        return self;
          +    };
          +
          +
          +    jQuery.extend({
          +
          +        Deferred: function( func ) {
          +            var tuples = [
          +                    // action, add listener, listener list, final state
          +                    [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
          +                    [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
          +                    [ "notify", "progress", jQuery.Callbacks("memory") ]
          +                ],
          +                state = "pending",
          +                promise = {
          +                    state: function() {
          +                        return state;
          +                    },
          +                    always: function() {
          +                        deferred.done( arguments ).fail( arguments );
          +                        return this;
          +                    },
          +                    then: function( /* fnDone, fnFail, fnProgress */ ) {
          +                        var fns = arguments;
          +                        return jQuery.Deferred(function( newDefer ) {
          +                            jQuery.each( tuples, function( i, tuple ) {
          +                                var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
          +                                // deferred[ done | fail | progress ] for forwarding actions to newDefer
          +                                deferred[ tuple[1] ](function() {
          +                                    var returned = fn && fn.apply( this, arguments );
          +                                    if ( returned && jQuery.isFunction( returned.promise ) ) {
          +                                        returned.promise()
          +                                            .done( newDefer.resolve )
          +                                            .fail( newDefer.reject )
          +                                            .progress( newDefer.notify );
          +                                    } else {
          +                                        newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
          +                                    }
          +                                });
          +                            });
          +                            fns = null;
          +                        }).promise();
          +                    },
          +                    // Get a promise for this deferred
          +                    // If obj is provided, the promise aspect is added to the object
          +                    promise: function( obj ) {
          +                        return obj != null ? jQuery.extend( obj, promise ) : promise;
          +                    }
          +                },
          +                deferred = {};
          +
          +            // Keep pipe for back-compat
          +            promise.pipe = promise.then;
          +
          +            // Add list-specific methods
          +            jQuery.each( tuples, function( i, tuple ) {
          +                var list = tuple[ 2 ],
          +                    stateString = tuple[ 3 ];
          +
          +                // promise[ done | fail | progress ] = list.add
          +                promise[ tuple[1] ] = list.add;
          +
          +                // Handle state
          +                if ( stateString ) {
          +                    list.add(function() {
          +                        // state = [ resolved | rejected ]
          +                        state = stateString;
          +
          +                        // [ reject_list | resolve_list ].disable; progress_list.lock
          +                    }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
          +                }
          +
          +                // deferred[ resolve | reject | notify ]
          +                deferred[ tuple[0] ] = function() {
          +                    deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
          +                    return this;
          +                };
          +                deferred[ tuple[0] + "With" ] = list.fireWith;
          +            });
          +
          +            // Make the deferred a promise
          +            promise.promise( deferred );
          +
          +            // Call given func if any
          +            if ( func ) {
          +                func.call( deferred, deferred );
          +            }
          +
          +            // All done!
          +            return deferred;
          +        },
          +
          +        // Deferred helper
          +        when: function( subordinate /* , ..., subordinateN */ ) {
          +            var i = 0,
          +                resolveValues = slice.call( arguments ),
          +                length = resolveValues.length,
          +
          +            // the count of uncompleted subordinates
          +                remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
          +
          +            // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
          +                deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
          +
          +            // Update function for both resolve and progress values
          +                updateFunc = function( i, contexts, values ) {
          +                    return function( value ) {
          +                        contexts[ i ] = this;
          +                        values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
          +                        if ( values === progressValues ) {
          +                            deferred.notifyWith( contexts, values );
          +                        } else if ( !( --remaining ) ) {
          +                            deferred.resolveWith( contexts, values );
          +                        }
          +                    };
          +                },
          +
          +                progressValues, progressContexts, resolveContexts;
          +
          +            // add listeners to Deferred subordinates; treat others as resolved
          +            if ( length > 1 ) {
          +                progressValues = new Array( length );
          +                progressContexts = new Array( length );
          +                resolveContexts = new Array( length );
          +                for ( ; i < length; i++ ) {
          +                    if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
          +                        resolveValues[ i ].promise()
          +                            .done( updateFunc( i, resolveContexts, resolveValues ) )
          +                            .fail( deferred.reject )
          +                            .progress( updateFunc( i, progressContexts, progressValues ) );
          +                    } else {
          +                        --remaining;
          +                    }
          +                }
          +            }
          +
          +            // if we're not waiting on anything, resolve the master
          +            if ( !remaining ) {
          +                deferred.resolveWith( resolveContexts, resolveValues );
          +            }
          +
          +            return deferred.promise();
          +        }
          +    });
          +
          +
          +// The deferred used on DOM ready
          +    var readyList;
          +
          +    jQuery.fn.ready = function( fn ) {
          +        // Add the callback
          +        jQuery.ready.promise().done( fn );
          +
          +        return this;
          +    };
          +
          +    jQuery.extend({
          +        // Is the DOM ready to be used? Set to true once it occurs.
          +        isReady: false,
          +
          +        // A counter to track how many items to wait for before
          +        // the ready event fires. See #6781
          +        readyWait: 1,
          +
          +        // Hold (or release) the ready event
          +        holdReady: function( hold ) {
          +            if ( hold ) {
          +                jQuery.readyWait++;
          +            } else {
          +                jQuery.ready( true );
          +            }
          +        },
          +
          +        // Handle when the DOM is ready
          +        ready: function( wait ) {
          +
          +            // Abort if there are pending holds or we're already ready
          +            if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
          +                return;
          +            }
          +
          +            // Remember that the DOM is ready
          +            jQuery.isReady = true;
          +
          +            // If a normal DOM Ready event fired, decrement, and wait if need be
          +            if ( wait !== true && --jQuery.readyWait > 0 ) {
          +                return;
          +            }
          +
          +            // If there are functions bound, to execute
          +            readyList.resolveWith( document, [ jQuery ] );
          +
          +            // Trigger any bound ready events
          +            if ( jQuery.fn.trigger ) {
          +                jQuery( document ).trigger("ready").off("ready");
          +            }
          +        }
          +    });
          +
          +    /**
          +     * The ready event handler and self cleanup method
          +     */
          +    function completed() {
          +        document.removeEventListener( "DOMContentLoaded", completed, false );
          +        window.removeEventListener( "load", completed, false );
          +        jQuery.ready();
          +    }
          +
          +    jQuery.ready.promise = function( obj ) {
          +        if ( !readyList ) {
          +
          +            readyList = jQuery.Deferred();
          +
          +            // Catch cases where $(document).ready() is called after the browser event has already occurred.
          +            // we once tried to use readyState "interactive" here, but it caused issues like the one
          +            // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
          +            if ( document.readyState === "complete" ) {
          +                // Handle it asynchronously to allow scripts the opportunity to delay ready
          +                setTimeout( jQuery.ready );
          +
          +            } else {
          +
          +                // Use the handy event callback
          +                document.addEventListener( "DOMContentLoaded", completed, false );
          +
          +                // A fallback to window.onload, that will always work
          +                window.addEventListener( "load", completed, false );
          +            }
          +        }
          +        return readyList.promise( obj );
          +    };
          +
          +// Kick off the DOM ready check even if the user does not
          +    jQuery.ready.promise();
          +
          +
          +
          +
          +// Multifunctional method to get and set values of a collection
          +// The value/s can optionally be executed if it's a function
          +    var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
          +        var i = 0,
          +            len = elems.length,
          +            bulk = key == null;
          +
          +        // Sets many values
          +        if ( jQuery.type( key ) === "object" ) {
          +            chainable = true;
          +            for ( i in key ) {
          +                jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
          +            }
          +
          +            // Sets one value
          +        } else if ( value !== undefined ) {
          +            chainable = true;
          +
          +            if ( !jQuery.isFunction( value ) ) {
          +                raw = true;
          +            }
          +
          +            if ( bulk ) {
          +                // Bulk operations run against the entire set
          +                if ( raw ) {
          +                    fn.call( elems, value );
          +                    fn = null;
          +
          +                    // ...except when executing function values
          +                } else {
          +                    bulk = fn;
          +                    fn = function( elem, key, value ) {
          +                        return bulk.call( jQuery( elem ), value );
          +                    };
          +                }
          +            }
          +
          +            if ( fn ) {
          +                for ( ; i < len; i++ ) {
          +                    fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
          +                }
          +            }
          +        }
          +
          +        return chainable ?
          +            elems :
          +
          +            // Gets
          +            bulk ?
          +                fn.call( elems ) :
          +                len ? fn( elems[0], key ) : emptyGet;
          +    };
          +
          +
          +    /**
          +     * Determines whether an object can have data
          +     */
          +    jQuery.acceptData = function( owner ) {
          +        // Accepts only:
          +        //  - Node
          +        //    - Node.ELEMENT_NODE
          +        //    - Node.DOCUMENT_NODE
          +        //  - Object
          +        //    - Any
          +        /* jshint -W018 */
          +        return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
          +    };
          +
          +
          +    function Data() {
          +        // Support: Android < 4,
          +        // Old WebKit does not have Object.preventExtensions/freeze method,
          +        // return new empty object instead with no [[set]] accessor
          +        Object.defineProperty( this.cache = {}, 0, {
          +            get: function() {
          +                return {};
          +            }
          +        });
          +
          +        this.expando = jQuery.expando + Math.random();
          +    }
          +
          +    Data.uid = 1;
          +    Data.accepts = jQuery.acceptData;
          +
          +    Data.prototype = {
          +        key: function( owner ) {
          +            // We can accept data for non-element nodes in modern browsers,
          +            // but we should not, see #8335.
          +            // Always return the key for a frozen object.
          +            if ( !Data.accepts( owner ) ) {
          +                return 0;
          +            }
          +
          +            var descriptor = {},
          +            // Check if the owner object already has a cache key
          +                unlock = owner[ this.expando ];
          +
          +            // If not, create one
          +            if ( !unlock ) {
          +                unlock = Data.uid++;
          +
          +                // Secure it in a non-enumerable, non-writable property
          +                try {
          +                    descriptor[ this.expando ] = { value: unlock };
          +                    Object.defineProperties( owner, descriptor );
          +
          +                    // Support: Android < 4
          +                    // Fallback to a less secure definition
          +                } catch ( e ) {
          +                    descriptor[ this.expando ] = unlock;
          +                    jQuery.extend( owner, descriptor );
          +                }
          +            }
          +
          +            // Ensure the cache object
          +            if ( !this.cache[ unlock ] ) {
          +                this.cache[ unlock ] = {};
          +            }
          +
          +            return unlock;
          +        },
          +        set: function( owner, data, value ) {
          +            var prop,
          +            // There may be an unlock assigned to this node,
          +            // if there is no entry for this "owner", create one inline
          +            // and set the unlock as though an owner entry had always existed
          +                unlock = this.key( owner ),
          +                cache = this.cache[ unlock ];
          +
          +            // Handle: [ owner, key, value ] args
          +            if ( typeof data === "string" ) {
          +                cache[ data ] = value;
          +
          +                // Handle: [ owner, { properties } ] args
          +            } else {
          +                // Fresh assignments by object are shallow copied
          +                if ( jQuery.isEmptyObject( cache ) ) {
          +                    jQuery.extend( this.cache[ unlock ], data );
          +                    // Otherwise, copy the properties one-by-one to the cache object
          +                } else {
          +                    for ( prop in data ) {
          +                        cache[ prop ] = data[ prop ];
          +                    }
          +                }
          +            }
          +            return cache;
          +        },
          +        get: function( owner, key ) {
          +            // Either a valid cache is found, or will be created.
          +            // New caches will be created and the unlock returned,
          +            // allowing direct access to the newly created
          +            // empty data object. A valid owner object must be provided.
          +            var cache = this.cache[ this.key( owner ) ];
          +
          +            return key === undefined ?
          +                cache : cache[ key ];
          +        },
          +        access: function( owner, key, value ) {
          +            var stored;
          +            // In cases where either:
          +            //
          +            //   1. No key was specified
          +            //   2. A string key was specified, but no value provided
          +            //
          +            // Take the "read" path and allow the get method to determine
          +            // which value to return, respectively either:
          +            //
          +            //   1. The entire cache object
          +            //   2. The data stored at the key
          +            //
          +            if ( key === undefined ||
          +                ((key && typeof key === "string") && value === undefined) ) {
          +
          +                stored = this.get( owner, key );
          +
          +                return stored !== undefined ?
          +                    stored : this.get( owner, jQuery.camelCase(key) );
          +            }
          +
          +            // [*]When the key is not a string, or both a key and value
          +            // are specified, set or extend (existing objects) with either:
          +            //
          +            //   1. An object of properties
          +            //   2. A key and value
          +            //
          +            this.set( owner, key, value );
          +
          +            // Since the "set" path can have two possible entry points
          +            // return the expected data based on which path was taken[*]
          +            return value !== undefined ? value : key;
          +        },
          +        remove: function( owner, key ) {
          +            var i, name, camel,
          +                unlock = this.key( owner ),
          +                cache = this.cache[ unlock ];
          +
          +            if ( key === undefined ) {
          +                this.cache[ unlock ] = {};
          +
          +            } else {
          +                // Support array or space separated string of keys
          +                if ( jQuery.isArray( key ) ) {
          +                    // If "name" is an array of keys...
          +                    // When data is initially created, via ("key", "val") signature,
          +                    // keys will be converted to camelCase.
          +                    // Since there is no way to tell _how_ a key was added, remove
          +                    // both plain key and camelCase key. #12786
          +                    // This will only penalize the array argument path.
          +                    name = key.concat( key.map( jQuery.camelCase ) );
          +                } else {
          +                    camel = jQuery.camelCase( key );
          +                    // Try the string as a key before any manipulation
          +                    if ( key in cache ) {
          +                        name = [ key, camel ];
          +                    } else {
          +                        // If a key with the spaces exists, use it.
          +                        // Otherwise, create an array by matching non-whitespace
          +                        name = camel;
          +                        name = name in cache ?
          +                            [ name ] : ( name.match( rnotwhite ) || [] );
          +                    }
          +                }
          +
          +                i = name.length;
          +                while ( i-- ) {
          +                    delete cache[ name[ i ] ];
          +                }
          +            }
          +        },
          +        hasData: function( owner ) {
          +            return !jQuery.isEmptyObject(
          +                this.cache[ owner[ this.expando ] ] || {}
          +            );
          +        },
          +        discard: function( owner ) {
          +            if ( owner[ this.expando ] ) {
          +                delete this.cache[ owner[ this.expando ] ];
          +            }
          +        }
          +    };
          +    var data_priv = new Data();
          +
          +    var data_user = new Data();
          +
          +
          +
          +    /*
          +     Implementation Summary
          +
          +     1. Enforce API surface and semantic compatibility with 1.9.x branch
          +     2. Improve the module's maintainability by reducing the storage
          +     paths to a single mechanism.
          +     3. Use the same single mechanism to support "private" and "user" data.
          +     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
          +     5. Avoid exposing implementation details on user objects (eg. expando properties)
          +     6. Provide a clear path for implementation upgrade to WeakMap in 2014
          +     */
          +    var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
          +        rmultiDash = /([A-Z])/g;
          +
          +    function dataAttr( elem, key, data ) {
          +        var name;
          +
          +        // If nothing was found internally, try to fetch any
          +        // data from the HTML5 data-* attribute
          +        if ( data === undefined && elem.nodeType === 1 ) {
          +            name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
          +            data = elem.getAttribute( name );
          +
          +            if ( typeof data === "string" ) {
          +                try {
          +                    data = data === "true" ? true :
          +                        data === "false" ? false :
          +                            data === "null" ? null :
          +                                // Only convert to a number if it doesn't change the string
          +                                +data + "" === data ? +data :
          +                                    rbrace.test( data ) ? jQuery.parseJSON( data ) :
          +                                        data;
          +                } catch( e ) {}
          +
          +                // Make sure we set the data so it isn't changed later
          +                data_user.set( elem, key, data );
          +            } else {
          +                data = undefined;
          +            }
          +        }
          +        return data;
          +    }
          +
          +    jQuery.extend({
          +        hasData: function( elem ) {
          +            return data_user.hasData( elem ) || data_priv.hasData( elem );
          +        },
          +
          +        data: function( elem, name, data ) {
          +            return data_user.access( elem, name, data );
          +        },
          +
          +        removeData: function( elem, name ) {
          +            data_user.remove( elem, name );
          +        },
          +
          +        // TODO: Now that all calls to _data and _removeData have been replaced
          +        // with direct calls to data_priv methods, these can be deprecated.
          +        _data: function( elem, name, data ) {
          +            return data_priv.access( elem, name, data );
          +        },
          +
          +        _removeData: function( elem, name ) {
          +            data_priv.remove( elem, name );
          +        }
          +    });
          +
          +    jQuery.fn.extend({
          +        data: function( key, value ) {
          +            var i, name, data,
          +                elem = this[ 0 ],
          +                attrs = elem && elem.attributes;
          +
          +            // Gets all values
          +            if ( key === undefined ) {
          +                if ( this.length ) {
          +                    data = data_user.get( elem );
          +
          +                    if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
          +                        i = attrs.length;
          +                        while ( i-- ) {
          +                            name = attrs[ i ].name;
          +
          +                            if ( name.indexOf( "data-" ) === 0 ) {
          +                                name = jQuery.camelCase( name.slice(5) );
          +                                dataAttr( elem, name, data[ name ] );
          +                            }
          +                        }
          +                        data_priv.set( elem, "hasDataAttrs", true );
          +                    }
          +                }
          +
          +                return data;
          +            }
          +
          +            // Sets multiple values
          +            if ( typeof key === "object" ) {
          +                return this.each(function() {
          +                    data_user.set( this, key );
          +                });
          +            }
          +
          +            return access( this, function( value ) {
          +                var data,
          +                    camelKey = jQuery.camelCase( key );
          +
          +                // The calling jQuery object (element matches) is not empty
          +                // (and therefore has an element appears at this[ 0 ]) and the
          +                // `value` parameter was not undefined. An empty jQuery object
          +                // will result in `undefined` for elem = this[ 0 ] which will
          +                // throw an exception if an attempt to read a data cache is made.
          +                if ( elem && value === undefined ) {
          +                    // Attempt to get data from the cache
          +                    // with the key as-is
          +                    data = data_user.get( elem, key );
          +                    if ( data !== undefined ) {
          +                        return data;
          +                    }
          +
          +                    // Attempt to get data from the cache
          +                    // with the key camelized
          +                    data = data_user.get( elem, camelKey );
          +                    if ( data !== undefined ) {
          +                        return data;
          +                    }
          +
          +                    // Attempt to "discover" the data in
          +                    // HTML5 custom data-* attrs
          +                    data = dataAttr( elem, camelKey, undefined );
          +                    if ( data !== undefined ) {
          +                        return data;
          +                    }
          +
          +                    // We tried really hard, but the data doesn't exist.
          +                    return;
          +                }
          +
          +                // Set the data...
          +                this.each(function() {
          +                    // First, attempt to store a copy or reference of any
          +                    // data that might've been store with a camelCased key.
          +                    var data = data_user.get( this, camelKey );
          +
          +                    // For HTML5 data-* attribute interop, we have to
          +                    // store property names with dashes in a camelCase form.
          +                    // This might not apply to all properties...*
          +                    data_user.set( this, camelKey, value );
          +
          +                    // *... In the case of properties that might _actually_
          +                    // have dashes, we need to also store a copy of that
          +                    // unchanged property.
          +                    if ( key.indexOf("-") !== -1 && data !== undefined ) {
          +                        data_user.set( this, key, value );
          +                    }
          +                });
          +            }, null, value, arguments.length > 1, null, true );
          +        },
          +
          +        removeData: function( key ) {
          +            return this.each(function() {
          +                data_user.remove( this, key );
          +            });
          +        }
          +    });
          +
          +
          +    jQuery.extend({
          +        queue: function( elem, type, data ) {
          +            var queue;
          +
          +            if ( elem ) {
          +                type = ( type || "fx" ) + "queue";
          +                queue = data_priv.get( elem, type );
          +
          +                // Speed up dequeue by getting out quickly if this is just a lookup
          +                if ( data ) {
          +                    if ( !queue || jQuery.isArray( data ) ) {
          +                        queue = data_priv.access( elem, type, jQuery.makeArray(data) );
          +                    } else {
          +                        queue.push( data );
          +                    }
          +                }
          +                return queue || [];
          +            }
          +        },
          +
          +        dequeue: function( elem, type ) {
          +            type = type || "fx";
          +
          +            var queue = jQuery.queue( elem, type ),
          +                startLength = queue.length,
          +                fn = queue.shift(),
          +                hooks = jQuery._queueHooks( elem, type ),
          +                next = function() {
          +                    jQuery.dequeue( elem, type );
          +                };
          +
          +            // If the fx queue is dequeued, always remove the progress sentinel
          +            if ( fn === "inprogress" ) {
          +                fn = queue.shift();
          +                startLength--;
          +            }
          +
          +            if ( fn ) {
          +
          +                // Add a progress sentinel to prevent the fx queue from being
          +                // automatically dequeued
          +                if ( type === "fx" ) {
          +                    queue.unshift( "inprogress" );
          +                }
          +
          +                // clear up the last queue stop function
          +                delete hooks.stop;
          +                fn.call( elem, next, hooks );
          +            }
          +
          +            if ( !startLength && hooks ) {
          +                hooks.empty.fire();
          +            }
          +        },
          +
          +        // not intended for public consumption - generates a queueHooks object, or returns the current one
          +        _queueHooks: function( elem, type ) {
          +            var key = type + "queueHooks";
          +            return data_priv.get( elem, key ) || data_priv.access( elem, key, {
          +                empty: jQuery.Callbacks("once memory").add(function() {
          +                    data_priv.remove( elem, [ type + "queue", key ] );
          +                })
          +            });
          +        }
          +    });
          +
          +    jQuery.fn.extend({
          +        queue: function( type, data ) {
          +            var setter = 2;
          +
          +            if ( typeof type !== "string" ) {
          +                data = type;
          +                type = "fx";
          +                setter--;
          +            }
          +
          +            if ( arguments.length < setter ) {
          +                return jQuery.queue( this[0], type );
          +            }
          +
          +            return data === undefined ?
          +                this :
          +                this.each(function() {
          +                    var queue = jQuery.queue( this, type, data );
          +
          +                    // ensure a hooks for this queue
          +                    jQuery._queueHooks( this, type );
          +
          +                    if ( type === "fx" && queue[0] !== "inprogress" ) {
          +                        jQuery.dequeue( this, type );
          +                    }
          +                });
          +        },
          +        dequeue: function( type ) {
          +            return this.each(function() {
          +                jQuery.dequeue( this, type );
          +            });
          +        },
          +        clearQueue: function( type ) {
          +            return this.queue( type || "fx", [] );
          +        },
          +        // Get a promise resolved when queues of a certain type
          +        // are emptied (fx is the type by default)
          +        promise: function( type, obj ) {
          +            var tmp,
          +                count = 1,
          +                defer = jQuery.Deferred(),
          +                elements = this,
          +                i = this.length,
          +                resolve = function() {
          +                    if ( !( --count ) ) {
          +                        defer.resolveWith( elements, [ elements ] );
          +                    }
          +                };
          +
          +            if ( typeof type !== "string" ) {
          +                obj = type;
          +                type = undefined;
          +            }
          +            type = type || "fx";
          +
          +            while ( i-- ) {
          +                tmp = data_priv.get( elements[ i ], type + "queueHooks" );
          +                if ( tmp && tmp.empty ) {
          +                    count++;
          +                    tmp.empty.add( resolve );
          +                }
          +            }
          +            resolve();
          +            return defer.promise( obj );
          +        }
          +    });
          +    var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
          +
          +    var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
          +
          +    var isHidden = function( elem, el ) {
          +        // isHidden might be called from jQuery#filter function;
          +        // in that case, element will be second argument
          +        elem = el || elem;
          +        return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
          +    };
          +
          +    var rcheckableType = (/^(?:checkbox|radio)$/i);
          +
          +
          +
          +    (function() {
          +        var fragment = document.createDocumentFragment(),
          +            div = fragment.appendChild( document.createElement( "div" ) );
          +
          +        // #11217 - WebKit loses check when the name is after the checked attribute
          +        div.innerHTML = "<input type='radio' checked='checked' name='t'/>";
          +
          +        // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
          +        // old WebKit doesn't clone checked state correctly in fragments
          +        support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
          +
          +        // Make sure textarea (and checkbox) defaultValue is properly cloned
          +        // Support: IE9-IE11+
          +        div.innerHTML = "<textarea>x</textarea>";
          +        support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
          +    })();
          +    var strundefined = typeof undefined;
          +
          +
          +
          +    support.focusinBubbles = "onfocusin" in window;
          +
          +
          +    var
          +        rkeyEvent = /^key/,
          +        rmouseEvent = /^(?:mouse|contextmenu)|click/,
          +        rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
          +        rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
          +
          +    function returnTrue() {
          +        return true;
          +    }
          +
          +    function returnFalse() {
          +        return false;
          +    }
          +
          +    function safeActiveElement() {
          +        try {
          +            return document.activeElement;
          +        } catch ( err ) { }
          +    }
          +
          +    /*
          +     * Helper functions for managing events -- not part of the public interface.
          +     * Props to Dean Edwards' addEvent library for many of the ideas.
          +     */
          +    jQuery.event = {
          +
          +        global: {},
          +
          +        add: function( elem, types, handler, data, selector ) {
          +
          +            var handleObjIn, eventHandle, tmp,
          +                events, t, handleObj,
          +                special, handlers, type, namespaces, origType,
          +                elemData = data_priv.get( elem );
          +
          +            // Don't attach events to noData or text/comment nodes (but allow plain objects)
          +            if ( !elemData ) {
          +                return;
          +            }
          +
          +            // Caller can pass in an object of custom data in lieu of the handler
          +            if ( handler.handler ) {
          +                handleObjIn = handler;
          +                handler = handleObjIn.handler;
          +                selector = handleObjIn.selector;
          +            }
          +
          +            // Make sure that the handler has a unique ID, used to find/remove it later
          +            if ( !handler.guid ) {
          +                handler.guid = jQuery.guid++;
          +            }
          +
          +            // Init the element's event structure and main handler, if this is the first
          +            if ( !(events = elemData.events) ) {
          +                events = elemData.events = {};
          +            }
          +            if ( !(eventHandle = elemData.handle) ) {
          +                eventHandle = elemData.handle = function( e ) {
          +                    // Discard the second event of a jQuery.event.trigger() and
          +                    // when an event is called after a page has unloaded
          +                    return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
          +                        jQuery.event.dispatch.apply( elem, arguments ) : undefined;
          +                };
          +            }
          +
          +            // Handle multiple events separated by a space
          +            types = ( types || "" ).match( rnotwhite ) || [ "" ];
          +            t = types.length;
          +            while ( t-- ) {
          +                tmp = rtypenamespace.exec( types[t] ) || [];
          +                type = origType = tmp[1];
          +                namespaces = ( tmp[2] || "" ).split( "." ).sort();
          +
          +                // There *must* be a type, no attaching namespace-only handlers
          +                if ( !type ) {
          +                    continue;
          +                }
          +
          +                // If event changes its type, use the special event handlers for the changed type
          +                special = jQuery.event.special[ type ] || {};
          +
          +                // If selector defined, determine special event api type, otherwise given type
          +                type = ( selector ? special.delegateType : special.bindType ) || type;
          +
          +                // Update special based on newly reset type
          +                special = jQuery.event.special[ type ] || {};
          +
          +                // handleObj is passed to all event handlers
          +                handleObj = jQuery.extend({
          +                    type: type,
          +                    origType: origType,
          +                    data: data,
          +                    handler: handler,
          +                    guid: handler.guid,
          +                    selector: selector,
          +                    needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
          +                    namespace: namespaces.join(".")
          +                }, handleObjIn );
          +
          +                // Init the event handler queue if we're the first
          +                if ( !(handlers = events[ type ]) ) {
          +                    handlers = events[ type ] = [];
          +                    handlers.delegateCount = 0;
          +
          +                    // Only use addEventListener if the special events handler returns false
          +                    if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
          +                        if ( elem.addEventListener ) {
          +                            elem.addEventListener( type, eventHandle, false );
          +                        }
          +                    }
          +                }
          +
          +                if ( special.add ) {
          +                    special.add.call( elem, handleObj );
          +
          +                    if ( !handleObj.handler.guid ) {
          +                        handleObj.handler.guid = handler.guid;
          +                    }
          +                }
          +
          +                // Add to the element's handler list, delegates in front
          +                if ( selector ) {
          +                    handlers.splice( handlers.delegateCount++, 0, handleObj );
          +                } else {
          +                    handlers.push( handleObj );
          +                }
          +
          +                // Keep track of which events have ever been used, for event optimization
          +                jQuery.event.global[ type ] = true;
          +            }
          +
          +        },
          +
          +        // Detach an event or set of events from an element
          +        remove: function( elem, types, handler, selector, mappedTypes ) {
          +
          +            var j, origCount, tmp,
          +                events, t, handleObj,
          +                special, handlers, type, namespaces, origType,
          +                elemData = data_priv.hasData( elem ) && data_priv.get( elem );
          +
          +            if ( !elemData || !(events = elemData.events) ) {
          +                return;
          +            }
          +
          +            // Once for each type.namespace in types; type may be omitted
          +            types = ( types || "" ).match( rnotwhite ) || [ "" ];
          +            t = types.length;
          +            while ( t-- ) {
          +                tmp = rtypenamespace.exec( types[t] ) || [];
          +                type = origType = tmp[1];
          +                namespaces = ( tmp[2] || "" ).split( "." ).sort();
          +
          +                // Unbind all events (on this namespace, if provided) for the element
          +                if ( !type ) {
          +                    for ( type in events ) {
          +                        jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
          +                    }
          +                    continue;
          +                }
          +
          +                special = jQuery.event.special[ type ] || {};
          +                type = ( selector ? special.delegateType : special.bindType ) || type;
          +                handlers = events[ type ] || [];
          +                tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
          +
          +                // Remove matching events
          +                origCount = j = handlers.length;
          +                while ( j-- ) {
          +                    handleObj = handlers[ j ];
          +
          +                    if ( ( mappedTypes || origType === handleObj.origType ) &&
          +                        ( !handler || handler.guid === handleObj.guid ) &&
          +                        ( !tmp || tmp.test( handleObj.namespace ) ) &&
          +                        ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
          +                        handlers.splice( j, 1 );
          +
          +                        if ( handleObj.selector ) {
          +                            handlers.delegateCount--;
          +                        }
          +                        if ( special.remove ) {
          +                            special.remove.call( elem, handleObj );
          +                        }
          +                    }
          +                }
          +
          +                // Remove generic event handler if we removed something and no more handlers exist
          +                // (avoids potential for endless recursion during removal of special event handlers)
          +                if ( origCount && !handlers.length ) {
          +                    if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
          +                        jQuery.removeEvent( elem, type, elemData.handle );
          +                    }
          +
          +                    delete events[ type ];
          +                }
          +            }
          +
          +            // Remove the expando if it's no longer used
          +            if ( jQuery.isEmptyObject( events ) ) {
          +                delete elemData.handle;
          +                data_priv.remove( elem, "events" );
          +            }
          +        },
          +
          +        trigger: function( event, data, elem, onlyHandlers ) {
          +
          +            var i, cur, tmp, bubbleType, ontype, handle, special,
          +                eventPath = [ elem || document ],
          +                type = hasOwn.call( event, "type" ) ? event.type : event,
          +                namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
          +
          +            cur = tmp = elem = elem || document;
          +
          +            // Don't do events on text and comment nodes
          +            if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
          +                return;
          +            }
          +
          +            // focus/blur morphs to focusin/out; ensure we're not firing them right now
          +            if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
          +                return;
          +            }
          +
          +            if ( type.indexOf(".") >= 0 ) {
          +                // Namespaced trigger; create a regexp to match event type in handle()
          +                namespaces = type.split(".");
          +                type = namespaces.shift();
          +                namespaces.sort();
          +            }
          +            ontype = type.indexOf(":") < 0 && "on" + type;
          +
          +            // Caller can pass in a jQuery.Event object, Object, or just an event type string
          +            event = event[ jQuery.expando ] ?
          +                event :
          +                new jQuery.Event( type, typeof event === "object" && event );
          +
          +            // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
          +            event.isTrigger = onlyHandlers ? 2 : 3;
          +            event.namespace = namespaces.join(".");
          +            event.namespace_re = event.namespace ?
          +                new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
          +                null;
          +
          +            // Clean up the event in case it is being reused
          +            event.result = undefined;
          +            if ( !event.target ) {
          +                event.target = elem;
          +            }
          +
          +            // Clone any incoming data and prepend the event, creating the handler arg list
          +            data = data == null ?
          +                [ event ] :
          +                jQuery.makeArray( data, [ event ] );
          +
          +            // Allow special events to draw outside the lines
          +            special = jQuery.event.special[ type ] || {};
          +            if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
          +                return;
          +            }
          +
          +            // Determine event propagation path in advance, per W3C events spec (#9951)
          +            // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
          +            if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
          +
          +                bubbleType = special.delegateType || type;
          +                if ( !rfocusMorph.test( bubbleType + type ) ) {
          +                    cur = cur.parentNode;
          +                }
          +                for ( ; cur; cur = cur.parentNode ) {
          +                    eventPath.push( cur );
          +                    tmp = cur;
          +                }
          +
          +                // Only add window if we got to document (e.g., not plain obj or detached DOM)
          +                if ( tmp === (elem.ownerDocument || document) ) {
          +                    eventPath.push( tmp.defaultView || tmp.parentWindow || window );
          +                }
          +            }
          +
          +            // Fire handlers on the event path
          +            i = 0;
          +            while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
          +
          +                event.type = i > 1 ?
          +                    bubbleType :
          +                    special.bindType || type;
          +
          +                // jQuery handler
          +                handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
          +                if ( handle ) {
          +                    handle.apply( cur, data );
          +                }
          +
          +                // Native handler
          +                handle = ontype && cur[ ontype ];
          +                if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
          +                    event.result = handle.apply( cur, data );
          +                    if ( event.result === false ) {
          +                        event.preventDefault();
          +                    }
          +                }
          +            }
          +            event.type = type;
          +
          +            // If nobody prevented the default action, do it now
          +            if ( !onlyHandlers && !event.isDefaultPrevented() ) {
          +
          +                if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
          +                    jQuery.acceptData( elem ) ) {
          +
          +                    // Call a native DOM method on the target with the same name name as the event.
          +                    // Don't do default actions on window, that's where global variables be (#6170)
          +                    if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
          +
          +                        // Don't re-trigger an onFOO event when we call its FOO() method
          +                        tmp = elem[ ontype ];
          +
          +                        if ( tmp ) {
          +                            elem[ ontype ] = null;
          +                        }
          +
          +                        // Prevent re-triggering of the same event, since we already bubbled it above
          +                        jQuery.event.triggered = type;
          +                        elem[ type ]();
          +                        jQuery.event.triggered = undefined;
          +
          +                        if ( tmp ) {
          +                            elem[ ontype ] = tmp;
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return event.result;
          +        },
          +
          +        dispatch: function( event ) {
          +
          +            // Make a writable jQuery.Event from the native event object
          +            event = jQuery.event.fix( event );
          +
          +            var i, j, ret, matched, handleObj,
          +                handlerQueue = [],
          +                args = slice.call( arguments ),
          +                handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
          +                special = jQuery.event.special[ event.type ] || {};
          +
          +            // Use the fix-ed jQuery.Event rather than the (read-only) native event
          +            args[0] = event;
          +            event.delegateTarget = this;
          +
          +            // Call the preDispatch hook for the mapped type, and let it bail if desired
          +            if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
          +                return;
          +            }
          +
          +            // Determine handlers
          +            handlerQueue = jQuery.event.handlers.call( this, event, handlers );
          +
          +            // Run delegates first; they may want to stop propagation beneath us
          +            i = 0;
          +            while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
          +                event.currentTarget = matched.elem;
          +
          +                j = 0;
          +                while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
          +
          +                    // Triggered event must either 1) have no namespace, or
          +                    // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
          +                    if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
          +
          +                        event.handleObj = handleObj;
          +                        event.data = handleObj.data;
          +
          +                        ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
          +                            .apply( matched.elem, args );
          +
          +                        if ( ret !== undefined ) {
          +                            if ( (event.result = ret) === false ) {
          +                                event.preventDefault();
          +                                event.stopPropagation();
          +                            }
          +                        }
          +                    }
          +                }
          +            }
          +
          +            // Call the postDispatch hook for the mapped type
          +            if ( special.postDispatch ) {
          +                special.postDispatch.call( this, event );
          +            }
          +
          +            return event.result;
          +        },
          +
          +        handlers: function( event, handlers ) {
          +            var i, matches, sel, handleObj,
          +                handlerQueue = [],
          +                delegateCount = handlers.delegateCount,
          +                cur = event.target;
          +
          +            // Find delegate handlers
          +            // Black-hole SVG <use> instance trees (#13180)
          +            // Avoid non-left-click bubbling in Firefox (#3861)
          +            if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
          +
          +                for ( ; cur !== this; cur = cur.parentNode || this ) {
          +
          +                    // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
          +                    if ( cur.disabled !== true || event.type !== "click" ) {
          +                        matches = [];
          +                        for ( i = 0; i < delegateCount; i++ ) {
          +                            handleObj = handlers[ i ];
          +
          +                            // Don't conflict with Object.prototype properties (#13203)
          +                            sel = handleObj.selector + " ";
          +
          +                            if ( matches[ sel ] === undefined ) {
          +                                matches[ sel ] = handleObj.needsContext ?
          +                                    jQuery( sel, this ).index( cur ) >= 0 :
          +                                    jQuery.find( sel, this, null, [ cur ] ).length;
          +                            }
          +                            if ( matches[ sel ] ) {
          +                                matches.push( handleObj );
          +                            }
          +                        }
          +                        if ( matches.length ) {
          +                            handlerQueue.push({ elem: cur, handlers: matches });
          +                        }
          +                    }
          +                }
          +            }
          +
          +            // Add the remaining (directly-bound) handlers
          +            if ( delegateCount < handlers.length ) {
          +                handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
          +            }
          +
          +            return handlerQueue;
          +        },
          +
          +        // Includes some event props shared by KeyEvent and MouseEvent
          +        props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
          +
          +        fixHooks: {},
          +
          +        keyHooks: {
          +            props: "char charCode key keyCode".split(" "),
          +            filter: function( event, original ) {
          +
          +                // Add which for key events
          +                if ( event.which == null ) {
          +                    event.which = original.charCode != null ? original.charCode : original.keyCode;
          +                }
          +
          +                return event;
          +            }
          +        },
          +
          +        mouseHooks: {
          +            props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
          +            filter: function( event, original ) {
          +                var eventDoc, doc, body,
          +                    button = original.button;
          +
          +                // Calculate pageX/Y if missing and clientX/Y available
          +                if ( event.pageX == null && original.clientX != null ) {
          +                    eventDoc = event.target.ownerDocument || document;
          +                    doc = eventDoc.documentElement;
          +                    body = eventDoc.body;
          +
          +                    event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
          +                    event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
          +                }
          +
          +                // Add which for click: 1 === left; 2 === middle; 3 === right
          +                // Note: button is not normalized, so don't use it
          +                if ( !event.which && button !== undefined ) {
          +                    event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
          +                }
          +
          +                return event;
          +            }
          +        },
          +
          +        fix: function( event ) {
          +            if ( event[ jQuery.expando ] ) {
          +                return event;
          +            }
          +
          +            // Create a writable copy of the event object and normalize some properties
          +            var i, prop, copy,
          +                type = event.type,
          +                originalEvent = event,
          +                fixHook = this.fixHooks[ type ];
          +
          +            if ( !fixHook ) {
          +                this.fixHooks[ type ] = fixHook =
          +                    rmouseEvent.test( type ) ? this.mouseHooks :
          +                        rkeyEvent.test( type ) ? this.keyHooks :
          +                        {};
          +            }
          +            copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
          +
          +            event = new jQuery.Event( originalEvent );
          +
          +            i = copy.length;
          +            while ( i-- ) {
          +                prop = copy[ i ];
          +                event[ prop ] = originalEvent[ prop ];
          +            }
          +
          +            // Support: Cordova 2.5 (WebKit) (#13255)
          +            // All events should have a target; Cordova deviceready doesn't
          +            if ( !event.target ) {
          +                event.target = document;
          +            }
          +
          +            // Support: Safari 6.0+, Chrome < 28
          +            // Target should not be a text node (#504, #13143)
          +            if ( event.target.nodeType === 3 ) {
          +                event.target = event.target.parentNode;
          +            }
          +
          +            return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
          +        },
          +
          +        special: {
          +            load: {
          +                // Prevent triggered image.load events from bubbling to window.load
          +                noBubble: true
          +            },
          +            focus: {
          +                // Fire native event if possible so blur/focus sequence is correct
          +                trigger: function() {
          +                    if ( this !== safeActiveElement() && this.focus ) {
          +                        this.focus();
          +                        return false;
          +                    }
          +                },
          +                delegateType: "focusin"
          +            },
          +            blur: {
          +                trigger: function() {
          +                    if ( this === safeActiveElement() && this.blur ) {
          +                        this.blur();
          +                        return false;
          +                    }
          +                },
          +                delegateType: "focusout"
          +            },
          +            click: {
          +                // For checkbox, fire native event so checked state will be right
          +                trigger: function() {
          +                    if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
          +                        this.click();
          +                        return false;
          +                    }
          +                },
          +
          +                // For cross-browser consistency, don't fire native .click() on links
          +                _default: function( event ) {
          +                    return jQuery.nodeName( event.target, "a" );
          +                }
          +            },
          +
          +            beforeunload: {
          +                postDispatch: function( event ) {
          +
          +                    // Support: Firefox 20+
          +                    // Firefox doesn't alert if the returnValue field is not set.
          +                    if ( event.result !== undefined ) {
          +                        event.originalEvent.returnValue = event.result;
          +                    }
          +                }
          +            }
          +        },
          +
          +        simulate: function( type, elem, event, bubble ) {
          +            // Piggyback on a donor event to simulate a different one.
          +            // Fake originalEvent to avoid donor's stopPropagation, but if the
          +            // simulated event prevents default then we do the same on the donor.
          +            var e = jQuery.extend(
          +                new jQuery.Event(),
          +                event,
          +                {
          +                    type: type,
          +                    isSimulated: true,
          +                    originalEvent: {}
          +                }
          +            );
          +            if ( bubble ) {
          +                jQuery.event.trigger( e, null, elem );
          +            } else {
          +                jQuery.event.dispatch.call( elem, e );
          +            }
          +            if ( e.isDefaultPrevented() ) {
          +                event.preventDefault();
          +            }
          +        }
          +    };
          +
          +    jQuery.removeEvent = function( elem, type, handle ) {
          +        if ( elem.removeEventListener ) {
          +            elem.removeEventListener( type, handle, false );
          +        }
          +    };
          +
          +    jQuery.Event = function( src, props ) {
          +        // Allow instantiation without the 'new' keyword
          +        if ( !(this instanceof jQuery.Event) ) {
          +            return new jQuery.Event( src, props );
          +        }
          +
          +        // Event object
          +        if ( src && src.type ) {
          +            this.originalEvent = src;
          +            this.type = src.type;
          +
          +            // Events bubbling up the document may have been marked as prevented
          +            // by a handler lower down the tree; reflect the correct value.
          +            this.isDefaultPrevented = src.defaultPrevented ||
          +                // Support: Android < 4.0
          +                src.defaultPrevented === undefined &&
          +                    src.getPreventDefault && src.getPreventDefault() ?
          +                returnTrue :
          +                returnFalse;
          +
          +            // Event type
          +        } else {
          +            this.type = src;
          +        }
          +
          +        // Put explicitly provided properties onto the event object
          +        if ( props ) {
          +            jQuery.extend( this, props );
          +        }
          +
          +        // Create a timestamp if incoming event doesn't have one
          +        this.timeStamp = src && src.timeStamp || jQuery.now();
          +
          +        // Mark it as fixed
          +        this[ jQuery.expando ] = true;
          +    };
          +
          +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
          +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
          +    jQuery.Event.prototype = {
          +        isDefaultPrevented: returnFalse,
          +        isPropagationStopped: returnFalse,
          +        isImmediatePropagationStopped: returnFalse,
          +
          +        preventDefault: function() {
          +            var e = this.originalEvent;
          +
          +            this.isDefaultPrevented = returnTrue;
          +
          +            if ( e && e.preventDefault ) {
          +                e.preventDefault();
          +            }
          +        },
          +        stopPropagation: function() {
          +            var e = this.originalEvent;
          +
          +            this.isPropagationStopped = returnTrue;
          +
          +            if ( e && e.stopPropagation ) {
          +                e.stopPropagation();
          +            }
          +        },
          +        stopImmediatePropagation: function() {
          +            this.isImmediatePropagationStopped = returnTrue;
          +            this.stopPropagation();
          +        }
          +    };
          +
          +// Create mouseenter/leave events using mouseover/out and event-time checks
          +// Support: Chrome 15+
          +    jQuery.each({
          +        mouseenter: "mouseover",
          +        mouseleave: "mouseout"
          +    }, function( orig, fix ) {
          +        jQuery.event.special[ orig ] = {
          +            delegateType: fix,
          +            bindType: fix,
          +
          +            handle: function( event ) {
          +                var ret,
          +                    target = this,
          +                    related = event.relatedTarget,
          +                    handleObj = event.handleObj;
          +
          +                // For mousenter/leave call the handler if related is outside the target.
          +                // NB: No relatedTarget if the mouse left/entered the browser window
          +                if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
          +                    event.type = handleObj.origType;
          +                    ret = handleObj.handler.apply( this, arguments );
          +                    event.type = fix;
          +                }
          +                return ret;
          +            }
          +        };
          +    });
          +
          +// Create "bubbling" focus and blur events
          +// Support: Firefox, Chrome, Safari
          +    if ( !support.focusinBubbles ) {
          +        jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
          +
          +            // Attach a single capturing handler on the document while someone wants focusin/focusout
          +            var handler = function( event ) {
          +                jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
          +            };
          +
          +            jQuery.event.special[ fix ] = {
          +                setup: function() {
          +                    var doc = this.ownerDocument || this,
          +                        attaches = data_priv.access( doc, fix );
          +
          +                    if ( !attaches ) {
          +                        doc.addEventListener( orig, handler, true );
          +                    }
          +                    data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
          +                },
          +                teardown: function() {
          +                    var doc = this.ownerDocument || this,
          +                        attaches = data_priv.access( doc, fix ) - 1;
          +
          +                    if ( !attaches ) {
          +                        doc.removeEventListener( orig, handler, true );
          +                        data_priv.remove( doc, fix );
          +
          +                    } else {
          +                        data_priv.access( doc, fix, attaches );
          +                    }
          +                }
          +            };
          +        });
          +    }
          +
          +    jQuery.fn.extend({
          +
          +        on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
          +            var origFn, type;
          +
          +            // Types can be a map of types/handlers
          +            if ( typeof types === "object" ) {
          +                // ( types-Object, selector, data )
          +                if ( typeof selector !== "string" ) {
          +                    // ( types-Object, data )
          +                    data = data || selector;
          +                    selector = undefined;
          +                }
          +                for ( type in types ) {
          +                    this.on( type, selector, data, types[ type ], one );
          +                }
          +                return this;
          +            }
          +
          +            if ( data == null && fn == null ) {
          +                // ( types, fn )
          +                fn = selector;
          +                data = selector = undefined;
          +            } else if ( fn == null ) {
          +                if ( typeof selector === "string" ) {
          +                    // ( types, selector, fn )
          +                    fn = data;
          +                    data = undefined;
          +                } else {
          +                    // ( types, data, fn )
          +                    fn = data;
          +                    data = selector;
          +                    selector = undefined;
          +                }
          +            }
          +            if ( fn === false ) {
          +                fn = returnFalse;
          +            } else if ( !fn ) {
          +                return this;
          +            }
          +
          +            if ( one === 1 ) {
          +                origFn = fn;
          +                fn = function( event ) {
          +                    // Can use an empty set, since event contains the info
          +                    jQuery().off( event );
          +                    return origFn.apply( this, arguments );
          +                };
          +                // Use same guid so caller can remove using origFn
          +                fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
          +            }
          +            return this.each( function() {
          +                jQuery.event.add( this, types, fn, data, selector );
          +            });
          +        },
          +        one: function( types, selector, data, fn ) {
          +            return this.on( types, selector, data, fn, 1 );
          +        },
          +        off: function( types, selector, fn ) {
          +            var handleObj, type;
          +            if ( types && types.preventDefault && types.handleObj ) {
          +                // ( event )  dispatched jQuery.Event
          +                handleObj = types.handleObj;
          +                jQuery( types.delegateTarget ).off(
          +                    handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
          +                    handleObj.selector,
          +                    handleObj.handler
          +                );
          +                return this;
          +            }
          +            if ( typeof types === "object" ) {
          +                // ( types-object [, selector] )
          +                for ( type in types ) {
          +                    this.off( type, selector, types[ type ] );
          +                }
          +                return this;
          +            }
          +            if ( selector === false || typeof selector === "function" ) {
          +                // ( types [, fn] )
          +                fn = selector;
          +                selector = undefined;
          +            }
          +            if ( fn === false ) {
          +                fn = returnFalse;
          +            }
          +            return this.each(function() {
          +                jQuery.event.remove( this, types, fn, selector );
          +            });
          +        },
          +
          +        trigger: function( type, data ) {
          +            return this.each(function() {
          +                jQuery.event.trigger( type, data, this );
          +            });
          +        },
          +        triggerHandler: function( type, data ) {
          +            var elem = this[0];
          +            if ( elem ) {
          +                return jQuery.event.trigger( type, data, elem, true );
          +            }
          +        }
          +    });
          +
          +
          +    var
          +        rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
          +        rtagName = /<([\w:]+)/,
          +        rhtml = /<|&#?\w+;/,
          +        rnoInnerhtml = /<(?:script|style|link)/i,
          +    // checked="checked" or checked
          +        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
          +        rscriptType = /^$|\/(?:java|ecma)script/i,
          +        rscriptTypeMasked = /^true\/(.*)/,
          +        rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
          +
          +    // We have to close these tags to support XHTML (#13200)
          +        wrapMap = {
          +
          +            // Support: IE 9
          +            option: [ 1, "<select multiple='multiple'>", "</select>" ],
          +
          +            thead: [ 1, "<table>", "</table>" ],
          +            col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
          +            tr: [ 2, "<table><tbody>", "</tbody></table>" ],
          +            td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
          +
          +            _default: [ 0, "", "" ]
          +        };
          +
          +// Support: IE 9
          +    wrapMap.optgroup = wrapMap.option;
          +
          +    wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
          +    wrapMap.th = wrapMap.td;
          +
          +// Support: 1.x compatibility
          +// Manipulating tables requires a tbody
          +    function manipulationTarget( elem, content ) {
          +        return jQuery.nodeName( elem, "table" ) &&
          +            jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
          +
          +            elem.getElementsByTagName("tbody")[0] ||
          +                elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
          +            elem;
          +    }
          +
          +// Replace/restore the type attribute of script elements for safe DOM manipulation
          +    function disableScript( elem ) {
          +        elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
          +        return elem;
          +    }
          +    function restoreScript( elem ) {
          +        var match = rscriptTypeMasked.exec( elem.type );
          +
          +        if ( match ) {
          +            elem.type = match[ 1 ];
          +        } else {
          +            elem.removeAttribute("type");
          +        }
          +
          +        return elem;
          +    }
          +
          +// Mark scripts as having already been evaluated
          +    function setGlobalEval( elems, refElements ) {
          +        var i = 0,
          +            l = elems.length;
          +
          +        for ( ; i < l; i++ ) {
          +            data_priv.set(
          +                elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
          +            );
          +        }
          +    }
          +
          +    function cloneCopyEvent( src, dest ) {
          +        var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
          +
          +        if ( dest.nodeType !== 1 ) {
          +            return;
          +        }
          +
          +        // 1. Copy private data: events, handlers, etc.
          +        if ( data_priv.hasData( src ) ) {
          +            pdataOld = data_priv.access( src );
          +            pdataCur = data_priv.set( dest, pdataOld );
          +            events = pdataOld.events;
          +
          +            if ( events ) {
          +                delete pdataCur.handle;
          +                pdataCur.events = {};
          +
          +                for ( type in events ) {
          +                    for ( i = 0, l = events[ type ].length; i < l; i++ ) {
          +                        jQuery.event.add( dest, type, events[ type ][ i ] );
          +                    }
          +                }
          +            }
          +        }
          +
          +        // 2. Copy user data
          +        if ( data_user.hasData( src ) ) {
          +            udataOld = data_user.access( src );
          +            udataCur = jQuery.extend( {}, udataOld );
          +
          +            data_user.set( dest, udataCur );
          +        }
          +    }
          +
          +    function getAll( context, tag ) {
          +        var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
          +            context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
          +                [];
          +
          +        return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
          +            jQuery.merge( [ context ], ret ) :
          +            ret;
          +    }
          +
          +// Support: IE >= 9
          +    function fixInput( src, dest ) {
          +        var nodeName = dest.nodeName.toLowerCase();
          +
          +        // Fails to persist the checked state of a cloned checkbox or radio button.
          +        if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
          +            dest.checked = src.checked;
          +
          +            // Fails to return the selected option to the default selected state when cloning options
          +        } else if ( nodeName === "input" || nodeName === "textarea" ) {
          +            dest.defaultValue = src.defaultValue;
          +        }
          +    }
          +
          +    jQuery.extend({
          +        clone: function( elem, dataAndEvents, deepDataAndEvents ) {
          +            var i, l, srcElements, destElements,
          +                clone = elem.cloneNode( true ),
          +                inPage = jQuery.contains( elem.ownerDocument, elem );
          +
          +            // Support: IE >= 9
          +            // Fix Cloning issues
          +            if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
          +                !jQuery.isXMLDoc( elem ) ) {
          +
          +                // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
          +                destElements = getAll( clone );
          +                srcElements = getAll( elem );
          +
          +                for ( i = 0, l = srcElements.length; i < l; i++ ) {
          +                    fixInput( srcElements[ i ], destElements[ i ] );
          +                }
          +            }
          +
          +            // Copy the events from the original to the clone
          +            if ( dataAndEvents ) {
          +                if ( deepDataAndEvents ) {
          +                    srcElements = srcElements || getAll( elem );
          +                    destElements = destElements || getAll( clone );
          +
          +                    for ( i = 0, l = srcElements.length; i < l; i++ ) {
          +                        cloneCopyEvent( srcElements[ i ], destElements[ i ] );
          +                    }
          +                } else {
          +                    cloneCopyEvent( elem, clone );
          +                }
          +            }
          +
          +            // Preserve script evaluation history
          +            destElements = getAll( clone, "script" );
          +            if ( destElements.length > 0 ) {
          +                setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
          +            }
          +
          +            // Return the cloned set
          +            return clone;
          +        },
          +
          +        buildFragment: function( elems, context, scripts, selection ) {
          +            var elem, tmp, tag, wrap, contains, j,
          +                fragment = context.createDocumentFragment(),
          +                nodes = [],
          +                i = 0,
          +                l = elems.length;
          +
          +            for ( ; i < l; i++ ) {
          +                elem = elems[ i ];
          +
          +                if ( elem || elem === 0 ) {
          +
          +                    // Add nodes directly
          +                    if ( jQuery.type( elem ) === "object" ) {
          +                        // Support: QtWebKit
          +                        // jQuery.merge because push.apply(_, arraylike) throws
          +                        jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
          +
          +                        // Convert non-html into a text node
          +                    } else if ( !rhtml.test( elem ) ) {
          +                        nodes.push( context.createTextNode( elem ) );
          +
          +                        // Convert html into DOM nodes
          +                    } else {
          +                        tmp = tmp || fragment.appendChild( context.createElement("div") );
          +
          +                        // Deserialize a standard representation
          +                        tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
          +                        wrap = wrapMap[ tag ] || wrapMap._default;
          +                        tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
          +
          +                        // Descend through wrappers to the right content
          +                        j = wrap[ 0 ];
          +                        while ( j-- ) {
          +                            tmp = tmp.lastChild;
          +                        }
          +
          +                        // Support: QtWebKit
          +                        // jQuery.merge because push.apply(_, arraylike) throws
          +                        jQuery.merge( nodes, tmp.childNodes );
          +
          +                        // Remember the top-level container
          +                        tmp = fragment.firstChild;
          +
          +                        // Fixes #12346
          +                        // Support: Webkit, IE
          +                        tmp.textContent = "";
          +                    }
          +                }
          +            }
          +
          +            // Remove wrapper from fragment
          +            fragment.textContent = "";
          +
          +            i = 0;
          +            while ( (elem = nodes[ i++ ]) ) {
          +
          +                // #4087 - If origin and destination elements are the same, and this is
          +                // that element, do not do anything
          +                if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
          +                    continue;
          +                }
          +
          +                contains = jQuery.contains( elem.ownerDocument, elem );
          +
          +                // Append to fragment
          +                tmp = getAll( fragment.appendChild( elem ), "script" );
          +
          +                // Preserve script evaluation history
          +                if ( contains ) {
          +                    setGlobalEval( tmp );
          +                }
          +
          +                // Capture executables
          +                if ( scripts ) {
          +                    j = 0;
          +                    while ( (elem = tmp[ j++ ]) ) {
          +                        if ( rscriptType.test( elem.type || "" ) ) {
          +                            scripts.push( elem );
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return fragment;
          +        },
          +
          +        cleanData: function( elems ) {
          +            var data, elem, events, type, key, j,
          +                special = jQuery.event.special,
          +                i = 0;
          +
          +            for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
          +                if ( jQuery.acceptData( elem ) ) {
          +                    key = elem[ data_priv.expando ];
          +
          +                    if ( key && (data = data_priv.cache[ key ]) ) {
          +                        events = Object.keys( data.events || {} );
          +                        if ( events.length ) {
          +                            for ( j = 0; (type = events[j]) !== undefined; j++ ) {
          +                                if ( special[ type ] ) {
          +                                    jQuery.event.remove( elem, type );
          +
          +                                    // This is a shortcut to avoid jQuery.event.remove's overhead
          +                                } else {
          +                                    jQuery.removeEvent( elem, type, data.handle );
          +                                }
          +                            }
          +                        }
          +                        if ( data_priv.cache[ key ] ) {
          +                            // Discard any remaining `private` data
          +                            delete data_priv.cache[ key ];
          +                        }
          +                    }
          +                }
          +                // Discard any remaining `user` data
          +                delete data_user.cache[ elem[ data_user.expando ] ];
          +            }
          +        }
          +    });
          +
          +    jQuery.fn.extend({
          +        text: function( value ) {
          +            return access( this, function( value ) {
          +                return value === undefined ?
          +                    jQuery.text( this ) :
          +                    this.empty().each(function() {
          +                        if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +                            this.textContent = value;
          +                        }
          +                    });
          +            }, null, value, arguments.length );
          +        },
          +
          +        append: function() {
          +            return this.domManip( arguments, function( elem ) {
          +                if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +                    var target = manipulationTarget( this, elem );
          +                    target.appendChild( elem );
          +                }
          +            });
          +        },
          +
          +        prepend: function() {
          +            return this.domManip( arguments, function( elem ) {
          +                if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
          +                    var target = manipulationTarget( this, elem );
          +                    target.insertBefore( elem, target.firstChild );
          +                }
          +            });
          +        },
          +
          +        before: function() {
          +            return this.domManip( arguments, function( elem ) {
          +                if ( this.parentNode ) {
          +                    this.parentNode.insertBefore( elem, this );
          +                }
          +            });
          +        },
          +
          +        after: function() {
          +            return this.domManip( arguments, function( elem ) {
          +                if ( this.parentNode ) {
          +                    this.parentNode.insertBefore( elem, this.nextSibling );
          +                }
          +            });
          +        },
          +
          +        remove: function( selector, keepData /* Internal Use Only */ ) {
          +            var elem,
          +                elems = selector ? jQuery.filter( selector, this ) : this,
          +                i = 0;
          +
          +            for ( ; (elem = elems[i]) != null; i++ ) {
          +                if ( !keepData && elem.nodeType === 1 ) {
          +                    jQuery.cleanData( getAll( elem ) );
          +                }
          +
          +                if ( elem.parentNode ) {
          +                    if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
          +                        setGlobalEval( getAll( elem, "script" ) );
          +                    }
          +                    elem.parentNode.removeChild( elem );
          +                }
          +            }
          +
          +            return this;
          +        },
          +
          +        empty: function() {
          +            var elem,
          +                i = 0;
          +
          +            for ( ; (elem = this[i]) != null; i++ ) {
          +                if ( elem.nodeType === 1 ) {
          +
          +                    // Prevent memory leaks
          +                    jQuery.cleanData( getAll( elem, false ) );
          +
          +                    // Remove any remaining nodes
          +                    elem.textContent = "";
          +                }
          +            }
          +
          +            return this;
          +        },
          +
          +        clone: function( dataAndEvents, deepDataAndEvents ) {
          +            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
          +            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
          +
          +            return this.map(function() {
          +                return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
          +            });
          +        },
          +
          +        html: function( value ) {
          +            return access( this, function( value ) {
          +                var elem = this[ 0 ] || {},
          +                    i = 0,
          +                    l = this.length;
          +
          +                if ( value === undefined && elem.nodeType === 1 ) {
          +                    return elem.innerHTML;
          +                }
          +
          +                // See if we can take a shortcut and just use innerHTML
          +                if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
          +                    !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
          +
          +                    value = value.replace( rxhtmlTag, "<$1></$2>" );
          +
          +                    try {
          +                        for ( ; i < l; i++ ) {
          +                            elem = this[ i ] || {};
          +
          +                            // Remove element nodes and prevent memory leaks
          +                            if ( elem.nodeType === 1 ) {
          +                                jQuery.cleanData( getAll( elem, false ) );
          +                                elem.innerHTML = value;
          +                            }
          +                        }
          +
          +                        elem = 0;
          +
          +                        // If using innerHTML throws an exception, use the fallback method
          +                    } catch( e ) {}
          +                }
          +
          +                if ( elem ) {
          +                    this.empty().append( value );
          +                }
          +            }, null, value, arguments.length );
          +        },
          +
          +        replaceWith: function() {
          +            var arg = arguments[ 0 ];
          +
          +            // Make the changes, replacing each context element with the new content
          +            this.domManip( arguments, function( elem ) {
          +                arg = this.parentNode;
          +
          +                jQuery.cleanData( getAll( this ) );
          +
          +                if ( arg ) {
          +                    arg.replaceChild( elem, this );
          +                }
          +            });
          +
          +            // Force removal if there was no new content (e.g., from empty arguments)
          +            return arg && (arg.length || arg.nodeType) ? this : this.remove();
          +        },
          +
          +        detach: function( selector ) {
          +            return this.remove( selector, true );
          +        },
          +
          +        domManip: function( args, callback ) {
          +
          +            // Flatten any nested arrays
          +            args = concat.apply( [], args );
          +
          +            var fragment, first, scripts, hasScripts, node, doc,
          +                i = 0,
          +                l = this.length,
          +                set = this,
          +                iNoClone = l - 1,
          +                value = args[ 0 ],
          +                isFunction = jQuery.isFunction( value );
          +
          +            // We can't cloneNode fragments that contain checked, in WebKit
          +            if ( isFunction ||
          +                ( l > 1 && typeof value === "string" &&
          +                    !support.checkClone && rchecked.test( value ) ) ) {
          +                return this.each(function( index ) {
          +                    var self = set.eq( index );
          +                    if ( isFunction ) {
          +                        args[ 0 ] = value.call( this, index, self.html() );
          +                    }
          +                    self.domManip( args, callback );
          +                });
          +            }
          +
          +            if ( l ) {
          +                fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
          +                first = fragment.firstChild;
          +
          +                if ( fragment.childNodes.length === 1 ) {
          +                    fragment = first;
          +                }
          +
          +                if ( first ) {
          +                    scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
          +                    hasScripts = scripts.length;
          +
          +                    // Use the original fragment for the last item instead of the first because it can end up
          +                    // being emptied incorrectly in certain situations (#8070).
          +                    for ( ; i < l; i++ ) {
          +                        node = fragment;
          +
          +                        if ( i !== iNoClone ) {
          +                            node = jQuery.clone( node, true, true );
          +
          +                            // Keep references to cloned scripts for later restoration
          +                            if ( hasScripts ) {
          +                                // Support: QtWebKit
          +                                // jQuery.merge because push.apply(_, arraylike) throws
          +                                jQuery.merge( scripts, getAll( node, "script" ) );
          +                            }
          +                        }
          +
          +                        callback.call( this[ i ], node, i );
          +                    }
          +
          +                    if ( hasScripts ) {
          +                        doc = scripts[ scripts.length - 1 ].ownerDocument;
          +
          +                        // Reenable scripts
          +                        jQuery.map( scripts, restoreScript );
          +
          +                        // Evaluate executable scripts on first document insertion
          +                        for ( i = 0; i < hasScripts; i++ ) {
          +                            node = scripts[ i ];
          +                            if ( rscriptType.test( node.type || "" ) &&
          +                                !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
          +
          +                                if ( node.src ) {
          +                                    // Optional AJAX dependency, but won't run scripts if not present
          +                                    if ( jQuery._evalUrl ) {
          +                                        jQuery._evalUrl( node.src );
          +                                    }
          +                                } else {
          +                                    jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
          +                                }
          +                            }
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return this;
          +        }
          +    });
          +
          +    jQuery.each({
          +        appendTo: "append",
          +        prependTo: "prepend",
          +        insertBefore: "before",
          +        insertAfter: "after",
          +        replaceAll: "replaceWith"
          +    }, function( name, original ) {
          +        jQuery.fn[ name ] = function( selector ) {
          +            var elems,
          +                ret = [],
          +                insert = jQuery( selector ),
          +                last = insert.length - 1,
          +                i = 0;
          +
          +            for ( ; i <= last; i++ ) {
          +                elems = i === last ? this : this.clone( true );
          +                jQuery( insert[ i ] )[ original ]( elems );
          +
          +                // Support: QtWebKit
          +                // .get() because push.apply(_, arraylike) throws
          +                push.apply( ret, elems.get() );
          +            }
          +
          +            return this.pushStack( ret );
          +        };
          +    });
          +
          +
          +    var iframe,
          +        elemdisplay = {};
          +
          +    /**
          +     * Retrieve the actual display of a element
          +     * @param {String} name nodeName of the element
          +     * @param {Object} doc Document object
          +     */
          +// Called only from within defaultDisplay
          +    function actualDisplay( name, doc ) {
          +        var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
          +
          +        // getDefaultComputedStyle might be reliably used only on attached element
          +            display = window.getDefaultComputedStyle ?
          +
          +                // Use of this method is a temporary fix (more like optmization) until something better comes along,
          +                // since it was removed from specification and supported only in FF
          +                window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" );
          +
          +        // We don't have any data stored on the element,
          +        // so use "detach" method as fast way to get rid of the element
          +        elem.detach();
          +
          +        return display;
          +    }
          +
          +    /**
          +     * Try to determine the default display value of an element
          +     * @param {String} nodeName
          +     */
          +    function defaultDisplay( nodeName ) {
          +        var doc = document,
          +            display = elemdisplay[ nodeName ];
          +
          +        if ( !display ) {
          +            display = actualDisplay( nodeName, doc );
          +
          +            // If the simple way fails, read from inside an iframe
          +            if ( display === "none" || !display ) {
          +
          +                // Use the already-created iframe if possible
          +                iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
          +
          +                // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
          +                doc = iframe[ 0 ].contentDocument;
          +
          +                // Support: IE
          +                doc.write();
          +                doc.close();
          +
          +                display = actualDisplay( nodeName, doc );
          +                iframe.detach();
          +            }
          +
          +            // Store the correct default display
          +            elemdisplay[ nodeName ] = display;
          +        }
          +
          +        return display;
          +    }
          +    var rmargin = (/^margin/);
          +
          +    var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
          +
          +    var getStyles = function( elem ) {
          +        return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
          +    };
          +
          +
          +
          +    function curCSS( elem, name, computed ) {
          +        var width, minWidth, maxWidth, ret,
          +            style = elem.style;
          +
          +        computed = computed || getStyles( elem );
          +
          +        // Support: IE9
          +        // getPropertyValue is only needed for .css('filter') in IE9, see #12537
          +        if ( computed ) {
          +            ret = computed.getPropertyValue( name ) || computed[ name ];
          +        }
          +
          +        if ( computed ) {
          +
          +            if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
          +                ret = jQuery.style( elem, name );
          +            }
          +
          +            // Support: iOS < 6
          +            // A tribute to the "awesome hack by Dean Edwards"
          +            // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
          +            // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
          +            if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
          +
          +                // Remember the original values
          +                width = style.width;
          +                minWidth = style.minWidth;
          +                maxWidth = style.maxWidth;
          +
          +                // Put in the new values to get a computed value out
          +                style.minWidth = style.maxWidth = style.width = ret;
          +                ret = computed.width;
          +
          +                // Revert the changed values
          +                style.width = width;
          +                style.minWidth = minWidth;
          +                style.maxWidth = maxWidth;
          +            }
          +        }
          +
          +        return ret !== undefined ?
          +            // Support: IE
          +            // IE returns zIndex value as an integer.
          +            ret + "" :
          +            ret;
          +    }
          +
          +
          +    function addGetHookIf( conditionFn, hookFn ) {
          +        // Define the hook, we'll check on the first run if it's really needed.
          +        return {
          +            get: function() {
          +                if ( conditionFn() ) {
          +                    // Hook not needed (or it's not possible to use it due to missing dependency),
          +                    // remove it.
          +                    // Since there are no other hooks for marginRight, remove the whole object.
          +                    delete this.get;
          +                    return;
          +                }
          +
          +                // Hook needed; redefine it so that the support test is not executed again.
          +
          +                return (this.get = hookFn).apply( this, arguments );
          +            }
          +        };
          +    }
          +
          +
          +    (function() {
          +        var pixelPositionVal, boxSizingReliableVal,
          +        // Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
          +            divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;" +
          +                "-moz-box-sizing:content-box;box-sizing:content-box",
          +            docElem = document.documentElement,
          +            container = document.createElement( "div" ),
          +            div = document.createElement( "div" );
          +
          +        div.style.backgroundClip = "content-box";
          +        div.cloneNode( true ).style.backgroundClip = "";
          +        support.clearCloneStyle = div.style.backgroundClip === "content-box";
          +
          +        container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;" +
          +            "margin-top:1px";
          +        container.appendChild( div );
          +
          +        // Executing both pixelPosition & boxSizingReliable tests require only one layout
          +        // so they're executed at the same time to save the second computation.
          +        function computePixelPositionAndBoxSizingReliable() {
          +            // Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
          +            div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
          +                "box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;" +
          +                "position:absolute;top:1%";
          +            docElem.appendChild( container );
          +
          +            var divStyle = window.getComputedStyle( div, null );
          +            pixelPositionVal = divStyle.top !== "1%";
          +            boxSizingReliableVal = divStyle.width === "4px";
          +
          +            docElem.removeChild( container );
          +        }
          +
          +        // Use window.getComputedStyle because jsdom on node.js will break without it.
          +        if ( window.getComputedStyle ) {
          +            jQuery.extend(support, {
          +                pixelPosition: function() {
          +                    // This test is executed only once but we still do memoizing
          +                    // since we can use the boxSizingReliable pre-computing.
          +                    // No need to check if the test was already performed, though.
          +                    computePixelPositionAndBoxSizingReliable();
          +                    return pixelPositionVal;
          +                },
          +                boxSizingReliable: function() {
          +                    if ( boxSizingReliableVal == null ) {
          +                        computePixelPositionAndBoxSizingReliable();
          +                    }
          +                    return boxSizingReliableVal;
          +                },
          +                reliableMarginRight: function() {
          +                    // Support: Android 2.3
          +                    // Check if div with explicit width and no margin-right incorrectly
          +                    // gets computed margin-right based on width of container. (#3333)
          +                    // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
          +                    // This support function is only executed once so no memoizing is needed.
          +                    var ret,
          +                        marginDiv = div.appendChild( document.createElement( "div" ) );
          +                    marginDiv.style.cssText = div.style.cssText = divReset;
          +                    marginDiv.style.marginRight = marginDiv.style.width = "0";
          +                    div.style.width = "1px";
          +                    docElem.appendChild( container );
          +
          +                    ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
          +
          +                    docElem.removeChild( container );
          +
          +                    // Clean up the div for other support tests.
          +                    div.innerHTML = "";
          +
          +                    return ret;
          +                }
          +            });
          +        }
          +    })();
          +
          +
          +// A method for quickly swapping in/out CSS properties to get correct calculations.
          +    jQuery.swap = function( elem, options, callback, args ) {
          +        var ret, name,
          +            old = {};
          +
          +        // Remember the old values, and insert the new ones
          +        for ( name in options ) {
          +            old[ name ] = elem.style[ name ];
          +            elem.style[ name ] = options[ name ];
          +        }
          +
          +        ret = callback.apply( elem, args || [] );
          +
          +        // Revert the old values
          +        for ( name in options ) {
          +            elem.style[ name ] = old[ name ];
          +        }
          +
          +        return ret;
          +    };
          +
          +
          +    var
          +    // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
          +    // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
          +        rdisplayswap = /^(none|table(?!-c[ea]).+)/,
          +        rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
          +        rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
          +
          +        cssShow = { position: "absolute", visibility: "hidden", display: "block" },
          +        cssNormalTransform = {
          +            letterSpacing: 0,
          +            fontWeight: 400
          +        },
          +
          +        cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
          +
          +// return a css property mapped to a potentially vendor prefixed property
          +    function vendorPropName( style, name ) {
          +
          +        // shortcut for names that are not vendor prefixed
          +        if ( name in style ) {
          +            return name;
          +        }
          +
          +        // check for vendor prefixed names
          +        var capName = name[0].toUpperCase() + name.slice(1),
          +            origName = name,
          +            i = cssPrefixes.length;
          +
          +        while ( i-- ) {
          +            name = cssPrefixes[ i ] + capName;
          +            if ( name in style ) {
          +                return name;
          +            }
          +        }
          +
          +        return origName;
          +    }
          +
          +    function setPositiveNumber( elem, value, subtract ) {
          +        var matches = rnumsplit.exec( value );
          +        return matches ?
          +            // Guard against undefined "subtract", e.g., when used as in cssHooks
          +            Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
          +            value;
          +    }
          +
          +    function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
          +        var i = extra === ( isBorderBox ? "border" : "content" ) ?
          +                // If we already have the right measurement, avoid augmentation
          +                4 :
          +                // Otherwise initialize for horizontal or vertical properties
          +                name === "width" ? 1 : 0,
          +
          +            val = 0;
          +
          +        for ( ; i < 4; i += 2 ) {
          +            // both box models exclude margin, so add it if we want it
          +            if ( extra === "margin" ) {
          +                val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
          +            }
          +
          +            if ( isBorderBox ) {
          +                // border-box includes padding, so remove it if we want content
          +                if ( extra === "content" ) {
          +                    val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
          +                }
          +
          +                // at this point, extra isn't border nor margin, so remove border
          +                if ( extra !== "margin" ) {
          +                    val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
          +                }
          +            } else {
          +                // at this point, extra isn't content, so add padding
          +                val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
          +
          +                // at this point, extra isn't content nor padding, so add border
          +                if ( extra !== "padding" ) {
          +                    val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
          +                }
          +            }
          +        }
          +
          +        return val;
          +    }
          +
          +    function getWidthOrHeight( elem, name, extra ) {
          +
          +        // Start with offset property, which is equivalent to the border-box value
          +        var valueIsBorderBox = true,
          +            val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
          +            styles = getStyles( elem ),
          +            isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
          +
          +        // some non-html elements return undefined for offsetWidth, so check for null/undefined
          +        // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
          +        // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
          +        if ( val <= 0 || val == null ) {
          +            // Fall back to computed then uncomputed css if necessary
          +            val = curCSS( elem, name, styles );
          +            if ( val < 0 || val == null ) {
          +                val = elem.style[ name ];
          +            }
          +
          +            // Computed unit is not pixels. Stop here and return.
          +            if ( rnumnonpx.test(val) ) {
          +                return val;
          +            }
          +
          +            // we need the check for style in case a browser which returns unreliable values
          +            // for getComputedStyle silently falls back to the reliable elem.style
          +            valueIsBorderBox = isBorderBox &&
          +                ( support.boxSizingReliable() || val === elem.style[ name ] );
          +
          +            // Normalize "", auto, and prepare for extra
          +            val = parseFloat( val ) || 0;
          +        }
          +
          +        // use the active box-sizing model to add/subtract irrelevant styles
          +        return ( val +
          +            augmentWidthOrHeight(
          +                elem,
          +                name,
          +                extra || ( isBorderBox ? "border" : "content" ),
          +                valueIsBorderBox,
          +                styles
          +            )
          +            ) + "px";
          +    }
          +
          +    function showHide( elements, show ) {
          +        var display, elem, hidden,
          +            values = [],
          +            index = 0,
          +            length = elements.length;
          +
          +        for ( ; index < length; index++ ) {
          +            elem = elements[ index ];
          +            if ( !elem.style ) {
          +                continue;
          +            }
          +
          +            values[ index ] = data_priv.get( elem, "olddisplay" );
          +            display = elem.style.display;
          +            if ( show ) {
          +                // Reset the inline display of this element to learn if it is
          +                // being hidden by cascaded rules or not
          +                if ( !values[ index ] && display === "none" ) {
          +                    elem.style.display = "";
          +                }
          +
          +                // Set elements which have been overridden with display: none
          +                // in a stylesheet to whatever the default browser style is
          +                // for such an element
          +                if ( elem.style.display === "" && isHidden( elem ) ) {
          +                    values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
          +                }
          +            } else {
          +
          +                if ( !values[ index ] ) {
          +                    hidden = isHidden( elem );
          +
          +                    if ( display && display !== "none" || !hidden ) {
          +                        data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
          +                    }
          +                }
          +            }
          +        }
          +
          +        // Set the display of most of the elements in a second loop
          +        // to avoid the constant reflow
          +        for ( index = 0; index < length; index++ ) {
          +            elem = elements[ index ];
          +            if ( !elem.style ) {
          +                continue;
          +            }
          +            if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
          +                elem.style.display = show ? values[ index ] || "" : "none";
          +            }
          +        }
          +
          +        return elements;
          +    }
          +
          +    jQuery.extend({
          +        // Add in style property hooks for overriding the default
          +        // behavior of getting and setting a style property
          +        cssHooks: {
          +            opacity: {
          +                get: function( elem, computed ) {
          +                    if ( computed ) {
          +                        // We should always get a number back from opacity
          +                        var ret = curCSS( elem, "opacity" );
          +                        return ret === "" ? "1" : ret;
          +                    }
          +                }
          +            }
          +        },
          +
          +        // Don't automatically add "px" to these possibly-unitless properties
          +        cssNumber: {
          +            "columnCount": true,
          +            "fillOpacity": true,
          +            "fontWeight": true,
          +            "lineHeight": true,
          +            "opacity": true,
          +            "order": true,
          +            "orphans": true,
          +            "widows": true,
          +            "zIndex": true,
          +            "zoom": true
          +        },
          +
          +        // Add in properties whose names you wish to fix before
          +        // setting or getting the value
          +        cssProps: {
          +            // normalize float css property
          +            "float": "cssFloat"
          +        },
          +
          +        // Get and set the style property on a DOM Node
          +        style: function( elem, name, value, extra ) {
          +            // Don't set styles on text and comment nodes
          +            if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
          +                return;
          +            }
          +
          +            // Make sure that we're working with the right name
          +            var ret, type, hooks,
          +                origName = jQuery.camelCase( name ),
          +                style = elem.style;
          +
          +            name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
          +
          +            // gets hook for the prefixed version
          +            // followed by the unprefixed version
          +            hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
          +
          +            // Check if we're setting a value
          +            if ( value !== undefined ) {
          +                type = typeof value;
          +
          +                // convert relative number strings (+= or -=) to relative numbers. #7345
          +                if ( type === "string" && (ret = rrelNum.exec( value )) ) {
          +                    value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
          +                    // Fixes bug #9237
          +                    type = "number";
          +                }
          +
          +                // Make sure that null and NaN values aren't set. See: #7116
          +                if ( value == null || value !== value ) {
          +                    return;
          +                }
          +
          +                // If a number was passed in, add 'px' to the (except for certain CSS properties)
          +                if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
          +                    value += "px";
          +                }
          +
          +                // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
          +                // but it would mean to define eight (for every problematic property) identical functions
          +                if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
          +                    style[ name ] = "inherit";
          +                }
          +
          +                // If a hook was provided, use that value, otherwise just set the specified value
          +                if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
          +                    // Support: Chrome, Safari
          +                    // Setting style to blank string required to delete "style: x !important;"
          +                    style[ name ] = "";
          +                    style[ name ] = value;
          +                }
          +
          +            } else {
          +                // If a hook was provided get the non-computed value from there
          +                if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
          +                    return ret;
          +                }
          +
          +                // Otherwise just get the value from the style object
          +                return style[ name ];
          +            }
          +        },
          +
          +        css: function( elem, name, extra, styles ) {
          +            var val, num, hooks,
          +                origName = jQuery.camelCase( name );
          +
          +            // Make sure that we're working with the right name
          +            name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
          +
          +            // gets hook for the prefixed version
          +            // followed by the unprefixed version
          +            hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
          +
          +            // If a hook was provided get the computed value from there
          +            if ( hooks && "get" in hooks ) {
          +                val = hooks.get( elem, true, extra );
          +            }
          +
          +            // Otherwise, if a way to get the computed value exists, use that
          +            if ( val === undefined ) {
          +                val = curCSS( elem, name, styles );
          +            }
          +
          +            //convert "normal" to computed value
          +            if ( val === "normal" && name in cssNormalTransform ) {
          +                val = cssNormalTransform[ name ];
          +            }
          +
          +            // Return, converting to number if forced or a qualifier was provided and val looks numeric
          +            if ( extra === "" || extra ) {
          +                num = parseFloat( val );
          +                return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
          +            }
          +            return val;
          +        }
          +    });
          +
          +    jQuery.each([ "height", "width" ], function( i, name ) {
          +        jQuery.cssHooks[ name ] = {
          +            get: function( elem, computed, extra ) {
          +                if ( computed ) {
          +                    // certain elements can have dimension info if we invisibly show them
          +                    // however, it must have a current display style that would benefit from this
          +                    return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
          +                        jQuery.swap( elem, cssShow, function() {
          +                            return getWidthOrHeight( elem, name, extra );
          +                        }) :
          +                        getWidthOrHeight( elem, name, extra );
          +                }
          +            },
          +
          +            set: function( elem, value, extra ) {
          +                var styles = extra && getStyles( elem );
          +                return setPositiveNumber( elem, value, extra ?
          +                    augmentWidthOrHeight(
          +                        elem,
          +                        name,
          +                        extra,
          +                        jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
          +                        styles
          +                    ) : 0
          +                );
          +            }
          +        };
          +    });
          +
          +// Support: Android 2.3
          +    jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
          +        function( elem, computed ) {
          +            if ( computed ) {
          +                // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
          +                // Work around by temporarily setting element display to inline-block
          +                return jQuery.swap( elem, { "display": "inline-block" },
          +                    curCSS, [ elem, "marginRight" ] );
          +            }
          +        }
          +    );
          +
          +// These hooks are used by animate to expand properties
          +    jQuery.each({
          +        margin: "",
          +        padding: "",
          +        border: "Width"
          +    }, function( prefix, suffix ) {
          +        jQuery.cssHooks[ prefix + suffix ] = {
          +            expand: function( value ) {
          +                var i = 0,
          +                    expanded = {},
          +
          +                // assumes a single number if not a string
          +                    parts = typeof value === "string" ? value.split(" ") : [ value ];
          +
          +                for ( ; i < 4; i++ ) {
          +                    expanded[ prefix + cssExpand[ i ] + suffix ] =
          +                        parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
          +                }
          +
          +                return expanded;
          +            }
          +        };
          +
          +        if ( !rmargin.test( prefix ) ) {
          +            jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
          +        }
          +    });
          +
          +    jQuery.fn.extend({
          +        css: function( name, value ) {
          +            return access( this, function( elem, name, value ) {
          +                var styles, len,
          +                    map = {},
          +                    i = 0;
          +
          +                if ( jQuery.isArray( name ) ) {
          +                    styles = getStyles( elem );
          +                    len = name.length;
          +
          +                    for ( ; i < len; i++ ) {
          +                        map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
          +                    }
          +
          +                    return map;
          +                }
          +
          +                return value !== undefined ?
          +                    jQuery.style( elem, name, value ) :
          +                    jQuery.css( elem, name );
          +            }, name, value, arguments.length > 1 );
          +        },
          +        show: function() {
          +            return showHide( this, true );
          +        },
          +        hide: function() {
          +            return showHide( this );
          +        },
          +        toggle: function( state ) {
          +            if ( typeof state === "boolean" ) {
          +                return state ? this.show() : this.hide();
          +            }
          +
          +            return this.each(function() {
          +                if ( isHidden( this ) ) {
          +                    jQuery( this ).show();
          +                } else {
          +                    jQuery( this ).hide();
          +                }
          +            });
          +        }
          +    });
          +
          +
          +    function Tween( elem, options, prop, end, easing ) {
          +        return new Tween.prototype.init( elem, options, prop, end, easing );
          +    }
          +    jQuery.Tween = Tween;
          +
          +    Tween.prototype = {
          +        constructor: Tween,
          +        init: function( elem, options, prop, end, easing, unit ) {
          +            this.elem = elem;
          +            this.prop = prop;
          +            this.easing = easing || "swing";
          +            this.options = options;
          +            this.start = this.now = this.cur();
          +            this.end = end;
          +            this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
          +        },
          +        cur: function() {
          +            var hooks = Tween.propHooks[ this.prop ];
          +
          +            return hooks && hooks.get ?
          +                hooks.get( this ) :
          +                Tween.propHooks._default.get( this );
          +        },
          +        run: function( percent ) {
          +            var eased,
          +                hooks = Tween.propHooks[ this.prop ];
          +
          +            if ( this.options.duration ) {
          +                this.pos = eased = jQuery.easing[ this.easing ](
          +                    percent, this.options.duration * percent, 0, 1, this.options.duration
          +                );
          +            } else {
          +                this.pos = eased = percent;
          +            }
          +            this.now = ( this.end - this.start ) * eased + this.start;
          +
          +            if ( this.options.step ) {
          +                this.options.step.call( this.elem, this.now, this );
          +            }
          +
          +            if ( hooks && hooks.set ) {
          +                hooks.set( this );
          +            } else {
          +                Tween.propHooks._default.set( this );
          +            }
          +            return this;
          +        }
          +    };
          +
          +    Tween.prototype.init.prototype = Tween.prototype;
          +
          +    Tween.propHooks = {
          +        _default: {
          +            get: function( tween ) {
          +                var result;
          +
          +                if ( tween.elem[ tween.prop ] != null &&
          +                    (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
          +                    return tween.elem[ tween.prop ];
          +                }
          +
          +                // passing an empty string as a 3rd parameter to .css will automatically
          +                // attempt a parseFloat and fallback to a string if the parse fails
          +                // so, simple values such as "10px" are parsed to Float.
          +                // complex values such as "rotate(1rad)" are returned as is.
          +                result = jQuery.css( tween.elem, tween.prop, "" );
          +                // Empty strings, null, undefined and "auto" are converted to 0.
          +                return !result || result === "auto" ? 0 : result;
          +            },
          +            set: function( tween ) {
          +                // use step hook for back compat - use cssHook if its there - use .style if its
          +                // available and use plain properties where available
          +                if ( jQuery.fx.step[ tween.prop ] ) {
          +                    jQuery.fx.step[ tween.prop ]( tween );
          +                } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
          +                    jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
          +                } else {
          +                    tween.elem[ tween.prop ] = tween.now;
          +                }
          +            }
          +        }
          +    };
          +
          +// Support: IE9
          +// Panic based approach to setting things on disconnected nodes
          +
          +    Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
          +        set: function( tween ) {
          +            if ( tween.elem.nodeType && tween.elem.parentNode ) {
          +                tween.elem[ tween.prop ] = tween.now;
          +            }
          +        }
          +    };
          +
          +    jQuery.easing = {
          +        linear: function( p ) {
          +            return p;
          +        },
          +        swing: function( p ) {
          +            return 0.5 - Math.cos( p * Math.PI ) / 2;
          +        }
          +    };
          +
          +    jQuery.fx = Tween.prototype.init;
          +
          +// Back Compat <1.8 extension point
          +    jQuery.fx.step = {};
          +
          +
          +
          +
          +    var
          +        fxNow, timerId,
          +        rfxtypes = /^(?:toggle|show|hide)$/,
          +        rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
          +        rrun = /queueHooks$/,
          +        animationPrefilters = [ defaultPrefilter ],
          +        tweeners = {
          +            "*": [ function( prop, value ) {
          +                var tween = this.createTween( prop, value ),
          +                    target = tween.cur(),
          +                    parts = rfxnum.exec( value ),
          +                    unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
          +
          +                // Starting value computation is required for potential unit mismatches
          +                    start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
          +                        rfxnum.exec( jQuery.css( tween.elem, prop ) ),
          +                    scale = 1,
          +                    maxIterations = 20;
          +
          +                if ( start && start[ 3 ] !== unit ) {
          +                    // Trust units reported by jQuery.css
          +                    unit = unit || start[ 3 ];
          +
          +                    // Make sure we update the tween properties later on
          +                    parts = parts || [];
          +
          +                    // Iteratively approximate from a nonzero starting point
          +                    start = +target || 1;
          +
          +                    do {
          +                        // If previous iteration zeroed out, double until we get *something*
          +                        // Use a string for doubling factor so we don't accidentally see scale as unchanged below
          +                        scale = scale || ".5";
          +
          +                        // Adjust and apply
          +                        start = start / scale;
          +                        jQuery.style( tween.elem, prop, start + unit );
          +
          +                        // Update scale, tolerating zero or NaN from tween.cur()
          +                        // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
          +                    } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
          +                }
          +
          +                // Update tween properties
          +                if ( parts ) {
          +                    start = tween.start = +start || +target || 0;
          +                    tween.unit = unit;
          +                    // If a +=/-= token was provided, we're doing a relative animation
          +                    tween.end = parts[ 1 ] ?
          +                        start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
          +                        +parts[ 2 ];
          +                }
          +
          +                return tween;
          +            } ]
          +        };
          +
          +// Animations created synchronously will run synchronously
          +    function createFxNow() {
          +        setTimeout(function() {
          +            fxNow = undefined;
          +        });
          +        return ( fxNow = jQuery.now() );
          +    }
          +
          +// Generate parameters to create a standard animation
          +    function genFx( type, includeWidth ) {
          +        var which,
          +            i = 0,
          +            attrs = { height: type };
          +
          +        // if we include width, step value is 1 to do all cssExpand values,
          +        // if we don't include width, step value is 2 to skip over Left and Right
          +        includeWidth = includeWidth ? 1 : 0;
          +        for ( ; i < 4 ; i += 2 - includeWidth ) {
          +            which = cssExpand[ i ];
          +            attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
          +        }
          +
          +        if ( includeWidth ) {
          +            attrs.opacity = attrs.width = type;
          +        }
          +
          +        return attrs;
          +    }
          +
          +    function createTween( value, prop, animation ) {
          +        var tween,
          +            collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
          +            index = 0,
          +            length = collection.length;
          +        for ( ; index < length; index++ ) {
          +            if ( (tween = collection[ index ].call( animation, prop, value )) ) {
          +
          +                // we're done with this property
          +                return tween;
          +            }
          +        }
          +    }
          +
          +    function defaultPrefilter( elem, props, opts ) {
          +        /* jshint validthis: true */
          +        var prop, value, toggle, tween, hooks, oldfire, display,
          +            anim = this,
          +            orig = {},
          +            style = elem.style,
          +            hidden = elem.nodeType && isHidden( elem ),
          +            dataShow = data_priv.get( elem, "fxshow" );
          +
          +        // handle queue: false promises
          +        if ( !opts.queue ) {
          +            hooks = jQuery._queueHooks( elem, "fx" );
          +            if ( hooks.unqueued == null ) {
          +                hooks.unqueued = 0;
          +                oldfire = hooks.empty.fire;
          +                hooks.empty.fire = function() {
          +                    if ( !hooks.unqueued ) {
          +                        oldfire();
          +                    }
          +                };
          +            }
          +            hooks.unqueued++;
          +
          +            anim.always(function() {
          +                // doing this makes sure that the complete handler will be called
          +                // before this completes
          +                anim.always(function() {
          +                    hooks.unqueued--;
          +                    if ( !jQuery.queue( elem, "fx" ).length ) {
          +                        hooks.empty.fire();
          +                    }
          +                });
          +            });
          +        }
          +
          +        // height/width overflow pass
          +        if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
          +            // Make sure that nothing sneaks out
          +            // Record all 3 overflow attributes because IE9-10 do not
          +            // change the overflow attribute when overflowX and
          +            // overflowY are set to the same value
          +            opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
          +
          +            // Set display property to inline-block for height/width
          +            // animations on inline elements that are having width/height animated
          +            display = jQuery.css( elem, "display" );
          +            // Get default display if display is currently "none"
          +            if ( display === "none" ) {
          +                display = defaultDisplay( elem.nodeName );
          +            }
          +            if ( display === "inline" &&
          +                jQuery.css( elem, "float" ) === "none" ) {
          +
          +                style.display = "inline-block";
          +            }
          +        }
          +
          +        if ( opts.overflow ) {
          +            style.overflow = "hidden";
          +            anim.always(function() {
          +                style.overflow = opts.overflow[ 0 ];
          +                style.overflowX = opts.overflow[ 1 ];
          +                style.overflowY = opts.overflow[ 2 ];
          +            });
          +        }
          +
          +        // show/hide pass
          +        for ( prop in props ) {
          +            value = props[ prop ];
          +            if ( rfxtypes.exec( value ) ) {
          +                delete props[ prop ];
          +                toggle = toggle || value === "toggle";
          +                if ( value === ( hidden ? "hide" : "show" ) ) {
          +
          +                    // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
          +                    if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
          +                        hidden = true;
          +                    } else {
          +                        continue;
          +                    }
          +                }
          +                orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
          +            }
          +        }
          +
          +        if ( !jQuery.isEmptyObject( orig ) ) {
          +            if ( dataShow ) {
          +                if ( "hidden" in dataShow ) {
          +                    hidden = dataShow.hidden;
          +                }
          +            } else {
          +                dataShow = data_priv.access( elem, "fxshow", {} );
          +            }
          +
          +            // store state if its toggle - enables .stop().toggle() to "reverse"
          +            if ( toggle ) {
          +                dataShow.hidden = !hidden;
          +            }
          +            if ( hidden ) {
          +                jQuery( elem ).show();
          +            } else {
          +                anim.done(function() {
          +                    jQuery( elem ).hide();
          +                });
          +            }
          +            anim.done(function() {
          +                var prop;
          +
          +                data_priv.remove( elem, "fxshow" );
          +                for ( prop in orig ) {
          +                    jQuery.style( elem, prop, orig[ prop ] );
          +                }
          +            });
          +            for ( prop in orig ) {
          +                tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
          +
          +                if ( !( prop in dataShow ) ) {
          +                    dataShow[ prop ] = tween.start;
          +                    if ( hidden ) {
          +                        tween.end = tween.start;
          +                        tween.start = prop === "width" || prop === "height" ? 1 : 0;
          +                    }
          +                }
          +            }
          +        }
          +    }
          +
          +    function propFilter( props, specialEasing ) {
          +        var index, name, easing, value, hooks;
          +
          +        // camelCase, specialEasing and expand cssHook pass
          +        for ( index in props ) {
          +            name = jQuery.camelCase( index );
          +            easing = specialEasing[ name ];
          +            value = props[ index ];
          +            if ( jQuery.isArray( value ) ) {
          +                easing = value[ 1 ];
          +                value = props[ index ] = value[ 0 ];
          +            }
          +
          +            if ( index !== name ) {
          +                props[ name ] = value;
          +                delete props[ index ];
          +            }
          +
          +            hooks = jQuery.cssHooks[ name ];
          +            if ( hooks && "expand" in hooks ) {
          +                value = hooks.expand( value );
          +                delete props[ name ];
          +
          +                // not quite $.extend, this wont overwrite keys already present.
          +                // also - reusing 'index' from above because we have the correct "name"
          +                for ( index in value ) {
          +                    if ( !( index in props ) ) {
          +                        props[ index ] = value[ index ];
          +                        specialEasing[ index ] = easing;
          +                    }
          +                }
          +            } else {
          +                specialEasing[ name ] = easing;
          +            }
          +        }
          +    }
          +
          +    function Animation( elem, properties, options ) {
          +        var result,
          +            stopped,
          +            index = 0,
          +            length = animationPrefilters.length,
          +            deferred = jQuery.Deferred().always( function() {
          +                // don't match elem in the :animated selector
          +                delete tick.elem;
          +            }),
          +            tick = function() {
          +                if ( stopped ) {
          +                    return false;
          +                }
          +                var currentTime = fxNow || createFxNow(),
          +                    remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
          +                // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
          +                    temp = remaining / animation.duration || 0,
          +                    percent = 1 - temp,
          +                    index = 0,
          +                    length = animation.tweens.length;
          +
          +                for ( ; index < length ; index++ ) {
          +                    animation.tweens[ index ].run( percent );
          +                }
          +
          +                deferred.notifyWith( elem, [ animation, percent, remaining ]);
          +
          +                if ( percent < 1 && length ) {
          +                    return remaining;
          +                } else {
          +                    deferred.resolveWith( elem, [ animation ] );
          +                    return false;
          +                }
          +            },
          +            animation = deferred.promise({
          +                elem: elem,
          +                props: jQuery.extend( {}, properties ),
          +                opts: jQuery.extend( true, { specialEasing: {} }, options ),
          +                originalProperties: properties,
          +                originalOptions: options,
          +                startTime: fxNow || createFxNow(),
          +                duration: options.duration,
          +                tweens: [],
          +                createTween: function( prop, end ) {
          +                    var tween = jQuery.Tween( elem, animation.opts, prop, end,
          +                        animation.opts.specialEasing[ prop ] || animation.opts.easing );
          +                    animation.tweens.push( tween );
          +                    return tween;
          +                },
          +                stop: function( gotoEnd ) {
          +                    var index = 0,
          +                    // if we are going to the end, we want to run all the tweens
          +                    // otherwise we skip this part
          +                        length = gotoEnd ? animation.tweens.length : 0;
          +                    if ( stopped ) {
          +                        return this;
          +                    }
          +                    stopped = true;
          +                    for ( ; index < length ; index++ ) {
          +                        animation.tweens[ index ].run( 1 );
          +                    }
          +
          +                    // resolve when we played the last frame
          +                    // otherwise, reject
          +                    if ( gotoEnd ) {
          +                        deferred.resolveWith( elem, [ animation, gotoEnd ] );
          +                    } else {
          +                        deferred.rejectWith( elem, [ animation, gotoEnd ] );
          +                    }
          +                    return this;
          +                }
          +            }),
          +            props = animation.props;
          +
          +        propFilter( props, animation.opts.specialEasing );
          +
          +        for ( ; index < length ; index++ ) {
          +            result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
          +            if ( result ) {
          +                return result;
          +            }
          +        }
          +
          +        jQuery.map( props, createTween, animation );
          +
          +        if ( jQuery.isFunction( animation.opts.start ) ) {
          +            animation.opts.start.call( elem, animation );
          +        }
          +
          +        jQuery.fx.timer(
          +            jQuery.extend( tick, {
          +                elem: elem,
          +                anim: animation,
          +                queue: animation.opts.queue
          +            })
          +        );
          +
          +        // attach callbacks from options
          +        return animation.progress( animation.opts.progress )
          +            .done( animation.opts.done, animation.opts.complete )
          +            .fail( animation.opts.fail )
          +            .always( animation.opts.always );
          +    }
          +
          +    jQuery.Animation = jQuery.extend( Animation, {
          +
          +        tweener: function( props, callback ) {
          +            if ( jQuery.isFunction( props ) ) {
          +                callback = props;
          +                props = [ "*" ];
          +            } else {
          +                props = props.split(" ");
          +            }
          +
          +            var prop,
          +                index = 0,
          +                length = props.length;
          +
          +            for ( ; index < length ; index++ ) {
          +                prop = props[ index ];
          +                tweeners[ prop ] = tweeners[ prop ] || [];
          +                tweeners[ prop ].unshift( callback );
          +            }
          +        },
          +
          +        prefilter: function( callback, prepend ) {
          +            if ( prepend ) {
          +                animationPrefilters.unshift( callback );
          +            } else {
          +                animationPrefilters.push( callback );
          +            }
          +        }
          +    });
          +
          +    jQuery.speed = function( speed, easing, fn ) {
          +        var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
          +            complete: fn || !fn && easing ||
          +                jQuery.isFunction( speed ) && speed,
          +            duration: speed,
          +            easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
          +        };
          +
          +        opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
          +            opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
          +
          +        // normalize opt.queue - true/undefined/null -> "fx"
          +        if ( opt.queue == null || opt.queue === true ) {
          +            opt.queue = "fx";
          +        }
          +
          +        // Queueing
          +        opt.old = opt.complete;
          +
          +        opt.complete = function() {
          +            if ( jQuery.isFunction( opt.old ) ) {
          +                opt.old.call( this );
          +            }
          +
          +            if ( opt.queue ) {
          +                jQuery.dequeue( this, opt.queue );
          +            }
          +        };
          +
          +        return opt;
          +    };
          +
          +    jQuery.fn.extend({
          +        fadeTo: function( speed, to, easing, callback ) {
          +
          +            // show any hidden elements after setting opacity to 0
          +            return this.filter( isHidden ).css( "opacity", 0 ).show()
          +
          +                // animate to the value specified
          +                .end().animate({ opacity: to }, speed, easing, callback );
          +        },
          +        animate: function( prop, speed, easing, callback ) {
          +            var empty = jQuery.isEmptyObject( prop ),
          +                optall = jQuery.speed( speed, easing, callback ),
          +                doAnimation = function() {
          +                    // Operate on a copy of prop so per-property easing won't be lost
          +                    var anim = Animation( this, jQuery.extend( {}, prop ), optall );
          +
          +                    // Empty animations, or finishing resolves immediately
          +                    if ( empty || data_priv.get( this, "finish" ) ) {
          +                        anim.stop( true );
          +                    }
          +                };
          +            doAnimation.finish = doAnimation;
          +
          +            return empty || optall.queue === false ?
          +                this.each( doAnimation ) :
          +                this.queue( optall.queue, doAnimation );
          +        },
          +        stop: function( type, clearQueue, gotoEnd ) {
          +            var stopQueue = function( hooks ) {
          +                var stop = hooks.stop;
          +                delete hooks.stop;
          +                stop( gotoEnd );
          +            };
          +
          +            if ( typeof type !== "string" ) {
          +                gotoEnd = clearQueue;
          +                clearQueue = type;
          +                type = undefined;
          +            }
          +            if ( clearQueue && type !== false ) {
          +                this.queue( type || "fx", [] );
          +            }
          +
          +            return this.each(function() {
          +                var dequeue = true,
          +                    index = type != null && type + "queueHooks",
          +                    timers = jQuery.timers,
          +                    data = data_priv.get( this );
          +
          +                if ( index ) {
          +                    if ( data[ index ] && data[ index ].stop ) {
          +                        stopQueue( data[ index ] );
          +                    }
          +                } else {
          +                    for ( index in data ) {
          +                        if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
          +                            stopQueue( data[ index ] );
          +                        }
          +                    }
          +                }
          +
          +                for ( index = timers.length; index--; ) {
          +                    if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
          +                        timers[ index ].anim.stop( gotoEnd );
          +                        dequeue = false;
          +                        timers.splice( index, 1 );
          +                    }
          +                }
          +
          +                // start the next in the queue if the last step wasn't forced
          +                // timers currently will call their complete callbacks, which will dequeue
          +                // but only if they were gotoEnd
          +                if ( dequeue || !gotoEnd ) {
          +                    jQuery.dequeue( this, type );
          +                }
          +            });
          +        },
          +        finish: function( type ) {
          +            if ( type !== false ) {
          +                type = type || "fx";
          +            }
          +            return this.each(function() {
          +                var index,
          +                    data = data_priv.get( this ),
          +                    queue = data[ type + "queue" ],
          +                    hooks = data[ type + "queueHooks" ],
          +                    timers = jQuery.timers,
          +                    length = queue ? queue.length : 0;
          +
          +                // enable finishing flag on private data
          +                data.finish = true;
          +
          +                // empty the queue first
          +                jQuery.queue( this, type, [] );
          +
          +                if ( hooks && hooks.stop ) {
          +                    hooks.stop.call( this, true );
          +                }
          +
          +                // look for any active animations, and finish them
          +                for ( index = timers.length; index--; ) {
          +                    if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
          +                        timers[ index ].anim.stop( true );
          +                        timers.splice( index, 1 );
          +                    }
          +                }
          +
          +                // look for any animations in the old queue and finish them
          +                for ( index = 0; index < length; index++ ) {
          +                    if ( queue[ index ] && queue[ index ].finish ) {
          +                        queue[ index ].finish.call( this );
          +                    }
          +                }
          +
          +                // turn off finishing flag
          +                delete data.finish;
          +            });
          +        }
          +    });
          +
          +    jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
          +        var cssFn = jQuery.fn[ name ];
          +        jQuery.fn[ name ] = function( speed, easing, callback ) {
          +            return speed == null || typeof speed === "boolean" ?
          +                cssFn.apply( this, arguments ) :
          +                this.animate( genFx( name, true ), speed, easing, callback );
          +        };
          +    });
          +
          +// Generate shortcuts for custom animations
          +    jQuery.each({
          +        slideDown: genFx("show"),
          +        slideUp: genFx("hide"),
          +        slideToggle: genFx("toggle"),
          +        fadeIn: { opacity: "show" },
          +        fadeOut: { opacity: "hide" },
          +        fadeToggle: { opacity: "toggle" }
          +    }, function( name, props ) {
          +        jQuery.fn[ name ] = function( speed, easing, callback ) {
          +            return this.animate( props, speed, easing, callback );
          +        };
          +    });
          +
          +    jQuery.timers = [];
          +    jQuery.fx.tick = function() {
          +        var timer,
          +            i = 0,
          +            timers = jQuery.timers;
          +
          +        fxNow = jQuery.now();
          +
          +        for ( ; i < timers.length; i++ ) {
          +            timer = timers[ i ];
          +            // Checks the timer has not already been removed
          +            if ( !timer() && timers[ i ] === timer ) {
          +                timers.splice( i--, 1 );
          +            }
          +        }
          +
          +        if ( !timers.length ) {
          +            jQuery.fx.stop();
          +        }
          +        fxNow = undefined;
          +    };
          +
          +    jQuery.fx.timer = function( timer ) {
          +        jQuery.timers.push( timer );
          +        if ( timer() ) {
          +            jQuery.fx.start();
          +        } else {
          +            jQuery.timers.pop();
          +        }
          +    };
          +
          +    jQuery.fx.interval = 13;
          +
          +    jQuery.fx.start = function() {
          +        if ( !timerId ) {
          +            timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
          +        }
          +    };
          +
          +    jQuery.fx.stop = function() {
          +        clearInterval( timerId );
          +        timerId = null;
          +    };
          +
          +    jQuery.fx.speeds = {
          +        slow: 600,
          +        fast: 200,
          +        // Default speed
          +        _default: 400
          +    };
          +
          +
          +// Based off of the plugin by Clint Helfers, with permission.
          +// http://blindsignals.com/index.php/2009/07/jquery-delay/
          +    jQuery.fn.delay = function( time, type ) {
          +        time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
          +        type = type || "fx";
          +
          +        return this.queue( type, function( next, hooks ) {
          +            var timeout = setTimeout( next, time );
          +            hooks.stop = function() {
          +                clearTimeout( timeout );
          +            };
          +        });
          +    };
          +
          +
          +    (function() {
          +        var input = document.createElement( "input" ),
          +            select = document.createElement( "select" ),
          +            opt = select.appendChild( document.createElement( "option" ) );
          +
          +        input.type = "checkbox";
          +
          +        // Support: iOS 5.1, Android 4.x, Android 2.3
          +        // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
          +        support.checkOn = input.value !== "";
          +
          +        // Must access the parent to make an option select properly
          +        // Support: IE9, IE10
          +        support.optSelected = opt.selected;
          +
          +        // Make sure that the options inside disabled selects aren't marked as disabled
          +        // (WebKit marks them as disabled)
          +        select.disabled = true;
          +        support.optDisabled = !opt.disabled;
          +
          +        // Check if an input maintains its value after becoming a radio
          +        // Support: IE9, IE10
          +        input = document.createElement( "input" );
          +        input.value = "t";
          +        input.type = "radio";
          +        support.radioValue = input.value === "t";
          +    })();
          +
          +
          +    var nodeHook, boolHook,
          +        attrHandle = jQuery.expr.attrHandle;
          +
          +    jQuery.fn.extend({
          +        attr: function( name, value ) {
          +            return access( this, jQuery.attr, name, value, arguments.length > 1 );
          +        },
          +
          +        removeAttr: function( name ) {
          +            return this.each(function() {
          +                jQuery.removeAttr( this, name );
          +            });
          +        }
          +    });
          +
          +    jQuery.extend({
          +        attr: function( elem, name, value ) {
          +            var hooks, ret,
          +                nType = elem.nodeType;
          +
          +            // don't get/set attributes on text, comment and attribute nodes
          +            if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
          +                return;
          +            }
          +
          +            // Fallback to prop when attributes are not supported
          +            if ( typeof elem.getAttribute === strundefined ) {
          +                return jQuery.prop( elem, name, value );
          +            }
          +
          +            // All attributes are lowercase
          +            // Grab necessary hook if one is defined
          +            if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
          +                name = name.toLowerCase();
          +                hooks = jQuery.attrHooks[ name ] ||
          +                    ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
          +            }
          +
          +            if ( value !== undefined ) {
          +
          +                if ( value === null ) {
          +                    jQuery.removeAttr( elem, name );
          +
          +                } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
          +                    return ret;
          +
          +                } else {
          +                    elem.setAttribute( name, value + "" );
          +                    return value;
          +                }
          +
          +            } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
          +                return ret;
          +
          +            } else {
          +                ret = jQuery.find.attr( elem, name );
          +
          +                // Non-existent attributes return null, we normalize to undefined
          +                return ret == null ?
          +                    undefined :
          +                    ret;
          +            }
          +        },
          +
          +        removeAttr: function( elem, value ) {
          +            var name, propName,
          +                i = 0,
          +                attrNames = value && value.match( rnotwhite );
          +
          +            if ( attrNames && elem.nodeType === 1 ) {
          +                while ( (name = attrNames[i++]) ) {
          +                    propName = jQuery.propFix[ name ] || name;
          +
          +                    // Boolean attributes get special treatment (#10870)
          +                    if ( jQuery.expr.match.bool.test( name ) ) {
          +                        // Set corresponding property to false
          +                        elem[ propName ] = false;
          +                    }
          +
          +                    elem.removeAttribute( name );
          +                }
          +            }
          +        },
          +
          +        attrHooks: {
          +            type: {
          +                set: function( elem, value ) {
          +                    if ( !support.radioValue && value === "radio" &&
          +                        jQuery.nodeName( elem, "input" ) ) {
          +                        // Setting the type on a radio button after the value resets the value in IE6-9
          +                        // Reset value to default in case type is set after value during creation
          +                        var val = elem.value;
          +                        elem.setAttribute( "type", value );
          +                        if ( val ) {
          +                            elem.value = val;
          +                        }
          +                        return value;
          +                    }
          +                }
          +            }
          +        }
          +    });
          +
          +// Hooks for boolean attributes
          +    boolHook = {
          +        set: function( elem, value, name ) {
          +            if ( value === false ) {
          +                // Remove boolean attributes when set to false
          +                jQuery.removeAttr( elem, name );
          +            } else {
          +                elem.setAttribute( name, name );
          +            }
          +            return name;
          +        }
          +    };
          +    jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
          +        var getter = attrHandle[ name ] || jQuery.find.attr;
          +
          +        attrHandle[ name ] = function( elem, name, isXML ) {
          +            var ret, handle;
          +            if ( !isXML ) {
          +                // Avoid an infinite loop by temporarily removing this function from the getter
          +                handle = attrHandle[ name ];
          +                attrHandle[ name ] = ret;
          +                ret = getter( elem, name, isXML ) != null ?
          +                    name.toLowerCase() :
          +                    null;
          +                attrHandle[ name ] = handle;
          +            }
          +            return ret;
          +        };
          +    });
          +
          +
          +
          +
          +    var rfocusable = /^(?:input|select|textarea|button)$/i;
          +
          +    jQuery.fn.extend({
          +        prop: function( name, value ) {
          +            return access( this, jQuery.prop, name, value, arguments.length > 1 );
          +        },
          +
          +        removeProp: function( name ) {
          +            return this.each(function() {
          +                delete this[ jQuery.propFix[ name ] || name ];
          +            });
          +        }
          +    });
          +
          +    jQuery.extend({
          +        propFix: {
          +            "for": "htmlFor",
          +            "class": "className"
          +        },
          +
          +        prop: function( elem, name, value ) {
          +            var ret, hooks, notxml,
          +                nType = elem.nodeType;
          +
          +            // don't get/set properties on text, comment and attribute nodes
          +            if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
          +                return;
          +            }
          +
          +            notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
          +
          +            if ( notxml ) {
          +                // Fix name and attach hooks
          +                name = jQuery.propFix[ name ] || name;
          +                hooks = jQuery.propHooks[ name ];
          +            }
          +
          +            if ( value !== undefined ) {
          +                return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
          +                    ret :
          +                    ( elem[ name ] = value );
          +
          +            } else {
          +                return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
          +                    ret :
          +                    elem[ name ];
          +            }
          +        },
          +
          +        propHooks: {
          +            tabIndex: {
          +                get: function( elem ) {
          +                    return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
          +                        elem.tabIndex :
          +                        -1;
          +                }
          +            }
          +        }
          +    });
          +
          +// Support: IE9+
          +// Selectedness for an option in an optgroup can be inaccurate
          +    if ( !support.optSelected ) {
          +        jQuery.propHooks.selected = {
          +            get: function( elem ) {
          +                var parent = elem.parentNode;
          +                if ( parent && parent.parentNode ) {
          +                    parent.parentNode.selectedIndex;
          +                }
          +                return null;
          +            }
          +        };
          +    }
          +
          +    jQuery.each([
          +        "tabIndex",
          +        "readOnly",
          +        "maxLength",
          +        "cellSpacing",
          +        "cellPadding",
          +        "rowSpan",
          +        "colSpan",
          +        "useMap",
          +        "frameBorder",
          +        "contentEditable"
          +    ], function() {
          +        jQuery.propFix[ this.toLowerCase() ] = this;
          +    });
          +
          +
          +
          +
          +    var rclass = /[\t\r\n\f]/g;
          +
          +    jQuery.fn.extend({
          +        addClass: function( value ) {
          +            var classes, elem, cur, clazz, j, finalValue,
          +                proceed = typeof value === "string" && value,
          +                i = 0,
          +                len = this.length;
          +
          +            if ( jQuery.isFunction( value ) ) {
          +                return this.each(function( j ) {
          +                    jQuery( this ).addClass( value.call( this, j, this.className ) );
          +                });
          +            }
          +
          +            if ( proceed ) {
          +                // The disjunction here is for better compressibility (see removeClass)
          +                classes = ( value || "" ).match( rnotwhite ) || [];
          +
          +                for ( ; i < len; i++ ) {
          +                    elem = this[ i ];
          +                    cur = elem.nodeType === 1 && ( elem.className ?
          +                        ( " " + elem.className + " " ).replace( rclass, " " ) :
          +                        " "
          +                        );
          +
          +                    if ( cur ) {
          +                        j = 0;
          +                        while ( (clazz = classes[j++]) ) {
          +                            if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
          +                                cur += clazz + " ";
          +                            }
          +                        }
          +
          +                        // only assign if different to avoid unneeded rendering.
          +                        finalValue = jQuery.trim( cur );
          +                        if ( elem.className !== finalValue ) {
          +                            elem.className = finalValue;
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return this;
          +        },
          +
          +        removeClass: function( value ) {
          +            var classes, elem, cur, clazz, j, finalValue,
          +                proceed = arguments.length === 0 || typeof value === "string" && value,
          +                i = 0,
          +                len = this.length;
          +
          +            if ( jQuery.isFunction( value ) ) {
          +                return this.each(function( j ) {
          +                    jQuery( this ).removeClass( value.call( this, j, this.className ) );
          +                });
          +            }
          +            if ( proceed ) {
          +                classes = ( value || "" ).match( rnotwhite ) || [];
          +
          +                for ( ; i < len; i++ ) {
          +                    elem = this[ i ];
          +                    // This expression is here for better compressibility (see addClass)
          +                    cur = elem.nodeType === 1 && ( elem.className ?
          +                        ( " " + elem.className + " " ).replace( rclass, " " ) :
          +                        ""
          +                        );
          +
          +                    if ( cur ) {
          +                        j = 0;
          +                        while ( (clazz = classes[j++]) ) {
          +                            // Remove *all* instances
          +                            while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
          +                                cur = cur.replace( " " + clazz + " ", " " );
          +                            }
          +                        }
          +
          +                        // only assign if different to avoid unneeded rendering.
          +                        finalValue = value ? jQuery.trim( cur ) : "";
          +                        if ( elem.className !== finalValue ) {
          +                            elem.className = finalValue;
          +                        }
          +                    }
          +                }
          +            }
          +
          +            return this;
          +        },
          +
          +        toggleClass: function( value, stateVal ) {
          +            var type = typeof value;
          +
          +            if ( typeof stateVal === "boolean" && type === "string" ) {
          +                return stateVal ? this.addClass( value ) : this.removeClass( value );
          +            }
          +
          +            if ( jQuery.isFunction( value ) ) {
          +                return this.each(function( i ) {
          +                    jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
          +                });
          +            }
          +
          +            return this.each(function() {
          +                if ( type === "string" ) {
          +                    // toggle individual class names
          +                    var className,
          +                        i = 0,
          +                        self = jQuery( this ),
          +                        classNames = value.match( rnotwhite ) || [];
          +
          +                    while ( (className = classNames[ i++ ]) ) {
          +                        // check each className given, space separated list
          +                        if ( self.hasClass( className ) ) {
          +                            self.removeClass( className );
          +                        } else {
          +                            self.addClass( className );
          +                        }
          +                    }
          +
          +                    // Toggle whole class name
          +                } else if ( type === strundefined || type === "boolean" ) {
          +                    if ( this.className ) {
          +                        // store className if set
          +                        data_priv.set( this, "__className__", this.className );
          +                    }
          +
          +                    // If the element has a class name or if we're passed "false",
          +                    // then remove the whole classname (if there was one, the above saved it).
          +                    // Otherwise bring back whatever was previously saved (if anything),
          +                    // falling back to the empty string if nothing was stored.
          +                    this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
          +                }
          +            });
          +        },
          +
          +        hasClass: function( selector ) {
          +            var className = " " + selector + " ",
          +                i = 0,
          +                l = this.length;
          +            for ( ; i < l; i++ ) {
          +                if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
          +                    return true;
          +                }
          +            }
          +
          +            return false;
          +        }
          +    });
          +
          +
          +
          +
          +    var rreturn = /\r/g;
          +
          +    jQuery.fn.extend({
          +        val: function( value ) {
          +            var hooks, ret, isFunction,
          +                elem = this[0];
          +
          +            if ( !arguments.length ) {
          +                if ( elem ) {
          +                    hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
          +
          +                    if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
          +                        return ret;
          +                    }
          +
          +                    ret = elem.value;
          +
          +                    return typeof ret === "string" ?
          +                        // handle most common string cases
          +                        ret.replace(rreturn, "") :
          +                        // handle cases where value is null/undef or number
          +                        ret == null ? "" : ret;
          +                }
          +
          +                return;
          +            }
          +
          +            isFunction = jQuery.isFunction( value );
          +
          +            return this.each(function( i ) {
          +                var val;
          +
          +                if ( this.nodeType !== 1 ) {
          +                    return;
          +                }
          +
          +                if ( isFunction ) {
          +                    val = value.call( this, i, jQuery( this ).val() );
          +                } else {
          +                    val = value;
          +                }
          +
          +                // Treat null/undefined as ""; convert numbers to string
          +                if ( val == null ) {
          +                    val = "";
          +
          +                } else if ( typeof val === "number" ) {
          +                    val += "";
          +
          +                } else if ( jQuery.isArray( val ) ) {
          +                    val = jQuery.map( val, function( value ) {
          +                        return value == null ? "" : value + "";
          +                    });
          +                }
          +
          +                hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
          +
          +                // If set returns undefined, fall back to normal setting
          +                if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
          +                    this.value = val;
          +                }
          +            });
          +        }
          +    });
          +
          +    jQuery.extend({
          +        valHooks: {
          +            select: {
          +                get: function( elem ) {
          +                    var value, option,
          +                        options = elem.options,
          +                        index = elem.selectedIndex,
          +                        one = elem.type === "select-one" || index < 0,
          +                        values = one ? null : [],
          +                        max = one ? index + 1 : options.length,
          +                        i = index < 0 ?
          +                            max :
          +                            one ? index : 0;
          +
          +                    // Loop through all the selected options
          +                    for ( ; i < max; i++ ) {
          +                        option = options[ i ];
          +
          +                        // IE6-9 doesn't update selected after form reset (#2551)
          +                        if ( ( option.selected || i === index ) &&
          +                            // Don't return options that are disabled or in a disabled optgroup
          +                            ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
          +                            ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
          +
          +                            // Get the specific value for the option
          +                            value = jQuery( option ).val();
          +
          +                            // We don't need an array for one selects
          +                            if ( one ) {
          +                                return value;
          +                            }
          +
          +                            // Multi-Selects return an array
          +                            values.push( value );
          +                        }
          +                    }
          +
          +                    return values;
          +                },
          +
          +                set: function( elem, value ) {
          +                    var optionSet, option,
          +                        options = elem.options,
          +                        values = jQuery.makeArray( value ),
          +                        i = options.length;
          +
          +                    while ( i-- ) {
          +                        option = options[ i ];
          +                        if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
          +                            optionSet = true;
          +                        }
          +                    }
          +
          +                    // force browsers to behave consistently when non-matching value is set
          +                    if ( !optionSet ) {
          +                        elem.selectedIndex = -1;
          +                    }
          +                    return values;
          +                }
          +            }
          +        }
          +    });
          +
          +// Radios and checkboxes getter/setter
          +    jQuery.each([ "radio", "checkbox" ], function() {
          +        jQuery.valHooks[ this ] = {
          +            set: function( elem, value ) {
          +                if ( jQuery.isArray( value ) ) {
          +                    return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
          +                }
          +            }
          +        };
          +        if ( !support.checkOn ) {
          +            jQuery.valHooks[ this ].get = function( elem ) {
          +                // Support: Webkit
          +                // "" is returned instead of "on" if a value isn't specified
          +                return elem.getAttribute("value") === null ? "on" : elem.value;
          +            };
          +        }
          +    });
          +
          +
          +
          +
          +// Return jQuery for attributes-only inclusion
          +
          +
          +    jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
          +        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
          +        "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
          +
          +        // Handle event binding
          +        jQuery.fn[ name ] = function( data, fn ) {
          +            return arguments.length > 0 ?
          +                this.on( name, null, data, fn ) :
          +                this.trigger( name );
          +        };
          +    });
          +
          +    jQuery.fn.extend({
          +        hover: function( fnOver, fnOut ) {
          +            return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
          +        },
          +
          +        bind: function( types, data, fn ) {
          +            return this.on( types, null, data, fn );
          +        },
          +        unbind: function( types, fn ) {
          +            return this.off( types, null, fn );
          +        },
          +
          +        delegate: function( selector, types, data, fn ) {
          +            return this.on( types, selector, data, fn );
          +        },
          +        undelegate: function( selector, types, fn ) {
          +            // ( namespace ) or ( selector, types [, fn] )
          +            return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
          +        }
          +    });
          +
          +
          +    var nonce = jQuery.now();
          +
          +    var rquery = (/\?/);
          +
          +
          +
          +// Support: Android 2.3
          +// Workaround failure to string-cast null input
          +    jQuery.parseJSON = function( data ) {
          +        return JSON.parse( data + "" );
          +    };
          +
          +
          +// Cross-browser xml parsing
          +    jQuery.parseXML = function( data ) {
          +        var xml, tmp;
          +        if ( !data || typeof data !== "string" ) {
          +            return null;
          +        }
          +
          +        // Support: IE9
          +        try {
          +            tmp = new DOMParser();
          +            xml = tmp.parseFromString( data, "text/xml" );
          +        } catch ( e ) {
          +            xml = undefined;
          +        }
          +
          +        if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
          +            jQuery.error( "Invalid XML: " + data );
          +        }
          +        return xml;
          +    };
          +
          +
          +    var
          +    // Document location
          +        ajaxLocParts,
          +        ajaxLocation,
          +
          +        rhash = /#.*$/,
          +        rts = /([?&])_=[^&]*/,
          +        rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
          +    // #7653, #8125, #8152: local protocol detection
          +        rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
          +        rnoContent = /^(?:GET|HEAD)$/,
          +        rprotocol = /^\/\//,
          +        rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
          +
          +    /* Prefilters
          +     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
          +     * 2) These are called:
          +     *    - BEFORE asking for a transport
          +     *    - AFTER param serialization (s.data is a string if s.processData is true)
          +     * 3) key is the dataType
          +     * 4) the catchall symbol "*" can be used
          +     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
          +     */
          +        prefilters = {},
          +
          +    /* Transports bindings
          +     * 1) key is the dataType
          +     * 2) the catchall symbol "*" can be used
          +     * 3) selection will start with transport dataType and THEN go to "*" if needed
          +     */
          +        transports = {},
          +
          +    // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
          +        allTypes = "*/".concat("*");
          +
          +// #8138, IE may throw an exception when accessing
          +// a field from window.location if document.domain has been set
          +    try {
          +        ajaxLocation = location.href;
          +    } catch( e ) {
          +        // Use the href attribute of an A element
          +        // since IE will modify it given document.location
          +        ajaxLocation = document.createElement( "a" );
          +        ajaxLocation.href = "";
          +        ajaxLocation = ajaxLocation.href;
          +    }
          +
          +// Segment location into parts
          +    ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
          +
          +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
          +    function addToPrefiltersOrTransports( structure ) {
          +
          +        // dataTypeExpression is optional and defaults to "*"
          +        return function( dataTypeExpression, func ) {
          +
          +            if ( typeof dataTypeExpression !== "string" ) {
          +                func = dataTypeExpression;
          +                dataTypeExpression = "*";
          +            }
          +
          +            var dataType,
          +                i = 0,
          +                dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
          +
          +            if ( jQuery.isFunction( func ) ) {
          +                // For each dataType in the dataTypeExpression
          +                while ( (dataType = dataTypes[i++]) ) {
          +                    // Prepend if requested
          +                    if ( dataType[0] === "+" ) {
          +                        dataType = dataType.slice( 1 ) || "*";
          +                        (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
          +
          +                        // Otherwise append
          +                    } else {
          +                        (structure[ dataType ] = structure[ dataType ] || []).push( func );
          +                    }
          +                }
          +            }
          +        };
          +    }
          +
          +// Base inspection function for prefilters and transports
          +    function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
          +
          +        var inspected = {},
          +            seekingTransport = ( structure === transports );
          +
          +        function inspect( dataType ) {
          +            var selected;
          +            inspected[ dataType ] = true;
          +            jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
          +                var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
          +                if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
          +                    options.dataTypes.unshift( dataTypeOrTransport );
          +                    inspect( dataTypeOrTransport );
          +                    return false;
          +                } else if ( seekingTransport ) {
          +                    return !( selected = dataTypeOrTransport );
          +                }
          +            });
          +            return selected;
          +        }
          +
          +        return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
          +    }
          +
          +// A special extend for ajax options
          +// that takes "flat" options (not to be deep extended)
          +// Fixes #9887
          +    function ajaxExtend( target, src ) {
          +        var key, deep,
          +            flatOptions = jQuery.ajaxSettings.flatOptions || {};
          +
          +        for ( key in src ) {
          +            if ( src[ key ] !== undefined ) {
          +                ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
          +            }
          +        }
          +        if ( deep ) {
          +            jQuery.extend( true, target, deep );
          +        }
          +
          +        return target;
          +    }
          +
          +    /* Handles responses to an ajax request:
          +     * - finds the right dataType (mediates between content-type and expected dataType)
          +     * - returns the corresponding response
          +     */
          +    function ajaxHandleResponses( s, jqXHR, responses ) {
          +
          +        var ct, type, finalDataType, firstDataType,
          +            contents = s.contents,
          +            dataTypes = s.dataTypes;
          +
          +        // Remove auto dataType and get content-type in the process
          +        while ( dataTypes[ 0 ] === "*" ) {
          +            dataTypes.shift();
          +            if ( ct === undefined ) {
          +                ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
          +            }
          +        }
          +
          +        // Check if we're dealing with a known content-type
          +        if ( ct ) {
          +            for ( type in contents ) {
          +                if ( contents[ type ] && contents[ type ].test( ct ) ) {
          +                    dataTypes.unshift( type );
          +                    break;
          +                }
          +            }
          +        }
          +
          +        // Check to see if we have a response for the expected dataType
          +        if ( dataTypes[ 0 ] in responses ) {
          +            finalDataType = dataTypes[ 0 ];
          +        } else {
          +            // Try convertible dataTypes
          +            for ( type in responses ) {
          +                if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
          +                    finalDataType = type;
          +                    break;
          +                }
          +                if ( !firstDataType ) {
          +                    firstDataType = type;
          +                }
          +            }
          +            // Or just use first one
          +            finalDataType = finalDataType || firstDataType;
          +        }
          +
          +        // If we found a dataType
          +        // We add the dataType to the list if needed
          +        // and return the corresponding response
          +        if ( finalDataType ) {
          +            if ( finalDataType !== dataTypes[ 0 ] ) {
          +                dataTypes.unshift( finalDataType );
          +            }
          +            return responses[ finalDataType ];
          +        }
          +    }
          +
          +    /* Chain conversions given the request and the original response
          +     * Also sets the responseXXX fields on the jqXHR instance
          +     */
          +    function ajaxConvert( s, response, jqXHR, isSuccess ) {
          +        var conv2, current, conv, tmp, prev,
          +            converters = {},
          +        // Work with a copy of dataTypes in case we need to modify it for conversion
          +            dataTypes = s.dataTypes.slice();
          +
          +        // Create converters map with lowercased keys
          +        if ( dataTypes[ 1 ] ) {
          +            for ( conv in s.converters ) {
          +                converters[ conv.toLowerCase() ] = s.converters[ conv ];
          +            }
          +        }
          +
          +        current = dataTypes.shift();
          +
          +        // Convert to each sequential dataType
          +        while ( current ) {
          +
          +            if ( s.responseFields[ current ] ) {
          +                jqXHR[ s.responseFields[ current ] ] = response;
          +            }
          +
          +            // Apply the dataFilter if provided
          +            if ( !prev && isSuccess && s.dataFilter ) {
          +                response = s.dataFilter( response, s.dataType );
          +            }
          +
          +            prev = current;
          +            current = dataTypes.shift();
          +
          +            if ( current ) {
          +
          +                // There's only work to do if current dataType is non-auto
          +                if ( current === "*" ) {
          +
          +                    current = prev;
          +
          +                    // Convert response if prev dataType is non-auto and differs from current
          +                } else if ( prev !== "*" && prev !== current ) {
          +
          +                    // Seek a direct converter
          +                    conv = converters[ prev + " " + current ] || converters[ "* " + current ];
          +
          +                    // If none found, seek a pair
          +                    if ( !conv ) {
          +                        for ( conv2 in converters ) {
          +
          +                            // If conv2 outputs current
          +                            tmp = conv2.split( " " );
          +                            if ( tmp[ 1 ] === current ) {
          +
          +                                // If prev can be converted to accepted input
          +                                conv = converters[ prev + " " + tmp[ 0 ] ] ||
          +                                    converters[ "* " + tmp[ 0 ] ];
          +                                if ( conv ) {
          +                                    // Condense equivalence converters
          +                                    if ( conv === true ) {
          +                                        conv = converters[ conv2 ];
          +
          +                                        // Otherwise, insert the intermediate dataType
          +                                    } else if ( converters[ conv2 ] !== true ) {
          +                                        current = tmp[ 0 ];
          +                                        dataTypes.unshift( tmp[ 1 ] );
          +                                    }
          +                                    break;
          +                                }
          +                            }
          +                        }
          +                    }
          +
          +                    // Apply converter (if not an equivalence)
          +                    if ( conv !== true ) {
          +
          +                        // Unless errors are allowed to bubble, catch and return them
          +                        if ( conv && s[ "throws" ] ) {
          +                            response = conv( response );
          +                        } else {
          +                            try {
          +                                response = conv( response );
          +                            } catch ( e ) {
          +                                return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
          +                            }
          +                        }
          +                    }
          +                }
          +            }
          +        }
          +
          +        return { state: "success", data: response };
          +    }
          +
          +    jQuery.extend({
          +
          +        // Counter for holding the number of active queries
          +        active: 0,
          +
          +        // Last-Modified header cache for next request
          +        lastModified: {},
          +        etag: {},
          +
          +        ajaxSettings: {
          +            url: ajaxLocation,
          +            type: "GET",
          +            isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
          +            global: true,
          +            processData: true,
          +            async: true,
          +            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
          +            /*
          +             timeout: 0,
          +             data: null,
          +             dataType: null,
          +             username: null,
          +             password: null,
          +             cache: null,
          +             throws: false,
          +             traditional: false,
          +             headers: {},
          +             */
          +
          +            accepts: {
          +                "*": allTypes,
          +                text: "text/plain",
          +                html: "text/html",
          +                xml: "application/xml, text/xml",
          +                json: "application/json, text/javascript"
          +            },
          +
          +            contents: {
          +                xml: /xml/,
          +                html: /html/,
          +                json: /json/
          +            },
          +
          +            responseFields: {
          +                xml: "responseXML",
          +                text: "responseText",
          +                json: "responseJSON"
          +            },
          +
          +            // Data converters
          +            // Keys separate source (or catchall "*") and destination types with a single space
          +            converters: {
          +
          +                // Convert anything to text
          +                "* text": String,
          +
          +                // Text to html (true = no transformation)
          +                "text html": true,
          +
          +                // Evaluate text as a json expression
          +                "text json": jQuery.parseJSON,
          +
          +                // Parse text as xml
          +                "text xml": jQuery.parseXML
          +            },
          +
          +            // For options that shouldn't be deep extended:
          +            // you can add your own custom options here if
          +            // and when you create one that shouldn't be
          +            // deep extended (see ajaxExtend)
          +            flatOptions: {
          +                url: true,
          +                context: true
          +            }
          +        },
          +
          +        // Creates a full fledged settings object into target
          +        // with both ajaxSettings and settings fields.
          +        // If target is omitted, writes into ajaxSettings.
          +        ajaxSetup: function( target, settings ) {
          +            return settings ?
          +
          +                // Building a settings object
          +                ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
          +
          +                // Extending ajaxSettings
          +                ajaxExtend( jQuery.ajaxSettings, target );
          +        },
          +
          +        ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
          +        ajaxTransport: addToPrefiltersOrTransports( transports ),
          +
          +        // Main method
          +        ajax: function( url, options ) {
          +
          +            // If url is an object, simulate pre-1.5 signature
          +            if ( typeof url === "object" ) {
          +                options = url;
          +                url = undefined;
          +            }
          +
          +            // Force options to be an object
          +            options = options || {};
          +
          +            var transport,
          +            // URL without anti-cache param
          +                cacheURL,
          +            // Response headers
          +                responseHeadersString,
          +                responseHeaders,
          +            // timeout handle
          +                timeoutTimer,
          +            // Cross-domain detection vars
          +                parts,
          +            // To know if global events are to be dispatched
          +                fireGlobals,
          +            // Loop variable
          +                i,
          +            // Create the final options object
          +                s = jQuery.ajaxSetup( {}, options ),
          +            // Callbacks context
          +                callbackContext = s.context || s,
          +            // Context for global events is callbackContext if it is a DOM node or jQuery collection
          +                globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
          +                    jQuery( callbackContext ) :
          +                    jQuery.event,
          +            // Deferreds
          +                deferred = jQuery.Deferred(),
          +                completeDeferred = jQuery.Callbacks("once memory"),
          +            // Status-dependent callbacks
          +                statusCode = s.statusCode || {},
          +            // Headers (they are sent all at once)
          +                requestHeaders = {},
          +                requestHeadersNames = {},
          +            // The jqXHR state
          +                state = 0,
          +            // Default abort message
          +                strAbort = "canceled",
          +            // Fake xhr
          +                jqXHR = {
          +                    readyState: 0,
          +
          +                    // Builds headers hashtable if needed
          +                    getResponseHeader: function( key ) {
          +                        var match;
          +                        if ( state === 2 ) {
          +                            if ( !responseHeaders ) {
          +                                responseHeaders = {};
          +                                while ( (match = rheaders.exec( responseHeadersString )) ) {
          +                                    responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
          +                                }
          +                            }
          +                            match = responseHeaders[ key.toLowerCase() ];
          +                        }
          +                        return match == null ? null : match;
          +                    },
          +
          +                    // Raw string
          +                    getAllResponseHeaders: function() {
          +                        return state === 2 ? responseHeadersString : null;
          +                    },
          +
          +                    // Caches the header
          +                    setRequestHeader: function( name, value ) {
          +                        var lname = name.toLowerCase();
          +                        if ( !state ) {
          +                            name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
          +                            requestHeaders[ name ] = value;
          +                        }
          +                        return this;
          +                    },
          +
          +                    // Overrides response content-type header
          +                    overrideMimeType: function( type ) {
          +                        if ( !state ) {
          +                            s.mimeType = type;
          +                        }
          +                        return this;
          +                    },
          +
          +                    // Status-dependent callbacks
          +                    statusCode: function( map ) {
          +                        var code;
          +                        if ( map ) {
          +                            if ( state < 2 ) {
          +                                for ( code in map ) {
          +                                    // Lazy-add the new callback in a way that preserves old ones
          +                                    statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
          +                                }
          +                            } else {
          +                                // Execute the appropriate callbacks
          +                                jqXHR.always( map[ jqXHR.status ] );
          +                            }
          +                        }
          +                        return this;
          +                    },
          +
          +                    // Cancel the request
          +                    abort: function( statusText ) {
          +                        var finalText = statusText || strAbort;
          +                        if ( transport ) {
          +                            transport.abort( finalText );
          +                        }
          +                        done( 0, finalText );
          +                        return this;
          +                    }
          +                };
          +
          +            // Attach deferreds
          +            deferred.promise( jqXHR ).complete = completeDeferred.add;
          +            jqXHR.success = jqXHR.done;
          +            jqXHR.error = jqXHR.fail;
          +
          +            // Remove hash character (#7531: and string promotion)
          +            // Add protocol if not provided (prefilters might expect it)
          +            // Handle falsy url in the settings object (#10093: consistency with old signature)
          +            // We also use the url parameter if available
          +            s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
          +                .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
          +
          +            // Alias method option to type as per ticket #12004
          +            s.type = options.method || options.type || s.method || s.type;
          +
          +            // Extract dataTypes list
          +            s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
          +
          +            // A cross-domain request is in order when we have a protocol:host:port mismatch
          +            if ( s.crossDomain == null ) {
          +                parts = rurl.exec( s.url.toLowerCase() );
          +                s.crossDomain = !!( parts &&
          +                    ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
          +                        ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
          +                            ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
          +                    );
          +            }
          +
          +            // Convert data if not already a string
          +            if ( s.data && s.processData && typeof s.data !== "string" ) {
          +                s.data = jQuery.param( s.data, s.traditional );
          +            }
          +
          +            // Apply prefilters
          +            inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
          +
          +            // If request was aborted inside a prefilter, stop there
          +            if ( state === 2 ) {
          +                return jqXHR;
          +            }
          +
          +            // We can fire global events as of now if asked to
          +            fireGlobals = s.global;
          +
          +            // Watch for a new set of requests
          +            if ( fireGlobals && jQuery.active++ === 0 ) {
          +                jQuery.event.trigger("ajaxStart");
          +            }
          +
          +            // Uppercase the type
          +            s.type = s.type.toUpperCase();
          +
          +            // Determine if request has content
          +            s.hasContent = !rnoContent.test( s.type );
          +
          +            // Save the URL in case we're toying with the If-Modified-Since
          +            // and/or If-None-Match header later on
          +            cacheURL = s.url;
          +
          +            // More options handling for requests with no content
          +            if ( !s.hasContent ) {
          +
          +                // If data is available, append data to url
          +                if ( s.data ) {
          +                    cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
          +                    // #9682: remove data so that it's not used in an eventual retry
          +                    delete s.data;
          +                }
          +
          +                // Add anti-cache in url if needed
          +                if ( s.cache === false ) {
          +                    s.url = rts.test( cacheURL ) ?
          +
          +                        // If there is already a '_' parameter, set its value
          +                        cacheURL.replace( rts, "$1_=" + nonce++ ) :
          +
          +                        // Otherwise add one to the end
          +                        cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
          +                }
          +            }
          +
          +            // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +            if ( s.ifModified ) {
          +                if ( jQuery.lastModified[ cacheURL ] ) {
          +                    jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
          +                }
          +                if ( jQuery.etag[ cacheURL ] ) {
          +                    jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
          +                }
          +            }
          +
          +            // Set the correct header, if data is being sent
          +            if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
          +                jqXHR.setRequestHeader( "Content-Type", s.contentType );
          +            }
          +
          +            // Set the Accepts header for the server, depending on the dataType
          +            jqXHR.setRequestHeader(
          +                "Accept",
          +                s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
          +                    s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
          +                    s.accepts[ "*" ]
          +            );
          +
          +            // Check for headers option
          +            for ( i in s.headers ) {
          +                jqXHR.setRequestHeader( i, s.headers[ i ] );
          +            }
          +
          +            // Allow custom headers/mimetypes and early abort
          +            if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
          +                // Abort if not done already and return
          +                return jqXHR.abort();
          +            }
          +
          +            // aborting is no longer a cancellation
          +            strAbort = "abort";
          +
          +            // Install callbacks on deferreds
          +            for ( i in { success: 1, error: 1, complete: 1 } ) {
          +                jqXHR[ i ]( s[ i ] );
          +            }
          +
          +            // Get transport
          +            transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
          +
          +            // If no transport, we auto-abort
          +            if ( !transport ) {
          +                done( -1, "No Transport" );
          +            } else {
          +                jqXHR.readyState = 1;
          +
          +                // Send global event
          +                if ( fireGlobals ) {
          +                    globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
          +                }
          +                // Timeout
          +                if ( s.async && s.timeout > 0 ) {
          +                    timeoutTimer = setTimeout(function() {
          +                        jqXHR.abort("timeout");
          +                    }, s.timeout );
          +                }
          +
          +                try {
          +                    state = 1;
          +                    transport.send( requestHeaders, done );
          +                } catch ( e ) {
          +                    // Propagate exception as error if not done
          +                    if ( state < 2 ) {
          +                        done( -1, e );
          +                        // Simply rethrow otherwise
          +                    } else {
          +                        throw e;
          +                    }
          +                }
          +            }
          +
          +            // Callback for when everything is done
          +            function done( status, nativeStatusText, responses, headers ) {
          +                var isSuccess, success, error, response, modified,
          +                    statusText = nativeStatusText;
          +
          +                // Called once
          +                if ( state === 2 ) {
          +                    return;
          +                }
          +
          +                // State is "done" now
          +                state = 2;
          +
          +                // Clear timeout if it exists
          +                if ( timeoutTimer ) {
          +                    clearTimeout( timeoutTimer );
          +                }
          +
          +                // Dereference transport for early garbage collection
          +                // (no matter how long the jqXHR object will be used)
          +                transport = undefined;
          +
          +                // Cache response headers
          +                responseHeadersString = headers || "";
          +
          +                // Set readyState
          +                jqXHR.readyState = status > 0 ? 4 : 0;
          +
          +                // Determine if successful
          +                isSuccess = status >= 200 && status < 300 || status === 304;
          +
          +                // Get response data
          +                if ( responses ) {
          +                    response = ajaxHandleResponses( s, jqXHR, responses );
          +                }
          +
          +                // Convert no matter what (that way responseXXX fields are always set)
          +                response = ajaxConvert( s, response, jqXHR, isSuccess );
          +
          +                // If successful, handle type chaining
          +                if ( isSuccess ) {
          +
          +                    // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
          +                    if ( s.ifModified ) {
          +                        modified = jqXHR.getResponseHeader("Last-Modified");
          +                        if ( modified ) {
          +                            jQuery.lastModified[ cacheURL ] = modified;
          +                        }
          +                        modified = jqXHR.getResponseHeader("etag");
          +                        if ( modified ) {
          +                            jQuery.etag[ cacheURL ] = modified;
          +                        }
          +                    }
          +
          +                    // if no content
          +                    if ( status === 204 || s.type === "HEAD" ) {
          +                        statusText = "nocontent";
          +
          +                        // if not modified
          +                    } else if ( status === 304 ) {
          +                        statusText = "notmodified";
          +
          +                        // If we have data, let's convert it
          +                    } else {
          +                        statusText = response.state;
          +                        success = response.data;
          +                        error = response.error;
          +                        isSuccess = !error;
          +                    }
          +                } else {
          +                    // We extract error from statusText
          +                    // then normalize statusText and status for non-aborts
          +                    error = statusText;
          +                    if ( status || !statusText ) {
          +                        statusText = "error";
          +                        if ( status < 0 ) {
          +                            status = 0;
          +                        }
          +                    }
          +                }
          +
          +                // Set data for the fake xhr object
          +                jqXHR.status = status;
          +                jqXHR.statusText = ( nativeStatusText || statusText ) + "";
          +
          +                // Success/Error
          +                if ( isSuccess ) {
          +                    deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
          +                } else {
          +                    deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
          +                }
          +
          +                // Status-dependent callbacks
          +                jqXHR.statusCode( statusCode );
          +                statusCode = undefined;
          +
          +                if ( fireGlobals ) {
          +                    globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
          +                        [ jqXHR, s, isSuccess ? success : error ] );
          +                }
          +
          +                // Complete
          +                completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
          +
          +                if ( fireGlobals ) {
          +                    globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
          +                    // Handle the global AJAX counter
          +                    if ( !( --jQuery.active ) ) {
          +                        jQuery.event.trigger("ajaxStop");
          +                    }
          +                }
          +            }
          +
          +            return jqXHR;
          +        },
          +
          +        getJSON: function( url, data, callback ) {
          +            return jQuery.get( url, data, callback, "json" );
          +        },
          +
          +        getScript: function( url, callback ) {
          +            return jQuery.get( url, undefined, callback, "script" );
          +        }
          +    });
          +
          +    jQuery.each( [ "get", "post" ], function( i, method ) {
          +        jQuery[ method ] = function( url, data, callback, type ) {
          +            // shift arguments if data argument was omitted
          +            if ( jQuery.isFunction( data ) ) {
          +                type = type || callback;
          +                callback = data;
          +                data = undefined;
          +            }
          +
          +            return jQuery.ajax({
          +                url: url,
          +                type: method,
          +                dataType: type,
          +                data: data,
          +                success: callback
          +            });
          +        };
          +    });
          +
          +// Attach a bunch of functions for handling common AJAX events
          +    jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
          +        jQuery.fn[ type ] = function( fn ) {
          +            return this.on( type, fn );
          +        };
          +    });
          +
          +
          +    jQuery._evalUrl = function( url ) {
          +        return jQuery.ajax({
          +            url: url,
          +            type: "GET",
          +            dataType: "script",
          +            async: false,
          +            global: false,
          +            "throws": true
          +        });
          +    };
          +
          +
          +    jQuery.fn.extend({
          +        wrapAll: function( html ) {
          +            var wrap;
          +
          +            if ( jQuery.isFunction( html ) ) {
          +                return this.each(function( i ) {
          +                    jQuery( this ).wrapAll( html.call(this, i) );
          +                });
          +            }
          +
          +            if ( this[ 0 ] ) {
          +
          +                // The elements to wrap the target around
          +                wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
          +
          +                if ( this[ 0 ].parentNode ) {
          +                    wrap.insertBefore( this[ 0 ] );
          +                }
          +
          +                wrap.map(function() {
          +                    var elem = this;
          +
          +                    while ( elem.firstElementChild ) {
          +                        elem = elem.firstElementChild;
          +                    }
          +
          +                    return elem;
          +                }).append( this );
          +            }
          +
          +            return this;
          +        },
          +
          +        wrapInner: function( html ) {
          +            if ( jQuery.isFunction( html ) ) {
          +                return this.each(function( i ) {
          +                    jQuery( this ).wrapInner( html.call(this, i) );
          +                });
          +            }
          +
          +            return this.each(function() {
          +                var self = jQuery( this ),
          +                    contents = self.contents();
          +
          +                if ( contents.length ) {
          +                    contents.wrapAll( html );
          +
          +                } else {
          +                    self.append( html );
          +                }
          +            });
          +        },
          +
          +        wrap: function( html ) {
          +            var isFunction = jQuery.isFunction( html );
          +
          +            return this.each(function( i ) {
          +                jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
          +            });
          +        },
          +
          +        unwrap: function() {
          +            return this.parent().each(function() {
          +                if ( !jQuery.nodeName( this, "body" ) ) {
          +                    jQuery( this ).replaceWith( this.childNodes );
          +                }
          +            }).end();
          +        }
          +    });
          +
          +
          +    jQuery.expr.filters.hidden = function( elem ) {
          +        // Support: Opera <= 12.12
          +        // Opera reports offsetWidths and offsetHeights less than zero on some elements
          +        return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
          +    };
          +    jQuery.expr.filters.visible = function( elem ) {
          +        return !jQuery.expr.filters.hidden( elem );
          +    };
          +
          +
          +
          +
          +    var r20 = /%20/g,
          +        rbracket = /\[\]$/,
          +        rCRLF = /\r?\n/g,
          +        rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
          +        rsubmittable = /^(?:input|select|textarea|keygen)/i;
          +
          +    function buildParams( prefix, obj, traditional, add ) {
          +        var name;
          +
          +        if ( jQuery.isArray( obj ) ) {
          +            // Serialize array item.
          +            jQuery.each( obj, function( i, v ) {
          +                if ( traditional || rbracket.test( prefix ) ) {
          +                    // Treat each array item as a scalar.
          +                    add( prefix, v );
          +
          +                } else {
          +                    // Item is non-scalar (array or object), encode its numeric index.
          +                    buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
          +                }
          +            });
          +
          +        } else if ( !traditional && jQuery.type( obj ) === "object" ) {
          +            // Serialize object item.
          +            for ( name in obj ) {
          +                buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
          +            }
          +
          +        } else {
          +            // Serialize scalar item.
          +            add( prefix, obj );
          +        }
          +    }
          +
          +// Serialize an array of form elements or a set of
          +// key/values into a query string
          +    jQuery.param = function( a, traditional ) {
          +        var prefix,
          +            s = [],
          +            add = function( key, value ) {
          +                // If value is a function, invoke it and return its value
          +                value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
          +                s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
          +            };
          +
          +        // Set traditional to true for jQuery <= 1.3.2 behavior.
          +        if ( traditional === undefined ) {
          +            traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
          +        }
          +
          +        // If an array was passed in, assume that it is an array of form elements.
          +        if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
          +            // Serialize the form elements
          +            jQuery.each( a, function() {
          +                add( this.name, this.value );
          +            });
          +
          +        } else {
          +            // If traditional, encode the "old" way (the way 1.3.2 or older
          +            // did it), otherwise encode params recursively.
          +            for ( prefix in a ) {
          +                buildParams( prefix, a[ prefix ], traditional, add );
          +            }
          +        }
          +
          +        // Return the resulting serialization
          +        return s.join( "&" ).replace( r20, "+" );
          +    };
          +
          +    jQuery.fn.extend({
          +        serialize: function() {
          +            return jQuery.param( this.serializeArray() );
          +        },
          +        serializeArray: function() {
          +            return this.map(function() {
          +                // Can add propHook for "elements" to filter or add form elements
          +                var elements = jQuery.prop( this, "elements" );
          +                return elements ? jQuery.makeArray( elements ) : this;
          +            })
          +                .filter(function() {
          +                    var type = this.type;
          +
          +                    // Use .is( ":disabled" ) so that fieldset[disabled] works
          +                    return this.name && !jQuery( this ).is( ":disabled" ) &&
          +                        rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
          +                        ( this.checked || !rcheckableType.test( type ) );
          +                })
          +                .map(function( i, elem ) {
          +                    var val = jQuery( this ).val();
          +
          +                    return val == null ?
          +                        null :
          +                        jQuery.isArray( val ) ?
          +                            jQuery.map( val, function( val ) {
          +                                return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +                            }) :
          +                        { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
          +                }).get();
          +        }
          +    });
          +
          +
          +    jQuery.ajaxSettings.xhr = function() {
          +        try {
          +            return new XMLHttpRequest();
          +        } catch( e ) {}
          +    };
          +
          +    var xhrId = 0,
          +        xhrCallbacks = {},
          +        xhrSuccessStatus = {
          +            // file protocol always yields status code 0, assume 200
          +            0: 200,
          +            // Support: IE9
          +            // #1450: sometimes IE returns 1223 when it should be 204
          +            1223: 204
          +        },
          +        xhrSupported = jQuery.ajaxSettings.xhr();
          +
          +// Support: IE9
          +// Open requests must be manually aborted on unload (#5280)
          +    if ( window.ActiveXObject ) {
          +        jQuery( window ).on( "unload", function() {
          +            for ( var key in xhrCallbacks ) {
          +                xhrCallbacks[ key ]();
          +            }
          +        });
          +    }
          +
          +    support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
          +    support.ajax = xhrSupported = !!xhrSupported;
          +
          +    jQuery.ajaxTransport(function( options ) {
          +        var callback;
          +
          +        // Cross domain only allowed if supported through XMLHttpRequest
          +        if ( support.cors || xhrSupported && !options.crossDomain ) {
          +            return {
          +                send: function( headers, complete ) {
          +                    var i,
          +                        xhr = options.xhr(),
          +                        id = ++xhrId;
          +
          +                    xhr.open( options.type, options.url, options.async, options.username, options.password );
          +
          +                    // Apply custom fields if provided
          +                    if ( options.xhrFields ) {
          +                        for ( i in options.xhrFields ) {
          +                            xhr[ i ] = options.xhrFields[ i ];
          +                        }
          +                    }
          +
          +                    // Override mime type if needed
          +                    if ( options.mimeType && xhr.overrideMimeType ) {
          +                        xhr.overrideMimeType( options.mimeType );
          +                    }
          +
          +                    // X-Requested-With header
          +                    // For cross-domain requests, seeing as conditions for a preflight are
          +                    // akin to a jigsaw puzzle, we simply never set it to be sure.
          +                    // (it can always be set on a per-request basis or even using ajaxSetup)
          +                    // For same-domain requests, won't change header if already provided.
          +                    if ( !options.crossDomain && !headers["X-Requested-With"] ) {
          +                        headers["X-Requested-With"] = "XMLHttpRequest";
          +                    }
          +
          +                    // Set headers
          +                    for ( i in headers ) {
          +                        xhr.setRequestHeader( i, headers[ i ] );
          +                    }
          +
          +                    // Callback
          +                    callback = function( type ) {
          +                        return function() {
          +                            if ( callback ) {
          +                                delete xhrCallbacks[ id ];
          +                                callback = xhr.onload = xhr.onerror = null;
          +
          +                                if ( type === "abort" ) {
          +                                    xhr.abort();
          +                                } else if ( type === "error" ) {
          +                                    complete(
          +                                        // file: protocol always yields status 0; see #8605, #14207
          +                                        xhr.status,
          +                                        xhr.statusText
          +                                    );
          +                                } else {
          +                                    complete(
          +                                        xhrSuccessStatus[ xhr.status ] || xhr.status,
          +                                        xhr.statusText,
          +                                        // Support: IE9
          +                                        // Accessing binary-data responseText throws an exception
          +                                        // (#11426)
          +                                        typeof xhr.responseText === "string" ? {
          +                                            text: xhr.responseText
          +                                        } : undefined,
          +                                        xhr.getAllResponseHeaders()
          +                                    );
          +                                }
          +                            }
          +                        };
          +                    };
          +
          +                    // Listen to events
          +                    xhr.onload = callback();
          +                    xhr.onerror = callback("error");
          +
          +                    // Create the abort callback
          +                    callback = xhrCallbacks[ id ] = callback("abort");
          +
          +                    // Do send the request
          +                    // This may raise an exception which is actually
          +                    // handled in jQuery.ajax (so no try/catch here)
          +                    xhr.send( options.hasContent && options.data || null );
          +                },
          +
          +                abort: function() {
          +                    if ( callback ) {
          +                        callback();
          +                    }
          +                }
          +            };
          +        }
          +    });
          +
          +
          +
          +
          +// Install script dataType
          +    jQuery.ajaxSetup({
          +        accepts: {
          +            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
          +        },
          +        contents: {
          +            script: /(?:java|ecma)script/
          +        },
          +        converters: {
          +            "text script": function( text ) {
          +                jQuery.globalEval( text );
          +                return text;
          +            }
          +        }
          +    });
          +
          +// Handle cache's special case and crossDomain
          +    jQuery.ajaxPrefilter( "script", function( s ) {
          +        if ( s.cache === undefined ) {
          +            s.cache = false;
          +        }
          +        if ( s.crossDomain ) {
          +            s.type = "GET";
          +        }
          +    });
          +
          +// Bind script tag hack transport
          +    jQuery.ajaxTransport( "script", function( s ) {
          +        // This transport only deals with cross domain requests
          +        if ( s.crossDomain ) {
          +            var script, callback;
          +            return {
          +                send: function( _, complete ) {
          +                    script = jQuery("<script>").prop({
          +                        async: true,
          +                        charset: s.scriptCharset,
          +                        src: s.url
          +                    }).on(
          +                            "load error",
          +                            callback = function( evt ) {
          +                                script.remove();
          +                                callback = null;
          +                                if ( evt ) {
          +                                    complete( evt.type === "error" ? 404 : 200, evt.type );
          +                                }
          +                            }
          +                        );
          +                    document.head.appendChild( script[ 0 ] );
          +                },
          +                abort: function() {
          +                    if ( callback ) {
          +                        callback();
          +                    }
          +                }
          +            };
          +        }
          +    });
          +
          +
          +
          +
          +    var oldCallbacks = [],
          +        rjsonp = /(=)\?(?=&|$)|\?\?/;
          +
          +// Default jsonp settings
          +    jQuery.ajaxSetup({
          +        jsonp: "callback",
          +        jsonpCallback: function() {
          +            var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
          +            this[ callback ] = true;
          +            return callback;
          +        }
          +    });
          +
          +// Detect, normalize options and install callbacks for jsonp requests
          +    jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
          +
          +        var callbackName, overwritten, responseContainer,
          +            jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
          +                "url" :
          +                typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
          +                );
          +
          +        // Handle iff the expected data type is "jsonp" or we have a parameter to set
          +        if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
          +
          +            // Get callback name, remembering preexisting value associated with it
          +            callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
          +                s.jsonpCallback() :
          +                s.jsonpCallback;
          +
          +            // Insert callback into url or form data
          +            if ( jsonProp ) {
          +                s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
          +            } else if ( s.jsonp !== false ) {
          +                s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
          +            }
          +
          +            // Use data converter to retrieve json after script execution
          +            s.converters["script json"] = function() {
          +                if ( !responseContainer ) {
          +                    jQuery.error( callbackName + " was not called" );
          +                }
          +                return responseContainer[ 0 ];
          +            };
          +
          +            // force json dataType
          +            s.dataTypes[ 0 ] = "json";
          +
          +            // Install callback
          +            overwritten = window[ callbackName ];
          +            window[ callbackName ] = function() {
          +                responseContainer = arguments;
          +            };
          +
          +            // Clean-up function (fires after converters)
          +            jqXHR.always(function() {
          +                // Restore preexisting value
          +                window[ callbackName ] = overwritten;
          +
          +                // Save back as free
          +                if ( s[ callbackName ] ) {
          +                    // make sure that re-using the options doesn't screw things around
          +                    s.jsonpCallback = originalSettings.jsonpCallback;
          +
          +                    // save the callback name for future use
          +                    oldCallbacks.push( callbackName );
          +                }
          +
          +                // Call if it was a function and we have a response
          +                if ( responseContainer && jQuery.isFunction( overwritten ) ) {
          +                    overwritten( responseContainer[ 0 ] );
          +                }
          +
          +                responseContainer = overwritten = undefined;
          +            });
          +
          +            // Delegate to script
          +            return "script";
          +        }
          +    });
          +
          +
          +
          +
          +// data: string of html
          +// context (optional): If specified, the fragment will be created in this context, defaults to document
          +// keepScripts (optional): If true, will include scripts passed in the html string
          +    jQuery.parseHTML = function( data, context, keepScripts ) {
          +        if ( !data || typeof data !== "string" ) {
          +            return null;
          +        }
          +        if ( typeof context === "boolean" ) {
          +            keepScripts = context;
          +            context = false;
          +        }
          +        context = context || document;
          +
          +        var parsed = rsingleTag.exec( data ),
          +            scripts = !keepScripts && [];
          +
          +        // Single tag
          +        if ( parsed ) {
          +            return [ context.createElement( parsed[1] ) ];
          +        }
          +
          +        parsed = jQuery.buildFragment( [ data ], context, scripts );
          +
          +        if ( scripts && scripts.length ) {
          +            jQuery( scripts ).remove();
          +        }
          +
          +        return jQuery.merge( [], parsed.childNodes );
          +    };
          +
          +
          +// Keep a copy of the old load method
          +    var _load = jQuery.fn.load;
          +
          +    /**
          +     * Load a url into a page
          +     */
          +    jQuery.fn.load = function( url, params, callback ) {
          +        if ( typeof url !== "string" && _load ) {
          +            return _load.apply( this, arguments );
          +        }
          +
          +        var selector, type, response,
          +            self = this,
          +            off = url.indexOf(" ");
          +
          +        if ( off >= 0 ) {
          +            selector = url.slice( off );
          +            url = url.slice( 0, off );
          +        }
          +
          +        // If it's a function
          +        if ( jQuery.isFunction( params ) ) {
          +
          +            // We assume that it's the callback
          +            callback = params;
          +            params = undefined;
          +
          +            // Otherwise, build a param string
          +        } else if ( params && typeof params === "object" ) {
          +            type = "POST";
          +        }
          +
          +        // If we have elements to modify, make the request
          +        if ( self.length > 0 ) {
          +            jQuery.ajax({
          +                url: url,
          +
          +                // if "type" variable is undefined, then "GET" method will be used
          +                type: type,
          +                dataType: "html",
          +                data: params
          +            }).done(function( responseText ) {
          +
          +                    // Save response for use in complete callback
          +                    response = arguments;
          +
          +                    self.html( selector ?
          +
          +                        // If a selector was specified, locate the right elements in a dummy div
          +                        // Exclude scripts to avoid IE 'Permission Denied' errors
          +                        jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
          +
          +                        // Otherwise use the full result
          +                        responseText );
          +
          +                }).complete( callback && function( jqXHR, status ) {
          +                    self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
          +                });
          +        }
          +
          +        return this;
          +    };
          +
          +
          +
          +
          +    jQuery.expr.filters.animated = function( elem ) {
          +        return jQuery.grep(jQuery.timers, function( fn ) {
          +            return elem === fn.elem;
          +        }).length;
          +    };
          +
          +
          +
          +
          +    var docElem = window.document.documentElement;
          +
          +    /**
          +     * Gets a window from an element
          +     */
          +    function getWindow( elem ) {
          +        return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
          +    }
          +
          +    jQuery.offset = {
          +        setOffset: function( elem, options, i ) {
          +            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
          +                position = jQuery.css( elem, "position" ),
          +                curElem = jQuery( elem ),
          +                props = {};
          +
          +            // Set position first, in-case top/left are set even on static elem
          +            if ( position === "static" ) {
          +                elem.style.position = "relative";
          +            }
          +
          +            curOffset = curElem.offset();
          +            curCSSTop = jQuery.css( elem, "top" );
          +            curCSSLeft = jQuery.css( elem, "left" );
          +            calculatePosition = ( position === "absolute" || position === "fixed" ) &&
          +                ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
          +
          +            // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
          +            if ( calculatePosition ) {
          +                curPosition = curElem.position();
          +                curTop = curPosition.top;
          +                curLeft = curPosition.left;
          +
          +            } else {
          +                curTop = parseFloat( curCSSTop ) || 0;
          +                curLeft = parseFloat( curCSSLeft ) || 0;
          +            }
          +
          +            if ( jQuery.isFunction( options ) ) {
          +                options = options.call( elem, i, curOffset );
          +            }
          +
          +            if ( options.top != null ) {
          +                props.top = ( options.top - curOffset.top ) + curTop;
          +            }
          +            if ( options.left != null ) {
          +                props.left = ( options.left - curOffset.left ) + curLeft;
          +            }
          +
          +            if ( "using" in options ) {
          +                options.using.call( elem, props );
          +
          +            } else {
          +                curElem.css( props );
          +            }
          +        }
          +    };
          +
          +    jQuery.fn.extend({
          +        offset: function( options ) {
          +            if ( arguments.length ) {
          +                return options === undefined ?
          +                    this :
          +                    this.each(function( i ) {
          +                        jQuery.offset.setOffset( this, options, i );
          +                    });
          +            }
          +
          +            var docElem, win,
          +                elem = this[ 0 ],
          +                box = { top: 0, left: 0 },
          +                doc = elem && elem.ownerDocument;
          +
          +            if ( !doc ) {
          +                return;
          +            }
          +
          +            docElem = doc.documentElement;
          +
          +            // Make sure it's not a disconnected DOM node
          +            if ( !jQuery.contains( docElem, elem ) ) {
          +                return box;
          +            }
          +
          +            // If we don't have gBCR, just use 0,0 rather than error
          +            // BlackBerry 5, iOS 3 (original iPhone)
          +            if ( typeof elem.getBoundingClientRect !== strundefined ) {
          +                box = elem.getBoundingClientRect();
          +            }
          +            win = getWindow( doc );
          +            return {
          +                top: box.top + win.pageYOffset - docElem.clientTop,
          +                left: box.left + win.pageXOffset - docElem.clientLeft
          +            };
          +        },
          +
          +        position: function() {
          +            if ( !this[ 0 ] ) {
          +                return;
          +            }
          +
          +            var offsetParent, offset,
          +                elem = this[ 0 ],
          +                parentOffset = { top: 0, left: 0 };
          +
          +            // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
          +            if ( jQuery.css( elem, "position" ) === "fixed" ) {
          +                // We assume that getBoundingClientRect is available when computed position is fixed
          +                offset = elem.getBoundingClientRect();
          +
          +            } else {
          +                // Get *real* offsetParent
          +                offsetParent = this.offsetParent();
          +
          +                // Get correct offsets
          +                offset = this.offset();
          +                if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
          +                    parentOffset = offsetParent.offset();
          +                }
          +
          +                // Add offsetParent borders
          +                parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
          +                parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
          +            }
          +
          +            // Subtract parent offsets and element margins
          +            return {
          +                top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
          +                left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
          +            };
          +        },
          +
          +        offsetParent: function() {
          +            return this.map(function() {
          +                var offsetParent = this.offsetParent || docElem;
          +
          +                while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
          +                    offsetParent = offsetParent.offsetParent;
          +                }
          +
          +                return offsetParent || docElem;
          +            });
          +        }
          +    });
          +
          +// Create scrollLeft and scrollTop methods
          +    jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
          +        var top = "pageYOffset" === prop;
          +
          +        jQuery.fn[ method ] = function( val ) {
          +            return access( this, function( elem, method, val ) {
          +                var win = getWindow( elem );
          +
          +                if ( val === undefined ) {
          +                    return win ? win[ prop ] : elem[ method ];
          +                }
          +
          +                if ( win ) {
          +                    win.scrollTo(
          +                        !top ? val : window.pageXOffset,
          +                        top ? val : window.pageYOffset
          +                    );
          +
          +                } else {
          +                    elem[ method ] = val;
          +                }
          +            }, method, val, arguments.length, null );
          +        };
          +    });
          +
          +// Add the top/left cssHooks using jQuery.fn.position
          +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
          +// getComputedStyle returns percent when specified for top/left/bottom/right
          +// rather than make the css module depend on the offset module, we just check for it here
          +    jQuery.each( [ "top", "left" ], function( i, prop ) {
          +        jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
          +            function( elem, computed ) {
          +                if ( computed ) {
          +                    computed = curCSS( elem, prop );
          +                    // if curCSS returns percentage, fallback to offset
          +                    return rnumnonpx.test( computed ) ?
          +                        jQuery( elem ).position()[ prop ] + "px" :
          +                        computed;
          +                }
          +            }
          +        );
          +    });
          +
          +
          +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
          +    jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
          +        jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
          +            // margin is only for outerHeight, outerWidth
          +            jQuery.fn[ funcName ] = function( margin, value ) {
          +                var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
          +                    extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
          +
          +                return access( this, function( elem, type, value ) {
          +                    var doc;
          +
          +                    if ( jQuery.isWindow( elem ) ) {
          +                        // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
          +                        // isn't a whole lot we can do. See pull request at this URL for discussion:
          +                        // https://github.com/jquery/jquery/pull/764
          +                        return elem.document.documentElement[ "client" + name ];
          +                    }
          +
          +                    // Get document width or height
          +                    if ( elem.nodeType === 9 ) {
          +                        doc = elem.documentElement;
          +
          +                        // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
          +                        // whichever is greatest
          +                        return Math.max(
          +                            elem.body[ "scroll" + name ], doc[ "scroll" + name ],
          +                            elem.body[ "offset" + name ], doc[ "offset" + name ],
          +                            doc[ "client" + name ]
          +                        );
          +                    }
          +
          +                    return value === undefined ?
          +                        // Get width or height on the element, requesting but not forcing parseFloat
          +                        jQuery.css( elem, type, extra ) :
          +
          +                        // Set width or height on the element
          +                        jQuery.style( elem, type, value, extra );
          +                }, type, chainable ? margin : undefined, chainable, null );
          +            };
          +        });
          +    });
          +
          +
          +// The number of elements contained in the matched element set
          +    jQuery.fn.size = function() {
          +        return this.length;
          +    };
          +
          +    jQuery.fn.andSelf = jQuery.fn.addBack;
          +
          +
          +
          +
          +// Register as a named AMD module, since jQuery can be concatenated with other
          +// files that may use define, but not via a proper concatenation script that
          +// understands anonymous AMD modules. A named AMD is safest and most robust
          +// way to register. Lowercase jquery is used because AMD module names are
          +// derived from file names, and jQuery is normally delivered in a lowercase
          +// file name. Do this after creating the global so that if an AMD module wants
          +// to call noConflict to hide this version of jQuery, it will work.
          +    if ( typeof define === "function" && define.amd ) {
          +        define( "jquery", [], function() {
          +            return jQuery;
          +        });
          +    }
          +
          +
          +
          +
          +    var
          +    // Map over jQuery in case of overwrite
          +        _jQuery = window.jQuery,
          +
          +    // Map over the $ in case of overwrite
          +        _$ = window.$;
          +
          +    jQuery.noConflict = function( deep ) {
          +        if ( window.$ === jQuery ) {
          +            window.$ = _$;
          +        }
          +
          +        if ( deep && window.jQuery === jQuery ) {
          +            window.jQuery = _jQuery;
          +        }
          +
          +        return jQuery;
          +    };
          +
          +// Expose jQuery and $ identifiers, even in
          +// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
          +// and CommonJS for browser emulators (#13566)
          +    if ( typeof noGlobal === strundefined ) {
          +        window.jQuery = window.$ = jQuery;
          +    }
          +
          +
          +
          +
          +    return jQuery;
          +
          +}));
          \ No newline at end of file
          diff --git a/public/vendor/livewire/livewire.js b/public/vendor/livewire/livewire.js
          new file mode 100644
          index 0000000..4d9ef6e
          --- /dev/null
          +++ b/public/vendor/livewire/livewire.js
          @@ -0,0 +1,14 @@
          +!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global="undefined"!=typeof globalThis?globalThis:global||self).Livewire=factory()}(this,(function(){"use strict";function ownKeys$1(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function _objectSpread2(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys$1(Object(source),!0).forEach((function(key){_defineProperty(target,key,source[key])})):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys$1(Object(source)).forEach((function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))}))}return target}function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Constructor}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_setPrototypeOf(subClass,superClass)}function _getPrototypeOf(o){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)})(o)}function _setPrototypeOf(o,p){return(_setPrototypeOf=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o})(o,p)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}function _possibleConstructorReturn(self,call){return!call||"object"!=typeof call&&"function"!=typeof call?_assertThisInitialized(self):call}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function(){var result,Super=_getPrototypeOf(Derived);if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget)}else result=Super.apply(this,arguments);return _possibleConstructorReturn(this,result)}}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArray(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}function _iterableToArrayLimit(arr,i){var _i=null==arr?null:"undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"];if(null!=_i){var _s,_e,_arr=[],_n=!0,_d=!1;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function debounce(func,wait,immediate){var timeout;return function(){var context=this,args=arguments,later=function(){timeout=null,immediate||func.apply(context,args)},callNow=immediate&&!timeout;clearTimeout(timeout),timeout=setTimeout(later,wait),callNow&&func.apply(context,args)}}function wireDirectives(el){return new DirectiveManager$1(el)}var DirectiveManager$1=function(){function DirectiveManager(el){_classCallCheck(this,DirectiveManager),this.el=el,this.directives=this.extractTypeModifiersAndValue()}return _createClass(DirectiveManager,[{key:"all",value:function(){return this.directives}},{key:"has",value:function(type){return this.directives.map((function(directive){return directive.type})).includes(type)}},{key:"missing",value:function(type){return!this.has(type)}},{key:"get",value:function(type){return this.directives.find((function(directive){return directive.type===type}))}},{key:"extractTypeModifiersAndValue",value:function(){var _this=this;return Array.from(this.el.getAttributeNames().filter((function(name){return name.match(new RegExp("wire:"))})).map((function(name){var _name$replace$split2=_toArray(name.replace(new RegExp("wire:"),"").split(".")),type=_name$replace$split2[0],modifiers=_name$replace$split2.slice(1);return new Directive(type,modifiers,name,_this.el)})))}}]),DirectiveManager}(),Directive=function(){function Directive(type,modifiers,rawName,el){_classCallCheck(this,Directive),this.type=type,this.modifiers=modifiers,this.rawName=rawName,this.el=el,this.eventContext}return _createClass(Directive,[{key:"setEventContext",value:function(context){this.eventContext=context}},{key:"value",get:function(){return this.el.getAttribute(this.rawName)}},{key:"method",get:function(){return this.parseOutMethodAndParams(this.value).method}},{key:"params",get:function(){return this.parseOutMethodAndParams(this.value).params}},{key:"durationOr",value:function(defaultDuration){var durationInMilliSeconds,durationInMilliSecondsString=this.modifiers.find((function(mod){return mod.match(/([0-9]+)ms/)})),durationInSecondsString=this.modifiers.find((function(mod){return mod.match(/([0-9]+)s/)}));return durationInMilliSecondsString?durationInMilliSeconds=Number(durationInMilliSecondsString.replace("ms","")):durationInSecondsString&&(durationInMilliSeconds=1e3*Number(durationInSecondsString.replace("s",""))),durationInMilliSeconds||defaultDuration}},{key:"parseOutMethodAndParams",value:function(rawMethod){var method=rawMethod,params=[],methodAndParamString=method.match(/([\s\S]*?)\(([\s\S]*)\)/);methodAndParamString&&(method=methodAndParamString[1],params=new Function("$event","return (function () {\n                for (var l=arguments.length, p=new Array(l), k=0; k<l; k++) {\n                    p[k] = arguments[k];\n                }\n                return [].concat(p);\n            })(".concat(methodAndParamString[2],")"))(this.eventContext));return{method:method,params:params}}},{key:"cardinalDirectionOr",value:function(){var fallback=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"right";return this.modifiers.includes("up")?"up":this.modifiers.includes("down")?"down":this.modifiers.includes("left")?"left":this.modifiers.includes("right")?"right":fallback}}]),Directive}();function walk(root,callback){if(!1!==callback(root))for(var node=root.firstElementChild;node;)walk(node,callback),node=node.nextElementSibling}function dispatch(eventName){var event=document.createEvent("Events");return event.initEvent(eventName,!0,!0),document.dispatchEvent(event),event}function getCsrfToken(){var _window$livewire_toke,tokenTag=document.head.querySelector('meta[name="csrf-token"]');return tokenTag?tokenTag.content:null!==(_window$livewire_toke=window.livewire_token)&&void 0!==_window$livewire_toke?_window$livewire_toke:void 0}function kebabCase(subject){return subject.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[_\s]/,"-").toLowerCase()}
          +/*!
          +   * isobject <https://github.com/jonschlinkert/isobject>
          +   *
          +   * Copyright (c) 2014-2017, Jon Schlinkert.
          +   * Released under the MIT License.
          +   */var isobject=function(val){return null!=val&&"object"==typeof val&&!1===Array.isArray(val)},getValue=function(target,path,options){if(isobject(options)||(options={default:options}),!isValidObject(target))return void 0!==options.default?options.default:target;"number"==typeof path&&(path=String(path));const isArray=Array.isArray(path),isString="string"==typeof path,splitChar=options.separator||".",joinChar=options.joinChar||("string"==typeof splitChar?splitChar:".");if(!isString&&!isArray)return target;if(isString&&path in target)return isValid(path,target,options)?target[path]:options.default;let segs=isArray?path:split$1(path,splitChar,options),len=segs.length,idx=0;do{let prop=segs[idx];for("number"==typeof prop&&(prop=String(prop));prop&&"\\"===prop.slice(-1);)prop=join([prop.slice(0,-1),segs[++idx]||""],joinChar,options);if(prop in target){if(!isValid(prop,target,options))return options.default;target=target[prop]}else{let hasProp=!1,n=idx+1;for(;n<len;)if(prop=join([prop,segs[n++]],joinChar,options),hasProp=prop in target){if(!isValid(prop,target,options))return options.default;target=target[prop],idx=n-1;break}if(!hasProp)return options.default}}while(++idx<len&&isValidObject(target));return idx===len?target:options.default};
          +/*!
          +   * get-value <https://github.com/jonschlinkert/get-value>
          +   *
          +   * Copyright (c) 2014-2018, Jon Schlinkert.
          +   * Released under the MIT License.
          +   */function join(segs,joinChar,options){return"function"==typeof options.join?options.join(segs):segs[0]+joinChar+segs[1]}function split$1(path,splitChar,options){return"function"==typeof options.split?options.split(path):path.split(splitChar)}function isValid(key,target,options){return"function"!=typeof options.isValid||options.isValid(key,target)}function isValidObject(val){return isobject(val)||Array.isArray(val)||"function"==typeof val}var _default$6=function(){function _default(el){var skipWatcher=arguments.length>1&&void 0!==arguments[1]&&arguments[1];_classCallCheck(this,_default),this.el=el,this.skipWatcher=skipWatcher,this.resolveCallback=function(){},this.rejectCallback=function(){},this.signature=(Math.random()+1).toString(36).substring(8)}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.el.outerHTML))}},{key:"onResolve",value:function(callback){this.resolveCallback=callback}},{key:"onReject",value:function(callback){this.rejectCallback=callback}},{key:"resolve",value:function(thing){this.resolveCallback(thing)}},{key:"reject",value:function(thing){this.rejectCallback(thing)}}]),_default}(),_default$5=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(event,params,el){var _this;return _classCallCheck(this,_default),(_this=_super.call(this,el)).type="fireEvent",_this.payload={id:_this.signature,event:event,params:params},_this}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.type,this.payload.event,JSON.stringify(this.payload.params)))}}]),_default}(_default$6),MessageBus=function(){function MessageBus(){_classCallCheck(this,MessageBus),this.listeners={}}return _createClass(MessageBus,[{key:"register",value:function(name,callback){this.listeners[name]||(this.listeners[name]=[]),this.listeners[name].push(callback)}},{key:"call",value:function(name){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(this.listeners[name]||[]).forEach((function(callback){callback.apply(void 0,params)}))}},{key:"has",value:function(name){return Object.keys(this.listeners).includes(name)}}]),MessageBus}(),HookManager={availableHooks:["component.initialized","element.initialized","element.updating","element.updated","element.removed","message.sent","message.failed","message.received","message.processed","interceptWireModelSetValue","interceptWireModelAttachListener","beforeReplaceState","beforePushState"],bus:new MessageBus,register:function(name,callback){if(!this.availableHooks.includes(name))throw"Livewire: Referencing unknown hook: [".concat(name,"]");this.bus.register(name,callback)},call:function(name){for(var _this$bus,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$bus=this.bus).call.apply(_this$bus,[name].concat(params))}},DirectiveManager={directives:new MessageBus,register:function(name,callback){if(this.has(name))throw"Livewire: Directive already registered: [".concat(name,"]");this.directives.register(name,callback)},call:function(name,el,directive,component){this.directives.call(name,el,directive,component)},has:function(name){return this.directives.has(name)}},store$2={componentsById:{},listeners:new MessageBus,initialRenderIsFinished:!1,livewireIsInBackground:!1,livewireIsOffline:!1,sessionHasExpired:!1,sessionHasExpiredCallback:void 0,directives:DirectiveManager,hooks:HookManager,onErrorCallback:function(){},components:function(){var _this=this;return Object.keys(this.componentsById).map((function(key){return _this.componentsById[key]}))},addComponent:function(component){return this.componentsById[component.id]=component},findComponent:function(id){return this.componentsById[id]},getComponentsByName:function(name){return this.components().filter((function(component){return component.name===name}))},hasComponent:function(id){return!!this.componentsById[id]},tearDownComponents:function(){var _this2=this;this.components().forEach((function(component){_this2.removeComponent(component)}))},on:function(event,callback){this.listeners.register(event,callback)},emit:function(event){for(var _this$listeners,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$listeners=this.listeners).call.apply(_this$listeners,[event].concat(params)),this.componentsListeningForEvent(event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitUp:function(el,event){for(var _len2=arguments.length,params=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)params[_key2-2]=arguments[_key2];this.componentsListeningForEventThatAreTreeAncestors(el,event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitSelf:function(componentId,event){var component=this.findComponent(componentId);if(component.listeners.includes(event)){for(var _len3=arguments.length,params=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++)params[_key3-2]=arguments[_key3];component.addAction(new _default$5(event,params))}},emitTo:function(componentName,event){for(var _len4=arguments.length,params=new Array(_len4>2?_len4-2:0),_key4=2;_key4<_len4;_key4++)params[_key4-2]=arguments[_key4];var components=this.getComponentsByName(componentName);components.forEach((function(component){component.listeners.includes(event)&&component.addAction(new _default$5(event,params))}))},componentsListeningForEventThatAreTreeAncestors:function(el,event){for(var parentIds=[],parent=el.parentElement.closest("[wire\\:id]");parent;)parentIds.push(parent.getAttribute("wire:id")),parent=parent.parentElement.closest("[wire\\:id]");return this.components().filter((function(component){return component.listeners.includes(event)&&parentIds.includes(component.id)}))},componentsListeningForEvent:function(event){return this.components().filter((function(component){return component.listeners.includes(event)}))},registerDirective:function(name,callback){this.directives.register(name,callback)},registerHook:function(name,callback){this.hooks.register(name,callback)},callHook:function(name){for(var _this$hooks,_len5=arguments.length,params=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++)params[_key5-1]=arguments[_key5];(_this$hooks=this.hooks).call.apply(_this$hooks,[name].concat(params))},changeComponentId:function(component,newId){var oldId=component.id;component.id=newId,component.fingerprint.id=newId,this.componentsById[newId]=component,delete this.componentsById[oldId],this.components().forEach((function(component){var children=component.serverMemo.children||{};Object.entries(children).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],_ref2$=_ref2[1],id=_ref2$.id;_ref2$.tagName,id===oldId&&(children[key].id=newId)}))}))},removeComponent:function(component){component.tearDown(),delete this.componentsById[component.id]},onError:function(callback){this.onErrorCallback=callback},getClosestParentId:function(childId,subsetOfParentIds){var _this3=this,distancesByParentId={};subsetOfParentIds.forEach((function(parentId){var distance=_this3.getDistanceToChild(parentId,childId);distance&&(distancesByParentId[parentId]=distance)}));var closestParentId,smallestDistance=Math.min.apply(Math,_toConsumableArray(Object.values(distancesByParentId)));return Object.entries(distancesByParentId).forEach((function(_ref3){var _ref4=_slicedToArray(_ref3,2),parentId=_ref4[0];_ref4[1]===smallestDistance&&(closestParentId=parentId)})),closestParentId},getDistanceToChild:function(parentId,childId){var distanceMemo=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,parentComponent=this.findComponent(parentId);if(parentComponent){var childIds=parentComponent.childIds;if(childIds.includes(childId))return distanceMemo;for(var i=0;i<childIds.length;i++){var distance=this.getDistanceToChild(childIds[i],childId,distanceMemo+1);if(distance)return distance}}}},DOM={rootComponentElements:function(){return Array.from(document.querySelectorAll("[wire\\:id]"))},rootComponentElementsWithNoParents:function(){var node=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null===node&&(node=document);var allEls=Array.from(node.querySelectorAll("[wire\\:initial-data]")),onlyChildEls=Array.from(node.querySelectorAll("[wire\\:initial-data] [wire\\:initial-data]"));return allEls.filter((function(el){return!onlyChildEls.includes(el)}))},allModelElementsInside:function(root){return Array.from(root.querySelectorAll("[wire\\:model]"))},getByAttributeAndValue:function(attribute,value){return document.querySelector("[wire\\:".concat(attribute,'="').concat(value,'"]'))},nextFrame:function(fn){var _this=this;requestAnimationFrame((function(){requestAnimationFrame(fn.bind(_this))}))},closestRoot:function(el){return this.closestByAttribute(el,"id")},closestByAttribute:function(el,attribute){var closestEl=el.closest("[wire\\:".concat(attribute,"]"));if(!closestEl)throw"\nLivewire Error:\n\nCannot find parent element in DOM tree containing attribute: [wire:".concat(attribute,"].\n\nUsually this is caused by Livewire's DOM-differ not being able to properly track changes.\n\nReference the following guide for common causes: https://laravel-livewire.com/docs/troubleshooting \n\nReferenced element:\n\n").concat(el.outerHTML,"\n");return closestEl},isComponentRootEl:function(el){return this.hasAttribute(el,"id")},hasAttribute:function(el,attribute){return el.hasAttribute("wire:".concat(attribute))},getAttribute:function(el,attribute){return el.getAttribute("wire:".concat(attribute))},removeAttribute:function(el,attribute){return el.removeAttribute("wire:".concat(attribute))},setAttribute:function(el,attribute,value){return el.setAttribute("wire:".concat(attribute),value)},hasFocus:function(el){return el===document.activeElement},isInput:function(el){return["INPUT","TEXTAREA","SELECT"].includes(el.tagName.toUpperCase())},isTextInput:function(el){return["INPUT","TEXTAREA"].includes(el.tagName.toUpperCase())&&!["checkbox","radio"].includes(el.type)},valueFromInput:function(el,component){if("checkbox"===el.type){var modelName=wireDirectives(el).get("model").value,modelValue=component.deferredActions[modelName]?component.deferredActions[modelName].payload.value:getValue(component.data,modelName);return Array.isArray(modelValue)?this.mergeCheckboxValueIntoArray(el,modelValue):!!el.checked&&(el.getAttribute("value")||!0)}return"SELECT"===el.tagName&&el.multiple?this.getSelectValues(el):el.value},mergeCheckboxValueIntoArray:function(el,arrayValue){return el.checked?arrayValue.includes(el.value)?arrayValue:arrayValue.concat(el.value):arrayValue.filter((function(item){return item!=el.value}))},setInputValueFromModel:function(el,component){var modelString=wireDirectives(el).get("model").value,modelValue=getValue(component.data,modelString);"input"===el.tagName.toLowerCase()&&"file"===el.type||this.setInputValue(el,modelValue)},setInputValue:function(el,value){if(store$2.callHook("interceptWireModelSetValue",value,el),"radio"===el.type)el.checked=el.value==value;else if("checkbox"===el.type)if(Array.isArray(value)){var valueFound=!1;value.forEach((function(val){val==el.value&&(valueFound=!0)})),el.checked=valueFound}else el.checked=!!value;else"SELECT"===el.tagName?this.updateSelect(el,value):(value=void 0===value?"":value,el.value=value)},getSelectValues:function(el){return Array.from(el.options).filter((function(option){return option.selected})).map((function(option){return option.value||option.text}))},updateSelect:function(el,value){var arrayWrappedValue=[].concat(value).map((function(value){return value+""}));Array.from(el.options).forEach((function(option){option.selected=arrayWrappedValue.includes(option.value)}))}},ceil=Math.ceil,floor=Math.floor,toInteger=function(argument){return isNaN(argument=+argument)?0:(argument>0?floor:ceil)(argument)},requireObjectCoercible=function(it){if(null==it)throw TypeError("Can't call method on "+it);return it},createMethod$3=function(CONVERT_TO_STRING){return function($this,pos){var first,second,S=String(requireObjectCoercible($this)),position=toInteger(pos),size=S.length;return position<0||position>=size?CONVERT_TO_STRING?"":void 0:(first=S.charCodeAt(position))<55296||first>56319||position+1===size||(second=S.charCodeAt(position+1))<56320||second>57343?CONVERT_TO_STRING?S.charAt(position):first:CONVERT_TO_STRING?S.slice(position,position+2):second-56320+(first-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$3(!1),charAt:createMethod$3(!0)},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,basedir,module){return fn(module={path:basedir,exports:{},require:function(path,base){return commonjsRequire(path,null==base?module.path:base)}},module.exports),module.exports}function commonjsRequire(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var check=function(it){return it&&it.Math==Math&&it},global_1=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||Function("return this")(),fails=function(exec){try{return!!exec()}catch(error){return!0}},descriptors=!fails((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),isObject=function(it){return"object"==typeof it?null!==it:"function"==typeof it},document$3=global_1.document,EXISTS=isObject(document$3)&&isObject(document$3.createElement),documentCreateElement=function(it){return EXISTS?document$3.createElement(it):{}},ie8DomDefine=!descriptors&&!fails((function(){return 7!=Object.defineProperty(documentCreateElement("div"),"a",{get:function(){return 7}}).a})),anObject=function(it){if(!isObject(it))throw TypeError(String(it)+" is not an object");return it},toPrimitive=function(input,PREFERRED_STRING){if(!isObject(input))return input;var fn,val;if(PREFERRED_STRING&&"function"==typeof(fn=input.toString)&&!isObject(val=fn.call(input)))return val;if("function"==typeof(fn=input.valueOf)&&!isObject(val=fn.call(input)))return val;if(!PREFERRED_STRING&&"function"==typeof(fn=input.toString)&&!isObject(val=fn.call(input)))return val;throw TypeError("Can't convert object to primitive value")},$defineProperty=Object.defineProperty,f$5=descriptors?$defineProperty:function(O,P,Attributes){if(anObject(O),P=toPrimitive(P,!0),anObject(Attributes),ie8DomDefine)try{return $defineProperty(O,P,Attributes)}catch(error){}if("get"in Attributes||"set"in Attributes)throw TypeError("Accessors not supported");return"value"in Attributes&&(O[P]=Attributes.value),O},objectDefineProperty={f:f$5},createPropertyDescriptor=function(bitmap,value){return{enumerable:!(1&bitmap),configurable:!(2&bitmap),writable:!(4&bitmap),value:value}},createNonEnumerableProperty=descriptors?function(object,key,value){return objectDefineProperty.f(object,key,createPropertyDescriptor(1,value))}:function(object,key,value){return object[key]=value,object},setGlobal=function(key,value){try{createNonEnumerableProperty(global_1,key,value)}catch(error){global_1[key]=value}return value},SHARED="__core-js_shared__",store$1=global_1[SHARED]||setGlobal(SHARED,{}),sharedStore=store$1,functionToString=Function.toString;"function"!=typeof sharedStore.inspectSource&&(sharedStore.inspectSource=function(it){return functionToString.call(it)});var inspectSource=sharedStore.inspectSource,WeakMap$1=global_1.WeakMap,nativeWeakMap="function"==typeof WeakMap$1&&/native code/.test(inspectSource(WeakMap$1)),toObject=function(argument){return Object(requireObjectCoercible(argument))},hasOwnProperty={}.hasOwnProperty,has$1=Object.hasOwn||function(it,key){return hasOwnProperty.call(toObject(it),key)},shared=createCommonjsModule((function(module){(module.exports=function(key,value){return sharedStore[key]||(sharedStore[key]=void 0!==value?value:{})})("versions",[]).push({version:"3.15.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),id=0,postfix=Math.random(),uid=function(key){return"Symbol("+String(void 0===key?"":key)+")_"+(++id+postfix).toString(36)},keys=shared("keys"),sharedKey=function(key){return keys[key]||(keys[key]=uid(key))},hiddenKeys$1={},OBJECT_ALREADY_INITIALIZED="Object already initialized",WeakMap=global_1.WeakMap,set$1,get,has,enforce=function(it){return has(it)?get(it):set$1(it,{})},getterFor=function(TYPE){return function(it){var state;if(!isObject(it)||(state=get(it)).type!==TYPE)throw TypeError("Incompatible receiver, "+TYPE+" required");return state}};if(nativeWeakMap||sharedStore.state){var store=sharedStore.state||(sharedStore.state=new WeakMap),wmget=store.get,wmhas=store.has,wmset=store.set;set$1=function(it,metadata){if(wmhas.call(store,it))throw new TypeError(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,wmset.call(store,it,metadata),metadata},get=function(it){return wmget.call(store,it)||{}},has=function(it){return wmhas.call(store,it)}}else{var STATE=sharedKey("state");hiddenKeys$1[STATE]=!0,set$1=function(it,metadata){if(has$1(it,STATE))throw new TypeError(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,createNonEnumerableProperty(it,STATE,metadata),metadata},get=function(it){return has$1(it,STATE)?it[STATE]:{}},has=function(it){return has$1(it,STATE)}}var internalState={set:set$1,get:get,has:has,enforce:enforce,getterFor:getterFor},$propertyIsEnumerable={}.propertyIsEnumerable,getOwnPropertyDescriptor$3=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor$3&&!$propertyIsEnumerable.call({1:2},1),f$4=NASHORN_BUG?function(V){var descriptor=getOwnPropertyDescriptor$3(this,V);return!!descriptor&&descriptor.enumerable}:$propertyIsEnumerable,objectPropertyIsEnumerable={f:f$4},toString={}.toString,classofRaw=function(it){return toString.call(it).slice(8,-1)},split="".split,indexedObject=fails((function(){return!Object("z").propertyIsEnumerable(0)}))?function(it){return"String"==classofRaw(it)?split.call(it,""):Object(it)}:Object,toIndexedObject=function(it){return indexedObject(requireObjectCoercible(it))},$getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,f$3=descriptors?$getOwnPropertyDescriptor:function(O,P){if(O=toIndexedObject(O),P=toPrimitive(P,!0),ie8DomDefine)try{return $getOwnPropertyDescriptor(O,P)}catch(error){}if(has$1(O,P))return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O,P),O[P])},objectGetOwnPropertyDescriptor={f:f$3},redefine=createCommonjsModule((function(module){var getInternalState=internalState.get,enforceInternalState=internalState.enforce,TEMPLATE=String(String).split("String");(module.exports=function(O,key,value,options){var state,unsafe=!!options&&!!options.unsafe,simple=!!options&&!!options.enumerable,noTargetGet=!!options&&!!options.noTargetGet;"function"==typeof value&&("string"!=typeof key||has$1(value,"name")||createNonEnumerableProperty(value,"name",key),(state=enforceInternalState(value)).source||(state.source=TEMPLATE.join("string"==typeof key?key:""))),O!==global_1?(unsafe?!noTargetGet&&O[key]&&(simple=!0):delete O[key],simple?O[key]=value:createNonEnumerableProperty(O,key,value)):simple?O[key]=value:setGlobal(key,value)})(Function.prototype,"toString",(function(){return"function"==typeof this&&getInternalState(this).source||inspectSource(this)}))})),path=global_1,aFunction$1=function(variable){return"function"==typeof variable?variable:void 0},getBuiltIn=function(namespace,method){return arguments.length<2?aFunction$1(path[namespace])||aFunction$1(global_1[namespace]):path[namespace]&&path[namespace][method]||global_1[namespace]&&global_1[namespace][method]},min$2=Math.min,toLength=function(argument){return argument>0?min$2(toInteger(argument),9007199254740991):0},max=Math.max,min$1=Math.min,toAbsoluteIndex=function(index,length){var integer=toInteger(index);return integer<0?max(integer+length,0):min$1(integer,length)},createMethod$2=function(IS_INCLUDES){return function($this,el,fromIndex){var value,O=toIndexedObject($this),length=toLength(O.length),index=toAbsoluteIndex(fromIndex,length);if(IS_INCLUDES&&el!=el){for(;length>index;)if((value=O[index++])!=value)return!0}else for(;length>index;index++)if((IS_INCLUDES||index in O)&&O[index]===el)return IS_INCLUDES||index||0;return!IS_INCLUDES&&-1}},arrayIncludes={includes:createMethod$2(!0),indexOf:createMethod$2(!1)},indexOf=arrayIncludes.indexOf,objectKeysInternal=function(object,names){var key,O=toIndexedObject(object),i=0,result=[];for(key in O)!has$1(hiddenKeys$1,key)&&has$1(O,key)&&result.push(key);for(;names.length>i;)has$1(O,key=names[i++])&&(~indexOf(result,key)||result.push(key));return result},enumBugKeys=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],hiddenKeys=enumBugKeys.concat("length","prototype"),f$2=Object.getOwnPropertyNames||function(O){return objectKeysInternal(O,hiddenKeys)},objectGetOwnPropertyNames={f:f$2},f$1=Object.getOwnPropertySymbols,objectGetOwnPropertySymbols={f:f$1},ownKeys=getBuiltIn("Reflect","ownKeys")||function(it){var keys=objectGetOwnPropertyNames.f(anObject(it)),getOwnPropertySymbols=objectGetOwnPropertySymbols.f;return getOwnPropertySymbols?keys.concat(getOwnPropertySymbols(it)):keys},copyConstructorProperties=function(target,source){for(var keys=ownKeys(source),defineProperty=objectDefineProperty.f,getOwnPropertyDescriptor=objectGetOwnPropertyDescriptor.f,i=0;i<keys.length;i++){var key=keys[i];has$1(target,key)||defineProperty(target,key,getOwnPropertyDescriptor(source,key))}},replacement=/#|\.prototype\./,isForced=function(feature,detection){var value=data[normalize(feature)];return value==POLYFILL||value!=NATIVE&&("function"==typeof detection?fails(detection):!!detection)},normalize=isForced.normalize=function(string){return String(string).replace(replacement,".").toLowerCase()},data=isForced.data={},NATIVE=isForced.NATIVE="N",POLYFILL=isForced.POLYFILL="P",isForced_1=isForced,getOwnPropertyDescriptor$2=objectGetOwnPropertyDescriptor.f,_export=function(options,source){var target,key,targetProperty,sourceProperty,descriptor,TARGET=options.target,GLOBAL=options.global,STATIC=options.stat;if(target=GLOBAL?global_1:STATIC?global_1[TARGET]||setGlobal(TARGET,{}):(global_1[TARGET]||{}).prototype)for(key in source){if(sourceProperty=source[key],targetProperty=options.noTargetGet?(descriptor=getOwnPropertyDescriptor$2(target,key))&&descriptor.value:target[key],!isForced_1(GLOBAL?key:TARGET+(STATIC?".":"#")+key,options.forced)&&void 0!==targetProperty){if(typeof sourceProperty==typeof targetProperty)continue;copyConstructorProperties(sourceProperty,targetProperty)}(options.sham||targetProperty&&targetProperty.sham)&&createNonEnumerableProperty(sourceProperty,"sham",!0),redefine(target,key,sourceProperty,options)}},correctPrototypeGetter=!fails((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype})),IE_PROTO$1=sharedKey("IE_PROTO"),ObjectPrototype=Object.prototype,objectGetPrototypeOf=correctPrototypeGetter?Object.getPrototypeOf:function(O){return O=toObject(O),has$1(O,IE_PROTO$1)?O[IE_PROTO$1]:"function"==typeof O.constructor&&O instanceof O.constructor?O.constructor.prototype:O instanceof Object?ObjectPrototype:null},engineUserAgent=getBuiltIn("navigator","userAgent")||"",process$3=global_1.process,versions=process$3&&process$3.versions,v8=versions&&versions.v8,match,version;v8?(match=v8.split("."),version=match[0]<4?1:match[0]+match[1]):engineUserAgent&&(match=engineUserAgent.match(/Edge\/(\d+)/),(!match||match[1]>=74)&&(match=engineUserAgent.match(/Chrome\/(\d+)/),match&&(version=match[1])));var engineV8Version=version&&+version,nativeSymbol=!!Object.getOwnPropertySymbols&&!fails((function(){var symbol=Symbol();return!String(symbol)||!(Object(symbol)instanceof Symbol)||!Symbol.sham&&engineV8Version&&engineV8Version<41})),useSymbolAsUid=nativeSymbol&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,WellKnownSymbolsStore=shared("wks"),Symbol$1=global_1.Symbol,createWellKnownSymbol=useSymbolAsUid?Symbol$1:Symbol$1&&Symbol$1.withoutSetter||uid,wellKnownSymbol=function(name){return has$1(WellKnownSymbolsStore,name)&&(nativeSymbol||"string"==typeof WellKnownSymbolsStore[name])||(nativeSymbol&&has$1(Symbol$1,name)?WellKnownSymbolsStore[name]=Symbol$1[name]:WellKnownSymbolsStore[name]=createWellKnownSymbol("Symbol."+name)),WellKnownSymbolsStore[name]},ITERATOR$5=wellKnownSymbol("iterator"),BUGGY_SAFARI_ITERATORS$1=!1,returnThis$2=function(){return this},IteratorPrototype$2,PrototypeOfArrayIteratorPrototype,arrayIterator;[].keys&&(arrayIterator=[].keys(),"next"in arrayIterator?(PrototypeOfArrayIteratorPrototype=objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)),PrototypeOfArrayIteratorPrototype!==Object.prototype&&(IteratorPrototype$2=PrototypeOfArrayIteratorPrototype)):BUGGY_SAFARI_ITERATORS$1=!0);var NEW_ITERATOR_PROTOTYPE=null==IteratorPrototype$2||fails((function(){var test={};return IteratorPrototype$2[ITERATOR$5].call(test)!==test}));NEW_ITERATOR_PROTOTYPE&&(IteratorPrototype$2={}),has$1(IteratorPrototype$2,ITERATOR$5)||createNonEnumerableProperty(IteratorPrototype$2,ITERATOR$5,returnThis$2);var iteratorsCore={IteratorPrototype:IteratorPrototype$2,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS$1},objectKeys=Object.keys||function(O){return objectKeysInternal(O,enumBugKeys)},objectDefineProperties=descriptors?Object.defineProperties:function(O,Properties){anObject(O);for(var key,keys=objectKeys(Properties),length=keys.length,index=0;length>index;)objectDefineProperty.f(O,key=keys[index++],Properties[key]);return O},html=getBuiltIn("document","documentElement"),GT=">",LT="<",PROTOTYPE="prototype",SCRIPT="script",IE_PROTO=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(content){return LT+SCRIPT+GT+content+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(activeXDocument){activeXDocument.write(scriptTag("")),activeXDocument.close();var temp=activeXDocument.parentWindow.Object;return activeXDocument=null,temp},NullProtoObjectViaIFrame=function(){var iframeDocument,iframe=documentCreateElement("iframe"),JS="java"+SCRIPT+":";return iframe.style.display="none",html.appendChild(iframe),iframe.src=String(JS),(iframeDocument=iframe.contentWindow.document).open(),iframeDocument.write(scriptTag("document.F=Object")),iframeDocument.close(),iframeDocument.F},activeXDocument,NullProtoObject=function(){try{activeXDocument=document.domain&&new ActiveXObject("htmlfile")}catch(error){}NullProtoObject=activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame();for(var length=enumBugKeys.length;length--;)delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];return NullProtoObject()};hiddenKeys$1[IE_PROTO]=!0;var objectCreate=Object.create||function(O,Properties){var result;return null!==O?(EmptyConstructor[PROTOTYPE]=anObject(O),result=new EmptyConstructor,EmptyConstructor[PROTOTYPE]=null,result[IE_PROTO]=O):result=NullProtoObject(),void 0===Properties?result:objectDefineProperties(result,Properties)},defineProperty$1=objectDefineProperty.f,TO_STRING_TAG$3=wellKnownSymbol("toStringTag"),setToStringTag=function(it,TAG,STATIC){it&&!has$1(it=STATIC?it:it.prototype,TO_STRING_TAG$3)&&defineProperty$1(it,TO_STRING_TAG$3,{configurable:!0,value:TAG})},iterators={},IteratorPrototype$1=iteratorsCore.IteratorPrototype,returnThis$1=function(){return this},createIteratorConstructor=function(IteratorConstructor,NAME,next){var TO_STRING_TAG=NAME+" Iterator";return IteratorConstructor.prototype=objectCreate(IteratorPrototype$1,{next:createPropertyDescriptor(1,next)}),setToStringTag(IteratorConstructor,TO_STRING_TAG,!1),iterators[TO_STRING_TAG]=returnThis$1,IteratorConstructor},aPossiblePrototype=function(it){if(!isObject(it)&&null!==it)throw TypeError("Can't set "+String(it)+" as a prototype");return it},objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var setter,CORRECT_SETTER=!1,test={};try{(setter=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(test,[]),CORRECT_SETTER=test instanceof Array}catch(error){}return function(O,proto){return anObject(O),aPossiblePrototype(proto),CORRECT_SETTER?setter.call(O,proto):O.__proto__=proto,O}}():void 0),IteratorPrototype=iteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS=iteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis=function(){return this},defineIterator=function(Iterable,NAME,IteratorConstructor,next,DEFAULT,IS_SET,FORCED){createIteratorConstructor(IteratorConstructor,NAME,next);var CurrentIteratorPrototype,methods,KEY,getIterationMethod=function(KIND){if(KIND===DEFAULT&&defaultIterator)return defaultIterator;if(!BUGGY_SAFARI_ITERATORS&&KIND in IterablePrototype)return IterablePrototype[KIND];switch(KIND){case KEYS:case VALUES:case ENTRIES:return function(){return new IteratorConstructor(this,KIND)}}return function(){return new IteratorConstructor(this)}},TO_STRING_TAG=NAME+" Iterator",INCORRECT_VALUES_NAME=!1,IterablePrototype=Iterable.prototype,nativeIterator=IterablePrototype[ITERATOR$4]||IterablePrototype["@@iterator"]||DEFAULT&&IterablePrototype[DEFAULT],defaultIterator=!BUGGY_SAFARI_ITERATORS&&nativeIterator||getIterationMethod(DEFAULT),anyNativeIterator="Array"==NAME&&IterablePrototype.entries||nativeIterator;if(anyNativeIterator&&(CurrentIteratorPrototype=objectGetPrototypeOf(anyNativeIterator.call(new Iterable)),IteratorPrototype!==Object.prototype&&CurrentIteratorPrototype.next&&(objectGetPrototypeOf(CurrentIteratorPrototype)!==IteratorPrototype&&(objectSetPrototypeOf?objectSetPrototypeOf(CurrentIteratorPrototype,IteratorPrototype):"function"!=typeof CurrentIteratorPrototype[ITERATOR$4]&&createNonEnumerableProperty(CurrentIteratorPrototype,ITERATOR$4,returnThis)),setToStringTag(CurrentIteratorPrototype,TO_STRING_TAG,!0))),DEFAULT==VALUES&&nativeIterator&&nativeIterator.name!==VALUES&&(INCORRECT_VALUES_NAME=!0,defaultIterator=function(){return nativeIterator.call(this)}),IterablePrototype[ITERATOR$4]!==defaultIterator&&createNonEnumerableProperty(IterablePrototype,ITERATOR$4,defaultIterator),iterators[NAME]=defaultIterator,DEFAULT)if(methods={values:getIterationMethod(VALUES),keys:IS_SET?defaultIterator:getIterationMethod(KEYS),entries:getIterationMethod(ENTRIES)},FORCED)for(KEY in methods)(BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME||!(KEY in IterablePrototype))&&redefine(IterablePrototype,KEY,methods[KEY]);else _export({target:NAME,proto:!0,forced:BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME},methods);return methods},charAt=stringMultibyte.charAt,STRING_ITERATOR="String Iterator",setInternalState$2=internalState.set,getInternalState$2=internalState.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(iterated){setInternalState$2(this,{type:STRING_ITERATOR,string:String(iterated),index:0})}),(function(){var point,state=getInternalState$2(this),string=state.string,index=state.index;return index>=string.length?{value:void 0,done:!0}:(point=charAt(string,index),state.index+=point.length,{value:point,done:!1})}));var aFunction=function(it){if("function"!=typeof it)throw TypeError(String(it)+" is not a function");return it},functionBindContext=function(fn,that,length){if(aFunction(fn),void 0===that)return fn;switch(length){case 0:return function(){return fn.call(that)};case 1:return function(a){return fn.call(that,a)};case 2:return function(a,b){return fn.call(that,a,b)};case 3:return function(a,b,c){return fn.call(that,a,b,c)}}return function(){return fn.apply(that,arguments)}},iteratorClose=function(iterator){var returnMethod=iterator.return;if(void 0!==returnMethod)return anObject(returnMethod.call(iterator)).value},callWithSafeIterationClosing=function(iterator,fn,value,ENTRIES){try{return ENTRIES?fn(anObject(value)[0],value[1]):fn(value)}catch(error){throw iteratorClose(iterator),error}},ITERATOR$3=wellKnownSymbol("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod=function(it){return void 0!==it&&(iterators.Array===it||ArrayPrototype$1[ITERATOR$3]===it)},createProperty=function(object,key,value){var propertyKey=toPrimitive(key);propertyKey in object?objectDefineProperty.f(object,propertyKey,createPropertyDescriptor(0,value)):object[propertyKey]=value},TO_STRING_TAG$2=wellKnownSymbol("toStringTag"),test={};test[TO_STRING_TAG$2]="z";var toStringTagSupport="[object z]"===String(test),TO_STRING_TAG$1=wellKnownSymbol("toStringTag"),CORRECT_ARGUMENTS="Arguments"==classofRaw(function(){return arguments}()),tryGet=function(it,key){try{return it[key]}catch(error){}},classof=toStringTagSupport?classofRaw:function(it){var O,tag,result;return void 0===it?"Undefined":null===it?"Null":"string"==typeof(tag=tryGet(O=Object(it),TO_STRING_TAG$1))?tag:CORRECT_ARGUMENTS?classofRaw(O):"Object"==(result=classofRaw(O))&&"function"==typeof O.callee?"Arguments":result},ITERATOR$2=wellKnownSymbol("iterator"),getIteratorMethod=function(it){if(null!=it)return it[ITERATOR$2]||it["@@iterator"]||iterators[classof(it)]},arrayFrom=function(arrayLike){var length,result,step,iterator,next,value,O=toObject(arrayLike),C="function"==typeof this?this:Array,argumentsLength=arguments.length,mapfn=argumentsLength>1?arguments[1]:void 0,mapping=void 0!==mapfn,iteratorMethod=getIteratorMethod(O),index=0;if(mapping&&(mapfn=functionBindContext(mapfn,argumentsLength>2?arguments[2]:void 0,2)),null==iteratorMethod||C==Array&&isArrayIteratorMethod(iteratorMethod))for(result=new C(length=toLength(O.length));length>index;index++)value=mapping?mapfn(O[index],index):O[index],createProperty(result,index,value);else for(next=(iterator=iteratorMethod.call(O)).next,result=new C;!(step=next.call(iterator)).done;index++)value=mapping?callWithSafeIterationClosing(iterator,mapfn,[step.value,index],!0):step.value,createProperty(result,index,value);return result.length=index,result},ITERATOR$1=wellKnownSymbol("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$1]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(error){}var checkCorrectnessOfIteration=function(exec,SKIP_CLOSING){if(!SKIP_CLOSING&&!SAFE_CLOSING)return!1;var ITERATION_SUPPORT=!1;try{var object={};object[ITERATOR$1]=function(){return{next:function(){return{done:ITERATION_SUPPORT=!0}}}},exec(object)}catch(error){}return ITERATION_SUPPORT},INCORRECT_ITERATION$1=!checkCorrectnessOfIteration((function(iterable){Array.from(iterable)}));_export({target:"Array",stat:!0,forced:INCORRECT_ITERATION$1},{from:arrayFrom}),path.Array.from;var UNSCOPABLES=wellKnownSymbol("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&objectDefineProperty.f(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:objectCreate(null)});var addToUnscopables=function(key){ArrayPrototype[UNSCOPABLES][key]=!0},$includes=arrayIncludes.includes;_export({target:"Array",proto:!0},{includes:function(el){return $includes(this,el,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables("includes");var call=Function.call,entryUnbind=function(CONSTRUCTOR,METHOD,length){return functionBindContext(call,global_1[CONSTRUCTOR].prototype[METHOD],length)};entryUnbind("Array","includes");var isArray=Array.isArray||function(arg){return"Array"==classofRaw(arg)},flattenIntoArray=function(target,original,source,sourceLen,start,depth,mapper,thisArg){for(var element,targetIndex=start,sourceIndex=0,mapFn=!!mapper&&functionBindContext(mapper,thisArg,3);sourceIndex<sourceLen;){if(sourceIndex in source){if(element=mapFn?mapFn(source[sourceIndex],sourceIndex,original):source[sourceIndex],depth>0&&isArray(element))targetIndex=flattenIntoArray(target,original,element,toLength(element.length),targetIndex,depth-1)-1;else{if(targetIndex>=9007199254740991)throw TypeError("Exceed the acceptable array length");target[targetIndex]=element}targetIndex++}sourceIndex++}return targetIndex},flattenIntoArray_1=flattenIntoArray,SPECIES$3=wellKnownSymbol("species"),arraySpeciesCreate=function(originalArray,length){var C;return isArray(originalArray)&&("function"!=typeof(C=originalArray.constructor)||C!==Array&&!isArray(C.prototype)?isObject(C)&&null===(C=C[SPECIES$3])&&(C=void 0):C=void 0),new(void 0===C?Array:C)(0===length?0:length)};_export({target:"Array",proto:!0},{flat:function(){var depthArg=arguments.length?arguments[0]:void 0,O=toObject(this),sourceLen=toLength(O.length),A=arraySpeciesCreate(O,0);return A.length=flattenIntoArray_1(A,O,O,sourceLen,0,void 0===depthArg?1:toInteger(depthArg)),A}}),addToUnscopables("flat"),entryUnbind("Array","flat");var push=[].push,createMethod$1=function(TYPE){var IS_MAP=1==TYPE,IS_FILTER=2==TYPE,IS_SOME=3==TYPE,IS_EVERY=4==TYPE,IS_FIND_INDEX=6==TYPE,IS_FILTER_OUT=7==TYPE,NO_HOLES=5==TYPE||IS_FIND_INDEX;return function($this,callbackfn,that,specificCreate){for(var value,result,O=toObject($this),self=indexedObject(O),boundFunction=functionBindContext(callbackfn,that,3),length=toLength(self.length),index=0,create=specificCreate||arraySpeciesCreate,target=IS_MAP?create($this,length):IS_FILTER||IS_FILTER_OUT?create($this,0):void 0;length>index;index++)if((NO_HOLES||index in self)&&(result=boundFunction(value=self[index],index,O),TYPE))if(IS_MAP)target[index]=result;else if(result)switch(TYPE){case 3:return!0;case 5:return value;case 6:return index;case 2:push.call(target,value)}else switch(TYPE){case 4:return!1;case 7:push.call(target,value)}return IS_FIND_INDEX?-1:IS_SOME||IS_EVERY?IS_EVERY:target}},arrayIteration={forEach:createMethod$1(0),map:createMethod$1(1),filter:createMethod$1(2),some:createMethod$1(3),every:createMethod$1(4),find:createMethod$1(5),findIndex:createMethod$1(6),filterOut:createMethod$1(7)},$find=arrayIteration.find,FIND="find",SKIPS_HOLES=!0;FIND in[]&&Array(1)[FIND]((function(){SKIPS_HOLES=!1})),_export({target:"Array",proto:!0,forced:SKIPS_HOLES},{find:function(callbackfn){return $find(this,callbackfn,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables(FIND),entryUnbind("Array","find");var $assign=Object.assign,defineProperty=Object.defineProperty,objectAssign=!$assign||fails((function(){if(descriptors&&1!==$assign({b:1},$assign(defineProperty({},"a",{enumerable:!0,get:function(){defineProperty(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var A={},B={},symbol=Symbol();return A[symbol]=7,"abcdefghijklmnopqrst".split("").forEach((function(chr){B[chr]=chr})),7!=$assign({},A)[symbol]||"abcdefghijklmnopqrst"!=objectKeys($assign({},B)).join("")}))?function(target,source){for(var T=toObject(target),argumentsLength=arguments.length,index=1,getOwnPropertySymbols=objectGetOwnPropertySymbols.f,propertyIsEnumerable=objectPropertyIsEnumerable.f;argumentsLength>index;)for(var key,S=indexedObject(arguments[index++]),keys=getOwnPropertySymbols?objectKeys(S).concat(getOwnPropertySymbols(S)):objectKeys(S),length=keys.length,j=0;length>j;)key=keys[j++],descriptors&&!propertyIsEnumerable.call(S,key)||(T[key]=S[key]);return T}:$assign;_export({target:"Object",stat:!0,forced:Object.assign!==objectAssign},{assign:objectAssign}),path.Object.assign;var propertyIsEnumerable=objectPropertyIsEnumerable.f,createMethod=function(TO_ENTRIES){return function(it){for(var key,O=toIndexedObject(it),keys=objectKeys(O),length=keys.length,i=0,result=[];length>i;)key=keys[i++],descriptors&&!propertyIsEnumerable.call(O,key)||result.push(TO_ENTRIES?[key,O[key]]:O[key]);return result}},objectToArray={entries:createMethod(!0),values:createMethod(!1)},$entries=objectToArray.entries;_export({target:"Object",stat:!0},{entries:function(O){return $entries(O)}}),path.Object.entries;var $values=objectToArray.values;_export({target:"Object",stat:!0},{values:function(O){return $values(O)}}),path.Object.values;var Result=function(stopped,result){this.stopped=stopped,this.result=result},iterate=function(iterable,unboundFunction,options){var iterator,iterFn,index,length,result,next,step,that=options&&options.that,AS_ENTRIES=!(!options||!options.AS_ENTRIES),IS_ITERATOR=!(!options||!options.IS_ITERATOR),INTERRUPTED=!(!options||!options.INTERRUPTED),fn=functionBindContext(unboundFunction,that,1+AS_ENTRIES+INTERRUPTED),stop=function(condition){return iterator&&iteratorClose(iterator),new Result(!0,condition)},callFn=function(value){return AS_ENTRIES?(anObject(value),INTERRUPTED?fn(value[0],value[1],stop):fn(value[0],value[1])):INTERRUPTED?fn(value,stop):fn(value)};if(IS_ITERATOR)iterator=iterable;else{if("function"!=typeof(iterFn=getIteratorMethod(iterable)))throw TypeError("Target is not iterable");if(isArrayIteratorMethod(iterFn)){for(index=0,length=toLength(iterable.length);length>index;index++)if((result=callFn(iterable[index]))&&result instanceof Result)return result;return new Result(!1)}iterator=iterFn.call(iterable)}for(next=iterator.next;!(step=next.call(iterator)).done;){try{result=callFn(step.value)}catch(error){throw iteratorClose(iterator),error}if("object"==typeof result&&result&&result instanceof Result)return result}return new Result(!1)},$AggregateError=function(errors,message){var that=this;if(!(that instanceof $AggregateError))return new $AggregateError(errors,message);objectSetPrototypeOf&&(that=objectSetPrototypeOf(new Error(void 0),objectGetPrototypeOf(that))),void 0!==message&&createNonEnumerableProperty(that,"message",String(message));var errorsArray=[];return iterate(errors,errorsArray.push,{that:errorsArray}),createNonEnumerableProperty(that,"errors",errorsArray),that};$AggregateError.prototype=objectCreate(Error.prototype,{constructor:createPropertyDescriptor(5,$AggregateError),message:createPropertyDescriptor(5,""),name:createPropertyDescriptor(5,"AggregateError")}),_export({global:!0},{AggregateError:$AggregateError});var objectToString=toStringTagSupport?{}.toString:function(){return"[object "+classof(this)+"]"};toStringTagSupport||redefine(Object.prototype,"toString",objectToString,{unsafe:!0});var nativePromiseConstructor=global_1.Promise,redefineAll=function(target,src,options){for(var key in src)redefine(target,key,src[key],options);return target},SPECIES$2=wellKnownSymbol("species"),setSpecies=function(CONSTRUCTOR_NAME){var Constructor=getBuiltIn(CONSTRUCTOR_NAME),defineProperty=objectDefineProperty.f;descriptors&&Constructor&&!Constructor[SPECIES$2]&&defineProperty(Constructor,SPECIES$2,{configurable:!0,get:function(){return this}})},anInstance=function(it,Constructor,name){if(!(it instanceof Constructor))throw TypeError("Incorrect "+(name?name+" ":"")+"invocation");return it},SPECIES$1=wellKnownSymbol("species"),speciesConstructor=function(O,defaultConstructor){var S,C=anObject(O).constructor;return void 0===C||null==(S=anObject(C)[SPECIES$1])?defaultConstructor:aFunction(S)},engineIsIos=/(?:iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent),engineIsNode="process"==classofRaw(global_1.process),location=global_1.location,set=global_1.setImmediate,clear=global_1.clearImmediate,process$2=global_1.process,MessageChannel=global_1.MessageChannel,Dispatch=global_1.Dispatch,counter=0,queue={},ONREADYSTATECHANGE="onreadystatechange",defer,channel,port,run=function(id){if(queue.hasOwnProperty(id)){var fn=queue[id];delete queue[id],fn()}},runner=function(id){return function(){run(id)}},listener=function(event){run(event.data)},post=function(id){global_1.postMessage(id+"",location.protocol+"//"+location.host)};set&&clear||(set=function(fn){for(var args=[],i=1;arguments.length>i;)args.push(arguments[i++]);return queue[++counter]=function(){("function"==typeof fn?fn:Function(fn)).apply(void 0,args)},defer(counter),counter},clear=function(id){delete queue[id]},engineIsNode?defer=function(id){process$2.nextTick(runner(id))}:Dispatch&&Dispatch.now?defer=function(id){Dispatch.now(runner(id))}:MessageChannel&&!engineIsIos?(channel=new MessageChannel,port=channel.port2,channel.port1.onmessage=listener,defer=functionBindContext(port.postMessage,port,1)):global_1.addEventListener&&"function"==typeof postMessage&&!global_1.importScripts&&location&&"file:"!==location.protocol&&!fails(post)?(defer=post,global_1.addEventListener("message",listener,!1)):defer=ONREADYSTATECHANGE in documentCreateElement("script")?function(id){html.appendChild(documentCreateElement("script"))[ONREADYSTATECHANGE]=function(){html.removeChild(this),run(id)}}:function(id){setTimeout(runner(id),0)});var task$1={set:set,clear:clear},engineIsWebosWebkit=/web0s(?!.*chrome)/i.test(engineUserAgent),getOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor.f,macrotask=task$1.set,MutationObserver=global_1.MutationObserver||global_1.WebKitMutationObserver,document$2=global_1.document,process$1=global_1.process,Promise$1=global_1.Promise,queueMicrotaskDescriptor=getOwnPropertyDescriptor$1(global_1,"queueMicrotask"),queueMicrotask=queueMicrotaskDescriptor&&queueMicrotaskDescriptor.value,flush,head,last,notify$1,toggle,node,promise,then;queueMicrotask||(flush=function(){var parent,fn;for(engineIsNode&&(parent=process$1.domain)&&parent.exit();head;){fn=head.fn,head=head.next;try{fn()}catch(error){throw head?notify$1():last=void 0,error}}last=void 0,parent&&parent.enter()},engineIsIos||engineIsNode||engineIsWebosWebkit||!MutationObserver||!document$2?Promise$1&&Promise$1.resolve?(promise=Promise$1.resolve(void 0),promise.constructor=Promise$1,then=promise.then,notify$1=function(){then.call(promise,flush)}):notify$1=engineIsNode?function(){process$1.nextTick(flush)}:function(){macrotask.call(global_1,flush)}:(toggle=!0,node=document$2.createTextNode(""),new MutationObserver(flush).observe(node,{characterData:!0}),notify$1=function(){node.data=toggle=!toggle}));var microtask=queueMicrotask||function(fn){var task={fn:fn,next:void 0};last&&(last.next=task),head||(head=task,notify$1()),last=task},PromiseCapability=function(C){var resolve,reject;this.promise=new C((function($$resolve,$$reject){if(void 0!==resolve||void 0!==reject)throw TypeError("Bad Promise constructor");resolve=$$resolve,reject=$$reject})),this.resolve=aFunction(resolve),this.reject=aFunction(reject)},f=function(C){return new PromiseCapability(C)},newPromiseCapability$1={f:f},promiseResolve=function(C,x){if(anObject(C),isObject(x)&&x.constructor===C)return x;var promiseCapability=newPromiseCapability$1.f(C);return(0,promiseCapability.resolve)(x),promiseCapability.promise},hostReportErrors=function(a,b){var console=global_1.console;console&&console.error&&(1===arguments.length?console.error(a):console.error(a,b))},perform=function(exec){try{return{error:!1,value:exec()}}catch(error){return{error:!0,value:error}}},engineIsBrowser="object"==typeof window,task=task$1.set,SPECIES=wellKnownSymbol("species"),PROMISE="Promise",getInternalState$1=internalState.get,setInternalState$1=internalState.set,getInternalPromiseState=internalState.getterFor(PROMISE),NativePromisePrototype=nativePromiseConstructor&&nativePromiseConstructor.prototype,PromiseConstructor=nativePromiseConstructor,PromiseConstructorPrototype=NativePromisePrototype,TypeError$1=global_1.TypeError,document$1=global_1.document,process=global_1.process,newPromiseCapability=newPromiseCapability$1.f,newGenericPromiseCapability=newPromiseCapability,DISPATCH_EVENT=!!(document$1&&document$1.createEvent&&global_1.dispatchEvent),NATIVE_REJECTION_EVENT="function"==typeof PromiseRejectionEvent,UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,SUBCLASSING=!1,Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,FORCED=isForced_1(PROMISE,(function(){var PROMISE_CONSTRUCTOR_SOURCE=inspectSource(PromiseConstructor),GLOBAL_CORE_JS_PROMISE=PROMISE_CONSTRUCTOR_SOURCE!==String(PromiseConstructor);if(!GLOBAL_CORE_JS_PROMISE&&66===engineV8Version)return!0;if(engineV8Version>=51&&/native code/.test(PROMISE_CONSTRUCTOR_SOURCE))return!1;var promise=new PromiseConstructor((function(resolve){resolve(1)})),FakePromise=function(exec){exec((function(){}),(function(){}))};return(promise.constructor={})[SPECIES]=FakePromise,!(SUBCLASSING=promise.then((function(){}))instanceof FakePromise)||!GLOBAL_CORE_JS_PROMISE&&engineIsBrowser&&!NATIVE_REJECTION_EVENT})),INCORRECT_ITERATION=FORCED||!checkCorrectnessOfIteration((function(iterable){PromiseConstructor.all(iterable).catch((function(){}))})),isThenable=function(it){var then;return!(!isObject(it)||"function"!=typeof(then=it.then))&&then},notify=function(state,isReject){if(!state.notified){state.notified=!0;var chain=state.reactions;microtask((function(){for(var value=state.value,ok=state.state==FULFILLED,index=0;chain.length>index;){var result,then,exited,reaction=chain[index++],handler=ok?reaction.ok:reaction.fail,resolve=reaction.resolve,reject=reaction.reject,domain=reaction.domain;try{handler?(ok||(state.rejection===UNHANDLED&&onHandleUnhandled(state),state.rejection=HANDLED),!0===handler?result=value:(domain&&domain.enter(),result=handler(value),domain&&(domain.exit(),exited=!0)),result===reaction.promise?reject(TypeError$1("Promise-chain cycle")):(then=isThenable(result))?then.call(result,resolve,reject):resolve(result)):reject(value)}catch(error){domain&&!exited&&domain.exit(),reject(error)}}state.reactions=[],state.notified=!1,isReject&&!state.rejection&&onUnhandled(state)}))}},dispatchEvent=function(name,promise,reason){var event,handler;DISPATCH_EVENT?((event=document$1.createEvent("Event")).promise=promise,event.reason=reason,event.initEvent(name,!1,!0),global_1.dispatchEvent(event)):event={promise:promise,reason:reason},!NATIVE_REJECTION_EVENT&&(handler=global_1["on"+name])?handler(event):name===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",reason)},onUnhandled=function(state){task.call(global_1,(function(){var result,promise=state.facade,value=state.value;if(isUnhandled(state)&&(result=perform((function(){engineIsNode?process.emit("unhandledRejection",value,promise):dispatchEvent(UNHANDLED_REJECTION,promise,value)})),state.rejection=engineIsNode||isUnhandled(state)?UNHANDLED:HANDLED,result.error))throw result.value}))},isUnhandled=function(state){return state.rejection!==HANDLED&&!state.parent},onHandleUnhandled=function(state){task.call(global_1,(function(){var promise=state.facade;engineIsNode?process.emit("rejectionHandled",promise):dispatchEvent(REJECTION_HANDLED,promise,state.value)}))},bind=function(fn,state,unwrap){return function(value){fn(state,value,unwrap)}},internalReject=function(state,value,unwrap){state.done||(state.done=!0,unwrap&&(state=unwrap),state.value=value,state.state=REJECTED,notify(state,!0))},internalResolve=function(state,value,unwrap){if(!state.done){state.done=!0,unwrap&&(state=unwrap);try{if(state.facade===value)throw TypeError$1("Promise can't be resolved itself");var then=isThenable(value);then?microtask((function(){var wrapper={done:!1};try{then.call(value,bind(internalResolve,wrapper,state),bind(internalReject,wrapper,state))}catch(error){internalReject(wrapper,error,state)}})):(state.value=value,state.state=FULFILLED,notify(state,!1))}catch(error){internalReject({done:!1},error,state)}}};if(FORCED&&(PromiseConstructor=function(executor){anInstance(this,PromiseConstructor,PROMISE),aFunction(executor),Internal.call(this);var state=getInternalState$1(this);try{executor(bind(internalResolve,state),bind(internalReject,state))}catch(error){internalReject(state,error)}},PromiseConstructorPrototype=PromiseConstructor.prototype,Internal=function(executor){setInternalState$1(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:PENDING,value:void 0})},Internal.prototype=redefineAll(PromiseConstructorPrototype,{then:function(onFulfilled,onRejected){var state=getInternalPromiseState(this),reaction=newPromiseCapability(speciesConstructor(this,PromiseConstructor));return reaction.ok="function"!=typeof onFulfilled||onFulfilled,reaction.fail="function"==typeof onRejected&&onRejected,reaction.domain=engineIsNode?process.domain:void 0,state.parent=!0,state.reactions.push(reaction),state.state!=PENDING&&notify(state,!1),reaction.promise},catch:function(onRejected){return this.then(void 0,onRejected)}}),OwnPromiseCapability=function(){var promise=new Internal,state=getInternalState$1(promise);this.promise=promise,this.resolve=bind(internalResolve,state),this.reject=bind(internalReject,state)},newPromiseCapability$1.f=newPromiseCapability=function(C){return C===PromiseConstructor||C===PromiseWrapper?new OwnPromiseCapability(C):newGenericPromiseCapability(C)},"function"==typeof nativePromiseConstructor&&NativePromisePrototype!==Object.prototype)){nativeThen=NativePromisePrototype.then,SUBCLASSING||(redefine(NativePromisePrototype,"then",(function(onFulfilled,onRejected){var that=this;return new PromiseConstructor((function(resolve,reject){nativeThen.call(that,resolve,reject)})).then(onFulfilled,onRejected)}),{unsafe:!0}),redefine(NativePromisePrototype,"catch",PromiseConstructorPrototype.catch,{unsafe:!0}));try{delete NativePromisePrototype.constructor}catch(error){}objectSetPrototypeOf&&objectSetPrototypeOf(NativePromisePrototype,PromiseConstructorPrototype)}_export({global:!0,wrap:!0,forced:FORCED},{Promise:PromiseConstructor}),setToStringTag(PromiseConstructor,PROMISE,!1),setSpecies(PROMISE),PromiseWrapper=getBuiltIn(PROMISE),_export({target:PROMISE,stat:!0,forced:FORCED},{reject:function(r){var capability=newPromiseCapability(this);return capability.reject.call(void 0,r),capability.promise}}),_export({target:PROMISE,stat:!0,forced:FORCED},{resolve:function(x){return promiseResolve(this,x)}}),_export({target:PROMISE,stat:!0,forced:INCORRECT_ITERATION},{all:function(iterable){var C=this,capability=newPromiseCapability(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var $promiseResolve=aFunction(C.resolve),values=[],counter=0,remaining=1;iterate(iterable,(function(promise){var index=counter++,alreadyCalled=!1;values.push(void 0),remaining++,$promiseResolve.call(C,promise).then((function(value){alreadyCalled||(alreadyCalled=!0,values[index]=value,--remaining||resolve(values))}),reject)})),--remaining||resolve(values)}));return result.error&&reject(result.value),capability.promise},race:function(iterable){var C=this,capability=newPromiseCapability(C),reject=capability.reject,result=perform((function(){var $promiseResolve=aFunction(C.resolve);iterate(iterable,(function(promise){$promiseResolve.call(C,promise).then(capability.resolve,reject)}))}));return result.error&&reject(result.value),capability.promise}}),_export({target:"Promise",stat:!0},{allSettled:function(iterable){var C=this,capability=newPromiseCapability$1.f(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var promiseResolve=aFunction(C.resolve),values=[],counter=0,remaining=1;iterate(iterable,(function(promise){var index=counter++,alreadyCalled=!1;values.push(void 0),remaining++,promiseResolve.call(C,promise).then((function(value){alreadyCalled||(alreadyCalled=!0,values[index]={status:"fulfilled",value:value},--remaining||resolve(values))}),(function(error){alreadyCalled||(alreadyCalled=!0,values[index]={status:"rejected",reason:error},--remaining||resolve(values))}))})),--remaining||resolve(values)}));return result.error&&reject(result.value),capability.promise}});var PROMISE_ANY_ERROR="No one promise resolved";_export({target:"Promise",stat:!0},{any:function(iterable){var C=this,capability=newPromiseCapability$1.f(C),resolve=capability.resolve,reject=capability.reject,result=perform((function(){var promiseResolve=aFunction(C.resolve),errors=[],counter=0,remaining=1,alreadyResolved=!1;iterate(iterable,(function(promise){var index=counter++,alreadyRejected=!1;errors.push(void 0),remaining++,promiseResolve.call(C,promise).then((function(value){alreadyRejected||alreadyResolved||(alreadyResolved=!0,resolve(value))}),(function(error){alreadyRejected||alreadyResolved||(alreadyRejected=!0,errors[index]=error,--remaining||reject(new(getBuiltIn("AggregateError"))(errors,PROMISE_ANY_ERROR)))}))})),--remaining||reject(new(getBuiltIn("AggregateError"))(errors,PROMISE_ANY_ERROR))}));return result.error&&reject(result.value),capability.promise}});var NON_GENERIC=!!nativePromiseConstructor&&fails((function(){nativePromiseConstructor.prototype.finally.call({then:function(){}},(function(){}))}));if(_export({target:"Promise",proto:!0,real:!0,forced:NON_GENERIC},{finally:function(onFinally){var C=speciesConstructor(this,getBuiltIn("Promise")),isFunction="function"==typeof onFinally;return this.then(isFunction?function(x){return promiseResolve(C,onFinally()).then((function(){return x}))}:onFinally,isFunction?function(e){return promiseResolve(C,onFinally()).then((function(){throw e}))}:onFinally)}}),"function"==typeof nativePromiseConstructor){var method=getBuiltIn("Promise").prototype.finally;nativePromiseConstructor.prototype.finally!==method&&redefine(nativePromiseConstructor.prototype,"finally",method,{unsafe:!0})}var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ARRAY_ITERATOR="Array Iterator",setInternalState=internalState.set,getInternalState=internalState.getterFor(ARRAY_ITERATOR),es_array_iterator=defineIterator(Array,"Array",(function(iterated,kind){setInternalState(this,{type:ARRAY_ITERATOR,target:toIndexedObject(iterated),index:0,kind:kind})}),(function(){var state=getInternalState(this),target=state.target,kind=state.kind,index=state.index++;return!target||index>=target.length?(state.target=void 0,{value:void 0,done:!0}):"keys"==kind?{value:index,done:!1}:"values"==kind?{value:target[index],done:!1}:{value:[index,target[index]],done:!1}}),"values");iterators.Arguments=iterators.Array,addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries");var ITERATOR=wellKnownSymbol("iterator"),TO_STRING_TAG=wellKnownSymbol("toStringTag"),ArrayValues=es_array_iterator.values;for(var COLLECTION_NAME in domIterables){var Collection=global_1[COLLECTION_NAME],CollectionPrototype=Collection&&Collection.prototype;if(CollectionPrototype){if(CollectionPrototype[ITERATOR]!==ArrayValues)try{createNonEnumerableProperty(CollectionPrototype,ITERATOR,ArrayValues)}catch(error){CollectionPrototype[ITERATOR]=ArrayValues}if(CollectionPrototype[TO_STRING_TAG]||createNonEnumerableProperty(CollectionPrototype,TO_STRING_TAG,COLLECTION_NAME),domIterables[COLLECTION_NAME])for(var METHOD_NAME in es_array_iterator)if(CollectionPrototype[METHOD_NAME]!==es_array_iterator[METHOD_NAME])try{createNonEnumerableProperty(CollectionPrototype,METHOD_NAME,es_array_iterator[METHOD_NAME])}catch(error){CollectionPrototype[METHOD_NAME]=es_array_iterator[METHOD_NAME]}}}path.Promise,_export({target:"Promise",stat:!0},{try:function(callbackfn){var promiseCapability=newPromiseCapability$1.f(this),result=perform(callbackfn);return(result.error?promiseCapability.reject:promiseCapability.resolve)(result.value),promiseCapability.promise}});var MATCH$1=wellKnownSymbol("match"),isRegexp=function(it){var isRegExp;return isObject(it)&&(void 0!==(isRegExp=it[MATCH$1])?!!isRegExp:"RegExp"==classofRaw(it))},notARegexp=function(it){if(isRegexp(it))throw TypeError("The method doesn't accept regular expressions");return it},MATCH=wellKnownSymbol("match"),correctIsRegexpLogic=function(METHOD_NAME){var regexp=/./;try{"/./"[METHOD_NAME](regexp)}catch(error1){try{return regexp[MATCH]=!1,"/./"[METHOD_NAME](regexp)}catch(error2){}}return!1},getOwnPropertyDescriptor=objectGetOwnPropertyDescriptor.f,$startsWith="".startsWith,min=Math.min,CORRECT_IS_REGEXP_LOGIC=correctIsRegexpLogic("startsWith"),MDN_POLYFILL_BUG=!(CORRECT_IS_REGEXP_LOGIC||(descriptor=getOwnPropertyDescriptor(String.prototype,"startsWith"),!descriptor||descriptor.writable)),descriptor;_export({target:"String",proto:!0,forced:!MDN_POLYFILL_BUG&&!CORRECT_IS_REGEXP_LOGIC},{startsWith:function(searchString){var that=String(requireObjectCoercible(this));notARegexp(searchString);var index=toLength(min(arguments.length>1?arguments[1]:void 0,that.length)),search=String(searchString);return $startsWith?$startsWith.call(that,search,index):that.slice(index,index+search.length)===search}}),entryUnbind("String","startsWith");var global$1="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==global$1&&global$1,support={searchParams:"URLSearchParams"in global$1,iterable:"Symbol"in global$1&&"iterator"in Symbol,blob:"FileReader"in global$1&&"Blob"in global$1&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in global$1,arrayBuffer:"ArrayBuffer"in global$1};function isDataView(obj){return obj&&DataView.prototype.isPrototypeOf(obj)}if(support.arrayBuffer)var viewClasses=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],isArrayBufferView=ArrayBuffer.isView||function(obj){return obj&&viewClasses.indexOf(Object.prototype.toString.call(obj))>-1};function normalizeName(name){if("string"!=typeof name&&(name=String(name)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name)||""===name)throw new TypeError('Invalid character in header field name: "'+name+'"');return name.toLowerCase()}function normalizeValue(value){return"string"!=typeof value&&(value=String(value)),value}function iteratorFor(items){var iterator={next:function(){var value=items.shift();return{done:void 0===value,value:value}}};return support.iterable&&(iterator[Symbol.iterator]=function(){return iterator}),iterator}function Headers(headers){this.map={},headers instanceof Headers?headers.forEach((function(value,name){this.append(name,value)}),this):Array.isArray(headers)?headers.forEach((function(header){this.append(header[0],header[1])}),this):headers&&Object.getOwnPropertyNames(headers).forEach((function(name){this.append(name,headers[name])}),this)}function consumed(body){if(body.bodyUsed)return Promise.reject(new TypeError("Already read"));body.bodyUsed=!0}function fileReaderReady(reader){return new Promise((function(resolve,reject){reader.onload=function(){resolve(reader.result)},reader.onerror=function(){reject(reader.error)}}))}function readBlobAsArrayBuffer(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsArrayBuffer(blob),promise}function readBlobAsText(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsText(blob),promise}function readArrayBufferAsText(buf){for(var view=new Uint8Array(buf),chars=new Array(view.length),i=0;i<view.length;i++)chars[i]=String.fromCharCode(view[i]);return chars.join("")}function bufferClone(buf){if(buf.slice)return buf.slice(0);var view=new Uint8Array(buf.byteLength);return view.set(new Uint8Array(buf)),view.buffer}function Body(){return this.bodyUsed=!1,this._initBody=function(body){this.bodyUsed=this.bodyUsed,this._bodyInit=body,body?"string"==typeof body?this._bodyText=body:support.blob&&Blob.prototype.isPrototypeOf(body)?this._bodyBlob=body:support.formData&&FormData.prototype.isPrototypeOf(body)?this._bodyFormData=body:support.searchParams&&URLSearchParams.prototype.isPrototypeOf(body)?this._bodyText=body.toString():support.arrayBuffer&&support.blob&&isDataView(body)?(this._bodyArrayBuffer=bufferClone(body.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):support.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(body)||isArrayBufferView(body))?this._bodyArrayBuffer=bufferClone(body):this._bodyText=body=Object.prototype.toString.call(body):this._bodyText="",this.headers.get("content-type")||("string"==typeof body?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):support.searchParams&&URLSearchParams.prototype.isPrototypeOf(body)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},support.blob&&(this.blob=function(){var rejected=consumed(this);if(rejected)return rejected;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var isConsumed=consumed(this);return isConsumed||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}return this.blob().then(readBlobAsArrayBuffer)}),this.text=function(){var rejected=consumed(this);if(rejected)return rejected;if(this._bodyBlob)return readBlobAsText(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},support.formData&&(this.formData=function(){return this.text().then(decode)}),this.json=function(){return this.text().then(JSON.parse)},this}Headers.prototype.append=function(name,value){name=normalizeName(name),value=normalizeValue(value);var oldValue=this.map[name];this.map[name]=oldValue?oldValue+", "+value:value},Headers.prototype.delete=function(name){delete this.map[normalizeName(name)]},Headers.prototype.get=function(name){return name=normalizeName(name),this.has(name)?this.map[name]:null},Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))},Headers.prototype.set=function(name,value){this.map[normalizeName(name)]=normalizeValue(value)},Headers.prototype.forEach=function(callback,thisArg){for(var name in this.map)this.map.hasOwnProperty(name)&&callback.call(thisArg,this.map[name],name,this)},Headers.prototype.keys=function(){var items=[];return this.forEach((function(value,name){items.push(name)})),iteratorFor(items)},Headers.prototype.values=function(){var items=[];return this.forEach((function(value){items.push(value)})),iteratorFor(items)},Headers.prototype.entries=function(){var items=[];return this.forEach((function(value,name){items.push([name,value])})),iteratorFor(items)},support.iterable&&(Headers.prototype[Symbol.iterator]=Headers.prototype.entries);var methods=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function normalizeMethod(method){var upcased=method.toUpperCase();return methods.indexOf(upcased)>-1?upcased:method}function Request(input,options){if(!(this instanceof Request))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var body=(options=options||{}).body;if(input instanceof Request){if(input.bodyUsed)throw new TypeError("Already read");this.url=input.url,this.credentials=input.credentials,options.headers||(this.headers=new Headers(input.headers)),this.method=input.method,this.mode=input.mode,this.signal=input.signal,body||null==input._bodyInit||(body=input._bodyInit,input.bodyUsed=!0)}else this.url=String(input);if(this.credentials=options.credentials||this.credentials||"same-origin",!options.headers&&this.headers||(this.headers=new Headers(options.headers)),this.method=normalizeMethod(options.method||this.method||"GET"),this.mode=options.mode||this.mode||null,this.signal=options.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&body)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(body),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==options.cache&&"no-cache"!==options.cache)){var reParamSearch=/([?&])_=[^&]*/;if(reParamSearch.test(this.url))this.url=this.url.replace(reParamSearch,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function decode(body){var form=new FormData;return body.trim().split("&").forEach((function(bytes){if(bytes){var split=bytes.split("="),name=split.shift().replace(/\+/g," "),value=split.join("=").replace(/\+/g," ");form.append(decodeURIComponent(name),decodeURIComponent(value))}})),form}function parseHeaders(rawHeaders){var headers=new Headers;return rawHeaders.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(header){return 0===header.indexOf("\n")?header.substr(1,header.length):header})).forEach((function(line){var parts=line.split(":"),key=parts.shift().trim();if(key){var value=parts.join(":").trim();headers.append(key,value)}})),headers}function Response(bodyInit,options){if(!(this instanceof Response))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');options||(options={}),this.type="default",this.status=void 0===options.status?200:options.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===options.statusText?"":""+options.statusText,this.headers=new Headers(options.headers),this.url=options.url||"",this._initBody(bodyInit)}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var response=new Response(null,{status:0,statusText:""});return response.type="error",response};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(url,status){if(-1===redirectStatuses.indexOf(status))throw new RangeError("Invalid status code");return new Response(null,{status:status,headers:{location:url}})};var DOMException=global$1.DOMException;try{new DOMException}catch(err){DOMException=function(message,name){this.message=message,this.name=name;var error=Error(message);this.stack=error.stack},DOMException.prototype=Object.create(Error.prototype),DOMException.prototype.constructor=DOMException}function fetch$1(input,init){return new Promise((function(resolve,reject){var request=new Request(input,init);if(request.signal&&request.signal.aborted)return reject(new DOMException("Aborted","AbortError"));var xhr=new XMLHttpRequest;function abortXhr(){xhr.abort()}xhr.onload=function(){var options={status:xhr.status,statusText:xhr.statusText,headers:parseHeaders(xhr.getAllResponseHeaders()||"")};options.url="responseURL"in xhr?xhr.responseURL:options.headers.get("X-Request-URL");var body="response"in xhr?xhr.response:xhr.responseText;setTimeout((function(){resolve(new Response(body,options))}),0)},xhr.onerror=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.ontimeout=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.onabort=function(){setTimeout((function(){reject(new DOMException("Aborted","AbortError"))}),0)},xhr.open(request.method,function(url){try{return""===url&&global$1.location.href?global$1.location.href:url}catch(e){return url}}(request.url),!0),"include"===request.credentials?xhr.withCredentials=!0:"omit"===request.credentials&&(xhr.withCredentials=!1),"responseType"in xhr&&(support.blob?xhr.responseType="blob":support.arrayBuffer&&request.headers.get("Content-Type")&&-1!==request.headers.get("Content-Type").indexOf("application/octet-stream")&&(xhr.responseType="arraybuffer")),!init||"object"!=typeof init.headers||init.headers instanceof Headers?request.headers.forEach((function(value,name){xhr.setRequestHeader(name,value)})):Object.getOwnPropertyNames(init.headers).forEach((function(name){xhr.setRequestHeader(name,normalizeValue(init.headers[name]))})),request.signal&&(request.signal.addEventListener("abort",abortXhr),xhr.onreadystatechange=function(){4===xhr.readyState&&request.signal.removeEventListener("abort",abortXhr)}),xhr.send(void 0===request._bodyInit?null:request._bodyInit)}))}fetch$1.polyfill=!0,global$1.fetch||(global$1.fetch=fetch$1,global$1.Headers=Headers,global$1.Request=Request,global$1.Response=Response),null==Element.prototype.getAttributeNames&&(Element.prototype.getAttributeNames=function(){for(var attributes=this.attributes,length=attributes.length,result=new Array(length),i=0;i<length;i++)result[i]=attributes[i].name;return result}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(s){for(var matches=(this.document||this.ownerDocument).querySelectorAll(s),i=matches.length;--i>=0&&matches.item(i)!==this;);return i>-1}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(s){var el=this;do{if(el.matches(s))return el;el=el.parentElement||el.parentNode}while(null!==el&&1===el.nodeType);return null});var Connection=function(){function Connection(){_classCallCheck(this,Connection),this.headers={}}return _createClass(Connection,[{key:"onMessage",value:function(message,payload){message.component.receiveMessage(message,payload)}},{key:"onError",value:function(message,status,response){return message.component.messageSendFailed(),store$2.onErrorCallback(status,response)}},{key:"showExpiredMessage",value:function(response,message){store$2.sessionHasExpiredCallback?store$2.sessionHasExpiredCallback(response,message):confirm("This page has expired.\nWould you like to refresh the page?")&&window.location.reload()}},{key:"sendMessage",value:function(message){var _this=this,payload=message.payload(),csrfToken=getCsrfToken(),socketId=this.getSocketId();if(window.__testing_request_interceptor)return window.__testing_request_interceptor(payload,this);fetch("".concat(window.livewire_app_url,"/livewire/message/").concat(payload.fingerprint.name),{method:"POST",body:JSON.stringify(payload),credentials:"same-origin",headers:_objectSpread2(_objectSpread2(_objectSpread2({"Content-Type":"application/json",Accept:"text/html, application/xhtml+xml","X-Livewire":!0},this.headers),{},{Referer:window.location.href},csrfToken&&{"X-CSRF-TOKEN":csrfToken}),socketId&&{"X-Socket-ID":socketId})}).then((function(response){if(response.ok)response.text().then((function(response){_this.isOutputFromDump(response)?(_this.onError(message),_this.showHtmlModal(response)):_this.onMessage(message,JSON.parse(response))}));else{if(!1===_this.onError(message,response.status,response))return;if(419===response.status){if(store$2.sessionHasExpired)return;store$2.sessionHasExpired=!0,_this.showExpiredMessage(response,message)}else response.text().then((function(response){_this.showHtmlModal(response)}))}})).catch((function(){_this.onError(message)}))}},{key:"isOutputFromDump",value:function(output){return!!output.match(/<script>Sfdump\(".+"\)<\/script>/)}},{key:"getSocketId",value:function(){if("undefined"!=typeof Echo)return Echo.socketId()}},{key:"showHtmlModal",value:function(html){var _this2=this,page=document.createElement("html");page.innerHTML=html,page.querySelectorAll("a").forEach((function(a){return a.setAttribute("target","_top")}));var modal=document.getElementById("livewire-error");void 0!==modal&&null!=modal?modal.innerHTML="":((modal=document.createElement("div")).id="livewire-error",modal.style.position="fixed",modal.style.width="100vw",modal.style.height="100vh",modal.style.padding="50px",modal.style.backgroundColor="rgba(0, 0, 0, .6)",modal.style.zIndex=2e5);var iframe=document.createElement("iframe");iframe.style.backgroundColor="#17161A",iframe.style.borderRadius="5px",iframe.style.width="100%",iframe.style.height="100%",modal.appendChild(iframe),document.body.prepend(modal),document.body.style.overflow="hidden",iframe.contentWindow.document.open(),iframe.contentWindow.document.write(page.outerHTML),iframe.contentWindow.document.close(),modal.addEventListener("click",(function(){return _this2.hideHtmlModal(modal)})),modal.setAttribute("tabindex",0),modal.addEventListener("keydown",(function(e){"Escape"===e.key&&_this2.hideHtmlModal(modal)})),modal.focus()}},{key:"hideHtmlModal",value:function(modal){modal.outerHTML="",document.body.style.overflow="visible"}}]),Connection}(),_default$4=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(method,params,el){var _this,skipWatcher=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return _classCallCheck(this,_default),(_this=_super.call(this,el,skipWatcher)).type="callMethod",_this.method=method,_this.payload={id:_this.signature,method:method,params:params},_this}return _default}(_default$6);function Polling(){store$2.registerHook("element.initialized",(function(el,component){if(!wireDirectives(el).missing("poll")){var intervalId=fireActionOnInterval(el,component);component.addListenerForTeardown((function(){clearInterval(intervalId)})),el.__livewire_polling_interval=intervalId}})),store$2.registerHook("element.updating",(function(from,to,component){void 0===from.__livewire_polling_interval&&wireDirectives(from).missing("poll")&&wireDirectives(to).has("poll")&&setTimeout((function(){var intervalId=fireActionOnInterval(from,component);component.addListenerForTeardown((function(){clearInterval(intervalId)})),from.__livewire_polling_interval=intervalId}),0)}))}function fireActionOnInterval(node,component){var interval=wireDirectives(node).get("poll").durationOr(2e3);return setInterval((function(){if(!1!==node.isConnected){var directives=wireDirectives(node);if(!directives.missing("poll")){var directive=directives.get("poll"),method=directive.method||"$refresh";store$2.livewireIsInBackground&&!directive.modifiers.includes("keep-alive")&&Math.random()<.95||directive.modifiers.includes("visible")&&!inViewport(directive.el)||store$2.livewireIsOffline||component.addAction(new _default$4(method,directive.params,node))}}}),interval)}function inViewport(el){var bounding=el.getBoundingClientRect();return bounding.top<(window.innerHeight||document.documentElement.clientHeight)&&bounding.left<(window.innerWidth||document.documentElement.clientWidth)&&bounding.bottom>0&&bounding.right>0}var _default$3=function(){function _default(component,updateQueue){_classCallCheck(this,_default),this.component=component,this.updateQueue=updateQueue}return _createClass(_default,[{key:"payload",value:function(){return{fingerprint:this.component.fingerprint,serverMemo:this.component.serverMemo,updates:this.updateQueue.map((function(update){return{type:update.type,payload:update.payload}}))}}},{key:"shouldSkipWatcherForDataKey",value:function(dataKey){if(this.response.effects.dirty.includes(dataKey))return!1;return this.updateQueue.filter((function(update){return subject=update.name,value=dataKey,"string"==typeof subject&&"string"==typeof value&&subject.split(".")[0]===value.split(".")[0];var subject,value})).some((function(update){return update.skipWatcher}))}},{key:"storeResponse",value:function(payload){return this.response=payload}},{key:"resolve",value:function(){var returns=this.response.effects.returns||[];this.updateQueue.forEach((function(update){"callMethod"===update.type&&update.resolve(void 0!==returns[update.signature]?returns[update.signature]:void 0!==returns[update.method]?returns[update.method]:null)}))}},{key:"reject",value:function(){this.updateQueue.forEach((function(update){update.reject()}))}}]),_default}(),_default$2=function(_Message){_inherits(_default,_Message);var _super=_createSuper(_default);function _default(component,action){return _classCallCheck(this,_default),_super.call(this,component,[action])}return _createClass(_default,[{key:"prefetchId",get:function(){return this.updateQueue[0].toId()}}]),_default}(_default$3);function morphAttrs(fromNode,toNode){if((void 0===fromNode._x_isShown||void 0===toNode._x_isShown)&&(!fromNode._x_isShown||toNode._x_isShown)&&(fromNode._x_isShown||!toNode._x_isShown)){var i,attr,attrName,attrNamespaceURI,attrValue,attrs=toNode.attributes;for(i=attrs.length-1;i>=0;--i)attrName=(attr=attrs[i]).name,attrNamespaceURI=attr.namespaceURI,attrValue=attr.value,attrNamespaceURI?(attrName=attr.localName||attrName,fromNode.getAttributeNS(attrNamespaceURI,attrName)!==attrValue&&("xmlns"===attr.prefix&&(attrName=attr.name),fromNode.setAttributeNS(attrNamespaceURI,attrName,attrValue))):fromNode.getAttribute(attrName)!==attrValue&&fromNode.setAttribute(attrName,attrValue);for(i=(attrs=fromNode.attributes).length-1;i>=0;--i)!1!==(attr=attrs[i]).specified&&(attrName=attr.name,(attrNamespaceURI=attr.namespaceURI)?(attrName=attr.localName||attrName,toNode.hasAttributeNS(attrNamespaceURI,attrName)||fromNode.removeAttributeNS(attrNamespaceURI,attrName)):toNode.hasAttribute(attrName)||fromNode.removeAttribute(attrName))}}function syncBooleanAttrProp(fromEl,toEl,name){fromEl[name]!==toEl[name]&&(fromEl[name]=toEl[name],fromEl[name]?fromEl.setAttribute(name,""):fromEl.removeAttribute(name))}var specialElHandlers={OPTION:function(fromEl,toEl){var parentNode=fromEl.parentNode;if(parentNode){var parentName=parentNode.nodeName.toUpperCase();"OPTGROUP"===parentName&&(parentName=(parentNode=parentNode.parentNode)&&parentNode.nodeName.toUpperCase()),"SELECT"!==parentName||parentNode.hasAttribute("multiple")||(fromEl.hasAttribute("selected")&&!toEl.selected&&(fromEl.setAttribute("selected","selected"),fromEl.removeAttribute("selected")),parentNode.selectedIndex=-1)}syncBooleanAttrProp(fromEl,toEl,"selected")},INPUT:function(fromEl,toEl){syncBooleanAttrProp(fromEl,toEl,"checked"),syncBooleanAttrProp(fromEl,toEl,"disabled"),fromEl.value!==toEl.value&&(fromEl.value=toEl.value),toEl.hasAttribute("value")||fromEl.removeAttribute("value")},TEXTAREA:function(fromEl,toEl){var newValue=toEl.value;fromEl.value!==newValue&&(fromEl.value=newValue);var firstChild=fromEl.firstChild;if(firstChild){var oldValue=firstChild.nodeValue;if(oldValue==newValue||!newValue&&oldValue==fromEl.placeholder)return;firstChild.nodeValue=newValue}},SELECT:function(fromEl,toEl){if(!toEl.hasAttribute("multiple")){for(var optgroup,nodeName,selectedIndex=-1,i=0,curChild=fromEl.firstChild;curChild;)if("OPTGROUP"===(nodeName=curChild.nodeName&&curChild.nodeName.toUpperCase()))curChild=(optgroup=curChild).firstChild;else{if("OPTION"===nodeName){if(curChild.hasAttribute("selected")){selectedIndex=i;break}i++}!(curChild=curChild.nextSibling)&&optgroup&&(curChild=optgroup.nextSibling,optgroup=null)}fromEl.selectedIndex=selectedIndex}}},range,NS_XHTML="http://www.w3.org/1999/xhtml",doc="undefined"==typeof document?void 0:document,HAS_TEMPLATE_SUPPORT=!!doc&&"content"in doc.createElement("template"),HAS_RANGE_SUPPORT=!!doc&&doc.createRange&&"createContextualFragment"in doc.createRange();function createFragmentFromTemplate(str){var template=doc.createElement("template");return template.innerHTML=str,template.content.childNodes[0]}function createFragmentFromRange(str){return range||(range=doc.createRange()).selectNode(doc.body),range.createContextualFragment(str).childNodes[0]}function createFragmentFromWrap(str){var fragment=doc.createElement("body");return fragment.innerHTML=str,fragment.childNodes[0]}function toElement(str){return str=str.trim(),HAS_TEMPLATE_SUPPORT?createFragmentFromTemplate(str):HAS_RANGE_SUPPORT?createFragmentFromRange(str):createFragmentFromWrap(str)}function compareNodeNames(fromEl,toEl){var fromNodeName=fromEl.nodeName,toNodeName=toEl.nodeName;return fromNodeName===toNodeName||!!(toEl.actualize&&fromNodeName.charCodeAt(0)<91&&toNodeName.charCodeAt(0)>90)&&fromNodeName===toNodeName.toUpperCase()}function createElementNS(name,namespaceURI){return namespaceURI&&namespaceURI!==NS_XHTML?doc.createElementNS(namespaceURI,name):doc.createElement(name)}function moveChildren(fromEl,toEl){for(var curChild=fromEl.firstChild;curChild;){var nextChild=curChild.nextSibling;toEl.appendChild(curChild),curChild=nextChild}return toEl}var ELEMENT_NODE=1,DOCUMENT_FRAGMENT_NODE=11,TEXT_NODE=3,COMMENT_NODE=8;function noop(){}function defaultGetNodeKey(node){return node.id}function callHook(hook){"getNodeKey"!==hook.name&&hook.name;for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];if("function"==typeof params[0].hasAttribute)return hook.apply(void 0,params)}function morphdomFactory(morphAttrs){return function(fromNode,toNode,options){if(options||(options={}),"string"==typeof toNode)if("#document"===fromNode.nodeName||"HTML"===fromNode.nodeName){var toNodeHtml=toNode;(toNode=doc.createElement("html")).innerHTML=toNodeHtml}else toNode=toElement(toNode);var getNodeKey=options.getNodeKey||defaultGetNodeKey,onBeforeNodeAdded=options.onBeforeNodeAdded||noop,onNodeAdded=options.onNodeAdded||noop,onBeforeElUpdated=options.onBeforeElUpdated||noop,onElUpdated=options.onElUpdated||noop,onBeforeNodeDiscarded=options.onBeforeNodeDiscarded||noop,onNodeDiscarded=options.onNodeDiscarded||noop,onBeforeElChildrenUpdated=options.onBeforeElChildrenUpdated||noop,childrenOnly=!0===options.childrenOnly,fromNodesLookup=Object.create(null),keyedRemovalList=[];function addKeyedRemoval(key){keyedRemovalList.push(key)}function walkDiscardedChildNodes(node,skipKeyedNodes){if(node.nodeType===ELEMENT_NODE)for(var curChild=node.firstChild;curChild;){var key=void 0;skipKeyedNodes&&(key=callHook(getNodeKey,curChild))?addKeyedRemoval(key):(callHook(onNodeDiscarded,curChild),curChild.firstChild&&walkDiscardedChildNodes(curChild,skipKeyedNodes)),curChild=curChild.nextSibling}}function removeNode(node,parentNode,skipKeyedNodes){!1!==callHook(onBeforeNodeDiscarded,node)&&(parentNode&&parentNode.removeChild(node),callHook(onNodeDiscarded,node),walkDiscardedChildNodes(node,skipKeyedNodes))}function handleNodeAdded(el){if(callHook(onNodeAdded,el),!el.skipAddingChildren)for(var curChild=el.firstChild;curChild;){var nextSibling=curChild.nextSibling,key=callHook(getNodeKey,curChild);if(key){var unmatchedFromEl=fromNodesLookup[key];unmatchedFromEl&&compareNodeNames(curChild,unmatchedFromEl)?(curChild.parentNode.replaceChild(unmatchedFromEl,curChild),morphEl(unmatchedFromEl,curChild)):handleNodeAdded(curChild)}else handleNodeAdded(curChild);curChild=nextSibling}}function morphEl(fromEl,toEl,childrenOnly){var toElKey=callHook(getNodeKey,toEl);if(toElKey&&delete fromNodesLookup[toElKey],!childrenOnly){if(!1===callHook(onBeforeElUpdated,fromEl,toEl))return;if(fromEl.skipElUpdatingButStillUpdateChildren||morphAttrs(fromEl,toEl),callHook(onElUpdated,fromEl),!1===callHook(onBeforeElChildrenUpdated,fromEl,toEl))return}"TEXTAREA"!==fromEl.nodeName?function(fromEl,toEl){var curToNodeKey,curFromNodeKey,fromNextSibling,toNextSibling,matchingFromEl,curToNodeChild=toEl.firstChild,curFromNodeChild=fromEl.firstChild;outer:for(;curToNodeChild;){for(toNextSibling=curToNodeChild.nextSibling,curToNodeKey=callHook(getNodeKey,curToNodeChild);curFromNodeChild;){if(fromNextSibling=curFromNodeChild.nextSibling,curToNodeChild.isSameNode&&curToNodeChild.isSameNode(curFromNodeChild)){curToNodeChild=toNextSibling,curFromNodeChild=fromNextSibling;continue outer}curFromNodeKey=callHook(getNodeKey,curFromNodeChild);var curFromNodeType=curFromNodeChild.nodeType,isCompatible=void 0;if(curFromNodeType===curToNodeChild.nodeType&&(curFromNodeType===ELEMENT_NODE?(curToNodeKey?curToNodeKey!==curFromNodeKey&&((matchingFromEl=fromNodesLookup[curToNodeKey])?fromNextSibling===matchingFromEl?isCompatible=!1:(fromEl.insertBefore(matchingFromEl,curFromNodeChild),curFromNodeKey?addKeyedRemoval(curFromNodeKey):removeNode(curFromNodeChild,fromEl,!0),curFromNodeChild=matchingFromEl):isCompatible=!1):curFromNodeKey&&(isCompatible=!1),(isCompatible=!1!==isCompatible&&compareNodeNames(curFromNodeChild,curToNodeChild))&&(!curToNodeChild.isEqualNode(curFromNodeChild)&&curToNodeChild.nextElementSibling&&curToNodeChild.nextElementSibling.isEqualNode(curFromNodeChild)?isCompatible=!1:morphEl(curFromNodeChild,curToNodeChild))):curFromNodeType!==TEXT_NODE&&curFromNodeType!=COMMENT_NODE||(isCompatible=!0,curFromNodeChild.nodeValue!==curToNodeChild.nodeValue&&(curFromNodeChild.nodeValue=curToNodeChild.nodeValue))),isCompatible){curToNodeChild=toNextSibling,curFromNodeChild=fromNextSibling;continue outer}if(curToNodeChild.nextElementSibling&&curToNodeChild.nextElementSibling.isEqualNode(curFromNodeChild)){var nodeToBeAdded=curToNodeChild.cloneNode(!0);fromEl.insertBefore(nodeToBeAdded,curFromNodeChild),handleNodeAdded(nodeToBeAdded),curToNodeChild=curToNodeChild.nextElementSibling.nextSibling,curFromNodeChild=fromNextSibling;continue outer}curFromNodeKey?addKeyedRemoval(curFromNodeKey):removeNode(curFromNodeChild,fromEl,!0),curFromNodeChild=fromNextSibling}if(curToNodeKey&&(matchingFromEl=fromNodesLookup[curToNodeKey])&&compareNodeNames(matchingFromEl,curToNodeChild))fromEl.appendChild(matchingFromEl),morphEl(matchingFromEl,curToNodeChild);else{var onBeforeNodeAddedResult=callHook(onBeforeNodeAdded,curToNodeChild);!1!==onBeforeNodeAddedResult&&(onBeforeNodeAddedResult&&(curToNodeChild=onBeforeNodeAddedResult),curToNodeChild.actualize&&(curToNodeChild=curToNodeChild.actualize(fromEl.ownerDocument||doc)),fromEl.appendChild(curToNodeChild),handleNodeAdded(curToNodeChild))}curToNodeChild=toNextSibling,curFromNodeChild=fromNextSibling}!function(fromEl,curFromNodeChild,curFromNodeKey){for(;curFromNodeChild;){var fromNextSibling=curFromNodeChild.nextSibling;(curFromNodeKey=callHook(getNodeKey,curFromNodeChild))?addKeyedRemoval(curFromNodeKey):removeNode(curFromNodeChild,fromEl,!0),curFromNodeChild=fromNextSibling}}(fromEl,curFromNodeChild,curFromNodeKey);var specialElHandler=specialElHandlers[fromEl.nodeName];specialElHandler&&!fromEl.isLivewireModel&&specialElHandler(fromEl,toEl)}(fromEl,toEl):fromEl.innerHTML!=toEl.innerHTML&&specialElHandlers.TEXTAREA(fromEl,toEl)}!function indexTree(node){if(node.nodeType===ELEMENT_NODE||node.nodeType===DOCUMENT_FRAGMENT_NODE)for(var curChild=node.firstChild;curChild;){var key=callHook(getNodeKey,curChild);key&&(fromNodesLookup[key]=curChild),indexTree(curChild),curChild=curChild.nextSibling}}(fromNode);var morphedNode=fromNode,morphedNodeType=morphedNode.nodeType,toNodeType=toNode.nodeType;if(!childrenOnly)if(morphedNodeType===ELEMENT_NODE)toNodeType===ELEMENT_NODE?compareNodeNames(fromNode,toNode)||(callHook(onNodeDiscarded,fromNode),morphedNode=moveChildren(fromNode,createElementNS(toNode.nodeName,toNode.namespaceURI))):morphedNode=toNode;else if(morphedNodeType===TEXT_NODE||morphedNodeType===COMMENT_NODE){if(toNodeType===morphedNodeType)return morphedNode.nodeValue!==toNode.nodeValue&&(morphedNode.nodeValue=toNode.nodeValue),morphedNode;morphedNode=toNode}if(morphedNode===toNode)callHook(onNodeDiscarded,fromNode);else{if(toNode.isSameNode&&toNode.isSameNode(morphedNode))return;if(morphEl(morphedNode,toNode,childrenOnly),keyedRemovalList)for(var i=0,len=keyedRemovalList.length;i<len;i++){var elToRemove=fromNodesLookup[keyedRemovalList[i]];elToRemove&&removeNode(elToRemove,elToRemove.parentNode,!1)}}return!childrenOnly&&morphedNode!==fromNode&&fromNode.parentNode&&(morphedNode.actualize&&(morphedNode=morphedNode.actualize(fromNode.ownerDocument||doc)),fromNode.parentNode.replaceChild(morphedNode,fromNode)),morphedNode}}var morphdom=morphdomFactory(morphAttrs),_default$1=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(name,value,el){var _this;return _classCallCheck(this,_default),(_this=_super.call(this,el)).type="syncInput",_this.name=name,_this.payload={id:_this.signature,name:name,value:value},_this}return _default}(_default$6),_default=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(name,value,el){var _this,skipWatcher=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return _classCallCheck(this,_default),(_this=_super.call(this,el,skipWatcher)).type="syncInput",_this.name=name,_this.payload={id:_this.signature,name:name,value:value},_this}return _default}(_default$6),nodeInitializer={initialize:function initialize(el,component){var _this=this;if(store$2.initialRenderIsFinished&&"script"===el.tagName.toLowerCase())return eval(el.innerHTML),!1;wireDirectives(el).all().forEach((function(directive){switch(directive.type){case"init":_this.fireActionRightAway(el,directive,component);break;case"model":if(!directive.value){console.warn("Livewire: [wire:model] is missing a value.",el);break}DOM.setInputValueFromModel(el,component),_this.attachModelListener(el,directive,component);break;default:store$2.directives.has(directive.type)&&store$2.directives.call(directive.type,el,directive,component),_this.attachDomListener(el,directive,component)}})),store$2.callHook("element.initialized",el,component)},fireActionRightAway:function(el,directive,component){var method=directive.value?directive.method:"$refresh";component.addAction(new _default$4(method,directive.params,el))},attachModelListener:function(el,directive,component){el.isLivewireModel=!0;var isLazy=directive.modifiers.includes("lazy"),hasDebounceModifier=directive.modifiers.includes("debounce");if(store$2.callHook("interceptWireModelAttachListener",directive,el,component),"input"!==el.tagName.toLowerCase()||"file"!==el.type){var condition,callback,time,event="select"===el.tagName.toLowerCase()||["checkbox","radio"].includes(el.type)||directive.modifiers.includes("lazy")?"change":"input",handler=(condition=hasDebounceModifier||DOM.isTextInput(el)&&!isLazy,callback=function(e){var _e$detail,model=directive.value,el=e.target,value=e instanceof CustomEvent&&void 0!==e.detail&&void 0===window.document.documentMode?null!==(_e$detail=e.detail)&&void 0!==_e$detail?_e$detail:e.target.value:DOM.valueFromInput(el,component);directive.modifiers.includes("defer")?component.addAction(new _default(model,value,el)):component.addAction(new _default$1(model,value,el))},time=directive.durationOr(150),condition?component.modelSyncDebounce(callback,time):callback);el.addEventListener(event,handler),component.addListenerForTeardown((function(){el.removeEventListener(event,handler)})),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&el.addEventListener("animationstart",(function(e){"livewireautofill"===e.animationName&&(e.target.dispatchEvent(new Event("change",{bubbles:!0})),e.target.dispatchEvent(new Event("input",{bubbles:!0})))}))}},attachDomListener:function(el,directive,component){switch(directive.type){case"keydown":case"keyup":this.attachListener(el,directive,component,(function(e){var selectedSystemKeyModifiers=["ctrl","shift","alt","meta","cmd","super"].filter((function(key){return directive.modifiers.includes(key)}));if(selectedSystemKeyModifiers.length>0&&selectedSystemKeyModifiers.filter((function(key){return"cmd"!==key&&"super"!==key||(key="meta"),!e["".concat(key,"Key")]})).length>0)return!1;if(32===e.keyCode||" "===e.key||"Spacebar"===e.key)return directive.modifiers.includes("space");var modifiers=directive.modifiers.filter((function(modifier){return!modifier.match(/^debounce$/)&&!modifier.match(/^[0-9]+m?s$/)}));return Boolean(0===modifiers.length||e.key&&modifiers.includes(kebabCase(e.key)))}));break;case"click":this.attachListener(el,directive,component,(function(e){if(directive.modifiers.includes("self"))return el.isSameNode(e.target)}));break;default:this.attachListener(el,directive,component)}},attachListener:function(el,directive,component,callback){var _this2=this;directive.modifiers.includes("prefetch")&&el.addEventListener("mouseenter",(function(){component.addPrefetchAction(new _default$4(directive.method,directive.params,el))}));var event=directive.type,debouncedHandler=function(condition,callback,time){return condition?debounce(callback,time):callback}(directive.modifiers.includes("debounce"),(function(e){callback&&!1===callback(e)||component.callAfterModelDebounce((function(){var el=e.target;directive.setEventContext(e),_this2.preventAndStop(e,directive.modifiers);var _component$scopedList,method=directive.method,params=directive.params;if(0===params.length&&e instanceof CustomEvent&&e.detail&&params.push(e.detail),"$emit"===method)return(_component$scopedList=component.scopedListeners).call.apply(_component$scopedList,_toConsumableArray(params)),void store$2.emit.apply(store$2,_toConsumableArray(params));"$emitUp"!==method?"$emitSelf"!==method?"$emitTo"!==method?directive.value&&component.addAction(new _default$4(method,params,el)):store$2.emitTo.apply(store$2,_toConsumableArray(params)):store$2.emitSelf.apply(store$2,[component.id].concat(_toConsumableArray(params))):store$2.emitUp.apply(store$2,[el].concat(_toConsumableArray(params)))}))}),directive.durationOr(150));el.addEventListener(event,debouncedHandler),component.addListenerForTeardown((function(){el.removeEventListener(event,debouncedHandler)}))},preventAndStop:function(event,modifiers){modifiers.includes("prevent")&&event.preventDefault(),modifiers.includes("stop")&&event.stopPropagation()}},PrefetchManager=function(){function PrefetchManager(component){_classCallCheck(this,PrefetchManager),this.component=component,this.prefetchMessagesByActionId={}}return _createClass(PrefetchManager,[{key:"addMessage",value:function(message){this.prefetchMessagesByActionId[message.prefetchId]=message}},{key:"actionHasPrefetch",value:function(action){return Object.keys(this.prefetchMessagesByActionId).includes(action.toId())}},{key:"actionPrefetchResponseHasBeenReceived",value:function(action){return!!this.getPrefetchMessageByAction(action).response}},{key:"getPrefetchMessageByAction",value:function(action){return this.prefetchMessagesByActionId[action.toId()]}},{key:"clearPrefetches",value:function(){this.prefetchMessagesByActionId={}}}]),PrefetchManager}();function LoadingStates(){store$2.registerHook("component.initialized",(function(component){component.targetedLoadingElsByAction={},component.genericLoadingEls=[],component.currentlyActiveLoadingEls=[],component.currentlyActiveUploadLoadingEls=[]})),store$2.registerHook("element.initialized",(function(el,component){var directives=wireDirectives(el);directives.missing("loading")||directives.directives.filter((function(i){return"loading"===i.type})).forEach((function(directive){processLoadingDirective(component,el,directive)}))})),store$2.registerHook("message.sent",(function(message,component){var actions=message.updateQueue.filter((function(action){return"callMethod"===action.type})).map((function(action){return action.payload.method})),actionsWithParams=message.updateQueue.filter((function(action){return"callMethod"===action.type})).map((function(action){return generateSignatureFromMethodAndParams(action.payload.method,action.payload.params)})),models=message.updateQueue.filter((function(action){return"syncInput"===action.type})).map((function(action){var name=action.payload.name;if(!name.includes("."))return name;var modelActions=[];return modelActions.push(name.split(".").reduce((function(fullAction,part){return modelActions.push(fullAction),fullAction+"."+part}))),modelActions})).flat();setLoading(component,actions.concat(actionsWithParams).concat(models))})),store$2.registerHook("message.failed",(function(message,component){unsetLoading(component)})),store$2.registerHook("message.received",(function(message,component){unsetLoading(component)})),store$2.registerHook("element.removed",(function(el,component){removeLoadingEl(component,el)}))}function processLoadingDirective(component,el,directive){el.__livewire_on_finish_loading=[];var actionNames=!1,directives=wireDirectives(el);if(directives.get("target")){var target=directives.get("target");actionNames=target.params.length>0?[generateSignatureFromMethodAndParams(target.method,target.params)]:target.value.split(",").map((function(s){return s.trim()}))}else{var nonActionOrModelLivewireDirectives=["init","dirty","offline","target","loading","poll","ignore","key","id"];(actionNames=directives.all().filter((function(i){return!nonActionOrModelLivewireDirectives.includes(i.type)})).map((function(i){return i.method}))).length<1&&(actionNames=!1)}addLoadingEl(component,el,directive,actionNames)}function addLoadingEl(component,el,directive,actionsNames){actionsNames?actionsNames.forEach((function(actionsName){component.targetedLoadingElsByAction[actionsName]?component.targetedLoadingElsByAction[actionsName].push({el:el,directive:directive}):component.targetedLoadingElsByAction[actionsName]=[{el:el,directive:directive}]})):component.genericLoadingEls.push({el:el,directive:directive})}function removeLoadingEl(component,el){component.genericLoadingEls.forEach((function(element,index){element.el.isSameNode(el)&&component.genericLoadingEls.splice(index,1)})),Object.keys(component.targetedLoadingElsByAction).forEach((function(key){component.targetedLoadingElsByAction[key]=component.targetedLoadingElsByAction[key].filter((function(element){return!element.el.isSameNode(el)}))}))}function setLoading(component,actions){var actionTargetedEls=actions.map((function(action){return component.targetedLoadingElsByAction[action]})).filter((function(el){return el})).flat(),allEls=removeDuplicates(component.genericLoadingEls.concat(actionTargetedEls));startLoading(allEls),component.currentlyActiveLoadingEls=allEls}function setUploadLoading(component,modelName){var actionTargetedEls=component.targetedLoadingElsByAction[modelName]||[],allEls=removeDuplicates(component.genericLoadingEls.concat(actionTargetedEls));startLoading(allEls),component.currentlyActiveUploadLoadingEls=allEls}function unsetUploadLoading(component){endLoading(component.currentlyActiveUploadLoadingEls),component.currentlyActiveUploadLoadingEls=[]}function unsetLoading(component){endLoading(component.currentlyActiveLoadingEls),component.currentlyActiveLoadingEls=[]}function startLoading(els){els.forEach((function(_ref){var el=_ref.el,directive=_ref.directive;if(directive.modifiers.includes("class")){var classes=directive.value.split(" ").filter(Boolean);doAndSetCallbackOnElToUndo(el,directive,(function(){var _el$classList;return(_el$classList=el.classList).add.apply(_el$classList,_toConsumableArray(classes))}),(function(){var _el$classList2;return(_el$classList2=el.classList).remove.apply(_el$classList2,_toConsumableArray(classes))}))}else if(directive.modifiers.includes("attr"))doAndSetCallbackOnElToUndo(el,directive,(function(){return el.setAttribute(directive.value,!0)}),(function(){return el.removeAttribute(directive.value)}));else{var cache=window.getComputedStyle(el,null).getPropertyValue("display");doAndSetCallbackOnElToUndo(el,directive,(function(){el.style.display=directive.modifiers.includes("remove")?cache:getDisplayProperty(directive)}),(function(){el.style.display="none"}))}}))}function getDisplayProperty(directive){return["inline","block","table","flex","grid","inline-flex"].filter((function(i){return directive.modifiers.includes(i)}))[0]||"inline-block"}function doAndSetCallbackOnElToUndo(el,directive,doCallback,undoCallback){if(directive.modifiers.includes("remove")){var _ref2=[undoCallback,doCallback];doCallback=_ref2[0],undoCallback=_ref2[1]}if(directive.modifiers.includes("delay")){var duration=200,delayModifiers={shortest:50,shorter:100,short:150,long:300,longer:500,longest:1e3};Object.keys(delayModifiers).some((function(key){if(directive.modifiers.includes(key))return duration=delayModifiers[key],!0}));var timeout=setTimeout((function(){doCallback(),el.__livewire_on_finish_loading.push((function(){return undoCallback()}))}),duration);el.__livewire_on_finish_loading.push((function(){return clearTimeout(timeout)}))}else doCallback(),el.__livewire_on_finish_loading.push((function(){return undoCallback()}))}function endLoading(els){els.forEach((function(_ref3){for(var el=_ref3.el;el.__livewire_on_finish_loading.length>0;)el.__livewire_on_finish_loading.shift()()}))}function generateSignatureFromMethodAndParams(method,params){return method+btoa(encodeURIComponent(params.toString()))}function removeDuplicates(arr){return Array.from(new Set(arr))}var MessageBag=function(){function MessageBag(){_classCallCheck(this,MessageBag),this.bag={}}return _createClass(MessageBag,[{key:"add",value:function(name,thing){this.bag[name]||(this.bag[name]=[]),this.bag[name].push(thing)}},{key:"push",value:function(name,thing){this.add(name,thing)}},{key:"first",value:function(name){return this.bag[name]?this.bag[name][0]:null}},{key:"last",value:function(name){return this.bag[name].slice(-1)[0]}},{key:"get",value:function(name){return this.bag[name]}},{key:"shift",value:function(name){return this.bag[name].shift()}},{key:"call",value:function(name){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(this.listeners[name]||[]).forEach((function(callback){callback.apply(void 0,params)}))}},{key:"has",value:function(name){return Object.keys(this.listeners).includes(name)}}]),MessageBag}(),UploadManager=function(){function UploadManager(component){_classCallCheck(this,UploadManager),this.component=component,this.uploadBag=new MessageBag,this.removeBag=new MessageBag}return _createClass(UploadManager,[{key:"registerListeners",value:function(){var _this=this;this.component.on("upload:generatedSignedUrl",(function(name,url){setUploadLoading(_this.component,name),_this.handleSignedUrl(name,url)})),this.component.on("upload:generatedSignedUrlForS3",(function(name,payload){setUploadLoading(_this.component,name),_this.handleS3PreSignedUrl(name,payload)})),this.component.on("upload:finished",(function(name,tmpFilenames){return _this.markUploadFinished(name,tmpFilenames)})),this.component.on("upload:errored",(function(name){return _this.markUploadErrored(name)})),this.component.on("upload:removed",(function(name,tmpFilename){return _this.removeBag.shift(name).finishCallback(tmpFilename)}))}},{key:"upload",value:function(name,file,finishCallback,errorCallback,progressCallback){this.setUpload(name,{files:[file],multiple:!1,finishCallback:finishCallback,errorCallback:errorCallback,progressCallback:progressCallback})}},{key:"uploadMultiple",value:function(name,files,finishCallback,errorCallback,progressCallback){this.setUpload(name,{files:Array.from(files),multiple:!0,finishCallback:finishCallback,errorCallback:errorCallback,progressCallback:progressCallback})}},{key:"removeUpload",value:function(name,tmpFilename,finishCallback){this.removeBag.push(name,{tmpFilename:tmpFilename,finishCallback:finishCallback}),this.component.call("removeUpload",name,tmpFilename)}},{key:"setUpload",value:function(name,uploadObject){this.uploadBag.add(name,uploadObject),1===this.uploadBag.get(name).length&&this.startUpload(name,uploadObject)}},{key:"handleSignedUrl",value:function(name,url){var formData=new FormData;Array.from(this.uploadBag.first(name).files).forEach((function(file){return formData.append("files[]",file,file.name)}));var headers={Accept:"application/json"},csrfToken=getCsrfToken();csrfToken&&(headers["X-CSRF-TOKEN"]=csrfToken),this.makeRequest(name,formData,"post",url,headers,(function(response){return response.paths}))}},{key:"handleS3PreSignedUrl",value:function(name,payload){var formData=this.uploadBag.first(name).files[0],headers=payload.headers;"Host"in headers&&delete headers.Host;var url=payload.url;this.makeRequest(name,formData,"put",url,headers,(function(response){return[payload.path]}))}},{key:"makeRequest",value:function(name,formData,method,url,headers,retrievePaths){var _this2=this,request=new XMLHttpRequest;request.open(method,url),Object.entries(headers).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];request.setRequestHeader(key,value)})),request.upload.addEventListener("progress",(function(e){e.detail={},e.detail.progress=Math.round(100*e.loaded/e.total),_this2.uploadBag.first(name).progressCallback(e)})),request.addEventListener("load",(function(){if("2"!==(request.status+"")[0]){var errors=null;422===request.status&&(errors=request.response),_this2.component.call("uploadErrored",name,errors,_this2.uploadBag.first(name).multiple)}else{var paths=retrievePaths(request.response&&JSON.parse(request.response));_this2.component.call("finishUpload",name,paths,_this2.uploadBag.first(name).multiple)}})),request.send(formData)}},{key:"startUpload",value:function(name,uploadObject){var fileInfos=uploadObject.files.map((function(file){return{name:file.name,size:file.size,type:file.type}}));this.component.call("startUpload",name,fileInfos,uploadObject.multiple),setUploadLoading(this.component,name)}},{key:"markUploadFinished",value:function(name,tmpFilenames){unsetUploadLoading(this.component);var uploadObject=this.uploadBag.shift(name);uploadObject.finishCallback(uploadObject.multiple?tmpFilenames:tmpFilenames[0]),this.uploadBag.get(name).length>0&&this.startUpload(name,this.uploadBag.last(name))}},{key:"markUploadErrored",value:function(name){unsetUploadLoading(this.component),this.uploadBag.shift(name).errorCallback(),this.uploadBag.get(name).length>0&&this.startUpload(name,this.uploadBag.last(name))}}]),UploadManager}();function SupportAlpine(){window.addEventListener("livewire:load",(function(){window.Alpine&&(refreshAlpineAfterEveryLivewireRequest(),addDollarSignWire(),supportEntangle())}))}function refreshAlpineAfterEveryLivewireRequest(){isV3()?store$2.registerHook("message.processed",(function(message,livewireComponent){walk(livewireComponent.el,(function(el){el._x_hidePromise||el._x_runEffects&&el._x_runEffects()}))})):window.Alpine.onComponentInitialized&&window.Alpine.onComponentInitialized((function(component){var livewireEl=component.$el.closest("[wire\\:id]");livewireEl&&livewireEl.__livewire&&store$2.registerHook("message.processed",(function(message,livewireComponent){livewireComponent===livewireEl.__livewire&&component.updateElements(component.$el)}))}))}function addDollarSignWire(){isV3()?window.Alpine.magic("wire",(function(el){var wireEl=el.closest("[wire\\:id]");return wireEl||console.warn('Alpine: Cannot reference "$wire" outside a Livewire component.'),wireEl.__livewire.$wire})):window.Alpine.addMagicProperty&&window.Alpine.addMagicProperty("wire",(function(componentEl){var wireEl=componentEl.closest("[wire\\:id]");return wireEl||console.warn('Alpine: Cannot reference "$wire" outside a Livewire component.'),wireEl.__livewire.$wire}))}function supportEntangle(){isV3()||window.Alpine.onBeforeComponentInitialized&&window.Alpine.onBeforeComponentInitialized((function(component){var livewireEl=component.$el.closest("[wire\\:id]");livewireEl&&livewireEl.__livewire&&Object.entries(component.unobservedData).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];if(value&&"object"===_typeof(value)&&value.livewireEntangle){var livewireProperty=value.livewireEntangle,isDeferred=value.isDeferred,livewireComponent=livewireEl.__livewire,livewirePropertyValue=livewireEl.__livewire.get(livewireProperty);if(void 0===livewirePropertyValue)return void console.error("Livewire Entangle Error: Livewire property '".concat(livewireProperty,"' cannot be found"));component.unobservedData[key]=JSON.parse(JSON.stringify(livewirePropertyValue));var blockAlpineWatcher=!1;component.unobservedData.$watch(key,(function(value){!0!==blockAlpineWatcher?JSON.stringify(value)!=JSON.stringify(livewireEl.__livewire.getPropertyValueIncludingDefers(livewireProperty))&&livewireComponent.set(livewireProperty,value,isDeferred,!isDeferred):blockAlpineWatcher=!1})),livewireComponent.watch(livewireProperty,(function(value){component.$data[key]=void 0!==value?JSON.parse(JSON.stringify(value)):value}))}}))}))}function getEntangleFunction(component){return isV3()?function(name){var defer=arguments.length>1&&void 0!==arguments[1]&&arguments[1],isDeferred=defer,livewireProperty=name,livewireComponent=component,livewirePropertyValue=component.get(livewireProperty),interceptor=Alpine.interceptor((function(initialValue,getter,setter,path,key){if(void 0!==livewirePropertyValue){var value=JSON.parse(JSON.stringify(livewirePropertyValue));return setter(value),window.Alpine.effect((function(){var value=getter();JSON.stringify(value)!=JSON.stringify(livewireComponent.getPropertyValueIncludingDefers(livewireProperty))&&livewireComponent.set(livewireProperty,value,isDeferred,!isDeferred)})),livewireComponent.watch(livewireProperty,(function(value){window.Alpine.disableEffectScheduling((function(){setter(void 0!==value?JSON.parse(JSON.stringify(value)):value)}))})),value}console.error("Livewire Entangle Error: Livewire property '".concat(livewireProperty,"' cannot be found"))}),(function(obj){Object.defineProperty(obj,"defer",{get:function(){return isDeferred=!0,obj}})}));return interceptor(livewirePropertyValue)}:function(name){var defer=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{isDeferred:defer,livewireEntangle:name,get defer(){return this.isDeferred=!0,this}}}}function alpinifyElementsForMorphdom(from,to){if(isV3())return alpinifyElementsForMorphdomV3(from,to);if(from.__x&&window.Alpine.clone(from.__x,to),Array.from(from.attributes).map((function(attr){return attr.name})).some((function(name){return/x-show/.test(name)})))if(from.__x_transition)from.skipElUpdatingButStillUpdateChildren=!0;else if(isHiding(from,to)){var style=to.getAttribute("style");style&&to.setAttribute("style",style.replace("display: none;",""))}else isShowing(from,to)&&(to.style.display=from.style.display)}function alpinifyElementsForMorphdomV3(from,to){1===from.nodeType&&from._x_dataStack&&window.Alpine.clone(from,to)}function isHiding(from,to){return beforeAlpineTwoPointSevenPointThree()?""===from.style.display&&"none"===to.style.display:from.__x_is_shown&&!to.__x_is_shown}function isShowing(from,to){return beforeAlpineTwoPointSevenPointThree()?"none"===from.style.display&&""===to.style.display:!from.__x_is_shown&&to.__x_is_shown}function beforeAlpineTwoPointSevenPointThree(){var _window$Alpine$versio2=_slicedToArray(window.Alpine.version.split(".").map((function(i){return Number(i)})),3),major=_window$Alpine$versio2[0],minor=_window$Alpine$versio2[1],patch=_window$Alpine$versio2[2];return major<=2&&minor<=7&&patch<=2}function isV3(){return window.Alpine&&window.Alpine.version&&/^3\..+\..+$/.test(window.Alpine.version)}var Component=function(){function Component(el,connection){_classCallCheck(this,Component),el.__livewire=this,this.el=el,this.lastFreshHtml=this.el.outerHTML,this.id=this.el.getAttribute("wire:id"),this.checkForMultipleRootElements(),this.connection=connection;var initialData=JSON.parse(this.el.getAttribute("wire:initial-data"));if(this.el.removeAttribute("wire:initial-data"),this.fingerprint=initialData.fingerprint,this.serverMemo=initialData.serverMemo,this.effects=initialData.effects,this.listeners=this.effects.listeners,this.updateQueue=[],this.deferredActions={},this.tearDownCallbacks=[],this.messageInTransit=void 0,this.scopedListeners=new MessageBus,this.prefetchManager=new PrefetchManager(this),this.uploadManager=new UploadManager(this),this.watchers={},store$2.callHook("component.initialized",this),this.initialize(),this.uploadManager.registerListeners(),this.effects.redirect)return this.redirect(this.effects.redirect)}return _createClass(Component,[{key:"name",get:function(){return this.fingerprint.name}},{key:"data",get:function(){return this.serverMemo.data}},{key:"childIds",get:function(){return Object.values(this.serverMemo.children).map((function(child){return child.id}))}},{key:"checkForMultipleRootElements",value:function(){var _this=this;(function countElementsBeforeMarker(el){var carryCount=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!el)return carryCount;if(el.nodeType===Node.COMMENT_NODE&&el.textContent.includes("wire-end:".concat(_this.id)))return carryCount;var newlyDiscoveredEls=el.nodeType===Node.ELEMENT_NODE?1:0;return countElementsBeforeMarker(el.nextSibling,carryCount+newlyDiscoveredEls)})(this.el.nextSibling)>0&&console.warn("Livewire: Multiple root elements detected. This is not supported. See docs for more information https://laravel-livewire.com/docs/2.x/troubleshooting#root-element-issues",this.el)}},{key:"initialize",value:function(){var _this2=this;this.walk((function(el){return nodeInitializer.initialize(el,_this2)}),(function(el){return store$2.addComponent(new Component(el,_this2.connection))}))}},{key:"get",value:function(name){return name.split(".").reduce((function(carry,segment){return void 0===carry?carry:carry[segment]}),this.data)}},{key:"getPropertyValueIncludingDefers",value:function(name){var action=this.deferredActions[name];return action?action.payload.value:this.get(name)}},{key:"updateServerMemoFromResponseAndMergeBackIntoResponse",value:function(message){var _this3=this;Object.entries(message.response.serverMemo).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];"data"===key?Object.entries(value||{}).forEach((function(_ref3){var _ref4=_slicedToArray(_ref3,2),dataKey=_ref4[0],dataValue=_ref4[1];_this3.serverMemo.data[dataKey]=dataValue,message.shouldSkipWatcherForDataKey(dataKey)||Object.entries(_this3.watchers).forEach((function(_ref5){var _ref6=_slicedToArray(_ref5,2),key=_ref6[0],watchers=_ref6[1],originalSplitKey=key.split("."),basePropertyName=originalSplitKey.shift(),restOfPropertyName=originalSplitKey.join(".");if(basePropertyName==dataKey){var potentiallyNestedValue=restOfPropertyName?getValue(dataValue,restOfPropertyName):dataValue;watchers.forEach((function(watcher){return watcher(potentiallyNestedValue)}))}}))})):_this3.serverMemo[key]=value})),message.response.serverMemo=Object.assign({},this.serverMemo)}},{key:"watch",value:function(name,callback){this.watchers[name]||(this.watchers[name]=[]),this.watchers[name].push(callback)}},{key:"set",value:function(name,value){var defer=arguments.length>2&&void 0!==arguments[2]&&arguments[2],skipWatcher=arguments.length>3&&void 0!==arguments[3]&&arguments[3];defer?this.addAction(new _default(name,value,this.el,skipWatcher)):this.addAction(new _default$4("$set",[name,value],this.el,skipWatcher))}},{key:"sync",value:function(name,value){var defer=arguments.length>2&&void 0!==arguments[2]&&arguments[2];defer?this.addAction(new _default(name,value,this.el)):this.addAction(new _default$1(name,value,this.el))}},{key:"call",value:function(method){for(var _this4=this,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];return new Promise((function(resolve,reject){var action=new _default$4(method,params,_this4.el);_this4.addAction(action),action.onResolve((function(thing){return resolve(thing)})),action.onReject((function(thing){return reject(thing)}))}))}},{key:"on",value:function(event,callback){this.scopedListeners.register(event,callback)}},{key:"addAction",value:function(action){if(action instanceof _default)this.deferredActions[action.name]=action;else{if(this.prefetchManager.actionHasPrefetch(action)&&this.prefetchManager.actionPrefetchResponseHasBeenReceived(action)){var message=this.prefetchManager.getPrefetchMessageByAction(action);return this.handleResponse(message),void this.prefetchManager.clearPrefetches()}this.updateQueue.push(action),debounce(this.fireMessage,5).apply(this),this.prefetchManager.clearPrefetches()}}},{key:"fireMessage",value:function(){var _this5=this;if(!this.messageInTransit){Object.entries(this.deferredActions).forEach((function(_ref7){var _ref8=_slicedToArray(_ref7,2);_ref8[0];var action=_ref8[1];_this5.updateQueue.unshift(action)})),this.deferredActions={},this.messageInTransit=new _default$3(this,this.updateQueue);var sendMessage=function(){_this5.connection.sendMessage(_this5.messageInTransit),store$2.callHook("message.sent",_this5.messageInTransit,_this5),_this5.updateQueue=[]};window.capturedRequestsForDusk?window.capturedRequestsForDusk.push(sendMessage):sendMessage()}}},{key:"messageSendFailed",value:function(){store$2.callHook("message.failed",this.messageInTransit,this),this.messageInTransit.reject(),this.messageInTransit=null}},{key:"receiveMessage",value:function(message,payload){message.storeResponse(payload),message instanceof _default$2||(this.handleResponse(message),this.updateQueue.length>0&&this.fireMessage(),dispatch("livewire:update"))}},{key:"handleResponse",value:function(message){var _this6=this,response=message.response;this.updateServerMemoFromResponseAndMergeBackIntoResponse(message),store$2.callHook("message.received",message,this),response.effects.html?(this.lastFreshHtml=response.effects.html,this.handleMorph(response.effects.html.trim())):this.handleMorph(this.lastFreshHtml),response.effects.dirty&&this.forceRefreshDataBoundElementsMarkedAsDirty(response.effects.dirty),message.replaying||(this.messageInTransit&&this.messageInTransit.resolve(),this.messageInTransit=null,response.effects.emits&&response.effects.emits.length>0&&response.effects.emits.forEach((function(event){var _this6$scopedListener;(_this6$scopedListener=_this6.scopedListeners).call.apply(_this6$scopedListener,[event.event].concat(_toConsumableArray(event.params))),event.selfOnly?store$2.emitSelf.apply(store$2,[_this6.id,event.event].concat(_toConsumableArray(event.params))):event.to?store$2.emitTo.apply(store$2,[event.to,event.event].concat(_toConsumableArray(event.params))):event.ancestorsOnly?store$2.emitUp.apply(store$2,[_this6.el,event.event].concat(_toConsumableArray(event.params))):store$2.emit.apply(store$2,[event.event].concat(_toConsumableArray(event.params)))})),response.effects.dispatches&&response.effects.dispatches.length>0&&response.effects.dispatches.forEach((function(event){var data=event.data?event.data:{},e=new CustomEvent(event.event,{bubbles:!0,detail:data});_this6.el.dispatchEvent(e)}))),store$2.callHook("message.processed",message,this),response.effects.redirect&&setTimeout((function(){return _this6.redirect(response.effects.redirect)}))}},{key:"redirect",value:function(url){window.Turbolinks&&window.Turbolinks.supported?window.Turbolinks.visit(url):window.location.href=url}},{key:"forceRefreshDataBoundElementsMarkedAsDirty",value:function(dirtyInputs){var _this7=this;this.walk((function(el){var directives=wireDirectives(el);if(!directives.missing("model")){var modelValue=directives.get("model").value;("SELECT"==el.nodeName&&!el.multiple||!DOM.hasFocus(el)||dirtyInputs.includes(modelValue))&&DOM.setInputValueFromModel(el,_this7)}}))}},{key:"addPrefetchAction",value:function(action){if(!this.prefetchManager.actionHasPrefetch(action)){var message=new _default$2(this,action);this.prefetchManager.addMessage(message),this.connection.sendMessage(message)}}},{key:"handleMorph",value:function(dom){var _this8=this;this.morphChanges={changed:[],added:[],removed:[]},morphdom(this.el,dom,{childrenOnly:!1,getNodeKey:function(node){return node.hasAttribute("wire:key")?node.getAttribute("wire:key"):node.hasAttribute("wire:id")?node.getAttribute("wire:id"):node.id},onBeforeNodeAdded:function(node){},onBeforeNodeDiscarded:function(node){if(node.__x_inserted_me&&Array.from(node.attributes).some((function(attr){return/x-transition/.test(attr.name)})))return!1},onNodeDiscarded:function(node){store$2.callHook("element.removed",node,_this8),node.__livewire&&store$2.removeComponent(node.__livewire),_this8.morphChanges.removed.push(node)},onBeforeElChildrenUpdated:function(node){},onBeforeElUpdated:function(from,to){if(from.isEqualNode(to))return!1;store$2.callHook("element.updating",from,to,_this8),from.hasAttribute("wire:model")&&"SELECT"===from.tagName.toUpperCase()&&(to.selectedIndex=-1);var fromDirectives=wireDirectives(from);if(fromDirectives.has("ignore")||!0===from.__livewire_ignore||!0===from.__livewire_ignore_self){if(!(fromDirectives.has("ignore")&&fromDirectives.get("ignore").modifiers.includes("self")||!0===from.__livewire_ignore_self))return!1;from.skipElUpdatingButStillUpdateChildren=!0}if(DOM.isComponentRootEl(from)&&from.getAttribute("wire:id")!==_this8.id)return!1;DOM.isComponentRootEl(from)&&(to.__livewire=_this8),alpinifyElementsForMorphdom(from,to)},onElUpdated:function(node){_this8.morphChanges.changed.push(node),store$2.callHook("element.updated",node,_this8)},onNodeAdded:function(node){if(DOM.closestRoot(node).getAttribute("wire:id")===_this8.id){if(!1===nodeInitializer.initialize(node,_this8))return!1}else DOM.isComponentRootEl(node)&&(store$2.addComponent(new Component(node,_this8.connection)),node.skipAddingChildren=!0);_this8.morphChanges.added.push(node)}}),window.skipShow=!1}},{key:"walk",value:function(callback){var _this9=this,callbackWhenNewComponentIsEncountered=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(el){};walk(this.el,(function(el){if(!el.isSameNode(_this9.el))return el.hasAttribute("wire:id")?(callbackWhenNewComponentIsEncountered(el),!1):!1!==callback(el)&&void 0;callback(el)}))}},{key:"modelSyncDebounce",value:function(callback,time){this.modelDebounceCallbacks||(this.modelDebounceCallbacks=[]);var timeout,callbackRegister={callback:function(){}};return this.modelDebounceCallbacks.push(callbackRegister),function(e){clearTimeout(timeout),timeout=setTimeout((function(){callback(e),timeout=void 0,callbackRegister.callback=function(){}}),time),callbackRegister.callback=function(){clearTimeout(timeout),callback(e)}}}},{key:"callAfterModelDebounce",value:function(callback){this.modelDebounceCallbacks&&this.modelDebounceCallbacks.forEach((function(callbackRegister){callbackRegister.callback(),callbackRegister.callback=function(){}})),callback()}},{key:"addListenerForTeardown",value:function(teardownCallback){this.tearDownCallbacks.push(teardownCallback)}},{key:"tearDown",value:function(){this.tearDownCallbacks.forEach((function(callback){return callback()}))}},{key:"upload",value:function(name,file){var finishCallback=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},errorCallback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},progressCallback=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){};this.uploadManager.upload(name,file,finishCallback,errorCallback,progressCallback)}},{key:"uploadMultiple",value:function(name,files){var finishCallback=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},errorCallback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},progressCallback=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){};this.uploadManager.uploadMultiple(name,files,finishCallback,errorCallback,progressCallback)}},{key:"removeUpload",value:function(name,tmpFilename){var finishCallback=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},errorCallback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){};this.uploadManager.removeUpload(name,tmpFilename,finishCallback,errorCallback)}},{key:"$wire",get:function(){if(this.dollarWireProxy)return this.dollarWireProxy;var component=this;return this.dollarWireProxy=new Proxy({},{get:function(object,property){if(!["_x_interceptor"].includes(property)){if("entangle"===property)return getEntangleFunction(component);if("__instance"===property)return component;if("string"==typeof property&&property.match(/^emit.*/))return function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];return"emitSelf"===property?store$2.emitSelf.apply(store$2,[component.id].concat(args)):"emitUp"===property?store$2.emitUp.apply(store$2,[component.el].concat(args)):store$2[property].apply(store$2,args)};if(["get","set","sync","call","on","upload","uploadMultiple","removeUpload"].includes(property))return function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];return component[property].apply(component,args)};var getResult=component.get(property);return void 0===getResult?function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];return component.call.apply(component,[property].concat(args))}:getResult}},set:function(obj,prop,value){return component.set(prop,value),!0}})}}]),Component}();function FileUploads(){store$2.registerHook("interceptWireModelAttachListener",(function(directive,el,component){if("input"===el.tagName.toLowerCase()&&"file"===el.type){var finish=function(){return el.dispatchEvent(new CustomEvent("livewire-upload-finish",{bubbles:!0}))},error=function(){return el.dispatchEvent(new CustomEvent("livewire-upload-error",{bubbles:!0}))},progress=function(progressEvent){var percentCompleted=Math.round(100*progressEvent.loaded/progressEvent.total);el.dispatchEvent(new CustomEvent("livewire-upload-progress",{bubbles:!0,detail:{progress:percentCompleted}}))},eventHandler=function(e){0!==e.target.files.length&&(el.dispatchEvent(new CustomEvent("livewire-upload-start",{bubbles:!0})),e.target.multiple?component.uploadMultiple(directive.value,e.target.files,finish,error,progress):component.upload(directive.value,e.target.files[0],finish,error,progress))};el.addEventListener("change",eventHandler);var clearFileInputValue=function(){el.value=null};el.addEventListener("click",clearFileInputValue),component.addListenerForTeardown((function(){el.removeEventListener("change",eventHandler),el.removeEventListener("click",clearFileInputValue)}))}}))}function LaravelEcho(){store$2.registerHook("component.initialized",(function(component){Array.isArray(component.listeners)&&component.listeners.forEach((function(event){if(event.startsWith("echo")){if("undefined"==typeof Echo)return void console.warn("Laravel Echo cannot be found");var event_parts=event.split(/(echo:|echo-)|:|,/);"echo:"==event_parts[1]&&event_parts.splice(2,0,"channel",void 0),"notification"==event_parts[2]&&event_parts.push(void 0,void 0);var _event_parts=_slicedToArray(event_parts,7);_event_parts[0],_event_parts[1];var channel_type=_event_parts[2];_event_parts[3];var channel=_event_parts[4];_event_parts[5];var event_name=_event_parts[6];["channel","private","encryptedPrivate"].includes(channel_type)?Echo[channel_type](channel).listen(event_name,(function(e){store$2.emit(event,e)})):"presence"==channel_type?["here","joining","leaving"].includes(event_name)?Echo.join(channel)[event_name]((function(e){store$2.emit(event,e)})):Echo.join(channel).listen(event_name,(function(e){store$2.emit(event,e)})):"notification"==channel_type?Echo.private(channel).notification((function(notification){store$2.emit(event,notification)})):console.warn("Echo channel type not yet supported")}}))}))}function DirtyStates(){store$2.registerHook("component.initialized",(function(component){component.dirtyEls=[]})),store$2.registerHook("element.initialized",(function(el,component){wireDirectives(el).missing("dirty")||component.dirtyEls.push(el)})),store$2.registerHook("interceptWireModelAttachListener",(function(directive,el,component){var property=directive.value;el.addEventListener("input",(function(){component.dirtyEls.forEach((function(dirtyEl){var directives=wireDirectives(dirtyEl);(directives.has("model")&&directives.get("model").value===property||directives.has("target")&&directives.get("target").value.split(",").map((function(s){return s.trim()})).includes(property))&&setDirtyState(dirtyEl,DOM.valueFromInput(el,component)!=component.get(property))}))}))})),store$2.registerHook("message.received",(function(message,component){component.dirtyEls.forEach((function(element){element.__livewire_dirty_cleanup&&(element.__livewire_dirty_cleanup(),delete element.__livewire_dirty_cleanup)}))})),store$2.registerHook("element.removed",(function(el,component){component.dirtyEls.forEach((function(element,index){element.isSameNode(el)&&component.dirtyEls.splice(index,1)}))}))}function setDirtyState(el,isDirty){var directive=wireDirectives(el).get("dirty");if(directive.modifiers.includes("class")){var _el$classList,_el$classList3,classes=directive.value.split(" ");if(directive.modifiers.includes("remove")!==isDirty)(_el$classList=el.classList).add.apply(_el$classList,_toConsumableArray(classes)),el.__livewire_dirty_cleanup=function(){var _el$classList2;return(_el$classList2=el.classList).remove.apply(_el$classList2,_toConsumableArray(classes))};else(_el$classList3=el.classList).remove.apply(_el$classList3,_toConsumableArray(classes)),el.__livewire_dirty_cleanup=function(){var _el$classList4;return(_el$classList4=el.classList).add.apply(_el$classList4,_toConsumableArray(classes))}}else directive.modifiers.includes("attr")?directive.modifiers.includes("remove")!==isDirty?(el.setAttribute(directive.value,!0),el.__livewire_dirty_cleanup=function(){return el.removeAttribute(directive.value)}):(el.removeAttribute(directive.value),el.__livewire_dirty_cleanup=function(){return el.setAttribute(directive.value,!0)}):wireDirectives(el).get("model")||(el.style.display=isDirty?"inline-block":"none",el.__livewire_dirty_cleanup=function(){return el.style.display=isDirty?"none":"inline-block"})}var cleanupStackByComponentId={};function DisableForms(){store$2.registerHook("element.initialized",(function(el,component){wireDirectives(el).missing("submit")||el.addEventListener("submit",(function(){cleanupStackByComponentId[component.id]=[],component.walk((function(node){if(el.contains(node))return!node.hasAttribute("wire:ignore")&&void("button"===node.tagName.toLowerCase()&&"submit"===node.type||"select"===node.tagName.toLowerCase()||"input"===node.tagName.toLowerCase()&&("checkbox"===node.type||"radio"===node.type)?(node.disabled||cleanupStackByComponentId[component.id].push((function(){return node.disabled=!1})),node.disabled=!0):"input"!==node.tagName.toLowerCase()&&"textarea"!==node.tagName.toLowerCase()||(node.readOnly||cleanupStackByComponentId[component.id].push((function(){return node.readOnly=!1})),node.readOnly=!0))}))}))})),store$2.registerHook("message.failed",(function(message,component){return cleanup(component)})),store$2.registerHook("message.received",(function(message,component){return cleanup(component)}))}function cleanup(component){if(cleanupStackByComponentId[component.id])for(;cleanupStackByComponentId[component.id].length>0;)cleanupStackByComponentId[component.id].shift()()}function FileDownloads(){store$2.registerHook("message.received",(function(message,component){var response=message.response;if(response.effects.download){var urlObject=window.webkitURL||window.URL,url=urlObject.createObjectURL(base64toBlob(response.effects.download.content,response.effects.download.contentType)),invisibleLink=document.createElement("a");invisibleLink.style.display="none",invisibleLink.href=url,invisibleLink.download=response.effects.download.name,document.body.appendChild(invisibleLink),invisibleLink.click(),setTimeout((function(){urlObject.revokeObjectURL(url)}),0)}}))}function base64toBlob(b64Data){var contentType=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",sliceSize=arguments.length>2&&void 0!==arguments[2]?arguments[2]:512,byteCharacters=atob(b64Data),byteArrays=[];null===contentType&&(contentType="");for(var offset=0;offset<byteCharacters.length;offset+=sliceSize){for(var slice=byteCharacters.slice(offset,offset+sliceSize),byteNumbers=new Array(slice.length),i=0;i<slice.length;i++)byteNumbers[i]=slice.charCodeAt(i);var byteArray=new Uint8Array(byteNumbers);byteArrays.push(byteArray)}return new Blob(byteArrays,{type:contentType})}var offlineEls=[];function OfflineStates(){store$2.registerHook("element.initialized",(function(el){wireDirectives(el).missing("offline")||offlineEls.push(el)})),window.addEventListener("offline",(function(){store$2.livewireIsOffline=!0,offlineEls.forEach((function(el){toggleOffline(el,!0)}))})),window.addEventListener("online",(function(){store$2.livewireIsOffline=!1,offlineEls.forEach((function(el){toggleOffline(el,!1)}))})),store$2.registerHook("element.removed",(function(el){offlineEls=offlineEls.filter((function(el){return!el.isSameNode(el)}))}))}function toggleOffline(el,isOffline){var directives=wireDirectives(el),directive=directives.get("offline");if(directive.modifiers.includes("class")){var _el$classList,_el$classList2,classes=directive.value.split(" ");if(directive.modifiers.includes("remove")!==isOffline)(_el$classList=el.classList).add.apply(_el$classList,_toConsumableArray(classes));else(_el$classList2=el.classList).remove.apply(_el$classList2,_toConsumableArray(classes))}else directive.modifiers.includes("attr")?directive.modifiers.includes("remove")!==isOffline?el.setAttribute(directive.value,!0):el.removeAttribute(directive.value):directives.get("model")||(el.style.display=isOffline?"inline-block":"none")}function SyncBrowserHistory(){var initializedPath=!1,componentIdsThatAreWritingToHistoryState=new Set;function normalizeResponse(response,component){response.effects.dirty=Object.keys(response.serverMemo.data),response.effects.html=component.lastFreshHtml}function onlyChangeThePathAndQueryString(url){if(url){var destination=new URL(url),afterOrigin=destination.href.replace(destination.origin,"").replace(/\?$/,"");return window.location.origin+afterOrigin+window.location.hash}}LivewireStateManager.clearState(),store$2.registerHook("component.initialized",(function(component){component.effects.path&&setTimeout((function(){var url=onlyChangeThePathAndQueryString(initializedPath?void 0:component.effects.path),response={serverMemo:component.serverMemo,effects:component.effects};normalizeResponse(response,component),LivewireStateManager.replaceState(url,response,component),componentIdsThatAreWritingToHistoryState.add(component.id),initializedPath=!0}))})),store$2.registerHook("message.processed",(function(message,component){if(!message.replaying){var response=message.response,effects=response.effects||{};if(normalizeResponse(response,component),"path"in effects&&effects.path!==window.location.href){var url=onlyChangeThePathAndQueryString(effects.path);LivewireStateManager.pushState(url,response,component),componentIdsThatAreWritingToHistoryState.add(component.id)}else componentIdsThatAreWritingToHistoryState.has(component.id)&&LivewireStateManager.replaceState(window.location.href,response,component)}})),window.addEventListener("popstate",(function(event){LivewireStateManager.missingState(event)||LivewireStateManager.replayResponses(event,(function(response,component){var message=new _default$3(component,[]);message.storeResponse(response),message.replaying=!0,component.handleResponse(message)}))})),store$2.registerHook("element.updating",(function(from,to,component){from.getAttribute("wire:id")===component.id&&(component.lastKnownDomId=component.id)})),store$2.registerHook("element.updated",(function(node,component){component.lastKnownDomId&&(node.getAttribute("wire:id")!==component.lastKnownDomId&&store$2.changeComponentId(component,node.getAttribute("wire:id")),delete component.lastKnownDomId)}))}var LivewireStateManager={replaceState:function(url,response,component){this.updateState("replaceState",url,response,component)},pushState:function(url,response,component){this.updateState("pushState",url,response,component)},updateState:function(method,url,response,component){var state=this.currentState();state.storeResponse(response,component);var subject,stateArray=state.toStateArray(),fullstateObject=Object.assign(history.state||{},{livewire:stateArray});store$2.callHook("before"+((subject=method).charAt(0).toUpperCase()+subject.slice(1)),fullstateObject,url,component);try{"undefined"!=decodeURI(url)&&(url=decodeURI(url).replaceAll(" ","+").replaceAll("\\","%5C")),history[method](fullstateObject,"",url)}catch(error){if("NS_ERROR_ILLEGAL_VALUE"===error.name){var key=this.storeInSession(stateArray);fullstateObject.livewire=key,history[method](fullstateObject,"",url)}}},replayResponses:function(event,callback){event.state.livewire&&("string"==typeof event.state.livewire?new LivewireState(this.getFromSession(event.state.livewire)):new LivewireState(event.state.livewire)).replayResponses(callback)},currentState:function(){return history.state&&history.state.livewire?"string"==typeof history.state.livewire?new LivewireState(this.getFromSession(history.state.livewire)):new LivewireState(history.state.livewire):new LivewireState},missingState:function(event){return!(event.state&&event.state.livewire)},clearState:function(){window.history.state&&(window.history.state.livewire=(new LivewireState).toStateArray())},storeInSession:function(value){var key="livewire:"+(new Date).getTime(),stringifiedValue=JSON.stringify(value);return this.tryToStoreInSession(key,stringifiedValue),key},tryToStoreInSession:function(key,value){try{sessionStorage.setItem(key,value)}catch(error){if(![22,1,2,3,4,5,6,7,8,9,10,11,12,13,14].includes(error.code))return;var oldestTimestamp=Object.keys(sessionStorage).map((function(key){return Number(key.replace("livewire:",""))})).sort().shift();if(!oldestTimestamp)return;sessionStorage.removeItem("livewire:"+oldestTimestamp),this.tryToStoreInSession(key,value)}},getFromSession:function(key){var item=sessionStorage.getItem(key);if(item)return JSON.parse(item)}},LivewireState=function(){function LivewireState(){var stateArray=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];_classCallCheck(this,LivewireState),this.items=stateArray}return _createClass(LivewireState,[{key:"toStateArray",value:function(){return this.items}},{key:"pushItemInProperOrder",value:function(signature,response,component){var _this=this,targetItem={signature:signature,response:response},existingIndex=this.items.findIndex((function(item){return item.signature===signature}));if(-1!==existingIndex)return this.items[existingIndex]=targetItem;var closestParentId=store$2.getClosestParentId(component.id,this.componentIdsWithStoredResponses());if(!closestParentId)return this.items.unshift(targetItem);var closestParentIndex=this.items.findIndex((function(item){if(_this.parseSignature(item.signature).originalComponentId===closestParentId)return!0}));this.items.splice(closestParentIndex,0,targetItem)}},{key:"storeResponse",value:function(response,component){var signature=this.getComponentNameBasedSignature(component);this.pushItemInProperOrder(signature,response,component)}},{key:"replayResponses",value:function(callback){var _this2=this;this.items.forEach((function(_ref){var signature=_ref.signature,response=_ref.response,component=_this2.findComponentBySignature(signature);component&&callback(response,component)}))}},{key:"getComponentNameBasedSignature",value:function(component){var componentName=component.fingerprint.name,componentIndex=store$2.getComponentsByName(componentName).indexOf(component);return"".concat(component.id,":").concat(componentName,":").concat(componentIndex)}},{key:"findComponentBySignature",value:function(signature){var _this$parseSignature2=this.parseSignature(signature),componentName=_this$parseSignature2.componentName,componentIndex=_this$parseSignature2.componentIndex,sameNamedComponents=store$2.getComponentsByName(componentName);return sameNamedComponents[componentIndex]||sameNamedComponents[0]||console.warn("Livewire: couldn't find component on page: ".concat(componentName))}},{key:"parseSignature",value:function(signature){var _signature$split2=_slicedToArray(signature.split(":"),3);return{originalComponentId:_signature$split2[0],componentName:_signature$split2[1],componentIndex:_signature$split2[2]}}},{key:"componentIdsWithStoredResponses",value:function(){var _this3=this;return this.items.map((function(_ref2){var signature=_ref2.signature;return _this3.parseSignature(signature).originalComponentId}))}}]),LivewireState}();function SupportStacks(){store$2.registerHook("message.received",(function(message,component){var response=message.response;if(response.effects.forStack){var updates=[];for(response.effects.forStack.forEach((function(_ref){var key=_ref.key,stack=_ref.stack,type=_ref.type,contents=_ref.contents,startEl=document.querySelector('[livewire-stack="'.concat(stack,'"]')),endEl=document.querySelector('[livewire-end-stack="'.concat(stack,'"]'));if(startEl&&endEl&&!keyHasAlreadyBeenAddedToTheStack(startEl,endEl,key)){var frag=createFragment(contents);updates.push((function(){return"push"===type?(el=frag,endEl.parentElement.insertBefore(el,endEl)):function(el){return startEl.parentElement.insertBefore(el,startEl.nextElementSibling)}(frag);var el}))}}));updates.length>0;)updates.shift()()}}))}function keyHasAlreadyBeenAddedToTheStack(startEl,endEl,key){return function findKeyMarker(el){if(!el.isSameNode(endEl))return el.matches('[livewire-stack-key="'.concat(key,'"]'))?el:findKeyMarker(el.nextElementSibling)}(startEl)}function createFragment(html){return document.createRange().createContextualFragment(html)}var Livewire=function(){function Livewire(){_classCallCheck(this,Livewire),this.connection=new Connection,this.components=store$2,this.devToolsEnabled=!1,this.onLoadCallback=function(){}}return _createClass(Livewire,[{key:"first",value:function(){return Object.values(this.components.componentsById)[0].$wire}},{key:"find",value:function(componentId){return this.components.componentsById[componentId].$wire}},{key:"all",value:function(){return Object.values(this.components.componentsById).map((function(component){return component.$wire}))}},{key:"directive",value:function(name,callback){this.components.registerDirective(name,callback)}},{key:"hook",value:function(name,callback){this.components.registerHook(name,callback)}},{key:"onLoad",value:function(callback){this.onLoadCallback=callback}},{key:"onError",value:function(callback){this.components.onErrorCallback=callback}},{key:"emit",value:function(event){for(var _this$components,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$components=this.components).emit.apply(_this$components,[event].concat(params))}},{key:"emitTo",value:function(name,event){for(var _this$components2,_len2=arguments.length,params=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)params[_key2-2]=arguments[_key2];(_this$components2=this.components).emitTo.apply(_this$components2,[name,event].concat(params))}},{key:"on",value:function(event,callback){this.components.on(event,callback)}},{key:"addHeaders",value:function(headers){this.connection.headers=_objectSpread2(_objectSpread2({},this.connection.headers),headers)}},{key:"devTools",value:function(enableDevtools){this.devToolsEnabled=enableDevtools}},{key:"restart",value:function(){this.stop(),this.start()}},{key:"stop",value:function(){this.components.tearDownComponents()}},{key:"start",value:function(){var _this=this;DOM.rootComponentElementsWithNoParents().forEach((function(el){_this.components.addComponent(new Component(el,_this.connection))})),this.onLoadCallback(),dispatch("livewire:load"),document.addEventListener("visibilitychange",(function(){_this.components.livewireIsInBackground=document.hidden}),!1),this.components.initialRenderIsFinished=!0}},{key:"rescan",value:function(){var _this2=this,node=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;DOM.rootComponentElementsWithNoParents(node).forEach((function(el){var componentId=wireDirectives(el).get("id").value;_this2.components.hasComponent(componentId)||_this2.components.addComponent(new Component(el,_this2.connection))}))}},{key:"onPageExpired",value:function(callback){this.components.sessionHasExpiredCallback=callback}}]),Livewire}();function monkeyPatchDomSetAttributeToAllowAtSymbols(){var original=Element.prototype.setAttribute,hostDiv=document.createElement("div");Element.prototype.setAttribute=function(name,value){if(!name.includes("@"))return original.call(this,name,value);hostDiv.innerHTML="<span ".concat(name,'="').concat(value,'"></span>');var attr=hostDiv.firstElementChild.getAttributeNode(name);hostDiv.firstElementChild.removeAttributeNode(attr),this.setAttributeNode(attr)}}return window.Livewire||(window.Livewire=Livewire),monkeyPatchDomSetAttributeToAllowAtSymbols(),SyncBrowserHistory(),SupportAlpine(),SupportStacks(),FileDownloads(),OfflineStates(),LoadingStates(),DisableForms(),FileUploads(),LaravelEcho(),DirtyStates(),Polling(),dispatch("livewire:available"),Livewire}));
          +//# sourceMappingURL=livewire.js.map
          diff --git a/public/vendor/livewire/livewire.js.map b/public/vendor/livewire/livewire.js.map
          new file mode 100644
          index 0000000..2b97c60
          --- /dev/null
          +++ b/public/vendor/livewire/livewire.js.map
          @@ -0,0 +1 @@
          +{"version":3,"file":"livewire.js","sources":["../js/util/debounce.js","../js/util/wire-directives.js","../js/util/walk.js","../js/util/dispatch.js","../js/util/getCsrfToken.js","../js/util/index.js","../node_modules/isobject/index.js","../node_modules/get-value/index.js","../js/action/index.js","../js/action/event.js","../js/MessageBus.js","../js/HookManager.js","../js/DirectiveManager.js","../js/Store.js","../js/dom/dom.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/iterator-close.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/array-from.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/modules/es.array.from.js","../node_modules/core-js/es/array/from.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/modules/es.array.includes.js","../node_modules/core-js/internals/entry-unbind.js","../node_modules/core-js/es/array/includes.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/flatten-into-array.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/modules/es.array.flat.js","../node_modules/core-js/modules/es.array.unscopables.flat.js","../node_modules/core-js/es/array/flat.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/modules/es.array.find.js","../node_modules/core-js/es/array/find.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/modules/es.object.assign.js","../node_modules/core-js/es/object/assign.js","../node_modules/core-js/internals/object-to-array.js","../node_modules/core-js/modules/es.object.entries.js","../node_modules/core-js/es/object/entries.js","../node_modules/core-js/modules/es.object.values.js","../node_modules/core-js/es/object/values.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/modules/es.aggregate-error.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/native-promise-constructor.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/engine-is-webos-webkit.js","../node_modules/core-js/internals/microtask.js","../node_modules/core-js/internals/new-promise-capability.js","../node_modules/core-js/internals/promise-resolve.js","../node_modules/core-js/internals/host-report-errors.js","../node_modules/core-js/internals/perform.js","../node_modules/core-js/internals/engine-is-browser.js","../node_modules/core-js/modules/es.promise.js","../node_modules/core-js/modules/es.promise.all-settled.js","../node_modules/core-js/modules/es.promise.any.js","../node_modules/core-js/modules/es.promise.finally.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/es/promise/index.js","../node_modules/core-js/modules/esnext.promise.try.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/internals/not-a-regexp.js","../node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/core-js/modules/es.string.starts-with.js","../node_modules/core-js/es/string/starts-with.js","../node_modules/whatwg-fetch/fetch.js","../js/dom/polyfills/modules/es.element.get-attribute-names.js","../js/dom/polyfills/modules/es.element.matches.js","../js/dom/polyfills/modules/es.element.closest.js","../js/connection/index.js","../js/action/method.js","../js/component/Polling.js","../js/Message.js","../js/PrefetchMessage.js","../js/dom/morphdom/morphAttrs.js","../js/dom/morphdom/specialElHandlers.js","../js/dom/morphdom/util.js","../js/dom/morphdom/morphdom.js","../js/dom/morphdom/index.js","../js/action/model.js","../js/action/deferred-model.js","../js/node_initializer.js","../js/component/PrefetchManager.js","../js/component/LoadingStates.js","../js/MessageBag.js","../js/component/UploadManager.js","../js/component/SupportAlpine.js","../js/component/index.js","../js/component/FileUploads.js","../js/component/LaravelEcho.js","../js/component/DirtyStates.js","../js/component/DisableForms.js","../js/component/FileDownloads.js","../js/component/OfflineStates.js","../js/component/SyncBrowserHistory.js","../js/component/SupportStacks.js","../js/index.js"],"sourcesContent":["export function debounce(func, wait, immediate) {\n    var timeout\n    return function () {\n        var context = this,\n            args = arguments\n        var later = function () {\n            timeout = null\n            if (!immediate) func.apply(context, args)\n        }\n        var callNow = immediate && !timeout\n        clearTimeout(timeout)\n        timeout = setTimeout(later, wait)\n        if (callNow) func.apply(context, args)\n    }\n}\n","export function wireDirectives(el) {\n    return new DirectiveManager(el)\n}\n\nclass DirectiveManager {\n    constructor(el) {\n        this.el = el\n        this.directives = this.extractTypeModifiersAndValue()\n    }\n\n    all() {\n        return this.directives\n    }\n\n    has(type) {\n        return this.directives.map(directive => directive.type).includes(type)\n    }\n\n    missing(type) {\n        return !this.has(type)\n    }\n\n    get(type) {\n        return this.directives.find(directive => directive.type === type)\n    }\n\n    extractTypeModifiersAndValue() {\n        return Array.from(this.el.getAttributeNames()\n            // Filter only the livewire directives.\n            .filter(name => name.match(new RegExp('wire:')))\n            // Parse out the type, modifiers, and value from it.\n            .map(name => {\n                const [type, ...modifiers] = name.replace(new RegExp('wire:'), '').split('.')\n\n                return new Directive(type, modifiers, name, this.el)\n            }))\n    }\n}\n\nclass Directive {\n    constructor(type, modifiers, rawName, el) {\n        this.type = type\n        this.modifiers = modifiers\n        this.rawName = rawName\n        this.el = el\n        this.eventContext\n    }\n\n    setEventContext(context) {\n        this.eventContext = context\n    }\n\n    get value() {\n        return this.el.getAttribute(this.rawName)\n    }\n\n    get method() {\n        const { method } = this.parseOutMethodAndParams(this.value)\n\n        return method\n    }\n\n    get params() {\n        const { params } = this.parseOutMethodAndParams(this.value)\n\n        return params\n    }\n\n    durationOr(defaultDuration) {\n        let durationInMilliSeconds\n        const durationInMilliSecondsString = this.modifiers.find(mod => mod.match(/([0-9]+)ms/))\n        const durationInSecondsString = this.modifiers.find(mod => mod.match(/([0-9]+)s/))\n\n        if (durationInMilliSecondsString) {\n            durationInMilliSeconds = Number(durationInMilliSecondsString.replace('ms', ''))\n        } else if (durationInSecondsString) {\n            durationInMilliSeconds = Number(durationInSecondsString.replace('s', '')) * 1000\n        }\n\n        return durationInMilliSeconds || defaultDuration\n    }\n\n    parseOutMethodAndParams(rawMethod) {\n        let method = rawMethod\n        let params = []\n        const methodAndParamString = method.match(/(.*?)\\((.*)\\)/s)\n\n        if (methodAndParamString) {\n            method = methodAndParamString[1]\n\n            // Use a function that returns it's arguments to parse and eval all params\n            // This \"$event\" is for use inside the livewire event handler.\n            let func = new Function('$event', `return (function () {\n                for (var l=arguments.length, p=new Array(l), k=0; k<l; k++) {\n                    p[k] = arguments[k];\n                }\n                return [].concat(p);\n            })(${methodAndParamString[2]})`)\n\n            params = func(this.eventContext)\n        }\n\n        return { method, params }\n    }\n\n    cardinalDirectionOr(fallback = 'right') {\n        if (this.modifiers.includes('up')) return 'up'\n        if (this.modifiers.includes('down')) return 'down'\n        if (this.modifiers.includes('left')) return 'left'\n        if (this.modifiers.includes('right')) return 'right'\n        return fallback\n    }\n}\n","\n// A little DOM-tree walker.\n// (TreeWalker won't do because I need to conditionaly ignore sub-trees using the callback)\nexport function walk(root, callback) {\n    if (callback(root) === false) return\n\n    let node = root.firstElementChild\n\n    while (node) {\n        walk(node, callback)\n        node = node.nextElementSibling\n    }\n}\n","export function dispatch(eventName) {\n    const event = document.createEvent('Events')\n\n    event.initEvent(eventName, true, true)\n\n    document.dispatchEvent(event)\n\n    return event\n}\n","export function getCsrfToken() {\n    const tokenTag = document.head.querySelector('meta[name=\"csrf-token\"]')\n\n    if (tokenTag) {\n        return tokenTag.content\n    }\n\n    return window.livewire_token ?? undefined\n}\n","\nexport * from './debounce'\nexport * from './wire-directives'\nexport * from './walk'\nexport * from './dispatch'\nexport * from './getCsrfToken'\n\nexport function kebabCase(subject) {\n    return subject.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[_\\s]/, '-').toLowerCase()\n}\n\nexport function tap(output, callback) {\n    callback(output)\n\n    return output\n}\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n  return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nconst isObject = require('isobject');\n\nmodule.exports = function(target, path, options) {\n  if (!isObject(options)) {\n    options = { default: options };\n  }\n\n  if (!isValidObject(target)) {\n    return typeof options.default !== 'undefined' ? options.default : target;\n  }\n\n  if (typeof path === 'number') {\n    path = String(path);\n  }\n\n  const isArray = Array.isArray(path);\n  const isString = typeof path === 'string';\n  const splitChar = options.separator || '.';\n  const joinChar = options.joinChar || (typeof splitChar === 'string' ? splitChar : '.');\n\n  if (!isString && !isArray) {\n    return target;\n  }\n\n  if (isString && path in target) {\n    return isValid(path, target, options) ? target[path] : options.default;\n  }\n\n  let segs = isArray ? path : split(path, splitChar, options);\n  let len = segs.length;\n  let idx = 0;\n\n  do {\n    let prop = segs[idx];\n    if (typeof prop === 'number') {\n      prop = String(prop);\n    }\n\n    while (prop && prop.slice(-1) === '\\\\') {\n      prop = join([prop.slice(0, -1), segs[++idx] || ''], joinChar, options);\n    }\n\n    if (prop in target) {\n      if (!isValid(prop, target, options)) {\n        return options.default;\n      }\n\n      target = target[prop];\n    } else {\n      let hasProp = false;\n      let n = idx + 1;\n\n      while (n < len) {\n        prop = join([prop, segs[n++]], joinChar, options);\n\n        if ((hasProp = prop in target)) {\n          if (!isValid(prop, target, options)) {\n            return options.default;\n          }\n\n          target = target[prop];\n          idx = n - 1;\n          break;\n        }\n      }\n\n      if (!hasProp) {\n        return options.default;\n      }\n    }\n  } while (++idx < len && isValidObject(target));\n\n  if (idx === len) {\n    return target;\n  }\n\n  return options.default;\n};\n\nfunction join(segs, joinChar, options) {\n  if (typeof options.join === 'function') {\n    return options.join(segs);\n  }\n  return segs[0] + joinChar + segs[1];\n}\n\nfunction split(path, splitChar, options) {\n  if (typeof options.split === 'function') {\n    return options.split(path);\n  }\n  return path.split(splitChar);\n}\n\nfunction isValid(key, target, options) {\n  if (typeof options.isValid === 'function') {\n    return options.isValid(key, target);\n  }\n  return true;\n}\n\nfunction isValidObject(val) {\n  return isObject(val) || Array.isArray(val) || typeof val === 'function';\n}\n","export default class {\n    constructor(el, skipWatcher = false) {\n        this.el = el\n        this.skipWatcher = skipWatcher\n        this.resolveCallback = () => { }\n        this.rejectCallback = () => { }\n        this.signature = (Math.random() + 1).toString(36).substring(8)\n    }\n\n    toId() {\n        return btoa(encodeURIComponent(this.el.outerHTML))\n    }\n\n    onResolve(callback) {\n        this.resolveCallback = callback\n    }\n\n    onReject(callback) {\n        this.rejectCallback = callback\n    }\n\n    resolve(thing) {\n        this.resolveCallback(thing)\n    }\n\n    reject(thing) {\n        this.rejectCallback(thing)\n    }\n}\n","import Action from '.'\n\nexport default class extends Action {\n    constructor(event, params, el) {\n        super(el)\n\n        this.type = 'fireEvent'\n        this.payload = {\n            id: this.signature,\n            event,\n            params,\n        }\n    }\n\n    // Overriding toId() becuase some EventActions don't have an \"el\"\n    toId() {\n        return btoa(encodeURIComponent(this.type, this.payload.event, JSON.stringify(this.payload.params)))\n    }\n}\n","\nexport default class MessageBus {\n    constructor() {\n        this.listeners = {}\n    }\n\n    register(name, callback) {\n        if (! this.listeners[name]) {\n            this.listeners[name] = []\n        }\n\n        this.listeners[name].push(callback)\n    }\n\n    call(name, ...params) {\n        (this.listeners[name] || []).forEach(callback => {\n            callback(...params)\n        })\n    }\n\n    has(name) {\n        return Object.keys(this.listeners).includes(name)\n    }\n}\n","import MessageBus from './MessageBus'\n\nexport default {\n    availableHooks: [\n        /**\n         * Public Hooks\n         */\n        'component.initialized',\n        'element.initialized',\n        'element.updating',\n        'element.updated',\n        'element.removed',\n        'message.sent',\n        'message.failed',\n        'message.received',\n        'message.processed',\n\n        /**\n         * Private Hooks\n         */\n        'interceptWireModelSetValue',\n        'interceptWireModelAttachListener',\n        'beforeReplaceState',\n        'beforePushState',\n    ],\n\n    bus: new MessageBus(),\n\n    register(name, callback) {\n        if (! this.availableHooks.includes(name)) {\n            throw `Livewire: Referencing unknown hook: [${name}]`\n        }\n\n        this.bus.register(name, callback)\n    },\n\n    call(name, ...params) {\n        this.bus.call(name, ...params)\n    },\n}\n","import MessageBus from \"./MessageBus\"\n\nexport default {\n    directives: new MessageBus,\n\n    register(name, callback) {\n        if (this.has(name)) {\n            throw `Livewire: Directive already registered: [${name}]`\n        }\n\n        this.directives.register(name, callback)\n    },\n\n    call(name, el, directive, component) {\n        this.directives.call(name, el, directive, component)\n    },\n\n    has(name) {\n        return this.directives.has(name)\n    },\n}\n","import EventAction from '@/action/event'\nimport HookManager from '@/HookManager'\nimport MessageBus from './MessageBus'\nimport DirectiveManager from './DirectiveManager'\n\nconst store = {\n    componentsById: {},\n    listeners: new MessageBus(),\n    initialRenderIsFinished: false,\n    livewireIsInBackground: false,\n    livewireIsOffline: false,\n    sessionHasExpired: false,\n    sessionHasExpiredCallback: undefined,\n    directives: DirectiveManager,\n    hooks: HookManager,\n    onErrorCallback: () => { },\n\n    components() {\n        return Object.keys(this.componentsById).map(key => {\n            return this.componentsById[key]\n        })\n    },\n\n    addComponent(component) {\n        return (this.componentsById[component.id] = component)\n    },\n\n    findComponent(id) {\n        return this.componentsById[id]\n    },\n\n    getComponentsByName(name) {\n        return this.components().filter(component => {\n            return component.name === name\n        })\n    },\n\n    hasComponent(id) {\n        return !!this.componentsById[id]\n    },\n\n    tearDownComponents() {\n        this.components().forEach(component => {\n            this.removeComponent(component)\n        })\n    },\n\n    on(event, callback) {\n        this.listeners.register(event, callback)\n    },\n\n    emit(event, ...params) {\n        this.listeners.call(event, ...params)\n\n        this.componentsListeningForEvent(event).forEach(component =>\n            component.addAction(new EventAction(event, params))\n        )\n    },\n\n    emitUp(el, event, ...params) {\n        this.componentsListeningForEventThatAreTreeAncestors(\n            el,\n            event\n        ).forEach(component =>\n            component.addAction(new EventAction(event, params))\n        )\n    },\n\n    emitSelf(componentId, event, ...params) {\n        let component = this.findComponent(componentId)\n\n        if (component.listeners.includes(event)) {\n            component.addAction(new EventAction(event, params))\n        }\n    },\n\n    emitTo(componentName, event, ...params) {\n        let components = this.getComponentsByName(componentName)\n\n        components.forEach(component => {\n            if (component.listeners.includes(event)) {\n                component.addAction(new EventAction(event, params))\n            }\n        })\n    },\n\n    componentsListeningForEventThatAreTreeAncestors(el, event) {\n        var parentIds = []\n\n        var parent = el.parentElement.closest('[wire\\\\:id]')\n\n        while (parent) {\n            parentIds.push(parent.getAttribute('wire:id'))\n\n            parent = parent.parentElement.closest('[wire\\\\:id]')\n        }\n\n        return this.components().filter(component => {\n            return (\n                component.listeners.includes(event) &&\n                parentIds.includes(component.id)\n            )\n        })\n    },\n\n    componentsListeningForEvent(event) {\n        return this.components().filter(component => {\n            return component.listeners.includes(event)\n        })\n    },\n\n    registerDirective(name, callback) {\n        this.directives.register(name, callback)\n    },\n\n    registerHook(name, callback) {\n        this.hooks.register(name, callback)\n    },\n\n    callHook(name, ...params) {\n        this.hooks.call(name, ...params)\n    },\n\n    changeComponentId(component, newId) {\n        let oldId = component.id\n\n        component.id = newId\n        component.fingerprint.id = newId\n\n        this.componentsById[newId] = component\n\n        delete this.componentsById[oldId]\n\n        // Now go through any parents of this component and change\n        // the component's child id references.\n        this.components().forEach(component => {\n            let children = component.serverMemo.children || {}\n\n            Object.entries(children).forEach(([key, { id, tagName }]) => {\n                if (id === oldId) {\n                    children[key].id = newId\n                }\n            })\n        })\n    },\n\n    removeComponent(component) {\n        // Remove event listeners attached to the DOM.\n        component.tearDown()\n        // Remove the component from the store.\n        delete this.componentsById[component.id]\n    },\n\n    onError(callback) {\n        this.onErrorCallback = callback\n    },\n\n    getClosestParentId(childId, subsetOfParentIds) {\n        let distancesByParentId = {}\n\n        subsetOfParentIds.forEach(parentId => {\n            let distance = this.getDistanceToChild(parentId, childId)\n\n            if (distance) distancesByParentId[parentId] = distance\n        })\n\n        let smallestDistance =  Math.min(...Object.values(distancesByParentId))\n\n        let closestParentId\n\n        Object.entries(distancesByParentId).forEach(([parentId, distance]) => {\n            if (distance === smallestDistance) closestParentId = parentId\n        })\n\n        return closestParentId\n    },\n\n    getDistanceToChild(parentId, childId, distanceMemo = 1) {\n        let parentComponent = this.findComponent(parentId)\n\n        if (! parentComponent) return\n\n        let childIds = parentComponent.childIds\n\n        if (childIds.includes(childId)) return distanceMemo\n\n        for (let i = 0; i < childIds.length; i++) {\n            let distance = this.getDistanceToChild(childIds[i], childId, distanceMemo + 1)\n\n            if (distance) return distance\n        }\n    }\n}\n\nexport default store\n","import { wireDirectives } from '@/util'\nimport get from 'get-value'\nimport store from '@/Store'\n\n/**\n * This is intended to isolate all native DOM operations. The operations that happen\n * one specific element will be instance methods, the operations you would normally\n * perform on the \"document\" (like \"document.querySelector\") will be static methods.\n */\nexport default {\n    rootComponentElements() {\n        return Array.from(document.querySelectorAll(`[wire\\\\:id]`))\n    },\n\n    rootComponentElementsWithNoParents(node = null) {\n        if (node === null) {\n            node = document\n        }\n\n        // In CSS, it's simple to select all elements that DO have a certain ancestor.\n        // However, it's not simple (kinda impossible) to select elements that DONT have\n        // a certain ancestor. Therefore, we will flip the logic: select all roots that DO have\n        // have a root ancestor, then select all roots that DONT, then diff the two.\n\n        // Convert NodeLists to Arrays so we can use \".includes()\". Ew.\n        const allEls = Array.from(node.querySelectorAll(`[wire\\\\:initial-data]`))\n        const onlyChildEls = Array.from(node.querySelectorAll(`[wire\\\\:initial-data] [wire\\\\:initial-data]`))\n\n        return allEls.filter(el => !onlyChildEls.includes(el))\n    },\n\n    allModelElementsInside(root) {\n        return Array.from(root.querySelectorAll(`[wire\\\\:model]`))\n    },\n\n    getByAttributeAndValue(attribute, value) {\n        return document.querySelector(`[wire\\\\:${attribute}=\"${value}\"]`)\n    },\n\n    nextFrame(fn) {\n        requestAnimationFrame(() => {\n            requestAnimationFrame(fn.bind(this))\n        })\n    },\n\n    closestRoot(el) {\n        return this.closestByAttribute(el, 'id')\n    },\n\n    closestByAttribute(el, attribute) {\n        const closestEl = el.closest(`[wire\\\\:${attribute}]`)\n\n        if (! closestEl) {\n            throw `\nLivewire Error:\\n\nCannot find parent element in DOM tree containing attribute: [wire:${attribute}].\\n\nUsually this is caused by Livewire's DOM-differ not being able to properly track changes.\\n\nReference the following guide for common causes: https://laravel-livewire.com/docs/troubleshooting \\n\nReferenced element:\\n\n${el.outerHTML}\n`\n        }\n\n        return closestEl\n    },\n\n    isComponentRootEl(el) {\n        return this.hasAttribute(el, 'id')\n    },\n\n    hasAttribute(el, attribute) {\n        return el.hasAttribute(`wire:${attribute}`)\n    },\n\n    getAttribute(el, attribute) {\n        return el.getAttribute(`wire:${attribute}`)\n    },\n\n    removeAttribute(el, attribute) {\n        return el.removeAttribute(`wire:${attribute}`)\n    },\n\n    setAttribute(el, attribute, value) {\n        return el.setAttribute(`wire:${attribute}`, value)\n    },\n\n    hasFocus(el) {\n        return el === document.activeElement\n    },\n\n    isInput(el) {\n        return ['INPUT', 'TEXTAREA', 'SELECT'].includes(\n            el.tagName.toUpperCase()\n        )\n    },\n\n    isTextInput(el) {\n        return (\n            ['INPUT', 'TEXTAREA'].includes(el.tagName.toUpperCase()) &&\n            !['checkbox', 'radio'].includes(el.type)\n        )\n    },\n\n    valueFromInput(el, component) {\n        if (el.type === 'checkbox') {\n            let modelName = wireDirectives(el).get('model').value\n            // If there is an update from wire:model.defer in the chamber,\n            // we need to pretend that is the actual data from the server.\n            let modelValue = component.deferredActions[modelName]\n                ? component.deferredActions[modelName].payload.value\n                : get(component.data, modelName)\n\n            if (Array.isArray(modelValue)) {\n                return this.mergeCheckboxValueIntoArray(el, modelValue)\n            }\n\n            if (el.checked) {\n                return el.getAttribute('value') || true\n            } else {\n                return false\n            }\n        } else if (el.tagName === 'SELECT' && el.multiple) {\n            return this.getSelectValues(el)\n        }\n\n        return el.value\n    },\n\n    mergeCheckboxValueIntoArray(el, arrayValue) {\n        if (el.checked) {\n            return arrayValue.includes(el.value)\n                ? arrayValue\n                : arrayValue.concat(el.value)\n        }\n\n        return arrayValue.filter(item => item != el.value)\n    },\n\n    setInputValueFromModel(el, component) {\n        const modelString = wireDirectives(el).get('model').value\n        const modelValue = get(component.data, modelString)\n\n        // Don't manually set file input's values.\n        if (\n            el.tagName.toLowerCase() === 'input' &&\n            el.type === 'file'\n        )\n            return\n\n        this.setInputValue(el, modelValue)\n    },\n\n    setInputValue(el, value) {\n        store.callHook('interceptWireModelSetValue', value, el)\n\n        if (el.type === 'radio') {\n            el.checked = el.value == value\n        } else if (el.type === 'checkbox') {\n            if (Array.isArray(value)) {\n                // I'm purposely not using Array.includes here because it's\n                // strict, and because of Numeric/String mis-casting, I\n                // want the \"includes\" to be \"fuzzy\".\n                let valueFound = false\n                value.forEach(val => {\n                    if (val == el.value) {\n                        valueFound = true\n                    }\n                })\n\n                el.checked = valueFound\n            } else {\n                el.checked = !!value\n            }\n        } else if (el.tagName === 'SELECT') {\n            this.updateSelect(el, value)\n        } else {\n            value = value === undefined ? '' : value\n\n            el.value = value\n        }\n    },\n\n    getSelectValues(el) {\n        return Array.from(el.options)\n            .filter(option => option.selected)\n            .map(option => {\n                return option.value || option.text\n            })\n    },\n\n    updateSelect(el, value) {\n        const arrayWrappedValue = [].concat(value).map(value => {\n            return value + ''\n        })\n\n        Array.from(el.options).forEach(option => {\n            option.selected = arrayWrappedValue.includes(option.value)\n        })\n    }\n}\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty.call(toObject(it), key);\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.15.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var state;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) {\n      createNonEnumerableProperty(value, 'name', key);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject -- old IE */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","module.exports = {};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n","module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n  var returnMethod = iterator['return'];\n  if (returnMethod !== undefined) {\n    return anObject(returnMethod.call(iterator)).value;\n  }\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator);\n    throw error;\n  }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n","require('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n  var element;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n      } else {\n        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = toLength(O.length);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n    return A;\n  }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","require('../../modules/es.array.flat');\nrequire('../../modules/es.array.unscopables.flat');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'flat');\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_OUT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterOut\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterOut` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterOut: createMethod(7)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","require('../../modules/es.array.find');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'find');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = toLength(iterable.length); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = iterFn.call(iterable);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator);\n      throw error;\n    }\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar iterate = require('../internals/iterate');\n\nvar $AggregateError = function AggregateError(errors, message) {\n  var that = this;\n  if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n  if (setPrototypeOf) {\n    // eslint-disable-next-line unicorn/error-message -- expected\n    that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));\n  var errorsArray = [];\n  iterate(errors, errorsArray.push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n  constructor: createPropertyDescriptor(5, $AggregateError),\n  message: createPropertyDescriptor(5, ''),\n  name: createPropertyDescriptor(5, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n  AggregateError: $AggregateError\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func -- spec requirement\n      (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    typeof postMessage == 'function' &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = promise.then;\n    notify = function () {\n      then.call(promise, flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","module.exports = typeof window == 'object';\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n  if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  task.call(global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  task.call(global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          then.call(value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromiseConstructor, PROMISE);\n    aFunction(executor);\n    Internal.call(this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n  PromiseConstructorPrototype = PromiseConstructor.prototype;\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      state.reactions.push(reaction);\n      if (state.state != PENDING) notify(state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          nativeThen.call(that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n\n      // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n      redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.es/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    capability.reject.call(undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.es/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.es/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        $promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.es/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      iterate(iterable, function (promise) {\n        $promiseResolve.call(C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n  any: function any(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aFunction(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        errors.push(undefined);\n        remaining++;\n        promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = typeof onFinally == 'function';\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && typeof NativePromise == 'function') {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromise.prototype['finally'] !== method) {\n    redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n  }\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n  'try': function (callbackfn) {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(callbackfn);\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = String(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","var global =\n  (typeof globalThis !== 'undefined' && globalThis) ||\n  (typeof self !== 'undefined' && self) ||\n  (typeof global !== 'undefined' && global)\n\nvar support = {\n  searchParams: 'URLSearchParams' in global,\n  iterable: 'Symbol' in global && 'iterator' in Symbol,\n  blob:\n    'FileReader' in global &&\n    'Blob' in global &&\n    (function() {\n      try {\n        new Blob()\n        return true\n      } catch (e) {\n        return false\n      }\n    })(),\n  formData: 'FormData' in global,\n  arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n  var viewClasses = [\n    '[object Int8Array]',\n    '[object Uint8Array]',\n    '[object Uint8ClampedArray]',\n    '[object Int16Array]',\n    '[object Uint16Array]',\n    '[object Int32Array]',\n    '[object Uint32Array]',\n    '[object Float32Array]',\n    '[object Float64Array]'\n  ]\n\n  var isArrayBufferView =\n    ArrayBuffer.isView ||\n    function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n}\n\nfunction normalizeName(name) {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n    throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n  }\n  return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n  return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n  var iterator = {\n    next: function() {\n      var value = items.shift()\n      return {done: value === undefined, value: value}\n    }\n  }\n\n  if (support.iterable) {\n    iterator[Symbol.iterator] = function() {\n      return iterator\n    }\n  }\n\n  return iterator\n}\n\nexport function Headers(headers) {\n  this.map = {}\n\n  if (headers instanceof Headers) {\n    headers.forEach(function(value, name) {\n      this.append(name, value)\n    }, this)\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      this.append(header[0], header[1])\n    }, this)\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name])\n    }, this)\n  }\n}\n\nHeaders.prototype.append = function(name, value) {\n  name = normalizeName(name)\n  value = normalizeValue(value)\n  var oldValue = this.map[name]\n  this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n  delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n  name = normalizeName(name)\n  return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this)\n    }\n  }\n}\n\nHeaders.prototype.keys = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push(name)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n  var items = []\n  this.forEach(function(value) {\n    items.push(value)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push([name, value])\n  })\n  return iteratorFor(items)\n}\n\nif (support.iterable) {\n  Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError('Already read'))\n  }\n  body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve, reject) {\n    reader.onload = function() {\n      resolve(reader.result)\n    }\n    reader.onerror = function() {\n      reject(reader.error)\n    }\n  })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsArrayBuffer(blob)\n  return promise\n}\n\nfunction readBlobAsText(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsText(blob)\n  return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf)\n  var chars = new Array(view.length)\n\n  for (var i = 0; i < view.length; i++) {\n    chars[i] = String.fromCharCode(view[i])\n  }\n  return chars.join('')\n}\n\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0)\n  } else {\n    var view = new Uint8Array(buf.byteLength)\n    view.set(new Uint8Array(buf))\n    return view.buffer\n  }\n}\n\nfunction Body() {\n  this.bodyUsed = false\n\n  this._initBody = function(body) {\n    /*\n      fetch-mock wraps the Response object in an ES6 Proxy to\n      provide useful test harness features such as flush. However, on\n      ES5 browsers without fetch or Proxy support pollyfills must be used;\n      the proxy-pollyfill is unable to proxy an attribute unless it exists\n      on the object before the Proxy is created. This change ensures\n      Response.bodyUsed exists on the instance, while maintaining the\n      semantic of setting Request.bodyUsed in the constructor before\n      _initBody is called.\n    */\n    this.bodyUsed = this.bodyUsed\n    this._bodyInit = body\n    if (!body) {\n      this._bodyText = ''\n    } else if (typeof body === 'string') {\n      this._bodyText = body\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString()\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer)\n      // IE 10-11 can't handle a DataView body.\n      this._bodyInit = new Blob([this._bodyArrayBuffer])\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body)\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body)\n    }\n\n    if (!this.headers.get('content-type')) {\n      if (typeof body === 'string') {\n        this.headers.set('content-type', 'text/plain;charset=UTF-8')\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set('content-type', this._bodyBlob.type)\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n      }\n    }\n  }\n\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as blob')\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]))\n      }\n    }\n\n    this.arrayBuffer = function() {\n      if (this._bodyArrayBuffer) {\n        var isConsumed = consumed(this)\n        if (isConsumed) {\n          return isConsumed\n        }\n        if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n          return Promise.resolve(\n            this._bodyArrayBuffer.buffer.slice(\n              this._bodyArrayBuffer.byteOffset,\n              this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n            )\n          )\n        } else {\n          return Promise.resolve(this._bodyArrayBuffer)\n        }\n      } else {\n        return this.blob().then(readBlobAsArrayBuffer)\n      }\n    }\n  }\n\n  this.text = function() {\n    var rejected = consumed(this)\n    if (rejected) {\n      return rejected\n    }\n\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob)\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n    } else if (this._bodyFormData) {\n      throw new Error('could not read FormData body as text')\n    } else {\n      return Promise.resolve(this._bodyText)\n    }\n  }\n\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode)\n    }\n  }\n\n  this.json = function() {\n    return this.text().then(JSON.parse)\n  }\n\n  return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase()\n  return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n  if (!(this instanceof Request)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n\n  options = options || {}\n  var body = options.body\n\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError('Already read')\n    }\n    this.url = input.url\n    this.credentials = input.credentials\n    if (!options.headers) {\n      this.headers = new Headers(input.headers)\n    }\n    this.method = input.method\n    this.mode = input.mode\n    this.signal = input.signal\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit\n      input.bodyUsed = true\n    }\n  } else {\n    this.url = String(input)\n  }\n\n  this.credentials = options.credentials || this.credentials || 'same-origin'\n  if (options.headers || !this.headers) {\n    this.headers = new Headers(options.headers)\n  }\n  this.method = normalizeMethod(options.method || this.method || 'GET')\n  this.mode = options.mode || this.mode || null\n  this.signal = options.signal || this.signal\n  this.referrer = null\n\n  if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n    throw new TypeError('Body not allowed for GET or HEAD requests')\n  }\n  this._initBody(body)\n\n  if (this.method === 'GET' || this.method === 'HEAD') {\n    if (options.cache === 'no-store' || options.cache === 'no-cache') {\n      // Search for a '_' parameter in the query string\n      var reParamSearch = /([?&])_=[^&]*/\n      if (reParamSearch.test(this.url)) {\n        // If it already exists then set the value with the current time\n        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n      } else {\n        // Otherwise add a new '_' parameter to the end with the current time\n        var reQueryString = /\\?/\n        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n      }\n    }\n  }\n}\n\nRequest.prototype.clone = function() {\n  return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n  var form = new FormData()\n  body\n    .trim()\n    .split('&')\n    .forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n  return form\n}\n\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers()\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n  // https://github.com/github/fetch/issues/748\n  // https://github.com/zloirock/core-js/issues/751\n  preProcessedHeaders\n    .split('\\r')\n    .map(function(header) {\n      return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n    })\n    .forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        headers.append(key, value)\n      }\n    })\n  return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n  if (!(this instanceof Response)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n  if (!options) {\n    options = {}\n  }\n\n  this.type = 'default'\n  this.status = options.status === undefined ? 200 : options.status\n  this.ok = this.status >= 200 && this.status < 300\n  this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n  this.headers = new Headers(options.headers)\n  this.url = options.url || ''\n  this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers(this.headers),\n    url: this.url\n  })\n}\n\nResponse.error = function() {\n  var response = new Response(null, {status: 0, statusText: ''})\n  response.type = 'error'\n  return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError('Invalid status code')\n  }\n\n  return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n  new DOMException()\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message\n    this.name = name\n    var error = Error(message)\n    this.stack = error.stack\n  }\n  DOMException.prototype = Object.create(Error.prototype)\n  DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n  return new Promise(function(resolve, reject) {\n    var request = new Request(input, init)\n\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    var xhr = new XMLHttpRequest()\n\n    function abortXhr() {\n      xhr.abort()\n    }\n\n    xhr.onload = function() {\n      var options = {\n        status: xhr.status,\n        statusText: xhr.statusText,\n        headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n      }\n      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n      var body = 'response' in xhr ? xhr.response : xhr.responseText\n      setTimeout(function() {\n        resolve(new Response(body, options))\n      }, 0)\n    }\n\n    xhr.onerror = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.ontimeout = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.onabort = function() {\n      setTimeout(function() {\n        reject(new DOMException('Aborted', 'AbortError'))\n      }, 0)\n    }\n\n    function fixUrl(url) {\n      try {\n        return url === '' && global.location.href ? global.location.href : url\n      } catch (e) {\n        return url\n      }\n    }\n\n    xhr.open(request.method, fixUrl(request.url), true)\n\n    if (request.credentials === 'include') {\n      xhr.withCredentials = true\n    } else if (request.credentials === 'omit') {\n      xhr.withCredentials = false\n    }\n\n    if ('responseType' in xhr) {\n      if (support.blob) {\n        xhr.responseType = 'blob'\n      } else if (\n        support.arrayBuffer &&\n        request.headers.get('Content-Type') &&\n        request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n      ) {\n        xhr.responseType = 'arraybuffer'\n      }\n    }\n\n    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n      Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n      })\n    } else {\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n    }\n\n    if (request.signal) {\n      request.signal.addEventListener('abort', abortXhr)\n\n      xhr.onreadystatechange = function() {\n        // DONE (success or failure)\n        if (xhr.readyState === 4) {\n          request.signal.removeEventListener('abort', abortXhr)\n        }\n      }\n    }\n\n    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n  })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n  global.fetch = fetch\n  global.Headers = Headers\n  global.Request = Request\n  global.Response = Response\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNames#Polyfill\nif (Element.prototype.getAttributeNames == undefined) {\n    Element.prototype.getAttributeNames = function () {\n        var attributes = this.attributes;\n        var length = attributes.length;\n        var result = new Array(length);\n        for (var i = 0; i < length; i++) {\n            result[i] = attributes[i].name;\n        }\n        return result;\n    };\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n    Element.prototype.matches =\n        Element.prototype.matchesSelector ||\n        Element.prototype.mozMatchesSelector ||\n        Element.prototype.msMatchesSelector ||\n        Element.prototype.oMatchesSelector ||\n        Element.prototype.webkitMatchesSelector ||\n        function(s) {\n            var matches = (this.document || this.ownerDocument).querySelectorAll(s),\n                i = matches.length;\n            while (--i >= 0 && matches.item(i) !== this) {}\n            return i > -1;\n        };\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.matches) {\n    Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n}\n\nif (!Element.prototype.closest) {\n    Element.prototype.closest = function(s) {\n        var el = this;\n\n        do {\n            if (el.matches(s)) return el;\n            el = el.parentElement || el.parentNode;\n        } while (el !== null && el.nodeType === 1);\n\n        return null;\n    };\n}\n","import store from '@/Store'\nimport componentStore from '../Store'\nimport { getCsrfToken } from '@/util'\n\nexport default class Connection {\n    constructor() {\n        this.headers = {}\n    }\n\n    onMessage(message, payload) {\n        message.component.receiveMessage(message, payload)\n    }\n\n    onError(message, status, response) {\n        message.component.messageSendFailed()\n\n        return componentStore.onErrorCallback(status, response)\n    }\n\n    showExpiredMessage(response, message) {\n        if (store.sessionHasExpiredCallback) {\n            store.sessionHasExpiredCallback(response, message)\n        } else {\n            confirm(\n                'This page has expired.\\nWould you like to refresh the page?'\n            ) && window.location.reload()\n        }\n    }\n\n    sendMessage(message) {\n        let payload = message.payload()\n        let csrfToken = getCsrfToken()\n        let socketId = this.getSocketId()\n\n        if (window.__testing_request_interceptor) {\n            return window.__testing_request_interceptor(payload, this)\n        }\n\n        // Forward the query string for the ajax requests.\n        fetch(\n            `${window.livewire_app_url}/livewire/message/${payload.fingerprint.name}`,\n            {\n                method: 'POST',\n                body: JSON.stringify(payload),\n                // This enables \"cookies\".\n                credentials: 'same-origin',\n                headers: {\n                    'Content-Type': 'application/json',\n                    'Accept': 'text/html, application/xhtml+xml',\n                    'X-Livewire': true,\n\n                    // set Custom Headers\n                    ...(this.headers),\n\n                    // We'll set this explicitly to mitigate potential interference from ad-blockers/etc.\n                    'Referer': window.location.href,\n                    ...(csrfToken && { 'X-CSRF-TOKEN': csrfToken }),\n                    ...(socketId && { 'X-Socket-ID': socketId })\n                },\n            }\n        )\n            .then(response => {\n                if (response.ok) {\n                    response.text().then(response => {\n                        if (this.isOutputFromDump(response)) {\n                            this.onError(message)\n                            this.showHtmlModal(response)\n                        } else {\n                            this.onMessage(message, JSON.parse(response))\n                        }\n                    })\n                } else {\n                    if (this.onError(message, response.status, response) === false) return\n\n                    if (response.status === 419) {\n                        if (store.sessionHasExpired) return\n\n                        store.sessionHasExpired = true\n\n                        this.showExpiredMessage(response, message)\n                    } else {\n                        response.text().then(response => {\n                            this.showHtmlModal(response)\n                        })\n                    }\n                }\n            })\n            .catch(() => {\n                this.onError(message)\n            })\n    }\n\n    isOutputFromDump(output) {\n        return !!output.match(/<script>Sfdump\\(\".+\"\\)<\\/script>/)\n    }\n\n    getSocketId() {\n        if (typeof Echo !== 'undefined') {\n            return Echo.socketId()\n        }\n    }\n\n    // This code and concept is all Jonathan Reinink - thanks main!\n    showHtmlModal(html) {\n        let page = document.createElement('html')\n        page.innerHTML = html\n        page.querySelectorAll('a').forEach(a =>\n            a.setAttribute('target', '_top')\n        )\n\n        let modal = document.getElementById('livewire-error')\n\n        if (typeof modal != 'undefined' && modal != null) {\n            // Modal already exists.\n            modal.innerHTML = ''\n        } else {\n            modal = document.createElement('div')\n            modal.id = 'livewire-error'\n            modal.style.position = 'fixed'\n            modal.style.width = '100vw'\n            modal.style.height = '100vh'\n            modal.style.padding = '50px'\n            modal.style.backgroundColor = 'rgba(0, 0, 0, .6)'\n            modal.style.zIndex = 200000\n        }\n\n        let iframe = document.createElement('iframe')\n        iframe.style.backgroundColor = '#17161A'\n        iframe.style.borderRadius = '5px'\n        iframe.style.width = '100%'\n        iframe.style.height = '100%'\n        modal.appendChild(iframe)\n\n        document.body.prepend(modal)\n        document.body.style.overflow = 'hidden'\n        iframe.contentWindow.document.open()\n        iframe.contentWindow.document.write(page.outerHTML)\n        iframe.contentWindow.document.close()\n\n        // Close on click.\n        modal.addEventListener('click', () => this.hideHtmlModal(modal))\n\n        // Close on escape key press.\n        modal.setAttribute('tabindex', 0)\n        modal.addEventListener('keydown', e => {\n            if (e.key === 'Escape') this.hideHtmlModal(modal)\n        })\n        modal.focus()\n    }\n\n    hideHtmlModal(modal) {\n        modal.outerHTML = ''\n        document.body.style.overflow = 'visible'\n    }\n}\n","import Action from '.'\n\nexport default class extends Action {\n    constructor(method, params, el, skipWatcher = false) {\n        super(el, skipWatcher)\n\n        this.type = 'callMethod'\n        this.method = method\n        this.payload = {\n            id: this.signature,\n            method,\n            params,\n        }\n    }\n}\n","import MethodAction from '@/action/method'\nimport { wireDirectives } from '@/util'\nimport store from '@/Store'\n\nexport default function () {\n    store.registerHook('element.initialized', (el, component) => {\n        let directives = wireDirectives(el)\n\n        if (directives.missing('poll')) return\n\n        let intervalId = fireActionOnInterval(el, component)\n\n        component.addListenerForTeardown(() => {\n            clearInterval(intervalId)\n        })\n\n        el.__livewire_polling_interval = intervalId\n    })\n\n    store.registerHook('element.updating', (from, to, component) => {\n        if (from.__livewire_polling_interval !== undefined) return\n\n        if (wireDirectives(from).missing('poll') && wireDirectives(to).has('poll')) {\n            setTimeout(() => {\n                let intervalId = fireActionOnInterval(from, component)\n\n                component.addListenerForTeardown(() => {\n                    clearInterval(intervalId)\n                })\n\n                from.__livewire_polling_interval = intervalId\n            }, 0)\n        }\n    })\n}\n\nfunction fireActionOnInterval(node, component) {\n    let interval = wireDirectives(node).get('poll').durationOr(2000);\n\n    return setInterval(() => {\n        if (node.isConnected === false) return\n\n        let directives = wireDirectives(node)\n\n        // Don't poll when directive is removed from element.\n        if (directives.missing('poll')) return\n\n        const directive = directives.get('poll')\n        const method = directive.method || '$refresh'\n\n        // Don't poll when the tab is in the background.\n        // (unless the \"wire:poll.keep-alive\" modifier is attached)\n        if (store.livewireIsInBackground && ! directive.modifiers.includes('keep-alive')) {\n            // This \"Math.random\" business effectivlly prevents 95% of requests\n            // from executing. We still want \"some\" requests to get through.\n            if (Math.random() < .95) return\n        }\n\n        // Only poll visible elements. Visible elements are elements that\n        // are visible in the current viewport.\n        if (directive.modifiers.includes('visible') && ! inViewport(directive.el)) {\n            return\n        }\n\n        // Don't poll if livewire is offline as well.\n        if (store.livewireIsOffline) return\n\n        component.addAction(new MethodAction(method, directive.params, node))\n    }, interval);\n}\n\nfunction inViewport(el) {\n    var bounding = el.getBoundingClientRect();\n\n    return (\n        bounding.top < (window.innerHeight || document.documentElement.clientHeight) &&\n        bounding.left < (window.innerWidth || document.documentElement.clientWidth) &&\n        bounding.bottom > 0 &&\n        bounding.right > 0\n    );\n}\n","export default class {\n    constructor(component, updateQueue) {\n        this.component = component\n        this.updateQueue = updateQueue\n    }\n\n    payload() {\n        return {\n            fingerprint: this.component.fingerprint,\n            serverMemo: this.component.serverMemo,\n            // This ensures only the type & payload properties only get sent over.\n            updates: this.updateQueue.map(update => ({\n                type: update.type,\n                payload: update.payload,\n            })),\n        }\n    }\n\n    shouldSkipWatcherForDataKey(dataKey) {\n        // If the data is dirty, run the watcher.\n        if (this.response.effects.dirty.includes(dataKey)) return false\n\n        let compareBeforeFirstDot = (subject, value) => {\n            if (typeof subject !== 'string' || typeof value !== 'string') return false\n\n            return subject.split('.')[0] === value.split('.')[0]\n        }\n\n        // Otherwise see if there was a defered update for a data key.\n        // In that case, we want to skip running the Livewire watcher.\n        return this.updateQueue\n            .filter(update => compareBeforeFirstDot(update.name, dataKey))\n            .some(update => update.skipWatcher)\n    }\n\n    storeResponse(payload) {\n        return (this.response = payload)\n    }\n\n    resolve() {\n        let returns = this.response.effects.returns || []\n\n        this.updateQueue.forEach(update => {\n            if (update.type !== 'callMethod') return\n\n            update.resolve(\n                returns[update.signature] !== undefined\n                    ? returns[update.signature]\n                    : (returns[update.method] !== undefined\n                        ? returns[update.method]\n                        : null)\n            )\n        })\n    }\n\n    reject() {\n        this.updateQueue.forEach(update => {\n            update.reject()\n        })\n    }\n}\n","import Message from '@/Message'\n\nexport default class extends Message {\n    constructor(component, action) {\n        super(component, [action])\n    }\n\n    get prefetchId() {\n        return this.updateQueue[0].toId()\n    }\n}\n","/**\n * I don't want to look at \"value\" attributes when diffing.\n * I commented out all the lines that compare \"value\"\n *\n */\n\nexport default function morphAttrs(fromNode, toNode) {\n    // @alpinejs\n    if (fromNode._x_isShown !== undefined && toNode._x_isShown !== undefined) return\n    if (fromNode._x_isShown && ! toNode._x_isShown) return\n    if (! fromNode._x_isShown && toNode._x_isShown) return\n\n    var attrs = toNode.attributes;\n    var i;\n    var attr;\n    var attrName;\n    var attrNamespaceURI;\n    var attrValue;\n    var fromValue;\n\n    // update attributes on original DOM element\n    for (i = attrs.length - 1; i >= 0; --i) {\n        attr = attrs[i];\n        attrName = attr.name;\n        attrNamespaceURI = attr.namespaceURI;\n        attrValue = attr.value;\n\n        if (attrNamespaceURI) {\n            attrName = attr.localName || attrName;\n            fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n            if (fromValue !== attrValue) {\n                if (attr.prefix === 'xmlns'){\n                    attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n                }\n                fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n            }\n        } else {\n            fromValue = fromNode.getAttribute(attrName);\n\n            if (fromValue !== attrValue) {\n                fromNode.setAttribute(attrName, attrValue);\n            }\n        }\n    }\n\n    // Remove any extra attributes found on the original DOM element that\n    // weren't found on the target element.\n    attrs = fromNode.attributes;\n\n    for (i = attrs.length - 1; i >= 0; --i) {\n        attr = attrs[i];\n        if (attr.specified !== false) {\n            attrName = attr.name;\n            attrNamespaceURI = attr.namespaceURI;\n\n            if (attrNamespaceURI) {\n                attrName = attr.localName || attrName;\n\n                if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n                    fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n                }\n            } else {\n                if (!toNode.hasAttribute(attrName)) {\n                    fromNode.removeAttribute(attrName);\n                }\n            }\n        }\n    }\n}\n","function syncBooleanAttrProp(fromEl, toEl, name) {\n    if (fromEl[name] !== toEl[name]) {\n        fromEl[name] = toEl[name];\n        if (fromEl[name]) {\n            fromEl.setAttribute(name, '');\n        } else {\n            fromEl.removeAttribute(name);\n        }\n    }\n}\n\nexport default {\n    OPTION: function(fromEl, toEl) {\n        var parentNode = fromEl.parentNode;\n        if (parentNode) {\n            var parentName = parentNode.nodeName.toUpperCase();\n            if (parentName === 'OPTGROUP') {\n                parentNode = parentNode.parentNode;\n                parentName = parentNode && parentNode.nodeName.toUpperCase();\n            }\n            if (parentName === 'SELECT' && !parentNode.hasAttribute('multiple')) {\n                if (fromEl.hasAttribute('selected') && !toEl.selected) {\n                    // Workaround for MS Edge bug where the 'selected' attribute can only be\n                    // removed if set to a non-empty value:\n                    // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n                    fromEl.setAttribute('selected', 'selected');\n                    fromEl.removeAttribute('selected');\n                }\n                // We have to reset select element's selectedIndex to -1, otherwise setting\n                // fromEl.selected using the syncBooleanAttrProp below has no effect.\n                // The correct selectedIndex will be set in the SELECT special handler below.\n                parentNode.selectedIndex = -1;\n            }\n        }\n        syncBooleanAttrProp(fromEl, toEl, 'selected');\n    },\n    /**\n     * The \"value\" attribute is special for the <input> element since it sets\n     * the initial value. Changing the \"value\" attribute without changing the\n     * \"value\" property will have no effect since it is only used to the set the\n     * initial value.  Similar for the \"checked\" attribute, and \"disabled\".\n     */\n    INPUT: function(fromEl, toEl) {\n        syncBooleanAttrProp(fromEl, toEl, 'checked');\n        syncBooleanAttrProp(fromEl, toEl, 'disabled');\n\n        if (fromEl.value !== toEl.value) {\n            fromEl.value = toEl.value;\n        }\n\n        if (!toEl.hasAttribute('value')) {\n            fromEl.removeAttribute('value');\n        }\n    },\n\n    TEXTAREA: function(fromEl, toEl) {\n        var newValue = toEl.value;\n        if (fromEl.value !== newValue) {\n            fromEl.value = newValue;\n        }\n\n        var firstChild = fromEl.firstChild;\n        if (firstChild) {\n            // Needed for IE. Apparently IE sets the placeholder as the\n            // node value and vise versa. This ignores an empty update.\n            var oldValue = firstChild.nodeValue;\n\n            if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) {\n                return;\n            }\n\n            firstChild.nodeValue = newValue;\n        }\n    },\n    SELECT: function(fromEl, toEl) {\n        if (!toEl.hasAttribute('multiple')) {\n            var selectedIndex = -1;\n            var i = 0;\n            // We have to loop through children of fromEl, not toEl since nodes can be moved\n            // from toEl to fromEl directly when morphing.\n            // At the time this special handler is invoked, all children have already been morphed\n            // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n            var curChild = fromEl.firstChild;\n            var optgroup;\n            var nodeName;\n            while(curChild) {\n                nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n                if (nodeName === 'OPTGROUP') {\n                    optgroup = curChild;\n                    curChild = optgroup.firstChild;\n                } else {\n                    if (nodeName === 'OPTION') {\n                        if (curChild.hasAttribute('selected')) {\n                            selectedIndex = i;\n                            break;\n                        }\n                        i++;\n                    }\n                    curChild = curChild.nextSibling;\n                    if (!curChild && optgroup) {\n                        curChild = optgroup.nextSibling;\n                        optgroup = null;\n                    }\n                }\n            }\n\n            fromEl.selectedIndex = selectedIndex;\n        }\n    }\n};\n","var range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nexport var doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n    var template = doc.createElement('template');\n    template.innerHTML = str;\n    return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n    if (!range) {\n        range = doc.createRange();\n        range.selectNode(doc.body);\n    }\n\n    var fragment = range.createContextualFragment(str);\n    return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n    var fragment = doc.createElement('body');\n    fragment.innerHTML = str;\n    return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nexport function toElement(str) {\n    str = str.trim();\n    if (HAS_TEMPLATE_SUPPORT) {\n      // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n      // createContextualFragment doesn't support\n      // <template> support not available in IE\n      return createFragmentFromTemplate(str);\n    } else if (HAS_RANGE_SUPPORT) {\n      return createFragmentFromRange(str);\n    }\n\n    return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n *       nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */\nexport function compareNodeNames(fromEl, toEl) {\n    var fromNodeName = fromEl.nodeName;\n    var toNodeName = toEl.nodeName;\n\n    if (fromNodeName === toNodeName) {\n        return true;\n    }\n\n    if (toEl.actualize &&\n        fromNodeName.charCodeAt(0) < 91 && /* from tag name is upper case */\n        toNodeName.charCodeAt(0) > 90 /* target tag name is lower case */) {\n        // If the target element is a virtual DOM node then we may need to normalize the tag name\n        // before comparing. Normal HTML elements that are in the \"http://www.w3.org/1999/xhtml\"\n        // are converted to upper case\n        return fromNodeName === toNodeName.toUpperCase();\n    } else {\n        return false;\n    }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */\nexport function createElementNS(name, namespaceURI) {\n    return !namespaceURI || namespaceURI === NS_XHTML ?\n        doc.createElement(name) :\n        doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */\nexport function moveChildren(fromEl, toEl) {\n    var curChild = fromEl.firstChild;\n    while (curChild) {\n        var nextChild = curChild.nextSibling;\n        toEl.appendChild(curChild);\n        curChild = nextChild;\n    }\n    return toEl;\n}\n","// From Caleb: I had to change all the \"isSameNode\"s to \"isEqualNode\"s and now everything is working great!\n/**\n * I pulled in my own version of morphdom, so I could tweak it as needed.\n * Here are the tweaks I've made so far:\n *\n * 1) Changed all the \"isSameNode\"s to \"isEqualNode\"s so that morhing doesn't check by reference, only by equality.\n * 2) Automatically filter out any non-\"ElementNode\"s from the lifecycle hooks.\n * 3) Tagged other changes with \"@livewireModification\".\n */\n\n'use strict';\n\nimport specialElHandlers from './specialElHandlers';\nimport { compareNodeNames, createElementNS, doc, moveChildren, toElement } from './util';\n\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n    return node.id;\n}\n\nfunction callHook(hook, ...params) {\n    if (hook.name !== 'getNodeKey' && hook.name !== 'onBeforeElUpdated') {\n        // console.log(hook.name, ...params)\n    }\n\n    // Don't call hook on non-\"DOMElement\" elements.\n    if (typeof params[0].hasAttribute !== 'function') return\n\n    return hook(...params)\n}\n\nexport default function morphdomFactory(morphAttrs) {\n\n    return function morphdom(fromNode, toNode, options) {\n        if (!options) {\n            options = {};\n        }\n\n        if (typeof toNode === 'string') {\n            if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML') {\n                var toNodeHtml = toNode;\n                toNode = doc.createElement('html');\n                toNode.innerHTML = toNodeHtml;\n            } else {\n                toNode = toElement(toNode);\n            }\n        }\n\n        var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n        var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n        var onNodeAdded = options.onNodeAdded || noop;\n        var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n        var onElUpdated = options.onElUpdated || noop;\n        var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n        var onNodeDiscarded = options.onNodeDiscarded || noop;\n        var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n        var childrenOnly = options.childrenOnly === true;\n\n        // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n        var fromNodesLookup = Object.create(null);\n        var keyedRemovalList = [];\n\n        function addKeyedRemoval(key) {\n            keyedRemovalList.push(key);\n        }\n\n        function walkDiscardedChildNodes(node, skipKeyedNodes) {\n            if (node.nodeType === ELEMENT_NODE) {\n                var curChild = node.firstChild;\n                while (curChild) {\n\n                    var key = undefined;\n\n                    if (skipKeyedNodes && (key = callHook(getNodeKey, curChild))) {\n                        // If we are skipping keyed nodes then we add the key\n                        // to a list so that it can be handled at the very end.\n                        addKeyedRemoval(key);\n                    } else {\n                        // Only report the node as discarded if it is not keyed. We do this because\n                        // at the end we loop through all keyed elements that were unmatched\n                        // and then discard them in one final pass.\n                        callHook(onNodeDiscarded, curChild);\n                        if (curChild.firstChild) {\n                            walkDiscardedChildNodes(curChild, skipKeyedNodes);\n                        }\n                    }\n\n                    curChild = curChild.nextSibling;\n                }\n            }\n        }\n\n        /**\n         * Removes a DOM node out of the original DOM\n         *\n         * @param  {Node} node The node to remove\n         * @param  {Node} parentNode The nodes parent\n         * @param  {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n         * @return {undefined}\n         */\n        function removeNode(node, parentNode, skipKeyedNodes) {\n            if (callHook(onBeforeNodeDiscarded, node) === false) {\n                return;\n            }\n\n            if (parentNode) {\n                parentNode.removeChild(node);\n            }\n\n            callHook(onNodeDiscarded, node);\n            walkDiscardedChildNodes(node, skipKeyedNodes);\n        }\n\n        function indexTree(node) {\n            if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n                var curChild = node.firstChild;\n                while (curChild) {\n                    var key = callHook(getNodeKey, curChild);\n                    if (key) {\n                        fromNodesLookup[key] = curChild;\n                    }\n\n                    // Walk recursively\n                    indexTree(curChild);\n\n                    curChild = curChild.nextSibling;\n                }\n            }\n        }\n\n        indexTree(fromNode);\n\n        function handleNodeAdded(el) {\n            callHook(onNodeAdded, el);\n\n            if (el.skipAddingChildren) {\n                return\n            }\n\n            var curChild = el.firstChild;\n            while (curChild) {\n                var nextSibling = curChild.nextSibling;\n\n                var key = callHook(getNodeKey, curChild);\n                if (key) {\n                    var unmatchedFromEl = fromNodesLookup[key];\n                    if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n                        curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n                        morphEl(unmatchedFromEl, curChild);\n                    }\n                    else {\n                        handleNodeAdded(curChild);\n                    }\n                }\n                else {\n                    handleNodeAdded(curChild);\n                }\n\n                curChild = nextSibling;\n            }\n        }\n\n        function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n            // We have processed all of the \"to nodes\". If curFromNodeChild is\n            // non-null then we still have some from nodes left over that need\n            // to be removed\n            while (curFromNodeChild) {\n                var fromNextSibling = curFromNodeChild.nextSibling;\n                if ((curFromNodeKey = callHook(getNodeKey, curFromNodeChild))) {\n                    // Since the node is keyed it might be matched up later so we defer\n                    // the actual removal to later\n                    addKeyedRemoval(curFromNodeKey);\n                } else {\n                    // NOTE: we skip nested keyed nodes from being removed since there is\n                    //       still a chance they will be matched up later\n                    removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                }\n                curFromNodeChild = fromNextSibling;\n            }\n        }\n\n\n        function morphEl(fromEl, toEl, childrenOnly) {\n            var toElKey = callHook(getNodeKey, toEl);\n\n            if (toElKey) {\n                // If an element with an ID is being morphed then it will be in the final\n                // DOM so clear it out of the saved elements collection\n                delete fromNodesLookup[toElKey];\n            }\n\n            if (!childrenOnly) {\n                if (callHook(onBeforeElUpdated, fromEl, toEl) === false) {\n                    return;\n                }\n\n                // @livewireModification.\n                // I added this check to enable wire:ignore.self to not fire\n                // morphAttrs, but not skip updating children as well.\n                // A task that's currently impossible with the provided hooks.\n                if (! fromEl.skipElUpdatingButStillUpdateChildren) {\n                    morphAttrs(fromEl, toEl);\n                }\n\n                callHook(onElUpdated, fromEl);\n\n                if (callHook(onBeforeElChildrenUpdated, fromEl, toEl) === false) {\n                    return;\n                }\n            }\n\n            if (fromEl.nodeName !== 'TEXTAREA') {\n                morphChildren(fromEl, toEl);\n            } else {\n                if (fromEl.innerHTML != toEl.innerHTML) {\n                    // @livewireModification\n                    // Only mess with the \"value\" of textarea if the new dom has something\n                    // inside the <textarea></textarea> tag.\n                    specialElHandlers.TEXTAREA(fromEl, toEl);\n                }\n            }\n        }\n\n        function morphChildren(fromEl, toEl) {\n            var curToNodeChild = toEl.firstChild;\n            var curFromNodeChild = fromEl.firstChild;\n            var curToNodeKey;\n            var curFromNodeKey;\n\n            var fromNextSibling;\n            var toNextSibling;\n            var matchingFromEl;\n\n            // walk the children\n            outer: while (curToNodeChild) {\n                toNextSibling = curToNodeChild.nextSibling;\n                curToNodeKey = callHook(getNodeKey, curToNodeChild);\n\n                // walk the fromNode children all the way through\n                while (curFromNodeChild) {\n                    fromNextSibling = curFromNodeChild.nextSibling;\n\n                    if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n                        curToNodeChild = toNextSibling;\n                        curFromNodeChild = fromNextSibling;\n                        continue outer;\n                    }\n\n                    curFromNodeKey = callHook(getNodeKey, curFromNodeChild);\n\n                    var curFromNodeType = curFromNodeChild.nodeType;\n\n                    // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n                    var isCompatible = undefined;\n\n                    if (curFromNodeType === curToNodeChild.nodeType) {\n                        if (curFromNodeType === ELEMENT_NODE) {\n                            // Both nodes being compared are Element nodes\n\n                            if (curToNodeKey) {\n                                // The target node has a key so we want to match it up with the correct element\n                                // in the original DOM tree\n                                if (curToNodeKey !== curFromNodeKey) {\n                                    // The current element in the original DOM tree does not have a matching key so\n                                    // let's check our lookup to see if there is a matching element in the original\n                                    // DOM tree\n                                    if ((matchingFromEl = fromNodesLookup[curToNodeKey])) {\n                                        if (fromNextSibling === matchingFromEl) {\n                                            // Special case for single element removals. To avoid removing the original\n                                            // DOM node out of the tree (since that can break CSS transitions, etc.),\n                                            // we will instead discard the current node and wait until the next\n                                            // iteration to properly match up the keyed target element with its matching\n                                            // element in the original tree\n                                            isCompatible = false;\n                                        } else {\n                                            // We found a matching keyed element somewhere in the original DOM tree.\n                                            // Let's move the original DOM node into the current position and morph\n                                            // it.\n\n                                            // NOTE: We use insertBefore instead of replaceChild because we want to go through\n                                            // the `removeNode()` function for the node that is being discarded so that\n                                            // all lifecycle hooks are correctly invoked\n                                            fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n\n                                            // fromNextSibling = curFromNodeChild.nextSibling;\n                                            if (curFromNodeKey) {\n                                                // Since the node is keyed it might be matched up later so we defer\n                                                // the actual removal to later\n                                                addKeyedRemoval(curFromNodeKey);\n                                            } else {\n                                                // NOTE: we skip nested keyed nodes from being removed since there is\n                                                //       still a chance they will be matched up later\n                                                removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                                            }\n\n                                            curFromNodeChild = matchingFromEl;\n                                        }\n                                    } else {\n                                        // The nodes are not compatible since the \"to\" node has a key and there\n                                        // is no matching keyed node in the source tree\n                                        isCompatible = false;\n                                    }\n                                }\n                            } else if (curFromNodeKey) {\n                                // The original has a key\n                                isCompatible = false;\n                            }\n\n                            isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n                            if (isCompatible) {\n                                // @livewireModification\n                                // If the two nodes are different, but the next element is an exact match,\n                                // we can assume that the new node is meant to be inserted, instead of\n                                // used as a morph target.\n                                if (\n                                    ! curToNodeChild.isEqualNode(curFromNodeChild)\n                                    && curToNodeChild.nextElementSibling\n                                    && curToNodeChild.nextElementSibling.isEqualNode(curFromNodeChild)\n                                ) {\n                                    isCompatible = false\n                                } else {\n                                    // We found compatible DOM elements so transform\n                                    // the current \"from\" node to match the current\n                                    // target DOM node.\n                                    // MORPH\n                                    morphEl(curFromNodeChild, curToNodeChild);\n                                }\n                            }\n\n                        } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n                            // Both nodes being compared are Text or Comment nodes\n                            isCompatible = true;\n                            // Simply update nodeValue on the original node to\n                            // change the text value\n                            if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n                                curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n                            }\n                        }\n                    }\n\n                    if (isCompatible) {\n                        // Advance both the \"to\" child and the \"from\" child since we found a match\n                        // Nothing else to do as we already recursively called morphChildren above\n                        curToNodeChild = toNextSibling;\n                        curFromNodeChild = fromNextSibling;\n                        continue outer;\n                    }\n\n                    // @livewireModification\n                    // Before we just remove the original element, let's see if it's the very next\n                    // element in the \"to\" list. If it is, we can assume we can insert the new\n                    // element before the original one instead of removing it. This is kind of\n                    // a \"look-ahead\".\n                    if (curToNodeChild.nextElementSibling && curToNodeChild.nextElementSibling.isEqualNode(curFromNodeChild)) {\n                        const nodeToBeAdded = curToNodeChild.cloneNode(true)\n                        fromEl.insertBefore(nodeToBeAdded, curFromNodeChild)\n                        handleNodeAdded(nodeToBeAdded)\n                        curToNodeChild = curToNodeChild.nextElementSibling.nextSibling;\n                        curFromNodeChild = fromNextSibling;\n                        continue outer;\n                    } else {\n                        // No compatible match so remove the old node from the DOM and continue trying to find a\n                        // match in the original DOM. However, we only do this if the from node is not keyed\n                        // since it is possible that a keyed node might match up with a node somewhere else in the\n                        // target tree and we don't want to discard it just yet since it still might find a\n                        // home in the final DOM tree. After everything is done we will remove any keyed nodes\n                        // that didn't find a home\n                        if (curFromNodeKey) {\n                            // Since the node is keyed it might be matched up later so we defer\n                            // the actual removal to later\n                            addKeyedRemoval(curFromNodeKey);\n                        } else {\n                            // NOTE: we skip nested keyed nodes from being removed since there is\n                            //       still a chance they will be matched up later\n                            removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                        }\n                    }\n\n                    curFromNodeChild = fromNextSibling;\n                } // END: while(curFromNodeChild) {}\n\n                // If we got this far then we did not find a candidate match for\n                // our \"to node\" and we exhausted all of the children \"from\"\n                // nodes. Therefore, we will just append the current \"to\" node\n                // to the end\n                if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n                    fromEl.appendChild(matchingFromEl);\n                    // MORPH\n                    morphEl(matchingFromEl, curToNodeChild);\n                } else {\n                    var onBeforeNodeAddedResult = callHook(onBeforeNodeAdded, curToNodeChild);\n                    if (onBeforeNodeAddedResult !== false) {\n                        if (onBeforeNodeAddedResult) {\n                            curToNodeChild = onBeforeNodeAddedResult;\n                        }\n\n                        if (curToNodeChild.actualize) {\n                            curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n                        }\n                        fromEl.appendChild(curToNodeChild);\n                        handleNodeAdded(curToNodeChild);\n                    }\n                }\n\n                curToNodeChild = toNextSibling;\n                curFromNodeChild = fromNextSibling;\n            }\n\n            cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n\n            var specialElHandler = specialElHandlers[fromEl.nodeName];\n            if (specialElHandler && ! fromEl.isLivewireModel) {\n                specialElHandler(fromEl, toEl);\n            }\n        } // END: morphChildren(...)\n\n        var morphedNode = fromNode;\n        var morphedNodeType = morphedNode.nodeType;\n        var toNodeType = toNode.nodeType;\n\n        if (!childrenOnly) {\n            // Handle the case where we are given two DOM nodes that are not\n            // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n            if (morphedNodeType === ELEMENT_NODE) {\n                if (toNodeType === ELEMENT_NODE) {\n                    if (!compareNodeNames(fromNode, toNode)) {\n                        callHook(onNodeDiscarded, fromNode);\n                        morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n                    }\n                } else {\n                    // Going from an element node to a text node\n                    morphedNode = toNode;\n                }\n            } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node\n                if (toNodeType === morphedNodeType) {\n                    if (morphedNode.nodeValue !== toNode.nodeValue) {\n                        morphedNode.nodeValue = toNode.nodeValue;\n                    }\n\n                    return morphedNode;\n                } else {\n                    // Text node to something else\n                    morphedNode = toNode;\n                }\n            }\n        }\n\n        if (morphedNode === toNode) {\n            // The \"to node\" was not compatible with the \"from node\" so we had to\n            // toss out the \"from node\" and use the \"to node\"\n            callHook(onNodeDiscarded, fromNode);\n        } else {\n            if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n                return;\n            }\n\n            morphEl(morphedNode, toNode, childrenOnly);\n\n            // We now need to loop over any keyed nodes that might need to be\n            // removed. We only do the removal if we know that the keyed node\n            // never found a match. When a keyed node is matched up we remove\n            // it out of fromNodesLookup and we use fromNodesLookup to determine\n            // if a keyed node has been matched up or not\n            if (keyedRemovalList) {\n                for (var i=0, len=keyedRemovalList.length; i<len; i++) {\n                    var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n                    if (elToRemove) {\n                        removeNode(elToRemove, elToRemove.parentNode, false);\n                    }\n                }\n            }\n        }\n\n        if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n            if (morphedNode.actualize) {\n                morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n            }\n            // If we had to swap out the from node with a new node because the old\n            // node was not compatible with the target node then we need to\n            // replace the old DOM node in the original DOM tree. This is only\n            // possible if the original DOM node was part of a DOM tree which\n            // we know is the case if it has a parent node.\n            fromNode.parentNode.replaceChild(morphedNode, fromNode);\n        }\n\n        return morphedNode;\n    };\n}\n","import morphAttrs from './morphAttrs';\nimport morphdomFactory from './morphdom';\n\nvar morphdom = morphdomFactory(morphAttrs);\n\nexport default morphdom;","import Action from '.'\n\nexport default class extends Action {\n    constructor(name, value, el) {\n        super(el)\n\n        this.type = 'syncInput'\n        this.name = name\n        this.payload = {\n            id: this.signature,\n            name,\n            value,\n        }\n    }\n}\n","import Action from '.'\n\nexport default class extends Action {\n    constructor(name, value, el, skipWatcher = false) {\n        super(el, skipWatcher)\n\n        this.type = 'syncInput'\n        this.name = name\n        this.payload = {\n            id: this.signature,\n            name,\n            value,\n        }\n    }\n}\n","import { kebabCase, debounce, wireDirectives } from '@/util'\nimport ModelAction from '@/action/model'\nimport DeferredModelAction from '@/action/deferred-model'\nimport MethodAction from '@/action/method'\nimport store from '@/Store'\nimport DOM from './dom/dom'\n\nexport default {\n    initialize(el, component) {\n        if (store.initialRenderIsFinished && el.tagName.toLowerCase() === 'script') {\n            eval(el.innerHTML)\n            return false\n        }\n\n        wireDirectives(el).all().forEach(directive => {\n            switch (directive.type) {\n                case 'init':\n                    this.fireActionRightAway(el, directive, component)\n                    break\n\n                case 'model':\n                    if (! directive.value) {\n                        console.warn('Livewire: [wire:model] is missing a value.', el)\n                        break\n                    }\n\n                    DOM.setInputValueFromModel(el, component)\n\n                    this.attachModelListener(el, directive, component)\n                    break\n\n                default:\n                    if (store.directives.has(directive.type)) {\n                        store.directives.call(\n                            directive.type,\n                            el,\n                            directive,\n                            component\n                        )\n                    }\n\n                    this.attachDomListener(el, directive, component)\n                    break\n            }\n        })\n\n        store.callHook('element.initialized', el, component)\n    },\n\n    fireActionRightAway(el, directive, component) {\n        const method = directive.value ? directive.method : '$refresh'\n\n        component.addAction(new MethodAction(method, directive.params, el))\n    },\n\n    attachModelListener(el, directive, component) {\n        // This is used by morphdom: morphdom.js:391\n        el.isLivewireModel = true\n\n        const isLazy = directive.modifiers.includes('lazy')\n        const debounceIf = (condition, callback, time) => {\n            return condition\n                ? component.modelSyncDebounce(callback, time)\n                : callback\n        }\n        const hasDebounceModifier = directive.modifiers.includes('debounce')\n\n        store.callHook('interceptWireModelAttachListener', directive, el, component)\n\n        // File uploads are handled by UploadFiles.js.\n        if (el.tagName.toLowerCase() === 'input' && el.type === 'file') return\n\n        const event = el.tagName.toLowerCase() === 'select'\n            || ['checkbox', 'radio'].includes(el.type)\n            || directive.modifiers.includes('lazy') ? 'change' : 'input'\n\n        // If it's a text input and not .lazy, debounce, otherwise fire immediately.\n        let handler = debounceIf(hasDebounceModifier || (DOM.isTextInput(el) && !isLazy), e => {\n            let model = directive.value\n            let el = e.target\n\n            let value = e instanceof CustomEvent\n                // We have to check for typeof e.detail here for IE 11.\n                && typeof e.detail != 'undefined'\n                && typeof window.document.documentMode == 'undefined'\n                    // With autofill in Safari, Safari triggers a custom event and assigns\n                    // the value to e.target.value, so we need to check for that value as well.\n                    ? e.detail ?? e.target.value\n                    : DOM.valueFromInput(el, component)\n\n            if (directive.modifiers.includes('defer')) {\n                component.addAction(new DeferredModelAction(model, value, el))\n            } else {\n                component.addAction(new ModelAction(model, value, el))\n            }\n        }, directive.durationOr(150))\n\n        el.addEventListener(event, handler)\n\n        component.addListenerForTeardown(() => {\n            el.removeEventListener(event, handler)\n        })\n\n        // Taken from: https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser\n        let isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n\n        // Safari is weird and doesn't properly fire input events when\n        // a user \"autofills\" a wire:model(.lazy) field. So we are\n        // firing them manually for assurance.\n        isSafari && el.addEventListener('animationstart', e => {\n            if (e.animationName !== 'livewireautofill') return\n\n            e.target.dispatchEvent(new Event('change', { bubbles: true }))\n            e.target.dispatchEvent(new Event('input', { bubbles: true }))\n        })\n    },\n\n    attachDomListener(el, directive, component) {\n        switch (directive.type) {\n            case 'keydown':\n            case 'keyup':\n                this.attachListener(el, directive, component, e => {\n                    // Detect system modifier key combinations if specified.\n                    const systemKeyModifiers = [\n                        'ctrl',\n                        'shift',\n                        'alt',\n                        'meta',\n                        'cmd',\n                        'super',\n                    ]\n                    const selectedSystemKeyModifiers = systemKeyModifiers.filter(\n                        key => directive.modifiers.includes(key)\n                    )\n\n                    if (selectedSystemKeyModifiers.length > 0) {\n                        const selectedButNotPressedKeyModifiers = selectedSystemKeyModifiers.filter(\n                            key => {\n                                // Alias \"cmd\" and \"super\" to \"meta\"\n                                if (key === 'cmd' || key === 'super')\n                                    key = 'meta'\n\n                                return !e[`${key}Key`]\n                            }\n                        )\n\n                        if (selectedButNotPressedKeyModifiers.length > 0)\n                            return false\n                    }\n\n\t\t            // Handle spacebar\n                    if (e.keyCode === 32 || (e.key === ' ' || e.key === 'Spacebar')) {\n                        return directive.modifiers.includes('space')\n                    }\n\n                    // Strip 'debounce' modifier and time modifiers from modifiers list\n                    let modifiers = directive.modifiers.filter(modifier => {\n                        return (\n                            !modifier.match(/^debounce$/) &&\n                            !modifier.match(/^[0-9]+m?s$/)\n                        )\n                    })\n\n                    // Only handle listener if no, or matching key modifiers are passed.\n                    // It's important to check that e.key exists - OnePassword's extension does weird things.\n                    return Boolean(modifiers.length === 0 || (e.key && modifiers.includes(kebabCase(e.key))))\n                })\n                break\n            case 'click':\n                this.attachListener(el, directive, component, e => {\n                    // We only care about elements that have the .self modifier on them.\n                    if (!directive.modifiers.includes('self')) return\n\n                    // This ensures a listener is only run if the event originated\n                    // on the elemenet that registered it (not children).\n                    // This is useful for things like modal back-drop listeners.\n                    return el.isSameNode(e.target)\n                })\n                break\n            default:\n                this.attachListener(el, directive, component)\n                break\n        }\n    },\n\n    attachListener(el, directive, component, callback) {\n        if (directive.modifiers.includes('prefetch')) {\n            el.addEventListener('mouseenter', () => {\n                component.addPrefetchAction(\n                    new MethodAction(directive.method, directive.params, el)\n                )\n            })\n        }\n\n        const event = directive.type\n        const handler = e => {\n            if (callback && callback(e) === false) {\n                return\n            }\n\n            component.callAfterModelDebounce(() => {\n                const el = e.target\n\n                directive.setEventContext(e)\n\n                // This is outside the conditional below so \"wire:click.prevent\" without\n                // a value still prevents default.\n                this.preventAndStop(e, directive.modifiers)\n                const method = directive.method\n                let params = directive.params\n\n                if (\n                    params.length === 0 &&\n                    e instanceof CustomEvent &&\n                    e.detail\n                ) {\n                    params.push(e.detail)\n                }\n\n                // Check for global event emission.\n                if (method === '$emit') {\n                    component.scopedListeners.call(...params)\n                    store.emit(...params)\n                    return\n                }\n\n                if (method === '$emitUp') {\n                    store.emitUp(el, ...params)\n                    return\n                }\n\n                if (method === '$emitSelf') {\n                    store.emitSelf(component.id, ...params)\n                    return\n                }\n\n                if (method === '$emitTo') {\n                    store.emitTo(...params)\n                    return\n                }\n\n                if (directive.value) {\n                    component.addAction(new MethodAction(method, params, el))\n                }\n            })\n        }\n\n        const debounceIf = (condition, callback, time) => {\n            return condition ? debounce(callback, time) : callback\n        }\n\n        const hasDebounceModifier = directive.modifiers.includes('debounce')\n        const debouncedHandler = debounceIf(\n            hasDebounceModifier,\n            handler,\n            directive.durationOr(150)\n        )\n\n        el.addEventListener(event, debouncedHandler)\n\n        component.addListenerForTeardown(() => {\n            el.removeEventListener(event, debouncedHandler)\n        })\n    },\n\n    preventAndStop(event, modifiers) {\n        modifiers.includes('prevent') && event.preventDefault()\n\n        modifiers.includes('stop') && event.stopPropagation()\n    },\n}\n","class PrefetchManager {\n    constructor(component) {\n        this.component = component\n        this.prefetchMessagesByActionId = {}\n    }\n\n    addMessage(message) {\n        this.prefetchMessagesByActionId[message.prefetchId] = message\n    }\n\n    actionHasPrefetch(action) {\n        return Object.keys(this.prefetchMessagesByActionId).includes(\n            action.toId()\n        )\n    }\n\n    actionPrefetchResponseHasBeenReceived(action) {\n        return !! this.getPrefetchMessageByAction(action).response\n    }\n\n    getPrefetchMessageByAction(action) {\n        return this.prefetchMessagesByActionId[action.toId()]\n    }\n\n    clearPrefetches() {\n        this.prefetchMessagesByActionId = {}\n    }\n}\n\nexport default PrefetchManager\n","import store from '@/Store'\nimport { wireDirectives } from '@/util'\n\nexport default function () {\n    store.registerHook('component.initialized', component => {\n        component.targetedLoadingElsByAction = {}\n        component.genericLoadingEls = []\n        component.currentlyActiveLoadingEls = []\n        component.currentlyActiveUploadLoadingEls = []\n    })\n\n    store.registerHook('element.initialized', (el, component) => {\n        let directives = wireDirectives(el)\n\n        if (directives.missing('loading')) return\n\n        const loadingDirectives = directives.directives.filter(\n            i => i.type === 'loading'\n        )\n\n        loadingDirectives.forEach(directive => {\n            processLoadingDirective(component, el, directive)\n        })\n    })\n\n    store.registerHook('message.sent', (message, component) => {\n        const actions = message.updateQueue\n            .filter(action => {\n                return action.type === 'callMethod'\n            })\n            .map(action => action.payload.method)\n\n        const actionsWithParams = message.updateQueue\n            .filter(action => {\n                return action.type === 'callMethod'\n            })\n            .map(action =>\n                generateSignatureFromMethodAndParams(\n                    action.payload.method,\n                    action.payload.params\n                )\n            )\n\n        const models = message.updateQueue\n            .filter(action => {\n                return action.type === 'syncInput'\n            })\n            .map(action => {\n                let name = action.payload.name\n                if (! name.includes('.')) {\n                    return name\n                }\n\n                let modelActions = []\n\n                modelActions.push(\n                    name.split('.').reduce((fullAction, part) => {\n                        modelActions.push(fullAction)\n\n                        return fullAction + '.' + part\n                    })\n                )\n\n                return modelActions\n            })\n            .flat()\n\n        setLoading(component, actions.concat(actionsWithParams).concat(models))\n    })\n\n    store.registerHook('message.failed', (message, component) => {\n        unsetLoading(component)\n    })\n\n    store.registerHook('message.received', (message, component) => {\n        unsetLoading(component)\n    })\n\n    store.registerHook('element.removed', (el, component) => {\n        removeLoadingEl(component, el)\n    })\n}\n\nfunction processLoadingDirective(component, el, directive) {\n    // If this element is going to be dealing with loading states.\n    // We will initialize an \"undo\" stack upfront, so we don't\n    // have to deal with isset() type conditionals later.\n    el.__livewire_on_finish_loading = []\n\n    var actionNames = false\n\n    let directives = wireDirectives(el)\n\n    if (directives.get('target')) {\n        let target = directives.get('target')\n        if (target.params.length > 0) {\n            actionNames = [\n                generateSignatureFromMethodAndParams(\n                    target.method,\n                    target.params\n                ),\n            ]\n        } else {\n            // wire:target overrides any automatic loading scoping we do.\n            actionNames = target.value.split(',').map(s => s.trim())\n        }\n    } else {\n        // If there is no wire:target, let's check for the existance of a wire:click=\"foo\" or something,\n        // and automatically scope this loading directive to that action.\n        const nonActionOrModelLivewireDirectives = [\n            'init',\n            'dirty',\n            'offline',\n            'target',\n            'loading',\n            'poll',\n            'ignore',\n            'key',\n            'id',\n        ]\n\n        actionNames = directives\n            .all()\n            .filter(i => !nonActionOrModelLivewireDirectives.includes(i.type))\n            .map(i => i.method)\n\n        // If we found nothing, just set the loading directive to the global component. (run on every request)\n        if (actionNames.length < 1) actionNames = false\n    }\n\n    addLoadingEl(component, el, directive, actionNames)\n}\n\nfunction addLoadingEl(component, el, directive, actionsNames) {\n    if (actionsNames) {\n        actionsNames.forEach(actionsName => {\n            if (component.targetedLoadingElsByAction[actionsName]) {\n                component.targetedLoadingElsByAction[actionsName].push({\n                    el,\n                    directive,\n                })\n            } else {\n                component.targetedLoadingElsByAction[actionsName] = [\n                    { el, directive },\n                ]\n            }\n        })\n    } else {\n        component.genericLoadingEls.push({ el, directive })\n    }\n}\n\nfunction removeLoadingEl(component, el) {\n    // Look through the global/generic elements for the element to remove.\n    component.genericLoadingEls.forEach((element, index) => {\n        if (element.el.isSameNode(el)) {\n            component.genericLoadingEls.splice(index, 1)\n        }\n    })\n\n    // Look through the targeted elements to remove.\n    Object.keys(component.targetedLoadingElsByAction).forEach(key => {\n        component.targetedLoadingElsByAction[\n            key\n        ] = component.targetedLoadingElsByAction[key].filter(element => {\n            return ! element.el.isSameNode(el)\n        })\n    })\n}\n\nfunction setLoading(component, actions) {\n    const actionTargetedEls = actions\n        .map(action => component.targetedLoadingElsByAction[action])\n        .filter(el => el)\n        .flat()\n\n    const allEls = removeDuplicates(component.genericLoadingEls.concat(actionTargetedEls))\n\n    startLoading(allEls)\n\n    component.currentlyActiveLoadingEls = allEls\n}\n\nexport function setUploadLoading(component, modelName) {\n    const actionTargetedEls =\n        component.targetedLoadingElsByAction[modelName] || []\n\n    const allEls = removeDuplicates(component.genericLoadingEls.concat(actionTargetedEls))\n\n    startLoading(allEls)\n\n    component.currentlyActiveUploadLoadingEls = allEls\n}\n\nexport function unsetUploadLoading(component) {\n    endLoading(component.currentlyActiveUploadLoadingEls)\n\n    component.currentlyActiveUploadLoadingEls = []\n}\n\nfunction unsetLoading(component) {\n    endLoading(component.currentlyActiveLoadingEls)\n\n    component.currentlyActiveLoadingEls = []\n}\n\nfunction startLoading(els) {\n    els.forEach(({ el, directive }) => {\n        if (directive.modifiers.includes('class')) {\n            let classes = directive.value.split(' ').filter(Boolean)\n\n            doAndSetCallbackOnElToUndo(\n                el,\n                directive,\n                () => el.classList.add(...classes),\n                () => el.classList.remove(...classes)\n            )\n        } else if (directive.modifiers.includes('attr')) {\n            doAndSetCallbackOnElToUndo(\n                el,\n                directive,\n                () => el.setAttribute(directive.value, true),\n                () => el.removeAttribute(directive.value)\n            )\n        } else {\n            let cache = window\n                .getComputedStyle(el, null)\n                .getPropertyValue('display')\n\n            doAndSetCallbackOnElToUndo(\n                el,\n                directive,\n                () => {\n                    el.style.display = directive.modifiers.includes('remove')\n                        ? cache\n                        : getDisplayProperty(directive)\n                },\n                () => {\n                    el.style.display = 'none'\n                }\n            )\n        }\n    })\n}\n\nfunction getDisplayProperty(directive) {\n    return (['inline', 'block', 'table', 'flex', 'grid', 'inline-flex']\n        .filter(i => directive.modifiers.includes(i))[0] || 'inline-block')\n}\n\nfunction doAndSetCallbackOnElToUndo(el, directive, doCallback, undoCallback) {\n    if (directive.modifiers.includes('remove'))\n        [doCallback, undoCallback] = [undoCallback, doCallback]\n\n    if (directive.modifiers.includes('delay')) {\n        let duration = 200\n\n        let delayModifiers = {\n            'shortest': 50,\n            'shorter': 100,\n            'short': 150,\n            'long': 300,\n            'longer': 500,\n            'longest': 1000,\n        }\n\n        Object.keys(delayModifiers).some(key => {\n            if(directive.modifiers.includes(key)) {\n                duration = delayModifiers[key]\n                return true\n            }\n        })\n\n        let timeout = setTimeout(() => {\n            doCallback()\n            el.__livewire_on_finish_loading.push(() => undoCallback())\n        }, duration)\n\n        el.__livewire_on_finish_loading.push(() => clearTimeout(timeout))\n    } else {\n        doCallback()\n        el.__livewire_on_finish_loading.push(() => undoCallback())\n    }\n}\n\nfunction endLoading(els) {\n    els.forEach(({ el }) => {\n        while (el.__livewire_on_finish_loading.length > 0) {\n            el.__livewire_on_finish_loading.shift()()\n        }\n    })\n}\n\nfunction generateSignatureFromMethodAndParams(method, params) {\n    return method + btoa(encodeURIComponent(params.toString()))\n}\n\nfunction removeDuplicates(arr) {\n    return Array.from(new Set(arr))\n}","\nexport default class MessageBag {\n    constructor() {\n        this.bag = {}\n    }\n\n    add(name, thing) {\n        if (! this.bag[name]) {\n            this.bag[name] = []\n        }\n\n        this.bag[name].push(thing)\n    }\n\n    push(name, thing) {\n        this.add(name, thing)\n    }\n\n    first(name) {\n        if (! this.bag[name]) return null\n\n        return this.bag[name][0]\n    }\n\n    last(name) {\n        return this.bag[name].slice(-1)[0]\n    }\n\n    get(name) {\n        return this.bag[name]\n    }\n\n    shift(name) {\n        return this.bag[name].shift()\n    }\n\n    call(name, ...params) {\n        (this.listeners[name] || []).forEach(callback => {\n            callback(...params)\n        })\n    }\n\n    has(name) {\n        return Object.keys(this.listeners).includes(name)\n    }\n}\n","import { setUploadLoading, unsetUploadLoading } from './LoadingStates'\nimport { getCsrfToken } from '@/util'\nimport MessageBag from '../MessageBag'\n\nclass UploadManager {\n    constructor(component) {\n        this.component = component\n        this.uploadBag = new MessageBag\n        this.removeBag = new MessageBag\n    }\n\n    registerListeners() {\n        this.component.on('upload:generatedSignedUrl', (name, url) => {\n            // We have to add reduntant \"setLoading\" calls because the dom-patch\n            // from the first response will clear the setUploadLoading call\n            // from the first upload call.\n            setUploadLoading(this.component, name)\n\n            this.handleSignedUrl(name, url)\n        })\n\n        this.component.on('upload:generatedSignedUrlForS3', (name, payload) => {\n            setUploadLoading(this.component, name)\n\n            this.handleS3PreSignedUrl(name, payload)\n        })\n\n        this.component.on('upload:finished', (name, tmpFilenames) => this.markUploadFinished(name, tmpFilenames))\n        this.component.on('upload:errored', (name) => this.markUploadErrored(name))\n        this.component.on('upload:removed', (name, tmpFilename) => this.removeBag.shift(name).finishCallback(tmpFilename))\n    }\n\n    upload(name, file, finishCallback, errorCallback, progressCallback) {\n        this.setUpload(name, {\n            files: [file],\n            multiple: false,\n            finishCallback,\n            errorCallback,\n            progressCallback,\n        })\n    }\n\n    uploadMultiple(name, files, finishCallback, errorCallback, progressCallback) {\n        this.setUpload(name, {\n            files: Array.from(files),\n            multiple: true,\n            finishCallback,\n            errorCallback,\n            progressCallback,\n        })\n    }\n\n    removeUpload(name, tmpFilename, finishCallback) {\n        this.removeBag.push(name, {\n            tmpFilename, finishCallback\n        })\n\n        this.component.call('removeUpload', name, tmpFilename);\n    }\n\n    setUpload(name, uploadObject) {\n        this.uploadBag.add(name, uploadObject)\n\n        if (this.uploadBag.get(name).length === 1) {\n            this.startUpload(name, uploadObject)\n        }\n    }\n\n    handleSignedUrl(name, url) {\n        let formData = new FormData()\n        Array.from(this.uploadBag.first(name).files).forEach(file => formData.append('files[]', file, file.name))\n\n        let headers = {\n            'Accept': 'application/json',\n        }\n\n        let csrfToken = getCsrfToken()\n\n        if (csrfToken) headers['X-CSRF-TOKEN'] = csrfToken\n\n        this.makeRequest(name, formData, 'post', url, headers, response => {\n            return response.paths\n        })\n    }\n\n    handleS3PreSignedUrl(name, payload) {\n        let formData = this.uploadBag.first(name).files[0]\n\n        let headers = payload.headers\n        if ('Host' in headers) delete headers.Host\n        let url = payload.url\n\n        this.makeRequest(name, formData, 'put', url, headers, response => {\n            return [payload.path]\n        })\n    }\n\n    makeRequest(name, formData, method, url, headers, retrievePaths) {\n        let request = new XMLHttpRequest()\n        request.open(method, url)\n\n        Object.entries(headers).forEach(([key, value]) => {\n            request.setRequestHeader(key, value)\n        })\n\n        request.upload.addEventListener('progress', e => {\n            e.detail = {}\n            e.detail.progress = Math.round((e.loaded * 100) / e.total)\n\n            this.uploadBag.first(name).progressCallback(e)\n        })\n\n        request.addEventListener('load', () => {\n            if ((request.status+'')[0] === '2') {\n                let paths = retrievePaths(request.response && JSON.parse(request.response))\n\n                this.component.call('finishUpload', name, paths, this.uploadBag.first(name).multiple)\n\n                return\n            }\n\n            let errors = null\n\n            if (request.status === 422) {\n                errors = request.response\n            }\n\n            this.component.call('uploadErrored', name, errors, this.uploadBag.first(name).multiple)\n        })\n\n        request.send(formData)\n    }\n\n    startUpload(name, uploadObject) {\n        let fileInfos = uploadObject.files.map(file => {\n            return { name: file.name, size: file.size, type: file.type }\n        })\n\n        this.component.call('startUpload', name, fileInfos, uploadObject.multiple);\n\n        setUploadLoading(this.component, name)\n    }\n\n    markUploadFinished(name, tmpFilenames) {\n        unsetUploadLoading(this.component)\n\n        let uploadObject = this.uploadBag.shift(name)\n        uploadObject.finishCallback(uploadObject.multiple ? tmpFilenames : tmpFilenames[0])\n\n        if (this.uploadBag.get(name).length > 0) this.startUpload(name, this.uploadBag.last(name))\n    }\n\n    markUploadErrored(name) {\n        unsetUploadLoading(this.component)\n\n        this.uploadBag.shift(name).errorCallback()\n\n        if (this.uploadBag.get(name).length > 0) this.startUpload(name, this.uploadBag.last(name))\n    }\n}\n\nexport default UploadManager\n","import { walk } from './../util/walk'\nimport store from '@/Store'\n\nexport default function () {\n    window.addEventListener('livewire:load', () => {\n        if (! window.Alpine) return\n\n        refreshAlpineAfterEveryLivewireRequest()\n\n        addDollarSignWire()\n\n        supportEntangle()\n    })\n}\n\nfunction refreshAlpineAfterEveryLivewireRequest() {\n    if (isV3()) {\n        store.registerHook('message.processed', (message, livewireComponent) => {\n            walk(livewireComponent.el, el => {\n                if (el._x_hidePromise) return\n                if (el._x_runEffects) el._x_runEffects()\n            })\n        })\n\n        return\n    }\n\n    if (! window.Alpine.onComponentInitialized) return\n\n    window.Alpine.onComponentInitialized(component => {\n        let livewireEl = component.$el.closest('[wire\\\\:id]')\n\n        if (livewireEl && livewireEl.__livewire) {\n            store.registerHook('message.processed', (message, livewireComponent) => {\n                if (livewireComponent === livewireEl.__livewire) {\n                    component.updateElements(component.$el)\n                }\n            })\n        }\n    })\n}\n\nfunction addDollarSignWire() {\n    if (isV3()) {\n        window.Alpine.magic('wire', function (el) {\n            let wireEl = el.closest('[wire\\\\:id]')\n\n            if (! wireEl)\n                console.warn(\n                    'Alpine: Cannot reference \"$wire\" outside a Livewire component.'\n                )\n\n            let component = wireEl.__livewire\n\n            return component.$wire\n        })\n        return\n    }\n\n    if (! window.Alpine.addMagicProperty) return\n\n    window.Alpine.addMagicProperty('wire', function (componentEl) {\n        let wireEl = componentEl.closest('[wire\\\\:id]')\n\n        if (!wireEl)\n            console.warn(\n                'Alpine: Cannot reference \"$wire\" outside a Livewire component.'\n            )\n\n        let component = wireEl.__livewire\n\n        return component.$wire\n    })\n}\n\nfunction supportEntangle() {\n    if (isV3()) return\n\n    if (! window.Alpine.onBeforeComponentInitialized) return\n\n    window.Alpine.onBeforeComponentInitialized(component => {\n        let livewireEl = component.$el.closest('[wire\\\\:id]')\n\n        if (livewireEl && livewireEl.__livewire) {\n            Object.entries(component.unobservedData).forEach(\n                ([key, value]) => {\n                    if (\n                        !!value &&\n                        typeof value === 'object' &&\n                        value.livewireEntangle\n                    ) {\n                        // Ok, it looks like someone set an Alpine property to $wire.entangle or @entangle.\n                        let livewireProperty = value.livewireEntangle\n                        let isDeferred = value.isDeferred\n                        let livewireComponent = livewireEl.__livewire\n\n                        let livewirePropertyValue = livewireEl.__livewire.get(livewireProperty)\n\n                        // Check to see if the Livewire property exists and if not log a console error\n                        // and return so everything else keeps running.\n                        if (typeof livewirePropertyValue === 'undefined') {\n                            console.error(`Livewire Entangle Error: Livewire property '${livewireProperty}' cannot be found`)\n                            return\n                        }\n\n                        // Let's set the initial value of the Alpine prop to the Livewire prop's value.\n                        component.unobservedData[key]\n                            // We need to stringify and parse it though to get a deep clone.\n                            = JSON.parse(JSON.stringify(livewirePropertyValue))\n\n                        let blockAlpineWatcher = false\n\n                        // Now, we'll watch for changes to the Alpine prop, and fire the update to Livewire.\n                        component.unobservedData.$watch(key, value => {\n                            // Let's also make sure that this watcher isn't a result of a Livewire response.\n                            // If it is, we don't need to \"re-update\" Livewire. (sending an extra useless) request.\n                            if (blockAlpineWatcher === true) {\n                                blockAlpineWatcher = false\n                                return\n                            }\n\n                            // If the Alpine value is the same as the Livewire value, we'll skip the update for 2 reasons:\n                            // - It's just more efficient, why send needless requests.\n                            // - This prevents a circular dependancy with the other watcher below.\n                            // - Due to the deep clone using stringify, we need to do the same here to compare.\n                            if (\n                                JSON.stringify(value) ==\n                                JSON.stringify(\n                                    livewireEl.__livewire.getPropertyValueIncludingDefers(\n                                        livewireProperty\n                                    )\n                                )\n                            ) return\n\n                            // We'll tell Livewire to update the property, but we'll also tell Livewire\n                            // to not call the normal property watchers on the way back to prevent another\n                            // circular dependancy.\n                            livewireComponent.set(\n                                livewireProperty,\n                                value,\n                                isDeferred,\n                                // Block firing of Livewire watchers for this data key when the request comes back.\n                                // Unless it is deferred, in which cause we don't know if the state will be the same, so let it run.\n                                isDeferred ? false : true\n                            )\n                        })\n\n                        // We'll also listen for changes to the Livewire prop, and set them in Alpine.\n                        livewireComponent.watch(\n                            livewireProperty,\n                            value => {\n                                // Ensure data is deep cloned otherwise Alpine mutates Livewire data\n                                component.$data[key] = typeof value !== 'undefined' ? JSON.parse(JSON.stringify(value)) : value\n                            }\n                        )\n                    }\n                }\n            )\n        }\n    })\n}\n\nexport function getEntangleFunction(component) {\n    if (isV3()) {\n        return (name, defer = false) => {\n            let isDeferred = defer\n            let livewireProperty = name\n            let livewireComponent = component\n            let livewirePropertyValue = component.get(livewireProperty)\n\n            let interceptor = Alpine.interceptor((initialValue, getter, setter, path, key) => {\n                // Check to see if the Livewire property exists and if not log a console error\n                // and return so everything else keeps running.\n                if (typeof livewirePropertyValue === 'undefined') {\n                    console.error(`Livewire Entangle Error: Livewire property '${livewireProperty}' cannot be found`)\n                    return\n                }\n\n                // Let's set the initial value of the Alpine prop to the Livewire prop's value.\n                let value\n                    // We need to stringify and parse it though to get a deep clone.\n                    = JSON.parse(JSON.stringify(livewirePropertyValue))\n\n                setter(value)\n\n                // Now, we'll watch for changes to the Alpine prop, and fire the update to Livewire.\n                window.Alpine.effect(() => {\n                    let value = getter()\n\n                    if (\n                        JSON.stringify(value) ==\n                        JSON.stringify(\n                            livewireComponent.getPropertyValueIncludingDefers(\n                                livewireProperty\n                            )\n                        )\n                    ) return\n\n                    // We'll tell Livewire to update the property, but we'll also tell Livewire\n                    // to not call the normal property watchers on the way back to prevent another\n                    // circular dependancy.\n                    livewireComponent.set(\n                        livewireProperty,\n                        value,\n                        isDeferred,\n                        // Block firing of Livewire watchers for this data key when the request comes back.\n                        // Unless it is deferred, in which cause we don't know if the state will be the same, so let it run.\n                        isDeferred ? false : true\n                    )\n                })\n\n                // We'll also listen for changes to the Livewire prop, and set them in Alpine.\n                livewireComponent.watch(\n                    livewireProperty,\n                    value => {\n                        // Ensure data is deep cloned otherwise Alpine mutates Livewire data\n                        window.Alpine.disableEffectScheduling(() => {\n                            setter(typeof value !== 'undefined' ? JSON.parse(JSON.stringify(value)) : value)\n                        })\n                    }\n                )\n\n                return value\n            }, obj => {\n                Object.defineProperty(obj, 'defer', {\n                    get() {\n                        isDeferred = true\n\n                        return obj\n                    }\n                })\n            })\n\n            return interceptor(livewirePropertyValue)\n        }\n    }\n\n    return (name, defer = false) => ({\n        isDeferred: defer,\n        livewireEntangle: name,\n        get defer() {\n            this.isDeferred = true\n            return this\n        },\n    })\n}\n\nexport function alpinifyElementsForMorphdom(from, to) {\n    if (isV3()) {\n        return alpinifyElementsForMorphdomV3(from, to)\n    }\n\n    // If the element we are updating is an Alpine component...\n    if (from.__x) {\n        // Then temporarily clone it (with it's data) to the \"to\" element.\n        // This should simulate backend Livewire being aware of Alpine changes.\n        window.Alpine.clone(from.__x, to)\n    }\n\n    // x-show elements require care because of transitions.\n    if (\n        Array.from(from.attributes)\n            .map(attr => attr.name)\n            .some(name => /x-show/.test(name))\n    ) {\n        if (from.__x_transition) {\n            // This covers @entangle('something')\n            from.skipElUpdatingButStillUpdateChildren = true\n        } else {\n            // This covers x-show=\"$wire.something\"\n            //\n            // If the element has x-show, we need to \"reverse\" the damage done by \"clone\",\n            // so that if/when the element has a transition on it, it will occur naturally.\n            if (isHiding(from, to)) {\n                let style = to.getAttribute('style')\n\n                if (style) {\n                    to.setAttribute('style', style.replace('display: none;', ''))\n                }\n            } else if (isShowing(from, to)) {\n                to.style.display = from.style.display\n            }\n        }\n    }\n}\n\nfunction alpinifyElementsForMorphdomV3(from, to) {\n    if (from.nodeType !== 1) return\n\n    // If the element we are updating is an Alpine component...\n    if (from._x_dataStack) {\n        // Then temporarily clone it (with it's data) to the \"to\" element.\n        // This should simulate backend Livewire being aware of Alpine changes.\n        window.Alpine.clone(from, to)\n    }\n}\n\nfunction isHiding(from, to) {\n    if (beforeAlpineTwoPointSevenPointThree()) {\n        return from.style.display === '' && to.style.display === 'none'\n    }\n\n    return from.__x_is_shown && ! to.__x_is_shown\n}\n\nfunction isShowing(from, to) {\n    if (beforeAlpineTwoPointSevenPointThree()) {\n        return from.style.display === 'none' && to.style.display === ''\n    }\n\n    return ! from.__x_is_shown && to.__x_is_shown\n}\n\nfunction beforeAlpineTwoPointSevenPointThree() {\n    let [major, minor, patch] = window.Alpine.version.split('.').map(i => Number(i))\n\n    return major <= 2 && minor <= 7 && patch <= 2\n}\n\nfunction isV3() {\n    return window.Alpine && window.Alpine.version && /^3\\..+\\..+$/.test(window.Alpine.version)\n}\n","import Message from '@/Message'\nimport dataGet from 'get-value'\nimport PrefetchMessage from '@/PrefetchMessage'\nimport { dispatch, debounce, wireDirectives, walk } from '@/util'\nimport morphdom from '@/dom/morphdom'\nimport DOM from '@/dom/dom'\nimport nodeInitializer from '@/node_initializer'\nimport store from '@/Store'\nimport PrefetchManager from './PrefetchManager'\nimport UploadManager from './UploadManager'\nimport MethodAction from '@/action/method'\nimport ModelAction from '@/action/model'\nimport DeferredModelAction from '@/action/deferred-model'\nimport MessageBus from '../MessageBus'\nimport { alpinifyElementsForMorphdom, getEntangleFunction } from './SupportAlpine'\n\nexport default class Component {\n    constructor(el, connection) {\n        el.__livewire = this\n\n        this.el = el\n\n        this.lastFreshHtml = this.el.outerHTML\n\n        this.id = this.el.getAttribute('wire:id')\n\n        this.checkForMultipleRootElements()\n\n        this.connection = connection\n\n        const initialData = JSON.parse(this.el.getAttribute('wire:initial-data'))\n        this.el.removeAttribute('wire:initial-data')\n\n        this.fingerprint = initialData.fingerprint\n        this.serverMemo = initialData.serverMemo\n        this.effects = initialData.effects\n\n        this.listeners = this.effects.listeners\n        this.updateQueue = []\n        this.deferredActions = {}\n        this.tearDownCallbacks = []\n        this.messageInTransit = undefined\n\n        this.scopedListeners = new MessageBus()\n        this.prefetchManager = new PrefetchManager(this)\n        this.uploadManager = new UploadManager(this)\n        this.watchers = {}\n\n        store.callHook('component.initialized', this)\n\n        this.initialize()\n\n        this.uploadManager.registerListeners()\n\n        if (this.effects.redirect) return this.redirect(this.effects.redirect)\n    }\n\n    get name() {\n        return this.fingerprint.name\n    }\n\n    get data() {\n        return this.serverMemo.data\n    }\n\n    get childIds() {\n        return Object.values(this.serverMemo.children).map(child => child.id)\n    }\n\n    checkForMultipleRootElements() {\n        // Count the number of elements between the first element in the component and the\n        // injected \"component-end\" marker. This is an HTML comment with notation.\n        let countElementsBeforeMarker = (el, carryCount = 0) => {\n            if (! el) return carryCount\n\n            // If we see the \"end\" marker, we can return the number of elements in between we've seen.\n            if (el.nodeType === Node.COMMENT_NODE && el.textContent.includes(`wire-end:${this.id}`)) return carryCount\n\n            let newlyDiscoveredEls = el.nodeType === Node.ELEMENT_NODE ? 1 : 0\n\n            return countElementsBeforeMarker(el.nextSibling, carryCount + newlyDiscoveredEls)\n        }\n\n        if (countElementsBeforeMarker(this.el.nextSibling) > 0) {\n            console.warn(`Livewire: Multiple root elements detected. This is not supported. See docs for more information https://laravel-livewire.com/docs/2.x/troubleshooting#root-element-issues`, this.el)\n        }\n    }\n\n    initialize() {\n        this.walk(\n            // Will run for every node in the component tree (not child component nodes).\n            el => nodeInitializer.initialize(el, this),\n            // When new component is encountered in the tree, add it.\n            el => store.addComponent(new Component(el, this.connection))\n        )\n    }\n\n    get(name) {\n        // The .split() stuff is to support dot-notation.\n        return name\n            .split('.')\n            .reduce((carry, segment) => typeof carry === 'undefined' ? carry : carry[segment], this.data)\n    }\n\n    getPropertyValueIncludingDefers(name) {\n        let action = this.deferredActions[name]\n\n        if (! action) return this.get(name)\n\n        return action.payload.value\n    }\n\n    updateServerMemoFromResponseAndMergeBackIntoResponse(message) {\n        // We have to do a fair amount of object merging here, but we can't use expressive syntax like {...}\n        // because browsers mess with the object key order which will break Livewire request checksum checks.\n\n        Object.entries(message.response.serverMemo).forEach(([key, value]) => {\n            // Because \"data\" is \"partial\" from the server, we have to deep merge it.\n            if (key === 'data') {\n                Object.entries(value || {}).forEach(([dataKey, dataValue]) => {\n                    this.serverMemo.data[dataKey] = dataValue\n\n                    if (message.shouldSkipWatcherForDataKey(dataKey)) return\n\n                    // Because Livewire (for payload reduction purposes) only returns the data that has changed,\n                    // we can use all the data keys from the response as watcher triggers.\n                    Object.entries(this.watchers).forEach(([key, watchers]) => {\n                        let originalSplitKey = key.split('.')\n                        let basePropertyName = originalSplitKey.shift()\n                        let restOfPropertyName = originalSplitKey.join('.')\n\n                        if (basePropertyName == dataKey) {\n                            // If the key deals with nested data, use the \"get\" function to get\n                            // the most nested data. Otherwise, return the entire data chunk.\n                            let potentiallyNestedValue = !! restOfPropertyName\n                                ? dataGet(dataValue, restOfPropertyName)\n                                : dataValue\n\n                            watchers.forEach(watcher => watcher(potentiallyNestedValue))\n                        }\n                    })\n                })\n            } else {\n                // Every other key, we can just overwrite.\n                this.serverMemo[key] = value\n            }\n        })\n\n        // Merge back serverMemo changes so the response data is no longer incomplete.\n        message.response.serverMemo = Object.assign({}, this.serverMemo)\n    }\n\n    watch(name, callback) {\n        if (!this.watchers[name]) this.watchers[name] = []\n\n        this.watchers[name].push(callback)\n    }\n\n    set(name, value, defer = false, skipWatcher = false) {\n        if (defer) {\n            this.addAction(\n                new DeferredModelAction(name, value, this.el, skipWatcher)\n            )\n        } else {\n            this.addAction(\n                new MethodAction('$set', [name, value], this.el, skipWatcher)\n            )\n        }\n    }\n\n    sync(name, value, defer = false) {\n        if (defer) {\n            this.addAction(new DeferredModelAction(name, value, this.el))\n        } else {\n            this.addAction(new ModelAction(name, value, this.el))\n        }\n    }\n\n    call(method, ...params) {\n        return new Promise((resolve, reject) => {\n            let action = new MethodAction(method, params, this.el)\n\n            this.addAction(action)\n\n            action.onResolve(thing => resolve(thing))\n            action.onReject(thing => reject(thing))\n        })\n    }\n\n    on(event, callback) {\n        this.scopedListeners.register(event, callback)\n    }\n\n    addAction(action) {\n        if (action instanceof DeferredModelAction) {\n            this.deferredActions[action.name] = action\n\n            return\n        }\n\n        if (\n            this.prefetchManager.actionHasPrefetch(action) &&\n            this.prefetchManager.actionPrefetchResponseHasBeenReceived(action)\n        ) {\n            const message = this.prefetchManager.getPrefetchMessageByAction(\n                action\n            )\n\n            this.handleResponse(message)\n\n            this.prefetchManager.clearPrefetches()\n\n            return\n        }\n\n        this.updateQueue.push(action)\n\n        // This debounce is here in-case two events fire at the \"same\" time:\n        // For example: if you are listening for a click on element A,\n        // and a \"blur\" on element B. If element B has focus, and then,\n        // you click on element A, the blur event will fire before the \"click\"\n        // event. This debounce captures them both in the actionsQueue and sends\n        // them off at the same time.\n        // Note: currently, it's set to 5ms, that might not be the right amount, we'll see.\n        debounce(this.fireMessage, 5).apply(this)\n\n        // Clear prefetches.\n        this.prefetchManager.clearPrefetches()\n    }\n\n    fireMessage() {\n        if (this.messageInTransit) return\n\n        Object.entries(this.deferredActions).forEach(([modelName, action]) => {\n            this.updateQueue.unshift(action)\n        })\n        this.deferredActions = {}\n\n        this.messageInTransit = new Message(this, this.updateQueue)\n\n        let sendMessage = () => {\n            this.connection.sendMessage(this.messageInTransit)\n\n            store.callHook('message.sent', this.messageInTransit, this)\n\n            this.updateQueue = []\n        }\n\n        if (window.capturedRequestsForDusk) {\n            window.capturedRequestsForDusk.push(sendMessage)\n        } else {\n            sendMessage()\n        }\n    }\n\n    messageSendFailed() {\n        store.callHook('message.failed', this.messageInTransit, this)\n\n        this.messageInTransit.reject()\n\n        this.messageInTransit = null\n    }\n\n    receiveMessage(message, payload) {\n        message.storeResponse(payload)\n\n        if (message instanceof PrefetchMessage) return\n\n        this.handleResponse(message)\n\n        // This bit of logic ensures that if actions were queued while a request was\n        // out to the server, they are sent when the request comes back.\n        if (this.updateQueue.length > 0) {\n            this.fireMessage()\n        }\n\n        dispatch('livewire:update')\n    }\n\n    handleResponse(message) {\n        let response = message.response\n\n        this.updateServerMemoFromResponseAndMergeBackIntoResponse(message)\n\n        store.callHook('message.received', message, this)\n\n        if (response.effects.html) {\n            // If we get HTML from the server, store it for the next time we might not.\n            this.lastFreshHtml = response.effects.html\n\n            this.handleMorph(response.effects.html.trim())\n        } else {\n            // It's important to still \"morphdom\" even when the server HTML hasn't changed,\n            // because Alpine needs to be given the chance to update.\n            this.handleMorph(this.lastFreshHtml)\n        }\n\n        if (response.effects.dirty) {\n            this.forceRefreshDataBoundElementsMarkedAsDirty(\n                response.effects.dirty\n            )\n        }\n\n        if (! message.replaying) {\n            this.messageInTransit && this.messageInTransit.resolve()\n\n            this.messageInTransit = null\n\n            if (response.effects.emits && response.effects.emits.length > 0) {\n                response.effects.emits.forEach(event => {\n                    this.scopedListeners.call(event.event, ...event.params)\n\n                    if (event.selfOnly) {\n                        store.emitSelf(this.id, event.event, ...event.params)\n                    } else if (event.to) {\n                        store.emitTo(event.to, event.event, ...event.params)\n                    } else if (event.ancestorsOnly) {\n                        store.emitUp(this.el, event.event, ...event.params)\n                    } else {\n                        store.emit(event.event, ...event.params)\n                    }\n                })\n            }\n\n            if (\n                response.effects.dispatches &&\n                response.effects.dispatches.length > 0\n            ) {\n                response.effects.dispatches.forEach(event => {\n                    const data = event.data ? event.data : {}\n                    const e = new CustomEvent(event.event, {\n                        bubbles: true,\n                        detail: data,\n                    })\n                    this.el.dispatchEvent(e)\n                })\n            }\n        }\n\n        store.callHook('message.processed', message, this)\n\n        // This means \"$this->redirect()\" was called in the component. let's just bail and redirect.\n        if (response.effects.redirect) {\n            setTimeout(() => this.redirect(response.effects.redirect))\n\n            return\n        }\n    }\n\n    redirect(url) {\n        if (window.Turbolinks && window.Turbolinks.supported) {\n            window.Turbolinks.visit(url)\n        } else {\n            window.location.href = url\n        }\n    }\n\n    forceRefreshDataBoundElementsMarkedAsDirty(dirtyInputs) {\n        this.walk(el => {\n            let directives = wireDirectives(el)\n            if (directives.missing('model')) return\n\n            const modelValue = directives.get('model').value\n\n            if (! (el.nodeName == 'SELECT' && ! el.multiple) && DOM.hasFocus(el) && ! dirtyInputs.includes(modelValue)) return\n\n            DOM.setInputValueFromModel(el, this)\n        })\n    }\n\n    addPrefetchAction(action) {\n        if (this.prefetchManager.actionHasPrefetch(action)) {\n            return\n        }\n\n        const message = new PrefetchMessage(this, action)\n\n        this.prefetchManager.addMessage(message)\n\n        this.connection.sendMessage(message)\n    }\n\n    handleMorph(dom) {\n        this.morphChanges = { changed: [], added: [], removed: [] }\n\n        morphdom(this.el, dom, {\n            childrenOnly: false,\n\n            getNodeKey: node => {\n                // This allows the tracking of elements by the \"key\" attribute, like in VueJs.\n                return node.hasAttribute(`wire:key`)\n                    ? node.getAttribute(`wire:key`)\n                    : // If no \"key\", then first check for \"wire:id\", then \"id\"\n                    node.hasAttribute(`wire:id`)\n                        ? node.getAttribute(`wire:id`)\n                        : node.id\n            },\n\n            onBeforeNodeAdded: node => {\n                //\n            },\n\n            onBeforeNodeDiscarded: node => {\n                // If the node is from x-if with a transition.\n                if (\n                    node.__x_inserted_me &&\n                    Array.from(node.attributes).some(attr =>\n                        /x-transition/.test(attr.name)\n                    )\n                ) {\n                    return false\n                }\n            },\n\n            onNodeDiscarded: node => {\n                store.callHook('element.removed', node, this)\n\n                if (node.__livewire) {\n                    store.removeComponent(node.__livewire)\n                }\n\n                this.morphChanges.removed.push(node)\n            },\n\n            onBeforeElChildrenUpdated: node => {\n                //\n            },\n\n            onBeforeElUpdated: (from, to) => {\n                // Because morphdom also supports vDom nodes, it uses isSameNode to detect\n                // sameness. When dealing with DOM nodes, we want isEqualNode, otherwise\n                // isSameNode will ALWAYS return false.\n                if (from.isEqualNode(to)) {\n                    return false\n                }\n\n                store.callHook('element.updating', from, to, this)\n\n                // Reset the index of wire:modeled select elements in the\n                // \"to\" node before doing the diff, so that the options\n                // have the proper in-memory .selected value set.\n                if (\n                    from.hasAttribute('wire:model') &&\n                    from.tagName.toUpperCase() === 'SELECT'\n                ) {\n                    to.selectedIndex = -1\n                }\n\n                let fromDirectives = wireDirectives(from)\n\n                // Honor the \"wire:ignore\" attribute or the .__livewire_ignore element property.\n                if (\n                    fromDirectives.has('ignore') ||\n                    from.__livewire_ignore === true ||\n                    from.__livewire_ignore_self === true\n                ) {\n                    if (\n                        (fromDirectives.has('ignore') &&\n                            fromDirectives\n                                .get('ignore')\n                                .modifiers.includes('self')) ||\n                        from.__livewire_ignore_self === true\n                    ) {\n                        // Don't update children of \"wire:ingore.self\" attribute.\n                        from.skipElUpdatingButStillUpdateChildren = true\n                    } else {\n                        return false\n                    }\n                }\n\n                // Children will update themselves.\n                if (DOM.isComponentRootEl(from) && from.getAttribute('wire:id') !== this.id) return false\n\n                // Give the root Livewire \"to\" element, the same object reference as the \"from\"\n                // element. This ensures new Alpine magics like $wire and @entangle can\n                // initialize in the context of a real Livewire component object.\n                if (DOM.isComponentRootEl(from)) to.__livewire = this\n\n                alpinifyElementsForMorphdom(from, to)\n            },\n\n            onElUpdated: node => {\n                this.morphChanges.changed.push(node)\n\n                store.callHook('element.updated', node, this)\n            },\n\n            onNodeAdded: node => {\n                const closestComponentId = DOM.closestRoot(node).getAttribute('wire:id')\n\n                if (closestComponentId === this.id) {\n                    if (nodeInitializer.initialize(node, this) === false) {\n                        return false\n                    }\n                } else if (DOM.isComponentRootEl(node)) {\n                    store.addComponent(new Component(node, this.connection))\n\n                    // We don't need to initialize children, the\n                    // new Component constructor will do that for us.\n                    node.skipAddingChildren = true\n                }\n\n                this.morphChanges.added.push(node)\n            },\n        })\n\n        window.skipShow = false\n    }\n\n    walk(callback, callbackWhenNewComponentIsEncountered = el => { }) {\n        walk(this.el, el => {\n            // Skip the root component element.\n            if (el.isSameNode(this.el)) {\n                callback(el)\n                return\n            }\n\n            // If we encounter a nested component, skip walking that tree.\n            if (el.hasAttribute('wire:id')) {\n                callbackWhenNewComponentIsEncountered(el)\n\n                return false\n            }\n\n            if (callback(el) === false) {\n                return false\n            }\n        })\n    }\n\n    modelSyncDebounce(callback, time) {\n        // Prepare yourself for what's happening here.\n        // Any text input with wire:model on it should be \"debounced\" by ~150ms by default.\n        // We can't use a simple debounce function because we need a way to clear all the pending\n        // debounces if a user submits a form or performs some other action.\n        // This is a modified debounce function that acts just like a debounce, except it stores\n        // the pending callbacks in a global property so we can \"clear them\" on command instead\n        // of waiting for their setTimeouts to expire. I know.\n        if (!this.modelDebounceCallbacks) this.modelDebounceCallbacks = []\n\n        // This is a \"null\" callback. Each wire:model will resister one of these upon initialization.\n        let callbackRegister = { callback: () => { } }\n        this.modelDebounceCallbacks.push(callbackRegister)\n\n        // This is a normal \"timeout\" for a debounce function.\n        var timeout\n\n        return e => {\n            clearTimeout(timeout)\n\n            timeout = setTimeout(() => {\n                callback(e)\n                timeout = undefined\n\n                // Because we just called the callback, let's return the\n                // callback register to it's normal \"null\" state.\n                callbackRegister.callback = () => { }\n            }, time)\n\n            // Register the current callback in the register as a kind-of \"escape-hatch\".\n            callbackRegister.callback = () => {\n                clearTimeout(timeout)\n                callback(e)\n            }\n        }\n    }\n\n    callAfterModelDebounce(callback) {\n        // This is to protect against the following scenario:\n        // A user is typing into a debounced input, and hits the enter key.\n        // If the enter key submits a form or something, the submission\n        // will happen BEFORE the model input finishes syncing because\n        // of the debounce. This makes sure to clear anything in the debounce queue.\n\n        if (this.modelDebounceCallbacks) {\n            this.modelDebounceCallbacks.forEach(callbackRegister => {\n                callbackRegister.callback()\n                callbackRegister.callback = () => { }\n            })\n        }\n\n        callback()\n    }\n\n    addListenerForTeardown(teardownCallback) {\n        this.tearDownCallbacks.push(teardownCallback)\n    }\n\n    tearDown() {\n        this.tearDownCallbacks.forEach(callback => callback())\n    }\n\n    upload(\n        name,\n        file,\n        finishCallback = () => { },\n        errorCallback = () => { },\n        progressCallback = () => { }\n    ) {\n        this.uploadManager.upload(\n            name,\n            file,\n            finishCallback,\n            errorCallback,\n            progressCallback\n        )\n    }\n\n    uploadMultiple(\n        name,\n        files,\n        finishCallback = () => { },\n        errorCallback = () => { },\n        progressCallback = () => { }\n    ) {\n        this.uploadManager.uploadMultiple(\n            name,\n            files,\n            finishCallback,\n            errorCallback,\n            progressCallback\n        )\n    }\n\n    removeUpload(\n        name,\n        tmpFilename,\n        finishCallback = () => { },\n        errorCallback = () => { }\n    ) {\n        this.uploadManager.removeUpload(\n            name,\n            tmpFilename,\n            finishCallback,\n            errorCallback\n        )\n    }\n\n    get $wire() {\n        if (this.dollarWireProxy) return this.dollarWireProxy\n\n        let refObj = {}\n\n        let component = this\n\n        return (this.dollarWireProxy = new Proxy(refObj, {\n            get(object, property) {\n                if (['_x_interceptor'].includes(property)) return\n\n                if (property === 'entangle') {\n                    return getEntangleFunction(component)\n                }\n\n                if (property === '__instance') return component\n\n                // Forward \"emits\" to base Livewire object.\n                if (typeof property === 'string' && property.match(/^emit.*/)) return function (...args) {\n                    if (property === 'emitSelf') return store.emitSelf(component.id, ...args)\n                    if (property === 'emitUp') return store.emitUp(component.el, ...args)\n\n                    return store[property](...args)\n                }\n\n                if (\n                    [\n                        'get',\n                        'set',\n                        'sync',\n                        'call',\n                        'on',\n                        'upload',\n                        'uploadMultiple',\n                        'removeUpload',\n                    ].includes(property)\n                ) {\n                    // Forward public API methods right away.\n                    return function (...args) {\n                        return component[property].apply(component, args)\n                    }\n                }\n\n                // If the property exists on the data, return it.\n                let getResult = component.get(property)\n\n                // If the property does not exist, try calling the method on the class.\n                if (getResult === undefined) {\n                    return function (...args) {\n                        return component.call.apply(component, [\n                            property,\n                            ...args,\n                        ])\n                    }\n                }\n\n                return getResult\n            },\n\n            set: function (obj, prop, value) {\n                component.set(prop, value)\n\n                return true\n            },\n        }))\n    }\n}\n","import store from '@/Store'\n\nexport default function () {\n    store.registerHook('interceptWireModelAttachListener', (directive, el, component) => {\n        if (! (el.tagName.toLowerCase() === 'input' && el.type === 'file')) return\n\n        let start = () => el.dispatchEvent(new CustomEvent('livewire-upload-start', { bubbles: true }))\n        let finish = () => el.dispatchEvent(new CustomEvent('livewire-upload-finish', { bubbles: true }))\n        let error = () => el.dispatchEvent(new CustomEvent('livewire-upload-error', { bubbles: true }))\n        let progress = (progressEvent) => {\n            var percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total )\n\n            el.dispatchEvent(\n                new CustomEvent('livewire-upload-progress', {\n                    bubbles: true, detail: { progress: percentCompleted }\n                })\n            )\n        }\n\n        let eventHandler = e => {\n            if (e.target.files.length === 0) return\n\n            start()\n\n            if (e.target.multiple) {\n                component.uploadMultiple(directive.value, e.target.files, finish, error, progress)\n            } else {\n                component.upload(directive.value, e.target.files[0], finish, error, progress)\n            }\n        }\n\n        el.addEventListener('change', eventHandler)\n\n        // There's a bug in browsers where selecting a file, removing it,\n        // then re-adding it doesn't fire the change event. This fixes it.\n        // Reference: https://stackoverflow.com/questions/12030686/html-input-file-selection-event-not-firing-upon-selecting-the-same-file\n        let clearFileInputValue = () => { el.value = null }\n        el.addEventListener('click', clearFileInputValue)\n\n        component.addListenerForTeardown(() => {\n            el.removeEventListener('change', eventHandler)\n            el.removeEventListener('click', clearFileInputValue)\n        })\n    })\n}\n","import store from '@/Store'\n\nexport default function () {\n    store.registerHook('component.initialized', component => {\n        if (Array.isArray(component.listeners)) {\n            component.listeners.forEach(event => {\n                if (event.startsWith('echo')) {\n                    if (typeof Echo === 'undefined') {\n                        console.warn('Laravel Echo cannot be found')\n                        return\n                    }\n\n                    let event_parts = event.split(/(echo:|echo-)|:|,/)\n\n                    if (event_parts[1] == 'echo:') {\n                        event_parts.splice(2, 0, 'channel', undefined)\n                    }\n\n                    if (event_parts[2] == 'notification') {\n                        event_parts.push(undefined, undefined)\n                    }\n\n                    let [\n                        s1,\n                        signature,\n                        channel_type,\n                        s2,\n                        channel,\n                        s3,\n                        event_name,\n                    ] = event_parts\n\n                    if (['channel', 'private', 'encryptedPrivate'].includes(channel_type)) {\n                        Echo[channel_type](channel).listen(event_name, e => {\n                            store.emit(event, e)\n                        })\n                    } else if (channel_type == 'presence') {\n                        if (['here', 'joining', 'leaving'].includes(event_name)) {\n                            Echo.join(channel)[event_name](e => {\n                                store.emit(event, e)\n                            })\n                        }else{\n                            Echo.join(channel).listen(event_name, e => {\n                                store.emit(event, e)\n                            })\n                        }\n                    } else if (channel_type == 'notification') {\n                        Echo.private(channel).notification(notification => {\n                            store.emit(event, notification)\n                        })\n                    } else {\n                        console.warn('Echo channel type not yet supported')\n                    }\n                }\n            })\n        }\n    })\n}\n","import store from '@/Store'\nimport DOM from '../dom/dom'\nimport { wireDirectives } from '../util'\n\nexport default function () {\n    store.registerHook('component.initialized', component => {\n        component.dirtyEls = []\n    })\n\n    store.registerHook('element.initialized', (el, component) => {\n        if (wireDirectives(el).missing('dirty')) return\n\n        component.dirtyEls.push(el)\n    })\n\n    store.registerHook(\n        'interceptWireModelAttachListener',\n        (directive, el, component) => {\n            let property = directive.value\n\n            el.addEventListener('input', () => {\n                component.dirtyEls.forEach(dirtyEl => {\n                    let directives = wireDirectives(dirtyEl)\n                    if (\n                        (directives.has('model') &&\n                            directives.get('model').value ===\n                                property) ||\n                        (directives.has('target') &&\n                            directives\n                                .get('target')\n                                .value.split(',')\n                                .map(s => s.trim())\n                                .includes(property))\n                    ) {\n                        let isDirty = DOM.valueFromInput(el, component) != component.get(property)\n\n                        setDirtyState(dirtyEl, isDirty)\n                    }\n                })\n            })\n        }\n    )\n\n    store.registerHook('message.received', (message, component) => {\n        component.dirtyEls.forEach(element => {\n            if (element.__livewire_dirty_cleanup) {\n                element.__livewire_dirty_cleanup()\n                delete element.__livewire_dirty_cleanup\n            }\n        })\n    })\n\n    store.registerHook('element.removed', (el, component) => {\n        component.dirtyEls.forEach((element, index) => {\n            if (element.isSameNode(el)) {\n                component.dirtyEls.splice(index, 1)\n            }\n        })\n    })\n}\n\nfunction setDirtyState(el, isDirty) {\n    const directive = wireDirectives(el).get('dirty')\n\n    if (directive.modifiers.includes('class')) {\n        const classes = directive.value.split(' ')\n        if (directive.modifiers.includes('remove') !== isDirty) {\n            el.classList.add(...classes)\n            el.__livewire_dirty_cleanup = () => el.classList.remove(...classes)\n        } else {\n            el.classList.remove(...classes)\n            el.__livewire_dirty_cleanup = () => el.classList.add(...classes)\n        }\n    } else if (directive.modifiers.includes('attr')) {\n        if (directive.modifiers.includes('remove') !== isDirty) {\n            el.setAttribute(directive.value, true)\n            el.__livewire_dirty_cleanup = () =>\n                el.removeAttribute(directive.value)\n        } else {\n            el.removeAttribute(directive.value)\n            el.__livewire_dirty_cleanup = () =>\n                el.setAttribute(directive.value, true)\n        }\n    } else if (! wireDirectives(el).get('model')) {\n        el.style.display = isDirty ? 'inline-block' : 'none'\n        el.__livewire_dirty_cleanup = () =>\n            (el.style.display = isDirty ? 'none' : 'inline-block')\n    }\n}\n","import store from '@/Store'\nimport { wireDirectives } from '../util'\n\nlet cleanupStackByComponentId = {}\n\nexport default function () {\n    store.registerHook('element.initialized', (el, component) => {\n        let directives = wireDirectives(el)\n\n        if (directives.missing('submit')) return\n\n        // Set a forms \"disabled\" state on inputs and buttons.\n        // Livewire will clean it all up automatically when the form\n        // submission returns and the new DOM lacks these additions.\n        el.addEventListener('submit', () => {\n            cleanupStackByComponentId[component.id] = []\n\n            component.walk(node => {\n                if (! el.contains(node)) return\n\n                if (node.hasAttribute('wire:ignore')) return false\n\n                if (\n                    // <button type=\"submit\">\n                    (node.tagName.toLowerCase() === 'button' &&\n                        node.type === 'submit') ||\n                    // <select>\n                    node.tagName.toLowerCase() === 'select' ||\n                    // <input type=\"checkbox|radio\">\n                    (node.tagName.toLowerCase() === 'input' &&\n                        (node.type === 'checkbox' || node.type === 'radio'))\n                ) {\n                    if (!node.disabled)\n                        cleanupStackByComponentId[component.id].push(\n                            () => (node.disabled = false)\n                        )\n\n                    node.disabled = true\n                } else if (\n                    // <input type=\"text\">\n                    node.tagName.toLowerCase() === 'input' ||\n                    // <textarea>\n                    node.tagName.toLowerCase() === 'textarea'\n                ) {\n                    if (!node.readOnly)\n                        cleanupStackByComponentId[component.id].push(\n                            () => (node.readOnly = false)\n                        )\n\n                    node.readOnly = true\n                }\n            })\n        })\n    })\n\n    store.registerHook('message.failed', (message, component) => cleanup(component))\n    store.registerHook('message.received', (message, component) => cleanup(component))\n}\n\nfunction cleanup(component) {\n    if (!cleanupStackByComponentId[component.id]) return\n\n    while (cleanupStackByComponentId[component.id].length > 0) {\n        cleanupStackByComponentId[component.id].shift()()\n    }\n}\n","import store from '@/Store'\n\nexport default function () {\n    store.registerHook('message.received', (message, component) => {\n        let response = message.response\n\n        if (! response.effects.download) return\n\n        // We need to use window.webkitURL so downloads work on iOS Safari.\n        let urlObject = window.webkitURL || window.URL\n\n        let url = urlObject.createObjectURL(\n            base64toBlob(response.effects.download.content, response.effects.download.contentType)\n        )\n\n        let invisibleLink = document.createElement('a')\n\n        invisibleLink.style.display = 'none'\n        invisibleLink.href = url\n        invisibleLink.download = response.effects.download.name\n\n        document.body.appendChild(invisibleLink)\n\n        invisibleLink.click()\n\n        setTimeout(function() {\n            urlObject.revokeObjectURL(url)\n        }, 0);\n    })\n}\n\nfunction base64toBlob(b64Data, contentType = '', sliceSize = 512) {\n    const byteCharacters = atob(b64Data)\n    const byteArrays = []\n\n    if (contentType === null) contentType = ''\n\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n        let slice = byteCharacters.slice(offset, offset + sliceSize)\n\n        let byteNumbers = new Array(slice.length)\n\n        for (let i = 0; i < slice.length; i++) {\n            byteNumbers[i] = slice.charCodeAt(i)\n        }\n\n        let byteArray = new Uint8Array(byteNumbers)\n\n        byteArrays.push(byteArray)\n    }\n\n    return new Blob(byteArrays, { type: contentType });\n}\n","import store from '@/Store'\nimport { wireDirectives} from '@/util'\n\nvar offlineEls = [];\n\nexport default function () {\n    store.registerHook('element.initialized', el => {\n        if (wireDirectives(el).missing('offline')) return\n\n        offlineEls.push(el)\n    })\n\n    window.addEventListener('offline', () => {\n        store.livewireIsOffline = true\n\n        offlineEls.forEach(el => {\n            toggleOffline(el, true)\n        })\n    })\n\n    window.addEventListener('online', () => {\n        store.livewireIsOffline = false\n\n        offlineEls.forEach(el => {\n            toggleOffline(el, false)\n        })\n    })\n\n    store.registerHook('element.removed', el => {\n        offlineEls = offlineEls.filter(el => ! el.isSameNode(el))\n    })\n}\n\nfunction toggleOffline(el, isOffline) {\n    let directives = wireDirectives(el)\n    let directive = directives.get('offline')\n\n    if (directive.modifiers.includes('class')) {\n        const classes = directive.value.split(' ')\n        if (directive.modifiers.includes('remove') !== isOffline) {\n            el.classList.add(...classes)\n        } else {\n            el.classList.remove(...classes)\n        }\n    } else if (directive.modifiers.includes('attr')) {\n        if (directive.modifiers.includes('remove') !== isOffline) {\n            el.setAttribute(directive.value, true)\n        } else {\n            el.removeAttribute(directive.value)\n        }\n    } else if (! directives.get('model')) {\n        el.style.display = isOffline ? 'inline-block' : 'none'\n    }\n}\n","import store from '@/Store'\nimport Message from '@/Message';\n\nexport default function () {\n\n    let initializedPath = false\n\n    let componentIdsThatAreWritingToHistoryState = new Set\n\n    LivewireStateManager.clearState()\n\n    store.registerHook('component.initialized', component => {\n        if (! component.effects.path) return\n\n        // We are using setTimeout() to make sure all the components on the page have\n        // loaded before we store anything in the history state (because the position\n        // of a component on a page matters for generating its state signature).\n        setTimeout(() => {\n            let url = onlyChangeThePathAndQueryString(initializedPath ? undefined : component.effects.path)\n\n            // Generate faux response.\n            let response = {\n                serverMemo: component.serverMemo,\n                effects: component.effects,\n            }\n\n            normalizeResponse(response, component)\n\n            LivewireStateManager.replaceState(url, response, component)\n\n            componentIdsThatAreWritingToHistoryState.add(component.id)\n\n            initializedPath = true\n        })\n    })\n\n    store.registerHook('message.processed', (message, component) => {\n        // Preventing a circular dependancy.\n        if (message.replaying) return\n\n        let { response } = message\n\n        let effects = response.effects || {}\n\n        normalizeResponse(response, component)\n\n        if ('path' in effects && effects.path !== window.location.href) {\n            let url = onlyChangeThePathAndQueryString(effects.path)\n\n            LivewireStateManager.pushState(url, response, component)\n\n            componentIdsThatAreWritingToHistoryState.add(component.id)\n        } else {\n            // If the current component has changed it's state, but hasn't written\n            // anything new to the URL, we still need to update it's data in the\n            // history state so that when a back button is hit, it is caught\n            // up to the most recent known data state.\n            if (componentIdsThatAreWritingToHistoryState.has(component.id)) {\n                LivewireStateManager.replaceState(window.location.href, response, component)\n            }\n        }\n    })\n\n    window.addEventListener('popstate', event => {\n        if (LivewireStateManager.missingState(event)) return\n\n        LivewireStateManager.replayResponses(event, (response, component) => {\n            let message = new Message(component, [])\n\n            message.storeResponse(response)\n\n            message.replaying = true\n\n            component.handleResponse(message)\n        })\n    })\n\n    function normalizeResponse(response, component) {\n        // Add ALL properties as \"dirty\" so that when the back button is pressed,\n        // they ALL are forced to refresh on the page (even if the HTML didn't change).\n        response.effects.dirty = Object.keys(response.serverMemo.data)\n\n        // Sometimes Livewire doesn't return html from the server to save on bandwidth.\n        // So we need to set the HTML no matter what.\n        response.effects.html = component.lastFreshHtml\n    }\n\n    function onlyChangeThePathAndQueryString(url) {\n        if (! url) return\n\n        let destination = new URL(url)\n\n        let afterOrigin = destination.href.replace(destination.origin, '').replace(/\\?$/, '')\n\n        return window.location.origin + afterOrigin + window.location.hash\n    }\n\n    store.registerHook('element.updating', (from, to, component) => {\n        // It looks like the element we are about to update is the root\n        // element of the component. Let's store this knowledge to\n        // reference after update in the \"element.updated\" hook.\n        if (from.getAttribute('wire:id') === component.id) {\n            component.lastKnownDomId = component.id\n        }\n    })\n\n    store.registerHook('element.updated', (node, component) => {\n        // If the element that was just updated was the root DOM element.\n        if (component.lastKnownDomId) {\n            // Let's check and see if the wire:id was the thing that changed.\n            if (node.getAttribute('wire:id') !== component.lastKnownDomId) {\n                // If so, we need to change this ID globally everwhere it's referenced.\n                store.changeComponentId(component, node.getAttribute('wire:id'))\n            }\n\n            // Either way, we'll unset this for the next update.\n            delete component.lastKnownDomId\n        }\n\n        // We have to update the component ID because we are replaying responses\n        // from similar components but with completely different IDs. If didn't\n        // update the component ID, the checksums would fail.\n    })\n}\n\nlet LivewireStateManager = {\n    replaceState(url, response, component) {\n        this.updateState('replaceState', url, response, component)\n    },\n\n    pushState(url, response, component) {\n        this.updateState('pushState', url, response, component)\n    },\n\n    updateState(method, url, response, component) {\n        let state = this.currentState()\n\n        state.storeResponse(response, component)\n\n        let stateArray = state.toStateArray()\n\n        // Copy over existing history state if it's an object, so we don't overwrite it.\n        let fullstateObject = Object.assign(history.state || {}, { livewire: stateArray })\n\n        let capitalize = subject => subject.charAt(0).toUpperCase() + subject.slice(1)\n\n        store.callHook('before'+capitalize(method), fullstateObject, url, component)\n\n        try {\n            if (decodeURI(url) != 'undefined') {\n                url = decodeURI(url).replaceAll(' ', '+').replaceAll('\\\\', '%5C')\n            }\n\n            history[method](fullstateObject, '', url)\n        } catch (error) {\n            // Firefox has a 160kb limit to history state entries.\n            // If that limit is reached, we'll instead put it in\n            // sessionStorage and store a reference to it.\n            if (error.name === 'NS_ERROR_ILLEGAL_VALUE') {\n                let key = this.storeInSession(stateArray)\n\n                fullstateObject.livewire = key\n\n                history[method](fullstateObject, '', url)\n            }\n        }\n    },\n\n    replayResponses(event, callback) {\n        if (! event.state.livewire) return\n\n        let state = typeof event.state.livewire === 'string'\n            ? new LivewireState(this.getFromSession(event.state.livewire))\n            : new LivewireState(event.state.livewire)\n\n        state.replayResponses(callback)\n    },\n\n    currentState() {\n        if (! history.state) return new LivewireState\n        if (! history.state.livewire) return new LivewireState\n\n        let state = typeof history.state.livewire === 'string'\n            ? new LivewireState(this.getFromSession(history.state.livewire))\n            : new LivewireState(history.state.livewire)\n\n        return state\n    },\n\n    missingState(event) {\n        return ! (event.state && event.state.livewire)\n    },\n\n    clearState() {\n        // This is to prevent exponentially increasing the size of our state on page refresh.\n        if (window.history.state) window.history.state.livewire = (new LivewireState).toStateArray();\n    },\n\n    storeInSession(value) {\n        let key = 'livewire:'+(new Date).getTime()\n\n        let stringifiedValue = JSON.stringify(value)\n\n        this.tryToStoreInSession(key, stringifiedValue)\n\n        return key\n    },\n\n    tryToStoreInSession(key, value) {\n        // sessionStorage has a max storage limit (usally 5MB).\n        // If we meet that limit, we'll start removing entries\n        // (oldest first), until there's enough space to store\n        // the new one.\n        try {\n            sessionStorage.setItem(key, value)\n        } catch (error) {\n            // 22 is Chrome, 1-14 is other browsers.\n            if (! [22, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14].includes(error.code)) return\n\n            let oldestTimestamp = Object.keys(sessionStorage)\n                .map(key => Number(key.replace('livewire:', '')))\n                .sort()\n                .shift()\n\n            if (! oldestTimestamp) return\n\n            sessionStorage.removeItem('livewire:'+oldestTimestamp)\n\n            this.tryToStoreInSession(key, value)\n        }\n    },\n\n    getFromSession(key) {\n        let item = sessionStorage.getItem(key)\n\n        if (! item) return\n\n        return JSON.parse(item)\n    },\n}\n\nclass LivewireState\n{\n    constructor(stateArray = []) { this.items = stateArray }\n\n    toStateArray() { return this.items }\n\n    pushItemInProperOrder(signature, response, component) {\n        let targetItem = { signature, response }\n\n        // First, we'll check if this signature already has an entry, if so, replace it.\n        let existingIndex = this.items.findIndex(item => item.signature === signature)\n\n        if (existingIndex !== -1) return this.items[existingIndex] = targetItem\n\n        // If it doesn't already exist, we'll add it, but we MUST first see if any of its\n        // parents components have entries, and insert it immediately before them.\n        // This way, when we replay responses, we will always start with the most\n        // inward components and go outwards.\n\n        let closestParentId = store.getClosestParentId(component.id, this.componentIdsWithStoredResponses())\n\n        if (! closestParentId) return this.items.unshift(targetItem)\n\n        let closestParentIndex = this.items.findIndex(item => {\n            let { originalComponentId } = this.parseSignature(item.signature)\n\n            if (originalComponentId === closestParentId) return true\n        })\n\n        this.items.splice(closestParentIndex, 0, targetItem);\n    }\n\n    storeResponse(response, component) {\n        let signature = this.getComponentNameBasedSignature(component)\n\n        this.pushItemInProperOrder(signature, response, component)\n    }\n\n    replayResponses(callback) {\n        this.items.forEach(({ signature, response }) => {\n            let component = this.findComponentBySignature(signature)\n\n            if (! component) return\n\n            callback(response, component)\n        })\n    }\n\n    // We can't just store component reponses by their id because\n    // ids change on every refresh, so history state won't have\n    // a component to apply it's changes to. Instead we must\n    // generate a unique id based on the components name\n    // and it's relative position amongst others with\n    // the same name that are loaded on the page.\n    getComponentNameBasedSignature(component) {\n        let componentName = component.fingerprint.name\n        let sameNamedComponents = store.getComponentsByName(componentName)\n        let componentIndex = sameNamedComponents.indexOf(component)\n\n        return `${component.id}:${componentName}:${componentIndex}`\n    }\n\n    findComponentBySignature(signature) {\n        let { componentName, componentIndex } = this.parseSignature(signature)\n\n        let sameNamedComponents = store.getComponentsByName(componentName)\n\n        // If we found the component in the proper place, return it,\n        // otherwise return the first one.\n        return sameNamedComponents[componentIndex] || sameNamedComponents[0] || console.warn(`Livewire: couldn't find component on page: ${componentName}`)\n    }\n\n    parseSignature(signature) {\n        let [originalComponentId, componentName, componentIndex] = signature.split(':')\n\n        return { originalComponentId, componentName, componentIndex }\n    }\n\n    componentIdsWithStoredResponses() {\n        return this.items.map(({ signature }) => {\n            let { originalComponentId } = this.parseSignature(signature)\n\n            return originalComponentId\n        })\n    }\n}\n","import store from '@/Store'\n\nexport default function () {\n    store.registerHook('message.received', (message, component) => {\n        let response = message.response\n\n        if (! response.effects.forStack) return\n\n        // Let's store the updates in an array for execution after the loop,\n        // this way we can avoid keyHasAlreadyBeenAddedToTheStack races.\n        let updates = []\n        \n        response.effects.forStack.forEach(({ key, stack, type, contents }) => {\n            let startEl = document.querySelector(`[livewire-stack=\"${stack}\"]`)\n            let endEl = document.querySelector(`[livewire-end-stack=\"${stack}\"]`)\n            if (! startEl || ! endEl) return\n\n            if (keyHasAlreadyBeenAddedToTheStack(startEl, endEl, key)) return\n\n            let prepend = el => startEl.parentElement.insertBefore(el, startEl.nextElementSibling)\n            let push = el => endEl.parentElement.insertBefore(el, endEl)\n\n            let frag = createFragment(contents)\n\n            updates.push(() => type === 'push' ? push(frag) : prepend(frag))\n        })\n\n        while (updates.length > 0) updates.shift()() \n    })\n}\n\nfunction keyHasAlreadyBeenAddedToTheStack(startEl, endEl, key) {\n    let findKeyMarker = el => {\n        if (el.isSameNode(endEl)) return\n\n        return el.matches(`[livewire-stack-key=\"${key}\"]`) ? el : findKeyMarker(el.nextElementSibling)\n    }\n\n    return findKeyMarker(startEl)\n}\n\nfunction createFragment(html) {\n    return document.createRange().createContextualFragment(html)\n}\n","import DOM from '@/dom/dom'\nimport '@/dom/polyfills/index'\nimport store from '@/Store'\nimport Connection from '@/connection'\nimport Polling from '@/component/Polling'\nimport Component from '@/component/index'\nimport { dispatch, wireDirectives } from '@/util'\nimport FileUploads from '@/component/FileUploads'\nimport LaravelEcho from '@/component/LaravelEcho'\nimport DirtyStates from '@/component/DirtyStates'\nimport DisableForms from '@/component/DisableForms'\nimport FileDownloads from '@/component/FileDownloads'\nimport LoadingStates from '@/component/LoadingStates'\nimport OfflineStates from '@/component/OfflineStates'\nimport SyncBrowserHistory from '@/component/SyncBrowserHistory'\nimport SupportAlpine from '@/component/SupportAlpine'\nimport SupportStacks from '@/component/SupportStacks'\n\nclass Livewire {\n    constructor() {\n        this.connection = new Connection()\n        this.components = store\n        this.devToolsEnabled = false\n        this.onLoadCallback = () => { }\n    }\n\n    first() {\n        return Object.values(this.components.componentsById)[0].$wire\n    }\n\n    find(componentId) {\n        return this.components.componentsById[componentId].$wire\n    }\n\n    all() {\n        return Object.values(this.components.componentsById).map(\n            component => component.$wire\n        )\n    }\n\n    directive(name, callback) {\n        this.components.registerDirective(name, callback)\n    }\n\n    hook(name, callback) {\n        this.components.registerHook(name, callback)\n    }\n\n    onLoad(callback) {\n        this.onLoadCallback = callback\n    }\n\n    onError(callback) {\n        this.components.onErrorCallback = callback\n    }\n\n    emit(event, ...params) {\n        this.components.emit(event, ...params)\n    }\n\n    emitTo(name, event, ...params) {\n        this.components.emitTo(name, event, ...params)\n    }\n\n    on(event, callback) {\n        this.components.on(event, callback)\n    }\n\n    addHeaders(headers) {\n        this.connection.headers = { ...this.connection.headers, ...headers}\n    }\n\n    devTools(enableDevtools) {\n        this.devToolsEnabled = enableDevtools\n    }\n\n    restart() {\n        this.stop()\n        this.start()\n    }\n\n    stop() {\n        this.components.tearDownComponents()\n    }\n\n    start() {\n        DOM.rootComponentElementsWithNoParents().forEach(el => {\n            this.components.addComponent(new Component(el, this.connection))\n        })\n\n        this.onLoadCallback()\n        dispatch('livewire:load')\n\n        document.addEventListener(\n            'visibilitychange',\n            () => {\n                this.components.livewireIsInBackground = document.hidden\n            },\n            false\n        )\n\n        this.components.initialRenderIsFinished = true\n    }\n\n    rescan(node = null) {\n        DOM.rootComponentElementsWithNoParents(node).forEach(el => {\n            const componentId = wireDirectives(el).get('id').value\n\n            if (this.components.hasComponent(componentId)) return\n\n            this.components.addComponent(new Component(el, this.connection))\n        })\n    }\n\n    onPageExpired(callback) {\n        this.components.sessionHasExpiredCallback = callback\n    }\n}\n\nif (!window.Livewire) {\n    window.Livewire = Livewire\n}\n\nmonkeyPatchDomSetAttributeToAllowAtSymbols()\n\nSyncBrowserHistory()\nSupportAlpine()\nSupportStacks()\nFileDownloads()\nOfflineStates()\nLoadingStates()\nDisableForms()\nFileUploads()\nLaravelEcho()\nDirtyStates()\nPolling()\n\ndispatch('livewire:available')\n\nexport default Livewire\n\nfunction monkeyPatchDomSetAttributeToAllowAtSymbols() {\n    // Because morphdom may add attributes to elements containing \"@\" symbols\n    // like in the case of an Alpine `@click` directive, we have to patch\n    // the standard Element.setAttribute method to allow this to work.\n    let original = Element.prototype.setAttribute\n\n    let hostDiv = document.createElement('div')\n\n    Element.prototype.setAttribute = function newSetAttribute(name, value) {\n        if (! name.includes('@')) {\n            return original.call(this, name, value)\n        }\n\n        hostDiv.innerHTML = `<span ${name}=\"${value}\"></span>`\n\n        let attr = hostDiv.firstElementChild.getAttributeNode(name)\n\n        hostDiv.firstElementChild.removeAttributeNode(attr)\n\n        this.setAttributeNode(attr)\n    }\n}\n"],"names":["debounce","func","wait","immediate","timeout","context","this","args","arguments","later","apply","callNow","clearTimeout","setTimeout","wireDirectives","el","DirectiveManager","directives","extractTypeModifiersAndValue","type","map","directive","includes","has","find","Array","from","getAttributeNames","filter","name","match","RegExp","replace","split","modifiers","Directive","_this","rawName","eventContext","getAttribute","parseOutMethodAndParams","value","method","params","defaultDuration","durationInMilliSeconds","durationInMilliSecondsString","mod","durationInSecondsString","Number","rawMethod","methodAndParamString","Function","fallback","walk","root","callback","node","firstElementChild","nextElementSibling","dispatch","eventName","event","document","createEvent","initEvent","dispatchEvent","getCsrfToken","tokenTag","head","querySelector","content","window","livewire_token","undefined","kebabCase","subject","toLowerCase","val","isArray","target","path","options","isObject","default","isValidObject","String","isString","splitChar","separator","joinChar","isValid","segs","len","length","idx","prop","slice","join","hasProp","n","key","skipWatcher","resolveCallback","rejectCallback","signature","Math","random","toString","substring","btoa","encodeURIComponent","outerHTML","thing","payload","id","JSON","stringify","Action","MessageBus","listeners","push","forEach","Object","keys","availableHooks","bus","register","call","component","store","componentsById","initialRenderIsFinished","livewireIsInBackground","livewireIsOffline","sessionHasExpired","sessionHasExpiredCallback","hooks","HookManager","onErrorCallback","components","addComponent","findComponent","getComponentsByName","hasComponent","tearDownComponents","_this2","removeComponent","on","emit","componentsListeningForEvent","addAction","EventAction","emitUp","componentsListeningForEventThatAreTreeAncestors","emitSelf","componentId","emitTo","componentName","parentIds","parent","parentElement","closest","registerDirective","registerHook","callHook","changeComponentId","newId","oldId","fingerprint","children","serverMemo","entries","tagName","tearDown","onError","getClosestParentId","childId","subsetOfParentIds","distancesByParentId","parentId","distance","_this3","getDistanceToChild","closestParentId","smallestDistance","min","values","distanceMemo","parentComponent","childIds","i","rootComponentElements","querySelectorAll","rootComponentElementsWithNoParents","allEls","onlyChildEls","allModelElementsInside","getByAttributeAndValue","attribute","nextFrame","fn","requestAnimationFrame","bind","closestRoot","closestByAttribute","closestEl","isComponentRootEl","hasAttribute","removeAttribute","setAttribute","hasFocus","activeElement","isInput","toUpperCase","isTextInput","valueFromInput","modelName","get","modelValue","deferredActions","data","mergeCheckboxValueIntoArray","checked","multiple","getSelectValues","arrayValue","concat","item","setInputValueFromModel","modelString","setInputValue","valueFound","updateSelect","option","selected","text","arrayWrappedValue","ceil","floor","argument","isNaN","it","TypeError","createMethod","CONVERT_TO_STRING","$this","pos","first","second","S","requireObjectCoercible","position","toInteger","size","charCodeAt","charAt","codeAt","check","globalThis","self","global","exec","error","fails","defineProperty","EXISTS","createElement","DESCRIPTORS","a","input","PREFERRED_STRING","valueOf","$defineProperty","O","P","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","bitmap","enumerable","configurable","writable","object","definePropertyModule","f","createPropertyDescriptor","createNonEnumerableProperty","SHARED","setGlobal","functionToString","inspectSource","WeakMap","test","hasOwnProperty","hasOwn","toObject","module","version","mode","copyright","postfix","shared","uid","OBJECT_ALREADY_INITIALIZED","set","enforce","getterFor","TYPE","state","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","facade","STATE","sharedKey","hiddenKeys","objectHas","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","V","descriptor","classof","IndexedObject","$getOwnPropertyDescriptor","toIndexedObject","propertyIsEnumerableModule","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","unsafe","simple","noTargetGet","source","prototype","aFunction","variable","namespace","max","index","integer","IS_INCLUDES","fromIndex","toLength","toAbsoluteIndex","indexOf","require$$0","names","result","enumBugKeys","getOwnPropertyNames","internalObjectKeys","getOwnPropertySymbols","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","string","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","copyConstructorProperties","sham","redefine","F","constructor","getPrototypeOf","IE_PROTO","ObjectPrototype","CORRECT_PROTOTYPE_GETTER","process","versions","v8","userAgent","symbol","Symbol","V8_VERSION","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","ITERATOR","wellKnownSymbol","BUGGY_SAFARI_ITERATORS","returnThis","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","defineProperties","Properties","objectKeys","GT","LT","PROTOTYPE","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","activeXDocument","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","documentCreateElement","JS","style","display","html","appendChild","src","contentWindow","open","NullProtoObject","domain","ActiveXObject","create","TO_STRING_TAG","TAG","IteratorConstructor","NAME","next","setToStringTag","Iterators","setPrototypeOf","setter","CORRECT_SETTER","proto","aPossiblePrototype","__proto__","IteratorsCore","KEYS","VALUES","ENTRIES","Iterable","DEFAULT","IS_SET","FORCED","createIteratorConstructor","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","$","STRING_ITERATOR","setInternalState","defineIterator","iterated","point","done","that","b","c","returnMethod","iteratorClose","ArrayPrototype","propertyKey","CORRECT_ARGUMENTS","classofRaw","tryGet","TO_STRING_TAG_SUPPORT","tag","callee","arrayLike","step","C","argumentsLength","mapfn","mapping","iteratorMethod","getIteratorMethod","isArrayIteratorMethod","createProperty","callWithSafeIterationClosing","SAFE_CLOSING","called","iteratorWithReturn","return","SKIP_CLOSING","ITERATION_SUPPORT","INCORRECT_ITERATION","checkCorrectnessOfIteration","iterable","UNSCOPABLES","$includes","addToUnscopables","CONSTRUCTOR","METHOD","entryUnbind","arg","flattenIntoArray","original","sourceLen","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","SPECIES","originalArray","flat","depthArg","A","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","callbackfn","specificCreate","boundFunction","some","every","findIndex","filterOut","$find","FIND","SKIPS_HOLES","$assign","assign","B","chr","T","j","TO_ENTRIES","$entries","$values","Result","stopped","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","$AggregateError","errors","message","Error","errorsArray","iterate","AggregateError","Promise","CONSTRUCTOR_NAME","Constructor","defaultConstructor","location","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","defer","channel","port","run","runner","listener","post","postMessage","protocol","host","IS_NODE","nextTick","now","IS_IOS","port2","port1","onmessage","addEventListener","importScripts","removeChild","macrotask","require$$1","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","flush","last","notify","toggle","promise","then","exit","enter","IS_WEBOS_WEBKIT","resolve","createTextNode","observe","characterData","task","PromiseCapability","reject","$$resolve","$$reject","x","promiseCapability","newPromiseCapability","console","PROMISE","getInternalPromiseState","NativePromisePrototype","NativePromise","PromiseConstructor","PromiseConstructorPrototype","newPromiseCapabilityModule","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","SUBCLASSING","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","IS_BROWSER","all","isThenable","isReject","notified","chain","reactions","microtask","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","hostReportErrors","isUnhandled","perform","unwrap","internalReject","internalResolve","wrapper","executor","anInstance","redefineAll","onFulfilled","onRejected","speciesConstructor","catch","wrap","setSpecies","r","capability","promiseResolve","$promiseResolve","remaining","alreadyCalled","race","allSettled","status","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","NON_GENERIC","real","finally","onFinally","isFunction","e","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","ARRAY_ITERATOR","kind","Arguments","ArrayValues","ArrayIteratorMethods","COLLECTION_NAME","DOMIterables","Collection","CollectionPrototype","METHOD_NAME","try","MATCH","isRegExp","regexp","error1","error2","$startsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","correctIsRegExpLogic","MDN_POLYFILL_BUG","searchString","notARegExp","search","support","searchParams","blob","Blob","formData","arrayBuffer","isDataView","obj","DataView","isPrototypeOf","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","items","shift","Headers","headers","append","header","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","view","Uint8Array","chars","fromCharCode","bufferClone","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","isConsumed","byteOffset","decode","json","parse","oldValue","normalizeMethod","upcased","Request","url","credentials","signal","referrer","cache","reParamSearch","Date","getTime","form","trim","bytes","decodeURIComponent","parseHeaders","rawHeaders","substr","line","parts","Response","bodyInit","statusText","clone","response","redirectStatuses","redirect","RangeError","DOMException","err","stack","fetch","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","href","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","removeEventListener","send","polyfill","Element","attributes","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","s","ownerDocument","parentNode","nodeType","Connection","receiveMessage","messageSendFailed","componentStore","confirm","reload","csrfToken","socketId","getSocketId","__testing_request_interceptor","livewire_app_url","isOutputFromDump","showHtmlModal","onMessage","showExpiredMessage","output","Echo","page","innerHTML","modal","getElementById","width","height","padding","backgroundColor","zIndex","borderRadius","prepend","overflow","hideHtmlModal","focus","missing","intervalId","fireActionOnInterval","addListenerForTeardown","clearInterval","__livewire_polling_interval","to","interval","durationOr","setInterval","isConnected","inViewport","MethodAction","bounding","getBoundingClientRect","top","innerHeight","documentElement","clientHeight","left","innerWidth","clientWidth","bottom","right","updateQueue","updates","update","dataKey","effects","dirty","returns","action","toId","Message","morphAttrs","fromNode","toNode","_x_isShown","attr","attrName","attrNamespaceURI","attrValue","attrs","namespaceURI","localName","getAttributeNS","prefix","setAttributeNS","specified","hasAttributeNS","removeAttributeNS","syncBooleanAttrProp","fromEl","toEl","OPTION","parentName","nodeName","selectedIndex","INPUT","TEXTAREA","newValue","firstChild","nodeValue","placeholder","SELECT","optgroup","curChild","nextSibling","range","NS_XHTML","doc","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","createRange","createFragmentFromTemplate","str","template","childNodes","createFragmentFromRange","selectNode","createContextualFragment","createFragmentFromWrap","fragment","toElement","compareNodeNames","fromNodeName","toNodeName","actualize","createElementNS","moveChildren","nextChild","ELEMENT_NODE","DOCUMENT_FRAGMENT_NODE","TEXT_NODE","COMMENT_NODE","noop","defaultGetNodeKey","hook","morphdomFactory","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","walkDiscardedChildNodes","skipKeyedNodes","removeNode","handleNodeAdded","skipAddingChildren","unmatchedFromEl","replaceChild","morphEl","toElKey","skipElUpdatingButStillUpdateChildren","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","outer","isSameNode","curFromNodeType","isCompatible","insertBefore","isEqualNode","nodeToBeAdded","cloneNode","onBeforeNodeAddedResult","cleanupFromEl","specialElHandler","specialElHandlers","isLivewireModel","morphChildren","indexTree","morphedNode","morphedNodeType","toNodeType","elToRemove","morphdom","initialize","eval","fireActionRightAway","warn","DOM","attachModelListener","attachDomListener","isLazy","hasDebounceModifier","time","model","CustomEvent","detail","documentMode","DeferredModelAction","ModelAction","modelSyncDebounce","navigator","animationName","Event","bubbles","attachListener","selectedSystemKeyModifiers","keyCode","modifier","Boolean","addPrefetchAction","debouncedHandler","debounceIf","callAfterModelDebounce","setEventContext","preventAndStop","scopedListeners","preventDefault","stopPropagation","PrefetchManager","prefetchMessagesByActionId","prefetchId","getPrefetchMessageByAction","targetedLoadingElsByAction","genericLoadingEls","currentlyActiveLoadingEls","currentlyActiveUploadLoadingEls","processLoadingDirective","actions","actionsWithParams","generateSignatureFromMethodAndParams","models","modelActions","reduce","fullAction","part","setLoading","unsetLoading","removeLoadingEl","__livewire_on_finish_loading","actionNames","nonActionOrModelLivewireDirectives","addLoadingEl","actionsNames","actionsName","splice","actionTargetedEls","removeDuplicates","startLoading","setUploadLoading","unsetUploadLoading","endLoading","els","classes","doAndSetCallbackOnElToUndo","classList","add","remove","getComputedStyle","getPropertyValue","getDisplayProperty","doCallback","undoCallback","duration","delayModifiers","arr","Set","MessageBag","bag","UploadManager","uploadBag","removeBag","handleSignedUrl","handleS3PreSignedUrl","tmpFilenames","markUploadFinished","markUploadErrored","tmpFilename","finishCallback","file","errorCallback","progressCallback","setUpload","files","uploadObject","startUpload","makeRequest","paths","Host","retrievePaths","upload","progress","round","loaded","total","fileInfos","Alpine","refreshAlpineAfterEveryLivewireRequest","addDollarSignWire","supportEntangle","isV3","livewireComponent","_x_hidePromise","_x_runEffects","onComponentInitialized","livewireEl","$el","__livewire","updateElements","magic","wireEl","$wire","addMagicProperty","componentEl","onBeforeComponentInitialized","unobservedData","_typeof","livewireEntangle","livewireProperty","isDeferred","livewirePropertyValue","blockAlpineWatcher","$watch","getPropertyValueIncludingDefers","watch","$data","getEntangleFunction","interceptor","initialValue","getter","effect","disableEffectScheduling","alpinifyElementsForMorphdom","alpinifyElementsForMorphdomV3","__x","__x_transition","isHiding","isShowing","_x_dataStack","beforeAlpineTwoPointSevenPointThree","__x_is_shown","major","minor","patch","Component","connection","lastFreshHtml","checkForMultipleRootElements","initialData","tearDownCallbacks","messageInTransit","prefetchManager","uploadManager","watchers","registerListeners","child","countElementsBeforeMarker","carryCount","Node","textContent","newlyDiscoveredEls","nodeInitializer","carry","segment","dataValue","shouldSkipWatcherForDataKey","originalSplitKey","basePropertyName","restOfPropertyName","potentiallyNestedValue","dataGet","watcher","_this4","onResolve","onReject","actionHasPrefetch","actionPrefetchResponseHasBeenReceived","handleResponse","clearPrefetches","fireMessage","_this5","unshift","sendMessage","capturedRequestsForDusk","storeResponse","PrefetchMessage","updateServerMemoFromResponseAndMergeBackIntoResponse","handleMorph","forceRefreshDataBoundElementsMarkedAsDirty","replaying","emits","_this6","selfOnly","ancestorsOnly","dispatches","Turbolinks","supported","visit","dirtyInputs","_this7","addMessage","dom","morphChanges","changed","added","removed","__x_inserted_me","_this8","fromDirectives","__livewire_ignore","__livewire_ignore_self","skipShow","callbackWhenNewComponentIsEncountered","_this9","modelDebounceCallbacks","callbackRegister","teardownCallback","uploadMultiple","removeUpload","dollarWireProxy","Proxy","property","getResult","finish","progressEvent","percentCompleted","eventHandler","clearFileInputValue","event_parts","channel_type","event_name","listen","private","notification","dirtyEls","dirtyEl","setDirtyState","__livewire_dirty_cleanup","isDirty","cleanupStackByComponentId","contains","disabled","readOnly","cleanup","download","urlObject","webkitURL","URL","createObjectURL","base64toBlob","contentType","invisibleLink","click","revokeObjectURL","b64Data","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","byteArray","offlineEls","toggleOffline","isOffline","initializedPath","componentIdsThatAreWritingToHistoryState","normalizeResponse","onlyChangeThePathAndQueryString","destination","afterOrigin","origin","hash","LivewireStateManager","clearState","replaceState","pushState","missingState","replayResponses","lastKnownDomId","updateState","currentState","stateArray","toStateArray","fullstateObject","history","livewire","decodeURI","replaceAll","storeInSession","LivewireState","getFromSession","stringifiedValue","tryToStoreInSession","sessionStorage","setItem","code","oldestTimestamp","sort","removeItem","getItem","targetItem","existingIndex","componentIdsWithStoredResponses","closestParentIndex","parseSignature","originalComponentId","getComponentNameBasedSignature","pushItemInProperOrder","findComponentBySignature","componentIndex","sameNamedComponents","forStack","contents","startEl","endEl","keyHasAlreadyBeenAddedToTheStack","frag","createFragment","findKeyMarker","Livewire","devToolsEnabled","onLoadCallback","enableDevtools","hidden","monkeyPatchDomSetAttributeToAllowAtSymbols","hostDiv","getAttributeNode","removeAttributeNode","setAttributeNode","SyncBrowserHistory","SupportAlpine","SupportStacks","FileDownloads","OfflineStates","LoadingStates","DisableForms","FileUploads","LaravelEcho","DirtyStates","Polling"],"mappings":"++KAAO,SAASA,SAASC,KAAMC,KAAMC,eAC7BC,eACG,eACCC,QAAUC,KACVC,KAAOC,UACPC,MAAQ,WACRL,QAAU,KACLD,WAAWF,KAAKS,MAAML,QAASE,OAEpCI,QAAUR,YAAcC,QAC5BQ,aAAaR,SACbA,QAAUS,WAAWJ,MAAOP,MACxBS,SAASV,KAAKS,MAAML,QAASE,OCZlC,SAASO,eAAeC,WACpB,IAAIC,mBAAiBD,QAG1BC,wDACUD,gDACHA,GAAKA,QACLE,WAAaX,KAAKY,sFAG3B,kBACWZ,KAAKW,8BAGhB,SAAIE,aACOb,KAAKW,WAAWG,KAAI,SAAAC,kBAAaA,UAAUF,QAAMG,SAASH,6BAGrE,SAAQA,aACIb,KAAKiB,IAAIJ,yBAGrB,SAAIA,aACOb,KAAKW,WAAWO,MAAK,SAAAH,kBAAaA,UAAUF,OAASA,oDAGhE,iCACWM,MAAMC,KAAKpB,KAAKS,GAAGY,oBAErBC,QAAO,SAAAC,aAAQA,KAAKC,MAAM,IAAIC,OAAO,aAErCX,KAAI,SAAAS,wCAC4BA,KAAKG,QAAQ,IAAID,OAAO,SAAU,IAAIE,MAAM,MAAlEd,6BAASe,+CAET,IAAIC,UAAUhB,KAAMe,UAAWL,KAAMO,MAAKrB,gCAK3DoB,wCACUhB,KAAMe,UAAWG,QAAStB,yCAC7BI,KAAOA,UACPe,UAAYA,eACZG,QAAUA,aACVtB,GAAKA,QACLuB,yEAGT,SAAgBjC,cACPiC,aAAejC,2BAGxB,kBACWC,KAAKS,GAAGwB,aAAajC,KAAK+B,6BAGrC,kBACuB/B,KAAKkC,wBAAwBlC,KAAKmC,OAA7CC,2BAKZ,kBACuBpC,KAAKkC,wBAAwBlC,KAAKmC,OAA7CE,iCAKZ,SAAWC,qBACHC,uBACEC,6BAA+BxC,KAAK4B,UAAUV,MAAK,SAAAuB,YAAOA,IAAIjB,MAAM,iBACpEkB,wBAA0B1C,KAAK4B,UAAUV,MAAK,SAAAuB,YAAOA,IAAIjB,MAAM,uBAEjEgB,6BACAD,uBAAyBI,OAAOH,6BAA6Bd,QAAQ,KAAM,KACpEgB,0BACPH,uBAA4E,IAAnDI,OAAOD,wBAAwBhB,QAAQ,IAAK,MAGlEa,wBAA0BD,uDAGrC,SAAwBM,eAChBR,OAASQ,UACTP,OAAS,GACPQ,qBAAuBT,OAAOZ,MAAM,2BAEtCqB,uBACAT,OAASS,qBAAqB,GAW9BR,OAPW,IAAIS,SAAS,2OAKnBD,qBAAqB,QAEjBlD,CAAKK,KAAKgC,qBAGhB,CAAEI,OAAAA,OAAQC,OAAAA,2CAGrB,eAAoBU,gEAAW,eACvB/C,KAAK4B,UAAUZ,SAAS,MAAc,KACtChB,KAAK4B,UAAUZ,SAAS,QAAgB,OACxChB,KAAK4B,UAAUZ,SAAS,QAAgB,OACxChB,KAAK4B,UAAUZ,SAAS,SAAiB,QACtC+B,0BC3GR,SAASC,KAAKC,KAAMC,cACA,IAAnBA,SAASD,cAETE,KAAOF,KAAKG,kBAETD,MACHH,KAAKG,KAAMD,UACXC,KAAOA,KAAKE,mBCVb,SAASC,SAASC,eACfC,MAAQC,SAASC,YAAY,iBAEnCF,MAAMG,UAAUJ,WAAW,GAAM,GAEjCE,SAASG,cAAcJ,OAEhBA,MCPJ,SAASK,yCACNC,SAAWL,SAASM,KAAKC,cAAc,kCAEzCF,SACOA,SAASG,sCAGbC,OAAOC,2EAAkBC,ECA7B,SAASC,UAAUC,gBACfA,QAAQ5C,QAAQ,kBAAmB,SAASA,QAAQ,QAAS,KAAK6C;;;;;;KCC7E,aAAiB,SAAkBC,KACjC,OAAc,MAAPA,KAA8B,iBAARA,MAA2C,IAAvBrD,MAAMsD,QAAQD,eCDhD,SAASE,OAAQC,KAAMC,SAKtC,GAJKC,SAASD,WACZA,QAAU,CAAEE,QAASF,WAGlBG,cAAcL,QACjB,YAAkC,IAApBE,QAAQE,QAA0BF,QAAQE,QAAUJ,OAGhD,iBAATC,OACTA,KAAOK,OAAOL,OAGhB,MAAMF,QAAUtD,MAAMsD,QAAQE,MACxBM,SAA2B,iBAATN,KAClBO,UAAYN,QAAQO,WAAa,IACjCC,SAAWR,QAAQQ,WAAkC,iBAAdF,UAAyBA,UAAY,KAElF,IAAKD,WAAaR,QAChB,OAAOC,OAGT,GAAIO,UAAYN,QAAQD,OACtB,OAAOW,QAAQV,KAAMD,OAAQE,SAAWF,OAAOC,MAAQC,QAAQE,QAGjE,IAAIQ,KAAOb,QAAUE,KAAOhD,QAAMgD,KAAMO,UAAWN,SAC/CW,IAAMD,KAAKE,OACXC,IAAM,EAEV,EAAG,CACD,IAAIC,KAAOJ,KAAKG,KAKhB,IAJoB,iBAATC,OACTA,KAAOV,OAAOU,OAGTA,MAA2B,OAAnBA,KAAKC,OAAO,IACzBD,KAAOE,KAAK,CAACF,KAAKC,MAAM,GAAI,GAAIL,OAAOG,MAAQ,IAAKL,SAAUR,SAGhE,GAAIc,QAAQhB,OAAQ,CAClB,IAAKW,QAAQK,KAAMhB,OAAQE,SACzB,OAAOA,QAAQE,QAGjBJ,OAASA,OAAOgB,UACX,CACL,IAAIG,SAAU,EACVC,EAAIL,IAAM,EAEd,KAAOK,EAAIP,KAGT,GAFAG,KAAOE,KAAK,CAACF,KAAMJ,KAAKQ,MAAOV,SAAUR,SAEpCiB,QAAUH,QAAQhB,OAAS,CAC9B,IAAKW,QAAQK,KAAMhB,OAAQE,SACzB,OAAOA,QAAQE,QAGjBJ,OAASA,OAAOgB,MAChBD,IAAMK,EAAI,EACV,MAIJ,IAAKD,QACH,OAAOjB,QAAQE,iBAGVW,IAAMF,KAAOR,cAAcL,SAEtC,OAAIe,MAAQF,IACHb,OAGFE,QAAQE;;;;;;KAGjB,SAASc,KAAKN,KAAMF,SAAUR,SAC5B,MAA4B,mBAAjBA,QAAQgB,KACVhB,QAAQgB,KAAKN,MAEfA,KAAK,GAAKF,SAAWE,KAAK,GAGnC,SAAS3D,QAAMgD,KAAMO,UAAWN,SAC9B,MAA6B,mBAAlBA,QAAQjD,MACViD,QAAQjD,MAAMgD,MAEhBA,KAAKhD,MAAMuD,WAGpB,SAASG,QAAQU,IAAKrB,OAAQE,SAC5B,MAA+B,mBAApBA,QAAQS,SACVT,QAAQS,QAAQU,IAAKrB,QAKhC,SAASK,cAAcP,KACrB,OAAOK,SAASL,MAAQrD,MAAMsD,QAAQD,MAAuB,mBAARA,gDC3GvC/D,QAAIuF,wGACPvF,GAAKA,QACLuF,YAAcA,iBACdC,gBAAkB,kBAClBC,eAAiB,kBACjBC,WAAaC,KAAKC,SAAW,GAAGC,SAAS,IAAIC,UAAU,mDAGhE,kBACWC,KAAKC,mBAAmBzG,KAAKS,GAAGiG,qCAG3C,SAAUxD,eACD+C,gBAAkB/C,iCAG3B,SAASA,eACAgD,eAAiBhD,gCAG1B,SAAQyD,YACCV,gBAAgBU,6BAGzB,SAAOA,YACET,eAAeS,oICvBZnD,MAAOnB,OAAQ5B,4EACjBA,KAEDI,KAAO,kBACP+F,QAAU,CACXC,GAAI/E,MAAKqE,UACT3C,MAAAA,MACAnB,OAAAA,8DAKR,kBACWmE,KAAKC,mBAAmBzG,KAAKa,KAAMb,KAAK4G,QAAQpD,MAAOsD,KAAKC,UAAU/G,KAAK4G,QAAQvE,wBAdrE2E,YCDRC,kFAERC,UAAY,yDAGrB,SAAS3F,KAAM2B,UACLlD,KAAKkH,UAAU3F,aACZ2F,UAAU3F,MAAQ,SAGtB2F,UAAU3F,MAAM4F,KAAKjE,8BAG9B,SAAK3B,oCAASc,0DAAAA,gCACTrC,KAAKkH,UAAU3F,OAAS,IAAI6F,SAAQ,SAAAlE,UACjCA,sBAAYb,8BAIpB,SAAId,aACO8F,OAAOC,KAAKtH,KAAKkH,WAAWlG,SAASO,oCCnBrC,CACXgG,eAAgB,yBAKZ,sBACA,mBACA,kBACA,kBACA,eACA,iBACA,mBACA,iDAMA,mCACA,qBACA,mBAGJC,IAAK,IAAIP,WAETQ,kBAASlG,KAAM2B,cACLlD,KAAKuH,eAAevG,SAASO,0DACeA,eAG7CiG,IAAIC,SAASlG,KAAM2B,WAG5BwE,cAAKnG,8CAASc,0DAAAA,+CACLmF,KAAIE,sBAAKnG,aAASc,4BCnChB,CACX1B,WAAY,IAAIsG,WAEhBQ,kBAASlG,KAAM2B,aACPlD,KAAKiB,IAAIM,8DACyCA,eAGjDZ,WAAW8G,SAASlG,KAAM2B,WAGnCwE,cAAKnG,KAAMd,GAAIM,UAAW4G,gBACjBhH,WAAW+G,KAAKnG,KAAMd,GAAIM,UAAW4G,YAG9C1G,aAAIM,aACOvB,KAAKW,WAAWM,IAAIM,QCb7BqG,QAAQ,CACVC,eAAgB,GAChBX,UAAW,IAAID,WACfa,yBAAyB,EACzBC,wBAAwB,EACxBC,mBAAmB,EACnBC,mBAAmB,EACnBC,+BAA2B9D,EAC3BzD,WAAYD,iBACZyH,MAAOC,YACPC,gBAAiB,aAEjBC,4CACWjB,OAAOC,KAAKtH,KAAK6H,gBAAgB/G,KAAI,SAAAiF,YACjCjE,MAAK+F,eAAe9B,SAInCwC,sBAAaZ,kBACD3H,KAAK6H,eAAeF,UAAUd,IAAMc,WAGhDa,uBAAc3B,WACH7G,KAAK6H,eAAehB,KAG/B4B,6BAAoBlH,aACTvB,KAAKsI,aAAahH,QAAO,SAAAqG,kBACrBA,UAAUpG,OAASA,SAIlCmH,sBAAa7B,YACA7G,KAAK6H,eAAehB,KAGjC8B,mDACSL,aAAalB,SAAQ,SAAAO,WACtBiB,OAAKC,gBAAgBlB,eAI7BmB,YAAGtF,MAAON,eACDgE,UAAUO,SAASjE,MAAON,WAGnC6F,cAAKvF,qDAAUnB,0DAAAA,qDACN6E,WAAUQ,4BAAKlE,cAAUnB,cAEzB2G,4BAA4BxF,OAAO4D,SAAQ,SAAAO,kBAC5CA,UAAUsB,UAAU,IAAIC,WAAY1F,MAAOnB,aAInD8G,gBAAO1I,GAAI+C,sCAAUnB,gEAAAA,sCACZ+G,gDACD3I,GACA+C,OACF4D,SAAQ,SAAAO,kBACNA,UAAUsB,UAAU,IAAIC,WAAY1F,MAAOnB,aAInDgH,kBAASC,YAAa9F,WACdmE,UAAY3H,KAAKwI,cAAcc,gBAE/B3B,UAAUT,UAAUlG,SAASwC,OAAQ,gCAHbnB,gEAAAA,iCAIxBsF,UAAUsB,UAAU,IAAIC,WAAY1F,MAAOnB,WAInDkH,gBAAOC,cAAehG,sCAAUnB,gEAAAA,qCACxBiG,WAAatI,KAAKyI,oBAAoBe,eAE1ClB,WAAWlB,SAAQ,SAAAO,WACXA,UAAUT,UAAUlG,SAASwC,QAC7BmE,UAAUsB,UAAU,IAAIC,WAAY1F,MAAOnB,aAKvD+G,yDAAgD3I,GAAI+C,eAC5CiG,UAAY,GAEZC,OAASjJ,GAAGkJ,cAAcC,QAAQ,eAE/BF,QACHD,UAAUtC,KAAKuC,OAAOzH,aAAa,YAEnCyH,OAASA,OAAOC,cAAcC,QAAQ,sBAGnC5J,KAAKsI,aAAahH,QAAO,SAAAqG,kBAExBA,UAAUT,UAAUlG,SAASwC,QAC7BiG,UAAUzI,SAAS2G,UAAUd,QAKzCmC,qCAA4BxF,cACjBxD,KAAKsI,aAAahH,QAAO,SAAAqG,kBACrBA,UAAUT,UAAUlG,SAASwC,WAI5CqG,2BAAkBtI,KAAM2B,eACfvC,WAAW8G,SAASlG,KAAM2B,WAGnC4G,sBAAavI,KAAM2B,eACViF,MAAMV,SAASlG,KAAM2B,WAG9B6G,kBAASxI,iDAASc,gEAAAA,mDACT8F,OAAMT,wBAAKnG,aAASc,UAG7B2H,2BAAkBrC,UAAWsC,WACrBC,MAAQvC,UAAUd,GAEtBc,UAAUd,GAAKoD,MACftC,UAAUwC,YAAYtD,GAAKoD,WAEtBpC,eAAeoC,OAAStC,iBAEtB3H,KAAK6H,eAAeqC,YAItB5B,aAAalB,SAAQ,SAAAO,eAClByC,SAAWzC,UAAU0C,WAAWD,UAAY,GAEhD/C,OAAOiD,QAAQF,UAAUhD,SAAQ,gDAAErB,6BAAOc,UAAAA,UAAI0D,QACtC1D,KAAOqD,QACPE,SAASrE,KAAKc,GAAKoD,cAMnCpB,yBAAgBlB,WAEZA,UAAU6C,kBAEHxK,KAAK6H,eAAeF,UAAUd,KAGzC4D,iBAAQvH,eACCmF,gBAAkBnF,UAG3BwH,4BAAmBC,QAASC,mCACpBC,oBAAsB,GAE1BD,kBAAkBxD,SAAQ,SAAA0D,cAClBC,SAAWC,OAAKC,mBAAmBH,SAAUH,SAE7CI,WAAUF,oBAAoBC,UAAYC,iBAK9CG,gBAFAC,iBAAoB/E,KAAKgF,UAALhF,wBAAYiB,OAAOgE,OAAOR,8BAIlDxD,OAAOiD,QAAQO,qBAAqBzD,SAAQ,kDAAE0D,6BACzBK,mBAAkBD,gBAAkBJ,aAGlDI,iBAGXD,4BAAmBH,SAAUH,aAASW,oEAAe,EAC7CC,gBAAkBvL,KAAKwI,cAAcsC,aAEnCS,qBAEFC,SAAWD,gBAAgBC,YAE3BA,SAASxK,SAAS2J,SAAU,OAAOW,iBAElC,IAAIG,EAAI,EAAGA,EAAID,SAAShG,OAAQiG,IAAK,KAClCV,SAAW/K,KAAKiL,mBAAmBO,SAASC,GAAId,QAASW,aAAe,MAExEP,SAAU,OAAOA,iBCpLlB,CACXW,wCACWvK,MAAMC,KAAKqC,SAASkI,kCAG/BC,kDAAmCzI,4DAAO,KACzB,OAATA,OACAA,KAAOM,cASLoI,OAAS1K,MAAMC,KAAK+B,KAAKwI,2CACzBG,aAAe3K,MAAMC,KAAK+B,KAAKwI,wEAE9BE,OAAOvK,QAAO,SAAAb,WAAOqL,aAAa9K,SAASP,QAGtDsL,gCAAuB9I,aACZ9B,MAAMC,KAAK6B,KAAK0I,qCAG3BK,gCAAuBC,UAAW9J,cACvBsB,SAASO,gCAAyBiI,uBAAc9J,cAG3D+J,mBAAUC,mBACNC,uBAAsB,WAClBA,sBAAsBD,GAAGE,KAAKvK,YAItCwK,qBAAY7L,WACDT,KAAKuM,mBAAmB9L,GAAI,OAGvC8L,4BAAmB9L,GAAIwL,eACbO,UAAY/L,GAAGmJ,0BAAmBqC,oBAElCO,iHAGuDP,sPAInExL,GAAGiG,uBAIU8F,WAGXC,2BAAkBhM,WACPT,KAAK0M,aAAajM,GAAI,OAGjCiM,sBAAajM,GAAIwL,kBACNxL,GAAGiM,4BAAqBT,aAGnChK,sBAAaxB,GAAIwL,kBACNxL,GAAGwB,4BAAqBgK,aAGnCU,yBAAgBlM,GAAIwL,kBACTxL,GAAGkM,+BAAwBV,aAGtCW,sBAAanM,GAAIwL,UAAW9J,cACjB1B,GAAGmM,4BAAqBX,WAAa9J,QAGhD0K,kBAASpM,WACEA,KAAOgD,SAASqJ,eAG3BC,iBAAQtM,UACG,CAAC,QAAS,WAAY,UAAUO,SACnCP,GAAG8J,QAAQyC,gBAInBC,qBAAYxM,UAEJ,CAAC,QAAS,YAAYO,SAASP,GAAG8J,QAAQyC,iBACzC,CAAC,WAAY,SAAShM,SAASP,GAAGI,OAI3CqM,wBAAezM,GAAIkH,cACC,aAAZlH,GAAGI,KAAqB,KACpBsM,UAAY3M,eAAeC,IAAI2M,IAAI,SAASjL,MAG5CkL,WAAa1F,UAAU2F,gBAAgBH,WACrCxF,UAAU2F,gBAAgBH,WAAWvG,QAAQzE,MAC7CiL,SAAIzF,UAAU4F,KAAMJ,kBAEtBhM,MAAMsD,QAAQ4I,YACPrN,KAAKwN,4BAA4B/M,GAAI4M,cAG5C5M,GAAGgN,UACIhN,GAAGwB,aAAa,WAAY,GAIpC,MAAmB,WAAfxB,GAAG8J,SAAwB9J,GAAGiN,SAC9B1N,KAAK2N,gBAAgBlN,IAGzBA,GAAG0B,OAGdqL,qCAA4B/M,GAAImN,mBACxBnN,GAAGgN,QACIG,WAAW5M,SAASP,GAAG0B,OACxByL,WACAA,WAAWC,OAAOpN,GAAG0B,OAGxByL,WAAWtM,QAAO,SAAAwM,aAAQA,MAAQrN,GAAG0B,UAGhD4L,gCAAuBtN,GAAIkH,eACjBqG,YAAcxN,eAAeC,IAAI2M,IAAI,SAASjL,MAC9CkL,WAAaD,SAAIzF,UAAU4F,KAAMS,aAIN,UAA7BvN,GAAG8J,QAAQhG,eACC,SAAZ9D,GAAGI,WAIFoN,cAAcxN,GAAI4M,aAG3BY,uBAAcxN,GAAI0B,UACdyF,QAAMmC,SAAS,6BAA8B5H,MAAO1B,IAEpC,UAAZA,GAAGI,KACHJ,GAAGgN,QAAUhN,GAAG0B,OAASA,WACtB,GAAgB,aAAZ1B,GAAGI,QACNM,MAAMsD,QAAQtC,OAAQ,KAIlB+L,YAAa,EACjB/L,MAAMiF,SAAQ,SAAA5C,KACNA,KAAO/D,GAAG0B,QACV+L,YAAa,MAIrBzN,GAAGgN,QAAUS,gBAEbzN,GAAGgN,UAAYtL,UAEG,WAAf1B,GAAG8J,aACL4D,aAAa1N,GAAI0B,QAEtBA,WAAkBiC,IAAVjC,MAAsB,GAAKA,MAEnC1B,GAAG0B,MAAQA,QAInBwL,yBAAgBlN,WACLU,MAAMC,KAAKX,GAAGmE,SAChBtD,QAAO,SAAA8M,eAAUA,OAAOC,YACxBvN,KAAI,SAAAsN,eACMA,OAAOjM,OAASiM,OAAOE,SAI1CH,sBAAa1N,GAAI0B,WACPoM,kBAAoB,GAAGV,OAAO1L,OAAOrB,KAAI,SAAAqB,cACpCA,MAAQ,MAGnBhB,MAAMC,KAAKX,GAAGmE,SAASwC,SAAQ,SAAAgH,QAC3BA,OAAOC,SAAWE,kBAAkBvN,SAASoN,OAAOjM,YCpM5DqM,KAAOpI,KAAKoI,KACZC,MAAQrI,KAAKqI,gBAIA,SAAUC,UACzB,OAAOC,MAAMD,UAAYA,UAAY,GAAKA,SAAW,EAAID,MAAQD,MAAME,kCCJxD,SAAUE,IACzB,GAAUxK,MAANwK,GAAiB,MAAMC,UAAU,wBAA0BD,IAC/D,OAAOA,ICALE,eAAe,SAAUC,mBAC3B,OAAO,SAAUC,MAAOC,KACtB,IAGIC,MAAOC,OAHPC,EAAIpK,OAAOqK,uBAAuBL,QAClCM,SAAWC,UAAUN,KACrBO,KAAOJ,EAAE5J,OAEb,OAAI8J,SAAW,GAAKA,UAAYE,KAAaT,kBAAoB,QAAK3K,GACtE8K,MAAQE,EAAEK,WAAWH,WACN,OAAUJ,MAAQ,OAAUI,SAAW,IAAME,OACtDL,OAASC,EAAEK,WAAWH,SAAW,IAAM,OAAUH,OAAS,MAC1DJ,kBAAoBK,EAAEM,OAAOJ,UAAYJ,MACzCH,kBAAoBK,EAAEzJ,MAAM2J,SAAUA,SAAW,GAA+BH,OAAS,OAAlCD,MAAQ,OAAU,IAA0B,wBAI5F,CAGfS,OAAQb,gBAAa,GAGrBY,OAAQZ,gBAAa,yeCzBvB,IAAIc,MAAQ,SAAUhB,IACpB,OAAOA,IAAMA,GAAGxI,MAAQA,MAAQwI,aAMhCgB,MAA2B,iBAAdC,YAA0BA,aACvCD,MAAuB,iBAAV1L,QAAsBA,SAEnC0L,MAAqB,iBAARE,MAAoBA,OACjCF,MAAuB,iBAAVG,gBAAsBA,iBAEnC,WAAe,OAAO/P,KAAtB,IAAoC8C,SAAS,cAATA,SCbrB,SAAUkN,MACzB,IACE,QAASA,OACT,MAAOC,OACP,OAAO,iBCDOC,OAAM,WAEtB,OAA8E,GAAvE7I,OAAO8I,eAAe,GAAI,EAAG,CAAE/C,IAAK,WAAc,OAAO,KAAQ,eCLzD,SAAUwB,IACzB,MAAqB,iBAAPA,GAAyB,OAAPA,GAA4B,mBAAPA,ICEnDnL,WAAWsM,SAAOtM,SAElB2M,OAASvL,SAASpB,aAAaoB,SAASpB,WAAS4M,qCAEpC,SAAUzB,IACzB,OAAOwB,OAAS3M,WAAS4M,cAAczB,IAAM,kBCH7B0B,cAAgBJ,OAAM,WAEtC,OAEQ,GAFD7I,OAAO8I,eAAeE,sBAAc,OAAQ,IAAK,CACtDjD,IAAK,WAAc,OAAO,KACzBmD,cCPY,SAAU3B,IACzB,IAAK/J,SAAS+J,IACZ,MAAMC,UAAU7J,OAAO4J,IAAM,qBAC7B,OAAOA,gBCCM,SAAU4B,MAAOC,kBAChC,IAAK5L,SAAS2L,OAAQ,OAAOA,MAC7B,IAAIrE,GAAI3H,IACR,GAAIiM,kBAAoD,mBAAxBtE,GAAKqE,MAAMlK,YAA4BzB,SAASL,IAAM2H,GAAGzE,KAAK8I,QAAS,OAAOhM,IAC9G,GAAmC,mBAAvB2H,GAAKqE,MAAME,WAA2B7L,SAASL,IAAM2H,GAAGzE,KAAK8I,QAAS,OAAOhM,IACzF,IAAKiM,kBAAoD,mBAAxBtE,GAAKqE,MAAMlK,YAA4BzB,SAASL,IAAM2H,GAAGzE,KAAK8I,QAAS,OAAOhM,IAC/G,MAAMqK,UAAU,4CCNd8B,gBAAkBtJ,OAAO8I,mBAIjBG,YAAcK,gBAAkB,SAAwBC,EAAGC,EAAGC,YAIxE,GAHAC,SAASH,GACTC,EAAIG,YAAYH,GAAG,GACnBE,SAASD,YACLG,aAAgB,IAClB,OAAON,gBAAgBC,EAAGC,EAAGC,YAC7B,MAAOb,QACT,GAAI,QAASa,YAAc,QAASA,WAAY,MAAMjC,UAAU,2BAEhE,MADI,UAAWiC,aAAYF,EAAEC,GAAKC,WAAW3O,OACtCyO,yDCnBQ,SAAUM,OAAQ/O,OACjC,MAAO,CACLgP,aAAuB,EAATD,QACdE,eAAyB,EAATF,QAChBG,WAAqB,EAATH,QACZ/O,MAAOA,oCCDMmO,YAAc,SAAUgB,OAAQvL,IAAK5D,OACpD,OAAOoP,qBAAqBC,EAAEF,OAAQvL,IAAK0L,yBAAyB,EAAGtP,SACrE,SAAUmP,OAAQvL,IAAK5D,OAEzB,OADAmP,OAAOvL,KAAO5D,MACPmP,kBCLQ,SAAUvL,IAAK5D,OAC9B,IACEuP,4BAA4B3B,SAAQhK,IAAK5D,OACzC,MAAO8N,OACPF,SAAOhK,KAAO5D,MACd,OAAOA,OCLPwP,OAAS,qBACT/J,QAAQmI,SAAO4B,SAAWC,UAAUD,OAAQ,gBAE/B/J,QCJbiK,iBAAmB/O,SAASwD,SAGE,mBAAvBsB,YAAMkK,gBACflK,YAAMkK,cAAgB,SAAUlD,IAC9B,OAAOiD,iBAAiBnK,KAAKkH,MAIjC,kBAAiBhH,YAAMkK,cCRnBC,UAAUhC,SAAOgC,sBAEe,mBAAZA,WAA0B,cAAcC,KAAKF,cAAcC,qBCDlE,SAAUrD,UACzB,OAAOrH,OAAOgI,uBAAuBX,YCHnCuD,eAAiB,GAAGA,qBAEP5K,OAAO6K,QAAU,SAAgBtD,GAAI7I,KACpD,OAAOkM,eAAevK,KAAKyK,SAASvD,IAAK7I,qDCF1CqM,eAAiB,SAAUrM,IAAK5D,OAC/B,OAAOyF,YAAM7B,OAAS6B,YAAM7B,UAAiB3B,IAAVjC,MAAsBA,MAAQ,MAChE,WAAY,IAAIgF,KAAK,CACtBkL,QAAS,SACTC,KAAyB,SACzBC,UAAW,4CCRT1L,GAAK,EACL2L,QAAUpM,KAAKC,aAEF,SAAUN,KACzB,MAAO,UAAYf,YAAeZ,IAAR2B,IAAoB,GAAKA,KAAO,QAAUc,GAAK2L,SAASlM,SAAS,KCDzFgB,KAAOmL,OAAO,kBAED,SAAU1M,KACzB,OAAOuB,KAAKvB,OAASuB,KAAKvB,KAAO2M,IAAI3M,oBCNtB,GCSb4M,2BAA6B,6BAC7BZ,QAAUhC,SAAOgC,QACjBa,MAAKxF,IAAKnM,IAEV4R,QAAU,SAAUjE,IACtB,OAAO3N,IAAI2N,IAAMxB,IAAIwB,IAAMgE,MAAIhE,GAAI,KAGjCkE,UAAY,SAAUC,MACxB,OAAO,SAAUnE,IACf,IAAIoE,MACJ,IAAKnO,SAAS+J,MAAQoE,MAAQ5F,IAAIwB,KAAK/N,OAASkS,KAC9C,MAAMlE,UAAU,0BAA4BkE,KAAO,aACnD,OAAOC,QAIb,GAAIC,eAAmBR,YAAOO,MAAO,CACnC,IAAIpL,MAAQ6K,YAAOO,QAAUP,YAAOO,MAAQ,IAAIjB,SAC5CmB,MAAQtL,MAAMwF,IACd+F,MAAQvL,MAAM3G,IACdmS,MAAQxL,MAAMgL,IAClBA,MAAM,SAAUhE,GAAIyE,UAClB,GAAIF,MAAMzL,KAAKE,MAAOgH,IAAK,MAAM,IAAIC,UAAU8D,4BAG/C,OAFAU,SAASC,OAAS1E,GAClBwE,MAAM1L,KAAKE,MAAOgH,GAAIyE,UACfA,UAETjG,IAAM,SAAUwB,IACd,OAAOsE,MAAMxL,KAAKE,MAAOgH,KAAO,IAElC3N,IAAM,SAAU2N,IACd,OAAOuE,MAAMzL,KAAKE,MAAOgH,SAEtB,CACL,IAAI2E,MAAQC,UAAU,SACtBC,aAAWF,QAAS,EACpBX,MAAM,SAAUhE,GAAIyE,UAClB,GAAIK,MAAU9E,GAAI2E,OAAQ,MAAM,IAAI1E,UAAU8D,4BAG9C,OAFAU,SAASC,OAAS1E,GAClB8C,4BAA4B9C,GAAI2E,MAAOF,UAChCA,UAETjG,IAAM,SAAUwB,IACd,OAAO8E,MAAU9E,GAAI2E,OAAS3E,GAAG2E,OAAS,IAE5CtS,IAAM,SAAU2N,IACd,OAAO8E,MAAU9E,GAAI2E,QAIzB,kBAAiB,CACfX,IAAKA,MACLxF,IAAKA,IACLnM,IAAKA,IACL4R,QAASA,QACTC,UAAWA,WChETa,sBAAwB,GAAGC,qBAE3BC,2BAA2BxM,OAAOwM,yBAGlCC,YAAcD,6BAA6BF,sBAAsBjM,KAAK,CAAE,EAAG,GAAK,OAIxEoM,YAAc,SAA8BC,GACtD,IAAIC,WAAaH,2BAAyB7T,KAAM+T,GAChD,QAASC,YAAcA,WAAW7C,YAChCwC,yDCbArN,SAAW,GAAGA,oBAED,SAAUsI,IACzB,OAAOtI,SAASoB,KAAKkH,IAAIjJ,MAAM,GAAI,ICAjChE,MAAQ,GAAGA,oBAGEuO,OAAM,WAGrB,OAAQ7I,OAAO,KAAKuM,qBAAqB,MACtC,SAAUhF,IACb,MAAsB,UAAfqF,WAAQrF,IAAkBjN,MAAM+F,KAAKkH,GAAI,IAAMvH,OAAOuH,KAC3DvH,uBCRa,SAAUuH,IACzB,OAAOsF,cAAc7E,uBAAuBT,MCI1CuF,0BAA4B9M,OAAOwM,6BAI3BvD,YAAc6D,0BAA4B,SAAkCvD,EAAGC,GAGzF,GAFAD,EAAIwD,gBAAgBxD,GACpBC,EAAIG,YAAYH,GAAG,GACfI,aAAgB,IAClB,OAAOkD,0BAA0BvD,EAAGC,GACpC,MAAOZ,QACT,GAAIhP,MAAI2P,EAAGC,GAAI,OAAOY,0BAA0B4C,2BAA2B7C,EAAE9J,KAAKkJ,EAAGC,GAAID,EAAEC,4FCZ7F,IAAIyD,iBAAmBC,cAAoBnH,IACvCoH,qBAAuBD,cAAoB1B,QAC3C4B,SAAWzP,OAAOA,QAAQrD,MAAM,WAEnCyQ,eAAiB,SAAUxB,EAAG7K,IAAK5D,MAAOyC,SACzC,IAGIoO,MAHA0B,SAAS9P,WAAYA,QAAQ8P,OAC7BC,SAAS/P,WAAYA,QAAQuM,WAC7ByD,cAAchQ,WAAYA,QAAQgQ,YAElB,mBAATzS,QACS,iBAAP4D,KAAoB9E,MAAIkB,MAAO,SACxCuP,4BAA4BvP,MAAO,OAAQ4D,MAE7CiN,MAAQwB,qBAAqBrS,QAClB0S,SACT7B,MAAM6B,OAASJ,SAAS7O,KAAmB,iBAAPG,IAAkBA,IAAM,MAG5D6K,IAAMb,UAIE2E,QAEAE,aAAehE,EAAE7K,OAC3B4O,QAAS,UAFF/D,EAAE7K,KAIP4O,OAAQ/D,EAAE7K,KAAO5D,MAChBuP,4BAA4Bd,EAAG7K,IAAK5D,QATnCwS,OAAQ/D,EAAE7K,KAAO5D,MAChByP,UAAU7L,IAAK5D,SAUrBW,SAASgS,UAAW,YAAY,WACjC,MAAsB,mBAAR9U,MAAsBsU,iBAAiBtU,MAAM6U,QAAU/C,cAAc9R,iBCpCpE+P,SCCbgF,YAAY,SAAUC,UACxB,MAA0B,mBAAZA,SAAyBA,cAAW5Q,cAGnC,SAAU6Q,UAAW7S,QACpC,OAAOlC,UAAUsF,OAAS,EAAIuP,YAAUpQ,KAAKsQ,aAAeF,YAAUhF,SAAOkF,YACzEtQ,KAAKsQ,YAActQ,KAAKsQ,WAAW7S,SAAW2N,SAAOkF,YAAclF,SAAOkF,WAAW7S,SCPvFgJ,MAAMhF,KAAKgF,aAIE,SAAUsD,UACzB,OAAOA,SAAW,EAAItD,MAAImE,UAAUb,UAAW,kBAAoB,GCLjEwG,IAAM9O,KAAK8O,IACX9J,MAAMhF,KAAKgF,oBAKE,SAAU+J,MAAO3P,QAChC,IAAI4P,QAAU7F,UAAU4F,OACxB,OAAOC,QAAU,EAAIF,IAAIE,QAAU5P,OAAQ,GAAK4F,MAAIgK,QAAS5P,SCL3DsJ,eAAe,SAAUuG,aAC3B,OAAO,SAAUrG,MAAOvO,GAAI6U,WAC1B,IAGInT,MAHAyO,EAAIwD,gBAAgBpF,OACpBxJ,OAAS+P,SAAS3E,EAAEpL,QACpB2P,MAAQK,gBAAgBF,UAAW9P,QAIvC,GAAI6P,aAAe5U,IAAMA,IAAI,KAAO+E,OAAS2P,OAG3C,IAFAhT,MAAQyO,EAAEuE,WAEGhT,MAAO,OAAO,OAEtB,KAAMqD,OAAS2P,MAAOA,QAC3B,IAAKE,aAAeF,SAASvE,IAAMA,EAAEuE,SAAW1U,GAAI,OAAO4U,aAAeF,OAAS,EACnF,OAAQE,cAAgB,kBAIb,CAGfrU,SAAU8N,gBAAa,GAGvB2G,QAAS3G,gBAAa,IC5BpB2G,QAAUC,cAAuCD,2BAGpC,SAAUnE,OAAQqE,OACjC,IAGI5P,IAHA6K,EAAIwD,gBAAgB9C,QACpB7F,EAAI,EACJmK,OAAS,GAEb,IAAK7P,OAAO6K,GAAI3P,MAAIwS,aAAY1N,MAAQ9E,MAAI2P,EAAG7K,MAAQ6P,OAAOzO,KAAKpB,KAEnE,KAAO4P,MAAMnQ,OAASiG,GAAOxK,MAAI2P,EAAG7K,IAAM4P,MAAMlK,SAC7CgK,QAAQG,OAAQ7P,MAAQ6P,OAAOzO,KAAKpB,MAEvC,OAAO6P,oBCdQ,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,WCLEnC,WAAaoC,YAAYhI,OAAO,SAAU,iBAKlCxG,OAAOyO,qBAAuB,SAA6BlF,GACrE,OAAOmF,mBAAmBnF,EAAG6C,mDCRnBpM,OAAO2O,kECKFC,WAAW,UAAW,YAAc,SAAiBrH,IACpE,IAAItH,KAAO4O,0BAA0B1E,EAAET,SAASnC,KAC5CoH,sBAAwBG,4BAA4B3E,EACxD,OAAOwE,sBAAwB1O,KAAKuG,OAAOmI,sBAAsBpH,KAAOtH,gCCJzD,SAAU5C,OAAQmQ,QAIjC,IAHA,IAAIvN,KAAO8O,QAAQvB,QACf1E,eAAiBoB,qBAAqBC,EACtCqC,yBAA2BwC,+BAA+B7E,EACrD/F,EAAI,EAAGA,EAAInE,KAAK9B,OAAQiG,IAAK,CACpC,IAAI1F,IAAMuB,KAAKmE,GACVxK,MAAIyD,OAAQqB,MAAMoK,eAAezL,OAAQqB,IAAK8N,yBAAyBgB,OAAQ9O,QCTpFuQ,YAAc,kBAEdC,SAAW,SAAUC,QAASC,WAChC,IAAItU,MAAQoL,KAAKmJ,UAAUF,UAC3B,OAAOrU,OAASwU,UACZxU,OAASyU,SACW,mBAAbH,UAA0BvG,MAAMuG,aACrCA,YAGJC,UAAYH,SAASG,UAAY,SAAUG,QAC7C,OAAO7R,OAAO6R,QAAQnV,QAAQ4U,YAAa,KAAK/R,eAG9CgJ,KAAOgJ,SAAShJ,KAAO,GACvBqJ,OAASL,SAASK,OAAS,IAC3BD,SAAWJ,SAASI,SAAW,eAElBJ,SCnBb1C,2BAA2B6B,+BAA2DlE,UAqBzE,SAAU5M,QAASiQ,QAClC,IAGYnQ,OAAQqB,IAAK+Q,eAAgBC,eAAgB/C,WAHrDgD,OAASpS,QAAQF,OACjBuS,OAASrS,QAAQmL,OACjBmH,OAAStS,QAAQuS,KASrB,GANEzS,OADEuS,OACOlH,SACAmH,OACAnH,SAAOiH,SAAWpF,UAAUoF,OAAQ,KAEnCjH,SAAOiH,SAAW,IAAIlC,UAEtB,IAAK/O,OAAO8O,OAAQ,CAQ9B,GAPAkC,eAAiBlC,OAAO9O,KAGtB+Q,eAFElS,QAAQgQ,aACVZ,WAAaH,2BAAyBnP,OAAQqB,OACfiO,WAAW7R,MACpBuC,OAAOqB,MACtBwQ,WAASU,OAASlR,IAAMiR,QAAUE,OAAS,IAAM,KAAOnR,IAAKnB,QAAQwS,cAE5ChT,IAAnB0S,eAA8B,CAC3C,UAAWC,uBAA0BD,eAAgB,SACrDO,0BAA0BN,eAAgBD,iBAGxClS,QAAQ0S,MAASR,gBAAkBA,eAAeQ,OACpD5F,4BAA4BqF,eAAgB,QAAQ,GAGtDQ,SAAS7S,OAAQqB,IAAKgR,eAAgBnS,mCCjDxBsL,OAAM,WACtB,SAASsH,KAGT,OAFAA,EAAE1C,UAAU2C,YAAc,KAEnBpQ,OAAOqQ,eAAe,IAAIF,KAASA,EAAE1C,aCD1C6C,WAAWnE,UAAU,YACrBoE,gBAAkBvQ,OAAOyN,+BAKZ+C,uBAA2BxQ,OAAOqQ,eAAiB,SAAU9G,GAE5E,OADAA,EAAIuB,SAASvB,GACT3P,MAAI2P,EAAG+G,YAAkB/G,EAAE+G,YACH,mBAAjB/G,EAAE6G,aAA6B7G,aAAaA,EAAE6G,YAChD7G,EAAE6G,YAAY3C,UACdlE,aAAavJ,OAASuQ,gBAAkB,sBCdlC3B,WAAW,YAAa,cAAgB,GCCrD6B,UAAU/H,SAAO+H,QACjBC,SAAWD,WAAWA,UAAQC,SAC9BC,GAAKD,UAAYA,SAASC,GAC1BxW,MAAO6Q,QAEP2F,IACFxW,MAAQwW,GAAGrW,MAAM,KACjB0Q,QAAU7Q,MAAM,GAAK,EAAI,EAAIA,MAAM,GAAKA,MAAM,IACrCyW,kBACTzW,MAAQyW,gBAAUzW,MAAM,iBACnBA,OAASA,MAAM,IAAM,MACxBA,MAAQyW,gBAAUzW,MAAM,iBACpBA,QAAO6Q,QAAU7Q,MAAM,MAI/B,oBAAiB6Q,UAAYA,uBCdVhL,OAAO2O,wBAA0B9F,OAAM,WACxD,IAAIgI,OAASC,SAGb,OAAQnT,OAAOkT,WAAa7Q,OAAO6Q,kBAAmBC,UAEnDA,OAAOb,MAAQc,iBAAcA,gBAAa,qBCR9BC,eACXF,OAAOb,MACkB,iBAAnBa,OAAOG,SCEfC,sBAAwB9F,OAAO,OAC/B0F,SAASpI,SAAOoI,OAChBK,sBAAwBC,eAAoBN,SAASA,UAAUA,SAAOO,eAAiBhG,oBAE1E,SAAUnR,MAOvB,OANGN,MAAIsX,sBAAuBhX,QAAW8W,cAAuD,iBAA/BE,sBAAsBhX,SACnF8W,cAAiBpX,MAAIkX,SAAQ5W,MAC/BgX,sBAAsBhX,MAAQ4W,SAAO5W,MAErCgX,sBAAsBhX,MAAQiX,sBAAsB,UAAYjX,OAE3DgX,sBAAsBhX,OCV7BoX,WAAWC,gBAAgB,YAC3BC,0BAAyB,EAEzBC,aAAa,WAAc,OAAO9Y,MAIlC+Y,oBAAmBC,kCAAmCC,cAGtD,GAAG3R,OACL2R,cAAgB,GAAG3R,OAEb,SAAU2R,eAEdD,kCAAoCtB,qBAAeA,qBAAeuB,gBAC9DD,oCAAsC3R,OAAOyN,YAAWiE,oBAAoBC,oCAHlDH,0BAAyB,GAO3D,IAAIK,uBAA8C9U,MAArB2U,qBAAkC7I,OAAM,WACnE,IAAI8B,KAAO,GAEX,OAAO+G,oBAAkBJ,YAAUjR,KAAKsK,QAAUA,QAGhDkH,yBAAwBH,oBAAoB,IAIH9X,MAAI8X,oBAAmBJ,aAClEjH,4BAA4BqH,oBAAmBJ,WAAUG,cAG3D,kBAAiB,CACfC,kBAAmBA,oBACnBF,uBAAwBA,qCCtCTxR,OAAOC,MAAQ,SAAcsJ,GAC5C,OAAOmF,mBAAmBnF,EAAGiF,qCCCdvF,YAAcjJ,OAAO8R,iBAAmB,SAA0BvI,EAAGwI,YACpFrI,SAASH,GAKT,IAJA,IAGI7K,IAHAuB,KAAO+R,WAAWD,YAClB5T,OAAS8B,KAAK9B,OACd2P,MAAQ,EAEL3P,OAAS2P,OAAO5D,qBAAqBC,EAAEZ,EAAG7K,IAAMuB,KAAK6N,SAAUiE,WAAWrT,MACjF,OAAO6K,QCbQqF,WAAW,WAAY,mBCMpCqD,GAAK,IACLC,GAAK,IACLC,UAAY,YACZC,OAAS,SACT9B,SAAWnE,UAAU,YAErBkG,iBAAmB,aAEnBC,UAAY,SAAU1V,SACxB,OAAOsV,GAAKE,OAASH,GAAKrV,QAAUsV,GAAK,IAAME,OAASH,IAItDM,0BAA4B,SAAUC,iBACxCA,gBAAgBC,MAAMH,UAAU,KAChCE,gBAAgBE,QAChB,IAAIC,KAAOH,gBAAgBI,aAAa5S,OAExC,OADAwS,gBAAkB,KACXG,MAILE,yBAA2B,WAE7B,IAEIC,eAFAC,OAASC,sBAAsB,UAC/BC,GAAK,OAASb,OAAS,IAU3B,OARAW,OAAOG,MAAMC,QAAU,OACvBC,KAAKC,YAAYN,QAEjBA,OAAOO,IAAM3V,OAAOsV,KACpBH,eAAiBC,OAAOQ,cAAcnX,UACvBoX,OACfV,eAAeL,MAAMH,UAAU,sBAC/BQ,eAAeJ,QACRI,eAAe3C,GAQpBqC,gBACAiB,gBAAkB,WACpB,IAEEjB,gBAAkBpW,SAASsX,QAAU,IAAIC,cAAc,YACvD,MAAO/K,QACT6K,gBAAkBjB,gBAAkBD,0BAA0BC,iBAAmBK,2BAEjF,IADA,IAAI1U,OAASqQ,YAAYrQ,OAClBA,iBAAiBsV,gBAAgBtB,WAAW3D,YAAYrQ,SAC/D,OAAOsV,gCAGEnD,WAAY,EAIvB,iBAAiBtQ,OAAO4T,QAAU,SAAgBrK,EAAGwI,YACnD,IAAIxD,OAQJ,OAPU,OAANhF,GACF8I,iBAAiBF,WAAazI,SAASH,GACvCgF,OAAS,IAAI8D,iBACbA,iBAAiBF,WAAa,KAE9B5D,OAAO+B,UAAY/G,GACdgF,OAASkF,uBACM1W,IAAfgV,WAA2BxD,OAASuD,uBAAiBvD,OAAQwD,aC5ElEjJ,iBAAiBuF,qBAA+ClE,EAIhE0J,gBAAgBtC,gBAAgB,8BAEnB,SAAUhK,GAAIuM,IAAKjE,QAC9BtI,KAAO3N,MAAI2N,GAAKsI,OAAStI,GAAKA,GAAGkG,UAAWoG,kBAC9C/K,iBAAevB,GAAIsM,gBAAe,CAAE9J,cAAc,EAAMjP,MAAOgZ,iBCRlD,GCCbpC,oBAAoBrD,cAAuCqD,kBAM3DD,aAAa,WAAc,OAAO9Y,gCAErB,SAAUob,oBAAqBC,KAAMC,MACpD,IAAIJ,cAAgBG,KAAO,YAI3B,OAHAD,oBAAoBtG,UAAYmG,aAAOlC,oBAAmB,CAAEuC,KAAM7J,yBAAyB,EAAG6J,QAC9FC,eAAeH,oBAAqBF,eAAe,GACnDM,UAAUN,eAAiBpC,aACpBsC,wCCZQ,SAAUxM,IACzB,IAAK/J,SAAS+J,KAAc,OAAPA,GACnB,MAAMC,UAAU,aAAe7J,OAAO4J,IAAM,mBAC5C,OAAOA,yBCGMvH,OAAOoU,iBAAmB,aAAe,GAAK,WAC7D,IAEIC,OAFAC,gBAAiB,EACjB3J,KAAO,GAEX,KAEE0J,OAASrU,OAAOwM,yBAAyBxM,OAAOyN,UAAW,aAAalC,KACjElL,KAAKsK,KAAM,IAClB2J,eAAiB3J,gBAAgB7Q,MACjC,MAAO8O,QACT,OAAO,SAAwBW,EAAGgL,OAKhC,OAJA7K,SAASH,GACTiL,mBAAmBD,OACfD,eAAgBD,OAAOhU,KAAKkJ,EAAGgL,OAC9BhL,EAAEkL,UAAYF,MACZhL,GAfoD,QAiBzDxM,GCZF2U,kBAAoBgD,cAAchD,kBAClCF,uBAAyBkD,cAAclD,uBACvCF,WAAWC,gBAAgB,YAC3BoD,KAAO,OACPC,OAAS,SACTC,QAAU,UAEVpD,WAAa,WAAc,OAAO9Y,qBAErB,SAAUmc,SAAUd,KAAMD,oBAAqBE,KAAMc,QAASC,OAAQC,QACrFC,0BAA0BnB,oBAAqBC,KAAMC,MAErD,IAkBIkB,yBAA0BC,QAASC,IAlBnCC,mBAAqB,SAAUC,MACjC,GAAIA,OAASR,SAAWS,gBAAiB,OAAOA,gBAChD,IAAKhE,wBAA0B+D,QAAQE,kBAAmB,OAAOA,kBAAkBF,MACnF,OAAQA,MACN,KAAKZ,KACL,KAAKC,OACL,KAAKC,QAAS,OAAO,WAAqB,OAAO,IAAId,oBAAoBpb,KAAM4c,OAC/E,OAAO,WAAc,OAAO,IAAIxB,oBAAoBpb,QAGpDkb,cAAgBG,KAAO,YACvB0B,uBAAwB,EACxBD,kBAAoBX,SAASrH,UAC7BkI,eAAiBF,kBAAkBnE,aAClCmE,kBAAkB,eAClBV,SAAWU,kBAAkBV,SAC9BS,iBAAmBhE,wBAA0BmE,gBAAkBL,mBAAmBP,SAClFa,kBAA4B,SAAR5B,MAAkByB,kBAAkBxS,SAA4B0S,eAiCxF,GA7BIC,oBACFT,yBAA2B9E,qBAAeuF,kBAAkBvV,KAAK,IAAIyU,WACjEpD,oBAAsB1R,OAAOyN,WAAa0H,yBAAyBlB,OACrD5D,qBAAe8E,4BAA8BzD,oBACvD0C,qBACFA,qBAAee,yBAA0BzD,mBACa,mBAAtCyD,yBAAyB7D,aACzCjH,4BAA4B8K,yBAA0B7D,WAAUG,aAIpEyC,eAAeiB,yBAA0BtB,eAAe,KAMxDkB,SAAWH,QAAUe,gBAAkBA,eAAezb,OAAS0a,SACjEc,uBAAwB,EACxBF,gBAAkB,WAAoB,OAAOG,eAAetV,KAAK1H,QAIvC8c,kBAAkBnE,cAAckE,iBAC1DnL,4BAA4BoL,kBAAmBnE,WAAUkE,iBAE3DrB,UAAUH,MAAQwB,gBAGdT,QAMF,GALAK,QAAU,CACRpR,OAAQsR,mBAAmBV,QAC3B3U,KAAM+U,OAASQ,gBAAkBF,mBAAmBX,MACpD1R,QAASqS,mBAAmBT,UAE1BI,OAAQ,IAAKI,OAAOD,SAClB5D,wBAA0BkE,yBAA2BL,OAAOI,qBAC9DvF,SAASuF,kBAAmBJ,IAAKD,QAAQC,WAEtCQ,QAAE,CAAExY,OAAQ2W,KAAMO,OAAO,EAAMxE,OAAQyB,wBAA0BkE,uBAAyBN,SAGnG,OAAOA,SCvFL/M,OAASgG,gBAAyChG,OAIlDyN,gBAAkB,kBAClBC,mBAAmB7I,cAAoB3B,IACvC0B,mBAAmBC,cAAoBzB,UAAUqK,iBAIrDE,eAAerY,OAAQ,UAAU,SAAUsY,UACzCF,mBAAiBpd,KAAM,CACrBa,KAAMsc,gBACNtG,OAAQ7R,OAAOsY,UACfnI,MAAO,OAIR,WACD,IAGIoI,MAHAvK,MAAQsB,mBAAiBtU,MACzB6W,OAAS7D,MAAM6D,OACf1B,MAAQnC,MAAMmC,MAElB,OAAIA,OAAS0B,OAAOrR,OAAe,CAAErD,WAAOiC,EAAWoZ,MAAM,IAC7DD,MAAQ7N,OAAOmH,OAAQ1B,OACvBnC,MAAMmC,OAASoI,MAAM/X,OACd,CAAErD,MAAOob,MAAOC,MAAM,OC3B/B,cAAiB,SAAU5O,IACzB,GAAiB,mBAANA,GACT,MAAMC,UAAU7J,OAAO4J,IAAM,sBAC7B,OAAOA,wBCAM,SAAUzC,GAAIsR,KAAMjY,QAEnC,GADAuP,UAAU5I,SACG/H,IAATqZ,KAAoB,OAAOtR,GAC/B,OAAQ3G,QACN,KAAK,EAAG,OAAO,WACb,OAAO2G,GAAGzE,KAAK+V,OAEjB,KAAK,EAAG,OAAO,SAAUlN,GACvB,OAAOpE,GAAGzE,KAAK+V,KAAMlN,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGmN,GAC1B,OAAOvR,GAAGzE,KAAK+V,KAAMlN,EAAGmN,IAE1B,KAAK,EAAG,OAAO,SAAUnN,EAAGmN,EAAGC,GAC7B,OAAOxR,GAAGzE,KAAK+V,KAAMlN,EAAGmN,EAAGC,IAG/B,OAAO,WACL,OAAOxR,GAAG/L,MAAMqd,KAAMvd,2BCnBT,SAAUoY,UACzB,IAAIsF,aAAetF,SAAiB,OACpC,QAAqBlU,IAAjBwZ,aACF,OAAO7M,SAAS6M,aAAalW,KAAK4Q,WAAWnW,oCCDhC,SAAUmW,SAAUnM,GAAIhK,MAAO+Z,SAC9C,IACE,OAAOA,QAAU/P,GAAG4E,SAAS5O,OAAO,GAAIA,MAAM,IAAMgK,GAAGhK,OACvD,MAAO8N,OAEP,MADA4N,cAAcvF,UACRrI,QCNN0I,WAAWC,gBAAgB,YAC3BkF,iBAAiB3c,MAAM2T,gCAGV,SAAUlG,IACzB,YAAcxK,IAAPwK,KAAqB4M,UAAUra,QAAUyN,IAAMkP,iBAAenF,cAAc/J,oBCHpE,SAAU0C,OAAQvL,IAAK5D,OACtC,IAAI4b,YAAc/M,YAAYjL,KAC1BgY,eAAezM,OAAQC,qBAAqBC,EAAEF,OAAQyM,YAAatM,yBAAyB,EAAGtP,QAC9FmP,OAAOyM,aAAe5b,OCNzB+Y,gBAAgBtC,gBAAgB,eAChC5G,KAAO,GAEXA,KAAKkJ,iBAAiB,IAEtB,uBAAkC,eAAjBlW,OAAOgN,MCHpBkJ,gBAAgBtC,gBAAgB,eAEhCoF,kBAAuE,aAAnDC,WAAW,WAAc,OAAO/d,UAArB,IAG/Bge,OAAS,SAAUtP,GAAI7I,KACzB,IACE,OAAO6I,GAAG7I,KACV,MAAOkK,kBAIMkO,mBAAwBF,WAAa,SAAUrP,IAC9D,IAAIgC,EAAGwN,IAAKxI,OACZ,YAAcxR,IAAPwK,GAAmB,YAAqB,OAAPA,GAAc,OAEM,iBAAhDwP,IAAMF,OAAOtN,EAAIvJ,OAAOuH,IAAKsM,kBAA8BkD,IAEnEJ,kBAAoBC,WAAWrN,GAEH,WAA3BgF,OAASqI,WAAWrN,KAAsC,mBAAZA,EAAEyN,OAAuB,YAAczI,QCpBxF+C,WAAWC,gBAAgB,8BAEd,SAAUhK,IACzB,GAAUxK,MAANwK,GAAiB,OAAOA,GAAG+J,aAC1B/J,GAAG,eACH4M,UAAUvH,QAAQrF,gBCER,SAAc0P,WAC7B,IAOI9Y,OAAQoQ,OAAQ2I,KAAMjG,SAAUgD,KAAMnZ,MAPtCyO,EAAIuB,SAASmM,WACbE,EAAmB,mBAARxe,KAAqBA,KAAOmB,MACvCsd,gBAAkBve,UAAUsF,OAC5BkZ,MAAQD,gBAAkB,EAAIve,UAAU,QAAKkE,EAC7Cua,aAAoBva,IAAVsa,MACVE,eAAiBC,kBAAkBjO,GACnCuE,MAAQ,EAIZ,GAFIwJ,UAASD,MAAQrS,oBAAKqS,MAAOD,gBAAkB,EAAIve,UAAU,QAAKkE,EAAW,IAE3DA,MAAlBwa,gBAAiCJ,GAAKrd,OAAS2d,sBAAsBF,gBAWvE,IADAhJ,OAAS,IAAI4I,EADbhZ,OAAS+P,SAAS3E,EAAEpL,SAEdA,OAAS2P,MAAOA,QACpBhT,MAAQwc,QAAUD,MAAM9N,EAAEuE,OAAQA,OAASvE,EAAEuE,OAC7C4J,eAAenJ,OAAQT,MAAOhT,YAThC,IAFAmZ,MADAhD,SAAWsG,eAAelX,KAAKkJ,IACf0K,KAChB1F,OAAS,IAAI4I,IACLD,KAAOjD,KAAK5T,KAAK4Q,WAAWkF,KAAMrI,QACxChT,MAAQwc,QAAUK,6BAA6B1G,SAAUoG,MAAO,CAACH,KAAKpc,MAAOgT,QAAQ,GAAQoJ,KAAKpc,MAClG4c,eAAenJ,OAAQT,MAAOhT,OAWlC,OADAyT,OAAOpQ,OAAS2P,MACTS,QCrCL+C,WAAWC,gBAAgB,YAC3BqG,cAAe,EAEnB,IACE,IAAIC,OAAS,EACTC,mBAAqB,CACvB7D,KAAM,WACJ,MAAO,CAAEkC,OAAQ0B,WAEnBE,OAAU,WACRH,cAAe,IAGnBE,mBAAmBxG,YAAY,WAC7B,OAAO3Y,MAGTmB,MAAMC,KAAK+d,oBAAoB,WAAc,MAAM,KACnD,MAAOlP,QAET,gCAAiB,SAAUD,KAAMqP,cAC/B,IAAKA,eAAiBJ,aAAc,OAAO,EAC3C,IAAIK,mBAAoB,EACxB,IACE,IAAIhO,OAAS,GACbA,OAAOqH,YAAY,WACjB,MAAO,CACL2C,KAAM,WACJ,MAAO,CAAEkC,KAAM8B,mBAAoB,MAIzCtP,KAAKsB,QACL,MAAOrB,QACT,OAAOqP,mBChCLC,uBAAuBC,6BAA4B,SAAUC,UAE/Dte,MAAMC,KAAKqe,qBAKX,CAAE/a,OAAQ,QAASyS,MAAM,EAAMC,OAAQmI,uBAAuB,CAC9Dne,KAAMA,YCRSuD,KAAKxD,MAAMC,KCA5B,IAAIse,YAAc9G,gBAAgB,eAC9BkF,eAAiB3c,MAAM2T,UAIQ1Q,MAA/B0Z,eAAe4B,cACjBnO,qBAAqBC,EAAEsM,eAAgB4B,YAAa,CAClDtO,cAAc,EACdjP,MAAO8Y,aAAO,QAKlB,qBAAiB,SAAUlV,KACzB+X,eAAe4B,aAAa3Z,MAAO,GChBjC4Z,UAAYjK,cAAuC1U,iBAKrD,CAAE0D,OAAQ,QAASkX,OAAO,GAAQ,CAClC5a,SAAU,SAAkBP,IAC1B,OAAOkf,UAAU3f,KAAMS,GAAIP,UAAUsF,OAAS,EAAItF,UAAU,QAAKkE,MAKrEwb,iBAAiB,YCXjB,IAAIlY,KAAO5E,SAAS4E,iBAEH,SAAUmY,YAAaC,OAAQta,QAC9C,OAAO6G,oBAAK3E,KAAMqI,SAAO8P,aAAa/K,UAAUgL,QAASta,SCH1Cua,YAAY,QAAS,YCEtC,YAAiB5e,MAAMsD,SAAW,SAAiBub,KACjD,MAAuB,SAAhB/L,WAAQ+L,MCCbC,iBAAmB,SAAUvb,OAAQwb,SAAUrL,OAAQsL,UAAWC,MAAOC,MAAOC,OAAQC,SAM1F,IALA,IAGIC,QAHAC,YAAcL,MACdM,YAAc,EACdC,QAAQL,QAASjU,oBAAKiU,OAAQC,QAAS,GAGpCG,YAAcP,WAAW,CAC9B,GAAIO,eAAe7L,OAAQ,CAGzB,GAFA2L,QAAUG,MAAQA,MAAM9L,OAAO6L,aAAcA,YAAaR,UAAYrL,OAAO6L,aAEzEL,MAAQ,GAAK5b,QAAQ+b,SACvBC,YAAcR,iBAAiBvb,OAAQwb,SAAUM,QAASjL,SAASiL,QAAQhb,QAASib,YAAaJ,MAAQ,GAAK,MACzG,CACL,GAAII,aAAe,iBAAkB,MAAM5R,UAAU,sCACrDnK,OAAO+b,aAAeD,QAGxBC,cAEFC,cAEF,OAAOD,gCAGQR,iBC3BbW,UAAUhI,gBAAgB,8BAIb,SAAUiI,cAAerb,QACxC,IAAIgZ,EASF,OARE/Z,QAAQoc,iBAGM,mBAFhBrC,EAAIqC,cAAcpJ,cAEa+G,IAAMrd,QAASsD,QAAQ+Z,EAAE1J,WAC/CjQ,SAAS2Z,IAEN,QADVA,EAAIA,EAAEoC,cACUpC,OAAIpa,GAH+Coa,OAAIpa,GAKlE,SAAWA,IAANoa,EAAkBrd,MAAQqd,GAAc,IAAXhZ,OAAe,EAAIA,iBCR9D,CAAEd,OAAQ,QAASkX,OAAO,GAAQ,CAClCkF,KAAM,WACJ,IAAIC,SAAW7gB,UAAUsF,OAAStF,UAAU,QAAKkE,EAC7CwM,EAAIuB,SAASnS,MACbmgB,UAAY5K,SAAS3E,EAAEpL,QACvBwb,EAAIC,mBAAmBrQ,EAAG,GAE9B,OADAoQ,EAAExb,OAASya,mBAAiBe,EAAGpQ,EAAGA,EAAGuP,UAAW,OAAgB/b,IAAb2c,SAAyB,EAAIxR,UAAUwR,WACnFC,KCZXpB,iBAAiB,QCDAG,YAAY,QAAS,QCEtC,IAAI5Y,KAAO,GAAGA,KAGV2H,eAAe,SAAUiE,MAC3B,IAAImO,OAAiB,GAARnO,KACToO,UAAoB,GAARpO,KACZqO,QAAkB,GAARrO,KACVsO,SAAmB,GAARtO,KACXuO,cAAwB,GAARvO,KAChBwO,cAAwB,GAARxO,KAChByO,SAAmB,GAARzO,MAAauO,cAC5B,OAAO,SAAUtS,MAAOyS,WAAYhE,KAAMiE,gBASxC,IARA,IAOIvf,MAAOyT,OAPPhF,EAAIuB,SAASnD,OACbc,KAAOoE,cAActD,GACrB+Q,cAAgBtV,oBAAKoV,WAAYhE,KAAM,GACvCjY,OAAS+P,SAASzF,KAAKtK,QACvB2P,MAAQ,EACR8F,OAASyG,gBAAkBT,mBAC3Bvc,OAASwc,OAASjG,OAAOjM,MAAOxJ,QAAU2b,WAAaI,cAAgBtG,OAAOjM,MAAO,QAAK5K,EAExFoB,OAAS2P,MAAOA,QAAS,IAAIqM,UAAYrM,SAASrF,QAEtD8F,OAAS+L,cADTxf,MAAQ2N,KAAKqF,OACiBA,MAAOvE,GACjCmC,MACF,GAAImO,OAAQxc,OAAOyQ,OAASS,YACvB,GAAIA,OAAQ,OAAQ7C,MACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAO5Q,MACf,KAAK,EAAG,OAAOgT,MACf,KAAK,EAAGhO,KAAKO,KAAKhD,OAAQvC,YACrB,OAAQ4Q,MACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAG5L,KAAKO,KAAKhD,OAAQvC,OAIhC,OAAOmf,eAAiB,EAAIF,SAAWC,SAAWA,SAAW3c,wBAIhD,CAGf0C,QAAS0H,eAAa,GAGtBhO,IAAKgO,eAAa,GAGlBxN,OAAQwN,eAAa,GAGrB8S,KAAM9S,eAAa,GAGnB+S,MAAO/S,eAAa,GAGpB5N,KAAM4N,eAAa,GAGnBgT,UAAWhT,eAAa,GAGxBiT,UAAWjT,eAAa,ICpEtBkT,MAAQtM,eAAwCxU,KAGhD+gB,KAAO,OACPC,aAAc,EAGdD,OAAQ,IAAI9gB,MAAM,GAAG8gB,OAAM,WAAcC,aAAc,aAIzD,CAAExd,OAAQ,QAASkX,OAAO,EAAMxE,OAAQ8K,aAAe,CACvDhhB,KAAM,SAAcugB,YAClB,OAAOO,MAAMhiB,KAAMyhB,WAAYvhB,UAAUsF,OAAS,EAAItF,UAAU,QAAKkE,MAKzEwb,iBAAiBqC,MCjBAlC,YAAY,QAAS,QCOtC,IAAIoC,QAAU9a,OAAO+a,OAEjBjS,eAAiB9I,OAAO8I,6BAIVgS,SAAWjS,OAAM,WAEjC,GAAII,aAQiB,IARF6R,QAAQ,CAAEzE,EAAG,GAAKyE,QAAQhS,eAAe,GAAI,IAAK,CACnEgB,YAAY,EACZ/D,IAAK,WACH+C,eAAenQ,KAAM,IAAK,CACxBmC,MAAO,EACPgP,YAAY,OAGd,CAAEuM,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAIsD,EAAI,GACJqB,EAAI,GAEJnK,OAASC,SAIb,OAFA6I,EAAE9I,QAAU,EADG,uBAENvW,MAAM,IAAIyF,SAAQ,SAAUkb,KAAOD,EAAEC,KAAOA,OACpB,GAA1BH,QAAQ,GAAInB,GAAG9I,SAHP,wBAGuBmB,WAAW8I,QAAQ,GAAIE,IAAIzc,KAAK,OACnE,SAAgBlB,OAAQmQ,QAM3B,IALA,IAAI0N,EAAIpQ,SAASzN,QACb+Z,gBAAkBve,UAAUsF,OAC5B2P,MAAQ,EACRa,sBAAwBG,4BAA4B3E,EACpDoC,qBAAuBS,2BAA2B7C,EAC/CiN,gBAAkBtJ,OAMvB,IALA,IAIIpP,IAJAqJ,EAAI8E,cAAchU,UAAUiV,UAC5B7N,KAAO0O,sBAAwBqD,WAAWjK,GAAGvB,OAAOmI,sBAAsB5G,IAAMiK,WAAWjK,GAC3F5J,OAAS8B,KAAK9B,OACdgd,EAAI,EAEDhd,OAASgd,GACdzc,IAAMuB,KAAKkb,KACNlS,cAAesD,qBAAqBlM,KAAK0H,EAAGrJ,OAAMwc,EAAExc,KAAOqJ,EAAErJ,MAEpE,OAAOwc,GACPJ,gBC/CF,CAAEzd,OAAQ,SAAUyS,MAAM,EAAMC,OAAQ/P,OAAO+a,SAAWA,cAAU,CACpEA,OAAQA,eCJOzd,KAAK0C,OAAO+a,OCA7B,IAAIxO,qBAAuB8B,2BAAsDlE,EAG7E1C,aAAe,SAAU2T,YAC3B,OAAO,SAAU7T,IAOf,IANA,IAKI7I,IALA6K,EAAIwD,gBAAgBxF,IACpBtH,KAAO+R,WAAWzI,GAClBpL,OAAS8B,KAAK9B,OACdiG,EAAI,EACJmK,OAAS,GAENpQ,OAASiG,GACd1F,IAAMuB,KAAKmE,KACN6E,cAAesD,qBAAqBlM,KAAKkJ,EAAG7K,MAC/C6P,OAAOzO,KAAKsb,WAAa,CAAC1c,IAAK6K,EAAE7K,MAAQ6K,EAAE7K,MAG/C,OAAO6P,uBAIM,CAGftL,QAASwE,cAAa,GAGtBzD,OAAQyD,cAAa,IC7BnB4T,SAAWhN,cAAwCpL,gBAIrD,CAAE5F,OAAQ,SAAUyS,MAAM,GAAQ,CAClC7M,QAAS,SAAiBsG,GACxB,OAAO8R,SAAS9R,MCJHjM,KAAK0C,OAAOiD,QCF7B,IAAIqY,QAAUjN,cAAwCrK,eAIpD,CAAE3G,OAAQ,SAAUyS,MAAM,GAAQ,CAClC9L,OAAQ,SAAgBuF,GACtB,OAAO+R,QAAQ/R,MCJFjM,KAAK0C,OAAOgE,OCI7B,IAAIuX,OAAS,SAAUC,QAASjN,QAC9B5V,KAAK6iB,QAAUA,QACf7iB,KAAK4V,OAASA,gBAGC,SAAU6J,SAAUqD,gBAAiBle,SACpD,IAKI0T,SAAUyK,OAAQ5N,MAAO3P,OAAQoQ,OAAQ0F,KAAMiD,KAL/Cd,KAAO7Y,SAAWA,QAAQ6Y,KAC1BuF,cAAgBpe,UAAWA,QAAQoe,YACnCC,eAAiBre,UAAWA,QAAQqe,aACpCC,eAAiBte,UAAWA,QAAQse,aACpC/W,GAAKE,oBAAKyW,gBAAiBrF,KAAM,EAAIuF,WAAaE,aAGlDC,KAAO,SAAUC,WAEnB,OADI9K,UAAUuF,cAAcvF,UACrB,IAAIsK,QAAO,EAAMQ,YAGtBC,OAAS,SAAUlhB,OACrB,OAAI6gB,YACFjS,SAAS5O,OACF+gB,YAAc/W,GAAGhK,MAAM,GAAIA,MAAM,GAAIghB,MAAQhX,GAAGhK,MAAM,GAAIA,MAAM,KAChE+gB,YAAc/W,GAAGhK,MAAOghB,MAAQhX,GAAGhK,QAG9C,GAAI8gB,YACF3K,SAAWmH,aACN,CAEL,GAAqB,mBADrBsD,OAASlE,kBAAkBY,WACM,MAAM5Q,UAAU,0BAEjD,GAAIiQ,sBAAsBiE,QAAS,CACjC,IAAK5N,MAAQ,EAAG3P,OAAS+P,SAASkK,SAASja,QAASA,OAAS2P,MAAOA,QAElE,IADAS,OAASyN,OAAO5D,SAAStK,UACXS,kBAAkBgN,OAAQ,OAAOhN,OAC/C,OAAO,IAAIgN,QAAO,GAEtBtK,SAAWyK,OAAOrb,KAAK+X,UAIzB,IADAnE,KAAOhD,SAASgD,OACPiD,KAAOjD,KAAK5T,KAAK4Q,WAAWkF,MAAM,CACzC,IACE5H,OAASyN,OAAO9E,KAAKpc,OACrB,MAAO8N,OAEP,MADA4N,cAAcvF,UACRrI,MAER,GAAqB,iBAAV2F,QAAsBA,QAAUA,kBAAkBgN,OAAQ,OAAOhN,OAC5E,OAAO,IAAIgN,QAAO,IC/ClBU,gBAAkB,SAAwBC,OAAQC,SACpD,IAAI/F,KAAOzd,KACX,KAAMyd,gBAAgB6F,iBAAkB,OAAO,IAAIA,gBAAgBC,OAAQC,SACvE/H,uBAEFgC,KAAOhC,qBAAe,IAAIgI,WAAMrf,GAAYsT,qBAAe+F,aAE7CrZ,IAAZof,SAAuB9R,4BAA4B+L,KAAM,UAAWzY,OAAOwe,UAC/E,IAAIE,YAAc,GAGlB,OAFAC,QAAQJ,OAAQG,YAAYvc,KAAM,CAAEsW,KAAMiG,cAC1ChS,4BAA4B+L,KAAM,SAAUiG,aACrCjG,MAGT6F,gBAAgBxO,UAAYmG,aAAOwI,MAAM3O,UAAW,CAClD2C,YAAahG,yBAAyB,EAAG6R,iBACzCE,QAAS/R,yBAAyB,EAAG,IACrClQ,KAAMkQ,yBAAyB,EAAG,4BAKlC,CAAE1B,QAAQ,GAAQ,CAClB6T,eAAgBN,kBC1BlB,mBAAiBnF,mBAAwB,GAAG7X,SAAW,WACrD,MAAO,WAAa2N,QAAQjU,MAAQ,KCDjCme,oBACH5G,SAASlQ,OAAOyN,UAAW,WAAYxO,eAAU,CAAEoO,QAAQ,ICL7D,6BAAiB3E,SAAO8T,oBCAP,SAAUnf,OAAQiW,IAAK/V,SACtC,IAAK,IAAImB,OAAO4U,IAAKpD,SAAS7S,OAAQqB,IAAK4U,IAAI5U,KAAMnB,SACrD,OAAOF,QCELkc,UAAUhI,gBAAgB,sBAEb,SAAUkL,kBACzB,IAAIC,YAAc9N,WAAW6N,kBACzB3T,eAAiBoB,qBAAqBC,EAEtClB,aAAeyT,cAAgBA,YAAYnD,YAC7CzQ,eAAe4T,YAAanD,UAAS,CACnCxP,cAAc,EACdhE,IAAK,WAAc,OAAOpN,oBCff,SAAU4O,GAAImV,YAAaxiB,MAC1C,KAAMqN,cAAcmV,aAClB,MAAMlV,UAAU,cAAgBtN,KAAOA,KAAO,IAAM,IAAM,cAC1D,OAAOqN,ICCPgS,UAAUhI,gBAAgB,8BAIb,SAAUhI,EAAGoT,oBAC5B,IACI5U,EADAoP,EAAIzN,SAASH,GAAG6G,YAEpB,YAAarT,IAANoa,GAAiDpa,OAA7BgL,EAAI2B,SAASyN,GAAGoC,YAAyBoD,mBAAqBjP,UAAU3F,gBCTpF,qCAAqC4C,KAAKiG,8BCCf,WAA3BhE,WAAQlE,SAAO+H,SCK5BmM,SAAWlU,SAAOkU,SAClBrR,IAAM7C,SAAOmU,aACbC,MAAQpU,SAAOqU,eACftM,UAAU/H,SAAO+H,QACjBuM,eAAiBtU,SAAOsU,eACxBC,SAAWvU,SAAOuU,SAClBC,QAAU,EACVC,MAAQ,GACRC,mBAAqB,qBACrBC,MAAOC,QAASC,KAEhBC,IAAM,SAAUhe,IAElB,GAAI2d,MAAMvS,eAAepL,IAAK,CAC5B,IAAIsF,GAAKqY,MAAM3d,WACR2d,MAAM3d,IACbsF,OAIA2Y,OAAS,SAAUje,IACrB,OAAO,WACLge,IAAIhe,MAIJke,SAAW,SAAUvhB,OACvBqhB,IAAIrhB,MAAM+J,OAGRyX,KAAO,SAAUne,IAEnBkJ,SAAOkV,YAAYpe,GAAK,GAAIod,SAASiB,SAAW,KAAOjB,SAASkB,OAI7DvS,KAAQuR,QACXvR,IAAM,SAAsBzG,IAG1B,IAFA,IAAIlM,KAAO,GACPwL,EAAI,EACDvL,UAAUsF,OAASiG,GAAGxL,KAAKkH,KAAKjH,UAAUuL,MAMjD,OALA+Y,QAAQD,SAAW,YAEH,mBAANpY,GAAmBA,GAAKrJ,SAASqJ,KAAK/L,WAAMgE,EAAWnE,OAEjEykB,MAAMH,SACCA,SAETJ,MAAQ,SAAwBtd,WACvB2d,MAAM3d,KAGXue,aACFV,MAAQ,SAAU7d,IAChBiR,UAAQuN,SAASP,OAAOje,MAGjByd,UAAYA,SAASgB,IAC9BZ,MAAQ,SAAU7d,IAChByd,SAASgB,IAAIR,OAAOje,MAIbwd,iBAAmBkB,aAC5BZ,QAAU,IAAIN,eACdO,KAAOD,QAAQa,MACfb,QAAQc,MAAMC,UAAYX,SAC1BL,MAAQrY,oBAAKuY,KAAKK,YAAaL,KAAM,IAIrC7U,SAAO4V,kBACe,mBAAfV,cACNlV,SAAO6V,eACR3B,UAAkC,UAAtBA,SAASiB,WACpBhV,MAAM8U,OAEPN,MAAQM,KACRjV,SAAO4V,iBAAiB,UAAWZ,UAAU,IAG7CL,MADSD,sBAAsBpU,sBAAc,UACrC,SAAUxJ,IAChB4T,KAAKC,YAAYrK,sBAAc,WAAWoU,oBAAsB,WAC9DhK,KAAKoL,YAAY7lB,MACjB6kB,IAAIhe,MAKA,SAAUA,IAChBtG,WAAWukB,OAAOje,IAAK,KAK7B,WAAiB,CACf+L,IAAKA,IACLuR,MAAOA,2BCvGQ,qBAAqBnS,KAAKiG,iBCDvCpE,2BAA2B6B,+BAA2DlE,EACtFsU,UAAYC,OAA6BnT,IAKzCoT,iBAAmBjW,SAAOiW,kBAAoBjW,SAAOkW,uBACrDxiB,WAAWsM,SAAOtM,SAClBqU,UAAU/H,SAAO+H,QACjB+L,UAAU9T,SAAO8T,QAEjBqC,yBAA2BrS,2BAAyB9D,SAAQ,kBAC5DoW,eAAiBD,0BAA4BA,yBAAyB/jB,MAEtEikB,MAAOriB,KAAMsiB,KAAMC,SAAQC,OAAQpjB,KAAMqjB,QAASC,KAGjDN,iBACHC,MAAQ,WACN,IAAI1c,OAAQyC,GAEZ,IADIiZ,eAAY1b,OAASoO,UAAQiD,SAASrR,OAAOgd,OAC1C3iB,MAAM,CACXoI,GAAKpI,KAAKoI,GACVpI,KAAOA,KAAKuX,KACZ,IACEnP,KACA,MAAO8D,OAGP,MAFIlM,KAAMuiB,WACLD,UAAOjiB,EACN6L,OAERoW,UAAOjiB,EACLsF,QAAQA,OAAOid,SAKhBpB,aAAWH,cAAYwB,sBAAmBZ,mBAAoBviB,WAQxDogB,WAAWA,UAAQgD,SAE5BL,QAAU3C,UAAQgD,aAAQziB,GAE1BoiB,QAAQ/O,YAAcoM,UACtB4C,KAAOD,QAAQC,KACfH,SAAS,WACPG,KAAK/e,KAAK8e,QAASJ,SAIrBE,SADSlB,aACA,WACPtN,UAAQuN,SAASe,QASV,WAEPN,UAAUpe,KAAKqI,SAAQqW,SA9BzBG,QAAS,EACTpjB,KAAOM,WAASqjB,eAAe,IAC/B,IAAId,iBAAiBI,OAAOW,QAAQ5jB,KAAM,CAAE6jB,eAAe,IAC3DV,SAAS,WACPnjB,KAAKoK,KAAOgZ,QAAUA,UA+B5B,cAAiBJ,gBAAkB,SAAUha,IAC3C,IAAI8a,KAAO,CAAE9a,GAAIA,GAAImP,UAAMlX,GACvBiiB,OAAMA,KAAK/K,KAAO2L,MACjBljB,OACHA,KAAOkjB,KACPX,YACAD,KAAOY,MC7EPC,kBAAoB,SAAU1I,GAChC,IAAIqI,QAASM,OACbnnB,KAAKwmB,QAAU,IAAIhI,GAAE,SAAU4I,UAAWC,UACxC,QAAgBjjB,IAAZyiB,cAAoCziB,IAAX+iB,OAAsB,MAAMtY,UAAU,2BACnEgY,QAAUO,UACVD,OAASE,YAEXrnB,KAAK6mB,QAAU9R,UAAU8R,SACzB7mB,KAAKmnB,OAASpS,UAAUoS,WAKP,SAAU3I,GAC3B,OAAO,IAAI0I,kBAAkB1I,gDCbd,SAAUA,EAAG8I,GAE5B,GADAvW,SAASyN,GACL3Z,SAASyiB,IAAMA,EAAE7P,cAAgB+G,EAAG,OAAO8I,EAC/C,IAAIC,kBAAoBC,uBAAqBhW,EAAEgN,GAG/C,OADAqI,EADcU,kBAAkBV,SACxBS,GACDC,kBAAkBf,0BCRV,SAAUjW,EAAGmN,GAC5B,IAAI+J,QAAU1X,SAAO0X,QACjBA,SAAWA,QAAQxX,QACA,IAArB/P,UAAUsF,OAAeiiB,QAAQxX,MAAMM,GAAKkX,QAAQxX,MAAMM,EAAGmN,aCLhD,SAAU1N,MACzB,IACE,MAAO,CAAEC,OAAO,EAAO9N,MAAO6N,QAC9B,MAAOC,OACP,MAAO,CAAEA,OAAO,EAAM9N,MAAO8N,yBCJC,iBAAV/L,OCkBpB+iB,KAAOvR,OAA6B9C,IAapCgO,QAAUhI,gBAAgB,WAC1B8O,QAAU,UACVpT,mBAAmBC,cAAoBnH,IACvCgQ,mBAAmB7I,cAAoB3B,IACvC+U,wBAA0BpT,cAAoBzB,UAAU4U,SACxDE,uBAAyBC,0BAAiBA,yBAAc/S,UACxDgT,mBAAqBD,yBACrBE,4BAA8BH,uBAC9B/Y,YAAYkB,SAAOlB,UACnBpL,WAAWsM,SAAOtM,SAClBqU,QAAU/H,SAAO+H,QACjB0P,qBAAuBQ,uBAA2BxW,EAClDyW,4BAA8BT,qBAC9BU,kBAAoBzkB,YAAYA,WAASC,aAAeqM,SAAOnM,eAC/DukB,uBAAyD,mBAAzBC,sBAChCC,oBAAsB,qBACtBC,kBAAoB,mBACpBC,QAAU,EACVC,UAAY,EACZC,SAAW,EACXC,QAAU,EACVC,UAAY,EACZC,aAAc,EACdC,SAAUC,qBAAsBC,eAAgBC,WAEhD1M,OAAS/F,WAASmR,SAAS,WAC7B,IAAIuB,2BAA6BnX,cAAcgW,oBAC3CoB,uBAAyBD,6BAA+BjkB,OAAO8iB,oBAInE,IAAKoB,wBAAyC,KAAf9Q,gBAAmB,OAAO,EAMzD,GAAIA,iBAAc,IAAM,cAAcpG,KAAKiX,4BAA6B,OAAO,EAE/E,IAAIzC,QAAU,IAAIsB,oBAAmB,SAAUjB,SAAWA,QAAQ,MAC9DsC,YAAc,SAAUnZ,MAC1BA,MAAK,eAA6B,gBAKpC,OAHkBwW,QAAQ/O,YAAc,IAC5BmJ,SAAWuI,cACvBP,YAAcpC,QAAQC,MAAK,yBAAwC0C,eAG3DD,wBAA0BE,kBAAejB,0BAG/C5I,oBAAsBjD,SAAWkD,6BAA4B,SAAUC,UACzEqI,mBAAmBuB,IAAI5J,UAAiB,OAAE,kBAIxC6J,WAAa,SAAU1a,IACzB,IAAI6X,KACJ,SAAO5hB,SAAS+J,KAAkC,mBAAnB6X,KAAO7X,GAAG6X,QAAsBA,MAG7DH,OAAS,SAAUtT,MAAOuW,UAC5B,IAAIvW,MAAMwW,SAAV,CACAxW,MAAMwW,UAAW,EACjB,IAAIC,MAAQzW,MAAM0W,UAClBC,WAAU,WAKR,IAJA,IAAIxnB,MAAQ6Q,MAAM7Q,MACdynB,GAAK5W,MAAMA,OAASwV,UACpBrT,MAAQ,EAELsU,MAAMjkB,OAAS2P,OAAO,CAC3B,IAKIS,OAAQ6Q,KAAMoD,OALdC,SAAWL,MAAMtU,SACjB4U,QAAUH,GAAKE,SAASF,GAAKE,SAASE,KACtCnD,QAAUiD,SAASjD,QACnBM,OAAS2C,SAAS3C,OAClBpM,OAAS+O,SAAS/O,OAEtB,IACMgP,SACGH,KACC5W,MAAMiX,YAActB,WAAWuB,kBAAkBlX,OACrDA,MAAMiX,UAAYvB,UAEJ,IAAZqB,QAAkBnU,OAASzT,OAEzB4Y,QAAQA,OAAO4L,QACnB/Q,OAASmU,QAAQ5nB,OACb4Y,SACFA,OAAO2L,OACPmD,QAAS,IAGTjU,SAAWkU,SAAStD,QACtBW,OAAOtY,YAAU,yBACR4X,KAAO6C,WAAW1T,SAC3B6Q,KAAK/e,KAAKkO,OAAQiR,QAASM,QACtBN,QAAQjR,SACVuR,OAAOhlB,OACd,MAAO8N,OACH8K,SAAW8O,QAAQ9O,OAAO2L,OAC9BS,OAAOlX,QAGX+C,MAAM0W,UAAY,GAClB1W,MAAMwW,UAAW,EACbD,WAAavW,MAAMiX,WAAWE,YAAYnX,YAI9CpP,cAAgB,SAAUrC,KAAMilB,QAAS4D,QAC3C,IAAI5mB,MAAOumB,QACP7B,iBACF1kB,MAAQC,WAASC,YAAY,UACvB8iB,QAAUA,QAChBhjB,MAAM4mB,OAASA,OACf5mB,MAAMG,UAAUpC,MAAM,GAAO,GAC7BwO,SAAOnM,cAAcJ,QAChBA,MAAQ,CAAEgjB,QAASA,QAAS4D,OAAQA,SACtCjC,yBAA2B4B,QAAUha,SAAO,KAAOxO,OAAQwoB,QAAQvmB,OAC/DjC,OAAS8mB,qBAAqBgC,iBAAiB,8BAA+BD,SAGrFD,YAAc,SAAUnX,OAC1BiU,KAAKvf,KAAKqI,UAAQ,WAChB,IAGI6F,OAHA4Q,QAAUxT,MAAMM,OAChBnR,MAAQ6Q,MAAM7Q,MAGlB,GAFmBmoB,YAAYtX,SAG7B4C,OAAS2U,SAAQ,WACXnF,aACFtN,QAAQ/O,KAAK,qBAAsB5G,MAAOqkB,SACrC5iB,cAAcykB,oBAAqB7B,QAASrkB,UAGrD6Q,MAAMiX,UAAY7E,cAAWkF,YAAYtX,OAAS2V,UAAYD,QAC1D9S,OAAO3F,OAAO,MAAM2F,OAAOzT,UAKjCmoB,YAAc,SAAUtX,OAC1B,OAAOA,MAAMiX,YAAcvB,UAAY1V,MAAMtJ,QAG3CwgB,kBAAoB,SAAUlX,OAChCiU,KAAKvf,KAAKqI,UAAQ,WAChB,IAAIyW,QAAUxT,MAAMM,OAChB8R,aACFtN,QAAQ/O,KAAK,mBAAoByd,SAC5B5iB,cAAc0kB,kBAAmB9B,QAASxT,MAAM7Q,WAIvDkK,KAAO,SAAUF,GAAI6G,MAAOwX,QAC9B,OAAO,SAAUroB,OACfgK,GAAG6G,MAAO7Q,MAAOqoB,UAIjBC,eAAiB,SAAUzX,MAAO7Q,MAAOqoB,QACvCxX,MAAMwK,OACVxK,MAAMwK,MAAO,EACTgN,SAAQxX,MAAQwX,QACpBxX,MAAM7Q,MAAQA,MACd6Q,MAAMA,MAAQyV,SACdnC,OAAOtT,OAAO,KAGZ0X,gBAAkB,SAAU1X,MAAO7Q,MAAOqoB,QAC5C,IAAIxX,MAAMwK,KAAV,CACAxK,MAAMwK,MAAO,EACTgN,SAAQxX,MAAQwX,QACpB,IACE,GAAIxX,MAAMM,SAAWnR,MAAO,MAAM0M,YAAU,oCAC5C,IAAI4X,KAAO6C,WAAWnnB,OAClBskB,KACFkD,WAAU,WACR,IAAIgB,QAAU,CAAEnN,MAAM,GACtB,IACEiJ,KAAK/e,KAAKvF,MACRkK,KAAKqe,gBAAiBC,QAAS3X,OAC/B3G,KAAKoe,eAAgBE,QAAS3X,QAEhC,MAAO/C,OACPwa,eAAeE,QAAS1a,MAAO+C,YAInCA,MAAM7Q,MAAQA,MACd6Q,MAAMA,MAAQwV,UACdlC,OAAOtT,OAAO,IAEhB,MAAO/C,OACPwa,eAAe,CAAEjN,MAAM,GAASvN,MAAO+C,UAK3C,GAAIsJ,SAEFwL,mBAAqB,SAAiB8C,UACpCC,WAAW7qB,KAAM8nB,mBAAoBJ,SACrC3S,UAAU6V,UACV/B,SAASnhB,KAAK1H,MACd,IAAIgT,MAAQsB,mBAAiBtU,MAC7B,IACE4qB,SAASve,KAAKqe,gBAAiB1X,OAAQ3G,KAAKoe,eAAgBzX,QAC5D,MAAO/C,OACPwa,eAAezX,MAAO/C,SAG1B8X,4BAA8BD,mBAAmBhT,UAEjD+T,SAAW,SAAiB+B,UAC1BxN,mBAAiBpd,KAAM,CACrBa,KAAM6mB,QACNlK,MAAM,EACNgM,UAAU,EACV9f,QAAQ,EACRggB,UAAW,GACXO,WAAW,EACXjX,MAAOuV,QACPpmB,WAAOiC,KAGXykB,SAAS/T,UAAYgW,YAAY/C,4BAA6B,CAG5DtB,KAAM,SAAcsE,YAAaC,YAC/B,IAAIhY,MAAQ2U,wBAAwB3nB,MAChC8pB,SAAWtC,qBAAqByD,mBAAmBjrB,KAAM8nB,qBAO7D,OANAgC,SAASF,GAA2B,mBAAfmB,aAA4BA,YACjDjB,SAASE,KAA4B,mBAAdgB,YAA4BA,WACnDlB,SAAS/O,OAASqK,aAAUtN,QAAQiD,YAAS3W,EAC7C4O,MAAMtJ,QAAS,EACfsJ,MAAM0W,UAAUviB,KAAK2iB,UACjB9W,MAAMA,OAASuV,SAASjC,OAAOtT,OAAO,GACnC8W,SAAStD,SAIlB0E,MAAS,SAAUF,YACjB,OAAOhrB,KAAKymB,UAAKriB,EAAW4mB,eAGhClC,qBAAuB,WACrB,IAAItC,QAAU,IAAIqC,SACd7V,MAAQsB,mBAAiBkS,SAC7BxmB,KAAKwmB,QAAUA,QACfxmB,KAAK6mB,QAAUxa,KAAKqe,gBAAiB1X,OACrChT,KAAKmnB,OAAS9a,KAAKoe,eAAgBzX,QAErCgV,uBAA2BxW,EAAIgW,qBAAuB,SAAUhJ,GAC9D,OAAOA,IAAMsJ,oBAAsBtJ,IAAMuK,eACrC,IAAID,qBAAqBtK,GACzByJ,4BAA4BzJ,IAGM,mBAAjBqJ,0BAA+BD,yBAA2BvgB,OAAOyN,WAAW,CACjGkU,WAAapB,uBAAuBnB,KAE/BmC,cAEHrR,SAASqQ,uBAAwB,QAAQ,SAAcmD,YAAaC,YAClE,IAAIvN,KAAOzd,KACX,OAAO,IAAI8nB,oBAAmB,SAAUjB,QAASM,QAC/C6B,WAAWthB,KAAK+V,KAAMoJ,QAASM,WAC9BV,KAAKsE,YAAaC,cAEpB,CAAEtW,QAAQ,IAGb6C,SAASqQ,uBAAwB,QAASG,4BAAmC,MAAG,CAAErT,QAAQ,KAI5F,WACSkT,uBAAuBnQ,YAC9B,MAAOxH,QAGLwL,sBACFA,qBAAemM,uBAAwBG,qCAK3C,CAAEhY,QAAQ,EAAMob,MAAM,EAAM/T,OAAQkF,QAAU,CAC9CuH,QAASiE,qBAGXvM,eAAeuM,mBAAoBJ,SAAS,GAC5C0D,WAAW1D,SAEXqB,eAAiB9S,WAAWyR,iBAG1B,CAAEhjB,OAAQgjB,QAASvQ,MAAM,EAAMC,OAAQkF,QAAU,CAGjD6K,OAAQ,SAAgBkE,GACtB,IAAIC,WAAa9D,qBAAqBxnB,MAEtC,OADAsrB,WAAWnE,OAAOzf,UAAKtD,EAAWinB,GAC3BC,WAAW9E,mBAIpB,CAAE9hB,OAAQgjB,QAASvQ,MAAM,EAAMC,OAAmBkF,QAAU,CAG5DuK,QAAS,SAAiBS,GACxB,OAAOiE,eAAyEvrB,KAAMsnB,cAIxF,CAAE5iB,OAAQgjB,QAASvQ,MAAM,EAAMC,OAAQmI,qBAAuB,CAG9D8J,IAAK,SAAa5J,UAChB,IAAIjB,EAAIxe,KACJsrB,WAAa9D,qBAAqBhJ,GAClCqI,QAAUyE,WAAWzE,QACrBM,OAASmE,WAAWnE,OACpBvR,OAAS2U,SAAQ,WACnB,IAAIiB,gBAAkBzW,UAAUyJ,EAAEqI,SAC9Bxb,OAAS,GACTkZ,QAAU,EACVkH,UAAY,EAChB9H,QAAQlE,UAAU,SAAU+G,SAC1B,IAAIrR,MAAQoP,UACRmH,eAAgB,EACpBrgB,OAAOlE,UAAK/C,GACZqnB,YACAD,gBAAgB9jB,KAAK8W,EAAGgI,SAASC,MAAK,SAAUtkB,OAC1CupB,gBACJA,eAAgB,EAChBrgB,OAAO8J,OAAShT,QACdspB,WAAa5E,QAAQxb,WACtB8b,aAEHsE,WAAa5E,QAAQxb,WAGzB,OADIuK,OAAO3F,OAAOkX,OAAOvR,OAAOzT,OACzBmpB,WAAW9E,SAIpBmF,KAAM,SAAclM,UAClB,IAAIjB,EAAIxe,KACJsrB,WAAa9D,qBAAqBhJ,GAClC2I,OAASmE,WAAWnE,OACpBvR,OAAS2U,SAAQ,WACnB,IAAIiB,gBAAkBzW,UAAUyJ,EAAEqI,SAClClD,QAAQlE,UAAU,SAAU+G,SAC1BgF,gBAAgB9jB,KAAK8W,EAAGgI,SAASC,KAAK6E,WAAWzE,QAASM,cAI9D,OADIvR,OAAO3F,OAAOkX,OAAOvR,OAAOzT,OACzBmpB,WAAW9E,mBC7XpB,CAAE9hB,OAAQ,UAAWyS,MAAM,GAAQ,CACnCyU,WAAY,SAAoBnM,UAC9B,IAAIjB,EAAIxe,KACJsrB,WAAatD,uBAA2BxW,EAAEgN,GAC1CqI,QAAUyE,WAAWzE,QACrBM,OAASmE,WAAWnE,OACpBvR,OAAS2U,SAAQ,WACnB,IAAIgB,eAAiBxW,UAAUyJ,EAAEqI,SAC7Bxb,OAAS,GACTkZ,QAAU,EACVkH,UAAY,EAChB9H,QAAQlE,UAAU,SAAU+G,SAC1B,IAAIrR,MAAQoP,UACRmH,eAAgB,EACpBrgB,OAAOlE,UAAK/C,GACZqnB,YACAF,eAAe7jB,KAAK8W,EAAGgI,SAASC,MAAK,SAAUtkB,OACzCupB,gBACJA,eAAgB,EAChBrgB,OAAO8J,OAAS,CAAE0W,OAAQ,YAAa1pB,MAAOA,SAC5CspB,WAAa5E,QAAQxb,YACtB,SAAU4E,OACPyb,gBACJA,eAAgB,EAChBrgB,OAAO8J,OAAS,CAAE0W,OAAQ,WAAYzB,OAAQna,SAC5Cwb,WAAa5E,QAAQxb,iBAGzBogB,WAAa5E,QAAQxb,WAGzB,OADIuK,OAAO3F,OAAOkX,OAAOvR,OAAOzT,OACzBmpB,WAAW9E,WChCtB,IAAIsF,kBAAoB,kCAItB,CAAEpnB,OAAQ,UAAWyS,MAAM,GAAQ,CACnC4U,IAAK,SAAatM,UAChB,IAAIjB,EAAIxe,KACJsrB,WAAatD,uBAA2BxW,EAAEgN,GAC1CqI,QAAUyE,WAAWzE,QACrBM,OAASmE,WAAWnE,OACpBvR,OAAS2U,SAAQ,WACnB,IAAIgB,eAAiBxW,UAAUyJ,EAAEqI,SAC7BtD,OAAS,GACTgB,QAAU,EACVkH,UAAY,EACZO,iBAAkB,EACtBrI,QAAQlE,UAAU,SAAU+G,SAC1B,IAAIrR,MAAQoP,UACR0H,iBAAkB,EACtB1I,OAAOpc,UAAK/C,GACZqnB,YACAF,eAAe7jB,KAAK8W,EAAGgI,SAASC,MAAK,SAAUtkB,OACzC8pB,iBAAmBD,kBACvBA,iBAAkB,EAClBnF,QAAQ1kB,WACP,SAAU8N,OACPgc,iBAAmBD,kBACvBC,iBAAkB,EAClB1I,OAAOpO,OAASlF,QACdwb,WAAatE,OAAO,IAAKlR,WAAW,kBAAhB,CAAmCsN,OAAQuI,6BAGnEL,WAAatE,OAAO,IAAKlR,WAAW,kBAAhB,CAAmCsN,OAAQuI,uBAGnE,OADIlW,OAAO3F,OAAOkX,OAAOvR,OAAOzT,OACzBmpB,WAAW9E,WChCtB,IAAI0F,cAAgBrE,0BAAiB3X,OAAM,WACzC2X,yBAAc/S,UAAmB,QAAEpN,KAAK,CAAE+e,KAAM,eAA+B,kBAqBjF,WAhBE,CAAE/hB,OAAQ,UAAWkX,OAAO,EAAMuQ,MAAM,EAAM/U,OAAQ8U,aAAe,CACrEE,QAAW,SAAUC,WACnB,IAAI7N,EAAIyM,mBAAmBjrB,KAAMiW,WAAW,YACxCqW,WAAiC,mBAAbD,UACxB,OAAOrsB,KAAKymB,KACV6F,WAAa,SAAUhF,GACrB,OAAOiE,eAAe/M,EAAG6N,aAAa5F,MAAK,WAAc,OAAOa,MAC9D+E,UACJC,WAAa,SAAUC,GACrB,OAAOhB,eAAe/M,EAAG6N,aAAa5F,MAAK,WAAc,MAAM8F,MAC7DF,cAM8B,mBAAjBxE,yBAA6B,CAClD,IAAIzlB,OAAS6T,WAAW,WAAWnB,UAAmB,QAClD+S,yBAAc/S,UAAmB,UAAM1S,QACzCmV,SAASsQ,yBAAc/S,UAAW,UAAW1S,OAAQ,CAAEsS,QAAQ,IClCnE,iBAAiB,CACf8X,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,GC1BTC,eAAiB,iBACjBnR,iBAAmB7I,cAAoB3B,IACvC0B,iBAAmBC,cAAoBzB,UAAUyb,kCAYpClR,eAAelc,MAAO,SAAS,SAAUmc,SAAUkR,MAClEpR,iBAAiBpd,KAAM,CACrBa,KAAM0tB,eACN7pB,OAAQ0P,gBAAgBkJ,UACxBnI,MAAO,EACPqZ,KAAMA,UAIP,WACD,IAAIxb,MAAQsB,iBAAiBtU,MACzB0E,OAASsO,MAAMtO,OACf8pB,KAAOxb,MAAMwb,KACbrZ,MAAQnC,MAAMmC,QAClB,OAAKzQ,QAAUyQ,OAASzQ,OAAOc,QAC7BwN,MAAMtO,YAASN,EACR,CAAEjC,WAAOiC,EAAWoZ,MAAM,IAEvB,QAARgR,KAAuB,CAAErsB,MAAOgT,MAAOqI,MAAM,GACrC,UAARgR,KAAyB,CAAErsB,MAAOuC,OAAOyQ,OAAQqI,MAAM,GACpD,CAAErb,MAAO,CAACgT,MAAOzQ,OAAOyQ,QAASqI,MAAM,KAC7C,oBAKOiR,UAAYjT,UAAUra,MAGhCye,iBAAiB,QACjBA,iBAAiB,UACjBA,iBAAiB,WC9CjB,IAAIjH,SAAWC,gBAAgB,YAC3BsC,cAAgBtC,gBAAgB,eAChC8V,YAAcC,kBAAqBtjB,OAEvC,IAAK,IAAIujB,mBAAmBC,aAAc,CACxC,IAAIC,WAAa/e,SAAO6e,iBACpBG,oBAAsBD,YAAcA,WAAWha,UACnD,GAAIia,oBAAqB,CAEvB,GAAIA,oBAAoBpW,YAAc+V,YAAa,IACjDhd,4BAA4Bqd,oBAAqBpW,SAAU+V,aAC3D,MAAOze,OACP8e,oBAAoBpW,UAAY+V,YAKlC,GAHKK,oBAAoB7T,gBACvBxJ,4BAA4Bqd,oBAAqB7T,cAAe0T,iBAE9DC,aAAaD,iBAAkB,IAAK,IAAII,eAAeL,kBAEzD,GAAII,oBAAoBC,eAAiBL,kBAAqBK,aAAc,IAC1Etd,4BAA4Bqd,oBAAqBC,YAAaL,kBAAqBK,cACnF,MAAO/e,OACP8e,oBAAoBC,aAAeL,kBAAqBK,eClB/CrqB,KAAKkf,gBCHpB,CAAEnf,OAAQ,UAAWyS,MAAM,GAAQ,CACnC8X,IAAO,SAAUxN,YACf,IAAI8F,kBAAoBS,uBAA2BxW,EAAExR,MACjD4V,OAAS2U,QAAQ9I,YAErB,OADC7L,OAAO3F,MAAQsX,kBAAkBJ,OAASI,kBAAkBV,SAASjR,OAAOzT,OACtEolB,kBAAkBf,WCR7B,IAAI0I,QAAQtW,gBAAgB,kBAIX,SAAUhK,IACzB,IAAIugB,SACJ,OAAOtqB,SAAS+J,WAAmCxK,KAA1B+qB,SAAWvgB,GAAGsgB,YAA0BC,SAA0B,UAAflb,WAAQrF,iBCRrE,SAAUA,IACzB,GAAIugB,SAASvgB,IACX,MAAMC,UAAU,iDAChB,OAAOD,ICHPsgB,MAAQtW,gBAAgB,8BAEX,SAAUoW,aACzB,IAAII,OAAS,IACb,IACE,MAAMJ,aAAaI,QACnB,MAAOC,QACP,IAEE,OADAD,OAAOF,QAAS,EACT,MAAMF,aAAaI,QAC1B,MAAOE,UACT,OAAO,GCXPzb,yBAA2B6B,+BAA2DlE,EAQtF+d,YAAc,GAAGC,WACjBpkB,IAAMhF,KAAKgF,IAEXqkB,wBAA0BC,qBAAqB,cAE/CC,mBAAgCF,0BAC9Bzb,WAAaH,yBAAyB7O,OAAO8P,UAAW,eACrDd,YAAeA,WAAW3C,WAD7B2C,mBAMJ,CAAEtP,OAAQ,SAAUkX,OAAO,EAAMxE,QAASuY,mBAAqBF,yBAA2B,CAC1FD,WAAY,SAAoBI,cAC9B,IAAInS,KAAOzY,OAAOqK,uBAAuBrP,OACzC6vB,WAAWD,cACX,IAAIza,MAAQI,SAASnK,IAAIlL,UAAUsF,OAAS,EAAItF,UAAU,QAAKkE,EAAWqZ,KAAKjY,SAC3EsqB,OAAS9qB,OAAO4qB,cACpB,OAAOL,YACHA,YAAY7nB,KAAK+V,KAAMqS,OAAQ3a,OAC/BsI,KAAK9X,MAAMwP,MAAOA,MAAQ2a,OAAOtqB,UAAYsqB,UC3BpC/P,YAAY,SAAU,cCHvC,IAAIhQ,SACqB,oBAAfF,YAA8BA,YACrB,oBAATC,MAAwBA,WACb,IAAXC,UAA0BA,SAEhCggB,QAAU,CACZC,aAAc,oBAAqBjgB,SACnC0P,SAAU,WAAY1P,UAAU,aAAcoI,OAC9C8X,KACE,eAAgBlgB,UAChB,SAAUA,UACV,WACE,IAEE,OADA,IAAImgB,MACG,EACP,MAAO3D,GACP,OAAO,GALX,GAQF4D,SAAU,aAAcpgB,SACxBqgB,YAAa,gBAAiBrgB,UAGhC,SAASsgB,WAAWC,KAClB,OAAOA,KAAOC,SAASzb,UAAU0b,cAAcF,KAGjD,GAAIP,QAAQK,YACV,IAAIK,YAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,kBACFC,YAAYC,QACZ,SAASN,KACP,OAAOA,KAAOG,YAAYhb,QAAQpO,OAAOyN,UAAUxO,SAASoB,KAAK4oB,OAAS,GAIhF,SAASO,cAActvB,MAIrB,GAHoB,iBAATA,OACTA,KAAOyD,OAAOzD,OAEZ,6BAA6ByQ,KAAKzQ,OAAkB,KAATA,KAC7C,MAAM,IAAIsN,UAAU,4CAA8CtN,KAAO,KAE3E,OAAOA,KAAKgD,cAGd,SAASusB,eAAe3uB,OAItB,MAHqB,iBAAVA,QACTA,MAAQ6C,OAAO7C,QAEVA,MAIT,SAAS4uB,YAAYC,OACnB,IAAI1Y,SAAW,CACbgD,KAAM,WACJ,IAAInZ,MAAQ6uB,MAAMC,QAClB,MAAO,CAACzT,UAAgBpZ,IAAVjC,MAAqBA,MAAOA,SAU9C,OANI4tB,QAAQtQ,WACVnH,SAASH,OAAOG,UAAY,WAC1B,OAAOA,WAIJA,SAGF,SAAS4Y,QAAQC,SACtBnxB,KAAKc,IAAM,GAEPqwB,mBAAmBD,QACrBC,QAAQ/pB,SAAQ,SAASjF,MAAOZ,MAC9BvB,KAAKoxB,OAAO7vB,KAAMY,SACjBnC,MACMmB,MAAMsD,QAAQ0sB,SACvBA,QAAQ/pB,SAAQ,SAASiqB,QACvBrxB,KAAKoxB,OAAOC,OAAO,GAAIA,OAAO,MAC7BrxB,MACMmxB,SACT9pB,OAAOyO,oBAAoBqb,SAAS/pB,SAAQ,SAAS7F,MACnDvB,KAAKoxB,OAAO7vB,KAAM4vB,QAAQ5vB,SACzBvB,MAgEP,SAASsxB,SAASC,MAChB,GAAIA,KAAKC,SACP,OAAO3N,QAAQsD,OAAO,IAAItY,UAAU,iBAEtC0iB,KAAKC,UAAW,EAGlB,SAASC,gBAAgBC,QACvB,OAAO,IAAI7N,SAAQ,SAASgD,QAASM,QACnCuK,OAAOC,OAAS,WACd9K,QAAQ6K,OAAO9b,SAEjB8b,OAAOE,QAAU,WACfzK,OAAOuK,OAAOzhB,WAKpB,SAAS4hB,sBAAsB5B,MAC7B,IAAIyB,OAAS,IAAII,WACbtL,QAAUiL,gBAAgBC,QAE9B,OADAA,OAAOK,kBAAkB9B,MAClBzJ,QAGT,SAASwL,eAAe/B,MACtB,IAAIyB,OAAS,IAAII,WACbtL,QAAUiL,gBAAgBC,QAE9B,OADAA,OAAOO,WAAWhC,MACXzJ,QAGT,SAAS0L,sBAAsBC,KAI7B,IAHA,IAAIC,KAAO,IAAIC,WAAWF,KACtBG,MAAQ,IAAInxB,MAAMixB,KAAK5sB,QAElBiG,EAAI,EAAGA,EAAI2mB,KAAK5sB,OAAQiG,IAC/B6mB,MAAM7mB,GAAKzG,OAAOutB,aAAaH,KAAK3mB,IAEtC,OAAO6mB,MAAM1sB,KAAK,IAGpB,SAAS4sB,YAAYL,KACnB,GAAIA,IAAIxsB,MACN,OAAOwsB,IAAIxsB,MAAM,GAEjB,IAAIysB,KAAO,IAAIC,WAAWF,IAAIM,YAE9B,OADAL,KAAKxf,IAAI,IAAIyf,WAAWF,MACjBC,KAAKM,OAIhB,SAASC,OAkHP,OAjHA3yB,KAAKwxB,UAAW,EAEhBxxB,KAAK4yB,UAAY,SAASrB,MAWxBvxB,KAAKwxB,SAAWxxB,KAAKwxB,SACrBxxB,KAAK6yB,UAAYtB,KACZA,KAEsB,iBAATA,KAChBvxB,KAAK8yB,UAAYvB,KACRxB,QAAQE,MAAQC,KAAKpb,UAAU0b,cAAce,MACtDvxB,KAAK+yB,UAAYxB,KACRxB,QAAQI,UAAY6C,SAASle,UAAU0b,cAAce,MAC9DvxB,KAAKizB,cAAgB1B,KACZxB,QAAQC,cAAgBkD,gBAAgBpe,UAAU0b,cAAce,MACzEvxB,KAAK8yB,UAAYvB,KAAKjrB,WACbypB,QAAQK,aAAeL,QAAQE,MAAQI,WAAWkB,OAC3DvxB,KAAKmzB,iBAAmBX,YAAYjB,KAAKmB,QAEzC1yB,KAAK6yB,UAAY,IAAI3C,KAAK,CAAClwB,KAAKmzB,oBACvBpD,QAAQK,cAAgBO,YAAY7b,UAAU0b,cAAce,OAASb,kBAAkBa,OAChGvxB,KAAKmzB,iBAAmBX,YAAYjB,MAEpCvxB,KAAK8yB,UAAYvB,KAAOlqB,OAAOyN,UAAUxO,SAASoB,KAAK6pB,MAhBvDvxB,KAAK8yB,UAAY,GAmBd9yB,KAAKmxB,QAAQ/jB,IAAI,kBACA,iBAATmkB,KACTvxB,KAAKmxB,QAAQve,IAAI,eAAgB,4BACxB5S,KAAK+yB,WAAa/yB,KAAK+yB,UAAUlyB,KAC1Cb,KAAKmxB,QAAQve,IAAI,eAAgB5S,KAAK+yB,UAAUlyB,MACvCkvB,QAAQC,cAAgBkD,gBAAgBpe,UAAU0b,cAAce,OACzEvxB,KAAKmxB,QAAQve,IAAI,eAAgB,qDAKnCmd,QAAQE,OACVjwB,KAAKiwB,KAAO,WACV,IAAImD,SAAW9B,SAAStxB,MACxB,GAAIozB,SACF,OAAOA,SAGT,GAAIpzB,KAAK+yB,UACP,OAAOlP,QAAQgD,QAAQ7mB,KAAK+yB,WACvB,GAAI/yB,KAAKmzB,iBACd,OAAOtP,QAAQgD,QAAQ,IAAIqJ,KAAK,CAAClwB,KAAKmzB,oBACjC,GAAInzB,KAAKizB,cACd,MAAM,IAAIxP,MAAM,wCAEhB,OAAOI,QAAQgD,QAAQ,IAAIqJ,KAAK,CAAClwB,KAAK8yB,cAI1C9yB,KAAKowB,YAAc,WACjB,GAAIpwB,KAAKmzB,iBAAkB,CACzB,IAAIE,WAAa/B,SAAStxB,MAC1B,OAAIqzB,aAGA1C,YAAYC,OAAO5wB,KAAKmzB,kBACnBtP,QAAQgD,QACb7mB,KAAKmzB,iBAAiBT,OAAO/sB,MAC3B3F,KAAKmzB,iBAAiBG,WACtBtzB,KAAKmzB,iBAAiBG,WAAatzB,KAAKmzB,iBAAiBV,aAItD5O,QAAQgD,QAAQ7mB,KAAKmzB,mBAG9B,OAAOnzB,KAAKiwB,OAAOxJ,KAAKoL,yBAK9B7xB,KAAKsO,KAAO,WACV,IAAI8kB,SAAW9B,SAAStxB,MACxB,GAAIozB,SACF,OAAOA,SAGT,GAAIpzB,KAAK+yB,UACP,OAAOf,eAAehyB,KAAK+yB,WACtB,GAAI/yB,KAAKmzB,iBACd,OAAOtP,QAAQgD,QAAQqL,sBAAsBlyB,KAAKmzB,mBAC7C,GAAInzB,KAAKizB,cACd,MAAM,IAAIxP,MAAM,wCAEhB,OAAOI,QAAQgD,QAAQ7mB,KAAK8yB,YAI5B/C,QAAQI,WACVnwB,KAAKmwB,SAAW,WACd,OAAOnwB,KAAKsO,OAAOmY,KAAK8M,UAI5BvzB,KAAKwzB,KAAO,WACV,OAAOxzB,KAAKsO,OAAOmY,KAAK3f,KAAK2sB,QAGxBzzB,KAlOTkxB,QAAQpc,UAAUsc,OAAS,SAAS7vB,KAAMY,OACxCZ,KAAOsvB,cAActvB,MACrBY,MAAQ2uB,eAAe3uB,OACvB,IAAIuxB,SAAW1zB,KAAKc,IAAIS,MACxBvB,KAAKc,IAAIS,MAAQmyB,SAAWA,SAAW,KAAOvxB,MAAQA,OAGxD+uB,QAAQpc,UAAkB,OAAI,SAASvT,aAC9BvB,KAAKc,IAAI+vB,cAActvB,QAGhC2vB,QAAQpc,UAAU1H,IAAM,SAAS7L,MAE/B,OADAA,KAAOsvB,cAActvB,MACdvB,KAAKiB,IAAIM,MAAQvB,KAAKc,IAAIS,MAAQ,MAG3C2vB,QAAQpc,UAAU7T,IAAM,SAASM,MAC/B,OAAOvB,KAAKc,IAAImR,eAAe4e,cAActvB,QAG/C2vB,QAAQpc,UAAUlC,IAAM,SAASrR,KAAMY,OACrCnC,KAAKc,IAAI+vB,cAActvB,OAASuvB,eAAe3uB,QAGjD+uB,QAAQpc,UAAU1N,QAAU,SAASlE,SAAUqd,SAC7C,IAAK,IAAIhf,QAAQvB,KAAKc,IAChBd,KAAKc,IAAImR,eAAe1Q,OAC1B2B,SAASwE,KAAK6Y,QAASvgB,KAAKc,IAAIS,MAAOA,KAAMvB,OAKnDkxB,QAAQpc,UAAUxN,KAAO,WACvB,IAAI0pB,MAAQ,GAIZ,OAHAhxB,KAAKoH,SAAQ,SAASjF,MAAOZ,MAC3ByvB,MAAM7pB,KAAK5F,SAENwvB,YAAYC,QAGrBE,QAAQpc,UAAUzJ,OAAS,WACzB,IAAI2lB,MAAQ,GAIZ,OAHAhxB,KAAKoH,SAAQ,SAASjF,OACpB6uB,MAAM7pB,KAAKhF,UAEN4uB,YAAYC,QAGrBE,QAAQpc,UAAUxK,QAAU,WAC1B,IAAI0mB,MAAQ,GAIZ,OAHAhxB,KAAKoH,SAAQ,SAASjF,MAAOZ,MAC3ByvB,MAAM7pB,KAAK,CAAC5F,KAAMY,WAEb4uB,YAAYC,QAGjBjB,QAAQtQ,WACVyR,QAAQpc,UAAUqD,OAAOG,UAAY4Y,QAAQpc,UAAUxK,SA6KzD,IAAImS,QAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAE3D,SAASkX,gBAAgBvxB,QACvB,IAAIwxB,QAAUxxB,OAAO4K,cACrB,OAAOyP,QAAQhH,QAAQme,UAAY,EAAIA,QAAUxxB,OAG5C,SAASyxB,QAAQrjB,MAAO5L,SAC7B,KAAM5E,gBAAgB6zB,SACpB,MAAM,IAAIhlB,UAAU,8FAItB,IAAI0iB,MADJ3sB,QAAUA,SAAW,IACF2sB,KAEnB,GAAI/gB,iBAAiBqjB,QAAS,CAC5B,GAAIrjB,MAAMghB,SACR,MAAM,IAAI3iB,UAAU,gBAEtB7O,KAAK8zB,IAAMtjB,MAAMsjB,IACjB9zB,KAAK+zB,YAAcvjB,MAAMujB,YACpBnvB,QAAQusB,UACXnxB,KAAKmxB,QAAU,IAAID,QAAQ1gB,MAAM2gB,UAEnCnxB,KAAKoC,OAASoO,MAAMpO,OACpBpC,KAAKsS,KAAO9B,MAAM8B,KAClBtS,KAAKg0B,OAASxjB,MAAMwjB,OACfzC,MAA2B,MAAnB/gB,MAAMqiB,YACjBtB,KAAO/gB,MAAMqiB,UACbriB,MAAMghB,UAAW,QAGnBxxB,KAAK8zB,IAAM9uB,OAAOwL,OAYpB,GATAxQ,KAAK+zB,YAAcnvB,QAAQmvB,aAAe/zB,KAAK+zB,aAAe,eAC1DnvB,QAAQusB,SAAYnxB,KAAKmxB,UAC3BnxB,KAAKmxB,QAAU,IAAID,QAAQtsB,QAAQusB,UAErCnxB,KAAKoC,OAASuxB,gBAAgB/uB,QAAQxC,QAAUpC,KAAKoC,QAAU,OAC/DpC,KAAKsS,KAAO1N,QAAQ0N,MAAQtS,KAAKsS,MAAQ,KACzCtS,KAAKg0B,OAASpvB,QAAQovB,QAAUh0B,KAAKg0B,OACrCh0B,KAAKi0B,SAAW,MAEK,QAAhBj0B,KAAKoC,QAAoC,SAAhBpC,KAAKoC,SAAsBmvB,KACvD,MAAM,IAAI1iB,UAAU,6CAItB,GAFA7O,KAAK4yB,UAAUrB,QAEK,QAAhBvxB,KAAKoC,QAAoC,SAAhBpC,KAAKoC,QACV,aAAlBwC,QAAQsvB,OAA0C,aAAlBtvB,QAAQsvB,OAAsB,CAEhE,IAAIC,cAAgB,gBACpB,GAAIA,cAAcniB,KAAKhS,KAAK8zB,KAE1B9zB,KAAK8zB,IAAM9zB,KAAK8zB,IAAIpyB,QAAQyyB,cAAe,QAAS,IAAIC,MAAOC,eAC1D,CAGLr0B,KAAK8zB,MADe,KACO9hB,KAAKhS,KAAK8zB,KAAO,IAAM,KAAO,MAAO,IAAIM,MAAOC,YAUnF,SAASd,OAAOhC,MACd,IAAI+C,KAAO,IAAItB,SAYf,OAXAzB,KACGgD,OACA5yB,MAAM,KACNyF,SAAQ,SAASotB,OAChB,GAAIA,MAAO,CACT,IAAI7yB,MAAQ6yB,MAAM7yB,MAAM,KACpBJ,KAAOI,MAAMsvB,QAAQvvB,QAAQ,MAAO,KACpCS,MAAQR,MAAMiE,KAAK,KAAKlE,QAAQ,MAAO,KAC3C4yB,KAAKlD,OAAOqD,mBAAmBlzB,MAAOkzB,mBAAmBtyB,YAGxDmyB,KAGT,SAASI,aAAaC,YACpB,IAAIxD,QAAU,IAAID,QAoBlB,OAjB0ByD,WAAWjzB,QAAQ,eAAgB,KAK1DC,MAAM,MACNb,KAAI,SAASuwB,QACZ,OAAgC,IAAzBA,OAAO5b,QAAQ,MAAc4b,OAAOuD,OAAO,EAAGvD,OAAO7rB,QAAU6rB,UAEvEjqB,SAAQ,SAASytB,MAChB,IAAIC,MAAQD,KAAKlzB,MAAM,KACnBoE,IAAM+uB,MAAM7D,QAAQsD,OACxB,GAAIxuB,IAAK,CACP,IAAI5D,MAAQ2yB,MAAMlvB,KAAK,KAAK2uB,OAC5BpD,QAAQC,OAAOrrB,IAAK5D,WAGnBgvB,QAKF,SAAS4D,SAASC,SAAUpwB,SACjC,KAAM5E,gBAAgB+0B,UACpB,MAAM,IAAIlmB,UAAU,8FAEjBjK,UACHA,QAAU,IAGZ5E,KAAKa,KAAO,UACZb,KAAK6rB,YAA4BznB,IAAnBQ,QAAQinB,OAAuB,IAAMjnB,QAAQinB,OAC3D7rB,KAAK4pB,GAAK5pB,KAAK6rB,QAAU,KAAO7rB,KAAK6rB,OAAS,IAC9C7rB,KAAKi1B,gBAAoC7wB,IAAvBQ,QAAQqwB,WAA2B,GAAK,GAAKrwB,QAAQqwB,WACvEj1B,KAAKmxB,QAAU,IAAID,QAAQtsB,QAAQusB,SACnCnxB,KAAK8zB,IAAMlvB,QAAQkvB,KAAO,GAC1B9zB,KAAK4yB,UAAUoC,UA5DjBnB,QAAQ/e,UAAUogB,MAAQ,WACxB,OAAO,IAAIrB,QAAQ7zB,KAAM,CAACuxB,KAAMvxB,KAAK6yB,aA2CvCF,KAAKjrB,KAAKmsB,QAAQ/e,WAmBlB6d,KAAKjrB,KAAKqtB,SAASjgB,WAEnBigB,SAASjgB,UAAUogB,MAAQ,WACzB,OAAO,IAAIH,SAAS/0B,KAAK6yB,UAAW,CAClChH,OAAQ7rB,KAAK6rB,OACboJ,WAAYj1B,KAAKi1B,WACjB9D,QAAS,IAAID,QAAQlxB,KAAKmxB,SAC1B2C,IAAK9zB,KAAK8zB,OAIdiB,SAAS9kB,MAAQ,WACf,IAAIklB,SAAW,IAAIJ,SAAS,KAAM,CAAClJ,OAAQ,EAAGoJ,WAAY,KAE1D,OADAE,SAASt0B,KAAO,QACTs0B,UAGT,IAAIC,iBAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CL,SAASM,SAAW,SAASvB,IAAKjI,QAChC,IAA0C,IAAtCuJ,iBAAiB3f,QAAQoW,QAC3B,MAAM,IAAIyJ,WAAW,uBAGvB,OAAO,IAAIP,SAAS,KAAM,CAAClJ,OAAQA,OAAQsF,QAAS,CAAClN,SAAU6P,QAG1D,IAAIyB,aAAexlB,SAAOwlB,aACjC,IACE,IAAIA,aACJ,MAAOC,KACPD,aAAe,SAAS/R,QAASjiB,MAC/BvB,KAAKwjB,QAAUA,QACfxjB,KAAKuB,KAAOA,KACZ,IAAI0O,MAAQwT,MAAMD,SAClBxjB,KAAKy1B,MAAQxlB,MAAMwlB,OAErBF,aAAazgB,UAAYzN,OAAO4T,OAAOwI,MAAM3O,WAC7CygB,aAAazgB,UAAU2C,YAAc8d,aAGhC,SAASG,QAAMllB,MAAOmlB,MAC3B,OAAO,IAAI9R,SAAQ,SAASgD,QAASM,QACnC,IAAIyO,QAAU,IAAI/B,QAAQrjB,MAAOmlB,MAEjC,GAAIC,QAAQ5B,QAAU4B,QAAQ5B,OAAO6B,QACnC,OAAO1O,OAAO,IAAIoO,aAAa,UAAW,eAG5C,IAAIO,IAAM,IAAIC,eAEd,SAASC,WACPF,IAAIG,QAGNH,IAAInE,OAAS,WACX,IAAI/sB,QAAU,CACZinB,OAAQiK,IAAIjK,OACZoJ,WAAYa,IAAIb,WAChB9D,QAASuD,aAAaoB,IAAII,yBAA2B,KAEvDtxB,QAAQkvB,IAAM,gBAAiBgC,IAAMA,IAAIK,YAAcvxB,QAAQusB,QAAQ/jB,IAAI,iBAC3E,IAAImkB,KAAO,aAAcuE,IAAMA,IAAIX,SAAWW,IAAIM,aAClD71B,YAAW,WACTsmB,QAAQ,IAAIkO,SAASxD,KAAM3sB,YAC1B,IAGLkxB,IAAIlE,QAAU,WACZrxB,YAAW,WACT4mB,OAAO,IAAItY,UAAU,6BACpB,IAGLinB,IAAIO,UAAY,WACd91B,YAAW,WACT4mB,OAAO,IAAItY,UAAU,6BACpB,IAGLinB,IAAIQ,QAAU,WACZ/1B,YAAW,WACT4mB,OAAO,IAAIoO,aAAa,UAAW,iBAClC,IAWLO,IAAIjb,KAAK+a,QAAQxzB,OARjB,SAAgB0xB,KACd,IACE,MAAe,KAARA,KAAc/jB,SAAOkU,SAASsS,KAAOxmB,SAAOkU,SAASsS,KAAOzC,IACnE,MAAOvH,GACP,OAAOuH,KAIc0C,CAAOZ,QAAQ9B,MAAM,GAElB,YAAxB8B,QAAQ7B,YACV+B,IAAIW,iBAAkB,EACW,SAAxBb,QAAQ7B,cACjB+B,IAAIW,iBAAkB,GAGpB,iBAAkBX,MAChB/F,QAAQE,KACV6F,IAAIY,aAAe,OAEnB3G,QAAQK,aACRwF,QAAQzE,QAAQ/jB,IAAI,kBACyD,IAA7EwoB,QAAQzE,QAAQ/jB,IAAI,gBAAgBqI,QAAQ,8BAE5CqgB,IAAIY,aAAe,iBAInBf,MAAgC,iBAAjBA,KAAKxE,SAA0BwE,KAAKxE,mBAAmBD,QAKxE0E,QAAQzE,QAAQ/pB,SAAQ,SAASjF,MAAOZ,MACtCu0B,IAAIa,iBAAiBp1B,KAAMY,UAL7BkF,OAAOyO,oBAAoB6f,KAAKxE,SAAS/pB,SAAQ,SAAS7F,MACxDu0B,IAAIa,iBAAiBp1B,KAAMuvB,eAAe6E,KAAKxE,QAAQ5vB,WAQvDq0B,QAAQ5B,SACV4B,QAAQ5B,OAAOrO,iBAAiB,QAASqQ,UAEzCF,IAAIc,mBAAqB,WAEA,IAAnBd,IAAIe,YACNjB,QAAQ5B,OAAO8C,oBAAoB,QAASd,YAKlDF,IAAIiB,UAAkC,IAAtBnB,QAAQ/C,UAA4B,KAAO+C,QAAQ/C,sBAIjEmE,UAAW,EAEZjnB,SAAO2lB,QACV3lB,SAAO2lB,MAAQA,QACf3lB,SAAOmhB,QAAUA,QACjBnhB,SAAO8jB,QAAUA,QACjB9jB,SAAOglB,SAAWA,UC1lBuB3wB,MAAvC6yB,QAAQniB,UAAUzT,oBAClB41B,QAAQniB,UAAUzT,kBAAoB,mBAC9B61B,WAAal3B,KAAKk3B,WAClB1xB,OAAS0xB,WAAW1xB,OACpBoQ,OAAS,IAAIzU,MAAMqE,QACdiG,EAAI,EAAGA,EAAIjG,OAAQiG,IACxBmK,OAAOnK,GAAKyrB,WAAWzrB,GAAGlK,YAEvBqU,SCRVqhB,QAAQniB,UAAUqiB,UACnBF,QAAQniB,UAAUqiB,QACdF,QAAQniB,UAAUsiB,iBAClBH,QAAQniB,UAAUuiB,oBAClBJ,QAAQniB,UAAUwiB,mBAClBL,QAAQniB,UAAUyiB,kBAClBN,QAAQniB,UAAU0iB,uBAClB,SAASC,WACDN,SAAWn3B,KAAKyD,UAAYzD,KAAK03B,eAAe/rB,iBAAiB8rB,GACjEhsB,EAAI0rB,QAAQ3xB,SACPiG,GAAK,GAAK0rB,QAAQrpB,KAAKrC,KAAOzL,cAChCyL,GAAK,ICXnBwrB,QAAQniB,UAAUqiB,UACnBF,QAAQniB,UAAUqiB,QAAUF,QAAQniB,UAAUwiB,mBAAqBL,QAAQniB,UAAU0iB,uBAGpFP,QAAQniB,UAAUlL,UACnBqtB,QAAQniB,UAAUlL,QAAU,SAAS6tB,OAC7Bh3B,GAAKT,OAEN,IACKS,GAAG02B,QAAQM,GAAI,OAAOh3B,GAC1BA,GAAKA,GAAGkJ,eAAiBlJ,GAAGk3B,iBAChB,OAAPl3B,IAA+B,IAAhBA,GAAGm3B,iBAEpB,WCVMC,kFAER1G,QAAU,0DAGnB,SAAU3N,QAAS5c,SACf4c,QAAQ7b,UAAUmwB,eAAetU,QAAS5c,gCAG9C,SAAQ4c,QAASqI,OAAQsJ,iBACrB3R,QAAQ7b,UAAUowB,oBAEXC,QAAe3vB,gBAAgBwjB,OAAQsJ,4CAGlD,SAAmBA,SAAU3R,SACrB5b,QAAMM,0BACNN,QAAMM,0BAA0BitB,SAAU3R,SAE1CyU,QACI,gEACC/zB,OAAO+f,SAASiU,oCAI7B,SAAY1U,wBACJ5c,QAAU4c,QAAQ5c,UAClBuxB,UAAYt0B,eACZu0B,SAAWp4B,KAAKq4B,iBAEhBn0B,OAAOo0B,qCACAp0B,OAAOo0B,8BAA8B1xB,QAAS5G,MAIzD01B,gBACOxxB,OAAOq0B,8CAAqC3xB,QAAQuD,YAAY5I,MACnE,CACIa,OAAQ,OACRmvB,KAAMzqB,KAAKC,UAAUH,SAErBmtB,YAAa,cACb5C,qEACoB,0BACN,iDACI,GAGVnxB,KAAKmxB,qBAGEjtB,OAAO+f,SAASsS,MACvB4B,WAAa,gBAAkBA,YAC/BC,UAAY,eAAiBA,aAIxC3R,MAAK,SAAA0O,aACEA,SAASvL,GACTuL,SAAS7mB,OAAOmY,MAAK,SAAA0O,UACbrzB,MAAK02B,iBAAiBrD,WACtBrzB,MAAK2I,QAAQ+Y,SACb1hB,MAAK22B,cAActD,WAEnBrzB,MAAK42B,UAAUlV,QAAS1c,KAAK2sB,MAAM0B,kBAGxC,KACsD,IAArDrzB,MAAK2I,QAAQ+Y,QAAS2R,SAAStJ,OAAQsJ,UAAqB,UAExC,MAApBA,SAAStJ,OAAgB,IACrBjkB,QAAMK,kBAAmB,OAE7BL,QAAMK,mBAAoB,EAE1BnG,MAAK62B,mBAAmBxD,SAAU3R,cAElC2R,SAAS7mB,OAAOmY,MAAK,SAAA0O,UACjBrzB,MAAK22B,cAActD,iBAKlCjK,OAAM,WACHppB,MAAK2I,QAAQ+Y,4CAIzB,SAAiBoV,gBACJA,OAAOp3B,MAAM,+DAG1B,cACwB,oBAATq3B,YACAA,KAAKT,wCAKpB,SAAc3d,sBACNqe,KAAOr1B,SAAS4M,cAAc,QAClCyoB,KAAKC,UAAYte,KACjBqe,KAAKntB,iBAAiB,KAAKvE,SAAQ,SAAAmJ,UAC/BA,EAAE3D,aAAa,SAAU,eAGzBosB,MAAQv1B,SAASw1B,eAAe,uBAEhB,IAATD,OAAiC,MAATA,MAE/BA,MAAMD,UAAY,KAElBC,MAAQv1B,SAAS4M,cAAc,QACzBxJ,GAAK,iBACXmyB,MAAMze,MAAMjL,SAAW,QACvB0pB,MAAMze,MAAM2e,MAAQ,QACpBF,MAAMze,MAAM4e,OAAS,QACrBH,MAAMze,MAAM6e,QAAU,OACtBJ,MAAMze,MAAM8e,gBAAkB,oBAC9BL,MAAMze,MAAM+e,OAAS,SAGrBlf,OAAS3W,SAAS4M,cAAc,UACpC+J,OAAOG,MAAM8e,gBAAkB,UAC/Bjf,OAAOG,MAAMgf,aAAe,MAC5Bnf,OAAOG,MAAM2e,MAAQ,OACrB9e,OAAOG,MAAM4e,OAAS,OACtBH,MAAMte,YAAYN,QAElB3W,SAAS8tB,KAAKiI,QAAQR,OACtBv1B,SAAS8tB,KAAKhX,MAAMkf,SAAW,SAC/Brf,OAAOQ,cAAcnX,SAASoX,OAC9BT,OAAOQ,cAAcnX,SAASqW,MAAMgf,KAAKpyB,WACzC0T,OAAOQ,cAAcnX,SAASsW,QAG9Bif,MAAMrT,iBAAiB,SAAS,kBAAM/c,OAAK8wB,cAAcV,UAGzDA,MAAMpsB,aAAa,WAAY,GAC/BosB,MAAMrT,iBAAiB,WAAW,SAAA4G,GAChB,WAAVA,EAAExmB,KAAkB6C,OAAK8wB,cAAcV,UAE/CA,MAAMW,qCAGV,SAAcX,OACVA,MAAMtyB,UAAY,GAClBjD,SAAS8tB,KAAKhX,MAAMkf,SAAW,yICrJvBr3B,OAAQC,OAAQ5B,cAAIuF,kIACtBvF,GAAIuF,cAELnF,KAAO,mBACPuB,OAASA,aACTwE,QAAU,CACXC,GAAI/E,MAAKqE,UACT/D,OAAAA,OACAC,OAAAA,+BATiB2E,YCEd,mBACXY,QAAMkC,aAAa,uBAAuB,SAACrJ,GAAIkH,eAC1BnH,eAAeC,IAEjBm5B,QAAQ,aAEnBC,WAAaC,qBAAqBr5B,GAAIkH,WAE1CA,UAAUoyB,wBAAuB,WAC7BC,cAAcH,eAGlBp5B,GAAGw5B,4BAA8BJ,eAGrCjyB,QAAMkC,aAAa,oBAAoB,SAAC1I,KAAM84B,GAAIvyB,gBACLvD,IAArChD,KAAK64B,6BAELz5B,eAAeY,MAAMw4B,QAAQ,SAAWp5B,eAAe05B,IAAIj5B,IAAI,SAC/DV,YAAW,eACHs5B,WAAaC,qBAAqB14B,KAAMuG,WAE5CA,UAAUoyB,wBAAuB,WAC7BC,cAAcH,eAGlBz4B,KAAK64B,4BAA8BJ,aACpC,MAKf,SAASC,qBAAqB32B,KAAMwE,eAC5BwyB,SAAW35B,eAAe2C,MAAMiK,IAAI,QAAQgtB,WAAW,YAEpDC,aAAY,eACU,IAArBl3B,KAAKm3B,iBAEL35B,WAAaH,eAAe2C,UAG5BxC,WAAWi5B,QAAQ,aAEjB74B,UAAYJ,WAAWyM,IAAI,QAC3BhL,OAASrB,UAAUqB,QAAU,WAI/BwF,QAAMG,yBAA4BhH,UAAUa,UAAUZ,SAAS,eAG3DoF,KAAKC,SAAW,KAKpBtF,UAAUa,UAAUZ,SAAS,aAAgBu5B,WAAWx5B,UAAUN,KAKlEmH,QAAMI,mBAEVL,UAAUsB,UAAU,IAAIuxB,WAAap4B,OAAQrB,UAAUsB,OAAQc,WAChEg3B,UAGP,SAASI,WAAW95B,QACZg6B,SAAWh6B,GAAGi6B,+BAGdD,SAASE,KAAOz2B,OAAO02B,aAAen3B,SAASo3B,gBAAgBC,eAC/DL,SAASM,MAAQ72B,OAAO82B,YAAcv3B,SAASo3B,gBAAgBI,cAC/DR,SAASS,OAAS,GAClBT,SAASU,MAAQ,8CC7ETxzB,UAAWyzB,iDACdzzB,UAAYA,eACZyzB,YAAcA,+DAGvB,iBACW,CACHjxB,YAAanK,KAAK2H,UAAUwC,YAC5BE,WAAYrK,KAAK2H,UAAU0C,WAE3BgxB,QAASr7B,KAAKo7B,YAAYt6B,KAAI,SAAAw6B,cAAW,CACrCz6B,KAAMy6B,OAAOz6B,KACb+F,QAAS00B,OAAO10B,wDAK5B,SAA4B20B,YAEpBv7B,KAAKm1B,SAASqG,QAAQC,MAAMz6B,SAASu6B,SAAU,OAAO,SAUnDv7B,KAAKo7B,YACP95B,QAAO,SAAAg6B,eATiBh3B,QASeg3B,OAAO/5B,KATbY,MASmBo5B,QAR9B,iBAAZj3B,SAAyC,iBAAVnC,OAEnCmC,QAAQ3C,MAAM,KAAK,KAAOQ,MAAMR,MAAM,KAAK,GAH1B,IAAC2C,QAASnC,SAUjCyf,MAAK,SAAA0Z,eAAUA,OAAOt1B,4CAG/B,SAAcY,gBACF5G,KAAKm1B,SAAWvuB,+BAG5B,eACQ80B,QAAU17B,KAAKm1B,SAASqG,QAAQE,SAAW,QAE1CN,YAAYh0B,SAAQ,SAAAk0B,QACD,eAAhBA,OAAOz6B,MAEXy6B,OAAOzU,aAC2BziB,IAA9Bs3B,QAAQJ,OAAOn1B,WACTu1B,QAAQJ,OAAOn1B,gBACa/B,IAA3Bs3B,QAAQJ,OAAOl5B,QACZs5B,QAAQJ,OAAOl5B,QACf,+BAKtB,gBACSg5B,YAAYh0B,SAAQ,SAAAk0B,QACrBA,OAAOnU,2ICtDHxf,UAAWg0B,+DACbh0B,UAAW,CAACg0B,6DAGtB,kBACW37B,KAAKo7B,YAAY,GAAGQ,qBANNC,YCId,SAASC,WAAWC,SAAUC,iBAEb53B,IAAxB23B,SAASE,iBAAkD73B,IAAtB43B,OAAOC,eAC5CF,SAASE,YAAgBD,OAAOC,cAC9BF,SAASE,aAAcD,OAAOC,iBAGhCxwB,EACAywB,KACAC,SACAC,iBACAC,UALAC,MAAQN,OAAO9E,eASdzrB,EAAI6wB,MAAM92B,OAAS,EAAGiG,GAAK,IAAKA,EAEjC0wB,UADAD,KAAOI,MAAM7wB,IACGlK,KAChB66B,iBAAmBF,KAAKK,aACxBF,UAAYH,KAAK/5B,MAEbi6B,kBACAD,SAAWD,KAAKM,WAAaL,SACjBJ,SAASU,eAAeL,iBAAkBD,YAEpCE,YACM,UAAhBH,KAAKQ,SACLP,SAAWD,KAAK36B,MAEpBw6B,SAASY,eAAeP,iBAAkBD,SAAUE,aAG5CN,SAAS95B,aAAak6B,YAEhBE,WACdN,SAASnvB,aAAauvB,SAAUE,eASvC5wB,GAFL6wB,MAAQP,SAAS7E,YAEF1xB,OAAS,EAAGiG,GAAK,IAAKA,GAEV,KADvBywB,KAAOI,MAAM7wB,IACJmxB,YACLT,SAAWD,KAAK36B,MAChB66B,iBAAmBF,KAAKK,eAGpBJ,SAAWD,KAAKM,WAAaL,SAExBH,OAAOa,eAAeT,iBAAkBD,WACzCJ,SAASe,kBAAkBV,iBAAkBD,WAG5CH,OAAOtvB,aAAayvB,WACrBJ,SAASpvB,gBAAgBwvB,YChE7C,SAASY,oBAAoBC,OAAQC,KAAM17B,MACnCy7B,OAAOz7B,QAAU07B,KAAK17B,QACtBy7B,OAAOz7B,MAAQ07B,KAAK17B,MAChBy7B,OAAOz7B,MACPy7B,OAAOpwB,aAAarL,KAAM,IAE1By7B,OAAOrwB,gBAAgBpL,6BAKpB,CACX27B,OAAQ,SAASF,OAAQC,UACjBtF,WAAaqF,OAAOrF,cACpBA,WAAY,KACRwF,WAAaxF,WAAWyF,SAASpwB,cAClB,aAAfmwB,aAEAA,YADAxF,WAAaA,WAAWA,aACGA,WAAWyF,SAASpwB,eAEhC,WAAfmwB,YAA4BxF,WAAWjrB,aAAa,cAChDswB,OAAOtwB,aAAa,cAAgBuwB,KAAK5uB,WAIzC2uB,OAAOpwB,aAAa,WAAY,YAChCowB,OAAOrwB,gBAAgB,aAK3BgrB,WAAW0F,eAAiB,GAGpCN,oBAAoBC,OAAQC,KAAM,aAQtCK,MAAO,SAASN,OAAQC,MACpBF,oBAAoBC,OAAQC,KAAM,WAClCF,oBAAoBC,OAAQC,KAAM,YAE9BD,OAAO76B,QAAU86B,KAAK96B,QACtB66B,OAAO76B,MAAQ86B,KAAK96B,OAGnB86B,KAAKvwB,aAAa,UACnBswB,OAAOrwB,gBAAgB,UAI/B4wB,SAAU,SAASP,OAAQC,UACnBO,SAAWP,KAAK96B,MAChB66B,OAAO76B,QAAUq7B,WACjBR,OAAO76B,MAAQq7B,cAGfC,WAAaT,OAAOS,cACpBA,WAAY,KAGR/J,SAAW+J,WAAWC,aAEtBhK,UAAY8J,WAAcA,UAAY9J,UAAYsJ,OAAOW,mBAI7DF,WAAWC,UAAYF,WAG/BI,OAAQ,SAASZ,OAAQC,UAChBA,KAAKvwB,aAAa,YAAa,SAQ5BmxB,SACAT,SARAC,eAAiB,EACjB5xB,EAAI,EAKJqyB,SAAWd,OAAOS,WAGhBK,aAEe,cADjBV,SAAWU,SAASV,UAAYU,SAASV,SAASpwB,eAG9C8wB,UADAD,SAAWC,UACSL,eACjB,IACc,WAAbL,SAAuB,IACnBU,SAASpxB,aAAa,YAAa,CACnC2wB,cAAgB5xB,QAGpBA,MAEJqyB,SAAWA,SAASC,cACHF,WACbC,SAAWD,SAASE,YACpBF,SAAW,MAKvBb,OAAOK,cAAgBA,iBC1G/BW,MACAC,SAAW,+BAEJC,IAA0B,oBAAbz6B,cAA2BW,EAAYX,SAC3D06B,uBAAyBD,KAAO,YAAaA,IAAI7tB,cAAc,YAC/D+tB,oBAAsBF,KAAOA,IAAIG,aAAe,6BAA8BH,IAAIG,cAEtF,SAASC,2BAA2BC,SAC5BC,SAAWN,IAAI7tB,cAAc,mBACjCmuB,SAASzF,UAAYwF,IACdC,SAASv6B,QAAQw6B,WAAW,GAGvC,SAASC,wBAAwBH,YACxBP,QACDA,MAAQE,IAAIG,eACNM,WAAWT,IAAI3M,MAGVyM,MAAMY,yBAAyBL,KAC9BE,WAAW,GAG/B,SAASI,uBAAuBN,SACxBO,SAAWZ,IAAI7tB,cAAc,eACjCyuB,SAAS/F,UAAYwF,IACdO,SAASL,WAAW,GAWxB,SAASM,UAAUR,YACtBA,IAAMA,IAAIhK,OACN4J,qBAIKG,2BAA2BC,KACzBH,kBACFM,wBAAwBH,KAG1BM,uBAAuBN,KAa3B,SAASS,iBAAiBhC,OAAQC,UACjCgC,aAAejC,OAAOI,SACtB8B,WAAajC,KAAKG,gBAElB6B,eAAiBC,eAIjBjC,KAAKkC,WACLF,aAAaxvB,WAAW,GAAK,IAC7ByvB,WAAWzvB,WAAW,GAAK,KAIpBwvB,eAAiBC,WAAWlyB,cAepC,SAASoyB,gBAAgB79B,KAAMg7B,qBAC1BA,cAAgBA,eAAiB0B,SAErCC,IAAIkB,gBAAgB7C,aAAch7B,MADlC28B,IAAI7tB,cAAc9O,MAOnB,SAAS89B,aAAarC,OAAQC,cAC7Ba,SAAWd,OAAOS,WACfK,UAAU,KACTwB,UAAYxB,SAASC,YACzBd,KAAKviB,YAAYojB,UACjBA,SAAWwB,iBAERrC,KC3FX,IAAIsC,aAAe,EACfC,uBAAyB,GACzBC,UAAY,EACZC,aAAe,EAEnB,SAASC,QAET,SAASC,kBAAkBz8B,aAChBA,KAAK0D,GAGhB,SAASkD,SAAS81B,MACI,eAAdA,KAAKt+B,MAAyBs+B,KAAKt+B,mCADhBc,0DAAAA,kCAMe,mBAA3BA,OAAO,GAAGqK,oBAEdmzB,kBAAQx9B,QAGJ,SAASy9B,gBAAgBhE,mBAE7B,SAAkBC,SAAUC,OAAQp3B,YAClCA,UACDA,QAAU,IAGQ,iBAAXo3B,UACmB,cAAtBD,SAASqB,UAAkD,SAAtBrB,SAASqB,SAAqB,KAC/D2C,WAAa/D,QACjBA,OAASkC,IAAI7tB,cAAc,SACpB0oB,UAAYgH,gBAEnB/D,OAAS+C,UAAU/C,YAIvBgE,WAAap7B,QAAQo7B,YAAcJ,kBACnCK,kBAAoBr7B,QAAQq7B,mBAAqBN,KACjDO,YAAct7B,QAAQs7B,aAAeP,KACrCQ,kBAAoBv7B,QAAQu7B,mBAAqBR,KACjDS,YAAcx7B,QAAQw7B,aAAeT,KACrCU,sBAAwBz7B,QAAQy7B,uBAAyBV,KACzDW,gBAAkB17B,QAAQ07B,iBAAmBX,KAC7CY,0BAA4B37B,QAAQ27B,2BAA6BZ,KACjEa,cAAwC,IAAzB57B,QAAQ47B,aAGvBC,gBAAkBp5B,OAAO4T,OAAO,MAChCylB,iBAAmB,YAEdC,gBAAgB56B,KACrB26B,iBAAiBv5B,KAAKpB,cAGjB66B,wBAAwBz9B,KAAM09B,mBAC/B19B,KAAKy0B,WAAa2H,qBACdzB,SAAW36B,KAAKs6B,WACbK,UAAU,KAET/3B,SAAM3B,EAENy8B,iBAAmB96B,IAAMgE,SAASi2B,WAAYlC,WAG9C6C,gBAAgB56B,MAKhBgE,SAASu2B,gBAAiBxC,UACtBA,SAASL,YACTmD,wBAAwB9C,SAAU+C,iBAI1C/C,SAAWA,SAASC,sBAavB+C,WAAW39B,KAAMw0B,WAAYkJ,iBACY,IAA1C92B,SAASs2B,sBAAuBl9B,QAIhCw0B,YACAA,WAAW9R,YAAY1iB,MAG3B4G,SAASu2B,gBAAiBn9B,MAC1By9B,wBAAwBz9B,KAAM09B,0BAsBzBE,gBAAgBtgC,OACrBsJ,SAASm2B,YAAaz/B,KAElBA,GAAGugC,2BAIHlD,SAAWr9B,GAAGg9B,WACXK,UAAU,KACTC,YAAcD,SAASC,YAEvBh4B,IAAMgE,SAASi2B,WAAYlC,aAC3B/3B,IAAK,KACDk7B,gBAAkBR,gBAAgB16B,KAClCk7B,iBAAmBjC,iBAAiBlB,SAAUmD,kBAC9CnD,SAASnG,WAAWuJ,aAAaD,gBAAiBnD,UAClDqD,QAAQF,gBAAiBnD,WAGzBiD,gBAAgBjD,eAIpBiD,gBAAgBjD,UAGpBA,SAAWC,sBAwBVoD,QAAQnE,OAAQC,KAAMuD,kBACvBY,QAAUr3B,SAASi2B,WAAY/C,SAE/BmE,gBAGOX,gBAAgBW,UAGtBZ,aAAc,KACmC,IAA9Cz2B,SAASo2B,kBAAmBnD,OAAQC,gBAQlCD,OAAOqE,sCACTvF,WAAWkB,OAAQC,MAGvBlzB,SAASq2B,YAAapD,SAEoC,IAAtDjzB,SAASw2B,0BAA2BvD,OAAQC,aAK5B,aAApBD,OAAOI,kBAYQJ,OAAQC,UAGvBqE,aACAC,eAEAC,gBACAC,cACAC,eAPAC,eAAiB1E,KAAKQ,WACtBmE,iBAAmB5E,OAAOS,WAS9BoE,MAAO,KAAOF,gBAAgB,KAC1BF,cAAgBE,eAAe5D,YAC/BuD,aAAev3B,SAASi2B,WAAY2B,gBAG7BC,kBAAkB,IACrBJ,gBAAkBI,iBAAiB7D,YAE/B4D,eAAeG,YAAcH,eAAeG,WAAWF,kBAAmB,CAC1ED,eAAiBF,cACjBG,iBAAmBJ,yBACVK,MAGbN,eAAiBx3B,SAASi2B,WAAY4B,sBAElCG,gBAAkBH,iBAAiBhK,SAGnCoK,kBAAe59B,KAEf29B,kBAAoBJ,eAAe/J,WAC/BmK,kBAAoBxC,cAGhB+B,aAGIA,eAAiBC,kBAIZG,eAAiBjB,gBAAgBa,eAC9BE,kBAAoBE,eAMpBM,cAAe,GASfhF,OAAOiF,aAAaP,eAAgBE,kBAGhCL,eAGAZ,gBAAgBY,gBAIhBT,WAAWc,iBAAkB5E,QAAQ,GAGzC4E,iBAAmBF,gBAKvBM,cAAe,GAGhBT,iBAEPS,cAAe,IAGnBA,cAAgC,IAAjBA,cAA0BhD,iBAAiB4C,iBAAkBD,oBAOlEA,eAAeO,YAAYN,mBAC1BD,eAAet+B,oBACfs+B,eAAet+B,mBAAmB6+B,YAAYN,kBAEjDI,cAAe,EAMfb,QAAQS,iBAAkBD,kBAI3BI,kBAAoBtC,WAAasC,iBAAmBrC,eAE3DsC,cAAe,EAGXJ,iBAAiBlE,YAAciE,eAAejE,YAC9CkE,iBAAiBlE,UAAYiE,eAAejE,aAKpDsE,aAAc,CAGdL,eAAiBF,cACjBG,iBAAmBJ,yBACVK,SAQTF,eAAet+B,oBAAsBs+B,eAAet+B,mBAAmB6+B,YAAYN,kBAAmB,KAChGO,cAAgBR,eAAeS,WAAU,GAC/CpF,OAAOiF,aAAaE,cAAeP,kBACnCb,gBAAgBoB,eAChBR,eAAiBA,eAAet+B,mBAAmB06B,YACnD6D,iBAAmBJ,yBACVK,MAQLN,eAGAZ,gBAAgBY,gBAIhBT,WAAWc,iBAAkB5E,QAAQ,GAI7C4E,iBAAmBJ,mBAOnBF,eAAiBI,eAAiBjB,gBAAgBa,gBAAkBtC,iBAAiB0C,eAAgBC,gBACrG3E,OAAOtiB,YAAYgnB,gBAEnBP,QAAQO,eAAgBC,oBACrB,KACCU,wBAA0Bt4B,SAASk2B,kBAAmB0B,iBAC1B,IAA5BU,0BACIA,0BACAV,eAAiBU,yBAGjBV,eAAexC,YACfwC,eAAiBA,eAAexC,UAAUnC,OAAOtF,eAAiBwG,MAEtElB,OAAOtiB,YAAYinB,gBACnBZ,gBAAgBY,iBAIxBA,eAAiBF,cACjBG,iBAAmBJ,0BAnPJxE,OAAQ4E,iBAAkBL,qBAItCK,kBAAkB,KACjBJ,gBAAkBI,iBAAiB7D,aAClCwD,eAAiBx3B,SAASi2B,WAAY4B,mBAGvCjB,gBAAgBY,gBAIhBT,WAAWc,iBAAkB5E,QAAQ,GAEzC4E,iBAAmBJ,iBAuOvBc,CAActF,OAAQ4E,iBAAkBL,oBAEpCgB,iBAAmBC,kBAAkBxF,OAAOI,UAC5CmF,mBAAsBvF,OAAOyF,iBAC7BF,iBAAiBvF,OAAQC,MAxMzByF,CAAc1F,OAAQC,MAElBD,OAAOjE,WAAakE,KAAKlE,WAIzByJ,kBAAkBjF,SAASP,OAAQC,gBAzGtC0F,UAAUx/B,SACXA,KAAKy0B,WAAa2H,cAAgBp8B,KAAKy0B,WAAa4H,+BAChD1B,SAAW36B,KAAKs6B,WACbK,UAAU,KACT/3B,IAAMgE,SAASi2B,WAAYlC,UAC3B/3B,MACA06B,gBAAgB16B,KAAO+3B,UAI3B6E,UAAU7E,UAEVA,SAAWA,SAASC,aAKhC4E,CAAU5G,cA8RN6G,YAAc7G,SACd8G,gBAAkBD,YAAYhL,SAC9BkL,WAAa9G,OAAOpE,aAEnB4I,gBAGGqC,kBAAoBtD,aAChBuD,aAAevD,aACVP,iBAAiBjD,SAAUC,UAC5BjyB,SAASu2B,gBAAiBvE,UAC1B6G,YAAcvD,aAAatD,SAAUqD,gBAAgBpD,OAAOoB,SAAUpB,OAAOO,gBAIjFqG,YAAc5G,YAEf,GAAI6G,kBAAoBpD,WAAaoD,kBAAoBnD,aAAc,IACtEoD,aAAeD,uBACXD,YAAYlF,YAAc1B,OAAO0B,YACjCkF,YAAYlF,UAAY1B,OAAO0B,WAG5BkF,YAGPA,YAAc5G,UAKtB4G,cAAgB5G,OAGhBjyB,SAASu2B,gBAAiBvE,cACvB,IACCC,OAAO8F,YAAc9F,OAAO8F,WAAWc,uBAI3CzB,QAAQyB,YAAa5G,OAAQwE,cAOzBE,qBACK,IAAIj1B,EAAE,EAAGlG,IAAIm7B,iBAAiBl7B,OAAQiG,EAAElG,IAAKkG,IAAK,KAC/Cs3B,WAAatC,gBAAgBC,iBAAiBj1B,IAC9Cs3B,YACAjC,WAAWiC,WAAYA,WAAWpL,YAAY,WAMzD6I,cAAgBoC,cAAgB7G,UAAYA,SAASpE,aAClDiL,YAAYzD,YACZyD,YAAcA,YAAYzD,UAAUpD,SAASrE,eAAiBwG,MAOlEnC,SAASpE,WAAWuJ,aAAa0B,YAAa7G,WAG3C6G,aCxef,IAAII,SAAWlD,gBAAgBhE,yHCAfv6B,KAAMY,MAAO1B,4EACfA,KAEDI,KAAO,kBACPU,KAAOA,WACPqF,QAAU,CACXC,GAAI/E,MAAKqE,UACT5E,KAAAA,KACAY,MAAAA,8BATiB6E,uHCCbzF,KAAMY,MAAO1B,cAAIuF,kIACnBvF,GAAIuF,cAELnF,KAAO,kBACPU,KAAOA,WACPqF,QAAU,CACXC,GAAI/E,MAAKqE,UACT5E,KAAAA,KACAY,MAAAA,8BATiB6E,4BCKd,CACXi8B,+BAAWxiC,GAAIkH,6BACPC,QAAME,yBAAwD,WAA7BrH,GAAG8J,QAAQhG,qBAC5C2+B,KAAKziC,GAAGs4B,YACD,EAGXv4B,eAAeC,IAAI4oB,MAAMjiB,SAAQ,SAAArG,kBACrBA,UAAUF,UACT,OACDiB,MAAKqhC,oBAAoB1iC,GAAIM,UAAW4G,qBAGvC,YACK5G,UAAUoB,MAAO,CACnBslB,QAAQ2b,KAAK,6CAA8C3iC,UAI/D4iC,IAAIt1B,uBAAuBtN,GAAIkH,WAE/B7F,MAAKwhC,oBAAoB7iC,GAAIM,UAAW4G,yBAIpCC,QAAMjH,WAAWM,IAAIF,UAAUF,OAC/B+G,QAAMjH,WAAW+G,KACb3G,UAAUF,KACVJ,GACAM,UACA4G,WAIR7F,MAAKyhC,kBAAkB9iC,GAAIM,UAAW4G,eAKlDC,QAAMmC,SAAS,sBAAuBtJ,GAAIkH,YAG9Cw7B,6BAAoB1iC,GAAIM,UAAW4G,eACzBvF,OAASrB,UAAUoB,MAAQpB,UAAUqB,OAAS,WAEpDuF,UAAUsB,UAAU,IAAIuxB,WAAap4B,OAAQrB,UAAUsB,OAAQ5B,MAGnE6iC,6BAAoB7iC,GAAIM,UAAW4G,WAE/BlH,GAAGgiC,iBAAkB,MAEfe,OAASziC,UAAUa,UAAUZ,SAAS,QAMtCyiC,oBAAsB1iC,UAAUa,UAAUZ,SAAS,eAEzD4G,QAAMmC,SAAS,mCAAoChJ,UAAWN,GAAIkH,WAGjC,UAA7BlH,GAAG8J,QAAQhG,eAAyC,SAAZ9D,GAAGI,UAV3BuiB,UAAWlgB,SAAUwgC,KAYnClgC,MAAqC,WAA7B/C,GAAG8J,QAAQhG,eAClB,CAAC,WAAY,SAASvD,SAASP,GAAGI,OAClCE,UAAUa,UAAUZ,SAAS,QAAU,SAAW,QAGrD+oB,SAjBgB3G,UAiBKqgB,qBAAwBJ,IAAIp2B,YAAYxM,MAAQ+iC,OAjB1CtgC,SAiBmD,SAAAqpB,iBAC1EoX,MAAQ5iC,UAAUoB,MAClB1B,GAAK8rB,EAAE7nB,OAEPvC,MAAQoqB,aAAaqX,kBAEC,IAAZrX,EAAEsX,aAC8B,IAAhC3/B,OAAOT,SAASqgC,+BAGpBvX,EAAEsX,sCAAUtX,EAAE7nB,OAAOvC,MACrBkhC,IAAIn2B,eAAezM,GAAIkH,WAE7B5G,UAAUa,UAAUZ,SAAS,SAC7B2G,UAAUsB,UAAU,IAAI86B,SAAoBJ,MAAOxhC,MAAO1B,KAE1DkH,UAAUsB,UAAU,IAAI+6B,WAAYL,MAAOxhC,MAAO1B,MAjCjBijC,KAmCtC3iC,UAAUq5B,WAAW,KAlCbhX,UACDzb,UAAUs8B,kBAAkB/gC,SAAUwgC,MACtCxgC,UAkCVzC,GAAGklB,iBAAiBniB,MAAOumB,SAE3BpiB,UAAUoyB,wBAAuB,WAC7Bt5B,GAAGq2B,oBAAoBtzB,MAAOumB,YAInB,iCAAiC/X,KAAKkyB,UAAUjsB,YAKnDxX,GAAGklB,iBAAiB,kBAAkB,SAAA4G,GACtB,qBAApBA,EAAE4X,gBAEN5X,EAAE7nB,OAAOd,cAAc,IAAIwgC,MAAM,SAAU,CAAEC,SAAS,KACtD9X,EAAE7nB,OAAOd,cAAc,IAAIwgC,MAAM,QAAS,CAAEC,SAAS,WAI7Dd,2BAAkB9iC,GAAIM,UAAW4G,kBACrB5G,UAAUF,UACT,cACA,aACIyjC,eAAe7jC,GAAIM,UAAW4G,WAAW,SAAA4kB,OAUpCgY,2BARqB,CACvB,OACA,QACA,MACA,OACA,MACA,SAEkDjjC,QAClD,SAAAyE,YAAOhF,UAAUa,UAAUZ,SAAS+E,WAGpCw+B,2BAA2B/+B,OAAS,GACM++B,2BAA2BjjC,QACjE,SAAAyE,WAEgB,QAARA,KAAyB,UAARA,MACjBA,IAAM,SAEFwmB,YAAKxmB,eAIiBP,OAAS,EAC3C,OAAO,KAIG,KAAd+mB,EAAEiY,SAA6B,MAAVjY,EAAExmB,KAAyB,aAAVwmB,EAAExmB,WACjChF,UAAUa,UAAUZ,SAAS,aAIpCY,UAAYb,UAAUa,UAAUN,QAAO,SAAAmjC,iBAElCA,SAASjjC,MAAM,gBACfijC,SAASjjC,MAAM,yBAMjBkjC,QAA6B,IAArB9iC,UAAU4D,QAAiB+mB,EAAExmB,KAAOnE,UAAUZ,SAASqD,UAAUkoB,EAAExmB,oBAGrF,aACIu+B,eAAe7jC,GAAIM,UAAW4G,WAAW,SAAA4kB,MAErCxrB,UAAUa,UAAUZ,SAAS,eAK3BP,GAAGqhC,WAAWvV,EAAE7nB,8BAItB4/B,eAAe7jC,GAAIM,UAAW4G,aAK/C28B,wBAAe7jC,GAAIM,UAAW4G,UAAWzE,0BACjCnC,UAAUa,UAAUZ,SAAS,aAC7BP,GAAGklB,iBAAiB,cAAc,WAC9Bhe,UAAUg9B,kBACN,IAAInK,WAAaz5B,UAAUqB,OAAQrB,UAAUsB,OAAQ5B,YAK3D+C,MAAQzC,UAAUF,KA0DlB+jC,iBALa,SAACxhB,UAAWlgB,SAAUwgC,aAC9BtgB,UAAY1jB,SAASwD,SAAUwgC,MAAQxgC,SAIzB2hC,CADG9jC,UAAUa,UAAUZ,SAAS,aAxDzC,SAAAurB,GACRrpB,WAA4B,IAAhBA,SAASqpB,IAIzB5kB,UAAUm9B,wBAAuB,eACvBrkC,GAAK8rB,EAAE7nB,OAEb3D,UAAUgkC,gBAAgBxY,GAI1B3jB,OAAKo8B,eAAezY,EAAGxrB,UAAUa,qCAC3BQ,OAASrB,UAAUqB,OACrBC,OAAStB,UAAUsB,UAGD,IAAlBA,OAAOmD,QACP+mB,aAAaqX,aACbrX,EAAEsX,QAEFxhC,OAAO8E,KAAKolB,EAAEsX,QAIH,UAAXzhC,oCACAuF,UAAUs9B,iBAAgBv9B,oDAAQrF,cAClCuF,QAAMmB,WAANnB,2BAAcvF,SAIH,YAAXD,OAKW,cAAXA,OAKW,YAAXA,OAKArB,UAAUoB,OACVwF,UAAUsB,UAAU,IAAIuxB,WAAap4B,OAAQC,OAAQ5B,KALrDmH,QAAM2B,aAAN3B,2BAAgBvF,SALhBuF,QAAMyB,eAANzB,SAAeD,UAAUd,8BAAOxE,UALhCuF,QAAMuB,aAANvB,SAAanH,8BAAO4B,eA4B5BtB,UAAUq5B,WAAW,MAGzB35B,GAAGklB,iBAAiBniB,MAAOohC,kBAE3Bj9B,UAAUoyB,wBAAuB,WAC7Bt5B,GAAGq2B,oBAAoBtzB,MAAOohC,sBAItCI,wBAAexhC,MAAO5B,WAClBA,UAAUZ,SAAS,YAAcwC,MAAM0hC,iBAEvCtjC,UAAUZ,SAAS,SAAWwC,MAAM2hC,oBC5QtCC,oDACUz9B,sDACHA,UAAYA,eACZ09B,2BAA6B,gEAGtC,SAAW7hB,cACF6hB,2BAA2B7hB,QAAQ8hB,YAAc9hB,yCAG1D,SAAkBmY,eACPt0B,OAAOC,KAAKtH,KAAKqlC,4BAA4BrkC,SAChD26B,OAAOC,6DAIf,SAAsCD,gBACxB37B,KAAKulC,2BAA2B5J,QAAQxG,mDAGtD,SAA2BwG,eAChB37B,KAAKqlC,2BAA2B1J,OAAOC,uCAGlD,gBACSyJ,2BAA6B,0BCtB3B,yBACXz9B,QAAMkC,aAAa,yBAAyB,SAAAnC,WACxCA,UAAU69B,2BAA6B,GACvC79B,UAAU89B,kBAAoB,GAC9B99B,UAAU+9B,0BAA4B,GACtC/9B,UAAUg+B,gCAAkC,MAGhD/9B,QAAMkC,aAAa,uBAAuB,SAACrJ,GAAIkH,eACvChH,WAAaH,eAAeC,IAE5BE,WAAWi5B,QAAQ,YAEGj5B,WAAWA,WAAWW,QAC5C,SAAAmK,SAAgB,YAAXA,EAAE5K,QAGOuG,SAAQ,SAAArG,WACtB6kC,wBAAwBj+B,UAAWlH,GAAIM,iBAI/C6G,QAAMkC,aAAa,gBAAgB,SAAC0Z,QAAS7b,eACnCk+B,QAAUriB,QAAQ4X,YACnB95B,QAAO,SAAAq6B,cACmB,eAAhBA,OAAO96B,QAEjBC,KAAI,SAAA66B,eAAUA,OAAO/0B,QAAQxE,UAE5B0jC,kBAAoBtiB,QAAQ4X,YAC7B95B,QAAO,SAAAq6B,cACmB,eAAhBA,OAAO96B,QAEjBC,KAAI,SAAA66B,eACDoK,qCACIpK,OAAO/0B,QAAQxE,OACfu5B,OAAO/0B,QAAQvE,WAIrB2jC,OAASxiB,QAAQ4X,YAClB95B,QAAO,SAAAq6B,cACmB,cAAhBA,OAAO96B,QAEjBC,KAAI,SAAA66B,YACGp6B,KAAOo6B,OAAO/0B,QAAQrF,SACpBA,KAAKP,SAAS,YACTO,SAGP0kC,aAAe,UAEnBA,aAAa9+B,KACT5F,KAAKI,MAAM,KAAKukC,QAAO,SAACC,WAAYC,aAChCH,aAAa9+B,KAAKg/B,YAEXA,WAAa,IAAMC,SAI3BH,gBAEVnlB,OAELulB,WAAW1+B,UAAWk+B,QAAQh4B,OAAOi4B,mBAAmBj4B,OAAOm4B,YAGnEp+B,QAAMkC,aAAa,kBAAkB,SAAC0Z,QAAS7b,WAC3C2+B,aAAa3+B,cAGjBC,QAAMkC,aAAa,oBAAoB,SAAC0Z,QAAS7b,WAC7C2+B,aAAa3+B,cAGjBC,QAAMkC,aAAa,mBAAmB,SAACrJ,GAAIkH,WACvC4+B,gBAAgB5+B,UAAWlH,OAInC,SAASmlC,wBAAwBj+B,UAAWlH,GAAIM,WAI5CN,GAAG+lC,6BAA+B,OAE9BC,aAAc,EAEd9lC,WAAaH,eAAeC,OAE5BE,WAAWyM,IAAI,UAAW,KACtB1I,OAAS/D,WAAWyM,IAAI,UAExBq5B,YADA/hC,OAAOrC,OAAOmD,OAAS,EACT,CACVugC,qCACIrhC,OAAOtC,OACPsC,OAAOrC,SAKDqC,OAAOvC,MAAMR,MAAM,KAAKb,KAAI,SAAA22B,UAAKA,EAAElD,cAElD,KAGGmS,mCAAqC,CACvC,OACA,QACA,UACA,SACA,UACA,OACA,SACA,MACA,OAGJD,YAAc9lC,WACT0oB,MACA/nB,QAAO,SAAAmK,UAAMi7B,mCAAmC1lC,SAASyK,EAAE5K,SAC3DC,KAAI,SAAA2K,UAAKA,EAAErJ,WAGAoD,OAAS,IAAGihC,aAAc,GAG9CE,aAAah/B,UAAWlH,GAAIM,UAAW0lC,aAG3C,SAASE,aAAah/B,UAAWlH,GAAIM,UAAW6lC,cACxCA,aACAA,aAAax/B,SAAQ,SAAAy/B,aACbl/B,UAAU69B,2BAA2BqB,aACrCl/B,UAAU69B,2BAA2BqB,aAAa1/B,KAAK,CACnD1G,GAAAA,GACAM,UAAAA,YAGJ4G,UAAU69B,2BAA2BqB,aAAe,CAChD,CAAEpmC,GAAAA,GAAIM,UAAAA,eAKlB4G,UAAU89B,kBAAkBt+B,KAAK,CAAE1G,GAAAA,GAAIM,UAAAA,YAI/C,SAASwlC,gBAAgB5+B,UAAWlH,IAEhCkH,UAAU89B,kBAAkBr+B,SAAQ,SAACoZ,QAASrL,OACtCqL,QAAQ/f,GAAGqhC,WAAWrhC,KACtBkH,UAAU89B,kBAAkBqB,OAAO3xB,MAAO,MAKlD9N,OAAOC,KAAKK,UAAU69B,4BAA4Bp+B,SAAQ,SAAArB,KACtD4B,UAAU69B,2BACNz/B,KACA4B,UAAU69B,2BAA2Bz/B,KAAKzE,QAAO,SAAAkf,gBACxCA,QAAQ/f,GAAGqhC,WAAWrhC,UAK3C,SAAS4lC,WAAW1+B,UAAWk+B,aACrBkB,kBAAoBlB,QACrB/kC,KAAI,SAAA66B,eAAUh0B,UAAU69B,2BAA2B7J,WACnDr6B,QAAO,SAAAb,WAAMA,MACbqgB,OAECjV,OAASm7B,iBAAiBr/B,UAAU89B,kBAAkB53B,OAAOk5B,oBAEnEE,aAAap7B,QAEblE,UAAU+9B,0BAA4B75B,OAGnC,SAASq7B,iBAAiBv/B,UAAWwF,eAClC45B,kBACFp/B,UAAU69B,2BAA2Br4B,YAAc,GAEjDtB,OAASm7B,iBAAiBr/B,UAAU89B,kBAAkB53B,OAAOk5B,oBAEnEE,aAAap7B,QAEblE,UAAUg+B,gCAAkC95B,OAGzC,SAASs7B,mBAAmBx/B,WAC/By/B,WAAWz/B,UAAUg+B,iCAErBh+B,UAAUg+B,gCAAkC,GAGhD,SAASW,aAAa3+B,WAClBy/B,WAAWz/B,UAAU+9B,2BAErB/9B,UAAU+9B,0BAA4B,GAG1C,SAASuB,aAAaI,KAClBA,IAAIjgC,SAAQ,mBAAG3G,QAAAA,GAAIM,eAAAA,aACXA,UAAUa,UAAUZ,SAAS,SAAU,KACnCsmC,QAAUvmC,UAAUoB,MAAMR,MAAM,KAAKL,OAAOojC,SAEhD6C,2BACI9mC,GACAM,WACA,kDAAMN,GAAG+mC,WAAUC,2CAAOH,aAC1B,oDAAM7mC,GAAG+mC,WAAUE,+CAAUJ,kBAE9B,GAAIvmC,UAAUa,UAAUZ,SAAS,QACpCumC,2BACI9mC,GACAM,WACA,kBAAMN,GAAGmM,aAAa7L,UAAUoB,OAAO,MACvC,kBAAM1B,GAAGkM,gBAAgB5L,UAAUoB,cAEpC,KACC+xB,MAAQhwB,OACPyjC,iBAAiBlnC,GAAI,MACrBmnC,iBAAiB,WAEtBL,2BACI9mC,GACAM,WACA,WACIN,GAAG8Z,MAAMC,QAAUzZ,UAAUa,UAAUZ,SAAS,UAC1CkzB,MACA2T,mBAAmB9mC,cAE7B,WACIN,GAAG8Z,MAAMC,QAAU,cAOvC,SAASqtB,mBAAmB9mC,iBAChB,CAAC,SAAU,QAAS,QAAS,OAAQ,OAAQ,eAChDO,QAAO,SAAAmK,UAAK1K,UAAUa,UAAUZ,SAASyK,MAAI,IAAM,eAG5D,SAAS87B,2BAA2B9mC,GAAIM,UAAW+mC,WAAYC,iBACvDhnC,UAAUa,UAAUZ,SAAS,qBACA,CAAC+mC,aAAcD,YAA3CA,oBAAYC,yBAEbhnC,UAAUa,UAAUZ,SAAS,SAAU,KACnCgnC,SAAW,IAEXC,eAAiB,UACL,WACD,UACF,SACD,WACE,YACC,KAGf5gC,OAAOC,KAAK2gC,gBAAgBrmB,MAAK,SAAA7b,QAC1BhF,UAAUa,UAAUZ,SAAS+E,YAC5BiiC,SAAWC,eAAeliC,MACnB,SAIXjG,QAAUS,YAAW,WACrBunC,aACArnC,GAAG+lC,6BAA6Br/B,MAAK,kBAAM4gC,oBAC5CC,UAEHvnC,GAAG+lC,6BAA6Br/B,MAAK,kBAAM7G,aAAaR,iBAExDgoC,aACArnC,GAAG+lC,6BAA6Br/B,MAAK,kBAAM4gC,kBAInD,SAASX,WAAWC,KAChBA,IAAIjgC,SAAQ,wBAAG3G,SAAAA,GACJA,GAAG+lC,6BAA6BhhC,OAAS,GAC5C/E,GAAG+lC,6BAA6BvV,OAAhCxwB,MAKZ,SAASslC,qCAAqC3jC,OAAQC,eAC3CD,OAASoE,KAAKC,mBAAmBpE,OAAOiE,aAGnD,SAAS0gC,iBAAiBkB,YACf/mC,MAAMC,KAAK,IAAI+mC,IAAID,UCzSTE,kFAERC,IAAM,oDAGf,SAAI9mC,KAAMoF,OACA3G,KAAKqoC,IAAI9mC,aACN8mC,IAAI9mC,MAAQ,SAGhB8mC,IAAI9mC,MAAM4F,KAAKR,2BAGxB,SAAKpF,KAAMoF,YACF8gC,IAAIlmC,KAAMoF,4BAGnB,SAAMpF,aACIvB,KAAKqoC,IAAI9mC,MAERvB,KAAKqoC,IAAI9mC,MAAM,GAFO,yBAKjC,SAAKA,aACMvB,KAAKqoC,IAAI9mC,MAAMoE,OAAO,GAAG,sBAGpC,SAAIpE,aACOvB,KAAKqoC,IAAI9mC,2BAGpB,SAAMA,aACKvB,KAAKqoC,IAAI9mC,MAAM0vB,4BAG1B,SAAK1vB,oCAASc,0DAAAA,gCACTrC,KAAKkH,UAAU3F,OAAS,IAAI6F,SAAQ,SAAAlE,UACjCA,sBAAYb,8BAIpB,SAAId,aACO8F,OAAOC,KAAKtH,KAAKkH,WAAWlG,SAASO,wBCvC9C+mC,gDACU3gC,oDACHA,UAAYA,eACZ4gC,UAAY,IAAIH,gBAChBI,UAAY,IAAIJ,6EAGzB,+BACSzgC,UAAUmB,GAAG,6BAA6B,SAACvH,KAAMuyB,KAIlDoT,iBAAiBplC,MAAK6F,UAAWpG,MAEjCO,MAAK2mC,gBAAgBlnC,KAAMuyB,aAG1BnsB,UAAUmB,GAAG,kCAAkC,SAACvH,KAAMqF,SACvDsgC,iBAAiBplC,MAAK6F,UAAWpG,MAEjCO,MAAK4mC,qBAAqBnnC,KAAMqF,iBAG/Be,UAAUmB,GAAG,mBAAmB,SAACvH,KAAMonC,qBAAiB7mC,MAAK8mC,mBAAmBrnC,KAAMonC,sBACtFhhC,UAAUmB,GAAG,kBAAkB,SAACvH,aAASO,MAAK+mC,kBAAkBtnC,cAChEoG,UAAUmB,GAAG,kBAAkB,SAACvH,KAAMunC,oBAAgBhnC,MAAK0mC,UAAUvX,MAAM1vB,MAAMwnC,eAAeD,sCAGzG,SAAOvnC,KAAMynC,KAAMD,eAAgBE,cAAeC,uBACzCC,UAAU5nC,KAAM,CACjB6nC,MAAO,CAACJ,MACRt7B,UAAU,EACVq7B,eAAAA,eACAE,cAAAA,cACAC,iBAAAA,iDAIR,SAAe3nC,KAAM6nC,MAAOL,eAAgBE,cAAeC,uBAClDC,UAAU5nC,KAAM,CACjB6nC,MAAOjoC,MAAMC,KAAKgoC,OAClB17B,UAAU,EACVq7B,eAAAA,eACAE,cAAAA,cACAC,iBAAAA,+CAIR,SAAa3nC,KAAMunC,YAAaC,qBACvBP,UAAUrhC,KAAK5F,KAAM,CACtBunC,YAAAA,YAAaC,eAAAA,sBAGZphC,UAAUD,KAAK,eAAgBnG,KAAMunC,sCAG9C,SAAUvnC,KAAM8nC,mBACPd,UAAUd,IAAIlmC,KAAM8nC,cAEe,IAApCrpC,KAAKuoC,UAAUn7B,IAAI7L,MAAMiE,aACpB8jC,YAAY/nC,KAAM8nC,6CAI/B,SAAgB9nC,KAAMuyB,SACd3D,SAAW,IAAI6C,SACnB7xB,MAAMC,KAAKpB,KAAKuoC,UAAUr5B,MAAM3N,MAAM6nC,OAAOhiC,SAAQ,SAAA4hC,aAAQ7Y,SAASiB,OAAO,UAAW4X,KAAMA,KAAKznC,aAE/F4vB,QAAU,QACA,oBAGVgH,UAAYt0B,eAEZs0B,YAAWhH,QAAQ,gBAAkBgH,gBAEpCoR,YAAYhoC,KAAM4uB,SAAU,OAAQ2D,IAAK3C,SAAS,SAAAgE,iBAC5CA,SAASqU,6CAIxB,SAAqBjoC,KAAMqF,aACnBupB,SAAWnwB,KAAKuoC,UAAUr5B,MAAM3N,MAAM6nC,MAAM,GAE5CjY,QAAUvqB,QAAQuqB,QAClB,SAAUA,gBAAgBA,QAAQsY,SAClC3V,IAAMltB,QAAQktB,SAEbyV,YAAYhoC,KAAM4uB,SAAU,MAAO2D,IAAK3C,SAAS,SAAAgE,gBAC3C,CAACvuB,QAAQjC,oCAIxB,SAAYpD,KAAM4uB,SAAU/tB,OAAQ0xB,IAAK3C,QAASuY,+BAC1C9T,QAAU,IAAIG,eAClBH,QAAQ/a,KAAKzY,OAAQ0xB,KAErBzsB,OAAOiD,QAAQ6mB,SAAS/pB,SAAQ,gDAAErB,aAAK5D,eACnCyzB,QAAQe,iBAAiB5wB,IAAK5D,UAGlCyzB,QAAQ+T,OAAOhkB,iBAAiB,YAAY,SAAA4G,GACxCA,EAAEsX,OAAS,GACXtX,EAAEsX,OAAO+F,SAAWxjC,KAAKyjC,MAAkB,IAAXtd,EAAEud,OAAgBvd,EAAEwd,OAEpDnhC,OAAK2/B,UAAUr5B,MAAM3N,MAAM2nC,iBAAiB3c,MAGhDqJ,QAAQjQ,iBAAiB,QAAQ,cACE,OAA1BiQ,QAAQ/J,OAAO,IAAI,QAQpBtI,OAAS,KAEU,MAAnBqS,QAAQ/J,SACRtI,OAASqS,QAAQT,UAGrBvsB,OAAKjB,UAAUD,KAAK,gBAAiBnG,KAAMgiB,OAAQ3a,OAAK2/B,UAAUr5B,MAAM3N,MAAMmM,mBAbtE87B,MAAQE,cAAc9T,QAAQT,UAAYruB,KAAK2sB,MAAMmC,QAAQT,WAEjEvsB,OAAKjB,UAAUD,KAAK,eAAgBnG,KAAMioC,MAAO5gC,OAAK2/B,UAAUr5B,MAAM3N,MAAMmM,cAcpFkoB,QAAQmB,KAAK5G,qCAGjB,SAAY5uB,KAAM8nC,kBACVW,UAAYX,aAAaD,MAAMtoC,KAAI,SAAAkoC,YAC5B,CAAEznC,KAAMynC,KAAKznC,KAAMiO,KAAMw5B,KAAKx5B,KAAM3O,KAAMmoC,KAAKnoC,cAGrD8G,UAAUD,KAAK,cAAenG,KAAMyoC,UAAWX,aAAa37B,UAEjEw5B,iBAAiBlnC,KAAK2H,UAAWpG,wCAGrC,SAAmBA,KAAMonC,cACrBxB,mBAAmBnnC,KAAK2H,eAEpB0hC,aAAerpC,KAAKuoC,UAAUtX,MAAM1vB,MACxC8nC,aAAaN,eAAeM,aAAa37B,SAAWi7B,aAAeA,aAAa,IAE5E3oC,KAAKuoC,UAAUn7B,IAAI7L,MAAMiE,OAAS,GAAGxF,KAAKspC,YAAY/nC,KAAMvB,KAAKuoC,UAAUliB,KAAK9kB,wCAGxF,SAAkBA,MACd4lC,mBAAmBnnC,KAAK2H,gBAEnB4gC,UAAUtX,MAAM1vB,MAAM0nC,gBAEvBjpC,KAAKuoC,UAAUn7B,IAAI7L,MAAMiE,OAAS,GAAGxF,KAAKspC,YAAY/nC,KAAMvB,KAAKuoC,UAAUliB,KAAK9kB,4BC1J7E,yBACX2C,OAAOyhB,iBAAiB,iBAAiB,WAC/BzhB,OAAO+lC,SAEbC,yCAEAC,oBAEAC,sBAIR,SAASF,yCACDG,OACAziC,QAAMkC,aAAa,qBAAqB,SAAC0Z,QAAS8mB,mBAC9CtnC,KAAKsnC,kBAAkB7pC,IAAI,SAAAA,IACnBA,GAAG8pC,gBACH9pC,GAAG+pC,eAAe/pC,GAAG+pC,sBAO/BtmC,OAAO+lC,OAAOQ,wBAEpBvmC,OAAO+lC,OAAOQ,wBAAuB,SAAA9iC,eAC7B+iC,WAAa/iC,UAAUgjC,IAAI/gC,QAAQ,eAEnC8gC,YAAcA,WAAWE,YACzBhjC,QAAMkC,aAAa,qBAAqB,SAAC0Z,QAAS8mB,mBAC1CA,oBAAsBI,WAAWE,YACjCjjC,UAAUkjC,eAAeljC,UAAUgjC,WAOvD,SAASR,oBACDE,OACAnmC,OAAO+lC,OAAOa,MAAM,QAAQ,SAAUrqC,QAC9BsqC,OAAStqC,GAAGmJ,QAAQ,sBAElBmhC,QACFtjB,QAAQ2b,KACJ,kEAGQ2H,OAAOH,WAENI,SAKnB9mC,OAAO+lC,OAAOgB,kBAEpB/mC,OAAO+lC,OAAOgB,iBAAiB,QAAQ,SAAUC,iBACzCH,OAASG,YAAYthC,QAAQ,sBAE5BmhC,QACDtjB,QAAQ2b,KACJ,kEAGQ2H,OAAOH,WAENI,SAIzB,SAASZ,kBACDC,QAEEnmC,OAAO+lC,OAAOkB,8BAEpBjnC,OAAO+lC,OAAOkB,8BAA6B,SAAAxjC,eACnC+iC,WAAa/iC,UAAUgjC,IAAI/gC,QAAQ,eAEnC8gC,YAAcA,WAAWE,YACzBvjC,OAAOiD,QAAQ3C,UAAUyjC,gBAAgBhkC,SACrC,gDAAErB,aAAK5D,kBAEGA,OACe,WAAjBkpC,QAAOlpC,QACPA,MAAMmpC,iBACR,KAEMC,iBAAmBppC,MAAMmpC,iBACzBE,WAAarpC,MAAMqpC,WACnBlB,kBAAoBI,WAAWE,WAE/Ba,sBAAwBf,WAAWE,WAAWx9B,IAAIm+B,0BAIjB,IAA1BE,kCACPhkB,QAAQxX,4DAAqDs7B,uCAKjE5jC,UAAUyjC,eAAerlC,KAEnBe,KAAK2sB,MAAM3sB,KAAKC,UAAU0kC,4BAE5BC,oBAAqB,EAGzB/jC,UAAUyjC,eAAeO,OAAO5lC,KAAK,SAAA5D,QAGN,IAAvBupC,mBAUA5kC,KAAKC,UAAU5E,QACf2E,KAAKC,UACD2jC,WAAWE,WAAWgB,gCAClBL,oBAQZjB,kBAAkB13B,IACd24B,iBACAppC,MACAqpC,YAGAA,YA1BAE,oBAAqB,KA+B7BpB,kBAAkBuB,MACdN,kBACA,SAAAppC,OAEIwF,UAAUmkC,MAAM/lC,UAAwB,IAAV5D,MAAwB2E,KAAK2sB,MAAM3sB,KAAKC,UAAU5E,QAAUA,gBAUnH,SAAS4pC,oBAAoBpkC,kBAC5B0iC,OACO,SAAC9oC,UAAMmjB,8DACN8mB,WAAa9mB,MACb6mB,iBAAmBhqC,KACnB+oC,kBAAoB3iC,UACpB8jC,sBAAwB9jC,UAAUyF,IAAIm+B,kBAEtCS,YAAc/B,OAAO+B,aAAY,SAACC,aAAcC,OAAQxwB,OAAQ/W,KAAMoB,aAGjC,IAA1B0lC,2BAMPtpC,MAEE2E,KAAK2sB,MAAM3sB,KAAKC,UAAU0kC,+BAEhC/vB,OAAOvZ,OAGP+B,OAAO+lC,OAAOkC,QAAO,eACbhqC,MAAQ+pC,SAGRplC,KAAKC,UAAU5E,QACf2E,KAAKC,UACDujC,kBAAkBsB,gCACdL,oBAQZjB,kBAAkB13B,IACd24B,iBACAppC,MACAqpC,YAGAA,eAKRlB,kBAAkBuB,MACdN,kBACA,SAAAppC,OAEI+B,OAAO+lC,OAAOmC,yBAAwB,WAClC1wB,YAAwB,IAAVvZ,MAAwB2E,KAAK2sB,MAAM3sB,KAAKC,UAAU5E,QAAUA,aAK/EA,MAhDHslB,QAAQxX,4DAAqDs7B,0CAiDlE,SAAAjb,KACCjpB,OAAO8I,eAAemgB,IAAK,QAAS,CAChCljB,sBACIo+B,YAAa,EAENlb,iBAKZ0b,YAAYP,wBAIpB,SAAClqC,UAAMmjB,oEAAmB,CAC7B8mB,WAAY9mB,MACZ4mB,iBAAkB/pC,6BAETiqC,YAAa,EACXxrC,QAKZ,SAASqsC,4BAA4BjrC,KAAM84B,OAC1CmQ,cACOiC,8BAA8BlrC,KAAM84B,OAI3C94B,KAAKmrC,KAGLroC,OAAO+lC,OAAO/U,MAAM9zB,KAAKmrC,IAAKrS,IAK9B/4B,MAAMC,KAAKA,KAAK81B,YACXp2B,KAAI,SAAAo7B,aAAQA,KAAK36B,QACjBqgB,MAAK,SAAArgB,YAAQ,SAASyQ,KAAKzQ,YAE5BH,KAAKorC,eAELprC,KAAKigC,sCAAuC,UAMxCoL,SAASrrC,KAAM84B,IAAK,KAChB3f,MAAQ2f,GAAGj4B,aAAa,SAExBsY,OACA2f,GAAGttB,aAAa,QAAS2N,MAAM7Y,QAAQ,iBAAkB,UAEtDgrC,UAAUtrC,KAAM84B,MACvBA,GAAG3f,MAAMC,QAAUpZ,KAAKmZ,MAAMC,SAM9C,SAAS8xB,8BAA8BlrC,KAAM84B,IACnB,IAAlB94B,KAAKw2B,UAGLx2B,KAAKurC,cAGLzoC,OAAO+lC,OAAO/U,MAAM9zB,KAAM84B,IAIlC,SAASuS,SAASrrC,KAAM84B,WAChB0S,sCAC8B,KAAvBxrC,KAAKmZ,MAAMC,SAAuC,SAArB0f,GAAG3f,MAAMC,QAG1CpZ,KAAKyrC,eAAkB3S,GAAG2S,aAGrC,SAASH,UAAUtrC,KAAM84B,WACjB0S,sCAC8B,SAAvBxrC,KAAKmZ,MAAMC,SAA2C,KAArB0f,GAAG3f,MAAMC,SAG5CpZ,KAAKyrC,cAAgB3S,GAAG2S,aAGrC,SAASD,gFACuB1oC,OAAO+lC,OAAO53B,QAAQ1Q,MAAM,KAAKb,KAAI,SAAA2K,UAAK9I,OAAO8I,SAAxEqhC,gCAAOC,gCAAOC,uCAEZF,OAAS,GAAKC,OAAS,GAAKC,OAAS,EAGhD,SAAS3C,cACEnmC,OAAO+lC,QAAU/lC,OAAO+lC,OAAO53B,SAAW,cAAcL,KAAK9N,OAAO+lC,OAAO53B,aChTjE46B,wCACLxsC,GAAIysC,4CACZzsC,GAAGmqC,WAAa5qC,UAEXS,GAAKA,QAEL0sC,cAAgBntC,KAAKS,GAAGiG,eAExBG,GAAK7G,KAAKS,GAAGwB,aAAa,gBAE1BmrC,oCAEAF,WAAaA,eAEZG,YAAcvmC,KAAK2sB,MAAMzzB,KAAKS,GAAGwB,aAAa,8BAC/CxB,GAAGkM,gBAAgB,0BAEnBxC,YAAckjC,YAAYljC,iBAC1BE,WAAagjC,YAAYhjC,gBACzBmxB,QAAU6R,YAAY7R,aAEtBt0B,UAAYlH,KAAKw7B,QAAQt0B,eACzBk0B,YAAc,QACd9tB,gBAAkB,QAClBggC,kBAAoB,QACpBC,sBAAmBnpC,OAEnB6gC,gBAAkB,IAAIh+B,gBACtBumC,gBAAkB,IAAIpI,gBAAgBplC,WACtCytC,cAAgB,IAAInF,cAActoC,WAClC0tC,SAAW,GAEhB9lC,QAAMmC,SAAS,wBAAyB/J,WAEnCijC,kBAEAwK,cAAcE,oBAEf3tC,KAAKw7B,QAAQnG,SAAU,OAAOr1B,KAAKq1B,SAASr1B,KAAKw7B,QAAQnG,yDAGjE,kBACWr1B,KAAKmK,YAAY5I,uBAG5B,kBACWvB,KAAKqK,WAAWkD,2BAG3B,kBACWlG,OAAOgE,OAAOrL,KAAKqK,WAAWD,UAAUtJ,KAAI,SAAA8sC,cAASA,MAAM/mC,kDAGtE,2BAGoC,SAA5BgnC,0BAA6BptC,QAAIqtC,kEAAa,MACxCrtC,GAAI,OAAOqtC,cAGbrtC,GAAGm3B,WAAamW,KAAKrO,cAAgBj/B,GAAGutC,YAAYhtC,4BAAqBc,MAAK+E,KAAO,OAAOinC,eAE5FG,mBAAqBxtC,GAAGm3B,WAAamW,KAAKxO,aAAe,EAAI,SAE1DsO,0BAA0BptC,GAAGs9B,YAAa+P,WAAaG,qBAG9DJ,CAA0B7tC,KAAKS,GAAGs9B,aAAe,GACjDtW,QAAQ2b,iLAAkLpjC,KAAKS,8BAIvM,gCACSuC,eAEDvC,WAAMytC,gBAAgBjL,WAAWxiC,GAAImI,oBAErCnI,WAAMmH,QAAMW,aAAa,IAAI0kC,UAAUxsC,GAAImI,OAAKskC,mCAIxD,SAAI3rC,aAEOA,KACFI,MAAM,KACNukC,QAAO,SAACiI,MAAOC,qBAA6B,IAAVD,MAAwBA,MAAQA,MAAMC,WAAUpuC,KAAKuN,qDAGhG,SAAgChM,UACxBo6B,OAAS37B,KAAKsN,gBAAgB/L,aAE5Bo6B,OAECA,OAAO/0B,QAAQzE,MAFDnC,KAAKoN,IAAI7L,0EAKlC,SAAqDiiB,yBAIjDnc,OAAOiD,QAAQkZ,QAAQ2R,SAAS9qB,YAAYjD,SAAQ,gDAAErB,aAAK5D,eAE3C,SAAR4D,IACAsB,OAAOiD,QAAQnI,OAAS,IAAIiF,SAAQ,kDAAEm0B,iBAAS8S,mBAC3CrjC,OAAKX,WAAWkD,KAAKguB,SAAW8S,UAE5B7qB,QAAQ8qB,4BAA4B/S,UAIxCl0B,OAAOiD,QAAQU,OAAK0iC,UAAUtmC,SAAQ,kDAAErB,aAAK2nC,kBACrCa,iBAAmBxoC,IAAIpE,MAAM,KAC7B6sC,iBAAmBD,iBAAiBtd,QACpCwd,mBAAqBF,iBAAiB3oC,KAAK,QAE3C4oC,kBAAoBjT,QAAS,KAGzBmT,uBAA4BD,mBAC1BE,SAAQN,UAAWI,oBACnBJ,UAENX,SAAStmC,SAAQ,SAAAwnC,gBAAWA,QAAQF,kCAMhD1jC,OAAKX,WAAWtE,KAAO5D,SAK/BqhB,QAAQ2R,SAAS9qB,WAAahD,OAAO+a,OAAO,GAAIpiB,KAAKqK,iCAGzD,SAAM9I,KAAM2B,UACHlD,KAAK0tC,SAASnsC,QAAOvB,KAAK0tC,SAASnsC,MAAQ,SAE3CmsC,SAASnsC,MAAM4F,KAAKjE,6BAG7B,SAAI3B,KAAMY,WAAOuiB,8DAAe1e,oEACxB0e,WACKzb,UACD,IAAI86B,SAAoBxiC,KAAMY,MAAOnC,KAAKS,GAAIuF,mBAG7CiD,UACD,IAAIuxB,WAAa,OAAQ,CAACj5B,KAAMY,OAAQnC,KAAKS,GAAIuF,kCAK7D,SAAKzE,KAAMY,WAAOuiB,8DACVA,WACKzb,UAAU,IAAI86B,SAAoBxiC,KAAMY,MAAOnC,KAAKS,UAEpDwI,UAAU,IAAI+6B,WAAYziC,KAAMY,MAAOnC,KAAKS,yBAIzD,SAAK2B,kDAAWC,0DAAAA,sCACL,IAAIwhB,SAAQ,SAACgD,QAASM,YACrBwU,OAAS,IAAInB,WAAap4B,OAAQC,OAAQwsC,OAAKpuC,IAEnDouC,OAAK5lC,UAAU0yB,QAEfA,OAAOmT,WAAU,SAAAnoC,cAASkgB,QAAQlgB,UAClCg1B,OAAOoT,UAAS,SAAApoC,cAASwgB,OAAOxgB,+BAIxC,SAAGnD,MAAON,eACD+hC,gBAAgBx9B,SAASjE,MAAON,mCAGzC,SAAUy4B,WACFA,kBAAkBoI,cACbz2B,gBAAgBquB,OAAOp6B,MAAQo6B,eAMpC37B,KAAKwtC,gBAAgBwB,kBAAkBrT,SACvC37B,KAAKwtC,gBAAgByB,sCAAsCtT,QAC7D,KACQnY,QAAUxjB,KAAKwtC,gBAAgBjI,2BACjC5J,oBAGCuT,eAAe1rB,mBAEfgqB,gBAAgB2B,uBAKpB/T,YAAYj0B,KAAKw0B,QAStBj8B,SAASM,KAAKovC,YAAa,GAAGhvC,MAAMJ,WAG/BwtC,gBAAgB2B,8CAGzB,+BACQnvC,KAAKutC,kBAETlmC,OAAOiD,QAAQtK,KAAKsN,iBAAiBlG,SAAQ,+DAAau0B,gBACtD0T,OAAKjU,YAAYkU,QAAQ3T,gBAExBruB,gBAAkB,QAElBigC,iBAAmB,IAAI1R,WAAQ77B,KAAMA,KAAKo7B,iBAE3CmU,YAAc,WACdF,OAAKnC,WAAWqC,YAAYF,OAAK9B,kBAEjC3lC,QAAMmC,SAAS,eAAgBslC,OAAK9B,iBAAkB8B,QAEtDA,OAAKjU,YAAc,IAGnBl3B,OAAOsrC,wBACPtrC,OAAOsrC,wBAAwBroC,KAAKooC,aAEpCA,gDAIR,WACI3nC,QAAMmC,SAAS,iBAAkB/J,KAAKutC,iBAAkBvtC,WAEnDutC,iBAAiBpmB,cAEjBomB,iBAAmB,mCAG5B,SAAe/pB,QAAS5c,SACpB4c,QAAQisB,cAAc7oC,SAElB4c,mBAAmBksB,kBAElBR,eAAe1rB,SAIhBxjB,KAAKo7B,YAAY51B,OAAS,QACrB4pC,cAGT9rC,SAAS,kDAGb,SAAekgB,yBACP2R,SAAW3R,QAAQ2R,cAElBwa,qDAAqDnsB,SAE1D5b,QAAMmC,SAAS,mBAAoByZ,QAASxjB,MAExCm1B,SAASqG,QAAQ/gB,WAEZ0yB,cAAgBhY,SAASqG,QAAQ/gB,UAEjCm1B,YAAYza,SAASqG,QAAQ/gB,KAAK8Z,cAIlCqb,YAAY5vC,KAAKmtC,eAGtBhY,SAASqG,QAAQC,YACZoU,2CACD1a,SAASqG,QAAQC,OAInBjY,QAAQssB,iBACLvC,kBAAoBvtC,KAAKutC,iBAAiB1mB,eAE1C0mB,iBAAmB,KAEpBpY,SAASqG,QAAQuU,OAAS5a,SAASqG,QAAQuU,MAAMvqC,OAAS,GAC1D2vB,SAASqG,QAAQuU,MAAM3oC,SAAQ,SAAA5D,wDAC3BwsC,OAAK/K,iBAAgBv9B,kCAAKlE,MAAMA,iCAAUA,MAAMnB,UAE5CmB,MAAMysC,SACNroC,QAAMyB,eAANzB,SAAeooC,OAAKnpC,GAAIrD,MAAMA,iCAAUA,MAAMnB,UACvCmB,MAAM02B,GACbtyB,QAAM2B,aAAN3B,SAAapE,MAAM02B,GAAI12B,MAAMA,iCAAUA,MAAMnB,UACtCmB,MAAM0sC,cACbtoC,QAAMuB,aAANvB,SAAaooC,OAAKvvC,GAAI+C,MAAMA,iCAAUA,MAAMnB,UAE5CuF,QAAMmB,WAANnB,SAAWpE,MAAMA,iCAAUA,MAAMnB,aAMzC8yB,SAASqG,QAAQ2U,YACjBhb,SAASqG,QAAQ2U,WAAW3qC,OAAS,GAErC2vB,SAASqG,QAAQ2U,WAAW/oC,SAAQ,SAAA5D,WAC1B+J,KAAO/J,MAAM+J,KAAO/J,MAAM+J,KAAO,GACjCgf,EAAI,IAAIqX,YAAYpgC,MAAMA,MAAO,CACnC6gC,SAAS,EACTR,OAAQt2B,OAEZyiC,OAAKvvC,GAAGmD,cAAc2oB,OAKlC3kB,QAAMmC,SAAS,oBAAqByZ,QAASxjB,MAGzCm1B,SAASqG,QAAQnG,UACjB90B,YAAW,kBAAMyvC,OAAK3a,SAASF,SAASqG,QAAQnG,qCAMxD,SAASvB,KACD5vB,OAAOksC,YAAclsC,OAAOksC,WAAWC,UACvCnsC,OAAOksC,WAAWE,MAAMxc,KAExB5vB,OAAO+f,SAASsS,KAAOzC,8DAI/B,SAA2Cyc,kCAClCvtC,MAAK,SAAAvC,QACFE,WAAaH,eAAeC,QAC5BE,WAAWi5B,QAAQ,cAEjBvsB,WAAa1M,WAAWyM,IAAI,SAASjL,OAErB,UAAf1B,GAAG28B,WAA0B38B,GAAGiN,WAAa21B,IAAIx2B,SAASpM,KAAS8vC,YAAYvvC,SAASqM,cAE/Fg2B,IAAIt1B,uBAAuBtN,GAAI+vC,6CAIvC,SAAkB7U,YACV37B,KAAKwtC,gBAAgBwB,kBAAkBrT,aAIrCnY,QAAU,IAAIksB,WAAgB1vC,KAAM27B,aAErC6R,gBAAgBiD,WAAWjtB,cAE3B0pB,WAAWqC,YAAY/rB,qCAGhC,SAAYktB,0BACHC,aAAe,CAAEC,QAAS,GAAIC,MAAO,GAAIC,QAAS,IAEvD9N,SAAShjC,KAAKS,GAAIiwC,IAAK,CACnBlQ,cAAc,EAEdR,WAAY,SAAA78B,aAEDA,KAAKuJ,yBACNvJ,KAAKlB,yBAEPkB,KAAKuJ,wBACCvJ,KAAKlB,wBACLkB,KAAK0D,IAGnBo5B,kBAAmB,SAAA98B,QAInBk9B,sBAAuB,SAAAl9B,SAGfA,KAAK4tC,iBACL5vC,MAAMC,KAAK+B,KAAK+zB,YAAYtV,MAAK,SAAAsa,YAC7B,eAAelqB,KAAKkqB,KAAK36B,gBAGtB,GAIf++B,gBAAiB,SAAAn9B,MACbyE,QAAMmC,SAAS,kBAAmB5G,KAAM6tC,QAEpC7tC,KAAKynC,YACLhjC,QAAMiB,gBAAgB1F,KAAKynC,YAG/BoG,OAAKL,aAAaG,QAAQ3pC,KAAKhE,OAGnCo9B,0BAA2B,SAAAp9B,QAI3Bg9B,kBAAmB,SAAC/+B,KAAM84B,OAIlB94B,KAAK8gC,YAAYhI,WACV,EAGXtyB,QAAMmC,SAAS,mBAAoB3I,KAAM84B,GAAI8W,QAMzC5vC,KAAKsL,aAAa,eACa,WAA/BtL,KAAKmJ,QAAQyC,gBAEbktB,GAAGmD,eAAiB,OAGpB4T,eAAiBzwC,eAAeY,SAIhC6vC,eAAehwC,IAAI,YACQ,IAA3BG,KAAK8vC,oBAC2B,IAAhC9vC,KAAK+vC,uBACP,MAEOF,eAAehwC,IAAI,WAChBgwC,eACK7jC,IAAI,UACJxL,UAAUZ,SAAS,UACI,IAAhCI,KAAK+vC,+BAKE,EAFP/vC,KAAKigC,sCAAuC,KAOhDgC,IAAI52B,kBAAkBrL,OAASA,KAAKa,aAAa,aAAe+uC,OAAKnqC,GAAI,OAAO,EAKhFw8B,IAAI52B,kBAAkBrL,QAAO84B,GAAG0Q,WAAaoG,QAEjD3E,4BAA4BjrC,KAAM84B,KAGtCkG,YAAa,SAAAj9B,MACT6tC,OAAKL,aAAaC,QAAQzpC,KAAKhE,MAE/ByE,QAAMmC,SAAS,kBAAmB5G,KAAM6tC,SAG5C9Q,YAAa,SAAA/8B,SACkBkgC,IAAI/2B,YAAYnJ,MAAMlB,aAAa,aAEnC+uC,OAAKnqC,QACmB,IAA3CqnC,gBAAgBjL,WAAW9/B,KAAM6tC,eAC1B,OAEJ3N,IAAI52B,kBAAkBtJ,QAC7ByE,QAAMW,aAAa,IAAI0kC,UAAU9pC,KAAM6tC,OAAK9D,aAI5C/pC,KAAK69B,oBAAqB,GAG9BgQ,OAAKL,aAAaE,MAAM1pC,KAAKhE,SAIrCe,OAAOktC,UAAW,sBAGtB,SAAKluC,0BAAUmuC,6FAAwC,SAAA5wC,MACnDuC,KAAKhD,KAAKS,IAAI,SAAAA,QAENA,GAAGqhC,WAAWwP,OAAK7wC,WAMnBA,GAAGiM,aAAa,YAChB2kC,sCAAsC5wC,KAE/B,IAGU,IAAjByC,SAASzC,YAXTyC,SAASzC,wCAiBrB,SAAkByC,SAAUwgC,MAQnB1jC,KAAKuxC,yBAAwBvxC,KAAKuxC,uBAAyB,QAO5DzxC,QAJA0xC,iBAAmB,CAAEtuC,SAAU,0BAC9BquC,uBAAuBpqC,KAAKqqC,kBAK1B,SAAAjlB,GACHjsB,aAAaR,SAEbA,QAAUS,YAAW,WACjB2C,SAASqpB,GACTzsB,aAAUsE,EAIVotC,iBAAiBtuC,SAAW,eAC7BwgC,MAGH8N,iBAAiBtuC,SAAW,WACxB5C,aAAaR,SACboD,SAASqpB,2CAKrB,SAAuBrpB,UAOflD,KAAKuxC,6BACAA,uBAAuBnqC,SAAQ,SAAAoqC,kBAChCA,iBAAiBtuC,WACjBsuC,iBAAiBtuC,SAAW,gBAIpCA,iDAGJ,SAAuBuuC,uBACdnE,kBAAkBnmC,KAAKsqC,0CAGhC,gBACSnE,kBAAkBlmC,SAAQ,SAAAlE,iBAAYA,oCAG/C,SACI3B,KACAynC,UACAD,sEAAiB,aACjBE,qEAAgB,aAChBC,wEAAmB,kBAEduE,cAAc9D,OACfpoC,KACAynC,KACAD,eACAE,cACAC,gDAIR,SACI3nC,KACA6nC,WACAL,sEAAiB,aACjBE,qEAAgB,aAChBC,wEAAmB,kBAEduE,cAAciE,eACfnwC,KACA6nC,MACAL,eACAE,cACAC,8CAIR,SACI3nC,KACAunC,iBACAC,sEAAiB,aACjBE,qEAAgB,kBAEXwE,cAAckE,aACfpwC,KACAunC,YACAC,eACAE,kCAIR,cACQjpC,KAAK4xC,gBAAiB,OAAO5xC,KAAK4xC,oBAIlCjqC,UAAY3H,YAERA,KAAK4xC,gBAAkB,IAAIC,MAJtB,GAIoC,CAC7CzkC,aAAIkE,OAAQwgC,cACJ,CAAC,kBAAkB9wC,SAAS8wC,cAEf,aAAbA,gBACO/F,oBAAoBpkC,cAGd,eAAbmqC,SAA2B,OAAOnqC,aAGd,iBAAbmqC,UAAyBA,SAAStwC,MAAM,WAAY,OAAO,0CAAavB,kDAAAA,mCAC9D,aAAb6xC,SAAgClqC,QAAMyB,eAANzB,SAAeD,UAAUd,WAAO5G,OACnD,WAAb6xC,SAA8BlqC,QAAMuB,aAANvB,SAAaD,UAAUlH,WAAOR,OAEzD2H,QAAMkqC,gBAANlqC,QAAmB3H,UAI1B,CACI,MACA,MACA,OACA,OACA,KACA,SACA,iBACA,gBACFe,SAAS8wC,iBAGJ,0CAAa7xC,kDAAAA,oCACT0H,UAAUmqC,UAAU1xC,MAAMuH,UAAW1H,WAKhD8xC,UAAYpqC,UAAUyF,IAAI0kC,sBAGZ1tC,IAAd2tC,UACO,0CAAa9xC,kDAAAA,oCACT0H,UAAUD,KAAKtH,MAAMuH,WACxBmqC,iBACG7xC,QAKR8xC,YAGXn/B,IAAK,SAAU0d,IAAK5qB,KAAMvD,cACtBwF,UAAUiL,IAAIlN,KAAMvD,QAEb,sBC1rBR,uBACXyF,QAAMkC,aAAa,oCAAoC,SAAC/I,UAAWN,GAAIkH,cAC/B,UAA7BlH,GAAG8J,QAAQhG,eAAyC,SAAZ9D,GAAGI,UAG9CmxC,OAAS,kBAAMvxC,GAAGmD,cAAc,IAAIggC,YAAY,yBAA0B,CAAES,SAAS,MACrFp0B,MAAQ,kBAAMxP,GAAGmD,cAAc,IAAIggC,YAAY,wBAAyB,CAAES,SAAS,MACnFuF,SAAW,SAACqI,mBACRC,iBAAmB9rC,KAAKyjC,MAA+B,IAAvBoI,cAAcnI,OAAgBmI,cAAclI,OAEhFtpC,GAAGmD,cACC,IAAIggC,YAAY,2BAA4B,CACxCS,SAAS,EAAMR,OAAQ,CAAE+F,SAAUsI,sBAK3CC,aAAe,SAAA5lB,GACe,IAA1BA,EAAE7nB,OAAO0kC,MAAM5jC,SAdL/E,GAAGmD,cAAc,IAAIggC,YAAY,wBAAyB,CAAES,SAAS,KAkB/E9X,EAAE7nB,OAAOgJ,SACT/F,UAAU+pC,eAAe3wC,UAAUoB,MAAOoqB,EAAE7nB,OAAO0kC,MAAO4I,OAAQ/hC,MAAO25B,UAEzEjiC,UAAUgiC,OAAO5oC,UAAUoB,MAAOoqB,EAAE7nB,OAAO0kC,MAAM,GAAI4I,OAAQ/hC,MAAO25B,YAI5EnpC,GAAGklB,iBAAiB,SAAUwsB,kBAK1BC,oBAAsB,WAAQ3xC,GAAG0B,MAAQ,MAC7C1B,GAAGklB,iBAAiB,QAASysB,qBAE7BzqC,UAAUoyB,wBAAuB,WAC7Bt5B,GAAGq2B,oBAAoB,SAAUqb,cACjC1xC,GAAGq2B,oBAAoB,QAASsb,4BCvC7B,uBACXxqC,QAAMkC,aAAa,yBAAyB,SAAAnC,WACpCxG,MAAMsD,QAAQkD,UAAUT,YACxBS,UAAUT,UAAUE,SAAQ,SAAA5D,UACpBA,MAAMgsB,WAAW,QAAS,IACN,oBAATqJ,iBACPpR,QAAQ2b,KAAK,oCAIbiP,YAAc7uC,MAAM7B,MAAM,qBAER,SAAlB0wC,YAAY,IACZA,YAAYvL,OAAO,EAAG,EAAG,eAAW1iC,GAGlB,gBAAlBiuC,YAAY,IACZA,YAAYlrC,UAAK/C,OAAWA,mCAW5BiuC,mDALAC,iDAEA3tB,4CAEA4tB,2BAGA,CAAC,UAAW,UAAW,oBAAoBvxC,SAASsxC,cACpDzZ,KAAKyZ,cAAc3tB,SAAS6tB,OAAOD,YAAY,SAAAhmB,GAC3C3kB,QAAMmB,KAAKvF,MAAO+oB,MAEC,YAAhB+lB,aACH,CAAC,OAAQ,UAAW,WAAWtxC,SAASuxC,YACxC1Z,KAAKjzB,KAAK+e,SAAS4tB,aAAY,SAAAhmB,GAC3B3kB,QAAMmB,KAAKvF,MAAO+oB,MAGtBsM,KAAKjzB,KAAK+e,SAAS6tB,OAAOD,YAAY,SAAAhmB,GAClC3kB,QAAMmB,KAAKvF,MAAO+oB,MAGH,gBAAhB+lB,aACPzZ,KAAK4Z,QAAQ9tB,SAAS+tB,cAAa,SAAAA,cAC/B9qC,QAAMmB,KAAKvF,MAAOkvC,iBAGtBjrB,QAAQ2b,KAAK,8CC/CtB,uBACXx7B,QAAMkC,aAAa,yBAAyB,SAAAnC,WACxCA,UAAUgrC,SAAW,MAGzB/qC,QAAMkC,aAAa,uBAAuB,SAACrJ,GAAIkH,WACvCnH,eAAeC,IAAIm5B,QAAQ,UAE/BjyB,UAAUgrC,SAASxrC,KAAK1G,OAG5BmH,QAAMkC,aACF,oCACA,SAAC/I,UAAWN,GAAIkH,eACRmqC,SAAW/wC,UAAUoB,MAEzB1B,GAAGklB,iBAAiB,SAAS,WACzBhe,UAAUgrC,SAASvrC,SAAQ,SAAAwrC,aACnBjyC,WAAaH,eAAeoyC,UAE3BjyC,WAAWM,IAAI,UACZN,WAAWyM,IAAI,SAASjL,QACpB2vC,UACPnxC,WAAWM,IAAI,WACZN,WACKyM,IAAI,UACJjL,MAAMR,MAAM,KACZb,KAAI,SAAA22B,UAAKA,EAAElD,UACXvzB,SAAS8wC,YAIlBe,cAAcD,QAFAvP,IAAIn2B,eAAezM,GAAIkH,YAAcA,UAAUyF,IAAI0kC,oBASrFlqC,QAAMkC,aAAa,oBAAoB,SAAC0Z,QAAS7b,WAC7CA,UAAUgrC,SAASvrC,SAAQ,SAAAoZ,SACnBA,QAAQsyB,2BACRtyB,QAAQsyB,kCACDtyB,QAAQsyB,gCAK3BlrC,QAAMkC,aAAa,mBAAmB,SAACrJ,GAAIkH,WACvCA,UAAUgrC,SAASvrC,SAAQ,SAACoZ,QAASrL,OAC7BqL,QAAQshB,WAAWrhC,KACnBkH,UAAUgrC,SAAS7L,OAAO3xB,MAAO,SAMjD,SAAS09B,cAAcpyC,GAAIsyC,aACjBhyC,UAAYP,eAAeC,IAAI2M,IAAI,YAErCrM,UAAUa,UAAUZ,SAAS,SAAU,kCACjCsmC,QAAUvmC,UAAUoB,MAAMR,MAAM,QAClCZ,UAAUa,UAAUZ,SAAS,YAAc+xC,uBAC3CtyC,GAAG+mC,WAAUC,2CAAOH,UACpB7mC,GAAGqyC,yBAA2B,oDAAMryC,GAAG+mC,WAAUE,+CAAUJ,+BAE3D7mC,GAAG+mC,WAAUE,+CAAUJ,UACvB7mC,GAAGqyC,yBAA2B,oDAAMryC,GAAG+mC,WAAUC,4CAAOH,gBAErDvmC,UAAUa,UAAUZ,SAAS,QAChCD,UAAUa,UAAUZ,SAAS,YAAc+xC,SAC3CtyC,GAAGmM,aAAa7L,UAAUoB,OAAO,GACjC1B,GAAGqyC,yBAA2B,kBAC1BryC,GAAGkM,gBAAgB5L,UAAUoB,UAEjC1B,GAAGkM,gBAAgB5L,UAAUoB,OAC7B1B,GAAGqyC,yBAA2B,kBAC1BryC,GAAGmM,aAAa7L,UAAUoB,OAAO,KAEhC3B,eAAeC,IAAI2M,IAAI,WAChC3M,GAAG8Z,MAAMC,QAAUu4B,QAAU,eAAiB,OAC9CtyC,GAAGqyC,yBAA2B,kBACzBryC,GAAG8Z,MAAMC,QAAUu4B,QAAU,OAAS,iBCnFnD,IAAIC,0BAA4B,GAEjB,wBACXprC,QAAMkC,aAAa,uBAAuB,SAACrJ,GAAIkH,WAC1BnH,eAAeC,IAEjBm5B,QAAQ,WAKvBn5B,GAAGklB,iBAAiB,UAAU,WAC1BqtB,0BAA0BrrC,UAAUd,IAAM,GAE1Cc,UAAU3E,MAAK,SAAAG,SACL1C,GAAGwyC,SAAS9vC,aAEdA,KAAKuJ,aAAa,qBAIc,WAA/BvJ,KAAKoH,QAAQhG,eACI,WAAdpB,KAAKtC,MAEsB,WAA/BsC,KAAKoH,QAAQhG,eAEmB,UAA/BpB,KAAKoH,QAAQhG,gBACK,aAAdpB,KAAKtC,MAAqC,UAAdsC,KAAKtC,OAEjCsC,KAAK+vC,UACNF,0BAA0BrrC,UAAUd,IAAIM,MACpC,kBAAOhE,KAAK+vC,UAAW,KAG/B/vC,KAAK+vC,UAAW,GAGe,UAA/B/vC,KAAKoH,QAAQhG,eAEkB,aAA/BpB,KAAKoH,QAAQhG,gBAERpB,KAAKgwC,UACNH,0BAA0BrrC,UAAUd,IAAIM,MACpC,kBAAOhE,KAAKgwC,UAAW,KAG/BhwC,KAAKgwC,UAAW,aAMhCvrC,QAAMkC,aAAa,kBAAkB,SAAC0Z,QAAS7b,kBAAcyrC,QAAQzrC,cACrEC,QAAMkC,aAAa,oBAAoB,SAAC0Z,QAAS7b,kBAAcyrC,QAAQzrC,cAG3E,SAASyrC,QAAQzrC,cACRqrC,0BAA0BrrC,UAAUd,SAElCmsC,0BAA0BrrC,UAAUd,IAAIrB,OAAS,GACpDwtC,0BAA0BrrC,UAAUd,IAAIoqB,OAAxC+hB,GC7DO,yBACXprC,QAAMkC,aAAa,oBAAoB,SAAC0Z,QAAS7b,eACzCwtB,SAAW3R,QAAQ2R,YAEjBA,SAASqG,QAAQ6X,cAGnBC,UAAYpvC,OAAOqvC,WAAarvC,OAAOsvC,IAEvC1f,IAAMwf,UAAUG,gBAChBC,aAAave,SAASqG,QAAQ6X,SAASpvC,QAASkxB,SAASqG,QAAQ6X,SAASM,cAG1EC,cAAgBnwC,SAAS4M,cAAc,KAE3CujC,cAAcr5B,MAAMC,QAAU,OAC9Bo5B,cAAcrd,KAAOzC,IACrB8f,cAAcP,SAAWle,SAASqG,QAAQ6X,SAAS9xC,KAEnDkC,SAAS8tB,KAAK7W,YAAYk5B,eAE1BA,cAAcC,QAEdtzC,YAAW,WACP+yC,UAAUQ,gBAAgBhgB,OAC3B,OAIX,SAAS4f,aAAaK,aAASJ,mEAAc,GAAIK,iEAAY,IACnDC,eAAiBC,KAAKH,SACtBI,WAAa,GAEC,OAAhBR,cAAsBA,YAAc,QAEnC,IAAIS,OAAS,EAAGA,OAASH,eAAezuC,OAAQ4uC,QAAUJ,UAAW,SAClEruC,MAAQsuC,eAAetuC,MAAMyuC,OAAQA,OAASJ,WAE9CK,YAAc,IAAIlzC,MAAMwE,MAAMH,QAEzBiG,EAAI,EAAGA,EAAI9F,MAAMH,OAAQiG,IAC9B4oC,YAAY5oC,GAAK9F,MAAM8J,WAAWhE,OAGlC6oC,UAAY,IAAIjiB,WAAWgiB,aAE/BF,WAAWhtC,KAAKmtC,kBAGb,IAAIpkB,KAAKikB,WAAY,CAAEtzC,KAAM8yC,cChDxC,IAAIY,WAAa,GAEF,yBACX3sC,QAAMkC,aAAa,uBAAuB,SAAArJ,IAClCD,eAAeC,IAAIm5B,QAAQ,YAE/B2a,WAAWptC,KAAK1G,OAGpByD,OAAOyhB,iBAAiB,WAAW,WAC/B/d,QAAMI,mBAAoB,EAE1BusC,WAAWntC,SAAQ,SAAA3G,IACf+zC,cAAc/zC,IAAI,SAI1ByD,OAAOyhB,iBAAiB,UAAU,WAC9B/d,QAAMI,mBAAoB,EAE1BusC,WAAWntC,SAAQ,SAAA3G,IACf+zC,cAAc/zC,IAAI,SAI1BmH,QAAMkC,aAAa,mBAAmB,SAAArJ,IAClC8zC,WAAaA,WAAWjzC,QAAO,SAAAb,WAAQA,GAAGqhC,WAAWrhC,UAI7D,SAAS+zC,cAAc/zC,GAAIg0C,eACnB9zC,WAAaH,eAAeC,IAC5BM,UAAYJ,WAAWyM,IAAI,cAE3BrM,UAAUa,UAAUZ,SAAS,SAAU,kCACjCsmC,QAAUvmC,UAAUoB,MAAMR,MAAM,QAClCZ,UAAUa,UAAUZ,SAAS,YAAcyzC,yBAC3Ch0C,GAAG+mC,WAAUC,2CAAOH,8BAEpB7mC,GAAG+mC,WAAUE,+CAAUJ,eAEpBvmC,UAAUa,UAAUZ,SAAS,QAChCD,UAAUa,UAAUZ,SAAS,YAAcyzC,UAC3Ch0C,GAAGmM,aAAa7L,UAAUoB,OAAO,GAEjC1B,GAAGkM,gBAAgB5L,UAAUoB,OAExBxB,WAAWyM,IAAI,WACxB3M,GAAG8Z,MAAMC,QAAUi6B,UAAY,eAAiB,QChDzC,kCAEPC,iBAAkB,EAElBC,yCAA2C,IAAIxM,aAsE1CyM,kBAAkBzf,SAAUxtB,WAGjCwtB,SAASqG,QAAQC,MAAQp0B,OAAOC,KAAK6tB,SAAS9qB,WAAWkD,MAIzD4nB,SAASqG,QAAQ/gB,KAAO9S,UAAUwlC,uBAG7B0H,gCAAgC/gB,QAC/BA,SAEFghB,YAAc,IAAItB,IAAI1f,KAEtBihB,YAAcD,YAAYve,KAAK70B,QAAQozC,YAAYE,OAAQ,IAAItzC,QAAQ,MAAO,WAE3EwC,OAAO+f,SAAS+wB,OAASD,YAAc7wC,OAAO+f,SAASgxB,MArFlEC,qBAAqBC,aAErBvtC,QAAMkC,aAAa,yBAAyB,SAAAnC,WAClCA,UAAU6zB,QAAQ72B,MAKxBpE,YAAW,eACHuzB,IAAM+gB,gCAAgCH,qBAAkBtwC,EAAYuD,UAAU6zB,QAAQ72B,MAGtFwwB,SAAW,CACX9qB,WAAY1C,UAAU0C,WACtBmxB,QAAS7zB,UAAU6zB,SAGvBoZ,kBAAkBzf,SAAUxtB,WAE5ButC,qBAAqBE,aAAathB,IAAKqB,SAAUxtB,WAEjDgtC,yCAAyClN,IAAI9/B,UAAUd,IAEvD6tC,iBAAkB,QAI1B9sC,QAAMkC,aAAa,qBAAqB,SAAC0Z,QAAS7b,eAE1C6b,QAAQssB,eAEN3a,SAAa3R,QAAb2R,SAEFqG,QAAUrG,SAASqG,SAAW,MAElCoZ,kBAAkBzf,SAAUxtB,WAExB,SAAU6zB,SAAWA,QAAQ72B,OAAST,OAAO+f,SAASsS,KAAM,KACxDzC,IAAM+gB,gCAAgCrZ,QAAQ72B,MAElDuwC,qBAAqBG,UAAUvhB,IAAKqB,SAAUxtB,WAE9CgtC,yCAAyClN,IAAI9/B,UAAUd,SAMnD8tC,yCAAyC1zC,IAAI0G,UAAUd,KACvDquC,qBAAqBE,aAAalxC,OAAO+f,SAASsS,KAAMpB,SAAUxtB,eAK9EzD,OAAOyhB,iBAAiB,YAAY,SAAAniB,OAC5B0xC,qBAAqBI,aAAa9xC,QAEtC0xC,qBAAqBK,gBAAgB/xC,OAAO,SAAC2xB,SAAUxtB,eAC/C6b,QAAU,IAAIqY,WAAQl0B,UAAW,IAErC6b,QAAQisB,cAActa,UAEtB3R,QAAQssB,WAAY,EAEpBnoC,UAAUunC,eAAe1rB,eAwBjC5b,QAAMkC,aAAa,oBAAoB,SAAC1I,KAAM84B,GAAIvyB,WAI1CvG,KAAKa,aAAa,aAAe0F,UAAUd,KAC3Cc,UAAU6tC,eAAiB7tC,UAAUd,OAI7Ce,QAAMkC,aAAa,mBAAmB,SAAC3G,KAAMwE,WAErCA,UAAU6tC,iBAENryC,KAAKlB,aAAa,aAAe0F,UAAU6tC,gBAE3C5tC,QAAMoC,kBAAkBrC,UAAWxE,KAAKlB,aAAa,mBAIlD0F,UAAU6tC,mBAS7B,IAAIN,qBAAuB,CACvBE,sBAAathB,IAAKqB,SAAUxtB,gBACnB8tC,YAAY,eAAgB3hB,IAAKqB,SAAUxtB,YAGpD0tC,mBAAUvhB,IAAKqB,SAAUxtB,gBAChB8tC,YAAY,YAAa3hB,IAAKqB,SAAUxtB,YAGjD8tC,qBAAYrzC,OAAQ0xB,IAAKqB,SAAUxtB,eAC3BqL,MAAQhT,KAAK01C,eAEjB1iC,MAAMy8B,cAActa,SAAUxtB,eAObrD,QALbqxC,WAAa3iC,MAAM4iC,eAGnBC,gBAAkBxuC,OAAO+a,OAAO0zB,QAAQ9iC,OAAS,GAAI,CAAE+iC,SAAUJ,aAIrE/tC,QAAMmC,SAAS,WAFEzF,QAEkBlC,QAFCsN,OAAO,GAAG1C,cAAgB1I,QAAQqB,MAAM,IAEhCkwC,gBAAiB/hB,IAAKnsB,eAGxC,aAAlBquC,UAAUliB,OACVA,IAAMkiB,UAAUliB,KAAKmiB,WAAW,IAAK,KAAKA,WAAW,KAAM,QAG/DH,QAAQ1zC,QAAQyzC,gBAAiB,GAAI/hB,KACvC,MAAO7jB,UAIc,2BAAfA,MAAM1O,KAAmC,KACrCwE,IAAM/F,KAAKk2C,eAAeP,YAE9BE,gBAAgBE,SAAWhwC,IAE3B+vC,QAAQ1zC,QAAQyzC,gBAAiB,GAAI/hB,QAKjDyhB,yBAAgB/xC,MAAON,UACbM,MAAMwP,MAAM+iC,WAE0B,iBAAzBvyC,MAAMwP,MAAM+iC,SACzB,IAAII,cAAcn2C,KAAKo2C,eAAe5yC,MAAMwP,MAAM+iC,WAClD,IAAII,cAAc3yC,MAAMwP,MAAM+iC,WAE9BR,gBAAgBryC,WAG1BwyC,+BACUI,QAAQ9iC,OACR8iC,QAAQ9iC,MAAM+iC,SAE0B,iBAA3BD,QAAQ9iC,MAAM+iC,SAC3B,IAAII,cAAcn2C,KAAKo2C,eAAeN,QAAQ9iC,MAAM+iC,WACpD,IAAII,cAAcL,QAAQ9iC,MAAM+iC,UALV,IAAII,eAUpCb,sBAAa9xC,eACCA,MAAMwP,OAASxP,MAAMwP,MAAM+iC,WAGzCZ,sBAEQjxC,OAAO4xC,QAAQ9iC,QAAO9O,OAAO4xC,QAAQ9iC,MAAM+iC,UAAY,IAAII,eAAeP,iBAGlFM,wBAAe/zC,WACP4D,IAAM,aAAa,IAAIquB,MAAMC,UAE7BgiB,iBAAmBvvC,KAAKC,UAAU5E,mBAEjCm0C,oBAAoBvwC,IAAKswC,kBAEvBtwC,KAGXuwC,6BAAoBvwC,IAAK5D,WAMjBo0C,eAAeC,QAAQzwC,IAAK5D,OAC9B,MAAO8N,WAEC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAIjP,SAASiP,MAAMwmC,MAAO,WAE5EC,gBAAkBrvC,OAAOC,KAAKivC,gBAC7Bz1C,KAAI,SAAAiF,YAAOpD,OAAOoD,IAAIrE,QAAQ,YAAa,QAC3Ci1C,OACA1lB,YAECylB,gBAAiB,OAEvBH,eAAeK,WAAW,YAAYF,sBAEjCJ,oBAAoBvwC,IAAK5D,SAItCi0C,wBAAerwC,SACP+H,KAAOyoC,eAAeM,QAAQ9wC,QAE5B+H,YAEChH,KAAK2sB,MAAM3lB,QAIpBqoC,sDAEUR,kEAAa,4CAAW3kB,MAAQ2kB,wEAE5C,kBAAwB31C,KAAKgxB,2CAE7B,SAAsB7qB,UAAWgvB,SAAUxtB,0BACnCmvC,WAAa,CAAE3wC,UAAAA,UAAWgvB,SAAAA,UAG1B4hB,cAAgB/2C,KAAKgxB,MAAMlP,WAAU,SAAAhU,aAAQA,KAAK3H,YAAcA,iBAE7C,IAAnB4wC,cAAsB,OAAO/2C,KAAKgxB,MAAM+lB,eAAiBD,eAOzD5rC,gBAAkBtD,QAAM8C,mBAAmB/C,UAAUd,GAAI7G,KAAKg3C,uCAE5D9rC,gBAAiB,OAAOlL,KAAKgxB,MAAMse,QAAQwH,gBAE7CG,mBAAqBj3C,KAAKgxB,MAAMlP,WAAU,SAAAhU,SACZhM,MAAKo1C,eAAeppC,KAAK3H,WAAjDgxC,sBAEsBjsC,gBAAiB,OAAO,UAGnD8lB,MAAM8V,OAAOmQ,mBAAoB,EAAGH,yCAG7C,SAAc3hB,SAAUxtB,eAChBxB,UAAYnG,KAAKo3C,+BAA+BzvC,gBAE/C0vC,sBAAsBlxC,UAAWgvB,SAAUxtB,0CAGpD,SAAgBzE,+BACP8tB,MAAM5pB,SAAQ,mBAAGjB,eAAAA,UAAWgvB,cAAAA,SACzBxtB,UAAYiB,OAAK0uC,yBAAyBnxC,WAExCwB,WAENzE,SAASiyB,SAAUxtB,4DAU3B,SAA+BA,eACvB6B,cAAgB7B,UAAUwC,YAAY5I,KAEtCg2C,eADsB3vC,QAAMa,oBAAoBe,eACXiM,QAAQ9N,2BAEvCA,UAAUd,eAAM2C,0BAAiB+tC,wDAG/C,SAAyBpxC,qCACmBnG,KAAKk3C,eAAe/wC,WAAtDqD,oCAAAA,cAAe+tC,qCAAAA,eAEjBC,oBAAsB5vC,QAAMa,oBAAoBe,sBAI7CguC,oBAAoBD,iBAAmBC,oBAAoB,IAAM/vB,QAAQ2b,0DAAmD55B,8CAGvI,SAAerD,gDACgDA,UAAUxE,MAAM,cAEpE,CAAEw1C,yCAAqB3tC,mCAAe+tC,oFAGjD,kCACWv3C,KAAKgxB,MAAMlwB,KAAI,oBAAGqF,gBAAAA,iBACS6E,OAAKksC,eAAe/wC,WAA5CgxC,4CC/TH,yBACXvvC,QAAMkC,aAAa,oBAAoB,SAAC0Z,QAAS7b,eACzCwtB,SAAW3R,QAAQ2R,YAEjBA,SAASqG,QAAQic,cAInBpc,QAAU,OAEdlG,SAASqG,QAAQic,SAASrwC,SAAQ,mBAAGrB,SAAAA,IAAK0vB,WAAAA,MAAO50B,UAAAA,KAAM62C,cAAAA,SAC/CC,QAAUl0C,SAASO,yCAAkCyxB,aACrDmiB,MAAQn0C,SAASO,6CAAsCyxB,gBACrDkiB,SAAaC,QAEfC,iCAAiCF,QAASC,MAAO7xC,UAKjD+xC,KAAOC,eAAeL,UAE1Brc,QAAQl0B,MAAK,iBAAe,SAATtG,MAJRJ,GAI+Bq3C,KAJzBF,MAAMjuC,cAAcs4B,aAAaxhC,GAAIm3C,QADxC,SAAAn3C,WAAMk3C,QAAQhuC,cAAcs4B,aAAaxhC,GAAIk3C,QAAQt0C,oBAKjBm2B,CAAQse,MAJ/C,IAAAr3C,UAOR46B,QAAQ71B,OAAS,GAAG61B,QAAQpK,OAARoK,OAInC,SAASwc,iCAAiCF,QAASC,MAAO7xC,YAClC,SAAhBiyC,cAAgBv3C,QACZA,GAAGqhC,WAAW8V,cAEXn3C,GAAG02B,uCAAgCpxB,WAAWtF,GAAKu3C,cAAcv3C,GAAG4C,oBAGxE20C,CAAcL,SAGzB,SAASI,eAAet9B,aACbhX,SAAS46B,cAAcO,yBAAyBnkB,UCxBrDw9B,4EAEO/K,WAAa,IAAIrV,gBACjBvvB,WAAaV,aACbswC,iBAAkB,OAClBC,eAAiB,8DAG1B,kBACW9wC,OAAOgE,OAAOrL,KAAKsI,WAAWT,gBAAgB,GAAGmjC,0BAG5D,SAAK1hC,oBACMtJ,KAAKsI,WAAWT,eAAeyB,aAAa0hC,yBAGvD,kBACW3jC,OAAOgE,OAAOrL,KAAKsI,WAAWT,gBAAgB/G,KACjD,SAAA6G,kBAAaA,UAAUqjC,kCAI/B,SAAUzpC,KAAM2B,eACPoF,WAAWuB,kBAAkBtI,KAAM2B,8BAG5C,SAAK3B,KAAM2B,eACFoF,WAAWwB,aAAavI,KAAM2B,gCAGvC,SAAOA,eACEi1C,eAAiBj1C,gCAG1B,SAAQA,eACCoF,WAAWD,gBAAkBnF,6BAGtC,SAAKM,sDAAUnB,0DAAAA,sDACNiG,YAAWS,6BAAKvF,cAAUnB,+BAGnC,SAAOd,KAAMiC,wDAAUnB,gEAAAA,yDACdiG,YAAWiB,gCAAOhI,KAAMiC,cAAUnB,2BAG3C,SAAGmB,MAAON,eACDoF,WAAWQ,GAAGtF,MAAON,oCAG9B,SAAWiuB,cACF+b,WAAW/b,yCAAenxB,KAAKktC,WAAW/b,SAAYA,iCAG/D,SAASinB,qBACAF,gBAAkBE,sCAG3B,gBACSj1B,YACA/C,4BAGT,gBACS9X,WAAWK,0CAGpB,0BACI06B,IAAIz3B,qCAAqCxE,SAAQ,SAAA3G,IAC7CqB,MAAKwG,WAAWC,aAAa,IAAI0kC,UAAUxsC,GAAIqB,MAAKorC,qBAGnDiL,iBACL70C,SAAS,iBAETG,SAASkiB,iBACL,oBACA,WACI7jB,MAAKwG,WAAWP,uBAAyBtE,SAAS40C,UAEtD,QAGC/vC,WAAWR,yBAA0B,wBAG9C,2BAAO3E,4DAAO,KACVkgC,IAAIz3B,mCAAmCzI,MAAMiE,SAAQ,SAAA3G,QAC3C6I,YAAc9I,eAAeC,IAAI2M,IAAI,MAAMjL,MAE7CyG,OAAKN,WAAWI,aAAaY,cAEjCV,OAAKN,WAAWC,aAAa,IAAI0kC,UAAUxsC,GAAImI,OAAKskC,6CAI5D,SAAchqC,eACLoF,WAAWJ,0BAA4BhF,yBA0BpD,SAASo1C,iDAIDp4B,SAAW+W,QAAQniB,UAAUlI,aAE7B2rC,QAAU90C,SAAS4M,cAAc,OAErC4mB,QAAQniB,UAAUlI,aAAe,SAAyBrL,KAAMY,WACtDZ,KAAKP,SAAS,YACTkf,SAASxY,KAAK1H,KAAMuB,KAAMY,OAGrCo2C,QAAQxf,0BAAqBx3B,kBAASY,uBAElC+5B,KAAOqc,QAAQn1C,kBAAkBo1C,iBAAiBj3C,MAEtDg3C,QAAQn1C,kBAAkBq1C,oBAAoBvc,WAEzCwc,iBAAiBxc,cAzCzBh4B,OAAO+zC,WACR/zC,OAAO+zC,SAAWA,UAGtBK,6CAEAK,qBACAC,gBACAC,gBACAC,gBACAC,gBACAC,gBACAC,eACAC,cACAC,cACAC,cACAC,UAEA/1C,SAAS"}
          \ No newline at end of file
          diff --git a/public/vendor/livewire/manifest.json b/public/vendor/livewire/manifest.json
          new file mode 100644
          index 0000000..f15afeb
          --- /dev/null
          +++ b/public/vendor/livewire/manifest.json
          @@ -0,0 +1 @@
          +{"/livewire.js":"/livewire.js?id=de3fca26689cb5a39af4"}
          \ No newline at end of file
          diff --git a/public/web.config b/public/web.config
          new file mode 100644
          index 0000000..d3711d7
          --- /dev/null
          +++ b/public/web.config
          @@ -0,0 +1,28 @@
          +<!--
          +    Rewrites requires Microsoft URL Rewrite Module for IIS
          +    Download: https://www.microsoft.com/en-us/download/details.aspx?id=47337
          +    Debug Help: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules
          +-->
          +<configuration>
          +  <system.webServer>
          +    <rewrite>
          +      <rules>
          +        <rule name="Imported Rule 1" stopProcessing="true">
          +          <match url="^(.*)/$" ignoreCase="false" />
          +          <conditions>
          +            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          +          </conditions>
          +          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
          +        </rule>
          +        <rule name="Imported Rule 2" stopProcessing="true">
          +          <match url="^" ignoreCase="false" />
          +          <conditions>
          +            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          +            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          +          </conditions>
          +          <action type="Rewrite" url="index.php" />
          +        </rule>
          +      </rules>
          +    </rewrite>
          +  </system.webServer>
          +</configuration>
          diff --git a/resources/css/app.css b/resources/css/app.css
          new file mode 100644
          index 0000000..e69de29
          diff --git a/resources/css/credit_report.css b/resources/css/credit_report.css
          new file mode 100644
          index 0000000..a500667
          --- /dev/null
          +++ b/resources/css/credit_report.css
          @@ -0,0 +1,105 @@
          +.shape {
          +    border-style: solid;
          +    border-width: 0 70px 40px 0;
          +    float: right;
          +    height: 0px;
          +    width: 0px;
          +    -ms-transform: rotate(360deg); /* IE 9 */
          +    -o-transform: rotate(360deg); /* Opera 10.5 */
          +    -webkit-transform: rotate(360deg); /* Safari and Chrome */
          +    transform: rotate(360deg);
          +}
          +.listing {
          +    background: #fff;
          +    border: 1px solid #ddd;
          +    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
          +    margin: 15px 0;
          +    overflow: hidden;
          +}
          +.listing:hover {
          +    -webkit-transform: scale(1.1);
          +    -moz-transform: scale(1.1);
          +    -ms-transform: scale(1.1);
          +    -o-transform: scale(1.1);
          +    transform: rotate scale(1.1);
          +    -webkit-transition: all 0.4s ease-in-out;
          +    -moz-transition: all 0.4s ease-in-out;
          +    -o-transition: all 0.4s ease-in-out;
          +    transition: all 0.4s ease-in-out;
          +}
          +.shape {
          +    border-color: rgba(255,255,255,0) #d9534f rgba(255,255,255,0) rgba(255,255,255,0);
          +}
          +.listing-radius {
          +    border-radius: 7px;
          +}
          +.listing-danger {
          +    border-color: #d9534f;
          +}
          +.listing-danger .shape {
          +    border-color: transparent #d9533f transparent transparent;
          +}
          +.listing-success {
          +    border-color: #5cb85c;
          +}
          +.listing-success .shape {
          +    border-color: transparent #5cb75c transparent transparent;
          +}
          +.listing-default {
          +    border-color: #999999;
          +}
          +.listing-default .shape {
          +    border-color: transparent #999999 transparent transparent;
          +}
          +.listing-primary {
          +    border-color: #428bca;
          +}
          +.listing-primary .shape {
          +    border-color: transparent #318bca transparent transparent;
          +}
          +.listing-info {
          +    border-color: #5bc0de;
          +}
          +.listing-info .shape {
          +    border-color: transparent #5bc0de transparent transparent;
          +}
          +.listing-warning {
          +    border-color: #f0ad4e;
          +}
          +.listing-warning .shape {
          +    border-color: transparent #f0ad4e transparent transparent;
          +}
          +.shape-text {
          +    color: #fff;
          +    font-size: 12px;
          +    font-weight: bold;
          +    position: relative;
          +    right: -40px;
          +    top: 2px;
          +    white-space: nowrap;
          +    -ms-transform: rotate(30deg); /* IE 9 */
          +    -o-transform: rotate(360deg); /* Opera 10.5 */
          +    -webkit-transform: rotate(30deg); /* Safari and Chrome */
          +    transform: rotate(30deg);
          +}
          +.listing-content {
          +    padding: 20px;
          +    height: 100px;
          +    cursor: pointer;
          +}
          +
          +.text-primary{
          +    color: #318bca;
          +}
          +
          +.text-success{
          +    color: #5cb75c;
          +}
          +
          +.text-danger{
          +    color: #d9533f;
          +}
          +
          +.text-bold{
          +    font-weight: bold;
          +}
          diff --git a/resources/css/loader.css b/resources/css/loader.css
          new file mode 100644
          index 0000000..a13ba5f
          --- /dev/null
          +++ b/resources/css/loader.css
          @@ -0,0 +1,36 @@
          +/* (A) FULL SCREEN WRAPPER */
          +#spinner {
          +    position: fixed;
          +    top: 0; left: 0;
          +    width: 100vw; height: 100vh;
          +    z-index: 5000000000;
          +    background: rgba(16, 16, 16, 0.5);
          +    transition: opacity 0.2s;
          +}
          +
          +/* (B) CENTER LOADING SPINNER */
          +#spinner img {
          +    position: absolute;
          +    top: 50%; left: 50%;
          +    transform: translate(-50%);
          +}
          +
          +
          +/* (X) DOES NOT QUITE MATTER */
          +html, body {
          +    margin: 0;
          +    padding: 0;
          +}
          +#loading {
          +    display: block;
          +    position: absolute;
          +    top: 0;
          +    left: 0;
          +    z-index: 500000000000000;
          +    width: 100vw;
          +    height: 100vh;
          +    background-color: rgba(16, 16, 16, 0.5);
          +    /*background-image: url(https://i.stack.imgur.com/FhHRx.gif);*/
          +    background-repeat: no-repeat;
          +    background-position: center;
          +}
          diff --git a/resources/css/login.css b/resources/css/login.css
          new file mode 100644
          index 0000000..70ec9c4
          --- /dev/null
          +++ b/resources/css/login.css
          @@ -0,0 +1,37 @@
          +/*body{*/
          +/*    background-color: #F7F7F7;*/
          +/*}*/
          +.help-block strong { color: red; }
          +.login_content h1::before { background: none !important;  }
          +.login_content h1::after { background: none !important;  }
          +.footer-copyright{
          +    margin-top: 40%;
          +    position: absolute;
          +    width: 100%;
          +    color: #f5f7f9;
          +    font-size: 15px;
          +}
          +@media (max-width: 800px) {
          +    .footer-copyright{
          +        margin-top: 40%;
          +        margin-left: 10px !important;
          +        width: 100% !important;
          +        padding-left: 30px !important;
          +    }
          +}
          +@media (max-width: 700px) {
          +    .footer-copyright {
          +        margin-top: 40%;
          +        margin-left: 10px !important;
          +        width: 100% !important;
          +        padding-left: 30px !important;
          +    }
          +}
          +@media (max-width: 600px) {
          +    .footer-copyright {
          +        margin-top: 600px;
          +        margin-left: 10px !important;
          +        width: 100% !important;
          +        padding-left: 30px !important;
          +    }
          +}
          diff --git a/resources/css/modal.css b/resources/css/modal.css
          new file mode 100644
          index 0000000..346cfca
          --- /dev/null
          +++ b/resources/css/modal.css
          @@ -0,0 +1,548 @@
          +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200&display=swap');
          +
          +*{
          +    padding:0;
          +    margin:0;
          +}
          +.container{
          +    min-height:100vh;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    background-color:#eee;
          +}
          +.container .card{
          +    height:500px;
          +    width:1100px;
          +    background-color:#fff;
          +    position:relative;
          +    box-shadow:0 15px 30px rgba(0,0,0,0.1);
          +    font-family: 'Poppins', sans-serif;
          +    border-radius:20px;
          +}
          +.container .card .form{
          +    width:100%;
          +    height:100%;
          +
          +    display:flex;
          +}
          +.container .card .left-side{
          +    width:35%;
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +    height:100%;
          +    border-top-left-radius:20px;
          +    border-bottom-left-radius:20px;
          +    padding:20px 30px;
          +    box-sizing:border-box;
          +
          +}
          +/*left-side-start*/
          +.left-heading{
          +    color:#fff;
          +
          +}
          +.steps-content{
          +    margin-top:30px;
          +    color:#fff;
          +}
          +.steps-content p{
          +    font-size:12px;
          +    margin-top:15px;
          +}
          +.progress-bar{
          +    list-style:none;
          +    /*color:#fff;*/
          +    margin-top:30px;
          +    font-size:13px;
          +    font-weight:700;
          +    counter-reset:container 0;
          +}
          +.progress-bar li{
          +    position:relative;
          +    margin-left:40px;
          +    margin-top:50px;
          +    counter-increment:container 1;
          +    color:#4f6581;
          +}
          +.progress-bar li::before{
          +    content:counter(container);
          +    line-height:25px;
          +    text-align:center;
          +    position:absolute;
          +    height:25px;
          +    width:25px;
          +    border:1px solid #4f6581;
          +    border-radius:50%;
          +    left:-40px;
          +    top:-5px;
          +    z-index:10;
          +    background-color:#4A8ACD;
          +
          +
          +}
          +
          +
          +.progress-bar li::after{
          +    content: '';
          +    position: absolute;
          +    height: 90px;
          +    width: 2px;
          +    background-color: #4f6581;
          +    z-index: 1;
          +    left: -27px;
          +    top: -70px;
          +}
          +
          +
          +.progress-bar li.active::after{
          +    background-color: #fff;
          +
          +}
          +
          +.progress-bar li:first-child:after{
          +    display:none;
          +}
          +
          +/*.progress-bar li:last-child:after{*/
          +/*  display:none;  */
          +/*}*/
          +.progress-bar li.active::before{
          +    color:#fff;
          +    border:1px solid #fff;
          +}
          +.progress-bar li.active{
          +    color:#fff;
          +}
          +.d-none{
          +    display:none;
          +}
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +/*left-side-end*/
          +.container .card .right-side{
          +    width:65%;
          +    background-color:#fff;
          +    height:100%;
          +    border-radius:20px;
          +}
          +/*right-side-start*/
          +.main{
          +    display:none;
          +}
          +.active{
          +    display:block;
          +}
          +.main{
          +    padding:40px;
          +}
          +.main small{
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    margin-top:2px;
          +    height:30px;
          +    width:30px;
          +    background-color:#ccc;
          +    border-radius:50%;
          +    color:yellow;
          +    font-size:19px;
          +}
          +.text{
          +    margin-top:20px;
          +}
          +.congrats{
          +    text-align:center;
          +    color: #0b0b0b;
          +}
          +.text p{
          +    margin-top:10px;
          +    font-size:13px;
          +    font-weight:700;
          +    color:#cbced4;
          +}
          +.input-text{
          +    margin:30px 0;
          +    display:flex;
          +    gap:20px;
          +}
          +
          +.input-text .input-div{
          +    width:100%;
          +    position:relative;
          +
          +}
          +
          +
          +
          +input[type="text"],input[type="password"]{
          +    width:100%;
          +    height:40px;
          +    border:none;
          +    outline:0;
          +    border-radius:5px;
          +    border:1px solid #cbced4;
          +    gap:20px;
          +    box-sizing:border-box;
          +    padding:0px 10px;
          +}
          +select{
          +    width:100%;
          +    height:40px;
          +    border:none;
          +    outline:0;
          +    border-radius:5px;
          +    border:1px solid #cbced4;
          +    gap:20px;
          +    box-sizing:border-box;
          +    padding:0px 10px;
          +}
          +.input-text .input-div span{
          +    position:absolute;
          +    top:10px;
          +    left:10px;
          +    font-size:12px;
          +    transition:all 0.5s;
          +}
          +.input-div input:focus ~ span,.input-div input:valid ~ span  {
          +    top:-15px;
          +    left:6px;
          +    font-size:10px;
          +    font-weight:600;
          +}
          +
          +.input-div span{
          +    top:-15px;
          +    left:6px;
          +    font-size:10px;
          +}
          +.buttons button{
          +    height:40px;
          +    width:100px;
          +    border:none;
          +    border-radius:5px;
          +    background-color:#0075ff;
          +    font-size:12px;
          +    color:#fff;
          +    cursor:pointer;
          +}
          +.button_space{
          +    display:flex;
          +    gap:20px;
          +
          +}
          +.button_space button:nth-child(1){
          +    background-color:#fff;
          +    color:#000;
          +    border:1px solid#000;
          +}
          +.user_card{
          +    margin-top:20px;
          +    margin-bottom:40px;
          +    height:200px;
          +    width:100%;
          +    border:1px solid #c7d3d9;
          +    border-radius:10px;
          +    display:flex;
          +    overflow:hidden;
          +    position:relative;
          +    box-sizing:border-box;
          +}
          +.user_card span{
          +    height:80px;
          +    width:100%;
          +    background-color:#dfeeff;
          +}
          +.circle{
          +    position:absolute;
          +    top:40px;
          +    left:60px;
          +}
          +.circle span{
          +    height:70px;
          +    width:70px;
          +    background-color:#fff;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    border:2px solid #fff;
          +    border-radius:50%;
          +}
          +.circle span img{
          +    width:100%;
          +    height:100%;
          +    border-radius:50%;
          +    object-fit:cover;
          +}
          +.social{
          +    display:flex;
          +    position:absolute;
          +    top:100px;
          +    right:10px;
          +}
          +.social span{
          +    height:30px;
          +    width:30px;
          +    border-radius:7px;
          +    background-color:#fff;
          +    border:1px solid #cbd6dc;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    margin-left:10px;
          +    color:#cbd6dc;
          +
          +}
          +.social span i{
          +    cursor:pointer;
          +}
          +.heart{
          +    color:red !important;
          +}
          +.share{
          +    color:red !important;
          +}
          +.user_name{
          +    position:absolute;
          +    top:110px;
          +    margin:10px;
          +    padding:0 30px;
          +    display:flex;
          +    flex-direction:column;
          +    width:100%;
          +
          +}
          +.user_name h3{
          +    color:#4c5b68;
          +}
          +.detail{
          +    /*margin-top:10px;*/
          +    display:flex;
          +    justify-content:space-between;
          +    margin-right:50px;
          +}
          +.detail p{
          +    font-size:12px;
          +    font-weight:700;
          +
          +}
          +.detail p a{
          +    text-decoration:none;
          +    color:blue;
          +}
          +
          +
          +
          +
          +
          +
          +.checkmark__circle {
          +    stroke-dasharray: 166;
          +    stroke-dashoffset: 166;
          +    stroke-width: 2;
          +    stroke-miterlimit: 10;
          +    stroke: #7ac142;
          +    fill: none;
          +    animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
          +}
          +
          +.checkmark {
          +    width: 56px;
          +    height: 56px;
          +    border-radius: 50%;
          +    display: block;
          +    stroke-width: 2;
          +    stroke: #fff;
          +    stroke-miterlimit: 10;
          +    margin: 10% auto;
          +    box-shadow: inset 0px 0px 0px #7ac142;
          +    animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
          +}
          +
          +.checkmark__check {
          +    transform-origin: 50% 50%;
          +    stroke-dasharray: 48;
          +    stroke-dashoffset: 48;
          +    animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
          +}
          +
          +@keyframes stroke {
          +    100% {
          +        stroke-dashoffset: 0;
          +    }
          +}
          +@keyframes scale {
          +    0%, 100% {
          +        transform: none;
          +    }
          +    50% {
          +        transform: scale3d(1.1, 1.1, 1);
          +    }
          +}
          +@keyframes fill {
          +    100% {
          +        box-shadow: inset 0px 0px 0px 30px #7ac142;
          +    }
          +}
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +.warning{
          +    border:1px solid red !important;
          +}
          +
          +
          +/*right-side-end*/
          +@media (max-width:750px) {
          +    .container{
          +        height:scroll;
          +
          +
          +    }
          +    .container .card {
          +        max-width: 350px;
          +        height:auto !important;
          +        margin:30px 0;
          +    }
          +    .container .card .right-side {
          +        width:100%;
          +
          +    }
          +    .input-text{
          +        display:block;
          +    }
          +
          +    .input-text .input-div{
          +        margin-top:20px;
          +
          +    }
          +
          +    .container .card .left-side {
          +
          +        display: none;
          +    }
          +}
          +
          +.error{
          +    color: red;
          +    font-weight: bold;
          +    font-size: 12px;
          +}
          +
          +.field-validation-error{
          +    top: 30px;
          +    position: absolute;
          +    width: 100%;
          +    padding: 0;
          +    margin: 0;
          +    color: red;
          +    font-weight: bold;
          +}
          +
          +.field-validation-error span{
          +    left: 0 !important;
          +}
          +
          +.next_button{
          +    background-color: #FF440A !important;
          +    color: white;
          +    font-weight: bold;
          +}
          +
          +button:disabled{
          +    opacity: .5;
          +}
          +
          +.top-area{
          +    display: flex;
          +}
          +.link-area{
          +    width: 100%;
          +    text-align: right;
          +}
          +
          +.link-area a{
          +    color: #82aee2;
          +    text-decoration: none;
          +    background-color: transparent;
          +    font-family: "Lato",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
          +    font-size: 1rem;
          +    font-weight: 400;
          +}
          +
          +input:read-only{
          +    background: lightgrey;
          +}
          +
          +/* my custom css*/
          +.container .card .form {
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +    height: 100%;
          +    border-radius: 20px;
          +    box-sizing: border-box;
          +}
          +
          +.container .card{
          +    height: auto;
          +    margin: 15px;
          +}
          +
          +.container .card .right-side {
          +    width: 65%;
          +    background-color: #fff;
          +    height: auto;
          +    border-radius: 20px;
          +    border-top-left-radius: 0;
          +    border-bottom-left-radius: 0;
          +}
          +
          +.container .card .left-side{
          +    height: auto;
          +}
          +
          +.edit-text{
          +    text-align: right;
          +    font-size: 13px;
          +    font-weight: bold;
          +}
          +.label-text{
          +    text-align: left;
          +    font-size: 13px;
          +    font-weight: bold;
          +    margin-left: 5px;
          +}
          +.radio-text{
          +    text-align: left;
          +    font-size: 13px;
          +    font-weight: bold;
          +    margin-left: 10px;
          +}
          +
          +
          +/* my custom css*/
          diff --git a/resources/css/payment.css b/resources/css/payment.css
          new file mode 100644
          index 0000000..d5be443
          --- /dev/null
          +++ b/resources/css/payment.css
          @@ -0,0 +1,222 @@
          +@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
          +.modal-backdrop {
          +    position: fixed;
          +    top: 0;
          +    bottom: 0;
          +    left: 0;
          +    right: 0;
          +    background-color: rgba(0, 0, 0, 0.3);
          +    display: flex;
          +    justify-content: center;
          +    z-index: 100000000;
          +    overflow: auto;
          +}
          +
          +.modal {
          +    /*overflow-x: auto;*/
          +    display: flex;
          +    flex-direction: column;
          +}
          +
          +.modal-body {
          +    position: relative;
          +    padding: 20px 10px;
          +}
          +
          +#payment-modal {
          +    font-family: Arial;
          +    font-size: 17px;
          +    padding: 8px;
          +}
          +
          +
          +#payment-modal * {
          +    box-sizing: border-box;
          +}
          +
          +#payment-modal .row {
          +    display: -ms-flexbox; /* IE10 */
          +    display: flex;
          +    -ms-flex-wrap: wrap; /* IE10 */
          +    flex-wrap: wrap;
          +    margin: 0 -16px;
          +}
          +
          +#payment-modal .col-25 {
          +    -ms-flex: 25%; /* IE10 */
          +    flex: 25%;
          +}
          +
          +#payment-modal .col-50 {
          +    -ms-flex: 50%; /* IE10 */
          +    flex: 50%;
          +}
          +
          +#payment-modal .col-75 {
          +    -ms-flex: 75%; /* IE10 */
          +    flex: 75%;
          +}
          +
          +#payment-modal
          +.col-25,
          +.col-50,
          +.col-75 {
          +    padding: 0 16px;
          +}
          +
          +#payment-modal .payment-container {
          +    /* background-color: #f2f2f2; */
          +    font-family: 'Roboto', sans-serif;
          +    color: #2A3F54;
          +    padding: 5px 20px 15px 20px;
          +    border: 1px solid lightgrey;
          +    border-radius: 3px;
          +    background: #fff;
          +    padding: 10px 25px;
          +    box-shadow: 0 10px 10px 10px rgb(0 0 0 / 10%);
          +    border-radius: 20px;
          +}
          +
          +#payment-modal input[type=text] {
          +    width: 100%;
          +    margin-bottom: 20px;
          +    padding: 12px;
          +    border: 1px solid #ccc;
          +    border-radius: 3px;
          +}
          +
          +#payment-modal label {
          +    margin-bottom: 10px;
          +    display: block;
          +}
          +
          +#payment-modal .icon-container {
          +    margin-bottom: 20px;
          +    padding: 7px 0;
          +    font-size: 24px;
          +}
          +
          +#payment-modal .btn {
          +    background-color: #FF440A !important;
          +    color: white;
          +    padding: 12px;
          +    margin: 10px 0;
          +    border: none;
          +    width: 100%;
          +    border-radius: 3px;
          +    cursor: pointer;
          +    font-size: 17px;
          +}
          +
          +#payment-modal .btn:hover {
          +    background-color: #45a049;
          +}
          +
          +#payment-modal a {
          +    color: #2196F3;
          +}
          +
          +#payment-modal hr {
          +    border: 1px solid lightgrey;
          +}
          +
          +#payment-modal span.price {
          +    float: right;
          +    color: grey;
          +}
          +#payment-modal .bottom-panel{
          +    text-align: center;
          +}
          +#payment-modal .smart-credit-pkg{
          +    width: 250px !important;
          +    margin-top: -20px !important;
          +    margin-left: 15px !important;
          +    padding-top: 0 !important;
          +    padding-right: 0 !important;
          +}
          +#payment-modal .top-text{
          +    text-align: left;
          +    font-weight: bold;
          +    padding-bottom: 15px;
          +    margin-left: 15px;
          +    color: darkblue;
          +}
          +/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other (also change the direction - make the "cart" column go on top) */
          +@media (max-width: 800px) {
          +    #payment-modal .row {
          +        flex-direction: column-reverse;
          +    }
          +    #payment-modal .col-25 {
          +        margin-bottom: 20px;
          +    }
          +
          +    #payment-modal .main{
          +        margin: 15px !important;
          +    }
          +
          +    #payment-modal .container{
          +        border-radius: 0;
          +    }
          +    #payment-modal .text-center-sm{
          +        text-align: center !important;
          +    }
          +    #payment-modal .bottom-panel{
          +        text-align: center !important;
          +    }
          +    #payment-modal .smart-credit-pkg{
          +        width: 95% !important;
          +        margin-top: -20px !important;
          +        padding-top: 0 !important;
          +        padding-right: 0 !important;
          +    }
          +    #payment-modal .top-text{
          +        text-align: center;
          +        font-weight: bold;
          +        padding-bottom: 15px;
          +        color: darkblue;
          +    }
          +    #payment-modal .header-panel{
          +        text-align: center;
          +    }
          +}
          +@media (max-width: 700px) {
          +    #payment-modal .row {
          +        display: flow-root;
          +        flex-wrap: wrap;
          +        margin: 0 -16px;
          +    }
          +}
          +@media (min-width: 400px) {
          +
          +}
          +
          +
          +#payment-modal .center{
          +    margin: 0 auto;
          +}
          +
          +#payment-modal .text-center {
          +    text-align: center !important;
          +}
          +
          +#payment-modal .btn2 {
          +    background-color: #FF440A !important;
          +    text-align: center;
          +    text-decoration: none;
          +    font-weight: 800;
          +    font-size: 1em;
          +    text-transform: uppercase;
          +    color: #fff;
          +    border-radius: 7px;
          +    margin: 20px;
          +    padding: 10px 100px;
          +    background-size: 200% auto;
          +    border: none;
          +    color: white;
          +    box-shadow: 0 4px 6px rgb(50 50 93 / 11%), 0 1px 3px rgb(0 0 0 / 8%);
          +    background-image: linear-gradient(to right, #FF440A 0%, #dc3d0c 50%, #9e2d0a 100%);
          +    background-image: -webkit-linear-gradient(to right, #FF440A 0%, #dc3d0c 50%, #9e2d0a 100%);
          +    background-image: -o-linear-gradient(to right, #FF440A 0%, #dc3d0c 50%, #9e2d0a 100%);
          +    transition: 0.35s;
          +    -webkit-transition: 0.35s;
          +}
          diff --git a/resources/css/register.css b/resources/css/register.css
          new file mode 100644
          index 0000000..b23bf65
          --- /dev/null
          +++ b/resources/css/register.css
          @@ -0,0 +1,548 @@
          +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200&display=swap');
          +
          +*{
          +    padding:0;
          +    margin:0;
          +}
          +.container{
          +    min-height:100vh;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    background-color:#eee;
          +}
          +.container .card{
          +    height:500px;
          +    width:1100px;
          +    background-color:#fff;
          +    position:relative;
          +    box-shadow:0 15px 30px rgba(0,0,0,0.1);
          +    font-family: 'Poppins', sans-serif;
          +    border-radius:20px;
          +}
          +.container .card .form{
          +    width:100%;
          +    height:100%;
          +
          +    display:flex;
          +}
          +.container .card .left-side{
          +    width:35%;
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +    height:100%;
          +    border-top-left-radius:20px;
          +    border-bottom-left-radius:20px;
          +    padding:20px 30px;
          +    box-sizing:border-box;
          +
          +}
          +/*left-side-start*/
          +.left-heading{
          +    color:#fff;
          +
          +}
          +.steps-content{
          +    margin-top:30px;
          +    color:#fff;
          +}
          +.steps-content p{
          +    font-size:12px;
          +    margin-top:15px;
          +}
          +.progress-bar{
          +    list-style:none;
          +    /*color:#fff;*/
          +    margin-top:30px;
          +    font-size:13px;
          +    font-weight:700;
          +    counter-reset:container 0;
          +}
          +.progress-bar li{
          +    position:relative;
          +    margin-left:40px;
          +    margin-top:50px;
          +    counter-increment:container 1;
          +    color:#4f6581;
          +}
          +.progress-bar li::before{
          +    content:counter(container);
          +    line-height:25px;
          +    text-align:center;
          +    position:absolute;
          +    height:25px;
          +    width:25px;
          +    border:1px solid #4f6581;
          +    border-radius:50%;
          +    left:-40px;
          +    top:-5px;
          +    z-index:10;
          +    background-color:#4A8ACD;
          +
          +
          +}
          +
          +
          +.progress-bar li::after{
          +    content: '';
          +    position: absolute;
          +    height: 90px;
          +    width: 2px;
          +    background-color: #4f6581;
          +    z-index: 1;
          +    left: -27px;
          +    top: -70px;
          +}
          +
          +
          +.progress-bar li.active::after{
          +    background-color: #fff;
          +
          +}
          +
          +.progress-bar li:first-child:after{
          +    display:none;
          +}
          +
          +/*.progress-bar li:last-child:after{*/
          +/*  display:none;  */
          +/*}*/
          +.progress-bar li.active::before{
          +    color:#fff;
          +    border:1px solid #fff;
          +}
          +.progress-bar li.active{
          +    color:#fff;
          +}
          +.d-none{
          +    display:none;
          +}
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +/*left-side-end*/
          +.container .card .right-side{
          +    width:65%;
          +    background-color:#fff;
          +    height:100%;
          +    border-radius:20px;
          +}
          +/*right-side-start*/
          +.main{
          +    display:none;
          +}
          +.active{
          +    display:block;
          +}
          +.main{
          +    padding:40px;
          +}
          +.main small{
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    margin-top:2px;
          +    height:30px;
          +    width:30px;
          +    background-color:#ccc;
          +    border-radius:50%;
          +    color:yellow;
          +    font-size:19px;
          +}
          +.text{
          +    margin-top:20px;
          +}
          +.congrats{
          +    text-align:center;
          +    color: #0b0b0b;
          +}
          +.text p{
          +    margin-top:10px;
          +    font-size:13px;
          +    font-weight:700;
          +    color:#cbced4;
          +}
          +.input-text{
          +    margin:30px 0;
          +    display:flex;
          +    gap:20px;
          +}
          +
          +.input-text .input-div{
          +    width:100%;
          +    position:relative;
          +
          +}
          +
          +
          +
          +input[type="text"],input[type="password"]{
          +    width:100%;
          +    height:40px;
          +    border:none;
          +    outline:0;
          +    border-radius:5px;
          +    border:1px solid #cbced4;
          +    gap:20px;
          +    box-sizing:border-box;
          +    padding:0px 10px;
          +}
          +select{
          +    width:100%;
          +    height:40px;
          +    border:none;
          +    outline:0;
          +    border-radius:5px;
          +    border:1px solid #cbced4;
          +    gap:20px;
          +    box-sizing:border-box;
          +    padding:0px 10px;
          +}
          +.input-text .input-div span{
          +    position:absolute;
          +    top:10px;
          +    left:10px;
          +    font-size:12px;
          +    transition:all 0.5s;
          +}
          +.input-div input:focus ~ span,.input-div input:valid ~ span  {
          +    top:-15px;
          +    left:6px;
          +    font-size:10px;
          +    font-weight:600;
          +}
          +
          +.input-div span{
          +    top:-15px;
          +    left:6px;
          +    font-size:10px;
          +}
          +.buttons button{
          +    height:40px;
          +    width:100px;
          +    border:none;
          +    border-radius:5px;
          +    background-color:#0075ff;
          +    font-size:12px;
          +    color:#fff;
          +    cursor:pointer;
          +}
          +.button_space{
          +    display:flex;
          +    gap:20px;
          +
          +}
          +.button_space button:nth-child(1){
          +    background-color:#fff;
          +    color:#000;
          +    border:1px solid#000;
          +}
          +.user_card{
          +    margin-top:20px;
          +    margin-bottom:40px;
          +    height:200px;
          +    width:100%;
          +    border:1px solid #c7d3d9;
          +    border-radius:10px;
          +    display:flex;
          +    overflow:hidden;
          +    position:relative;
          +    box-sizing:border-box;
          +}
          +.user_card span{
          +    height:80px;
          +    width:100%;
          +    background-color:#dfeeff;
          +}
          +.circle{
          +    position:absolute;
          +    top:40px;
          +    left:60px;
          +}
          +.circle span{
          +    height:70px;
          +    width:70px;
          +    background-color:#fff;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    border:2px solid #fff;
          +    border-radius:50%;
          +}
          +.circle span img{
          +    width:100%;
          +    height:100%;
          +    border-radius:50%;
          +    object-fit:cover;
          +}
          +.social{
          +    display:flex;
          +    position:absolute;
          +    top:100px;
          +    right:10px;
          +}
          +.social span{
          +    height:30px;
          +    width:30px;
          +    border-radius:7px;
          +    background-color:#fff;
          +    border:1px solid #cbd6dc;
          +    display:flex;
          +    justify-content:center;
          +    align-items:center;
          +    margin-left:10px;
          +    color:#cbd6dc;
          +
          +}
          +.social span i{
          +    cursor:pointer;
          +}
          +.heart{
          +    color:red !important;
          +}
          +.share{
          +    color:red !important;
          +}
          +.user_name{
          +    position:absolute;
          +    top:110px;
          +    margin:10px;
          +    padding:0 30px;
          +    display:flex;
          +    flex-direction:column;
          +    width:100%;
          +
          +}
          +.user_name h3{
          +    color:#4c5b68;
          +}
          +.detail{
          +    /*margin-top:10px;*/
          +    display:flex;
          +    justify-content:space-between;
          +    margin-right:50px;
          +}
          +.detail p{
          +    font-size:12px;
          +    font-weight:700;
          +
          +}
          +.detail p a{
          +    text-decoration:none;
          +    color:blue;
          +}
          +
          +
          +
          +
          +
          +
          +.checkmark__circle {
          +    stroke-dasharray: 166;
          +    stroke-dashoffset: 166;
          +    stroke-width: 2;
          +    stroke-miterlimit: 10;
          +    stroke: #7ac142;
          +    fill: none;
          +    animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
          +}
          +
          +.checkmark {
          +    width: 56px;
          +    height: 56px;
          +    border-radius: 50%;
          +    display: block;
          +    stroke-width: 2;
          +    stroke: #fff;
          +    stroke-miterlimit: 10;
          +    margin: 10% auto;
          +    box-shadow: inset 0px 0px 0px #7ac142;
          +    animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
          +}
          +
          +.checkmark__check {
          +    transform-origin: 50% 50%;
          +    stroke-dasharray: 48;
          +    stroke-dashoffset: 48;
          +    animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
          +}
          +
          +@keyframes stroke {
          +    100% {
          +        stroke-dashoffset: 0;
          +    }
          +}
          +@keyframes scale {
          +    0%, 100% {
          +        transform: none;
          +    }
          +    50% {
          +        transform: scale3d(1.1, 1.1, 1);
          +    }
          +}
          +@keyframes fill {
          +    100% {
          +        box-shadow: inset 0px 0px 0px 30px #7ac142;
          +    }
          +}
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +.warning{
          +    border:1px solid red !important;
          +}
          +
          +
          +/*right-side-end*/
          +@media (max-width:750px) {
          +    .container{
          +        height:scroll;
          +
          +
          +    }
          +    .container .card {
          +        max-width: 350px;
          +        height:auto !important;
          +        margin:30px 0;
          +    }
          +    .container .card .right-side {
          +        width:100%;
          +
          +    }
          +    .input-text{
          +        display:block;
          +    }
          +
          +    .input-text .input-div{
          +        margin-top:20px;
          +
          +    }
          +
          +    .container .card .left-side {
          +
          +        display: none;
          +    }
          +}
          +
          +.error{
          +    color: red;
          +    font-weight: bold;
          +    font-size: 12px;
          +}
          +
          +.field-validation-error{
          +    top: 50px;
          +    position: absolute;
          +    width: 100%;
          +    padding: 0;
          +    margin: 0;
          +    color: red;
          +    font-weight: bold;
          +}
          +
          +.field-validation-error span{
          +    left: 0 !important;
          +}
          +
          +.next_button{
          +    background-color: #FF440A !important;
          +    color: white;
          +    font-weight: bold;
          +}
          +
          +button:disabled{
          +    opacity: .5;
          +}
          +
          +.top-area{
          +    display: flex;
          +}
          +.link-area{
          +    width: 100%;
          +    text-align: right;
          +}
          +
          +.link-area a{
          +    color: #82aee2;
          +    text-decoration: none;
          +    background-color: transparent;
          +    font-family: "Lato",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
          +    font-size: 1rem;
          +    font-weight: 400;
          +}
          +
          +input:read-only{
          +    background: lightgrey;
          +}
          +
          +/* my custom css*/
          +.container .card .form {
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +    height: 100%;
          +    border-radius: 20px;
          +    box-sizing: border-box;
          +}
          +
          +.container .card{
          +    height: auto;
          +    margin: 15px;
          +}
          +
          +.container .card .right-side {
          +    width: 65%;
          +    background-color: #fff;
          +    height: auto;
          +    border-radius: 20px;
          +    border-top-left-radius: 0;
          +    border-bottom-left-radius: 0;
          +}
          +
          +.container .card .left-side{
          +    height: auto;
          +}
          +
          +.edit-text{
          +    text-align: right;
          +    font-size: 13px;
          +    font-weight: bold;
          +}
          +.label-text{
          +    text-align: left;
          +    font-size: 13px;
          +    font-weight: bold;
          +    margin-left: 5px;
          +}
          +.radio-text{
          +    text-align: left;
          +    font-size: 13px;
          +    font-weight: bold;
          +    margin-left: 10px;
          +}
          +
          +
          +/* my custom css*/
          diff --git a/resources/css/smartcredit.css b/resources/css/smartcredit.css
          new file mode 100644
          index 0000000..a956887
          --- /dev/null
          +++ b/resources/css/smartcredit.css
          @@ -0,0 +1,970 @@
          +
          +.smart-credit-pkg .sign-up-nav, .smart-credit-pkg .login-nav {
          +    display: none
          +}
          +
          +.smart-credit-pkg .page-steps {
          +    background-color: #f7f8fb
          +}
          +
          +.smart-credit-pkg .page-steps .smart-credit-pkg .header__name {
          +    font-size: 24px
          +}
          +
          +.smart-credit-pkg .main {
          +    border-radius: 3px;
          +    height: calc(100vh - 177px);
          +    max-width: 80%;
          +    margin: 0 auto
          +}
          +
          +.smart-credit-pkg .main--auto {
          +    height: auto;
          +    justify-content: center
          +}
          +
          +.smart-credit-pkg .main__content {
          +    border: 2px solid #f2f2f2;
          +    background-color: #fff
          +}
          +
          +.smart-credit-pkg .main__aside {
          +    background-image: linear-gradient(to bottom, #b8d7f3, #82aee2)
          +}
          +
          +.smart-credit-pkg .main__aside + .smart-credit-pkg .main__content {
          +    border-left: none
          +}
          +
          +@media (max-width: 1199.98px) {
          +    .smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps li + li {
          +        margin-left: 50px
          +    }
          +
          +    p {
          +        color: #4a4a4a;
          +        line-height: 32px
          +    }
          +
          +    .smart-credit-pkg .terms-of-list p {
          +        line-height: initial
          +    }
          +}
          +
          +.smart-credit-pkg .login-text {
          +    padding: 20px;
          +    text-align: center;
          +    color: #fff
          +}
          +
          +.smart-credit-pkg .login-text h3 {
          +    font-weight: 300;
          +    line-height: 1.5
          +}
          +
          +.smart-credit-pkg .login-text p {
          +    color: #fff;
          +    font-size: 16px;
          +    margin-top: 15px;
          +    font-weight: bold;
          +    line-height: 2
          +}
          +
          +.smart-credit-pkg .login-text p.smart-credit-pkg .extra-bold {
          +    font-size: 35px;
          +    margin-top: 15px;
          +    font-weight: bold;
          +    line-height: 2
          +}
          +
          +.smart-credit-pkg .login-text .smart-credit-pkg .btn-link {
          +    font-size: 16px;
          +    padding: 0;
          +    border-radius: 0;
          +    color: #fff;
          +    border-bottom: 1px solid #fff
          +}
          +
          +.smart-credit-pkg .form-element--login {
          +    width: 70%;
          +    margin: 0 auto
          +}
          +
          +.smart-credit-pkg .form-element--login h2 {
          +    color: #82aee2;
          +    font-weight: 300
          +}
          +
          +.smart-credit-pkg .form-element--login a {
          +    cursor: pointer
          +}
          +
          +.smart-credit-pkg .action-link a {
          +    cursor: pointer
          +}
          +
          +@media (max-width: 991.98px) {
          +    .smart-credit-pkg .main {
          +        max-width: 100%
          +    }
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .LoginText--box.smart-credit-pkg .d-flex {
          +        display: block !important
          +    }
          +
          +    .smart-credit-pkg .login-text {
          +        margin-top: 20px
          +    }
          +
          +    .smart-credit-pkg .page-steps .smart-credit-pkg .navigation {
          +        display: block
          +    }
          +
          +    .smart-credit-pkg .main {
          +        height: auto;
          +        flex-direction: column-reverse
          +    }
          +
          +    .smart-credit-pkg .main__content, .smart-credit-pkg .main__aside {
          +        max-width: 100%
          +    }
          +
          +    .smart-credit-pkg .main__content {
          +        border-right: none;
          +        padding: 0 30px;
          +        border-left: none
          +    }
          +
          +    .smart-credit-pkg .main__content .smart-credit-pkg .tab-content {
          +        padding-top: .5rem !important;
          +        padding-bottom: 1rem !important
          +    }
          +
          +    .smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps .smart-credit-pkg .nav-link {
          +        font-size: 12px
          +    }
          +
          +    .smart-credit-pkg .login-text, .smart-credit-pkg .action-link {
          +        text-align: center
          +    }
          +}
          +
          +@media (max-width: 575.98px) {
          +    .smart-credit-pkg .steps .smart-credit-pkg .container {
          +        padding-left: 0;
          +        padding-right: 0
          +    }
          +
          +    .smart-credit-pkg .form-element {
          +        width: 100%
          +    }
          +}
          +
          +.smart-credit-pkg .registration-steps {
          +    padding-top: 50px
          +}
          +
          +.smart-credit-pkg .registration-steps .smart-credit-pkg .nav {
          +    margin: 50px -16px 20px;
          +    width: auto
          +}
          +
          +.smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps .smart-credit-pkg .nav-link {
          +    color: #82aee2;
          +    font-weight: 300;
          +    cursor: context-menu
          +}
          +
          +.smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps .smart-credit-pkg .nav-link::before {
          +    height: 12px;
          +    width: 12px;
          +    background-color: #c2c2c2;
          +    border-color: #c2c2c2
          +}
          +
          +.smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps .smart-credit-pkg .nav-link.smart-credit-pkg .active {
          +    font-weight: bold
          +}
          +
          +.smart-credit-pkg .registration-steps .smart-credit-pkg .nav-steps .smart-credit-pkg .nav-link.smart-credit-pkg .active::before {
          +    height: 15px;
          +    width: 15px;
          +    background: #f2f2f2;
          +    border-color: #82aee2
          +}
          +
          +.smart-credit-pkg .confirm-name i {
          +    color: #82aee2
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .registration-steps {
          +        padding-top: 0
          +    }
          +
          +    .smart-credit-pkg .mt-sm--2 {
          +        margin-top: 16px
          +    }
          +
          +    .smart-credit-pkg .registration-steps .smart-credit-pkg .nav {
          +        margin: 50px -30px 20px
          +    }
          +}
          +
          +.smart-credit-pkg .main--credit {
          +    max-width: 100%;
          +    height: auto
          +}
          +
          +.smart-credit-pkg .report-card {
          +    border-radius: 4px;
          +    border: solid 1px #f2f2f2;
          +    background-color: #fff;
          +    display: flex;
          +    flex-direction: column;
          +    height: auto;
          +    position: relative
          +}
          +
          +.smart-credit-pkg .report-card--short {
          +    height: 85%
          +}
          +
          +.smart-credit-pkg .report-card--info {
          +    border-top: 5px solid #3379d0
          +}
          +
          +.smart-credit-pkg .report-card--best, .smart-credit-pkg .report-card--gray {
          +    background: #f2f2f2
          +}
          +
          +.smart-credit-pkg .report-card--best .smart-credit-pkg .best-value {
          +    display: block;
          +    position: absolute;
          +    top: -38px;
          +    left: -20px
          +}
          +
          +.smart-credit-pkg .report-card--danger {
          +    border-top: 5px solid #c03941
          +}
          +
          +.smart-credit-pkg .report-card__header {
          +    text-align: center;
          +    border-bottom: 1px solid #82aee2
          +}
          +
          +.smart-credit-pkg .report-card__header h5 {
          +    font-weight: 700;
          +    font-size: 18px;
          +    line-height: 26px;
          +    color: #3379d0;
          +    font-family: "Open Sans", sans-serif
          +}
          +
          +.smart-credit-pkg .report-card__header h5 span {
          +    font-size: 21px
          +}
          +
          +.smart-credit-pkg .report-card__header h5 sup {
          +    margin: 0 2px;
          +    top: -10px
          +}
          +
          +.smart-credit-pkg .report-card__price {
          +    text-align: center;
          +    border-bottom: 1px solid #82aee2
          +}
          +
          +.smart-credit-pkg .report-card__price h4 {
          +    color: #82aee2;
          +    font-size: 24px !important
          +}
          +
          +.smart-credit-pkg .report-card__price span {
          +    text-transform: uppercase;
          +    font-size: 11px
          +}
          +
          +.smart-credit-pkg .report-card .provider-logo {
          +    width: 55%;
          +    vertical-align: middle;
          +    border-style: none;
          +}
          +
          +.smart-credit-pkg .report-card__logo {
          +    position: relative;
          +    display: flex;
          +    align-items: center;
          +    margin-top: 10px;
          +    margin-bottom: 5px
          +}
          +
          +.smart-credit-pkg .report-card__logo span {
          +    padding: 0 10px;
          +    color: #3379d0
          +}
          +
          +.smart-credit-pkg .report-card__logo strong {
          +    font-family: "open sans";
          +    font-size: 18px
          +}
          +
          +.smart-credit-pkg .report-card .smart-credit-pkg .provider-logo-small {
          +    width: 110px
          +}
          +
          +.smart-credit-pkg .report-card__logo::before, .smart-credit-pkg .report-card__logo::after {
          +    content: "";
          +    flex: 1;
          +    height: 2px;
          +    background: #82aee2
          +}
          +
          +.smart-credit-pkg .report-card__text {
          +    text-align: center
          +}
          +
          +.smart-credit-pkg .report-card__text p {
          +    font-size: 13px;
          +    margin: 0
          +}
          +
          +.smart-credit-pkg .report-card__action {
          +    text-align: center;
          +    margin-top: auto
          +}
          +
          +.smart-credit-pkg .report-card__action .smart-credit-pkg .btn {
          +    border-width: 2px
          +}
          +
          +.smart-credit-pkg .points {
          +    list-style: none;
          +    padding: 0;
          +    margin: 0
          +}
          +
          +.smart-credit-pkg .points > li {
          +    font-size: 14px;
          +    position: relative;
          +    display: flex;
          +    align-items: center
          +}
          +
          +.smart-credit-pkg .points > li i {
          +    color: #82aee2;
          +    margin-right: 5px;
          +    font-size: 16px
          +}
          +
          +.smart-credit-pkg .points > li + li {
          +    margin-top: 15px
          +}
          +
          +.smart-credit-pkg .best-value {
          +    display: none
          +}
          +
          +.smart-credit-pkg .best-value img {
          +    width: 142px
          +}
          +
          +.smart-credit-pkg .coming-soon {
          +    position: absolute;
          +    top: -38px;
          +    right: -20px
          +}
          +
          +.smart-credit-pkg .coming-soon img {
          +    width: 142px
          +}
          +
          +.smart-credit-pkg .coming-soon-btn {
          +    border: 2px solid #c2c2c2;
          +    color: #c2c2c2
          +}
          +
          +.smart-credit-pkg .coming-soon-btn:hover {
          +    background: #c2c2c2;
          +    color: #fff;
          +    border: 2px solid #c2c2c2
          +}
          +
          +.smart-credit-pkg .unavailable-btn {
          +    border: 2px solid #c2c2c2;
          +    color: #c2c2c2;
          +    word-spacing: 8px
          +}
          +
          +.smart-credit-pkg .unavailable-btn:hover {
          +    background: #c2c2c2;
          +    color: #fff;
          +    border: 2px solid #c2c2c2
          +}
          +
          +.smart-credit-pkg .tab-content__header {
          +    max-width: 80%;
          +    margin: 0 auto
          +}
          +
          +.smart-credit-pkg .tab-content__header h4 {
          +    font-size: 22px;
          +    font-weight: bold
          +}
          +
          +.smart-credit-pkg .tab-content__report h4 {
          +    font-size: 22px;
          +    font-weight: bold
          +}
          +
          +.smart-credit-pkg .report-list {
          +    justify-content: center
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .tab-content__header {
          +        max-width: 100%
          +    }
          +
          +    .smart-credit-pkg .tab-content__report {
          +        padding-top: 10px
          +    }
          +
          +    .smart-credit-pkg .tab-content__header h4 {
          +        font-size: 22px;
          +        line-height: 36px
          +    }
          +
          +    .smart-credit-pkg .tab-content__header p br {
          +        display: none
          +    }
          +
          +    .smart-credit-pkg .tab-content__report > h4 {
          +        margin-top: 50px;
          +        font-size: 22px;
          +        line-height: 32px;
          +        text-align: left !important
          +    }
          +
          +    .smart-credit-pkg .report-list {
          +        padding: 0 !important
          +    }
          +
          +    .smart-credit-pkg .report-list .smart-credit-pkg .col-md-4 + .smart-credit-pkg .col-md-4 {
          +        margin-top: 50px
          +    }
          +
          +    .smart-credit-pkg .report-card__text p {
          +        line-height: 22px
          +    }
          +}
          +
          +.smart-credit-pkg .tab-content--report {
          +    position: relative
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header .smart-credit-pkg .btn {
          +    position: absolute;
          +    left: 34px;
          +    top: 25px;
          +    font-size: 16px;
          +    padding-left: 0
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header h2 {
          +    color: #3379d0;
          +    font-weight: bold;
          +    font-family: "Open Sans", sans-serif
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header h2 span {
          +    font-size: 32px
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header h2 sup {
          +    font-size: 16px;
          +    top: -20px
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p {
          +    font-size: 21px;
          +    font-weight: bold;
          +    margin: 0 auto
          +}
          +
          +.smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p span {
          +    font-size: 21px;
          +    font-weight: bold;
          +    font-style: italic;
          +    margin-right: 5px
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .form-group > label {
          +    font-size: 18px;
          +    color: #9b9b9b;
          +    text-transform: none;
          +    margin-bottom: 25px;
          +    font-weight: normal
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .form-group + .smart-credit-pkg .form-group {
          +    margin-top: 40px
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .custom-radio {
          +    padding: 0
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .custom-radio input[type=radio]:checked + label {
          +    border-color: #82aee2;
          +    box-shadow: inset -1px 0 0 1px #82aee2
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .custom-control-label {
          +    padding: 16px 20px;
          +    display: block;
          +    border: 1px solid #e1e1e1;
          +    border-radius: 4px;
          +    border-left: 4px solid #82aee2;
          +    cursor: pointer;
          +    color: #4a4a4a;
          +    font-size: 16px;
          +    font-weight: 700
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .custom-control-label::before, .smart-credit-pkg .form-options .smart-credit-pkg .custom-control-label::after {
          +    display: none
          +}
          +
          +.smart-credit-pkg .form-options .smart-credit-pkg .custom-control-label:hover {
          +    box-shadow: inset -1px 0 0 1px #82aee2;
          +    border-color: #82aee2
          +}
          +
          +@media (max-width: 1199.98px) {
          +    .smart-credit-pkg .form-options .smart-credit-pkg .form-group > label {
          +        margin-bottom: 18px
          +    }
          +
          +    .smart-credit-pkg .form-options .smart-credit-pkg .form-group + .smart-credit-pkg .form-group {
          +        margin-top: 25px
          +    }
          +}
          +
          +.smart-credit-pkg .form-element label {
          +    color: #82aee2
          +}
          +
          +.smart-credit-pkg .form-element--personal .smart-credit-pkg .form-group label {
          +    color: #9b9b9b
          +}
          +
          +.smart-credit-pkg .smart-credit-account-modal .smart-credit-pkg .modal-dialog {
          +    max-width: 420px
          +}
          +
          +.smart-credit-pkg .smart-credit-account-modal .smart-credit-pkg .modal-header {
          +    display: none
          +}
          +
          +.smart-credit-pkg .success-icon {
          +    margin-top: 30px
          +}
          +
          +.smart-credit-pkg .success-icon i {
          +    color: #82aee2;
          +    font-size: 40px
          +}
          +
          +.smart-credit-pkg .modal-success__title {
          +    color: #545454;
          +    margin: 20px 0 30px
          +}
          +
          +.smart-credit-pkg .modal-success__text {
          +    color: #4a4a4a;
          +    width: 80%;
          +    margin: auto
          +}
          +
          +.smart-credit-pkg .smart-credit-account-modal .smart-credit-pkg .btn {
          +    font-weight: 100
          +}
          +
          +.smart-credit-pkg .credit-success {
          +    width: 60%;
          +    margin: 0 auto;
          +    text-align: center
          +}
          +
          +.smart-credit-pkg .credit-success p {
          +    font-size: 20px;
          +    color: #545454
          +}
          +
          +.smart-credit-pkg .credit-info a, .smart-credit-pkg .credit-info span {
          +    font-size: 14px;
          +    line-height: 24px;
          +    font-weight: 300;
          +    color: #82aee2
          +}
          +
          +.smart-credit-pkg .credit-text {
          +    list-style: none;
          +    width: 70%;
          +    margin: 0 auto 20px;
          +    padding: 0;
          +    text-align: center
          +}
          +
          +.smart-credit-pkg .credit-text li {
          +    position: relative;
          +    display: flex;
          +    justify-content: center;
          +    color: #4a4a4a
          +}
          +
          +.smart-credit-pkg .credit-text li::before {
          +    content: "";
          +    background: #82aee2;
          +    width: 6px;
          +    height: 6px;
          +    border-radius: 50%;
          +    margin-right: 10px;
          +    margin-top: 10px;
          +    padding-left: 6px
          +}
          +
          +.smart-credit-pkg .credit-text li + li {
          +    margin-top: 15px
          +}
          +
          +@media (max-width: 1199.98px) {
          +    .smart-credit-pkg .credit-success {
          +        width: 80%
          +    }
          +}
          +
          +@media (max-width: 991.98px) {
          +    .smart-credit-pkg .credit-success {
          +        width: 100%
          +    }
          +
          +    .smart-credit-pkg .credit-success .smart-credit-pkg .text {
          +        width: 100%
          +    }
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .credit-success .smart-credit-pkg .text {
          +        text-align: left;
          +        display: block
          +    }
          +
          +    .smart-credit-pkg .credit-success .smart-credit-pkg .btn {
          +        width: 100%
          +    }
          +
          +    .smart-credit-pkg .credit-text {
          +        width: 100%
          +    }
          +
          +    .smart-credit-pkg .credit-info {
          +        text-align: left
          +    }
          +
          +    .smart-credit-pkg .success-credit .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header {
          +        margin-bottom: 0
          +    }
          +
          +    .smart-credit-pkg .success-credit .smart-credit-pkg .btn {
          +        margin-bottom: 20px
          +    }
          +}
          +
          +.smart-credit-pkg .credit-error .smart-credit-pkg .alert-danger {
          +    background: #dc8180;
          +    padding: 8px 20px
          +}
          +
          +.smart-credit-pkg .credit-error .smart-credit-pkg .alert-danger p {
          +    color: #fff;
          +    font-size: 16px;
          +    font-weight: 100;
          +    line-height: 32px;
          +    letter-spacing:.04px;
          +    text-align: left
          +}
          +
          +.smart-credit-pkg .credit-error .smart-credit-pkg .title {
          +    width: 50%;
          +    margin: 20px auto;
          +    font-size: 21px;
          +    line-height: 32px;
          +    letter-spacing:.06px;
          +    text-align: center;
          +    font-weight: bold
          +}
          +
          +.smart-credit-pkg .credit-error .smart-credit-pkg .report-card__price {
          +    border: none
          +}
          +
          +.smart-credit-pkg .credit-error .smart-credit-pkg .report-card__price span {
          +    display: none
          +}
          +
          +.smart-credit-pkg .smart-credit-account label {
          +    color: #82aee2 !important;
          +    font-weight: bold
          +}
          +
          +@media (max-width: 991.98px) {
          +    .smart-credit-pkg .credit-error .smart-credit-pkg .title {
          +        width: 100%
          +    }
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .smart-credit-error .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header {
          +        margin-bottom: 10px
          +    }
          +
          +    .smart-credit-pkg .credit-error .smart-credit-pkg .report-row {
          +        margin-top: 40px !important
          +    }
          +
          +    .smart-credit-pkg .credit-error .smart-credit-pkg .report-row__aside {
          +        margin-top: 30px
          +    }
          +}
          +
          +@media (max-width: 575.98px) {
          +    .smart-credit-pkg .credit-error .smart-credit-pkg .alert-danger {
          +        margin: 0 -30px;
          +        padding: 10px 30px
          +    }
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p {
          +    width: 90%
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .report-row {
          +    width: 60%;
          +    margin: 0 auto
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .btn {
          +    font-weight: 100
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header .smart-credit-pkg .btn {
          +    top: 25px
          +}
          +
          +.smart-credit-pkg .inactive-btn {
          +    color: #be4948 !important;
          +    border-color: #be4948;
          +    opacity: 1 !important
          +}
          +
          +.smart-credit-pkg .inactive-btn:hover {
          +    background: #be4948;
          +    border-color: #be4948;
          +    color: #fff
          +}
          +
          +@media (max-width: 991.98px) {
          +    .smart-credit-pkg .smart-credit .smart-credit-pkg .report-row {
          +        width: 75%
          +    }
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .smart-credit .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p {
          +        width: 100%
          +    }
          +
          +    .smart-credit-pkg .smart-credit .smart-credit-pkg .report-row {
          +        width: 100%;
          +        margin: 35px auto 0 !important
          +    }
          +
          +    .smart-credit-pkg .smart-credit .smart-credit-pkg .form-title {
          +        text-align: left
          +    }
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .form-element p {
          +    font-size: 16px;
          +    color: #4a4a4a;
          +    line-height: 32px;
          +    letter-spacing:.04px;
          +    margin-bottom: 0
          +}
          +
          +.smart-credit-pkg .smart-credit .smart-credit-pkg .form-element p a {
          +    font-size: 16px;
          +    color: #4a4a4a;
          +    line-height: 32px;
          +    letter-spacing:.04px;
          +    text-decoration: none
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p {
          +    width: 80%;
          +    color: #4a4a4a
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header .smart-credit-pkg .btn {
          +    top: 25px
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .form-title {
          +    margin-bottom: 15px
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .form-element p {
          +    font-size: 16px;
          +    color: #4a4a4a;
          +    line-height: 32px;
          +    letter-spacing:.04px;
          +    margin-bottom: 0
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .form-element p a {
          +    font-size: 16px;
          +    color: #4a4a4a;
          +    line-height: 32px;
          +    letter-spacing:.04px;
          +    text-decoration: none
          +}
          +
          +.smart-credit-pkg .credit-contact .smart-credit-pkg .report-card__logo, .smart-credit-pkg .credit-contact .smart-credit-pkg .report-card__price {
          +    display: none
          +}
          +
          +@media (max-width: 991.98px) {
          +    .smart-credit-pkg .credit-contact .smart-credit-pkg .tab-content__header {
          +        max-width: 100%
          +    }
          +}
          +
          +@media (max-width: 767.98px) {
          +    .smart-credit-pkg .credit-contact .smart-credit-pkg .tab-content--report .smart-credit-pkg .tab-content__header p {
          +        width: 100%
          +    }
          +}
          +
          +.smart-credit-pkg .smart-credit-page .smart-credit-pkg .form-element .smart-credit-pkg .btn.smart-credit-pkg .btn-link {
          +    font-size: 16px;
          +    text-decoration: underline !important;
          +    display: block;
          +    text-align: center;
          +    margin-top: 15px
          +}
          +
          +.smart-credit-pkg .readonly {
          +    font-size: 16px;
          +    font-weight: bold;
          +    padding: 0 0 15px;
          +    border: none !important;
          +    border-bottom: 1px solid #f2f2f2 !important;
          +    box-shadow: none;
          +    border-radius: 0 !important;
          +    height: 30px;
          +    background: #fff !important
          +}
          +
          +.smart-credit-pkg .terms-of-list {
          +    border: 2px solid #f2f2f2;
          +    padding: 10px;
          +    font-size: 14px;
          +    list-style: none;
          +    height: 180px;
          +    overflow-y: auto
          +}
          +
          +.smart-credit-pkg .terms-of-list li + li {
          +    margin-top: 10px
          +}
          +
          +.smart-credit-pkg .terms-of-list::-webkit-scrollbar-thumb {
          +    border-radius: 10px;
          +    background-color: #82aee2
          +}
          +
          +.smart-credit-pkg .terms-of-list::-webkit-scrollbar-track {
          +    border-radius: 10px
          +}
          +
          +.smart-credit-pkg .terms-of-list::-webkit-scrollbar {
          +    width: 6px
          +}
          +
          +.smart-credit-pkg .text-wrap-indent {
          +    padding-left: 3em;
          +    text-indent: -3em;
          +    display: inline-block
          +}
          +
          +.smart-credit-pkg .smartcredit-color {
          +}
          +
          +.smart-credit-pkg .creditarmor-color {
          +    color: #ce1f00
          +}
          +
          +.smart-credit-pkg .report-card .provider-logo {
          +    width: 55%;
          +}
          +
          +.smart-credit-pkg .p-3 {
          +    padding: 1rem!important;
          +}
          +
          +.smart-credit-pkg .pb-2, .smart-credit-pkg .py-2 {
          +    padding-bottom: 0.5rem!important;
          +}
          +
          +.smart-credit-pkg .p-2 {
          +    padding: 0.5rem!important;
          +}
          +
          +.smart-credit-pkg .pt-3, .smart-credit-pkg .py-3 {
          +    padding-top: 1rem!important;
          +}
          +.smart-credit-pkg .pb-2, .smart-credit-pkg .py-2 {
          +    padding-bottom: 0.5rem!important;
          +}
          +
          +.smart-credit-pkg .pb-2, .smart-credit-pkg .py-2 {
          +    padding-bottom: 0.5rem!important;
          +}
          +.smart-credit-pkg .pt-2, .smart-credit-pkg .py-2 {
          +    padding-top: 0.5rem!important;
          +}
          +
          +.smart-credit-logo {
          +    text-align: center;
          +}
          +
          +.smart-credit-logo img {
          +    width: 27%;
          +    margin-bottom: -12px;
          +}
          +
          +
          +
          +.smart-credit-pkg {
          +    width: 25%;
          +    padding-top: 3%;
          +    padding-right: 40px;
          +    font-family: "Lato", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
          +}
          +
          +
          diff --git a/resources/css/spinner.css b/resources/css/spinner.css
          new file mode 100644
          index 0000000..de217ee
          --- /dev/null
          +++ b/resources/css/spinner.css
          @@ -0,0 +1,3592 @@
          +@-moz-keyframes spinner-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes spinner-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@keyframes spinner-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.spinner-loader:not(:required) {
          +    -moz-animation: spinner-loader 1500ms infinite linear;
          +    -webkit-animation: spinner-loader 1500ms infinite linear;
          +    animation: spinner-loader 1500ms infinite linear;
          +    -moz-border-radius: 0.5em;
          +    -webkit-border-radius: 0.5em;
          +    border-radius: 0.5em;
          +    -moz-box-shadow: rgba(0, 0, 51, 0.3) 1.5em 0 0 0, rgba(0, 0, 51, 0.3) 1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) 0 1.5em 0 0, rgba(0, 0, 51, 0.3) -1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) -1.5em 0 0 0, rgba(0, 0, 51, 0.3) -1.1em -1.1em 0 0, rgba(0, 0, 51, 0.3) 0 -1.5em 0 0, rgba(0, 0, 51, 0.3) 1.1em -1.1em 0 0;
          +    -webkit-box-shadow: rgba(0, 0, 51, 0.3) 1.5em 0 0 0, rgba(0, 0, 51, 0.3) 1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) 0 1.5em 0 0, rgba(0, 0, 51, 0.3) -1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) -1.5em 0 0 0, rgba(0, 0, 51, 0.3) -1.1em -1.1em 0 0, rgba(0, 0, 51, 0.3) 0 -1.5em 0 0, rgba(0, 0, 51, 0.3) 1.1em -1.1em 0 0;
          +    box-shadow: rgba(0, 0, 51, 0.3) 1.5em 0 0 0, rgba(0, 0, 51, 0.3) 1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) 0 1.5em 0 0, rgba(0, 0, 51, 0.3) -1.1em 1.1em 0 0, rgba(0, 0, 51, 0.3) -1.5em 0 0 0, rgba(0, 0, 51, 0.3) -1.1em -1.1em 0 0, rgba(0, 0, 51, 0.3) 0 -1.5em 0 0, rgba(0, 0, 51, 0.3) 1.1em -1.1em 0 0;
          +    display: inline-block;
          +    font-size: 10px;
          +    width: 1em;
          +    height: 1em;
          +    margin: 1.5em;
          +    overflow: hidden;
          +    text-indent: 100%;
          +}
          +
          +@-moz-keyframes refreshing-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes refreshing-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@keyframes refreshing-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.refreshing-loader:not(:required) {
          +    -moz-animation: refreshing-loader 1000ms infinite linear;
          +    -webkit-animation: refreshing-loader 1000ms infinite linear;
          +    animation: refreshing-loader 1000ms infinite linear;
          +    -moz-border-radius: 2.4em;
          +    -webkit-border-radius: 2.4em;
          +    border-radius: 2.4em;
          +    border: 0.4em solid #9ac;
          +    border-left-color: transparent;
          +    color: transparent;
          +    display: inline-block;
          +    font-size: 10px;
          +    line-height: 1.2;
          +    width: 3em;
          +    height: 3em;
          +    text-indent: 100%;
          +}
          +.refreshing-loader:not(:required):after {
          +    display: block;
          +    border: 0.5em solid transparent;
          +    border-top-color: #9ac;
          +    border-left-color: #9ac;
          +    content: '';
          +    width: 0;
          +    height: 0;
          +    overflow: hidden;
          +    margin-left: -0.2em;
          +    margin-top: 1em;
          +}
          +
          +@-moz-keyframes throbber-loader {
          +    0% {
          +        background: #dde2e7;
          +    }
          +    10% {
          +        background: #6b9dc8;
          +    }
          +    40% {
          +        background: #dde2e7;
          +    }
          +}
          +@-webkit-keyframes throbber-loader {
          +    0% {
          +        background: #dde2e7;
          +    }
          +    10% {
          +        background: #6b9dc8;
          +    }
          +    40% {
          +        background: #dde2e7;
          +    }
          +}
          +@keyframes throbber-loader {
          +    0% {
          +        background: #dde2e7;
          +    }
          +    10% {
          +        background: #6b9dc8;
          +    }
          +    40% {
          +        background: #dde2e7;
          +    }
          +}
          +/* :not(:required) hides these rules from IE9 and below */
          +.throbber-loader:not(:required) {
          +    -moz-animation: throbber-loader 2000ms 300ms infinite ease-out;
          +    -webkit-animation: throbber-loader 2000ms 300ms infinite ease-out;
          +    animation: throbber-loader 2000ms 300ms infinite ease-out;
          +    background: #dde2e7;
          +    display: inline-block;
          +    position: relative;
          +    text-indent: -9999px;
          +    width: 0.9em;
          +    height: 1.5em;
          +    margin: 0 1.6em;
          +}
          +.throbber-loader:not(:required):before, .throbber-loader:not(:required):after {
          +    background: #dde2e7;
          +    content: '\x200B';
          +    display: inline-block;
          +    width: 0.9em;
          +    height: 1.5em;
          +    position: absolute;
          +    top: 0;
          +}
          +.throbber-loader:not(:required):before {
          +    -moz-animation: throbber-loader 2000ms 150ms infinite ease-out;
          +    -webkit-animation: throbber-loader 2000ms 150ms infinite ease-out;
          +    animation: throbber-loader 2000ms 150ms infinite ease-out;
          +    left: -1.6em;
          +}
          +.throbber-loader:not(:required):after {
          +    -moz-animation: throbber-loader 2000ms 450ms infinite ease-out;
          +    -webkit-animation: throbber-loader 2000ms 450ms infinite ease-out;
          +    animation: throbber-loader 2000ms 450ms infinite ease-out;
          +    right: -1.6em;
          +}
          +
          +@-moz-keyframes heartbeat-loader {
          +    0% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    14% {
          +        -moz-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    28% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    42% {
          +        -moz-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    70% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +}
          +@-webkit-keyframes heartbeat-loader {
          +    0% {
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    14% {
          +        -webkit-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    28% {
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    42% {
          +        -webkit-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    70% {
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +}
          +@keyframes heartbeat-loader {
          +    0% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        -ms-transform: rotate(45deg) scale(1);
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    14% {
          +        -moz-transform: rotate(45deg) scale(1.3);
          +        -ms-transform: rotate(45deg) scale(1.3);
          +        -webkit-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    28% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        -ms-transform: rotate(45deg) scale(1);
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +    42% {
          +        -moz-transform: rotate(45deg) scale(1.3);
          +        -ms-transform: rotate(45deg) scale(1.3);
          +        -webkit-transform: rotate(45deg) scale(1.3);
          +        transform: rotate(45deg) scale(1.3);
          +    }
          +    70% {
          +        -moz-transform: rotate(45deg) scale(1);
          +        -ms-transform: rotate(45deg) scale(1);
          +        -webkit-transform: rotate(45deg) scale(1);
          +        transform: rotate(45deg) scale(1);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.heartbeat-loader:not(:required) {
          +    -moz-animation: heartbeat-loader 1300ms ease 0s infinite normal;
          +    -webkit-animation: heartbeat-loader 1300ms ease 0s infinite normal;
          +    animation: heartbeat-loader 1300ms ease 0s infinite normal;
          +    display: inline-block;
          +    position: relative;
          +    overflow: hidden;
          +    text-indent: -9999px;
          +    width: 36px;
          +    height: 36px;
          +    -moz-transform: rotate(45deg) scale(1);
          +    -ms-transform: rotate(45deg) scale(1);
          +    -webkit-transform: rotate(45deg) scale(1);
          +    transform: rotate(45deg) scale(1);
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +.heartbeat-loader:not(:required):after, .heartbeat-loader:not(:required):before {
          +    position: absolute;
          +    content: "";
          +    background: #e87;
          +}
          +.heartbeat-loader:not(:required):before {
          +    -moz-border-radius-topleft: 12px;
          +    -webkit-border-top-left-radius: 12px;
          +    border-top-left-radius: 12px;
          +    -moz-border-radius-bottomleft: 12px;
          +    -webkit-border-bottom-left-radius: 12px;
          +    border-bottom-left-radius: 12px;
          +    top: 12px;
          +    left: 0;
          +    width: 36px;
          +    height: 24px;
          +}
          +.heartbeat-loader:not(:required):after {
          +    -moz-border-radius-topleft: 12px;
          +    -webkit-border-top-left-radius: 12px;
          +    border-top-left-radius: 12px;
          +    -moz-border-radius-topright: 12px;
          +    -webkit-border-top-right-radius: 12px;
          +    border-top-right-radius: 12px;
          +    top: 0;
          +    left: 12px;
          +    width: 24px;
          +    height: 12px;
          +}
          +
          +@-moz-keyframes gauge-loader {
          +    0% {
          +        -moz-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +    10% {
          +        -moz-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    20% {
          +        -moz-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    24% {
          +        -moz-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    40% {
          +        -moz-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    54% {
          +        -moz-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    56% {
          +        -moz-transform: rotate(78deg);
          +        transform: rotate(78deg);
          +    }
          +    58% {
          +        -moz-transform: rotate(73deg);
          +        transform: rotate(73deg);
          +    }
          +    60% {
          +        -moz-transform: rotate(75deg);
          +        transform: rotate(75deg);
          +    }
          +    62% {
          +        -moz-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    70% {
          +        -moz-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    80% {
          +        -moz-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    83% {
          +        -moz-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    86% {
          +        -moz-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    89% {
          +        -moz-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +}
          +@-webkit-keyframes gauge-loader {
          +    0% {
          +        -webkit-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +    10% {
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    20% {
          +        -webkit-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    24% {
          +        -webkit-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    40% {
          +        -webkit-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    54% {
          +        -webkit-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    56% {
          +        -webkit-transform: rotate(78deg);
          +        transform: rotate(78deg);
          +    }
          +    58% {
          +        -webkit-transform: rotate(73deg);
          +        transform: rotate(73deg);
          +    }
          +    60% {
          +        -webkit-transform: rotate(75deg);
          +        transform: rotate(75deg);
          +    }
          +    62% {
          +        -webkit-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    70% {
          +        -webkit-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    80% {
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    83% {
          +        -webkit-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    86% {
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    89% {
          +        -webkit-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +}
          +@keyframes gauge-loader {
          +    0% {
          +        -moz-transform: rotate(-50deg);
          +        -ms-transform: rotate(-50deg);
          +        -webkit-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +    10% {
          +        -moz-transform: rotate(20deg);
          +        -ms-transform: rotate(20deg);
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    20% {
          +        -moz-transform: rotate(60deg);
          +        -ms-transform: rotate(60deg);
          +        -webkit-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    24% {
          +        -moz-transform: rotate(60deg);
          +        -ms-transform: rotate(60deg);
          +        -webkit-transform: rotate(60deg);
          +        transform: rotate(60deg);
          +    }
          +    40% {
          +        -moz-transform: rotate(-20deg);
          +        -ms-transform: rotate(-20deg);
          +        -webkit-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    54% {
          +        -moz-transform: rotate(70deg);
          +        -ms-transform: rotate(70deg);
          +        -webkit-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    56% {
          +        -moz-transform: rotate(78deg);
          +        -ms-transform: rotate(78deg);
          +        -webkit-transform: rotate(78deg);
          +        transform: rotate(78deg);
          +    }
          +    58% {
          +        -moz-transform: rotate(73deg);
          +        -ms-transform: rotate(73deg);
          +        -webkit-transform: rotate(73deg);
          +        transform: rotate(73deg);
          +    }
          +    60% {
          +        -moz-transform: rotate(75deg);
          +        -ms-transform: rotate(75deg);
          +        -webkit-transform: rotate(75deg);
          +        transform: rotate(75deg);
          +    }
          +    62% {
          +        -moz-transform: rotate(70deg);
          +        -ms-transform: rotate(70deg);
          +        -webkit-transform: rotate(70deg);
          +        transform: rotate(70deg);
          +    }
          +    70% {
          +        -moz-transform: rotate(-20deg);
          +        -ms-transform: rotate(-20deg);
          +        -webkit-transform: rotate(-20deg);
          +        transform: rotate(-20deg);
          +    }
          +    80% {
          +        -moz-transform: rotate(20deg);
          +        -ms-transform: rotate(20deg);
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    83% {
          +        -moz-transform: rotate(25deg);
          +        -ms-transform: rotate(25deg);
          +        -webkit-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    86% {
          +        -moz-transform: rotate(20deg);
          +        -ms-transform: rotate(20deg);
          +        -webkit-transform: rotate(20deg);
          +        transform: rotate(20deg);
          +    }
          +    89% {
          +        -moz-transform: rotate(25deg);
          +        -ms-transform: rotate(25deg);
          +        -webkit-transform: rotate(25deg);
          +        transform: rotate(25deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(-50deg);
          +        -ms-transform: rotate(-50deg);
          +        -webkit-transform: rotate(-50deg);
          +        transform: rotate(-50deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.gauge-loader:not(:required) {
          +    background: #6ca;
          +    -moz-border-radius-topleft: 32px;
          +    -webkit-border-top-left-radius: 32px;
          +    border-top-left-radius: 32px;
          +    -moz-border-radius-topright: 32px;
          +    -webkit-border-top-right-radius: 32px;
          +    border-top-right-radius: 32px;
          +    display: inline-block;
          +    width: 64px;
          +    height: 32px;
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +}
          +.gauge-loader:not(:required)::before {
          +    -moz-animation: gauge-loader 4000ms infinite ease;
          +    -webkit-animation: gauge-loader 4000ms infinite ease;
          +    animation: gauge-loader 4000ms infinite ease;
          +    background: white;
          +    -moz-border-radius: 2px;
          +    -webkit-border-radius: 2px;
          +    border-radius: 2px;
          +    content: '';
          +    position: absolute;
          +    left: 30px;
          +    top: 5.33333px;
          +    width: 4px;
          +    height: 26.66667px;
          +    -moz-transform-origin: 50% 100%;
          +    -ms-transform-origin: 50% 100%;
          +    -webkit-transform-origin: 50% 100%;
          +    transform-origin: 50% 100%;
          +}
          +.gauge-loader:not(:required)::after {
          +    content: '';
          +    background: white;
          +    -moz-border-radius: 8px;
          +    -webkit-border-radius: 8px;
          +    border-radius: 8px;
          +    position: absolute;
          +    left: 25.6px;
          +    top: 25.6px;
          +    width: 12.8px;
          +    height: 12.8px;
          +}
          +
          +@-moz-keyframes timer-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes timer-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@keyframes timer-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.timer-loader:not(:required) {
          +    border: 6px solid #c8d;
          +    -moz-border-radius: 24px;
          +    -webkit-border-radius: 24px;
          +    border-radius: 24px;
          +    -moz-box-sizing: border-box;
          +    -webkit-box-sizing: border-box;
          +    box-sizing: border-box;
          +    display: inline-block;
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    width: 48px;
          +    height: 48px;
          +}
          +.timer-loader:not(:required)::before {
          +    -moz-animation: timer-loader 1250ms infinite linear;
          +    -webkit-animation: timer-loader 1250ms infinite linear;
          +    animation: timer-loader 1250ms infinite linear;
          +    -moz-transform-origin: 3px 3px;
          +    -ms-transform-origin: 3px 3px;
          +    -webkit-transform-origin: 3px 3px;
          +    transform-origin: 3px 3px;
          +    background: #c8d;
          +    -moz-border-radius: 3px;
          +    -webkit-border-radius: 3px;
          +    border-radius: 3px;
          +    content: '';
          +    display: block;
          +    position: absolute;
          +    width: 6px;
          +    height: 19.2px;
          +    left: 15px;
          +    top: 15px;
          +}
          +.timer-loader:not(:required)::after {
          +    -moz-animation: timer-loader 15000ms infinite linear;
          +    -webkit-animation: timer-loader 15000ms infinite linear;
          +    animation: timer-loader 15000ms infinite linear;
          +    -moz-transform-origin: 3px 3px;
          +    -ms-transform-origin: 3px 3px;
          +    -webkit-transform-origin: 3px 3px;
          +    transform-origin: 3px 3px;
          +    background: #c8d;
          +    -moz-border-radius: 3px;
          +    -webkit-border-radius: 3px;
          +    border-radius: 3px;
          +    content: '';
          +    display: block;
          +    position: absolute;
          +    width: 6px;
          +    height: 16px;
          +    left: 15px;
          +    top: 15px;
          +}
          +
          +@-moz-keyframes three-quarters-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes three-quarters-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@keyframes three-quarters-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.three-quarters-loader:not(:required) {
          +    -moz-animation: three-quarters-loader 1250ms infinite linear;
          +    -webkit-animation: three-quarters-loader 1250ms infinite linear;
          +    animation: three-quarters-loader 1250ms infinite linear;
          +    border: 8px solid #38e;
          +    border-right-color: transparent;
          +    border-radius: 16px;
          +    box-sizing: border-box;
          +    display: inline-block;
          +    position: relative;
          +    overflow: hidden;
          +    text-indent: -9999px;
          +    width: 32px;
          +    height: 32px;
          +}
          +
          +@-moz-keyframes wobblebar-loader {
          +    0% {
          +        left: 4px;
          +    }
          +    3% {
          +        left: 104px;
          +    }
          +    6% {
          +        left: 4px;
          +    }
          +    9% {
          +        left: 104px;
          +    }
          +    12% {
          +        left: 4px;
          +    }
          +    15% {
          +        left: 104px;
          +    }
          +    18% {
          +        left: 32px;
          +    }
          +    27% {
          +        left: 32px;
          +    }
          +    30% {
          +        left: 104px;
          +    }
          +    33% {
          +        left: 4px;
          +    }
          +    36% {
          +        left: 104px;
          +    }
          +    39% {
          +        left: 4px;
          +    }
          +    42% {
          +        left: 104px;
          +    }
          +    45% {
          +        left: 4px;
          +    }
          +    48% {
          +        left: 104px;
          +    }
          +    51% {
          +        left: 52px;
          +    }
          +    63% {
          +        left: 52px;
          +    }
          +    66% {
          +        left: 4px;
          +    }
          +    69% {
          +        left: 104px;
          +    }
          +    72% {
          +        left: 4px;
          +    }
          +    75% {
          +        left: 104px;
          +    }
          +    78% {
          +        left: 4px;
          +    }
          +    81% {
          +        left: 104px;
          +    }
          +    84% {
          +        left: 72px;
          +    }
          +    94% {
          +        left: 72px;
          +    }
          +    97% {
          +        left: 104px;
          +    }
          +}
          +@-webkit-keyframes wobblebar-loader {
          +    0% {
          +        left: 4px;
          +    }
          +    3% {
          +        left: 104px;
          +    }
          +    6% {
          +        left: 4px;
          +    }
          +    9% {
          +        left: 104px;
          +    }
          +    12% {
          +        left: 4px;
          +    }
          +    15% {
          +        left: 104px;
          +    }
          +    18% {
          +        left: 32px;
          +    }
          +    27% {
          +        left: 32px;
          +    }
          +    30% {
          +        left: 104px;
          +    }
          +    33% {
          +        left: 4px;
          +    }
          +    36% {
          +        left: 104px;
          +    }
          +    39% {
          +        left: 4px;
          +    }
          +    42% {
          +        left: 104px;
          +    }
          +    45% {
          +        left: 4px;
          +    }
          +    48% {
          +        left: 104px;
          +    }
          +    51% {
          +        left: 52px;
          +    }
          +    63% {
          +        left: 52px;
          +    }
          +    66% {
          +        left: 4px;
          +    }
          +    69% {
          +        left: 104px;
          +    }
          +    72% {
          +        left: 4px;
          +    }
          +    75% {
          +        left: 104px;
          +    }
          +    78% {
          +        left: 4px;
          +    }
          +    81% {
          +        left: 104px;
          +    }
          +    84% {
          +        left: 72px;
          +    }
          +    94% {
          +        left: 72px;
          +    }
          +    97% {
          +        left: 104px;
          +    }
          +}
          +@keyframes wobblebar-loader {
          +    0% {
          +        left: 4px;
          +    }
          +    3% {
          +        left: 104px;
          +    }
          +    6% {
          +        left: 4px;
          +    }
          +    9% {
          +        left: 104px;
          +    }
          +    12% {
          +        left: 4px;
          +    }
          +    15% {
          +        left: 104px;
          +    }
          +    18% {
          +        left: 32px;
          +    }
          +    27% {
          +        left: 32px;
          +    }
          +    30% {
          +        left: 104px;
          +    }
          +    33% {
          +        left: 4px;
          +    }
          +    36% {
          +        left: 104px;
          +    }
          +    39% {
          +        left: 4px;
          +    }
          +    42% {
          +        left: 104px;
          +    }
          +    45% {
          +        left: 4px;
          +    }
          +    48% {
          +        left: 104px;
          +    }
          +    51% {
          +        left: 52px;
          +    }
          +    63% {
          +        left: 52px;
          +    }
          +    66% {
          +        left: 4px;
          +    }
          +    69% {
          +        left: 104px;
          +    }
          +    72% {
          +        left: 4px;
          +    }
          +    75% {
          +        left: 104px;
          +    }
          +    78% {
          +        left: 4px;
          +    }
          +    81% {
          +        left: 104px;
          +    }
          +    84% {
          +        left: 72px;
          +    }
          +    94% {
          +        left: 72px;
          +    }
          +    97% {
          +        left: 104px;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.wobblebar-loader:not(:required) {
          +    background: #a9d;
          +    -moz-border-radius: 10.66667px;
          +    -webkit-border-radius: 10.66667px;
          +    border-radius: 10.66667px;
          +    display: inline-block;
          +    overflow: hidden;
          +    text-indent: -9999px;
          +    width: 128px;
          +    height: 21.33333px;
          +    position: relative;
          +}
          +.wobblebar-loader:not(:required)::after {
          +    -moz-animation: wobblebar-loader 15000ms infinite ease;
          +    -webkit-animation: wobblebar-loader 15000ms infinite ease;
          +    animation: wobblebar-loader 15000ms infinite ease;
          +    background: white;
          +    display: block;
          +    -moz-border-radius: 7.11111px;
          +    -webkit-border-radius: 7.11111px;
          +    border-radius: 7.11111px;
          +    content: '';
          +    position: absolute;
          +    top: 3.55556px;
          +    left: 4px;
          +    width: 21.33333px;
          +    height: 14.22222px;
          +}
          +
          +@-moz-keyframes atebits-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    3% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    10% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    13% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    20% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    23% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    30% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    33% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    40% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    43% {
          +        -moz-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    53% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    60% {
          +        -moz-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    63% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    70% {
          +        -moz-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    73% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    80% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    83% {
          +        -moz-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    90% {
          +        -moz-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    93% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +@-webkit-keyframes atebits-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    3% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    10% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    13% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    20% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    23% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    30% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    33% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    40% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    43% {
          +        -webkit-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    50% {
          +        -webkit-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    53% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    60% {
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    63% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    70% {
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    73% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    80% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    83% {
          +        -webkit-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    90% {
          +        -webkit-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    93% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +@keyframes atebits-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    3% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    10% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    13% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    20% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    23% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    30% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    33% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    40% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    43% {
          +        -moz-transform: rotate(270deg);
          +        -ms-transform: rotate(270deg);
          +        -webkit-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(270deg);
          +        -ms-transform: rotate(270deg);
          +        -webkit-transform: rotate(270deg);
          +        transform: rotate(270deg);
          +    }
          +    53% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    60% {
          +        -moz-transform: rotate(180deg);
          +        -ms-transform: rotate(180deg);
          +        -webkit-transform: rotate(180deg);
          +        transform: rotate(180deg);
          +    }
          +    63% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    70% {
          +        -moz-transform: rotate(90deg);
          +        -ms-transform: rotate(90deg);
          +        -webkit-transform: rotate(90deg);
          +        transform: rotate(90deg);
          +    }
          +    73% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    80% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    83% {
          +        -moz-transform: rotate(-90deg);
          +        -ms-transform: rotate(-90deg);
          +        -webkit-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    90% {
          +        -moz-transform: rotate(-90deg);
          +        -ms-transform: rotate(-90deg);
          +        -webkit-transform: rotate(-90deg);
          +        transform: rotate(-90deg);
          +    }
          +    93% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.atebits-loader:not(:required) {
          +    background: rgba(0, 0, 0, 0.5);
          +    display: inline-block;
          +    width: 9px;
          +    height: 9px;
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    -moz-box-shadow: rgba(0, 0, 0, 0.5) -12px -12px 0 0, rgba(0, 0, 0, 0.5) 12px -12px 0 0, rgba(0, 0, 0, 0.5) -12px 0 0 0, rgba(0, 0, 0, 0.5) 12px 0 0 0, rgba(0, 0, 0, 0.5) -12px 12px 0 0, rgba(0, 0, 0, 0.5) 0 12px 0 0, rgba(0, 0, 0, 0.5) 12px 12px 0 0;
          +    -webkit-box-shadow: rgba(0, 0, 0, 0.5) -12px -12px 0 0, rgba(0, 0, 0, 0.5) 12px -12px 0 0, rgba(0, 0, 0, 0.5) -12px 0 0 0, rgba(0, 0, 0, 0.5) 12px 0 0 0, rgba(0, 0, 0, 0.5) -12px 12px 0 0, rgba(0, 0, 0, 0.5) 0 12px 0 0, rgba(0, 0, 0, 0.5) 12px 12px 0 0;
          +    box-shadow: rgba(0, 0, 0, 0.5) -12px -12px 0 0, rgba(0, 0, 0, 0.5) 12px -12px 0 0, rgba(0, 0, 0, 0.5) -12px 0 0 0, rgba(0, 0, 0, 0.5) 12px 0 0 0, rgba(0, 0, 0, 0.5) -12px 12px 0 0, rgba(0, 0, 0, 0.5) 0 12px 0 0, rgba(0, 0, 0, 0.5) 12px 12px 0 0;
          +    -moz-animation: atebits-loader 8s infinite ease-in-out;
          +    -webkit-animation: atebits-loader 8s infinite ease-in-out;
          +    animation: atebits-loader 8s infinite ease-in-out;
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +
          +@-moz-keyframes whirly-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes whirly-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +@keyframes whirly-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.whirly-loader:not(:required) {
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 8px;
          +    height: 8px;
          +    background: transparent;
          +    -moz-border-radius: 100%;
          +    -webkit-border-radius: 100%;
          +    border-radius: 100%;
          +    -moz-box-shadow: #e66 0px 26px 0 6px, #e66 0.90971px 26.05079px 0 5.93333px, #e66 1.82297px 26.06967px 0 5.86667px, #e66 2.73865px 26.05647px 0 5.8px, #e66 3.65561px 26.01104px 0 5.73333px, #e66 4.57274px 25.93327px 0 5.66667px, #e66 5.48887px 25.8231px 0 5.6px, #e66 6.40287px 25.68049px 0 5.53333px, #e66 7.31358px 25.50548px 0 5.46667px, #e66 8.21985px 25.2981px 0 5.4px, #e66 9.12054px 25.05847px 0 5.33333px, #e66 10.01448px 24.78672px 0 5.26667px, #e66 10.90054px 24.48302px 0 5.2px, #e66 11.77757px 24.1476px 0 5.13333px, #e66 12.64443px 23.78072px 0 5.06667px, #e66 13.5px 23.38269px 0 5px, #e66 14.34315px 22.95384px 0 4.93333px, #e66 15.17277px 22.49455px 0 4.86667px, #e66 15.98776px 22.00526px 0 4.8px, #e66 16.78704px 21.48643px 0 4.73333px, #e66 17.56953px 20.93855px 0 4.66667px, #e66 18.33418px 20.36217px 0 4.6px, #e66 19.07995px 19.75787px 0 4.53333px, #e66 19.80582px 19.12626px 0 4.46667px, #e66 20.5108px 18.468px 0 4.4px, #e66 21.1939px 17.78379px 0 4.33333px, #e66 21.85416px 17.07434px 0 4.26667px, #e66 22.49067px 16.34043px 0 4.2px, #e66 23.10251px 15.58284px 0 4.13333px, #e66 23.68881px 14.80241px 0 4.06667px, #e66 24.24871px 14px 0 4px, #e66 24.7814px 13.1765px 0 3.93333px, #e66 25.28607px 12.33284px 0 3.86667px, #e66 25.76198px 11.46997px 0 3.8px, #e66 26.2084px 10.58888px 0 3.73333px, #e66 26.62462px 9.69057px 0 3.66667px, #e66 27.01001px 8.77608px 0 3.6px, #e66 27.36392px 7.84648px 0 3.53333px, #e66 27.68577px 6.90284px 0 3.46667px, #e66 27.97502px 5.94627px 0 3.4px, #e66 28.23116px 4.97791px 0 3.33333px, #e66 28.4537px 3.99891px 0 3.26667px, #e66 28.64223px 3.01042px 0 3.2px, #e66 28.79635px 2.01364px 0 3.13333px, #e66 28.91571px 1.00976px 0 3.06667px, #e66 29px 0px 0 3px, #e66 29.04896px -1.01441px 0 2.93333px, #e66 29.06237px -2.03224px 0 2.86667px, #e66 29.04004px -3.05223px 0 2.8px, #e66 28.98185px -4.07313px 0 2.73333px, #e66 28.88769px -5.09368px 0 2.66667px, #e66 28.75754px -6.1126px 0 2.6px, #e66 28.59138px -7.12863px 0 2.53333px, #e66 28.38926px -8.14049px 0 2.46667px, #e66 28.15127px -9.1469px 0 2.4px, #e66 27.87755px -10.1466px 0 2.33333px, #e66 27.56827px -11.1383px 0 2.26667px, #e66 27.22365px -12.12075px 0 2.2px, #e66 26.84398px -13.09268px 0 2.13333px, #e66 26.42956px -14.05285px 0 2.06667px, #e66 25.98076px -15px 0 2px, #e66 25.49798px -15.93291px 0 1.93333px, #e66 24.98167px -16.85035px 0 1.86667px, #e66 24.43231px -17.75111px 0 1.8px, #e66 23.85046px -18.63402px 0 1.73333px, #e66 23.23668px -19.49789px 0 1.66667px, #e66 22.5916px -20.34157px 0 1.6px, #e66 21.91589px -21.16393px 0 1.53333px, #e66 21.21024px -21.96384px 0 1.46667px, #e66 20.4754px -22.74023px 0 1.4px, #e66 19.71215px -23.49203px 0 1.33333px, #e66 18.92133px -24.2182px 0 1.26667px, #e66 18.10379px -24.91772px 0 1.2px, #e66 17.26042px -25.58963px 0 1.13333px, #e66 16.39217px -26.23295px 0 1.06667px, #e66 15.5px -26.84679px 0 1px, #e66 14.58492px -27.43024px 0 0.93333px, #e66 13.64796px -27.98245px 0 0.86667px, #e66 12.69018px -28.50262px 0 0.8px, #e66 11.7127px -28.98995px 0 0.73333px, #e66 10.71663px -29.4437px 0 0.66667px, #e66 9.70313px -29.86317px 0 0.6px, #e66 8.67339px -30.2477px 0 0.53333px, #e66 7.6286px -30.59666px 0 0.46667px, #e66 6.57001px -30.90946px 0 0.4px, #e66 5.49886px -31.18558px 0 0.33333px, #e66 4.41643px -31.42451px 0 0.26667px, #e66 3.32401px -31.6258px 0 0.2px, #e66 2.22291px -31.78904px 0 0.13333px, #e66 1.11446px -31.91388px 0 0.06667px, #e66 0px -32px 0 0px, #e66 -1.11911px -32.04713px 0 -0.06667px, #e66 -2.24151px -32.05506px 0 -0.13333px, #e66 -3.36582px -32.02361px 0 -0.2px, #e66 -4.49065px -31.95265px 0 -0.26667px, #e66 -5.61462px -31.84212px 0 -0.33333px, #e66 -6.73634px -31.69198px 0 -0.4px, #e66 -7.8544px -31.50227px 0 -0.46667px, #e66 -8.9674px -31.27305px 0 -0.53333px, #e66 -10.07395px -31.00444px 0 -0.6px, #e66 -11.17266px -30.69663px 0 -0.66667px, #e66 -12.26212px -30.34982px 0 -0.73333px, #e66 -13.34096px -29.96429px 0 -0.8px, #e66 -14.4078px -29.54036px 0 -0.86667px, #e66 -15.46126px -29.07841px 0 -0.93333px, #e66 -16.5px -28.57884px 0 -1px, #e66 -17.52266px -28.04212px 0 -1.06667px, #e66 -18.52792px -27.46878px 0 -1.13333px, #e66 -19.51447px -26.85936px 0 -1.2px, #e66 -20.48101px -26.21449px 0 -1.26667px, #e66 -21.42625px -25.53481px 0 -1.33333px, #e66 -22.34896px -24.82104px 0 -1.4px, #e66 -23.2479px -24.07391px 0 -1.46667px, #e66 -24.12186px -23.29421px 0 -1.53333px, #e66 -24.96967px -22.48279px 0 -1.6px, #e66 -25.79016px -21.64052px 0 -1.66667px, #e66 -26.58223px -20.76831px 0 -1.73333px, #e66 -27.34477px -19.86714px 0 -1.8px, #e66 -28.07674px -18.938px 0 -1.86667px, #e66 -28.7771px -17.98193px 0 -1.93333px, #e66 -29.44486px -17px 0 -2px, #e66 -30.07908px -15.99333px 0 -2.06667px, #e66 -30.67884px -14.96307px 0 -2.13333px, #e66 -31.24325px -13.91039px 0 -2.2px, #e66 -31.7715px -12.83652px 0 -2.26667px, #e66 -32.26278px -11.74269px 0 -2.33333px, #e66 -32.71634px -10.63018px 0 -2.4px, #e66 -33.13149px -9.5003px 0 -2.46667px, #e66 -33.50755px -8.35437px 0 -2.53333px, #e66 -33.84391px -7.19374px 0 -2.6px, #e66 -34.14px -6.0198px 0 -2.66667px, #e66 -34.39531px -4.83395px 0 -2.73333px, #e66 -34.60936px -3.63759px 0 -2.8px, #e66 -34.78173px -2.43218px 0 -2.86667px, #e66 -34.91205px -1.21916px 0 -2.93333px, #e66 -35px 0px 0 -3px, #e66 -35.04531px 1.22381px 0 -3.06667px, #e66 -35.04775px 2.45078px 0 -3.13333px, #e66 -35.00717px 3.6794px 0 -3.2px, #e66 -34.92345px 4.90817px 0 -3.26667px, #e66 -34.79654px 6.13557px 0 -3.33333px, #e66 -34.62643px 7.36007px 0 -3.4px, #e66 -34.41316px 8.58016px 0 -3.46667px, #e66 -34.15683px 9.79431px 0 -3.53333px, #e66 -33.85761px 11.001px 0 -3.6px, #e66 -33.5157px 12.19872px 0 -3.66667px, #e66 -33.13137px 13.38594px 0 -3.73333px, #e66 -32.70493px 14.56117px 0 -3.8px, #e66 -32.23675px 15.72291px 0 -3.86667px, #e66 -31.72725px 16.86968px 0 -3.93333px, #e66 -31.17691px 18px 0 -4px, #e66 -30.58627px 19.11242px 0 -4.06667px, #e66 -29.95589px 20.2055px 0 -4.13333px, #e66 -29.28642px 21.27783px 0 -4.2px, #e66 -28.57852px 22.32799px 0 -4.26667px, #e66 -27.83295px 23.35462px 0 -4.33333px, #e66 -27.05047px 24.35635px 0 -4.4px, #e66 -26.23192px 25.33188px 0 -4.46667px, #e66 -25.37819px 26.27988px 0 -4.53333px, #e66 -24.49018px 27.1991px 0 -4.6px, #e66 -23.56888px 28.0883px 0 -4.66667px, #e66 -22.6153px 28.94626px 0 -4.73333px, #e66 -21.6305px 29.77183px 0 -4.8px, #e66 -20.61558px 30.56385px 0 -4.86667px, #e66 -19.57168px 31.32124px 0 -4.93333px, #e66 -18.5px 32.04294px 0 -5px, #e66 -17.40175px 32.72792px 0 -5.06667px, #e66 -16.27818px 33.37522px 0 -5.13333px, #e66 -15.1306px 33.98389px 0 -5.2px, #e66 -13.96034px 34.55305px 0 -5.26667px, #e66 -12.76875px 35.08186px 0 -5.33333px, #e66 -11.55724px 35.56951px 0 -5.4px, #e66 -10.32721px 36.01527px 0 -5.46667px, #e66 -9.08014px 36.41843px 0 -5.53333px, #e66 -7.81748px 36.77835px 0 -5.6px, #e66 -6.54075px 37.09443px 0 -5.66667px, #e66 -5.25147px 37.36612px 0 -5.73333px, #e66 -3.95118px 37.59293px 0 -5.8px, #e66 -2.64145px 37.77443px 0 -5.86667px, #e66 -1.32385px 37.91023px 0 -5.93333px;
          +    -webkit-box-shadow: #e66 0px 26px 0 6px, #e66 0.90971px 26.05079px 0 5.93333px, #e66 1.82297px 26.06967px 0 5.86667px, #e66 2.73865px 26.05647px 0 5.8px, #e66 3.65561px 26.01104px 0 5.73333px, #e66 4.57274px 25.93327px 0 5.66667px, #e66 5.48887px 25.8231px 0 5.6px, #e66 6.40287px 25.68049px 0 5.53333px, #e66 7.31358px 25.50548px 0 5.46667px, #e66 8.21985px 25.2981px 0 5.4px, #e66 9.12054px 25.05847px 0 5.33333px, #e66 10.01448px 24.78672px 0 5.26667px, #e66 10.90054px 24.48302px 0 5.2px, #e66 11.77757px 24.1476px 0 5.13333px, #e66 12.64443px 23.78072px 0 5.06667px, #e66 13.5px 23.38269px 0 5px, #e66 14.34315px 22.95384px 0 4.93333px, #e66 15.17277px 22.49455px 0 4.86667px, #e66 15.98776px 22.00526px 0 4.8px, #e66 16.78704px 21.48643px 0 4.73333px, #e66 17.56953px 20.93855px 0 4.66667px, #e66 18.33418px 20.36217px 0 4.6px, #e66 19.07995px 19.75787px 0 4.53333px, #e66 19.80582px 19.12626px 0 4.46667px, #e66 20.5108px 18.468px 0 4.4px, #e66 21.1939px 17.78379px 0 4.33333px, #e66 21.85416px 17.07434px 0 4.26667px, #e66 22.49067px 16.34043px 0 4.2px, #e66 23.10251px 15.58284px 0 4.13333px, #e66 23.68881px 14.80241px 0 4.06667px, #e66 24.24871px 14px 0 4px, #e66 24.7814px 13.1765px 0 3.93333px, #e66 25.28607px 12.33284px 0 3.86667px, #e66 25.76198px 11.46997px 0 3.8px, #e66 26.2084px 10.58888px 0 3.73333px, #e66 26.62462px 9.69057px 0 3.66667px, #e66 27.01001px 8.77608px 0 3.6px, #e66 27.36392px 7.84648px 0 3.53333px, #e66 27.68577px 6.90284px 0 3.46667px, #e66 27.97502px 5.94627px 0 3.4px, #e66 28.23116px 4.97791px 0 3.33333px, #e66 28.4537px 3.99891px 0 3.26667px, #e66 28.64223px 3.01042px 0 3.2px, #e66 28.79635px 2.01364px 0 3.13333px, #e66 28.91571px 1.00976px 0 3.06667px, #e66 29px 0px 0 3px, #e66 29.04896px -1.01441px 0 2.93333px, #e66 29.06237px -2.03224px 0 2.86667px, #e66 29.04004px -3.05223px 0 2.8px, #e66 28.98185px -4.07313px 0 2.73333px, #e66 28.88769px -5.09368px 0 2.66667px, #e66 28.75754px -6.1126px 0 2.6px, #e66 28.59138px -7.12863px 0 2.53333px, #e66 28.38926px -8.14049px 0 2.46667px, #e66 28.15127px -9.1469px 0 2.4px, #e66 27.87755px -10.1466px 0 2.33333px, #e66 27.56827px -11.1383px 0 2.26667px, #e66 27.22365px -12.12075px 0 2.2px, #e66 26.84398px -13.09268px 0 2.13333px, #e66 26.42956px -14.05285px 0 2.06667px, #e66 25.98076px -15px 0 2px, #e66 25.49798px -15.93291px 0 1.93333px, #e66 24.98167px -16.85035px 0 1.86667px, #e66 24.43231px -17.75111px 0 1.8px, #e66 23.85046px -18.63402px 0 1.73333px, #e66 23.23668px -19.49789px 0 1.66667px, #e66 22.5916px -20.34157px 0 1.6px, #e66 21.91589px -21.16393px 0 1.53333px, #e66 21.21024px -21.96384px 0 1.46667px, #e66 20.4754px -22.74023px 0 1.4px, #e66 19.71215px -23.49203px 0 1.33333px, #e66 18.92133px -24.2182px 0 1.26667px, #e66 18.10379px -24.91772px 0 1.2px, #e66 17.26042px -25.58963px 0 1.13333px, #e66 16.39217px -26.23295px 0 1.06667px, #e66 15.5px -26.84679px 0 1px, #e66 14.58492px -27.43024px 0 0.93333px, #e66 13.64796px -27.98245px 0 0.86667px, #e66 12.69018px -28.50262px 0 0.8px, #e66 11.7127px -28.98995px 0 0.73333px, #e66 10.71663px -29.4437px 0 0.66667px, #e66 9.70313px -29.86317px 0 0.6px, #e66 8.67339px -30.2477px 0 0.53333px, #e66 7.6286px -30.59666px 0 0.46667px, #e66 6.57001px -30.90946px 0 0.4px, #e66 5.49886px -31.18558px 0 0.33333px, #e66 4.41643px -31.42451px 0 0.26667px, #e66 3.32401px -31.6258px 0 0.2px, #e66 2.22291px -31.78904px 0 0.13333px, #e66 1.11446px -31.91388px 0 0.06667px, #e66 0px -32px 0 0px, #e66 -1.11911px -32.04713px 0 -0.06667px, #e66 -2.24151px -32.05506px 0 -0.13333px, #e66 -3.36582px -32.02361px 0 -0.2px, #e66 -4.49065px -31.95265px 0 -0.26667px, #e66 -5.61462px -31.84212px 0 -0.33333px, #e66 -6.73634px -31.69198px 0 -0.4px, #e66 -7.8544px -31.50227px 0 -0.46667px, #e66 -8.9674px -31.27305px 0 -0.53333px, #e66 -10.07395px -31.00444px 0 -0.6px, #e66 -11.17266px -30.69663px 0 -0.66667px, #e66 -12.26212px -30.34982px 0 -0.73333px, #e66 -13.34096px -29.96429px 0 -0.8px, #e66 -14.4078px -29.54036px 0 -0.86667px, #e66 -15.46126px -29.07841px 0 -0.93333px, #e66 -16.5px -28.57884px 0 -1px, #e66 -17.52266px -28.04212px 0 -1.06667px, #e66 -18.52792px -27.46878px 0 -1.13333px, #e66 -19.51447px -26.85936px 0 -1.2px, #e66 -20.48101px -26.21449px 0 -1.26667px, #e66 -21.42625px -25.53481px 0 -1.33333px, #e66 -22.34896px -24.82104px 0 -1.4px, #e66 -23.2479px -24.07391px 0 -1.46667px, #e66 -24.12186px -23.29421px 0 -1.53333px, #e66 -24.96967px -22.48279px 0 -1.6px, #e66 -25.79016px -21.64052px 0 -1.66667px, #e66 -26.58223px -20.76831px 0 -1.73333px, #e66 -27.34477px -19.86714px 0 -1.8px, #e66 -28.07674px -18.938px 0 -1.86667px, #e66 -28.7771px -17.98193px 0 -1.93333px, #e66 -29.44486px -17px 0 -2px, #e66 -30.07908px -15.99333px 0 -2.06667px, #e66 -30.67884px -14.96307px 0 -2.13333px, #e66 -31.24325px -13.91039px 0 -2.2px, #e66 -31.7715px -12.83652px 0 -2.26667px, #e66 -32.26278px -11.74269px 0 -2.33333px, #e66 -32.71634px -10.63018px 0 -2.4px, #e66 -33.13149px -9.5003px 0 -2.46667px, #e66 -33.50755px -8.35437px 0 -2.53333px, #e66 -33.84391px -7.19374px 0 -2.6px, #e66 -34.14px -6.0198px 0 -2.66667px, #e66 -34.39531px -4.83395px 0 -2.73333px, #e66 -34.60936px -3.63759px 0 -2.8px, #e66 -34.78173px -2.43218px 0 -2.86667px, #e66 -34.91205px -1.21916px 0 -2.93333px, #e66 -35px 0px 0 -3px, #e66 -35.04531px 1.22381px 0 -3.06667px, #e66 -35.04775px 2.45078px 0 -3.13333px, #e66 -35.00717px 3.6794px 0 -3.2px, #e66 -34.92345px 4.90817px 0 -3.26667px, #e66 -34.79654px 6.13557px 0 -3.33333px, #e66 -34.62643px 7.36007px 0 -3.4px, #e66 -34.41316px 8.58016px 0 -3.46667px, #e66 -34.15683px 9.79431px 0 -3.53333px, #e66 -33.85761px 11.001px 0 -3.6px, #e66 -33.5157px 12.19872px 0 -3.66667px, #e66 -33.13137px 13.38594px 0 -3.73333px, #e66 -32.70493px 14.56117px 0 -3.8px, #e66 -32.23675px 15.72291px 0 -3.86667px, #e66 -31.72725px 16.86968px 0 -3.93333px, #e66 -31.17691px 18px 0 -4px, #e66 -30.58627px 19.11242px 0 -4.06667px, #e66 -29.95589px 20.2055px 0 -4.13333px, #e66 -29.28642px 21.27783px 0 -4.2px, #e66 -28.57852px 22.32799px 0 -4.26667px, #e66 -27.83295px 23.35462px 0 -4.33333px, #e66 -27.05047px 24.35635px 0 -4.4px, #e66 -26.23192px 25.33188px 0 -4.46667px, #e66 -25.37819px 26.27988px 0 -4.53333px, #e66 -24.49018px 27.1991px 0 -4.6px, #e66 -23.56888px 28.0883px 0 -4.66667px, #e66 -22.6153px 28.94626px 0 -4.73333px, #e66 -21.6305px 29.77183px 0 -4.8px, #e66 -20.61558px 30.56385px 0 -4.86667px, #e66 -19.57168px 31.32124px 0 -4.93333px, #e66 -18.5px 32.04294px 0 -5px, #e66 -17.40175px 32.72792px 0 -5.06667px, #e66 -16.27818px 33.37522px 0 -5.13333px, #e66 -15.1306px 33.98389px 0 -5.2px, #e66 -13.96034px 34.55305px 0 -5.26667px, #e66 -12.76875px 35.08186px 0 -5.33333px, #e66 -11.55724px 35.56951px 0 -5.4px, #e66 -10.32721px 36.01527px 0 -5.46667px, #e66 -9.08014px 36.41843px 0 -5.53333px, #e66 -7.81748px 36.77835px 0 -5.6px, #e66 -6.54075px 37.09443px 0 -5.66667px, #e66 -5.25147px 37.36612px 0 -5.73333px, #e66 -3.95118px 37.59293px 0 -5.8px, #e66 -2.64145px 37.77443px 0 -5.86667px, #e66 -1.32385px 37.91023px 0 -5.93333px;
          +    box-shadow: #e66 0px 26px 0 6px, #e66 0.90971px 26.05079px 0 5.93333px, #e66 1.82297px 26.06967px 0 5.86667px, #e66 2.73865px 26.05647px 0 5.8px, #e66 3.65561px 26.01104px 0 5.73333px, #e66 4.57274px 25.93327px 0 5.66667px, #e66 5.48887px 25.8231px 0 5.6px, #e66 6.40287px 25.68049px 0 5.53333px, #e66 7.31358px 25.50548px 0 5.46667px, #e66 8.21985px 25.2981px 0 5.4px, #e66 9.12054px 25.05847px 0 5.33333px, #e66 10.01448px 24.78672px 0 5.26667px, #e66 10.90054px 24.48302px 0 5.2px, #e66 11.77757px 24.1476px 0 5.13333px, #e66 12.64443px 23.78072px 0 5.06667px, #e66 13.5px 23.38269px 0 5px, #e66 14.34315px 22.95384px 0 4.93333px, #e66 15.17277px 22.49455px 0 4.86667px, #e66 15.98776px 22.00526px 0 4.8px, #e66 16.78704px 21.48643px 0 4.73333px, #e66 17.56953px 20.93855px 0 4.66667px, #e66 18.33418px 20.36217px 0 4.6px, #e66 19.07995px 19.75787px 0 4.53333px, #e66 19.80582px 19.12626px 0 4.46667px, #e66 20.5108px 18.468px 0 4.4px, #e66 21.1939px 17.78379px 0 4.33333px, #e66 21.85416px 17.07434px 0 4.26667px, #e66 22.49067px 16.34043px 0 4.2px, #e66 23.10251px 15.58284px 0 4.13333px, #e66 23.68881px 14.80241px 0 4.06667px, #e66 24.24871px 14px 0 4px, #e66 24.7814px 13.1765px 0 3.93333px, #e66 25.28607px 12.33284px 0 3.86667px, #e66 25.76198px 11.46997px 0 3.8px, #e66 26.2084px 10.58888px 0 3.73333px, #e66 26.62462px 9.69057px 0 3.66667px, #e66 27.01001px 8.77608px 0 3.6px, #e66 27.36392px 7.84648px 0 3.53333px, #e66 27.68577px 6.90284px 0 3.46667px, #e66 27.97502px 5.94627px 0 3.4px, #e66 28.23116px 4.97791px 0 3.33333px, #e66 28.4537px 3.99891px 0 3.26667px, #e66 28.64223px 3.01042px 0 3.2px, #e66 28.79635px 2.01364px 0 3.13333px, #e66 28.91571px 1.00976px 0 3.06667px, #e66 29px 0px 0 3px, #e66 29.04896px -1.01441px 0 2.93333px, #e66 29.06237px -2.03224px 0 2.86667px, #e66 29.04004px -3.05223px 0 2.8px, #e66 28.98185px -4.07313px 0 2.73333px, #e66 28.88769px -5.09368px 0 2.66667px, #e66 28.75754px -6.1126px 0 2.6px, #e66 28.59138px -7.12863px 0 2.53333px, #e66 28.38926px -8.14049px 0 2.46667px, #e66 28.15127px -9.1469px 0 2.4px, #e66 27.87755px -10.1466px 0 2.33333px, #e66 27.56827px -11.1383px 0 2.26667px, #e66 27.22365px -12.12075px 0 2.2px, #e66 26.84398px -13.09268px 0 2.13333px, #e66 26.42956px -14.05285px 0 2.06667px, #e66 25.98076px -15px 0 2px, #e66 25.49798px -15.93291px 0 1.93333px, #e66 24.98167px -16.85035px 0 1.86667px, #e66 24.43231px -17.75111px 0 1.8px, #e66 23.85046px -18.63402px 0 1.73333px, #e66 23.23668px -19.49789px 0 1.66667px, #e66 22.5916px -20.34157px 0 1.6px, #e66 21.91589px -21.16393px 0 1.53333px, #e66 21.21024px -21.96384px 0 1.46667px, #e66 20.4754px -22.74023px 0 1.4px, #e66 19.71215px -23.49203px 0 1.33333px, #e66 18.92133px -24.2182px 0 1.26667px, #e66 18.10379px -24.91772px 0 1.2px, #e66 17.26042px -25.58963px 0 1.13333px, #e66 16.39217px -26.23295px 0 1.06667px, #e66 15.5px -26.84679px 0 1px, #e66 14.58492px -27.43024px 0 0.93333px, #e66 13.64796px -27.98245px 0 0.86667px, #e66 12.69018px -28.50262px 0 0.8px, #e66 11.7127px -28.98995px 0 0.73333px, #e66 10.71663px -29.4437px 0 0.66667px, #e66 9.70313px -29.86317px 0 0.6px, #e66 8.67339px -30.2477px 0 0.53333px, #e66 7.6286px -30.59666px 0 0.46667px, #e66 6.57001px -30.90946px 0 0.4px, #e66 5.49886px -31.18558px 0 0.33333px, #e66 4.41643px -31.42451px 0 0.26667px, #e66 3.32401px -31.6258px 0 0.2px, #e66 2.22291px -31.78904px 0 0.13333px, #e66 1.11446px -31.91388px 0 0.06667px, #e66 0px -32px 0 0px, #e66 -1.11911px -32.04713px 0 -0.06667px, #e66 -2.24151px -32.05506px 0 -0.13333px, #e66 -3.36582px -32.02361px 0 -0.2px, #e66 -4.49065px -31.95265px 0 -0.26667px, #e66 -5.61462px -31.84212px 0 -0.33333px, #e66 -6.73634px -31.69198px 0 -0.4px, #e66 -7.8544px -31.50227px 0 -0.46667px, #e66 -8.9674px -31.27305px 0 -0.53333px, #e66 -10.07395px -31.00444px 0 -0.6px, #e66 -11.17266px -30.69663px 0 -0.66667px, #e66 -12.26212px -30.34982px 0 -0.73333px, #e66 -13.34096px -29.96429px 0 -0.8px, #e66 -14.4078px -29.54036px 0 -0.86667px, #e66 -15.46126px -29.07841px 0 -0.93333px, #e66 -16.5px -28.57884px 0 -1px, #e66 -17.52266px -28.04212px 0 -1.06667px, #e66 -18.52792px -27.46878px 0 -1.13333px, #e66 -19.51447px -26.85936px 0 -1.2px, #e66 -20.48101px -26.21449px 0 -1.26667px, #e66 -21.42625px -25.53481px 0 -1.33333px, #e66 -22.34896px -24.82104px 0 -1.4px, #e66 -23.2479px -24.07391px 0 -1.46667px, #e66 -24.12186px -23.29421px 0 -1.53333px, #e66 -24.96967px -22.48279px 0 -1.6px, #e66 -25.79016px -21.64052px 0 -1.66667px, #e66 -26.58223px -20.76831px 0 -1.73333px, #e66 -27.34477px -19.86714px 0 -1.8px, #e66 -28.07674px -18.938px 0 -1.86667px, #e66 -28.7771px -17.98193px 0 -1.93333px, #e66 -29.44486px -17px 0 -2px, #e66 -30.07908px -15.99333px 0 -2.06667px, #e66 -30.67884px -14.96307px 0 -2.13333px, #e66 -31.24325px -13.91039px 0 -2.2px, #e66 -31.7715px -12.83652px 0 -2.26667px, #e66 -32.26278px -11.74269px 0 -2.33333px, #e66 -32.71634px -10.63018px 0 -2.4px, #e66 -33.13149px -9.5003px 0 -2.46667px, #e66 -33.50755px -8.35437px 0 -2.53333px, #e66 -33.84391px -7.19374px 0 -2.6px, #e66 -34.14px -6.0198px 0 -2.66667px, #e66 -34.39531px -4.83395px 0 -2.73333px, #e66 -34.60936px -3.63759px 0 -2.8px, #e66 -34.78173px -2.43218px 0 -2.86667px, #e66 -34.91205px -1.21916px 0 -2.93333px, #e66 -35px 0px 0 -3px, #e66 -35.04531px 1.22381px 0 -3.06667px, #e66 -35.04775px 2.45078px 0 -3.13333px, #e66 -35.00717px 3.6794px 0 -3.2px, #e66 -34.92345px 4.90817px 0 -3.26667px, #e66 -34.79654px 6.13557px 0 -3.33333px, #e66 -34.62643px 7.36007px 0 -3.4px, #e66 -34.41316px 8.58016px 0 -3.46667px, #e66 -34.15683px 9.79431px 0 -3.53333px, #e66 -33.85761px 11.001px 0 -3.6px, #e66 -33.5157px 12.19872px 0 -3.66667px, #e66 -33.13137px 13.38594px 0 -3.73333px, #e66 -32.70493px 14.56117px 0 -3.8px, #e66 -32.23675px 15.72291px 0 -3.86667px, #e66 -31.72725px 16.86968px 0 -3.93333px, #e66 -31.17691px 18px 0 -4px, #e66 -30.58627px 19.11242px 0 -4.06667px, #e66 -29.95589px 20.2055px 0 -4.13333px, #e66 -29.28642px 21.27783px 0 -4.2px, #e66 -28.57852px 22.32799px 0 -4.26667px, #e66 -27.83295px 23.35462px 0 -4.33333px, #e66 -27.05047px 24.35635px 0 -4.4px, #e66 -26.23192px 25.33188px 0 -4.46667px, #e66 -25.37819px 26.27988px 0 -4.53333px, #e66 -24.49018px 27.1991px 0 -4.6px, #e66 -23.56888px 28.0883px 0 -4.66667px, #e66 -22.6153px 28.94626px 0 -4.73333px, #e66 -21.6305px 29.77183px 0 -4.8px, #e66 -20.61558px 30.56385px 0 -4.86667px, #e66 -19.57168px 31.32124px 0 -4.93333px, #e66 -18.5px 32.04294px 0 -5px, #e66 -17.40175px 32.72792px 0 -5.06667px, #e66 -16.27818px 33.37522px 0 -5.13333px, #e66 -15.1306px 33.98389px 0 -5.2px, #e66 -13.96034px 34.55305px 0 -5.26667px, #e66 -12.76875px 35.08186px 0 -5.33333px, #e66 -11.55724px 35.56951px 0 -5.4px, #e66 -10.32721px 36.01527px 0 -5.46667px, #e66 -9.08014px 36.41843px 0 -5.53333px, #e66 -7.81748px 36.77835px 0 -5.6px, #e66 -6.54075px 37.09443px 0 -5.66667px, #e66 -5.25147px 37.36612px 0 -5.73333px, #e66 -3.95118px 37.59293px 0 -5.8px, #e66 -2.64145px 37.77443px 0 -5.86667px, #e66 -1.32385px 37.91023px 0 -5.93333px;
          +    -moz-animation: whirly-loader 1.25s infinite linear;
          +    -webkit-animation: whirly-loader 1.25s infinite linear;
          +    animation: whirly-loader 1.25s infinite linear;
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +
          +@-moz-keyframes flower-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +        -moz-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    }
          +    50% {
          +        -moz-transform: rotate(1080deg);
          +        transform: rotate(1080deg);
          +        -moz-box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +    }
          +}
          +@-webkit-keyframes flower-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +        -webkit-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    }
          +    50% {
          +        -webkit-transform: rotate(1080deg);
          +        transform: rotate(1080deg);
          +        -webkit-box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +    }
          +}
          +@keyframes flower-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +        -moz-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +        -webkit-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    }
          +    50% {
          +        -moz-transform: rotate(1080deg);
          +        -ms-transform: rotate(1080deg);
          +        -webkit-transform: rotate(1080deg);
          +        transform: rotate(1080deg);
          +        -moz-box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +        -webkit-box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +        box-shadow: white 0 0 15px 0, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.flower-loader:not(:required) {
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 16px;
          +    height: 16px;
          +    background: #e96;
          +    border-radius: 100%;
          +    -moz-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    -webkit-box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    box-shadow: white 0 0 15px 0, #fd8 -12px -12px 0 4px, #fd8 12px -12px 0 4px, #fd8 12px 12px 0 4px, #fd8 -12px 12px 0 4px;
          +    -moz-animation: flower-loader 5s infinite ease-in-out;
          +    -webkit-animation: flower-loader 5s infinite ease-in-out;
          +    animation: flower-loader 5s infinite ease-in-out;
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +
          +@-moz-keyframes dots-loader {
          +    0% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    8.33% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    16.67% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    25% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    33.33% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +    }
          +    41.67% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    50% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    58.33% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    66.67% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    75% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    83.33% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +    }
          +    91.67% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    100% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +}
          +@-webkit-keyframes dots-loader {
          +    0% {
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    8.33% {
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    16.67% {
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    25% {
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    33.33% {
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +    }
          +    41.67% {
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    50% {
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    58.33% {
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    66.67% {
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    75% {
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    83.33% {
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +    }
          +    91.67% {
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    100% {
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +}
          +@keyframes dots-loader {
          +    0% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    8.33% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    16.67% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px 14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    25% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    33.33% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae -14px -14px 0 7px;
          +    }
          +    41.67% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    50% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    58.33% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 -14px 14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    66.67% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 -14px -14px 0 7px, #6d7 -14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    75% {
          +        -moz-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        -webkit-box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +        box-shadow: #f86 14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px -14px 0 7px, #4ae 14px -14px 0 7px;
          +    }
          +    83.33% {
          +        -moz-box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +        box-shadow: #f86 14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae 14px 14px 0 7px;
          +    }
          +    91.67% {
          +        -moz-box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px 14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +    100% {
          +        -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +        box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.dots-loader:not(:required) {
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 7px;
          +    height: 7px;
          +    background: transparent;
          +    border-radius: 100%;
          +    -moz-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    -webkit-box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    box-shadow: #f86 -14px -14px 0 7px, #fc6 14px -14px 0 7px, #6d7 14px 14px 0 7px, #4ae -14px 14px 0 7px;
          +    -moz-animation: dots-loader 5s infinite ease-in-out;
          +    -webkit-animation: dots-loader 5s infinite ease-in-out;
          +    animation: dots-loader 5s infinite ease-in-out;
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +
          +@-moz-keyframes circles-loader {
          +    0% {
          +        -moz-transform: rotate(-720deg);
          +        transform: rotate(-720deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(720deg);
          +        transform: rotate(720deg);
          +    }
          +}
          +@-webkit-keyframes circles-loader {
          +    0% {
          +        -webkit-transform: rotate(-720deg);
          +        transform: rotate(-720deg);
          +    }
          +    50% {
          +        -webkit-transform: rotate(720deg);
          +        transform: rotate(720deg);
          +    }
          +}
          +@keyframes circles-loader {
          +    0% {
          +        -moz-transform: rotate(-720deg);
          +        -ms-transform: rotate(-720deg);
          +        -webkit-transform: rotate(-720deg);
          +        transform: rotate(-720deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(720deg);
          +        -ms-transform: rotate(720deg);
          +        -webkit-transform: rotate(720deg);
          +        transform: rotate(720deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.circles-loader:not(:required) {
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 25px;
          +    height: 25px;
          +    background: rgba(255, 204, 51, 0.9);
          +    border-radius: 100%;
          +    -moz-animation: circles-loader 3s infinite ease-in-out;
          +    -webkit-animation: circles-loader 3s infinite ease-in-out;
          +    animation: circles-loader 3s infinite ease-in-out;
          +    -moz-transform-origin: 50% 100%;
          +    -ms-transform-origin: 50% 100%;
          +    -webkit-transform-origin: 50% 100%;
          +    transform-origin: 50% 100%;
          +}
          +.circles-loader:not(:required)::before {
          +    background: rgba(255, 102, 0, 0.6);
          +    border-radius: 100%;
          +    content: '';
          +    position: absolute;
          +    width: 25px;
          +    height: 25px;
          +    top: 18.75px;
          +    left: -10.82532px;
          +}
          +.circles-loader:not(:required)::after {
          +    background: rgba(255, 51, 0, 0.4);
          +    border-radius: 100%;
          +    content: '';
          +    position: absolute;
          +    width: 25px;
          +    height: 25px;
          +    top: 18.75px;
          +    left: 10.82532px;
          +}
          +
          +@-moz-keyframes plus-loader-top {
          +    2.5% {
          +        background: #f86;
          +        -moz-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    13.75% {
          +        background: #ff430d;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    13.76% {
          +        background: #ffae0d;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    25% {
          +        background: #fc6;
          +        -moz-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    27.5% {
          +        background: #fc6;
          +        -moz-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    41.25% {
          +        background: #ffae0d;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    41.26% {
          +        background: #2cc642;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    50% {
          +        background: #6d7;
          +        -moz-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -moz-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    63.75% {
          +        background: #2cc642;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    63.76% {
          +        background: #1386d2;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    75% {
          +        background: #4ae;
          +        -moz-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    77.5% {
          +        background: #4ae;
          +        -moz-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    91.25% {
          +        background: #1386d2;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    91.26% {
          +        background: #ff430d;
          +        -moz-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    100% {
          +        background: #f86;
          +        -moz-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@-webkit-keyframes plus-loader-top {
          +    2.5% {
          +        background: #f86;
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    13.75% {
          +        background: #ff430d;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    13.76% {
          +        background: #ffae0d;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    25% {
          +        background: #fc6;
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    27.5% {
          +        background: #fc6;
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    41.25% {
          +        background: #ffae0d;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    41.26% {
          +        background: #2cc642;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    50% {
          +        background: #6d7;
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    63.75% {
          +        background: #2cc642;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    63.76% {
          +        background: #1386d2;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    75% {
          +        background: #4ae;
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    77.5% {
          +        background: #4ae;
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    91.25% {
          +        background: #1386d2;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    91.26% {
          +        background: #ff430d;
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    100% {
          +        background: #f86;
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@keyframes plus-loader-top {
          +    2.5% {
          +        background: #f86;
          +        -moz-transform: rotateY(0deg);
          +        -ms-transform: rotateY(0deg);
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    13.75% {
          +        background: #ff430d;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    13.76% {
          +        background: #ffae0d;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    25% {
          +        background: #fc6;
          +        -moz-transform: rotateY(180deg);
          +        -ms-transform: rotateY(180deg);
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    27.5% {
          +        background: #fc6;
          +        -moz-transform: rotateY(180deg);
          +        -ms-transform: rotateY(180deg);
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    41.25% {
          +        background: #ffae0d;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    41.26% {
          +        background: #2cc642;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    50% {
          +        background: #6d7;
          +        -moz-transform: rotateY(0deg);
          +        -ms-transform: rotateY(0deg);
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -moz-transform: rotateY(0deg);
          +        -ms-transform: rotateY(0deg);
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    63.75% {
          +        background: #2cc642;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    63.76% {
          +        background: #1386d2;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    75% {
          +        background: #4ae;
          +        -moz-transform: rotateY(180deg);
          +        -ms-transform: rotateY(180deg);
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +    }
          +    77.5% {
          +        background: #4ae;
          +        -moz-transform: rotateY(180deg);
          +        -ms-transform: rotateY(180deg);
          +        -webkit-transform: rotateY(180deg);
          +        transform: rotateY(180deg);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    91.25% {
          +        background: #1386d2;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    91.26% {
          +        background: #ff430d;
          +        -moz-transform: rotateY(90deg);
          +        -ms-transform: rotateY(90deg);
          +        -webkit-transform: rotateY(90deg);
          +        transform: rotateY(90deg);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    100% {
          +        background: #f86;
          +        -moz-transform: rotateY(0deg);
          +        -ms-transform: rotateY(0deg);
          +        -webkit-transform: rotateY(0deg);
          +        transform: rotateY(0deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@-moz-keyframes plus-loader-bottom {
          +    0% {
          +        background: #fc6;
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    50% {
          +        background: #fc6;
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    75% {
          +        background: #4ae;
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    100% {
          +        background: #4ae;
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@-webkit-keyframes plus-loader-bottom {
          +    0% {
          +        background: #fc6;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    50% {
          +        background: #fc6;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    75% {
          +        background: #4ae;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    100% {
          +        background: #4ae;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@keyframes plus-loader-bottom {
          +    0% {
          +        background: #fc6;
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    50% {
          +        background: #fc6;
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    75% {
          +        background: #4ae;
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    100% {
          +        background: #4ae;
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@-moz-keyframes plus-loader-background {
          +    0% {
          +        background: #f86;
          +        -moz-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +    }
          +    25% {
          +        background: #f86;
          +        -moz-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    27.5% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +    }
          +    50% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +    }
          +    75% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    77.5% {
          +        background: #f86;
          +        -moz-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +    }
          +    100% {
          +        background: #f86;
          +        -moz-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +        -moz-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@-webkit-keyframes plus-loader-background {
          +    0% {
          +        background: #f86;
          +        -webkit-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +    }
          +    25% {
          +        background: #f86;
          +        -webkit-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    27.5% {
          +        background: #6d7;
          +        -webkit-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +    }
          +    50% {
          +        background: #6d7;
          +        -webkit-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -webkit-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +    }
          +    75% {
          +        background: #6d7;
          +        -webkit-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    77.5% {
          +        background: #f86;
          +        -webkit-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +    }
          +    100% {
          +        background: #f86;
          +        -webkit-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +@keyframes plus-loader-background {
          +    0% {
          +        background: #f86;
          +        -moz-transform: rotateZ(180deg);
          +        -ms-transform: rotateZ(180deg);
          +        -webkit-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +    }
          +    25% {
          +        background: #f86;
          +        -moz-transform: rotateZ(180deg);
          +        -ms-transform: rotateZ(180deg);
          +        -webkit-transform: rotateZ(180deg);
          +        transform: rotateZ(180deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    27.5% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(90deg);
          +        -ms-transform: rotateZ(90deg);
          +        -webkit-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +    }
          +    50% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(90deg);
          +        -ms-transform: rotateZ(90deg);
          +        -webkit-transform: rotateZ(90deg);
          +        transform: rotateZ(90deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    52.5% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(0deg);
          +        -ms-transform: rotateZ(0deg);
          +        -webkit-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +    }
          +    75% {
          +        background: #6d7;
          +        -moz-transform: rotateZ(0deg);
          +        -ms-transform: rotateZ(0deg);
          +        -webkit-transform: rotateZ(0deg);
          +        transform: rotateZ(0deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +    77.5% {
          +        background: #f86;
          +        -moz-transform: rotateZ(270deg);
          +        -ms-transform: rotateZ(270deg);
          +        -webkit-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +    }
          +    100% {
          +        background: #f86;
          +        -moz-transform: rotateZ(270deg);
          +        -ms-transform: rotateZ(270deg);
          +        -webkit-transform: rotateZ(270deg);
          +        transform: rotateZ(270deg);
          +        -moz-animation-timing-function: step-start;
          +        -webkit-animation-timing-function: step-start;
          +        animation-timing-function: step-start;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.plus-loader:not(:required) {
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 48px;
          +    height: 48px;
          +    background: #f86;
          +    -moz-border-radius: 24px;
          +    -webkit-border-radius: 24px;
          +    border-radius: 24px;
          +    -moz-transform: rotateZ(90deg);
          +    -ms-transform: rotateZ(90deg);
          +    -webkit-transform: rotateZ(90deg);
          +    transform: rotateZ(90deg);
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +    -moz-animation: plus-loader-background 3s infinite ease-in-out;
          +    -webkit-animation: plus-loader-background 3s infinite ease-in-out;
          +    animation: plus-loader-background 3s infinite ease-in-out;
          +}
          +.plus-loader:not(:required)::after {
          +    background: #f86;
          +    -moz-border-radius: 24px 0 0 24px;
          +    -webkit-border-radius: 24px;
          +    border-radius: 24px 0 0 24px;
          +    content: '';
          +    position: absolute;
          +    right: 50%;
          +    top: 0;
          +    width: 50%;
          +    height: 100%;
          +    -moz-transform-origin: 100% 50%;
          +    -ms-transform-origin: 100% 50%;
          +    -webkit-transform-origin: 100% 50%;
          +    transform-origin: 100% 50%;
          +    -moz-animation: plus-loader-top 3s infinite linear;
          +    -webkit-animation: plus-loader-top 3s infinite linear;
          +    animation: plus-loader-top 3s infinite linear;
          +}
          +.plus-loader:not(:required)::before {
          +    background: #fc6;
          +    -moz-border-radius: 24px 0 0 24px;
          +    -webkit-border-radius: 24px;
          +    border-radius: 24px 0 0 24px;
          +    content: '';
          +    position: absolute;
          +    right: 50%;
          +    top: 0;
          +    width: 50%;
          +    height: 100%;
          +    -moz-transform-origin: 100% 50%;
          +    -ms-transform-origin: 100% 50%;
          +    -webkit-transform-origin: 100% 50%;
          +    transform-origin: 100% 50%;
          +    -moz-animation: plus-loader-bottom 3s infinite linear;
          +    -webkit-animation: plus-loader-bottom 3s infinite linear;
          +    animation: plus-loader-bottom 3s infinite linear;
          +}
          +
          +@-moz-keyframes ball-loader {
          +    0% {
          +        -moz-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        -moz-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +}
          +@-webkit-keyframes ball-loader {
          +    0% {
          +        -webkit-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +}
          +@keyframes ball-loader {
          +    0% {
          +        -moz-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        -ms-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        -webkit-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        -ms-transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.95, 1);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        -ms-transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 0.5, 1);
          +        -moz-animation-timing-function: linear;
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        -ms-transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        -webkit-transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        transform: translate3d(0, 150px, -10px) scale3d(1, 1.25, 1);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +}
          +@-moz-keyframes ball-loader-highlight {
          +    0% {
          +        -moz-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -moz-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +@-webkit-keyframes ball-loader-highlight {
          +    0% {
          +        -webkit-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -webkit-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +@keyframes ball-loader-highlight {
          +    0% {
          +        -moz-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -ms-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -webkit-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -ms-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -ms-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: linear;
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -ms-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -webkit-transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        transform: skew(-30deg, 0) translate3d(0, 0, 1px);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -moz-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -ms-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -webkit-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +@-moz-keyframes ball-loader-shadow {
          +    0% {
          +        -moz-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        -moz-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -moz-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -moz-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -moz-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +@-webkit-keyframes ball-loader-shadow {
          +    0% {
          +        -webkit-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -webkit-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -webkit-transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -webkit-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -webkit-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +@keyframes ball-loader-shadow {
          +    0% {
          +        -moz-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -ms-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -webkit-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    45% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px);
          +        -ms-transform: translate3d(12.5px, -15px, -1px);
          +        -webkit-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +    50% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        -ms-transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        -webkit-transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        transform: translate3d(12.5px, -15px, -1px) scale3d(1, 1, 1);
          +        -moz-animation-timing-function: linear;
          +        -webkit-animation-timing-function: linear;
          +        animation-timing-function: linear;
          +    }
          +    55% {
          +        -moz-transform: translate3d(12.5px, -15px, -1px);
          +        -ms-transform: translate3d(12.5px, -15px, -1px);
          +        -webkit-transform: translate3d(12.5px, -15px, -1px);
          +        transform: translate3d(12.5px, -15px, -1px);
          +        -moz-animation-timing-function: ease-out;
          +        -webkit-animation-timing-function: ease-out;
          +        animation-timing-function: ease-out;
          +    }
          +    100% {
          +        -moz-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -ms-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -webkit-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +        -moz-animation-timing-function: ease-in;
          +        -webkit-animation-timing-function: ease-in;
          +        animation-timing-function: ease-in;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.ball-loader:not(:required) {
          +    position: relative;
          +    display: inline-block;
          +    font-size: 0;
          +    letter-spacing: -1px;
          +    border-radius: 100%;
          +    background: #f86;
          +    width: 50px;
          +    height: 50px;
          +    -moz-transform-style: preserve-3d;
          +    -webkit-transform-style: preserve-3d;
          +    transform-style: preserve-3d;
          +    -moz-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +    -ms-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +    -webkit-transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +    transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
          +    -moz-transform-origin: 0 100%;
          +    -ms-transform-origin: 0 100%;
          +    -webkit-transform-origin: 0 100%;
          +    transform-origin: 0 100%;
          +    -moz-animation: ball-loader 1500ms infinite linear;
          +    -webkit-animation: ball-loader 1500ms infinite linear;
          +    animation: ball-loader 1500ms infinite linear;
          +}
          +.ball-loader:not(:required)::after {
          +    content: '';
          +    position: absolute;
          +    top: 4.5px;
          +    left: 5.5px;
          +    width: 15px;
          +    height: 15px;
          +    background: #ffb099;
          +    border-radius: 100%;
          +    -moz-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +    -ms-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +    -webkit-transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +    transform: skew(-20deg, 0) translate3d(0, 2.5px, 1px);
          +    -moz-animation: ball-loader-highlight 1500ms infinite linear;
          +    -webkit-animation: ball-loader-highlight 1500ms infinite linear;
          +    animation: ball-loader-highlight 1500ms infinite linear;
          +}
          +.ball-loader:not(:required)::before {
          +    content: '';
          +    position: absolute;
          +    top: 50px;
          +    left: 5.5px;
          +    width: 50px;
          +    height: 15px;
          +    background: rgba(0, 0, 0, 0.2);
          +    border-radius: 100%;
          +    -moz-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +    -ms-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +    -webkit-transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +    transform: translate3d(66.66667px, 66.66667px, -1px) scale3d(1.25, 1.25, 1);
          +    -moz-animation: ball-loader-shadow 1500ms infinite linear;
          +    -webkit-animation: ball-loader-shadow 1500ms infinite linear;
          +    animation: ball-loader-shadow 1500ms infinite linear;
          +    -webkit-filter: blur(1px);
          +    filter: blur(1px);
          +}
          +
          +@-moz-keyframes hexdots-loader {
          +    0% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    8.33% {
          +        -moz-box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    16.67% {
          +        -moz-box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    25% {
          +        -moz-box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    33.33% {
          +        -moz-box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    41.67% {
          +        -moz-box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    50% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +    }
          +    58.33% {
          +        -moz-box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +    }
          +    66.67% {
          +        -moz-box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +    }
          +    75% {
          +        -moz-box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    }
          +    83.33% {
          +        -moz-box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +    }
          +    91.67% {
          +        -moz-box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    100% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +}
          +@-webkit-keyframes hexdots-loader {
          +    0% {
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    8.33% {
          +        -webkit-box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    16.67% {
          +        -webkit-box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    25% {
          +        -webkit-box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    33.33% {
          +        -webkit-box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    41.67% {
          +        -webkit-box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    50% {
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +    }
          +    58.33% {
          +        -webkit-box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +    }
          +    66.67% {
          +        -webkit-box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +    }
          +    75% {
          +        -webkit-box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    }
          +    83.33% {
          +        -webkit-box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +    }
          +    91.67% {
          +        -webkit-box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    100% {
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +}
          +@keyframes hexdots-loader {
          +    0% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    8.33% {
          +        -moz-box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    16.67% {
          +        -moz-box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    25% {
          +        -moz-box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    33.33% {
          +        -moz-box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    41.67% {
          +        -moz-box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    50% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px, #999 0 -30px 0 7px;
          +    }
          +    58.33% {
          +        -moz-box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +        box-shadow: #666666 26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px, #999 26px -15px 0 7px;
          +    }
          +    66.67% {
          +        -moz-box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +        -webkit-box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +        box-shadow: #666666 26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px, #999 26px 15px 0 7px;
          +    }
          +    75% {
          +        -moz-box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +        -webkit-box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +        box-shadow: #666666 0 30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    }
          +    83.33% {
          +        -moz-box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +        -webkit-box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +        box-shadow: #666666 -26px 15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px 15px 0 7px;
          +    }
          +    91.67% {
          +        -moz-box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 -26px -15px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +    100% {
          +        -moz-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        -webkit-box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +        box-shadow: #666666 0 -30px 0 7px, #999 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 -26px 15px 0 7px, #999 -26px -15px 0 7px;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.hexdots-loader:not(:required) {
          +    overflow: hidden;
          +    position: relative;
          +    text-indent: -9999px;
          +    display: inline-block;
          +    width: 7px;
          +    height: 7px;
          +    background: transparent;
          +    border-radius: 100%;
          +    -moz-box-shadow: #666666 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    -webkit-box-shadow: #666666 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    box-shadow: #666666 0 -30px 0 7px, #999 26px -15px 0 7px, #999 26px 15px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px, #999 0 30px 0 7px;
          +    -moz-animation: hexdots-loader 5s infinite ease-in-out;
          +    -webkit-animation: hexdots-loader 5s infinite ease-in-out;
          +    animation: hexdots-loader 5s infinite ease-in-out;
          +    -moz-transform-origin: 50% 50%;
          +    -ms-transform-origin: 50% 50%;
          +    -webkit-transform-origin: 50% 50%;
          +    transform-origin: 50% 50%;
          +}
          +
          +/* :not(:required) hides this rule from IE9 and below */
          +.inner-circles-loader:not(:required) {
          +    -moz-transform: translate3d(0, 0, 0);
          +    -ms-transform: translate3d(0, 0, 0);
          +    -webkit-transform: translate3d(0, 0, 0);
          +    transform: translate3d(0, 0, 0);
          +    position: relative;
          +    display: inline-block;
          +    width: 50px;
          +    height: 50px;
          +    background: rgba(25, 165, 152, 0.5);
          +    border-radius: 50%;
          +    overflow: hidden;
          +    text-indent: -9999px;
          +    /* Hides inner circles outside base circle at safari */
          +    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
          +}
          +.inner-circles-loader:not(:required):before, .inner-circles-loader:not(:required):after {
          +    content: '';
          +    position: absolute;
          +    top: 0;
          +    display: inline-block;
          +    width: 50px;
          +    height: 50px;
          +    border-radius: 50%;
          +}
          +.inner-circles-loader:not(:required):before {
          +    -moz-animation: inner-circles-loader 3s infinite;
          +    -webkit-animation: inner-circles-loader 3s infinite;
          +    animation: inner-circles-loader 3s infinite;
          +    -moz-transform-origin: 0 50%;
          +    -ms-transform-origin: 0 50%;
          +    -webkit-transform-origin: 0 50%;
          +    transform-origin: 0 50%;
          +    left: 0;
          +    background: #c7efcf;
          +}
          +.inner-circles-loader:not(:required):after {
          +    -moz-animation: inner-circles-loader 3s 0.2s reverse infinite;
          +    -webkit-animation: inner-circles-loader 3s 0.2s reverse infinite;
          +    animation: inner-circles-loader 3s 0.2s reverse infinite;
          +    -moz-transform-origin: 100% 50%;
          +    -ms-transform-origin: 100% 50%;
          +    -webkit-transform-origin: 100% 50%;
          +    transform-origin: 100% 50%;
          +    right: 0;
          +    background: #eef5db;
          +}
          +
          +@-moz-keyframes inner-circles-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +@-webkit-keyframes inner-circles-loader {
          +    0% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    50% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +    100% {
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +@keyframes inner-circles-loader {
          +    0% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +    50% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +    }
          +    100% {
          +        -moz-transform: rotate(0deg);
          +        -ms-transform: rotate(0deg);
          +        -webkit-transform: rotate(0deg);
          +        transform: rotate(0deg);
          +    }
          +}
          +@-moz-keyframes pong-loader {
          +    0% {
          +        left: 5px;
          +        top: 0;
          +    }
          +    25% {
          +        left: 65px;
          +        top: 20px;
          +    }
          +    50% {
          +        left: 5px;
          +    }
          +    62.5% {
          +        top: 50px;
          +    }
          +    75% {
          +        left: 65px;
          +        top: 70%;
          +    }
          +    100% {
          +        left: 5px;
          +        top: 0%;
          +    }
          +}
          +@-webkit-keyframes pong-loader {
          +    0% {
          +        left: 5px;
          +        top: 0;
          +    }
          +    25% {
          +        left: 65px;
          +        top: 20px;
          +    }
          +    50% {
          +        left: 5px;
          +    }
          +    62.5% {
          +        top: 50px;
          +    }
          +    75% {
          +        left: 65px;
          +        top: 70%;
          +    }
          +    100% {
          +        left: 5px;
          +        top: 0%;
          +    }
          +}
          +@keyframes pong-loader {
          +    0% {
          +        left: 5px;
          +        top: 0;
          +    }
          +    25% {
          +        left: 65px;
          +        top: 20px;
          +    }
          +    50% {
          +        left: 5px;
          +    }
          +    62.5% {
          +        top: 50px;
          +    }
          +    75% {
          +        left: 65px;
          +        top: 70%;
          +    }
          +    100% {
          +        left: 5px;
          +        top: 0%;
          +    }
          +}
          +@-moz-keyframes pong-loader-paddle-1 {
          +    0% {
          +        -moz-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    25% {
          +        -moz-box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -moz-box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -moz-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -moz-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +@-webkit-keyframes pong-loader-paddle-1 {
          +    0% {
          +        -webkit-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    25% {
          +        -webkit-box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -webkit-box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -webkit-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -webkit-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +@keyframes pong-loader-paddle-1 {
          +    0% {
          +        -moz-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    25% {
          +        -moz-box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 15px 0 0, inset #353c39 0 -25px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -moz-box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 10px 0 0, inset #353c39 0 -30px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -moz-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -moz-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 5px 0 0, inset #353c39 0 -35px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +@-moz-keyframes pong-loader-paddle-2 {
          +    0% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -moz-box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -moz-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -moz-box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +@-webkit-keyframes pong-loader-paddle-2 {
          +    0% {
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -webkit-box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -webkit-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -webkit-box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +@keyframes pong-loader-paddle-2 {
          +    0% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    50% {
          +        -moz-box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 30px 0 0, inset #353c39 0 -10px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    62.5% {
          +        -moz-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 40px 0 0, inset #353c39 0 0 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    75% {
          +        -moz-box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 20px 0 0, inset #353c39 0 -20px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +    100% {
          +        -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +        box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.pong-loader:not(:required) {
          +    width: 80px;
          +    height: 60px;
          +    background: #353c39;
          +    position: relative;
          +    display: inline-block;
          +    overflow: hidden;
          +    text-indent: 100%;
          +    -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    -moz-animation: pong-loader-paddle-1 1500ms infinite linear;
          +    -webkit-animation: pong-loader-paddle-1 1500ms infinite linear;
          +    animation: pong-loader-paddle-1 1500ms infinite linear;
          +}
          +.pong-loader:not(:required):before {
          +    -moz-animation: pong-loader-paddle-2 1500ms infinite linear;
          +    -webkit-animation: pong-loader-paddle-2 1500ms infinite linear;
          +    animation: pong-loader-paddle-2 1500ms infinite linear;
          +    position: absolute;
          +    top: 0;
          +    left: 0;
          +    display: block;
          +    content: "";
          +    width: 10px;
          +    height: 100%;
          +    -moz-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    -webkit-box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +    box-shadow: inset #353c39 0 0 0 0, inset #353c39 0 -40px 0 0, inset #353c39 -3px 0 0 0, inset #8cdb8b -10px 0 0 0;
          +}
          +.pong-loader:not(:required):after {
          +    content: "";
          +    display: block;
          +    -moz-animation: pong-loader 1500ms infinite linear;
          +    -webkit-animation: pong-loader 1500ms infinite linear;
          +    animation: pong-loader 1500ms infinite linear;
          +    -moz-border-radius: 50%;
          +    -webkit-border-radius: 50%;
          +    border-radius: 50%;
          +    position: absolute;
          +    left: 0;
          +    top: 0;
          +    width: 10px;
          +    height: 10px;
          +    background: #8cdb8b;
          +}
          +
          +.pulse-loader:not(:required) {
          +    display: inline-block;
          +    width: 50px;
          +    height: 50px;
          +    -moz-animation: pulse-loader 0.7s linear infinite alternate;
          +    -webkit-animation: pulse-loader 0.7s linear infinite alternate;
          +    animation: pulse-loader 0.7s linear infinite alternate;
          +    border: 2px solid #e67e22;
          +    -moz-border-radius: 50%;
          +    -webkit-border-radius: 50%;
          +    border-radius: 50%;
          +    overflow: hidden;
          +    text-indent: 50px;
          +}
          +
          +@-moz-keyframes pulse-loader {
          +    0% {
          +        -moz-box-shadow: #e67e22 0 0 0px 20px;
          +        box-shadow: #e67e22 0 0 0px 20px;
          +    }
          +    40% {
          +        -moz-box-shadow: none;
          +        box-shadow: none;
          +    }
          +    100% {
          +        -moz-box-shadow: #e67e22 0 0 0px 25px inset;
          +        box-shadow: #e67e22 0 0 0px 25px inset;
          +    }
          +}
          +@-webkit-keyframes pulse-loader {
          +    0% {
          +        -webkit-box-shadow: #e67e22 0 0 0px 20px;
          +        box-shadow: #e67e22 0 0 0px 20px;
          +    }
          +    40% {
          +        -webkit-box-shadow: none;
          +        box-shadow: none;
          +    }
          +    100% {
          +        -webkit-box-shadow: #e67e22 0 0 0px 25px inset;
          +        box-shadow: #e67e22 0 0 0px 25px inset;
          +    }
          +}
          +@keyframes pulse-loader {
          +    0% {
          +        -moz-box-shadow: #e67e22 0 0 0px 20px;
          +        -webkit-box-shadow: #e67e22 0 0 0px 20px;
          +        box-shadow: #e67e22 0 0 0px 20px;
          +    }
          +    40% {
          +        -moz-box-shadow: none;
          +        -webkit-box-shadow: none;
          +        box-shadow: none;
          +    }
          +    100% {
          +        -moz-box-shadow: #e67e22 0 0 0px 25px inset;
          +        -webkit-box-shadow: #e67e22 0 0 0px 25px inset;
          +        box-shadow: #e67e22 0 0 0px 25px inset;
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.spinning-pixels-loader:not(:required) {
          +    -moz-animation: spinning-pixels 2s linear infinite;
          +    -webkit-animation: spinning-pixels 2s linear infinite;
          +    animation: spinning-pixels 2s linear infinite;
          +    width: 10px;
          +    height: 10px;
          +    font-size: 0;
          +    display: inline-block;
          +    background: #f35626;
          +    -moz-box-shadow: 15px 15px 0 0 #f35626, -15px -15px 0 0 #f35626, 15px -15px 0 0 #f35626, -15px 15px 0 0 #f35626, 0 15px 0 0 #f35626, 15px 0 0 0 #f35626, -15px 0 0 0 #f35626, 0 -15px 0 0 #f35626;
          +    -webkit-box-shadow: 15px 15px 0 0 #f35626, -15px -15px 0 0 #f35626, 15px -15px 0 0 #f35626, -15px 15px 0 0 #f35626, 0 15px 0 0 #f35626, 15px 0 0 0 #f35626, -15px 0 0 0 #f35626, 0 -15px 0 0 #f35626;
          +    box-shadow: 15px 15px 0 0 #f35626, -15px -15px 0 0 #f35626, 15px -15px 0 0 #f35626, -15px 15px 0 0 #f35626, 0 15px 0 0 #f35626, 15px 0 0 0 #f35626, -15px 0 0 0 #f35626, 0 -15px 0 0 #f35626;
          +}
          +
          +@-moz-keyframes spinning-pixels {
          +    0% {
          +        -webkit-filter: hue-rotate(0deg);
          +        filter: hue-rotate(0deg);
          +    }
          +    50% {
          +        -moz-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    75% {
          +        -moz-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +        -webkit-filter: hue-rotate(360deg);
          +        filter: hue-rotate(360deg);
          +    }
          +}
          +@-webkit-keyframes spinning-pixels {
          +    0% {
          +        -webkit-filter: hue-rotate(0deg);
          +        filter: hue-rotate(0deg);
          +    }
          +    50% {
          +        -webkit-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    75% {
          +        -webkit-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    100% {
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +        -webkit-filter: hue-rotate(360deg);
          +        filter: hue-rotate(360deg);
          +    }
          +}
          +@keyframes spinning-pixels {
          +    0% {
          +        -webkit-filter: hue-rotate(0deg);
          +        filter: hue-rotate(0deg);
          +    }
          +    50% {
          +        -moz-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        -webkit-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    75% {
          +        -moz-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        -webkit-box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +        box-shadow: 20px 20px 0 0 #f35626, -20px -20px 0 0 #f35626, 20px -20px 0 0 #f35626, -20px 20px 0 0 #f35626, 0 10px 0 0 #f35626, 10px 0 0 0 #f35626, -10px 0 0 0 #f35626, 0 -10px 0 0 #f35626;
          +    }
          +    100% {
          +        -moz-transform: rotate(360deg);
          +        -ms-transform: rotate(360deg);
          +        -webkit-transform: rotate(360deg);
          +        transform: rotate(360deg);
          +        -webkit-filter: hue-rotate(360deg);
          +        filter: hue-rotate(360deg);
          +    }
          +}
          +/* :not(:required) hides this rule from IE9 and below */
          +.echo-loader:not(:required) {
          +    width: 40px;
          +    height: 40px;
          +    border: 6px solid #FF0000;
          +    -moz-border-radius: 50%;
          +    -webkit-border-radius: 50%;
          +    border-radius: 50%;
          +    animation: echo-loader 1.4s ease-in;
          +    animation-iteration-count: infinite;
          +    display: inline-block;
          +    text-indent: 100%;
          +    overflow: hidden;
          +}
          +
          +@-moz-keyframes echo-loader {
          +    0% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: 0.0;
          +    }
          +    25% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: .1;
          +    }
          +    50% {
          +        -moz-transform: scale(0.1);
          +        -ms-transform: scale(0.1);
          +        -webkit-transform: scale(0.1);
          +        transform: scale(0.1);
          +        opacity: .3;
          +    }
          +    75% {
          +        -moz-transform: scale(0.5);
          +        -ms-transform: scale(0.5);
          +        -webkit-transform: scale(0.5);
          +        transform: scale(0.5);
          +        opacity: .5;
          +    }
          +    100% {
          +        -moz-transform: scale(1);
          +        -ms-transform: scale(1);
          +        -webkit-transform: scale(1);
          +        transform: scale(1);
          +        opacity: 0;
          +    }
          +}
          +@-webkit-keyframes echo-loader {
          +    0% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: 0.0;
          +    }
          +    25% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: .1;
          +    }
          +    50% {
          +        -moz-transform: scale(0.1);
          +        -ms-transform: scale(0.1);
          +        -webkit-transform: scale(0.1);
          +        transform: scale(0.1);
          +        opacity: .3;
          +    }
          +    75% {
          +        -moz-transform: scale(0.5);
          +        -ms-transform: scale(0.5);
          +        -webkit-transform: scale(0.5);
          +        transform: scale(0.5);
          +        opacity: .5;
          +    }
          +    100% {
          +        -moz-transform: scale(1);
          +        -ms-transform: scale(1);
          +        -webkit-transform: scale(1);
          +        transform: scale(1);
          +        opacity: 0;
          +    }
          +}
          +@keyframes echo-loader {
          +    0% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: 0.0;
          +    }
          +    25% {
          +        -moz-transform: scale(0);
          +        -ms-transform: scale(0);
          +        -webkit-transform: scale(0);
          +        transform: scale(0);
          +        opacity: .1;
          +    }
          +    50% {
          +        -moz-transform: scale(0.1);
          +        -ms-transform: scale(0.1);
          +        -webkit-transform: scale(0.1);
          +        transform: scale(0.1);
          +        opacity: .3;
          +    }
          +    75% {
          +        -moz-transform: scale(0.5);
          +        -ms-transform: scale(0.5);
          +        -webkit-transform: scale(0.5);
          +        transform: scale(0.5);
          +        opacity: .5;
          +    }
          +    100% {
          +        -moz-transform: scale(1);
          +        -ms-transform: scale(1);
          +        -webkit-transform: scale(1);
          +        transform: scale(1);
          +        opacity: 0;
          +    }
          +}
          +
          +#loading{
          +    text-align: center;
          +    padding: 300px 0 0 0;
          +}
          diff --git a/resources/js/Api/auth.js b/resources/js/Api/auth.js
          new file mode 100644
          index 0000000..9c2368d
          --- /dev/null
          +++ b/resources/js/Api/auth.js
          @@ -0,0 +1,11 @@
          +import axiosClient from './../config/axios';
          +
          +export default {
          +  login(user) {
          +    return axiosClient.post('/login', {
          +      email: user.email,
          +      password: user.password,
          +      lang: 'en'
          +    })
          +  }
          +}
          \ No newline at end of file
          diff --git a/resources/js/Api/register.js b/resources/js/Api/register.js
          new file mode 100644
          index 0000000..1caa2b4
          --- /dev/null
          +++ b/resources/js/Api/register.js
          @@ -0,0 +1,39 @@
          +import axiosClient from '@/config/axios';
          +
          +export default {
          +    createAccount(account) {
          +        return axiosClient.post('/create/account', account)
          +    },
          +    addProfile(data) {
          +        return axiosClient.post(`/add/profile`, data)
          +    },
          +    getUserInfo(){
          +        return axiosClient.get(`get-user-info`);
          +    },
          +    importCreditReportByEmail(data){
          +        return axiosClient.post(`import/credit-report`,data);
          +    },
          +    makePayment(data){
          +        return axiosClient.post(`make/payment`,data);
          +    },
          +    makePayments(data){
          +        return axiosClient.post(`make/payments`,data);
          +    },
          +    getSecurityQuestion(){
          +        return axiosClient.get(`get/security_question`);
          +    },
          +    customerCreateAndUpdate(data){
          +        return axiosClient.post(`create/customer`,data);
          +    },
          +    verifyProfile(data){
          +        return axiosClient.post(`customer/profile-verify`,data);
          +    },
          +    getIdentityQuestion(){
          +        return axiosClient.get(`get/identity_question`);
          +    },
          +    postIdentityQuestion(data){
          +        return axiosClient.post(`post/identity_question`,data);
          +    },
          +
          +}
          +
          diff --git a/resources/js/Validation/useFormValidation.js b/resources/js/Validation/useFormValidation.js
          new file mode 100644
          index 0000000..9d1dec8
          --- /dev/null
          +++ b/resources/js/Validation/useFormValidation.js
          @@ -0,0 +1,77 @@
          +import { reactive } from "@vue/reactivity";
          +import useValidators from './validators'
          +
          +
          +const errors = reactive({});
          +const errorMessage = reactive({});
          +
          +
          +export default function useFormValidation() {
          +
          +
          +    const { isEmpty, minLength, isEmail, isNum,isInt,maxLength } = useValidators();
          +
          +    const validateNameField = (fieldName, fieldValue) => {
          +        errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue, 4)
          +    }
          +
          +    const validateEmailField = (fieldName, fieldValue) => {
          +        errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : isEmail(fieldName, fieldValue)
          +    }
          +
          +    const validatePhoneField = (fieldName, fieldValue) => {
          +        errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : isNum(fieldName, fieldValue)
          +    }
          +
          +    const validatePasswordField = (fieldName, fieldValue) => {
          +        errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue, 8)
          +    }
          +
          +    const validate = (rules,messages,fieldName, fieldValue) => {
          +        let container = {}
          +        container["required"] = isEmpty(fieldName,fieldValue)
          +        container["email"] = !fieldValue ? isEmpty(fieldName, fieldValue) : isEmail(fieldName, fieldValue)
          +        container["password"] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue,6)
          +        container["integer"] = !fieldValue ? isEmpty(fieldName, fieldValue) : isInt(fieldName, fieldValue)
          +
          +        for (let i in rules){
          +            errors[fieldName] = "";
          +            let value = rules[i];
          +            if(container[value]){
          +                errors[fieldName] = container[value];
          +                break;
          +            }else {
          +
          +                let splited = value.split(':')
          +                if (splited.length == 2) {
          +                    container[value] = dyanamicValidation(splited, fieldValue, fieldName)
          +                    if(container[value]){
          +                        errors[fieldName] = container[value];
          +                        break;
          +                    }
          +                }
          +
          +            }
          +        }
          +
          +    }
          +
          +    const dyanamicValidation = (splited,fieldValue,fieldName) => {
          +        let result = "";
          +        switch (splited[0]){
          +            case "min":
          +                result = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue,splited[1])
          +                break;
          +            case "max":
          +                result = !fieldValue ? isEmpty(fieldName, fieldValue) : maxLength(fieldName, fieldValue,splited[1])
          +                break;
          +            default:
          +                break
          +        }
          +
          +        return result;
          +    }
          +
          +
          +    return { errors,validate}
          +}
          diff --git a/resources/js/Validation/useSubmitButtonState.js b/resources/js/Validation/useSubmitButtonState.js
          new file mode 100644
          index 0000000..93eff6d
          --- /dev/null
          +++ b/resources/js/Validation/useSubmitButtonState.js
          @@ -0,0 +1,18 @@
          +import { computed } from "vue";
          +
          +export default function useSubmitButtonState(user, errors) {
          +
          +    const isButtonDisabled = computed(() => {
          +        let disabled = true;
          +        for (let prop in user) {
          +            if (!user[prop] || errors[prop]) {
          +                disabled = true;
          +                break;
          +            }
          +            disabled = false;
          +        }
          +        return disabled;
          +    });
          +
          +    return { isButtonDisabled }
          +}
          diff --git a/resources/js/Validation/validators.js b/resources/js/Validation/validators.js
          new file mode 100644
          index 0000000..4afbf95
          --- /dev/null
          +++ b/resources/js/Validation/validators.js
          @@ -0,0 +1,32 @@
          +
          +export default function useValidators() {
          +
          +    const isEmpty = (fieldName, fieldValue) => {
          +        return !fieldValue ? `The ${fieldName} is required`:"";
          +    }
          +
          +    const minLength = (fieldName, fieldValue, min) => {
          +        return fieldValue.length < min ? `The ${fieldName} field must be at least ${min} characters long` : "";
          +    }
          +
          +    const maxLength = (fieldName, fieldValue, max) => {
          +        return fieldValue.length > max ? `The ${fieldName} cannot be greater than ${max} characters long` : "";
          +    }
          +
          +    const isEmail = (fieldName, fieldValue) => {
          +        let re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
          +        return !re.test(fieldValue) ? "The input is not a valid " + fieldName + " address" : "";
          +    }
          +
          +    const isNum = (fieldName, fieldValue) => {
          +        let isNum = /^\d+$/.test(fieldValue);
          +        return !isNum ? "The " + fieldName + " field only have numbers" : "";
          +    }
          +
          +    const isInt = (fieldName, fieldValue) => {
          +        let test = /^\d+$/.test(fieldValue);
          +        return !test ? "The " + fieldName + " must be integer" : "";
          +    }
          +
          +    return { isEmpty, minLength, isEmail, isNum,isInt,maxLength}
          +}
          diff --git a/resources/js/app.js b/resources/js/app.js
          new file mode 100644
          index 0000000..fc5237b
          --- /dev/null
          +++ b/resources/js/app.js
          @@ -0,0 +1,53 @@
          +require('./bootstrap');
          +import { createApp } from 'vue'
          +import App from "./components/App";
          +import '../css/loader.css'
          +import '../css/spinner.css'
          +import '../css/register.css'
          +import '../css/payment.css'
          +
          +import VueSweetalert2 from 'vue-sweetalert2';
          +import 'sweetalert2/dist/sweetalert2.min.css';
          +import store from "./store";
          +// routes
          +import router from "./router";
          +
          +import {setSecurityKey} from "./helper";
          +
          +// Global component
          +import AddProfile from "./components/partials/AddProfile";
          +import Step from "./components/partials/step";
          +import CreateAccount from "./components/partials/CreateAccount";
          +import ChoosePackage from "./components/partials/ChoosePackage";
          +import ValidationError from "./components/partials/ValidationError";
          +import TextInput from './components/Form/TextInput';
          +import SelectInput from './components/Form/SelectInput';
          +import TopArea from './components/partials/TopArea';
          +
          +
          +const app = createApp(App);
          +
          +app.use(store)
          +app.use(router)
          +app.use(VueSweetalert2);
          +//app.use(DisableAutocomplete);
          +
          +const base_url = API_BASE_URL
          +app.config.globalProperties.$base_url = base_url
          +app.config.globalProperties.success_code = 100
          +//app.config.globalProperties.$loader = `${base_url}/img/ajax-loader.gif`;
          +app.config.globalProperties.$loader = `https://i.stack.imgur.com/FhHRx.gif`;
          +
          +app.component('AddProfile',AddProfile);
          +app.component('Step',Step);
          +app.component('CreateAccount',CreateAccount);
          +app.component('ChoosePackage',ChoosePackage);
          +app.component('ValidationError',ValidationError);
          +app.component('TextInput',TextInput);
          +app.component('SelectInput',SelectInput);
          +app.component('TopArea',TopArea);
          +
          +app.mount('#app');
          +
          +setSecurityKey(SECURITY_KEY)
          +
          diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js
          new file mode 100644
          index 0000000..6922577
          --- /dev/null
          +++ b/resources/js/bootstrap.js
          @@ -0,0 +1,28 @@
          +window._ = require('lodash');
          +
          +/**
          + * We'll load the axios HTTP library which allows us to easily issue requests
          + * to our Laravel back-end. This library automatically handles sending the
          + * CSRF token as a header based on the value of the "XSRF" token cookie.
          + */
          +
          +window.axios = require('axios');
          +
          +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
          +
          +/**
          + * Echo exposes an expressive API for subscribing to channels and listening
          + * for events that are broadcast by Laravel. Echo and event broadcasting
          + * allows your team to easily build robust real-time web applications.
          + */
          +
          +// import Echo from 'laravel-echo';
          +
          +// window.Pusher = require('pusher-js');
          +
          +// window.Echo = new Echo({
          +//     broadcaster: 'pusher',
          +//     key: process.env.MIX_PUSHER_APP_KEY,
          +//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
          +//     forceTLS: true
          +// });
          diff --git a/resources/js/components/App.vue b/resources/js/components/App.vue
          new file mode 100644
          index 0000000..1b5d85e
          --- /dev/null
          +++ b/resources/js/components/App.vue
          @@ -0,0 +1,27 @@
          +<template>
          +    <div>
          +        <div id="spinner" v-show="$store.getters['auth/getLoaderStatus']">
          +            <div id="loading">
          +                <span class="timer-loader">Loading…</span>
          +            </div>
          +        </div>
          +        <router-view/>
          +    </div>
          +</template>
          +<script>
          +import {onMounted} from 'vue';
          +import {unsetStep} from "../helper";
          +
          +export default {
          +    setup() {
          +        onMounted(()=>{
          +            unsetStep();
          +            localStorage.clear();
          +        })
          +    },
          +}
          +</script>
          +
          +
          +
          +
          diff --git a/resources/js/components/Form/SelectInput.vue b/resources/js/components/Form/SelectInput.vue
          new file mode 100644
          index 0000000..18e5f25
          --- /dev/null
          +++ b/resources/js/components/Form/SelectInput.vue
          @@ -0,0 +1,43 @@
          +<template>
          +    <div class="input-div">
          +        <select
          +            :class="className"
          +            @input="$emit('update:modelValue', $event.target.value)"
          +            v-model="input"
          +            @change="validateInput"
          +        >
          +        <option v-if="empty" value="" disabled>{{empty}}</option>
          +        <option :key="item.id" v-for="item in items" :value="item.id">{{item.value}}</option>
          +        </select>
          +        <ValidationError :msg="errors[name]"/>
          +    </div>
          +</template>
          +
          +<script>
          +import { ref } from "vue";
          +import useFormValidation from "@/Validation/useFormValidation";
          +export default {
          +    props:{
          +        className:String|Object,
          +        placeholder:String,
          +        rules:Array,
          +        items:Array,
          +        empty:String
          +
          +    },
          +    setup(props) {
          +        let input = ref("");
          +        const name = props.placeholder
          +        const { validate, errors} = useFormValidation();
          +        const validateInput = () => {
          +            validate(props.rules,{},name, input.value);
          +        };
          +
          +        if(props.errormsg){
          +            errors[name] = props.errormsg
          +        }
          +        console.log("errors[name]",errors);
          +        return { input,name, errors, validateInput };
          +    },
          +};
          +</script>
          diff --git a/resources/js/components/Form/TextInput.vue b/resources/js/components/Form/TextInput.vue
          new file mode 100644
          index 0000000..5cc05d4
          --- /dev/null
          +++ b/resources/js/components/Form/TextInput.vue
          @@ -0,0 +1,47 @@
          +<template>
          +    <div class="input-div">
          +        <input
          +            autocomplete="off"
          +            :class="className"
          +            :placeholder="placeholder"
          +            :type="type"
          +            @input="$emit('update:modelValue', $event.target.value)"
          +            v-model="input"
          +            @keyup="validateInput"
          +            @blur="validateInput"
          +        />
          +        <ValidationError :backend="backend" :msg="messages"/>
          +    </div>
          +</template>
          +
          +<script>
          +import {reactive, ref} from "vue";
          +import useFormValidation from "@/Validation/useFormValidation";
          +export default {
          +    props:{
          +        className:String|Object,
          +        placeholder:String,
          +        type:String,
          +        rules:Array,
          +        backend:String,
          +        errors:Array
          +    },
          +    setup(props) {
          +        let input = ref("");
          +        let messages = ref([])
          +        const name = props.placeholder
          +
          +        //const { validate, errors} = useFormValidation();
          +
          +        const validateInput = () => {
          +            messages.value = []
          +            if(props.errors[0]) {
          +                messages.value.push(props.errors[0])
          +            }
          +        }
          +        //console.log('ccc',messages)
          +        return { input,name,messages,validateInput };
          +    }
          +
          +};
          +</script>
          diff --git a/resources/js/components/partials/AddProfile.vue b/resources/js/components/partials/AddProfile.vue
          new file mode 100644
          index 0000000..c0dce4e
          --- /dev/null
          +++ b/resources/js/components/partials/AddProfile.vue
          @@ -0,0 +1,513 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>{{appName}}</h3>
          +                    </div>
          +                    <Step step="2"/>
          +                </div>
          +                <div class="right-side">
          +                    <form @submit.prevent="makePayment" autocomplete="off"
          +                          class="form-element was-validated form-element--login" method="post"
          +                          novalidate="novalidate">
          +                        <div class="main active">
          +                            <TopArea :is_show_login="false"/>
          +                            <div class="text">
          +                                <h2> {{company_Name}}
          +                                    <span v-if="reportProvider==='3'"> Partnered with {{reportProviders.labels[reportProvider]}}</span>
          +                                    <span v-if="reportProvider==='1'"> Powerful Software System </span>
          +                                </h2>
          +                                <p>Let's start with some basic info.</p>
          +                            </div>
          +                            <SmartCreditLogo :package_id="formData.package_id" />
          +<!--                            <SmartCreditLogo :package_id="formData.package_id" v-if="reportProvider==='3'"/>-->
          +<!--                            <IdentityIqLogo :package_id="formData.package_id" v-if="reportProvider==='1'"/>-->
          +                            <div class="text" v-if="isButtonDisabled">
          +                                <p style="color:red;text-align:center">All fields are required</p>
          +                            </div>
          +                            <div class="text" v-if="message">
          +                                <p style="color:red;text-align:center">{{ message[0] }}</p>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="toggle('first_name')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        ref="first_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':v$.formData.first_name.$errors.length}"
          +                                        placeholder="First Name"
          +                                        type="text"
          +                                        v-model="formData.first_name"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.first_name"
          +                                                     :msg="v$.formData.first_name.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="toggle('last_name')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        ref="last_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':v$.formData.last_name.$errors.length}"
          +                                        placeholder="Last Name"
          +                                        type="text"
          +                                        v-model="v$.formData.last_name.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.last_name" :msg="v$.formData.last_name.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="toggle('email')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        ref="email"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.email}"
          +                                        placeholder="Email"
          +                                        type="text"
          +                                        v-model="v$.formData.email.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.email" :msg="v$.formData.email.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="toggle('password')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        ref="password"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.password}"
          +                                        placeholder="Password"
          +                                        type="password"
          +                                        v-model="v$.formData.password.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.password" :msg="v$.formData.password.$errors"/>
          +                                </div>
          +                                <div class="input-div" style="margin-top: 20px">
          +                                    <input
          +                                        ref="phone"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.phone}"
          +                                        placeholder="Phone, e,g. 954-604-4220"
          +                                        type="text"
          +                                        v-model="v$.formData.phone.$model"
          +                                    />
          +                                    <ValidationError :backend="errors.phone" :msg="v$.formData.phone.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="full_ssn"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.full_ssn}"
          +                                        placeholder="Last 4 digit of SSN"
          +                                        type="text"
          +                                        @keyup.prevent="ssnCompleted($event)"
          +                                        v-model="v$.formData.full_ssn.$model"
          +                                        :maxlength="min"
          +                                    />
          +                                    <ValidationError :backend="errors.full_ssn" :msg="v$.formData.full_ssn.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="full_ssn"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.birth_date}"
          +                                        placeholder="Birth Date e.g, mm/dd/yyyy"
          +                                        type="text"
          +                                        v-model="v$.formData.birth_date.$model"
          +                                        @keyup.prevent="birthDateCompleted($event)"
          +                                        :maxlength="10"
          +                                    />
          +                                    <ValidationError :backend="errors.birth_date" :msg="v$.formData.birth_date.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="street_no"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.street_no}"
          +                                        placeholder="Street No."
          +                                        type="text"
          +                                        v-model="v$.formData.street_no.$model"
          +                                    />
          +                                    <ValidationError :backend="errors.street_no" :msg="v$.formData.street_no.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="street_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.street_name}"
          +                                        placeholder="Street Name"
          +                                        type="text"
          +                                        v-model="v$.formData.street_name.$model"
          +
          +                                    />
          +                                    <ValidationError :backend="errors.street_name"
          +                                                     :msg="v$.formData.street_name.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="city"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.city}"
          +                                        placeholder="City"
          +                                        type="text"
          +                                        v-model="v$.formData.city.$model"
          +                                    />
          +                                    <ValidationError :backend="errors.city" :msg="v$.formData.city.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <select ref="state" v-model="v$.formData.state.$model" >
          +                                        <option value="">Please select state</option>
          +                                        <option :key="item.id" v-for="item in stateList" :value="item.id">
          +                                            {{ item.value }}
          +                                        </option>
          +                                    </select>
          +                                    <ValidationError :backend="errors.state" :msg="v$.formData.state.$errors"/>
          +                                </div>
          +
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +
          +                                    <input
          +                                        ref="zip_code"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.zip_code}"
          +                                        placeholder="Zip Code"
          +                                        type="text"
          +                                        v-model="v$.formData.zip_code.$model"
          +
          +                                    />
          +                                    <ValidationError :backend="errors.zip_code" :msg="v$.formData.zip_code.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="ssn"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.ssn}"
          +                                        placeholder="Last 4 digit of SSN"
          +                                        type="text"
          +                                        v-model="v$.formData.ssn.$model"
          +                                        :maxlength="4"
          +                                        @keyup.prevent="ssnCompleted($event)"
          +                                    />
          +                                    <ValidationError :backend="errors.ssn" :msg="v$.formData.ssn.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text" >
          +                                <div class="input-div buttons" style="text-align: left">
          +                                    <button  type="button" value="Back" class="back_button" @click.prevent="backToProfile" >
          +                                        Back
          +                                    </button>
          +                                </div>
          +                                <div class="input-div buttons" style="text-align: left">
          +                                    <button :disabled="v$.formData.$invalid"  type="submit" value="Next" class="next_button" >
          +                                        Next Step
          +                                    </button>
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </form>
          +                </div>
          +
          +                    <SmartCreditPkg :package_id="formData.package_id" v-if="reportProvider === '3'"  />
          +
          +                    <IdentityIQPkg :package_id="formData.package_id" v-if="reportProvider === '1'" />
          +
          +            </div>
          +        </div>
          +
          +        <PaymentModal @close="closeModal" :data="prepareformData" v-if="isModalVisible" />
          +
          +        <modal :questionAnswer="questionList" v-if="isQuestionModalVisible && reportProvider === '3' " />
          +    </div>
          +    <Footer/>
          +</template>
          +
          +<script>
          +import useVuelidate from '@vuelidate/core'
          +import {required, email, integer,minLength} from '@vuelidate/validators'
          +import register from "./../../Api/register";
          +import {
          +    getFormData,
          +    setCustomerToken,
          +    setFormData,
          +    setReferenceNumber,
          +    setStep,
          +    setTrackingToken,
          +    getLocalStorage,
          +    setLocalStorage,
          +    unsetLocalStorage
          +} from "../../helper";
          +import router from "../../router";
          +import state from "../../helper/state";
          +import pkg from "../../helper/package";
          +import SmartCreditLogo from "./SmartCreditLogo";
          +import SmartCreditPkg from "./SmartCreditPkg";
          +import modal from "./modal";
          +import PaymentModal from "./PaymentModal.vue";
          +import store from "../../store";
          +import Footer from "./Footer.vue";
          +import IdentityIQPkg from "./IdentityIQPkg";
          +import reportProviders from "../../helper/report_provider"
          +import IdentityIqLogo from "./IdentityIqLogo.vue";
          +
          +export default {
          +    components: {IdentityIqLogo, SmartCreditPkg, SmartCreditLogo,PaymentModal,modal,Footer,IdentityIQPkg },
          +    setup() {
          +        return {v$: useVuelidate()}
          +    },
          +    data() {
          +        return {
          +            reportProvider: REPORT_PROVIDER,
          +            prepareformData:{},
          +            formData: {
          +                full_name:"",
          +                first_name: "",
          +                last_name: "",
          +                email: "",
          +                password: "",
          +                street_no: "",
          +                street_name: "",
          +                city: "",
          +                ssn: "",
          +                state: "",
          +                zip_code: "",
          +                phone: "",
          +                full_ssn:"",
          +                package_id: 0,
          +                birth_date:"",
          +                amount:0,
          +                question_id:"",
          +                answer:"",
          +                address:"",
          +                card_number:"",
          +                expiry:"",
          +                cvv_no:"",
          +                is_authorized:false,
          +                is_free:IS_FREE,
          +            },
          +            stateList: state,
          +            errors:{},
          +            message: [
          +                "All fields are required"
          +            ],
          +            isButtonDisabled:false,
          +            disabled: 1,
          +            package: pkg,
          +            reportProviders:reportProviders,
          +            value: null,
          +            roleOptions:[],
          +            isOpen: false,
          +            min:4,
          +            isModalVisible: false,
          +            isQuestionModalVisible:false,
          +            questionList:null,
          +            appName : APP_NAME,
          +            company_Name:COMPANY_NAME
          +        }
          +    },
          +    async mounted() {
          +            const userData = JSON.parse(getLocalStorage('formData')) || [];
          +
          +            this.formData.first_name = userData.first_name;
          +            this.formData.last_name = userData.last_name;
          +            this.formData.email = userData.email;
          +            this.formData.password = userData.password;
          +            this.formData.package_id = userData.package_id;
          +            this.formData.amount = userData.amount;
          +            this.formData.street_no= userData.street_no;
          +            this.formData.street_name=userData.street_name;
          +            this.formData.city=userData.city;
          +            this.formData.ssn=userData.ssn;
          +            this.formData.full_ssn= userData.full_ssn;
          +            this.formData.state=userData.state??'';
          +            this.formData.zip_code=userData.zip_code;
          +            this.formData.phone=userData.phone;
          +            this.formData.package_id=2;
          +            this.formData.birth_date=userData.birth_date;
          +            this.formData.amount = pkg.prices[this.formData.package_id];
          +    },
          +    methods: {
          +        async makePayment() {
          +
          +            if(this.formData.is_free === "1") {
          +                const data = await register.customerCreateAndUpdate(this.formData);
          +                if (data.status_code == "100") {
          +                    unsetLocalStorage('formData');
          +                    setStep(6);
          +                    router.push({name: "success"});
          +                }else{
          +                    this.message = [data.message];
          +                    this.errors = data.data
          +                }
          +
          +            }else {
          +
          +                const data = await register.verifyProfile(this.formData);
          +                if (data.status_code == "100") {
          +
          +                    this.formData.full_name = this.formData.first_name + ' ' + this.formData.last_name;
          +                    this.formData.address = this.formData.street_no + ' ' + this.formData.street_name;
          +                    this.prepareformData = this.formData;
          +                    setLocalStorage('formData', JSON.stringify(this.formData));
          +                    this.errors = {};
          +                    this.showModal();
          +
          +                }else{
          +                    this.message = [data.message];
          +                    this.errors = data.data
          +                }
          +            }
          +
          +
          +
          +
          +        },
          +        toggle: function (refId) {
          +            let attribute = "readonly"
          +            if (refId === "state") {
          +                attribute = "disabled"
          +            }
          +            this.$refs[refId].toggleAttribute(attribute)
          +        },
          +        backToProfile:function (){
          +            setStep(1);
          +            router.push({name: 'create-account'});
          +        },
          +        checkTermsAndService(e){
          +            if(e.target.checked){
          +                this.formData.is_authorized=e.target.checked;
          +            }
          +            else {
          +                this.formData.is_authorized=null;
          +            }
          +        },
          +        ssnCompleted(e) {
          +            // if(this.formData.full_ssn.length === 3 || this.formData.full_ssn.length === 6) {
          +            //     this.formData.full_ssn += '-';
          +            // }
          +            // if(this.formData.full_ssn.length === 11){
          +            //     this.formData.ssn = this.formData.full_ssn.substring( 7, 11 );
          +            // }
          +
          +            if(this.formData.full_ssn.length === 4){
          +                this.formData.ssn = this.formData.full_ssn;
          +            }
          +        },
          +        birthDateCompleted(e) {
          +            if(this.formData.birth_date.length===2 || this.formData.birth_date.length===5){
          +                this.formData.birth_date+='/';
          +            }
          +        },
          +        showModal() {
          +            this.isModalVisible = true;
          +        },
          +        closeModal(data) {
          +            this.isModalVisible = false;
          +            if(typeof(data.order_id) !== "undefined") {
          +                this.showQuestionModal(data);
          +            }
          +
          +        },
          +        showQuestionModal(data)
          +        {
          +            this.questionList = data;
          +            this.isQuestionModalVisible = true;
          +        },
          +        closeQuestionModal()
          +        {
          +            this.isQuestionModalVisible = false;
          +        }
          +    },
          +    validations() {
          +        return {
          +            formData: {
          +                first_name: {required},
          +                last_name: {required},
          +                email: {required, email},
          +                password: {required},
          +                street_no: {required},
          +                street_name: {required},
          +                city: {required},
          +                ssn: {required,minLength:minLength(4)},
          +                state: {required},
          +                zip_code: {required},
          +                phone: {required},
          +                full_ssn: {required,minLength:minLength(this.min)},
          +                birth_date: {required},
          +            }
          +        }
          +    }
          +}
          +</script>
          +
          +<style scoped>
          +.container .card {
          +    width: 1300px;
          +}
          +
          +.input-text {
          +    margin: 15px 0;
          +    display: flex;
          +    gap: 20px;
          +}
          +
          +.container .card .form {
          +    background-image: unset;
          +}
          +
          +.container .card .left-side {
          +    width: 25%;
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +}
          +
          +.container .card .right-side {
          +    width: 50%;
          +}
          +
          +@media (max-width: 750px) {
          +    .container .card .right-side {
          +        width: 100%;
          +        border-bottom-left-radius: 20px !important;
          +        border-top-right-radius: 0px !important;
          +    }
          +    .container .card .left-side {
          +        display: block;
          +        width: 100%;
          +        border-top-left-radius: 20px !important;
          +        border-top-right-radius: 20px !important;
          +        border-bottom-left-radius: 0px !important;
          +        border-bottom-right-radius: 0px !important;
          +    }
          +    .container .card .form {
          +        display: block;
          +    }
          +    .smart-credit-pkg {
          +             width: 100%;
          +             padding-top: 1%;
          +             padding-right: 0px;
          +    }
          +
          +}
          +
          +</style>
          diff --git a/resources/js/components/partials/ChoosePackage.vue b/resources/js/components/partials/ChoosePackage.vue
          new file mode 100644
          index 0000000..02fd50f
          --- /dev/null
          +++ b/resources/js/components/partials/ChoosePackage.vue
          @@ -0,0 +1,152 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>Creditzombies</h3>
          +                    </div>
          +                    <Step step="3"/>
          +                </div>
          +                <div class="right-side">
          +                    <div class="main active" style="padding: 30px 40px 0px 20px">
          +                        <TopArea/>
          +                    </div>
          +                    <div class="row" style="padding:10px 20px">
          +                        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +                            <div @click="getPackage(1)" class="listing listing-radius listing-primary package-1" :class="{'listing-highlight':is_highlight1}">
          +                                <div class="shape">
          +                                    <div class="shape-text">Best offer</div>
          +                                </div>
          +                                <div class="listing-content">
          +                                    <h3 class="lead text-white text-bold">SmartCredit</h3>
          +                                    <p class="text-white text-bold">${{ package.prices[1] }} (Basic)</p>
          +                                </div>
          +                            </div>
          +                        </div>
          +                        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +                            <div @mouseover="toggleClassForPackage" @click="getPackage(2)" class="listing listing-radius listing-success">
          +                                <div class="shape">
          +                                    <div class="shape-text">50%</div>
          +                                </div>
          +                                <div class="listing-content">
          +                                    <h3 class="lead text-success text-bold">SmartCredit</h3>
          +                                    <p class="text-success text-bold">${{ package.prices[2] }} (Premium)</p>
          +                                </div>
          +                            </div>
          +                        </div>
          +                        <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +                            <div @mouseover="toggleClassForPackage" @click="getPackage(3)" class="listing listing-danger listing-radius">
          +                                <div class="shape">
          +                                    <div class="shape-text">hot</div>
          +                                </div>
          +                                <div class="listing-content">
          +                                    <h3 class="lead text-danger text-bold">Identity IQ</h3>
          +                                    <p class="text-danger text-bold">Unavailable at this time
          +                                        </p>
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +</template>
          +<script>
          +import pkg from "../../helper/package";
          +import {setAmount, setPackageId, setStep} from "../../helper";
          +import router from "../../router";
          +
          +export default {
          +    setup() {
          +    },
          +    data(){
          +        return {
          +            package:pkg,
          +            is_highlight1:true
          +        }
          +    },
          +    methods:{
          +        toggleClassForPackage(){
          +            this.is_highlight1 = false
          +        },
          +        conditionalAlert(message,package_id){
          +            this.$swal({
          +                title: 'Warning',
          +                text: message,
          +                icon: 'warning',
          +                showCancelButton: true,
          +                confirmButtonColor: '#3085d6',
          +                cancelButtonColor: '#d33',
          +                confirmButtonText: 'Yes'
          +            }).then((result) => {
          +                if (result.isConfirmed) {
          +                    setStep(5);
          +                    setPackageId(package_id)
          +                    setAmount(this.package.prices[package_id])
          +                    router.push({name: 'make-payment'})
          +                }
          +            });
          +        },
          +        getPackage(package_id) {
          +            if(package_id == 3){
          +                this.$swal(
          +                    "Currently this package is not available",
          +                    "",
          +                    "warning"
          +                )
          +            }else {
          +                this.conditionalAlert("Are you sure want to take the $"+this.package.prices[package_id]+ ' ('+this.package.labels[package_id]+") package?", package_id);
          +            }
          +        }
          +    }
          +}
          +</script>
          +
          +<style scoped>
          +   @import '../../../css/credit_report.css';
          +
          +   .container .card {
          +       height: 600px;
          +   }
          +
          +   .listing{
          +       font-family: "Lato", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
          +   }
          +   .text-white{
          +       color: white;
          +   }
          +   .package-1{
          +       background-color: #FF440A;
          +   }
          +
          +   .listing-highlight{
          +       -webkit-transform: scale(1.1);
          +       transition: all 0.4s ease-in-out;
          +   }
          +   .package-1 .shape {
          +       border-style: solid;
          +       border-width: 0 100px 55px 0;
          +       float: right;
          +       height: 0;
          +       width: 0;
          +       transform: rotate(360deg);
          +   }
          +
          +   .package-1 .shape-text {
          +       color: #FF440A;
          +       font-size: 12px;
          +       font-weight: bold;
          +       position: relative;
          +       right: -45px;
          +       top: -2px;
          +       white-space: nowrap;
          +       transform: rotate(28deg);
          +   }
          +
          +   .package-1.listing-primary .shape{
          +       border-color: transparent #fff transparent transparent;
          +   }
          +</style>
          diff --git a/resources/js/components/partials/CreateAccount.vue b/resources/js/components/partials/CreateAccount.vue
          new file mode 100644
          index 0000000..86c4372
          --- /dev/null
          +++ b/resources/js/components/partials/CreateAccount.vue
          @@ -0,0 +1,240 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>{{appName}}</h3>
          +                    </div>
          +                    <Step step="1"/>
          +                </div>
          +                <div class="right-side">
          +                    <form @submit.prevent="createAccount" autocomplete="off" class="form-element was-validated form-element--login" method="post" id="createAccountForm"
          +                          novalidate="novalidate">
          +                        <div class="main active">
          +                            <TopArea/>
          +                            <div class="text">
          +                                <h2>Creating your account only takes a few seconds.</h2>
          +                                <p>Let's start with some basic info.</p>
          +                            </div>
          +                            <div class="text" v-if="isButtonDisabled">
          +                                <p class="error-text">All fields are required</p>
          +                            </div>
          +                            <div class="text" v-else-if="errorMsg.message">
          +                                <p class="error-text">{{errorMsg.message[0]}}</p>
          +                            </div>
          +                            <div class="input-text">
          +                                <input
          +                                    type="text"
          +                                    placeholder="First Name"
          +                                    name="first_name"
          +                                    :backend="errors.first_name"
          +                                    :errors="v$.formData.first_name.$errors"
          +                                    v-model="formData.first_name"
          +                                    :rules="['required']"
          +                                    :className="{'warning':errors.first_name}"
          +                                />
          +                                <input
          +                                    type="text"
          +                                    placeholder="Last Name"
          +                                    name="last_name"
          +                                    :backend="errors.last_name"
          +                                    v-model="formData.last_name"
          +                                    :errors="v$.formData.last_name.$errors"
          +                                    :rules="['required']"
          +                                    :className="{'warning':errors.last_name}"
          +                                />
          +                            </div>
          +                            <div class="input-text">
          +                                <input
          +                                    type="text"
          +                                    placeholder="Email"
          +                                    v-model="formData.email"
          +                                    :errors="v$.formData.email.$errors"
          +                                    :rules="['required','email']"
          +                                    :className="{'warning':errors.email}"
          +                                />
          +                            </div>
          +                            <div class="input-text">
          +                                <input
          +                                    type="password"
          +                                    placeholder="Password"
          +                                    :backend="errors.password"
          +                                    v-model="formData.password"
          +                                    :errors="v$.formData.password.$errors"
          +                                    :rules="['required','password']"
          +                                    :className="{'warning':errors.password}"
          +                                />
          +                            </div>
          +                            <div class="input-text">
          +                                <VueRecaptcha
          +                                    :sitekey="siteKey"
          +                                    :load-recaptcha-script="true"
          +                                    @verify="handleSuccess"
          +                                    @error="handleError"
          +                                />
          +
          +                            </div>
          +                            <div class="input-text">
          +                                <input type="checkbox" v-model="formData.is_click_acknowledge"  @change.prevent="checkClickAcknowledge($event)">
          +                                <span style="font-weight:bold;color:purple;font-size: 12px;margin-top:5px">
          +                                    By clicking on the "Next " button on the left, I acknowledge that I have read the Service Agreement, <a href="/terms-of-service" target="_blank">Terms of Use</a> and <a href="/terms-of-service" target="_blank">Privacy Policy</a> , and that I agree to their terms.
          +                                </span>
          +                            </div>
          +                            <div class="buttons">
          +                                <button :disabled="v$.formData.$invalid" type="submit" value="Next" class="next_button">Next Step</button>
          +                            </div>
          +                        </div>
          +                    </form>
          +                </div>
          +            </div>
          +        </div>
          +
          +    </div>
          +<Footer/>
          +</template>
          +<script>
          +import register from "@/Api/register";
          +import {
          +    setStep,
          +    setUserEmail,
          +    setUserId,
          +    setSecurityKey,
          +    setPackageId,
          +    setAmount,
          +    setUserLastName,
          +    getPackageId,
          +    setUserFirstName,
          +    setUserPassword,
          +    getUserFirstName,
          +    getUserLastName,
          +    getUserPassword,
          +    getUserEmail,
          +    getUserId, getLocalStorage,setLocalStorage
          +} from "../../helper";
          +import router from "../../router";
          +import { VueRecaptcha } from 'vue-recaptcha';
          +import useVuelidate from '@vuelidate/core'
          +import { required, email } from '@vuelidate/validators'
          +import { GOOGLE_CAPTCHA_SITEKEY } from "../../config/constants";
          +import pkg from "../../helper/package";
          +import Footer from "./Footer.vue";
          +
          +export default {
          +    components: {VueRecaptcha,Footer},
          +    setup() {
          +        return {v$: useVuelidate()};
          +    },
          +    data(){
          +        return {
          +            formData:{
          +                first_name: "",
          +                last_name: "",
          +                email: "",
          +                password: "",
          +                captcha:"",
          +                is_click_acknowledge:null,
          +                is_free:IS_FREE,
          +            },
          +            siteKey:GOOGLE_CAPTCHA_SITEKEY,
          +            message:"",
          +            errors:{},
          +            errorMsg:{},
          +            isButtonDisabled:true,
          +            package:pkg,
          +            appName : APP_NAME
          +        }
          +    },
          +    async mounted() {
          +                const userData = JSON.parse(getLocalStorage('formData'))|| [];
          +                this.formData.first_name = userData.first_name;
          +                this.formData.last_name = userData.last_name;
          +                this.formData.email = userData.email;
          +                this.formData.password = userData.password
          +    },
          +
          +    methods:{
          +
          +        handleSuccess(response){
          +            if(response) {
          +                this.formData.captcha = response;
          +            }
          +        },
          +        handleError(){
          +            this.formData.captcha = "";
          +        },
          +        async createAccount(){
          +            this.formData.is_free = IS_FREE;
          +            const result = await register.createAccount(this.formData);
          +            this.errors = {};
          +            this.errorMsg = {};
          +            if (result.status_code == 100) {
          +                setLocalStorage('formData', JSON.stringify(this.formData));
          +                setStep(2);
          +                router.push({name: 'add-profile'});
          +            } else {
          +                this.errors = result.data
          +
          +                if(result.status_code == 400)
          +                {
          +                    this.errorMsg.message = [result.message];
          +                }else {
          +                    if (this.errors?.email) {
          +                        this.errorMsg.message = this.errors?.email;
          +                    }else if (this.errors?.password) {
          +                        this.errorMsg.message = this.errors?.password;
          +                    } else {
          +                        this.errorMsg.message = this.errors?.captcha;
          +                    }
          +                }
          +                if (this.errorMsg.message){
          +                    this.isButtonDisabled = false
          +                }
          +            }
          +        },
          +        checkClickAcknowledge(e){
          +            if(e.target.checked){
          +                this.formData.is_click_acknowledge=e.target.checked;
          +            }
          +            else {
          +                this.formData.is_click_acknowledge=null;
          +            }
          +        },
          +    },
          +
          +    validations () {
          +        this.errors = {};
          +        return {
          +            formData: {
          +                first_name: {required},
          +                last_name: {required},
          +                email:{required,email},
          +                password:{required},
          +                is_click_acknowledge:{required}
          +            }
          +        }
          +    }
          +}
          +</script>
          +<style scoped>
          +@media (max-width: 750px) {
          +    .container .card .right-side {
          +        width: 100%;
          +        border-radius: 0 !important;
          +    }
          +    .container .card .left-side {
          +        display: block;
          +        width: 100%;
          +        border-radius: 0 !important;
          +    }
          +    .container .card .form {
          +        display: block;
          +    }
          +}
          +.error-text {
          +    color: red;
          +    text-align: center
          +}
          +</style>
          +
          +
          diff --git a/resources/js/components/partials/CreateCreditReportAccount.vue b/resources/js/components/partials/CreateCreditReportAccount.vue
          new file mode 100644
          index 0000000..4be9b1c
          --- /dev/null
          +++ b/resources/js/components/partials/CreateCreditReportAccount.vue
          @@ -0,0 +1,213 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>Creditzombies</h3>
          +                    </div>
          +                    <Step step="3"/>
          +                </div>
          +                <div class="right-side">
          +                    <form @submit.prevent autocomplete="off" class="form-element was-validated form-element--login" method="post"
          +                          novalidate="novalidate">
          +                        <div class="main active">
          +                            <TopArea/>
          +                            <div class="text">
          +                                <h2>Please input your smart credit email and password</h2>
          +                                <p>Let's start with some basic info.</p>
          +                            </div>
          +                            <div class="text" v-if="isButtonDisabled">
          +                                <p style="color:red;text-align:center">All fields are required</p>
          +                            </div>
          +                            <div class="text" v-if="errorMsg.message">
          +                                <p style="color:red;text-align:center">{{errorMsg.message[0]}}</p>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="editable('fname')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        :readonly="inputReadOnly.fname"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.first_name}"
          +                                        placeholder="First Name"
          +                                        type="text"
          +                                        v-model="formData.first_name"
          +                                        @keyup="validateInput"
          +                                        @blur="validateInput"
          +                                    />
          +                                    <ValidationError :msg="errors.first_name"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="editable('lname')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        :readonly="inputReadOnly.lname"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.last_name}"
          +                                        placeholder="Last Name"
          +                                        type="text"
          +                                        v-model="formData.last_name"
          +                                        @keyup="validateInput"
          +                                        @blur="validateInput"
          +                                    />
          +                                    <ValidationError :msg="errors.last_name"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <p class="edit-text">
          +                                        <a href="#" @click.prevent="editable('email')">Edit</a>
          +                                    </p>
          +                                    <input
          +                                        :readonly="inputReadOnly.email"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.email}"
          +                                        placeholder="Email"
          +                                        type="text"
          +                                        v-model="formData.email"
          +                                        @keyup="validateInput"
          +                                        @blur="validateInput"
          +                                    />
          +                                    <ValidationError :msg="errors.email"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.password}"
          +                                        placeholder="Password"
          +                                        type="password"
          +                                        v-model="formData.password"
          +                                        @keyup="validateInput"
          +                                        @blur="validateInput"
          +                                    />
          +                                    <ValidationError :msg="errors.password"/>
          +                                </div>
          +                            </div>
          +                            <div class="buttons" style="text-align: center">
          +                                <button :disabled="isButtonDisabled" @click="importCreditReport" type="button" value="Next" class="next_button">Import Credit Report</button>
          +                            </div>
          +                        </div>
          +                    </form>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +</template>
          +<script>
          +import useFormValidation from "@/Validation/useFormValidation";
          +import useSubmitButtonState from "@/Validation/useSubmitButtonState";
          +import register from "@/Api/register";
          +import {inject, onMounted, reactive, ref} from "vue";
          +import state from "../../helper/state";
          +import {getPackageId, getUserEmail, getUserId, setStep} from "../../helper";
          +import router from "../../router";
          +
          +export default {
          +    setup() {
          +
          +        const swal = inject('$swal');
          +        let formData = ref({
          +            "first_name": "",
          +            "last_name": "",
          +            "email": "",
          +            "password": ""
          +        })
          +
          +        let inputReadOnly = ref({
          +            "fname":true,
          +            "lname":true,
          +            "email":true
          +        })
          +        const stateList = state;
          +
          +        const errorMsg = reactive({
          +            "message":""
          +        })
          +        let success = {}
          +
          +        let {errors} = useFormValidation();
          +       // let {isButtonDisabled} = useSubmitButtonState(formData, errors);
          +        let isButtonDisabled = ref(true)
          +        const validateInput = () =>{
          +            let f = formData.value;
          +            let count = 0;
          +            isButtonDisabled.value = true
          +            if(f.first_name){
          +                count++
          +            }
          +
          +            if(f.last_name){
          +                count++
          +            }
          +
          +            if(f.email){
          +                count++
          +            }
          +
          +            if(f.password){
          +                count++
          +            }
          +
          +            if(count == 4){
          +                isButtonDisabled.value = false
          +            }
          +
          +        }
          +        const editable = (value) =>{
          +            inputReadOnly.value[value] = !inputReadOnly.value[value]
          +        }
          +        const importCreditReport = async () => {
          +            if(isButtonDisabled){
          +                const params = {
          +                    "email":formData.value.email,
          +                    "password":formData.value.password,
          +                    "package_id":getPackageId(),
          +                    "user_id":getUserId()
          +                }
          +               const response =  await register.importCreditReportByEmail(params)
          +                if(response.status_code == 100){
          +                    router.push({name:"success"})
          +                }else{
          +                    swal(
          +                        response.message,
          +                        "",
          +                        "warning"
          +                    )
          +                }
          +                console.log('response',response)
          +            }
          +
          +        }
          +
          +        console.log('errors',errors,isButtonDisabled)
          +
          +        onMounted(async ()=>{
          +            let email = getUserEmail()
          +            const userInfo = await register.getUserInfo()
          +            if(userInfo.status_code == 100){
          +                formData.value = userInfo.data
          +            }
          +        })
          +        console.log('count',isButtonDisabled)
          +        console.log('userInfo',formData)
          +        return {validateInput,editable,inputReadOnly, formData,errors,importCreditReport, isButtonDisabled,stateList,errorMsg };
          +    }
          +}
          +</script>
          +
          +<style scoped>
          +
          +.next_button{
          +    width: 200px;
          +}
          +
          +.container .card {
          +    height: 550px;
          +}
          +</style>
          diff --git a/resources/js/components/partials/Footer.vue b/resources/js/components/partials/Footer.vue
          new file mode 100644
          index 0000000..888e56d
          --- /dev/null
          +++ b/resources/js/components/partials/Footer.vue
          @@ -0,0 +1,35 @@
          +<template>
          +    <div class="panel panel-default" style="text-align: center;padding: 10px">
          +        <strong>
          +            Secure SSL Area | This website is protected by secure portal © 2025 Clickletters LLC/M2C Academy LLC. All rights reserved.
          +        </strong>
          +    </div>
          +
          +</template>
          +<script>
          +import useVuelidate from "@vuelidate/core";
          +
          +export default {
          +
          +    name: 'Footer',
          +    setup() {
          +        return {v$: useVuelidate()};
          +    },
          +
          +    data() {
          +
          +    },
          +    mounted() {
          +    },
          +
          +    methods: {
          +
          +    },
          +
          +    validations() {
          +
          +    },
          +
          +}
          +</script>
          +
          diff --git a/resources/js/components/partials/IdentityIQPkg.vue b/resources/js/components/partials/IdentityIQPkg.vue
          new file mode 100644
          index 0000000..fa87d86
          --- /dev/null
          +++ b/resources/js/components/partials/IdentityIQPkg.vue
          @@ -0,0 +1,93 @@
          +<template>
          +    <div class="smart-credit-pkg">
          +        <div class="link-area">
          +            <a href='#' @click="goToLogin">
          +                Already a member? Log In
          +            </a>
          +
          +        </div>
          +        <div  style="margin-top: 40%;" class="report-card p-3 report-card--best report-card__aside mt-5 report-card--info">
          +            <div class="report-card__header pb-3">
          +                <h5>
          +                    <strong>
          +                        <img :src="`${img_url}`" alt="SmartCredit" class="provider-logo">
          +                        {{package.labels[package_id]}}
          +                    </strong>
          +                </h5>
          +            </div>
          +            <div class="report-card__price p-2" >
          +
          +                <h4 v-if="is_free !== '1'"> ${{package.prices[package_id]}}/mo  </h4>
          +                <h3 v-if="is_free === '1'" style="color: red"> Free Limited Time  </h3>
          +                <span> Cancel Anytime </span>
          +
          +            </div>
          +            <div class="report-card__points py-2 pt-3">
          +                <ul class="points">
          +                    <li>
          +                        <i class="fas fa-check-circle"></i>
          +                        <strong> Unlimited {{company_Name}} Challenges/Letter Attacks </strong>
          +                    </li>
          +                </ul>
          +            </div>
          +            <div class="report-card__points py-2">
          +                <ul class="points" >
          +                    <li  v-for="subitem in reportProviders.IdentityIQPoints"><i class="fas fa-check-circle"></i> {{subitem}}</li>
          +                </ul>
          +            </div>
          +
          +            <div class="report-card__text py-2">
          +                <p>
          +                    Includes Full 6 Wave attacks,
          +                    that will allow you to effectively and efficiently
          +                    challenge all inaccurate negative items
          +                    with a click of a button in 45 seconds or less.
          +                </p>
          +            </div>
          +
          +            <div class="report-card__action">
          +
          +            </div>
          +        </div>
          +<!--        <div v-if="is_free === '1'" style="margin-top: 100px">-->
          +<!--            <img :src="`${freesignup_img_url}`" alt="SmartCredit" class="provider-logo" style="width: 350px;height: 600px">-->
          +<!--        </div>-->
          +    </div>
          +</template>
          +
          +<script>
          +import pkg from "../../helper/package";
          +import reportProviders from "../../helper/report_provider";
          +import {unsetStep} from "../../helper";
          +
          +export default {
          +    props:{
          +        package_id:{
          +            required:true
          +        },
          +    },
          +    data(){
          +        return {
          +            is_free: IS_FREE,
          +            package:pkg,
          +            app_base_url: APP_URL,
          +            reportProviders : reportProviders,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +            company_Name:COMPANY_NAME,
          +            freesignup_img_url:APP_URL+'/images/'+'freesignup.png'
          +        }
          +    },
          +    methods: {
          +        async goToLogin() {
          +            unsetStep();
          +            localStorage.clear();
          +            window.location.href = `${this.app_base_url}/login`;
          +        }
          +    }
          +}
          +</script>
          +<style>
          +
          +@import url("./../../../css/smartcredit.css");
          +
          +</style>
          diff --git a/resources/js/components/partials/IdentityIqLogo.vue b/resources/js/components/partials/IdentityIqLogo.vue
          new file mode 100644
          index 0000000..a912c78
          --- /dev/null
          +++ b/resources/js/components/partials/IdentityIqLogo.vue
          @@ -0,0 +1,24 @@
          +<template>
          +    <div class="smart-credit-logo">
          +        <img :src="`${img_url}`" class="provider-logo" alt="">
          +        <strong> {{ package.labels[package_id] }}</strong>
          +    </div>
          +</template>
          +
          +<script>
          +import pkg from "../../helper/package";
          +export default {
          +    props:{
          +        package_id:{
          +            required:true
          +        }
          +    },
          +    data(){
          +        return {
          +            package:pkg,
          +            image_base_url: APP_URL,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +        }
          +    }
          +}
          +</script>
          diff --git a/resources/js/components/partials/MakePayment.vue b/resources/js/components/partials/MakePayment.vue
          new file mode 100644
          index 0000000..a45116e
          --- /dev/null
          +++ b/resources/js/components/partials/MakePayment.vue
          @@ -0,0 +1,471 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>Creditzombies</h3>
          +                    </div>
          +                    <Step step="3"/>
          +                </div>
          +                <div class="right-side">
          +                    <form @submit.prevent="makePayment" autocomplete="off"
          +                          class="form-element was-validated form-element--login" method="post"
          +                          novalidate="novalidate">
          +                        <div class="main active">
          +                            <TopArea :is_show_login="false"/>
          +                            <div class="text">
          +                                <h2> Credit Zombies Partnered with SmartCredit</h2>
          +                                <p>Let's start with some basic info.</p>
          +                            </div>
          +                            <SmartCreditLogo :package_id="formData.package_id" />
          +                            <div class="text" style="margin-top: 10px" v-if="isButtonDisabled">
          +                                <p style="color:red;text-align:center">All fields are required</p>
          +                            </div>
          +                            <div class="text" v-if="message">
          +                                <p style="color:red;text-align:center">{{ message[0] }}</p>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="first_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':v$.formData.first_name.$errors.length}"
          +                                        placeholder="First Name"
          +                                        type="text"
          +                                        v-model="formData.first_name"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.first_name"
          +                                                     :msg="v$.formData.first_name.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="last_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':v$.formData.last_name.$errors.length}"
          +                                        placeholder="Last Name"
          +                                        type="text"
          +                                        v-model="v$.formData.last_name.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.last_name" :msg="v$.formData.last_name.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="email"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.email}"
          +                                        placeholder="Email"
          +                                        type="text"
          +                                        v-model="v$.formData.email.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.email" :msg="v$.formData.email.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="password"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.password}"
          +                                        placeholder="Password"
          +                                        type="password"
          +                                        v-model="v$.formData.password.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.password" :msg="v$.formData.password.$errors"/>
          +                                </div>
          +                                <div class="input-div" >
          +                                    <input
          +                                        ref="phone"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.phone}"
          +                                        placeholder="Phone, e,g. 954-604-4220"
          +                                        type="text"
          +                                        v-model="v$.formData.phone.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.phone" :msg="v$.formData.phone.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="full_ssn"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.full_ssn}"
          +                                        placeholder="Full SSN e.g, 555-55-5555"
          +                                        type="text"
          +                                        @keyup.prevent="ssnCompleted($event)"
          +                                        v-model="v$.formData.full_ssn.$model"
          +                                        :maxlength="min"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.full_ssn" :msg="v$.formData.full_ssn.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="birth_date"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.birth_date}"
          +                                        placeholder="Birth Date e.g, mm/dd/yyyy"
          +                                        type="text"
          +                                        v-model="v$.formData.birth_date.$model"
          +                                        @keyup.prevent="birthDateCompleted($event)"
          +                                        :maxlength="10"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.birth_date" :msg="v$.formData.birth_date.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="street_no"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.street_no}"
          +                                        placeholder="Street No."
          +                                        type="text"
          +                                        v-model="v$.formData.street_no.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.street_no" :msg="v$.formData.street_no.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="street_name"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.street_name}"
          +                                        placeholder="Street Name"
          +                                        type="text"
          +                                        v-model="v$.formData.street_name.$model"
          +                                        :readonly="disabled == 1"
          +
          +                                    />
          +                                    <ValidationError :backend="errors.street_name"
          +                                                     :msg="v$.formData.street_name.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="city"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.city}"
          +                                        placeholder="City"
          +                                        type="text"
          +                                        v-model="v$.formData.city.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.city" :msg="v$.formData.city.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <select ref="state" v-model="v$.formData.state.$model" :aria-readonly="disabled">
          +                                        <option value="">Please select state</option>
          +                                        <option :key="item.id" v-for="item in stateList" :value="item.id">
          +                                            {{ item.value }}
          +                                        </option>
          +                                    </select>
          +                                    <ValidationError :backend="errors.state" :msg="v$.formData.state.$errors"/>
          +                                </div>
          +
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="zip_code"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.zip_code}"
          +                                        placeholder="Zip Code"
          +                                        type="text"
          +                                        v-model="v$.formData.zip_code.$model"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.zip_code" :msg="v$.formData.zip_code.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        ref="ssn"
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.ssn}"
          +                                        placeholder="SSN"
          +                                        type="text"
          +                                        v-model="v$.formData.ssn.$model"
          +                                        :maxlength="4"
          +                                        @keyup.prevent="ssnCompleted($event)"
          +                                        :readonly="disabled == 1"
          +                                    />
          +                                    <ValidationError :backend="errors.ssn" :msg="v$.formData.ssn.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="text">
          +                               <p>Provide Card Information</p>
          +                            </div>
          +                            <div class="input-text">
          +                                <div class="input-div">
          +                                    <input
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.card_number}"
          +                                        placeholder="Card Number"
          +                                        type="text"
          +                                        v-model="v$.formData.card_number.$model"
          +                                    />
          +                                    <ValidationError :backend="errors.card_number"
          +                                                     :msg="v$.formData.card_number.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.expiry}"
          +                                        placeholder="Expiry e.g mm/yy"
          +                                        type="text"
          +                                        v-model="v$.formData.expiry.$model"
          +                                        @keyup.prevent="cardExpiryCompleted($event)"
          +                                        :maxlength="5"
          +                                    />
          +                                    <ValidationError :backend="errors.expiry" :msg="v$.formData.expiry.$errors"/>
          +                                </div>
          +                                <div class="input-div">
          +                                    <input
          +                                        autocomplete="off"
          +                                        :class="{'warning':errors.amount}"
          +                                        placeholder="Amount"
          +                                        type="text"
          +                                        v-model="v$.formData.amount.$model"
          +                                        disabled="disabled"
          +                                    />
          +                                    <ValidationError :backend="errors.amount" :msg="v$.formData.amount.$errors"/>
          +                                </div>
          +                            </div>
          +                            <div class="input-text" style="gap:5px">
          +                                <input type="checkbox" v-model="formData.is_authorized"  @change.prevent="checkTermsAndService($event)">
          +                                <span style="font-weight:bold;color:purple;font-size: 12px;margin-top:15px">
          +                                    Yes I have read the <a href="/terms-of-service" target="_blank">SmartCredit terms of services</a> for this purchase and I totally Agree and Authorize this Charge of ${{ formData.amount }}</span>
          +                            </div>
          +                            <div class="input-text" >
          +                                <div class="input-div buttons" style="text-align: center">
          +                                    <button :disabled="v$.formData.$invalid"  ref="purchase-btn"  type="submit" value="Next" class="next_button" >
          +                                        Purchase
          +                                    </button>
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </form>
          +                </div>
          +                <SmartCreditPkg :package_id="formData.package_id"/>
          +            </div>
          +        </div>
          +    </div>
          +</template>
          +
          +<script>
          +import useVuelidate from '@vuelidate/core'
          +import {required, email, integer,minLength} from '@vuelidate/validators'
          +import register from "./../../Api/register";
          +import {
          +    getFormData, getLocalStorage,
          +    getPackageId, getUserQuestionAnswer,
          +    setStep,
          +    setUserId, unsetFormData, unsetUserQuestionAnswer,unsetLocalStorage
          +} from "../../helper";
          +import router from "../../router";
          +import state from "../../helper/state";
          +import pkg from "../../helper/package";
          +import SmartCreditLogo from "./SmartCreditLogo";
          +import SmartCreditPkg from "./SmartCreditPkg";
          +export default {
          +    components: {SmartCreditPkg, SmartCreditLogo },
          +    setup() {
          +        return {v$: useVuelidate()}
          +    },
          +    data() {
          +        return {
          +            is_disable:true,
          +            formData: {
          +                first_name: "",
          +                last_name: "",
          +                email: "",
          +                password: "",
          +                street_no: "",
          +                street_name: "",
          +                city: "",
          +                ssn: "",
          +                state: "",
          +                zip_code: "",
          +                phone: "",
          +                card_number: "",
          +                full_ssn:"",
          +                expiry: "",
          +                amount: "",
          +                package_id: 0,
          +                birth_date:"",
          +                is_authorized: null,
          +                // questionList:[]
          +
          +            },
          +            stateList: state,
          +            errors: {},
          +            message: [
          +                "All fields are required"
          +            ],
          +            disabled: 1,
          +            package: pkg,
          +            value: null,
          +            roleOptions:[],
          +            isOpen: false,
          +            min:11
          +        }
          +    },
          +    async mounted() {
          +        const userData = JSON.parse(getLocalStorage('formData')) || [];
          +        this.formData.first_name = userData.first_name;
          +        this.formData.last_name = userData.last_name;
          +        this.formData.email = userData.email;
          +        this.formData.password = userData.password;
          +        this.formData.package_id = userData.package_id;
          +        this.formData.amount = userData.amount;
          +        this.formData.street_no= userData.street_no;
          +        this.formData.street_name=userData.street_name;
          +        this.formData.city=userData.city;
          +        this.formData.ssn=userData.ssn;
          +        this.formData.full_ssn=userData.full_ssn;
          +        this.formData.state=userData.state;
          +        this.formData.zip_code=userData.zip_code;
          +        this.formData.phone=userData.phone;
          +        this.formData.package_id=userData.package_id;
          +        this.formData.birth_date=userData.birth_date;
          +
          +        this.$refs['state'].toggleAttribute("disabled")
          +
          +
          +    },
          +    methods: {
          +        async makePayment() {
          +            this.$refs['purchase-btn'].toggleAttribute("disabled")
          +            this.errors = {};
          +            const data = await register.makePayment(this.formData);
          +            if (data.status_code == "100") {
          +                unsetLocalStorage('formData');
          +                setUserId(data.data.id);
          +                setStep(6);
          +                router.push({name: "success"});
          +            } else {
          +                this.message[0] = data.message;
          +            }
          +        },
          +        toggle: function (refId) {
          +            let attribute = "readonly"
          +            if (refId === "state") {
          +                attribute = "disabled"
          +            }
          +            this.$refs[refId].toggleAttribute(attribute)
          +        },
          +        backToProfile:function (){
          +            setStep(2);
          +            router.push({name: 'add-profile'});
          +        },
          +        checkTermsAndService(e){
          +            if(e.target.checked){
          +               this.formData.is_authorized=e.target.checked;
          +            }
          +            else {
          +                this.formData.is_authorized=null;
          +            }
          +        },
          +        ssnCompleted(e) {
          +            if(this.formData.full_ssn.length === 3 || this.formData.full_ssn.length === 6) {
          +                this.formData.full_ssn += '-';
          +            }
          +            if(this.formData.full_ssn.length === 11){
          +                this.formData.ssn = this.formData.full_ssn.substring( 7, 11 );
          +            }
          +        },
          +        birthDateCompleted(e) {
          +            if(this.formData.birth_date.length===2 ||this.formData.birth_date.length===5){
          +                this.formData.birth_date+='/';
          +            }
          +        },
          +        cardExpiryCompleted(e){
          +            if(this.formData.expiry.length===2){
          +                this.formData.expiry+='/';
          +            }
          +        }
          +    },
          +    validations() {
          +        return {
          +            formData: {
          +                first_name: {required}, // Matches this.firstName
          +                last_name: {required},
          +                email: {required, email},
          +                password: {required},
          +                card_number: {required},
          +                street_no: {required},
          +                street_name: {required},
          +                city: {required},
          +                ssn: {required,minLength:minLength(4)},
          +                state: {required},
          +                zip_code: {required},
          +                phone: {required},
          +                expiry: {required},
          +                amount: {required},
          +                full_ssn: {required,minLength:minLength(this.min)},
          +                birth_date: {required},
          +                is_authorized:{required}
          +                // questionList: {required}
          +            }
          +        }
          +    }
          +}
          +</script>
          +
          +<style scoped>
          +.container .card {
          +    width: 1300px;
          +}
          +
          +.input-text {
          +    margin: 15px 0;
          +    display: flex;
          +    gap: 20px;
          +}
          +
          +.container .card .form {
          +    background-image: unset;
          +}
          +
          +.container .card .left-side {
          +    width: 25%;
          +    background-image: -webkit-linear-gradient(-90deg, #54c7dc 0%, #4361c2 100%);
          +}
          +
          +.container .card .right-side {
          +    width: 50%;
          +}
          +@media (max-width: 750px) {
          +    .container .card .right-side {
          +        width: 100%;
          +        border-bottom-left-radius: 20px !important;
          +        border-top-right-radius: 0px !important;
          +    }
          +    .container .card .left-side {
          +        display: block;
          +        width: 100%;
          +        border-top-left-radius: 20px !important;
          +        border-top-right-radius: 20px !important;
          +        border-bottom-left-radius: 0px !important;
          +        border-bottom-right-radius: 0px !important;
          +    }
          +    .container .card .form {
          +        display: block;
          +    }
          +    .smart-credit-pkg {
          +        width: 100%;
          +        padding-top: 1%;
          +        padding-right: 0px;
          +    }
          +}
          +</style>
          diff --git a/resources/js/components/partials/PaymentModal.vue b/resources/js/components/partials/PaymentModal.vue
          new file mode 100644
          index 0000000..fa4d5ca
          --- /dev/null
          +++ b/resources/js/components/partials/PaymentModal.vue
          @@ -0,0 +1,432 @@
          +<template>
          +    <div class="modal-backdrop" id="payment-modal-view">
          +        <div class="modal">
          +            <section class="modal-body" >
          +                <slot name="body">
          +                    <form @submit.prevent="paymentFormSubmit" autocomplete="off"
          +                          class="form-element was-validated form-element--login" method="post"
          +                          novalidate="novalidate">
          +                       <div class="row body" id="payment-modal">
          +                        <div class="center">
          +
          +                            <div class="payment-container">
          +                                <div class="row">
          +                                        <div class="col-50 text" style="text-align: center;" v-if="message">
          +                                            <p style="color:red;text-align:center;margin-top: -20px">{{ message[0] }}</p>
          +                                        </div>
          +                                    <button type="button" class="close" style="width: 20px;height: 20px;"
          +                                            @click.prevent="closePaymentModal"> X
          +                                    </button>
          +                                </div>
          +                                <div class="row header-panel">
          +                                    <ScPartnerCzLogo/>
          +                                </div>
          +                                <div class="row">
          +                                   <p class="top-text">$24.97/mo Cancel Anytime</p>
          +                                </div>
          +                                <div class="row">
          +                                        <div class="col-50">
          +                                            <h3 class="text-center-sm" style="padding-bottom: 10px;">Billing Information</h3>
          +                                            <label for="fname" class="text-center-sm">Customer Information</label>
          +                                            <label for="fname"><i class="fa fa-user"></i> Full Name</label>
          +                                            <input
          +                                                type="text"
          +                                                placeholder="Full Name"
          +                                                name="firstname"
          +                                                :backend="errors.full_name"
          +                                                v-model="data.full_name"
          +                                                :rules="['required']"
          +                                                disabled
          +                                                :class="{'warning':errors.full_name}"
          +                                            />
          +<!--                                            <label  class="text-warning" v-text="errors.full_name"></label>-->
          +<!--                                            <ValidationError :backend="errors.full_name" :msg="v$.formData.full_name.$errors"/>-->
          +<!--                                            <input type="text" id="fname" name="firstname" placeholder="John M. Doe">-->
          +                                            <label for="email"><i class="fa fa-envelope"></i> Email</label>
          +                                            <input
          +                                                type="text"
          +                                                placeholder="john@example.com"
          +                                                name="email"
          +                                                :backend="errors.email"
          +                                                v-model="data.email"
          +                                                :rules="['required']"
          +                                                disabled
          +                                                :class="{'warning':errors.email}"
          +                                            />
          +                                            <div v-if="errors.email" class="invalid-feedback">
          +                                                {{errors.email[0]}}
          +                                            </div>
          +
          +                                            <label for="city"><i class="fa fa-institution"></i> City</label>
          +                                            <input
          +                                                type="text"
          +                                                placeholder="New York"
          +                                                name="city"
          +                                                :backend="errors.city"
          +                                                v-model="data.city"
          +                                                :rules="['required']"
          +                                                disabled
          +                                                :class="{'warning':errors.city}"
          +                                            />
          +                                            <div class="row">
          +                                                <div class="col-50">
          +                                                    <label for="state">State</label>
          +                                                    <input
          +                                                        type="text"
          +                                                        placeholder="NY"
          +                                                        name="state"
          +                                                        :backend="errors.state"
          +                                                        v-model="data.state"
          +                                                        :rules="['required']"
          +                                                        disabled
          +                                                        :class="{'warning':errors.state}"
          +                                                    />
          +
          +                                                    <!--                                                    <label  class="text-warning" v-text="errors.state"></label>-->
          +                                                    <!--                                                    <ValidationError :backend="errors.state" :msg="v$.formData.state.$errors"/>-->
          +                                                    <!--                                                    <input type="text" id="state" name="state" placeholder="NY">-->
          +                                                </div>
          +                                                <div class="col-50">
          +                                                    <label for="zip">Zip</label>
          +                                                    <input
          +                                                        type="text"
          +                                                        placeholder="10001"
          +                                                        name="zip_code"
          +                                                        :backend="errors.zip_code"
          +                                                        v-model="data.zip_code"
          +                                                        :rules="['required']"
          +                                                        disabled
          +                                                        :class="{'warning':errors.zip_code}"
          +                                                    />
          +                                                    <!--                                                    <ValidationError :backend="errors.state" :msg="v$.data.state.$errors"/>-->
          +                                                    <!--                                                    <input type="text" id="zip" name="zip" placeholder="10001">-->
          +                                                </div>
          +                                            </div>
          +<!--                                            <label  class="text-warning" v-text="errors.city"></label>-->
          +<!--                                            <ValidationError :backend="errors.city" :msg="v$.formData.city.$errors"/>-->
          +<!--                                            <input type="text" id="city" name="city" placeholder="New York">-->
          +
          +
          +                                        </div>
          +
          +                                        <div class="col-50">
          +                                            <h3 class="text-center-sm" style="margin-bottom: 10px;">Payment</h3>
          +                                            <label for="fname" class="text-center-sm">Accepted Cards</label>
          +                                            <div class="text-center-sm" style="margin-bottom: 10px">
          +                                                <img :src="`${app_base_url}/img/card.png`"
          +                                                     alt="card" class="provider-logo" style="height: 40px">
          +                                            </div>
          +                                            <label for="ccnum">Credit card number</label>
          +                                            <input
          +                                                autocomplete="off"
          +                                                :class="{'warning':errors.card_number}"
          +
          +                                                placeholder="e.g, 4111111111111111"
          +                                                type="text"
          +                                                v-model="data.card_number"
          +                                            />
          +<!--                                            <label  class="text-warning" v-text="errors.card_number"></label>-->
          +                                            <div class="row">
          +                                                <div class="col-50">
          +                                                    <label for="expyear">Expiry</label>
          +                                                    <input
          +                                                        autocomplete="off"
          +                                                        :class="{'warning':errors.expiry}"
          +                                                        placeholder="e.g, DD/YY"
          +                                                        type="text"
          +                                                        v-model="data.expiry"
          +                                                        @keyup.prevent="cardExpiryCompleted($event)"
          +                                                        :maxlength="5"
          +                                                    />
          +                                                </div>
          +                                                <div class="col-50">
          +                                                    <label for="cvv">CVV</label>
          +                                                    <input
          +                                                        autocomplete="off"
          +                                                        :class="{'warning':errors.cvv_no}"
          +                                                        placeholder="e.g, 352"
          +                                                        type="text"
          +                                                        v-model="data.cvv_no"
          +                                                    />
          +
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-50">
          +                                                    <label for="expmonth">Amount</label>
          +                                                    <input
          +                                                        autocomplete="off"
          +                                                        :class="{'warning':errors.amount}"
          +                                                        placeholder="amount"
          +                                                        type="text"
          +                                                        disabled
          +                                                        v-model="data.amount"
          +                                                    />
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-50">
          +                                                    <p class="aggrement">
          +                                                        <label class="terms-service-text">
          +                                                            <input v-model="data.is_authorized" type="checkbox" @change.prevent="checkTermsAndService($event)" />
          +                                                            Yes I have read the <a href="/terms-of-service" target="_blank"> <span v-if="reportProvider === '3'">SmartCredit</span> <span v-if="reportProvider === '1'">{{ company_Name }}</span> terms of services</a> for this purchase and I totally Agree and Authorize this Charge of ${{ data.amount }}
          +                                                        </label>
          +                                                    <span style="color:red;font-size: 12px" v-if="message">{{ message[1] }}</span>
          +                                                    </p>
          +
          +                                                </div>
          +                                            </div>
          +
          +                                        </div>
          +
          +                                    </div>
          +
          +
          +                                <div class="row">
          +                                    <div class="col-50 text bottom-panel">
          +                                        <button  type="submit"  value="Pay" class="btn btn2" style="width:unset;">Pay</button>
          +                                    </div>
          +                                </div>
          +                                <div class="row">
          +                                    <div class="col-50">
          +                                        <div class="col-50 bottom-panel">
          +                                            <img :src="`${app_base_url}/img/sequrity.png`"
          +                                                 alt="security" class="provider-logo" style="height: 100px">
          +                                        </div>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                        </div>
          +                       </div>
          +                    </form>
          +                </slot>
          +            </section>
          +        </div>
          +    </div>
          +</template>
          +
          +
          +<script>
          +import useVuelidate from '@vuelidate/core'
          +import {required, email, integer,minLength} from '@vuelidate/validators'
          +import router from "../../router";
          +import register from "../../Api/register";
          +import pkg from "../../helper/package";
          +import {
          +    getFormData,
          +    setCustomerToken,
          +    setFormData,
          +    setReferenceNumber,
          +    setStep,
          +    setTrackingToken,
          +    getLocalStorage,
          +    setLocalStorage,
          +    unsetLocalStorage
          +} from "../../helper";
          +import SmartCreditPkgView from "./SmartCreditPkgView.vue";
          +import ScPartnerCzLogo from "./sc_partner_cz_logo.vue";
          +
          +import store from "../../store";
          +export default {
          +    components: {SmartCreditPkgView,ScPartnerCzLogo },
          +    name: 'PaymentModal.vue',
          +    setup() {
          +        return {v$: useVuelidate()}
          +    },
          +    props: {
          +        data: {
          +            type: Object,
          +            default:{},
          +        },
          +    },
          +    data() {
          +        return {
          +            formData: {
          +                full_name:"",
          +                first_name: "",
          +                last_name: "",
          +                email: "",
          +                password: "",
          +                street_no: "",
          +                street_name: "",
          +                city: "",
          +                ssn: "",
          +                state: "",
          +                zip_code: "",
          +                phone: "",
          +                full_ssn:"",
          +                package_id: 0,
          +                birth_date:"",
          +                amount:0,
          +                card_number:"",
          +                expiry:"",
          +                cvv_no:"",
          +                address:"",
          +                is_authorized:null,
          +                is_free:5
          +            },
          +            errors:{},
          +            message: [""],
          +            isButtonDisabled:false,
          +            disabled: 1,
          +            package: pkg,
          +            value: null,
          +            roleOptions:[],
          +            min:4,
          +            app_base_url: APP_URL,
          +            reportProvider: REPORT_PROVIDER,
          +            company_Name:COMPANY_NAME
          +        }
          +    },
          +    mounted() {
          +    },
          +
          +    methods: {
          +
          +        closePaymentModal(data){
          +            this.$emit('close',data);
          +        },
          +        async paymentFormSubmit() {
          +            this.formData = this.$props.data;
          +            this.v$.$validate();
          +            this.errors = {};
          +            this.formValidation();
          +            if(!this.v$.$invalid && this.formData.is_authorized) {
          +                setLocalStorage('formData', JSON.stringify(this.$props.data));
          +                const data = await register.customerCreateAndUpdate(this.$props.data);
          +                if (data.status_code == "100") {
          +
          +                    if (this.reportProvider === '3') {
          +
          +                        setTrackingToken(data.data.tracking_token);
          +                        setCustomerToken(data.data.customer_token);
          +                        setReferenceNumber(data.data.customer_token);
          +                        setReferenceNumber(data.data.questionAnswer.idVerificationCriteria.referenceNumber);
          +                        this.closePaymentModal(data.data.questionAnswer);
          +
          +                    }else if(this.reportProvider === '1'){
          +
          +                      unsetLocalStorage('formData');
          +                      setStep(6);
          +                      router.push({name: "success"});
          +
          +                    }
          +
          +                } else {
          +                    this.message[0] = data.message;
          +                    this.errors = data.data;
          +                    //this.closePaymentModal(true)
          +                    //this.$swal(data.message);
          +                }
          +            }
          +        },
          +        showModal() {
          +            this.isQuestionModalVisible = true;
          +        },
          +        cardExpiryCompleted(e){
          +            if(this.$props.data.expiry.length===2){
          +                this.$props.data.expiry+='/';
          +            }
          +        },
          +        formValidation(){
          +            for (let i in this.v$.$errors){
          +                let key = this.v$.$errors[i].$property;
          +                let msg = this.v$.$errors[i].$message
          +
          +                if(key && msg){
          +                    this.errors[key] = msg;
          +                }
          +            }
          +            if(!this.formData.is_authorized)
          +            {
          +                this.message[1]= 'You have to agree the terms and privacy condition.';
          +
          +            }
          +        },
          +        checkTermsAndService(e){
          +            if(e.target.checked){
          +                this.$props.data.is_authorized = e.target.checked;
          +                this.$props.data.is_free = 2;
          +                this.message[1]=null;
          +            }
          +            else {
          +                this.$props.data.is_authorized = null;
          +            }
          +        },
          +    },
          +    validations() {
          +        return {
          +            formData: {
          +                first_name: {required}, // Matches this.firstName
          +                last_name: {required},
          +                email: {required, email},
          +                password: {required},
          +                card_number: {required},
          +                street_no: {required},
          +                street_name: {required},
          +                city: {required},
          +                ssn: {required,minLength:minLength(4)},
          +                state: {required},
          +                zip_code: {required},
          +                phone: {required},
          +                amount: {required},
          +                full_ssn: {required,minLength:minLength(this.min)},
          +                birth_date: {required},
          +                expiry:{required},
          +                cvv_no:{required},
          +                address:{required},
          +                full_name:{required}
          +
          +            }
          +        }
          +    },
          +
          +
          +}
          +</script>
          +
          +<style>
          +
          +
          +#payment-modal .smart-credit-pkg .p-3 {
          +     padding: 0px !important;
          + }
          +#payment-modal .smart-credit-pkg .p-2 {
          +     padding: 0px !important;
          +}
          +#payment-modal .terms-service-text{
          +    font-weight:bold;
          +    color:purple;
          +    font-size: 12px;
          +    margin-bottom: 5px;
          +    line-height: 1.5;
          +}
          +#payment-modal-view .warning{
          +    border: 1px solid red
          +}
          +#payment-modal-view .text-warning{
          +    color: red;
          +}
          +
          +.aggrement p {
          +    margin: 20px;
          +    background-color: #eee;
          +    font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;
          +}
          +.aggrement input {
          +    margin:0 0px 0 0;
          +    vertical-align: middle;
          +    position: relative;
          +    top: -1px;
          +}
          +
          +.invalid-feedback {
          +    width: 100%;
          +    margin-top: -20px;
          +    font-size: .875em;
          +    color: #dc3545;
          +    margin-bottom: 10px;
          +}
          +</style>
          +
          +
          diff --git a/resources/js/components/partials/SmartCreditLogo.vue b/resources/js/components/partials/SmartCreditLogo.vue
          new file mode 100644
          index 0000000..b052434
          --- /dev/null
          +++ b/resources/js/components/partials/SmartCreditLogo.vue
          @@ -0,0 +1,24 @@
          +<template>
          +    <div class="smart-credit-logo">
          +        <img :src="`${img_url}`" class="provider-logo" alt="">
          +        <strong>{{ package.labels[package_id] }}</strong>
          +    </div>
          +</template>
          +
          +<script>
          +import pkg from "../../helper/package";
          +export default {
          +    props:{
          +        package_id:{
          +            required:true
          +        }
          +    },
          +    data(){
          +        return {
          +            package:pkg,
          +            image_base_url: APP_URL,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +        }
          +    }
          +}
          +</script>
          diff --git a/resources/js/components/partials/SmartCreditPkg.vue b/resources/js/components/partials/SmartCreditPkg.vue
          new file mode 100644
          index 0000000..2197758
          --- /dev/null
          +++ b/resources/js/components/partials/SmartCreditPkg.vue
          @@ -0,0 +1,74 @@
          +<template>
          +    <div class="smart-credit-pkg">
          +        <div class="link-area">
          +            <a :href="`${app_base_url}/login`">
          +                Already a member? Log In
          +            </a>
          +        </div>
          +        <div style="margin-top: 65%;" class="report-card p-3 report-card--best report-card__aside mt-5 report-card--info">
          +            <div class="report-card__header pb-3">
          +                <h5>
          +<!--                    :src="`${app_base_url}/img/smartcredit_logo.png`"-->
          +                    <strong> <img
          +                        :src="`${img_url}`"
          +                        alt="SmartCredit" class="provider-logo"> {{package.labels[package_id]}}</strong>
          +                </h5>
          +            </div>
          +            <div class="report-card__price p-2">
          +                <h4>${{package.prices[package_id]}}/mo</h4> <span>Cancel Anytime</span>
          +            </div>
          +            <div class="report-card__points py-2 pt-3">
          +                <ul class="points">
          +<!--                    <li><i class="fas fa-check-circle"></i> <strong>Unlimited Creditzombies-->
          +<!--                        Challenges</strong></li>-->
          +                    <li><i class="fas fa-check-circle"></i> <strong>Monthly 3 Bureau Reports &amp;
          +                        Scores</strong></li>
          +                </ul>
          +            </div>
          +            <div class="report-card__points py-2 ">
          +                <ul class="points">
          +                    <li><i class="fas fa-check-circle"></i> Identity Theft Insurance ($1m)</li>
          +                    <li><i class="fas fa-check-circle"></i> Credit Monitoring &amp; Alerts (TU)</li>
          +                    <li><i class="fas fa-check-circle"></i> ScoreTracker</li>
          +                    <li><i class="fas fa-check-circle"></i> ScoreBuilder</li>
          +                    <li><i class="fas fa-check-circle"></i> ScoreBoost</li>
          +                    <li><i class="fas fa-check-circle"></i> Money Manager</li>
          +                    <li><i class="fas fa-check-circle"></i> Smart Credit Report</li>
          +                    <li><i class="fas fa-check-circle"></i> PrivacyMaster</li>
          +                </ul>
          +            </div>
          +
          +            <div class="report-card__text py-2">
          +                <p>Includes SmartCredit Money Manager with <strong>{{package.updateLimit[package_id]}}</strong> Transunion Report
          +                    &amp; Score updates in SmartCredit.</p>
          +            </div>
          +            <div class="report-card__action">
          +
          +            </div>
          +        </div>
          +    </div>
          +</template>
          +
          +<script>
          +import pkg from "../../helper/package";
          +export default {
          +    props:{
          +        package_id:{
          +            required:true
          +        }
          +    },
          +    data(){
          +        return {
          +            package:pkg,
          +            app_base_url: APP_URL,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +            company_Name:COMPANY_NAME
          +        }
          +    }
          +}
          +</script>
          +<style>
          +
          +@import url("./../../../css/smartcredit.css");
          +
          +</style>
          diff --git a/resources/js/components/partials/SmartCreditPkgView.vue b/resources/js/components/partials/SmartCreditPkgView.vue
          new file mode 100644
          index 0000000..c9fb83f
          --- /dev/null
          +++ b/resources/js/components/partials/SmartCreditPkgView.vue
          @@ -0,0 +1,39 @@
          +<template>
          +    <div class="smart-credit-pkg">
          +        <div class="report-card p-3 report-card--best report-card__aside mt-5 report-card--info">
          +            <div class="report-card__header pb-3">
          +                <h5>
          +                    <strong>
          +                        <img :src="`${app_base_url}/img/smartcredit_logo.png`"
          +                        alt="SmartCredit" class="provider-logo"> {{package.labels[package_id]}}
          +                    </strong>
          +                </h5>
          +            </div>
          +            <div class="report-card__price p-2">
          +                <h4>${{package.prices[package_id]}}/mo</h4> <span>Cancel Anytime</span>
          +            </div>
          +        </div>
          +    </div>
          +</template>
          +
          +<script>
          +import pkg from "../../helper/package";
          +export default {
          +    props:{
          +        package_id:{
          +            required:true
          +        }
          +    },
          +    data(){
          +        return {
          +            package:pkg,
          +            app_base_url: APP_URL,
          +        }
          +    }
          +}
          +</script>
          +<style>
          +
          +@import url("./../../../css/smartcredit.css");
          +
          +</style>
          diff --git a/resources/js/components/partials/Success.vue b/resources/js/components/partials/Success.vue
          new file mode 100644
          index 0000000..a14c908
          --- /dev/null
          +++ b/resources/js/components/partials/Success.vue
          @@ -0,0 +1,133 @@
          +<template>
          +    <div class="container">
          +        <div class="card">
          +            <div class="form">
          +                <div class="left-side">
          +                    <div class="left-heading">
          +                        <h3>{{ company_Name }}</h3>
          +                    </div>
          +                    <div class="steps-content">
          +                        <h3>Step <span class="step-number">3</span></h3>
          +                        <p class="step-number-content active">Enter your personal information to get closer to
          +                            companies.</p>
          +                        <p class="step-number-content d-none">Get to know better by adding your diploma,certificate and
          +                            education life.</p>
          +                        <p class="step-number-content d-none">Help companies get to know you better by telling then about
          +                            your past experiences.</p>
          +                        <p class="step-number-content d-none">Add your profile picture and let companies find youy
          +                            fast.</p>
          +                    </div>
          +                    <ul class="progress-bar">
          +                        <li class="active">Create Account</li>
          +                        <li class="active">Add Profile</li>
          +                        <li class="active">Credit Report</li>
          +                    </ul>
          +                </div>
          +                <div class="right-side">
          +                    <div class="main active">
          +                        <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
          +                            <circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/>
          +                            <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
          +                        </svg>
          +
          +                        <div class="text congrats" v-if="is_free !== '1'">
          +                            <h2 style="color:purple">Congratulations!</h2>
          +                            <p style="color:purple">Your purchase for ${{ package.prices[package_id] }}({{ package.labels[package_id] }}) went though. </p>
          +                            <p style="color:purple">This is a reoccurring payment that you authorized.</p>
          +                            <p style="color:purple">Important you will see a charge form <span style="font-size: large !important;"> Clickletters LLC </span>  </p>
          +                            <p style="color:purple">on your bank statement each month or until you cancel.</p>
          +                        </div>
          +                        <div class="text congrats" v-if="is_free === '1'">
          +                            <h2 style="color:purple">Congratulations!</h2>
          +                        </div>
          +
          +                        <div class="input-text">
          +
          +                            <div class="input-div buttons" style="text-align: center" >
          +                                <button @click.prevent="makePayment"  type="submit" value="Next" class="next_button">
          +                                   Get Started
          +                                </button>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +<Footer/>
          +</template>
          +<script>
          +import pkg from "../../helper/package";
          +import {onMounted} from 'vue';
          +import {
          +    unsetStep,
          +    getPackageId,
          +    getUserId
          +} from "../../helper";
          +import register from "../../Api/register";
          +import router from "../../router";
          +import Footer from "./Footer.vue";
          +
          +export default {
          +    components: {Footer},
          +    setup() {
          +        onMounted(()=>{
          +            unsetStep()
          +        })
          +        return {APP_URL};
          +    },
          +    data(){
          +        return {
          +            is_free: IS_FREE,
          +            package_id:0,
          +            package:pkg,
          +            app_base_url: APP_URL,
          +            company_Name:COMPANY_NAME
          +        }
          +    },
          +    async mounted() {
          +        this.package_id = getPackageId();
          +    },
          +    created() {
          +        this.fbEvents();
          +    },
          +    methods:{
          +        fbEvents(){
          +            window.fbq('init', '450475028484130');
          +            window.fbq('track', 'PageView');
          +            window.fbq('track', 'Purchase');
          +        },
          +        async makePayment() {
          +            localStorage.removeItem('formData');
          +            window.location.href = `${this.app_base_url}/login`;
          +        },
          +    }
          +}
          +
          +
          +
          +</script>
          +<style scoped>
          +   @import '../../../css/credit_report.css';
          +   .container .card {
          +       height: 550px;
          +   }
          +   @media (max-width: 750px) {
          +       .container .card .right-side {
          +           width: 100%;
          +           border-bottom-left-radius: 20px !important;
          +           border-top-right-radius: 0px !important;
          +       }
          +       .container .card .left-side {
          +           display: block;
          +           width: 100%;
          +           border-top-left-radius: 20px !important;
          +           border-top-right-radius: 20px !important;
          +           border-bottom-left-radius: 0px !important;
          +           border-bottom-right-radius: 0px !important;
          +       }
          +       .container .card .form {
          +           display: block;
          +       }
          +   }
          +</style>
          diff --git a/resources/js/components/partials/TopArea.vue b/resources/js/components/partials/TopArea.vue
          new file mode 100644
          index 0000000..5b83a0b
          --- /dev/null
          +++ b/resources/js/components/partials/TopArea.vue
          @@ -0,0 +1,45 @@
          +<template>
          +    <div class="top-area">
          +        <div class="img-area">
          +            <img class="login-logo" :src="`${img_url}`" alt="">
          +        </div>
          +        <div v-if="is_show_login" class="link-area">
          +            <a href="#" @click="cookiesClear">
          +                Already a member? Log In
          +            </a>
          +        </div>
          +    </div>
          +</template>
          +
          +<script>
          +import {unsetStep, unsetLocalStorage} from "../../helper";
          +
          +export default {
          +    props:{
          +        is_show_login:{
          +            default:true
          +        }
          +    },
          +    data(){
          +        return {
          +            APP_URL : APP_URL,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +            is_show_login:this.$props.is_show_login
          +        }
          +    },
          +    methods:{
          +        cookiesClear(){
          +            unsetLocalStorage('formData');
          +            unsetLocalStorage('userQuestionAnswer');
          +            unsetStep();
          +            window.location.href = `${APP_URL}/login`;
          +        }
          +    }
          +}
          +</script>
          +<style scoped>
          +.login-logo {
          +    width: 150px;
          +    height: auto;
          +}
          +</style>
          diff --git a/resources/js/components/partials/ValidationError.vue b/resources/js/components/partials/ValidationError.vue
          new file mode 100644
          index 0000000..1485a21
          --- /dev/null
          +++ b/resources/js/components/partials/ValidationError.vue
          @@ -0,0 +1,25 @@
          +<template>
          +    <div v-for="error of msg" :key="error.$uid" class="field-validation-error">
          +        <span>
          +            {{ error.$message }}
          +        </span>
          +    </div>
          +    <div v-if="backend"  class="field-validation-error">
          +        <span>
          +            {{ backend[0] }}
          +        </span>
          +    </div>
          +</template>
          +<script>
          +export default {
          +    name: 'Error',
          +    props: {
          +        msg: Array|String,
          +        backend:Array
          +    },
          +    mounted() {
          +       // console.log(this.props.msg)
          +    },
          +
          +}
          +</script>
          diff --git a/resources/js/components/partials/modal.vue b/resources/js/components/partials/modal.vue
          new file mode 100644
          index 0000000..87fa2e3
          --- /dev/null
          +++ b/resources/js/components/partials/modal.vue
          @@ -0,0 +1,266 @@
          +
          +<template>
          +    <div  class="modal-backdrop">
          +        <div class="modal" >
          +            <header class="modal-header">
          +                <slot name="header">
          +                    Complete The Identity Question
          +                </slot>
          +<!--                <button type="button"  class="btn-close" @click="close" >  x  </button>-->
          +            </header>
          +
          +            <section class="modal-body">
          +                <div class="text" style="margin-top: 10px" v-if="isButtonDisabled">
          +                    <p style="color:red;text-align:center">All fields are required</p>
          +                </div>
          +                <div class="text" v-if="message">
          +                    <p style="color:red;text-align:center">{{ message[0] }}</p>
          +                </div>
          +                <slot name="body">
          +                    <fieldset class="fieldset-body">
          +                        <legend class="label-text">Complete The Identity Questions Below<br></legend>
          +                        <div v-for="(item,key) in questionAnswer.idVerificationCriteria">
          +                            <div class="input-text" v-if="getQuestionCounter(key) > 0">
          +                            <div class="input-div">
          +                                <label class="label-text"  >  {{item.displayName}} </label>
          +                                <div class="radio-text"  v-for="subitem in item.choiceList.choice">
          +                                    <div class="radio">
          +                                        <label>
          +                                            <input type="radio" @change="radioButtonEvent($event,getQuestionCounter(key))" v-model="answers['answer'+getQuestionCounter(key)]" :value="{id: subitem.key, name: subitem.display}">
          +                                            {{subitem.display}}
          +                                        </label>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                        </div>
          +                        </div>
          +                    </fieldset>
          +                </slot>
          +            </section>
          +
          +            <footer class="modal-footer">
          +<!--                        <div class="input-div buttons" style="text-align: left">-->
          +<!--                            <button  type="button" value="Back" class="back_button" @click="close">-->
          +<!--                                Skip-->
          +<!--                            </button>-->
          +<!--                        </div>-->
          +                        <div class="input-div buttons" style="text-align: right">
          +                            <button :disabled="isNotValid"  type="submit" value="Next" class="next_button" @click="submitQuestion" >
          +                                Submit
          +                            </button>
          +                        </div>
          +            </footer>
          +        </div>
          +    </div>
          +</template>
          +
          +<script>
          +import useVuelidate from '@vuelidate/core'
          +import {required} from "@vuelidate/validators";
          +import {
          +    getCustomerToken,
          +    setStep,
          +    getTrackingToken,
          +    getReferenceNumber,
          +    unsetTrackingToken,
          +    unsetCustomerToken,
          +    unsetReferenceNumber, setUserQuestionAnswer, getLocalStorage, setLocalStorage, unsetLocalStorage
          +} from "../../helper";
          +import router from "../../router";
          +import register from "../../Api/register";
          +
          +export default {
          +    name: 'modal.vue',
          +    setup() {
          +
          +        return {v$: useVuelidate()}
          +    },
          +    data() {
          +        let finalFormData = {};
          +        let qa = this.questionAnswer.idVerificationCriteria;
          +        finalFormData['email'] = "";
          +        finalFormData['customerToken'] = "";
          +        finalFormData['trackingToken'] = "";
          +        finalFormData['referenceNumber'] = "";
          +        let totalQuestion = 0;
          +        let qa_assoc = {};
          +        for (let q in qa){
          +            if(this.getQuestionCounter(q) > 0) {
          +               // qa_assoc[q] = qa[q].displayName;
          +                qa_assoc[`answer${this.getQuestionCounter(q)}`] = {
          +                    'question':qa[q].displayName,
          +                    'answer':""
          +                };
          +                totalQuestion++;
          +            }
          +        }
          +        finalFormData['security_question_answer'] = qa_assoc;
          +        console.log('qa', 'key ', finalFormData)
          +        return {
          +            formData: finalFormData,
          +            answers:{},
          +            totalQuestion:totalQuestion,
          +            isNotValid:true,
          +            message: [
          +                "All fields are required"
          +            ],
          +        }
          +    },
          +    props: {
          +        questionAnswer: {
          +            type: Object,
          +        },
          +    },
          +    mounted() {
          +
          +
          +    },
          +
          +    methods: {
          +        // close() {
          +        //     this.$emit('close');
          +        // },
          +        radioButtonEvent(event,counter){
          +            this.isNotValid = true;
          +            if(this.totalQuestion == Object.keys(this.answers).length){
          +                console.log('correct')
          +                this.isNotValid = false;
          +            }
          +        },
          +        getQuestionCounter(key){
          +            let result = "";
          +
          +            if(key){
          +                result = key.replace('question','')
          +            }
          +
          +            return result > 0 ? result : 0;
          +        },
          +        async submitQuestion (){
          +            if(!this.isNotValid) {
          +                const userData = JSON.parse(getLocalStorage('formData')) || [];
          +                this.formData.email = userData.email;
          +                this.formData.customerToken = getCustomerToken();
          +                this.formData.trackingToken = getTrackingToken();
          +                this.formData.referenceNumber = getReferenceNumber();
          +                let security_question_answer = this.formData.security_question_answer
          +                for(let ans in this.answers){
          +                    security_question_answer[ans].answer = this.answers[ans];
          +                }
          +
          +                this.formData.security_question_answer = security_question_answer;
          +            }
          +            /*console.log('dddd',this.formData);
          +            return false*/
          +            // this.formData.questionAnswer = this.questionAnswer;
          +            const data = await register.postIdentityQuestion(this.formData);
          +            if (data.status_code == "100") {
          +                unsetCustomerToken();
          +                unsetTrackingToken();
          +                unsetReferenceNumber();
          +                unsetLocalStorage('formData');
          +                setStep(6);
          +                router.push({name: "success"});
          +                // setLocalStorage('userQuestionAnswer', JSON.stringify(this.formData));
          +                // setStep(5);
          +                // router.push({name: "make-payment"});
          +            }else {
          +                this.message[0] = data.message;
          +            }
          +
          +        },
          +    },
          +    validations() {
          +        return {
          +            formData: {
          +                question1:{required},
          +                question2:{required},
          +                question3:{required},
          +                answer1:{required},
          +                answer2:{required},
          +                answer3:{required},
          +
          +            }
          +        }
          +    }
          +
          +}
          +</script>
          +<style scoped>
          +.modal-backdrop {
          +    position: fixed;
          +    top: 0;
          +    bottom: 0;
          +    left: 0;
          +    right: 0;
          +    background-color: rgba(0, 0, 0, 0.3);
          +    display: flex;
          +    justify-content: center;
          +    align-items: center;
          +}
          +
          +.modal {
          +    width: 650px;
          +    background: #FFFFFF;
          +    box-shadow: 2px 2px 20px 1px;
          +    overflow-x: auto;
          +    display: flex;
          +    flex-direction: column;
          +    border-radius: 20px;
          +}
          +
          +.modal-header,
          +.modal-footer {
          +    padding: 15px;
          +    display: flex;
          +}
          +
          +.modal-header {
          +    position: relative;
          +    border-bottom: 1px solid #eeeeee;
          +    color: #4AAE9B;
          +    justify-content: space-between;
          +}
          +
          +.modal-footer {
          +    border-top: 1px solid #eeeeee;
          +    flex-direction: column;
          +    justify-content: flex-end;
          +    margin: 0px 20px;
          +}
          +
          +.modal-body {
          +    position: relative;
          +    padding: 0px 10px 10px 10px;
          +}
          +
          +.btn-close {
          +    position: absolute;
          +    top: 0;
          +    right: 0;
          +    border: none;
          +    font-size: 20px;
          +    padding: 10px;
          +    cursor: pointer;
          +    font-weight: bold;
          +    color: #4AAE9B;
          +    background: transparent;
          +}
          +
          +.btn-green {
          +    color: white;
          +    background: #4AAE9B;
          +    border: 1px solid #4AAE9B;
          +    border-radius: 2px;
          +}
          +.fieldset-body{
          +    height:400px;
          +    overflow: auto;
          +    padding: 0px 20px;
          +    border-radius: 10px;
          +    margin: 0px 20px;
          +}
          +
          +</style>
          +
          +
          diff --git a/resources/js/components/partials/sc_partner_cz_logo.vue b/resources/js/components/partials/sc_partner_cz_logo.vue
          new file mode 100644
          index 0000000..cfe84e9
          --- /dev/null
          +++ b/resources/js/components/partials/sc_partner_cz_logo.vue
          @@ -0,0 +1,138 @@
          +<template>
          +    <ul class="sc-partner-cz-logo brand-list list-inline">
          +        <li class="brand-parent" v-if="reportProvider === '3'" >
          +            <a class="brand-link" href="https://www.smartcredit.com">
          +                <img :src="`${img_url}`" alt="SmartCredit" class="brand-logo">
          +            </a>
          +        </li>
          +        <li class="hidden-xs" v-if="reportProvider === '3'" ><div class="separator"></div></li>
          +        <li class="partner-text hidden-xs" v-if="reportProvider === '3'" ><p>Partnered<br>with</p></li>
          +        <li class="brand-parent cobrand-parent hidden-xs">
          +            <a class="brand-link" data-trigger="focus" tabindex="0" data-original-title="" title="">
          +                <img src="https://cdn.consumerdirect.com/live/cobrand/11885/logo-uwq6q8hx.png" alt="" class="brand-logo" data-pagespeed-url-hash="4237170943" data-pagespeed-onload="pagespeed.CriticalImages.checkImageForCriticality(this);" onload="var elem=this;if (this==window) elem=document.body;elem.setAttribute('data-pagespeed-loaded', 1)" data-pagespeed-loaded="1">
          +            </a>
          +        </li>
          +        <li class="partner-text hidden-xs" v-if="reportProvider === '1'" ><p> Powerful Software System </p></li>
          +    </ul>
          +</template>
          +
          +<script>
          +export default {
          +    name: "sc_partner_cz_logo",
          +    data(){
          +        return {
          +            reportProvider: REPORT_PROVIDER,
          +            image_base_url: APP_URL,
          +            img_url : APP_URL+'/images/'+APP_NAME+'_logo.png',
          +            company_Name:COMPANY_NAME
          +        }
          +    }
          +}
          +</script>
          +
          +<style scoped>
          +    @media (min-width: 768px) {
          +        .sc-partner-cz-logo .brand-list {
          +            margin-left: -10px;
          +        }
          +
          +        .sc-partner-cz-logo .separator {
          +            border-right: 1px solid #ccc;
          +            display: inline-block;
          +            height: 36px;
          +            margin: 10px 0;
          +        }
          +    }
          +
          +    .sc-partner-cz-logo{
          +        display: inherit;
          +        list-style: none;
          +        margin:0 auto;
          +    }
          +
          +    .sc-partner-cz-logo .brand-list {
          +        margin: 0;
          +    }
          +
          +    .sc-partner-cz-logo .list-inline {
          +        padding-left: 0;
          +        list-style: none;
          +        margin-left: -5px;
          +    }
          +
          +    .sc-partner-cz-logo .brand-parent {
          +        height: 56px;
          +        position: relative;
          +        width: 187px;
          +        transform-style: preserve-3d;
          +    }
          +
          +    .sc-partner-cz-logo .brand-link {
          +        cursor: pointer;
          +        display: block;
          +        position: absolute;
          +        top: 50%;
          +        -webkit-transform: translate(0, -50%);
          +        -ms-transform: translate(0, -50%);
          +        -o-transform: translate(0, -50%);
          +        transform: translate(0, -50%);
          +    }
          +
          +    .sc-partner-cz-logo .brand-logo {
          +        display: inline;
          +        height: auto;
          +        width: 167px;
          +    }
          +
          +    .sc-partner-cz-logo.brand-list li {
          +        padding: 0 10px;
          +    }
          +
          +    .sc-partner-cz-logo.brand-list .partner-text {
          +        padding-right: 0;
          +        vertical-align: top;
          +    }
          +
          +    .sc-partner-cz-logo.brand-list .cobrand-parent {
          +        padding-left: 0;
          +    }
          +    .sc-partner-cz-logo.brand-list li {
          +        padding: 0 10px;
          +    }
          +    .sc-partner-cz-logo .brand-parent {
          +        height: 56px;
          +        position: relative;
          +        width: 187px;
          +        transform-style: preserve-3d;
          +    }
          +    .sc-partner-cz-logo.list-inline > li {
          +        padding-right: 5px;
          +        padding-left: 5px;
          +    }
          +
          +    .sc-partner-cz-logo.brand-list .partner-text {
          +        padding-right: 0;
          +        vertical-align: top;
          +    }
          +
          +    .sc-partner-cz-logo .partner-text p {
          +        font-family: "Open Sans", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
          +        font-size: 65% !important;
          +        font-style: italic !important;
          +        line-height: 10px !important;
          +        margin-bottom: 0 !important;
          +        padding: 17px 0 !important;
          +        padding-right: 10px !important;
          +        text-align: left !important;
          +    }
          +
          +    .sc-partner-cz-logo.list-inline > li {
          +        display: inline-block;
          +        padding-right: 5px;
          +        padding-left: 5px;
          +    }
          +
          +    .sc-partner-cz-logo .separator {
          +        border-bottom: 1px solid #E9E9E9;
          +    }
          +</style>
          diff --git a/resources/js/components/partials/step.vue b/resources/js/components/partials/step.vue
          new file mode 100644
          index 0000000..4243b29
          --- /dev/null
          +++ b/resources/js/components/partials/step.vue
          @@ -0,0 +1,28 @@
          +<template>
          +    <div>
          +        <div class="steps-content">
          +            <h3>Step <span v-if="step > 0" class="step-number">{{step}}</span></h3>
          +            <p class="step-number-content active">Enter your personal information to get closer to
          +                companies.</p>
          +            <p class="step-number-content d-none">Get to know better by adding your diploma,certificate and
          +                education life.</p>
          +            <p class="step-number-content d-none">Help companies get to know you better by telling then about
          +                your past experiences.</p>
          +            <p class="step-number-content d-none">Add your profile piccture and let companies find youy
          +                fast.</p>
          +        </div>
          +        <ul class="progress-bar">
          +            <li :class="{'active':!step || step >= 1}">Create Account</li>
          +            <li :class="{'active':step >= 2}">Add Profile</li>
          +            <li :class="{'active':step >= 3}">Credit Report</li>
          +        </ul>
          +    </div>
          +</template>
          +<script>
          +export default {
          +    name: 'Step',
          +    props: {
          +        step: String
          +    }
          +}
          +</script>
          diff --git a/resources/js/config/axios.js b/resources/js/config/axios.js
          new file mode 100644
          index 0000000..8d62c40
          --- /dev/null
          +++ b/resources/js/config/axios.js
          @@ -0,0 +1,85 @@
          +import axios from "axios"
          +import router from "../router";
          +import store from "../store";
          +import {getSecurityKey} from "../helper";
          +
          +
          +const axiosClient = axios.create({
          +  baseURL: API_BASE_URL
          +});
          +
          +const actionScope = `loading`;
          +
          +let requestsPending = 0;
          +
          +const req = {
          +  pending: () => {
          +    requestsPending++;
          +    store.dispatch('auth/setLoader', true)
          +  },
          +  done: () => {
          +    requestsPending--;
          +    store.dispatch('auth/setLoader', false)
          +  }
          +};
          +axiosClient.interceptors.request.use(function (config) {
          +  req.pending();
          +
          +  const security_key = getSecurityKey();
          +
          +  if(security_key) {
          +      config.headers['security-key'] = security_key;
          +  }
          +/*  const token = getToken();
          +
          +  config.headers.Authorization = 'Bearer ' + token;
          +  config.headers['Content-Type'] = 'application/json';
          +  config.headers['Accept'] = 'application/json';
          +  config.headers['Permission-Version'] = store.getters['auth/user']?.permission_version;*/
          +  console.log('resquest.success', config);
          +  //console.log('request loader_status', store.getters['auth/getLoaderStatus']);
          +
          +  return config;
          +
          +}, function (error) {
          +  req.done();
          +  console.log('resquest.error', error);
          +  return Promise.reject(error);
          +});
          +
          +axiosClient.interceptors.response.use(
          +  response => {
          +    req.done();
          +    console.log('response.success', response);
          +    console.log('response loader_status', store.getters['auth/getLoaderStatus']);
          +
          +    return response.data;
          +  },
          +  async error => {
          +    req.done();
          +    console.log('resquest.error', error);
          +
          +    var originalRequest = error.config;
          +
          +    /*if (error.response.status == 500) {
          +      router.push({ name: 'error-500' })
          +    } else if (error.response.status == 401 && !originalRequest._retry) {
          +
          +
          +      if (getRefreshToken()) {
          +        const response = await store.dispatch('auth/authenticateWithRefreshToken')
          +        if (isApiSuccess(response)) {
          +          originalRequest._retry = true;
          +          return axiosClient(originalRequest);
          +        }
          +      }
          +
          +      store.dispatch('auth/logout')
          +      router.push({ name: 'error-401' })
          +    }*/
          +
          +    return Promise.reject(error);
          +  }
          +);
          +
          +export default axiosClient
          diff --git a/resources/js/config/constants.js b/resources/js/config/constants.js
          new file mode 100644
          index 0000000..e615cab
          --- /dev/null
          +++ b/resources/js/config/constants.js
          @@ -0,0 +1 @@
          +export const GOOGLE_CAPTCHA_SITEKEY = "6Lei2nQhAAAAAChSi_OiYy63AxlI_vJKm0b-LyN3"
          diff --git a/resources/js/helper/index.js b/resources/js/helper/index.js
          new file mode 100644
          index 0000000..2eeb90e
          --- /dev/null
          +++ b/resources/js/helper/index.js
          @@ -0,0 +1,368 @@
          +import Cookies from 'js-cookie'
          +import state from "./state";
          +
          +export const setCookie = (key,value) =>{
          +    Cookies.set(key, value);
          +}
          +export const getCookie = (key) =>{
          +    return Cookies.get(key);
          +}
          +export const unsetCookie = (key) =>{
          +    return Cookies.remove(key);
          +}
          +export const setLocalStorage = (key,value) =>{
          +    localStorage.setItem(key, value);
          +}
          +export const getLocalStorage = (key) =>{
          +    return localStorage.getItem(key);
          +}
          +export const unsetLocalStorage = (key) =>{
          +    return localStorage.removeItem(key);
          +}
          +
          +
          +export const getAmount = ()=> {
          +    return Cookies.get('amount');
          +}
          +
          +export const setAmount = (amount)=> {
          +    Cookies.set('amount', amount);
          +}
          +
          +export const getSecurityKey = ()=> {
          +    return getCookie('security_key'); //Cookies.get('security_key');
          +}
          +
          +export const setSecurityKey = (key)=> {
          +    setCookie('security_key',key);
          +    //Cookies.set('security_key', key);
          +}
          +
          +export const setPackageId = (package_id) => {
          +    Cookies.set('package_id', package_id);
          +}
          +
          +export const getPackageId = () => {
          +  //return Cookies.get('package_id');
          +    return 2;
          +}
          +
          +export const setStep = (step) => {
          +    Cookies.set('step', step);
          +}
          +
          +export const getStep = () => {
          +    return Cookies.get('step');
          +}
          +
          +export const setToken = (token) => {
          +    Cookies.set('access_token', token);
          +}
          +
          +export const unsetStep = () => {
          +    Cookies.remove('step');
          +}
          +
          +export const setUserId = (user_id) => {
          +    Cookies.set('user_id', user_id);
          +}
          +
          +export const setUserEmail = (email) => {
          +    Cookies.set('user_email', email);
          +}
          +
          +export const getUserId = () => {
          +    return Cookies.get('user_id');
          +}
          +
          +export const getUserEmail = () => {
          +    return Cookies.get('user_email');
          +}
          +
          +
          +export const setRefreshToken = (token) => {
          +    Cookies.set('refresh_token', token);
          +}
          +
          +export const getToken = () => {
          +    return Cookies.get('access_token');
          +}
          +
          +export const getRefreshToken = () => {
          +    return Cookies.get('refresh_token');
          +}
          +
          +export const removeToken = () => {
          +    Cookies.remove('access_token');
          +    Cookies.remove('refresh_token');
          +}
          +
          +export const isApiSuccess = (response) => {
          +    return response.statuscode == 100;
          +}
          +export const setUserFirstName = (name) => {
          +    Cookies.set('user_first_name', name);
          +}
          +export const setUserLastName = (name) => {
          +    Cookies.set('user_last_name', name);
          +}
          +export const setUserPassword = (password) => {
          +    Cookies.set('user_password', password);
          +}
          +export const setFormData = (form_data) => {
          +    setCookie('user_input_data',form_data)
          +}
          +export const getFormData = () => {
          +   return getCookie('user_input_data');
          +}
          +export const unsetFormData = () => {
          +    unsetCookie('user_input_data');
          +}
          +export const setUserQuestionAnswer = (data) => {
          +    setCookie('user_answer_data',data)
          +}
          +export const getUserQuestionAnswer = () => {
          +    return getCookie('user_answer_data');
          +}
          +export const unsetUserQuestionAnswer = () => {
          +    unsetCookie('user_answer_data');
          +}
          +
          +export const setCardNumber = (cardNumber) => {
          +    Cookies.set('card_number', cardNumber);
          +}
          +export const setExpiry = (expiry) => {
          +    Cookies.set('expiry', expiry);
          +}
          +export const setFullSsn = (expiry) => {
          +    Cookies.set('full_ssn', expiry);
          +}
          +export const setPhone = (phone) => {
          +    Cookies.set('phone',phone);
          +}
          +export const setZip_Code = (zip_code) => {
          +    Cookies.set('zip_code',zip_code);
          +}
          +export const setStreetNo=(data)=>{
          +    Cookies.set('street_no',data);
          +}
          +export const setStreetName=(data)=>{
          +    Cookies.set('street_name',data);
          +}
          +export const setCity=(data)=>{
          +    Cookies.set('city',data);
          +}
          +export const setState=(data)=>{
          +    Cookies.set('state',data);
          +}
          +export const setBirthDate=(data)=>{
          +    Cookies.set('birth_date',data);
          +}
          +export const setQuestionId=(data)=>{
          +    Cookies.set('question_id',data);
          +}
          +export const setAnswer=(data)=>{
          +    Cookies.set('answer',data);
          +}
          +
          +export const getFullSsn = () => {
          +    return Cookies.get('full_ssn');
          +}
          +export const getUserFirstName = () => {
          +    return Cookies.get('user_first_name');
          +}
          +export const getUserLastName = () => {
          +    return Cookies.get('user_last_name');
          +}
          +export const getUserPassword = () => {
          +    return Cookies.get('user_password');
          +}
          +
          +export const getCardNumber = () => {
          +    return   Cookies.get('card_number');
          +}
          +export const getExpiry = () => {
          +    return Cookies.get('expiry');
          +}
          +export const getPhone = () => {
          +    return   Cookies.get('phone');
          +}
          +export const getZip_Code = () => {
          +    return Cookies.get('zip_code');
          +}
          +
          +export const getStreetNo=()=>{
          +    Cookies.get('street_no');
          +}
          +export const getStreetName=()=>{
          +    Cookies.get('street_name');
          +}
          +export const getCity=()=>{
          +    Cookies.get('city');
          +}
          +export const getState=()=>{
          +    Cookies.get('state');
          +}
          +export const getBirthDate=()=>{
          +    Cookies.get('birth_date');
          +}
          +export const getQuestionId=()=>{
          +    Cookies.get('question_id');
          +}
          +export const getAnswer=()=>{
          +    Cookies.get('answer');
          +}
          +
          +export const setTrackingToken = (value) => {
          +    Cookies.set('tracking_token', value);
          +}
          +
          +export const getTrackingToken = () => {
          +    return Cookies.get('tracking_token');
          +}
          +export const unsetTrackingToken = () => {
          +    Cookies.remove('tracking_token');
          +}
          +
          +
          +export const setCustomerToken = (value) => {
          +    Cookies.set('customer_token', value);
          +}
          +export const getCustomerToken = () => {
          +    return Cookies.get('customer_token');
          +}
          +export const unsetCustomerToken = () => {
          +    Cookies.remove('customer_token');
          +}
          +
          +export const setReferenceNumber = (value) => {
          +    Cookies.set('reference_number', value);
          +}
          +export const getReferenceNumber = () => {
          +    return Cookies.get('reference_number');
          +}
          +export const unsetReferenceNumber = () => {
          +    Cookies.remove('reference_number');
          +}
          +
          +
          +export const unsetUserFirstName = () => {
          +    Cookies.remove('user_first_name');
          +}
          +export const unsetUserLastName = () => {
          +    Cookies.remove('user_last_name');
          +}
          +export const unsetUserEmail = () => {
          +    Cookies.remove('user_email');
          +}
          +export const unsetUserPassword = () => {
          +    Cookies.remove('user_password');
          +}
          +
          +export const unsetExpiry = () => {
          +    Cookies.remove('expiry');
          +}
          +export const unsetCardNumber = () => {
          +    Cookies.remove('card_number');
          +}
          +export const unsetFullSsn = () => {
          +    Cookies.remove('full_ssn');
          +}
          +
          +export const unsetStreetNo=()=>{
          +    Cookies.remove('street_no');
          +}
          +export const unsetStreetName=()=>{
          +    Cookies.remove('street_name');
          +}
          +export const unsetCity=()=>{
          +    Cookies.remove('city');
          +}
          +export const unsetState=()=>{
          +    Cookies.remove('state');
          +}
          +export const unsetBirthDate=()=>{
          +    Cookies.remove('birth_date');
          +}
          +export const unsetQuestionId=()=>{
          +    Cookies.remove('question_id');
          +}
          +export const unsetAnswer=()=>{
          +    Cookies.remove('answer');
          +}
          +
          +export const generateSidebarMenuItems = () => {
          +    return [
          +        {
          +            title: "Dashboard",
          +            route: "dashboard",
          +            icon_classes: "sidebar-item-icon ti-home",
          +            permit: true,
          +            is_active: isSameRoute('dashboard')
          +        },
          +        {
          +            title: "Merchants",
          +            route: "merchants",
          +            icon_classes: "sidebar-item-icon fa fa-users",
          +            permit: true,
          +            is_active: isSameRoute('merchants')
          +        },
          +        {
          +            title: "Transactions",
          +            aria_expands: ["all-transactions", "refunds", "chargeback"].includes(router.currentRoute.value.name),
          +            sub_routes: ["all-transactions", "refunds", "chargeback"],
          +            submenu: [
          +                {
          +                    title: "All Transactions",
          +                    route: "all-transactions",
          +                    permit: hasPermission(constants.permissions.show_all_transaction_of_merchant),
          +                    is_active: isSameRoute('all-transactions')
          +                },
          +                {
          +                    title: "Refunds",
          +                    route: "refunds",
          +                    permit: hasPermission(constants.permissions.show_merchant_refunds),
          +                    is_active: isSameRoute('refunds')
          +                },
          +                {
          +                    title: "Chargeback",
          +                    route: "chargeback",
          +                    permit: hasPermission(constants.permissions.show_merchant_chargebacks),
          +                    is_active: isSameRoute('chargeback')
          +                },
          +            ],
          +            permit: true,
          +        },
          +        {
          +            title: "Information",
          +            route: "information",
          +            icon_classes: "sidebar-item-icon ti-info",
          +            permit: true,
          +            is_active: isSameRoute('information')
          +        },
          +    ]
          +}
          +
          +export const hasPermission = (permission) => {
          +    return store.getters['auth/getPermissions'][permission?.code]?.permit
          +}
          +
          +export const getCurrentRouteQueries = (queriesProxy) => {
          +    return Object.assign({}, queriesProxy)
          +}
          +
          +export const isSameRoute = (route_name) => {
          +    return router.currentRoute.value.name === route_name
          +}
          +
          +export const getFormattedDaterangeFromDates = (start_date = new Date(new Date().setDate(new Date().getDate() - 30)), end_date = new Date()) => {
          +    return `${start_date.getFullYear()}/${start_date.getMonth() + 1}/${start_date.getDate()} - ${end_date.getFullYear()}/${end_date.getMonth() + 1}/${end_date.getDate()}`
          +}
          +
          +export const showNotification = (action, message, type = "default") => {
          +    notify({
          +        title: action,
          +        text: message,
          +        type: type
          +    });
          +}
          diff --git a/resources/js/helper/package.js b/resources/js/helper/package.js
          new file mode 100644
          index 0000000..e98e293
          --- /dev/null
          +++ b/resources/js/helper/package.js
          @@ -0,0 +1,17 @@
          +export default {
          +    labels:{
          +        "1":"Basic",
          +        "2":"Premium",
          +        "3":"",
          +    },
          +    prices:{
          +        "1":"19.97",
          +        "2":"24.97",
          +        "3":"14.99"
          +    },
          +    updateLimit:{
          +        "1":"2 monthly",
          +        "2":"Unlimited",
          +        "3":"",
          +    }
          +}
          diff --git a/resources/js/helper/packagePrices.js b/resources/js/helper/packagePrices.js
          new file mode 100644
          index 0000000..c8b1d79
          --- /dev/null
          +++ b/resources/js/helper/packagePrices.js
          @@ -0,0 +1,5 @@
          +export default {
          +    "1":"99.7",
          +    "2":"29.00",
          +    "3":"14.99"
          +}
          diff --git a/resources/js/helper/report_provider.js b/resources/js/helper/report_provider.js
          new file mode 100644
          index 0000000..ef7546e
          --- /dev/null
          +++ b/resources/js/helper/report_provider.js
          @@ -0,0 +1,28 @@
          +export default {
          +    labels:{
          +        "3":"SmartCredit",
          +        "1":"Identity IQ",
          +
          +    },
          +    SmartCreditPoints : [
          +                             "Identity Theft Insurance ($1m)",
          +                             "Credit Monitoring &amp; Alerts (TU)",
          +                            "ScoreTracker" ,
          +                            "ScoreBuilder",
          +                             "ScoreBoost",
          +                            "Money Manager",
          +                             "Smart Credit Report",
          +                             "PrivacyMaster"
          +                         ],
          +
          +    IdentityIQPoints : [
          +        "Access to the powerful proprietary Metro 2 Method 5 points of Compliance process",
          +        "Auto-import software systems",
          +        "Full library of training" ,
          +        "Auto load letters",
          +        "Auto import items into letters",
          +        "Processing reminder system",
          +        "Customer support",
          +        "Facebook group help"
          +    ],
          +}
          diff --git a/resources/js/helper/securityQuestion.js b/resources/js/helper/securityQuestion.js
          new file mode 100644
          index 0000000..0893f19
          --- /dev/null
          +++ b/resources/js/helper/securityQuestion.js
          @@ -0,0 +1,135 @@
          +export default {
          +    security_question: [
          +        {
          +            "id": "",
          +            "value": "Please select security question"
          +        },
          +    {
          +        "id": "1",
          +        "value": "What was your high school mascot?"
          +    },
          +        {
          +            "id": "2",
          +            "value": "What was your first grade teacher's last name?"
          +        },
          +        {
          +            "id": "3",
          +            "value": "What was the make and model of your first car?"
          +        },
          +        {
          +            "id": "4",
          +            "value": "What is your mother's middle name?"
          +        }, {
          +            "id": "5",
          +            "value": "What is your father's middle name?"
          +        },
          +        {
          +            "id": "6",
          +            "value": "What city were you born in?"
          +        },
          +        {
          +            "id": "7",
          +            "value": "What is your grandmother's first name (on your mother's side)?"
          +        },
          +        {
          +            "id": "8",
          +            "value": "What is your grandfather's first name (on your father's side)?"
          +        }],
          +    security_question_answer:{
          +        '1':{'1':'1980','2':'1969','3':'2012','4':'2003','5':'None of the above'},
          +        '2':{ '6':'Experian','7':'ConsumerDirect','8':'Equifax','9':'TransUnion','10':'None of the above'},
          +        '3':{'11':'J. C. R. Licklider','12':'George Clooney','13':'Al Gore','14':'Howard Stark','15':'None of the above'},
          +    },
          +    security_question_and_answer: {
          +    "idVerificationCriteria": {
          +    "referenceNumber": "07271524018421870957",
          +        "question1": {
          +        "name": "YEAR_FOUNDED",
          +            "displayName": "What year was ConsumerDirect (aka PathwayData, aka MyPerfectCredit) founded?",
          +            "type": "MC",
          +            "choiceList": {
          +            "choice": [
          +                {
          +                    "key": "1980",
          +                    "display": "1980"
          +                },
          +                {
          +                    "key": "1969",
          +                    "display": "1969"
          +                },
          +                {
          +                    "key": "2012",
          +                    "display": "2012"
          +                },
          +                {
          +                    "key": "2003",
          +                    "display": "2003"
          +                },
          +                {
          +                    "key": "!(1980^1969^2012^2003)",
          +                    "display": "None of the above"
          +                }
          +            ]
          +        }
          +    },
          +    "question2": {
          +        "name": "NOT_CREDIT_BUREAU",
          +            "displayName": "Which company is NOT a credit bureau?",
          +            "type": "MC",
          +            "choiceList": {
          +            "choice": [
          +                {
          +                    "key": "Experian",
          +                    "display": "Experian"
          +                },
          +                {
          +                    "key": "ConsumerDirect",
          +                    "display": "ConsumerDirect"
          +                },
          +                {
          +                    "key": "Equifax",
          +                    "display": "Equifax"
          +                },
          +                {
          +                    "key": "TransUnion",
          +                    "display": "TransUnion"
          +                },
          +                {
          +                    "key": "!(Experian^ConsumerDirect^Equifax^TransUnion^)",
          +                    "display": "None of the above"
          +                }
          +            ]
          +        }
          +    },
          +    "question3": {
          +        "name": "INVENTED_INTERNET",
          +            "displayName": "Who invented the internet?",
          +            "type": "MC",
          +            "choiceList": {
          +            "choice": [
          +                {
          +                    "key": "J. C. R. Licklider",
          +                    "display": "J. C. R. Licklider"
          +                },
          +                {
          +                    "key": "George Clooney",
          +                    "display": "George Clooney"
          +                },
          +                {
          +                    "key": "Al Gore",
          +                    "display": "Al Gore"
          +                },
          +                {
          +                    "key": "Howard Stark",
          +                    "display": "Howard Stark"
          +                },
          +                {
          +                    "key": "!(J. C. R. Licklider^George Clooney^Al Gore^Howard Stark^)",
          +                    "display": "None of the above"
          +                }
          +            ]
          +        }
          +    }
          +}
          +}
          +}
          diff --git a/resources/js/helper/state.js b/resources/js/helper/state.js
          new file mode 100644
          index 0000000..1a06855
          --- /dev/null
          +++ b/resources/js/helper/state.js
          @@ -0,0 +1,230 @@
          +export default [
          +    {
          +        "id": "AA",
          +        "value": "AA"
          +    },
          +    {
          +        "id": "AE",
          +        "value": "AE"
          +    },
          +    {
          +        "id": "AL",
          +        "value": "AL"
          +    },
          +    {
          +        "id": "AK",
          +        "value": "AK"
          +    },
          +    {
          +        "id": "AP",
          +        "value": "AP"
          +    },
          +    {
          +        "id": "AR",
          +        "value": "AR"
          +    },
          +    {
          +        "id": "AZ",
          +        "value": "AZ"
          +    },
          +    {
          +        "id": "CA",
          +        "value": "CA"
          +    },
          +    {
          +        "id": "CO",
          +        "value": "CO"
          +    },
          +    {
          +        "id": "CT",
          +        "value": "CT"
          +    },
          +    {
          +        "id": "DC",
          +        "value": "DC"
          +    },
          +    {
          +        "id": "DE",
          +        "value": "DE"
          +    },
          +    {
          +        "id": "FL",
          +        "value": "FL"
          +    },
          +    {
          +        "id": "GA",
          +        "value": "GA"
          +    },
          +    {
          +        "id": "GU",
          +        "value": "GU"
          +    },
          +    {
          +        "id": "HI",
          +        "value": "HI"
          +    },
          +    {
          +        "id": "IA",
          +        "value": "IA"
          +    },
          +    {
          +        "id": "ID",
          +        "value": "ID"
          +    },
          +    {
          +        "id": "IL",
          +        "value": "IL"
          +    },
          +    {
          +        "id": "IN",
          +        "value": "IN"
          +    },
          +    {
          +        "id": "KS",
          +        "value": "KS"
          +    },
          +    {
          +        "id": "KY",
          +        "value": "KY"
          +    },
          +    {
          +        "id": "LA",
          +        "value": "LA"
          +    },
          +    {
          +        "id": "MA",
          +        "value": "MA"
          +    },
          +    {
          +        "id": "MD",
          +        "value": "MD"
          +    },
          +    {
          +        "id": "ME",
          +        "value": "ME"
          +    },
          +    {
          +        "id": "MI",
          +        "value": "MI"
          +    },
          +    {
          +        "id": "MN",
          +        "value": "MN"
          +    },
          +    {
          +        "id": "MO",
          +        "value": "MO"
          +    },
          +    {
          +        "id": "MS",
          +        "value": "MS"
          +    },
          +    {
          +        "id": "MT",
          +        "value": "MT"
          +    },
          +    {
          +        "id": "NC",
          +        "value": "NC"
          +    },
          +    {
          +        "id": "ND",
          +        "value": "ND"
          +    },
          +    {
          +        "id": "NE",
          +        "value": "NE"
          +    },
          +    {
          +        "id": "NH",
          +        "value": "NH"
          +    },
          +    {
          +        "id": "NJ",
          +        "value": "NJ"
          +    },
          +    {
          +        "id": "NM",
          +        "value": "NM"
          +    },
          +    {
          +        "id": "NV",
          +        "value": "NV"
          +    },
          +    {
          +        "id": "NY",
          +        "value": "NY"
          +    },
          +    {
          +        "id": "OK",
          +        "value": "OK"
          +    },
          +    {
          +        "id": "OH",
          +        "value": "OH"
          +    },
          +    {
          +        "id": "OR",
          +        "value": "OR"
          +    },
          +    {
          +        "id": "PA",
          +        "value": "PA"
          +    },
          +    {
          +        "id": "PR",
          +        "value": "PR"
          +    },
          +    {
          +        "id": "RI",
          +        "value": "RI"
          +    },
          +    {
          +        "id": "SC",
          +        "value": "SC"
          +    },
          +    {
          +        "id": "SD",
          +        "value": "SD"
          +    },
          +    {
          +        "id": "TN",
          +        "value": "TN"
          +    },
          +    {
          +        "id": "TX",
          +        "value": "TX"
          +    },
          +    {
          +        "id": "UT",
          +        "value": "UT"
          +    },
          +    {
          +        "id": "VA",
          +        "value": "VA"
          +    },
          +    {
          +        "id": "VI",
          +        "value": "VI"
          +    },
          +    {
          +        "id": "VT",
          +        "value": "VT"
          +    },
          +    {
          +        "id": "WA",
          +        "value": "WA"
          +    },
          +    {
          +        "id": "WI",
          +        "value": "WI"
          +    },
          +    {
          +        "id": "WV",
          +        "value": "WV"
          +    },
          +    {
          +        "id": "WY",
          +        "value": "WY"
          +    }
          +];
          diff --git a/resources/js/router/index.js b/resources/js/router/index.js
          new file mode 100644
          index 0000000..db50f7a
          --- /dev/null
          +++ b/resources/js/router/index.js
          @@ -0,0 +1,80 @@
          +import { createRouter, createWebHistory } from 'vue-router'
          +import routes from './routes'
          +import store from './../store'
          +import {getStep} from "../helper";
          +
          +const router = createRouter({
          +  history: createWebHistory(APP_BASE_ROUTE),
          +  routes: routes
          +})
          +
          +function isAuthenticated() {
          +  return store.getters['auth/authenticated'];
          +}
          +
          +router.beforeEach((to, from, next) => {
          +  /*if (!isAuthenticated() && to.matched.some(record => record.meta.requires_auth)) {
          +    next({ name: 'login' })
          +  } else if (isAuthenticated() && to.matched.some(record => record.meta.is_auth_route)) {
          +    next({ name: 'dashboard' })
          +  }
          +
          +  next()*/
          +    const step = getStep();
          +   // console.clear()
          +   // console.log(from.path,to.path)
          +    if(to.name == "add-profile"){
          +        if(!step){
          +            next({name:'create-account'})
          +        }else if(step == 3){
          +            next({name:'choose-package'})
          +        }else if(step == 4){
          +            next({name:'create-cr-account'})
          +        }
          +    }else if(to.name == "choose-package"){
          +        if(!step){
          +            next({name:'create-account'})
          +        }else if(step == 2){
          +            next({name:'add-profile'})
          +        }else if(step == 4){
          +            next({name:'create-cr-account'})
          +        }
          +    }else if(to.name == "create-account") {
          +        if(step == 2){
          +            next({name:'add-profile'})
          +        }else if(step == 3){
          +            next({name:'choose-package'})
          +        }else if(step == 4){
          +            next({name:'create-cr-account'})
          +        }
          +    }else if(to.name == "success"){
          +        if(!step){
          +            next({name:'create-account'})
          +        }
          +    }else if(to.name == "create-cr-account"){
          +        if(!step){
          +            next({name:'create-account'})
          +        }else if(step == 2){
          +            next({name:'add-profile'})
          +        }else if(step == 3){
          +            next({name:'choose-package'})
          +        }else if(step == 5){
          +            next({name:'make-payment'})
          +        }
          +    }else if(to.name == "make-payment"){
          +        if(!step){
          +            next({name:'create-account'})
          +        }else if(step == 2){
          +            next({name:'add-profile'})
          +        }else if(step == 3){
          +            next({name:'choose-package'})
          +        }else if(step == 4){
          +            next({name:'create-cr-account'})
          +        }
          +    }
          +
          +    next()
          +
          +})
          +
          +export default router
          diff --git a/resources/js/router/routes.js b/resources/js/router/routes.js
          new file mode 100644
          index 0000000..cf27da5
          --- /dev/null
          +++ b/resources/js/router/routes.js
          @@ -0,0 +1,63 @@
          +import CreateAccount from "../components/partials/CreateAccount";
          +import AddProfile from "../components/partials/AddProfile";
          +import ChoosePackage from "../components/partials/ChoosePackage";
          +import CreateCreditReportAccount from "../components/partials/CreateCreditReportAccount";
          +import Success from "../components/partials/Success";
          +import MakePayment from "../components/partials/MakePayment";
          +
          +const routes = [
          +    {
          +        path: '/',
          +        redirect: { name: 'create-account' }
          +    },
          +  {
          +    path: '/create/account',
          +    name: 'create-account',
          +    component: CreateAccount,
          +    meta: {
          +        is_step: false
          +    },
          +  },
          +  {
          +    path: '/add/profile',
          +    name: 'add-profile',
          +    component: AddProfile,
          +    meta: {
          +        is_step: true
          +    },
          +  },
          +  {
          +    path: '/choose/package',
          +    name: 'choose-package',
          +    component: ChoosePackage,
          +    meta: {
          +        is_step: true
          +    },
          +  },
          +    {
          +        path: '/create/cr-account',
          +        name: 'create-cr-account',
          +        component: CreateCreditReportAccount,
          +        meta: {
          +            is_step: true
          +        },
          +    },
          +    {
          +        path: '/success',
          +        name: 'success',
          +        component: Success,
          +        meta: {
          +            is_step: true
          +        },
          +    },
          +    {
          +        path: '/make/payment',
          +        name: 'make-payment',
          +        component: MakePayment,
          +        meta: {
          +            is_step: true
          +        },
          +    },
          +]
          +
          +export default routes;
          diff --git a/resources/js/store/auth/actions.js b/resources/js/store/auth/actions.js
          new file mode 100644
          index 0000000..6057ca8
          --- /dev/null
          +++ b/resources/js/store/auth/actions.js
          @@ -0,0 +1,105 @@
          +import axiosClient from '@/config/axios'
          +import { removeToken, isApiSuccess, setToken, setRefreshToken, getRefreshToken } from '@/helper'
          +
          +
          +export const login = ({ commit }, formData) => {
          +  return axiosClient
          +    .post('login', formData)
          +    .then(response => {
          +
          +      if (isApiSuccess(response)) {
          +        commit('SET_USER', response.data.user)
          +        commit('SET_AUTHENTICATED', false)
          +      }
          +
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      commit('SET_USER', {})
          +      commit('SET_AUTHENTICATED', false)
          +      console.log('Login Action Exception', exception);
          +    })
          +}
          +
          +export const verifyOTP = ({ commit }, formData) => {
          +  return axiosClient.post('verifysms', formData)
          +    .then(response => {
          +
          +      if (isApiSuccess(response)) {
          +        commit('SET_AUTHENTICATED', true)
          +
          +        setToken(response.data.access_token)
          +        setRefreshToken(response.data.refresh_token)
          +      }
          +
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('verifyOTP Action Exception', exception);
          +    })
          +}
          +
          +export const authenticateWithRefreshToken = ({ commit }) => {
          +  return axiosClient.post('refreshtoken', { refresh_token: getRefreshToken() })
          +    .then(response => {
          +
          +      if (isApiSuccess(response)) {
          +        commit('SET_AUTHENTICATED', true)
          +
          +        setToken(response.data.access_token)
          +        setRefreshToken(response.data.refresh_token)
          +      }
          +
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('authenticateWithRefreshToken Action Exception', exception);
          +    })
          +}
          +
          +export const resendOTP = ({ commit }, formData) => {
          +  return axiosClient.post('resendotp', formData)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Login Action Exception', exception);
          +    })
          +}
          +
          +export const authUser = ({ commit }) => {
          +  return axiosClient.get('get-authinfo')
          +    .then(response => {
          +      commit('SET_AUTHENTICATED', true)
          +      commit('SET_USER', response.data.user)
          +      commit('SET_PERMISSIONS', response.data.permissions)
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Get Auth User Action Exception', exception);
          +    })
          +}
          +
          +export const logout = ({ commit }) => {
          +  commit('SET_USER', {})
          +  commit('SET_AUTHENTICATED', false)
          +  removeToken()
          +}
          +
          +export const setLoader = ({ commit }, status) => {
          +  commit('SET_LOADER', status)
          +}
          +
          +export const loadPermissions = ({ commit }) => {
          +  return axiosClient
          +    .get('getpermission')
          +    .then(response => {
          +      commit('SET_PERMISSIONS', response.data.permissions)
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Permissions API Exception', exception);
          +    })
          +}
          +
          +export const isModalShow = ({ commit }, status) => {
          +    commit('SHOW_MODAL', status)
          +}
          +
          +export const userFormData = ({ commit }, value) => {
          +    commit('SET_USER_FORM_DATA', value)
          +}
          diff --git a/resources/js/store/auth/getters.js b/resources/js/store/auth/getters.js
          new file mode 100644
          index 0000000..72a17b7
          --- /dev/null
          +++ b/resources/js/store/auth/getters.js
          @@ -0,0 +1,22 @@
          +export const authenticated = (state) => {
          +  return state.authenticated
          +}
          +
          +export const user = (state) => {
          +  return state.user
          +}
          +
          +export const getLoaderStatus = (state) => {
          +  return state.loader;
          +}
          +
          +export const getPermissions = (state) => {
          +  return state.permissions;
          +}
          +
          +export const getModalShowStatus = (state) => {
          +    return state.isModalShow;
          +}
          +export const getUserFormData = (state) => {
          +    return state.userFormData;
          +}
          diff --git a/resources/js/store/auth/index.js b/resources/js/store/auth/index.js
          new file mode 100644
          index 0000000..306e068
          --- /dev/null
          +++ b/resources/js/store/auth/index.js
          @@ -0,0 +1,12 @@
          +import state from "./state";
          +import * as getters from "./getters";
          +import * as mutations from "./mutations";
          +import * as actions from "./actions";
          +
          +export default {
          +    namespaced: true,
          +    state,
          +    getters,
          +    mutations,
          +    actions
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/auth/mutations.js b/resources/js/store/auth/mutations.js
          new file mode 100644
          index 0000000..95e3aaf
          --- /dev/null
          +++ b/resources/js/store/auth/mutations.js
          @@ -0,0 +1,22 @@
          +export const SET_AUTHENTICATED = (state, value) => {
          +  state.authenticated = value
          +}
          +export const SET_USER = (state, value) => {
          +  state.user = value
          +}
          +
          +export const SET_LOADER = (state, value) => {
          +  state.loader = value
          +}
          +
          +export const SET_PERMISSIONS = (state, value) => {
          +  state.permissions = value
          +}
          +
          +export const SHOW_MODAL = (state, value) => {
          +    state.isModalShow = value
          +}
          +
          +export const SET_USER_FORM_DATA = (state, value) => {
          +    state.userFormData = value
          +}
          diff --git a/resources/js/store/auth/state.js b/resources/js/store/auth/state.js
          new file mode 100644
          index 0000000..5c8b5bd
          --- /dev/null
          +++ b/resources/js/store/auth/state.js
          @@ -0,0 +1,8 @@
          +export default {
          +    authenticated: false,
          +    user: {},
          +    permissions: {},
          +    loader: false,
          +    isModalShow: false,
          +    userFormData: {}
          +}
          diff --git a/resources/js/store/dashboard/actions.js b/resources/js/store/dashboard/actions.js
          new file mode 100644
          index 0000000..37e1639
          --- /dev/null
          +++ b/resources/js/store/dashboard/actions.js
          @@ -0,0 +1,55 @@
          +import axiosClient from '../../config/axios'
          +import { isApiSuccess } from './../../helper'
          +
          +
          +export const load = ({ commit }) => {
          +  return axiosClient
          +    .get('dashboard')
          +    .then(response => {
          +
          +      if (isApiSuccess(response)) {
          +        commit('SET_MERCHANTS', response.data.merchants)
          +        commit('SET_ANNOUNCEMENTS', response.data.announcements)
          +      }
          +
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      commit('SET_MERCHANTS', [])
          +      commit('SET_ANNOUNCEMENTS', [])
          +      console.log('Dashboard Data Load Exception: ', exception);
          +    })
          +}
          +
          +export const approveChargebackRequest = ({ commit }, payload) => {
          +  return axiosClient
          +    .post('chargeback/approve', payload)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Approve Chargeback Request Exception: ', exception);
          +    })
          +}
          +
          +export const rejectChargebackRequest = ({ commit }, payload) => {
          +  return axiosClient
          +    .post('chargeback/reject', payload)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Reject Chargeback Request Exception: ', exception);
          +    })
          +}
          +
          +export const refundRequest = ({ commit }, payload) => {
          +  return axiosClient
          +    .post('refundrequest', payload,{
          +      headers: {
          +        'Content-Type': 'multipart/form-data'
          +      }
          +    })
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Refund Request Exception: ', exception);
          +    })
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/dashboard/getters.js b/resources/js/store/dashboard/getters.js
          new file mode 100644
          index 0000000..4e5ca5f
          --- /dev/null
          +++ b/resources/js/store/dashboard/getters.js
          @@ -0,0 +1,11 @@
          +export const merchants = (state) => {
          +  return state.merchants
          +}
          +
          +export const announcements = (state) => {
          +  return state.announcements
          +}
          +
          +export const getSidebarMenuItems = (state) => {
          +  return state.sidebar_menu_items
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/dashboard/index.js b/resources/js/store/dashboard/index.js
          new file mode 100644
          index 0000000..306e068
          --- /dev/null
          +++ b/resources/js/store/dashboard/index.js
          @@ -0,0 +1,12 @@
          +import state from "./state";
          +import * as getters from "./getters";
          +import * as mutations from "./mutations";
          +import * as actions from "./actions";
          +
          +export default {
          +    namespaced: true,
          +    state,
          +    getters,
          +    mutations,
          +    actions
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/dashboard/mutations.js b/resources/js/store/dashboard/mutations.js
          new file mode 100644
          index 0000000..28ede3a
          --- /dev/null
          +++ b/resources/js/store/dashboard/mutations.js
          @@ -0,0 +1,13 @@
          +import { generateSidebarMenuItems } from "@/helper"
          +
          +export const SET_MERCHANTS = (state, value) => {
          +  state.merchants = value
          +}
          +
          +export const SET_ANNOUNCEMENTS = (state, value) => {
          +  state.announcements = value
          +}
          +
          +export const SET_SIDEBAR_MENU_ITEMS = (state) => {
          +  state.sidebar_menu_items = generateSidebarMenuItems()
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/dashboard/state.js b/resources/js/store/dashboard/state.js
          new file mode 100644
          index 0000000..fa60aaa
          --- /dev/null
          +++ b/resources/js/store/dashboard/state.js
          @@ -0,0 +1,5 @@
          +export default {
          +  merchants: [],
          +  announcements: [],
          +  sidebar_menu_items: []
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/global/actions.js b/resources/js/store/global/actions.js
          new file mode 100644
          index 0000000..94c46ae
          --- /dev/null
          +++ b/resources/js/store/global/actions.js
          @@ -0,0 +1,51 @@
          +import axiosClient from '@/config/axios'
          +
          +export const loadMerchants = ({ commit }, filter_data) => {
          +  return axiosClient
          +    .post('merchantlist', filter_data)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Merchants API Exception', exception);
          +    })
          +}
          +
          +export const allTransactions = ({ commit }, filter_data) => {
          +  return axiosClient
          +    .post('alltransaction', filter_data)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('All Transaction API Exception', exception);
          +    })
          +}
          +
          +export const loadRefundedTransactions = ({ commit }, filter_data) => {
          +  return axiosClient
          +    .post('refundedtransaction', filter_data)
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Refunded API Exception', exception);
          +    })
          +}
          +
          +export const loadChargebackTransactions = ({ commit }, filter_data) => {
          +  return axiosClient
          +    .get('chargeback/list', { params: filter_data })
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Chargeback API Exception', exception);
          +    })
          +}
          +
          +export const loadIntegratorInformation = () => {
          +  return axiosClient
          +    .get('integratorinfo')
          +    .then(response => {
          +      return Promise.resolve(response)
          +    }).catch(exception => {
          +      console.log('Integrator Information API Exception', exception);
          +    })
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/global/getters.js b/resources/js/store/global/getters.js
          new file mode 100644
          index 0000000..e69de29
          diff --git a/resources/js/store/global/index.js b/resources/js/store/global/index.js
          new file mode 100644
          index 0000000..306e068
          --- /dev/null
          +++ b/resources/js/store/global/index.js
          @@ -0,0 +1,12 @@
          +import state from "./state";
          +import * as getters from "./getters";
          +import * as mutations from "./mutations";
          +import * as actions from "./actions";
          +
          +export default {
          +    namespaced: true,
          +    state,
          +    getters,
          +    mutations,
          +    actions
          +}
          \ No newline at end of file
          diff --git a/resources/js/store/global/mutations.js b/resources/js/store/global/mutations.js
          new file mode 100644
          index 0000000..e69de29
          diff --git a/resources/js/store/global/state.js b/resources/js/store/global/state.js
          new file mode 100644
          index 0000000..56004c9
          --- /dev/null
          +++ b/resources/js/store/global/state.js
          @@ -0,0 +1 @@
          +export default {}
          \ No newline at end of file
          diff --git a/resources/js/store/index.js b/resources/js/store/index.js
          new file mode 100644
          index 0000000..88d04fe
          --- /dev/null
          +++ b/resources/js/store/index.js
          @@ -0,0 +1,13 @@
          +import { createStore } from 'vuex';
          +
          +import auth from "./auth";
          +import dashboard from "./dashboard";
          +import global from "./global";
          +
          +export default createStore({
          +  modules: {
          +    auth,
          +    dashboard,
          +    global
          +  },
          +});
          \ No newline at end of file
          diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
          new file mode 100644
          index 0000000..e5506df
          --- /dev/null
          +++ b/resources/lang/en/auth.php
          @@ -0,0 +1,19 @@
          +<?php
          +
          +return [
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Authentication Language Lines
          +    |--------------------------------------------------------------------------
          +    |
          +    | The following language lines are used during authentication for various
          +    | messages that we need to display to the user. You are free to modify
          +    | these language lines according to your application's requirements.
          +    |
          +    */
          +
          +    'failed' => 'These credentials do not match our records.',
          +    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
          +
          +];
          diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php
          new file mode 100644
          index 0000000..d481411
          --- /dev/null
          +++ b/resources/lang/en/pagination.php
          @@ -0,0 +1,19 @@
          +<?php
          +
          +return [
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Pagination Language Lines
          +    |--------------------------------------------------------------------------
          +    |
          +    | The following language lines are used by the paginator library to build
          +    | the simple pagination links. You are free to change them to anything
          +    | you want to customize your views to better match your application.
          +    |
          +    */
          +
          +    'previous' => '&laquo; Previous',
          +    'next' => 'Next &raquo;',
          +
          +];
          diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php
          new file mode 100644
          index 0000000..2345a56
          --- /dev/null
          +++ b/resources/lang/en/passwords.php
          @@ -0,0 +1,22 @@
          +<?php
          +
          +return [
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Password Reset Language Lines
          +    |--------------------------------------------------------------------------
          +    |
          +    | The following language lines are the default lines which match reasons
          +    | that are given by the password broker for a password update attempt
          +    | has failed, such as for an invalid token or invalid new password.
          +    |
          +    */
          +
          +    'reset' => 'Your password has been reset!',
          +    'sent' => 'We have emailed your password reset link!',
          +    'throttled' => 'Please wait before retrying.',
          +    'token' => 'This password reset token is invalid.',
          +    'user' => "We can't find a user with that email address.",
          +
          +];
          diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php
          new file mode 100644
          index 0000000..a65914f
          --- /dev/null
          +++ b/resources/lang/en/validation.php
          @@ -0,0 +1,151 @@
          +<?php
          +
          +return [
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Validation Language Lines
          +    |--------------------------------------------------------------------------
          +    |
          +    | The following language lines contain the default error messages used by
          +    | the validator class. Some of these rules have multiple versions such
          +    | as the size rules. Feel free to tweak each of these messages here.
          +    |
          +    */
          +
          +    'accepted' => 'The :attribute must be accepted.',
          +    'active_url' => 'The :attribute is not a valid URL.',
          +    'after' => 'The :attribute must be a date after :date.',
          +    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
          +    'alpha' => 'The :attribute may only contain letters.',
          +    'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
          +    'alpha_num' => 'The :attribute may only contain letters and numbers.',
          +    'array' => 'The :attribute must be an array.',
          +    'before' => 'The :attribute must be a date before :date.',
          +    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
          +    'between' => [
          +        'numeric' => 'The :attribute must be between :min and :max.',
          +        'file' => 'The :attribute must be between :min and :max kilobytes.',
          +        'string' => 'The :attribute must be between :min and :max characters.',
          +        'array' => 'The :attribute must have between :min and :max items.',
          +    ],
          +    'boolean' => 'The :attribute field must be true or false.',
          +    'confirmed' => 'The :attribute confirmation does not match.',
          +    'date' => 'The :attribute is not a valid date.',
          +    'date_equals' => 'The :attribute must be a date equal to :date.',
          +    'date_format' => 'The :attribute does not match the format :format.',
          +    'different' => 'The :attribute and :other must be different.',
          +    'digits' => 'The :attribute must be :digits digits.',
          +    'digits_between' => 'The :attribute must be between :min and :max digits.',
          +    'dimensions' => 'The :attribute has invalid image dimensions.',
          +    'distinct' => 'The :attribute field has a duplicate value.',
          +    'email' => 'The :attribute must be a valid email address.',
          +    'ends_with' => 'The :attribute must end with one of the following: :values.',
          +    'exists' => 'The selected :attribute is invalid.',
          +    'file' => 'The :attribute must be a file.',
          +    'filled' => 'The :attribute field must have a value.',
          +    'gt' => [
          +        'numeric' => 'The :attribute must be greater than :value.',
          +        'file' => 'The :attribute must be greater than :value kilobytes.',
          +        'string' => 'The :attribute must be greater than :value characters.',
          +        'array' => 'The :attribute must have more than :value items.',
          +    ],
          +    'gte' => [
          +        'numeric' => 'The :attribute must be greater than or equal :value.',
          +        'file' => 'The :attribute must be greater than or equal :value kilobytes.',
          +        'string' => 'The :attribute must be greater than or equal :value characters.',
          +        'array' => 'The :attribute must have :value items or more.',
          +    ],
          +    'image' => 'The :attribute must be an image.',
          +    'in' => 'The selected :attribute is invalid.',
          +    'in_array' => 'The :attribute field does not exist in :other.',
          +    'integer' => 'The :attribute must be an integer.',
          +    'ip' => 'The :attribute must be a valid IP address.',
          +    'ipv4' => 'The :attribute must be a valid IPv4 address.',
          +    'ipv6' => 'The :attribute must be a valid IPv6 address.',
          +    'json' => 'The :attribute must be a valid JSON string.',
          +    'lt' => [
          +        'numeric' => 'The :attribute must be less than :value.',
          +        'file' => 'The :attribute must be less than :value kilobytes.',
          +        'string' => 'The :attribute must be less than :value characters.',
          +        'array' => 'The :attribute must have less than :value items.',
          +    ],
          +    'lte' => [
          +        'numeric' => 'The :attribute must be less than or equal :value.',
          +        'file' => 'The :attribute must be less than or equal :value kilobytes.',
          +        'string' => 'The :attribute must be less than or equal :value characters.',
          +        'array' => 'The :attribute must not have more than :value items.',
          +    ],
          +    'max' => [
          +        'numeric' => 'The :attribute may not be greater than :max.',
          +        'file' => 'The :attribute may not be greater than :max kilobytes.',
          +        'string' => 'The :attribute may not be greater than :max characters.',
          +        'array' => 'The :attribute may not have more than :max items.',
          +    ],
          +    'mimes' => 'The :attribute must be a file of type: :values.',
          +    'mimetypes' => 'The :attribute must be a file of type: :values.',
          +    'min' => [
          +        'numeric' => 'The :attribute must be at least :min.',
          +        'file' => 'The :attribute must be at least :min kilobytes.',
          +        'string' => 'The :attribute must be at least :min characters.',
          +        'array' => 'The :attribute must have at least :min items.',
          +    ],
          +    'not_in' => 'The selected :attribute is invalid.',
          +    'not_regex' => 'The :attribute format is invalid.',
          +    'numeric' => 'The :attribute must be a number.',
          +    'password' => 'The password is incorrect.',
          +    'present' => 'The :attribute field must be present.',
          +    'regex' => 'The :attribute format is invalid.',
          +    'required' => 'The :attribute field is required.',
          +    'required_if' => 'The :attribute field is required when :other is :value.',
          +    'required_unless' => 'The :attribute field is required unless :other is in :values.',
          +    'required_with' => 'The :attribute field is required when :values is present.',
          +    'required_with_all' => 'The :attribute field is required when :values are present.',
          +    'required_without' => 'The :attribute field is required when :values is not present.',
          +    'required_without_all' => 'The :attribute field is required when none of :values are present.',
          +    'same' => 'The :attribute and :other must match.',
          +    'size' => [
          +        'numeric' => 'The :attribute must be :size.',
          +        'file' => 'The :attribute must be :size kilobytes.',
          +        'string' => 'The :attribute must be :size characters.',
          +        'array' => 'The :attribute must contain :size items.',
          +    ],
          +    'starts_with' => 'The :attribute must start with one of the following: :values.',
          +    'string' => 'The :attribute must be a string.',
          +    'timezone' => 'The :attribute must be a valid zone.',
          +    'unique' => 'The :attribute has already been taken.',
          +    'uploaded' => 'The :attribute failed to upload.',
          +    'url' => 'The :attribute format is invalid.',
          +    'uuid' => 'The :attribute must be a valid UUID.',
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Custom Validation Language Lines
          +    |--------------------------------------------------------------------------
          +    |
          +    | Here you may specify custom validation messages for attributes using the
          +    | convention "attribute.rule" to name the lines. This makes it quick to
          +    | specify a specific custom language line for a given attribute rule.
          +    |
          +    */
          +
          +    'custom' => [
          +        'attribute-name' => [
          +            'rule-name' => 'custom-message',
          +        ],
          +    ],
          +
          +    /*
          +    |--------------------------------------------------------------------------
          +    | Custom Validation Attributes
          +    |--------------------------------------------------------------------------
          +    |
          +    | The following language lines are used to swap our attribute placeholder
          +    | with something more reader friendly such as "E-Mail Address" instead
          +    | of "email". This simply helps us make our message more expressive.
          +    |
          +    */
          +
          +    'attributes' => [],
          +
          +];
          diff --git a/resources/views/auth/credit_report_modal.blade.php b/resources/views/auth/credit_report_modal.blade.php
          new file mode 100644
          index 0000000..b0078f3
          --- /dev/null
          +++ b/resources/views/auth/credit_report_modal.blade.php
          @@ -0,0 +1,24 @@
          +<div id="new-report-modal" class="modal fade in" role="dialog">
          +    <div class="modal-dialog modal-dialog-centered" style="width:70% !important; margin: 0 auto">
          +        <form method="post" action="{{route('upload.report')}}">
          +            @csrf
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">×</button>
          +                    <h4 class="modal-title" style="margin-bottom: 10px;">New credit report</h4>
          +                </div>
          +                <div class="modal-body">
          +                    <textarea placeholder="UPLOAD CREDIT REPORT HTML" class="form-control" name="html_content" rows="10"></textarea>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default epic-btn" data-dismiss="modal">Close</button>
          +                    <button name="new_process_html" type="submit" class="btn btn-primary btn2">Upload</button>
          +                </div>
          +            </div>
          +        </form>
          +    </div>
          +</div>
          +
          +<script>
          +    $('#new-report-modal').modal('show')
          +</script>
          diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
          new file mode 100644
          index 0000000..2f06cdb
          --- /dev/null
          +++ b/resources/views/auth/login.blade.php
          @@ -0,0 +1,72 @@
          +@extends('layouts.app')
          +
          +@section('content')
          +    <link href="{{asset('css/login.css')}}" rel="stylesheet"/>
          +    <div>
          +        <a class="hiddenanchor" id="signup"></a>
          +        <a class="hiddenanchor" id="signin"></a>
          +
          +    <div class="login_wrapper" id="login-panel">
          +        <div class="animate form login_form">
          +          <section class="login_content">
          +            <form class="form-horizontal" method="POST" action="{{ route('login') }}">
          +                {{ csrf_field() }}
          +                @php
          +                    $logo_path =  'images/'.config('app.name').'_logo.png';
          +                @endphp
          +              <h1><img src="{{ asset($logo_path) }}" alt="" class="login-logo" /></h1>
          +
          +              @if($errors->has('message'))
          +                <div class="alert alert-danger" onclick="this.classList.add('hidden')">{{ $errors->first('message') }}</div>
          +              @endif
          +
          +              <div {{ $errors->has('email') ? ' has-error' : '' }}>
          +                    <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required autofocus placeholder="Email">
          +
          +                    @if ($errors->has('email'))
          +                        <span class="help-block">
          +                            <strong>{{ $errors->first('email') }}</strong>
          +                        </span>
          +                    @endif
          +              </div>
          +
          +              <div>
          +                    <input id="password" type="password" class="form-control" name="password" required placeholder="Password">
          +
          +                    @if ($errors->has('password'))
          +                        <span class="help-block">
          +                            <strong>{{ $errors->first('password') }}</strong>
          +                        </span>
          +                    @endif
          +              </div>
          +
          +              <div>
          +              <input class="btn btn-success submit btn2 login-btn2" type="submit" value="Login Now" />
          +              </div>
          +              <div class="clearfix"></div>
          +              <div class="ex-links">
          +                  <a href="{{ route('register') }}">Create New Account</a>
          +
          +              </div>
          +
          +              <div class="clearfix"></div>
          +
          +              <div class="separator">
          +                <div>
          +                  <h1>{{ config('app.name') }} Portal</h1>
          +                  <p>© @php echo date('Y'); @endphp - {{ config('app.name') }} - All Rights Reserved </p>
          +                </div>
          +              </div>
          +            </form>
          +          </section>
          +
          +        </div>
          +
          +      </div>
          +    </div>
          +    <div class="footer-copyright text-center py-3">
          +        <strong> Secure SSL Area | This website is protected by secure portal © @php echo date('Y'); @endphp Clickletters LLC/M2C Academy LLC. All rights reserved.</strong>
          +    </div>
          +
          +
          +@endsection
          diff --git a/resources/views/auth/manage_client.blade.php b/resources/views/auth/manage_client.blade.php
          new file mode 100644
          index 0000000..63aa0f5
          --- /dev/null
          +++ b/resources/views/auth/manage_client.blade.php
          @@ -0,0 +1,351 @@
          +@extends('layouts.app')
          +@push('css')
          +    <style>
          +    .color-red{
          +       color:red
          +    }
          +    .font-bold{
          +        font-weight: bold;
          +    }
          +    </style>
          +@endpush
          +@section('content')
          +    @php
          +        $max_file_size= $file = config('constant.MAX_FILE_SIZE');
          +        $source_types = config('constant.sourceType');
          +        $credit_report_providers = getCache('credit_report_provider_link');
          +        $free_value = array_keys(config('constant.CLIENT_TYPES'),"Free");
          +    @endphp
          +
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="row">
          +                    <div class="col-md-12">
          +                        <div class="panel-heading">
          +                            <h3>Account Info <small>Manage your account info</small></h3>
          +                            <div class="pull-right" style="margin-top: -30px;margin-right: 10px;">
          +                                <button class="btn btn-sm btn-info" style="background: #FF440A !important;border-color: #FF440A !important;" type="button" id="btn_show_hide_text" onclick="return show_hide_textbox(this)" data-toggle="tooltip" title="Show or Hide Name,Email,SSN,Phone">
          +                                    <i class="fa fa-eye" style="font-size: 14px; color: black;" id="show_hide_icon" aria-hidden="true"></i>
          +                                </button>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('manage.clients')}}" id="client_form" autocomplete="off"
          +                                      enctype=multipart/form-data
          +                                      class="input-form-section">
          +                                    @csrf
          +                                <div class="x_content">
          +                                    <div class="col-md-12">
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="firstname">First Name</label>
          +                                                        <input class="form-control" name="creditreport[first_name]" type="text"
          +                                                               value="<?php echo auth()->user()->first_name; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Last Name">Last Name</label>
          +                                                        <input class="form-control" name="creditreport[last_name]" type="text"
          +                                                               value="<?php echo auth()->user()->last_name; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="dob">Date of Birth</label>
          +                                                        <input class="form-control" name="creditreport[birth_date]" type="text" maxlength="10" onkeyup="birthDateCompleted()"
          +                                                               value="<?php echo auth()->user()->birth_date; ?>" >
          +                                                    </div>
          +                                                </div>
          +
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="ssn">Social Security Number</label>
          +                                                        <input class="form-control" name="creditreport[ssn]"
          +                                                               type="text" maxlength="4"
          +                                                               value="<?php echo auth()->user()->ssn; ?>"
          +                                                               >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Phone">Phone</label>
          +                                                        <input class="form-control" name="creditreport[phone]" type="text"
          +                                                               value="<?php echo auth()->user()->phone; ?>" >
          +                                                    </div>
          +                                                </div>
          +
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Street Number">Street Number</label>
          +                                                        <input class="form-control" name="creditreport[street_no]" type="text"
          +                                                               value="<?php echo auth()->user()->street_no; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Street Name">Street Name</label>
          +                                                        <input class="form-control" name="creditreport[street_name]" type="text"
          +                                                               value="<?php echo auth()->user()->street_name; ?>">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="City">City</label>
          +                                                        <input class="form-control" name="creditreport[city]" type="text"
          +                                                               value="<?php echo auth()->user()->city; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="State">State</label>
          +                                                        <input class="form-control" name="creditreport[state]" type="text"
          +                                                               value="<?php echo auth()->user()->state; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="dob">Zip</label>
          +                                                        <input class="form-control" name="creditreport[zip_code]" type="text"
          +                                                               value="<?php echo auth()->user()->zip_code; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="dob">Email</label>
          +                                                        <input class="form-control" disabled name="creditreport[email]"
          +                                                               type="text"
          +                                                               value="<?php echo auth()->user()->email; ?>" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="dob">Password</label>
          +                                                        <div class="input-group" id="manage_client_show_hide_password">
          +                                                            <input class="form-control" name="creditreport[password]"
          +                                                                   type="password"
          +                                                                   value="{{customDecrypt(auth()->user()->password)}}">
          +                                                            <div class="input-group-addon">
          +                                                                <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                                                            </div>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="source_type">Source Type</label>
          +                                                    <select name="creditreport[credit_report_company_type]"  onchange="sourceTypeOnchange()" id="company_type"  class="form-control">
          +                                                        @foreach($source_types as  $key => $value)
          +                                                            @if(auth()->user()->is_free == (int)$free_value && $value == config('constant.sourceType.SmartCredit'))
          +                                                                @continue;
          +                                                            @endif
          +                                                            @if(auth()->user()->credit_report_company_type == $value)
          +                                                            <option value="{{$value}}" {{auth()->user()->credit_report_company_type == $value ? 'selected':''}}> {{$key}}</option>
          +                                                            @endif
          +                                                        @endforeach
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                    </div>
          +                                    <div class="x_content" id="upload-document-panel">
          +                                        @include('partials.upload_documents')
          +                                    </div>
          +                                    <div class="col-md-12 hidden">
          +                                    @if(count($question_answer) > 0 && auth()->user()->credit_report_company_type == config('constant.sourceType.SmartCredit'))
          +                                        @include('partials.user_identity_question_answer',['question_answers'=>$question_answer])
          +                                    @endif
          +                                    </div>
          +                                    @if(isClientSubscription())
          +                                    <div class="col-sm-12 center" style="margin-top: 10px; text-align: center; ">
          +                                        <input class="btn btn-success btn2" onclick="return client_form_submit(this)" type="submit" value="Save Changes">
          +                                    </div>
          +                                    @endif
          +                                </div>
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +    @if (!empty($upload_medias))
          +        @include('partials.modals.upload_doc_modal')
          +    @endif
          +
          +    <div class="modal fade" id="common_confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +        <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <h4 class="mb-2 text-center" style="color: red" id="common_message_text">
          +
          +                    </h4>
          +                </div>
          +                <div class="modal-footer" style="text-align: center">
          +                    <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +
          +@push('script')
          +
          +    <script>
          +
          +        $(document).ready(function() {
          +            @if(getSession('login') == 1)
          +            sessionStorage.setItem('user_data_viewed','0');
          +            sessionStorage.setItem('video_shown','0');
          +            {{setSession('login',0)}};
          +            @endif
          +
          +            if (sessionStorage.getItem("user_data_viewed") === "1") {
          +                $('#show_hide_icon').removeClass('fa-eye-slash');
          +                $('#show_hide_icon').addClass('fa-eye');
          +            }
          +
          +            if (sessionStorage.getItem("user_data_viewed") === "0") {
          +                $('#show_hide_icon').removeClass('fa-eye');
          +                $('#show_hide_icon').addClass('fa-eye-slash');
          +            }
          +
          +            show_hide_textbox();
          +            @if(!(isClientSubscription()))
          +                showSubscription();
          +            @else
          +                @if(isClientFirstTimeLogin())
          +                     common_helper.commonModalView('{{route('show.modal')}}','FIRST_TIME_LOGIN_MODAL_VIEW','first_time_login_modal');
          +                  // showFirstTimeLoginModalView();
          +                @endif
          +            @endif
          +
          +        });
          +
          +        const sourceTypeOnchange=()=>{
          +
          +            let selected_value =  $("#company_type").val();
          +
          +            let current_source_type = {{auth()->user()->credit_report_company_type}};
          +
          +            let source_name = current_source_type == 1 ? 'SmartCredit' : "Identity IQ" ;
          +            sourceTypeConfigUnset()
          +            if( selected_value != current_source_type){
          +
          +               let html = 'Set up your '+ source_name+ ' first, use the same email and password you used to set up your credit zombies account';
          +                $('#common_message_text').text(html);
          +                sourceTypeConfigSetup(current_source_type)
          +               $('#common_confirmation_modal').modal('show');
          +            }
          +            //$("select[name='source_type']").val(current_source_type);
          +        }
          +
          +        const hideFirstTimeLoginModalView=()=>{
          +
          +           $('#first_time_login_modal').modal('hide');
          +
          +           let provider = $('#report_provider').val();
          +           let providers = [];
          +
          +           let go_to_url = '';
          +
          +           providers = @php echo json_encode($credit_report_providers);@endphp;
          +
          +           go_to_url = providers[parseInt(provider)];
          +
          +           window.open(go_to_url,'_blank') ;
          +
          +           firstTimeLoginUserUpdate();
          +       }
          +
          +        const client_form_submit =(e)=>{
          +            $('.has-error').removeClass('has-error')
          +            if($('#client_form').valid()) {
          +                let url = '{{ route('admin.ajax.get.process') }}';
          +                let email = $('#client_form').find('input[name="creditreport[email]"]').val();
          +                let password = $('[name="creditreport[password]"]').val();
          +                let source_type =  $("#company_type").val();
          +                let ssn = $('[name="creditreport[ssn]"]').val();
          +
          +                let data = {
          +                    action: 'GET_SUBSCRIPTION_STATUS_CREDIT_REPORT_PROVIDER',
          +                    email: email,
          +                    password: password,
          +                    source_type: source_type,
          +                    ssn: ssn,
          +                };
          +                common_helper.globalAjaxRequestAsync(url, 'get', data, callbackfromreportprovider);
          +            }
          +            return false;
          +        }
          +
          +        const file_delete = (title,image)=>{
          +            let action = 'DELETE_CLIENT_DOC_FILE';
          +            let html_content = `<h4>Are you sure you want to delete </h4>`;
          +            html_content += `<h4>`+ title + ` file?` +`</h4>`;
          +            const swalresponse = common_helper.swalAleart(html_content, 'warning', 450, true, '', true, true, 'Yes');
          +            swalresponse.then(async function (result) {
          +                if (result.isConfirmed) {
          +                    let response = await common_helper.globalAjaxRequest('<?php echo e(route('process.ajax')); ?>', 'POST', {
          +                        action: action,
          +                        userData: image,
          +                        _token: "<?php echo e(csrf_token()); ?>"
          +                    });
          +                    if (response.status) {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450,closeOnConfirm: true});
          +                        window.location = `<?php echo e(route('manage.clients')); ?>`;
          +                    } else {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450,closeOnConfirm: true});
          +                    }
          +                }
          +            })
          +        };
          +
          +        const showSubscription=()=> {
          +            common_helper.commonModalView('{{route('show.modal')}}','RECURRING_VIEW_MODAL','recurring_view_modal');
          +        }
          +
          +        const show_hide_textbox = (e)=>{
          +            $return_data = common_helper.show_hide_textbox($('#show_hide_icon'),
          +                $('[name="creditreport[phone]"]'),$('[name="creditreport[email]"]'),
          +                $('[name="creditreport[first_name]"]'),$('[name="creditreport[last_name]"]'),
          +                $('[name="creditreport[ssn]"]'),$('[name="creditreport[birth_date]"]'),
          +                $('[name="creditreport[street_no]"]'),$('[name="creditreport[street_name]"]'),
          +                $('[name="creditreport[city]"]'),$('[name="creditreport[state]"]'),
          +                $('[name="creditreport[zip_code]"]')
          +            );
          +
          +            sessionStorage.setItem('user_data_viewed',$return_data);
          +
          +        }
          +
          +    </script>
          +
          +    <script src="{{asset('/')}}js/accountinfo/clientinfo.js?v=1.0.2"></script>
          +@endpush
          diff --git a/resources/views/basic/pagination.blade.php b/resources/views/basic/pagination.blade.php
          new file mode 100644
          index 0000000..2d51cce
          --- /dev/null
          +++ b/resources/views/basic/pagination.blade.php
          @@ -0,0 +1,113 @@
          +@if ($paginator->total()>0)
          +
          +        <?php
          +            $items_count = 3;
          +            $show_first_item = false;
          +            $show_last_item = false;
          +
          +            $limit_start= 1;
          +            $limit_end= 1;
          +            if (count($elements[0]) > $items_count*2) {
          +                $limit_start= $paginator->currentPage() - 1;
          +                $limit_end= $limit_start + 2;
          +            }
          +
          +            if($paginator->currentPage() >= $items_count) {
          +                $show_first_item= true;
          +            }
          +            if($paginator->lastPage() > $paginator->currentPage() + 1) {
          +                $show_last_item= true;
          +            }
          +        ?>
          +
          +    <div class="row">
          +        <div class="col-md-6">
          +
          +                Showing {{($paginator->currentpage()-1)*$paginator->perpage()+1}}
          +                to {{($paginator->hasMorePages())?
          +                ($paginator->currentpage()*$paginator->perpage()):
          +                $paginator->total()}}
          +                of  {{$paginator->total()}} entries
          +
          +        </div>
          +        <div class="col-md-6">
          +         <div class="pull-right">
          +             <nav  aria-label="Page navigation">
          +                 <ul class="pagination justify-content-end">
          +                     @if ($paginator->onFirstPage())
          +                         <li class="page-item disabled">
          +                             <a class="page-link" href="#" tabindex="-1">< Previous </a>
          +                         </li>
          +                     @else
          +                         <li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}">< Previous </a></li>
          +                     @endif
          +
          +                         @foreach ($elements as $element)
          +                             {{-- "Three Dots" Separator --}}
          +                             @if (is_string($element))
          +                                 <li class="page-item disabled"><span class="">{{ $element }}</span></li>
          +                             @endif
          +
          +                             {{-- Array Of Links --}}
          +                             @if (is_array($element))
          +
          +                                 @foreach ($element as $page => $url)
          +
          +                                     @if(count($element)>5)
          +
          +                                         @if($show_first_item and $page == 1)
          +                                             <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
          +                                             @if($paginator->currentPage()!= 3)
          +                                                 <li class="page-item disabled"><a class="page-link">...</a></li>
          +                                             @endif
          +                                         @endif
          +
          +                                         @if($page >= $limit_start and $page <= $limit_end)
          +                                             @if ($page == $paginator->currentPage())
          +                                                 <li class="page-item active"><a href=""><span class="page-link">{{ $page }}</span></a></li>
          +                                             @else
          +                                                 <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
          +                                             @endif
          +                                         @endif
          +
          +                                         @if($show_last_item and $page == $paginator->lastPage())
          +                                             @if($paginator->currentPage()!= $paginator->lastPage()-2)
          +                                                 <li class="page-item disabled"><a class="page-link">...</a></li>
          +                                             @endif
          +                                             <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
          +                                         @endif
          +
          +                                     @else
          +
          +                                         @if ($page == $paginator->currentPage())
          +                                                 <li class="page-item active">
          +                                                     <a class="page-link">{{ $page }}</a>
          +                                                 </li>
          +                                             @else
          +                                                 <li class="page-item">
          +                                                     <a class="page-link" href="{{ $url }}">{{ $page }}</a>
          +                                                 </li>
          +                                             @endif
          +
          +                                     @endif
          +
          +                                 @endforeach
          +
          +                             @endif
          +                         @endforeach
          +
          +                     @if ($paginator->hasMorePages())
          +                         <li class="page-item">
          +                             <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next"> Next ></a>
          +                         </li>
          +                     @else
          +                         <li class="page-item disabled">
          +                             <a class="page-link" href="#"> Next ></a>
          +                         </li>
          +                     @endif
          +                 </ul>
          +             </nav>
          +         </div>
          +        </div>
          +    </div>
          +@endif
          diff --git a/resources/views/basic/terms_and_condition.blade.php b/resources/views/basic/terms_and_condition.blade.php
          new file mode 100644
          index 0000000..80a619c
          --- /dev/null
          +++ b/resources/views/basic/terms_and_condition.blade.php
          @@ -0,0 +1,51 @@
          +<!DOCTYPE html>
          +<html lang="en">
          +<head>
          +    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +    <!-- Meta, title, CSS, favicons, etc. -->
          +    <meta charset="utf-8">
          +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
          +    <meta name="viewport" content="width=device-width, initial-scale=1">
          +    <link rel="shortcut icon" href="{{ asset('images/favicon.png') }}"/>
          +    <title>{{ config('app.name') }}</title>
          +
          +    <!-- Bootstrap -->
          +    <link href="{{ asset('theme/bootstrap/dist/css/bootstrap.min.css') }}" rel="stylesheet">
          +    <!-- Font Awesome -->
          +    <link href="{{ asset('theme/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet">
          +
          +</head>
          +
          +<body class="nav-sm"> <!-- nav-sm -->
          +
          +<div class="container body" style="margin-top: 10px">
          +    <div class="main_container" >
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +
          +                <div class="panel-heading text-center">
          +                    <h1>Terms of service</h1>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +                                    {{empty($content['terms_service'])?'':print_r($content['terms_service'])}}
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +    </div>
          +</div>
          +</body>
          +</html>
          +
          +
          +
          +
          diff --git a/resources/views/basic/terms_and_service_entry.blade.php b/resources/views/basic/terms_and_service_entry.blade.php
          new file mode 100644
          index 0000000..221b9b9
          --- /dev/null
          +++ b/resources/views/basic/terms_and_service_entry.blade.php
          @@ -0,0 +1,57 @@
          +@extends('layouts.admin')
          +@push('css')
          +    <link href="{{ asset('js/summernote/summernote.css') }}" rel="stylesheet">
          +@endpush
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +
          +                <div class="panel-heading">
          +                    <h1>Terms of service</h1>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('terms.of.service')}}" enctype="multipart/form-data">
          +                                    @csrf
          +
          +                                    <input type="hidden" name="id"  value="{{empty($content['id'])?'':$content['id']}}" />
          +                                    <div class="form-group">
          +                                        <label>Title</label>
          +
          +                                        <input type="text" name="title"  value="{{empty($content['title'])?'terms and service':$content['title']}}"  class="form-control" />
          +                                    </div>
          +                                    <div class="form-group">
          +                                        <label>Description</label>
          +
          +                                        <textarea id="summernote" name="body" > {{empty($content['terms_service'])?'':$content['terms_service']}}</textarea>
          +                                    </div>
          +
          +                                    <div class="pull-right">
          +                                        @if(isShowContent('terms.of.service'))
          +                                        <button type="submit" class="btn btn-success btn-block">Publish</button>
          +                                        @endif
          +                                    </div>
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +            let selctor=$('#summernote');
          +            common_helper.init_summernote(selctor);
          +        })
          +    </script>
          +@endpush
          +
          +
          diff --git a/resources/views/client/list.blade.php b/resources/views/client/list.blade.php
          new file mode 100644
          index 0000000..1227528
          --- /dev/null
          +++ b/resources/views/client/list.blade.php
          @@ -0,0 +1,266 @@
          +@extends('layouts.admin')
          +<style>
          +    #table-clients td {
          +        text-align: left !important;
          +        padding: 8px !important;
          +    }
          +
          +    #table-clients th {
          +        padding: 8px !important;
          +    }
          +
          +</style>
          +@php
          +    $pageLimit = $searchData['pageLimit'];
          +    $account_status = $searchData['account_status'];
          +    $search_value = $searchData['search_value'];
          +    $payment_status = $searchData['payment_status'];
          +    $client_type = $searchData['client_type'];
          +@endphp
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Client List</h3>
          +                        @if(isShowContent('client.create'))
          +                            <a  href="{{route('client.create')}}" class="btn btn2 btn-success btn-flat pull-right">
          +                                <i class="fa fa-user" aria-hidden="true"></i>
          +                                Add Client
          +                            </a>
          +                        @endif
          +                    </div>
          +                </div>
          +
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +
          +                                    <form action="{{route('get.clients')}}" method="get" role="search">
          +                                        <div class="row">
          +                                        <div class="col-md-1 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Show</label>
          +                                                <select name="pageLimit" id="pagination" class="form-control"
          +                                                        onchange="this.form.submit()">
          +                                                    <option value="10" @if($pageLimit == 10) selected @endif>10</option>
          +                                                    <option value="20" @if($pageLimit == 20) selected @endif>20</option>
          +                                                    <option value="50" @if($pageLimit == 50) selected @endif>50</option>
          +                                                    <option value="100" @if($pageLimit == 100) selected @endif>100</option>
          +                                                    <option value="500" @if($pageLimit == 500) selected @endif>500</option>
          +                                                </select>
          +                                                </div>
          +                                         </div>
          +                                        <div class="col-md-2 col-xs-12">
          +                                            <div class="form-group">
          +                                                <label>Account Status</label>
          +                                                <select name="account_status" id="account_status" class="form-control">
          +                                                    <option value="">All</option>
          +                                                    @foreach(config('constant.ACCOUNT_STATUS') as $key => $obj )
          +                                                        <option value="{{$obj}}"
          +                                                                @if ($obj==$searchData['account_status'])
          +                                                                    selected="selected"
          +                                                                @endif
          +                                                        >{{$key}}</option>
          +                                                    @endforeach
          +
          +                                                </select>
          +                                            </div>
          +                                        </div>
          +                                        <div class="col-md-2 col-xs-12">
          +                                            <div class="form-group">
          +                                                <label>Client Type</label>
          +                                                <select name="client_type" id="client_type" class="form-control">
          +                                                    <option value="">All</option>
          +                                                    @if(!empty(config('constant.CLIENT_TYPES')))
          +                                                        @foreach(config('constant.CLIENT_TYPES') as $key => $obj )
          +                                                            <option value="{{$key}}"
          +                                                                    @if ($key == $searchData['client_type'])
          +                                                                        selected="selected"
          +                                                                @endif
          +                                                            >{{$obj}}</option>
          +                                                        @endforeach
          +                                                    @endif
          +                                                </select>
          +                                            </div>
          +                                            </div>
          +                                        <div class="col-md-2 col-xs-12">
          +                                            <div class="form-group">
          +                                                <label>Payment Status</label>
          +                                                <select name="payment_status" id="payment_status" class="form-control">
          +                                                    <option value="">All</option>
          +                                                    @if(!empty(config('constant.PAYMENT_STATUS')))
          +                                                        @foreach(config('constant.PAYMENT_STATUS') as $key => $obj )
          +                                                            <option value="{{$key}}"
          +                                                                    @if ($key == $searchData['payment_status'])
          +                                                                        selected="selected"
          +                                                                    @endif
          +                                                            >{{$obj}}</option>
          +                                                        @endforeach
          +                                                    @endif
          +                                                </select>
          +                                            </div>
          +                                        </div>
          +                                        <div class="col-md-3 col-xs-12">
          +                                            <div class="form-group">
          +                                                <label>Client Name/Email/Phone</label>
          +                                                <input id="search_value"
          +                                                       type="text"
          +                                                       value="{{$searchData['search_value']}}"
          +                                                       placeholder="Search By Client Name/Email/Phone"
          +                                                       class="form-control" name="search_value" autocomplete="off">
          +                                            </div>
          +                                        </div>
          +
          +                                        <div class="col-md-1 col-xs-12">
          +                                            <div class="form-group" style="margin-top: 25px;">
          +                                                <button class="btn btn-primary btn-outline-primary"  style="width:100%" type="submit">Search</button>
          +                                            </div>
          +                                        </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-2">
          +                                                @if(isShowContent('admin.ajax.process'))
          +                                                <button style="margin-top: 15px;" onclick="return multipleClientDelete()" type="button"
          +                                                        class="btn btn-danger pull-left" style="margin-left: 10px"
          +                                                        id="btnDeleteMultipleClient" disabled>Delete Client
          +                                                </button>
          +                                                @endif
          +                                            </div>
          +                                        </div>
          +                                     </form>
          +                                <div class="table-responsive py-5">
          +                                    <table id="table-clients" class="table table-bordered table-hover">
          +                                        <thead>
          +                                        <tr>
          +                                            <th><input type="checkbox" name="allChecked" value="all"
          +                                                       onclick="common_helper.allChecked(this,'checkedBoxClient')"></th>
          +                                            <th>Client Name</th>
          +                                            <th>Email</th>
          +                                            <th>Phone</th>
          +                                            <th>Address</th>
          +                                            <th> Account Status</th>
          +                                            <th> Payment Status</th>
          +                                            <th> Account Cancel Date</th>
          +                                            <th>Created At</th>
          +                                            <th>Actions</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($users['data']))
          +                                            @foreach ($users['data'] as $key => $obj)
          +                                                @php
          +                                                    $user_info = json_encode([$obj->id,$obj->email]);
          +                                                    $action = 'DELETE_CLIENT';
          +                                                @endphp
          +                                                <tr class="tr-height">
          +                                                    <td><input type="checkbox" name="checkedBoxClient"
          +                                                               value="{{ $user_info }}" onclick="checkedornot(this)"></td>
          +                                                    <td>{{$obj->first_name.' '.$obj->last_name}}</td>
          +                                                    <td>{{ $obj->email}}</td>
          +                                                    <td>{{ $obj->phone }}</td>
          +                                                    <td>{{ $obj->street_no.', '.$obj->street_name.', '.$obj->city }}</td>
          +                                                    <td> @php echo  getAccountStatus($obj->subscription_status,$obj->status) @endphp</td>
          +                                                    <td> @php echo  getPaymentStatus($obj->last_payment_date) @endphp</td>
          +                                                    <td>{{ ($obj->account_cancel_datetime !=null)? getStringToDateTime($obj->account_cancel_datetime,'m/d/Y h:i:s a'):'' }}</td>
          +                                                    <td>{{ getStringToDateTime($obj->created_at,'m/d/Y h:i:s a') }}</td>
          +                                                    <td>
          +                                                        @if(isShowContent('get.client.info'))
          +                                                        <a href="{{route('get.client.info',$obj->id)}}"
          +                                                           class="btn btn-success" style="padding: 5px;"> <span
          +                                                                class="glyphicon glyphicon-pencil" title="Edit"></span></a>
          +                                                        @endif
          +                                                        @if(isShowContent('admin.ajax.process'))
          +                                                            <button onclick="return clientDelete({{$user_info}},'{{$action}}')"
          +                                                                    class="btn btn-danger" style="padding: 5px;"><span
          +                                                                    class="glyphicon glyphicon-trash" title="Delete"></span>
          +                                                            </button>
          +                                                        @endif
          +                                                    </td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +
          +                                </div>
          +                                <div id="pagination_panel">
          +                                    {{ $users['data']->appends(compact('pageLimit' ,'account_status','payment_status', 'search_value','client_type')) ->links('basic.pagination') }}
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +
          +            </div>
          +        </div>
          +    </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        const multipleClientDelete = () => {
          +            let action = 'DELETE_MULTIPLE_CLIENT';
          +            let checkedData = $("[name='checkedBoxClient']");
          +            let clientId = [];
          +            for (let checkbox of checkedData) {
          +                if (checkbox.checked)
          +                    clientId.push(checkbox.value);
          +            }
          +            if (clientId.length > 0) {
          +                clientDelete(clientId,action);
          +            }
          +        }
          +
          +        const clientDelete = (userData,action) => {
          +            let html_content = `<h4>Are you sure you want to delete client?</h4>`;
          +            const swalresponse = common_helper.swalAleart(html_content, 'warning', 450, true, '', true, true, 'Yes');
          +            swalresponse.then(async function (result) {
          +                if (result.isConfirmed) {
          +                    let response = await common_helper.globalAjaxRequest('{{route('admin.ajax.process')}}', 'POST', {
          +                        action: action,
          +                        userData: userData,
          +                        _token: "{{ csrf_token() }}"
          +                    });
          +                    if (response.status) {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450,closeOnConfirm: true});
          +                        window.location = `{{route('get.clients')}}`;
          +                    } else {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450,closeOnConfirm: true});
          +                    }
          +                }
          +            })
          +        }
          +
          +        const checkedornot = (e) => {
          +
          +            let allData = $("[name='checkedBoxClient']");
          +            let checkedData = $("[name='checkedBoxClient']:checked");
          +            let allChecked = false;
          +            let alldelete = false;
          +
          +            if(allData.length === checkedData.length){
          +                allChecked = true;
          +            }
          +
          +            if(checkedData.length === 0){
          +                alldelete = true;
          +            }
          +
          +            $("[name='allChecked']").prop('checked', allChecked);
          +
          +            $('#btnDeleteMultipleClient').prop('disabled', alldelete);
          +
          +        }
          +
          +        const paymentStatusOnChange = (e) => {
          +            let status = $('#payment_status').val();
          +
          +        }
          +    </script>
          +
          +@endpush
          diff --git a/resources/views/client/manual_client_create.blade.php b/resources/views/client/manual_client_create.blade.php
          new file mode 100644
          index 0000000..143a0ef
          --- /dev/null
          +++ b/resources/views/client/manual_client_create.blade.php
          @@ -0,0 +1,449 @@
          +@extends('layouts.admin')
          +@section('content')
          +<style>
          +    .d-none{
          +        display: none;
          +    }
          +</style>
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left"> Client Registration</h3>
          +                        @if(isShowContent('get.clients'))
          +                            <a  href="{{route('get.clients')}}" class="btn btn2 btn-success btn-flat pull-right">
          +                                <i class="fa fa-list" aria-hidden="true"></i>
          +                                Client List
          +                            </a>
          +                        @endif
          +                    </div>
          +                </div>
          +
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('client.insert')}}" id="client_form" autocomplete="off"
          +                                      class="input-form-section">
          +                                    @csrf
          +                                <div class="x_content">
          +                                    <div class="col-md-12">
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="firstname">First Name</label>
          +                                                        <input class="form-control" name="first_name" type="text" placeholder=" First Name" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Last Name">Last Name</label>
          +                                                        <input class="form-control" name="last_name" type="text" placeholder=" Last Name">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="dob">Email</label>
          +                                                    <input class="form-control" name="email"
          +                                                           type="text" placeholder=" Email" >
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="dob">Password</label>
          +                                                    <div class="input-group" id="manage_client_show_hide_password">
          +                                                        <input class="form-control"  name="password"
          +                                                               type="password" placeholder=" Password">
          +                                                        <div class="input-group-addon">
          +                                                            <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Phone">Phone</label>
          +                                                        <input class="form-control" name="phone" type="text" placeholder=" Phone Number">
          +                                                    </div>
          +                                                </div>
          +
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Street Number">Street Number</label>
          +                                                        <input class="form-control" name="street_no" type="text" placeholder=" street No">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="Street Name">Street Name</label>
          +                                                        <input class="form-control" name="street_name" type="text" placeholder=" Street Name">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="City">City</label>
          +                                                        <input class="form-control" name="city" type="text" placeholder=" City" >
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="State">State</label>
          +                                                        <input class="form-control" name="state" type="text" placeholder=" State" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="zip_code">Zip</label>
          +                                                        <input class="form-control" name="zip_code" type="text" placeholder=" Zip Code">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12" id="user_access_date_div">
          +                                                <div class="form-group">
          +                                                    <label for="month">Free Access Date</label>
          +                                                    <input class="form-control" name="user_access_date" id="user_access_date" type="text" placeholder="mm/dd/yyyy">
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +
          +                                            <div class="row">
          +                                                <div class="form-group col-md-6 col-xs-12 text-left">
          +                                                    <input class="form-check-input" type="checkbox" name="make_payment"
          +                                                           value="1" id="make_payment">
          +                                                    <label class="form-check-label" >
          +                                                        Make Payment
          +                                                    </label>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row d-none" id="card_info" >
          +
          +                                            <div class="col-md-12">
          +                                                <div class="row">
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label for="dob">Date of Birth</label>
          +                                                            <input class="form-control" name="birth_date" id="birth_date" type="text" maxlength="10" onkeyup="birthDateCompleted()" placeholder="mm/dd/yyyy" >
          +                                                        </div>
          +                                                    </div>
          +
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label for="ssn">Social Security Number</label>
          +                                                            <input class="form-control" name="ssn" maxlength="4"
          +                                                                   type="text" placeholder="last 4 digit of ssn">
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="row">
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label for="dob">Payment Date</label>
          +                                                            <input class="form-control" name="payment_date" id="payment_date" type="text" maxlength="10" onkeyup="paymentDateCompleted()" placeholder="mm/dd/yyyy" >
          +                                                        </div>
          +                                                    </div>
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label for="">Source Type</label>
          +                                                            @php
          +                                                                $source_types = config('constant.sourceType');
          +                                                            @endphp
          +                                                            <select name="source_type"  class="form-control">
          +                                                                @foreach($source_types as  $key=>$value)
          +                                                                    <option value="{{$value}}"> {{$key}}</option>
          +                                                                @endforeach
          +                                                            </select>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="card_number">Card Number</label>
          +                                                        <input class="form-control" name="card_number" type="text" placeholder="e.g, 4111111111111111" >
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="expiry">Expiry</label>
          +                                                        <input class="form-control" name="expiry" type="text" maxlength="5" onkeyup="expiryDateCompleted()" placeholder="e.g, DD/YY" >
          +                                                    </div>
          +                                                </div>
          +                                                </div>
          +                                            </div>
          +
          +                                        </div>
          +                                    </div>
          +
          +                                    <div class="col-sm-12 c" style="margin-top: 10px; text-align: center; ">
          +                                        <input class="btn btn-success btn2" type="submit" onclick="return client_form_submit(this)" value="Save Changes">
          +                                    </div>
          +
          +                                </div>
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +    <div class="modal fade" id="common_confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +        <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <h4 class="mb-2 text-center" style="color: red" id="common_message_text">
          +
          +                    </h4>
          +                </div>
          +                <div class="modal-footer" style="text-align: center">
          +                    <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +
          +@push('script')
          +    <script>
          +
          +        $(function(){
          +           common_helper.datePicker('#user_access_date','mm/dd/yyyy',false,new Date(new Date().setDate(new Date().getDate() + 1)),null);
          +            common_helper.datePicker('#birth_date','mm/dd/yyyy',true,null);
          +            common_helper.datePicker('#payment_date','mm/dd/yyyy',true,null);
          +
          +        });
          +
          +        $("#manage_client_show_hide_password a").on('click', function(event) {
          +            common_helper.globalPasswordView('#manage_client_show_hide_password',event);
          +        });
          +
          +        const birthDateCompleted=()=>{
          +            let birth_date=$("[name='birth_date']").val();
          +            if(birth_date.length===2){
          +                birth_date+='/';
          +            }
          +            else if(birth_date.length===5){
          +               birth_date+='/';
          +            }
          +            $("[name='birth_date']").val(birth_date);
          +        }
          +
          +        const expiryDateCompleted=()=>{
          +            let expiry_date=$("[name='expiry']").val();
          +            if(expiry_date.length===2){
          +                expiry_date+='/';
          +            }
          +            $("[name='expiry']").val(expiry_date);
          +        }
          +
          +        const paymentDateCompleted=()=>{
          +            let pay_date=$("[name='payment_date']").val();
          +            if(pay_date.length===2){
          +                pay_date+='/';
          +            }
          +            else if(pay_date.length===5){
          +                pay_date+='/';
          +            }
          +            $("[name='payment_date']").val(pay_date);
          +        }
          +
          +        const client_form_submit =(e)=>{
          +
          +           var data = $('#make_payment').prop("checked");
          +
          +            if(data) {
          +                $('#client_form').validate({
          +                    rules: {
          +                        'first_name': 'required',
          +                        'last_name': 'required',
          +                        'email' : 'required',
          +                        'password' : 'required',
          +                        'street_no' : 'required',
          +                        'street_name' : 'required',
          +                        'city' : 'required',
          +                        'state' : 'required',
          +                        'zip_code' : 'required',
          +                        'phone' : 'required',
          +                        'birth_date': 'required',
          +                        'ssn' : 'required',
          +                        'payment_date' : 'required',
          +                        'source_type' : 'required',
          +                        'card_number' : 'required',
          +                        'expiry' : 'required',
          +
          +                    },
          +                    messages: {
          +                        'first_name': {
          +                            required: "Please enter  first name"
          +                        },
          +                        'last_name': {
          +                            required: "Please enter  last name"
          +                        }, 'email': {
          +                            required: "Please enter  email"
          +                        },  'password': {
          +                            required: "Please enter password"
          +                        },
          +                        'street_no': {
          +                            required: "Please enter  street number"
          +                        },
          +                        'street_name': {
          +                            required: "Please enter  street name"
          +                        },
          +                        'state': {
          +                            required: "Please enter state"
          +                        },
          +                        'city': {
          +                            required: "Please enter  city"
          +                        },
          +                        'zip_code': {
          +                            required: "Please enter  zip code"
          +                        },
          +                        'phone': {
          +                            required: "Please enter  phone number"
          +                        },
          +                        'birth_date': {
          +                            required: "Please enter  birth date",
          +                        },
          +                        'ssn': {
          +                            required: "Please enter  ssn"
          +                        },
          +                        'payment_date': {
          +                            required: "Please enter Payment Date"
          +                        },
          +                        'source_type': {
          +                            required: "Please enter source type"
          +                        },
          +                        'card_number' :  {
          +                            required: "Please enter valid card number"
          +                        },
          +                        'expiry' :  {
          +                            required: "Please enter expiry date"
          +                        },
          +
          +                    },
          +                    highlight: function (element) {
          +                        $(element).parent().addClass("has-error");
          +                    },
          +                    // submitHandler: function (form) {
          +                    //     form.submit();
          +                    // }
          +                });
          +                if($('#client_form').valid()) {
          +                    let url = '{{ route('admin.ajax.get.process') }}';
          +                    let email = $('#client_form').find('input[name=email]').val();
          +                    let password = $('[name="password"]').val();
          +                    let source_type = $('[name="source_type"]').val();
          +                    let ssn = $('[name="ssn"]').val();
          +                    let data = {
          +                        action: 'GET_SUBSCRIPTION_STATUS_CREDIT_REPORT_PROVIDER',
          +                        email: email,
          +                        password: password,
          +                        source_type: source_type,
          +                        ssn: ssn
          +                    };
          +                    common_helper.globalAjaxRequestAsync(url, 'get', data, callbackfromreportprovider);
          +                }
          +                return false;
          +            }else {
          +                $('#client_form').validate({
          +                    rules: {
          +                        'first_name': 'required',
          +                        'last_name': 'required',
          +                        'email' : 'required',
          +                        'password' : 'required',
          +                        'street_no' : 'required',
          +                        'street_name' : 'required',
          +                        'city' : 'required',
          +                        'state' : 'required',
          +                        'zip_code' : 'required',
          +                        'phone' : 'required',
          +                        'user_access_date' : 'required',
          +                    },
          +                    messages: {
          +                        'first_name': {
          +                            required: "Please enter  first name"
          +                        },
          +                        'last_name': {
          +                            required: "Please enter  last name"
          +                        }, 'email': {
          +                            required: "Please enter  email"
          +                        },  'password': {
          +                            required: "Please enter password"
          +                        },
          +                        'street_no': {
          +                            required: "Please enter  street number"
          +                        },
          +                        'street_name': {
          +                            required: "Please enter  street name"
          +                        },
          +                        'state': {
          +                            required: "Please enter state"
          +                        },
          +                        'city': {
          +                            required: "Please enter  city"
          +                        },
          +                        'zip_code': {
          +                            required: "Please enter  zip code"
          +                        },
          +                        'phone': {
          +                            required: "Please enter  phone number"
          +                        },
          +                        'user_access_date': {
          +                            required: "Please enter last access date"
          +                        },
          +
          +                    },
          +                    highlight: function (element) {
          +                        $(element).parent().addClass("has-error");
          +                    },
          +                    submitHandler: function (form) {
          +                        form.submit();
          +                    }
          +                });
          +            }
          +        };
          +
          +        const callbackfromreportprovider =(response)=>{
          +
          +            if(response.status) {
          +                $('#client_form').submit();
          +            }else {
          +                let html = response.message;
          +                $('#common_message_text').text(html);
          +                $('#common_confirmation_modal').modal('show');
          +            }
          +        }
          +
          +        $('#make_payment').change(function() {
          +
          +            if(this.checked) {
          +                $('#card_info').removeClass('d-none');
          +                $('#user_access_date_div').addClass('d-none');
          +
          +            }else {
          +                $('#card_info').addClass('d-none');
          +                $('#user_access_date_div').removeClass('d-none');
          +            }
          +
          +        });
          +
          +    </script>
          +@endpush
          diff --git a/resources/views/client/recurring_list.blade.php b/resources/views/client/recurring_list.blade.php
          new file mode 100644
          index 0000000..05839ff
          --- /dev/null
          +++ b/resources/views/client/recurring_list.blade.php
          @@ -0,0 +1,117 @@
          +@extends('layouts.admin')
          +
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <h1>Client Recurring List</h1>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <form action="{{route('recurring.data') }}" method="post">
          +                            @csrf
          +                        <div class="col-md-3 col-xs-12">
          +                            <div class="form-group">
          +                                <label>Client Name</label>
          +                                <input id="clientName"
          +                                       type="text"
          +                                       class="form-control" name="clientName" autocomplete="off">
          +
          +                            </div>
          +                        </div>
          +                        <div class="col-md-3 col-xs-12">
          +                            <div class="form-group">
          +                                <label>From Date</label>
          +                                <input id="fdate"
          +                                       type="text"
          +                                       class="form-control " name="fdate" autocomplete="off">
          +                            </div>
          +                        </div>
          +                        <div class="col-md-3 col-xs-12">
          +                            <div class="form-group">
          +                                <label>To Date</label>
          +                                <input id="tdate"
          +                                       type="text"
          +                                       class="form-control" name="tdate" autocomplete="off">
          +                            </div>
          +                        </div>
          +                        <div class="col-md-3 col-xs-12">
          +                            <div class="form-group" style="margin-top: 25px;">
          +                               <button class="btn btn-outline-info" type="submit">Search</button>
          +                            </div>
          +                        </div>
          +                        </form>
          +                    </div>
          +                    <hr/>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +                                    <table id="datatable-responsive" class="table table-striped table-hover table-responsive dt-responsive nowrap" cellspacing="0" width="100%">
          +                                        <thead>
          +                                        <tr>
          +                                            <th>Client Id</th>
          +                                            <th>Client Name</th>
          +                                            <th>Email</th>
          +                                            <th>Subscription Id</th>
          +                                            <th>Transaction Status</th>
          +                                            <th>Transaction Id</th>
          +                                            <th>Plan Amount</th>
          +                                            <th>Month Frequency</th>
          +                                            <th>Day Of Month</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($recurringInfo))
          +                                            @foreach ($recurringInfo as $key => $obj)
          +                                                @php
          +                                                    if(($obj->transaction_status==config('constant.API_SUCCESS_CODE')))
          +                                                        {
          +                                                            $label='Success';
          +                                                        }
          +                                                    else{
          +                                                         $label='Fail';
          +                                                    }
          +                                                @endphp
          +                                                <tr class="tr-height">
          +                                                    <td>{{$obj->user_id}}</td>
          +                                                    <td>{{$obj->name}}</td>
          +                                                    <td>{{ $obj->email}}</td>
          +                                                    <td>{{ $obj->subscription_id }}</td>
          +                                                    <td>{{ $label }}</td>
          +                                                    <td>{{ $obj->transaction_id}}</td>
          +                                                    <td>{{ $obj->plan_amount }}</td>
          +                                                    <td>{{ $obj->month_frequency}}</td>
          +                                                    <td>{{ $obj->day_of_month }}</td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +                                    <div id="pagination_panel">
          +                                        {{ $recurringInfo->links('basic.pagination') }}
          +
          +                                    </div>
          +                                </div>
          +
          +
          +                            </div>
          +                        </div>
          +                    </div>
          +
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +            $('#fdate,#tdate').val(common_helper.formatDate());
          +        })
          +        common_helper.datePicker('#fdate');
          +        common_helper.datePicker('#tdate');
          +    </script>
          +@endpush
          diff --git a/resources/views/client/view.blade.php b/resources/views/client/view.blade.php
          new file mode 100644
          index 0000000..c57869a
          --- /dev/null
          +++ b/resources/views/client/view.blade.php
          @@ -0,0 +1,504 @@
          +@extends('layouts.admin')
          +@section('content')
          +    <style>
          +        .d-none{
          +            display: none;
          +        }
          +    </style>
          +    @php
          +        $user_access_end_date = '';
          +        if(!empty($user['data']['user_access_end_date'])){
          +            $user_access_end_date  = getStringToDate($user['data']['user_access_end_date'],'m/d/Y');
          +          }
          +
          +        $inputData['subscription_status'] = $user['data']['subscription_status'];
          +        $inputData['status'] = $user['data']['status'];
          +        $inputData['is_import'] = $user['data']['is_import'];
          +        $waves = clientWaves(config('constant.MAX_WAVE'));
          +    @endphp
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Account Info Of {{$user['data']['first_name'].' '.$user['data']['last_name']}}
          +
          +                        </h3>
          +
          +                        <form method="post" action="{{route('update.client.id')}}"
          +                              autocomplete="off"
          +                              class="input-form-section" id="client_activate_form">
          +                            @csrf
          +                            <input type="hidden" name="client_id" value="{{$user['data']['id']}}">
          +
          +                            @if(getEnableImportReset($inputData))
          +
          +                                <div class="pull-right">
          +                                    @if($user['data']['is_free'] == 1 )<label style="color: red">Free Member</label> @endif
          +                                    <input type="hidden" name="type" value="2">
          +                                    <input class="btn btn-success btn2" type="submit" onclick="return client_activate(this)" value="Reset Credit Report">
          +                                </div>
          +                            @endif
          +                        </form>
          +                    </div>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('update.client')}}" id="client_form"
          +                                      autocomplete="off"
          +                                      class="input-form-section">
          +                                    @csrf
          +                                    <input type="hidden" name="id" value="{{$user['data']['id']}}">
          +                                    <input type="hidden" name="previous_email" value="{{$user['data']['email']}}">
          +                                    <div class="x_content">
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="firstname">First Name</label>
          +                                                    <input class="form-control" name="first_name" type="text"
          +                                                           value="{{$user['data']['first_name']}}" id="firstname">
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="Last Name">Last Name</label>
          +                                                    <input class="form-control" name="last_name" type="text"
          +                                                           value="{{$user['data']['last_name']}}" id="lastname">
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +
          +
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="Phone">Phone</label>
          +                                                    <input class="form-control" name="phone" type="text"
          +                                                           value="{{$user['data']['phone']}}" id="phone">
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-6  col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="Street Number">Street Number</label>
          +                                                    <input class="form-control" name="street_no" type="text"
          +                                                           value="{{$user['data']['street_no']}}" id="street_no">
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="Street Name">Street Name</label>
          +                                                    <input class="form-control" name="street_name" type="text"
          +                                                           value="{{$user['data']['street_name']}}"
          +                                                           id="street_name">
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="City">City</label>
          +                                                    <input class="form-control" name="city" type="text"
          +                                                           value="{{$user['data']['city']}}" id="city">
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="State">State</label>
          +                                                    <input class="form-control" name="state" type="text"
          +                                                           value="{{$user['data']['state']}}" id="state">
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="zip">Zip</label>
          +                                                    <input class="form-control" name="zip_code" type="text"
          +                                                           value="{{$user['data']['zip_code']}}" id="zip_code">
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6  col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="email">Email</label>
          +                                                    <input class="form-control" name="email"
          +                                                           type="text"
          +                                                           value="{{$user['data']['email']}}" id="email">
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="password">Password</label>
          +                                                    <div class="input-group" id="client_show_hide_password">
          +                                                        <input class="form-control" name="password"
          +                                                               type="password"
          +                                                               value="{{customDecrypt($user['data']['password'])}}"
          +                                                               id="password">
          +                                                        <div class="input-group-addon">
          +                                                            <a href=""><i class="fa fa-eye-slash"
          +                                                                          aria-hidden="true"></i></a>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6  col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="Status">Status</label>
          +
          +                                                    <select name="status" class="form-control">
          +
          +                                                        <option
          +                                                            value="1" {{ $user['data']['status'] == 1 ? 'selected' : '' }}>
          +                                                            Active
          +                                                        </option>
          +                                                        <option
          +                                                            value="2" {{ $user['data']['status'] == 2 ? 'selected' : '' }}>
          +                                                            Inactive
          +                                                        </option>
          +                                                        <option
          +                                                            value="2" {{ $user['data']['subscription_status'] == 2 ? 'selected' : '' }}>
          +                                                            Canceled
          +                                                        </option>
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label for="month">Last Access Date</label>
          +                                                    <input class="form-control" name="user_access_end_date" disabled value="{{$user['data']['user_access_end_date']}}" type="text" >
          +                                                </div>
          +                                            </div>
          +
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-6 col-xs-12" id="user_access_date_div">
          +                                                <div class="form-group">
          +                                                    <label for="month">Free Access Date</label>
          +                                                    <input class="form-control" name="user_access_date" readonly  id="user_access_end_date" type="text" value="{{$user_access_end_date}}" placeholder="mm/dd/yyyy">
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-6 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <div class="form-group col-md-6 col-xs-12 text-left" >
          +                                                        <input class="form-check-input" type="checkbox" name="change_wave"
          +                                                               value="1" id="change_wave">
          +                                                        <label class="form-check-label" data-toggle="tooltip" data-placement="right" title="">
          +                                                            Unlock Wave
          +                                                        </label>
          +                                                    </div>
          +                                                    <select name="wave" class="form-control"  id="wave">
          +                                                        @foreach($waves as $key => $value)
          +                                                            @php $select = ($value['key'] == $user['data']['wave']) ? 'selected': ''; @endphp
          +                                                            <option value="{{$value['key']}}" {{$select}}> {{$value['text']}} </option>
          +                                                        @endforeach
          +
          +                                                    </select>
          +                                                    {{--                                                    <input class="form-control" name="wave" type="text" value="{{$user['data']['wave']}}" >--}}
          +
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="form-group col-md-6 col-xs-12 text-left" >
          +                                                <input class="form-check-input" type="checkbox" name="report_provider_info"
          +                                                       value="1" id="report_provider_info">
          +                                                <label class="form-check-label" data-toggle="tooltip" data-placement="right" title="">
          +                                                    Credit Report Provider Information
          +                                                </label>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row" id="credit_report_info">
          +                                         <div class="col-md-12">
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="birth_date">Date of Birth</label>
          +                                                        <input class="form-control" name="birth_date" id="birth_date" type="text"
          +                                                               value="{{$user['data']['birth_date']}}"  placeholder="mm/dd/yyyy">
          +                                                    </div>
          +                                                </div>
          +
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="ssn">Social Security Number</label>
          +                                                        <input class="form-control" name="ssn"
          +                                                               type="text" maxlength="4"
          +                                                               value="{{$user['data']['ssn']}}"
          +                                                               id="ssn">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="">Source Type</label>
          +                                                        @php
          +                                                            $source_types = config('constant.sourceType');
          +                                                        @endphp
          +                                                        <select name="source_type"  class="form-control">
          +                                                            @foreach($source_types as  $key=>$value)
          +                                                                <option value="{{$value}}" {{$user['data']['credit_report_company_type'] == $value ? 'selected':''}}> {{$key}}</option>
          +                                                            @endforeach
          +                                                        </select>
          +                                                    </div>
          +                                                </div>
          +
          +                                                @if(isSupport())
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label for="month">Previous Import Date</label>
          +                                                            <input class="form-control" name="last_import_date" readonly  id="last_import_date" type="text" value="{{$user['data']['last_import_date']}}" placeholder="mm/dd/yyyy">
          +                                                        </div>
          +                                                    </div>
          +                                                @endif
          +                                            </div>
          +                                         </div>
          +                                        </div>
          +
          +
          +
          +                                    </div>
          +                                    @if(isShowContent('update.client'))
          +                                        <div class="col-sm-12 center" style="margin-top: 10px; text-align: center; ">
          +                                            <input class="btn btn-success btn2" type="submit"  onclick="return client_form_submit(this)"   value="Save Changes">
          +                                        </div>
          +                                    @endif
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +    <div class="modal fade" id="common_confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +        <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <h4 class="mb-2 text-center" style="color: red" id="common_message_text">
          +
          +                    </h4>
          +                </div>
          +                <div class="modal-footer" style="text-align: center">
          +                    <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +@push('script')
          +    <script>
          +
          +        $(document).ready(function() {
          +                common_helper.datePicker('#user_access_end_date','mm/dd/yyyy',false,new Date(new Date().setDate(new Date().getDate() + 1)),null);
          +                common_helper.datePicker('#birth_date','mm/dd/yyyy',true,null);
          +                common_helper.datePicker('#last_import_date','mm/dd/yyyy',true,null);
          +                $('#wave').prop('disabled', true);
          +
          +        });
          +
          +        const client_form_submit =(e)=>{
          +            var data = $('#report_provider_info').prop("checked");
          +
          +            if(data) {
          +                $('#client_form').validate({
          +
          +                    rules: {
          +                        'first_name': 'required',
          +                        'last_name': 'required',
          +                        'email': 'required',
          +                        'password': 'required',
          +                        'birth_date': 'required',
          +                        'street_no': 'required',
          +                        'street_name': 'required',
          +                        'city': 'required',
          +                        'state': 'required',
          +                        'zip_code': 'required',
          +                        'phone': 'required',
          +                        'ssn': {'required': true,'minlength':4,'maxlength':4},
          +                        'source_type': 'required',
          +                    },
          +
          +                    messages: {
          +                        'first_name': {
          +                            required: "Please enter  first name"
          +                        },
          +                        'last_name': {
          +                            required: "Please enter  last name"
          +                        }, 'email': {
          +                            required: "Please enter  email"
          +                        }, 'password': {
          +                            required: "Please enter password"
          +                        },
          +                        'birth_date': {
          +                            required: "Please enter  birth date",
          +                        },
          +                        'street_no': {
          +                            required: "Please enter  street number"
          +                        },
          +                        'street_name': {
          +                            required: "Please enter  street name"
          +                        },
          +                        'state': {
          +                            required: "Please enter state"
          +                        },
          +                        'city': {
          +                            required: "Please enter  city"
          +                        },
          +                        'zip_code': {
          +                            required: "Please enter  zip code"
          +                        },
          +                        'phone': {
          +                            required: "Please enter  phone number"
          +                        },
          +                        'ssn': {
          +                            required: "Please enter last 4 digit of your ssn",
          +                            minlength:"Please enter last 4 digit of your ssn",
          +                            maxlength:"Please enter last 4 digit of your ssn"
          +                        },
          +                        'source_type': {
          +                            required: "Please enter source type"
          +                        },
          +
          +                    },
          +
          +                    highlight: function (element) {
          +                        $(element).parent().addClass("has-error");
          +                    },
          +
          +                });
          +                if ($('#client_form').valid()) {
          +                    let url = '{{ route('admin.ajax.get.process') }}';
          +                    let previous_email = $('[name="previous_email"]').val();
          +                    let email = $('#client_form').find('input[name=email]').val();
          +                    let password = $('[name="password"]').val();
          +                    let source_type = $('[name="source_type"]').val();
          +                    let ssn = $('[name="ssn"]').val();
          +                    let data = {
          +                        action: 'GET_SUBSCRIPTION_STATUS_CREDIT_REPORT_PROVIDER',
          +                        email: email,
          +                        password: password,
          +                        previous_email: previous_email,
          +                        source_type: source_type,
          +                        ssn: ssn
          +                    };
          +                    common_helper.globalAjaxRequestAsync(url, 'get', data, callbackfromreportprovider);
          +                }
          +                return false;
          +            }else {
          +                $('#client_form').validate({
          +
          +                    rules: {
          +                        'first_name': 'required',
          +                        'last_name': 'required',
          +                        'email': 'required',
          +                        'password': 'required',
          +                        'street_no': 'required',
          +                        'street_name': 'required',
          +                        'city': 'required',
          +                        'state': 'required',
          +                        'zip_code': 'required',
          +                        'phone': 'required'
          +                    },
          +
          +                    messages: {
          +                        'first_name': {
          +                            required: "Please enter  first name"
          +                        },
          +                        'last_name': {
          +                            required: "Please enter  last name"
          +                        }, 'email': {
          +                            required: "Please enter  email"
          +                        }, 'password': {
          +                            required: "Please enter password"
          +                        },
          +                        'street_no': {
          +                            required: "Please enter  street number"
          +                        },
          +                        'street_name': {
          +                            required: "Please enter  street name"
          +                        },
          +                        'state': {
          +                            required: "Please enter state"
          +                        },
          +                        'city': {
          +                            required: "Please enter  city"
          +                        },
          +                        'zip_code': {
          +                            required: "Please enter  zip code"
          +                        },
          +                        'phone': {
          +                            required: "Please enter  phone number"
          +                        },
          +                    },
          +
          +                    highlight: function (element) {
          +                        $(element).parent().addClass("has-error");
          +                    },
          +                    submitHandler: function (form) {
          +                        form.submit();
          +                    }
          +
          +                });
          +            }
          +        };
          +
          +        const callbackfromreportprovider =(response)=>{
          +
          +                if(response.status) {
          +                    $('#client_form').submit();
          +                }else {
          +                    let html = response.message;
          +                    $('#common_message_text').text(html);
          +                    $('#common_confirmation_modal').modal('show');
          +                }
          +        }
          +
          +        $("#client_show_hide_password a").on('click', function (event) {
          +            common_helper.globalPasswordView('#client_show_hide_password', event);
          +        })
          +
          +        const client_activate =(e) => {
          +
          +            let type = $('#client_activate_form').find('input[name=type]').val();
          +
          +            let html_content = `<h4>Are you sure you want to activate client?</h4>`;
          +
          +            if(type === '2'){
          +                html_content = `<h4>Are you sure you want to reset credit report?</h4>`;
          +            }
          +
          +            const swalresponse = common_helper.swalAleart(html_content, 'warning', 450, true, '', true, true, 'Yes');
          +
          +            swalresponse.then(function (result) {
          +
          +                if (result.isConfirmed) {
          +                    $('#client_activate_form').submit();
          +                }
          +
          +            })
          +
          +            return false;
          +        }
          +
          +        $("#change_wave").on('click', function (event) {
          +
          +            $('#wave').prop('disabled', !this.checked);
          +        })
          +
          +    </script>
          +@endpush
          diff --git a/resources/views/email/account_closing_admin_letter.blade.php b/resources/views/email/account_closing_admin_letter.blade.php
          new file mode 100644
          index 0000000..809d6d3
          --- /dev/null
          +++ b/resources/views/email/account_closing_admin_letter.blade.php
          @@ -0,0 +1,26 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body style="margin-left: 20px">
          +<p style="margin-top: 5px"> Hello Admin ,</p>
          +<br/><br/>
          +<p> User account of name {{$data['email_body']}} has been canceled from Credit Zombies credit report system . </p>
          +
          +<br/><br/>
          +<p>
          +    Sincerely,<br/><br/>
          +
          +    Customer Support Team <br/>
          +
          +    Credit Zombies/ClickLetters LLC
          +</p>
          +</body>
          +</html>
          +
          +
          diff --git a/resources/views/email/account_closing_letter.blade.php b/resources/views/email/account_closing_letter.blade.php
          new file mode 100644
          index 0000000..590c80d
          --- /dev/null
          +++ b/resources/views/email/account_closing_letter.blade.php
          @@ -0,0 +1,33 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body style="margin-left: 20px">
          +<p style="margin-top: 5px"> Hello {{$data['email_body']}} ,</p>
          +<br/><br/>
          +<p> Your account for Credit Zombies credit report system was canceled. </p>
          +<br/><br/>
          +<p> If this was made by someone other than you please contact support at : support@clickletters.com</p>
          +
          +<br/><br/>
          +<p> If you need further assistance please let us know.</p>
          +<br/><br/>
          +<p> CreditZombies Owned by Clickletters LLC</p>
          +<br/><br/>
          +<p>
          +    Sincerely,<br/><br/>
          +
          +    Customer Support Team <br/>
          +
          +    Credit Zombies/ClickLetters LLC
          +
          +</p>
          +</body>
          +</html>
          +
          +
          diff --git a/resources/views/email/letter.blade.php b/resources/views/email/letter.blade.php
          new file mode 100644
          index 0000000..fca73ba
          --- /dev/null
          +++ b/resources/views/email/letter.blade.php
          @@ -0,0 +1,19 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body>
          +    <p>Hello, {{$data['email_body']}}.</p>
          +    <br/>
          +    <br/>
          +    <p>
          +        Regards,<br/>
          +        Creditzombies.com
          +    </p>
          +</body>
          +</html>
          diff --git a/resources/views/email/payment_failed_letter.blade.php b/resources/views/email/payment_failed_letter.blade.php
          new file mode 100644
          index 0000000..fb6c2b4
          --- /dev/null
          +++ b/resources/views/email/payment_failed_letter.blade.php
          @@ -0,0 +1,25 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body style="margin-left: 20px">
          +<p style="margin-top: 5px">Hello {{$data['email_body']}} ,We just tried to process your credit report payment for Credit Zombies. You should see a charge after you update your card on file for clickletters LLC. Please update your card on file to process your payment today, to prevent any interruption in your services moving forward.</p>
          +<br/>
          +<br/>
          +<p>If you have any questions please send and email to support@clickletters.com. </p>
          +<br/>
          +<p>
          +    Sincerely,<br/>
          +
          +    Customer Support <br/>
          +
          +    Credit Zombies/ClickLetters LLC
          +</p>
          +</body>
          +</html>
          +
          diff --git a/resources/views/email/payment_success_letter.blade.php b/resources/views/email/payment_success_letter.blade.php
          new file mode 100644
          index 0000000..5969f7b
          --- /dev/null
          +++ b/resources/views/email/payment_success_letter.blade.php
          @@ -0,0 +1,43 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body style="margin-left: 20px">
          +<p style="margin-top: 5px"> Hello {{$data['email_body']}} ,</p>
          +<br/><br/>
          +<p> Your purchase for Credit Zombies credit report system was just made. You will see a purchase on your bank statement for $24.97 from ClickLetters LLC.</p>
          +<br/><br/>
          +<p> If this was made buy someone other than you please contact support at : support@clickletters.com</p>
          +<br/><br/>
          +<p> Or call us at 614-547-6222</p>
          +<br/><br/>
          +<p> Between 9 am to 6pm eastern time</p>
          +<br/><br/>
          +<p> Please save this email for future use.</p>
          +<br/><br/>
          +<p> Step 1.</p>
          +<br/><br/>
          +<p> Login to your software to set up and get started</p>
          +<br/><br/>
          +<p> Here is the link: <a href="https://members.creditzombies.com/login">https://members.creditzombies.com/login</a></p>
          +<br/><br/>
          +<p> If you need further assistance please let us know, and thank you for choosing Credit Zombies</p>
          +<br/><br/>
          +<p> CreditZombies Owned by Clickletters LLC</p>
          +<br/><br/>
          +<p>
          +    Sincerely,<br/><br/>
          +
          +    Customer Support Team <br/>
          +
          +    Credit Zombies/ClickLetters LLC
          +</p>
          +</body>
          +</html>
          +
          +
          diff --git a/resources/views/email/reminderletter.blade.php b/resources/views/email/reminderletter.blade.php
          new file mode 100644
          index 0000000..0756331
          --- /dev/null
          +++ b/resources/views/email/reminderletter.blade.php
          @@ -0,0 +1,20 @@
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <title>Creditzombies</title>
          +</head>
          +<body>
          +    <p>Hello, </p>
          +    <br/>
          +    <p>{{$data['email_body']}}.</p>
          +    <br/>
          +    <p>
          +        Regards,<br/>
          +        members.creditzombies.com
          +    </p>
          +</body>
          +</html>
          diff --git a/resources/views/employee/employee_info.blade.php b/resources/views/employee/employee_info.blade.php
          new file mode 100644
          index 0000000..e54922b
          --- /dev/null
          +++ b/resources/views/employee/employee_info.blade.php
          @@ -0,0 +1,139 @@
          +@extends('layouts.admin')
          +@section('content')
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="panel-heading">
          +                            <div class="row" style="padding-left: 25px;padding-right: 15px">
          +                                <h3 class="pull-left">Employee Registration</h3>
          +                                @if(isShowContent('employee.list'))
          +                                    <a  href="{{route('employee.list')}}" class="btn btn-success btn-flat pull-right">
          +                                        <i class="fa fa-user" aria-hidden="true"></i>
          +                                         Employee List
          +                                    </a>
          +                                @endif
          +                            </div>
          +                        </div>
          +
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('insert.employee')}}" id="client_form" autocomplete="on" enctype=multipart/form-data class="input-form-section">
          +                                    @csrf
          +                                <div class="x_content">
          +                                    <div class="col-md-12">
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="first_name">First Name</label>
          +                                                        <input class="form-control" name="first_name" type="text"
          +                                                              id="firstname">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="last_name">Last Name</label>
          +                                                        <input class="form-control" name="last_name" type="text">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="email">Email</label>
          +                                                        <input class="form-control" name="email" value=""
          +                                                               type="text" autocomplete="on">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="password">Password</label>
          +                                                        <div class="input-group" id="employee_registration_show_hide_password">
          +                                                            <input class="form-control"  name="password"
          +                                                                   type="password"
          +                                                                   id="password">
          +                                                            <div class="input-group-addon">
          +                                                                <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                                                            </div>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12" style="margin-left: 10px">
          +                                                    @include('partials.permission',['moduleSubmoduleAssoc'=>$moduleSubmoduleAssoc])
          +                                                </div>
          +                                            </div>
          +                                    </div>
          +
          +                                    <div class="col-sm-12 center" style="margin-top: 10px; text-align: center; ">
          +                                        @if(isShowContent('insert.employee'))
          +                                        <input class="btn btn-success btn2" type="submit" value="Save Changes">
          +                                        @endif
          +                                    </div>
          +
          +                                </div>
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +
          +@push('script')
          +    <script src="{{asset('js/jsvalidate/validate-latest.js')}}"></script>
          +    <script>
          +        $('#client_form').validate({
          +            rules: {
          +                'first_name': 'required',
          +                'last_name': 'required',
          +                'email': { 'required':true,'email':true},
          +                'password': 'required',
          +                'userRole': 'required',
          +            },
          +            messages: {
          +
          +                'first_name': {
          +                    required: "Please enter your first name"
          +                },
          +                'last_name': {
          +                    required: "Please enter your last name"
          +                },
          +                'email': {
          +                    required: "Please enter an email address",
          +                    email: "Please enter a valid email address"
          +                },
          +                'password': {
          +                    required: "Please enter password again",
          +                },
          +
          +            },
          +            highlight: function (element) {
          +                $(element).parent().addClass("has-error");
          +            },
          +            submitHandler: function (form) {
          +                form.submit();
          +            }
          +        });
          +        $('#employee_registration_show_hide_password a').on('click', function(event){
          +            common_helper.globalPasswordView('#employee_registration_show_hide_password',event);
          +        })
          +        const birthDateCompleted=()=>{
          +            let birth_date=$("[name='birth_date']").val();
          +            if(birth_date.length===2){
          +                birth_date+='/';
          +            }
          +            else if(birth_date.length===5){
          +               birth_date+='/';
          +            }
          +            $("[name='birth_date']").val(birth_date);
          +        }
          +    </script>
          +@endpush
          diff --git a/resources/views/employee/employee_info_edit.blade.php b/resources/views/employee/employee_info_edit.blade.php
          new file mode 100644
          index 0000000..24d2691
          --- /dev/null
          +++ b/resources/views/employee/employee_info_edit.blade.php
          @@ -0,0 +1,135 @@
          +@extends('layouts.admin')
          +@section('content')
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="panel-heading">
          +                            <div class="row" style="padding-left: 25px;padding-right: 15px">
          +                                <h3 class="pull-left">Information of {{$employee['first_name'].' '.$employee['last_name']}}</h3>
          +                                @if(isShowContent('employee.list'))
          +                                    <a  href="{{route('employee.list')}}" class="btn btn-success btn-flat pull-right">
          +                                        <i class="fa fa-list" aria-hidden="true"></i>
          +                                         Employee List
          +                                    </a>
          +                                @endif
          +                            </div>
          +                        </div>
          +
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <form method="post" action="{{route('update.employee')}}" id="employee_edit_form" autocomplete="on" enctype=multipart/form-data class="input-form-section">
          +                                    @csrf
          +                                    <input type="hidden" name="id" value="{{$employee['id']}}">
          +                                <div class="x_content">
          +                                    <div class="col-md-12">
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="first_name">First Name</label>
          +                                                        <input class="form-control"
          +                                                               name="first_name"
          +                                                               type="text"
          +                                                               value="{{$employee['first_name']}}"
          +                                                              id="firstname">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="last_name">Last Name</label>
          +                                                        <input class="form-control" name="last_name" value="{{$employee['last_name']}}" type="text">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="email">Email</label>
          +                                                        <input class="form-control" name="email" value="{{$employee['email']}}"
          +                                                               type="text" autocomplete="on">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="password">Password</label>
          +                                                        <div class="input-group" id="employee_edit_show_hide_password">
          +                                                            <input class="form-control"  name="password"
          +                                                                   type="password"
          +                                                                   value="{{customDecrypt($employee['password'])}}"
          +                                                                   id="password">
          +                                                            <div class="input-group-addon">
          +                                                                <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                                                            </div>
          +                                                        </div>
          +
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12" style="margin-left: 10px">
          +                                                    @include('partials.permission',['moduleSubmoduleAssoc'=>$moduleSubmoduleAssoc,'employee_permission'=>$employee_permission])
          +                                                </div>
          +                                            </div>
          +                                    </div>
          +
          +                                    <div class="col-sm-12 center" style="margin-top: 10px; text-align: center; ">
          +                                        @if(isShowContent('update.employee'))
          +                                        <input class="btn btn-success btn2" type="submit" value="Save Changes">
          +                                        @endif
          +                                    </div>
          +
          +                                </div>
          +                                </form>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +
          +@push('script')
          +    <script src="{{asset('js/jsvalidate/validate-latest.js')}}"></script>
          +    <script>
          +        $('#employee_edit_form').validate({
          +            rules: {
          +                'first_name': 'required',
          +                'last_name': 'required',
          +                'email': { 'required':true,'email':true},
          +                'password': 'required',
          +                'userRole': 'required',
          +            },
          +            messages: {
          +
          +                'first_name': {
          +                    required: "Please enter your first name"
          +                },
          +                'last_name': {
          +                    required: "Please enter your last name"
          +                },
          +                'email': {
          +                    required: "Please enter an email address",
          +                    email: "Please enter a valid email address"
          +                },
          +                'password': {
          +                    required: "Please enter password again",
          +                },
          +
          +            },
          +            highlight: function (element) {
          +                $(element).parent().addClass("has-error");
          +            },
          +            submitHandler: function (form) {
          +                form.submit();
          +            }
          +        });
          +        $('#employee_edit_show_hide_password a').on('click', function(event){
          +            common_helper.globalPasswordView('#employee_edit_show_hide_password',event);
          +        })
          +    </script>
          +@endpush
          diff --git a/resources/views/employee/employee_list.blade.php b/resources/views/employee/employee_list.blade.php
          new file mode 100644
          index 0000000..e613039
          --- /dev/null
          +++ b/resources/views/employee/employee_list.blade.php
          @@ -0,0 +1,204 @@
          +@extends('layouts.admin')
          +<style>
          +    #table-clients td {
          +        text-align: left !important;
          +        padding: 8px !important;
          +    }
          +
          +    #table-clients th {
          +        padding: 8px !important;
          +    }
          +
          +
          +</style>
          +@php
          +    $pageLimit = $searchData['pageLimit'];
          +    $search_value = $searchData['search_value'];
          +@endphp
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Employee List</h3>
          +                        @if(isShowContent('create.employee'))
          +                            <a  href="{{route('create.employee')}}" class="btn btn-success btn-flat pull-right">
          +                                <i class="fa fa-user" aria-hidden="true"></i>
          +                                Add Employee
          +                            </a>
          +                        @endif
          +                    </div>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +
          +                                    <form action="{{route('employee.list')}}" method="get" role="search">
          +                                        <div class="row">
          +                                        <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Show</label>
          +                                                <select name="pageLimit" id="pagination" class="form-control"
          +                                                        onchange="this.form.submit()">
          +                                                    <option value="10" @if($pageLimit == 10) selected @endif>10</option>
          +                                                    <option value="20" @if($pageLimit == 20) selected @endif>20</option>
          +                                                    <option value="50" @if($pageLimit == 50) selected @endif>50</option>
          +                                                    <option value="100" @if($pageLimit == 100) selected @endif>100</option>
          +                                                    <option value="500" @if($pageLimit == 500) selected @endif>500</option>
          +                                                </select>
          +                                                </div>
          +                                         </div>
          +                                        <div class="col-md-4 col-xs-12">
          +                                            <div class="form-group">
          +                                                <label>Employee Name/Email</label>
          +                                                <input id="search_value"
          +                                                       type="text"
          +                                                       value="{{$searchData['search_value']}}"
          +                                                       placeholder="Search By Name/Email"
          +                                                       class="form-control" name="search_value" autocomplete="off">
          +                                            </div>
          +                                        </div>
          +                                        <div class="col-md-2 col-xs-12">
          +                                            <div class="form-group" style="margin-top: 25px;">
          +                                                <button class="btn btn-outline-info"  style="width:100%" type="submit">Search</button>
          +                                            </div>
          +                                        </div>
          +
          +                                        </div>
          +                                        <div class="row">
          +                                            <div class="col-md-2">
          +                                                @if(isShowContent('admin.ajax.process'))
          +                                                    <button style="margin-top: 15px;" onclick="return multipleEmployeeDelete()" type="button"
          +                                                            class="btn btn-danger pull-left" style="margin-left: 10px"
          +                                                            id="btnDeleteMultipleEmployee" disabled>Delete Employee
          +                                                    </button>
          +                                                @endif
          +                                            </div>
          +                                        </div>
          +                                     </form>
          +                                <div class="table-responsive py-5">
          +                                    <table id="table-clients" class="table table-bordered table-hover">
          +                                        <thead>
          +                                        <tr>
          +                                            <th><input type="checkbox" name="allChecked" value="all"
          +                                                       onclick="common_helper.allChecked(this,'checkedBoxEmployee')"></th>
          +                                            <th>Employee Name</th>
          +                                            <th>Email</th>
          +                                            <th>Created At</th>
          +                                            <th>Actions</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($employees))
          +                                            @foreach ($employees as $key => $obj)
          +                                                @php
          +                                                    $employee_info = json_encode([$obj->id,$obj->email]);
          +                                                    $action = 'DELETE_EMPLOYEE';
          +                                                @endphp
          +                                                <tr class="tr-height">
          +                                                    <td style="text-align: center !important;"><input type="checkbox" name="checkedBoxEmployee"
          +                                                               value="{{$employee_info}}" onclick="checkedornot(this)"></td>
          +                                                    <td>{{$obj->first_name.' '.$obj->last_name}}</td>
          +                                                    <td>{{ $obj->email}}</td>
          +                                                    <td> {{ getStringToDateTime($obj->created_at,'m/d/Y h:i:s a') }} </td>
          +                                                    <td>
          +                                                        @if(isShowContent('get.employee.info'))
          +                                                            <a href="{{route('get.employee.info',$obj->id)}}"
          +                                                               class="btn btn-success" style="padding: 5px;"> <span
          +                                                                    class="glyphicon glyphicon-pencil" title="Edit"></span></a>
          +                                                        @endif
          +
          +                                                        @if(isShowContent('get.employee.info'))
          +                                                            <button onclick="return employeeDelete({{$employee_info}},'{{$action}}')"
          +                                                                    class="btn btn-danger" style="padding: 5px;"><span
          +                                                                    class="glyphicon glyphicon-trash" title="Delete"></span>
          +                                                            </button>
          +                                                        @endif
          +                                                    </td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +
          +                                </div>
          +                                <div id="pagination_panel">
          +                                    {{ $employees->appends(compact('pageLimit' , 'search_value')) ->links('basic.pagination') }}
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +
          +            </div>
          +        </div>
          +    </div>
          +    </div>
          +@endsection
          +@push('script')
          +    <script>
          +        const allEmployeeChecked =(e)=>{
          +            $('input:checkbox').prop('checked',e.checked);
          +            $('#btnDeleteMultipleEmployee').prop('disabled',(!e.checked));
          +        }
          +
          +        const multipleEmployeeDelete = () => {
          +            let action = 'DELETE_MULTIPLE_EMPLOYEE';
          +            let checkedData = $("[name='checkedBoxEmployee']");
          +            let clientId = [];
          +            for (let checkbox of checkedData) {
          +                if (checkbox.checked)
          +                    clientId.push(checkbox.value);
          +            }
          +            if (clientId.length > 0) {
          +                employeeDelete(clientId,action);
          +            }
          +        }
          +
          +        const employeeDelete = (userData,action) => {
          +            let html_content = `<h4>Are you sure you want to delete employee?</h4>`;
          +            const swalresponse = common_helper.swalAleart(html_content, 'warning', 450, true, '', true, true, 'Yes');
          +            swalresponse.then(async function (result) {
          +                if (result.isConfirmed) {
          +                    let response = await common_helper.globalAjaxRequest('{{route('admin.ajax.process')}}', 'POST', {
          +                        action: action,
          +                        userData: userData,
          +                        delete_type:'employee',
          +                        _token: "{{ csrf_token() }}"
          +                    });
          +                    if (response.status) {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450, closeOnConfirm: true});
          +                        window.location = `{{route('employee.list')}}`;
          +                    } else {
          +                        Swal.fire({icon: response.type, title: response.message, width: 450, closeOnConfirm: true});
          +                    }
          +                }
          +            })
          +        }
          +
          +        const checkedornot = (e) => {
          +
          +            let allData = $("[name='checkedBoxEmployee']");
          +            let checkedData = $("[name='checkedBoxEmployee']:checked");
          +            let allChecked = false;
          +            let alldelete = false;
          +
          +            if(allData.length === checkedData.length){
          +                 allChecked = true;
          +            }
          +
          +            if(checkedData.length === 0){
          +                alldelete = true;
          +            }
          +
          +            $("[name='allChecked']").prop('checked', allChecked);
          +
          +            $('#btnDeleteMultipleEmployee').prop('disabled', alldelete);
          +
          +        }
          +
          +    </script>
          +@endpush
          diff --git a/resources/views/epicvelocity/getletter.blade.php b/resources/views/epicvelocity/getletter.blade.php
          new file mode 100644
          index 0000000..4c75c8f
          --- /dev/null
          +++ b/resources/views/epicvelocity/getletter.blade.php
          @@ -0,0 +1,1207 @@
          +@extends('layouts.app')
          +@push('css')
          +    <link href="{{ asset('css/datepicker.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/evlg-page.css') }}" rel="stylesheet">
          +    <link href="{{ asset('js/summernote/summernote.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/bootstrap-multiselect.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/work-area.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/payment_setting.css') }}" rel="stylesheet">
          +    <style>
          +        .swal2-html-container{
          +            font-family: 'Roboto', sans-serif !important;
          +            font-size: 20px!important;
          +        }
          +        .swal2-styled.swal2-confirm {
          +            background-color: #f35626 !important;
          +        }
          +
          +        .show-hide-div{
          +            margin-top: 10px;
          +            margin-right: 10px
          +        }
          +        .show-hide-button{
          +            background: #FF440A !important;border-color: #FF440A !important;
          +        }
          +
          +
          +    </style>
          +@endpush
          +@section('content')
          +    @php
          +        $waves = clientWaves();
          +    @endphp
          +       @if(getSession('view_video_first_time'))
          +           @include('partials.video_setting',['cssClass' => 'hidden'])
          +       @endif
          +
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 col-md-12 column col-sm-offset-0">
          +            <div class="panel panel-default panel-frm">
          +                <div class="row">
          +                    <div class="col-md-9">
          +                        <div class="panel-heading">
          +                            <h1>Letter Template</h1>
          +                            <p>The Creditzombie’s Official Template Letter Generator Attack Wave System Software! </p>
          +                        </div>
          +                    </div>
          +                    <div class="col-md-3" >
          +                        <div class="pull-right show-hide-div" >
          +                            <button class="btn btn-sm btn-info show-hide-button"  type="button" id="btn_show_hide_text" onclick="return show_hide_textbox(this)" data-toggle="tooltip" title="Show or Hide Name,Email,SSN,Phone">
          +                                <i class="fa fa-eye" style="font-size: 14px; color: black;" id="show_hide_icon" aria-hidden="true"></i>
          +                            </button>
          +                        </div>
          +                    </div>
          +                </div>
          +                <div class="row">
          +                    @if(auth()->user()->is_import==config('constant.IMPORT_REPORT_STATUS.ELIGIBLE'))
          +
          +                        <div class="col-md-3 pull-right">
          +                            <div class="import-btn">
          +                                <button class="btn btn-default btn2" onclick="creditReportImportManually()">Import Credit Report Html</button>
          +                            </div>
          +                        </div>
          +                        <div class="col-md-3 pull-right">
          +                            <div class="import-btn">
          +                                <button class="btn btn-default btn2" onclick="creditReportRefreshDate()">Import Credit Report</button>
          +                            </div>
          +                        </div>
          +                    @endif
          +
          +                </div>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <form method="POST" onsubmit="return generateLetterPdf(this)"
          +                          action="{{route('generate.pdf')}}" data-id="0"
          +                          accept-charset="UTF-8" enctype="multipart/form-data" id="lg-form">
          +                        @csrf
          +                        <input type="hidden" value="{{$creditreport->id}}" name="credit_report_setup_id" id="client_id">
          +                        <input type="hidden" name="isLetterStream" value="0">
          +                        <input type="hidden" name="current_html_content" value=""/>
          +                        <input type="hidden" name="client_email" id="client_name" value="">
          +                        <div class="row">
          +                            <input type="hidden" name="action" value="new">
          +                            <div class="col-md-12 col-sm-12 col-xs-12 ">
          +                                <div class="x_panel">
          +                                    <div class="x_content">
          +                                        <div class="col-md-12">
          +                                            <div class="row">
          +
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-4">
          +                                                    <div class="form-group affiliate-list" style="display:none">
          +                                                        <span><label>Affiliate List</label></span>
          +                                                        <select name="affiliate_client_id"
          +                                                                onchange="generateAffiliateClientList(this)"
          +                                                                class="form-control" disabled="true"></select>
          +                                                    </div>
          +                                                    <div class="form-group employee-list" style="display:none">
          +                                                        <span><label>Employee List</label></span>
          +                                                        <select name="dropdown_employee_id" class="form-control"
          +                                                                onchange="generateEmployeeClientList(this)"></select>
          +                                                        <img src="{{asset('images/ajax-loader.gif')}}"
          +                                                             style="display: none;">
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="col-md-12">
          +                                            <div class="row">
          +                                                <!--<span class="glyphicon glyphicon-play-circle video-icon" title="Need Help" onclick="alert('Vidoes coming soon!')"></span>-->
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Email</label>
          +                                                        <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                                        <input id="email" value="<?php echo $creditreport->email ?>"
          +                                                               type="text" class="form-control" name="email"
          +                                                               disabled>
          +                                                    </div>
          +                                                    <div id="client-ajax-loader"
          +                                                         style="text-align: left;padding: 5px 0px;display: none;position: absolute;z-index: 1000;top: -36px;right: 0;">
          +                                                        <img
          +                                                            src="{{asset('images/ajax-loader.gif')}}">
          +                                                        <span>Client loading.......</span>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Wave/Round/Attack Number</label>
          +                                                        <select name="choose_wave" class="form-control" onchange="getDecision(this)" id="choose_wave">
          +                                                            @foreach($waves as $key=>$value)
          +                                                                @php $select = ($value['key'] == $creditreport->wave) ? 'selected': ''; @endphp
          +                                                                <option value="{{$value['key']}}" {{$select}}> {{$value['text']}} </option>
          +                                                            @endforeach
          +
          +                                                        </select>
          +
          +                                                    </div>
          +                                                </div>
          +
          +                                            </div>
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Choose Work</label>
          +                                                        <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                                        <select name="choose_work"
          +                                                                onchange="getClient('{{route('get.letter')}}')"
          +                                                                class="form-control" id="choose_work">
          +                                                            <option value="">Please select</option>
          +                                                            <option value="pi"> New (Personal Information)</option>
          +                                                            <option value="iq">New (Inquiries)</option>
          +                                                            <option value="pr">New (Public records)</option>
          +                                                            <option value="ac">New (Accounts)</option>
          +                                                        </select>
          +                                                        <div id="resource-loader"
          +                                                             style="display: none;text-align: left;padding: 5px 0;">
          +                                                            <img
          +                                                                src="{{asset('images/ajax-loader.gif')}}">
          +                                                            <span>Analysing Report and Generating Content</span>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label for="">Source Type</label>
          +                                                        <select disabled name="source_type" id="" class="form-control">
          +                                                            @foreach(config('constant.REPORT_SOURCE_TYPES') as $key => $value)
          +                                                                <option
          +                                                                    value="{{$key}}" {{$creditreport->credit_report_company_type == $key ? 'selected':''}}>{{$value}}</option>
          +                                                            @endforeach
          +                                                        </select>
          +                                                    </div>
          +                                                </div>
          +
          +                                            </div>
          +
          +                                            <div class="row">
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Today’s Date is</label>
          +                                                        <input id="today" value="<?php echo date('m/d/Y') ?>"
          +                                                               type="text"
          +                                                               class="form-control" name="today"
          +                                                               required autofocus>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Credit Report Data Resource or Monitoring</label>
          +                                                        <input id="cr_resource" type="text" class="form-control"
          +                                                               name="cr_resource"
          +                                                               value="{{ config('constant.REPORT_SOURCE_TYPES.'.$creditreport->credit_report_company_type)." ".date('m/d/Y') }}">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label><span class="req-span">*</span>Name (at least First and
          +                                                            Last
          +                                                            Name)</label>
          +                                                        <input id="name"
          +                                                               value="{{$creditreport->first_name." ".$creditreport->last_name}}"
          +                                                               type="text" class="form-control" name="name"
          +                                                               required>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label><span class="req-span">*</span>Address (at least Street
          +                                                            Number, Street Name, City, State spelled out)</label>
          +                                                        <input id="address"
          +                                                               value="{{ $creditreport->street_no." ".$creditreport->street_name.", ".$creditreport->city.", ".$creditreport->state." ".$creditreport->zip_code }}"
          +                                                               type="text" class="form-control" name="address"
          +                                                               placeholder="">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Date of Birth</label>
          +                                                        <input id="dob" value="{{ $creditreport->birth_date }}"
          +                                                               type="text"
          +                                                               class="form-control " name="dob"
          +                                                               placeholder="">
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Social Security Number (last four ONLY displayed on ANY
          +                                                            DOCUMENT)</label>
          +                                                        <input id="ssn" value="{{ $creditreport->ssn }}"
          +                                                               disabled
          +                                                               type="text" class="form-control" name="ssn"
          +                                                               maxlength="12" placeholder="" required>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="form-group">
          +                                                        <label>Personal Tracking Number</label>
          +                                                        <input id="p_tracking_number" type="text" class="form-control"
          +                                                               name="p_tracking_number" value="{{$p_tracking_number }}">
          +                                                        <span class="glyphicon glyphicon-refresh" title="Regenrate"
          +                                                              id="btn-regenerate" onclick="gen_rand()"></span>
          +                                                    </div>
          +                                                    <div class="form-group" id="univ-dest-div">
          +                                                        <label>Universal Template Destinatioin(s)</label><br>
          +                                                        <select id="univ-dest" disabled multiple="multiple"
          +                                                                class="form-control"
          +                                                                name="destination[]">
          +                                                            <optgroup label="EXPERIAN DESTINATIONS">
          +                                                                <option value="EXPERIAN PO BOX 9701, ALLEN, TX 75013">
          +                                                                    EXPERIAN PO BOX 9701, ALLEN, TX 75013
          +                                                                </option>
          +                                                                <option value="EXPERIAN PO BOX 4500, ALLEN, TX 75013">
          +                                                                    EXPERIAN PO BOX 4500, ALLEN, TX 75013
          +                                                                </option>
          +                                                            </optgroup>
          +                                                            <optgroup label="EQUIFAX DESTINATIONS">
          +                                                                <option
          +                                                                    value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256">
          +                                                                    EQUIFAX PO Box740256, ATLANTA,GA 30374-0256
          +                                                                </option>
          +                                                                <option
          +                                                                    value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241">
          +                                                                    EQUIFAX PO Box740241, ATLANTA,GA 30374-0241
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="TRANS UNION DESTINATIONS">
          +                                                                <option
          +                                                                    value="Trans Union PO Box 2000, CHESTER, PA 19016-2000">
          +                                                                    Trans Union PO Box 2000, CHESTER, PA 19016-2000
          +                                                                </option>
          +                                                                <option
          +                                                                    value="Trans Union PO Box 1000, CHESTER, PA 19022-1000">
          +                                                                    Trans Union PO Box 1000, CHESTER, PA 19022-1000
          +                                                                </option>
          +                                                                <option
          +                                                                    value="Trans Union PO Box 2000, CHESTER, PA 19022-2000">
          +                                                                    Trans Union PO Box 2000, CHESTER, PA 19022-2000
          +                                                                </option>
          +                                                            </optgroup>
          +                                                            <optgroup label="INNOVIS DESTINATIONS">
          +                                                                <option
          +                                                                    value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640">
          +                                                                    INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640
          +                                                                </option>
          +                                                                <option
          +                                                                    value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088">
          +                                                                    Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="LEXISNEXIS DESTINATIONS">
          +                                                                <option
          +                                                                    value="LexisNexis PO Box 105108, Atlanta, GA 30348">
          +                                                                    LexisNexis PO Box 105108, Atlanta, GA 30348
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="SAGESTREAM LLC DESTINATIONS">
          +                                                                <option
          +                                                                    value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108">
          +                                                                    SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="CHEX SYSTEMS DESTINATIONS">
          +                                                                <option
          +                                                                    value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125">
          +                                                                    Chex Systems ATTN: Consumer Relations, 7805 Hudson
          +                                                                    Rd.,
          +                                                                    Ste. 100, Woodbury, MN 55125
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="MIB INC DESTINATIONS">
          +                                                                <option
          +                                                                    value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734">
          +                                                                    (US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite
          +                                                                    400, Braintree, MA 02184-8734
          +                                                                </option>
          +                                                                <option
          +                                                                    value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7">
          +                                                                    (CANADIAN RESIDENTS) MIB Inc 330 university Avenue,
          +                                                                    Suite 501, Toronto, Canada M5G 1R7
          +                                                                </option>
          +
          +                                                            </optgroup>
          +                                                            <optgroup label="FACTOR TRUST DESTINATIONS">
          +                                                                <option
          +                                                                    value="FactorTrust PO Box 3653,Alpharhetta, GA 30023">
          +                                                                    FactorTrust PO Box 3653,Alpharhetta, GA 30023
          +                                                                </option>
          +                                                            </optgroup>
          +                                                            <optgroup label="DATA FURNISHERS">
          +                                                                <option value="">DATA FURNISHERS</option>
          +                                                            </optgroup>
          +                                                            <optgroup label="OTHER">
          +                                                                <option value="1">Other</option>
          +                                                            </optgroup>
          +                                                        </select>
          +                                                    </div>
          +
          +                                                    <div class=" form-group " id="univ-df" style="display: none;">
          +                                                        <div class="form-group">
          +                                                            <label>Data Furnishers</label>
          +                                                            <select name="destination[]" class="form-control select-df"
          +                                                                    id="select-df">
          +                                                            </select>
          +                                                        </div>
          +                                                    </div>
          +                                                    <div class=" form-group univ-other" id="univ-other"
          +                                                         style="display: none;">
          +                                                        <div>
          +                                                            <input type="text" name="destination[]" class="form-control"
          +                                                                   placeholder="OTHER" style="width: 93%">
          +                                                            <span class="glyphicon glyphicon-plus btn-univ-add-other"
          +                                                                  title="Add Other"></span>
          +                                                            <span
          +                                                                class="glyphicon glyphicon-minus btn-univ-remove-other"
          +                                                                title="Remove Other"></span>
          +                                                        </div>
          +
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label class="check-btn" style="color:red;"><input
          +                                                                    type="checkbox" disabled name="exclude_all" value="1"
          +                                                                    id="exclude-all"
          +                                                                    onchange="excludeall()">&nbsp;<strong>Exclude All
          +                                                                    Content Boxes</strong><span
          +                                                                    class="cr"></span></label>
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label>Number of Inquiries/letter &nbsp;</label>
          +                                                            <input type="number" disabled name="num_of_inquiry" min="1"
          +                                                                   max="25"
          +                                                                   value="1">
          +                                                        </div>
          +                                                    </div>
          +                                                    <div class="col-md-6 col-xs-12">
          +                                                        <div class="form-group">
          +                                                            <label>Number of Account/letter &nbsp;</label>
          +                                                            <input type="number" disabled name="num_of_account" min="1"
          +                                                                   max="25"
          +                                                                   value="1">
          +                                                        </div>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                    </div>
          +
          +                                    <div class="row text-center">
          +
          +                                        <button type="submit"  name="save" value="1" onclick="return saveOnly(this)"
          +                                                id="generate-pdf" disabled class="btn btn-success btn2 generate-letter">
          +                                            Generate Letter
          +                                        </button>
          +
          +                                        <div id="client-loader2" style="display: none;">
          +                                            <img src="{{asset('images/ajax-loader.gif')}}">
          +                                            <span>&nbsp;&nbsp;&nbsp;Please wait Generating Letters</span>
          +                                        </div>
          +                                    </div>
          +
          +                                </div>
          +                            </div>
          +                            <script type="text/javascript">
          +                                var item_count = 0;
          +                                var image_count = 1;
          +                            </script>
          +
          +                            <div class="col-md-12 col-sm-12 col-xs-12 ">
          +                                <div class="x_panel">
          +                                    <div class="x_content">
          +                                        <div id="content-area">
          +                                            <div class="col-md-12 col-xs-12 main-content" id="main-content-0">
          +                                                <fieldset class="add-nother">
          +                                                    <legend class="add-nother text-center">
          +                                                        Content Box Work Area &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span
          +                                                            class="glyphicon glyphicon-play-circle video-icon"
          +                                                            title="Need Help"
          +                                                            onclick="alert('Vidoes coming soon!')"></span><br>
          +                                                        <span class="fa-stack fa-lg"
          +                                                              style="font-size:16px;font-weight: 500;">
          +                                                        <i class="fa fa-circle fa-stack-2x"></i>
          +                                                        <i class="fa-stack-1x fa-inverse">1</i>
          +                                                    </span>
          +
          +                                                    </legend>
          +                                                    <span class="pull-right" title="Exclude content box from letter"
          +                                                          style="margin-top:10px;">
          +                                                    <label class="lbl-dest check-btn" style="color:red"><input
          +                                                            type="checkbox" name="info_item[exclude][0][]"
          +                                                            value="1" disabled
          +                                                            class="check-exclude"/>&nbsp;Exclude<span
          +                                                            class="cr"></span></label>
          +                                                </span>
          +
          +                                                    <div class="col-md-9">
          +                                                        <div class="row">
          +                                                            <div class="col-md-4" style="overflow: hidden;">
          +                                                                <div class="form-group file-txt">
          +                                                                    <label>ADD IMAGE </label>
          +                                                                    <input type="file" onchange="uploadphotos(this)"
          +                                                                           name="info_item[file][]" class=""
          +                                                                           id="content_file_0">
          +                                                                </div>
          +                                                                <div class="col-md-12"
          +                                                                     style="margin-top: 5px;padding-left: 0px;">
          +                                                                    <label><a onclick="removeContentImage(0)"
          +                                                                              style="padding: 1px 6px;"
          +                                                                              class="btn btn-danger"
          +                                                                              title="Clear attached file"><i
          +                                                                                class="fa fa-minus"></i></a></label>
          +                                                                </div>
          +                                                                <div class="form-group file-txt">
          +                                                                    <img id="letter_img_0" class="letter-content-img"
          +                                                                         src=""
          +                                                                         alt="">
          +                                                                    <input type="hidden" id="letter_image_file_0"
          +                                                                           name="letter_image_file[]" value=""/>
          +                                                                </div>
          +                                                            </div>
          +                                                            <div class="col-md-8">
          +                                                                <div class="form-group" style="clear: both;">
          +                                                                    <label>DEROGATORY Decisions</label>
          +                                                                    @include('partials.decision_dropdown')
          +                                                                </div>
          +                                                                <div class="form-group"
          +                                                                     style="clear: both;display: none;"
          +                                                                     id="div-dtype-0">
          +                                                                    <label>Type of Reported Issues</label>
          +                                                                    <select name="info_item[letter_type][]" id="dtype-0"
          +                                                                            class="form-control"
          +                                                                            onchange="showTemplate(this, 0)"
          +                                                                            required="">
          +                                                                        <option value="">Please select template</option>
          +                                                                        <option value="1">Personal Identifier
          +                                                                            Information
          +                                                                        </option>
          +                                                                        <option value="2">INQUIRY(ies) information
          +                                                                        </option>
          +                                                                        <option value="3">LATE PAYMENT (not Student
          +                                                                            Loan)
          +                                                                            Information
          +                                                                        </option>
          +                                                                        <option value="4">STUDENT LOAN LATE PAYMENT
          +                                                                            Information
          +                                                                        </option>
          +                                                                        <option value="5">Regular Non-Medical Collection
          +                                                                            Information
          +                                                                        </option>
          +                                                                        <option value="6">Medical Collection Information
          +                                                                        </option>
          +                                                                        <option value="7">CHARGE OFF Information
          +                                                                        </option>
          +                                                                        <option value="8">REPOSSESSION Information
          +                                                                        </option>
          +                                                                        <option value="9">PUBLIC RECORDS Information
          +                                                                        </option>
          +                                                                        <option value="10">GENERAL DELINQUENT ,
          +                                                                            DEROGATORY,
          +                                                                            or QUESTIONABLY REPORTED Information
          +                                                                        </option>
          +                                                                    </select>
          +                                                                </div>
          +                                                                <div class="form-group"
          +                                                                     style="clear: both;display: none;"
          +                                                                     id="template-0">
          +                                                                    <label>TEMPLATE LETTER FOR BUREAU</label>
          +                                                                    <select name="info_item[template][]"
          +                                                                            id="lt_template-0"
          +                                                                            class="form-control " required="">
          +                                                                    </select>
          +                                                                </div>
          +                                                                <div class="form-group"
          +                                                                     style="clear: both;display: none;"
          +                                                                     id="template-df-0">
          +                                                                    <label>TEMPLATE LETTER FOR DATA
          +                                                                        FURNISHER/CREDITOR</label>
          +                                                                    <select name="info_item[template_df][]"
          +                                                                            id="lt_template_df-0" class="form-control">
          +                                                                    </select>
          +                                                                </div>
          +
          +                                                            </div>
          +                                                            <div class="col-md-12">
          +                                                                <div class="goto_report_div"><label>Go to Report
          +                                                                        &rarr;</label>&nbsp;&nbsp;
          +                                                                    <a href="#view-html"><span
          +                                                                            class="glyphicon glyphicon-info-sign icon-goto-report"
          +                                                                            title="Personal Information"></span></a>
          +                                                                    <a href="#Summary"><span
          +                                                                            class="glyphicon glyphicon glyphicon-open-file icon-goto-report"
          +                                                                            title="Summary Information"></span></a>
          +                                                                    <a href="#AccountHistory"><span
          +                                                                            class="glyphicon glyphicon glyphicon-list-alt icon-goto-report"
          +                                                                            title="AccountHistory Information"></span></a>
          +                                                                    <a href="#Inquiries"><span
          +                                                                            class="glyphicon glyphicon glyphicon-question-sign icon-goto-report"
          +                                                                            title="Inquiries Information"></span></a>
          +                                                                    <a href="#PublicInformation"><span
          +                                                                            class="glyphicon glyphicon-globe icon-goto-report"
          +                                                                            title="Public Information"></span></a>
          +                                                                    <a href="#CreditorContacts"><span
          +                                                                            class="glyphicon glyphicon-user icon-goto-report"
          +                                                                            title="Creditor Contacts Information"></span></a>
          +                                                                    <a href="#main-content-0" style="float:right;"><span
          +                                                                            class="glyphicon glyphicon-circle-arrow-up icon-goto-report"
          +                                                                            title="Go To Previous Content Box"></span></a>
          +                                                                    <a href="#lg-form" title="Go To Top of Page"
          +                                                                       style="float: right;"><label
          +                                                                            style="font-weight: bold;font-size: 16px">
          +                                                                            &nbsp;&nbsp;TOP &uarr;</label></a>
          +                                                                    <a href="#div-img-bottom"
          +                                                                       title="Go To Generate Button"
          +                                                                       style="float: right;"><label
          +                                                                            style="font-weight: bold;font-size: 16px">
          +                                                                            &nbsp;&nbsp;GENERATE &darr;</label></a>
          +
          +                                                                </div>
          +                                                                <div class="form-group">
          +                                                                <textarea class="form-control " id="summernote-0"
          +                                                                          name="info_item[content][]" rows="13"
          +                                                                          placeholder=""
          +                                                                          required></textarea>
          +                                                                    <span
          +                                                                        class="glyphicon glyphicon-menu-hamburger btn-add-line-break"
          +                                                                        title="Add Line Break"
          +                                                                        onclick="addLineBreak(0)"></span>
          +                                                                    <span
          +                                                                        class="glyphicon glyphicon-plus btn-add-content"
          +                                                                        title="Add Cleared Content"
          +                                                                        onclick="undoClearContent(0)"></span>
          +                                                                    <span
          +                                                                        class="glyphicon glyphicon-remove btn-remove-content"
          +                                                                        title="Clear Content Box"
          +                                                                        id="btn-remove-content"
          +                                                                        onclick="clearContent(0)"></span>
          +                                                                </div>
          +                                                            </div>
          +                                                        </div>
          +                                                    </div>
          +                                                    <div class="col-md-3 pull-right div-item-dest">
          +                                                        <div class="tbg"><label>CONTENT DESTINATION(s) </label>
          +                                                            <span
          +                                                                class="glyphicon glyphicon-chevron-down pull-right gly-dest"
          +                                                                id="toggle-dest-0" onclick="toggleDest(0)" title="Show"
          +                                                                data-toggle="collapse" href="#dest-side-0"></span>
          +                                                        </div>
          +                                                        <div id="dest-side-0" class="collapse dest-collapse">
          +                                                            <label class="lbl-dest check-btn"
          +                                                                   style="font-size:14px"><input
          +                                                                    type="checkbox" name="all"
          +                                                                    value="Select All Destinations" id="check-all-0"
          +                                                                    onchange="checkall(0)"/>&nbsp;<strong>Select All
          +                                                                    Destinations</strong><span
          +                                                                    class="cr"></span></label>
          +                                                            <hr style="2px 0 5px">
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value=""
          +                                                                                                     class="check-df"
          +                                                                                                     onchange="showDf(event, 0)"/>&nbsp;Data
          +                                                                Furnisher<span
          +                                                                    class="cr"></span></label>
          +                                                            <select name="info_item[dest][0][]"
          +                                                                    class="form-control select-df" id="select-df-0"
          +                                                                    style="display: none;">
          +                                                            </select>
          +                                                            <input type="text" name="info_item[dest][0][]"
          +                                                                   class="form-control" placeholder="OTHER"
          +                                                                   style="width: 96%; display:none;" id="other-text-0">
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="EXPERIAN PO BOX 9701, ALLEN, TX 75013"
          +                                                                                                     class="check-exp1"/>&nbsp;EXPERIAN
          +                                                                PO BOX 9701, ALLEN,
          +                                                                TX 75013<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="EXPERIAN PO BOX 4500, ALLEN, TX 75013"
          +                                                                                                     class="check-exp2"/>&nbsp;EXPERIAN
          +                                                                PO BOX 4500, ALLEN,
          +                                                                TX 75013<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256"
          +                                                                                                     class="check-equ1"/>&nbsp;EQUIFAX
          +                                                                PO Box740256,
          +                                                                ATLANTA,GA 30374-0256<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241"
          +                                                                                                     class="check-equ2"/>&nbsp;EQUIFAX
          +                                                                PO Box740241,
          +                                                                ATLANTA,GA 30374-0241<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="Trans Union PO Box 2000, CHESTER, PA 19016-2000"
          +                                                                                                     class="check-tra1"/>&nbsp;Trans
          +                                                                Union PO Box 2000,
          +                                                                CHESTER, PA 19016-2000<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="Trans Union PO Box 1000, CHESTER, PA 19022-1000"
          +                                                                                                     class="check-tra2"/>&nbsp;Trans
          +                                                                Union PO Box 1000,
          +                                                                CHESTER, PA 19022-1000<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="Trans Union PO Box 2000, CHESTER, PA 19022-2000"
          +                                                                                                     class="check-tra3"/>&nbsp;Trans
          +                                                                Union PO Box 2000,
          +                                                                CHESTER, PA 19022-2000<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640"
          +                                                                                                     class="check-ino1"/>&nbsp;INNOVIS
          +                                                                PO Box 1640,
          +                                                                Pittsburgh, PA 15230-1640<span
          +                                                                    class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088"
          +                                                                                                     class="check-ino2"/>&nbsp;Innovis Consumer Assistance
          +                                                                PO Box 530088, Atlanta, GA 30353-0088<span
          +                                                                    class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="LexisNexis PO Box 105108, Atlanta, GA 30348"
          +                                                                                                     class="check-lex1"/>&nbsp;LexisNexis
          +                                                                PO Box 105108,
          +                                                                Atlanta, GA 30348<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108"
          +                                                                                                     class="check-sag1"/>&nbsp;SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108<span
          +                                                                    class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125"
          +                                                                                                     class="check-chex1"/>&nbsp;Chex
          +                                                                Systems ATTN: Consumer
          +                                                                Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN
          +                                                                55125<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734"
          +                                                                                                     class="check-mib1"/>&nbsp;(US
          +                                                                RESIDENTS) MIB Inc 50
          +                                                                Braintree Hill Park, Suite 400, Braintree, MA
          +                                                                02184-8734<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7"
          +                                                                                                     class="check-mib2"/>&nbsp;(CANADIAN
          +                                                                RESIDENTS) MIB Inc
          +                                                                330 university Avenue, Suite 501, Toronto, Canada M5G
          +                                                                1R7<span class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value="FactorTrust PO Box 3653,Alpharhetta, GA 30023"
          +                                                                                                     class="check-fact1"/>&nbsp;FactorTrust
          +                                                                PO Box
          +                                                                3653,Alpharhetta, GA 30023<span
          +                                                                    class="cr"></span></label>
          +                                                            <label class="lbl-dest check-btn"><input type="checkbox"
          +                                                                                                     name="info_item[dest][0][]"
          +                                                                                                     value=""
          +                                                                                                     class="check-aa"/>&nbsp;Audit
          +                                                                Analysis<span
          +                                                                    class="cr"></span></label>
          +
          +                                                            <input type="text" name="info_item[dest][0][]"
          +                                                                   class="form-control" placeholder="OTHER"
          +                                                                   style="width: 96%"
          +                                                                   id="other-text-0">
          +                                                            <span class="glyphicon glyphicon-plus btn-add-other"
          +                                                                  title="Add Other"></span>
          +                                                        </div>
          +
          +                                                    </div>
          +                                                    <div class="col-md-12 text-center" style="clear: both;">
          +                                                        <button class="btn btn-success btn2" onclick="addContent()"
          +                                                                type="button"><span class="glyphicon glyphicon-plus"
          +                                                                                    title="add"></span>Add Another
          +                                                            Content
          +                                                        </button>
          +                                                    </div>
          +
          +                                                </fieldset>
          +                                            </div>
          +                                        </div>
          +                                        <div id="img-container">
          +                                            <div class="col-md-12 col-xs-12 text-center" id="div-img-bottom"
          +                                                 style="display: none;">
          +                                                <input type="hidden" name="identity_proof_file" value=""
          +                                                       id="identity_proof_file1">
          +                                                <input type="hidden" name="ssn_proof_file" value=""
          +                                                       id="ssn_proof_file1">
          +                                                <input type="hidden" name="address_proof_file" value=""
          +                                                       id="address_proof_file1">
          +                                                <input type="hidden" name="other_file" value="" id="other_file1">
          +                                                <p>Current Images</p>
          +                                                <div class="col-md-1 col-md-offset-2 ">
          +                                                    <label class="check-btn"><input type="checkbox"
          +                                                                                    name="include_bureau_image"
          +                                                                                    value="1"
          +                                                                                    checked="checked">&nbsp;Bureaus<span
          +                                                            class="cr"
          +                                                            title="Add Images to Bureau Letters"></span></label>
          +                                                </div>
          +                                                <div class="col-md-6 col-xs-12">
          +                                                    <p>PHOTO IDENTIFICATION :<label id="identity_proof_file"
          +                                                                                    class="span-file">..........</label><br>SSN
          +                                                        PROOF :<label
          +                                                            id="ssn_proof_file"
          +                                                            class="span-file">..........</label><br>ADDRESS PROOF
          +                                                        :<label
          +                                                            id="address_proof_file"
          +                                                            class="span-file">..........</label><br>OTHER FILE :<label
          +                                                            id="other_file" class="span-file">...........</label></p>
          +                                                </div>
          +                                                <div class="col-md-3 col-xs-12 text-left">
          +                                                    <label class="check-btn"><input type="checkbox"
          +                                                                                    name="include_creditor_image"
          +                                                                                    value="1">&nbsp;Creditors<span
          +                                                            class="cr"
          +                                                            title="Add Images to Creditors Letter"></span></label>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-12 col-xs-12">
          +                                                <label class="col-md-12" style="text-align:center;">Add Image Here for
          +                                                    Proof: Example: SS, Proof ID, Current Bill ect. Must be PNG or
          +                                                    JPEG</label>
          +                                            </div>
          +                                            <div id="att-img-area">
          +                                                <div class="col-md-12 col-xs-12 img-content" id="img-content-1">
          +                                                    <div class="col-md-12 col-xs-12" style="padding-top:10px;padding-bottom:10px">
          +                                                        <div class="row">
          +                                                            <div class="col-md-12 col-xs-12 text-center">
          +                                                                <img id="att_image_1" class="letter-attach-img" src=""
          +                                                                     alt="">
          +                                                                <input type="hidden" id="attach_image_file_1"
          +                                                                       name="attach_image_file[]" value=""/>
          +                                                                <input type="hidden" id="isUploadMedia_1"
          +                                                                       name="isUploadMedia[]" value="0"/>
          +                                                            </div>
          +                                                        </div>
          +                                                    </div>
          +                                                    <div class="col-md-offset-3 col-md-6">
          +                                                        <input onchange="uploadphotos(this, false)" type="file"
          +                                                               name="img_bottom[]" id="attachment_img_1"
          +                                                               class="form-control no-bdr">
          +                                                    </div>
          +                                                    <div class="col-md-1" style="margin-top: 5px;margin-right: 20px">
          +                                                        <label id="label1">
          +                                                            <a style="cursor:hand;cursor:pointer;padding: 1px 6px;"
          +                                                               onclick="clearAttImage(1)" data-id="4">Clear</a>
          +                                                        </label>
          +                                                    </div>
          +                                                    <div class="col-md-1" style="margin-top: 5px;margin-right: 20px">
          +                                                        <label id="label1"><a onclick="addImage()" id="add-image-btn"
          +                                                                              style="padding: 1px 6px;"
          +                                                                              class="btn btn-success"><i
          +                                                                    class="fa fa-plus"></i></a></label>
          +                                                        <label id="label1"><a onclick="removeImage(1)" id="remove"
          +                                                                              style="padding: 1px 6px;"
          +                                                                              class="btn btn-danger"><i
          +                                                                    class="fa fa-minus"></i></a></label>
          +                                                    </div>
          +
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                        <div class="row text-center" style="margin-top: 20px;">
          +                                            <div class="col-md-8 col-xs-12 col-md-offset-4">
          +
          +                                                <div class="col-md-3 ">
          +                                                    <div class="form-group">
          +                                                        <label class="check-btn"
          +                                                               title="Generate Data Furnishers Letters Only"><input
          +                                                                type="checkbox" name="df_only" value="1">&nbsp;<strong>Data
          +                                                                Furnisher's Only</strong><span
          +                                                                class="cr"></span></label>
          +                                                    </div>
          +                                                </div>
          +                                                <div class="col-md-3 ">
          +                                                    <div class="form-group">
          +                                                        <label class="check-btn"
          +                                                               title="Generate Creidt Bureaus Letters Only"><input
          +                                                                type="checkbox" name="bureau_only"
          +                                                                value="1">&nbsp;<strong>Bureaus Only</strong><span
          +                                                                class="cr"></span></label>
          +                                                    </div>
          +                                                </div>
          +                                            </div>
          +
          +
          +                                            <button type="submit"  name="save"  value="1"  onclick="return saveOnly(this)"
          +                                                    id="generate-pdf" disabled
          +                                                    class="btn btn-success btn2 generate-letter">
          +                                                Generate Letter
          +                                            </button>
          +
          +                                            <div id="client-loader2" style="display: none;">
          +                                                <img src="{{asset('images/ajax-loader.gif')}}">
          +                                                <span>&nbsp;&nbsp;&nbsp;Please wait Generating Letters</span>
          +                                            </div>
          +                                        </div>
          +                                    </div>
          +
          +                                </div>
          +                            </div>
          +                        </div>
          +
          +                    </form>
          +                </div>
          +
          +            </div>
          +
          +            <div class="row" style="clear: both;">
          +                <div class="col-md-12 col-lg-12 col-xs-12">
          +                    <div class="view-html" id="view-html">
          +
          +                    </div>
          +                </div>
          +            </div>
          +            <div class="row" style="clear: both;" id="top-btn">
          +                <!-- <a href="#" onclick="topFunction()" ><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content" title="Go To Top"></span></a><br> -->
          +                <div id="btn-up-0" style="text-align:right">
          +                    <a href="#main-content-0"><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content"
          +                                                    title="Go To Content Area 1"></span></a>
          +                    <div id="btn-up-1" style="display: none;">
          +
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +    <div class="modal fade" id="credit_report_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +        <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +            <div class="modal-content">
          +                <div class="modal-header modal-header-info">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <h4 class="mb-2 text-center" id="modal_body_data"></h4>
          +                </div>
          +                <div class="modal-footer">
          +                    <button class="btn btn-success btn-lg" id="btn_credit_report_modal">Ok</button>
          +                    <button class="btn btn-success btn-lg hidden" data-dismiss="modal" id="btn_hidden">Ok</button>
          +                    <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +    <div class="modal fade" id="creditReportModal" style="margin-top: 50px" tabindex="-1" aria-labelledby="creditReportModalLabel" aria-hidden="true">
          +        <div class="modal-dialog modal-lg">
          +            <div class="modal-content">
          +                <form method="POST" action="{{route('upload.credit.report')}}" id="html_report_form" accept-charset="UTF-8" >
          +                    @csrf
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h5 class="modal-title" >Credit Report Html</h5>
          +                </div>
          +                <div class="modal-body">
          +                        <textarea class="form-control"  id="credithtml" name="credithtml" rows="15" readonly></textarea>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default btn2" onclick="return report_form_submit(this)">Upload Html</button>
          +                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          +                </div>
          +                </form>
          +            </div>
          +        </div>
          +    </div>
          +
          +    <div class="modal fade" id="view-credit-report" style="margin-top: 50px" tabindex="-1" aria-labelledby="creditReportModalLabel" aria-hidden="true">
          +        <div class="modal-dialog modal-md">
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h5 class="modal-title" >Credit Report Html</h5>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="row">
          +                        <div class="col-md-10 col-md-offset-1">
          +                            <button style="margin:0" type="button" class="btn btn-default btn2 btn-primary btn-lg btn-block mb-3" onclick="importCreditReport();">
          +                                Import new credit report <span style="font-size: 11px;"> <i class="fa fa-chevron-right"></i><i class="fa fa-chevron-right"></i></span>
          +                            </button>
          +                            <h5 style="margin-top:25px" class="mt-3 text-center" id="refresh_date"></h5>
          +                            @if(!$credit_report_eligibility['is_show_refresh_date'])
          +                            <button style="margin-top:35px" type="button" class="btn btn-default btn2 btn-primary btn-lg btn-block mb-3 hidden" id="btn_refresh_report" onclick="creditReportRefreshButtonContent();">
          +                                Refresh Report <span style="font-size: 11px;"> <i class="fa fa-chevron-right"></i><i class="fa fa-chevron-right"></i></span>
          +                            </button>
          +                            @endif
          +
          +                        </div>
          +                    </div>
          +                </div>
          +
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +    <div class="modal fade" id="generateLetterModal" style="margin-top: 50px" tabindex="-1" aria-labelledby="generateLetterModalLabel" aria-hidden="true">
          +      <div class="col-md-12">
          +        <div class="modal-dialog">
          +            <div class="modal-content">
          +                    <div class="modal-header">
          +                        <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                        <h5 class="modal-title" >Generate Letter</h5>
          +                    </div>
          +                    <div class="modal-body">
          +                        <div class="row">
          +                                <div class="col-md-12 col-xs-12">
          +                                    <div class="form-group">
          +                                        <div class="radio">
          +                                            <label class="radio-inline control-label">
          +                                                <input type="radio" name="download" checked value="0" /> Download
          +                                            </label>
          +                                        </div>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                        <div class="row">
          +                            <div class="col-md-4 col-xs-12">
          +                                <div class="form-group">
          +                                    <div class="radio">
          +                                        <label class="radio-inline control-label">
          +                                            <input type="radio" name="download" value="1" /> Download Type
          +                                        </label>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                            <div class="col-md-8 col-xs-12">
          +                                <select name="download_type_name" id="download_type_name"
          +                                        class="form-control" disabled>
          +                                    <option value="0">Please Select</option>
          +                                    <option value="1">Email</option>
          +                                </select>
          +                            </div>
          +                        </div>
          +                    </div>
          +                    <div class="modal-footer">
          +                        <button class="btn btn-default btn2" onclick="generateLetter()">Generate</button>
          +                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          +                    </div>
          +            </div>
          +        </div>
          +      </div>
          +    </div>
          +
          +    <div class="modal fade" id="securityModal" style="margin-top: 50px" tabindex="-1" aria-labelledby="securityModal" aria-hidden="true">
          +           <div class="col-md-12">
          +               <div class="modal-dialog">
          +                   <div class="modal-content">
          +                       <div class="modal-header">
          +                           <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                       </div>
          +                       <div class="modal-body" id="securityModalBody">
          +
          +                       </div>
          +                       <div class="modal-footer">
          +                           <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          +                       </div>
          +                   </div>
          +               </div>
          +           </div>
          +       </div>
          +
          +    <div class="modal fade" id="common_confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +        <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <h4 class="mb-2 text-center" style="color: red" id="common_message_text">
          +
          +                    </h4>
          +                </div>
          +                <div class="modal-footer" style="text-align: center">
          +                    <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +@endsection
          +
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +                @if($credit_report_eligibility['is_show_alert'])
          +                   $('#modal_body_data').text('{{$credit_report_eligibility['message']}}');
          +                   $('#credit_report_modal').modal('show');
          +                @endif
          +                @if(getSession('view_video_first_time'))
          +                   {{unSetSession('view_video_first_time')}}
          +                  common_helper.youtubePopup($("#popup_youtube"),`<h2 class="text-center">Congratulation! Watch this video first.</h2>`);
          +                @endif
          +                if(sessionStorage.getItem("user_data_viewed") === "1")
          +                {
          +                    $('#show_hide_icon').removeClass('fa-eye-slash');
          +                    $('#show_hide_icon').addClass('fa-eye');
          +                }
          +
          +                if(sessionStorage.getItem("user_data_viewed") === "0")
          +                {
          +                    $('#show_hide_icon').removeClass('fa-eye');
          +                    $('#show_hide_icon').addClass('fa-eye-slash');
          +                }
          +
          +                show_hide_textbox();
          +
          +        })
          +        const importCreditReport = async () =>{
          +            let response = await common_helper.globalAjaxRequest('{{route('process.ajax')}}','POST',{action:'GET_CREDIT_REPORT'});
          +
          +            if(response.status){
          +                if(response.code == {{config('constant.OTP_SUCCESS_CODE')}}){
          +                    $('#securityModalBody').html(response.data.html);
          +                    $('#securityModal').modal('show');
          +                }else {
          +                    $('#credithtml').val(response.data.html);
          +                    $('#creditReportModal').modal('show');
          +                    $('#view-credit-report').modal('hide');
          +                }
          +            }else{
          +                    $('#modal_body_data').text('No Data Found.');
          +                    $(`#btn_credit_report_modal`).remove();
          +                    $(`#btn_hidden`).removeClass('hidden');
          +                    $('#credit_report_modal').modal('show');
          +            }
          +        }
          +        const creditReportRefreshDate= async () =>{
          +            let response = await common_helper.globalAjaxRequest('{{route('process.ajax')}}','POST',{action:'GET_CREDIT_REPORT_REFRESH_DATE'});
          +
          +            creditReportModalView(response);
          +
          +        }
          +
          +        const creditReportModalView = (response) =>{
          +            $(`#credit_report_modal`).modal('hide');
          +            if(response.status) {
          +                if (response.button_type === 2) {
          +                    $('#btn_refresh_report').removeClass('hidden');
          +                }
          +                if (response.button_type === 1 || response.button_type === 0) {
          +                    $('#btn_refresh_report').remove();
          +                }
          +                $('#refresh_date').text(response.refresh_date);
          +                $('#view-credit-report').modal('show');
          +            }else {
          +                $('#common_message_text').text(response.message);
          +                $('#common_confirmation_modal').modal('show');
          +            }
          +        }
          +
          +        const creditReportRefreshButtonContent=async ()=>{
          +            let response = await common_helper.globalAjaxRequest('{{route('process.ajax')}}','POST',{action:'GET_CREDIT_REPORT_REFRESH_BUTTON_CONTENT'});
          +            if(response.status) {
          +                $('#view-credit-report').modal('hide');
          +                $('#modal_body_data').text(response.message);
          +                $(`#btn_credit_report_modal`).remove();
          +                $(`#btn_hidden`).removeClass('hidden');
          +                $('#credit_report_modal').modal('show');
          +            }
          +            else {
          +                $('#view-credit-report').modal('hide');
          +                $('#modal_body_data').text('Can not find data.');
          +                $(`#btn_credit_report_modal`).remove();
          +                $(`#btn_hidden`).removeClass('hidden');
          +                $('#credit_report_modal').modal('show');
          +            }
          +        }
          +        $("input[name='download']").change(function(){
          +            common_helper.globalRadioButtonClickEvent($(this),1,$("#download_type_name"));
          +        });
          +        $(`#btn_credit_report_modal`).click((e)=>{
          +            @if($credit_report_eligibility['is_show_refresh_date'])
          +                $(`#credit_report_modal`).modal('hide');
          +                $('#btn_refresh_report').remove();
          +                $('#view-credit-report').modal('show');
          +             @else
          +                creditReportRefreshDate();
          +             @endif
          +        });
          +        const getDecision = (e) =>{
          +            $data = 'w'+e.value;
          +
          +            $('#wave-0').val($data);
          +        }
          +
          +        const creditReportImportManually =()=>{
          +            $('#credithtml').val('');
          +            $('#credithtml').attr("readonly", false)
          +            $('#creditReportModal').modal('show');
          +        }
          +
          +        const report_form_submit =(e)=>{
          +            $('#html_report_form').validate({
          +                rules: {
          +                    'credithtml': 'required'
          +                },
          +                messages: {
          +                    'credithtml': {
          +                        required: "Please enter valid html"
          +                    },
          +                },
          +                highlight: function (element) {
          +                    $(element).parent().addClass("has-error");
          +                },
          +            });
          +
          +            if($('#html_report_form').valid()) {
          +                $('#html_report_form').submit();
          +            }
          +
          +        }
          +
          +        const show_hide_textbox =(e)=>{
          +            $return_data = common_helper.show_hide_textbox($('#show_hide_icon'),
          +                $('[name="phone"]'),$('[name="email"]'),$('[name="name"]'),$('[name="ssn"]'),$('[name="address"]'),$('[name="dob"]')
          +            );
          +            sessionStorage.setItem("user_data_viewed",$return_data);
          +        }
          +    </script>
          +
          +    <script>
          +        var isVelocityOrRTG = false;
          +        var isEpicVelocity = true;
          +        var GENERATE_PDF_URL = '{{route('generate.pdf')}}';
          +        var GENERATED_PDF_URL='{{route('get.generated.pdf')}}'
          +        var AFFILIATE_URL = '';
          +        var GET_CLIENT_INFO = '{{route('get.letter')}}';
          +        var ENVIROMENT = 1
          +    </script>
          +    <script src="{{asset('/')}}js/sweetalert2/sweetalert2.min.js"></script>
          +    <script src="{{asset('/')}}js/unwanted_char_remove.js?1.0.8"></script>
          +    <script src="{{asset('/')}}js/js.input.validation.js?1.0.0"></script>
          +
          +    <script src="{{asset('/')}}js/select2.full.min.js"></script>
          +    <script src="{{asset('/')}}js/summernote/summernote.min.js"></script>
          +    <script src="{{asset('/')}}js/bootstrap-multiselect.js"></script>
          +    <script src="{{asset('/')}}js/datepicker.js"></script>
          +    <script src="{{asset('/')}}js/evlg-page_111.js?1.0.6"></script>
          +    <script src="{{asset('/')}}js/epic_custom.js?1.0.7"></script>
          +    <script src="{{asset('/')}}js/epicSmartCredit.js?1.0.6"></script>
          +    <script src="{{asset('/')}}js/objectify.js?1.0.6"></script>
          +    <script src="{{asset('/')}}js/register.js?1.0.6"></script>
          +@endpush
          diff --git a/resources/views/epicvelocity/one_time_password.blade.php b/resources/views/epicvelocity/one_time_password.blade.php
          new file mode 100644
          index 0000000..15b252a
          --- /dev/null
          +++ b/resources/views/epicvelocity/one_time_password.blade.php
          @@ -0,0 +1,22 @@
          +
          +<h3 class="text-center" >One Time Password Recovery</h3>
          +  <form method="post" onsubmit="return oneTimeFormSubmit()" target="_blank" action="https://www.smartcredit.com/external-login">
          +        <input type="hidden" name="loginType" value="CUSTOMER">
          +        <input type="hidden" name="j_username"  value="{{$email}}">
          +        <input type="hidden" name="j_password" class="form-control" value="{{$password}}">
          +        <div class="form-group text-center" >
          +            <button type="submit" class="btn btn-default btn2" >
          +                Click Here
          +                <span> <i class="fa fa-chevron-right"></i><i class="fa fa-chevron-right"></i></span>
          +            </button>
          +        </div>
          +
          +    </form>
          +
          +    <script>
          +        function oneTimeFormSubmit(){
          +            $('#securityModal').modal('hide')
          +            return true;
          +        }
          +    </script>
          +
          diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php
          new file mode 100644
          index 0000000..22f0302
          --- /dev/null
          +++ b/resources/views/errors/404.blade.php
          @@ -0,0 +1,142 @@
          +<!DOCTYPE html>
          +<html lang="en">
          +
          +<head>
          +    <meta charset="utf-8">
          +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
          +    <meta name="viewport" content="width=device-width, initial-scale=1">
          +
          +    <title>404</title>
          +
          +    <style id="" media="all">
          +        /* cyrillic-ext */
          +        @font-face {
          +            font-family: 'Montserrat';
          +            font-style: normal;
          +            font-weight: 900;
          +            font-display: swap;
          +            src: url(/fonts.gstatic.com/s/montserrat/v25/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvC73w0aXpsog.woff2) format('woff2');
          +            unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
          +        }
          +
          +        * {
          +            -webkit-box-sizing: border-box;
          +            box-sizing: border-box
          +        }
          +
          +        body {
          +            padding: 0;
          +            margin: 0
          +        }
          +
          +        #notfound {
          +            position: relative;
          +            height: 100vh
          +        }
          +
          +        #notfound .notfound {
          +            position: absolute;
          +            left: 50%;
          +            top: 50%;
          +            -webkit-transform: translate(-50%, -50%);
          +            -ms-transform: translate(-50%, -50%);
          +            transform: translate(-50%, -50%)
          +        }
          +
          +        .notfound {
          +            max-width: 520px;
          +            width: 100%;
          +            line-height: 1.4;
          +            text-align: center
          +        }
          +
          +        .notfound .notfound-404 {
          +            position: relative;
          +            height: 240px
          +        }
          +
          +        .notfound .notfound-404 h1 {
          +            font-family: montserrat, sans-serif;
          +            position: absolute;
          +            left: 50%;
          +            top: 50%;
          +            -webkit-transform: translate(-50%, -50%);
          +            -ms-transform: translate(-50%, -50%);
          +            transform: translate(-50%, -50%);
          +            font-size: 252px;
          +            font-weight: 900;
          +            margin: 0;
          +            color: #262626;
          +            text-transform: uppercase;
          +            letter-spacing: -40px;
          +            margin-left: -20px
          +        }
          +
          +        .notfound .notfound-404 h1>span {
          +            text-shadow: -8px 0 0 #fff
          +        }
          +
          +        .notfound .notfound-404 h3 {
          +            font-family: cabin, sans-serif;
          +            position: relative;
          +            font-size: 16px;
          +            font-weight: 700;
          +            text-transform: uppercase;
          +            color: #262626;
          +            margin: 0;
          +            letter-spacing: 3px;
          +            padding-left: 6px
          +        }
          +
          +        .notfound h2 {
          +            font-family: cabin, sans-serif;
          +            font-size: 20px;
          +            font-weight: 400;
          +            text-transform: uppercase;
          +            color: #000;
          +            margin-top: 0;
          +            margin-bottom: 25px
          +        }
          +
          +        @media only screen and (max-width: 767px) {
          +            .notfound .notfound-404 {
          +                height: 200px
          +            }
          +
          +            .notfound .notfound-404 h1 {
          +                font-size: 200px
          +            }
          +        }
          +
          +        @media only screen and (max-width: 480px) {
          +            .notfound .notfound-404 {
          +                height: 162px
          +            }
          +
          +            .notfound .notfound-404 h1 {
          +                font-size: 162px;
          +                height: 150px;
          +                line-height: 162px
          +            }
          +
          +            .notfound h2 {
          +                font-size: 16px
          +            }
          +        }
          +    </style>
          +    <meta name="robots" content="noindex, follow">
          +</head>
          +
          +<body>
          +<div id="notfound">
          +    <div class="notfound">
          +        <div class="notfound-404">
          +            <h3>Oops! Page not found</h3>
          +            <h1><span>4</span><span>0</span><span>4</span></h1>
          +        </div>
          +        <h2>we are sorry, but the page you requested was not found</h2>
          +    </div>
          +</div>
          +</body>
          +
          +</html>
          diff --git a/resources/views/history/list.blade.php b/resources/views/history/list.blade.php
          new file mode 100644
          index 0000000..409dd5b
          --- /dev/null
          +++ b/resources/views/history/list.blade.php
          @@ -0,0 +1,145 @@
          +
          +@extends('layouts.admin')
          +
          +@push('css')
          +    <link href="{{ asset('css/support/support.css') }}" rel="stylesheet">
          +@endpush
          +
          +@php
          +       $pageLimit = $searchData['pageLimit'];
          +       $status_code = $searchData['status_code'];
          +@endphp
          +
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Iq Call Histories</h3>
          +                    </div>
          +                </div>
          +
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +                                    <form action="{{route('list.iq.history')}}" method="get" role="search">
          +                                        <div class="row">
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Show</label>
          +                                                    <select name="pageLimit" id="pagination" class="form-control"
          +                                                            onchange="this.form.submit()">
          +                                                        <option value="10" @if($pageLimit == 10) selected @endif>10</option>
          +                                                        <option value="20" @if($pageLimit == 20) selected @endif>20</option>
          +                                                        <option value="50" @if($pageLimit == 50) selected @endif>50</option>
          +                                                        <option value="100" @if($pageLimit == 100) selected @endif>100</option>
          +                                                        <option value="500" @if($pageLimit == 500) selected @endif>500</option>
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>From Date</label>
          +                                                    <input id="fdate"
          +                                                           type="text"
          +                                                           class="form-control" name="fdate"
          +                                                           value="{{$searchData['fdate']}}"
          +                                                           autocomplete="off">
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>To Date</label>
          +                                                    <input id="tdate"
          +                                                           type="text"
          +                                                           class="form-control" name="tdate"
          +                                                           value="{{$searchData['tdate']}}"
          +                                                           autocomplete="off">
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Page Status</label>
          +                                                    <select name="status_code" class="form-control">
          +                                                        <option value="" @if($status_code == '') selected @endif>Please Select</option>
          +                                                        <option value="1" @if($status_code == 1) selected @endif>Ip Blocked</option>
          +                                                        <option value="2" @if($status_code == 2) selected @endif>Success</option>
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group" style="margin-top: 25px;">
          +                                                    <button class="btn btn-primary btn-outline-primary"  style="width:100%" type="submit">Search</button>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group" style="margin-top: 25px;">
          +                                                    <button class="btn btn-primary btn-outline-primary" name="export" value="1" style="width:100%" type="submit">Excel Export</button>
          +                                                </div>
          +                                            </div>
          +
          +                                        </div>
          +                                    </form>
          +                                <div class="table-responsive py-5">
          +                                    <table id="table-histories" class="table table-bordered table-hover">
          +                                        <thead>
          +                                        <tr>
          +                                            <th>Id</th>
          +                                            <th>IP</th>
          +                                            <th>Port</th>
          +                                            <th>Page</th>
          +                                            <th>Status Code</th>
          +                                            <th>Status</th>
          +                                            <th>Created On</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($histories))
          +                                            @foreach ($histories as $key => $obj)
          +
          +                                               @php
          +                                                  $status = "Success";
          +                                                   if($obj->error_code == 403)
          +                                                       $status = "Failed";
          +                                                @endphp
          +                                                <tr class="tr-height">
          +                                                    <td>{{ $obj->id }}</td>
          +                                                    <td>{{$obj->ip}}</td>
          +                                                    <td>{{$obj->port}}</td>
          +                                                    <td>{{$obj->page}}</td>
          +                                                    <td>{{$obj->error_code}}</td>
          +                                                    <td>{{$status}}</td>
          +                                                    <td>{{$obj->created_at}}</td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +
          +                                </div>
          +                                <div id="pagination_panel">
          +                                    {{ $histories->links('basic.pagination') }}
          +                                    <input type="hidden" name="redirect_url" value="{{route('list.iq.history')}}">
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +
          +            </div>
          +        </div>
          +    </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        $(function() {
          +            common_helper.datePicker('#fdate',"yyyy-mm-dd",true,null);
          +            common_helper.datePicker('#tdate',"yyyy-mm-dd",true,null);
          +        });
          +    </script>
          +@endpush
          diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php
          new file mode 100644
          index 0000000..0788e15
          --- /dev/null
          +++ b/resources/views/layouts/admin.blade.php
          @@ -0,0 +1,189 @@
          +<!DOCTYPE html>
          +<html lang="en">
          +<head>
          +    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +    <!-- Meta, title, CSS, favicons, etc. -->
          +    <meta charset="utf-8">
          +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
          +    <meta name="csrf-token" content="{{ csrf_token() }}"/>
          +    <meta name="viewport" content="width=device-width, initial-scale=1">
          +    <link rel="shortcut icon" href="{{ asset('images/favicon.png') }}"/>
          +    <title>{{ config('app.name') }}</title>
          +
          +    <!-- Bootstrap -->
          +    <link href="{{ asset('theme/bootstrap/dist/css/bootstrap.min.css') }}" rel="stylesheet">
          +    <!-- Font Awesome -->
          +    <link href="{{ asset('theme/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet">
          +    <!-- NProgress -->
          +    <link href="{{ asset('theme/nprogress/nprogress.css') }}" rel="stylesheet">
          +    <!-- bootstrap-progressbar -->
          +    <link href="{{ asset('theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css') }}" rel="stylesheet">
          +    <!-- bootstrap-daterangepicker -->
          +    <link href="{{ asset('theme/bootstrap-daterangepicker/daterangepicker.css') }}" rel="stylesheet">
          +    <!-- Custom Theme Style -->
          +
          +    <!-- bootstrap-wysiwyg -->
          +    <link href="{{ asset('theme/google-code-prettify/bin/prettify.min.css') }}" rel="stylesheet">
          +    <!-- Select2 -->
          +    <link href="{{ asset('theme/select2/dist/css/select2.min.css') }}" rel="stylesheet">
          +    <link rel="stylesheet" href="{{ asset('css/loader.css') }}">
          +    <link rel="stylesheet" href="{{ asset('css/spinner.css') }}">
          +    <link href="{{ asset('theme/build/css/custom.min.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/improved.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/rtg_custom.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/custom.css') }}" rel="stylesheet">
          +    <!-- Magnific Popup Style-->
          +    <link href="{{ asset('js/magnify/magnific-popup.css') }}" rel="stylesheet">
          +    <!-- Datepicker css-->
          +    <link href="{{ asset('css/datepicker.css') }}" rel="stylesheet">
          +    <style>
          +        .container_body{
          +            height: fit-content;
          +            min-height: 752px !important;
          +        }
          +         .tr-height{
          +             line-height: 45px;
          +             min-height: 45px;
          +             height: 45px;
          +         }
          +        .swal2-confirm,.swal2-cancel {
          +            font-size: 1.4em !important;
          +        }
          +        ul#remove {
          +            list-style-type: none;
          +            padding: 0;
          +        }
          +    </style>
          +    @stack('css')
          +
          +</head>
          +
          +<body class="nav-md"> <!-- nav-sm -->
          +<div id="spinner">
          +    <div id="loading">
          +        <span class="timer-loader">Loading…</span>
          +    </div>
          +</div>
          +<div class="container body">
          +    <div class="main_container" >
          +        @if (Auth::check())
          +            @include('partials/adminsidemenu')
          +            @include('partials/admintopbar')
          +            <div class="right_col container_body" role="main" >
          +                @if ($errors->any())
          +                    <div class="alert alert-danger" onclick="this.classList.add('hidden');">
          +                        <ul id="remove">
          +                            @foreach ($errors->all() as $error)
          +                                <li>{{ $error }}</li>
          +                            @endforeach
          +                        </ul>
          +                    </div>
          +                @endif
          +                @if (session()->has('success'))
          +                    <div class="alert alert-success" onclick="this.classList.add('hidden');">
          +                        {{ session()->get('success') }}
          +                    </div>
          +                @endif
          +                @if (session()->has('error'))
          +                    <div class="alert alert-danger" onclick="this.classList.add('hidden');">
          +                        {{ session()->get('error') }}
          +                    </div>
          +                @endif
          +                @yield('content')
          +            </div>
          +        @else
          +            @yield('content')
          +        @endif
          +
          +    </div>
          +</div>
          +@include('partials.footer')
          +<!-- jQuery -->
          +<script src="{{ asset('theme/jquery/dist/jquery.min.js') }}"></script>
          +<!-- Bootstrap -->
          +<script src="{{ asset('theme/bootstrap/dist/js/bootstrap.min.js') }}"></script>
          +<!-- Datepicker Script-->
          +<script src="{{asset('/')}}js/datepicker.js"></script>
          +<!-- FastClick -->
          +<script src="{{ asset('theme/fastclick/lib/fastclick.js') }}"></script>
          +
          +<!-- NProgress -->
          +<script src="{{ asset('theme/nprogress/nprogress.js') }}"></script>
          +
          +<!-- validation Scripts -->
          +<script src="{{asset('/')}}js/jsvalidate/jquery.validate.min.js"></script>
          +
          +<!-- bootstrap-wysiwyg -->
          +<script src="{{ asset('theme/bootstrap-wysiwyg/js/bootstrap-wysiwyg.min.js') }}"></script>
          +<script src="{{ asset('theme/jquery.hotkeys/jquery.hotkeys.js') }}"></script>
          +<script src="{{ asset('theme/google-code-prettify/src/prettify.js') }}"></script>
          +
          +<!-- summer note -->
          +<script src="{{asset('/')}}js/summernote/summernote.min.js"></script>
          +
          +<!-- Custom Theme Scripts -->
          +<script src="{{ asset('theme/build/js/custom.min.js') }}"></script>
          +
          +
          +<!-- Magnific Popup Script-->
          +<script src="{{ asset('js/magnify/jquery.magnific-popup.js') }}"></script>
          +
          +<!-- Sweetalert Script-->
          +<script src="{{ asset('js/sweetalert2/sweetalert2.min.js') }}"></script>
          +
          +<script src="{{asset('/')}}js/Common/common-helper.js?v=1.0.4"></script>
          +
          +<!-- <script>
          +$(window).ready(function(){
          +    $(".right_col").css("height", $(document).height());
          +    $(".left_col").css("height", $(document).height());
          +});
          +</script> -->
          +
          +<script type="text/javascript">
          +    function validDate(dValue) {
          +        if (dValue == '') dValue = $('#exp_date').val();
          +        var result = false;
          +        dValue = dValue.split('/');
          +        var pattern = /^\d{2}$/;
          +        var pattern1 = /^\d{4}$/;
          +        if (dValue[0] < 1 || dValue[0] > 12)
          +            result = true;
          +
          +        if (!pattern.test(dValue[0]) || !pattern1.test(dValue[1]))
          +            result = true;
          +
          +        if (dValue[2])
          +            result = true;
          +
          +        if (result) {
          +            alert("Please enter a valid date in MM/YYYY format.");
          +            $('#exp_date').val('');
          +            return false;
          +        } else {
          +            return true;
          +        }
          +    }
          +    const globalAjaxRequest = async (url,method,data = {})=>{
          +        $('#spinner').show();
          +        let response = {}
          +        try {
          +            response = await $.ajax({
          +                type: method,
          +                url: url,
          +                data: data
          +            })
          +            if (response) {
          +                $('#spinner').hide();
          +            }
          +        }catch (e) {
          +            $('#spinner').hide();
          +        }
          +        return response;
          +    }
          +</script>
          +
          +<script type="text/javascript" src="https://cdn.ywxi.net/js/1.js" async></script>
          +@stack('script')
          +</body>
          +</html>
          diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
          new file mode 100644
          index 0000000..1f5dd87
          --- /dev/null
          +++ b/resources/views/layouts/app.blade.php
          @@ -0,0 +1,168 @@
          +<!DOCTYPE html>
          +<html lang="en">
          +<head>
          +    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +    <!-- Meta, title, CSS, favicons, etc. -->
          +    <meta charset="utf-8">
          +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
          +    <meta name="csrf-token" content="{{ csrf_token() }}"/>
          +    <meta name="viewport" content="width=device-width, initial-scale=1">
          +    <link rel="shortcut icon" href="{{ asset('images/favicon.png') }}"/>
          +    <title>{{ config('app.name') }}</title>
          +
          +    <!-- Bootstrap -->
          +    <link href="{{ asset('theme/bootstrap/dist/css/bootstrap.min.css') }}" rel="stylesheet">
          +    <!-- Font Awesome -->
          +    <link href="{{ asset('theme/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet">
          +    <!-- NProgress -->
          +    <link href="{{ asset('theme/nprogress/nprogress.css') }}" rel="stylesheet">
          +    <!-- bootstrap-progressbar -->
          +    <link href="{{ asset('theme/bootstrap-progressbar/css/bootstrap-progressbar-3.3.4.min.css') }}" rel="stylesheet">
          +    <!-- bootstrap-daterangepicker -->
          +    <link href="{{ asset('theme/bootstrap-daterangepicker/daterangepicker.css') }}" rel="stylesheet">
          +    <!-- Custom Theme Style -->
          +
          +    <!-- bootstrap-wysiwyg -->
          +    <link href="{{ asset('theme/google-code-prettify/bin/prettify.min.css') }}" rel="stylesheet">
          +    <!-- Select2 -->
          +    <link href="{{ asset('theme/select2/dist/css/select2.min.css') }}" rel="stylesheet">
          +    <link rel="stylesheet" href="{{ asset('css/loader.css') }}">
          +    <link rel="stylesheet" href="{{ asset('css/spinner.css') }}">
          +    <link href="{{ asset('theme/build/css/custom.min.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/improved.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/rtg_custom.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/iq-default.min.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/smart_credit_report.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/custom.css') }}" rel="stylesheet">
          +    <!-- Magnific Popup Style-->
          +    <link href="{{ asset('js/magnify/magnific-popup.css') }}" rel="stylesheet">
          +    <style>
          +        .container_body{
          +            height: fit-content;
          +            min-height: 752px !important;
          +        }
          +        .swal2-styled.swal2-confirm {
          +            font-size: 1.3em !important;
          +        }
          +        .modal-header-warning {
          +             color:#fff;
          +             padding:9px 15px;
          +             border-bottom:1px solid #eee;
          +             background-color: #f0ad4e;
          +             -webkit-border-top-left-radius: 5px;
          +             -webkit-border-top-right-radius: 5px;
          +             -moz-border-radius-topleft: 5px;
          +             -moz-border-radius-topright: 5px;
          +             border-top-left-radius: 5px;
          +             border-top-right-radius: 5px;
          +         }
          +        .modal-header-info {
          +            color:#fff;
          +            padding:9px 15px;
          +            border-bottom:1px solid #eee;
          +            background-color: #5bc0de;
          +            -webkit-border-top-left-radius: 5px;
          +            -webkit-border-top-right-radius: 5px;
          +            -moz-border-radius-topleft: 5px;
          +            -moz-border-radius-topright: 5px;
          +            border-top-left-radius: 5px;
          +            border-top-right-radius: 5px;
          +        }
          +        .modal-width{
          +            width: 35%;
          +        }
          +        ul#remove {
          +            list-style-type: none;
          +            padding: 0;
          +        }
          +    </style>
          +    @stack('css')
          +
          +</head>
          +
          +<body class="nav-md"> <!-- nav-sm -->
          +<div id="spinner" class="loading">
          +    <div id="loading">
          +        <span class="timer-loader">Loading…</span>
          +    </div>
          +</div>
          +<div class="container body">
          +    <div class="main_container">
          +        @if (Auth::check())
          +            @include('partials/sidemenu')
          +            @include('partials/topbar')
          +            <div class="right_col container_body" role="main" >
          +                @if ($errors->any())
          +                    <div class="alert alert-danger" style="margin-top: 50px" onclick="this.classList.add('hidden');">
          +                        <ul id="remove">
          +                            @foreach ($errors->all() as $error)
          +                                <li>{{ $error }}</li>
          +                            @endforeach
          +                        </ul>
          +                    </div>
          +                @endif
          +                @if (session()->has('success'))
          +                    <div class="alert alert-success" style="margin-top: 50px" onclick="this.classList.add('hidden');">
          +                        {{ session()->get('success') }}
          +                    </div>
          +                @endif
          +                @if (session()->has('error'))
          +                    <div class="alert alert-danger" style="margin-top: 50px" onclick="this.classList.add('hidden');">
          +                        {{ session()->get('error') }}
          +                    </div>
          +                @endif
          +                @yield('content')
          +                @include('partials.modal_views')
          +                @include('partials.footer')
          +            </div>
          +        @else
          +            @yield('content')
          +        @endif
          +    </div>
          +</div>
          +
          +
          +
          +<!-- jQuery -->
          +<script src="{{ asset('theme/jquery/dist/jquery.min.js') }}"></script>
          +<!-- Bootstrap -->
          +<script src="{{ asset('theme/bootstrap/dist/js/bootstrap.min.js') }}"></script>
          +<!-- FastClick -->
          +<script src="{{ asset('theme/fastclick/lib/fastclick.js') }}"></script>
          +
          +<!-- NProgress -->
          +<script src="{{ asset('theme/nprogress/nprogress.js') }}"></script>
          +
          +<!-- bootstrap-wysiwyg -->
          +<script src="{{ asset('theme/bootstrap-wysiwyg/js/bootstrap-wysiwyg.min.js') }}"></script>
          +<script src="{{ asset('theme/jquery.hotkeys/jquery.hotkeys.js') }}"></script>
          +<script src="{{ asset('theme/google-code-prettify/src/prettify.js') }}"></script>
          +
          +<!-- summer note -->
          +<script src="{{asset('/')}}js/summernote/summernote.min.js"></script>
          +
          +<!-- validation Scripts -->
          +<script src="{{asset('/')}}js/jsvalidate/jquery.validate.min.js"></script>
          +
          +<!-- Custom Theme Scripts -->
          +<script src="{{ asset('theme/build/js/custom.min.js') }}"></script>
          +
          +
          +<!-- Magnific Popup Script-->
          +<script src="{{ asset('js/magnify/jquery.magnific-popup.js') }}"></script>
          +
          +<!-- Sweetalert Script-->
          +<script src="{{ asset('js/sweetalert2/sweetalert2.min.js') }}"></script>
          +
          +<script src="{{asset('/')}}js/Common/common-helper.js?v=1.0.4"></script>
          +<!-- <script>
          +$(window).ready(function(){
          +    $(".right_col").css("height", $(document).height());
          +    $(".left_col").css("height", $(document).height());
          +});
          +</script> -->
          +
          +<script type="text/javascript" src="https://cdn.ywxi.net/js/1.js" async></script>
          +@stack('script')
          +</body>
          +</html>
          diff --git a/resources/views/layouts/lg-pdf-css.blade.php b/resources/views/layouts/lg-pdf-css.blade.php
          new file mode 100644
          index 0000000..2c4aaa7
          --- /dev/null
          +++ b/resources/views/layouts/lg-pdf-css.blade.php
          @@ -0,0 +1,87 @@
          +<head>
          +    <title>pdf</title>
          +    <!-- Bootstrap -->
          +    <link href="{{ asset('theme/bootstrap/dist/css/bootstrap.min.css') }}" rel="stylesheet">
          +    <link href="{{ asset('css/iq-default.min.css') }}" rel="stylesheet">
          +    <style type="text/css">
          +      body {
          +          font-size: 18px;
          +          margin-top: 120px;
          +          font-family: -webkit-body;
          +          color: black;
          +          margin-left: 50px;
          +          margin-right: 50px;
          +          text-align: justify;
          +
          +      }
          +      .span-red { color: red; }
          +      .span-large { font-size: 20px; text-align: center; }
          +      .span-ul {text-decoration: underline; color: #333;background-color: yellow;font-size: 18px;}
          +      .span-blue { color: #8aaed3;font-size: 20px; }
          +      .txt-cen-ul {text-align: center;text-decoration: underline;font-weight: bold;}
          +      .span-ul2 {text-decoration: underline; color: #333;}
          +      /* div.cb-content * {
          +        background-color: #eded80;
          +      } */
          +      .bg-yellow {
          +          background-color:#e3f10d;
          +          font-weight: bold;
          +        }
          +      .bg-pink {
          +        background-color: #ead0ea;
          +      }
          +      .bg-tra {
          +        background-color: #DAB96A;
          +      }
          +      .bg-exp {
          +        background-color: #98BDC5;
          +      }
          +      .bg-equ {
          +        background-color: #CBD06C;
          +      }
          +      .bg-yellow2 {
          +        background-color:#e8de5e;
          +      }
          +      .cb-br {
          +        font-weight: bold;
          +        font-size: 16px;
          +        background-color: #ccc;
          +      }
          +      .span-cl-green {
          +        color: #1bd618
          +      }
          +      .addr_hsrty{
          +        font-size:9px;
          +        border-spacing: 0px;
          +        padding: 0px;
          +      }
          +      .addr_hsrty td{
          +        padding: 0px;
          +      }
          +
          +      table.addr_hsrty td.headerTUC, table.addr_hsrty td.headerEXP, table.addr_hsrty td.headerEQF {
          +        background-color: transparent !important;
          +        color: black;
          +      }
          +      .cl-diff {
          +        font-weight: bold !important;
          +        font-size: 13px !important;
          +        /*color: red;
          +        mix-blend-mode: exclusion;*/
          +      }
          +      .clr-red {
          +        color: red;
          +      }
          +      .bg-light-red {
          +        background-color: #f19191;
          +      }
          +      .span-simple-ul {text-decoration: underline;}
          +      .acct-cb-img table{
          +          width: 100% !important;
          +      }
          +
          +      .lower-part table{
          +          width: 100%;
          +      }
          +    </style>
          +  </head>
          diff --git a/resources/views/layouts/lg-pdf.blade.php b/resources/views/layouts/lg-pdf.blade.php
          new file mode 100644
          index 0000000..d41d5e2
          --- /dev/null
          +++ b/resources/views/layouts/lg-pdf.blade.php
          @@ -0,0 +1,91 @@
          +<!DOCTYPE html>
          +<html>
          +@include('layouts.lg-pdf-css')
          +<body>
          +<div class="container" style="margin-top: 30px;">
          +    <div class="row" id="pdf">
          +        <div class="row"><br></div>
          +        <div class="row">
          +            <table style="width:100%">
          +                <tr>
          +                    <td style="width:50%">
          +                        <span style="float:left" class="span-red">Today&apos;s Date is: <span
          +                                class="span-ul">{{$universal['today']}}</span></span>
          +                    </td>
          +                    <td style="width:50%">
          +                        <span
          +                            class="span-large">Credit Report Data Resource:</span> <span
          +                            style="font-size:16px;" class="span-ul" style="float: right;">{{$universal['cr_resource']}}
          +            </span>
          +                    </td>
          +                </tr>
          +            </table>
          +            <p>
          +
          +
          +            </p>
          +        </div>
          +        <br>
          +        <div class="row">
          +            <p class="span-red">My First and Last Name is and ONLY is&nbsp; <span
          +                    class="span-ul">{{$universal['name']}}</span></p>
          +        </div>
          +        <div class="row">
          +            <p class="span-red">My Address Street Number, Street Name, City, and State is and only is</p>
          +            <p class="span-ul">{{$universal['address']}}</p><br>
          +            <p class="span-red">My Date of Birth is and only is&nbsp; <span class="span-ul">{{$universal['dob']}}</span>
          +            </p>
          +            <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is
          +                &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +        </div>
          +        <div class="row">
          +            <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and
          +                MANDATED REPORTED information per FCRA regulations, any and all others that might be reported now or
          +                else wise I DEMAND, as is my lawful RIGHT(s) to do so, that you annul permanently and immediately any
          +                and all deficient of these afore-noted conditions, mentioned or not, especially if related directly or
          +                indirectly to any potentially injurious information be it true or unknown! Again, I DO NOT AUTHORIZE you
          +                to mis-report any mis-information now or ever, please review and ENSURE your adequate and full
          +                accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +        </div>
          +        <div class="row">
          +            <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to
          +                be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much
          +                less report without infringing my consumer right(s).</p>
          +        </div>
          +        <div class="row">
          +            <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER ADDRESSES to be
          +                retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much
          +                less report without infringing my consumer right(s).</p>
          +        </div>
          +        <div class="row">
          +            <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported,
          +                if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without
          +                infringing my consumer right(s)..</p>
          +        </div>
          +        <div class="row">
          +            <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be
          +                retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much
          +                less report without infringing my consumer right(s).</p>
          +        </div>
          +        <div class="row">
          +            <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained
          +                or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report
          +                without infringing my consumer right(s).</p>
          +        </div>
          +        <div class="row">
          +            <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if
          +                ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without
          +                infringing my consumer right(s).</p>
          +        </div>
          +        <div class="row">
          +            <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/
          +                roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your
          +                legitimate AUTHORITY to retain much less report without infringing my consumer right(s).</p>
          +        </div>
          +
          +        @yield('content')
          +
          +    </div>
          +</div>
          +</body>
          +</html>
          diff --git a/resources/views/layouts/lg-pdf2.blade.php b/resources/views/layouts/lg-pdf2.blade.php
          new file mode 100644
          index 0000000..72620b8
          --- /dev/null
          +++ b/resources/views/layouts/lg-pdf2.blade.php
          @@ -0,0 +1,42 @@
          +<!DOCTYPE html>
          +<html>
          +  @include('layouts.lg-pdf-css')
          +  <body>
          +    <div class="container" style="margin-top: 30px;">
          +      <div class="row" id="pdf">
          +        <div class="row"><br></div>
          +        <div class="row">
          +          @yield('header_content')
          +<!--          <p><span style="float:left" class="span-red">Today&apos;s Date is: <span class="span-ul">{{$universal['today']}}</span></span>                <span style="margin-left: 90px;width: 200px;" class="span-large">Credit Report Data Resource:</span> <span style="font-size:16px;" class="span-ul" style="float: right;">{{$universal['cr_resource']}}  </span></p>-->
          +            <table style="width:100%">
          +                <tr>
          +                    <td style="width:50%">
          +                        <span style="float:left" class="span-red">Today&apos;s Date is: <span
          +                                class="span-ul">{{$universal['today']}}</span></span>
          +                    </td>
          +                    <td style="width:50%">
          +                        <span
          +                            style="margin-left: 90px;width: 150px;"
          +                            class="span-large">Credit Report Data Resource:</span> <span
          +                            style="font-size:16px;" class="span-ul" style="float: right;">{{$universal['cr_resource']}}
          +            </span>
          +                    </td>
          +                </tr>
          +            </table>
          +        </div><br>
          +        <div class="row">
          +          <p class="span-red">My First and Last Name is and ONLY is&nbsp; <span class="span-ul">{{$universal['name']}} </span></p>
          +        </div>
          +        <div class="row">
          +          <p class="span-red">My Address Street Number, Street Name, City, and State is and only is</p>
          +          <p class="span-ul">{{$universal['address']}} </p><br>
          +          <p class="span-red">My Date of Birth is and only is&nbsp; <span class="span-ul">{{$universal['dob']}} </span></p>
          +
          +        </div>
          +
          +        @yield('content')
          +
          +      </div>
          +    </div>
          +  </body>
          +</html>
          diff --git a/resources/views/layouts/register.blade.php b/resources/views/layouts/register.blade.php
          new file mode 100644
          index 0000000..eea09b2
          --- /dev/null
          +++ b/resources/views/layouts/register.blade.php
          @@ -0,0 +1,43 @@
          +<!DOCTYPE html>
          +<html lang="en">
          +<head>
          +    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          +    <!-- Meta, title, CSS, favicons, etc. -->
          +    <meta charset="utf-8">
          +    <meta http-equiv="X-UA-Compatible" content="IE=edge">
          +    <meta name="csrf-token" content="{{ csrf_token() }}"/>
          +    <meta name="viewport" content="width=device-width, initial-scale=1">
          +    <link rel="shortcut icon" href="{{ asset('images/favicon.png') }}"/>
          +    <title>{{ config('app.name') }}</title>
          +    <link rel="stylesheet" href="{{asset('css/fonts/css/all.css')}}">
          +
          +    <!-- Meta Pixel Code -->
          +    @include('partials.meta_pixel')
          +    <!-- End Meta Pixel Code -->
          +
          +    <!-- Google tag (gtag.js) -->
          +    @include('partials.google_tag')
          +    <!-- End Google tag (gtag.js) -->
          +</head>
          +
          +<body class="nav-md"> <!-- nav-sm -->
          +
          +<div id="app">
          +    <App/>
          +</div>
          +
          +<script>
          +    const APP_BASE_ROUTE = '{{config('app.APP_BASE_ROUTE')}}'
          +    const API_BASE_URL = '{{config('app.API_BASE_URL')}}'
          +    const APP_URL = '{{config('app.url')}}'
          +    const SECURITY_KEY = '{{generateUniqueId()}}'
          +    const REPORT_PROVIDER = '{{config('app.REPORT_PROVIDER')}}'
          +    const APP_NAME = '{{config('app.name')}}'
          +    const COMPANY_NAME = '{{config('app.COMPANY_NAME')}}'
          +    const IS_FREE = '{{getSession('isFree')}}'
          +</script>
          +<script src="{{ asset('js/vue/app.js') }}"></script>
          +@stack('script')
          +</body>
          +</html>
          +
          diff --git a/resources/views/lg/edit.blade.php b/resources/views/lg/edit.blade.php
          new file mode 100644
          index 0000000..30b6d48
          --- /dev/null
          +++ b/resources/views/lg/edit.blade.php
          @@ -0,0 +1,515 @@
          +
          +@extends('layouts.app')
          +@section('styles')
          +  <link href="{{ asset('public/css/datepicker.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/css/evlg-page.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/js/summernote/summernote.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/css/bootstrap-multiselect.css') }}" rel="stylesheet">
          +
          +@endsection
          +@section('content')
          +<div class="container">
          +   <div class="row">
          +      <div class="col-md-12">
          +         <div class="panel panel-default panel-frm">
          +            <div class="panel-heading">
          +               <h1>Epic-Velocity Template Letter</h1>
          +               <p>The EV-TLG is the Credit Repair Champion’s and the Metro 2 Compliance Academy’s Official Template Letter Generator Attack Wave System Software! </p>
          +            </div>
          +            <div class="panel-body">
          +               @if (session('status'))
          +               <div class="alert alert-success">
          +                  {{ session('status') }}
          +               </div>
          +               @endif
          +               <div class="clearfix"></div>
          +               <form method="POST" action="{{ url('/lg/update/'.$model->id) }}" accept-charset="UTF-8" enctype="multipart/form-data" id="lg-form">
          +                  <div class="row">
          +                     {{ csrf_field() }}
          +                     <input type="hidden" name="action" value="edit">
          +                     <div class="col-md-12 col-sm-12 col-xs-12">
          +                        <div class="x_panel">
          +                           <div class="x_content">
          +                            <div class="col-md-12  text-center">
          +                                <span class="glyphicon glyphicon-play-circle video-icon" title="Need Help" onclick="alert('Vidoes coming soon!')"></span>
          +                                <div class="col-md-6 col-md-offset-3 ">
          +                                <div class="form-group">
          +                                    <label>Select Client</label>
          +                                    <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                    <select name="client_id" onchange="getClientEdit()" class="form-control" id="client_id">
          +                                        <option value="">Please select</option>
          +                                        @foreach ($users as $key => $obj)
          +                                          <option value="{{$obj->id}}"
          +                                           <?php if($model->client_id==$obj->id){?> selected="selected" <?php } ?>
          +
          +                                            >{{$obj->firstname}}</option>
          +                                        @endforeach
          +                                    </select>
          +                                    <input type="hidden" name="client_name" id="client_name" value="">
          +                                    <input type="hidden" name="date_time" id="date_time" value="">
          +                                    <img id="client-loader" style="display: none;"   src="{{ asset('public/images/ajax-loader.gif') }}">
          +                                 </div>
          +
          +                               </div>
          +
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                 <div class="form-group">
          +                                    <label>Today’s Date is</label>
          +                                    <input id="today" type="text" class="form-control" name="today"  required autofocus >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                 <div class="form-group">
          +                                    <label>Credit Report Data Resource or Monitoring</label>
          +                                    <input id="cr_resource" type="text" class="form-control" name="cr_resource"  >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label><span class="req-span">*</span>Name (at least First and Last Name)</label>
          +                                    <input id="name" type="text" class="form-control" name="name"  required  >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label><span class="req-span">*</span>Address (at least Street Number, Street Name, City, State spelled out)</label>
          +                                    <input id="address" type="text" class="form-control" name="address"    placeholder="">
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Date of Birth</label>
          +                                    <input id="dob" type="text" class="form-control datepicker" name="dob"    placeholder="">
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Social Security Number (last four ONLY displayed on ANY DOCUMENT)</label>
          +                                    <input id="ssn" type="text" class="form-control" name="ssn" maxlength="12" placeholder=""  required>
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Personal Tracking Number</label>
          +                                    <input id="p_tracking_number" type="text"   class="form-control" name="p_tracking_number"  value="{{$model->p_tracking_number}}">
          +                                    <span class="glyphicon glyphicon-refresh" title="Regenrate" id="btn-regenerate" onclick="gen_rand()"></span>
          +                                 </div>
          +                                 <div class="form-group" id="univ-dest-div">
          +                                     <label>Universal Template Destinatioin(s)</label><br>
          +                                     <select id="univ-dest" multiple="multiple" class="form-control" name="destination[]">
          +                                        <optgroup label="EXPERIAN DESTINATIONS">
          +                                          <option value="EXPERIAN PO BOX 9701, ALLEN, TX 75013" @if(in_array( 'EXPERIAN PO BOX 9701, ALLEN, TX 75013',$model->univ_dest )) selected="selected" @endif  > EXPERIAN  PO BOX 9701, ALLEN, TX 75013</option>
          +                                          <option value="EXPERIAN PO BOX 4500, ALLEN, TX 75013"  @if(in_array( 'EXPERIAN PO BOX 4500, ALLEN, TX 75013',$model->univ_dest )) selected="selected" @endif >EXPERIAN  PO BOX 4500, ALLEN, TX 75013</option>
          +                                        </optgroup>
          +                                        <optgroup label="EQUIFAX DESTINATIONS">
          +                                          <option value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256" @if(in_array( 'EQUIFAX PO Box740256, ATLANTA,GA 30374-0256',$model->univ_dest )) selected="selected" @endif >EQUIFAX  PO Box740256, ATLANTA,GA 30374-0256</option>
          +                                          <option value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241" @if(in_array( 'EQUIFAX PO Box740241, ATLANTA,GA 30374-0241',$model->univ_dest )) selected="selected" @endif >EQUIFAX  PO Box740241, ATLANTA,GA 30374-0241</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="TRANS UNION DESTINATIONS">
          +                                          <option value="Trans Union PO Box 2000, CHESTER, PA 19016-2000" @if(in_array( 'Trans Union PO Box 2000, CHESTER, PA 19016-2000',$model->univ_dest )) selected="selected" @endif >Trans Union PO Box 2000, CHESTER, PA 19016-2000</option>
          +                                          <option value="Trans Union PO Box 1000, CHESTER, PA 19022-1000" @if(in_array( 'Trans Union PO Box 1000, CHESTER, PA 19022-1000',$model->univ_dest )) selected="selected" @endif>Trans Union  PO Box 1000, CHESTER, PA 19022-1000</option>
          +                                          <option value="Trans Union PO Box 2000, CHESTER, PA 19022-2000" @if(in_array( 'Trans Union PO Box 2000, CHESTER, PA 19022-2000',$model->univ_dest )) selected="selected" @endif>Trans Union  PO Box 2000, CHESTER, PA 19022-2000</option>
          +                                        </optgroup>
          +                                        <optgroup label="INNOVIS DESTINATIONS">
          +                                          <option value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640" @if(in_array( 'INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640',$model->univ_dest )) selected="selected" @endif>INNOVIS   PO Box 1640, Pittsburgh, PA 15230-1640</option>
          +                                          <option value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088" @if(in_array( 'Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088',$model->univ_dest )) selected="selected" @endif>Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="LEXISNEXIS DESTINATIONS">
          +                                          <option value="LexisNexis PO Box 105108, Atlanta, GA 30348" @if(in_array( 'LexisNexis PO Box 105108, Atlanta, GA 30348',$model->univ_dest )) selected="selected" @endif>LexisNexis PO Box 105108, Atlanta, GA 30348</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="SAGESTREAM LLC DESTINATIONS">
          +                                          <option value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108" @if(in_array( 'SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108',$model->univ_dest )) selected="selected" @endif>SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="CHEX SYSTEMS DESTINATIONS">
          +                                          <option value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125" @if(in_array( 'Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125',$model->univ_dest )) selected="selected" @endif>Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="MIB INC DESTINATIONS">
          +                                          <option value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734" @if(in_array( '(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734',$model->univ_dest )) selected="selected" @endif>(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734</option>
          +                                          <option value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7" @if(in_array( '(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7',$model->univ_dest )) selected="selected" @endif>(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="FACTOR TRUST DESTINATIONS">
          +                                          <option value="FactorTrust PO Box 3653,Alpharhetta, GA 30023" @if(in_array( 'FactorTrust PO Box 3653,Alpharhetta, GA 30023',$model->univ_dest )) selected="selected" @endif>FactorTrust PO Box 3653,Alpharhetta, GA 30023</option>
          +                                        </optgroup>
          +                                        <optgroup label="DATA FURNISHERS">
          +                                          <option value="" >DATA FURNISHERS</option>
          +                                        </optgroup>
          +                                        <optgroup label="OTHER">
          +                                          <option value="1" >Other</option>
          +                                        </optgroup>
          +                                      </select>
          +                                 </div>
          +                                 <div class=" form-group " id="univ-df" style="display: none;">
          +                                     <div class="form-group">
          +                                        <label>Data Furnishers</label>
          +                                        <select name="destination[]" class="form-control select-df" id="select-df" >
          +                                        </select>
          +                                      </div>
          +                                  </div>
          +                                 <div class=" form-group univ-other" id="univ-other" style="display: none;">
          +                                    <div>
          +                                      <input type="text" name="destination[]" class="form-control" placeholder="OTHER" style="width: 93%">
          +                                       <span class="glyphicon glyphicon-plus btn-univ-add-other"  title="Add Other"></span>
          +                                       <span class="glyphicon glyphicon-minus btn-univ-remove-other"  title="Remove Other"></span>
          +                                    </div>
          +
          +                                  </div>
          +                               </div>
          +                               <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label class="check-btn" style="font-size:14px;color:red;"><input type="checkbox" name="exclude_all" value="1" id="exclude-all"  onchange="excludeall()">&nbsp;<strong>Exclude All Content Boxes</strong><span class="cr"></span></label>
          +                                 </div>
          +                              </div>
          +
          +                           </div>
          +                        </div>
          +                     </div>
          +                     <script type="text/javascript">
          +                        var item_count = 0;
          +                        var image_count = 1;
          +                     </script>
          +
          +                     <div class="col-md-12 col-sm-12 col-xs-12 " >
          +                        <div class="x_panel">
          +                           <div class="x_content">
          +                              <div id="content-area">
          +
          +                                @foreach ($model->form_data as $key => $obj)
          +                                <div class="col-md-12 main-content" id="main-content-{{$key}}">
          +                                  <fieldset class="add-nother" >
          +
          +                                    <legend class="add-nother">
          +                                      Content Box Work Area &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-play-circle video-icon" title="Need Help" onclick="alert('Vidoes coming soon!')"></span><br>
          +                                      <span class="fa-stack fa-lg" style="font-size:16px;font-weight: 500;">
          +                                          <i class="fa fa-circle fa-stack-2x"></i>
          +                                          <i class="fa-stack-1x fa-inverse">{{($key+1)}}</i>
          +                                      </span>
          +                                    </legend>
          +
          +                                    <div class="col-md-9">
          +                                        <div class="row">
          +                                            <div class="col-md-4" style="overflow: hidden;">
          +                                                <div class="form-group file-txt">
          +                                                    <label>ADD IMAGE </label>
          +                                                    <input type="file" name="info_item[file][]" class="" id="content_file_{{$key}}">
          +                                                </div>
          +                                                <div class="col-md-1" style="margin-top: 5px;padding-left: 0px;">
          +                                                  <label ><a onclick="removeContentImage({{$key}})"  style="padding: 1px 6px;" class="btn btn-danger" title="Clear attached file"><i class="fa fa-minus"></i></a></label>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-8">
          +                                              <div class="form-group" style="clear: both;" >
          +                                                  <label>DEROGATORY Decisions</label>
          +                                                  <select name="info_item[wave][]" id="wave-{{$key}}" class="form-control" onchange="showDtype(this,{{$key}})" required="">
          +                                                      <option value="">Please select template</option>
          +                                                      @if(Auth::user()->can('Wave1'))
          +                                                      <option value="w1" @if($obj['wave']=='w1') selected="selected" @endif >
          +                                                      I want to use a Wave 1 attack for this content box's items ( Day 1-19)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave2'))
          +                                                      <option value="w2" disabled="disabled"  @if($obj['wave']=='w2') selected="selected" @endif >I want to use a Wave 2 attack for this content box's items (Day 20-39)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave3'))
          +                                                      <option value="w3" disabled="disabled"  @if($obj['wave']=='w3') selected="selected" @endif>I want to use a Wave 3 attack for this content box's items (Day 40-59)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave4'))
          +                                                      <option value="w4" disabled="disabled"  @if($obj['wave']=='w4') selected="selected" @endif>I want to use a Wave 4 attack for this content box's items (Day 60-79)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave5'))
          +                                                      <option value="w5" disabled="disabled"  @if($obj['wave']=='w5') selected="selected" @endif>I want to use a Wave 5 attack for this content box's items (Day 80-99)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave6'))
          +                                                      <option value="w6" disabled="disabled"  @if($obj['wave']=='w6') selected="selected" @endif>I want to use a Wave 6+ attack for this content box's items (Day 100-119)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave7'))
          +                                                      <option value="w7" disabled="disabled"  @if($obj['wave']=='w7') selected="selected" @endif>I want to use a RANDOM WAVE # Attack for this content box's  item (Day ??)</option>
          +                                                       @endif
          +                                                  </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both" id="div-dtype-{{$key}}">
          +                                                  <label>Type of Reported Issues</label>
          +                                                  <select name="info_item[letter_type][]" id="dtype-{{$key}}" class="form-control" onchange="showTemplate(this,{{$key}})" required="">
          +                                                      <option value="">Please select template</option>
          +                                                      <option value="1" @if($obj['letter_type']=='1') selected="selected" @endif>Personal Identifier Information</option>
          +                                                      <option value="2" @if($obj['letter_type']=='2') selected="selected" @endif>INQUIRY(ies) information</option>
          +                                                      <option value="3" @if($obj['letter_type']=='3') selected="selected" @endif>LATE PAYMENT (not Student Loan) Information</option>
          +                                                      <option value="4" @if($obj['letter_type']=='4') selected="selected" @endif>STUDENT LOAN LATE PAYMENT Information</option>
          +                                                      <option value="5" @if($obj['letter_type']=='5') selected="selected" @endif>Regular Non-Medical Collection Information</option>
          +                                                      <option value="6" @if($obj['letter_type']=='6') selected="selected" @endif>Medical Collection Information</option>
          +                                                      <option value="7" @if($obj['letter_type']=='7') selected="selected" @endif>CHARGE OFF Information</option>
          +                                                      <option value="8" @if($obj['letter_type']=='8') selected="selected" @endif>REPOSSESSION Information</option>
          +                                                      <option value="9" @if($obj['letter_type']=='9') selected="selected" @endif>PUBLIC RECORDS Information</option>
          +                                                      <option value="10" @if($obj['letter_type']=='10') selected="selected" @endif>GENERAL DELINQUENT , DEROGATORY, or QUESTIONABLY REPORTED Information</option>
          +                                                  </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both;" id="template-{{$key}}">
          +                                                  <label>TEMPLATE LETTER FOR BUREAU</label>
          +                                                  <select name="info_item[template][]" id="lt_template-{{$key}}" class="form-control"  required="">
          +                                                    <option value="">Please select template</option>
          +                                                    @if($obj['letter_type']=='1')
          +                                                      <option value="PI-Ew1L1D1-bureau_1" @if($obj['template']=='PI-Ew1L1D1-bureau_1') selected="selected" @endif>&nbsp;For Bureaus use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                    @elseif($obj['letter_type']=='2')
          +                                                      <option value="INQ-Ew1L2D1-bureau_2" @if($obj['template']=='INQ-Ew1L2D1-bureau_2') selected="selected" @endif>&nbsp;For Bureaus use Ew1L2D1 bureaus Inquiry(ies)</option>
          +                                                    @elseif($obj['letter_type']=='3')
          +                                                      <optgroup label="If ONLY 1 or 2 Lates reported in last 4 years">
          +                                                        <option value="NLP12-Ew1L1D1-bureau_1" @if($obj['template']=='NLP12-Ew1L1D1-bureau_1') selected="selected" @endif >&nbsp;&nbsp;For Bureaus use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                      </optgroup>
          +                                                      <optgroup label="If 3+ Lates reported in last 4 years">
          +                                                        <option value="NLP3-Ew1LPRD1-bureau_17" @if($obj['template']=='NLP3-Ew1LPRD1-bureau_17') selected="selected" @endif  title="For Bureaus use Ew1LPRD1 BureausORcredittors for accounts with AT LEAST(3+) Late Payments in last 4 years(48 months) with GOAL of REMOVAL FROM REPORTING (but would be HAPPY with PAANL or PAANLPR status)">&nbsp;&nbsp;For Bureaus use Ew1LPRD1 BureausORcredittors for accounts with AT LEAST(3+) Late Payments in last 4 years(48 months) with GOAL of REMOVAL FROM REPORTING (but would be HAPPY with PAANL or PAANLPR status)</option>
          +                                                      </optgroup>
          +                                                    @elseif($obj['letter_type']=='4')
          +                                                      <optgroup label="If a Student Loan with ONLY 1 or 2 Late Payments (that you WANT TO TRY FOR PAANL STATUS) reported in last 4 years">
          +                                                        <option value="SL12-Ew1L9D1-bureau_9" @if($obj['template']=='SL12-Ew1L9D1-bureau_9') selected="selected" @endif>&nbsp;&nbsp;For Bureaus use Ew1L9D1 for PAANL STUDENT LOAN</option>
          +                                                      </optgroup>
          +                                                      <optgroup label="If a Student Loan with 3+ Late Payments (That you WANT to attempt REMOVAL of REPORTING)  reported in last 4 years">
          +                                                        <option value="SL3-Ew1L11D1-bureau_11" @if($obj['template']=='SL3-Ew1L11D1-bureau_11') selected="selected" @endif>&nbsp;&nbsp;For Bureaus use Ew1L11D1 bureau for STUDENT LOAN DELETION</option>
          +                                                      </optgroup>
          +                                                    @elseif($obj['letter_type']=='5')
          +                                                      <option value="NMCOL-Ew1L5D1-bureau_5" @if($obj['template']=='NMCOL-Ew1L5D1-bureau_5') selected="selected" @endif>&nbsp;For Bureaus use Ew1L5D1 bureau for Non-Medical Collection</option>
          +
          +                                                    @elseif($obj['letter_type']=='6')
          +                                                      <option value="MCOL-Ew1L7D1-bureau_7" @if($obj['template']=='MCOL-Ew1L7D1-bureau_7') selected="selected" @endif>&nbsp;For Bureaus use Ew1L7D1 bureau for Medical Collections</option>
          +
          +                                                    @elseif($obj['letter_type']=='7')
          +                                                      <option value="COFF-Ew1L4D1-bureau_4" @if($obj['template']=='COFF-Ew1L4D1-bureau_4') selected="selected" @endif>&nbsp;For Bureaus use Ew1L4D1 bureau for CHARGE OFFS</option>
          +
          +                                                    @elseif($obj['letter_type']=='8')
          +                                                      <option value="REPO-Ew1L4D1-bureau_4" @if($obj['template']=='REPO-Ew1L4D1-bureau_4') selected="selected" @endif>&nbsp;For Bureaus use Ew1L14D1 bureau for REPOSSESSIONS</option>
          +
          +                                                    @elseif($obj['letter_type']=='9')
          +                                                      <option value="PR-Ew1L15D1-bureau_15" @if($obj['template']=='PR-Ew1L15D1-bureau_15') selected="selected" @endif>&nbsp;For Bureaus use Ew1L15D1 bureau for PUBLIC RECORDS</option>
          +                                                      <option value="PR-Ew1L1D1-df-creditor_1" @if($obj['template']=='PR-Ew1L1D1-df-creditor_1') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +
          +                                                    @elseif($obj['letter_type']=='10')
          +                                                      <option value="AUDIT-Ew1L1D1-audit_40"  @if($obj['template']=='AUDIT-Ew1L1D1-audit_40') selected="selected" @endif>&nbsp;AUDIT ANALYSIS DOCUMENT</option>
          +                                                      <option value="GEN-Ew1L1D1-bureau_1" @if($obj['template']=='GEN-Ew1L1D1-bureau_1') selected="selected" @endif>&nbsp;For Bureaus use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                    @endif
          +                                                  </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both;" id="template-df-{{$key}}" >
          +                                                  <label>TEMPLATE LETTER FOR DATA FURNISHER/CREDITOR</label>
          +                                                  <select name="info_item[template_df][]" id="lt_template_df-{{$key}}" class="form-control"  >
          +                                                    <option value="">Please select template</option>
          +                                                    @if($obj['letter_type']=='1')
          +                                                      <option value="PI-Ew1L1D1-df-creditor_1" @if($obj['template_df']=='PI-Ew1L1D1-df-creditor_1') selected="selected" @endif >&nbsp;For Data Furnisher Creditor or Collector use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                    @elseif($obj['letter_type']=='2')
          +                                                      <option value="INQ-Ew1L2D1-bureau_2" @if($obj['template_df']=='INQ-Ew1L2D1-bureau_2') selected="selected" @endif>&nbsp; For Data Furnisher or Creditor use Ew1L2D1 bureaus Inquiry(ies)</option>
          +                                                    @elseif($obj['letter_type']=='3')
          +                                                      <optgroup label="If ONLY 1 or 2 Lates reported in last 4 years">
          +                                                        <option value="NLP12-Ew1L1D1-df-creditor_1" @if($obj['template_df']=='NLP12-Ew1L1D1-df-creditor_1') selected="selected" @endif>&nbsp;&nbsp;For Data Furnisher Creditor or Collector use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                      </optgroup>
          +                                                      <optgroup label="If 3+ Lates reported in last 4 years">
          +
          +                                                        <option value="NLP3-Ew1LPRx1D1-df-creditor_17"  @if($obj['template_df']=='NLP3-Ew1LPRx1D1-df-creditor_17') selected="selected" @endif title="For Data Furnisher Creditor or Collector use Ew1LPRx1D1 BureausORcredittors also for accounts with AT LEAST THREE(3+) Late Payments in last 4 years(48 months) with GOAL of REMOVAL FROM REPORTING (but would be HAPPY with PAANL or PAANLPR status)">&nbsp;&nbsp;For Data Furnisher Creditor or Collector use Ew1LPRx1D1 BureausORcredittors also for accounts with AT LEAST THREE(3+) Late Payments in last 4 years(48 months) with GOAL of REMOVAL FROM REPORTING (but would be HAPPY with PAANL or PAANLPR status)</option>
          +                                                      </optgroup>
          +                                                    @elseif($obj['letter_type']=='4')
          +                                                      <optgroup label="If a Student Loan with ONLY 1 or 2 Late Payments (that you WANT TO TRY FOR PAANL STATUS) reported in last 4 years">
          +                                                        <option value="SL12-Ew1L10D1-df-creditor_10" @if($obj['template_df']=='SL12-Ew1L10D1-df-creditor_10') selected="selected" @endif >&nbsp;&nbsp;For Data Furnisher Creditor or Collector use Ew1L10D1 Data Furnisher creditor for PAANL STUDENT LOANS</option>
          +                                                      </optgroup>
          +                                                      <optgroup label="If a Student Loan with 3+ Late Payments (That you WANT to attempt REMOVAL of REPORTING)  reported in last 4 years">
          +                                                        <option value="SL3-Ew1L12D1-df-creditors_12" @if($obj['template_df']=='SL3-Ew1L12D1-df-creditors_12') selected="selected" @endif>&nbsp;&nbsp;For Data Furnisher Creditor or Collector use Ew1L12D1 Data Furnisher creditor for STUDENT LOAN DELETION</option>
          +                                                      </optgroup>
          +                                                    @elseif($obj['letter_type']=='5')
          +                                                      <option value="NMCOL-Ew1L6D1-df-creditor_6" @if($obj['template_df']=='NMCOL-Ew1L6D1-df-creditor_6') selected="selected" @endif>&nbsp;or Data Furnisher Creditor or Collector use Ew1L6D1 Data Furnisher creditor for non-MEDICAL Collections</option>
          +                                                    @elseif($obj['letter_type']=='6')
          +
          +                                                      <option value="MCOL-Ew1L8D1-df-creditor_8" @if($obj['template_df']=='MCOL-Ew1L8D1-df-creditor_8') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L8D1 Data Furnisher creditor for MEDICAL Collections</option>
          +                                                    @elseif($obj['letter_type']=='7')
          +
          +                                                      <option value="COFF-Ew1L3D1-df-creditor_3" @if($obj['template_df']=='COFF-Ew1L3D1-df-creditor_3') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L3D1 Data Furnisher creditor for CHARGE OFF</option>
          +                                                    @elseif($obj['letter_type']=='8')
          +
          +                                                      <option value="REPO-Ew1L3D1-df-creditor_3" @if($obj['template_df']=='REPO-Ew1L3D1-df-creditor_3') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L13D1 Data Furnisher creditor for REPOSSESSION</option>
          +                                                    @elseif($obj['letter_type']=='9')
          +
          +                                                      <option value="PR-Ew1L1D1-df-creditor_1" @if($obj['template_df']=='PR-Ew1L1D1-df-creditor_1') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                      <option value="PR-Ew1L16D1-df-creditor_16" @if($obj['template_df']=='PR-Ew1L16D1-df-creditor_16') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L16D1 Data Furnisher creditor collectors  courts for PUBLIC RECORDS</option>
          +                                                    @elseif($obj['letter_type']=='10')
          +                                                      <option value="GEN-Ew1L1D1-df-creditor_1" @if($obj['template_df']=='GEN-Ew1L1D1-df-creditor_1') selected="selected" @endif>&nbsp;For Data Furnisher Creditor or Collector use Ew1L1D1 bureaus General Item Attack for Bureau on Questionable Items</option>
          +                                                    @endif
          +                                                  </select>
          +                                              </div>
          +                                            </div>
          +                                            <div class="col-md-12">
          +                                                <div class="goto_report_div"  ><label>Go to Report &rarr;</label>&nbsp;&nbsp;
          +                                                  <a href="#view-html"><span class="glyphicon glyphicon-info-sign icon-goto-report" title="Personal Information"></span></a>
          +                                                  <a href="#Summary"><span class="glyphicon glyphicon glyphicon-open-file icon-goto-report" title="Summary Information"></span></a>
          +                                                  <a href="#AccountHistory"><span class="glyphicon glyphicon glyphicon-list-alt icon-goto-report" title="AccountHistory Information"></span></a>
          +                                                  <a href="#Inquiries"><span class="glyphicon glyphicon glyphicon-question-sign icon-goto-report" title="Inquiries Information"></span></a>
          +                                                  <a href="#PublicInformation"><span class="glyphicon glyphicon-globe icon-goto-report" title="Public Information"></span></a>
          +                                                  <a href="#CreditorContacts"><span class="glyphicon glyphicon-user icon-goto-report" title="Creditor Contacts Information"></span></a>
          +                                                  <a href="#main-content-{{$key}}"  style="float:right;" ><span class="glyphicon glyphicon-circle-arrow-up icon-goto-report" title="Go To Previous Content Box"></span></a>
          +                                                  <a href="#lg-form" title="Go To Top of Page" style="float: right;"><label style="font-weight: bold;font-size: 16px"> &nbsp;&nbsp;TOP &uarr;</label></a>
          +                                                  <a href="#div-img-bottom" title="Go To Generate Button" style="float: right;"><label style="font-weight: bold;font-size: 16px"> &nbsp;&nbsp;GENERATE &darr;</label></a>
          +                                                </div>
          +                                                <div class="form-group">
          +                                                    <textarea class="form-control " id="summernote-{{$key}}" name="info_item[content][]"  rows="13" placeholder="" required>{!! $obj['content'] !!}</textarea>
          +                                                    <span class="glyphicon glyphicon-menu-hamburger btn-add-line-break" title="Add Line Break" onclick="addLineBreak(0)"></span>
          +                                                    <span class="glyphicon glyphicon-plus btn-add-content" title="Add Cleared Content" onclick="undoClearContent({{$key}})"></span>
          +                                                    <span class="glyphicon glyphicon-remove btn-remove-content" title="Clear Content Box" id="btn-remove-content" onclick="clearContent({{$key}})"></span>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                    </div>
          +                                    <div class="col-md-3 pull-right div-item-dest">
          +                                       <div class="tbg" ><label>CONTENT DESTINATION(s) </label>
          +                                        <span class="glyphicon glyphicon-chevron-down pull-right gly-dest" id="toggle-dest-{{$key}}" onclick="toggleDest({{$key}})" title="Show" data-toggle="collapse" href="#dest-side-{{$key}}"></span>
          +                                       </div>
          +                                       <div id="dest-side-{{$key}}" class="collapse">
          +                                           <label class="lbl-dest check-btn" style="font-size:14px">
          +                                               <input type="checkbox" name="all" value="Select All Destinations" id="check-all-{{$key}}" onchange="checkall({{$key}})" />&nbsp;<strong>Select All Destinations</strong><span class="cr"></span></label>
          +                                           <hr style="2px 0 5px">
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="" class="check-df" onchange="showDf(event,0)" />&nbsp;Data Furnisher<span class="cr"></span></label>
          +                                           <select name="info_item[dest][{{$key}}][]" class="form-control select-df" id="select-df-0" style="display: none;">
          +                                           </select>
          +                                           <input type="hidden" name="df-value" value="{{$obj['dest_df']}}">
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="EXPERIAN PO BOX 9701, ALLEN, TX 75013" class="check-exp1" @if(in_array( 'EXPERIAN PO BOX 9701, ALLEN, TX 75013',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;EXPERIAN PO BOX 9701, ALLEN, TX 75013<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="EXPERIAN PO BOX 4500, ALLEN, TX 75013" class="check-exp2" @if(in_array( 'EXPERIAN PO BOX 4500, ALLEN, TX 75013',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;EXPERIAN PO BOX 4500, ALLEN, TX 75013<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256" class="check-equ1" @if(in_array( 'EQUIFAX PO Box740256, ATLANTA,GA 30374-0256',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;EQUIFAX PO Box740256, ATLANTA,GA 30374-0256<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241" class="check-equ2" @if(in_array( 'EQUIFAX PO Box740241, ATLANTA,GA 30374-0241',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;EQUIFAX PO Box740241, ATLANTA,GA 30374-0241<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="Trans Union PO Box 2000, CHESTER, PA 19016-2000" class="check-tra1" @if(in_array( 'Trans Union PO Box 2000, CHESTER, PA 19016-2000',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;Trans Union PO Box 2000, CHESTER, PA 19016-2000<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="Trans Union PO Box 1000, CHESTER, PA 19022-1000" class="check-tra2" @if(in_array( 'Trans Union PO Box 1000, CHESTER, PA 19022-1000',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;Trans Union PO Box 1000, CHESTER, PA 19022-1000<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="Trans Union PO Box 2000, CHESTER, PA 19022-2000" class="check-tra3" @if(in_array( 'Trans Union PO Box 2000, CHESTER, PA 19022-2000',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;Trans Union PO Box 2000, CHESTER, PA 19022-2000<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640" class="check-ino1" @if(in_array( 'INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088" class="check-ino2" @if(in_array( 'Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="LexisNexis PO Box 105108, Atlanta, GA 30348" class="check-lex1" @if(in_array( 'LexisNexis PO Box 105108, Atlanta, GA 30348',$obj[ 'dest'] )) checked="checked" @endif/>&nbsp;LexisNexis PO Box 105108, Atlanta, GA 30348<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108" class="check-sag1" @if(in_array( 'SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125" class="check-chex1" @if(in_array( 'Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734" class="check-mib1" @if(in_array( '(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7" class="check-mib2" @if(in_array( '(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7<span class="cr"></span></label>
          +                                           <label class="lbl-dest check-btn">
          +                                               <input type="checkbox" name="info_item[dest][{{$key}}][]" value="FactorTrust PO Box 3653,Alpharhetta, GA 30023" class="check-fact1" @if(in_array( 'FactorTrust PO Box 3653,Alpharhetta, GA 30023',$obj[ 'dest'] )) checked="checked" @endif />&nbsp;FactorTrust PO Box 3653,Alpharhetta, GA 30023<span class="cr"></span></label>
          +                                            <label class="lbl-dest check-btn">
          +                                            <input type="checkbox" name="info_item[dest][{{$key}}][]" value="" class="check-aa" />&nbsp;Audit Analysis<span class="cr"></span></label>
          +
          +                                           <input type="text" name="info_item[dest][{{$key}}][]" class="form-control" placeholder="OTHER" style="width: 96%" id="other-text-0">
          +                                           <span class="glyphicon glyphicon-plus btn-add-other" title="Add Other"></span>
          +                                       </div>
          +
          +                                    </div>
          +                                    <div class="col-md-12 text-center" style="clear: both;">
          +                                       <button class="btn btn-success btn2" onclick="addContent()" type="button"><span class="glyphicon glyphicon-plus" title="add"></span>Add Another Content</button>
          +                                    </div>
          +
          +                                 </fieldset>
          +                                </div>
          +                                <script type="text/javascript">
          +                                  item_count = {{$key}};
          +                                </script>
          +                                <div class="btn-top-html" style="display: none;">
          +                                  <a href="#main-content-{{$key}}" id="btn-arrow-up-{{$key}}"><span class="fa-stack fa-lg" style="font-size:16px;font-weight: 500;" title="Go To Content Area {{$key+1}}"><i class="fa fa-circle fa-stack-2x"></i><i class="fa-stack-1x fa-inverse">{{$key+1}}</i></span></a>
          +                                </div>
          +                                @endforeach
          +                              </div>
          +                              <div id="img-container">
          +                                <div class="col-md-12 text-center" id="div-img-bottom" style="display: none;">
          +                                  <input type="hidden" name="identity_proof_file" value="" id="identity_proof_file1">
          +                                  <input type="hidden" name="ssn_proof_file" value="" id="ssn_proof_file1">
          +                                  <input type="hidden" name="address_proof_file" value="" id="address_proof_file1">
          +                                  <input type="hidden" name="other_file" value="" id="other_file1">
          +                                  <p>Current Images</p>
          +                                  <div class="col-md-1 col-md-offset-2 ">
          +                                    <label class="check-btn"><input type="checkbox" name="include_bureau_image" value="1"   checked="checked">&nbsp;Bureaus<span class="cr" title="Add Images to Bureau Letters"></span></label>
          +                                  </div>
          +                                  <div class="col-md-6">
          +                                    <p >PHOTO IDENTIFICATION :<label id="identity_proof_file" class="span-file">..........</label><br>SSN PROOF :<label id="ssn_proof_file" class="span-file">..........</label><br>ADDRESS PROOF :<label id="address_proof_file" class="span-file">..........</label><br>OTHER FILE :<label id="other_file" class="span-file">...........</label> </p>
          +                                  </div>
          +                                  <div class="col-md-3 text-left">
          +                                    <label class="check-btn"><input type="checkbox" name="include_creditor_image" value="1"  >&nbsp;Creditors<span class="cr" title="Add Images to Creditors Letter"></span></label>
          +                                  </div>
          +                                </div>
          +                                <div class="col-md-12">
          +                                  <label class="col-md-12" style="text-align:center;">Add Image Here for Proof: Example: SS, Proof ID, Current Bill ect. Must be PNG or JPEG</label>
          +                                </div>
          +
          +                                 <div class="col-md-12 img-content" id="img-content-1">
          +                                    <div class="col-md-offset-3 col-md-6">
          +
          +                                      <input type="file" name="img_bottom[]"  class="form-control no-bdr"></div>
          +
          +                                    <div class="col-md-1" style="margin-top: 5px;margin-right: 20px"><label id="label1"><a onclick="addImage()" id="add-image-btn" style="padding: 1px 6px;" class="btn btn-success"><i class="fa fa-plus"></i></a></label>
          +                                      <label id="label1"><a onclick="removeImage(1)" id="remove" style="padding: 1px 6px;" class="btn btn-danger"><i class="fa fa-minus"></i></a></label>
          +                                    </div>
          +
          +                                 </div>
          +                                </div>
          +                              <div class="row text-center" style="margin-top: 20px;">
          +                                 @if(Auth::user()->can('Generate-letters') && $not_expired)
          +                                    <input type="submit" name="save" value="Generate Document" id="generate-pdf" class="btn btn-success btn2">
          +                                    <div id="client-loader2" style="display: none;" >
          +                                      <img   src="{{ asset('public/images/ajax-loader.gif') }}"> <span>&nbsp;&nbsp;&nbsp;Please wait Generating Letters</span>
          +                                    </div>
          +                                  @else
          +                                  <input type="button" name="save" value="Generate Document" id="generate-pdf" class="btn btn-success btn2"  onclick="alert('Access to generate and or save your above-created documents is currently unavailable, please purchase a subscription to gain immediate access without losing your work.');">
          +                                  @endif
          +
          +                              </div>
          +                           </div>
          +
          +                        </div>
          +                     </div>
          +                  </div>
          +               </form>
          +            </div>
          +            <div class="row" style="clear: both;">
          +                <div class="view-html" id="view-html">
          +
          +              </div>
          +            </div>
          +            <div class="row" style="clear: both;" id="top-btn">
          +              <!-- <a href="#" onclick="topFunction()" ><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content" title="Go To Top"></span></a><br> -->
          +              <div id="btn-up-0" style="text-align:right">
          +                <a href="#main-content-0"  ><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content" title="Go To Content Area 1"></span></a>
          +                <div id="btn-up-1" style="display: none;">
          +
          +                </div>
          +              </div>
          +            </div>
          +         </div>
          +      </div>
          +   </div>
          +</div>
          +@section('scripts')
          +<script src="{{ asset('public/js/select2.full.min.js') }}"></script>
          +<script src="{{ asset('public/js/summernote/summernote.min.js') }}"></script>
          +<script src="{{ asset('public/js/bootstrap-multiselect.js') }}"></script>
          +
          +
          +<script src="{{ asset('public/js/datepicker.js') }}"></script>
          +<script src="{{ asset('public/js/evlg-page.min.js?1.20') }}"></script>
          +<script type="text/javascript">
          +  $(document).ready(function() {
          +
          +    $('.main-content').each(function(i){
          +      if(i==0) return true;//skip for first iteration its already initialized.
          +       init_summernote(i);
          +    });
          +    getClientEdit();
          +
          +  });
          +</script>
          +
          +@endsection
          +@endsection
          +
          diff --git a/resources/views/lg/index-client.blade.php b/resources/views/lg/index-client.blade.php
          new file mode 100644
          index 0000000..bea9b81
          --- /dev/null
          +++ b/resources/views/lg/index-client.blade.php
          @@ -0,0 +1,72 @@
          +@extends('layouts.app')
          +
          +@section('content')
          +<div class="container">
          +    <div class="row">
          +
          +        <div class="col-md-12">
          +            <div class="panel panel-default">
          +             
          +                <div class="panel-heading">
          +                    <h1>Generated Letters</h1>
          +                </div>
          +                <div class="panel-body">
          +                    @if (session('status'))
          +                        <div class="alert alert-success">
          +                            {{ session('status') }}
          +                        </div>
          +                    @endif
          +                    <div class="row">
          +                      <div class="col-md-12 col-sm-12 col-xs-12">
          +                        <div class="x_panel">
          +                          <div class="pull-right">
          +                            <a href='{{ url("/lg/new")  }}' class="btn btn2"><span class="glyphicon glyphicon-plus"></span>Generate New Letter</a>
          +                          </div>
          +                          
          +                          <div class="x_content">
          +                              <a href='{{ url("/lg")  }}' class="btn btn2 pull-right">Back</a>
          +                          
          +                          {{ $letters->links() }}
          +                            <table id="datatable-responsive" class="table table-striped table-hover table-responsive dt-responsive nowrap" cellspacing="0" width="100%">
          +                              <thead>
          +                                <tr>
          +                                  <th>Client</th>
          +                                  <th>Created Date</th>
          +                                  <th>Letter Files</th>
          +                                  <th>Number of Files</th>
          +                                  <th>Actions</th>
          +                                </tr>
          +                              </thead>
          +                              <tbody>
          +
          +                              @foreach ($letters as $key => $obj)
          +                                <tr>
          +                                  <td>{{ $obj->client_name }}</td>
          +                                  <td>{{ date('F-d-Y', strtotime($obj->created_at)) }}</td>
          +                                  <td><a  style ="font-weight:bold" href="{{ url('/download/'.$obj->zip_file) }}" title="download file" >{{ $obj->zip_file }}</a></td>
          +                                  <td>{{ $obj->num_of_files }}</td>
          +                                                                    
          +                                  <td>
          +                                    <a href="{{ url('/download/'.$obj->zip_file) }}" class="btn btn-success" style="padding: 1px 6px;"><span class="glyphicon glyphicon-download" title="download"></span></a>
          +                                    <a href='{{ url("/lg/edit/$obj->id") }}' class="btn btn-success" style="padding: 1px 6px;"><span class="glyphicon glyphicon-pencil" title="edit"></span></a>
          +                                    <a href='{{ url("/lg/delete/$obj->id") }}' class="btn btn-danger" style="padding: 1px 6px;" onclick="return confirm('Are you sure you want to delete this letter?');"><span class="glyphicon glyphicon-remove" title="delete"></span></a>
          +                                    
          +                                  </td>
          +                                </tr>
          +                              @endforeach
          +                              </tbody>
          +                            </table>
          +                            {{ $letters->links() }}
          +                    
          +                    
          +                          </div>
          +                        </div>
          +                      </div>
          +                    </div> 
          +
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +@endsection
          diff --git a/resources/views/lg/index.blade.php b/resources/views/lg/index.blade.php
          new file mode 100644
          index 0000000..8cb2dca
          --- /dev/null
          +++ b/resources/views/lg/index.blade.php
          @@ -0,0 +1,74 @@
          +@extends('layouts.app')
          +
          +@section('content')
          +<div class="container">
          +    <div class="row">
          +
          +        <div class="col-md-12">
          +            <div class="panel panel-default">
          +
          +                <div class="panel-heading">
          +                    <h1>Generated Letters</h1>
          +                </div>
          +                <div class="panel-body">
          +                    @if (session('status'))
          +                        <div class="alert alert-success">
          +                            {{ session('status') }}
          +                        </div>
          +                    @endif
          +                    <div class="row">
          +                      <div class="col-md-12 col-sm-12 col-xs-12">
          +                        <div class="x_panel">
          +                          <div class="pull-right">
          +                            <a href='{{ url("/lg/new")  }}' class="btn btn2"><span class="glyphicon glyphicon-plus"></span>Generate New Letter</a>
          +                          </div>
          +
          +                          <div class="x_content">
          +                          @if(!empty($letters))
          +                              {{ $letters->links() }}
          +                          @endif
          +                            <table id="datatable-responsive" class="table table-striped table-hover table-responsive dt-responsive nowrap" cellspacing="0" width="100%">
          +                              <thead>
          +                                <tr>
          +                                  <th>Client</th>
          +                                  <th>Created Date</th>
          +                                  <th>Letter Files</th>
          +                                  <th>Number of Files</th>
          +                                  <th>Actions</th>
          +                                </tr>
          +                              </thead>
          +                              <tbody>
          +                              @if(!empty($letters))
          +                              @foreach ($letters as $key => $obj)
          +                                <tr>
          +                                  <td><a href='{{ url("/lg/client_report/$obj->client_id") }}' style="text-decoration: underline;">{{ $obj->client_name }}</a></td>
          +                                  <td>{{ date('F-d-Y', strtotime($obj->created_at)) }}</td>
          +                                  <td><a  style ="font-weight:bold" href="{{ url('/download/'.$obj->zip_file) }}" title="download file" >{{ $obj->zip_file }}</a></td>
          +                                  <td>{{ $obj->num_of_files }}</td>
          +
          +                                  <td>
          +                                    <a href="{{ url('/download/'.$obj->zip_file) }}" class="btn btn-success" style="padding: 1px 6px;"><span class="glyphicon glyphicon-download" title="download"></span></a>
          +                                    <a href='{{ url("/lg/edit/$obj->id") }}' class="btn btn-success" style="padding: 1px 6px;"><span class="glyphicon glyphicon-pencil" title="edit"></span></a>
          +                                    <a href='{{ url("/lg/delete/$obj->id") }}' class="btn btn-danger" style="padding: 1px 6px;" onclick="return confirm('Are you sure you want to delete this letter?');"><span class="glyphicon glyphicon-remove" title="delete"></span></a>
          +
          +                                  </td>
          +                                </tr>
          +                              @endforeach
          +                              @endif
          +                              </tbody>
          +                            </table>
          +                          @if(!empty($letters))
          +                            {{ $letters->links() }}
          +                          @endif
          +
          +                          </div>
          +                        </div>
          +                      </div>
          +                    </div>
          +
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +@endsection
          diff --git a/resources/views/lg/new.blade.php b/resources/views/lg/new.blade.php
          new file mode 100644
          index 0000000..1a91a04
          --- /dev/null
          +++ b/resources/views/lg/new.blade.php
          @@ -0,0 +1,485 @@
          +
          +@extends('layouts.app')
          +@section('styles')
          +  <link href="{{ asset('public/css/datepicker.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/css/evlg-page.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/js/summernote/summernote.css') }}" rel="stylesheet">
          +  <link href="{{ asset('public/css/bootstrap-multiselect.css') }}" rel="stylesheet">
          +
          +@endsection
          +@section('content')
          +<div class="container">
          +   <div class="row">
          +      <div class="col-md-12">
          +         <div class="panel panel-default panel-frm">
          +            <div class="panel-heading">
          +               <h1>Epic-Velocity Template Letter</h1>
          +               <p>The EV-TLG is the Credit Repair Champion’s and the Metro 2 Compliance Academy’s Official Template Letter Generator Attack Wave System Software! </p>
          +            </div>
          +            <div class="panel-body">
          +               @if (session('status'))
          +               <div class="alert alert-success">
          +                  {{ session('status') }}
          +               </div>
          +               @endif
          +               <div class="clearfix"></div>
          +               <form method="POST" action="{{ url('/lg/generate-pdf') }}" accept-charset="UTF-8" enctype="multipart/form-data" id="lg-form">
          +                  <div class="row">
          +                     {{ csrf_field() }}
          +                     <input type="hidden" name="action" value="new">
          +                     <div class="col-md-12 col-sm-12 col-xs-12">
          +                        <div class="x_panel">
          +                           <div class="x_content">
          +                            <div class="col-md-12  text-center">
          +                                <span class="glyphicon glyphicon-play-circle video-icon" title="Need Help" onclick="alert('Vidoes coming soon!')"></span>
          +                                <div class="col-md-4 col-md-offset-1 ">
          +                                  <div class="form-group">
          +                                    <label>Select Client</label>
          +                                    <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                    <select name="client_id" onchange="getClientLetters()" class="form-control" id="client_id">
          +                                        <option value="">Please select</option>
          +                                        @if(!empty($users))
          +                                            @foreach ($users as $key => $obj)
          +                                              <option value="{{$obj->id}}">{{$obj->firstname}}</option>
          +                                            @endforeach
          +                                        @endif
          +                                    </select>
          +                                    <input type="hidden" name="client_name" id="client_name" value="">
          +                                    <input type="hidden" name="date_time" id="date_time" value="">
          +                                 </div>
          +                               </div>
          +
          +                                <div class="col-md-2  ">
          +                                 <div class="form-group">
          +                                    <label>Wave/Round/Attack Number</label>
          +                                    <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                    <select name="choose_wave"  class="form-control" id="choose_wave">
          +                                      <option value="1">Wave 1</option>
          +                                      <option value="2">Wave 2</option>
          +                                      <option value="3">Wave 3</option>
          +                                      <option value="4">Wave 4</option>
          +                                      <option value="5">Wave 5</option>
          +                                      <option value="6">Wave 6</option>
          +
          +                                    </select>
          +
          +                                  </div>
          +                                </div>
          +                                <div class="col-md-4  ">
          +                                 <div class="form-group">
          +                                    <label>Choose Work</label>
          +                                    <!-- <input id="today" type="text" class="form-control" name="today"  required autofocus > -->
          +                                    <select name="choose_work" onchange="getClient('{{ url("/lg/edit/") }}')" class="form-control" id="choose_work"></select>
          +                                    <div id="client-loader" style="display: none;" >
          +                                      <img   src="{{ asset('public/images/ajax-loader.gif') }}"> <span>&nbsp;&nbsp;&nbsp;Analysing Report and Generating Content</span>
          +                                    </div>
          +                                  </div>
          +                                </div>
          +                              </div>
          +                              <br>
          +                              <div class="col-md-6  ">
          +                                 <div class="form-group">
          +                                    <label>Today’s Date is</label>
          +                                    <input id="today" type="text" class="form-control" name="today"  required autofocus >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                 <div class="form-group">
          +                                    <label>Credit Report Data Resource or Monitoring</label>
          +                                    <input id="cr_resource" type="text" class="form-control" name="cr_resource"  >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label><span class="req-span">*</span>Name (at least First and Last Name)</label>
          +                                    <input id="name" type="text" class="form-control" name="name"  required  >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label><span class="req-span">*</span>Address (at least Street Number, Street Name, City, State spelled out)</label>
          +                                    <input id="address" type="text" class="form-control" name="address"    placeholder="">
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Date of Birth</label>
          +                                    <input id="dob" type="text" class="form-control datepicker" name="dob"    placeholder="">
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Social Security Number (last four ONLY displayed on ANY DOCUMENT)</label>
          +                                    <input id="ssn" type="text" class="form-control" name="ssn" maxlength="12" placeholder="" required >
          +                                 </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                <div class="form-group">
          +                                    <label>Personal Tracking Number</label>
          +                                    <input id="p_tracking_number" type="text"   class="form-control" name="p_tracking_number"  value="{{$p_tracking_number}}">
          +                                    <span class="glyphicon glyphicon-refresh" title="Regenrate" id="btn-regenerate" onclick="gen_rand()"></span>
          +                                 </div>
          +                                 <div class="form-group" id="univ-dest-div">
          +                                     <label>Universal Template Destinatioin(s)</label><br>
          +                                     <select id="univ-dest" multiple="multiple" class="form-control" name="destination[]">
          +                                        <optgroup label="EXPERIAN DESTINATIONS">
          +                                          <option value="EXPERIAN PO BOX 9701, ALLEN, TX 75013" >EXPERIAN  PO BOX 9701, ALLEN, TX 75013</option>
          +                                          <option value="EXPERIAN PO BOX 4500, ALLEN, TX 75013" >EXPERIAN  PO BOX 4500, ALLEN, TX 75013</option>
          +                                        </optgroup>
          +                                        <optgroup label="EQUIFAX DESTINATIONS">
          +                                          <option value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256">EQUIFAX  PO Box740256, ATLANTA,GA 30374-0256</option>
          +                                          <option value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241">EQUIFAX  PO Box740241, ATLANTA,GA 30374-0241</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="TRANS UNION DESTINATIONS">
          +                                          <option value="Trans Union PO Box 2000, CHESTER, PA 19016-2000">Trans Union PO Box 2000, CHESTER, PA 19016-2000</option>
          +                                          <option value="Trans Union PO Box 1000, CHESTER, PA 19022-1000">Trans Union  PO Box 1000, CHESTER, PA 19022-1000</option>
          +                                          <option value="Trans Union PO Box 2000, CHESTER, PA 19022-2000">Trans Union  PO Box 2000, CHESTER, PA 19022-2000</option>
          +                                        </optgroup>
          +                                        <optgroup label="INNOVIS DESTINATIONS">
          +                                          <option value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640">INNOVIS   PO Box 1640, Pittsburgh, PA 15230-1640</option>
          +                                          <option value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088">Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="LEXISNEXIS DESTINATIONS">
          +                                          <option value="LexisNexis PO Box 105108, Atlanta, GA 30348">LexisNexis PO Box 105108, Atlanta, GA 30348</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="SAGESTREAM LLC DESTINATIONS">
          +                                          <option value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108">SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="CHEX SYSTEMS DESTINATIONS">
          +                                          <option value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125">Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="MIB INC DESTINATIONS">
          +                                          <option value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734">(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734</option>
          +                                          <option value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7">(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7</option>
          +
          +                                        </optgroup>
          +                                        <optgroup label="FACTOR TRUST DESTINATIONS">
          +                                          <option value="FactorTrust PO Box 3653,Alpharhetta, GA 30023">FactorTrust PO Box 3653,Alpharhetta, GA 30023</option>
          +                                        </optgroup>
          +                                        <optgroup label="DATA FURNISHERS">
          +                                          <option value="" >DATA FURNISHERS</option>
          +                                        </optgroup>
          +                                        <optgroup label="OTHER">
          +                                          <option value="1" >Other</option>
          +                                        </optgroup>
          +                                      </select>
          +                                 </div>
          +
          +                                 <div class=" form-group " id="univ-df" style="display: none;">
          +                                     <div class="form-group">
          +                                        <label>Data Furnishers</label>
          +                                        <select name="destination[]" class="form-control select-df" id="select-df" >
          +                                        </select>
          +                                      </div>
          +                                  </div>
          +                                 <div class=" form-group univ-other" id="univ-other" style="display: none;">
          +                                    <div>
          +                                      <input type="text" name="destination[]" class="form-control" placeholder="OTHER" style="width: 93%">
          +                                       <span class="glyphicon glyphicon-plus btn-univ-add-other"  title="Add Other"></span>
          +                                       <span class="glyphicon glyphicon-minus btn-univ-remove-other"  title="Remove Other"></span>
          +                                    </div>
          +
          +                                  </div>
          +                               </div>
          +                               <div class="col-md-6  ">
          +                                  <div class="col-md-4 ">
          +                                      <div class="form-group">
          +                                          <label class="check-btn" style="color:red;"><input type="checkbox" name="exclude_all" value="1" id="exclude-all"  onchange="excludeall()">&nbsp;<strong>Exclude All Content Boxes</strong><span class="cr"></span></label>
          +                                       </div>
          +                                  </div>
          +                              </div>
          +                              <div class="col-md-6  ">
          +                                  <div class="col-md-4  ">
          +                                      <div class="form-group">
          +                                          <label >Number of Inquiries/letter &nbsp;</label>
          +                                          <input type="number" name="num_of_inquiry" min="1" max="25" value="5">
          +                                       </div>
          +                                  </div>
          +                                  <div class="col-md-4  ">
          +                                      <div class="form-group">
          +                                          <label >Number of Account/letter &nbsp;</label>
          +                                          <input type="number" name="num_of_account" min="1" max="25" value="4">
          +                                       </div>
          +                                  </div>
          +                              </div>
          +
          +                           </div>
          +                           <div class="row text-center">
          +                             @if(1)
          +                               <input type="submit" name="save" value="Generate Document" id="generate-pdf" class="btn btn-success btn2" readonly="readonly">
          +                               <div id="client-loader2" style="display: none;" >
          +                                 <img   src="{{ asset('public/images/ajax-loader.gif') }}"> <span>&nbsp;&nbsp;&nbsp;Please wait Generating Letters</span>
          +                               </div>
          +							 @endif
          +                           </div>
          +                        </div>
          +                     </div>
          +                     <script type="text/javascript">
          +                        var item_count = 0;
          +                        var image_count = 1;
          +                     </script>
          +
          +                     <div class="col-md-12 col-sm-12 col-xs-12 " >
          +                        <div class="x_panel">
          +                           <div class="x_content">
          +                              <div id="content-area">
          +                                <div class="col-md-12 main-content" id="main-content-0">
          +                                  <fieldset class="add-nother" >
          +
          +                                    <legend class="add-nother">
          +                                      Content Box Work Area &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-play-circle video-icon" title="Need Help" onclick="alert('Vidoes coming soon!')"></span><br>
          +                                      <span class="fa-stack fa-lg" style="font-size:16px;font-weight: 500;">
          +                                          <i class="fa fa-circle fa-stack-2x"></i>
          +                                          <i class="fa-stack-1x fa-inverse">1</i>
          +                                      </span>
          +
          +                                    </legend>
          +                                    <span class="pull-right" title="Exclude content box from letter" style="margin-top:10px;" >
          +                                      <label class="lbl-dest check-btn" style="color:red"><input type="checkbox" name="info_item[exclude][0][]" value="1" class="check-exclude"  />&nbsp;Exclude<span class="cr"></span></label>
          +                                      </span>
          +
          +                                    <div class="col-md-9">
          +                                        <div class="row">
          +                                            <div class="col-md-4" style="overflow: hidden;">
          +                                                <div class="form-group file-txt">
          +                                                    <label>ADD IMAGE </label>
          +                                                    <input type="file" name="info_item[file][]" class="" id="content_file_0">
          +                                                </div>
          +                                                <div class="col-md-1" style="margin-top: 5px;padding-left: 0px;">
          +                                                  <label ><a onclick="removeContentImage(0)"  style="padding: 1px 6px;" class="btn btn-danger" title="Clear attached file"><i class="fa fa-minus"></i></a></label>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-8">
          +                                              <div class="form-group" style="clear: both;" >
          +                                                  <label>DEROGATORY Decisions</label>
          +                                                  <select name="info_item[wave][]" id="wave-0" class="form-control" onchange="showDtype(this,0)" required="">
          +                                                      <option value="">Please select template</option>
          +                                                      @if(Auth::user()->can('Wave1'))
          +                                                      <option value="w1" >I want to use a Wave 1 attack for this content box's items ( Day 1-19)</option>
          +                                                      @else
          +                                                      <option value="w1" disabled="disabled">I want to use a Wave 1 attack for this content box's items ( Day 1-19)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave2'))
          +                                                      <option value="w2" >I want to use a Wave 2 attack for this content box's items (Day 20-39)</option>
          +                                                      @else
          +                                                      <option value="w2" disabled="disabled" >I want to use a Wave 2 attack for this content box's items (Day 20-39)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave3'))
          +                                                      <option value="w3" >I want to use a Wave 3 attack for this content box's items (Day 40-59)</option>
          +                                                      @else
          +                                                      <option value="w3" disabled="disabled">I want to use a Wave 3 attack for this content box's items (Day 40-59)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave4'))
          +                                                      <option value="w4" >I want to use a Wave 4 attack for this content box's items (Day 60-79)</option>
          +                                                      @else
          +                                                      <option value="w4" disabled="disabled">I want to use a Wave 4 attack for this content box's items (Day 60-79)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave5'))
          +                                                      <option value="w5" >I want to use a Wave 5 attack for this content box's items (Day 80-99)</option>
          +                                                      @else
          +                                                      <option value="w5" disabled="disabled">I want to use a Wave 5 attack for this content box's items (Day 80-99)</option>
          +                                                      @endif
          +                                                       @if(Auth::user()->can('Wave6'))
          +                                                      <option value="w6" >I want to use a Wave 6+ attack for this content box's items (Day 100-119)</option>
          +                                                      @else
          +                                                      <option value="w6" disabled="disabled">I want to use a Wave 6+ attack for this content box's items (Day 100-119)</option>
          +                                                      @endif
          +
          +                                                      <option value="w7" >I want to use a RANDOM WAVE # Attack for this content box's  item (Day ??)</option>
          +                                                   </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both;display: none;" id="div-dtype-0">
          +                                                  <label>Type of Reported Issues</label>
          +                                                  <select name="info_item[letter_type][]" id="dtype-0" class="form-control" onchange="showTemplate(this,0)" required="">
          +                                                      <option value="">Please select template</option>
          +                                                      <option value="1">Personal Identifier Information</option>
          +                                                      <option value="2">INQUIRY(ies) information</option>
          +                                                      <option value="3">LATE PAYMENT (not Student Loan) Information</option>
          +                                                      <option value="4">STUDENT LOAN LATE PAYMENT Information</option>
          +                                                      <option value="5">Regular Non-Medical Collection Information</option>
          +                                                      <option value="6">Medical Collection Information</option>
          +                                                      <option value="7">CHARGE OFF Information</option>
          +                                                      <option value="8">REPOSSESSION Information</option>
          +                                                      <option value="9">PUBLIC RECORDS Information</option>
          +                                                      <option value="10">GENERAL DELINQUENT , DEROGATORY, or QUESTIONABLY REPORTED Information</option>
          +                                                  </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both;display: none;" id="template-0">
          +                                                  <label>TEMPLATE LETTER FOR BUREAU</label>
          +                                                  <select name="info_item[template][]" id="lt_template-0" class="form-control "  required="" >
          +                                                  </select>
          +                                              </div>
          +                                              <div class="form-group" style="clear: both;display: none;" id="template-df-0">
          +                                                  <label>TEMPLATE LETTER FOR DATA FURNISHER/CREDITOR</label>
          +                                                  <select name="info_item[template_df][]" id="lt_template_df-0" class="form-control" >
          +                                                  </select>
          +                                              </div>
          +
          +                                            </div>
          +                                            <div class="col-md-12">
          +                                                <div class="goto_report_div"  ><label>Go to Report &rarr;</label>&nbsp;&nbsp;
          +                                                  <a href="#view-html"><span class="glyphicon glyphicon-info-sign icon-goto-report" title="Personal Information"></span></a>
          +                                                  <a href="#Summary"><span class="glyphicon glyphicon glyphicon-open-file icon-goto-report" title="Summary Information"></span></a>
          +                                                  <a href="#AccountHistory"><span class="glyphicon glyphicon glyphicon-list-alt icon-goto-report" title="AccountHistory Information"></span></a>
          +                                                  <a href="#Inquiries"><span class="glyphicon glyphicon glyphicon-question-sign icon-goto-report" title="Inquiries Information"></span></a>
          +                                                  <a href="#PublicInformation"><span class="glyphicon glyphicon-globe icon-goto-report" title="Public Information"></span></a>
          +                                                  <a href="#CreditorContacts"><span class="glyphicon glyphicon-user icon-goto-report" title="Creditor Contacts Information"></span></a>
          +                                                  <a href="#main-content-0"  style="float:right;" ><span class="glyphicon glyphicon-circle-arrow-up icon-goto-report" title="Go To Previous Content Box"></span></a>
          +                                                  <a href="#lg-form" title="Go To Top of Page" style="float: right;"><label style="font-weight: bold;font-size: 16px"> &nbsp;&nbsp;TOP &uarr;</label></a>
          +                                                  <a href="#div-img-bottom" title="Go To Generate Button" style="float: right;"><label style="font-weight: bold;font-size: 16px"> &nbsp;&nbsp;GENERATE &darr;</label></a>
          +
          +                                                </div>
          +                                                <div class="form-group">
          +                                                    <textarea class="form-control " id="summernote-0" name="info_item[content][]"  rows="13" placeholder="" required></textarea>
          +                                                    <span class="glyphicon glyphicon-menu-hamburger btn-add-line-break" title="Add Line Break" onclick="addLineBreak(0)"></span>
          +                                                    <span class="glyphicon glyphicon-plus btn-add-content" title="Add Cleared Content" onclick="undoClearContent(0)"></span>
          +                                                    <span class="glyphicon glyphicon-remove btn-remove-content" title="Clear Content Box" id="btn-remove-content" onclick="clearContent(0)"></span>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                    </div>
          +                                    <div class="col-md-3 pull-right div-item-dest">
          +                                       <div class="tbg" ><label>CONTENT DESTINATION(s) </label>
          +                                        <span class="glyphicon glyphicon-chevron-down pull-right gly-dest" id="toggle-dest-0" onclick="toggleDest(0)" title="Show" data-toggle="collapse" href="#dest-side-0"></span>
          +                                       </div>
          +                                       <div id="dest-side-0" class="collapse" >
          +                                         <label class="lbl-dest check-btn" style="font-size:14px"><input type="checkbox" name="all" value="Select All Destinations" id="check-all-0" onchange="checkall(0)" />&nbsp;<strong>Select All Destinations</strong><span class="cr"></span></label><hr style="2px 0 5px">
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="" class="check-df" onchange="showDf(event,0)" />&nbsp;Data Furnisher<span class="cr"></span></label>
          +                                         <select name="info_item[dest][0][]" class="form-control select-df" id="select-df-0" style="display: none;" >
          +                                         </select>
          +                                         <input type="text" name="info_item[dest][0][]" class="form-control" placeholder="OTHER" style="width: 96%; display:none;" id="other-text-0">
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="EXPERIAN PO BOX 9701, ALLEN, TX 75013" class="check-exp1" />&nbsp;EXPERIAN PO BOX 9701, ALLEN, TX 75013<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="EXPERIAN PO BOX 4500, ALLEN, TX 75013" class="check-exp2" />&nbsp;EXPERIAN PO BOX 4500, ALLEN, TX 75013<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="EQUIFAX PO Box740256, ATLANTA,GA 30374-0256" class="check-equ1" />&nbsp;EQUIFAX PO Box740256, ATLANTA,GA 30374-0256<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="EQUIFAX PO Box740241, ATLANTA,GA 30374-0241" class="check-equ2" />&nbsp;EQUIFAX PO Box740241, ATLANTA,GA 30374-0241<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="Trans Union PO Box 2000, CHESTER, PA 19016-2000" class="check-tra1" />&nbsp;Trans Union PO Box 2000, CHESTER, PA 19016-2000<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="Trans Union PO Box 1000, CHESTER, PA 19022-1000" class="check-tra2" />&nbsp;Trans Union PO Box 1000, CHESTER, PA 19022-1000<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="Trans Union PO Box 2000, CHESTER, PA 19022-2000" class="check-tra3" />&nbsp;Trans Union PO Box 2000, CHESTER, PA 19022-2000<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640" class="check-ino1" />&nbsp;INNOVIS PO Box 1640, Pittsburgh, PA 15230-1640<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088" class="check-ino2" />&nbsp;Innovis Consumer Assistance PO Box 530088, Atlanta, GA 30353-0088<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="LexisNexis PO Box 105108, Atlanta, GA 30348" class="check-lex1"/>&nbsp;LexisNexis PO Box 105108, Atlanta, GA 30348<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108" class="check-sag1" />&nbsp;SageStream, LLC, LexisNexis Risk Solutions Consumer Center P. O. Box 105108. Atlanta, Georgia 30348-5108<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125" class="check-chex1" />&nbsp;Chex Systems ATTN: Consumer Relations, 7805 Hudson Rd., Ste. 100, Woodbury, MN 55125<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734" class="check-mib1" />&nbsp;(US RESIDENTS) MIB Inc 50 Braintree Hill Park, Suite 400, Braintree, MA 02184-8734<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7" class="check-mib2" />&nbsp;(CANADIAN RESIDENTS) MIB Inc 330 university Avenue, Suite 501, Toronto, Canada M5G 1R7<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="FactorTrust PO Box 3653,Alpharhetta, GA 30023" class="check-fact1" />&nbsp;FactorTrust PO Box 3653,Alpharhetta, GA 30023<span class="cr"></span></label>
          +                                         <label class="lbl-dest check-btn"><input type="checkbox" name="info_item[dest][0][]" value="" class="check-aa" />&nbsp;Audit Analysis<span class="cr"></span></label>
          +
          +                                         <input type="text" name="info_item[dest][0][]" class="form-control" placeholder="OTHER" style="width: 96%" id="other-text-0">
          +                                         <span class="glyphicon glyphicon-plus btn-add-other" title="Add Other"></span>
          +                                       </div>
          +
          +                                    </div>
          +                                    <div class="col-md-12 text-center" style="clear: both;">
          +                                        <button class="btn btn-success btn2" onclick="addContent()" type="button"><span class="glyphicon glyphicon-plus" title="add"></span>Add Another Content</button>
          +                                    </div>
          +
          +                                 </fieldset>
          +                                </div>
          +
          +
          +                              </div>
          +                              <div id="img-container">
          +                                <div class="col-md-12 text-center" id="div-img-bottom" style="display: none;">
          +                                  <input type="hidden" name="identity_proof_file" value="" id="identity_proof_file1">
          +                                  <input type="hidden" name="ssn_proof_file" value="" id="ssn_proof_file1">
          +                                  <input type="hidden" name="address_proof_file" value="" id="address_proof_file1">
          +                                  <input type="hidden" name="other_file" value="" id="other_file1">
          +                                  <p>Current Images</p>
          +                                  <div class="col-md-1 col-md-offset-2 ">
          +                                    <label class="check-btn"><input type="checkbox" name="include_bureau_image" value="1"   checked="checked">&nbsp;Bureaus<span class="cr" title="Add Images to Bureau Letters"></span></label>
          +                                  </div>
          +                                  <div class="col-md-6">
          +                                    <p >PHOTO IDENTIFICATION :<label id="identity_proof_file" class="span-file">..........</label><br>SSN PROOF :<label id="ssn_proof_file" class="span-file">..........</label><br>ADDRESS PROOF :<label id="address_proof_file" class="span-file">..........</label><br>OTHER FILE :<label id="other_file" class="span-file">...........</label> </p>
          +                                  </div>
          +                                  <div class="col-md-3 text-left">
          +                                    <label class="check-btn"><input type="checkbox" name="include_creditor_image" value="1"  >&nbsp;Creditors<span class="cr" title="Add Images to Creditors Letter"></span></label>
          +                                  </div>
          +                                </div>
          +                                <div class="col-md-12">
          +                                  <label class="col-md-12" style="text-align:center;">Add Image Here for Proof: Example: SS, Proof ID, Current Bill ect. Must be PNG or JPEG</label>
          +                                </div>
          +
          +                                 <div class="col-md-12 img-content" id="img-content-1">
          +                                    <div class="col-md-offset-3 col-md-6">
          +
          +                                      <input type="file" name="img_bottom[]"  class="form-control no-bdr"></div>
          +
          +                                    <div class="col-md-1" style="margin-top: 5px;margin-right: 20px"><label id="label1"><a onclick="addImage()" id="add-image-btn" style="padding: 1px 6px;" class="btn btn-success"><i class="fa fa-plus"></i></a></label>
          +                                      <label id="label1"><a onclick="removeImage(1)" id="remove" style="padding: 1px 6px;" class="btn btn-danger"><i class="fa fa-minus"></i></a></label>
          +                                    </div>
          +
          +                                 </div>
          +                              </div>
          +                              <div class="row text-center" style="margin-top: 20px;">
          +                                  <div class="col-md-8 col-md-offset-4">
          +                                    <div class="col-md-2 ">
          +                                      <div class="form-group">
          +                                          <label class="check-btn"  title="Generate Audit Letters Only"><input type="checkbox" name="audit_only" value="1" >&nbsp;<strong>Audit Only</strong><span class="cr"></span></label>
          +                                       </div>
          +                                    </div>
          +                                    <div class="col-md-2 ">
          +                                        <div class="form-group">
          +                                            <label class="check-btn"  title="Generate Data Furnishers Letters Only"><input type="checkbox" name="df_only" value="1" >&nbsp;<strong>Data Furnisher's Only</strong><span class="cr"></span></label>
          +                                        </div>
          +                                    </div>
          +                                    <div class="col-md-2 ">
          +                                        <div class="form-group">
          +                                            <label class="check-btn"  title="Generate Creidt Bureaus Letters Only"><input type="checkbox" name="bureau_only" value="1" >&nbsp;<strong>Bureaus Only</strong><span class="cr"></span></label>
          +                                        </div>
          +                                    </div>
          +                                  </div>
          +
          +                                  @if(Auth::user()->can('Generate-letters') && $not_expired)
          +                                    <input type="submit" name="save" value="Generate Document" id="generate-pdf" class="btn btn-success btn2" readonly="readonly">
          +                                    <div id="client-loader2" style="display: none;" >
          +                                      <img   src="{{ asset('public/images/ajax-loader.gif') }}"> <span>&nbsp;&nbsp;&nbsp;Please wait Generating Letters</span>
          +                                    </div>
          +                                  @else
          +                                  <input type="button" name="save" value="Generate Document" id="generate-pdf" class="btn btn-success btn2"  onclick="alert('Access to generate and or save your above-created documents is currently unavailable, please purchase a subscription to gain immediate access without losing your work.');">
          +                                  @endif
          +                              </div>
          +                           </div>
          +
          +                        </div>
          +                     </div>
          +                  </div>
          +               </form>
          +            </div>
          +            <div class="row" style="clear: both;">
          +                <div class="view-html" id="view-html">
          +
          +              </div>
          +            </div>
          +            <div class="row" style="clear: both;" id="top-btn">
          +              <!-- <a href="#" onclick="topFunction()" ><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content" title="Go To Top"></span></a><br> -->
          +              <div id="btn-up-0" style="text-align:right">
          +                <a href="#main-content-0"  ><span class="glyphicon glyphicon-circle-arrow-up arrow-up-content" title="Go To Content Area 1"></span></a>
          +                <div id="btn-up-1" style="display: none;">
          +
          +                </div>
          +              </div>
          +            </div>
          +
          +
          +         </div>
          +      </div>
          +   </div>
          +</div>
          +@section('scripts')
          +<script src="{{ asset('public/js/select2.full.min.js') }}"></script>
          +<script src="{{ asset('public/js/summernote/summernote.min.js') }}"></script>
          +<script src="{{ asset('public/js/bootstrap-multiselect.js') }}"></script>
          +
          +
          +<script src="{{ asset('public/js/datepicker.js') }}"></script>
          +<script src="{{ asset('public/js/evlg-page.min.js?1.21') }}"></script>
          +
          +@endsection
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/1.blade.php b/resources/views/lg/pdf/1.blade.php
          new file mode 100644
          index 0000000..9b3e020
          --- /dev/null
          +++ b/resources/views/lg/pdf/1.blade.php
          @@ -0,0 +1,25 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE:  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not! </p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I would like to forge forward with a righted disputation challenging what likely is an inaccurate, untrue, incomplete, untimely, not compliant, and or possibly not even of my ownership of responsibility allegation of a derogatory item that I see you currently have on my credit report, possibly causing violating infringements and injury to my credibility. While studying my report I have come across a number of mistakes and inaccuracies that you are reporting. Please review and eradicate any and all of these following unproven true, correct, complete, timely, mine, my responsibility, FCRA compliant, Metro 2 Format compliant, or else wise compliant to every single one even each any and all of the regulations ,applicable laws, and or applicable standards of reporting of which you are undoubtedly mandated in your reporting obligation(s) to obey without default or deficiency of any sort. The following challenged information is among such allegations of which each and one all require immediate deletion or REMOVAL FROM REPORTING otherwise. I DEMAND rightfully that you do so today, even now and here! Below listed is the currently reported not yet proven valid nor demonstrated as being certifiably compliant reported allegation(s) of information that I mark as being in question:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p>Be aware that I have obtained a recent copy of my credit report and discovered it contains inaccurate or otherwise questionably reported injurious information or derogatoriness elsewise. Of greater concern is the fact that I have found at least one circumstance of reported claim(s) that still yet are factually UNPROVEN TO BE COMPLIANT much less TRUE, complete and or accurately reported allegations of Account(s)/ Inquiry(ies)/ or personal identifier information otherwise that you are currently reporting, each of which appear to be not in lawful compliance to requisite reporting regulations or else wise improperly reported and or  transferred by other lender/servicer(s) on the report. I adequately have researched and fully understand my rights and I am serving you written notice of my consumer demand checking for your federally required proof of compliance even to the metro 2 data field formatted regulatory reporting obligations of you as a specific mandate due to the CRSA enactment and implementation of the standardized CDIA sponsored Metro 2 Compliance rules. The Fair Credit Reporting Act dictates that every single one even each any and or all accusations of debts, true or not, must be accurately and timely reported in all deferment/transfer cases. It appears that it cannot be determined in irrefutable fact (as required) that everyone and all of the loans in question were or were not handled properly when they were transferred. I am enacting both my consumer and my civil rights lawfully to COMPEL YOU IN WRIT DEMAND to demonstrate all facts and further to unequivalently provide me with written documentation of the deletion of this erroneous information for each and every one of the unproven or else otherwise not lawfully compliant reportings of accounts, which obviously are in question. You can be assured also that immediately I am also notifying the Better Business Bureau and Consumer Financial Protection offices in regard to this unforgivable and extremely injurious error in your clear mis-reporting of illegal mis-information! To date, no entity (neither the accusers nor you) has elected to properly and lawfully in truth, accuracy, completeness, timeliness, and otherwise in full reporting compliance (particularly in metro 2 compliance) to provide to me , the consumer alleged, even a single or ONE tangible shred of evidence from any much less any of these data furnisher(s). As is generally so advised by representatives of the Consumer Financial Protection Bureau (CFPB) I have indeed made known my concerns of unlawful chancery-based subterfuge in my credit reports related to these allegations hereby declared. I have never received any substantiating verification of irrefutable full truth, accuracy, completeness, timeliness, ownership, responsibility, and compliance to any and all federal obligations and even the metro 2 compliance requirements from anyone even if and when I forwarded written request of information to VALIDATE the account information that your firm reported as miraculously verified, yet without any such proof of this alleged affirmation of facts. Being now possibly several weeks I was informed by the Loan servicer that the INFORMATION REQUIRED TO VALIDATE the LOAN information HAD NOT BEEN RETAINED AND THAT THEY COULD NOT CONFIRM ANY INFORMATION AT THIS TIME! I feel it is in your best interest to suspend reporting this disputed information immediately! If you choose not too or send along one of your famous ridiculous and unflattering much less insulting of intelligence form letters I will have no choice but commence the unpleasantness of a Sections 1024.35 (Notice of Error) under Regulation X (CFPB regulation) that confirms my private right of action directly against your firm for FAILING to respond and CONTINUING to report disputed information after direct notice of said dispute was provided. You have 5 calendar days to comply and provide a written notice of the suspension of this item pending the resolution of the investigation action or face litigation. Here now and forever annul any and all account records of derogatory, adversary, or else wise deficient of proof of full of reporting compliance( be it FCBA, FCRA, FDCPA, Metro 2 Format Compliance, or else whether mentioned or not) claims or aspects of claims associated. UNLESS IRREFUTABLY PROVEN,PHYSICALLY, TO BE FULLY METRO 2 COMPLIANT AND CURRENT, TRUE,CORRECT,COMPLETE,TIMELY,MINE,OF MY RESPONSIBILITY,OR ELSEWISE MANDATED PER REPORTING LAWS OF MY STATE AND OR FEDERALLY ABSOLUTELY NO ADVERSE OR DEROGATORY ALLEGATIONS CAN BE LAWFULLY RETAINED MUCH LESS LEGALLY REPORTED.AS SUCH, I AM NOW ENACTING MY CONSUMER AND CIVIL RIGHTS TO COMPEL YOU TO ANNUL ANY NOW BY FULL AND PERMANENT DELETION OR ELSE ADEQUATELY TESTIMONY TO THE DOCUMENT CERTIFICATION OF YOUR OBEYING OF THE MANDATED METRO 2 DATA FORMATTED REPORTING REGULATION STANDARDS. FAILURE TO REMEDY THIS APPROPRIATELY WILL LEAD TO MY DETERMINED AND RIGHTFUL CIVIL ACTIONS TO SUIT YOU AND SEEK MONETARY RESOLUTION GRANTED ME VIA A COURT IN MY JURISDICTION.</p>
          +  </div>
          +  <div class="row">
          +    <h2 >In Genuine Sincerity I close,</h2>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +
          +@endsection
          diff --git a/resources/views/lg/pdf/10.blade.php b/resources/views/lg/pdf/10.blade.php
          new file mode 100644
          index 0000000..9584b9a
          --- /dev/null
          +++ b/resources/views/lg/pdf/10.blade.php
          @@ -0,0 +1,33 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!  Your current reporting is significantly questionable and unproven to be factually true, correct, complete, timely, validated and or else wise certified compliant as related to the mandates and standards of lawful reporting per the applicable aspects of the FCRA and FDCPA to include but not limited to the mandatorily perfect and complete certified Metro 2 format reporting!<br>You are reporting inaccurate and incomplete information in regards to the below noted medical account(s).  I demand that you contact the Medical facility, as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this Medical Collection and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect allegation(s) immediately and permanently:</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>This is a request under FCRA 611 (a) (7) for a description of the procedure used by your agency in providing all information to the creditor associated with my earlier dispute of the validity of the reported late payments from my credit file your bureau provided to me. To be more specific, based on FCRA 611 (a) (2) (B), you were required to forward all of the relevant information provided by you to the creditor for their investigation of my dispute.   After contacting the creditor I have been led to believe that THIS did not take place.  This is a clear violation of the FCRA and the FCBA.</p>
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/11.blade.php b/resources/views/lg/pdf/11.blade.php
          new file mode 100644
          index 0000000..d5748d6
          --- /dev/null
          +++ b/resources/views/lg/pdf/11.blade.php
          @@ -0,0 +1,36 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Currently, You are reporting inaccurate and incomplete information in regards to the below noted medical account(s).  I demand that you contact the Medical facility, as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this Medical Collection and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect allegation(s) immediately and permanently:</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!  Your current reporting is significantly questionable and unproven to be factually true, correct, complete, timely, validated and or else wise certified compliant as related to the mandates and standards of lawful reporting per the applicable aspects of the FCRA and FDCPA to include but not limited to the mandatorily perfect and complete certified Metro 2 format reporting! As you surely have noted, this is a request under FCRA 611 (a) (7) for a description of the procedure used by your agency in providing all information to the creditor associated with my earlier dispute of the validity of the reported late payments from my credit file your bureau provided to me. To be more specific, based on FCRA 611 (a) (2) (B), you were required to forward all of the relevant information provided by you to the creditor for their investigation of my dispute.   After contacting the creditor I have been led to believe that THIS did not take place.  This is a clear violation of the FCRA and the FCBA.</p>
          +    <p class="txt-cen-ul" style="font-style: italic;font-size: 16px;">This letter is your formal notice to Cease and Desist ALL activities in regards to the REPORTING of the above titled Student Loan account.  As your firm is well aware I have LEGALLY exercised my rights by disputing the validity of this debt. I have in writing and by phone demanded that you provide documented  validation to me regarding how this item’s payment and conditions were verified and reported, instead you have IGNORED my demands and violated 15 U.S.C.A. § 1692g(b)- REQUIREMENT to complete a timely investigation.  I attempted to notify your compliance department officer of record in regards to the breech of regulatory requirements in your investigative efforts. This notice was subsequently ignored. Therefore I am demanding that you CEASE ALL activities. Including but not limited to the reporting of the Student Loan in question and any further backdating of documents or records related to the alleged VERIFICATION of this account. Please be advised if have also notified Federal Regulators (Consumer Financial Protection Bureau), and the original creditor and furnisher of this information of YOUR implicit regulatory failure in this matter. I will not hesitate to bring suit against your firm in this matter as in the example of Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/12.blade.php b/resources/views/lg/pdf/12.blade.php
          new file mode 100644
          index 0000000..86ded90
          --- /dev/null
          +++ b/resources/views/lg/pdf/12.blade.php
          @@ -0,0 +1,38 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) on my student loan that as far as I am aware is such that should be Pays/Paid As Agreed, Never Late status. Yet, this current reporting item(s) delinquency(ies) are unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >You have listed an inaccurate Student LOAN (LOAN #) on my credit file. I need to have it removed as soon as possible. I am filing this dispute of the Student Loan  Information that you are providing under FCRA 611 (a) (7) that specifically requires a description of the procedure used by your agency in providing and obtaining this particular Student Loan including if this was obtained by a third party originator and how it was handled and transferred to your firm and here below is the erroneous Student Loan(s) record you are reporting:</p>
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p> Please delete this above noted misleading information. Additionally I request that you please supply a corrected credit profile to all creditor reporting agencies. Understand that I am exercising my rights under the terms of the Fair Credit Reporting Act (FCRA) (15 U.S.C. § 1681) and I expect your firm will respect my full legal rights as a consumer.  If for some reason you decide not to remove this inaccurate information, please do the following:<br>
          +1.      Tell me in writing what information you refuse to remove and why.
          +<br>2.      Tell me in writing what you did to determine that the information was accurate.
          +<br>3.      Note the information as disputed on my credit report and insert the relevant statement of my dispute, above, into my credit report.
          +                      <br>According to 15 USC § 1666 you are to cease collection of the disputed amount until verification and validation have been done.  If your firm CANNOT produce ALL of the above noted documentation in the allotted time frame, I will accept a written NOTIFICATION stipulating that your firm CANNOT COMPLY with the FDCPA and formally withdrawing your claim to this alleged debt is demanded. If you choose to ignore this demand, I will pursue a direct course offered under the SETTLEMENT AGREEMENT entered into by the Credit Reporting Agencies with the ATTORNEY GENERAL OF THE STATE OF NEW YORK BUREAU OF CONSUMER FRAUDS & PROTECTION and 37 other states that specifically EMPOWERS a working group to remediate and hold accountable and sanction data furnishers who fail to meet the requirements of the FDCPA and CFPB’s compliance guidance for Professional Debt Collection Practices. If your firm chooses not to respond to this VALIDATION demand and its conditions I will NOT hesitate to FILE suit and SEEK my own payday against your firm for malicious collection activities-see Fields v. Wilber Law Firm, Donald L. Wilber and Kenneth Wilber, USCA-02-C-0072, 7th Circuit Court, Sept. 2004. You have 30 days from the post mark date of this validation demand to answer. I appreciate your time and attention to this matter.
          +         <br>Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting! Your reporting , is at a minimum , questionable and not factually substantiated and as such does not meet the minimum criterion of lawful reporting nor assumption of true and validity otherwise.  Please be advised that I here now demand that you check for undoubtable proof of and I challenge  the validity of the alleged debt in its entirety. Be further advised that I am requesting the name and address of the original creditor, along with an agreement with my original signature binding me to the alleged debt, if so exists. You are attempting to collect an alleged debt and money that I do not owe unlawfully.  As per Federal Statute the FDCPA, I'm asking that you cease and desist all collection activity, including credit reporting. I am also requesting the prompt deletions of any prior credit reporting to credit reporting agencies. This letter may be provided to the Consumer Financial Protection Bureau (“CFPB”) and I am fully aware that they are authorized to investigate this matter. If you fail to comply with this letter, this matter may be turned over to an attorney. The following accounts below were reported as a collection, but I don't recall having any business transactions or dealings with these companies. I am asking that you have the creditors provide evidence the accounts belong to me and should be on my credit report, In addition, to show that my rights have not been abrogated. I'm asking each to verify that the creditors have a signed contract or paperwork from me or related to me in any fashion.<br> Unless this paper is produced or the account is unverifiable by each creditor, I required that the accounts in question are updated and deleted to reflect the proper reporting standard. </p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/13.blade.php b/resources/views/lg/pdf/13.blade.php
          new file mode 100644
          index 0000000..83b2ece
          --- /dev/null
          +++ b/resources/views/lg/pdf/13.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom It May Concern,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Please note that the FDCPA has been violated by mischaracterizing this alleged debt in your attempts to collect.<br>
          +You referenced a “loan” balance in your letter derelict letter sent to me previously ( I suppose as your attempt to validate debt?)  when in fact the laws governing the alleged contract clearly state this as a credit sale. No loan has taken place between anyone involved in the alleged agreement. The alleged debtor is not a borrower nor have they been loaned any goods or advanced any money by the alleged creditor. Your reporting is not only deceptively misleading it is also substantially absent requisite conditional verifiability, validity (as related to document evidence in support of physical proof of truth , correctness, and completeness of claim) , and certifiability (to Metro 2 Format as example). Per my state’s applicable reporting and or collection laws and per federal standards similar, no claim derelict may be retained much less reported so REMOVE FROM REPORTING this claim of repossession right now, any furtherance is assumed to be your willful disregard of requisites to report and intentional harassment or even extortion under threat of financial injury(ies). The claim(s) below noted are unlawful and require deletion today, even here and now so do so immediately:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p> Under the laws of my state (and yours even)  and UCC § 9.506 as well as State RISA and MVISA statuses, a deficiency can not be claimed unless all of the required notices were properly and timely given, and all of the allowable redemption and cure time limits were adhered too.
          +I demand proof that the repossession of the subject vehicle was legal in accordance with the following UCC:<br>
          +&middot; 9-506. EFFECT OF ERRORS OR OMISSIONS.
          +<br>&middot; 9-611. NOTIFICATION BEFORE DISPOSITION OF COLLATERAL
          +<br>&middot; 9-612. TIMELINESS OF NOTIFICATION BEFORE DISPOSITION OF COLLATERAL.
          +<br>&middot; 9-613. CONTENTS AND FORM OF NOTIFICATION BEFORE DISPOSITION OF COLLATERAL
          +You are required to provide me copies of the legal notices and proof of the commercially reasonable manner of the notification and resale of the subject vehicle.<br>
          +If no such proof is provided within 15 days from receipt of this certified mail notice, the alleged claim of the deficiency will be considered null and void, and any continued collection activities, or continued reporting of this invalid claim on my credit reports will be considered a violation of the FDCPA and FCRA.<br>
          +In addition, if you singularly or severally fail to comply with the above requests, I reserved the right to seek damages against all parties, under all available State and Federal statutes and including but not limited to UCC § 9-625 remedies.<br>
          +Furthermore, you are hereby notified that a no point in time and under no circumstances is your company; and employee of your company; a representative for your company or affiliates are to contact me or any family members by any means other than the US Postal mail system.  Again, I DEMAND (not REQUEST) that you delete this from my credit reports and desist in your collection efforts, or I will escalate my complaint, demands, defenses and/or claims with my attorney(ies).<br>
          +In Just Sincerity I leave, </p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/14.blade.php b/resources/views/lg/pdf/14.blade.php
          new file mode 100644
          index 0000000..28cc33a
          --- /dev/null
          +++ b/resources/views/lg/pdf/14.blade.php
          @@ -0,0 +1,36 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom It May Concern,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Currently, You are reporting inaccurate and incomplete information in regards to the below noted medical account(s).  I demand that you contact the accuser’s , as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Fact is, The alleged account(s)  is(are) being illegally reported on my credit report. Previously, I have I formally contested  it directly with the supposed creditor and collector alike to no avail as they seem content on ignorant in lawful reporting and or collection requisites  in regards to their illegal reporting, and have not received any satisfactory reply, certainly nothing substantiating claim nor remotely resembling a physically verified item of truth, correctness and validity elsewise much less a grain of hope it is factually compliant to its mandatory certified Metro 2 format reporting standards!. Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this item of misinformation and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect repossession  allegation(s) immediately and permanently. More specifically, I am referencing the fact that you are reporting the following:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p>Therefore, I’m now formally contesting this falsity directly with you. Furthermore, if at any time during your investigation of the above account(s)  is(are) miraculously  verified by any accuser, in turn let it be known that this also serves as my notice that  I am requesting your method of verification pursuant to the FCRA, including the name of the person with whom you spoke, who has firsthand knowledge of the account tin question. Your improper procedures are highly damaging to my credit score. Please immediately delete this item. Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!<br>I am writing to challenge the reporting and compliance on an account with {custom1} that is being reported on my credit report with misleading info. I am maintaining a careful record of my communications with you for the purpose of filing a complaint with the Consumer Financial Protection Bureau and the Attorney General’s office, should you continue reporting this erroneous item.
          + Thank you in Advance,</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +    <br>
          +    <p>P.S. Please be advised that dependent upon your response, I may be detailing any potential issues with you company via and online public press release.<br>
          + CC: Consumer Financial Protection Bureau<br>
          +CC: Attorney General’s Office<br>
          +CC: Better Business Bureau</p>
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/15.blade.php b/resources/views/lg/pdf/15.blade.php
          new file mode 100644
          index 0000000..ef91fc6
          --- /dev/null
          +++ b/resources/views/lg/pdf/15.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom It May Concern,</h1>
          +  </div>
          +  <div class="row">
          +    <p >ATTENTIVELY REVIEW my formal writ composed DECLARATION of Not Proven Compliant Misinformation that is all or in part: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction- ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting!To be clear,you are mandated by laws to eliminate every notation and or aspect of any and all derogatory and adversary items from any and all alleged claims still yet unproven to be true, correct, complete, timely, documented as being mine,testimonial to be of my responsibility,with FCRA compliance,andor CRSA CDIA Metro 2 COMPLIANT reporting.FEDERAL laws dictate that any and all derogatory or potentially injurious reporting MUST be all of the aforementioned and can NOT BE ASSUMED without undoubted CERTIFIABLE testimonial of FACTs ensuring the physically verifiability of the CONFIRMED manual validation of any item upon a consumer complaint,such as is this notice here and now.Please RETURN to or retain federally lawful reporting with your unwavering and unconditional annulment of every single one even each any and or all of the allegations accused of me deficient of physical evidence to every and all aspects of said claims,be them true or not.  I would like to forge forward with a righted disputation challenging what likely is an inaccurate, untrue, incomplete, untimely, not compliant, and or possibly not even of my ownership of responsibility allegation of a derogatory item that I see you currently have on my credit report, possibly causing violating infringements and injury to my credibility. While studying my report I have come across a number of mistakes and inaccuracies that you are reporting.Please review and eradicate any and all of these following unproven true, correct, complete,timely, mine, my responsibility,fcra compliant,metro 2 compliant,or else wise compliant to every single one even each any and all of the regulations ,laws,and standards of reporting of which you are undoubtedly mandated in your obligation to obey: You have listed an inaccurate Public Record on my credit file. I need to have it removed as soon as possible. I am filing this dispute of the Public Record Information that you are providing under FCRA 611 (a) (7) that specifically requires a description of the procedure used by your agency in providing and obtaining this particular public record including if this was obtained by a third party Information Broker and if the information was provided in Metro-2 format and updated by the information provider to include complete personal identifiers including Full Legal Name and Address. I have been advised by my family attorney that his investigation of this erroneous public record leads him to believe that your firm has MIXED my file information and inappropriately assigned this public record to my credit report. Here is the erroneous record you are reporting. The following allegations each require immediate deletion,do so now and here! Below is (are) the questionable account aspect(s) in question:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p>To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office answers written requests for validation of civil judgments or liens?Unless you have evidence to the contrary, you absolutely can not logically confirm any information and as a legal mandate the record of unproven truth, correctness and compliance must be eradicated immediately without delay and or injuries versus me as a consumer within my lawful consumer and civil rights to do so. To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office provides Verification of information to Credit Reporting Agencies? Unless you have evidence to the contrary, you absolutely can not logically confirm any information and as a legal mandate the record of unproven truth, correctness and compliance must be eradicated immediately without delay and or injuries versus me as a consumer within my lawful consumer and civil rights to do so. To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office provides verification or validation requests by electronic means for civil judgments or liens?Unless you have evidence to the contrary, you absolutely can not logically confirm any information and as a legal mandate the record of unproven truth, correctness and compliance must be eradicated immediately without delay and or injuries versus me as a consumer within my lawful consumer and civil rights to do so. I am attempting to confirm the testimonial composed certificate to the every single one even each any and or all of facts to the truth, accuracy,completeness and compliance(including even to Metro 2 data field formatted reporting) of the process and procedure used in your office for the alleged validation and verification of any and all Liens (be it state tax lien,federal tax lien,civil lien,property lien, mechanic's lien, and or lien elsewise,mentioned here or not) and Judgments(again be it civil, federal,or even lawfully criminal should you be so derelict of dutiful responsible and reliable reporting that you might be considered an enabler of fraud and or identity theft . Being the severe and sensitive nature of this here formal consumer complaint ,your obligation at a minimum would include you could assuredly physically and manually reviewing and thereafter genuinely answering the following questions to irrefutably clarify a legal situation for me. To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office provides verification any of the Personal Information such as correct name, address or Date of birth for validation inquiry’s?<br>I am of great confidence you do realize and abide by such understanding that any and all parties reporting debt(s) and or derogatory credit information must respond to consumer inquiries.All parties reporting credit information must comply with the Fair Credit Reporting Act (FCRA), Fair Debt Collection Practices Act (FDCPA), any applicable state laws and regulatory authorities. Any data furnisher claiming and alleged consumer debt and or derogatory otherwise must truthfully, correctly,completely and proven compliantly report the Date of First Delinquency is used to comply with FCRA sections 605 and 623 (obsolescence period). Testimony now to the fullness of adequate reporting of the Date Of First Delinquency here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office provides information related to how long any such court Clerk's office maintain records of civil actions? To date, unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office provides answer written requests for validation of civil judgments or liens?</p>
          +    <p>Any and all Third Party Collection Agency(s) is(are) a company(ies) or individual(s) who specializes
          +in collecting outstanding debts for other businesses or individuals,therefore meet the minimum criteria for being compelled to be and only be true, accurate, complete,timely,and metro 2 compliant reliably and minus uncertainty. Any and all Debt Purchaser(s)/ Factoring Company(s) is(are) a company(ies) or individual(s) who regularly purchases accounts with the intent of collecting debts owed and or reporting any claim of derogatory otherwise ,.therefore meet the minimum criteria for being compelled to be and only be true, accurate, complete,timely,and metro 2 compliant reliably and minus uncertainty. Testimony now to the fullness of adequate reporting here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place.
          +· Any and all data furnisher(s) claiming any and all alleged consumer debt(s) and or derogatory otherwise must truthfully, correctly,completely and proven compliantly report data in the standard Metro 2 Format.Testimony now to the fullness of adequate standard Metro 2 Format reporting here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. 6-Will your Clerk's office respond to telephone inquiries about civil judgments or liens?
          +·Any and all data furnisher(s) claiming any and all alleged consumer debt(s) and or derogatory otherwise must truthfully, correctly,completely and proven compliantly report at least on a monthly basis.Testimony now to the fullness of adequate monthly standard Metro 2 Format reporting here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. Any and all data furnisher(s) claiming any and all alleged consumer debt(s) and or derogatory otherwise must truthfully, correctly,completely and proven compliantly report the complete name, address and social security number of the legally liable consumer(s), using the joint section for reporting secondary names. Testimony now to the fullness of adequate standard Metro 2 Format reporting including exacting compliantly reported complete name, address and social security number of the legally liable consumer(s), using the joint section for reporting secondary names here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. Any data furnisher claiming and alleged consumer debt and or derogatory otherwise must report the individual's complete and unique account number as extracted from the alleged consumer’s file.Testimony now to the fullness of adequate standard Metro 2 Format reporting including the alleged consumer’s complete and unique number as extracted from the same identified and exact alleged consumer here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. To date,unlawfully might I add, no accusing entity(ies) even court(s) alleged has informed me if their Clerk's office participate with or is a member of an electronic system that allows other agencies or private parties to validate or verify court information?Unless you have evidence to the contrary, you absolutely can not logically confirm any information and as a legal mandate the record of unproven truth, correctness and compliance must be eradicated immediately without delay and or injuries versus me as a consumer within my lawful consumer and civil rights to do so. Please Provide Physical Proof of COMPLIANCE and Verification... NO ENTITY may include in a consumer report ANY adverse information DEFICIENT OF PHYSICALLY VERIFIED VALIDITY OF TRUTH, ACCURACY, COMPLETENESS AND COMPLIANCE TO METRO2 SO PROVE NOW OR DELETE THE CLAIM. Any data furnisher claiming and alleged consumer debt and or derogatory otherwise must truthfully, correctly,completely and proven compliantly report the internal code(s) that unmistakably identifies every and one even each any and or all of the third party collection agency(ies)/debt purchaser(s)/factoring company(ies) where information is certified to be lawfully and irrefutably proven verified. Testimony now to the fullness of adequate standard Metro 2 Format reporting of the internal code(s) including exacting compliantly reported complete name, address and social security number of the legally liable consumer(s), using the joint section for reporting secondary names here and now in composed writ document of certificate acknowledging undoubted regulatory and obligatory standards of proper reporting has and or is taken place. 9-Does your Clerk's office report public information and Data in the Metro-2 format? Might it be known that THIS LETTER of consumer check and challenge for lawful reporting compliance is my officially composed writ formal complaint that you are reporting one or more of the following,ILLEGALLY mind you:<br>i)Your reporting is unproven to be TRUE,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>ii)Your reporting is unproven to be Correct (and regulations are CLEAR on accuracy being undoubted and irrefutable),so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>v
          +iii)Your reporting is unproven to be COMPLETE (and regulations are CLEAR on mandates to be fully COMPLETE in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>
          +iv)Your reporting is unproven to be TIMELY (and regulations are CLEAR on mandates to be fully CURRENT and TIMELY in the application of exacting and reliably consistent precision of any data
          +for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge. <br>
          +v)Your reporting is unproven to be of MY OWNERSHIP(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>
          +vi)Your reporting is unproven to be of MY RESPONSIBILITY(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>
          +vii)Your reporting is unproven to be of FCRA COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>
          +viii)Your reporting is unproven to be of CRSA enacted CDIA METRO 2 DATA FIELD FORMATTED REGULATORY REPORTING COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>Injury causing subterfuge is unlawful to retain. You are not Authorized to report or even once alleged adverse remark unproven upon a requested compliance check. You must Annul in brief, even right now and right here, by complete and permanent deletion any or even one not irrefutable allegation(s) deficient of physical composed writ certificate(s) in testimony of the exact and full truth, correctness, timeliness, completeness, ownership, responsibility, and or documented evidence of precise and willfulness to comply with every single one even any and or all of the requisite mandates/statutes/acts/obligations/and or laws related and pertinent to legal reporting of any information, known or not. Attest now to the metro-2 required truth, accuracy, fullness, timeliness, ownership, responsibility and or compliance(s) otherwise, whether mentioned or not. Ignorance of obligations to compliant reporting is NOT lawful exoneration of your responsibility to 100% accurate, true, and metro-2 compliant data formatted reporting regulations of which you are obligated. Federal laws allow me to compel you to retain and or return adequate accountability. Failure or unwillingness to do so might be remedied and rectified in my favor per monetary compensation for your infringements of my civil and or consumer rights and violations of the laws required of you. Right now demonstrate to me any and all applicable metro-2 reporting mandates including but not limited to every date and balance, each calculation and audit, the invoices and documented current identities, every notation not to forget the five (5) portioned personal identifiers, 426 character P-6 statements, alpha/numeric/ and or alphanumeric source codes, every applicable creditor classification code(s), the 3 applicable and precise sequenced 386 pieces of confirmation to collect(-ions) or any obligation else-wise. Return or Retain federally required compliance with your immediate and dull eradication of any and one of the adverse and or<br>
          +derogatory claims or any aspects of. Prove compliance or delete ASAP!!! Let this notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! Please provide me with all of the information you used for your investigation, as required by FCRA 611 (a) (7).Please reply within 10 days or delete the negative items, as originally requested. If you FAIL to respond to this demand and tort notification, your firm will be added to the pending action as complicit in this data breach of my personal information.<br>
          +1. Tell me in writing what information you refuse to remove and why. <br>2. Tell me in writing what you did to determine that the information was accurate. <br>3. Note the information as disputed BY the CONSUMER on my credit report</p>
          +
          +  <p>According to the Fair Credit Reporting Act, Section 609 (a)(1)(A), you are required by federal law to verify - through the physical verification of the original signed consumer contract - any and all accounts you post on a credit report. Otherwise, anyone paying for your reporting services could fax, mail or email in even a potentially fraudulent account. According to the provisions of the Fair Credit Reporting Act § 611(a) [15 USC 1681i(a)], these disputed items must be reinvestigated or deleted from my credit record within 30 days. During the investigation period, these items must be removed from my credit report as the mere reporting of items prior to debt validation constitutes collection activity. I am also requesting the names, addresses and telephone numbers of individuals you contacted during your investigation. Please notify me that the above items have been deleted pursuant to § 611 (a)(6) [15 USC § 1681j (a) (6)]. I am also requesting an updated copy of my credit report, which should be sent to the address listed below. According to the provisions of § 612 [15 USC § 1681j], there should be no charge for this report. If you have any questions or need additional information, please contact me at address noted below. I think 15-20 Days should be ample enough time to get this completed since this is my NOT my first time contacting your organization. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records,particularly that of personal identifiers.. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID.Moreover,the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics!Must be performed in a REAL-TIME browser LOCKDOWN to be lawful.Per CRSA
          +implementation,if a data furnisher fails to respond within 20 calendar days,e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs.Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE,please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment,to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment.Per the CRSA,any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further,this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement.I repeat, to lawfully retain and or report any claim of information,be it an account or any aspect of such,the must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims,and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported,PRESENT and RELEVANT PERSONAL IDENTIFIERS.Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository.Accuracy and completeness of all of any and all information,particularly derogatory consumer information,must abide by every and one of current MY state’s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.) <br>
          +Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true,correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE?
          +Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES,or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately,TODAY even NOW and HERE! <br>
          +Please verify and validate physically each and every claim of this alleged yet unproven to be my responsibility or fault. Please demonstrate readily and timely the precise confirming facts of the alleged account including every single one even each any and or all of its article aspects by federal laws. You must willfully and promptly DELETE TODAY even right now the deficient reporting or else present to me true documented certificated proof of all data, every notation, date, balance, calculation, audit, personal identifiers, each of the requisite 426-characters of the exact and fully compliant P6 statement, any alpha/ numeric/ and or alphanumeric source code deciding the leftness or rightness states, and even every aspect of the mandated 386 pieces of confirmation to collection. <br>
          +This series of misreporting seems to me clearly involves a universal and complete failure by your firm to obtain, retain, maintain, and utilize adequate and lawful regulatory compliant and reasonable procedures to assure maximum possible accuracy of consumer credit information as described in at least 15 U.S.C. § 1681. There is little doubt that you have no evidence that this clearly does belong to me, is exactly true, fully complete, within timely definition per federal standards and has been erroneously placed onto my credit report. The items of problematic accusations that I believe to be incorrect to its proper reporting and allowance of reporting per my state and federal laws are
          +detailed both above and below. <br>
          +Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG,as undoubtedly reporting not only must be true,timely,and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories.
          +By the provisions of the Fair Credit Reporting Act and per the standards of reporting compliance implemented with the CRSA enacted CDIA Metro 2 COMPLIANCE regulations, I demand that these above mentioned derogatory items be investigated and permanently removed from my report. It is my understanding that you will recheck these items with the creditor who has posted them. Please remove any information that the creditor cannot verify. I understand that under 15 U.S.C. Sec. 1681i(a), you must complete this reinvestigation within 30 days of receipt of this letter. <br>
          +Please send an updated copy of my credit report to the above address. According to the act, there shall be no charge for this updated report. I also request that you please send notices of corrections to anyone who received my credit report in the past six months.                                                                                                                         Thank you for your time and help in this matter.</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/16.blade.php b/resources/views/lg/pdf/16.blade.php
          new file mode 100644
          index 0000000..b45928b
          --- /dev/null
          +++ b/resources/views/lg/pdf/16.blade.php
          @@ -0,0 +1,32 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom It May Concern,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is to serve as my formal consumer complaint that you are now currently deficient in your reporting versus my credit profile history, undoubtedly in vile deficiency of documented and physically verifiable proof of fullness of truth, correctness, completeness, timeliness, demonstrated validity of claim and certifiable compliance of reporting, even as related to but not limited to the applicable laws and standards of the  FCRA and FDCPA and especially in accordances of the mandatorily perfect and complete Metro 2 format reporting standard(s).  Let it be known that I am quite puzzled that you have elected to include the following questionable if not outright erroneously reported injurious information versus me on my current credit report:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p>The above noted contested deficient information are not only injurious to me but equally embarrassing and unjust! The claim(s) potentially are preventing me having access to rightful access to great credit advantages. Certainly you are well aware of the federal requisites to retain or report ONLY information factually perfect in its reporting, physically verified true and valid, and certifiably compliant as related to applicable laws and standards including Metro 2 format compliance of reporting.<br>
          +Hopeful of your adequate resolution as I have requested,</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/17.blade.php b/resources/views/lg/pdf/17.blade.php
          new file mode 100644
          index 0000000..f66afb1
          --- /dev/null
          +++ b/resources/views/lg/pdf/17.blade.php
          @@ -0,0 +1,37 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom It May Concern,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Currently, you are reporting inaccurate and incomplete information in regard to the below noted medical account(s).  I demand that you contact the accuser’s , as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Fact is, the alleged account(s)  is(are) being illegally reported on my credit report. Previously, I have I formally contested  it directly with the supposed creditor and collector alike to no avail as they seem content on ignorant in lawful reporting and or collection requisites  in regards to their illegal reporting, and have not received any satisfactory reply, certainly nothing substantiating claim nor remotely resembling a physically verified item of truth, correctness and validity elsewise much less a grain of hope it is factually compliant to its mandatory certified Metro 2 format reporting standards!. Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this item of misinformation and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect repossession  allegation(s) immediately and permanently. More specifically, I am referencing the fact that you are reporting the following listing(s) that currently display despite not yet being documented in a physically verified true, accurate, complete, valid and certifiably compliant manner much less in full accordance of the mandatorily perfect and complete Metro 2 Format reporting. The claim(s) as reporting currently remains inadequate, incomplete or elsewise faulty reported and require immediate removal from reporting. Ensure all dates and balances, accounting, personal identifiers, source code(s), and such requisite reported data , be it mentioned or be it not. The noted questionable issue(s) are at least as follows below:</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>           I here now demand that you PROVE CLAIM(s) and require you to provide a FACTUALLY CORRECT AND COMPLETE ITEMIZED LISTING of any and all dates for any alleged delinquency and or derogatoriness’s, be it mentioned here or not. To date, you have not and are factually UNABLE to demonstrate lawful compliant reporting of only true correct verified valid claims so you MUST ERADICATE DEROGATORY and or DELINQUENCY CLAIM(s) or demonstrate requisites NOW to legally report! Therefore, I’m now formally contesting this falsity directly with you. Furthermore, if at any time during your investigation of the above account(s)  is(are) miraculously  verified by any accuser, in turn let it be known that this also serves as my notice that  I am requesting your method of verification pursuant to the FCRA, including the name of the person with whom you spoke, who has firsthand knowledge of the account tin question. Your improper procedures are highly damaging to my credit score. Please immediately delete this item. Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!<br>
          +I am writing to challenge the reporting and compliance on an account with {custom1} that is being reported on my credit report with misleading info. I am maintaining a careful record of my communications with you for the purpose of filing a complaint with the Consumer Financial Protection Bureau and the Attorney General’s office, should you continue reporting this erroneous item.
          +</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +    <p>P.S. Please be advised that dependent upon your response, I may be detailing any potential issues with you company via and online public press release.<br>CC: Consumer Financial Protection Bureau <br>CC: Attorney General’s Office <br>CC: Better Business Bureau</p>
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/18.blade.php b/resources/views/lg/pdf/18.blade.php
          new file mode 100644
          index 0000000..c2e47fc
          --- /dev/null
          +++ b/resources/views/lg/pdf/18.blade.php
          @@ -0,0 +1,30 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +@include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>Re:  Demand to remove Inaccurate Credit Information. This  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter legally serves as OFFICIAL Notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction- ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting!I have become aware of some mystifying still unknown credit inquiries on my credit report. I here now compel you to eliminate the(se) unlawful unproven claims versus me.</p>
          +    <h1 class="span-ul2">Sirs</h1>
          +    <p>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),
          +      NOTICE OF (PENDING/ IMMINENT/ IMPENDING/ FORTHCOMING/ PENSILE/ APPROACHING/ EXPECTED) LITIGATION SEEKING RELIEF AND MONETARY (DAMAGES/ COMPENSATION/ REPARATION/ REIMBURSEMENT/ RECOMPENSE) UNDER Fair Credit Reporting Act (FCRA), 15 U.S.C. § 1681, sections §616 (Civil liability for willful noncompliance) and equally §617( Civil liability for negligent noncompliance) and Truth in Lending Act of 1968 (TILA) and Metro 2 compliance to (i) Requirements definitions, (ii) file transfers and analysis, and  (iii)transitional period codes since per federal laws, every single and one even each any and or all of the data and its integrity is ultimately crucial to adequately and lawfully, as requisitioned, to upholding at least the minimal standards of the Metro 2 guidelines and data reporting legislation. It is fact that the FCRA dictates that data furnishers, and that credit reporting agencies or any recipient entity, are prohibited from supplying  or accepting any information or even aspect of such that is known or should be known or of which there exists any sort of reasonable cause to believe it is not 100% true, 100% accuracy, 100% complete, 100% timely , 100% assigned to properly identified ownership of responsibility, and or 100% compliant to every single one even each any and or all of the mandates, regulations, dictates, obligations, regulations, and laws or any article of such, whether mentioned or not, regardless if any entity is willfully deficient of knowledge of or is ignorant of it. Per the CRSA enacted Metro 2 compliance regulations, enforcement must be undertaken to clean up every single one even each any and or all challenged individual accounts and or allegations or such, particularly of a derogatory and adverse nature with  errors, identified or not.   Lawfully reported allegations of inquiry are not only factually true , factually verifiable, factually validated, but as well must be certifiably compliant as related to the requisites of properly reporting claim(s) of inquiry(ies), true or not! Compliantly reported inquiries are mandatorily with undoubted documented and physically verified proof of adequately achieved lawful PERMISSIBLE PURPOSE for review of credit profile of the one and exactly identified consumer accused with same consumer’s acknowledgement and allowance and or per rights of permissible purpose from any other identified entity of authority above and beyond a consumer’s objection and or knowledge. Deficient proof equates to deficient reporting and deficient reporting that is injurious is unlawful so delete here and now claim(s) as noted below:
          +    </p>
          +    @include('lg.pdf.partial.content')
          +
          +  </div>
          +  <div class="row">
          +    <p>   Additionally , eradicate any delinquency claim or derogatory claim elsewise associated with any unproven or else wise not certifiably compliant reporting alleged inquiry, be it true or not. COMPLIANCE OF REPORTING is a MANDATORY MINIMAL CONDITION to lawful reporting, NOT an optional one!
          +      <br>***Please provide a copy of my corrected and updated report once you have complied with the law.
          +      </p>
          +  </div>
          +  <div class="row">
          +    <h2 >In Genuine Sincerity I close,</h2>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/19.blade.php b/resources/views/lg/pdf/19.blade.php
          new file mode 100644
          index 0000000..c9ed776
          --- /dev/null
          +++ b/resources/views/lg/pdf/19.blade.php
          @@ -0,0 +1,29 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others that might be reported now or else wise I DEMAND, as is my lawful RIGHT(s) to do so, that you annul permanently and immediately any and all deficient of these afore-noted conditions, mentioned or not, especially if related directly or indirectly to any potentially injurious information be it true or unknown! Again, I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +</div>
          +@include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>Re:  Demand to remove Inaccurate Credit Information. This  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I recently received a copy of my credit report. The credit report showed a credit inquiry by your company that I do not recall authorizing. I understand that you shouldn’t be allowed to put an inquiry on my credit file unless I have authorized it. Please any and all claim(s) of inquiry removed from my credit file immediately because unproven and or not certifiably compliant reported inquiry(ies) absolutely makes it very difficult for me to acquire credit and or credit at the beneficial levels I am otherwise qualified. Delete here and now all the below listed not factually compliantly reported data or else demonstrate factual and physically verifiable document proof of any and all claim(s) .</p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +  </div>
          +  <div class="row">
          +    <p>I may have sent this letter certified mail because I need your prompt response to this issue. Please be so kind as to forward me documentation that you’ve had the unproven compliant and or else wise potentially unauthorized inquiry(ies) removed. If you find that I am remiss, and you do have my authorization(s) to inquire into my credit report, then please send me proof of this. Otherwise, please note that I am reserving the right to take civil action if necessary.
          +      <br>In advanced I thank you for your willing action to return to total compliance of reporting,
          +      </p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/2.blade.php b/resources/views/lg/pdf/2.blade.php
          new file mode 100644
          index 0000000..e053151
          --- /dev/null
          +++ b/resources/views/lg/pdf/2.blade.php
          @@ -0,0 +1,43 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE:  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not! </p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter legally serves as OFFICIAL Notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction- ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting!​I have become aware of some mystifying still unknown credit inquiries on my credit report. I here now compel you to eliminate the(se) unlawful unproven claims versus me. This consumer complaint challenging the(se) allegation(s) is done so under various consumer protection laws and standards of practice, such as FCRA 611(a)(7) which specifically mandates procedural description(s) utilized by you in the providing and obtaining this inquiry record, including if this was obtained by a third-party Information Broker and thereafter sold to your firm. I have contacted EACH of the creditors behind these erroneous Inquiries’ and was informed that because the Inquiry was made via the internet, they have NO record of an application being made BY ME! I have been advised by attorneys that this inquiry record that you are reporting is a violation of the FCRA and the FDCPA and cannot be reported. Please delete them immediately! The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, there must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership,
          +    irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL
          +    COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting
          +    regulatory standards and obligations to include the 81-month time relevance of
          +    account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL
          +    IDENTIFIERS. Further lawful reporting demands that the regulatory compliance
          +    rules are applied EVENLY and thoroughly from data provider to consumer credit
          +    reporting repository. Accuracy and completeness of all of any and all
          +    information, particularly derogatory consumer information, must abide by every
          +    and one of current MY state’s reporting regulations as well as those of federal
          +    laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of
          +    the Credit Reporting Settlement Agreement (CRSA). The below noted issue(s) is
          +    at a minimum QUESTIONABLE in its reporting if not altogether unlawfully
          +    deficient of being factually CERTIFIED COMPLIANTLY reported even as related to
          +    the mandatory perfect and complete Metro 2 Format reporting compliance of
          +    allegations that have been otherwise documented and physically verified absolutely
          +    true as reported, accurate as reported, timely in its reporting(s), complete in
          +    accordance to reporting requisites, and or undeniably proven valid exactly as
          +    reported and not deficient in any manner, mentioned here or not! Delete now or
          +    REMOVE FROM REPORTING the following injurious claim(s) versus me:</p>
          +
          +    @include('lg.pdf.partial.content')
          +  </div>
          +  <div class="row">
          +    <p>To date the above inquiry(ies) alleged have NOT been demonstrated with adequate demonstration of required PHYSICALLY VERIFIED PROOF OF THE ADEQUATE and LAWFULLY ACQUIRED PERMISSIBLE PURPOSE as result of report review requested by myself and or any person, persons, or entity else wise legally with the rights of Permissible purpose above and or beyond my knowledge and or authority. Being DEFICIENT of mandatorily documented Permissible Purpose from the exact and identified me , the allegation of inquiry(ies) can not be assumed COMPLIANTLY REPORTED nor any direct and or indirect injurious account claims assumed COMPLAINTLY reported. Further, given the above suggested deficiencies, any assumption(s) of verifiability much less validity of claim(s) can not be assumed factual, and I here now today DEMAND total and permanent ERADICATION of the flawed reported inquiry(ies) and any and all allegations of injurious account reporting(s) there by associated, directly or indirectly, mentioned here or not, true or not because CERTIFIABLY COMPLIANT REPORTING OF ONLY PHYSICALLY VERIFIED TRUE CORRECT COMPLETE and fully VALIDATED claims is the LAW and STANDARD OF ACCEPTABLE LAWFUL REPORTING PRACTICES. You now any entity has the right to be derelict in reporting and you can NOT justifiably retain any suspect or deficient information, particularly claims contested by the injured consumer such as I am doing here and now! <br>In advanced I thank you for your willing action to return to total compliance of reporting,</p>
          +  </div>
          +  <!-- <div class="row">
          +    <h2 >In Genuine Sincerity I close,</h2>
          +  </div> -->
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/20.blade.php b/resources/views/lg/pdf/20.blade.php
          new file mode 100644
          index 0000000..b29d3a6
          --- /dev/null
          +++ b/resources/views/lg/pdf/20.blade.php
          @@ -0,0 +1,40 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Equifax Corporation ATTN: Julie Shirley<br>SVP and Deputy General Counsel <br>Office of the General Counsel <br>1550 Peachtree St <br>NE Atlanta, GA 30309</p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong>FCRA 611 (a) (7)</strong>.  Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!  No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)  is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY  reported.  Tort law is quite clear in this matter!  You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong class="span-simple-ul">1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies.</strong>
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/21.blade.php b/resources/views/lg/pdf/21.blade.php
          new file mode 100644
          index 0000000..641017f
          --- /dev/null
          +++ b/resources/views/lg/pdf/21.blade.php
          @@ -0,0 +1,40 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">TransUnion Corporation ATTN: Daniel Halvorsen <br>Sr. Attorney GROUP General Counsel<br>Office of the General Counsel <br>555 W. Adams Street <br> Chicago IL 60661<br> </p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong>FCRA 611 (a) (7)</strong>.  Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!  No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)  is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY  reported.  Tort law is quite clear in this matter!  You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong class="span-simple-ul">1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies.</strong>
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/22.blade.php b/resources/views/lg/pdf/22.blade.php
          new file mode 100644
          index 0000000..0c49026
          --- /dev/null
          +++ b/resources/views/lg/pdf/22.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Experian North America, ATTN: Ann Sterling <br>Vice President and Assistant General Counsel<br>Office of the Corporate Counsel<br>475 Anton Blvd.<br> Costa Mesa, CA 92626<br> </p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong>FCRA 611 (a) (7)</strong>.  Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!  No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)  is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY  reported.  Tort law is quite clear in this matter!  You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong class="span-simple-ul">1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies.</strong>
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/23.blade.php b/resources/views/lg/pdf/23.blade.php
          new file mode 100644
          index 0000000..95f82d1
          --- /dev/null
          +++ b/resources/views/lg/pdf/23.blade.php
          @@ -0,0 +1,42 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">EQUIFAX CORPORATION, ATTN: John J. Kelley, III<br>Corporate Vice President, Chief Legal Officer<br>1550 Peachtree St <br>NE Atlanta, GA 30309<br></p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).  As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING  of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted  validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.  I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.  By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.  Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/24.blade.php b/resources/views/lg/pdf/24.blade.php
          new file mode 100644
          index 0000000..86d7a82
          --- /dev/null
          +++ b/resources/views/lg/pdf/24.blade.php
          @@ -0,0 +1,42 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Experian, ATTN: Darryl Gibson<br>Group General Counsel<br>955 American Lane<br>Schaumburg, IL 60173<br> </p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).  As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING  of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted  validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.  I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.  By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.  Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/25.blade.php b/resources/views/lg/pdf/25.blade.php
          new file mode 100644
          index 0000000..71e7629
          --- /dev/null
          +++ b/resources/views/lg/pdf/25.blade.php
          @@ -0,0 +1,42 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">TransUnion Corporation, ATTN: Daniel Halvorsen<br>Sr. Attorney GROUP General Counsel<br>Office of the General Counsel <br>555 W. Adams Street <br> Chicago IL 60661<br>   </p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).  As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING  of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted  validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.  I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.  By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.  Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +      <br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/26.blade.php b/resources/views/lg/pdf/26.blade.php
          new file mode 100644
          index 0000000..8e8856b
          --- /dev/null
          +++ b/resources/views/lg/pdf/26.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND the Office of the General Counsel for your firm!  </p>
          +</div>
          +<div class="row">
          +  <p>RE: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY! </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Per my state and the applicable federal reporting laws and standards for compliant reporting of physically verified true, accurate, complete, timely, validated claim(s) that are equally properly certified compliantly reported is the MINIMAL CRITERION FOR REPORTING or which is NOT AN OPTION but rather a REQUISITE to report LEGALLY! I here again DEMAND that you are LAWFUL in reporting ONLY CLAIMS that are documented and demonstrated as CERTIFIED COMPLIANT in the reporting of ONLY factually true correct complete timely physically verified valid claim(s) that equally is certified compliant in its processes of reporting and investigations even to the mandated perfect and complete CERTIFIED COMPLIANT METRO 2 FORMAT REPORTING STANDARD(s). Any deficiency of reporting INCLUDING proof of such invalidates REPORT-ABILITY of any injurious allegation(s) contested by an injured consumer and THIS LETTER is my official WRIT NOTIFICATION of CHALLENGE so REMOVE FROM REPORTING any derogatory claim now and permanently please to return to and retain required compliance of reporting status, which you MUST DO! ADDITIONALLY, this letter is your OBVIOUS formal notice to Cease and Desist all collection activities in regards to the above titled Inquiry, specifically because the reporting of claim(s) was a part of the collection action thereby if a part is spoiled the whole is as well!   As your firm is well aware I have LEGALLY exercised my rights by disputing the validity of this application/ inquiry that I have NO knowledge of its proven document of adequately acquired lawful permissible purpose and I can not assume it is legitimate else wise. I have in writing and by phone demanded that you provide documented validation to me of claim(s) and the proof of certified compliant reporting such as to the mandated Metro 2 format standard(s), instead you have ignored my demands.  By ignoring my legal validation request of claim’s verifiability of  certified COMPLIANT METRO 2 FORMAT REPORTING and truth accuracy and completeness of validity else wise your firm is in direct violation of the FDCPA and FCRA.  Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +<br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +</p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg/pdf/partial/bottom-cc')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/27.blade.php b/resources/views/lg/pdf/27.blade.php
          new file mode 100644
          index 0000000..09a2d07
          --- /dev/null
          +++ b/resources/views/lg/pdf/27.blade.php
          @@ -0,0 +1,49 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Consumer Financial Protection Bureau <br>Attn: Consumer Complaints Department <br> P.O. Box 4503<br> Iowa City, Iowa 52244  </p>
          +</div>
          +<div class="row">
          +  <p>RE: Problem with Credit Inquiry (ies) reported deficient of proof of validity and deficient of certified compliance of reporting, particularly as related to the mandatory METRO 2 format reporting standard(s). </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Recently I found several issues with the noted reported credit inquiry(ies) alleged and injurious versus me  on my credit report that I have NO knowledge of any documented proof of the required physically verified proof of valid permissible purpose much less demonstrated certified compliance of reporting even to the required METRO 2 format reporting standard(s), hence my check for factually perfect and lawful reporting and my challenge contesting ANY DEFICIENCY of reporting or PROOF OF MANDATED ASPECTS OF REPORTING—as is my consumer RIGHT TO DEMAND that only PROVABLE DOCUMENTED FACTUAL and CERTIFIABLY COMPLIANT claims report versus me and my RIGHT TO FORCIBLY DEMAND ERADICATION of any claim(s) not compete and perfect in its factual evidence of verifiability, validity and or compliance of reporting. I can and will in a court of civil action versus you provide ample document evidence supporting the FACTS of your DEFICIENT QUESTIONABLE REPORTING and as well clarity that indeed I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and OTHERS in complaint versus and contesting the certified compliance of the alleged validity of these claims of  Inquiry(ies) and any derogatory debt or delinquencies related, if any at all. I ALSO contacted the reported creditor(s) and or reported data furnisher(s) directly checking for compliant reporting evidence and contesting any claim deficient in ANY MANNER as PERFECT CORRECT COMPLETE PROVABLE VALID CERTIFIABLY COMPLIANT CLAIMS are the MINIMUM REQUIREMENT for lawful reporting(s) not an OPTIONAL  condition of it.  Several representatives were not even capable of  informing me that the name(s) and other alleged personal identifier information  as listed on the inquiry(ies) and associated accounts (if any)  did not match my submitted factually correct personal identifier information exactly as I have included at the top and near bottom of this exact notice of deficiencies such as issues with name spelling or other identity indicators others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry.  I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine or else wise is significantly invalidly reported.  I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED! In response, I am firing off this last resort notice requesting your appropriate actions to resolve this matter PREVIOUS my soon to be filed civil complaint and lawsuit(s).
          +
          +    <br><br>Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +    <br><br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +    </p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +    <p>I submitted IN WRITING a Validation request under the FCRA title 611, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information.
          +
          +      <br><br>I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem…can you help? Better yet, WILL YOU?
          +
          +      <br><br>PLEASE!!
          +      </p>
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/28.blade.php b/resources/views/lg/pdf/28.blade.php
          new file mode 100644
          index 0000000..4274196
          --- /dev/null
          +++ b/resources/views/lg/pdf/28.blade.php
          @@ -0,0 +1,70 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Kent Markus, Director of Enforcement<br>Consumer Financial Protection Bureau <br> 1700 G Street, <br>NW Washington, DC 20552 <br> </p>
          +</div>
          +<div class="row">
          +  <p>RE: Problem with Credit Inquiry (ies) reported deficient of proof of validity and deficient of certified compliance of reporting, particularly as related to the mandatory METRO 2 format reporting standard(s). </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Recently I found several issues with the noted reported credit inquiry(ies) alleged and injurious versus me  on my credit report that I have NO knowledge of any documented proof of the required physically verified proof of valid permissible purpose much less demonstrated certified compliance of reporting even to the required METRO 2 format reporting standard(s), hence my check for factually perfect and lawful reporting and my challenge contesting ANY DEFICIENCY of reporting or PROOF OF MANDATED ASPECTS OF REPORTING—as is my consumer RIGHT TO DEMAND that only PROVABLE DOCUMENTED FACTUAL and CERTIFIABLY COMPLIANT claims report versus me and my RIGHT TO FORCIBLY DEMAND ERADICATION of any claim(s) not compete and perfect in its factual evidence of verifiability, validity and or compliance of reporting. I can and will in a court of civil action versus you provide ample document evidence supporting the FACTS of your DEFICIENT QUESTIONABLE REPORTING and as well clarity that indeed I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and OTHERS in complaint versus and contesting the certified compliance of the alleged validity of these claims of  Inquiry(ies) and any derogatory debt or delinquencies related, if any at all. I ALSO contacted the reported creditor(s) and or reported data furnisher(s) directly checking for compliant reporting evidence and contesting any claim deficient in ANY MANNER as PERFECT CORRECT COMPLETE PROVABLE VALID CERTIFIABLY COMPLIANT CLAIMS are the MINIMUM REQUIREMENT for lawful reporting(s) not an OPTIONAL  condition of it.  Several representatives were not even capable of  informing me that the name(s) and other alleged personal identifier information  as listed on the inquiry(ies) and associated accounts (if any)  did not match my submitted factually correct personal identifier information exactly as I have included at the top and near bottom of this exact notice of deficiencies such as issues with name spelling or other identity indicators others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry.  I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine or else wise is significantly invalidly reported.  I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED! In response, I am firing off this last resort notice requesting your appropriate actions to resolve this matter PREVIOUS my soon to be filed civil complaint and lawsuit(s).
          +
          +    <br><br>Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.
          +
          +    <br><br>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:
          +    </p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong class="span-simple-ul">Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</strong></p>
          +    <p>I submitted IN WRITING a Validation request under the FCRA title 611, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information.
          +
          +      <br><br>I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem…can you help? Better yet, WILL YOU?
          +
          +      <br><br>PLEASE!!
          +      </p>
          +  </div>
          +  <div class="row">
          +    <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  <div class="row">
          +    <p>))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))  </p>
          +    <p>File # 1-INQUIRIES –ADV Mod 4 (ONE for EACH Creditors INQUIRY) <br> Item #13 CFPB –Asc.…Mail USPS 1st Class…- Mail on DAY #18  </p>
          +    <P>{{$universal['today']}}</P>
          +    <P>{{$universal['name']}}</P>
          +    <P>{{$universal['address']}}</P><br>
          +    <p >Kent Markus, Director of Enforcement<br>Consumer Financial Protection Bureau <br> 1700 G Street, <br>NW Washington, DC 20552 <br> </p><br>
          +    <p>RE: Problem with Credit Inquiries</p> <br>
          +    <p>Mr. Markus:</p><br>
          +    <p>I have been dealing with a series of credit reporting errors for several months and have reached wits end on how to proceed. I found several credit inquiries on my credit report that I have NO knowledge of. I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and disputed the validity of these Inquiries. I ALSO contacted the creditors directly.  Several representatives informed me that the name as listed did not match my name spelling; others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry.  I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine.  I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED but, they could not help me ANY further!</p>
          +    <p>I submitted IN WRITING a Validation request under the FCRA title 611, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information for inquiries, even if it could be Identity Theft.<br>
          +
          +      I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem…can you Help?
          +      </p>
          +      <p>PLEASE!!</p><br>
          +      <p>Sincerely:</p>
          +      <p>Enclosed:<br>
          +        Copy of DL <br>
          +        Copy of SS Card <br>
          +        Copy of Original Dispute Letter
          +        </p>
          +    </div>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/29.blade.php b/resources/views/lg/pdf/29.blade.php
          new file mode 100644
          index 0000000..2d7bb0e
          --- /dev/null
          +++ b/resources/views/lg/pdf/29.blade.php
          @@ -0,0 +1,45 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit Inquiry(ies) reported require removal immediately! </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is in response to your recent claim regarding the below noted derogatoriness, which you claim currently despite to date failing to presentate any  document demonstration of the factually true correct validated aspects of claim(s) much less display any evidence ensuring claim’s reporting(s) is now and has always been in full certifiable compliance of reporting standards to include within the requisites of the mandatorily perfect and complete certified Metro 2 formatted reporting standard(s). So yet again, you have failed to submit required evidence of claim or claim’s report-ability as related to compliant mandates of reporting and therefore allegation(s) must be fully and permanently eradicated so do so now! Given that I believe you are acting in bad faith, and have not complied with the federal and state laws, I have filed a Small Claims lawsuit against you or am in the process of doing so based upon your response to this notification and demand letter for you to report ONLY FACTUALLY VALIDATED and CERTIFIED COMPLIANTLY PROCESSED CLAIM(s).  Undoubtedly you are aware that my state’s and the federal laws and standards of valid compliant factual consumer credit reporting REQUIRES any and all claims to be PHYSICALLY VERIFIED, fully true, ACCURATE, COMPLETE , of a known undoubted ownership of responsibility, CERTIFIABLY COMPLIANT in its process of reporting including but not limited to the mandatorily perfect submission of the correct complete certifiable METRO 2 FORMATTED reporting standard(s) and else wise be undeniably validated. The following item(s) are currently reported deficient of minimally requisite criterion of lawful compliant reporting of only physically verified true validated claims so MUST be immediately and permanently eradicated from reporting. I DEMAND that you here today even NOW remove from reporting this and all associated negative information so in effort to return to required lawful compliant reporting:</p>
          +
          +    @include('lg.pdf.partial.content')
          +    <p>Let it be understood , should I be forced to file civil suit for adequate resolution, that
          +I have maintained careful records of your actions, and you will no doubt be required to appear at a civil court nearest and most favorable to me, the VICTIM OF YOUR OBVIOUS WILLFUL MISREPORTING and intentional injurious claim(s) versus me in direct dereliction of your lawful duty to report compliantly and factually at all times. In such a suit know that I will at minimum be  seeking maximum allowed monetary benefits  in damages for your not proven certified compliant metro 2 formatted reporting(s) and your apparent and unproven deficient claims in direct infraction of the FCRA and or FDCPA as best applicable, if any! These infractions might include :
          +</p>
          +<p>• Violation of the Fair Debt Collection Practices Act (including but not limited to Section 807-8)<br>
          +• Violation of the Fair Credit Reporting Act (including but not limited to Section 623-a-3)<br>
          +• Violation of Mandated Perfect Complete CERTIFIED COMPLIANT REPORTING of the factual documented complete correct Metro 2 formatted data, as related to each and every aspect of claim(s) even the minimally required five-portioned personal identifiers , 436-character P6 statement and all of its sequenced fragments, the 386 pieces to confirmate a collect-able debt/claim, and so on as related to Metro 2 formatting and or any other requisite of reporting be it mentioned here or not. COMPLIANCE OF REPORTING is a MINIMAL CONDITION OF LAWFUL REPORTING of ANY CLAIM, not an optional one. As such YOU MUST REMOVE any suspect, questionable or in any way deficient claim(s).
          +</p>
          +<p>Prior to our court date should I require a filing, if you should decide to correct your records and remove the negative and false item in question, please contact me at the address noted in this notice, and I ,quite possibly, will subsequently consider withdrawing the lawsuit. Your ACTIONS and or INACTIONS will dictate my action(s). My contact information is , yet again, as follows:</p>
          +
          +  </div>
          +
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  <h4 style="font-weight:bold;">
          +    CC: Consumer Financial Protection Bureau <br>CC:Attorney General’s Office <br> CC:Better Business Bureau
          +   </h4>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/3.blade.php b/resources/views/lg/pdf/3.blade.php
          new file mode 100644
          index 0000000..c06ca1a
          --- /dev/null
          +++ b/resources/views/lg/pdf/3.blade.php
          @@ -0,0 +1,53 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +    @include('lg.pdf.partial.pinfo')
          +    <div class="row">
          +       <p>RE:  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not!  </p>
          +    </div>
          +    <div class="row">
          +      <h1 class="span-ul3">To Whom it Concerns,</h1>
          +    </div>
          +    <div class="row">
          +      <p >Per my state’s reporting laws and per applicable federal reporting laws and standards of compliant reporting, any deficiently reported claim requested checked for surety of facts shall be fully vetted through a reasonable investigation confirming the perfect reporting(s). Any allegation, true or not, which is unable or is untimely in its demonstration of being proven factually compliant and undoubtedly physically verified as being each of fully true as reported, correct as reported, complete as reported, timely in its reporting, of a known responsibility and ownership as reported, and or else wise validated exactly as reported to include its mandatory perfect and complete certifiably compliant  Metro 2 Format reporting MUST BE REMOVED FROM REPORTING IMMEDIATELY and PERMANENTLY as it is unlawful to retain any flawed or questionable accusation. Being true, I demand today, even here and now that you eradicate fully reporting of and the attempted collection of your currently questionably  claimed item(s) of injurious reporting. Failure to do so amounts to unfair illegal harassment and I will seek a monetary resolution and relief render via a court nearest me! Delete as follows:</p>
          +
          +      @include('lg/pdf/partial/negative_keys')
          +
          +      @include('lg.pdf.partial.content')
          +
          +      @include('lg/pdf/partial/negative_keys')
          +
          +    </div>
          +    <div class="row">
          +      <p>****Even BEFORE WE BEGIN,TAKE CLEAR NOTICE THAT I AM AN EDUCATED AND LEARNED STUDENT OF REPORTING STANDARDS concerning MY CONSUMER AND ALSO MY CIVIL RIGHTS,LITIGATION IS NOT MY ENEMY BUT MY ALLI .If you are confused as to the legal ramifications OF BEING DEFICIENT OF NOT ONLY COMPLIANCE BUT PROVEN COMPLIANCE AS WELL MUCH LESS TRUE,ACCURATE AND COMPLETE REPORTING, I suggest you consult immediately with your legal counsel prior to your erroneous decision to counter me minus adequate documentation of every single one even each any and or all of the aspects, notations, and fragments of allegations accused of me as you have currently reporting ILLEGALLY! . This letter is your formal notice to cease and desist all collection activities in regard to the above account. The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within 20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being at or beyond the Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. By ignoring my legal validation request your firm is in direct violation of the FDCPA. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, the must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state’s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.)</p>
          +      <p>
          +        Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE?
          +        ð  Please demonstrate adequate proof of precisely true, accurate, and applicable
          +        VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES or eradicate
          +        every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE!
          +         Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully
          +        to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumerreporting repositories.<br>
          +        If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days
          +        as demanded I will not hesitate to bring suit against your firm in this matter
          +        as in the example of Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES By the
          +        provisions of the Fair Credit Reporting Act and per the standards of reporting
          +        compliance implemented with the CRSA enacted CDIA Metro 2 COMPLIANCE
          +        regulations, I demand that these above mentioned derogatory items be
          +        investigated and permanently removed from my report. It is my understanding
          +        that you will recheck these items with the creditor who has posted them. Please
          +        remove any information that the creditor cannot verify. I understand that under
          +        15 U.S.C. Sec. 1681i(a), you must complete this reinvestigation within 30 days of receipt of this letter.
          +        I additionally REQUEST that you please send an updated copy of my credit report to the above address. According to the act, there shall be no charge for this updated report. I also request that you please send notices of corrections to anyone who received my credit report in the past six months.
          +        Thank you
          +        for your time and help in this matter.
          +      </p>
          +    </div>
          +    <div class="row">
          +      <h4 >Sincerely,</h4>
          +    </div>
          +    @include('lg.pdf.partial.bottom-info')
          +    <div class="row">
          +      <p>My NEXT letter will be a notification of my LOITS notice! So, you no need for a legal dictionary, a LOITS notice is a Letter of Intent To Suit! To be clear and frank, You BEST be PROVEN COMPLIANT to ALL requirements and standards of FCRA COMPLIANCE and also of the implemented CRSA enacted CDIA implemented Metro2 Compliance mandates as well. I will demand verification that each employee at your firm which MIGHT have seen or conducted any business on the file you allege mine has been properly trained by a certified and qualified instructor of the Metro 2 data field formatted reporting standards. I am NOT shy in detailing my DOUBTS you can withstand the requisites to survive a court hearing versus me as I leverage your DEFICIENCIES for a slew of victories being awarded a minimum of $1000PER VIOLATION PER TIME, and there certainly appears to be a bucket full. So, let’s do this! Anything OTHER than your letter describing to me that you have already begun or completed the annulment of these unproven claims versus me and have eradicated ENTIRELY any and all aspects of records of what you allege being mine (yeah!) will IMMEDIATE compel me to assume your hostile to my demands of proper reporting and I will assume that your ignorance of appropriate and adequate duties is willful and intentionally injurious. Being such, civil suits are obvious however criminal charges are not out the question, particularly if your chicanery led subterfuge brings forth or allows for damages versus me including fraud and or identity theft due to your willful enablement of it. I’m positive I could convince a court of your liabilities to me. WHAT SAY YOU?</p>
          +    </div>
          +    @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/30.blade.php b/resources/views/lg/pdf/30.blade.php
          new file mode 100644
          index 0000000..f56da20
          --- /dev/null
          +++ b/resources/views/lg/pdf/30.blade.php
          @@ -0,0 +1,53 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Upon further investigation, I have retained new copies of my credit reports, and noticed that you did not furnish the credit bureaus with the required disclosure, within the period required by law. You are required by federal law to place a “notice of dispute” on my account within 30 days of my lawfully leveraged consumer complaint. I have retained a record of your receipt and proof as well of the exact  date of receipt, as well as a time-stamped copy of my credit reports, showing that you have violated the Fair Credit Reporting Act, Section 623(a)(3) and/or the Fair Debt Collection Practices Act Section 807(8), the mandatory metro 2 formatted reporting standard(s) of compliance and others even by your deficiencies and also  by not placing the disclosure within the required 30-day period.<br>
          +Be aware that I am making a final goodwill attempt to have you clear up this matter. The listed item is undeniably not certified compliantly reported, provable as reported and or is plain and simply entirely inaccurate and incomplete and represents a very serious error in your reporting. Either way the claim is in dire disregard of my consumer rights and your required perfect provable compliant reporting(s) of only true complete correct timely verified valid claim(s) even in regard to the mandatorily perfect correct complete certifiable Metro 2 format reporting standard(s) of lawful reporting! YOU MUST ERADICATE the claim(s) of  any delinquency and or derogatoriness that is questionable such as in this exact circumstance. Delete now as follows:
          +</p>
          +
          +    @include('lg.pdf.partial.content')
          +  <p>Let it be known in clarity that at all times I am maintaining a careful record of my communications with you for the purpose of filing a complaint with the Consumer Financial Protection Bureau and the Attorney General’s office, and potentially even a civil suit should you continue in your non-compliance of federal laws under the Fair Credit Reporting Act, or any other standard of requisite reporting be it mentioned or not. I further remind you that you may be liable for your willful non-compliance, as per FCRA 623(a)(3) - Responsibilities of furnishers of information to consumer reporting agencies [15 U.S.C. 1681s-2]
          +(3) Duty to provide notice of dispute. If the completeness or accuracy of any information furnished by any person to any consumer reporting agency is disputed to such person by a consumer, the person may not furnish the information to any consumer reporting agency without notice that such information is disputed by the consumer. <br>
          +(B) Time of Notice (I) The notice required under subparagraph (A) shall be provided to the customer prior to, or no later than 30 days after, furnishing the negative information to a consumer reporting agency described in section 603(p).   <br>
          +As you have violated federal law, by not properly providing the credit bureaus with proper notice within the required timeframe, and I have evidence of such, via certified mail receipts, you must now remove the item. Any other action (or inaction) on your behalf may result in a small claims action against your company. So you are aware, I would be seeking a minimum of $1,000 in damages per violation for at least one or more of the following and other statues and or standards not necessarily mentioned to this point:
          +</p>
          +<p>• Defamation <br>
          +• Negligent Enablement of Identity Fraud <br>
          +• Violation of the Fair Debt Collection Practices Act (including but not limited to Section 807-8) <br>
          +• Violation of the Fair Credit Reporting Act (including but not limited to Section 623-b) <br>
          +
          +You will be required to appear in a court venue local to me, in order to formally defend yourself. My contact information is as follows:
          +</p>
          +
          +  </div>
          +
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  <p>P.S. Please be aware that dependent upon your response, I may be detailing any potential issues with your company via an online public press release, including documentation of any potential small claims action. I am also including a copy of my complaint to the organizations below:</p>
          +
          +  <h4 style="font-weight:bold;">
          +    CC: Consumer Financial Protection Bureau <br>CC:Attorney General’s Office <br> CC:Better Business Bureau
          +   </h4>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/31.blade.php b/resources/views/lg/pdf/31.blade.php
          new file mode 100644
          index 0000000..3083054
          --- /dev/null
          +++ b/resources/views/lg/pdf/31.blade.php
          @@ -0,0 +1,36 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I recently submitted a request for investigation of an Acct Number: {accnum1}, which you refused. I submitted enough information for you to carry out a reasonable investigation of my dispute, since you obviously did not investigate this account thoroughly enough the last time, I submitted one. If you had investigated properly, rather than use e-Oscar system, you would have known, that not only I have never been late on this account, but that I am not sure that the account is even mine - through your company claims to have "verified" this. To best resolve this matter, I demand that you become certifiably compliant in your reporting of any injurious delinquency and or derogatoriness versus me, be it true or not as no item questionable can be assumed validated and or certifiably perfect and compliant in its every reporting of its claim(s). Eradicate immediately and permanently the following misinformation as currently reporting in vile dereliction of regulations and standards of adequate compliant reporting, a minimal criterion of it even:
          +    </p>
          +
          +    @include('lg.pdf.partial.content')
          +  <p>It is at this time that I will point out that in Cushman vs TransUnion, Stevenson vs TRW (Experian), and Richardson vs Fleet, Equifax, et al, the courts ruled each and every time that the CRA couldn't merely "parrot" information from the creditors and collection agencies...that they have to conduct an independent REASONABLE investigation to ensure the validity of the debt and honestly/integrity of the creditors/CA in question. Sending out a generic form through the e-Oscar system that does not even contain my reasons for the dispute is not reasonable. If you do not initiate an investigation regarding my dispute, as is my right under the Fair Credit Reporting Act, I will have to take legal action to protect my credit rating and myself. As I'm sure you are aware, each violation of the Fair Credit Reporting Act allows damages of $1000 should this matter end up in court. I look forward to an expedient resolution of this matter, </p>
          +
          +  </div>
          +
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/32.blade.php b/resources/views/lg/pdf/32.blade.php
          new file mode 100644
          index 0000000..149a784
          --- /dev/null
          +++ b/resources/views/lg/pdf/32.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO: &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Not an entity today exists that can certifiably ignore its mandated obligations to report compliantly and to 100% truth, correctness, completeness, timeliness, and documented Irrefutable proof of ownership and responsibility of any allegations of adverse aspects to an account or of a derogatory account in and of itself. <br><br>
          +
          +According to Regulation V 1022.42: Reasonable policies and procedures concerning the accuracy and integrity of furnished information. Furnishers must have strong policies in place to have the highest possible accuracy but it has not been done in this case. <br>
          +In addition, a per the metro 2 data formatted standards of legal reporting of consumer accounts and profile history and per the Fair Credit reporting act, namely section 609 a1A, it is in CLARITY that you are MANDATED to retain COMPLIANCE at all times, particularly upon notification by an infringed consumer that you are deficient of your requisites to report adequately and a challenge (or dispute) is lodged versus any data information previously NOT proven PHYSICALLY to be affirmed valid or is UNABLE to be demonstrated as true, accurate, complete, timely, and otherwise fully compliant to laws upon a documented declaration of concern by the consumer. I demand, as is MY RIGHTS to do so and as is your REQUIREMENT to satisfy, for you to ANNUL by deletion or removal any and all allegations DEFICIENT of PHYSICAL EVIDENCE OF COMPLIANCE to reporting laws much less verified and valid. If you are unwilling or UNABLE to do so in a federally defined TIMELY manner you MUST rectify your infractions by RETURNING TO or retaining federal reporting COMPLIANCE TODAY, even RIGHT NOW, .As such, I DEMAND that you CERTIFICATE the verification and validity of the following claims or DELETE NOW, so Eradicate immediately and permanently the following misinformation as currently reporting in vile dereliction of regulations and standards of adequate compliant reporting, a minimal criterion of it even:
          +</p>
          +
          +    @include('lg.pdf.partial.content')
          +  <p>The above noted Alleged Data Provider(s), Alleged Account number(s), Alleged Adverse or Derogatory claim(s) above listed is undeniable and significant in its current and obvious deficiently reported status and undoubtedly requires eradication so again I demand that you delete now any deficient claim(s), mentioned or not!    It is in clarity that , as reported at least, that the above noted allegation(s) IS(are) DEFICIENT of CERTIFICATED PHYSICAL PROOF of be adequately and fully COMPLIANT to all mandates and laws as related to my state, the FCRA and METRO 2 data formatted reporting standards. As such the truth being , you MUST annul Today, even NOW as you are NOT authorized to retain much less report any information or aspects of adverse data that is NOT TESTIMONIAL in its 100% TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, of proven documented OWNERSHIP of mine, or of proven documented RESPONSIBILITY of mine. To legally and compliantly report, per my state and the applicable federal laws and standards of legal compliant reporting mandate that you MUST  DEMONSTRATE confirmation of all data, dates, balances, calculations, identities, audits to include the requisite 426-character P6 statements and all of its trailing segments, the minimal five portioned personal identifiers, all 386 pieces to confirmation to collect ,and every aspect of the alpha-/ numeric-/ and or alphanumeric source codes. RETURN or retain OBLIGATORY compliance with your federally defined timely deletion of any and all adverse notations that are deficient of physical evidence of proper reporting. DELETE ,immediately here and now, as it infringes on my consumer and potentially my civil rights as it potentially can lead subterfuge due to misreporting or else wise be injurious to me. <br>
          +Genuinely concerned,
          +</p>
          +
          +  </div>
          +
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/33.blade.php b/resources/views/lg/pdf/33.blade.php
          new file mode 100644
          index 0000000..8083449
          --- /dev/null
          +++ b/resources/views/lg/pdf/33.blade.php
          @@ -0,0 +1,74 @@
          +
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <h3  style="font-weight: bold;">This OFFICIALLY WRIT NOTICE OF CONSUMER COMPLAINT is my lawful consumer Request for you to CHECK OF COMPLIANCE OF REPORTING (particularly to ensure certified Metro 2 Format perfection and completion) , documented VALIDATION of claims, and NOT simply Verification of your electronic records! </h3>
          +</div>
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>*I do NOT authorize you NOR ANY ENTITY the right to retain nor report ANY other personal identifier information that is one or more of being not requisite reported by state and federal reporting laws, not current and or timely, not true, not correctly reported, not physically verifiable as reported, not indisputably documented as factually validated and certified as compliantly reporting, particularly  in full accordance of the FCRA and FDCPA laws, as applicable, and or the mandatory standards of the perfect and complete Metro 2 Format Reporting Compliance! Any deficiency is unlawful and here now contested and demanded removed from reporting!  </p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of this consumer complaint is: &nbsp;&nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>RE:  This is my notice that currently deficiently or not factually complaint in its reporting is at least one items of misinformation that require immediate removal from reporting at least until you have followed up with the adequate investigation and results in CHECKING FOR TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, VERIFIABILITY, VALIDITY ELSE WISE and CERTIFIABLE COMPLIANCE OF REPORTING , particular as related to the Mandatory perfect and complete Metro 2 format reporting. You MUST ERADICATE any and all deficient claims, contested or not! </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is being sent to you in response to notices sent to me from your company and more importantly, due to your erroneous reporting to the Credit Bureau{s}, the highly negative impact on my personal credit report. Please be advised that this is not a refusal to pay, but a notice sent pursuant to the Fair Debt Collection Practices Act, 15 USC 1692g Sec. 809 {b} that your claim is challenged, and proof of physically verified document truth, accuracy, completeness, timeliness and validation otherwise is requested, and additionally I demand clarification of the certified compliant metro 2 format reporting and all aspects of requisite reporting laws and applicable standards of, known or not, mentioned or not. Ignorance is not lawful excuse for dereliction of reporting responsibilities nor an adequate argument to escape liabilities for injuries resultant of misreporting(s). Might again I make reminder that this is NOT a request for “verification” or proof of my mailing address, but a request for VALIDATION made pursuant to the above named Title and Section and the assumption would be that if not compliant in its reporting processing and or verification and or transferring and or else wise mishandled the claim is lawfully delinquent of minimal criterion of regulatory standards of law.  I respectfully request that your offices provide me with competent evidence that I have any legal obligation to pay you.
          +In order to establish the physically verifiable truth and validity of claim, as well as the undoubted certified Metro 2 format complaint status of claim as mandatory, I demand that you please provide me with the at least following:<br>
          +
          +• What the money you say I owe is for:<br>
          +• The Creditor Classification Code (CCC)<br>
          +• The full 426-charactered P-6 statement and all of its trailing fragments<br>
          +• The minimal 386-pieces o confirmation of a collection<br>
          +• The minimal five portioned Personal Identifiers documented as related to this alleged debt<br>
          +• Explain and show me how you calculated what you say I owe:<br>
          +• Provide me with copies of any papers that show I agreed to pay what you say I owe:<br>
          +• Provide a verification or copy of any judgment if applicable:<br>
          +• Identify the original creditor:<br>
          +• Prove the Statute of Limitations has not expired on this account:<br>
          +• Show me the you are licensed to collect in my state:<br>
          +• Provide me with your license numbers and Registered Agent or Agent of Service:<br>
          +
          +At this time, I will also inform you that if your offices have reported invalidated information to any of the 3 major Credit Bureau’s {Experian, Equifax or TransUnion} this action might constitute fraud under both Federal and State Laws. Due to this fact, if any negative mark is found on any of my credit reports by your company or the company that you represent, I will not hesitate to bring legal action against you for the following:<br>
          +
          +• Violation of the Fair Credit Reporting Act<br>
          +• Violation of the Fair Debt Collection Practices Act<br>
          +• Defamation of Character<br>
          +It is in clarity that you are of requirement to here today, even right now, REMOVE PERMANENTLY FROM REPORTING any and all noted contested claim as indicated by me, including my demand that you eradicate the following unjustly and questionably reported allegations:
          +
          +</p>
          +
          +    @include('lg.pdf.partial.content')
          +  <p>If your offices are able to provide proper documentation as requested in the following Declaration, I will require at least 30 days to investigate this information and during such time all collection activity must cease and desist.<br>
          +
          +Also, during this validation period, if any action is taken which could be considered detrimental to any of my credit reports, I will consult with my legal counsel for suit.  This includes listing any information with a credit reporting repository that could be inaccurate or invalidated or verifying an account as accurate, when in fact there is no provided proof that it is accurate.<br>
          +
          +If your company fails to respond to this validation request within 30 days from the date of your receipt, all references to this account must be deleted and completely removed from my credit report and a copy of such deletion {to any/all of the 3 major credit reporting bureaus: Equifax, Experian and TransUnion} request shall be sent to me immediately.<br>
          +
          +I would also like to request, in writing, that no telephone contact be made by your company to my home or my place of employment.  If your offices attempt telephone communication with me, including but not limited to computer generated calls and calls or correspondence sent to or with any third parties, it will be considered harassment and I will have no choice but to file suit.  All future communications with me MUST be done in writing and sent to the address noted in this letter by USPS.<br>
          +
          +It would be advisable that you assure your records are in order before I am forced to take legal action against your company and your client.  This is an attempt to correct your records, any information obtained shall be used for that purpose.
          +</p>
          +<br>
          +<p>Best Regards,</p>
          +
          +  </div>
          +
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/34.blade.php b/resources/views/lg/pdf/34.blade.php
          new file mode 100644
          index 0000000..b128d36
          --- /dev/null
          +++ b/resources/views/lg/pdf/34.blade.php
          @@ -0,0 +1,71 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others that might be reported now or else wise I DEMAND, as is my lawful RIGHT(s) to do so, that you annul permanently and immediately any and all deficient of these afore-noted conditions, mentioned or not, especially if related directly or indirectly to any potentially injurious information be it true or unknown! Again, I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +</div>
          +
          + @include('lg/pdf/partial/asdfgh-w2')
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination  of my Consumer Complaint is : &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="span-red">AND </p>
          +  <p style="font-weight:bold;">Experian North America<br>   Vice President and Assistant General Counsel<br>  Office of the Corporate Counsel,    <br> Ann Sterling <br>475 Anton Blvd. ,Costa Mesa, CA 92626</p>
          +
          +</div>
          +<div class="row">
          +  <p>RE: <span style="text-decoration: underline;">PROBLEMATIC PERSONAL IDENTIFIER MISINFORMATION DEFICIENT OF mandatory COMPLIANT REPORTING! </span><br>ATTENTIVELY REVIEW my formal writ composed DECLARATION of Not Proven Compliant Misinformation that is all or in part: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! To be clear, you are mandated by laws to eliminate every notation and or aspect of any and all derogatory and adversary items from any and all alleged claims still yet unproven to be true, correct, complete, timely, documented as being mine, testimonial to be of my responsibility, with FCRA compliance, and/or CRSA CDIA Metro 2 COMPLIANT reporting. FEDERAL laws dictate that any and all derogatory or potentially injurious reporting MUST be all of the aforementioned and can NOT BE ASSUMED without undoubted CERTIFIABLE testimonial of FACTs ensuring the physically verifiability of the CONFIRMED manual validation of any item upon a consumer complaint, such as is this notice here and now. Please RETURN to or retain federally lawful reporting with your unwavering and unconditional annulment of every single one even each any and or all of the allegations accused of me deficient of physical evidence to every and all aspects of said claims, be them true or not. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is a formal notice to Cease and Desist all reporting activities in regards to the here included and  noted  consumer challenged  personal identifier information.  As your repository  is well aware I have a right to and I am enacting that consumer right here and now and as I  LEGALLY exercise my rights by charging against you for lawful documented and irrefutable certificate in testimonial  PROOF to the full facts of truth, accuracy, completeness, timeliness, and compliance much less the actual validity of this information alleged yet still unproven not to be random chicanery laden subterfuge .  I have in writing and by phone attempted to confirm the accuracy of the information reported to your firm; and during this process it has become apparent that your firm is in violation of the <span style="font-weight: bold">FACT Act Title 1 sec.</span>  151 in its omission of the documentation procedure for victims of identity theft attempting to collect data on suspect personal information. Although I do not claim to be a victim of fraud or identity theft I am fully aware of the risks involved with the unlawful retaining of invalid or outdated information. I am certain you are aware as well of the monetary liabilities should your enablement of misinformation lead to either or both, fraud and or identity theft injuring me and or a creditor, be it mine or not.   Since your bureau agency as well as  seemingly the misinforming alleged data  furnisher has knowingly profligately infringed  both federal and state law and I since I am certainly with concrete capacity to document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting these items in question and delete them from my credit report at once. To wit, I have identified likely  mendacious and certainly  unproven compliant reported  personal identifier information on my  credit  file.  I  am within my federal and state consumer and or civil rights to demand and or  compel  you   to  have them removed as soon  as  possible.  I  am  filing  this  consumer  complaint  and  consumer  check  for compliance  of these particular  items  that  you  are  reporting  under  <span style="font-weight: bold">FACT Act Title 1 sec.</span>   151  that unambiguously obliges  a  recountal  of  the  modus  operandi  used  by  your  agency  in  the procurement  this(these) alleged yet unproven  true,  correct,  complete,  much  less  compliant items of  personal identifier information that I believe is possibly incorrect , including if this was obtained  by  a  third  party  Information  trafficker  and  sold  to  your  firm.  I  have  enclosed copies of my  state  issued  identification  and  Social  Security  card  to  validate  my  identity.   I  believe  that  this false  and  or  misleading   information  that you  are reporting is likely  directly  resulting  in  or  will  in future result in  incorrect account mergers onto my credit file and  that this  is  injurious to  my credit report health and credit score wealth. <span style="font-weight: bold;">The FOLLOWING reporting derogatory allegations of information are either UNTRUE, INCORRECT, INCOMPLETE, UNTIMELY, NOT MINE, NOT MY RESPONSIBILITY, or otherwise NOT PROVEN COMPLIANT to regulatory federal reporting laws and or standards and MUST be eradicated immediately, do so TODAY, even right NOW! The obvious infractions are as follows:</span> Please  delete  this  erroneous  information  immediately!
          +      </p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>             THE ABOVE LISTED REPORTED PERSONAL INFORMATION IS CURRENTLY REPORTING DEFICIENT OF FEDERAL AND STATE REQUISITE REPORTING COMPLIANCES TO INCLUDE METRO 2 DATA FIELD   FORMATTED REGULATORY REPORTING STANDARDS OF EXACTNESS AND OR UNDENIABLE AND IRREFUTABLE UNDOUBTED PROOF IN REGARDS TO A DOCUMENTED TESTIMONIAL CERTIFICATE OF FACTS AS TO THE CURRENT STATUS, TRUTH, CORRECTNESS, COMPLETENESS,TIMELINESS,OWNERSHIPS, RESPONSIBILITIES, FCRA COMPLIANCE, AND OR  METRO 2 COMPLIANT  REPORTING. NO ENTITY RETAINS ANY RIGHTS TO ERADICATE ITS LIABILITIES FOR INFRINGEMENT OF CONSUMER    AND OR CIVIL RIGHTS WITH INJURIOUS,UNETHICAL,UNTRUE,INCORRECT,  INCOMPLETE,UNTIMELY,OR ELSE WISE UNPROVEN TO BE ENTIRELY COMPLIANT REPORTING  TO EVERY ASPECT OF MANDATED LAWS ,REGULATIONS, PRECEDENCE, AND OR STANDARDS OF ACCEPTABLE REPORTING PRACTICES. PLEASE ANNUL BY FULL AND PERMANENT DELETION OF ANY AND ALL ASPECTS OF THE NOTED UNLAWFULLY AND NOT PROVEN COMPLIANT ALLEGATIONS that currently reported, as well as any NOT EXACTLY as I have displayed as being uncontested as factually my FIRST and LAST NAME, address STREET NUMBER and STREET NAME, ADDRESS CITY AND STATE, DATE OF BIRTH, and SOCIAL SECURITY LAST FOUR! <span class="clr-red">Please Provide Physical Proof of COMPLIANCE and Verification. If not physically irrefutable you are not authorized to retain or report this allegation so annul in brief today even right now or certificate that your testimony proves compliance and accuracy of every and one even each any and all OF THE data aspects. Subterfuge is not lawful, I demand that you return to or retain compliance as mandated and do so without injury AND or prejudices towards me now or thereafter. </span>                                                                                                                                      Might it be known that THIS LETTER of consumer check and challenge for lawful reporting compliance is my officially composed writ formal complaint that you are reporting one or more of the following, ILLEGALLY mind you: <br>
          +i)Your reporting is unproven to be TRUE, so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.<br>
          +ii)Your reporting is unproven to be Correct (and regulations are CLEAR on accuracy being undoubted and irrefutable),so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. <br>
          +iii)Your reporting is unproven to be COMPLETE (and regulations are CLEAR on mandates to be fully COMPLETE in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. <br>
          +iv)Your reporting is unproven to be TIMELY (and regulations are CLEAR on mandates to be fully CURRENT and TIMELY in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. <br>
          +v)Your reporting is unproven to be of MY OWNERSHIP(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.<br>
          +vi)Your reporting is unproven to be of MY RESPONSIBILITY(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. <br>
          +vii)Your reporting is unproven to be of FCRA COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. <br>
          +vi)Your reporting is unproven to be of CRSA enacted CDIA METRO 2 DATA FIELD FORMATTED
          +REGULATORY REPORTING COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, there must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state’s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.) Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE? Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE! Injury causing subterfuge is unlawful to retain. You are not Authorized to report or even once alleged adverse remark unproven upon a requested compliance check. You must Annul in brief, even right now and right here, by complete and permanent deletion any or even one not irrefutable allegation(s) deficient of physical composed writ certificate(s) in testimony of the exact and full truth, correctness, timeliness, completeness, ownership, responsibility, and or documented evidence of precise and willfulness to comply with every single one even any and or all of the requisite mandates/statutes/acts/obligations/and or laws related and pertinent to legal reporting of any information, known or not. Attest now to the metro-2 required truth, accuracy, fullness, timeliness, ownership, responsibility and or compliance(s) otherwise, whether mentioned or not. Ignorance of obligations to compliant reporting is NOT lawful exoneration of your responsibility to 100% accurate, true, and metro-2 compliant data formatted reporting regulations of which you are obligated. Federal laws allow me to compel you to retain and or return adequate accountability. Failure or unwillingness to do so might be remedied and rectified in my favor per monetary compensation for your infringements of my civil and or consumer rights and violations of the laws required of you. Right now demonstrate to me any and all applicable metro-2 reporting mandates including but not limited to every date and balance, each calculation and audit, the invoices and documented current identities, every notation not to forget the five (5) portioned personal identifiers, 426 character P-6 statements, alpha/numeric/ and or alphanumeric source codes, every applicable creditor classification code(s), the 3 applicable and precise sequenced 386 pieces of confirmation to collect(-ions) or any obligation else-wise. Return or Retain federally required compliance with your immediate and dull eradication of any and one of the adverse and or derogatory claims or any aspects of. Prove compliance or delete ASAP!!! Let this notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! Please provide me with all of the information you used for your investigation, as required by FCRA 611 (a) (7).Please reply within 10 days or delete the negative items, as originally requested. If you FAIL to respond to this demand and tort notification, your firm will be added to the pending action as complicit in this data breach of my personal information. <br>
          +1. Tell me in writing what information you refuse to remove and why. <br>
          +2. Tell me in writing what you did to determine that the information was accurate.  <br>
          +3. Note the information as disputed BY the CONSUMER on my credit report. <br>
          +According to the Fair Credit Reporting Act, Section 609 (a)(1)(A), you are required by federal law to verify - through the physical verification of the original signed consumer contract - any and all accounts you post on a credit report. Otherwise, anyone paying for your reporting services could fax, mail or email in even a potentially fraudulent account. <br>
          +According to the provisions of the Fair Credit Reporting Act § 611(a) [15 USC 1681i(a)], these disputed items must be reinvestigated or deleted from my credit record within 30 days. During the investigation period, these items must be removed from my credit report as the mere reporting of items prior to debt validation constitutes collection activity. I am also requesting the names, addresses and telephone numbers of individuals you contacted during your investigation.
          +Please notify me that the above items have been deleted pursuant to § 611 (a)(6) [15 USC § 1681j (a) (6)]. I am also requesting an updated copy of my credit report, which should be sent to the address listed below. According to the provisions of § 612 [15 USC § 1681j], there should be no charge for this report. If you have any questions or need additional information, please contact me at address noted below. I think 15-20 Days should be ample enough time to get this completed since this is my NOT my first time contacting your organization. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such,the must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state’s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.) <br>
          +Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE?
          +Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE! <br>
          +Please verify and validate physically each and every claim of this alleged yet unproven to be my responsibility or fault. Please demonstrate readily and timely the precise confirming facts of the alleged account including every single one even each any and or all of its article aspects by federal laws. You must willfully and promptly DELETE TODAY even right now the deficient reporting or else present to me true documented certificated proof of all data, every notation, date, balance, calculation, audit, personal identifiers, each of the requisite 426-characters of the exact and fully compliant P6 statement, any alpha/numeric and or alphanumeric source4 code deciding the leftness or rightness states, and even every aspect of the mandated 386 pieces of confirmation to collection. <br>
          +This series of misreporting seems to me clearly involves a universal and complete failure by your firm to obtain, retain, maintain, and utilize adequate and lawful regulatory compliant and reasonable procedures to assure maximum possible accuracy of consumer credit information as described in at least 15 U.S.C. § 1681. There is little doubt that you have no evidence that this clearly does belong to me, is exactly true, fully complete, within timely definition per federal standards and has been erroneously placed onto my credit report. The items of problematic accusations that I believe to be incorrect to its proper reporting and allowance of reporting per my state and federal laws are detailed IN CLARITY  above. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. By the provisions of the Fair Credit Reporting Act and per the standards of reporting compliance implemented with the CRSA enacted CDIA Metro 2 COMPLIANCE regulations, I demand that these above mentioned derogatory items be investigated and permanently removed from my report. It is my understanding that you will recheck these items with the creditor who has posted them. Please remove any information that the creditor cannot verify. I understand that under 15 U.S.C. Sec. 1681i(a), you must complete this reinvestigation within 30 days of receipt of this letter.<br>
          +Please send an updated copy of my credit report to the above address. According to the act, there shall be no charge for this updated report. I also request that you please send notices of corrections to anyone who received my credit report in the past six months.
          +</p>
          +
          +  </div>
          +  <div class="row">
          +    <p style="font-weight: bold;">Thank you for your time and help in this matter. <br>
          +Sincerely,
          +</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +    <div class="row">
          +      <p style="font-weight: bold;">Please see enclosed document evidence of my Proof of identification, Proof of residence or mailing address, and Proof of social security number.  <br></p>
          +    </div>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/35.blade.php b/resources/views/lg/pdf/35.blade.php
          new file mode 100644
          index 0000000..77b0e6a
          --- /dev/null
          +++ b/resources/views/lg/pdf/35.blade.php
          @@ -0,0 +1,49 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others that might be reported now or else wise I DEMAND, as is my lawful RIGHT(s) to do so, that you annul permanently and immediately any and all deficient of these afore-noted conditions, mentioned or not, especially if related directly or indirectly to any potentially injurious information be it true or unknown! Again, I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +</div>
          +
          + @include('lg/pdf/partial/asdfgh-w2')
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination  of my Consumer Complaint is : &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p>Re:Demand to remove Inaccurate Credit Information. This  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter legally serves as OFFICIAL Notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction- ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting!I have become aware of some mystifying still unknown credit inquiries on my credit report. I here now compel you to eliminate the(se) unlawful unproven claims versus me. </p>
          +    <p><h1 style="text-decoration: underline;">Sirs</h1></p>
          +    <p>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),
          +         NOTICE OF (PENDING/ IMMINENT/ IMPENDING/ FORTHCOMING/ PENSILE/ APPROACHING/ EXPECTED) LITIGATION SEEKING RELIEF AND MONETARY (DAMAGES/ COMPENSATION/ REPARATION/ REIMBURSEMENT/ RECOMPENSE) UNDER Fair Credit Reporting Act (FCRA), 15 U.S.C. § 1681, sections §616 (Civil liability for willful noncompliance) and equally §617( Civil liability for negligent noncompliance) and Truth in Lending Act of 1968 (TILA) and Metro 2 compliance to (i) Requirements definitions, (ii) file transfers and analysis, and  (iii)transitional period codes since per federal laws, every single and one even each any and or all of the data and its integrity is ultimately crucial to adequately and lawfully, as requisitioned, to upholding at least the minimal standards of the Metro 2 guidelines and data reporting legislation. It is fact that the FCRA dictates that data furnishers, and that credit reporting agencies or any recipient entity, are prohibited from supplying  or accepting any information or even aspect of such that is known or should be known or of which there exists any sort of reasonable cause to believe it is not 100% true, 100% accuracy, 100% complete, 100% timely , 100% assigned to properly identified ownership of responsibility, and or 100% compliant to every single one even each any and or all of the mandates, regulations, dictates, obligations, regulations, and laws or any article of such, whether mentioned or not, regardless if any entity is willfully deficient of knowledge of or is ignorant of it. Per the CRSA enacted Metro 2 compliance regulations, enforcement must be undertaken to clean up every single one even each any and or all challenged individual accounts and or allegations or such, particularly of a derogatory and adverse nature with  errors, identified or not.   Lawfully reported allegations of inquiry are not only factually true , factually verifiable, factually validated, but as well must be certifiably compliant as related to the requisites of properly reporting claim(s) of inquiry(ies), true or not! Compliantly reported inquiries are mandatorily with undoubted documented and physically verified proof of adequately achieved lawful PERMISSIBLE PURPOSE for review of credit profile of the one and exactly identified consumer accused with same consumer’s acknowledgement and allowance and or per rights of permissible purpose from any other identified entity of authority above and beyond a consumer’s objection and or knowledge. Deficient proof equates to deficient reporting and deficient reporting that is injurious is unlawful so delete here and now claim(s) as noted below:
          +</p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>   Additionally , eradicate any delinquency claim or derogatory claim elsewise associated with any unproven or else wise not certifiably compliant reporting alleged inquiry, be it true or not. COMPLIANCE OF REPORTING is a MANDATORY MINIMAL CONDITION to lawful reporting, NOT an optional one! <br>
          +***Please provide a copy of my corrected and updated report once you have complied with the law.
          +</p>
          +  </div>
          +  <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/36.blade.php b/resources/views/lg/pdf/36.blade.php
          new file mode 100644
          index 0000000..0a42927
          --- /dev/null
          +++ b/resources/views/lg/pdf/36.blade.php
          @@ -0,0 +1,42 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others that might be reported now or else wise I DEMAND, as is my lawful RIGHT(s) to do so, that you annul permanently and immediately any and all deficient of these afore-noted conditions, mentioned or not, especially if related directly or indirectly to any potentially injurious information be it true or unknown! Again, I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination  of my Consumer Complaint is : &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p>Re:  Demand to remove Inaccurate Credit Information. This  Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT, COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction. My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a consideration of the claim(s) reality of collect-ability or not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I recently received a copy of my credit report. The credit report showed a credit inquiry by your company that I do not recall authorizing. I understand that you shouldn’t be allowed to put an inquiry on my credit file unless I have authorized it. Please any and all claim(s) of inquiry removed from my credit file immediately because unproven and or not certifiably compliant reported inquiry(ies) absolutely makes it very difficult for me to acquire credit and or credit at the beneficial levels I am otherwise qualified. Delete here and now all the below listed not factually compliantly reported data or else demonstrate factual and physically verifiable document proof of any and all claim(s) .</p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>I may have sent this letter certified mail because I need your prompt response to this issue. Please be so kind as to forward me documentation that you’ve had the unproven compliant and or else wise potentially unauthorized inquiry(ies) removed. If you find that I am remiss, and you do have my authorization(s) to inquire into my credit report, then please send me proof of this. Otherwise, please note that I am reserving the right to take civil action if necessary.<br>
          +In advanced I thank you for your willing action to return to total compliance of reporting,
          +</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/37.blade.php b/resources/views/lg/pdf/37.blade.php
          new file mode 100644
          index 0000000..71b5bb9
          --- /dev/null
          +++ b/resources/views/lg/pdf/37.blade.php
          @@ -0,0 +1,53 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! </p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">To : &nbsp; <span class="span-ul">US Department of Education<br>Office of Inspector General <br>Attention: Aaron R. Jordan or current IG for investigations <br>400 Maryland Avenue,  <br>Washington, DC 20202-1500</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p>RE: Consumer NOTIFICATION of unproven and or Faulty Transfer and Payment Record Information, untrue information, incorrect information, incomplete information, not certified compliantly reported information or information else wise deficient of mandated validity and of applicable and mandatory reporting standards, to include but not limited to those requisites by the FCBA, FCRA, FDCPA, FACTA, HIPAA PR, TILA, and or M2C (Metro 2 Compliance format) reporting regulations).  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>Recently for an unexpected extended timeframe I have had to attempt on MULTIPLE OCCASIONS and in multiple forms of communication(s) to correspond with the claimer of the noted unjustly questionably reported claim AS REPORTED. My GOAL was to sort out the physically verifiable documented facts of truth, correctness, completeness, validation , certified compliance of reporting and or adequacy of allegation of derogatory  elsewise, as is my CONSUMER and CIVIL rights to do in circumstances of an injurious claim of debt still yet unproven to date. Assuming validity was certain and complaint reporting of claim was factual and documented , I was hopeful my attempted communication and correspondences else wise would aid in sorting out a subsidized loan transfer and any and all reporting issue(s) that might exist and or come forth thereafter between one or more of you,(the USDOE aka United States Department of Education), my college’s financial aid office and also myself. It should be noteworthy that I am sincerely concerned and confused and significantly perplexed in regard to the status of this loan and have communicated ad nauseam with both the CFA (College’s Financial Aid department) and the appointed or acting USDOE SERVICER and as well the USDOE Consumer Service representatives. In said correspondences, I have come to learn that the status of the noted alleged loan in question WILL NOT CHANGE because of some unexplained and odd REGULATORY LAPSE by either the Loan Servicer or the USDOE itself, regardless of which the FACT IS fault is NOT MINE and derogatory reporting of claimed student loan, legitimate and valid or not, is UNLAWFULLY INJURIOUS and an vile infraction of reporting regulations. Now, since the loan obligation is unproven to have been registered or appropriately so DURING my EXIT interview processing by my college’s financial aid department, I believe that by OMISSION that the ECASLA (aka Ensuring Continued Access to Student Loans Act) was in fact VIOLATED. This is because I was NOT given properly an adequate and applicable repayment option plan nor any deferment options, EACH a REQUISITE submission and further a RIGHT of mine to deny claimed debt derogatoriness as a result! It is in clarity unproven if or not I was led to BELIEVE by the USDOE SERVICE PROVIDER or a person qualified otherwise that I had in fact erred in my own handling of the process(es) in one form or another, incidentally or elsewise! Without documented physically verifiable validated facts to contrary, I am compelled and within my consumer rights to believe and assume that this necessary component of my student loan obligation was in fact NOT RENDERED TO ME, thereby INVALIDATING it, true or not. <br>
          +No doubt the process(es) offered by the USDOE service provider was significantly DEFICIENT of REQUISITES and is as a result also HIGHLY SUSPECT in the cause of this. Might your office investigate and inform me in writing as to what has transpired because all I get is a “run around” from all of the various organizations of which Ive communicated with. If the supposed student loan was indeed placed into deferment no doubt about it this derogatory matter unfairly charged versus me injuriously is severely impacting my personal credit and personal financial circumstances much less stressing me unendingly. This would constitute illegal harassment of which I may be of capacity to seek monetary resolution in a civil complaint filed versus you and others at fault, of unproven or not valid claims, of not certified compliantly reported claim(s), or else wise inappropriately charged versus me! ?
          +</p>
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          + <div class="row">
          +      <p style="font-weight: bold;"> CC:  CFPB, EA    Attention: Nate Viebrock or current/acting Enforcement Attorney <br>
          +Consumer Financial Protection Bureau <br>
          +1700 G Street NW <br>
          +Washington, DC 20552 </p>
          +    </div>
          +    <div class="row">
          +      <p>PS: included attached are my documents of personal identifiers, refer to them as necessary! </p>
          +    </div>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/38.blade.php b/resources/views/lg/pdf/38.blade.php
          new file mode 100644
          index 0000000..778c29a
          --- /dev/null
          +++ b/resources/views/lg/pdf/38.blade.php
          @@ -0,0 +1,68 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other <p>&nbsp;****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +  <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">Destination  of my Consumer Complaint is : &nbsp;<span class="span-ul">{{$destination}}</span></p>
          +  <p><span style="font-style: italic;text-decoration: underline; font-weight: bold;">Attention: Consumer Compliance Supervisor </span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p>RE:  NOTICE of ISSUES with my credit report and REQUEST to CHECK for VALIDITY of claims and CERTIFIED COMPLIANCE of reporting, particularly as to the mandatory Metro2 format reporting. Additionally, this is my notice of DISPUTE versus any injurious errors and also my lawful CHALLENGE contesting any and all missing and or deficiencies of the requisite compliant reporting, mentioned or not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter serves you as my official consumer COMPLAINT and notice of your current injurious and unlawful reporting of information that is either or all of being UNTRUE, INACCURATE, INCOMPLETE,UNVERIFIABLE, INVALID, NOT COMPLIANT to perfect and full Metro 2 format reporting, and or NOT CERTIFIED as one or more as is MANDATORY for lawful reporting of ANY claim of derogatory and or delinquency versus any consumer, TRUE OR NOT! You have listed a derogatory and or delinquent student loan on my credit file as noted below, I here now rightfully request and DEMAND that you IMMEIATELY and PERMANENTLY remove and block this misinformation in full accordance of regulatory laws and standards of reporting practices, to include but NOT limited to the adequate aspects of the FCRA, FDCPA, and mandatorily perfect complete correct Metro 2 format reporting compliance.  This letter serves as my request that you CHECK for absolute and undoubted VALIDITY of claim(s), physically verifiable and CERTIFIED metro 2 COMPLIANT reporting of the validated claim(s), and to accept my DISPUTE of any UNTRUTHS,INACCURACIES, and or INCOMPLETENESSES of physically verifiable validity as well as to accept my CHALLENGE against any claim that is suspect in its factually complete perfect Metro 2 compliant reporting. Any missing and or deficient aspects of validity and or compliance OR any UNTIMELINESS of its demonstration is rightful grounds for me to DEMAND and COMPEL you to BE FULLY COMPLIANT in your reporting or else accept that I will seek suitable resolution and monetary relief in a civil court nearest and most favorable for me.  Per FCRA 611 (a) (7) you are specifically REQUIRED to present document description of the precise and adequate procedure(s) utilized by your agency in providing and obtaining this particular derogatory and or delinquently reported student loan including if it was obtained by a Third-Party originator and or HOW WAS IT HANDLED and or TRANSFERRED to and or BY your firm. <span style="font-weight: bold;text-decoration: underline;">Here below is the erroneous student loan record(s) you are misreporting, ILLEGALLY: </span></p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>Please delete this misleading injurious derogatorily reported information and supply a corrected updated credit profile to all creditor reporting  agencies. I understand that I am exercising my right(s) under the terms of the Fair Credit Reporting Act (FCRA) 15 U.S.C. 1681 and I absolutely demand and EXPECT that your firm will not hesitate to respectfully abide and adhere to requisites to ensure protection of my legal rights as a consumer, requested by me or not! If ,HOWEVER, you elect to continue your current unfair unproven and not compliant reporting practices, I am within my rights to DEMAND that you DO and PROVE you have done each of the following:<br>
          +1)  Tell me in WRITING what information you REFUSE to remove and or modify as I have requested and WHY EXACTLY!    <br>
          +2)  Tell me IN WRITING , what EXACTLY you factually and can testimonial  state and certify did to determine that the information was in fact TRUE, CORRECT, COMPLETE, VALID , and otherwise CERTIFIABLY COMPLIANT in its reporting, even to the mandatory perfect and complete Metro 2 format reporting standards much less any and all applicable regulatory requirements of the FCRA and or FDCPA or otherwise mandatory, mentioned here or not!  <br>
          +3)  Note the information as Disputed/Challenged on my consumer credit report profile in the federally defined timely manner AND insert the relevant statement of my consumer complaint(s) as above noted into my current consumer credit report profile .<br>
          +    *I appreciate your TIME and best attention/efforts to this serious matter!
          +</p>
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          + <div class="row">
          +      <p style="font-weight: bold;"> CC:  CFPB, EA    Attention: Nate Viebrock or current/acting Enforcement Attorney <br>
          +Consumer Financial Protection Bureau <br>
          +1700 G Street NW <br>
          +Washington, DC 20552 </p>
          +    </div>
          +    <div class="row">
          +      <p>PS: included attached are my documents of personal identifiers, refer to them as necessary! </p>
          +    </div>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/39.blade.php b/resources/views/lg/pdf/39.blade.php
          new file mode 100644
          index 0000000..b81a84e
          --- /dev/null
          +++ b/resources/views/lg/pdf/39.blade.php
          @@ -0,0 +1,65 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +  <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">Destination of my Consumer Complaint is : &nbsp;  <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p> RE: Consumer DEMAND to have NO DEROGATORY INFORMATION reporting UNLESS it is, as REQUIRED by LAWS, PROVEN fully TRUE, CORRECT, COMPLETE and CERTIFIED COMPLIANT in reporting of that derogatory and or any aspect of it. I DEMAND IMMEDIATE deletion of any NOT TESTIMONIALLY physically VERIFIED and CERTIFIED as such. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not! Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported! AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.  Surely you realize that it is ILLEGAL to retain or report misleading or unproven information, especially considering a composed consumer complaint notifying you of said issues so please DELETE the following illegally reported allegation here and now because in FACT the below mentioned allegations suggestions of any delinquent and or derogatory-conditioned item(s) of allegation fail to meet even MINIMUM requisites of adequate reporting so delete now! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOTATION: Do not confuse my credit file with people of similar name, address or SSN. Verify all identifying information. ALL claims, true or not, must be proven to be currently and fully TRUE, CORRECT, COMPLETE, TIMELY, of my OWNERSHIP, of my RESPONSIBILITY, and or compliant to all applicable reporting laws and requisite standards, which is currently the FCBA, FCRA, FDCPA, METRO 2 COMPLIANCE STANDARDS and others. &nbsp;Per laws and requisite reporting standards, you or any entity are in infringement of my rights.&nbsp; Should you continue to retain and/or report any chicanery based subterfuge even upon my declaration of a composed consumer complaint, therefore, eradicate immediately and in entirety any and all allegations which are not demonstrated in clarity to be true, correct, complete, timely, mine, my responsibility, or else wise fully compliant.&nbsp;</p>
          +    <p>**Please in addition eradicate any, if it even exists, claims of inquiry(s) associated with the above indicated illegally reported derogatory information. Per CDIA definition of YOUR electronic verification process, E-OSCAR, "eOscar is a web based, METRO 2 COMPLIANT, automated system..." and I do and will CONTINUE to expect you to be able to PROVE just THAT in the LEAST.</p>
          +    <p>&nbsp;</p>
          +    <p>As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted misinformation as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions. <br /> Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action <strong><u>named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES. </u></strong></p>
          +    <p>Inconsistencies of reporting lends to potentially questionable reporting which fails to adequately meet the requisites of lawful factual reporting per federal regulations of reporting. Due in part to the obvious multiple inconsistencies of reporting and the fact that the current reporting has not yet been demonstrated to possess the mandatory physically verified document proof of full truth of claim, accuracy of claim, completeness of claim, or validity of claim else wise much less any demonstration of the mandatory certified compliance of reporting such as the required perfect and complete correct certification of the adequate Metro 2 formatted reporting standards nor adequate evidence that every aspects of regulatory reporting FCRA AND OR FDCPA laws applicable are factual and undoubtedly as reporting currently, I call to question this reporting as reported. Given fact that COMPLIANCE OF REPORTING LAWS AND STANDARDS IS A MINIMAL CRITERION OF REPORTING, NOT AN OPTIONAL ONE I HERE NOW DECLARE MY CHALLENGE CONTESTING THE LEGALITY OF CURRENT DEROGATORINESS AND OR DELINQUENCINESSES AS ACCUSED DEFICIENT OF PROOF, BE IT TRUE OR BE IT NOT. IT IS NOT RESPONSIBILITY OF INJURED CONSUMER TO PRESENT PROOF VALIDATING CLAIMS NOR CERTIFYING COMPLIANCE OF REPORTING CLAIMS, AS THAT RESPONSIBILITY AND BURDEN RESTS SOLELY WITH THE REPORTING DATA FURNISHER AND THE ACCEPTING REPOSITORIES OF THE CLAIMS.</p>
          +    <p>DELETE NOW IN FULL THIS UNPROVEN AND OBVIOUSLY NOT CURRENTLY COMPLIANT REPORTING,SO TO RETURN TO MANDATORY CIRCUMSTANCE OF ADEQUATE COMPLIANT REPORTING OF ONLY FULLY VETTED TRUE CORRECT COMPLETE VALID CLAIMS. DO SO RIGHT NOW!</p>
          +
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          + <div class="row">
          +      <p><strong><u>CC:    Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +      <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +      <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +    </div>
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/4.blade.php b/resources/views/lg/pdf/4.blade.php
          new file mode 100644
          index 0000000..38ec011
          --- /dev/null
          +++ b/resources/views/lg/pdf/4.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT,
          +COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction.My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a
          +consideration of the claim(s) reality of collect-ability or not! </p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I am in receipt of a current credit report of which questionably suggests that I now or in past have owed you something, yet there is nothing that substantiates your reporting or claim thereof so I demand that you dismiss all claims and eradicate any injurious reporting(s) versus me , particularly if currently reported item(s) are potentially deficient of the mandatory document evidence of  physically verified factual proof of the truth of claim, truth of reporting, accuracy of claim, correctness of reporting, completeness of claim, fullness of reporting, timeliness of claim, timeliness of reporting, ownership or responsibility elsewise of claim, ownership or responsibility else wise of the  reporting,  and or the complete and perfect certified Metro 2 format reporting standard(s). I demand that you display to me your lawful authority to forcibly conduct business with any contesting consumer much less me! Particularly removed is your right to act in dereliction as you hold me under threat of financial and or creditworthiness injury(ies). I here now DEMAND that if you are unwilling or unable to do as requested, as demanded, and as otherwise mandatory to retain or regain compliance of reporting no later than 20 days from your receipt of this lawful notice of consumer complaint that you immediately and forevermore thereafter cease any and all derogatory and or injurious actions versus me , to include but not limited to the foul actions to report and or collect unverified, untrue, invalid, or else wise not certifiably compliant claim(s) and or debt(s). Let it be in clarity that I am well aware of the FACT that absent legal authority or a written agreement between us that you can not force me to conduct any business interaction(s) with you and I will NOT! Certainly if you elect still to injure me , even to the slightest, it undoubtedly would be a show of merciless harassment or even willful extortion , a CRIMINAL OFFENSE in my state of residence! Any such behavior will directly or indirectly lead me to act accordingly, so please rectify your chicanery-laden subterfuge as alleged on my current consumer credit profile history by eradication and or removal from reporting the delinquently reported item(s) of:</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p> Please supply the following information in complete detail:<br>
          +>Why you think I owe the debt, and to whom I owe it, including:<br>
          +>The name and address of the creditor to whom the debt is currently owed, the account number used by that creditor, and the amount owed.
          +<br>>If this debt started with a different creditor, provide the name and address of the original creditor, the account number used by that creditor, and the amount owed to that creditor at the time it was transferred. When you identify the original creditor, please provide any other name by which I might know them, if that is different from the official name. In addition, tell me when the current creditor obtained the debt and who the current creditor obtained it from.
          +<br>>Provide verification and documentation (retail installment contract etc.) that there is a valid basis for claiming that I am required to pay the debt to the current creditor.
          +<br>>If you are asking that I pay a debt that somebody else is or was required to pay, identify that person. Provide verification and documentation about why this is a debt that I am required to pay.</p>
          +    <p class="txt-cen-ul">The amount and age of the debt, specifically:</p>
          +    <p>>A copy of the last billing statement sent to me by the original creditor.
          +<br>>If there have been any additional interest, fees, or charges added since the last billing statement from the original creditor, provide an itemization showing the dates and amount of each added amount. In addition, explain how the added interest, fees or other charges are expressly authorized by the agreement creating the debt or are permitted by law.
          +<br>>If there have been any payments or other reductions since the last billing statement from the original creditor, provide an itemization showing the dates and amount of each of them.
          +<br>>If there have been any other changes or adjustments since the last billing statement, please provide full verification and documentation of the amount you are trying to collect. Explain how that amount was calculated. In addition, explain how the other changes or adjustments are expressly authorized by the agreement creating the debt or permitted by law.
          +<br>>Have you made a determination that this debt is within the statute of limitations applicable to it? Tell me when you think the statute of limitations expires for this debt, and how you determined that.</p>
          +    <p class="txt-cen-ul">Due Diligence and Rights to Collect:</p>
          +    <p>>If you fail to provide any of the information or documentation I have asked for, please say why. If you do not provide it, and do not adequately explain why, I will understand that you are unable to confirm or document your claims.
          +<br>>I would like more information about your firm before I discuss the debt with you. Does your firm have a debt collection license from my state? If not, say why not. If so, provide the date of the license, the name on the license, the license number, and the name, address and telephone number of the state agency issuing the license.
          +<br>>If you are contacting me from a place outside my state, does your firm have a debt collection license from that place? If so, provide the date of the license, the name on the license, the license number, and the name, address and telephone number of the state agency issuing the license.</p>
          +    <p class="txt-cen-ul">Regulatory Compliance:</p>
          +    <p>>Is your firm aware of (Complying with the Credit Bureau Settlement Agreement)?
          +<br>>Does your firm participate or utilize any type of ACDV (Automated Credit Dispute Verification) software or system?
          +<br>>Does your firm outsource data entry for your collection process (if so please provide the legal name and address of that data entry firm)?
          +<br>>Is your firm currently Metro 2 compliant in its credit bureau reporting procedures (if not pleaser provide a signed declaration and waiver memorandum you have filed with the credit bureau or credit bureau reporting service that details the full process and steps your firm is undertaking to become Metro2 compliant)?
          +<br>>As a requirement of the Credit Bureau and the CFPB debt validation requirement, please detail your firm’s process of verification and validation for each disputed credit item (also include the name, title, and License number for the reviewing officer)?
          +<br>>In addition, please provide a COMPLETE (Metro 1 or Metro 2) snap shot of the debt report you have provided to the CRA’s (including a full P-segment –trailing segment of the report)?
          +>Provide a SIGNED notice of Compliance with regulatory measures as required by both the CFPB and the Credit Bureau Settlement Agreement (signed by your compliance officer, validating this DEBT and including the the name, title, and License number for the reviewing officer)?
          +                                I was also INFORMED by the CFPB supervisor that YOUR Firm has 30 days to PRODUCE ALL of the ABOVE noted information. If your firm CANNOT produce ALL of the above noted documentation in the allotted time frame, I will accept a written NOTIFICATION stipulating that your firm CANNOT COMPLY with the FDCPA and formally withdrawing your claim to this alleged debt is demanded. If you choose to ignore this demand, I will pursue a direct course offered under the SETTLEMENT AGREEMENT entered into by the Credit Reporting Agencies with the ATTORNEY GENERAL OF THE STATE OF NEW YORK BUREAU OF CONSUMER FRAUDS & PROTECTION and 37 other states that specifically EMPOWERS a working group to remediate and hold accountable and sanction data furnishers who fail to meet the requirements of the FDCPA and CFPB compliance guidance for Professional Debt Collection Practices. If your firm chooses not to respond to this VALIDATION demand and its conditions I will NOT hesitate to FILE suit and SEEK my own payday against your firm for malicious collection activities-see Fields v. Wilber Law Firm, Donald L. Wilber and Kenneth Wilber, USCA-02-C-0072, 7th Circuit Court, Sept. 2004. You have 30 days from the post mark date of this validation demand to answer.</p>
          +  </div>
          +  <div class="row">
          +    <p class="span-blue">In Genuine Sincerity I close,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +
          +@endsection
          diff --git a/resources/views/lg/pdf/40.blade.php b/resources/views/lg/pdf/40.blade.php
          new file mode 100644
          index 0000000..8455ade
          --- /dev/null
          +++ b/resources/views/lg/pdf/40.blade.php
          @@ -0,0 +1 @@
          +<p> Audit letter content goes here </p>p>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/41.blade.php b/resources/views/lg/pdf/41.blade.php
          new file mode 100644
          index 0000000..5b48499
          --- /dev/null
          +++ b/resources/views/lg/pdf/41.blade.php
          @@ -0,0 +1,69 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I DO NOT AUTHORIZE any entity to retain or report ANY INFORMATION, true or not, of which is not EACH OF being physically validated and certified as entirely TRUE,CORRECT,COMPLETE,TIMELY, of my undoubted ownership, of my undeniable responsibility, COMPLIANTLY reported to every aspect of any and all applicable regulations and laws including the mandatory METRO 2 format compliance standards, and IRREFUTABLE in its CERTIFICATE as such. That said, ANY PERSONAL IDENTIFIERS not matching the above noted inserted data MUST be immediately discarded, do so here and now! </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p >TO: (as your DATA FURNISHER NAME AND ADDRESS as appears on my credit reports) <br> <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p> RE: DEMAND for PERFECT and PROVEN COMPLIANT REPORTING even to the REQUISITES of the METRO 2 format compliance standards ie my  Consumer DEMAND to have NO DEROGATORY INFORMATION reporting UNLESS it is, as REQUIRED by LAWS, PROVEN fully TRUE, CORRECT, COMPLETE and CERTIFIED COMPLIANT in reporting of that derogatory and or any aspect of it. I DEMAND IMMEDIATE deletion of any NOT TESTIMONIAL as perfectly and fully physically VERIFIED and CERTIFIED as such. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >The DEROGATORY claim(s)  of the reported allegation listed as  </p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;&nbsp;&nbsp; is/are either reported as one or more of being untruly, incorrectly, incompletely, untimely, or elsewise potentially erroneously or misleadingly reported DEFICIENT OF LAWFUL REPORTING. CLEARLY making this aspect of reporting not with legal standing in full accordance of requisite reporting mandatory standards of the exact and complete perfect and physically verifiable certificate of&nbsp; compliant reporting. For you to retain or return to REQUIRED COMPLIANT LAWFUL REPORTING, you MUST modify or delete or demonstrate DOCUMENT PROOF of validity to every aspect of derogatory claims, true or not, as related to its reality AND it&rsquo;s reporting. No doubt you are aware of the fact that it is ILLEGAL to retain or report misleading or unproven information, especially considering a composed writ consumer complaint notifying you of said issues so please DELETE the indicated&nbsp; illegally reported allegations of late here and now, and REPORT PROPERLY as PAYS AS AGREED, NEVER LATE&nbsp; or PAYS AS AGREED, NO LATE PAYMENTS REPORTED. I am aware of YOUR REQUIREMENT for not only FAIR,TRUE,&nbsp; and ACCURATE REPORTING but also for the REQUISITE of a COMPLETE and UNDOUBTED PERFECTLY COMPLIANT REPORTING to every standard of applicable reporting laws, regulations, standards, etc., be them mentioned here or NOT!&nbsp; I am also aware that your willful disregard OR disregard in IGNORANCE of the mandates is ILLEGAL and you will be liable for any and all injuries resultant of your derelict. I DEMAND that there be NONE! I have identified the below item of concern, which MUST be CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE in its full VALIDITY to its entirety as related to the documented TRUTH, accuracy, completeness, timeliness, and elsewise required aspects of reporting, mentioned or not. I DEMAND ,as is MY CONSUMER and/or CIVIL RIGHT to do so, that you submit to my requested action to retain or return to state and federally REQUIRED PERFECT AND COMPLIANT REPORTING. &nbsp;<strong>**Please in addition eradicate any, if it even exists, claims of inquiry(s) associated with the above indicated illegally reported derogatory information. Per CDIA definition of YOUR electronic verification process, E-OSCAR, "eOscar is a web based, METRO 2 COMPLIANT, automated system..." and I do and will CONTINUE to expect you to be able to PROVE just THAT in the LEAST.&nbsp; I am concerned about your record keeping, so please detail ALL pertinent dates and balances, even to identify the date of the last payment made on this account. </strong>Please REMOVE the not yet proven CERTIFIED&nbsp; METRO 2 format COMPLIANT claim(s),&nbsp; any unproven by physically verified validity of full undeniable and documented truth accuracy completeness timeliness and compliance of reporting elsewise,&nbsp; a n d /o r&nbsp; any questionably reported or inconsistently reported or any potentially e r r o n e o u s&nbsp; d e r o g a t o r y&nbsp;&nbsp; allegation(s) of reporting(s) as, TRUE OR NOT, legally they are unjustly INJURIOUS and mandates REQUIRE the ERADICATION of reporting of any unproven claim(s), so REMOVE NOW from reporting!&nbsp;&nbsp;&nbsp; Please in addition eradicate any, if it even exists, claims of inquiry(s) associated with the above indicated illegally reported derogatory information.</p>
          +    <p>COMPLIANT REPORTING is the MANDATE , NOT the OPTIONAL CHOICE of any entity in reporting of consumer data! YOU ARE DEFICIENT of minimal requisites to report the claim(s) contested In this notice! OBVIOUSLY, I am concern with the possibility and DEMAND that you Do not confuse my credit file with people of similar name, address or SSN. Verify all identifying information. ALL claims, true or not, must be proven to be currently and fully TRUE, CORRECT, COMPLETE, TIMELY, of my OWNERSHIP, of my RESPONSIBILITY, and or compliant to all applicable reporting laws and requisite standards, which is currently the FCBA, FCRA, FDCPA, METRO 2 COMPLIANCE STANDARDS and others.&nbsp; Per laws and requisite reporting standards, you or any entity are in infringement of my rights.&nbsp; Should you continue to retain and/or report any chicanery-based subterfuge even upon my declaration of a composed consumer complaint, therefore, eradicate immediately and in entirety any and all allegations which are not demonstrated in clarity to be true, correct, complete, timely, mine, my responsibility, or else wise fully compliant. &nbsp;&nbsp;&nbsp;</p>
          +    <ul>
          +    <li>Have you yet determined COMPLIANTLY (with document evidence) &nbsp;that this allegation or debt is within the statute of limitations applicable to it?</li>
          +    <li>Tell me when you think the statute of limitations expires for this debt, and how you determined that.</li>
          +    </ul>
          +    <p>&nbsp;</p>
          +    <p>=&gt;=&gt; I DEMAND&nbsp; from you PROOF documenting your&nbsp; Due Diligence and Rights to claim:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If you fail to provide any of the information or documentation I have asked for, please say why. If you do not provide it, and do not adequately explain why, I will understand that you are unable to confirm or document your claims.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
          +    <p>=&gt;=&gt;I would like more information about your firm before I discuss the debt with you.</p>
          +    <p>&nbsp;</p>
          +    <ul>
          +    <li>Does your firm have a debt collection license from my state? If not, say why not. If so, provide the date of the license, the name on the license, the license number, and the name, address and telephone number of the state agency issuing the license. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If you are contacting me from a place outside my state, does your firm have a debt collection license from that place? If so, provide the date of the license, the name on the license, the license number, and the name, address and telephone number of the state agency issuing the license.</li>
          +    </ul>
          +    <p>&nbsp;I&nbsp; HAVE REAL CONCERNS related to your likely DEFICIENT Regulatory Compliance:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
          +    <ol>
          +    <li>Is your firm aware of (Complying with the Credit Bureau Settlement Agreement)? &nbsp;&nbsp;</li>
          +    <li>When precisely (exact date) did your firm obtain or commence collection activities on this debt?</li>
          +    <li>Does your firm participate or utilize any type of ACDV (Automated Credit Dispute Verification) software or system?</li>
          +    <li>Does your firm outsource data entry for your collection process (if so please provide the legal name and address of that data entry firm)?</li>
          +    <li>Is your firm currently Metro 2 compliant in its credit bureau reporting procedures (if not please provide a signed declaration and waiver memorandum you have filed with the credit bureau or credit bureau reporting service that details the full process and steps your firm is undertaking to become Metro2 compliant)?</li>
          +    </ol>
          +    <p>&ccedil;&egrave; As a requirement of the Credit Bureau and the CFPB debt validation requirement, please detail :</p>
          +    <ol>
          +    <li>your firm&rsquo;s process of verification and validation for each disputed credit item (also include the name, title, and License number for the reviewing officer)?</li>
          +    <li>In addition, please provide a COMPLETE (Metro 1 or Metro 2) snapshot of the debt report you have provided to the CRA&rsquo;s (including a full P-segment &ndash;trailing segment of the report)?</li>
          +    </ol>
          +    <p>&ccedil;&egrave;&ccedil;&egrave;As a REMINDER, this letter officially serves as my legal CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES!</p>
          +
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/42.blade.php b/resources/views/lg/pdf/42.blade.php
          new file mode 100644
          index 0000000..ec5c432
          --- /dev/null
          +++ b/resources/views/lg/pdf/42.blade.php
          @@ -0,0 +1,90 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +  <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">Destination of my Consumer Complaint is : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p> Re: DEMAND that ONLY PHYSICALLY VERIFIED fully TRUE, ACCURATE, COMPLETE, TIMELY, of a KNOWN RESPONSIBILITY and OWNERSHIP, VALIDATED and else wise CERTIFIED FACTUALLY PERFECT as to the mandatorily COMPLIANCE of the METRO 2 FORMAT reporting standard(s) or REMOVAL FROM REPORTING any claim(s) NOT documented and demonstrated as requisite by MY STATE and the federal mandates that governs your reporting requirements! FAILURE to do so is ILLEGAL and WILLFUL DERELICTION of legal reporting, a suitable offense! </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >YOU, as does ANY entity involved with consumer credit reporting undoubtedly  MUST make demonstrated testimonial certificate of facts to your affirmed confirmation of everyone even each any and or all of the still unproven to be compliant ,true, correct or complete. CERTIFICATE in COMPOSITION in CERTAINTY all aspects of allegations versus me or YOU MUST ERADICATE such derogatory and injurious claims. Please DELETE TODAY even right NOW or unequivocally avouch physically to every single one even each any or all of the excerpts, dated assignments, ledger balances, audited enumerations, documents of identification, each of the 426-character format fielded P6 statements ,pay status codes, alpha-/ numeric-/ and or alphanumeric source codes. Further certificate affirmably every single one even each any and or all of the minimal five (5) portioned personal identifiers, and even the unabbreviated 386 pieces of confirmation to collect. Per Metro 2 format, FCRA, FDCPA, and or my state reporting laws you MUST CERTIFICATE the AFFIRMED CONFIRMATION of every aspect of FACTS to the irrefutable full TRUTH, CORRECTNESS, completeness, timeliness, ownership, responsibility, state reporting mandates, federal reporting laws applicable, and standards of compliance laws including adequate and exact correct complete metro 2 data field formatted reporting. Your hesitancy or unwillingness to do so promptly WILL result in my seeking of enacting my consumer and or civil rights and making inquiry to a civil court nearest me for a resolution, likely MONETARILY in nature, to your improper , unethical, and likely illegal misbehavior concerning this matter of discussion. PLEASE consider the following FACTS: </p>
          +
          +
          +    <p>FACT #1) &nbsp;&nbsp;</p>
          +    <img src="{{ url('/') }}/images/fact1.png" >
          +    <p>&nbsp;&ldquo;e-OSCAR is a web-based, Metro 2 compliant, automated system&rdquo;</p>
          +    <p>&nbsp;FACT #2) &nbsp;&nbsp;&nbsp;&nbsp;</p>
          +    <img src="{{ url('/') }}/images/fact2.png" >
          +    <p>Per the link <a href="https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4">https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4</a> &nbsp;</p>
          +    <p>&ldquo;...If the furnisher is using e-OSCAR, the system forwards the information automatically to any other nationwide CRA to which the furnisher reported the disputed item&rdquo;</p>
          +    <p>&nbsp;</p>
          +    <p>FACT #3) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
          +    <img src="{{ url('/') }}/images/fact3.png" >
          +    <p>Per the link <a href="http://www.e-oscar.org/about-e-oscar.aspx">http://www.e-oscar.org/about-e-oscar.aspx</a> , &ldquo; If an account is modified or deleted, carbon copies are sent to each CRA with whom the DF has a reporting relationship.&rdquo;</p>
          +    <p>&nbsp;</p>
          +    <p>FACT #4) &nbsp;&nbsp;</p>
          +    <img src="{{ url('/') }}/images/fact4.png" >
          +    <p>Per the link <a href="http://www.e-oscar.org/about-e-oscar.aspx">http://www.e-oscar.org/about-e-oscar.aspx</a></p>
          +    <p>&nbsp;&ldquo;CRAs include Equifax, Experian, Innovis and TransUnion, their affiliates or Independent Credit Bureaus and Mortgage Reporting Companies. &ldquo;</p>
          +    <p>&nbsp;</p>
          +    <p>&nbsp;</p>
          +    <p>FACT #5) &nbsp;</p>
          +    <img src="{{ url('/') }}/images/fact5.png" >
          +    <p>Per the link <a href="https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4">https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4</a></p>
          +    <p>&nbsp;The FCRA requires DF to DELETE, MODIFY (correct/update) ,or PERMANENTLY block the reporting of disputed information that is found to be inaccurate or INCOMPLETE or cannot be verified&hellip;</p>
          +    <p>&nbsp;</p>
          +    <p>FACT #6)</p>
          +    <img src="{{ url('/') }}/images/fact5.png" >
          +    <p>And more, per the link <a href="https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4">https://www.federalreserve.gov/boarddocs/rptcongress/fcradispute/fcradispute200608.htm#toc4</a>&nbsp;</p>
          +    <p>I am positive that it is UNDENIABLE your REQUISITE actions INCLUDE what I have requested/demanded here in this consumer notification. CLEARLY, COMPLIANCE is REQUIRED, not OPTIONAL as proven by the statement of &ldquo;......and maintain SUFFICIENT RECORDS to show COMPLIANCE&rdquo;&nbsp; .&nbsp; Surely since the credit reports are allegedly verified and validated in part by use of the e-Oscar processing, that required COMPLIANCE would undoubtedly INCLUDE COMPLIANCE to the certified Metro 2 format reporting exactness and precision, if not PLEASE showcase ANY regulation that allows ANY ENTITY involved in consumer credit reporting to avoid perfect and adequate dutiful responsible credit profile reporting, be it willfully or in absolute ignorance of the mandatory actionable demands for reporting with legal standing in full accordance to every single</p>
          +    <p>aspect of each and all applicable state and or federal laws and standards&nbsp; for consumer credit profile history reporting, TRUE OR NOT!&nbsp;</p>
          +    <p>&nbsp;</p>
          +    <p>DELETE immediately the following unproven , uncertified, unverified, or elsewise unlawfully reported derogatory information:</p>
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;REBUTTAL Notation includes the facts that claims are not to date certified completely compliant perfectly reported derogatory claims must be deleted Or else proven certified physically verifiably valid per FCRA FDCPA and or to the Metro 2 format so eradicate any and all claims of delinquency or adversarial derogatory reporting that is still yet deficient of irrefutable physically verifiable certificate proof of validity to the entirety of the allegation, to include it&rsquo;s mandatory reporting compliance standards of full truth, correctness, completeness, timeliness, and document facts of such. In summary, Inaccurate misleading&nbsp; or not certified perfect and completely compliant derogatory claims must be deleted Or else proven certified as being physically verified valid per FCRA FDCPA and or to the Metro 2 format so please DO SO NOW to retain federally REQUIRED COMPLIANT REPORTING!</p>
          +    <p>&nbsp;</p>
          +    <p>&nbsp;</p>
          +    <p>FINALLY, Do not confuse my credit file with people of similar name, address or SSN. Verify all identifying information. ALL claims, true or not ,must be proven to be currently and fully TRUE, CORRECT, COMPLETE,TIMELY, of my OWNERSHIP ,of my</p>
          +    <p>RESPONSIBILITY, and or compliant to any and all applicable reporting laws and requisite standards, which is currently the FCBA, FCRA, FDCPA,METRO 2 COMPLIANCE STANDARDS and others. Per laws and requisite reporting standards you or any entity are in infringement of my rights should you continue to retain and or report any chicanery based subterfuge even upon my declaration of a composed consumer complaint so eradicate immediately and in entirety any and all allegations which are not demonstrated in clarity to be true, correct, complete, timely, mine, my responsibility ,or else wise fully compliant !</p>
          +    <p>&nbsp;</p>
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/43.blade.php b/resources/views/lg/pdf/43.blade.php
          new file mode 100644
          index 0000000..12f7189
          --- /dev/null
          +++ b/resources/views/lg/pdf/43.blade.php
          @@ -0,0 +1,54 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +  <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">Destination of my Consumer Complaint is : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p> Re:  Demand to remove Inaccurate Credit Information </p>
          +</div>
          +
          +
          +  <div class="row">
          +    <p>Sirs,</p>
          +    <p>&nbsp;</p>
          +    <p>I hereby demand that you disclose each and every document that you have in your physical possession as of this date regarding the accounts that you are reporting in my credit report.&nbsp; This demand is being made pursuant to the <strong>Fair Credit Reporting Act 15 USC Section 1681g</strong>.&nbsp; Please send me copies of these documents that you have in your files as of this date that you used to verify the accuracy of the accounts listed herein.&nbsp; <strong>DO NOT</strong> merely state that they have been verified, as this is not in compliance with the law.</p>
          +    <p>In the event you do not have any documentation in your physical possession as of the date of this demand, under the <strong>Fair Credit Reporting Act Section 1681(i)</strong>, ALL unverified accounts must be promptly deleted.&nbsp; Moreover, I dispute the validity of each of the accounts listed below, therefore under <strong>Section 611(a)(5)(A)(i)</strong> of the <strong>Fair Credit Reporting Act</strong>, if you do not have any documentation in your files to verify the accuracy of these disputed accounts, you are required to delete them immediately.&nbsp; Failing to do so is damaging my creditworthiness and reputation.</p>
          +    <p>I demand the accounts listed herein be properly verified or removed immediately.&nbsp;</p>
          +    <p>Please provide a copy of my corrected and updated report once you have complied with the law.</p>
          +    <p><strong>VERFIFY PROPERLY OR REMOVE THE FOLLOWING ACCOUNTS:</strong></p>
          +    <p><strong><u>ACCOUNT NAME:</u></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>ACCOUNT NUMBER:</u>&nbsp;&nbsp;&nbsp; <u>PROVIDE PHYSICAL PROOF OF VERIFICATION</u>&nbsp;&nbsp; </strong></p>
          +    @include('lg.pdf.partial.content')
          +  </div>
          +    <div class="row">
          +    <p style="font-weight: bold; text-decoration: underline;">In GENUINE SINCERITY,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/44.blade.php b/resources/views/lg/pdf/44.blade.php
          new file mode 100644
          index 0000000..ea5e46f
          --- /dev/null
          +++ b/resources/views/lg/pdf/44.blade.php
          @@ -0,0 +1,57 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">To : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +
          +
          +</div>
          +<div class="row">
          +  <p> Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Upon further investigation, I have retained new copies of my credit reports, and noticed that you did not furnish the credit bureaus with the required disclosure, within the period required by law. You are required by federal law to place a “notice of dispute” on my account within 30 days of my lawfully leveraged consumer complaint. I have retained a record of your receipt and proof as well of the exact  date of receipt, as well as a time-stamped copy of my credit reports, showing that you have violated the Fair Credit Reporting Act, Section 623(a)(3) and/or the Fair Debt Collection Practices Act Section 807(8), the mandatory metro 2 formatted reporting standard(s) of compliance and others even by your deficiencies and also  by not placing the disclosure within the required 30-day period.<br>
          +Be aware that I am making a final goodwill attempt to have you clear up this matter. The listed item is undeniably not certified compliantly reported, provable as reported and or is plain and simply entirely inaccurate and incomplete and represents a very serious error in your reporting. Either way the claim is in dire disregard of my consumer rights and your required perfect provable compliant reporting(s) of only true complete correct timely verified valid claim(s) even in regard to the mandatorily perfect correct complete certifiable Metro 2 format reporting standard(s) of lawful reporting! YOU MUST ERADICATE the claim(s) of  any delinquency and or derogatoriness that is questionable such as in this exact circumstance. Delete now as follows:
          +</p>
          +    @include('lg.pdf.partial.content')
          +
          +    <p>Let it be known in clarity that at all times I am maintaining a careful record of my communications with you for the purpose of filing a complaint with the Consumer Financial Protection Bureau and the Attorney General&rsquo;s office, and potentially even a civil suit should you continue in your non-compliance of federal laws under the Fair Credit Reporting Act, or any other standard of requisite reporting be it mentioned or not. I further remind you that you may be liable for your willful non-compliance, as per FCRA 623(a)(3) - Responsibilities of furnishers of&nbsp;information to consumer reporting agencies [15 U.S.C. 1681s-2] <br /> <em>(3) Duty to provide notice of dispute. If the completeness or accuracy of any information furnished by any person to any consumer reporting agency is disputed to such person by a consumer, the person may not furnish the information to any consumer reporting agency without notice that such information is disputed by the consumer.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </em><br /> <em>(B) <u>Time of Notice</u> (I) The notice required under subparagraph (A) shall be provided to the customer prior to, or no later than 30 days after, furnishing the negative information to a consumer reporting agency described in section 603(p).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </em><br /> As you have violated federal law, by not properly providing the credit bureaus with proper notice within the required timeframe, and I have evidence of such, via certified mail receipts, you must now remove the item. Any other action (or inaction) on your behalf may result in a small claims action against your company. So you are aware, I would be seeking a minimum of $1,000 in damages per violation for at least one or more of the following and other statues and or standards not necessarily mentioned to this point:</p>
          +    <p>&nbsp;</p>
          +    <ul>
          +    <li>Defamation</li>
          +    <li>Negligent Enablement of Identity Fraud</li>
          +    <li>Violation of the Fair Debt Collection Practices Act (including but not limited to Section 807-8)</li>
          +    <li>Violation of the Fair Credit Reporting Act (including but not limited to Section 623-b)</li>
          +    </ul>
          +    <p>&nbsp;</p>
          +    <p>You will be required to appear in a court venue local to me, in order to formally defend yourself. My contact information is as follows:</p>
          +
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p>P.S. Please be aware that dependent upon your response, I may be detailing any potential issues with your company via an online public press release, including documentation of any potential small claims action. I am also including a copy of my complaint to the organizations below:</p>
          +     <p>&nbsp;</p>
          +     <p>Cc: Consumer Financial Protection Bureau</p>
          +     <p>Cc: Attorney General&rsquo;s Office</p>
          +     <p>Cc: Better Business Bureau</p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/45.blade.php b/resources/views/lg/pdf/45.blade.php
          new file mode 100644
          index 0000000..29bb57d
          --- /dev/null
          +++ b/resources/views/lg/pdf/45.blade.php
          @@ -0,0 +1,54 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">To : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +   <p><strong><em><u class="clr-red">AND</u></em></strong></p>
          +   <p><strong>Equifax Corporation ATTN: Julie Shirley</strong></p>
          +   <p><strong>SVP and Deputy General Counsel</strong></p>
          +   <p><strong>Office of the General Counsel</strong></p>
          +   <p><strong>1550 Peachtree St </strong></p>
          +   <p><strong>NE Atlanta, GA 30309</strong></p>
          +
          +</div>
          +<div class="row">
          +  <p> RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong><em><u>FCRA 611 (a) (7)</u></em></strong>.&nbsp; Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!&nbsp; No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)&nbsp; is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY&nbsp; reported.&nbsp; Tort law is quite clear in this matter!&nbsp; You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong><em><u>1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies</u></em></strong>.</p>
          +    <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +    @include('lg.pdf.partial.content')
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>Sincerely,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p><strong>CC:</strong></p>
          +     <p><strong>Anthony Alexis</strong></p>
          +     <p><strong>Assistant Director of Enforcement</strong></p>
          +     <p><strong>Consumer Financial Protection Bureau</strong></p>
          +     <p><strong>1700 G. Street NW</strong></p>
          +     <p><strong>Washington, D.C. 2055</strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/46.blade.php b/resources/views/lg/pdf/46.blade.php
          new file mode 100644
          index 0000000..bbd4450
          --- /dev/null
          +++ b/resources/views/lg/pdf/46.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">To : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +   <p><strong><em><u class="clr-red">AND</u></em></strong></p>
          +   <p>TransUnion Corporation ATTN: Daniel Halvorsen</p>
          +   <p>Sr. Attorney GROUP General Counsel</p>
          +   <p>Office of the General Counsel</p>
          +   <p>555 W. Adams Street</p>
          +   <p>Chicago IL 60661</p>
          +   <p>&nbsp;</p>
          +
          +</div>
          +<div class="row">
          +  <p> RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong><em><u>FCRA 611 (a) (7)</u></em></strong>.&nbsp; Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!&nbsp; No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)&nbsp; is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY&nbsp; reported.&nbsp; Tort law is quite clear in this matter!&nbsp; You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong><em><u>1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies</u></em></strong>.</p>
          +    <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +    @include('lg.pdf.partial.content')
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>Sincerely,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p><strong>CC:</strong></p>
          +     <p><strong>Anthony Alexis</strong></p>
          +     <p><strong>Assistant Director of Enforcement</strong></p>
          +     <p><strong>Consumer Financial Protection Bureau</strong></p>
          +     <p><strong>1700 G. Street NW</strong></p>
          +     <p><strong>Washington, D.C. 2055</strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/47.blade.php b/resources/views/lg/pdf/47.blade.php
          new file mode 100644
          index 0000000..9da7f7e
          --- /dev/null
          +++ b/resources/views/lg/pdf/47.blade.php
          @@ -0,0 +1,56 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          + <p class="span-blue">To : &nbsp; <br> <span class="span-ul">{{$destination}}</span></p>
          +   <p><strong><em><u class="clr-red">AND</u></em></strong></p>
          +   <p><strong>Experian North America, ATTN: Ann Sterling</strong></p>
          +   <p><strong>Vice President and Assistant General Counsel</strong></p>
          +   <p><strong>Office of the Corporate Counsel</strong></p>
          +   <p><strong>475 Anton Blvd.</strong></p>
          +   <p><strong>Costa Mesa, CA 92626</strong></p>
          +   <p>&nbsp;</p>
          +
          +</div>
          +<div class="row">
          +  <p> RE: Consumer notice to repository of suspected COMPLIANCE FAILURE reporting inquiry(ies) deficient of the mandatory physically verifiable proof of adequately acquired lawful Permissible Purpose and consumer DEMAND for repository to CHECK for COMPLIANCE OF REPORTING even to the required Metro 2 format reporting standards for alleged true, accurate, complete, timely , undoubtedly valid claim of inquiry. Consumer contests the report-ability due to deficiencies of or in proof of the requisite certified compliant reporting of only factually validated and verified claim(s), be it true or be it not!  </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p><u>To whom t may concern</u>,</p>
          +    <p>Recently, I contacted your firm with a formal consumer complaint challenging reported claim(s) under the <strong><em><u>FCRA 611 (a) (7)</u></em></strong>.&nbsp; Included as well in addition of that check for compliant reporting, I sent a formal written validation demand to the Creditor for the Inquiry that you are reporting. I received back a denial of process and an assertion that the records of the inquiry (ies) reported were in fact UNAVAILABLE, or so they claimed!&nbsp; No matter if you or a third party has collected this information, you must have an adequate record to legally substantiate the claim(s), if not it(they)&nbsp; is/are UNVERIFIEABLE, invalid, or not factually certified compliantly reported (even to the mandatory Metro 2 format standards) or ANY OTHER DEFICIENCY OF FACTUAL REPORTING and or process of reporting then said allegations are unfit and therefore CANNOT be LEGALLY&nbsp; reported.&nbsp; Tort law is quite clear in this matter!&nbsp; You have NO MORE THAN 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section <strong><em><u>1024.35 (Notice of Error) under Regulation X of the CFPB regulatory reform guidelines for Credit Reporting Agencies</u></em></strong>.</p>
          +    <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +    @include('lg.pdf.partial.content')
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>Sincerely,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p><strong>CC:</strong></p>
          +     <p><strong>Anthony Alexis</strong></p>
          +     <p><strong>Assistant Director of Enforcement</strong></p>
          +     <p><strong>Consumer Financial Protection Bureau</strong></p>
          +     <p><strong>1700 G. Street NW</strong></p>
          +     <p><strong>Washington, D.C. 2055</strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/48.blade.php b/resources/views/lg/pdf/48.blade.php
          new file mode 100644
          index 0000000..bd9e45d
          --- /dev/null
          +++ b/resources/views/lg/pdf/48.blade.php
          @@ -0,0 +1,62 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +
          +    <p><strong><span class="span-blue">TO:</span> EXPERIAN CORPORATION, VP/AGC OCC&nbsp;&nbsp;&nbsp;&nbsp; </strong></p>
          +    <p><strong>Attention: David Strauss or current/acting Vice president and Associate General Counsel</strong></p>
          +    <p><strong>Office of the Corporate Counsel</strong></p>
          +    <p><strong>475 Anton BLVD. </strong></p>
          +    <p><strong>Costa Mesa, California 92626&nbsp;&nbsp;&nbsp;&nbsp; </strong></p>
          +    <p><strong>&nbsp;</strong></p>
          +    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong>&nbsp;</strong></p>
          +    <p><strong>Experian&nbsp;&nbsp; PO Box 9701&nbsp; Allen, Texas 75013&nbsp;&nbsp; </strong></p>
          +    <p>&nbsp;</p>
          +</div>
          +<div class="row">
          +  <p> RE: Consumer NOTIFICATION of unproven and or Faulty Transfer and Payment Record Information, untrue information, incorrect information, incomplete information, not certified compliantly reported information or information else wise deficient of mandated validity and of applicable and mandatory reporting standards, to include but not limited to those requisites by the FCBA, FCRA, FDCPA, FACTA, HIPAA PR, TILA, and or M2C (Metro 2 Compliance format) reporting regulations. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner what so ever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +    <p><strong><em><u>Please IMMEDIATELY return or retain COMPLIANT and valid lawful reporting with the complete and permanent removal from reporting of the claim(s) displayed below as the reporting(s) is/are not adequate for assumption for meeting the minimal criteria for lawful factual reporting:</u></em></strong></p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not!&nbsp; Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported!&nbsp; AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted mis-information as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions.</p>
          +    <p>Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES.</p>
          +
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p> <strong>Cc:</strong></p>
          +     <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/49.blade.php b/resources/views/lg/pdf/49.blade.php
          new file mode 100644
          index 0000000..7b65bbe
          --- /dev/null
          +++ b/resources/views/lg/pdf/49.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +
          +    <p><strong><span class="span-blue">TO:</span> EQUIFAX Corporation , CVP/CLO<br /> Attention: John J. Kelley, III or the current/acting Corporate Vice President, Chief Legal Officer<br /> 1550 Peachtree Street<br /> NE ATLANTA, Georgia 30308</strong></p>
          +    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong>Equifax Po Box 740256 Atlanta, GA 30374-0256</strong></p>
          +
          +</div>
          +<div class="row">
          +  <p> RE: Consumer NOTIFICATION of unproven and or Faulty Transfer and Payment Record Information, untrue information, incorrect information, incomplete information, not certified compliantly reported information or information else wise deficient of mandated validity and of applicable and mandatory reporting standards, to include but not limited to those requisites by the FCBA, FCRA, FDCPA, FACTA, HIPAA PR, TILA, and or M2C (Metro 2 Compliance format) reporting regulations. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner what so ever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +    <p><strong><em><u>Please IMMEDIATELY return or retain COMPLIANT and valid lawful reporting with the complete and permanent removal from reporting of the claim(s) displayed below as the reporting(s) is/are not adequate for assumption for meeting the minimal criteria for lawful factual reporting:</u></em></strong></p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not!&nbsp; Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported!&nbsp; AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted mis-information as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions.</p>
          +    <p>Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES.</p>
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p> <strong>Cc:</strong></p>
          +     <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>1700 G Street NW&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</u></strong></p>
          +     <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/5.blade.php b/resources/views/lg/pdf/5.blade.php
          new file mode 100644
          index 0000000..19a7fc4
          --- /dev/null
          +++ b/resources/views/lg/pdf/5.blade.php
          @@ -0,0 +1,32 @@
          +@extends('layouts.lg-pdf')
          +
          +@section ('content')
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Consumer Notice to PHYSICALLY CHECK for complete and CERTIFIED COMPLIANCE of reporting ensuring that any and all claims of delinquency, derogatoriness, and or inquiry are factually proven fully TRUE, CORRECT,
          +COMPLETE, TIMELY, and or elsewise VALID as reported and additionally as mandatory ensure that any injurious claim is PERFECT and COMPLETE in its CERTIFIED METRO 2 FORMAT REPORTING COMPLIANCE! Compliant reporting of ONLY TRUE ACCURATE COMPLETE VERIFIABLY VALID and CERTIFIED as such is a MINIMAL REQUISITE of lawful reporting NOT AN OPTIONAL ONE! I as well use this notice to contest ignorant or elsewise deficient allegations regardless of reason of dereliction.My notice here serves as my OFFICIALLY WRIT notification of my lawful consumer CHALLENGE to not yet substantiated claims as regards to REPORT-ABILITY, not a
          +consideration of the claim(s) reality of collect-ability or not!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I am in receipt of a current credit report of which questionably suggests that I now or in past have owed you something, yet there is nothing that substantiates your reporting or claim thereof so I demand that you dismiss all claims and eradicate any injurious reporting(s) versus me , particularly if currently reported item(s) are potentially deficient of the mandatory document evidence of  physically verified factual proof of the truth of claim, truth of reporting, accuracy of claim, correctness of reporting, completeness of claim, fullness of reporting, timeliness of claim, timeliness of reporting, ownership or responsibility elsewise of claim, ownership or responsibility else wise of the  reporting,  and or the complete and perfect certified Metro 2 format reporting standard(s). I demand that you display to me your lawful authority to forcibly conduct business with any contesting consumer much less me! Particularly removed is your right to act in dereliction as you hold me under threat of financial and or creditworthiness injury(ies). I here now DEMAND that if you are unwilling or unable to do as requested, as demanded, and as otherwise mandatory to retain or regain compliance of reporting no later than 20 days from your receipt of this lawful notice of consumer complaint that you immediately and forevermore thereafter cease any and all derogatory and or injurious actions versus me , to include but not limited to the foul actions to report and or collect unverified, untrue, invalid, or else wise not certifiably compliant claim(s) and or debt(s). Let it be in clarity that I am well aware of the FACT that absent legal authority or a written agreement between us that you can not force me to conduct any business interaction(s) with you and I will NOT! Certainly if you elect still to injure me , even to the slightest, it undoubtedly would be a show of merciless harassment or even willful extortion , a CRIMINAL OFFENSE in my state of residence! Any such behavior will directly or indirectly lead me to act accordingly, so please rectify your chicanery-laden subterfuge as alleged on my current consumer credit profile history by eradication and or removal from reporting the delinquently reported item(s) of:</p>
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p> It is ILLEGAL to retain or report misleading or unproven information, especially considering a composed consumer complaint notifying you of said issues so please DELETE the aforementioned  illegally reported allegation(s)  here and now. Do not confuse my credit file with people of similar name, address or SSN. Verify all identifying information. ALL claims, true or not, must be proven to be currently and fully TRUE, CORRECT, COMPLETE, TIMELY, of my OWNERSHIP, of my RESPONSIBILITY, and or compliant to all applicable reporting laws and requisite standards, which is currently the FCBA, FCRA, FDCPA, METRO 2 COMPLIANCE STANDARDS and others.</p>
          +    <p>Per laws and requisite reporting standards, you or any entity are in infringement of my rights.  Should you continue to retain and/or report any chicanery based subterfuge even upon my declaration of a composed consumer complaint, therefore, eradicate immediately and in entirety any and all allegations which are not demonstrated in clarity to be true, correct, complete, timely, mine, my responsibility, or else wise fully compliant.</p>
          +    <p></p>
          +  </div>
          +  <div class="row">
          +    <h2 >In Genuine Sincerity I close,</h2>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/50.blade.php b/resources/views/lg/pdf/50.blade.php
          new file mode 100644
          index 0000000..7ce6a43
          --- /dev/null
          +++ b/resources/views/lg/pdf/50.blade.php
          @@ -0,0 +1,64 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +
          +<div class="row">
          +    <p><strong><span class="span-blue">TO:</span></strong>
          +        <strong>
          +            <?php echo isset($additional_destionations1[$destination]) ? $additional_destionations1[$destination]:""; ?>
          +        </strong></p>
          +    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong><?php echo isset($additional_destionations2[$destination]) ? $additional_destionations2[$destination]:""; ?></strong></p>
          +</div>
          +{{--<div class="row">--}}
          +
          +{{--    <p><strong><span class="span-blue">TO:</span> <strong>Trans Union Corporation , EVP/S/GC<br /> Attention: John W Blenke or current/acting Executive VP, Secretary, and or General Counsel <br /> 555 West Adams Street <br /> Chicago, Illinois 60661</strong></p>--}}
          +{{--    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>--}}
          +{{--    <p><strong>Trans Union Po Box 2000 Chester, Pennsylvania 19016-2000</strong></p>--}}
          +
          +{{--</div>--}}
          +<div class="row">
          +  <p> RE: Consumer NOTIFICATION of unproven and or Faulty Transfer and Payment Record Information, untrue information, incorrect information, incomplete information, not certified compliantly reported information or information else wise deficient of mandated validity and of applicable and mandatory reporting standards, to include but not limited to those requisites by the FCBA, FCRA, FDCPA, FACTA, HIPAA PR, TILA, and or M2C (Metro 2 Compliance format) reporting regulations. </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner what so ever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +    <p><strong><em><u>Please IMMEDIATELY return or retain COMPLIANT and valid lawful reporting with the complete and permanent removal from reporting of the claim(s) displayed below as the reporting(s) is/are not adequate for assumption for meeting the minimal criteria for lawful factual reporting:</u></em></strong></p>
          +
          +    @include('lg.pdf.partial.content')
          +
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not!&nbsp; Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported!&nbsp; AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted mis-information as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions.</p>
          +    <p>Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES.</p>
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +   <div class="row">
          +     <p> <strong>Cc:</strong></p>
          +     <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +     <p><strong><u>1700 G Street NW&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</u></strong></p>
          +     <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +   </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/51.blade.php b/resources/views/lg/pdf/51.blade.php
          new file mode 100644
          index 0000000..85bbfe4
          --- /dev/null
          +++ b/resources/views/lg/pdf/51.blade.php
          @@ -0,0 +1,58 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +  <p><strong>CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES! </strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>**I DO NOT AUTHORIZE any entity to retain or report ANY INFORMATION, true or not, of which is not EACH OF being physically validated and certified as entirely TRUE,CORRECT,COMPLETE,TIMELY, of my undoubted ownership, of my undeniable responsibility, COMPLIANTLY reported to every aspect of any and all applicable regulations and laws including the mandatory METRO 2 format compliance standards, and IRREFUTABLE in its CERTIFICATE as such. That said, ANY PERSONAL IDENTIFIERS not matching the above noted inserted data MUST be immediately discarded, do so here and now!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +    <p><strong><span class="span-blue">TO:</span></strong>
          +        <strong>
          +            <?php echo isset($additional_destionations1[$destination]) ? $additional_destionations1[$destination]:""; ?>
          +        </strong></p>
          +    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong><?php echo isset($additional_destionations2[$destination]) ? $additional_destionations2[$destination]:""; ?></strong></p>
          +</div>
          +{{--<div class="row">--}}
          +
          +{{--    <p><strong><span class="span-blue">TO:</span> </strong>Trans Union Corporation , EVP/S/GC<br /> Attention: John W Blenke or current/acting Executive VP, Secretary, and or General Counsel <br /> 555 West Adams Street <br /> Chicago, Illinois 60661</strong></p>--}}
          +{{--    <p class="clr-red"><strong><em><u>AND</u></em></strong></p>--}}
          +{{--    <p><strong>Trans Union Po Box 2000 Chester, Pennsylvania 19016-2000</strong></p>--}}
          +{{--</div>--}}
          +<div class="row">
          +  <p>Re: DEMAND that ONLY PHYSICALLY VERIFIED fully TRUE, ACCURATE, COMPLETE, TIMELY, of a KNOWN RESPONSIBILITY and OWNERSHIP, VALIDATED and else wise CERTIFIED FACTUALLY PERFECT as to the mandatorily COMPLIANCE of the METRO 2 FORMAT reporting standard(s) or REMOVAL FROM REPORTING any claim(s) NOT documented and demonstrated as requisite by MY STATE and the federal mandates that governs your reporting requirements! FAILURE to do so is ILLEGAL and WILLFUL DERELICTION of legal reporting, a suitable offense! Literally , this is <strong>simply a&nbsp; LETTER TO REQUEST CORRECTION OF INACCURATE ,OUTDATED,UNAUTHORIZED,OR OTHERWISE INCOMPLETE INFORMATION AS CURRENTLY REPORTED IN MY CREDIT PROFILE HISTORY BY YOUR COMPANY, THANKS IN ADVANCED!</strong></p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Factually CERTIFIED COMPLIANTLY reported claims of delinquencies and or derogatoriness includes DOCUMENT DEMONSTRATION and evidence else wise of all claims being fully and undeniably PERFECT in its reporting, in its FORMAT of reporting (mandatory to be METRO 2 format perfect and complete) , and in its process of reporting by only entities certified lawful in the reporting of ANY CLAIM be it true or not. Any allegation MUST be PHYSICALLY VERIFIED as factually and fully TRUE, CORRECT, COMPLETE, TIMELY, of a known and properly assigned RESPONSIBILITY and OWNERSHIP, and or else wise VALIDATED as PERFECT in all manner of reporting requisite(s), be it mentioned here or not. Every and each one of, even the following <strong><em><u>account(s)</u></em></strong> are requested CHECKED for PERFECTION and if not PROVE-able as factual in ALL MANNERS then each and every one is CHALLENGED for the PROOF of such and DEMANDED ERADICATED from reporting IMMEDIATELY as it can NOT be assumed any item is perfect if any possibility exists that it might be or is as either being every and one even inaccurate, incorrect, fraudulent, or otherwise in violation of the reporting standards set forth by Every and one even the FCRA. Per federal and state laws, Every and one even each of the following alleged accounts or information pertaining to Every and one even each is inadequate and must, per the state and federal laws that govern Every and one even your business and practices, be deleted immediately without delay and without every and one even&nbsp; any prejudices. Thank You in ADVANCED! Every and one even The following alleged reporters and the accounts the allege versus me are believed to be improperly reporting in violation of state and federal laws as well as both my consumer and civil rights, please remove Every and one even mentioned or not via immediate and permanent deletion without Every and one even&nbsp; prejudices and&nbsp; Every and one even all of the following non-compliant reported accounts by Every and one even the listed alleged reporters/creditors, DELETE NOW the below DEFICIECIES of reporting:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>&nbsp;Any unproven negative allegation reported <u>&nbsp;is illegally reporting versus me, please prove otherwise or delete permanently now as REQUIRED by my state and the applicable federal reporting regulations and standard(s)! &nbsp;&nbsp;</u></p>
          +
          +
          +  </div>
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/52.blade.php b/resources/views/lg/pdf/52.blade.php
          new file mode 100644
          index 0000000..5309d0b
          --- /dev/null
          +++ b/resources/views/lg/pdf/52.blade.php
          @@ -0,0 +1,91 @@
          +@extends('layouts.lg-pdf2')
          +@section ('header_content')
          +<p><strong><u>Notice of Intent to Sue </u></strong></p>
          +<p><u>(if you fail to act accordingly in response to this again applied </u><strong>CONSUMER DECLARATION of CHECK of CERTIFIED COMPLIANT and PHYSICALLY VERIFIABLE REPORTED INFORMATION with DEMAND to remove DEFICIENCIES! </strong></p>
          +@endsection
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +
          +</div>
          +
          +<div class="row">
          +  <p>&nbsp;**I DO NOT AUTHORIZE any entity to retain or report ANY INFORMATION, true or not, of which is not EACH OF being physically validated and certified as entirely TRUE,CORRECT,COMPLETE,TIMELY, of my undoubted ownership, of my undeniable responsibility, COMPLIANTLY reported to every aspect of any and all applicable regulations and laws including the mandatory METRO 2 format compliance standards, and IRREFUTABLE in its CERTIFICATE as such. That said, ANY PERSONAL IDENTIFIERS not matching the above noted inserted data MUST be immediately discarded, do so here and now!</p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp;<span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p><span class="span-blue">TO:</span> (as your <strong><u>DATA FURNISHER</u></strong> NAME AND ADDRESS as appears on my credit reports) <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>RE</u></strong>: DEMAND for PERFECT and PROVEN COMPLIANT REPORTING even to the REQUISITES of the METRO 2 format compliance standards i.e. my  Consumer DEMAND to have NO DEROGATORY INFORMATION reporting UNLESS it is, as REQUIRED by LAWS, PROVEN fully TRUE, CORRECT, COMPLETE and CERTIFIED COMPLIANT in reporting of that derogatory and or any aspect of it. I DEMAND IMMEDIATE deletion of any NOT TESTIMONIAL as perfectly and fully physically VERIFIED and CERTIFIED as such.&nbsp;&nbsp;&nbsp;</p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Per standards of reporting and regulations of lawful reporting you MUST REMOVE IMMEDUATELY FROM REPORTING the following deficiency(ies) of current reporting which includes at least:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>&nbsp;If you so elect to ignore my demand then you are REQUIRED BY STATE and FEDERAL REPORTING MANDATES to undeniably and AFFIRMLY ATTEST THAT THIS POTENTIALLY FALSE ALLEGATION IS INDEED MINE OR DELETE IT AND OR EVERY SINGLE ONE EVEN EACH ANY AND OR ALL OF THE PHYSICALLY UNDEMONSTRATED AND CERTIFIED TRUE,ACCURATE,COMPLETE,TIMELY AND COMPLIANT NOTATIONS, DATES, BALANCES, CALCULATIONS, INVOICES, AGREEMENTS, DOCUMENTED IDENTITIES, IDENTIFIERS,SOURCE CODES,PIECES TO CONFIRMATION,AND ALL 426 CHARACTERS OF THE FORMAT FIELDED P6 STATEMENT.IT IS UNLAWFUL AND FURTHER YOU ARE UNAUTHORIZED TO UNETHICALLY AND INFRINGING RETAIN, REPORT, RESALE,RETURN,REUSE,OR OTHERWISE DO ANYTHING OF SUBTERFUGE FOR THIS ACCUSATION OR ANY PORTION THEREOF SO DELETE RIGHT NOW AND RIGHT HERE! Please be aware that I initially requested that you validate this debt per FDCPA &sect;809 and Arizona Administrative Code R20-4-1514 on MONTH DAY, YEAR. You have received multiple written reminders of this obligation for which were sent registered mail and I hold return receipts for. In these letters I also invoked my right to a direct dispute per&nbsp; FCRA &sect;623(a)(8)(D),&nbsp; Responsibilities of furnishers of information to consumer reporting agencies</p>
          +   <p>(8) Ability of Consumer to Dispute Information Directly with Furnisher See also 16 CFR Part 660.4 74 Fed. Reg. 31484 (07/01/09)&nbsp;</p>
          +   <p>(D) Submitting a notice of dispute.&nbsp; A consumer who seeks to dispute the accuracy of information shall provide a dispute notice directly to such person at the address specified by the person for such notices that &ndash; (i) identifies the specific information that is being disputed; (ii) explains the basis for the dispute; and (iii) includes all supporting documentation required by the furnisher to substantiate the basis of the dispute.&nbsp;</p>
          +   <p>&nbsp;AND</p>
          +   <p>&nbsp;<strong><u>16 CFR 660.4&nbsp; ( per the link of </u></strong><a href="https://www.law.cornell.edu/cfr/text/16/660.4"><strong>https://www.law.cornell.edu/cfr/text/16/660.4</strong></a><strong><u> )</u></strong></p>
          +   <ul>
          +   <li>660.4 Direct disputes.</li>
          +   </ul>
          +   <p>(a)General rule. Except as otherwise provided in this section, a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> must conduct a reasonable investigation of a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> if it relates to:</p>
          +   <p>(1) The consumer's liability for a credit account or other debt with the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>, such as <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct disputes</a> relating to whether there is or has been identity theft or fraud against the consumer, whether there is individual or joint liability on an account, or whether the consumer is an authorized user of a credit account;</p>
          +   <p>(2) The terms of a credit account or other debt with the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>, such as <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct disputes</a> relating to the type of account, principal balance, scheduled payment amount on an account, or the amount of the credit limit on an open-end account;</p>
          +   <p>(3) The consumer's performance or other conduct concerning an account or other relationship with the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>, such as <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct disputes</a> relating to the current payment status, high balance, date a payment was made, the amount of a payment made, or the date an account was opened or closed; or &nbsp;</p>
          +   <p>(4) Any other information contained in a consumer report regarding an account or other relationship with the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> that bears on the consumer's creditworthiness, credit standing, credit capacity, character, general reputation, personal characteristics, or mode of living.</p>
          +   <p>(b)Exceptions. The requirements of <a href="https://www.law.cornell.edu/cfr/text/16/660.4#a">paragraph (a)</a> of this section do not apply to a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> if:</p>
          +   <p>(1) The <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> relates to:</p>
          +   <p>(i) The consumer's identifying information (other than a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> relating to a consumer's liability for a credit account or other debt with the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>, as provided in <a href="https://www.law.cornell.edu/cfr/text/16/660.4#a_1">paragraph (a)(1)</a> of this section) such as name(s), date of birth, Social Security number, telephone number(s), or address(es);</p>
          +   <p>(ii) The identity of past or present employers;</p>
          +   <p>(iii) Inquiries or requests for a consumer report;</p>
          +   <p>(iv) Information derived from public records, such as judgments, bankruptcies, liens, and other legal matters (unless provided by a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> with an account or other relationship with the consumer);</p>
          +   <p>(v) Information related to fraud alerts or active duty alerts; or</p>
          +   <p>(vi) Information provided to a consumer reporting agency by another <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>; or</p>
          +   <p>(2) The <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> has a reasonable belief that the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> is submitted by, is prepared on behalf of the consumer by, or is submitted on a form supplied to the consumer by, a credit repair organization, as defined in <a href="https://www.law.cornell.edu/uscode/text/15/1679a#3">15 U.S.C. 1679a(3)</a>, or an entity that would be a credit repair organization, but for <a href="https://www.law.cornell.edu/uscode/text/15/1679a#3_B_i">15 U.S.C. 1679a(3)(B)(i)</a>.</p>
          +   <p>(c)Direct dispute address. A <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> is required to investigate a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> only if a consumer submits a dispute notice to the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> at:</p>
          +   <p>(1) The address of a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> provided by a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> and set forth on a consumer report relating to the consumer;</p>
          +   <p>(2) An address clearly and conspicuously specified by the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> for submitting <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct disputes</a> that is provided to the consumer in writing or electronically (if the consumer has agreed to the electronic delivery of information from the furnisher); or</p>
          +   <p>(3) Any business address of the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> if the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> has not so specified and provided an address for submitting <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct disputes</a> under paragraphs (c)(1) or (2) of this section.</p>
          +   <p>(d)Direct dispute notice contents. A dispute notice must include:</p>
          +   <p>(1) Sufficient information to identify the account or other relationship that is in dispute, such as an account number and the name, address, and telephone number of the consumer, if applicable;</p>
          +   <p>(2) The specific information that the consumer is disputing and an explanation of the basis for the dispute; and</p>
          +   <p>(3) All supporting documentation or other information reasonably required by the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> to substantiate the basis of the dispute. This documentation may include, for example: a copy of the relevant portion of the consumer report that contains the allegedly inaccurate information; a police report; a fraud or identity theft affidavit; a court order; or account statements.</p>
          +   <p>(e)Duty of furnisher after receiving a direct dispute notice. After receiving a dispute notice from a consumer pursuant to paragraphs (c) and (d) of this section, the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> must:</p>
          +   <p>(1) Conduct a reasonable investigation with respect to the disputed information;</p>
          +   <p>(2) Review all relevant information provided by the consumer with the dispute notice;</p>
          +   <p>(3) Complete its investigation of the dispute and report the results of the investigation to the consumer before the expiration of the period under section 611(a)(1) of the <a href="https://www.law.cornell.edu/topn/fair_credit_reporting_act">Fair Credit Reporting Act</a> (<a href="https://www.law.cornell.edu/uscode/text/15/1681i#a_1">15 U.S.C. 1681i(a)(1)</a>) within which a consumer reporting agency would be required to complete its action if the consumer had elected to dispute the information under that section; and</p>
          +   <p>(4) If the investigation finds that the information reported was inaccurate, promptly notify each consumer reporting agency to which the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> provided inaccurate information of that determination and provide to the consumer reporting agency any correction to that information that is necessary to make the information provided by the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> accurate.</p>
          +   <p>(f)Frivolous or irrelevant disputes.</p>
          +   <p>(1) A <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> is not required to investigate a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> if the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> has reasonably determined that the dispute is frivolous or irrelevant. A dispute qualifies as frivolous or irrelevant if:</p>
          +   <p>(i) The consumer did not provide sufficient information to investigate the disputed information as required by <a href="https://www.law.cornell.edu/cfr/text/16/660.4#d">paragraph (d)</a> of this section;</p>
          +   <p>(ii) The <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> is substantially the same as a dispute previously submitted by or on behalf of the consumer, either directly to the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> or through a consumer reporting agency, with respect to which the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> has already satisfied the applicable requirements of the Act or this section; provided, however, that a <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> is not substantially the same as a dispute previously submitted if the dispute includes information listed in <a href="https://www.law.cornell.edu/cfr/text/16/660.4#d">paragraph (d)</a> of this section that had not previously been provided to the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>; or</p>
          +   <p>(iii) The <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> is not required to investigate the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">direct dispute</a> because one or more of the exceptions listed in <a href="https://www.law.cornell.edu/cfr/text/16/660.4#b">paragraph (b)</a> of this section applies.</p>
          +   <p>(2)Notice of determination. Upon making a determination that a dispute is frivolous or irrelevant, the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a> must notify the consumer of the determination not later than five business days after making the determination, by mail or, if authorized by the consumer for that purpose, by any other means available to the <a href="https://www.law.cornell.edu/cfr/text/16/660.4">furnisher</a>.</p>
          +   <p>(3)Contents of notice of determination that a dispute is frivolous or irrelevant. A notice of determination that a dispute is frivolous or irrelevant must include the reasons for such determination and identify any information required to investigate the disputed information, which notice may consist of a standardized form describing the general nature of such information.</p>
          +   <p><strong>Per CRSA enacted, CDIA implemented laws, any and all not yet demonstrated factual and&nbsp; compliantly reported data should and must be deleted if not undeniably evident in its documented physically verifiable validated and Proven CERTIFIABLY fully true,correct,complete,timely,of known ownership and responsibility but also fully Metro 2 compliant. </strong></p>
          +   <p>FINALLY, Do not confuse my credit file with people of similar name, address or SSN. Verify all identifying information. ALL claims, true or not ,must be proven to be currently and fully TRUE, CORRECT, COMPLETE,TIMELY, of my OWNERSHIP ,of my</p>
          +   <p>RESPONSIBILITY, and or compliant to any and all applicable reporting laws and requisite standards, which is currently the FCBA, FCRA, FDCPA,METRO 2 COMPLIANCE STANDARDS and others. Per laws and requisite reporting standards you or any entity are in infringement of my rights should you continue to retain and or report any chicanery based subterfuge even upon my declaration of a composed consumer complaint so eradicate immediately and in entirety any and all allegations which are not demonstrated in clarity to be true, correct, complete, timely, mine, my responsibility ,or else wise fully compliant !</p>
          +  </div>
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/53.blade.php b/resources/views/lg/pdf/53.blade.php
          new file mode 100644
          index 0000000..beed874
          --- /dev/null
          +++ b/resources/views/lg/pdf/53.blade.php
          @@ -0,0 +1,67 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +  <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp;<span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>Re:&nbsp; Demand to remove Inaccurate Credit Information</p>
          +
          +</div>
          +  <div class="row">
          +    <p><strong><em><u><h2>Sirs</h2> </u></em></strong></p>
          +    <p><strong></strong>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),&nbsp;</p>
          +    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEMAND is hereby made that you immediately remove all unverified accounts from my credit report.&nbsp; This is my <strong>SECOND WRITTEN REQUEST</strong>.&nbsp; The accounts listed below that remain on my credit report are in violation of 15 USC Section 1681.</p>
          +    <p>15 U.S.C. &sect; 1681(g) states: &nbsp;</p>
          +    <p><strong>Disclosures to consumers </strong>&nbsp;</p>
          +    <p>(a) <em>Information on file; sources; report recipients</em>. Every consumer reporting agency shall,</p>
          +    <p>&nbsp;upon request, and subject to 610(a)(1) [&sect; 1681h], clearly and accurately disclose to the</p>
          +    <p>&nbsp;consumer:</p>
          +    <p>&nbsp;</p>
          +    <p>(1)&nbsp;&nbsp; All information in the consumer's file at the time of the request&hellip;&rdquo;</p>
          +    <p>&nbsp;</p>
          +    <p>In at least one of my previous letter(s) of consumer complaint to you, I wrote or else wise made obvious my demand such as follows&agrave; &ldquo;I hereby demand that you disclose each and every document that you have in your physical possession as of this date regarding the accounts that you are reporting in my credit report.&nbsp; This demand is being made pursuant to the <strong>Fair Credit Reporting Act 15 USC Section 1681g</strong>.&nbsp; Please send me copies of these documents that you have in your files as of this date that you used to verify the accuracy of the accounts listed herein.&nbsp; <strong>DO NOT</strong> merely state that they have been verified, as this is not in compliance with the law.&rdquo; To date, you have failed to do so and are in violation of the law and are causing me damages. A mere &ldquo;statement&rdquo; that the accounts were verified is insufficient.&nbsp;</p>
          +    <p>WHO IN YOUR COMPANY VERIFIED THE ACCOUNTS? &nbsp;</p>
          +    <p>WHAT IS HIS/HER NAME AND WHAT DOCUMENTS WERE USED TO DO SO? PLEASE PROVIDE THIS PERSONS NAME, BUSINESS ADDRESS AND PHONE NUMBER.</p>
          +    <p>You are required under Section 611(5)(A0 of the Fair Credit Reporting Act to promptly DELETE all information that is not properly verified.&nbsp; If you do not have the documentation in your own PHYSICAL possession, the account is UNVERIFIED.</p>
          +    <p>In the event of your continued refusal to ignore my demands, I intend on pursuing all available remedies under Federal Law to enforce my rights. Failing to do so is damaging my creditworthiness and reputation on a continued basis. I demand the accounts listed herein be properly verified or removed immediately.<strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong>Please  delete  this  erroneous  information  immediately or else wise adequately<strong> PHYSICALLY VERFIFY PROPERLY the absolute factual documented TRUTH, ACCURACY, COMPLETENESS, VALIDITY, METRO 2 FORMAT REPORTING and any and all aspects of mandatorily CERTIFIED COMPLIANCE OF REPORTING otherwise be it mentioned or be it now. Should you be deficient or unwilling to timely demonstrate proof as required I DEMAND that you REMOVE THE FOLLOWING items of reporting:</strong></p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +    <p>***Please provide a copy of my corrected and updated report once you have complied with the law.</p>
          +  </div>
          +
          +    <div class="row">
          +      <p>In GENUINE SINCERITY,</p>
          +    </div>
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/54.blade.php b/resources/views/lg/pdf/54.blade.php
          new file mode 100644
          index 0000000..25b5193
          --- /dev/null
          +++ b/resources/views/lg/pdf/54.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).</p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>I recently submitted a request for investigation of an Acct Number: {accnum1}, which you refused. I submitted enough information for you to carry out a reasonable investigation of my dispute, since you obviously did not investigate this account thoroughly enough the last time, I submitted one. If you had investigated properly, rather than use e-Oscar system, you would have known, that not only I have never been late on this account, but that I am not sure that the account is even mine - through your company claims to have "verified" this. To best resolve this matter, I demand that you become certifiably compliant in your reporting of any injurious delinquency and or derogatoriness versus me, be it true or not as no item questionable can be assumed validated and or certifiably perfect and compliant in its every reporting of its claim(s). Eradicate immediately and permanently the following misinformation as currently reporting in vile dereliction of regulations and standards of adequate compliant reporting, a minimal criterion of it even: </p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>  It is at this time that I will point out that in Cushman vs TransUnion, Stevenson vs TRW (Experian), and Richardson vs Fleet, Equifax, et al, the courts ruled each and every time that the CRA couldn't merely "parrot" information from the creditors and collection agencies...that they have to conduct an independent REASONABLE investigation to ensure the validity of the debt and honestly/integrity of the creditors/CA in question. Sending out a generic form through the e-Oscar system that does not even contain my reasons for the dispute is not reasonable. If you do not initiate an investigation regarding my dispute, as is my right under the Fair Credit Reporting Act, I will have to take legal action to protect my credit rating and myself. As I'm sure you are aware, each violation of the Fair Credit Reporting Act allows damages of $1000 should this matter end up in court. I look forward to an expedient resolution of this matter,</p>
          +
          +
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/55.blade.php b/resources/views/lg/pdf/55.blade.php
          new file mode 100644
          index 0000000..42bc76c
          --- /dev/null
          +++ b/resources/views/lg/pdf/55.blade.php
          @@ -0,0 +1,54 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong>EQUIFAX CORPORATION, ATTN: John J. Kelley, III<br>
          +      Corporate Vice President, Chief Legal Officer<br>
          +      1550 Peachtree St <br>
          +      NE Atlanta, GA 30309<br>
          +      </strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>Re: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY! </p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).&nbsp; As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING&nbsp; of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted&nbsp; validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.&nbsp; I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.&nbsp; By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.&nbsp; Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.</p>
          +   <p>&nbsp;</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><em><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</u></em></strong></p>
          +   <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +   <p><strong>CC:</strong></p>
          +   <p><strong>Anthony Alexis</strong></p>
          +   <p><strong>Assistant Director of Enforcement</strong></p>
          +   <p><strong>Consumer Financial Protection Bureau</strong></p>
          +   <p><strong>1700 G. Street NW</strong></p>
          +   <p><strong>Washington, D.C. 2055</strong></p>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/56.blade.php b/resources/views/lg/pdf/56.blade.php
          new file mode 100644
          index 0000000..a6c4cad
          --- /dev/null
          +++ b/resources/views/lg/pdf/56.blade.php
          @@ -0,0 +1,62 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p><strong>Experian, ATTN: Darryl Gibson</strong></p>
          +    <p><strong>Group General Counsel</strong></p>
          +    <p><strong>955 American Lane</strong></p>
          +    <p><strong>Schaumburg, IL 60173</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>Re: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY! </p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +
          +   <p>This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).&nbsp; As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING&nbsp; of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted&nbsp; validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.&nbsp; I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.&nbsp; By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.&nbsp; Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.</p>
          +   <p>&nbsp;</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><em><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</u></em></strong></p>
          +   <p>Sincerely,</p>
          +
          +   @include('lg.pdf.partial.content')
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><em><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</u></em></strong></p>
          +   <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +   <p><strong>CC:</strong></p>
          +   <p><strong>Anthony Alexis</strong></p>
          +   <p><strong>Assistant Director of Enforcement</strong></p>
          +   <p><strong>Consumer Financial Protection Bureau</strong></p>
          +   <p><strong>1700 G. Street NW</strong></p>
          +   <p><strong>Washington, D.C. 2055</strong></p>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/57.blade.php b/resources/views/lg/pdf/57.blade.php
          new file mode 100644
          index 0000000..5bc3936
          --- /dev/null
          +++ b/resources/views/lg/pdf/57.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red"><strong><em><u>AND</u></em></strong></p>
          +    <p> <strong>TransUnion Corporation, ATTN: Daniel Halvorsen <br>
          +    Sr. Attorney GROUP General Counsel<br>
          +    Office of the General Counsel <br>
          +    555 W. Adams Street <br>
          +    Chicago IL 60661<br>
          +    </strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>RE: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY!  </p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>This letter is a formal notice to Cease and Desist all reporting activities in regards to the above titled account of which to date is still DEFICIENT in its demonstration of a factually documented PHYSICALLY VERIFIABLE TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, OWNERSHIP OF RESPONSIBILITY(ies) , VALIDITY ELSEWISE or with the MANDATED PERFECT AND COMPLETE COMPLIANCE OF REPORTING even to the required METRO 2 FORMAT REPORTING STANDARD(s).&nbsp; As your firm is well aware I have LEGALLY exercised my rights by contesting in my lawful checks and challenges previously and currently the CERTIFIABILITY of COMPLIANT REPORTING&nbsp; of claim(s) still not demonstrated FACTUALLY with adequate verification of truth, accuracy, timeliness or else wise concerned with the undoubted&nbsp; validity of this reported injurious claim and any supposed debt(s) that might be associated with and also unproven to date. COMPLIANT REPORTING of ONLY FACTUALLY VERIFIABLE VALIDATED CLAIMS is the MINIMUM STANDARD OF REPORTING NOT AN OPTIONAL ONE, I DEMAND YOU REPORT FACTUALLY and COMPLIANTLY as required by both MY STATE and all the applicable federal laws and standards of reporting as well.&nbsp; I have in writing and by phone attempted to assure that the alleged COMPLIANCE OF REPORTING is in fact CERTIFIED so to undoubtedly confirm the accuracy of the information reported to or by your firm; and during this process the acts by omission by this furnisher prove substantially that the claim(s) and any related debt (if any) as reported is invalid, even if only due to deficiencies of reporting requisites.&nbsp; By ignoring my legal validation demand the alleged data furnisher is in direct violation of the FDCPA, and you the FCRA being the responsible repository.&nbsp; Since the furnisher has knowingly violated both federal and state law and I can document this violation, I am demanding that you CEASE all reporting activities. Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.</p>
          +   <p>&nbsp;</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><em><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</u></em></strong></p>
          +   <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +   <p><strong>CC:</strong></p>
          +   <p><strong>Anthony Alexis</strong></p>
          +   <p><strong>Assistant Director of Enforcement</strong></p>
          +   <p><strong>Consumer Financial Protection Bureau</strong></p>
          +   <p><strong>1700 G. Street NW</strong></p>
          +   <p><strong>Washington, D.C. 2055</strong></p>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/58.blade.php b/resources/views/lg/pdf/58.blade.php
          new file mode 100644
          index 0000000..4914410
          --- /dev/null
          +++ b/resources/views/lg/pdf/58.blade.php
          @@ -0,0 +1,51 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> *I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red"><strong><em><u>AND the Office of the General Counsel for your firm! </u></em></strong></p>
          +
          +</div>
          +
          +<div class="row">
          +  <p>Re: Notice of NON-COMPLIANCE and DEMAND TO ERADICATE REPORTING ACTIVITIES IMMEDIATELY and PERMANENTLY! </p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Per my state and the applicable federal reporting laws and standards for compliant reporting of physically verified true, accurate, complete, timely, validated claim(s) that are equally properly certified compliantly reported is the MINIMAL CRITERION FOR REPORTING or which is NOT AN OPTION but rather a REQUISITE to report LEGALLY! I here again DEMAND that you are LAWFUL in reporting ONLY CLAIMS that are documented and demonstrated as CERTIFIED COMPLIANT in the reporting of ONLY factually true correct complete timely physically verified valid claim(s) that equally is certified compliant in its processes of reporting and investigations even to the mandated perfect and complete CERTIFIED COMPLIANT METRO 2 FORMAT REPORTING STANDARD(s). Any deficiency of reporting INCLUDING proof of such invalidates REPORT-ABILITY of any injurious allegation(s) contested by an injured consumer and THIS LETTER is my official WRIT NOTIFICATION of CHALLENGE so REMOVE FROM REPORTING any derogatory claim now and permanently please to return to and retain required compliance of reporting status, which you MUST DO! ADDITIONALLY, this letter is your OBVIOUS formal notice to Cease and Desist all collection activities in regards to the above titled Inquiry, specifically because the reporting of claim(s) was a part of the collection action thereby if a part is spoiled the whole is as well!&nbsp;&nbsp; As your firm is well aware I have LEGALLY exercised my rights by disputing the validity of this application/ inquiry that I have NO knowledge of its proven document of adequately acquired lawful permissible purpose and I can not assume it is legitimate else wise. I have in writing and by phone demanded that you provide documented validation to me of claim(s) and the proof of certified compliant reporting such as to the mandated Metro 2 format standard(s), instead you have ignored my demands.&nbsp; By ignoring my legal validation request of claim&rsquo;s verifiability of&nbsp; certified COMPLIANT METRO 2 FORMAT REPORTING and truth accuracy and completeness of validity else wise your firm is in direct violation of the FDCPA and FCRA.&nbsp; Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.</p>
          +   <p>&nbsp;</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES </u></strong></p>
          +   <p>&nbsp;</p>
          +   <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +   <p><strong>CC:</strong></p>
          +   <p><strong>Anthony Alexis</strong></p>
          +   <p><strong>Assistant Director of Enforcement</strong></p>
          +   <p><strong>Consumer Financial Protection Bureau</strong></p>
          +   <p><strong>1700 G. Street NW</strong></p>
          +   <p><strong>Washington, D.C. 2055</strong></p>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/59.blade.php b/resources/views/lg/pdf/59.blade.php
          new file mode 100644
          index 0000000..d3b8eb1
          --- /dev/null
          +++ b/resources/views/lg/pdf/59.blade.php
          @@ -0,0 +1,50 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <p class="clr-red">(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +  <p class="clr-red">ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +  <p class="clr-red">AUTHORITY to retain much less report without infringing my consumer rights</p>
          +  <p class="clr-red">(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +  <p class="clr-red">ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +  <p class="clr-red">(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>Re:  Demand to remove Inaccurate Credit Information</p>
          +
          +</div>
          +
          +
          +  <div class="row">
          +   <p><strong><em><u><h2>Sirs</h2> </u></em></strong>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),&nbsp;</p>
          +   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is my <strong>THIRD and FINAL WRITTEN REQUEST</strong> that you immediately remove all unverified accounts from my credit report<strong>.</strong>&nbsp; The accounts listed below that remain on my credit report are in violation of 15 USC Section 1681.&nbsp; Failure to obey the law will result in judicial intervention, subjecting your company to damages under the FCRA, including but not limited to actual damages, consequential damages, attorney&rsquo;s fees and interest. <strong>UNVERIFIED ACCOUNTS STILL REMAIN ON MY REPORT, meaning that factually NOT properly TRUE CORRECT COMPLETE VALIDATED and CERTIFIABLY COMPLIANT REPORTING claims are listed upon my credit profile in violation of REQUISITES of regulatory reporting laws and standards of reporting, particularly in relationship to considerations of the FCRA and FDCPA laws and the mandatory perfect and complete METRO 2 formatted reporting standard(s) for compliance!!!</strong>&nbsp; This is a violation of Federal Law.&nbsp; Case law is clear, you may NOT &ldquo;PARROT&rdquo; information received from an account holder via phone call, computer email or log, E-Oscar, etc., to verify any account you are reporting on.&nbsp; Nor is it my responsibility to verify the account! In clarity, <strong>YOUR COMPANY MUST</strong> personally have <strong>PHYSICAL</strong> possession of the documents, <strong>IN YOUR OWN FILE</strong>, to verify the truth, the correctness, the completeness, the validity of, and the certified compliance of reporting of the accused derogatory item(s) of reporting, be it true or not.&nbsp; Your failure to provide me same as requested, in violation of the law, is clear evidence that the account is truly unverified, therefore NOT COMPLIANTLY REPORTED in vile infraction of law and my consumer right(s).&nbsp; Your failure, therefore, to remove the unverified accounts is a willful violation of the Fair Credit Reporting Act Section 616. You are required under Section 611(5) (A) of the Fair Credit Reporting Act to promptly DELETE all information that is not properly verified.&nbsp; If you do not have the documentation in your own PHYSICAL possession, the item accused is factually UNVERIFIED, and in such as well not factually proven true, correct, valid and or certified compliantly reported. Make no mistake, <em>I intend on pursuing all available remedies under Federal Law to enforce my rights. </em>Failing to remove any and all not compliant and or any and all unverified accounts is damaging my creditworthiness and reputation on a continued basis, such that I will deem purposeful injurious and in need to seek juris rectification. <strong>Since the accounts have NOT been shown by you to be properly verified, I demand the accounts listed herein be removed immediately.&nbsp; </strong><strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong>Please  delete  this  erroneous  information  immediately or else wise adequately<strong> PHYSICALLY VERFIFY PROPERLY the absolute factual documented TRUTH, ACCURACY, COMPLETENESS, VALIDITY, METRO 2 FORMAT REPORTING and any and all aspects of mandatorily CERTIFIED COMPLIANCE OF REPORTING otherwise be it mentioned or be it now. Should you be deficient or unwilling to timely demonstrate proof as required I DEMAND that you REMOVE THE FOLLOWING items of reporting:</strong></p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>***Please provide a copy of my corrected and updated report once you have complied with the law.</p>
          +   <p><strong><em><u>In GENUINE SINCERITY</u></em></strong>,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/6.blade.php b/resources/views/lg/pdf/6.blade.php
          new file mode 100644
          index 0000000..17850b8
          --- /dev/null
          +++ b/resources/views/lg/pdf/6.blade.php
          @@ -0,0 +1,32 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise!</p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting! Your reporting , is at a minimum , questionable and not factually substantiated and as such does not meet the minimum criterion of lawful reporting nor assumption of true and validity otherwise.  Please be advised that I here now demand that you check for undoubtable proof of and I challenge  the validity of the alleged debt in its entirety. Be further advised that I am requesting the name and address of the original creditor, along with an agreement with my original signature binding me to the alleged debt, if so exists. You are attempting to collect an alleged debt and money that I do not owe unlawfully.  As per Federal Statute the FDCPA, I'm asking that you cease and desist all collection activity, including credit reporting. I am also requesting the prompt deletions of any prior credit reporting to credit reporting agencies. This letter may be provided to the Consumer Financial Protection Bureau (“CFPB”) and I am fully aware that they are authorized to investigate this matter. If you fail to comply with this letter, this matter may be turned over to an attorney. The following accounts below were reported as a collection, but I don't recall having any business transactions or dealings with these companies. I am asking that you have the creditors provide evidence the accounts belong to me and should be on my credit report, In addition, to show that my rights have not been abrogated.
          +I'm asking each to verify that the creditors have a signed contract or paperwork from me or related to me in any fashion. Unless this paper is produced or the account is unverifiable by each creditor, I required that the accounts in question are updated and deleted to reflect the proper reporting standard.</p>
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>According to 15 USC 1666 you are to cease collection of the disputed amount until verification and validation have been done. What has happened, instead, is an increase of phone calls to this residence, sometimes up to four calls a day. I consider this to be harassment. This is your final notice that you are to limit all future communication with me only in writing. If I receive any phone calls from your company, I will consider them to constitute HARASSMENT. Please be advised that unwanted phone calls are a Class 1 Misdemeanor in this state and I will file a complaint against the caller with the Attorney General’s office. I maintain a telephone log of each phone call and in some cases, make an audio recording when necessary. I permanently record all messages left on voice mail. I have evidence of over 20 calls since you received my NOTICE OF CHALLENGE contesting the claim(s) , as reported!
          +Be advised that you have the right to remain silent. If you ignore this NOTICE OF HARASSMENT and contact me by telephone, you and your employees agree to allow me to make an audio recording of our conversation and you and your employees agree to allow the recording and any other information obtained to be used against you and your employees in a court of law. I will accept only your written communication. Your failure to honor this request may constitute a violation of 15 USC § 1666 and may result in legal action against you. Govern yourself accordingly.
          +You should also be aware that making unsubstantiated demands for payment over the phone may be a form of wire fraud. Further, sending unsubstantiated demands for payment through the United States Mail System might constitute mail fraud under federal and state laws. You may wish to consult with a competent legal advisor before your next communication with me.<br>Not happy consumer victim of mis-reporting derogatoriness,</p>
          +
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/60.blade.php b/resources/views/lg/pdf/60.blade.php
          new file mode 100644
          index 0000000..cf680a9
          --- /dev/null
          +++ b/resources/views/lg/pdf/60.blade.php
          @@ -0,0 +1,43 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +
          +</div>
          +
          +<div class="row">
          +  <p>Re: Unproven, Invalid, Not Compliantly reported or else wise Unauthorized Credit claims of delinquency and or derogatoriness’s despite significant deficiencies of claim’s truth, accuracy, completeness, timeliness, ownership, verifiability, validity and certifiable compliant reporting else wiseeach deficiency requires immediate and permanent removal of claim’s reporting or else is a infraction of reporting regulations and standards of compliant reporting(s).  </p>
          +
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Not an entity today exists that can certifiably ignore its mandated obligations to report compliantly and to 100% truth, correctness, completeness, timeliness, and documented Irrefutable proof of ownership and responsibility of any allegations of adverse aspects to an account or of a derogatory account in and of itself. <br /> <br /> According to Regulation V 1022.42: Reasonable policies and procedures concerning the accuracy and integrity of furnished information. Furnishers must have strong policies in place to have the highest possible accuracy but it has not been done in this case. <br /> In addition, a per the metro 2 data formatted standards of legal reporting of consumer accounts and profile history and per the Fair Credit reporting act, namely section 609 a1A, it is in CLARITY that you are MANDATED to retain COMPLIANCE at all times, particularly upon notification by an infringed consumer that you are deficient of your requisites to report adequately and a challenge (or dispute) is lodged versus any data information previously NOT proven PHYSICALLY to be affirmed valid or is UNABLE to be demonstrated as true, accurate, complete, timely, and otherwise fully compliant to laws upon a documented declaration of concern by the consumer. I demand, as is MY RIGHTS to do so and as is your REQUIREMENT to satisfy, for you to ANNUL by deletion or removal any and all allegations DEFICIENT of PHYSICAL EVIDENCE OF COMPLIANCE to reporting laws much less verified and valid. If you are unwilling or UNABLE to do so in a federally defined TIMELY manner you MUST rectify your infractions by RETURNING TO or retaining federal reporting COMPLIANCE TODAY, even RIGHT NOW, .As such, I DEMAND that you CERTIFICATE the verification and validity of the following claims or DELETE NOW, so Eradicate immediately and permanently the following misinformation as currently reporting in vile dereliction of regulations and standards of adequate compliant reporting, a minimal criterion of it even:</p>
          +
          +   @include('lg.pdf.partial.content')
          +   @include('lg.pdf.partial.content')
          +   <p>&nbsp;&nbsp; The above noted Alleged Data Provider(s), Alleged Account number(s), Alleged Adverse or Derogatory claim(s) above listed is undeniable and significant in its current and obvious deficiently reported status and undoubtedly requires eradication so again I demand that you delete now any deficient claim(s), mentioned or not!&nbsp;&nbsp; &nbsp;It is in clarity that , as reported at least, that the above noted allegation(s) IS(are) DEFICIENT of CERTIFICATED PHYSICAL PROOF of be adequately and fully COMPLIANT to all mandates and laws as related to my state, the FCRA and METRO 2 data formatted reporting standards. As such the truth being , you MUST annul Today, even NOW as you are NOT authorized to retain much less report any information or aspects of adverse data that is NOT TESTIMONIAL in its 100% TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, of proven documented OWNERSHIP of mine, or of proven documented RESPONSIBILITY of mine. To legally and compliantly report, per my state and the applicable federal laws and standards of legal compliant reporting mandate that you MUST &nbsp;DEMONSTRATE confirmation of all data, dates, balances, calculations, identities, audits to include the requisite 426-character P6 statements and all of its trailing segments, the minimal five portioned personal identifiers, all 386 pieces to confirmation to collect ,and every aspect of the alpha-/ numeric-/ and or alphanumeric source codes. RETURN or retain OBLIGATORY compliance with your federally defined timely deletion of any and all adverse notations that are deficient of physical evidence of proper reporting. DELETE ,immediately here and now, as it infringes on my consumer and potentially my civil rights as it potentially can lead subterfuge due to misreporting or else wise be injurious to me. <br /> </p>
          +
          +   <p>Genuinely concerned,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/61.blade.php b/resources/views/lg/pdf/61.blade.php
          new file mode 100644
          index 0000000..38f0941
          --- /dev/null
          +++ b/resources/views/lg/pdf/61.blade.php
          @@ -0,0 +1,60 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>
          +  <p><strong>TO: EXPERIAN NORTH AMERICA , OCC<br /> OFFICE of the Corporate Counsel <br /> Attention: Jason Engel and or the current or acting Corporate Counsel<br /> 475 Anton Blvd. <br /> Costa Mesa, California 92626 </strong></p>
          +  <p><strong>AND</strong></p>
          +  <p><strong>Experian&nbsp; POB 9701 Allen TX 75013</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p> As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:
          +
          +    @include('lg.pdf.partial.content')
          +
          +   <p>&nbsp;&nbsp;&nbsp; Most recently I contacted your firm with a formal contesting checking and ,if applicable , challenging derogatory student loan accusations in regard to the status of a subsidized student loan as noted in this letter of questionable character ,validity, verifiability, and compliance. OBVIOUSLY, any and all claims of derogatory nature even valid debts MUST be collected and reported in a factually appropriate manner as exactly outlines in my state&rsquo;s laws and any and all applicable federal regulations and applicable standards of practice, such as but not limited to FCRA, FCBA, FDCPA, FACTA , and the mandatorily perfect correct complete and certified Metro2 format reporting standard(s). VALIDITY of claim(s) and CERTIFIED COMPLIANCE of reporting are MANDATORY CRITERIA , not OPTIONAL and I here now compel you to PROVE FACTUALLY your claim(s) and every aspect of claim(s) and or any you have accepted reported to you, true or not. <br /> To date, your firm has failed to provide even a single one tangible shred of evidence from the accusing Student Loan Servicer, which is REQUIRED OF YOU to even remotely assume capacity to retain rights of reporting minus liabilities for any insufficiencies of the reporting. This is because you are being NOTIFIED and have also previously been notified of SUSPICIOUS , QUESTIONABLE, UNVERIFIABLE, INVALID, and or NOT certified COMPLIANTLY reported misinformation thereby unjustly causing or continuing unlawful injuries to me. As advised in my research and communications even with the CFPB (Consumer Financial Protection Bureau) ,I have made multiple written requests for you to CHECK and deliver back to me information to substantiate and validate the claim&rsquo;s truth, accuracy, completeness and certified compliant reporting even to the mandatorily perfect correct and complete Metro 2 format reporting standards. A deficiency or any one being lawful grounds to eradicate claims until proven undoubted and demonstrated in a testimonial form, as described by law. PROVE or REMOVE! Now, after several weeks I have come to learn that the INFORMATION REQUIRED TO VALIDATE this alleged derogatory LOAN INFORMATION HAD NEVER EVEN BEEN RETAINED, as REQUIRED BY LAW, and further THAT IN NO WAY HAVE OR COULD HAVE THEY CONFIRMED ANY INFORMATION AT THIS TIME nor any previous this moment. OBVIOUSLY, given the circumstances of questionable claims and reporting practices, indeed it is in YOUR BEST INTEREST to suspend reporting of this challenged derogatory information and to eradicate it IMMEDIATELY and retain this suspension until you have the minimal requisites to document proof of verifiable validity of claims and certified compliant metro 2 reporting. Let it be in CLARITY that if you elect to NOT act accordingly or if you again elect to forward me a stall or &ldquo;canned&rdquo; letter I will be forcibly compelled to commence the very unpleasantness of a NOTICE OF ERROR (section 1024.35) under the CFPB regulation &ldquo;X&rdquo; that confirms my PRIVATE RIGHT OF ACTION DIRECTLY AGAINST YOU, EXPERIAN NORH AMERICA, for FAILING to RESPOND ADEQUATELY and your unlawful non-compliant misreporting of the questionable contested derogatory mis-information as I have indicated in this and previous notices! Per federal laws, you have but FIVE(5) CALENDAR DAYS to COMPLY and also to provide to me a WRITTEN NOTICE of SUSPENSION or DELETION of this item ,at least pending the resolution of the investigation action REQUIRED and or you WILL FACE civil LITIGATION from me. Note also I have forwarded the same to Aaron R. Jordan, the currently acting assistant inspector general for investigations at the United States Department of Education (USDOE) at 400 Maryland Avenue, SW in Washington DC 20202-1500. The SERIOUSNESS of my complaint should be noted and OBVIOUS,ACT ACCORDINGLY to best resolve this in full accordance of any and all standards and law(s) ,mentioned here or not!</p>
          +   <p>&nbsp;<br /> In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cc:</p>
          +  <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/62.blade.php b/resources/views/lg/pdf/62.blade.php
          new file mode 100644
          index 0000000..fbb1d31
          --- /dev/null
          +++ b/resources/views/lg/pdf/62.blade.php
          @@ -0,0 +1,61 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>
          +  <p><strong>TO: EQUIFAX CORPORATION</strong><strong><br /> </strong><strong>Attention: Kim Oliver or current or acting SVP, CCO</strong><strong><br /> </strong><strong>SVP, CHIEF COMPLIANCE OFFICIER</strong><strong><br /> </strong><strong>1550 Peachtree Street</strong><strong><br /> </strong><strong>NE Atlanta, Georgia 30309</strong></p>
          +<p><strong>AND</strong></p>
          +<p><strong>EQUIFAX POB 740256 Atlanta, GA 30374-0256</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +@include('lg.pdf.partial.content')
          +
          +
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Most recently I contacted your firm with a formal contesting checking and ,if applicable , challenging derogatory student loan accusations in regard to the status of a subsidized student loan as noted in this letter of questionable character ,validity, verifiability, and compliance. OBVIOUSLY, any and all claims of derogatory nature even valid debts MUST be collected and reported in a factually appropriate manner as exactly outlines in my state&rsquo;s laws and any and all applicable federal regulations and applicable standards of practice, such as but not limited to FCRA, FCBA, FDCPA, FACTA , and the mandatorily perfect correct complete and certified Metro2 format reporting standard(s). VALIDITY of claim(s) and CERTIFIED COMPLIANCE of reporting are MANDATORY CRITERIA , not OPTIONAL and I here now compel you to PROVE FACTUALLY your claim(s) and every aspect of claim(s) and or any you have accepted reported to you, true or not. <br /> To date, your firm has failed to provide even a single one tangible shred of evidence from the accusing Student Loan Servicer, which is REQUIRED OF YOU to even remotely assume capacity to retain rights of reporting minus liabilities for any insufficiencies of the reporting. This is because you are being NOTIFIED and have also previously been notified of SUSPICIOUS , QUESTIONABLE, UNVERIFIABLE, INVALID, and or NOT certified COMPLIANTLY reported misinformation thereby unjustly causing or continuing unlawful injuries to me. As advised in my research and communications even with the CFPB (Consumer Financial Protection Bureau) ,I have made multiple written requests for you to CHECK and deliver back to me information to substantiate and validate the claim&rsquo;s truth, accuracy, completeness and certified compliant reporting even to the mandatorily perfect correct and complete Metro 2 format reporting standards. A deficiency or any one being lawful grounds to eradicate claims until proven undoubted and demonstrated in a testimonial form, as described by law. PROVE or REMOVE! Now, after several weeks I have come to learn that the INFORMATION REQUIRED TO VALIDATE this alleged derogatory LOAN INFORMATION HAD NEVER EVEN BEEN RETAINED, as REQUIRED BY LAW, and further THAT IN NO WAY HAVE OR COULD HAVE THEY CONFIRMED ANY INFORMATION AT THIS TIME nor any previous this moment. OBVIOUSLY, given the circumstances of questionable claims and reporting practices, indeed it is in YOUR BEST INTEREST to suspend reporting of this challenged derogatory information and to eradicate it IMMEDIATELY and retain this suspension until you have the minimal requisites to document proof of verifiable validity of claims and certified compliant metro 2 reporting. Let it be in CLARITY that if you elect to NOT act accordingly or if you again elect to forward me a stall or &ldquo;canned&rdquo; letter I will be forcibly compelled to commence the very unpleasantness of a NOTICE OF ERROR (section 1024.35) under the CFPB regulation &ldquo;X&rdquo; that confirms my PRIVATE RIGHT OF ACTION DIRECTLY AGAINST YOU, EXPERIAN NORH AMERICA, for FAILING to RESPOND ADEQUATELY and your unlawful non-compliant misreporting of the questionable contested derogatory mis-information as I have indicated in this and previous notices! Per federal laws, you have but FIVE(5) CALENDAR DAYS to COMPLY and also to provide to me a WRITTEN NOTICE of SUSPENSION or DELETION of this item ,at least pending the resolution of the investigation action REQUIRED and or you WILL FACE civil LITIGATION from me. Note also I have forwarded the same to Aaron R. Jordan, the currently acting assistant inspector general for investigations at the United States Department of Education (USDOE) at 400 Maryland Avenue, SW in Washington DC 20202-1500. The SERIOUSNESS of my complaint should be noted and OBVIOUS,ACT ACCORDINGLY to best resolve this in full accordance of any and all standards and law(s) ,mentioned here or not!</p>
          +<p>&nbsp;<br /> In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cc:</p>
          +  <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/63.blade.php b/resources/views/lg/pdf/63.blade.php
          new file mode 100644
          index 0000000..9122ebc
          --- /dev/null
          +++ b/resources/views/lg/pdf/63.blade.php
          @@ -0,0 +1,70 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +{{--<div class="row">--}}
          +{{--  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>--}}
          +{{--  <p><strong>TO: Trans Union Corporation , EVP/S/GC</strong><br><strong>Attention: John W Blenke or current/acting Executive VP, Secretary, and or General Counsel </strong><br /><strong>555 West Adams Street</strong><br><strong>Chicago, Illinois 60661</strong> </p>--}}
          +{{--<p><strong>AND</strong></p>--}}
          +{{--<p><strong>Trans Union Po Box 2000 Chester, Pennsylvania 19016-2000</strong></p>--}}
          +{{--</div>--}}
          +
          +<div class="row">
          +    <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul"><?php  echo  $destination; ?></span></p>
          +    <p><strong>TO:</strong><br>
          +        <strong>
          +            <?php echo isset($additional_destionations1[$destination]) ? $additional_destionations1[$destination]:""; ?>
          +        </strong> </p>
          +    <p><strong>AND</strong></p>
          +    <p><strong><?php echo isset($additional_destionations2[$destination]) ? $additional_destionations2[$destination]:""; ?></strong></p>
          +
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +@include('lg.pdf.partial.content')
          +
          +
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Most recently I contacted your firm with a formal contesting checking and ,if applicable , challenging derogatory student loan accusations in regard to the status of a subsidized student loan as noted in this letter of questionable character ,validity, verifiability, and compliance. OBVIOUSLY, any and all claims of derogatory nature even valid debts MUST be collected and reported in a factually appropriate manner as exactly outlines in my state&rsquo;s laws and any and all applicable federal regulations and applicable standards of practice, such as but not limited to FCRA, FCBA, FDCPA, FACTA , and the mandatorily perfect correct complete and certified Metro2 format reporting standard(s). VALIDITY of claim(s) and CERTIFIED COMPLIANCE of reporting are MANDATORY CRITERIA , not OPTIONAL and I here now compel you to PROVE FACTUALLY your claim(s) and every aspect of claim(s) and or any you have accepted reported to you, true or not. <br /> To date, your firm has failed to provide even a single one tangible shred of evidence from the accusing Student Loan Servicer, which is REQUIRED OF YOU to even remotely assume capacity to retain rights of reporting minus liabilities for any insufficiencies of the reporting. This is because you are being NOTIFIED and have also previously been notified of SUSPICIOUS , QUESTIONABLE, UNVERIFIABLE, INVALID, and or NOT certified COMPLIANTLY reported misinformation thereby unjustly causing or continuing unlawful injuries to me. As advised in my research and communications even with the CFPB (Consumer Financial Protection Bureau) ,I have made multiple written requests for you to CHECK and deliver back to me information to substantiate and validate the claim&rsquo;s truth, accuracy, completeness and certified compliant reporting even to the mandatorily perfect correct and complete Metro 2 format reporting standards. A deficiency or any one being lawful grounds to eradicate claims until proven undoubted and demonstrated in a testimonial form, as described by law. PROVE or REMOVE! Now, after several weeks I have come to learn that the INFORMATION REQUIRED TO VALIDATE this alleged derogatory LOAN INFORMATION HAD NEVER EVEN BEEN RETAINED, as REQUIRED BY LAW, and further THAT IN NO WAY HAVE OR COULD HAVE THEY CONFIRMED ANY INFORMATION AT THIS TIME nor any previous this moment. OBVIOUSLY, given the circumstances of questionable claims and reporting practices, indeed it is in YOUR BEST INTEREST to suspend reporting of this challenged derogatory information and to eradicate it IMMEDIATELY and retain this suspension until you have the minimal requisites to document proof of verifiable validity of claims and certified compliant metro 2 reporting. Let it be in CLARITY that if you elect to NOT act accordingly or if you again elect to forward me a stall or &ldquo;canned&rdquo; letter I will be forcibly compelled to commence the very unpleasantness of a NOTICE OF ERROR (section 1024.35) under the CFPB regulation &ldquo;X&rdquo; that confirms my PRIVATE RIGHT OF ACTION DIRECTLY AGAINST YOU, EXPERIAN NORH AMERICA, for FAILING to RESPOND ADEQUATELY and your unlawful non-compliant misreporting of the questionable contested derogatory mis-information as I have indicated in this and previous notices! Per federal laws, you have but FIVE(5) CALENDAR DAYS to COMPLY and also to provide to me a WRITTEN NOTICE of SUSPENSION or DELETION of this item ,at least pending the resolution of the investigation action REQUIRED and or you WILL FACE civil LITIGATION from me. Note also I have forwarded the same to Aaron R. Jordan, the currently acting assistant inspector general for investigations at the United States Department of Education (USDOE) at 400 Maryland Avenue, SW in Washington DC 20202-1500. The SERIOUSNESS of my complaint should be noted and OBVIOUS,ACT ACCORDINGLY to best resolve this in full accordance of any and all standards and law(s) ,mentioned here or not!</p>
          +<p>&nbsp;<br /> In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cc:</p>
          +  <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +  <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/64.blade.php b/resources/views/lg/pdf/64.blade.php
          new file mode 100644
          index 0000000..5716457
          --- /dev/null
          +++ b/resources/views/lg/pdf/64.blade.php
          @@ -0,0 +1,53 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance!  </p>
          +
          +</div>
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">TO &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red">AND</p>
          +  <p><strong><em>Kent Markus, Director of Enforcement</em></strong></p>
          +  <p><strong><em>Consumer Financial Protection Bureau</em></strong></p>
          +  <p><strong><em>1700 G Street, </em></strong></p>
          +  <p><strong><em>NW Washington, DC 20552</em></strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>RE: Problem with Credit Inquiry (ies) reported deficient of proof of validity and deficient of certified compliance of reporting, particularly as related to the mandatory METRO 2 format reporting standard(s).</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Mr. Markus (or whom it is that is responsible for your entity&rsquo;s enactment and enforcement of COMPLIANT reporting standards and requisite mandates) , I have been dealing with a series of credit reporting errors for several months and have reached wits end on how to proceed. I found several credit inquiries on my credit report that I have NO knowledge of. I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and disputed the validity of these Inquiries. I ALSO contacted the creditors directly.&nbsp; Several representatives informed me that the name as listed did not match my name spelling; others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry.&nbsp; I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine.&nbsp; I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED but, they could not help me ANY further!</p>
          +   <p>&nbsp;</p>
          +   <p>&nbsp;I submitted IN WRITING a Validation request under the FCRA title 611, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information for inquiries, even if it could be Identity Theft.</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES . </u></strong></p>
          +   <p>I submitted IN WRITING a Validation request under the <strong><u>FCRA title 611</u></strong>, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information.</p>
          +   <p>&nbsp;</p>
          +   <p>I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem&hellip;can you help? Better yet, WILL YOU?</p>
          +   <p>&nbsp;</p>
          +   <p>PLEASE!!</p>
          +   <p>&nbsp;</p>
          +   <p>Sincerely,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/65.blade.php b/resources/views/lg/pdf/65.blade.php
          new file mode 100644
          index 0000000..db30646
          --- /dev/null
          +++ b/resources/views/lg/pdf/65.blade.php
          @@ -0,0 +1,51 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp;<span class="span-ul">{{$destination}}</span> </p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +
          +  <div class="row">
          +   <p><strong><em><u><h2>Sirs </h2></u></em></strong><br>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),&nbsp;</p>
          +   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Please take time and effort to find a copy of my three most recent previous written demands forwarded to you to have unverified accounts removed from my credit report.&nbsp; To date, you have willfully failed to provide me with any information that you are required to under Federal Law.&nbsp; A mere statement that these items are &ldquo;reported correctly&rdquo; and therefore &ldquo;verified&rdquo; is insufficient.&nbsp; You have not identified who verified the accuracy of the information or how they were verified. Only an individual in your company with firsthand knowledge must be able to, under penalties of perjury in a Court of law testify that they themselves looked at the physical documents necessary to verify the account.&nbsp; When sued, you will also have to explain to the Judge why you failed to provide the documentation as requested by me on several occasions and in full knowledge that it was a violation of law, all of which subjects you to punitive damages as well. The accounts listed below that remain on my credit report are in violation of 15 USC Section 1681.&nbsp; <strong>A copy of this letter and all previous letters have been sent to the Consumer Financial Protective Bureau and will be submitted as evidence in a trial should you fail to comply with this Final Offer.&nbsp; Since the accounts have NOT been shown by you to be properly verified, I demand the accounts listed herein be removed immediately.&nbsp; </strong>Make no mistake, <em>I intend on pursuing all available remedies under Federal Law to enforce my rights. </em>Failing to remove any and all not compliant and or any and all unverified accounts is damaging my creditworthiness and reputation on a continued basis, such that I will deem purposeful injurious and in need to seek juris rectification. <strong>Since the accounts have NOT been shown by you to be properly verified, I demand the accounts listed herein be removed immediately.&nbsp; </strong><strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong>Please  delete  this  erroneous  information  immediately or else wise adequately<strong> PHYSICALLY VERFIFY PROPERLY the absolute factual documented TRUTH, ACCURACY, COMPLETENESS, VALIDITY, METRO 2 FORMAT REPORTING and any and all aspects of mandatorily CERTIFIED COMPLIANCE OF REPORTING otherwise be it mentioned or be it now. Should you be deficient or unwilling to timely demonstrate proof as required I DEMAND that you REMOVE THE FOLLOWING items of reporting:</strong></p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>***Please provide a copy of my corrected and updated report once you have complied with the law.</p>
          +   <p><strong><em><u>In GENUINE SINCERITY</u></em></strong>,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/66.blade.php b/resources/views/lg/pdf/66.blade.php
          new file mode 100644
          index 0000000..bd6dbda
          --- /dev/null
          +++ b/resources/views/lg/pdf/66.blade.php
          @@ -0,0 +1,64 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>
          +  <p><strong>TO: EXPERIAN CORPORATION, VP/AGC OCC <br /> Attention: David Strauss or current/acting Vice president and Associate General Counsel<br /> Office of the Corporate Counsel<br /> 475 Anton BLVD. <br /> Costa Mesa, California 92626 </strong></p>
          +  <p><strong>AND</strong></p>
          +  <p><strong>Experian PO Box 9701 Allen, Texas 75013</strong><strong>&nbsp; </strong></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! My state and the applicable federal reporting laws and standards of reporting mandate that all claims be each of being fully verified as true as reported, correct as reported, complete as reported, of a known ownership of responsibility as reported, and validated else wise EXACTLY AS REPORTED. This REQUISITE of reporting includes the mandatorily PERFECT and COMPLETE CERTIFIED METRO 2 FORMAT REPORTING of any verified valid claim. ANY DEFICIENCY of reporting is not within the criteria for lawful reporting thereby requiring immediate and permanent removal from reporting. INCONSISTENT and or questionable aspects of reporting indicates inability to assume claims are each of factual and certifiably compliant as reported in reality nor process. Unproven claims must be removed. As indicated, this claim as inconsistent and or questionably reported aspects that are problematic such as the notated ailment(s) of reporting which is to date unproven and or not certifiably compliant in its mandatorily perfect complete accurate verified valid reporting(s). The mentioned delinquent and or derogatory-conditioned item(s) of allegation fail to meet even MINIMUM requisites of adequate reporting so delete now! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not! Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported! AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +<p>As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted misinformation as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions. <br /> Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action <strong><u>named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES. </u></strong></p>
          +<p>Inconsistencies of reporting lends to potentially questionable reporting which fails to adequately meet the requisites of lawful factual reporting per federal regulations of reporting. Due in part to the obvious multiple inconsistencies of reporting and the fact that the current reporting has not yet been demonstrated to possess the mandatory physically verified document proof of full truth of claim, accuracy of claim, completeness of claim, or validity of claim else wise much less any demonstration of the mandatory certified compliance of reporting such as the required perfect and complete correct certification of the adequate Metro 2 formatted reporting standards nor adequate evidence that every aspects of regulatory reporting FCRA AND OR FDCPA laws applicable are factual and undoubtedly as reporting currently, I call to question this reporting as reported. Given fact that COMPLIANCE OF REPORTING LAWS AND STANDARDS IS A MINIMAL CRITERION OF REPORTING, NOT AN OPTIONAL ONE I HERE NOW DECLARE MY CHALLENGE CONTESTING THE LEGALITY OF CURRENT DEROGATORINESS AND OR DELINQUENCINESSES AS ACCUSED DEFICIENT OF PROOF, BE IT TRUE OR BE IT NOT. IT IS NOT RESPONSIBILITY OF INJURED CONSUMER TO PRESENT PROOF VALIDATING CLAIMS NOR CERTIFYING COMPLIANCE OF REPORTING CLAIMS, AS THAT RESPONSIBILITY AND BURDEN RESTS SOLELY WITH THE REPORTING DATA FURNISHER AND THE ACCEPTING REPOSITORIES OF THE CLAIMS.</p>
          +<p>DELETE NOW IN FULL THIS UNPROVEN AND OBVIOUSLY NOT CURRENTLY COMPLIANT REPORTING,SO TO RETURN TO MANDATORY CIRCUMSTANCE OF ADEQUATE COMPLIANT REPORTING OF ONLY FULLY VETTED TRUE CORRECT COMPLETE VALID CLAIMS. DO SO RIGHT NOW!</p>
          +<p>In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +     <div class="row">
          +       <p>&nbsp;&nbsp; Cc:</p>
          +       <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +     </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/67.blade.php b/resources/views/lg/pdf/67.blade.php
          new file mode 100644
          index 0000000..0a0522e
          --- /dev/null
          +++ b/resources/views/lg/pdf/67.blade.php
          @@ -0,0 +1,64 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>
          +  <p><strong>TO: EQUIFAX CORPORATION</strong><strong><br /> </strong><strong>Attention: Kim Oliver or current or acting SVP, CCO</strong><strong><br /> </strong><strong>SVP, CHIEF COMPLIANCE OFFICIER</strong><strong><br /> </strong><strong>1550 Peachtree Street</strong><strong><br /> </strong><strong>NE Atlanta, Georgia 30309</strong></p>
          +  <p><strong>AND</strong></p>
          +  <p><strong>EQUIFAX POB 740256 Atlanta GA 30374-0256</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! My state and the applicable federal reporting laws and standards of reporting mandate that all claims be each of being fully verified as true as reported, correct as reported, complete as reported, of a known ownership of responsibility as reported, and validated else wise EXACTLY AS REPORTED. This REQUISITE of reporting includes the mandatorily PERFECT and COMPLETE CERTIFIED METRO 2 FORMAT REPORTING of any verified valid claim. ANY DEFICIENCY of reporting is not within the criteria for lawful reporting thereby requiring immediate and permanent removal from reporting. INCONSISTENT and or questionable aspects of reporting indicates inability to assume claims are each of factual and certifiably compliant as reported in reality nor process. Unproven claims must be removed. As indicated, this claim as inconsistent and or questionably reported aspects that are problematic such as the notated ailment(s) of reporting which is to date unproven and or not certifiably compliant in its mandatorily perfect complete accurate verified valid reporting(s). The mentioned delinquent and or derogatory-conditioned item(s) of allegation fail to meet even MINIMUM requisites of adequate reporting so delete now! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not! Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported! AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +<p>As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted misinformation as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions. <br /> Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action <strong><u>named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES. </u></strong></p>
          +<p>Inconsistencies of reporting lends to potentially questionable reporting which fails to adequately meet the requisites of lawful factual reporting per federal regulations of reporting. Due in part to the obvious multiple inconsistencies of reporting and the fact that the current reporting has not yet been demonstrated to possess the mandatory physically verified document proof of full truth of claim, accuracy of claim, completeness of claim, or validity of claim else wise much less any demonstration of the mandatory certified compliance of reporting such as the required perfect and complete correct certification of the adequate Metro 2 formatted reporting standards nor adequate evidence that every aspects of regulatory reporting FCRA AND OR FDCPA laws applicable are factual and undoubtedly as reporting currently, I call to question this reporting as reported. Given fact that COMPLIANCE OF REPORTING LAWS AND STANDARDS IS A MINIMAL CRITERION OF REPORTING, NOT AN OPTIONAL ONE I HERE NOW DECLARE MY CHALLENGE CONTESTING THE LEGALITY OF CURRENT DEROGATORINESS AND OR DELINQUENCINESSES AS ACCUSED DEFICIENT OF PROOF, BE IT TRUE OR BE IT NOT. IT IS NOT RESPONSIBILITY OF INJURED CONSUMER TO PRESENT PROOF VALIDATING CLAIMS NOR CERTIFYING COMPLIANCE OF REPORTING CLAIMS, AS THAT RESPONSIBILITY AND BURDEN RESTS SOLELY WITH THE REPORTING DATA FURNISHER AND THE ACCEPTING REPOSITORIES OF THE CLAIMS.</p>
          +<p>DELETE NOW IN FULL THIS UNPROVEN AND OBVIOUSLY NOT CURRENTLY COMPLIANT REPORTING,SO TO RETURN TO MANDATORY CIRCUMSTANCE OF ADEQUATE COMPLIANT REPORTING OF ONLY FULLY VETTED TRUE CORRECT COMPLETE VALID CLAIMS. DO SO RIGHT NOW!</p>
          +<p>In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +     <div class="row">
          +       <p>&nbsp;&nbsp; Cc:</p>
          +       <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +     </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/68.blade.php b/resources/views/lg/pdf/68.blade.php
          new file mode 100644
          index 0000000..a6ea1e3
          --- /dev/null
          +++ b/resources/views/lg/pdf/68.blade.php
          @@ -0,0 +1,74 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p> ****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.  </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +{{--<div class="row">--}}
          +{{--  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; </p>--}}
          +{{--  <p>TO: <strong>Trans Union Corporation , EVP/S/GC<br /> Attention: John W Blenke or current/acting Executive VP, Secretary, and or General Counsel <br /> 555 West Adams Street <br /> Chicago, Illinois 60661</strong></p>--}}
          +{{--  <p>AND</p>--}}
          +{{--  <p><strong>Trans Union Po Box 2000 Chester, Pennsylvania 19016-2000</strong></p>--}}
          +{{--</div>--}}
          +
          +<div class="row">
          +    <p class="span-blue">Destination of my Consumer Complaint is &nbsp;<span class="span-ul"><?php  echo  $destination; ?></span> </p>
          +    <p><strong>TO:</strong><br>
          +        <strong>
          +            <?php echo isset($additional_destionations1[$destination]) ? $additional_destionations1[$destination]:""; ?>
          +        </strong> </p>
          +    <p><strong>AND</strong></p>
          +    <p><strong><?php echo isset($additional_destionations2[$destination]) ? $additional_destionations2[$destination]:""; ?></strong></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RE:&nbsp;&nbsp;&nbsp;&nbsp; </strong>**I here now DEMAND that you permanently and completely eradicate from your reports any other personal identifier information as I do NOT AUTHORIZE you nor any other entity rights to retain or report any data that is one or more of being untrue, incorrect, incomplete, not requisite reported, untimely, outdated, unverified, invalid, or else wise deficient of document proof of factual certification of compliant reporting to include to the perfect and complete mandatory Metro 2 format reporting standards. I COMPEL you to COMPLY now and always, as is my consumer RIGHT(s) to do so and YOUR REQUIREMENT to obey! This is in fact a circumstance of OBVIOUS and injurious COMPLIANCE FAILURE and or unproven and or not certified compliantly reported physically verifiable validated true correct complete claim(s) of derogatory student loan and or aspect(s) of such in vile INFRACTION of requisite lawful reporting, to include but not necessarily limited to deficiencies and or unproven aspects concerning FCRA, FDCPA, and or the mandatorily perfect and complete CERTIFIED Metro 2 format COMPLIANT reporting standards! Consumer DEMANDs eradication of derogatory claims ASAP!</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>As is my consumer right to do so, I hereby compel you to retain ONLY PERFECTLY TRUE VALIDATED and CERTIFIABLY COMPLIANTLY reported claims, particularly that of allegations of delinquencies and or derogatory in any manner whatsoever! My state and the applicable federal reporting laws and standards of reporting mandate that all claims be each of being fully verified as true as reported, correct as reported, complete as reported, of a known ownership of responsibility as reported, and validated else wise EXACTLY AS REPORTED. This REQUISITE of reporting includes the mandatorily PERFECT and COMPLETE CERTIFIED METRO 2 FORMAT REPORTING of any verified valid claim. ANY DEFICIENCY of reporting is not within the criteria for lawful reporting thereby requiring immediate and permanent removal from reporting. INCONSISTENT and or questionable aspects of reporting indicates inability to assume claims are each of factual and certifiably compliant as reported in reality nor process. Unproven claims must be removed. As indicated, this claim as inconsistent and or questionably reported aspects that are problematic such as the notated ailment(s) of reporting which is to date unproven and or not certifiably compliant in its mandatorily perfect complete accurate verified valid reporting(s). The mentioned delinquent and or derogatory-conditioned item(s) of allegation fail to meet even MINIMUM requisites of adequate reporting so delete now! Being my RIGHT,I DEMAND that you IMMEDIATELY DELETE and forevermore afterwards BLOCK the misreported misinformation as indicated in the reported item of:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This letter is yet another giving you formal legal notification of my DEMAND for you to CEASE and DESIST any and all ACTIVITIES in regards to the above notated derogatorily reported mis-information as it is significantly in infraction of requisites for lawful reporting much less substantially deficient in its certifiability of the mandatorily perfect correct and complete Metro 2 format compliant reporting in conjunction with the factually required perfect and physically verifiable valid and demonstrated truth of reporting, accuracy of reporting, completeness of reporting and certified compliance of reporting elsewise, mentioned here or not! Might I remind you that ONLY PHYSICALLY VERIFIED VALID derogatory claims that are perfectly correct and completely certified compliant in its reporting, how reported, and such are all MANDATORY CRITERIA for REPORTING,NOT OPTIONAL. I DEMAND that you PROVE each the Verifiability, VALIDITY, and CERTIFIED perfect Metro 2 format compliant reporting or else IMMEDIATELY REMOVE any and all derogatory data or information reported, now and in future . I here now DEMAND that you act in FULL ACCORDANCE of regulatory laws and standards of reporting practices, mentioned by me or not. ANY deficiency to do so is lawful dereliction of responsible and required reporting and will be deemed your WILLFUL disregarding of your requisite behaviors and an unlawful injurious harassment of me and my consumer rights, for which I can and may indeed file civil suit versus you for a court ordered resolution and monetary gains for me FROM YOU! TREAD lightly with your unproven claims not certifiably compliantly reported! AGAIN, CEASE and DESIST all reporting activities for the above titled derogatory listed student loan account(s) and aspect(s) of said derogatory claims still yet unproven and not certified compliantly reported.</p>
          +<p>As your firm well knows, I have now LEGALLY EXERCISED MY CONSUMER and or CIVIL RIGHT(s) by CHECKING for the VALIDITY of claims versus me, VERIFIABILITY of all aspects of claims versus me, and Contesting any unproven portion(s). Further, You should equally be aware of YOUR MANDATE to report COMPLIANTLY and have capacity to CERTIFY that factual perfect and true complete compliance of reporting to include but not limited to the mandatory Metro 2 format reporting standards. I pray that you do not yet AGAIN ignore your requisite obeying of 15 U.S.C.A 1692g(b)-REQUIREMENT to complete a timely investigation. This will not be the first attempt I have made to notify your compliance department officer of record or adequate department charged with retaining only true verifiable valid and certifiably compliant derogatory data and information else wise, in regard to the OBVIOUS and seemingly willful (yet possibly done so truly in ignorance ) BREECH of REGULATORY REQUIREMENTS in your alleged investigation efforts, assuming one was truly executed, as MANDATED by LAW! This NOTICE was previously or subsequently IGNORED apparently, I demand that you do NOT again repeat the same infraction or ANY violation for that matter, known or otherwise! Hence why I am enacting my RIGHTS and reminding you of YOUR REQUIREMENT to CEASE ANY and ALL REPORTING ACTIVITIES for the above noted misinformation as I have challenged here and today! This is OBVIOUSLY to include BUT NOT LIMITED TO the reporting(s) of the derogatory and or delinquent student loan(s) in question and or of my noted concern(s), AND INCLUDING any further back dating of documents and or records else wise that might be somehow related to the alleged previous VERIFICATION(s) of this account and or aspects of such noted information. ADDITIONALLY,I enact my RIGHT to have you forward me back in a federally defined timely manner PROOF of your removal and or modifications of reporting(s) as I have requested ALONG with a full and a then-currently UPDATED consumer credit report of MY RECORDS displaying the requested and mandatory corrections and or deletions. <br /> Please take notice that I have forwarded or will be forwarding this and my prior notices to you to my State Attorney&rsquo;s Office, the Federal Trade Commission aka FTC, and the Consumer Financial Protection Bureau aka CFPN. I assume you know that IF YOU have advised the above mentioned , the original creditor, and or the current data furnisher of this contested information of YOUR IMPLICIT REGULATORY FAILURE in this matter, state in writing as to this fact so I may have on my records. If NOT, I advise you to do so, in an effort to avoid further infraction of my consumer rights in dire unnecessary injuries versus me. LET it be in CLARITY my willingness almost eagerness to LITIGATE this matter in a civil court nearest me ,might I remind you to refer to such civil action <strong><u>named MEY v. RFA aka RELIANT FINANCIAL ASSOCIATES. </u></strong></p>
          +<p>Inconsistencies of reporting lends to potentially questionable reporting which fails to adequately meet the requisites of lawful factual reporting per federal regulations of reporting. Due in part to the obvious multiple inconsistencies of reporting and the fact that the current reporting has not yet been demonstrated to possess the mandatory physically verified document proof of full truth of claim, accuracy of claim, completeness of claim, or validity of claim else wise much less any demonstration of the mandatory certified compliance of reporting such as the required perfect and complete correct certification of the adequate Metro 2 formatted reporting standards nor adequate evidence that every aspects of regulatory reporting FCRA AND OR FDCPA laws applicable are factual and undoubtedly as reporting currently, I call to question this reporting as reported. Given fact that COMPLIANCE OF REPORTING LAWS AND STANDARDS IS A MINIMAL CRITERION OF REPORTING, NOT AN OPTIONAL ONE I HERE NOW DECLARE MY CHALLENGE CONTESTING THE LEGALITY OF CURRENT DEROGATORINESS AND OR DELINQUENCINESSES AS ACCUSED DEFICIENT OF PROOF, BE IT TRUE OR BE IT NOT. IT IS NOT RESPONSIBILITY OF INJURED CONSUMER TO PRESENT PROOF VALIDATING CLAIMS NOR CERTIFYING COMPLIANCE OF REPORTING CLAIMS, AS THAT RESPONSIBILITY AND BURDEN RESTS SOLELY WITH THE REPORTING DATA FURNISHER AND THE ACCEPTING REPOSITORIES OF THE CLAIMS.</p>
          +<p>DELETE NOW IN FULL THIS UNPROVEN AND OBVIOUSLY NOT CURRENTLY COMPLIANT REPORTING,SO TO RETURN TO MANDATORY CIRCUMSTANCE OF ADEQUATE COMPLIANT REPORTING OF ONLY FULLY VETTED TRUE CORRECT COMPLETE VALID CLAIMS. DO SO RIGHT NOW!</p>
          +<p>In GENUINE SINCERITY,</p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +     <div class="row">
          +       <p>&nbsp;&nbsp; Cc:</p>
          +       <p>&nbsp;<strong><u>Consumer Financial Protection Bureau (CFPB)&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Mr. Rohit Chopra or current/acting Student Loan Ombudsman&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>1700 G Street NW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </u></strong></p>
          +       <p><strong><u>Washington, DC 20552&nbsp; </u></strong></p>
          +     </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/69.blade.php b/resources/views/lg/pdf/69.blade.php
          new file mode 100644
          index 0000000..6ba79b4
          --- /dev/null
          +++ b/resources/views/lg/pdf/69.blade.php
          @@ -0,0 +1,41 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>  *I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance.  </p>
          +
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p>TO: <span class="span-ul">{{$destination}}</span></p>
          +  <p class="clr-red">AND</p>
          +  <p><strong>Consumer Financial Protection Bureau <br />Attn: Consumer Complaints Department <br />P.O. Box 4503 <br />Iowa City, Iowa 52244</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>RE: Problem with Credit Inquiry (ies) reported deficient of proof of validity and deficient of certified compliance of reporting, particularly as related to the mandatory METRO 2 format reporting standard(s). </p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Recently I found several issues with the noted reported credit inquiry(ies) alleged and injurious versus me on my credit report that I have NO knowledge of any documented proof of the required physically verified proof of valid permissible purpose much less demonstrated certified compliance of reporting even to the required METRO 2 format reporting standard(s), hence my check for factually perfect and lawful reporting and my challenge contesting ANY DEFICIENCY of reporting or PROOF OF MANDATED ASPECTS OF REPORTING&mdash;as is my consumer RIGHT TO DEMAND that only PROVABLE DOCUMENTED FACTUAL and CERTIFIABLY COMPLIANT claims report versus me and my RIGHT TO FORCIBLY DEMAND ERADICATION of any claim(s) not compete and perfect in its factual evidence of verifiability, validity and or compliance of reporting. I can and will in a court of civil action versus you provide ample document evidence supporting the FACTS of your DEFICIENT QUESTIONABLE REPORTING and as well clarity that indeed I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and OTHERS in complaint versus and contesting the certified compliance of the alleged validity of these claims of Inquiry(ies) and any derogatory debt or delinquencies related, if any at all. I ALSO contacted the reported creditor(s) and or reported data furnisher(s) directly checking for compliant reporting evidence and contesting any claim deficient in ANY MANNER as PERFECT CORRECT COMPLETE PROVABLE VALID CERTIFIABLY COMPLIANT CLAIMS are the MINIMUM REQUIREMENT for lawful reporting(s) not an OPTIONAL condition of it. Several representatives were not even capable of informing me that the name(s) and other alleged personal identifier information as listed on the inquiry(ies) and associated accounts (if any) did not match my submitted factually correct personal identifier information exactly as I have included at the top and near bottom of this exact notice of deficiencies such as issues with name spelling or other identity indicators others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry. I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine or else wise is significantly invalidly reported. I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED! In response, I am firing off this last resort notice requesting your appropriate actions to resolve this matter PREVIOUS my soon to be filed civil complaint and lawsuit(s). <br /> <br />Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once. <br /> <br />Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY: </p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES . <br />I submitted IN WRITING a Validation request under the FCRA title 611, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information. <br /> <br />I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem&hellip;can you help? Better yet, WILL YOU? <br /> <br />PLEASE!! <br /> <br />Sincerely, </p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/7.blade.php b/resources/views/lg/pdf/7.blade.php
          new file mode 100644
          index 0000000..bbc0019
          --- /dev/null
          +++ b/resources/views/lg/pdf/7.blade.php
          @@ -0,0 +1,37 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise!</p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!  Your current reporting is significantly questionable and unproven to be factually true, correct, complete, timely, validated and or else wise certified compliant as related to the mandates and standards of lawful reporting per the applicable aspects of the FCRA and FDCPA to include but not limited to the mandatorily perfect and complete certified Metro 2 format reporting!
          +You are reporting inaccurate and incomplete information in regards to the below noted medical account(s).  I demand that you contact the Medical facility, as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this Medical Collection and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect allegation(s) immediately and permanently:</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>This is a request under FCRA 611 (a) (7) for a description of the procedure used by your agency in providing all information to the creditor associated with my earlier dispute of the validity of the reported late payments from my credit file your bureau provided to me. To be more specific, based on FCRA 611 (a) (2) (B), you were required to forward all of the relevant information provided by you to the creditor for their investigation of my dispute.   After contacting the creditor I have been led to believe that THIS did not take place.  This is a clear violation of the FCRA and the FCBA.<br>Please provide me with all of the information you used for your investigation.  Please reply within 15 days or delete the negative items, as originally requested.</p>
          +
          +  </div>
          +  <div class="row">
          +    <p >1.      Tell me in writing what information you received from this creditor to support the presence of these supposed late payments.
          +<br>2.      Tell me in writing what you did to determine that the information the creditor provided was accurate.
          +<br>3.      Note how the information was relayed to the creditor and the EXACT information (type/kind) that was provided to your bureau as PROOF of the accuracy of these late payments.</p><br>
          +  <p>Genuinely,</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/70.blade.php b/resources/views/lg/pdf/70.blade.php
          new file mode 100644
          index 0000000..4038050
          --- /dev/null
          +++ b/resources/views/lg/pdf/70.blade.php
          @@ -0,0 +1,55 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>*I demand that any OTHER reported personal identifier information be removed from reporting as it does NOT MATCH EXACTLY my true current CORRECT information EXACTLY as I have detailed above. It is MY RIGHT to DENY YOU AUTHORITY TO REPORT DEFICIENT of factual verifiability of validation of only TRUE CORRECT COMPLETE TIMELY CLAIMS which as well are CERTIFIABLY COMPIANT IN their reporting, even to the mandatorily perfect and certified METRO 2 format reporting standard(s) of compliance! </p>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p><strong>TO: <span class="span-ul">{{$destination}}</span></strong></p>
          +  <p><strong class="clr-red">AND</strong></p>
          +  <p><strong>Kent Markus, Director of Enforcement</strong></p>
          +  <p><strong>Consumer Financial Protection Bureau</strong></p>
          +  <p><strong>1700 G Street, </strong></p>
          +  <p><strong>NW Washington, DC 20552</strong></p>
          +</div>
          +
          +<div class="row">
          +  <p>RE: Problem with Credit Inquiry (ies) reported deficient of proof of validity and deficient of certified compliance of reporting, particularly as related to the mandatory METRO 2 format reporting standard(s).</p>
          +</div>
          +
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>Recently I found several issues with the noted reported credit inquiry(ies) alleged and injurious versus me&nbsp; on my credit report that I have NO knowledge of any documented proof of the required physically verified proof of valid permissible purpose much less demonstrated certified compliance of reporting even to the required METRO 2 format reporting standard(s), hence my check for factually perfect and lawful reporting and my challenge contesting ANY DEFICIENCY of reporting or PROOF OF MANDATED ASPECTS OF REPORTING&mdash;as is my consumer RIGHT TO DEMAND that only PROVABLE DOCUMENTED FACTUAL and CERTIFIABLY COMPLIANT claims report versus me and my RIGHT TO FORCIBLY DEMAND ERADICATION of any claim(s) not compete and perfect in its factual evidence of verifiability, validity and or compliance of reporting. I can and will in a court of civil action versus you provide ample document evidence supporting the FACTS of your DEFICIENT QUESTIONABLE REPORTING and as well clarity that indeed I followed the exact letter of the law and contacted the Credit Bureaus (Trans Union/Experian/Equifax) and OTHERS in complaint versus and contesting the certified compliance of the alleged validity of these claims of&nbsp; Inquiry(ies) and any derogatory debt or delinquencies related, if any at all. I ALSO contacted the reported creditor(s) and or reported data furnisher(s) directly checking for compliant reporting evidence and contesting any claim deficient in ANY MANNER as PERFECT CORRECT COMPLETE PROVABLE VALID CERTIFIABLY COMPLIANT CLAIMS are the MINIMUM REQUIREMENT for lawful reporting(s) not an OPTIONAL&nbsp; condition of it.&nbsp; Several representatives were not even capable of&nbsp; informing me that the name(s) and other alleged personal identifier information&nbsp; as listed on the inquiry(ies) and associated accounts (if any)&nbsp; did not match my submitted factually correct personal identifier information exactly as I have included at the top and near bottom of this exact notice of deficiencies such as issues with name spelling or other identity indicators others could not provide me with any information about the alleged application because their firms DID NOT retain the information on this inquiry.&nbsp; I attempted to contact the three credit reporting agencies to speak with someone about this problem, and the facts that the information was either not retained by the creditors or not mine or else wise is significantly invalidly reported.&nbsp; I contacted each CRA and was informed that their records were correct they declined to substantiate the claim and informed me I could file a fraud report If I WISHED! In response, I am firing off this last resort notice requesting your appropriate actions to resolve this matter PREVIOUS my soon to be filed civil complaint and lawsuit(s).</p>
          +   <p>&nbsp;</p>
          +   <p>Since your firm has knowingly violated both federal and state law, I am demanding that you CEASE all reporting activities IMMEDIATELY! Stop at once reporting the debt in question to any and all Credit Report and delete it from my credit report at once.</p>
          +   <p>&nbsp;</p>
          +   <p>Below listed are the questionable if not altogether erroneous inquiries you are reporting, each of which REQUIRES ERADICATION from reporting IMMEDIATELY and PERMANENTLY:</p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>If your firm does not COMPLY in writing to this CEASE and DESIST notice within 5 days I will not hesitate to bring suit against your firm in this matter as in the example of <strong><u>Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES . </u></strong></p>
          +   <p>I submitted IN WRITING a Validation request under the <strong><u>FCRA title 611</u></strong>, this request was ignored by the creditors in question, when I called back and demanded to speak to a supervisor to find out the status of the Validation demand that I had filed, I was informed by a person who stated that HE was a supervisor, but refused to provide me with his operator number or extension, that THEY were not required by the FCRA to provide any VALIDATION information.</p>
          +   <p>&nbsp;</p>
          +   <p>I have followed the letter of the law yet the credit reporting agencies have ignored and refused to address my legitimate problem&hellip;can you help? Better yet, WILL YOU?</p>
          +   <p>&nbsp;</p>
          +   <p>PLEASE!!</p>
          +   <p>&nbsp;</p>
          +   <p>Sincerely,</p>
          +
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/71.blade.php b/resources/views/lg/pdf/71.blade.php
          new file mode 100644
          index 0000000..5c7eb9f
          --- /dev/null
          +++ b/resources/views/lg/pdf/71.blade.php
          @@ -0,0 +1,51 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles. </p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>Re:  Demand to remove Inaccurate Credit Information</p>
          +</div>
          +
          +  <div class="row">
          +   <p><strong><em><u>Sirs </u></em></strong><br>(or elsewise whom it may concern CAPABLE of rectifying unproven claims),&nbsp;</p>
          +   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Not an entity today exists that can certifiably ignore its mandated obligations to report compliantly and to 100% truth, correctness, completeness, timeliness, and documented Irrefutable proof of ownership and responsibility of any allegations of adverse aspects to an account or of a derogatory account in and of itself. According to Regulation V 1022.42: Reasonable policies and procedures concerning the accuracy and integrity of furnished information. Furnishers must have strong policies in place to have the highest possible accuracy, but it has not been done in this case. In addition, a per the metro 2 data formatted standards of legal reporting of consumer accounts and profile history and per the Fair Credit reporting act, namely section 609 a1A, it is in CLARITY that you are MANDATED to retain COMPLIANCE at all times, particularly upon notification by an infringed consumer that you are deficient of your requisites to report adequately and a challenge (or dispute) is lodged versus any data information previously NOT proven PHYSICALLY to be affirmed valid or is UNABLE to be demonstrated as true, accurate, complete, timely, and otherwise fully compliant to laws upon a documented declaration of concern by the consumer. I demand, as is MY RIGHTS to do so and as is your REQUIREMENT to satisfy, for you to ANNUL by deletion or removal any and all allegations DEFICIENT of PHYSICAL EVIDENCE OF COMPLIANCE to reporting laws much less verified and valid. If you are unwilling or UNABLE to do so in a federally defined TIMELY manner you MUST rectify your infractions by RETURNING TO or retaining federal reporting COMPLIANCE TODAY, even RIGHT NOW, .As such, I DEMAND that you CERTIFICATE the verification and validity of the following claims or DELETE NOW: <strong>&nbsp; Since the accounts have NOT been shown by you to be properly verified, I demand the accounts listed herein be removed immediately.&nbsp; </strong>Make no mistake, <em>I intend on pursuing all available remedies under Federal Law to enforce my rights. </em>Failing to remove any and all not compliant and or any and all unverified accounts is damaging my creditworthiness and reputation on a continued basis, such that I will deem purposeful injurious and in need to seek juris rectification. <strong>Since the accounts have NOT been shown by you to be properly verified, I demand the accounts listed herein be removed immediately.&nbsp; </strong><strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong>Please  delete  this  erroneous  information  immediately or else wise adequately<strong> PHYSICALLY VERFIFY PROPERLY the absolute factual documented TRUTH, ACCURACY, COMPLETENESS, VALIDITY, METRO 2 FORMAT REPORTING and any and all aspects of mandatorily CERTIFIED COMPLIANCE OF REPORTING otherwise be it mentioned or be it now. Should you be deficient or unwilling to timely demonstrate proof as required I DEMAND that you REMOVE THE FOLLOWING items of reporting:</strong></p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>The above noted allegation(s) IS/ARE DEFICIENT of the mandatorily CERTIFICATED PHYSICAL PROOF of be adequately and fully COMPLIANT to all mandates and laws as related to my state, the FCRA and METRO 2 data formatted reporting standards. You MUST annul Today, even NOW as you are NOT authorized to retain much less report any information or aspects of adverse data that is NOT TESTIMONIAL in its 100% TRUTH, CORRECTNESS, COMPLETENESS, TIMELINESS, of proven documented OWNERSHIP of mine, or of proven documented RESPONSIBILITY of mine. DEMONSTRATE confirmation of all data, dates, balances, calculations, identities, audits to include the requisite 426-character P6 statements and all of its trailing segments, the minimal five portioned personal identifiers, all 386 pieces to confirmation to collect ,and every aspect of the alpha-/ numeric-/ and or alphanumeric source codes. RETURN or retain OBLIGATORY compliance with your federally defined timely deletion of any and all adverse notations that are deficient of physical evidence of proper reporting. DELETE ,immediately here and now, as it infringes on my consumer and potentially my civil rights as it potentially can lead subterfuge due to misreporting or else wise be injurious to me.&nbsp; ***Please provide a copy of my corrected and updated report once you have complied with the law.</p>
          +   <p><strong><em><u>In GENUINE SINCERITY</u></em></strong>,</p>
          +
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/72.blade.php b/resources/views/lg/pdf/72.blade.php
          new file mode 100644
          index 0000000..38a5217
          --- /dev/null
          +++ b/resources/views/lg/pdf/72.blade.php
          @@ -0,0 +1,72 @@
          +@extends('layouts.lg-pdf2')
          +@section ('content')
          +<div class="row">
          +  <p class="span-red">My current Legally acquired lawful Social Security Number last four is and only is &nbsp;<span class="span-ul">{{$universal['ssn']}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +  <div class="clr-red">
          +    <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +    <p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +    <p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +    <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +    <p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +    <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +  </div>
          +</div>
          +
          +
          +
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          +
          +<div class="row">
          +  <p><strong>RE:</strong> <strong><em><u>PROBLEMATIC PERSONAL IDENTIFIER MISINFORMATION DEFICIENT OF mandatory COMPLIANT REPORTING</u></em></strong>! ATTENTIVELY REVIEW my formal writ composed DECLARATION of Not Proven Compliant Misinformation that is all or in part: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! To be clear, you are mandated by laws to eliminate every notation and or aspect of any and all derogatory and adversary items from any and all alleged claims still yet unproven to be true, correct, complete, timely, documented as being mine, testimonial to be of my responsibility, with FCRA compliance, and/or CRSA CDIA Metro 2 COMPLIANT reporting. FEDERAL laws dictate that any and all derogatory or potentially injurious reporting MUST be all of the aforementioned and can NOT BE ASSUMED without undoubted CERTIFIABLE testimonial of FACTs ensuring the physically verifiability of the CONFIRMED manual validation of any item upon a consumer complaint, such as is this notice here and now. Please RETURN to or retain federally lawful reporting with your unwavering and unconditional annulment of every single one even each any and or all of the allegations accused of me deficient of physical evidence to every and all aspects of said claims, be them true or not.</p>
          +</div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +   <p>&nbsp; &nbsp; Recently, I contacted your firm with a formal dispute under the Fair and Accurate Credit Transactions Act of 2003. Specifically, Title 1 sec. 151 which reserves the right of the consumer to collect proof of an identity theft.&nbsp; No matter if you or a third party has collected this information, you must have adequate records to substantiate the erroneous information, if not it is UNVERIFIEABLE and CANNOT be reported.&nbsp; Tort law is quite clear in this matter!&nbsp; You have 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section 1024.35 (Notice of Error) under CFPB regulations which will of course to a summary finding and a civil action against your firm that you cannot win . I am filing this lawfully applied written consumer complaint requesting proof of certified compliant reporting(s) of these particular items that you are reporting under FACTA Title 1 sec. 151 that specifically requires a description of the procedure used by your agency in obtaining this personal identifier information that I believe is incorrect, including if this was obtained by a third party Information Broker and sold to your firm. I have enclosed copies of my state issued identification and Social Security card to validate my identity.&nbsp; I believe that this false information that you are reporting is directly resulting in incorrect account mergers onto my credit file and that this is harming my credit score. Please delete this erroneous information immediately! .   I  believe  that  this false  and  or  misleading   information  that you &nbsp;are reporting is likely  directly  resulting  in  or &nbsp;will &nbsp;in future result in  incorrect account mergers onto my credit file and  that this  is &nbsp;injurious to  my credit report health and credit score wealth. <strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong><strong><em><u>Please </u></em></strong><strong><em><u> </u></em></strong><strong><em><u>delete</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>this</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> questionably reported or even </u></em></strong><strong><em><u>erroneous</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>information</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>immediately!</u></em></strong><strong><em><u></u></em></strong><strong><em><u>&nbsp; </u></em></strong></p>
          +
          +   @include('lg.pdf.partial.content')
          +
          +   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THE ABOVE LISTED REPORTED PERSONAL INFORMATION IS CURRENTLY REPORTING DEFICIENT OF FEDERAL AND STATE REQUISITE REPORTING COMPLIANCES TO INCLUDE METRO 2 DATA FIELD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FORMATTED REGULATORY REPORTING STANDARDS OF EXACTNESS AND OR UNDENIABLE AND IRREFUTABLE UNDOUBTED PROOF IN REGARDS TO A DOCUMENTED TESTIMONIAL CERTIFICATE OF FACTS AS TO THE CURRENT STATUS, TRUTH, CORRECTNESS, COMPLETENESS,TIMELINESS,OWNERSHIPS, RESPONSIBILITIES, FCRA COMPLIANCE, AND OR  METRO 2 COMPLIANT  REPORTING. NO ENTITY RETAINS ANY RIGHTS TO ERADICATE ITS LIABILITIES FOR INFRINGEMENT OF CONSUMER&nbsp;&nbsp;&nbsp;  AND OR CIVIL RIGHTS WITH INJURIOUS,UNETHICAL,UNTRUE,INCORRECT,  INCOMPLETE,UNTIMELY,OR ELSE WISE UNPROVEN TO BE ENTIRELY COMPLIANT REPORTING  TO EVERY ASPECT OF MANDATED LAWS ,REGULATIONS, PRECEDENCE, AND OR STANDARDS OF ACCEPTABLE REPORTING PRACTICES. PLEASE ANNUL BY FULL AND PERMANENT DELETION OF ANY AND ALL ASPECTS OF THE NOTED UNLAWFULLY AND NOT PROVEN COMPLIANT ALLEGATIONS that currently reported, as well as any NOT EXACTLY as I have displayed as being uncontested as factually my FIRST and LAST NAME, address STREET NUMBER and STREET NAME, ADDRESS CITY AND STATE, DATE OF BIRTH, and SOCIAL SECURITY LAST FOUR!</p>
          +   <p class="clr-red">Please Provide Physical Proof of COMPLIANCE and Verification. If not physically irrefutable you are not authorized to retain or report this allegation so annul in brief today even right now or certificate that your testimony proves compliance and accuracy of every and one even each any and all OF THE data aspects. Subterfuge is not lawful, I demand that you return to or retain compliance as mandated and do so without injury AND or prejudices towards me now or thereafter.</p>
          +   <br><br>Might it be known that THIS LETTER of consumer check and challenge for lawful reporting compliance is my officially composed writ formal complaint that you are reporting one or more of the following, ILLEGALLY mind you:</p>
          +   <p>i)Your reporting is unproven to be TRUE, so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>ii)Your reporting is unproven to be Correct (and regulations are CLEAR on accuracy being undoubted and irrefutable),so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>iii)Your reporting is unproven to be COMPLETE (and regulations are CLEAR on mandates to be fully COMPLETE in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>iv)Your reporting is unproven to be TIMELY (and regulations are CLEAR on mandates to be fully CURRENT and TIMELY in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>v)Your reporting is unproven to be of MY OWNERSHIP(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.</p>
          +   <p>vi)Your reporting is unproven to be of MY RESPONSIBILITY(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>vii)Your reporting is unproven to be of FCRA COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +   <p>vi)Your reporting is unproven to be of CRSA enacted CDIA METRO 2 DATA FIELD FORMATTED</p>
          +   <p>REGULATORY REPORTING COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, <em><u>e-Oscar</u></em> is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, there must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state&rsquo;s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.) Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE? Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE! Injury causing subterfuge is unlawful to retain. You are not Authorized to report or even once alleged adverse remark unproven upon a requested compliance check. You must Annul in brief, even right now and right here, by complete and permanent deletion any or even one not irrefutable allegation(s) deficient of physical composed writ certificate(s) in testimony of the exact and full truth, correctness, timeliness, completeness, ownership, responsibility, and or documented evidence of precise and willfulness to comply with every single one even any and or all of the requisite mandates/statutes/acts/obligations/and or laws related and pertinent to legal reporting of any information, known or not. Attest now to the metro-2 required truth, accuracy, fullness, timeliness, ownership, responsibility and or compliance(s) otherwise, whether mentioned or not. Ignorance of obligations to compliant reporting is NOT lawful exoneration of your responsibility to 100% accurate, true, and metro-2 compliant data formatted reporting regulations of which you are obligated. Federal laws allow me to compel you to retain and or return adequate accountability. Failure or unwillingness to do so might be remedied and rectified in my favor per monetary compensation for your infringements of my civil and or consumer rights and violations of the laws required of you. Right now demonstrate to me any and all applicable metro-2 reporting mandates including but not limited to every date and balance, each calculation and audit, the invoices and documented current identities, every notation not to forget the five (5) portioned personal identifiers, 426 character P-6 statements, alpha/numeric/ and or alphanumeric source codes, every applicable creditor classification code(s), the 3 applicable and precise sequenced 386 pieces of confirmation to collect(-ions) or any obligation else-wise. Return or Retain federally required compliance with your immediate and dull eradication of any and one of the adverse and or derogatory claims or any aspects of. Prove compliance or delete ASAP!!! Let this notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! Please provide me with all of the information you used for your investigation, as required by FCRA 611 (a) (7).Please reply within 10 days or delete the negative items, as originally requested. If you FAIL to respond to this demand and tort notification, your firm will be added to the pending action as complicit in this data breach of my personal information.</p>
          +   <p>1. Tell me in writing what information you refuse to remove and why.</p>
          +   <p>2. Tell me in writing what you did to determine that the information was accurate.&nbsp;</p>
          +   <p>3. Note the information as disputed BY the CONSUMER on my credit report.</p>
          +   <p>According to the Fair Credit Reporting Act, Section 609 (a)(1)(A), you are required by federal law to verify - through the physical verification of the original signed consumer contract - any and all accounts you post on a credit report. Otherwise, anyone paying for your reporting services could fax, mail or email in even a potentially fraudulent account. According to the provisions of the Fair Credit Reporting Act &sect; 611(a) [15 USC 1681i(a)], these disputed items must be reinvestigated or deleted from my credit record within 30 days. During the investigation period, these items must be removed from my credit report as the mere reporting of items prior to debt validation constitutes collection activity. I am also requesting the names, addresses and telephone numbers of individuals you contacted during your investigation. Please notify me that the above items have been deleted pursuant to &sect; 611 (a)(6) [15 USC &sect; 1681j (a) (6)]. I am also requesting an updated copy of my credit report, which should be sent to the address listed below. According to the provisions of &sect; 612 [15 USC &sect; 1681j], there should be no charge for this report. If you have any questions or need additional information, please contact me at address noted below. I think 15-20 Days should be ample enough time to get this completed since this is my NOT my first time contacting your organization. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, they must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state&rsquo;s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.)</p>
          +   <p>Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE?</p>
          +   <p>Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE!</p>
          +   <p>Please verify and validate physically each and every claim of this alleged yet unproven to be my responsibility or fault. Please demonstrate readily and timely the precise confirming facts of the alleged account including every single one even each any and or all of its article aspects by federal laws. You must willfully and promptly DELETE TODAY even right now the deficient reporting or else present to me true documented certificated proof of all data, every notation, date, balance, calculation, audit, personal identifiers, each of the requisite 426-characters of the exact and fully compliant P6 statement, any alpha/numeric and or alphanumeric source4 code deciding the leftness or rightness states, and even every aspect of the mandated 386 pieces of confirmation to collection.</p>
          +   <p>This series of misreporting seems to me clearly involves a universal and complete failure by your firm to obtain, retain, maintain, and utilize adequate and lawful regulatory compliant and reasonable procedures to assure maximum possible accuracy of consumer credit information as described in at least 15 U.S.C. &sect; 1681. There is little doubt that you have no evidence that this clearly does belong to me, is exactly true, fully complete, within timely definition per federal standards and has been erroneously placed onto my credit report. The items of problematic accusations that I believe to be incorrect to its proper reporting and allowance of reporting per my state and federal laws are detailed IN CLARITY  above. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. By the provisions of the Fair Credit Reporting Act and per the standards of reporting compliance implemented with the CRSA enacted CDIA Metro 2 COMPLIANCE regulations, I demand that these above mentioned derogatory items be investigated and permanently removed from my report. It is my understanding that you will recheck these items with the creditor who has posted them. Please remove any information that the creditor cannot verify. I understand that under 15 U.S.C. Sec. 1681i(a), you must complete this reinvestigation within 30 days of receipt of this letter.</p>
          +   <p>Please send an updated copy of my credit report to the above address. According to the act, there shall be no charge for this updated report. I also request that you please send notices of corrections to anyone who received my credit report in the past six months<strong>. </strong></p>
          +   <p><strong>Thank</strong><strong></strong> <strong></strong><strong>you</strong><strong></strong> <strong></strong><strong>for</strong><strong></strong> <strong></strong><strong>your</strong><strong></strong> <strong></strong><strong>time</strong><strong></strong> <strong></strong><strong>and</strong><strong></strong> <strong></strong><strong>help</strong><strong></strong> <strong></strong><strong>in</strong><strong></strong> <strong></strong><strong>this</strong><strong></strong> <strong></strong><strong>matter. </strong></p>
          +   <p><strong>Sincerely,&nbsp; </strong></p>
          +  </div>
          +
          +  @include('lg.pdf.partial.bottom-info')
          +     <p><strong>Please see enclosed document evidence of my Proof of identification, Proof of residence or mailing address, and Proof of social security number. </strong> </p>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          diff --git a/resources/views/lg/pdf/8.blade.php b/resources/views/lg/pdf/8.blade.php
          new file mode 100644
          index 0000000..09ae462
          --- /dev/null
          +++ b/resources/views/lg/pdf/8.blade.php
          @@ -0,0 +1,46 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >I have no evidence of your claim, of its factual report-ability, nor of its physically documented and else wise demonstrated verifiable proof of validity and certifiable compliance especially in accordance to the mandatory perfect and complete Metro 2 format reporting standard(s). Since I am uncertain as to WHY I would have this bill from you, therefore I am requesting an ITEMIZED bill for the services.  Please provide me these details so I can sort out exactly what services this is for and bring the matter to the attention of my insurance company. You Must remove from reporting the below listed allegation(s) thus far not proven nor assumed compliantly reported.</p>
          +
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>In clarity, per federal and my state's regulatory reporting and collection guidelines your FIRM is compelled by TORT law precedent to provide this information or face a lawsuit : Haddad v. Alexander, Zelmanski, Danner & Fioritto, PLLC, --- F. 3d --- (6th Cir. 2014), 2014 WL 3440174 (6th Cir. Mich. 2014).<br>Please supply the following information in complete detail:
          +<br>>Why you think I owe the debt, and to whom I owe it, including:
          +<br>--------------->The name and address of the Medical Practice/Facility to whom the debt is currently owed, the account number used by that creditor, and the amount owed.
          +<br>>Provide verification and documentation (treatment order/discharge papers) that there is a valid basis for claiming that I am required to pay the debt to the current creditor.
          +<br>>If there have been any additional interest, fees, or charges added since the last billing statement from the original creditor, provide an itemization showing the dates and amount of each added amount. In addition, explain how the added interest, fees or other charges are expressly authorized by the agreement creating the debt or are permitted by law.
          + <br>>If there have been any other changes or adjustments since the last billing statement, please provide full verification and documentation of the amount you are trying to collect. Explain how that amount was calculated. In addition, explain how the other changes or adjustments are expressly authorized by the agreement creating the debt or permitted by law.</p>
          +
          +  </div>
          +  <div class="row">
          +    <p class="txt-cen-ul">Regulatory Compliance:</p>
          +    <p>>Is your firm aware of (Complying with the Credit Bureau Settlement Agreement)?
          +<br>>Does your firm participate or utilize any type of ACDV (Automated Credit Dispute Verification) software or system?
          +<br>>Does your firm outsource data entry for your collection process (if so please provide the legal name and address of that data entry firm)?
          +<br>>Is your firm currently Metro 2 compliant in its credit bureau reporting procedures (if not pleaser provide a signed declaration and waiver memorandum you have filed with the credit bureau or credit bureau reporting service that details the full process and steps your firm is undertaking to become Metro2 compliant)?
          +<br>>In addition, please provide a COMPLETE (Metro 1 or Metro 2) snap shot of the debt report you have provided to the CRA’s (including a full P-segment –trailing segment of the report)?
          +<br>>Provide a SIGNED notice of Compliance with regulatory measures as required by both the CFPB and the Credit Bureau Settlement Agreement (signed by your compliance officer, validating this DEBT and including the the name, title, and License number for the reviewing officer)?<br>
          +                     When I reach out to communicate with  I am INFORMED by the CFPB supervisor that YOUR Firm has 30 days to PRODUCE ALL of the ABOVE noted information. If your firm CANNOT produce ALL of the above noted documentation in the allotted time frame, I will accept a written NOTIFICATION stipulating that your firm CANNOT COMPLY with the FDCPA and formally withdrawing your claim to this alleged debt is demanded. If you choose to ignore this demand, I will pursue a direct course offered under the SETTLEMENT AGREEMENT entered into by the Credit Reporting Agencies with the ATTORNEY GENERAL OF THE STATE OF NEW YORK BUREAU OF CONSUMER FRAUDS & PROTECTION and 37 other states that specifically EMPOWERS a working group to remediate and hold accountable and sanction data furnishers who fail to meet the requirements of the FDCPA and CFPB’s compliance guidance for Professional Debt Collection Practices. If your firm chooses not to respond to this VALIDATION demand and its conditions I will NOT hesitate to FILE suit and SEEK my own payday against your firm for malicious collection activities-see Fields v. Wilber Law Firm, Donald L. Wilber and Kenneth Wilber, USCA-02-C-0072, 7th Circuit Court, Sept. 2004. You have 30 days from the post mark date of this validation demand to answer.</p>
          +  <p>Sincerely:</p>
          +  </div>
          +  @include('lg.pdf.partial.bottom-info')
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/9.blade.php b/resources/views/lg/pdf/9.blade.php
          new file mode 100644
          index 0000000..6dbd93f
          --- /dev/null
          +++ b/resources/views/lg/pdf/9.blade.php
          @@ -0,0 +1,34 @@
          +@extends('layouts.lg-pdf2')
          +
          +@section ('content')
          +  <div class="row">
          +    <p> *I DO NOT HAVE nor desire reported ANY OTHER FEDERALLY REQUISITE PERSONAL IDENTIFIER INFORMATION so here now move to DELETE any and all OTHER personal identifier information that might be reporting despite my objection without right of law to retain authority to report any data much less personal information that is insufficient of verifiability, validity, timeliness, or certified compliance of reporting there more! The only personal identifier information I grant you authority to report and or retain is EXACTLY as I have submitted above and in no manner else wise! </p>
          +  </div>
          +  @include('lg.pdf.partial.pinfo')
          +  <div class="row">
          +     <p>RE: Notice of currently reported injurious claim(s) unproven yet to be factually and physically validated true , correct, complete, timely, and certifiably metro 2 format compliant! These claims are requested check for requisites and immediately removed from reporting so to ensure lawful compliant reporting of ONLY factually true correct complete timely validated and certified allegations!</p>
          +  </div>
          +  <div class="row">
          +    <h1 class="span-ul2">To Whom it Concerns,</h1>
          +  </div>
          +  <div class="row">
          +    <p >Per my state’s reporting regulations and the applicable federal guidelines for lawful and compliant reporting of consumer credit, it is unlawful to assume report-ability of any claim without physically verified proof of fullness of truth, completeness of accuracy, timeliness of validity and or certifiable compliant reporting else wise to include but not limited to the standards and mandates described or hinted at via the applicable FCRA and FDCPA laws much less the standard of compliant reporting of the documented perfect and complete Metro 2 Format compliance of reporting!  Your current reporting is significantly questionable and unproven to be factually true, correct, complete, timely, validated and or else wise certified compliant as related to the mandates and standards of lawful reporting per the applicable aspects of the FCRA and FDCPA to include but not limited to the mandatorily perfect and complete certified Metro 2 format reporting!<br>You are reporting inaccurate and incomplete information in regards to the below noted medical account(s).  I demand that you contact the Medical facility, as I have already done, and demand a validation of the debt (of course they can’t provide the statement at this time). Since they cannot or will not provide an itemized statement for the services, they are clearly in violation of the FCRA and FDCPA.  Please complete your investigation of this Medical Collection and remove it because the provider cannot validate the information you are reporting on my credit report. REMOVE the following suspect allegation(s) immediately and permanently:</p>
          +    @include('lg/pdf/partial/negative_keys')
          +
          +    @include('lg.pdf.partial.content')
          +
          +    @include('lg/pdf/partial/negative_keys')
          +  </div>
          +  <div class="row">
          +    <p>This is a request under FCRA 611 (a) (7) for a description of the procedure used by your agency in providing all information to the creditor associated with my earlier dispute of the validity of the reported late payments from my credit file your bureau provided to me. To be more specific, based on FCRA 611 (a) (2) (B), you were required to forward all of the relevant information provided by you to the creditor for their investigation of my dispute.   After contacting the creditor I have been led to believe that THIS did not take place.  This is a clear violation of the FCRA and the FCBA.</p>
          +    <p class="txt-cen-ul" style="font-style: italic;font-size: 16px;">This letter is your formal notice to Cease and Desist ALL activities in regards to the REPORTING of the above titled Student Loan account.  As your firm is well aware I have LEGALLY exercised my rights by disputing the validity of this debt. I have in writing and by phone demanded that you provide documented  validation to me regarding how this item’s payment and conditions were verified and reported, instead you have IGNORED my demands and violated 15 U.S.C.A. § 1692g(b)- REQUIREMENT to complete a timely investigation.  I attempted to notify your compliance department officer of record in regards to the breech of regulatory requirements in your investigative efforts. This notice was subsequently ignored. Therefore I am demanding that you CEASE ALL activities. Including but not limited to the reporting of the Student Loan in question and any further backdating of documents or records related to the alleged VERIFICATION of this account. Please be advised if have also notified Federal Regulators (Consumer Financial Protection Bureau), and the original creditor and furnisher of this information of YOUR implicit regulatory failure in this matter. I will not hesitate to bring suit against your firm in this matter as in the example of Mey v. RFA aka RELIANT FINANCIAL ASSOCIATES</p>
          +
          +  </div>
          +
          +  <div class="row">
          +    <p>Sincerely,</p>
          +    @include('lg.pdf.partial.bottom-info')
          +  </div>
          +  @include('lg.pdf.partial.img_bottom')
          +@endsection
          +
          diff --git a/resources/views/lg/pdf/partial/asdfgh-w2.blade.php b/resources/views/lg/pdf/partial/asdfgh-w2.blade.php
          new file mode 100644
          index 0000000..3fcf0cd
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/asdfgh-w2.blade.php
          @@ -0,0 +1,29 @@
          +<div class="row">
          +   <p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. </p>
          +</div>
          +<div class="row">
          +   <p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER 
          +ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate 
          +AUTHORITY to retain much less report without infringing my consumer rights
          +</p>
          +</div>
          +<div class="row">
          +   <p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. </p>
          +</div>
          +<div class="row">
          +   <p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. </p>
          +</div>
          +<div class="row">
          +   <p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. </p>
          +</div>
          +<div class="row">
          +   <p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if 
          +ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. 
          +</p>
          +</div>
          +<div class="row">
          +   <p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights. </p>
          +</div>
          +<div class="row">
          +   <p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +</div>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/partial/bottom-cc.blade.php b/resources/views/lg/pdf/partial/bottom-cc.blade.php
          new file mode 100644
          index 0000000..e1ea707
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/bottom-cc.blade.php
          @@ -0,0 +1,3 @@
          +<h4 style="font-weight:bold;">
          +  CC:<br>Anthony Alexis <br>Assistant Director of Enforcement <br>Consumer Financial Protection Bureau<br>1700 G. Street NW<br>Washington, D.C. 2055
          + </h4>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/partial/bottom-info.blade.php b/resources/views/lg/pdf/partial/bottom-info.blade.php
          new file mode 100644
          index 0000000..b4934b5
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/bottom-info.blade.php
          @@ -0,0 +1,7 @@
          +<div class="row">
          +  <p class="span-red">My First and Last Name is and ONLY is&nbsp; <span class="span-ul">{{$universal['name']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-red">My Address Street Number, Street Name, City, and State is and only is</p>
          +  <p class="span-ul">{{$universal['address']}}</p><br>
          +</div>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/partial/content.blade.php b/resources/views/lg/pdf/partial/content.blade.php
          new file mode 100644
          index 0000000..72a800e
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/content.blade.php
          @@ -0,0 +1,11 @@
          +@foreach ($content as $key => $obj)
          +
          +	<?php if(array_key_exists($key,$content_image)) {?>
          +		<div class="col-md-8 text-center">
          +		<img src="<?php echo asset($content_image[$key])?>" width="500" height="400">
          +	</div><br>
          +	<?php } ?>
          +	<div class="cb-content">{!! $obj !!}</div>
          +@endforeach
          +
          +
          diff --git a/resources/views/lg/pdf/partial/img_bottom.blade.php b/resources/views/lg/pdf/partial/img_bottom.blade.php
          new file mode 100644
          index 0000000..ad6066f
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/img_bottom.blade.php
          @@ -0,0 +1,12 @@
          +
          +    @foreach ($img_bottom as $key => $obj)
          +        <div class="row">
          +            <div class="col-md-12 text-center">
          +                {!! $obj !!}
          +<!--                <img style="width: 100%;margin-top: 20px" src="{{asset(getPublicFile($obj))}}" >-->
          +            </div>
          +        </div>
          +    @endforeach
          +
          +
          +
          diff --git a/resources/views/lg/pdf/partial/negative_keys.blade.php b/resources/views/lg/pdf/partial/negative_keys.blade.php
          new file mode 100644
          index 0000000..946158b
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/negative_keys.blade.php
          @@ -0,0 +1,4 @@
          +<p > <strong class="clr-red">? </strong>&nbsp;&nbsp;= <span class="bg-light-red">Data Point is QUESTIONABLE in its reporting</span>
          +<br> <strong class="clr-red">I </strong>&nbsp;&nbsp;= <span class="bg-light-red">Data Point is INCONSISTENTLY reported across displayed bureaus, an infraction of the 5th point of Metro 2 Five points of compliance!</span>
          +<br> <strong class="clr-red"> M </strong>&nbsp;&nbsp;= <span class="bg-light-red">Data Point is MISSING and or is DEFICIENTLY reported as compared to what is most likely information that SHOULD OF BEEN adequately reported!</span>
          +<br> <strong class="clr-red"> U </strong>&nbsp;&nbsp;= <span class="bg-light-red">Data Point is else wise UNPROVEN , as reported! Undocumented claims can NOT be assumed valid nor compliantly reported!</span></p>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/partial/pinfo.blade.php b/resources/views/lg/pdf/partial/pinfo.blade.php
          new file mode 100644
          index 0000000..78a94f1
          --- /dev/null
          +++ b/resources/views/lg/pdf/partial/pinfo.blade.php
          @@ -0,0 +1,6 @@
          +<div class="row">
          +  <p class="span-blue">My Personal Tracking Number is &nbsp; <span class="span-ul">{{$universal['p_tracking_number']}}</span></p>
          +</div>
          +<div class="row">
          +  <p class="span-blue">Destination of my Consumer Complaint is &nbsp; <span class="span-ul">{{$destination}}</span></p>
          +</div>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/temp.html b/resources/views/lg/pdf/temp.html
          new file mode 100644
          index 0000000..9a0c069
          --- /dev/null
          +++ b/resources/views/lg/pdf/temp.html
          @@ -0,0 +1,62 @@
          +<p><strong>Today&rsquo;s Date is</strong><strong> ________&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>Credit Report Data Resource or Monitoring</strong> <strong>_________</strong></p>
          +<p><strong>&nbsp;</strong></p>
          +<p><strong>My First and Last Name is and ONLY is&nbsp; </strong><strong>__________________________</strong></p>
          +<p><strong>My</strong><strong> Address Street Number, Street Name, City, and State is and only is </strong><strong>_________________________________________________________________</strong><strong>&nbsp;&nbsp;&nbsp; </strong></p>
          +<p><strong>&nbsp;</strong></p>
          +<p><strong>My</strong><strong> true Date of Birth is and ONLY is ____________________ </strong></p>
          +<p><strong>My current complete lawfully acquired Social Security Number&rsquo;s Last Four is and ONLY is _________&nbsp; </strong></p>
          +<p>&nbsp;</p>
          +<p>****To begin, I would like to ensure you have and ONLY RETAIN current, TRUE, CORRECT, COMPLETE, and MANDATED REPORTED information per FCRA regulations, any and all others I DEMAND, as is my lawful RIGHT(s) to do so, that you annul any and all deficient of any condition, mentioned or not! I DO NOT AUTHORIZE you to mis-report any mis-information now or ever, please review and ENSURE your adequate and full accordance to the laws upon which govern your practice of reporting consumer credit profiles.</p>
          +<p>(a)I do NOT have any requisite OTHER NAMES or aliases and I do NOT desire any OTHER NAMES or aliases to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(b)I do NOT have any requisite OTHER CURRENT addresses and I do NOT desire any OTHER</p>
          +<p>ADDRESSES to be retained or reported, if ANY DELETE NOW or produce PROOF of your legitimate</p>
          +<p>AUTHORITY to retain much less report without infringing my consumer rights</p>
          +<p>(c )I do NOT have any requisite OTHER SSNs and I do NOT desire any OTHER SSNs to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(d)I do NOT have any requisite OTHER Dates of Birth and I do NOT desire any OTHER Dates of Birth to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(e)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(f)I do NOT have any requisite employers and I do NOT desire any employers to be retained or reported, if</p>
          +<p>ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(g)I do NOT have any requisite spouses/ roommates/ co-applicants and I do NOT desire any spouses/ roommates/ co-applicants to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer rights.</p>
          +<p>(h)I do NOT have any requisite telephone numbers and I do NOT desire any telephone numbers to be retained or reported, if ANY DELETE NOW or product PROOF of your legitimate AUTHORITY to retain much less report without infringing my consumer right</p>
          +<p><strong>My Personal Tracking Number is ______________________________________</strong></p>
          +<p><strong><em><u>Destination</u></em></strong><strong>&nbsp; of my Consumer Complaint is :</strong></p>
          +<p><strong>________________________________</strong><strong>&nbsp; </strong></p>
          +<p><strong>________________________________&nbsp;&nbsp;&nbsp; </strong></p>
          +<p><strong>________________________________&nbsp;&nbsp; </strong></p>
          +<p><strong>________________________________</strong></p>
          +<p><strong>&nbsp;</strong></p>
          +<p><strong>RE:</strong> <strong><em><u>PROBLEMATIC</u></em></strong><strong><em><u></u></em></strong> <strong><em><u></u></em></strong><strong><em><u>PERSONAL</u></em></strong><strong><em><u></u></em></strong> <strong><em><u></u></em></strong><strong><em><u>IDENTIFIER</u></em></strong><strong><em><u></u></em></strong> <strong><em><u></u></em></strong><strong><em><u>MISINFORMATION</u></em></strong><strong><em><u></u></em></strong> <strong><em><u></u></em></strong><strong><em><u>DEFICIENT</u></em></strong><strong><em><u></u></em></strong> <strong><em><u></u></em></strong><strong><em><u>OF</u></em></strong><strong><em><u></u></em></strong> <strong><em><u>mandatory </u></em></strong><strong><em><u>COMPLIANT REPORTING</u></em></strong>! ATTENTIVELY REVIEW my formal writ composed DECLARATION of Not Proven Compliant Misinformation that is all or in part: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! To be clear, you are mandated by laws to eliminate every notation and or aspect of any and all derogatory and adversary items from any and all alleged claims still yet unproven to be true, correct, complete, timely, documented as being mine, testimonial to be of my responsibility, with FCRA compliance, and/or CRSA CDIA Metro 2 COMPLIANT reporting. FEDERAL laws dictate that any and all derogatory or potentially injurious reporting MUST be all of the aforementioned and can NOT BE ASSUMED without undoubted CERTIFIABLE testimonial of FACTs ensuring the physically verifiability of the CONFIRMED manual validation of any item upon a consumer complaint, such as is this notice here and now. Please RETURN to or retain federally lawful reporting with your unwavering and unconditional annulment of every single one even each any and or all of the allegations accused of me deficient of physical evidence to every and all aspects of said claims, be them true or not.</p>
          +<p><strong><u>To </u></strong><u></u><strong><u>whom it</u></strong><u> </u><strong><u>might</u></strong> <strong><u>concern</u></strong><u></u> <strong>,</strong></p>
          +<p>&nbsp; &nbsp; Recently, I contacted your firm with a formal dispute under the Fair and Accurate Credit Transactions Act of 2003. Specifically, Title 1 sec. 151 which reserves the right of the consumer to collect proof of an identity theft.&nbsp; No matter if you or a third party has collected this information, you must have adequate records to substantiate the erroneous information, if not it is UNVERIFIEABLE and CANNOT be reported.&nbsp; Tort law is quite clear in this matter!&nbsp; You have 5 days to DELETE the ITEM and provide me with written verification of that DELETION for my records. If you choose not to, I will have no choice but commence the unpleasantness of a Section 1024.35 (Notice of Error) under CFPB regulations which will of course to a summary finding and a civil action against your firm that you cannot win . I am filing this lawfully applied written consumer complaint requesting proof of certified compliant reporting(s) of these particular items that you are reporting under FACTA Title 1 sec. 151 that specifically requires a description of the procedure used by your agency in obtaining this personal identifier information that I believe is incorrect, including if this was obtained by a third party Information Broker and sold to your firm. I have enclosed copies of my state issued identification and Social Security card to validate my identity.&nbsp; I believe that this false information that you are reporting is directly resulting in incorrect account mergers onto my credit file and that this is harming my credit score. Please delete this erroneous information immediately! .   I  believe  that  this false  and  or  misleading   information  that you &nbsp;are reporting is likely  directly  resulting  in  or &nbsp;will &nbsp;in future result in  incorrect account mergers onto my credit file and  that this  is &nbsp;injurious to  my credit report health and credit score wealth. <strong>The</strong> <strong>FOLLOWING</strong> <strong>reporting</strong> <strong>derogatory</strong> <strong>allegations</strong> <strong>of</strong> <strong>information</strong> <strong>are</strong> <strong>either UNTRUE,</strong> <strong>INCORRECT,</strong> <strong>INCOMPLETE,</strong> <strong>UNTIMELY,</strong> <strong>NOT</strong> <strong>MINE,</strong> <strong>NOT</strong> <strong>MY</strong> <strong>RESPONSIBILITY,</strong> <strong>or</strong> <strong>otherwise NOT</strong> <strong>PROVEN</strong><strong> COMPLIANT</strong> <strong>to</strong> <strong>regulatory</strong> <strong>federal</strong> <strong>reporting</strong> <strong>laws</strong> <strong>and</strong> <strong>or</strong> <strong>standards</strong> <strong>and</strong> <strong>MUST</strong> <strong>be</strong> <strong>eradicated immediately,</strong> <strong>do</strong> <strong>so</strong> <strong>TODAY,</strong> <strong>even</strong> <strong>right</strong> <strong>NOW!</strong> <strong>The</strong> <strong>obvious</strong> <strong>infractions</strong> <strong>are</strong> <strong>as</strong> <strong>follows: </strong><strong><em><u>Please </u></em></strong><strong><em><u> </u></em></strong><strong><em><u>delete</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>this</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> questionably reported or even </u></em></strong><strong><em><u>erroneous</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>information</u></em></strong><strong><em><u></u></em></strong> <strong><em><u> </u></em></strong><strong><em><u>immediately!</u></em></strong><strong><em><u></u></em></strong><strong><em><u>&nbsp; </u></em></strong></p>
          +<p>___________________________________________________________</p>
          +<p>___________________________________________________________</p>
          +<p>___________________________________________________________</p>
          +<p>___________________________________________________________</p>
          +<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THE ABOVE LISTED REPORTED PERSONAL INFORMATION IS CURRENTLY REPORTING DEFICIENT OF FEDERAL AND STATE REQUISITE REPORTING COMPLIANCES TO INCLUDE METRO 2 DATA FIELD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FORMATTED REGULATORY REPORTING STANDARDS OF EXACTNESS AND OR UNDENIABLE AND IRREFUTABLE UNDOUBTED PROOF IN REGARDS TO A DOCUMENTED TESTIMONIAL CERTIFICATE OF FACTS AS TO THE CURRENT STATUS, TRUTH, CORRECTNESS, COMPLETENESS,TIMELINESS,OWNERSHIPS, RESPONSIBILITIES, FCRA COMPLIANCE, AND OR  METRO 2 COMPLIANT  REPORTING. NO ENTITY RETAINS ANY RIGHTS TO ERADICATE ITS LIABILITIES FOR INFRINGEMENT OF CONSUMER&nbsp;&nbsp;&nbsp;  AND OR CIVIL RIGHTS WITH INJURIOUS,UNETHICAL,UNTRUE,INCORRECT,  INCOMPLETE,UNTIMELY,OR ELSE WISE UNPROVEN TO BE ENTIRELY COMPLIANT REPORTING  TO EVERY ASPECT OF MANDATED LAWS ,REGULATIONS, PRECEDENCE, AND OR STANDARDS OF ACCEPTABLE REPORTING PRACTICES. PLEASE ANNUL BY FULL AND PERMANENT DELETION OF ANY AND ALL ASPECTS OF THE NOTED UNLAWFULLY AND NOT PROVEN COMPLIANT ALLEGATIONS that currently reported, as well as any NOT EXACTLY as I have displayed as being uncontested as factually my FIRST and LAST NAME, address STREET NUMBER and STREET NAME, ADDRESS CITY AND STATE, DATE OF BIRTH, and SOCIAL SECURITY LAST FOUR! Please Provide Physical Proof of COMPLIANCE and Verification. If not physically irrefutable you are not authorized to retain or report this allegation so annul in brief today even right now or certificate that your testimony proves compliance and accuracy of every and one even each any and all OF THE data aspects. Subterfuge is not lawful, I demand that you return to or retain compliance as mandated and do so without injury AND or prejudices towards me now or thereafter.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Might it be known that THIS LETTER of consumer check and challenge for lawful reporting compliance is my officially composed writ formal complaint that you are reporting one or more of the following, ILLEGALLY mind you:</p>
          +<p>i)Your reporting is unproven to be TRUE, so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>ii)Your reporting is unproven to be Correct (and regulations are CLEAR on accuracy being undoubted and irrefutable),so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>iii)Your reporting is unproven to be COMPLETE (and regulations are CLEAR on mandates to be fully COMPLETE in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>iv)Your reporting is unproven to be TIMELY (and regulations are CLEAR on mandates to be fully CURRENT and TIMELY in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>v)Your reporting is unproven to be of MY OWNERSHIP(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chichanary lead subterfuge.</p>
          +<p>vi)Your reporting is unproven to be of MY RESPONSIBILITY(and regulations are CLEAR on mandates to be fully CONFIDENT in the assignment of OWNERSHIP and or even RESPONSIBILITY to any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>vii)Your reporting is unproven to be of FCRA COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge.</p>
          +<p>vi)Your reporting is unproven to be of CRSA enacted CDIA METRO 2 DATA FIELD FORMATTED</p>
          +<p>REGULATORY REPORTING COMPLIANCE (and regulations are CLEAR on mandates to be fully CONFIDENT in the assumption of FULL unmistakable COMPLIANCE to any and all standards of practice as related to the reporting of any potentially injurious claim in the application of exacting and reliably consistent precision of any data for reporting being undoubted and irrefutable) ,so legally there can be no truth assumed to the allegations of which you report in chicanery lead subterfuge. The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, <em><u>e-Oscar</u></em> is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, there must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state&rsquo;s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.) Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE? Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE! Injury causing subterfuge is unlawful to retain. You are not Authorized to report or even once alleged adverse remark unproven upon a requested compliance check. You must Annul in brief, even right now and right here, by complete and permanent deletion any or even one not irrefutable allegation(s) deficient of physical composed writ certificate(s) in testimony of the exact and full truth, correctness, timeliness, completeness, ownership, responsibility, and or documented evidence of precise and willfulness to comply with every single one even any and or all of the requisite mandates/statutes/acts/obligations/and or laws related and pertinent to legal reporting of any information, known or not. Attest now to the metro-2 required truth, accuracy, fullness, timeliness, ownership, responsibility and or compliance(s) otherwise, whether mentioned or not. Ignorance of obligations to compliant reporting is NOT lawful exoneration of your responsibility to 100% accurate, true, and metro-2 compliant data formatted reporting regulations of which you are obligated. Federal laws allow me to compel you to retain and or return adequate accountability. Failure or unwillingness to do so might be remedied and rectified in my favor per monetary compensation for your infringements of my civil and or consumer rights and violations of the laws required of you. Right now demonstrate to me any and all applicable metro-2 reporting mandates including but not limited to every date and balance, each calculation and audit, the invoices and documented current identities, every notation not to forget the five (5) portioned personal identifiers, 426 character P-6 statements, alpha/numeric/ and or alphanumeric source codes, every applicable creditor classification code(s), the 3 applicable and precise sequenced 386 pieces of confirmation to collect(-ions) or any obligation else-wise. Return or Retain federally required compliance with your immediate and dull eradication of any and one of the adverse and or derogatory claims or any aspects of. Prove compliance or delete ASAP!!! Let this notice of my official writ composed DECLARATION of Not Proven Compliant Misinformation that is either or all of the following: DEFICIENT of adequate current status in fullness of TRUTH, ACCURACY, COMPLETENESS, TIMELINESS, documented OWNERSHIP, certifiable RESPONSIBILITY, or otherwise irrefutable compliant obligatory and regulatory requisite compliant reporting thereby mandating your immediate actions to rectify and remedy and any all infraction-ious behavior(s) by retaining or returning to DEMONSTRATED TRUE, CORRECT, COMPLETE, and COMPLIANT METRO 2 data field formatted reporting! Please provide me with all of the information you used for your investigation, as required by FCRA 611 (a) (7).Please reply within 10 days or delete the negative items, as originally requested. If you FAIL to respond to this demand and tort notification, your firm will be added to the pending action as complicit in this data breach of my personal information.</p>
          +<p>1. Tell me in writing what information you refuse to remove and why.</p>
          +<p>2. Tell me in writing what you did to determine that the information was accurate.&nbsp;</p>
          +<p>3. Note the information as disputed BY the CONSUMER on my credit report.</p>
          +<p>According to the Fair Credit Reporting Act, Section 609 (a)(1)(A), you are required by federal law to verify - through the physical verification of the original signed consumer contract - any and all accounts you post on a credit report. Otherwise, anyone paying for your reporting services could fax, mail or email in even a potentially fraudulent account. According to the provisions of the Fair Credit Reporting Act &sect; 611(a) [15 USC 1681i(a)], these disputed items must be reinvestigated or deleted from my credit record within 30 days. During the investigation period, these items must be removed from my credit report as the mere reporting of items prior to debt validation constitutes collection activity. I am also requesting the names, addresses and telephone numbers of individuals you contacted during your investigation. Please notify me that the above items have been deleted pursuant to &sect; 611 (a)(6) [15 USC &sect; 1681j (a) (6)]. I am also requesting an updated copy of my credit report, which should be sent to the address listed below. According to the provisions of &sect; 612 [15 USC &sect; 1681j], there should be no charge for this report. If you have any questions or need additional information, please contact me at address noted below. I think 15-20 Days should be ample enough time to get this completed since this is my NOT my first time contacting your organization. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address The CRSA enacted CDIA Metro 2 compliant reporting format REQUIRES the precise and exact fully complete 426-character P-Segment or Trailing Segment that is to include the minimally five portioned PERSONAL IDENTIFIERS to which databasing of alleged tradeline information occurs. Per CRSA, auto-populating ANY data field input entry and or application of Slash Entries (such as 11111 or 00000,etc) into the Metro 2 system is automatic call for deletion due to any and all repeating entry as NULL and VOID. Moreover, the regulatory obligation dictates that any and all data furnishers MUST include an attached TRAILING SEGMENT that absolutely accurately and completely includes ALL of the account of allegation(s) specifics! Must be performed in a REAL-TIME browser LOCKDOWN to be lawful. Per CRSA implementation, if a data furnisher fails to respond within20 calendar days, e-Oscar is to terminate challenge in favor of consumers and or auto-escalate any and all consumer complaints to a certified Metro 2 compliance trained SPECIALIST. Being Phase III of the Implementation of the CRSA,SMART auto-responders are not compliant and unlawful if used by furnishers or accepted by CRAs. Federal laws mandate MANUAL ENTRY for any and all consumer's FULL P-Segment PREVIOUS coding for a RESPONSE, please certificate in testimonial fact to this occurring. Submit/re-submit shuffling to populate the metro 2 data fields are illegal. Responsible, Lawful, ethical, and compliant consumer credit reporting is the REQUISITE technical accuracy in EVERY single item retained and or reported to or by any consumer credit reporting agency. Metro 2 compliance requires exacting P-segment, to include the minimal five(5) portion personal identifiers as well as a PRECISELY and COMPLETELY FULL account trailing segment. Per the CRSA, any and all CRA insourced DISPUTE Specialist MUST BE Metro 2 Compliance Data Entry Evaluation CERTIFIED. Further, this qualifying certification can be REVOLVED by CONSUMER COMPLAINTS per the NYAG Signing Statement. I repeat, to lawfully retain and or report any claim of information, be it an account or any aspect of such, they must be irrefutable fullness in the truth of reporting, correctness of reporting, COMPLETENESS of reporting, TIMELINESS of reporting and of the reported allegations, undoubtable ownership, irrefutable responsibility of adverse claims, and or adequate and complete INFORMATIONAL COMPLIANCE to the CRSA enacted CDIA Metro 2 data field formatted reporting regulatory standards and obligations to include the 81-month time relevance of account reported/ how reported/when reported, PRESENT and RELEVANT PERSONAL IDENTIFIERS. Further lawful reporting demands that the regulatory compliance rules are applied EVENLY and thoroughly from data provider to consumer credit reporting repository. Accuracy and completeness of all of any and all information, particularly derogatory consumer information, must abide by every and one of current MY state&rsquo;s reporting regulations as well as those of federal laws ,even the CDIA METRO 2 COMPLIANCE standards due to the implementation of the Credit Reporting Settlement Agreement (CRSA.)</p>
          +<p>Is the Personal Identifier information alleged in the reported 426-character P-SEGMENT true, correct, and complete to standards of CERTIFIED METRO 2 COMPLIANCE?</p>
          +<p>Please demonstrate adequate proof of precisely true, accurate, and applicable VALIDATION of the claimed reported CREDITOR CLASSIFICATION CODES, or eradicate every single one and each any and all of the adversary derogatory accusations injuring me immediately, TODAY even NOW and HERE!</p>
          +<p>Please verify and validate physically each and every claim of this alleged yet unproven to be my responsibility or fault. Please demonstrate readily and timely the precise confirming facts of the alleged account including every single one even each any and or all of its article aspects by federal laws. You must willfully and promptly DELETE TODAY even right now the deficient reporting or else present to me true documented certificated proof of all data, every notation, date, balance, calculation, audit, personal identifiers, each of the requisite 426-characters of the exact and fully compliant P6 statement, any alpha/numeric and or alphanumeric source4 code deciding the leftness or rightness states, and even every aspect of the mandated 386 pieces of confirmation to collection.</p>
          +<p>This series of misreporting seems to me clearly involves a universal and complete failure by your firm to obtain, retain, maintain, and utilize adequate and lawful regulatory compliant and reasonable procedures to assure maximum possible accuracy of consumer credit information as described in at least 15 U.S.C. &sect; 1681. There is little doubt that you have no evidence that this clearly does belong to me, is exactly true, fully complete, within timely definition per federal standards and has been erroneously placed onto my credit report. The items of problematic accusations that I believe to be incorrect to its proper reporting and allowance of reporting per my state and federal laws are detailed IN CLARITY  above. FURTHER,CONFIRM the five key components of our individual identities in case this data breach becomes yet another case potentially leading to my inclusion as a victim of fraud and or of identity theft due to YOUR DEFICIENT and NOT PROVEN COMPLIANT RETAINING and or REPORTING of consumer records, particularly that of personal identifiers. Therefore, I must request that your bureau confirm in writing the following personal information: 1- FULL LEGAL NAME as it Appears on my Credit report 2- Legal Address of Record 3- SSN # (or redacted last 4 digits) 4- Date of Birth 5- Zip Code for my Home Address Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. Your failure to demonstrate the REQUIRED presentation of composed PROOF as demanded in this declaration would compel me to consult my consumer complaint lawfully to the members of the NCRWG, as undoubtedly reporting not only must be true, timely, and accurate but also in its COMPLETENESS of DATA ENTRY presented to any entity INCLUDING all consumer reporting repositories. By the provisions of the Fair Credit Reporting Act and per the standards of reporting compliance implemented with the CRSA enacted CDIA Metro 2 COMPLIANCE regulations, I demand that these above mentioned derogatory items be investigated and permanently removed from my report. It is my understanding that you will recheck these items with the creditor who has posted them. Please remove any information that the creditor cannot verify. I understand that under 15 U.S.C. Sec. 1681i(a), you must complete this reinvestigation within 30 days of receipt of this letter.</p>
          +<p>Please send an updated copy of my credit report to the above address. According to the act, there shall be no charge for this updated report. I also request that you please send notices of corrections to anyone who received my credit report in the past six months<strong>. </strong></p>
          +<p><strong>Thank</strong><strong></strong> <strong></strong><strong>you</strong><strong></strong> <strong></strong><strong>for</strong><strong></strong> <strong></strong><strong>your</strong><strong></strong> <strong></strong><strong>time</strong><strong></strong> <strong></strong><strong>and</strong><strong></strong> <strong></strong><strong>help</strong><strong></strong> <strong></strong><strong>in</strong><strong></strong> <strong></strong><strong>this</strong><strong></strong> <strong></strong><strong>matter. </strong></p>
          +<p><strong>Sincerely,&nbsp; </strong></p>
          +<p><strong>My First and Last Name is and ONLY is&nbsp; </strong><strong>__________________________</strong></p>
          +<p><strong>My Address Street Number, Street Name, City, and State is and only is </strong><strong>_________________________________________________________________</strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>&nbsp;</strong></p>
          +<p><strong>Please</strong> <strong>see</strong> <strong>enclosed</strong> <strong>document</strong> <strong>evidence</strong> <strong>of</strong> <strong>my</strong> <strong>Proof</strong> <strong>of</strong> <strong>identification, Proof</strong> <strong>of</strong> <strong>residence</strong> <strong>or</strong> <strong>mailing</strong> <strong>address, and Proof</strong> <strong>of</strong> <strong>social</strong> <strong>security</strong> <strong>number.</strong></p>
          +<p>&nbsp;</p>
          +<p>&nbsp;</p>
          +<p>&nbsp;</p>
          +<p>&nbsp;</p>
          \ No newline at end of file
          diff --git a/resources/views/lg/pdf/template-mapping.blade.php b/resources/views/lg/pdf/template-mapping.blade.php
          new file mode 100644
          index 0000000..acc117e
          --- /dev/null
          +++ b/resources/views/lg/pdf/template-mapping.blade.php
          @@ -0,0 +1,57 @@
          +Ew2L2D20 bureaus for INQUIRY(ies) = 18
          +Ew2L3D20 Data Furnisher Creditor Collector for INQUIRY(ies) =  19
          +Ew3L1AD60 EQUIFAX CORP Bureau for INQUIRY(ies)  ====20
          +Ew3L1BD60 TRANS UNION  CORP Bureau for INQUIRY(ies) ==21
          +Ew3L1CD60 EXPERIAN NORTH AMERICA Bureau for INQUIRY(ies)  ==22
          +
          +Ew4L1AD80 EQUIFAX CORPORATION bureaus for INQUIRY(ies)   ===23
          +Ew4L1BD80 EXPERIAN GC bureaus for INQUIRY(ies)   ===24
          +Ew4L1CD80 TRANS UNION SrGC bureaus for INQUIRY(ies) ==25
          +Ew4L2D60 DF to Office of GC  for INQUIRY(ies) == 26
          +Ew5L1D80 Bureaus and CFPB  for INQUIRY(ies)  == 27
          +Ew6L1D100 Bureaus and DOE for CFPB  for INQUIRY(ies) == 28
          +Ew1L18D1  DF for general Other    =29
          +EW2L17D20  DF for general or other      = 30
          +EW3L14D40 DF for General or Other     =31
          +EW4L10D60 DF for General or Other         =32
          +EV-LG COLLECTION DISPUTE W2 DF Creditor collector = 33
          +
          +Ew2L1D20 bureaus for Personal Identifier Information =34
          +Ew2L2D20 bureaus for INQUIRY(ies)  =  35
          +Ew2L3D20 Data Furnisher Creditor Collector for INQUIRY(ies) =36
          +Ew2L6AD40   US Department of Education for Student Loan deletion attempt = 37
          +Ew2L7D20 DF DC DB for ALL STUDENT LOANS for DELETION attempt =38
          +Ew2L8D20 Bureaus for regular non medical collection accounts  =39
          +Ew2L9D20 DF DC DB for LATE COLLECT and COFF   that is DATA FURNISHER for ANY LATE PAYMENT account or ANY collection account or ANY charge off account  = 41
          +Ew2L12D20 Bureaus for CHARGE OFF  =42
          +EW2L16D20 bureaus for General or “OTHER” for DELETION = 43
          +EW2L17D20  DF for general or other = 44
          +
          +Ew3L1AD40 EQUIFAX CORP Bureau for INQUIRY(ies) = 45 
          +Ew3L1BD40 TRANS UNION  CORP Bureau for INQUIRY(ies) = 46
          +Ew3L1CD40 EXPERIAN NORTH AMERICA Bureau for INQUIRY(ies) = 47
          +Ew3L3AD40 Experian CORP for Student Loans Deletion Attempt =48
          +Ew3L3BD40 EQUIFAX Corp for Student Loans Deletion Attempt  = 49
          +Ew3L3CD40 Trans Union Corporation  for Student Loans Deletion Attempt = 50
          +Ew3L5D40 BUREAUS for all Collections and Charge Offs and LATES other than Student Loan ones = 51
          +Ew3L6D40 for DF DC DB attacking any non SL LATES and any COLLECTIONS and any CHARGE OFFS  = 52
          +EW3L13D40 bureaus for General or “OTHER” for DELETION  = 53
          +EW3L14D40 DF for General or Other   = 54
          +Ew4L1AD60 EQUIFAX CORPORATION bureaus for INQUIRY(ies) = 55
          +Ew4L1BD60 EXPERIAN GC bureaus for INQUIRY(ies) = 56
          +Ew4L1CD60 TRANS UNION SrGC bureaus for INQUIRY(ies)  = 57
          +Ew4L2D60 DF to Office of GC  for INQUIRY(ies)   = 58
          +EW4L9D60 bureaus for General or “OTHER” for DELETION = 59
          +EW4L10D60 DF for General or Other   = 60
          +Ew4L11AD60 EXPERIAN NORTH AMERICA  for Student Loan Deletion Attempt = 61
          +Ew4L11BD60 EQUIFAX CORPORATION  for Student Loan Deletion Attempt  = 62
          +Ew4L11CD60 Trans Union Corporation   for Student Loan Deletion Attempt = 63
          +Ew5L2D80 DF for INQUIRY(ies)  = 64
          +EW5L7D80 bureaus for General or “OTHER” for DELETION  = 65
          +Ew5L9AD80  EXPERIAN CORPORATION for STUDENT LOAN deletion attempt  = 66
          +Ew5L9BD80  EQUIFAX CORPORATION for STUDENT LOAN deletion attempt  = 67
          +Ew5L9CD80  Trans Union Corporation for STUDENT LOAN deletion attempt = 68
          +Ew5L1D80 Bureaus AND CFPB for INQUIRY(ies) = 69
          +Ew6L1D100 Bureaus and DOE for CFPB  for INQUIRY(ies)  = 70
          +EW6L3D100 bureaus for General or “OTHER” for DELETION = 71
          +Ew6L5D100 bureau AND OR DATA FURNISHERS for Personal Identifiers = 72
          \ No newline at end of file
          diff --git a/resources/views/partials/admin_info.blade.php b/resources/views/partials/admin_info.blade.php
          new file mode 100644
          index 0000000..0c5c378
          --- /dev/null
          +++ b/resources/views/partials/admin_info.blade.php
          @@ -0,0 +1,94 @@
          +@push('css')
          +    <link href="{{ asset('css/payment_setting.css') }}" rel="stylesheet">
          +@endpush
          +
          +<div id="admin-info-modal" class="modal fade" role="dialog" style="padding-top: 50px">
          +    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xs-12 mx-auto">
          +        <div class="modal-dialog modal-dialog-centered">
          +            <!-- Modal content-->
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h4 class="modal-title">Admin Information </h4>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="admin-info-modal">
          +                        <div class="container-fluid py-3">
          +
          +                            <div class="row">
          +
          +                                <div class="card-body">
          +                                    <form action="{{route('change.admin_info')}}" method="post" id="admin_info_form"
          +                                          class="needs-validation">
          +                                        @csrf
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <label>Email</label>
          +                                                <input id="email" name="email" type="text"
          +                                                       value="{{auth()->user()->email}}"
          +                                                       class="form-control"
          +                                                       autocomplete="off" >
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <label>Current Password</label>
          +                                                <div class="input-group" id="show_hide_password">
          +                                                    <input id="current_password" name="current_password"  value="{{customDecrypt(auth()->user()->password)}}" type="password"
          +                                                           class="form-control" autocomplete="off" placeholder="Current Password">
          +                                                    <div class="input-group-addon">
          +                                                        <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                                                    </div>
          +                                                </div>
          +
          +                                            </div>
          +
          +                                        </div>
          +{{--                                        <div class="form-row">--}}
          +{{--                                            <div class="form-group col-md-12 col-xs-12">--}}
          +{{--                                                <label>Change Password</label>--}}
          +{{--                                                <div class="input-group" id="show_hide_password">--}}
          +{{--                                                    <input id="change_password" name="change_password" type="password"--}}
          +{{--                                                           class="form-control"--}}
          +{{--                                                           autocomplete="off" placeholder="Change Password">--}}
          +{{--                                                    <div class="input-group-addon">--}}
          +{{--                                                        <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>--}}
          +{{--                                                    </div>--}}
          +{{--                                                </div>--}}
          +
          +{{--                                            </div>--}}
          +{{--                                        </div>--}}
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <button  type="submit"
          +                                                        class="btn btn-info btn-block">
          +                                                    <i class="fa fa-lock fa-lg"></i>&nbsp;
          +                                                    <span>Save Changes</span>
          +
          +                                                </button>
          +                                            </div>
          +                                        </div>
          +
          +                                    </form>
          +
          +                                </div>
          +
          +                            </div>
          +                        </div>
          +
          +                    </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +
          +        </div>
          +    </div>
          +</div>
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/adminsidemenu.blade.php b/resources/views/partials/adminsidemenu.blade.php
          new file mode 100644
          index 0000000..b299291
          --- /dev/null
          +++ b/resources/views/partials/adminsidemenu.blade.php
          @@ -0,0 +1,107 @@
          +
          +<div class="col-md-3 left_col">
          +    <div class="left_col scroll-view">
          +        <div class="navbar nav_title" style="border: 0; background-color: #fff; text-align: center;">
          +            <a href="{{ url('/') }}" class="site_title"><img src="{{ asset('images/logo.png') }}"></a>
          +        </div>
          +
          +        <div class="clearfix"></div>
          +
          +        <!-- menu profile quick info -->
          +        <div class="profile clearfix">
          +            <h2 class="welcome-t">Welcome</h2>
          +            <div class="profile_pic">
          +                @if(empty(Auth::user()->photo))
          +                    <img src="{{ asset('images/user.png') }}" alt="profile picture"
          +                         class="img-circle profile_img">
          +                @else
          +                    <img src="{{ url('/') }}/public/images/{{Auth::user()->photo}}" alt="profile picture"
          +                         class="img-circle profile_img">
          +                @endif
          +            </div>
          +            <div class="profile_info">
          +                <h2>{{ Auth::user()->firstname }} {{ Auth::user()->lastname }}</h2>
          +            </div>
          +        </div>
          +        <!-- /menu profile quick info -->
          +
          +        <!-- sidebar menu -->
          +        <div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
          +            <div class="menu_section">
          +                <h3>Menu</h3>
          +                <ul class="nav side-menu">
          +                   @if(isShowContent('get.clients'))
          +                        @php
          +                            $is_menu_active = request()->routeIs('get.clients') || request()->routeIs('get.client.info') || request()->routeIs('client.create');
          +                        @endphp
          +                    <li class="{{ $is_menu_active ? 'current-page' : '' }}">
          +                        <a href="{{ route('get.clients') }}"><i class="fa fa-user"></i> Client Management</a>
          +                    </li>
          +                    @endif
          +                   @if(isShowContent('training_video.list'))
          +                    <li class="{{ request()->routeIs('training_video.list') ? 'current-page' : '' }}">
          +                        <a href="{{ route('training_video.list') }}">
          +                            <i class="fa fa-youtube-play"></i>
          +                            Training Video
          +                        </a>
          +                    </li>
          +                   @endif
          +                   @if(isShowContent('sales.report'))
          +                    <li class="{{ request()->routeIs('sales.report') ? 'current-page' : '' }}">
          +                        <a href="{{ route('sales.report') }}">
          +                            <i class="fa fa-shopping-cart" aria-hidden="true"></i>
          +                            Sales Report
          +                        </a>
          +                    </li>
          +                   @endif
          +                  @if(isShowContent('terms.of.service'))
          +                    <li class="{{ request()->routeIs('terms.of.service') ? 'current-page' : '' }}">
          +                        <a href="{{route('terms.of.service')}}">
          +                            <i class="fa fa-file" aria-hidden="true"></i>
          +                           Terms And Service
          +                        </a>
          +                    </li>
          +                    @endif
          +                       @if(isShowContent('employee.list'))
          +                         @php
          +                             $is_menu_active = request()->routeIs('employee.list')||request()->routeIs('create.employee')|| request()->routeIs('get.employee.info');
          +                         @endphp
          +
          +                           <li class="{{ $is_menu_active ? 'current-page' : '' }}">
          +                               <a href="{{route('employee.list')}}">
          +                                   <i class="fa fa-user" aria-hidden="true"></i>
          +                                   Employee Management
          +                               </a>
          +                           </li>
          +
          +                       @endif
          +                       @if(isShowContent('view.provider.link'))
          +                           <li class="{{ request()->routeIs('view.provider.link') ? 'current-page' : '' }}">
          +                               <a href="{{route('view.provider.link')}}">
          +                                   <i class="fa fa-file" aria-hidden="true"></i>
          +                                   Credit Report Provider
          +                               </a>
          +                           </li>
          +                       @endif
          +                       @if(isAdmin())
          +                       <li class="{{ request()->routeIs('list.client.support') ? 'current-page' : '' }}">
          +                           <a href="{{ route('list.client.support') }}">
          +                               <i class="fa fa-user"></i>
          +                               Support
          +                           </a>
          +                       </li>
          +                       @endif
          +                       @if(isSupport())
          +                           <li class="{{ request()->routeIs('list.iq.history') ? 'current-page' : '' }}">
          +                               <a href="{{ route('list.iq.history') }}">
          +                                   <i class="fa fa-file"></i>
          +                                   Iq Call Histories
          +                               </a>
          +                           </li>
          +                       @endif
          +
          +                </ul>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          diff --git a/resources/views/partials/admintopbar.blade.php b/resources/views/partials/admintopbar.blade.php
          new file mode 100644
          index 0000000..33302d2
          --- /dev/null
          +++ b/resources/views/partials/admintopbar.blade.php
          @@ -0,0 +1,76 @@
          +<style>
          +    .badge {
          +        position: relative;
          +        top: -15px;
          +        left: -25px;
          +        border: 1px solid red;
          +        border-radius: 50%;
          +        background-color: red;
          +    }
          +</style>
          +
          +<!-- top navigation -->
          +<div class="top_nav">
          +    <div class="nav_menu">
          +        <nav>
          +            <div class="nav toggle">
          +                <a id="menu_toggle"><i class="fa fa-bars"></i></a>
          +            </div>
          +
          +            <ul class="nav navbar-nav navbar-right">
          +                <li class="nav-item">
          +                    <a href="javascript:;" class="user-profile dropdown-toggle" data-toggle="dropdown"
          +                       aria-expanded="false">
          +                        @if(empty(Auth::user()->photo))
          +                            <img src="{{ asset('images/user.png') }}" alt="profile picture">
          +                        @else
          +                            <img src="{{ url('/') }}/public/images/{{Auth::user()->photo}}" alt="profile picture">
          +                        @endif
          +                            @if(isAdmin())
          +                               {{__('Admin')}}
          +                            @else
          +                            {{ Auth::user()->first_name }} {{ Auth::user()->last_name }}
          +                            @endif
          +                        <span class=" fa fa-angle-down"></span>
          +                    </a>
          +                    <ul class="dropdown-menu dropdown-usermenu pull-right">
          +                        @if(isAdmin())
          +                        <li><a href="#" onclick="event.preventDefault();$(`#admin-info-modal`).modal('show')">
          +                                 {{__('Profile Change')}}
          +                            </a></li>
          +                        @endif
          +                        <li>
          +                            <form method="post" action="{{ route('user.logout') }}">
          +                                {{ csrf_field() }}
          +                                <button type="submit"
          +                                        style="background-color: #fff; border: none;margin-top: 10px; margin-left:13px; color: #5A738E;"
          +                                        data-toggle="tooltip" data-placement="top" title="Logout">Log Out <i
          +                                        class="fa fa-sign-out pull-right" style="margin-right: 15px;"></i></button>
          +                            </form>
          +                        </li>
          +                    </ul>
          +                </li>
          +                @include('partials.supportsubmenu')
          +
          +            </ul>
          +        </nav>
          +    </div>
          +</div>
          +@include('partials.admin_info')
          +<!-- /top navigation -->
          +@push('script')
          +    <script>
          +        $(document).ready(function () {
          +            common_helper.formValidate('#admin_info_form',
          +                { 'email': {required:true,email:true}, 'current_password': 'required'},
          +                {
          +                    'email': {required: "Please enter your email"},
          +                    'current_password': {required: "Please enter your Current Password"}
          +                }
          +            );
          +        })
          +        $("#show_hide_password a").on('click', function (event) {
          +            common_helper.globalPasswordView('#show_hide_password', event);
          +        });
          +    </script>
          +@endpush
          diff --git a/resources/views/partials/credit_report/account_history.blade.php b/resources/views/partials/credit_report/account_history.blade.php
          new file mode 100644
          index 0000000..71d6af1
          --- /dev/null
          +++ b/resources/views/partials/credit_report/account_history.blade.php
          @@ -0,0 +1,91 @@
          +
          +<table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +    <tbody>
          +    <tr>
          +        <td>
          +            <table cellspacing="0" width="558">
          +                <tbody>
          +                <tr class="table_headers">
          +                    <td class="sectionHeader" id="AccountHistory">
          +                        Account History
          +                    </td>
          +                </tr>
          +                </tbody>
          +            </table>
          +        </td>
          +    </tr>
          +    <tr>
          +        <td>
          +            <table border="0" cellpadding="0" cellspacing="0" width="560">
          +                <tbody>
          +                <tr>
          +                    <td class="crLightTableBackground" colspan="1" width="555">
          +                        <b>
          +                            At-a-glance viewing of your payment history
          +                        </b>
          +                        <br/>
          +                    </td>
          +                </tr>
          +                <tr>
          +                    <td class="crTableBackground" valign="top">
          +                        <img alt="Legend" border="0" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tu-legend-creditreport.gif"/>
          +                        <br/>
          +                    </td>
          +                </tr>
          +                </tbody>
          +            </table>
          +        </td>
          +    </tr>
          +    </tbody>
          +</table>
          +
          +@if(!empty($account_history_data_set['Revolving']))
          +    <div class="crTradelineGroupHeader" >
          +        <b>
          +            Revolving Accounts:
          +        </b>
          +        Accounts with an open-end term
          +    </div>
          +    @include('partials.credit_report.sub_account_history',['account_history_data'=>$account_history_data_set['Revolving']])
          +@endif
          +@if(!empty($account_history_data_set['Installment']))
          +    <div class="crTradelineGroupHeader" >
          +        <b>
          +            Installment Accounts:
          +        </b>
          +        Accounts comprised of fixed terms with regular payments
          +    </div>
          +    @include('partials.credit_report.sub_account_history',['account_history_data'=>$account_history_data_set['Installment']])
          +@endif
          +@if(!empty($account_history_data_set['Line_of_credit']))
          +    @include('partials.credit_report.sub_account_history',['account_history_data'=>$account_history_data_set['Line_of_credit']])
          +@endif
          +
          +@if(!empty($account_history_data_set['Collection']))
          +    <div class="crTradelineGroupHeader" >
          +        <b>
          +            Collection Accounts:
          +        </b>
          +         Accounts seriously past due
          +    </div>
          +    @include('partials.credit_report.sub_account_history',['account_history_data'=>$account_history_data_set['Collection']])
          +@endif
          +@if(!empty($account_history_data_set['Other']))
          +    <div class="crTradelineGroupHeader" >
          +        <b>
          +            Other:
          +        </b>
          +        Accounts in which the exact category is unknown
          +    </div>
          +    @include('partials.credit_report.sub_account_history',['account_history_data'=>$account_history_data_set['Other']])
          +@endif
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/consumer_statement.blade.php b/resources/views/partials/credit_report/consumer_statement.blade.php
          new file mode 100644
          index 0000000..c98f088
          --- /dev/null
          +++ b/resources/views/partials/credit_report/consumer_statement.blade.php
          @@ -0,0 +1,80 @@
          +
          +<table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560">
          +    <tbody>
          +    <tr>
          +        <td>
          +            <table cellspacing="0" width="560">
          +                <tbody>
          +                <tr>
          +                    <td style="font-family:Arial; font-size: 12px; font-weight:bold;">
          +                        Consumer Statement
          +                    </td>
          +                </tr>
          +                </tbody>
          +            </table>
          +        </td>
          +    </tr>
          +    </tbody>
          +</table>
          +<table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560">
          +    <tbody>
          +    <tr>
          +        <td>
          +            <table border="0" cellpadding="0" cellspacing="0" width="560">
          +                <tbody>
          +                <tr class="crLightTableBackground">
          +                    <td width="2%">
          +                    </td>
          +                    <td align="start" valign="top">
          +                        <br/>
          +                        <span class="tranUnionText">
          +             <b>
          +              TransUnion:
          +             </b>
          +            </span>
          +                        {{ getConsumerStatement($consumer_statement_data_set['TransUnion'])}}
          +                        <br/>
          +                    </td>
          +                </tr>
          +                <tr class="crTableBackground">
          +                    <td width="2%">
          +                    </td>
          +                    <td align="start" valign="top">
          +                        <br/>
          +                        <span class="experianText">
          +             <b>
          +              Experian:
          +             </b>
          +            </span>
          +                        {{ getConsumerStatement($consumer_statement_data_set['Experian'])}}
          +                        <br/>
          +                    </td>
          +                </tr>
          +                <tr class="crLightTableBackground">
          +                    <td width="2%">
          +                    </td>
          +                    <td align="start" valign="top">
          +                        <br/>
          +                        <span class="equifaxText">
          +             <b>
          +              Equifax:
          +             </b>
          +            </span>
          +
          +                           {{ getConsumerStatement($consumer_statement_data_set['Equifax'])}}
          +
          +                        <br/>
          +                        <br/>
          +                    </td>
          +                </tr>
          +                </tbody>
          +            </table>
          +        </td>
          +    </tr>
          +    </tbody>
          +</table>
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/creditor_contact.blade.php b/resources/views/partials/credit_report/creditor_contact.blade.php
          new file mode 100644
          index 0000000..416e6b6
          --- /dev/null
          +++ b/resources/views/partials/credit_report/creditor_contact.blade.php
          @@ -0,0 +1,91 @@
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td style="font-family:Arial; font-size: 12px; font-weight:bold;">
          +                                Creditor Contacts
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td class="inquiriesHeader" valign="top" width="3">
          +                            </td>
          +                            <td class="inquiriesHeader" colspan="1" width="255">
          +                                <b>
          +                                    Creditor Name
          +                                </b>
          +                                <br/>
          +                            </td>
          +                            <td class="inquiriesHeader" colspan="1" width="190">
          +                                <b>
          +                                    Address
          +                                </b>
          +                            </td>
          +                            <td class="inquiriesHeader" colspan="1" width="110">
          +                                <b>
          +                                    Phone Number
          +                                </b>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    @foreach($creditor_contact_data_set as $creditor_contact_data)
          +                        @php
          +                            $class = 'crLightTableBackground';
          +                               if($loop->even){
          +                                   $class = 'crTableBackground';
          +                               }
          +                        @endphp
          +                        <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                            <tbody>
          +                            <tr>
          +                                <td class="{{$class}}" valign="top" width="3">
          +                                </td>
          +                                <td class="{{$class}}" valign="top" width="255">
          +                                    {{$creditor_contact_data['name']}}
          +                                </td>
          +                                <td class="{{$class}}" valign="top" width="190">
          +                                    {{$creditor_contact_data['CreditAddress']['unparsedStreet']}}
          +                                    <br/>
          +                                    {{$creditor_contact_data['CreditAddress']['city'].' '.$creditor_contact_data['CreditAddress']['stateCode'].$creditor_contact_data['CreditAddress']['postalCode']}}
          +                                    <br/>
          +                                </td>
          +                                <td class="{{$class}}" valign="top" width="110">
          +                                    {{ preg_replace("/^(\w{3})(\w{3})(\w{4})$/", "$1-$2-$3", $creditor_contact_data['telephone'])}}
          +                                </td>
          +                            </tr>
          +                            </tbody>
          +                        </table>
          +
          +                    @endforeach
          +
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/inquiries.blade.php b/resources/views/partials/credit_report/inquiries.blade.php
          new file mode 100644
          index 0000000..ab222c5
          --- /dev/null
          +++ b/resources/views/partials/credit_report/inquiries.blade.php
          @@ -0,0 +1,83 @@
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td style="font-family:Arial; font-size: 12px; font-weight:bold;">
          +                                Inquiries
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td class="inquiriesHeader" colspan="1" width="255">
          +                                <b>
          +                                    Creditor Name
          +                                </b>
          +                                <br/>
          +                            </td>
          +                            <td class="inquiriesHeader" colspan="1" width="190">
          +                                <b>
          +                                    Date of inquiry
          +                                </b>
          +                                <br/>
          +                            </td>
          +                            <td class="inquiriesHeader" colspan="1" width="110">
          +                                <b>
          +                                    Credit Bureau
          +                                </b>
          +                                <br/>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    @foreach($inquiries_data_set as $inquiries_data)
          +
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td  width="3">
          +                            </td>
          +                            <td class="crLightTableBackground" width="255">
          +                                {{$inquiries_data['Inquiry']['subscriberName']}}
          +                            </td>
          +                            <td class="crLightTableBackground"  width="190">
          +                                {{ getStringToDateTime($inquiries_data['Inquiry']['inquiryDate'],'m/d/Y')}}
          +                            </td>
          +                            <td class="crLightTableBackground"  width="110">
          +                                {{$inquiries_data['Inquiry']['bureau']}}
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                    @endforeach
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/main_report.blade.php b/resources/views/partials/credit_report/main_report.blade.php
          new file mode 100644
          index 0000000..c8d5c48
          --- /dev/null
          +++ b/resources/views/partials/credit_report/main_report.blade.php
          @@ -0,0 +1,89 @@
          +<html>
          +<head>
          +        <link charset="utf-8" href="https://www.smartcredit.com/resources/css/sc/pages/member/credit-report/3b/base.css" rel="stylesheet" type="text/css"/>
          +        <style>
          +            td#personalInfo {
          +                width: 100%;
          +            }
          +            #reportTop table{
          +                width: 100%;
          +            }
          +        </style>
          +{{--    <!-- Bootstrap -->--}}
          +{{--    <link href="{{ asset('theme/bootstrap/dist/css/bootstrap.min.css') }}" rel="stylesheet">--}}
          +{{--    <link href="{{ asset('css/rtg_custom.css') }}" rel="stylesheet">--}}
          +{{--    <link href="{{ asset('css/iq-default.min.css') }}" rel="stylesheet">--}}
          +{{--    <link href="{{ asset('css/smart_credit_report.css') }}" rel="stylesheet">--}}
          +
          +</head>
          +<body >
          +<div id="reportTop" class="container">
          +    <div id="TokenDisplay">
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <thead>
          +            <tr class="crTableHeader">
          +                <td width="25%">
          +                </td>
          +                <td class="tranunionHeaderColum" width="25%">
          +                    TransUnion®
          +                </td>
          +                <td class="experianHeaderColum" width="25%">
          +                    Experian®
          +                </td>
          +                <td class="equifaxHeaderColum" width="25%">
          +                    Equifax®
          +                </td>
          +            </tr>
          +            </thead>
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <b align="left" class="sectionHeader" id="vscore" width="38%">
          +                        {{$creditScore['title']}}
          +                    </b>
          +                </td>
          +                <td style="font-size: 10;">
          +                    <b>
          +                        {{$creditScore['TransUnion']}}
          +                    </b>
          +                </td>
          +                <td style="font-size: 10;">
          +                    <b>
          +                        {{$creditScore['Experian']}}
          +                    </b>
          +                </td>
          +                <td style="font-size: 10;">
          +                    <b>
          +                        {{$creditScore['Equifax']}}
          +                    </b>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +        <br/>
          +        @include('partials.credit_report.personal_info')
          +         <br/>
          +        @include('partials.credit_report.consumer_statement')
          +        <br/><br/>
          +         @include('partials.credit_report.summary')
          +        <br/><br/>
          +        @include('partials.credit_report.account_history')
          +        <br/><br/>
          +        @include('partials.credit_report.public_info')
          +        <br/>
          +        @include('partials.credit_report.inquiries')
          +        <br/><br/>
          +        @include('partials.credit_report.creditor_contact')
          +        <br/><br/>
          +    </div>
          +</div>
          +</body>
          +
          +</html>
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/personal_info.blade.php b/resources/views/partials/credit_report/personal_info.blade.php
          new file mode 100644
          index 0000000..14a2a5c
          --- /dev/null
          +++ b/resources/views/partials/credit_report/personal_info.blade.php
          @@ -0,0 +1,132 @@
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table cellpadding="0" cellspacing="0" width="560">
          +                        <tbody>
          +                        <tr class="table_headers">
          +                            <td>
          +                            </td>
          +                            <td align="left" class="sectionHeader" id="personalInfo" width="38%">
          +                                Personal Information
          +                            </td>
          +                            <td class="backtoTopText">
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellspacing="0" width="560" >
          +
          +            <tbody>
          +
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr class="crTableHeader">
          +                            <td width="25%">
          +                            </td>
          +                            <td class="tranunionHeaderColum" width="25%">
          +                                TransUnion®
          +                            </td>
          +                            <td class="experianHeaderColum" width="25%">
          +                                Experian®
          +                            </td>
          +                            <td class="equifaxHeaderColum" width="25%">
          +                                Equifax®
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +
          +
          +                    @foreach($personal_infos  as $key => $value)
          +                        @php
          +
          +                            $class = 'crLightTableBackground';
          +                               if($loop->even){
          +                                   $class = 'crTableBackground';
          +                               }
          +                        @endphp
          +                        <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                            <tbody>
          +                            <tr class="{{$class}}" height="7">
          +                                <td colspan="4">
          +                                </td>
          +                            </tr>
          +                            <tr class="{{$class}}">
          +                                        <td nowrap="" width="25%">
          +                                            <span class="Rsmall">
          +                                             <b>
          +                                              {{$value['title']}}:
          +                                             </b>
          +                                            </span>
          +                                        </td>
          +                                        @if(getCreditReportValuesExistOrNot($value,$key))
          +                                            <td align="Left" valign="top" width="75%" colspan="3">
          +                                                    <span class="Rsmall">
          +                                                       None Reported
          +                                                    </span>
          +                                            </td>
          +                                          @else
          +                                            <td class="{{$class}}" width="25%">
          +                                                <span class="Rsmall">
          +
          +                                                         @foreach($value['data']['TransUnion'] as $transUnion)
          +                                                                <span class="Rsmall">
          +                                                                      {{ getCreditReportPersonalInfo($transUnion,$key) }}
          +                                                                </span>
          +                                                            <br/>
          +                                                        @endforeach
          +
          +
          +                                                </span>
          +                                            </td>
          +                                            <td class="{{$class}}" width="25%">
          +
          +                                                @foreach($value['data']['Experian'] as $experian)
          +
          +                                                    {{ getCreditReportPersonalInfo($experian,$key) }}
          +                                                    <br/>
          +                                                @endforeach
          +
          +
          +                                            </td>
          +                                            <td class="{{$class}}" width="25%">
          +                                                @foreach($value['data']['Equifax'] as $equifax)
          +
          +                                                    {{ getCreditReportPersonalInfo($equifax,$key) }}
          +
          +                                                @endforeach
          +
          +                                                <br/>
          +                                            </td>
          +
          +                                          @endif
          +                            </tr>
          +                            <tr class="{{$class}}" height="7">
          +                                <td colspan="4">
          +                                </td>
          +                            </tr>
          +                            </tbody>
          +                        </table>
          +
          +                    @endforeach
          +                </td>
          +            </tr>
          +
          +            </tbody>
          +
          +        </table>
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/public_info.blade.php b/resources/views/partials/credit_report/public_info.blade.php
          new file mode 100644
          index 0000000..88bff9a
          --- /dev/null
          +++ b/resources/views/partials/credit_report/public_info.blade.php
          @@ -0,0 +1,36 @@
          +
          +<table border="1" bordercolor="#eeeeee" cellspacing="0" width="556" >
          +    <tbody>
          +    <tr style="font-family:Arial; font-size: 12px; font-weight:bold;">
          +        <td style="font-family:Arial; font-size: 12px; font-weight:bold;">
          +            Public Information
          +        </td>
          +    </tr>
          +    <tr>
          +        <td>
          +            <table>
          +            </table>
          +            <table border="0" cellpadding="0" cellspacing="0" width="556">
          +                <tbody>
          +                <tr>
          +                    <td class="crLightTableBackground" width="5">
          +                        <img border="0" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                    </td>
          +                    <td class="crLightTableBackground" valign="top" width="555">
          +                        NONE REPORTED
          +                    </td>
          +                </tr>
          +                </tbody>
          +            </table>
          +            <br/>
          +        </td>
          +    </tr>
          +    </tbody>
          +</table>
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/seven_years_account_history.blade.php b/resources/views/partials/credit_report/seven_years_account_history.blade.php
          new file mode 100644
          index 0000000..3ce2b7b
          --- /dev/null
          +++ b/resources/views/partials/credit_report/seven_years_account_history.blade.php
          @@ -0,0 +1,108 @@
          +
          +        <table border="0" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td class="crLightTableBackground late-count-section-title">
          +                    <b>
          +                        Days Late - 7 Year History
          +                    </b>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +        <table class="table table-bordered late-count-section-content" >
          +            <thead>
          +            <tr>
          +                <td class="late-count-column-header">
          +                <span class="paymenttranUnionText">
          +                 TransUnion
          +                </span>
          +                </td>
          +                <td class="late-count-column-header">
          +                <span class="paymentexperianText">
          +                 Experian
          +                </span>
          +                </td>
          +                <td class="late-count-column-header">
          +                <span class="paymentequifaxText">
          +                 Equifax
          +                </span>
          +                </td>
          +            </tr>
          +            </thead>
          +            <tbody>
          +            <tr>
          +                <td class="late-count-column">
          +                    <table class="late-count-column-content-container">
          +                        <tbody>
          +                        <tr>
          +                            <td>
          +                                30:
          +                                <span class="late-count-number">{{$transUnion['GrantedTrade']['late30Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                60:
          +                                <span class="late-count-number">{{$transUnion['GrantedTrade']['late60Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                90:
          +                                <span class="late-count-number">{{$transUnion['GrantedTrade']['late90Count']??'--'}}</span>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +                <td class="late-count-column">
          +                    <table class="late-count-column-content-container">
          +                        <tbody>
          +                        <tr>
          +                            <td>
          +                                30:
          +                                <span class="late-count-number">{{$experian['GrantedTrade']['late30Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                60:
          +                                <span class="late-count-number">{{$experian['GrantedTrade']['late60Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                90:
          +                                <span class="late-count-number">{{$experian['GrantedTrade']['late90Count']??'--'}}</span>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +                <td class="late-count-column">
          +                    <table class="late-count-column-content-container">
          +                        <tbody>
          +                        <tr>
          +                            <td>
          +                                30:
          +                                <span class="late-count-number">{{ $equifax['GrantedTrade']['late30Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                60:
          +                                <span class="late-count-number">{{ $equifax['GrantedTrade']['late60Count']??'--'}}</span>
          +                            </td>
          +                            <td>
          +                                90:
          +                                <span class="late-count-number">{{ $equifax['GrantedTrade']['late90Count']??'--'}}</span>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/sub_account_history.blade.php b/resources/views/partials/credit_report/sub_account_history.blade.php
          new file mode 100644
          index 0000000..8e0b917
          --- /dev/null
          +++ b/resources/views/partials/credit_report/sub_account_history.blade.php
          @@ -0,0 +1,138 @@
          +
          +@if(!empty($account_history_data))
          +
          +    @foreach($account_history_data as $revolving)
          +    @php
          +        $counter = 1;
          +        $sub_account_history_data = $revolving;
          +        $value_data = $revolving['data'];
          +
          +        $transUnion = (array_shift($revolving['data']['TransUnion']));
          +        $experian = (array_shift($revolving['data']['Experian']));
          +        $equifax = (array_shift($revolving['data']['Equifax']));
          +
          +
          +    @endphp
          +         <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +        <tbody>
          +        <tr>
          +            <td>
          +                <table border="0" cellpadding="0" cellspacing="0" width="560">
          +                    <tbody>
          +                    <tr>
          +                        <td class="crWhiteTradelineHeader" width="5">
          +                        </td>
          +                        <td class="crWhiteTradelineHeader">
          +                            <b>
          +                                {{$revolving['title']}}
          +                            </b>
          +                        </td>
          +                    </tr>
          +                    </tbody>
          +                </table>
          +                <table border="0" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560">
          +                    <tbody>
          +                    <tr>
          +                        <td>
          +                            <table border="0" cellpadding="0" cellspacing="0" class="crLightTableBackground" width="558">
          +                                <tbody>
          +                                <tr>
          +                                    <td class="crTableHeader" width="138">               </td>
          +                                    <td class="tranunionHeaderColum" width="140">                TransUnion               </td>
          +                                    <td class="experianHeaderColum" width="140">                Experian               </td>
          +                                    <td class="equifaxHeaderColum" width="140">                Equifax               </td>
          +                                </tr>
          +                                @foreach($sub_account_history_data['key_data'] as $keys => $values)
          +                                    @php
          +
          +                                        if(isRowVisibleInCreditReportHtml($keys,$sub_account_history_data)){
          +                                               continue;
          +                                           }
          +                                        $class = 'crLightTableBackground';
          +                                        $class1 = '';
          +                                           if($counter % 2 == 0){
          +                                               $class = 'crTableBackground';
          +                                               $class1 = 'accountHistoryColorRow';
          +                                           }
          +
          +                                    @endphp
          +                                    <tr class="{{$class}}">
          +                                        <td class="{{$class1}}">
          +                                            <b>
          +                                               {{$values['title']}}:
          +                                            </b>
          +                                        </td>
          +                                        <td class="{{$class1}}" >
          +
          +                                                    @if(!empty($value_data['TransUnion']))
          +                                                         @foreach($value_data['TransUnion'] as $transUnion)
          +
          +                                                            {{ getCreditReportAccountHistoryInfo($transUnion,$keys) }}
          +
          +                                                            <br/>
          +                                                         @endforeach
          +                                                    @else
          +                                                        --
          +                                                    @endif
          +
          +                                        </td>
          +                                        <td class="{{$class1}}" >
          +                                            @if(!empty($value_data['Experian']))
          +                                                @foreach($value_data['Experian'] as $experian)
          +
          +                                                    {{ getCreditReportAccountHistoryInfo($experian,$keys) }}
          +                                                    <br/>
          +                                                @endforeach
          +                                            @else
          +                                                --
          +                                            @endif
          +
          +                                            </td>
          +                                        <td class="{{$class1}}">
          +                                                @if(!empty($value_data['Equifax']))
          +                                                    @foreach($value_data['Equifax'] as $equifax)
          +
          +                                                        {{ getCreditReportAccountHistoryInfo($equifax,$keys) }}
          +                                                    <br/>
          +                                                    @endforeach
          +                                                @else
          +                                                    --
          +                                                 @endif
          +
          +                                            </td>
          +                                    </tr>
          +
          +                                      @php  $counter++ @endphp
          +                                    @endforeach
          +                                    </tbody>
          +                                </table>
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +          {{--    Two-Year payment history Start--}}
          +
          +           @include('partials.credit_report.two_years_payment_history',['transUnion'=>$transUnion,'experian'=>$experian,'equifax'=>$equifax])
          +
          +          {{-- Days Late - 7 Year History Start --}}
          +
          +          @include('partials.credit_report.seven_years_account_history',['transUnion'=>$transUnion,'experian'=>$experian,'equifax'=>$equifax])
          +
          +    @endforeach
          +
          +@endif
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/credit_report/summary.blade.php b/resources/views/partials/credit_report/summary.blade.php
          new file mode 100644
          index 0000000..870d922
          --- /dev/null
          +++ b/resources/views/partials/credit_report/summary.blade.php
          @@ -0,0 +1,78 @@
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr class="table_headers">
          +                            <td class="sectionHeader" id="Summary">
          +                                Summary
          +                            </td>
          +                        </tr>
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr class="crTableHeader">
          +                            <td class="crTableHeader" width="25%">
          +                            </td>
          +                            <td class="tranunionHeaderColum">
          +                                TransUnion®
          +                            </td>
          +                            <td class="experianHeaderColum">
          +                                Experian®
          +                            </td>
          +                            <td class="equifaxHeaderColum">
          +                                Equifax®
          +                            </td>
          +                        </tr>
          +                        @foreach($summary_info_data_set as $summary_info_data)
          +                            @php
          +                                $class = 'crLightTableBackground';
          +                                   if($loop->even){
          +                                       $class = 'crTableBackground';
          +                                   }
          +                            @endphp
          +                        <tr class="{{$class}}">
          +                            <td class="{{$class}}" valign="bottom">
          +                                <span class="Rsmall">
          +                                 <b>
          +                                  {{$summary_info_data['title']}}:
          +                                 </b>
          +                                </span>
          +                            </td>
          +                            <td class="{{$class}}" valign="bottom">
          +                                <span class="Rsmall">
          +                                 {{$summary_info_data['TransUnion']}}
          +                                </span>
          +                            </td>
          +                            <td class="{{$class}}" valign="bottom">
          +                                <span class="Rsmall">
          +                                {{$summary_info_data['Experian']}}
          +                                </span>
          +                            </td>
          +                            <td class="{{$class}}" valign="bottom">
          +                                <span class="Rsmall">
          +                                {{$summary_info_data['Equifax']}}
          +                                </span>
          +                            </td>
          +                        </tr>
          +
          +                        @endforeach
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +
          diff --git a/resources/views/partials/credit_report/two_years_payment_history.blade.php b/resources/views/partials/credit_report/two_years_payment_history.blade.php
          new file mode 100644
          index 0000000..a9adc86
          --- /dev/null
          +++ b/resources/views/partials/credit_report/two_years_payment_history.blade.php
          @@ -0,0 +1,257 @@
          +
          +
          +        <table border="0" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td class="crLightTableBackground" colspan="3">
          +                    <img alt="unkown" height="5" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                </td>
          +            </tr>
          +            <tr>
          +                <td class="crLightTableBackground" width="5">
          +                    <img alt="unkown" height="18" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                </td>
          +                <td class="crLightTableBackground" valign="top" width="355">
          +                    <b>
          +                        Two-Year payment history
          +                    </b>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td class="crLightTableBackground" width="8">
          +                                <img alt="unkown" height="18" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                            </td>
          +                            <td class="crLightTableBackground" rowspan="2" style="font-size: 10px;" valign="top" width="65">
          +                                <span class="paymenttranUnionText">
          +                                 TransUnion
          +                                </span>
          +                                <img alt="unkown" height="2" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="3"/>
          +                            </td>
          +                            @if(!empty($transUnion['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                                    @foreach(array_reverse($transUnion['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                            @php
          +                                                $pay_status = getMonthlyPayStatus($monthlyPayStatus);
          +                                            @endphp
          +
          +                                            <td class="crLightTableBackground" width="22">
          +                                                <img alt="{{$pay_status['status']}}" height="11" src="{{$pay_status['url']}}" width="17"/>
          +                                            </td>
          +
          +                                    @endforeach
          +                            @else
          +                                <td align="left" class="crLightTableBackground" colspan="24">
          +                                    <b>             NONE REPORTED            </b>
          +                                </td>
          +                            @endif
          +                        </tr>
          +                        @if(!empty($transUnion['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                        <tr>
          +                            <td class="crLightTableBackground">
          +                            </td>
          +
          +                            @foreach(array_reverse($transUnion['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                @php
          +
          +                                    $data = getPayStatusHistory($monthlyPayStatus);
          +
          +                                @endphp
          +                                @if($data['isViewed'])
          +
          +                                    <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                        <img alt="'" height="9" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/monthsandyears/apostrophe-gray.gif" width="5"/>
          +                                        <img alt="{{$data['year_split_0']}}" height="9" src="{{$data['url1']}}" width="6"/>
          +                                        <img alt="{{$data['year_split_1']}}" height="9" src="{{$data['url2']}}" width="6"/>
          +                                    </td>
          +
          +                                @else
          +                                    <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                        <img alt="{{strtoupper($data['month'])}}" height="9" src="{{$data['url3']}}" width="17"/>
          +                                    </td>
          +                                @endif
          +                            @endforeach
          +
          +                        </tr>
          +                        @endif
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +        <table border="0" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" height="2" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +         <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +              <tbody>
          +        <tr>
          +            <td>
          +                <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                    <tbody>
          +                    <tr>
          +                        <td class="crLightTableBackground" width="8">
          +                            <img alt="unkown" height="18" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                        </td>
          +                        <td class="crLightTableBackground" rowspan="2" style="font-size: 10px;" valign="top" width="65">
          +                                <span class="paymentexperianText">
          +                                 Experian
          +                                </span>
          +                            <img alt="unkown" height="2" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="3"/>
          +                        </td>
          +                        @if(!empty($experian['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                            @foreach(array_reverse($experian['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                @php
          +                                    $pay_status = getMonthlyPayStatus($monthlyPayStatus);
          +                                @endphp
          +
          +                                <td class="crLightTableBackground" width="22">
          +                                    <img alt="{{$pay_status['status']}}" height="11" src="{{$pay_status['url']}}" width="17"/>
          +                                </td>
          +
          +                            @endforeach
          +                        @else
          +                            <td align="left" class="crLightTableBackground" colspan="24">            <b>             NONE REPORTED            </b>           </td>
          +                        @endif
          +                    </tr>
          +                    @if(!empty($experian['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                        <tr>
          +                            <td class="crLightTableBackground">
          +                            </td>
          +
          +                            @foreach(array_reverse($experian['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                @php
          +
          +                                    $data = getPayStatusHistory($monthlyPayStatus);
          +
          +                                @endphp
          +                                @if($data['isViewed'])
          +
          +                                    <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                        <img alt="'" height="9" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/monthsandyears/apostrophe-gray.gif" width="5"/>
          +                                        <img alt="{{$data['year_split_0']}}" height="9" src="{{$data['url1']}}" width="6"/>
          +                                        <img alt="{{$data['year_split_1']}}" height="9" src="{{$data['url2']}}" width="6"/>
          +                                    </td>
          +
          +                                @else
          +                                    <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                        <img alt="{{strtoupper($data['month'])}}" height="9" src="{{$data['url3']}}" width="17"/>
          +                                    </td>
          +                                @endif
          +                            @endforeach
          +
          +                        </tr>
          +                    @endif
          +                    </tbody>
          +                </table>
          +            </td>
          +        </tr>
          +        </tbody>
          +         </table>
          +
          +        <table border="0" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" height="2" width="560" >
          +        <tbody>
          +        <tr>
          +            <td>
          +            </td>
          +        </tr>
          +        </tbody>
          +    </table>
          +
          +        <table border="1" bordercolor="#eeeeee" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td>
          +                    <table border="0" cellpadding="0" cellspacing="0" width="558">
          +                        <tbody>
          +                        <tr>
          +                            <td class="crLightTableBackground" width="8">
          +                                <img alt="unkown" height="18" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="5"/>
          +                            </td>
          +                            <td class="crLightTableBackground" rowspan="2" style="font-size: 10px;" valign="top" width="65">
          +                                    <span class="paymentequifaxText">
          +                                     Equifax
          +                                    </span>
          +                                <img alt="unkown" height="2" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/tradeline-clear.gif" width="3"/>
          +                            </td>
          +                            @if(!empty($equifax['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                                @foreach(array_reverse($equifax['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                    @php
          +                                        $pay_status = getMonthlyPayStatus($monthlyPayStatus);
          +                                    @endphp
          +
          +                                    <td class="crLightTableBackground" width="22">
          +                                        <img alt="{{$pay_status['status']}}" height="11" src="{{$pay_status['url']}}" width="17"/>
          +                                    </td>
          +
          +                                @endforeach
          +                            @else
          +                                <td align="left" class="crLightTableBackground" colspan="24">            <b>             NONE REPORTED            </b>           </td>
          +                            @endif
          +                        </tr>
          +                        @if(!empty($equifax['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']))
          +                            <tr>
          +                                <td class="crLightTableBackground">
          +                                </td>
          +
          +                                @foreach(array_reverse($equifax['GrantedTrade']['PayStatusHistory']['MonthlyPayStatus']) as $monthlyPayStatus)
          +                                    @php
          +
          +                                        $data = getPayStatusHistory($monthlyPayStatus);
          +
          +                                    @endphp
          +                                    @if($data['isViewed'])
          +
          +                                        <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                            <img alt="'" height="9" src="https://www.smartcredit.com/resources/images/shared/tui/creditreport/monthsandyears/apostrophe-gray.gif" width="5"/>
          +                                            <img alt="{{$data['year_split_0']}}" height="9" src="{{$data['url1']}}" width="6"/>
          +                                            <img alt="{{$data['year_split_1']}}" height="9" src="{{$data['url2']}}" width="6"/>
          +                                        </td>
          +
          +                                    @else
          +                                        <td class="crLightTableBackground" style="font-size: 8px; font-weight: bold; " width="22">
          +                                            <img alt="{{strtoupper($data['month'])}}" height="9" src="{{$data['url3']}}" width="17"/>
          +                                        </td>
          +                                    @endif
          +                                @endforeach
          +
          +                            </tr>
          +                        @endif
          +                        </tbody>
          +                    </table>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +        <table border="0" cellpadding="0" cellspacing="0" width="560" >
          +            <tbody>
          +            <tr>
          +                <td class="crLightTableBackground">
          +                    <img alt="" height="2" src="https://www.smartcredit.com/resources/images/shared/tui/clear.gif" width="1"/>
          +                </td>
          +            </tr>
          +            </tbody>
          +        </table>
          +
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/decision_dropdown.blade.php b/resources/views/partials/decision_dropdown.blade.php
          new file mode 100644
          index 0000000..632f524
          --- /dev/null
          +++ b/resources/views/partials/decision_dropdown.blade.php
          @@ -0,0 +1,67 @@
          +@php
          +    $decisionFromClientWave=decisionFromClientWave();
          +@endphp
          +<select name="info_item[wave][]" id="wave-0"
          +        class="form-control"
          +        onchange="showDtype(this, 0)"
          +        required="">
          +    <option value="">Please select template</option>
          +    @foreach($decisionFromClientWave as $decision)
          +        @php $select = ($decision['key'] == 'w'.$creditreport->wave) ? 'selected': ''; @endphp
          +        <option value="{{$decision['key']}}" {{$select}}>{{$decision['text']}}</option>
          +
          +        <option value="{{$decision['key']}}" disabled="disabled">{{$decision['text']}}</option>
          +
          +    @endforeach
          +
          +    <!--    <option value="w2">I want to use a Wave 2 attack for
          +            this content box's items (Day 20-39)
          +        </option>
          +
          +        <option value="w2" disabled="disabled">I want to use
          +            a Wave 2 attack for this content box's items
          +            (Day 20-39)
          +        </option>
          +
          +        <option value="w3">I want to use a Wave 3 attack for
          +            this content box's items (Day 40-59)
          +        </option>
          +
          +        <option value="w3" disabled="disabled">I want to use
          +            a Wave 3 attack for this content box's items
          +            (Day 40-59)
          +        </option>
          +
          +        <option value="w4">I want to use a Wave 4 attack for
          +            this content box's items (Day 60-79)
          +        </option>
          +
          +        <option value="w4" disabled="disabled">I want to use
          +            a Wave 4 attack for this content box's items
          +            (Day 60-79)
          +        </option>
          +
          +        <option value="w5">I want to use a Wave 5 attack for
          +            this content box's items (Day 80-99)
          +        </option>
          +
          +        <option value="w5" disabled="disabled">I want to use
          +            a Wave 5 attack for this content box's items
          +            (Day 80-99)
          +        </option>
          +
          +        <option value="w6">I want to use a Wave 6+ attack
          +            for this content box's items (Day 100-119)
          +        </option>
          +
          +        <option value="w6" disabled="disabled">I want to use
          +            a Wave 6+ attack for this content box's items
          +            (Day 100-119)
          +        </option>
          +
          +        <option value="w7">I want to use a RANDOM WAVE #
          +            Attack for this content box's item (Day ??)
          +        </option>-->
          +
          +
          +</select>
          diff --git a/resources/views/partials/fb_page_view.blade.php b/resources/views/partials/fb_page_view.blade.php
          new file mode 100644
          index 0000000..3269f5c
          --- /dev/null
          +++ b/resources/views/partials/fb_page_view.blade.php
          @@ -0,0 +1,18 @@
          +<!-- Meta Pixel Code -->
          +<script>
          +    !function(f,b,e,v,n,t,s)
          +    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
          +        n.callMethod.apply(n,arguments):n.queue.push(arguments)};
          +        if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
          +        n.queue=[];t=b.createElement(e);t.async=!0;
          +        t.src=v;s=b.getElementsByTagName(e)[0];
          +        s.parentNode.insertBefore(t,s)}(window, document,'script',
          +        'https://connect.facebook.net/en_US/fbevents.js');
          +    fbq('init', '450475028484130');
          +    fbq('track', 'PageView');
          +    fbq('track', 'Purchase');
          +</script>
          +<noscript><img height="1" width="1" style="display:none"
          +               src="https://www.facebook.com/tr?id=450475028484130&ev=PageView&noscript=1"
          +    /></noscript>
          +<!-- End Meta Pixel Code -->
          diff --git a/resources/views/partials/file_size_label.blade.php b/resources/views/partials/file_size_label.blade.php
          new file mode 100644
          index 0000000..356e5a5
          --- /dev/null
          +++ b/resources/views/partials/file_size_label.blade.php
          @@ -0,0 +1 @@
          +<span class="text-bold" id="label_identity_proof_file"><strong>(Max. file size {{sizeFilter($max_file_size)}} and File Type jpeg, jpg, png, x-eps)</strong></span>
          diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php
          new file mode 100644
          index 0000000..38c830e
          --- /dev/null
          +++ b/resources/views/partials/footer.blade.php
          @@ -0,0 +1,11 @@
          +<footer>
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default">
          +                <strong>
          +                    Secure SSL Area | This website is protected by secure portal © 2025 Clickletters LLC/M2C Academy LLC. All rights reserved.
          +                </strong>
          +            </div>
          +        </div>
          +    </div>
          +</footer>
          diff --git a/resources/views/partials/google_tag.blade.php b/resources/views/partials/google_tag.blade.php
          new file mode 100644
          index 0000000..20e43e6
          --- /dev/null
          +++ b/resources/views/partials/google_tag.blade.php
          @@ -0,0 +1,7 @@
          +<script async src="https://www.googletagmanager.com/gtag/js?id=UA-188772272-3"></script>
          +<script>
          +    window.dataLayer = window.dataLayer || [];
          +    function gtag(){dataLayer.push(arguments);}
          +    gtag('js', new Date());
          +    gtag('config', 'UA-188772272-3');
          +</script>
          diff --git a/resources/views/partials/iq_call_histories.blade.php b/resources/views/partials/iq_call_histories.blade.php
          new file mode 100644
          index 0000000..e1068b5
          --- /dev/null
          +++ b/resources/views/partials/iq_call_histories.blade.php
          @@ -0,0 +1,32 @@
          +
          +    <table>
          +        <thead>
          +        <tr>
          +            <th>Id</th>
          +            <th>IP</th>
          +            <th>Port</th>
          +            <th>Page</th>
          +            <th>Status Code</th>
          +            <th>Status</th>
          +            <th>Created On</th>
          +        </tr>
          +        </thead>
          +        <tbody>
          +
          +        @foreach ($data as $obj)
          +
          +            <tr>
          +                <td>{{ $obj['id'] }}</td>
          +                <td>{{$obj['ip']}}</td>
          +                <td>{{$obj['port']}}</td>
          +                <td>{{$obj['page']}}</td>
          +                <td>{{$obj['error_code']}}</td>
          +                <td>{{$obj['status']}}</td>
          +                <td>{{$obj['created_at']}}</td>
          +            </tr>
          +        @endforeach
          +        </tbody>
          +    </table>
          +
          +
          +
          diff --git a/resources/views/partials/meta_pixel.blade.php b/resources/views/partials/meta_pixel.blade.php
          new file mode 100644
          index 0000000..7c4ac1a
          --- /dev/null
          +++ b/resources/views/partials/meta_pixel.blade.php
          @@ -0,0 +1,27 @@
          +<script>
          +    !function (f, b, e, v, n, t, s) {
          +        if (f.fbq) return;
          +        n = f.fbq = function () {
          +            n.callMethod ?
          +                n.callMethod.apply(n, arguments) : n.queue.push(arguments)
          +        };
          +        if (!f._fbq) f._fbq = n;
          +        n.push = n;
          +        n.loaded = !0;
          +        n.version = '2.0';
          +        n.queue = [];
          +        t = b.createElement(e);
          +        t.async = !0;
          +        t.src = v;
          +        s = b.getElementsByTagName(e)[0];
          +        s.parentNode.insertBefore(t, s)
          +    }(window, document, 'script',
          +        'https://connect.facebook.net/en_US/fbevents.js');
          +    fbq('init', '450475028484130');
          +    fbq('track', 'PageView');
          +    fbq('track', 'Lead');
          +</script>
          +<noscript><img height="1" width="1" style="display:none"
          +               src="https://www.facebook.com/tr?id=450475028484130&ev=PageView&noscript=1"
          +    /></noscript>
          +
          diff --git a/resources/views/partials/modal_views.blade.php b/resources/views/partials/modal_views.blade.php
          new file mode 100644
          index 0000000..27f8a40
          --- /dev/null
          +++ b/resources/views/partials/modal_views.blade.php
          @@ -0,0 +1,20 @@
          +
          +<div class="modal fade" id="common_confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +        <div class="modal-content">
          +            <div class="modal-header">
          +                <button type="button" class="close" data-dismiss="modal">&times;</button>
          +            </div>
          +            <div class="modal-body">
          +                <h4 class="mb-2 text-center" id="common_message_text">
          +
          +                </h4>
          +            </div>
          +            <div class="modal-footer" style="text-align: center">
          +                <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +
          +
          diff --git a/resources/views/partials/modals/common_modal.blade.php b/resources/views/partials/modals/common_modal.blade.php
          new file mode 100644
          index 0000000..a66386f
          --- /dev/null
          +++ b/resources/views/partials/modals/common_modal.blade.php
          @@ -0,0 +1,23 @@
          +
          +<div class="modal fade" id="confirmation_modal_subscription" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +        <div class="modal-content">
          +            <div class="modal-header">
          +                <button type="button" class="close" data-dismiss="modal">&times;</button>
          +            </div>
          +            <div class="modal-body">
          +                <h4 class="mb-2 text-center" id="message_text_subscription">
          +                    {{$inputData['message']}}
          +                </h4>
          +            </div>
          +            <div class="modal-footer" style="text-align: center">
          +                <button class="btn btn-success btn-lg" onclick="submitSubscription()" id="btn-submit-subscription">Yes</button>
          +                <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +
          +
          +
          +
          diff --git a/resources/views/partials/modals/first_time_login_modal.blade.php b/resources/views/partials/modals/first_time_login_modal.blade.php
          new file mode 100644
          index 0000000..65f4a9e
          --- /dev/null
          +++ b/resources/views/partials/modals/first_time_login_modal.blade.php
          @@ -0,0 +1,63 @@
          +@php
          +    $source_types = config('constant.sourceType');
          +    $credit_report_providers = getCache('credit_report_provider_link');
          +    $free_value = array_keys(config('constant.CLIENT_TYPES'),"Free");
          +@endphp
          +
          +<div class="modal fade" id="first_time_login_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-width" >
          +        <div class="modal-content">
          +            <div class="modal-header modal-header-info">
          +                <h5 class="modal-title">Congratulations! Your in. First step is the set up your credit report system to import your credit report now.</h5>
          +            </div>
          +            <div class="modal-body">
          +                <div class="row">
          +                    <div class="col-md-6 col-xs-12">
          +                        <div class="form-group">
          +                            <label for="source_type">Source Type</label>
          +                            <select class="form-control" id="report_provider">
          +                                @foreach($source_types as  $key => $value)
          +                                    @if(auth()->user()->is_free == (int)$free_value && $value == config('constant.sourceType.SmartCredit'))
          +                                        @continue;
          +                                    @endif
          +                                    <option value="{{$value}}" {{auth()->user()->credit_report_company_type == $value ? 'selected':''}}> {{$key}}</option>
          +                                @endforeach
          +                            </select>
          +                        </div>
          +                    </div>
          +                </div>
          +                <div class="row " >
          +                    <h5 class="mb-1 text-center font-bold" >IMPORTANT:</h5>
          +                    <h5 class="mb-1 text-center">SET UP YOUR CREDIT REPORT NOW TO IMPORTANT INTO CREDIT ZOMBIES SOFTWARE</h5>
          +                    <h5 class="mb-1 text-center color-red">USE THE SAME EMAIL AND PASSWORD THAT YOU USED TO SET UP CREDIT ZOMBIES SYSTEM</h5>
          +                </div>
          +
          +
          +            </div>
          +            <div class="modal-footer" style="text-align: center!important;">
          +                <button class="btn btn-success btn-lg" onclick="hideFirstTimeLoginModalView()">Go Get Credit Report</button>
          +
          +                <button type="button" class="btn btn-secondary btn-lg pull-left" onclick="firstTimeLoginUserUpdate()" >Close</button>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +
          +<div class="modal fade" id="first_time_login_view_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-width" >
          +        <div class="modal-content">
          +            <div class="modal-header modal-header-info">
          +                <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                <h5 class="modal-title">Congratulations! Your in. Next step add your 3 forms of information below</h5>
          +            </div>
          +            <div class="modal-body">
          +                <h5 class="mb-1 text-left">1. Drivers license image</h5>
          +                <h5 class="mb-1 text-left">2. Your Social Security Card image</h5>
          +                <h5 class="mb-1 text-left">3. Your most recent bill image ( any bill )</h5>
          +            </div>
          +            <div class="modal-footer" style="text-align: center!important;">
          +                <button class="btn btn-success btn-lg" id="btn_first_time_login">Ok</button>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          diff --git a/resources/views/partials/modals/image_view_modal.blade.php b/resources/views/partials/modals/image_view_modal.blade.php
          new file mode 100644
          index 0000000..12a672e
          --- /dev/null
          +++ b/resources/views/partials/modals/image_view_modal.blade.php
          @@ -0,0 +1,48 @@
          +@php
          +    $user_image_path = getSession('user_image');
          +    $profile_image =  getSession('profile_image');
          +    $max_file_size= $file = config('constant.MAX_FILE_SIZE');
          +@endphp
          +
          +<div class="modal fade" id="profile_pic_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" >
          +
          +        <div class="modal-content">
          +            <div class="modal-header">
          +                <h4 class="mb-2 text-center font-bold pull-left" > Upload Profile Picture </h4>
          +                <button type="button" class="close pull-right" data-dismiss="modal">&times;</button>
          +            </div>
          +            <form method="post" action="{{route('upload.client.image')}}" autocomplete="off"
          +                  enctype=multipart/form-data
          +                  class="input-form-section">
          +                @csrf
          +                <div class="modal-body">
          +                    <input type="hidden" id="doc_type" name="doc_type" value="9"/>
          +                    <div class="row">
          +                        @if(!empty($user_image_path))
          +                            <div class="text-center" id="profile_pic_id">
          +                                <img src="{{getPublicFile($user_image_path)}}"
          +                                     class="img-client"><br>
          +                            </div>
          +                        @endif
          +                        <input id="profile_pic" type="file" class="form-control"
          +                               name="uploadmedia[profile_pic]"
          +                               onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"
          +                               accept="image/jpeg,image/gif,image/png,image/x-eps">
          +                        @include('partials.file_size_label')
          +
          +                    </div>
          +                    <div class="row text-center">
          +                        <button type="submit" class="btn btn2" >Upload</button>
          +                    </div>
          +                </div>
          +
          +            </form>
          +            <div class="modal-footer">
          +                <button type="button" class="btn btn-secondary btn-lg pull-left" data-dismiss="modal">Close</button>
          +            </div>
          +        </div>
          +
          +    </div>
          +
          +</div>
          diff --git a/resources/views/partials/modals/payment_modal.blade.php b/resources/views/partials/modals/payment_modal.blade.php
          new file mode 100644
          index 0000000..4d58bfd
          --- /dev/null
          +++ b/resources/views/partials/modals/payment_modal.blade.php
          @@ -0,0 +1,106 @@
          +@push('css')
          +    <link href="{{ asset('css/payment_setting.css') }}" rel="stylesheet">
          +@endpush
          +<div id="payment-report-modal" class="modal fade" role="dialog" style="padding-top: 50px">
          +    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xs-12 mx-auto">
          +        <div class="modal-dialog modal-dialog-centered">
          +            <!-- Modal content-->
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h4 class="modal-title">Add Payment Or Update New Credit Card</h4>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="payment-report-modal">
          +                        <div class="container-fluid py-3">
          +
          +                            <div class="row">
          +
          +                                <div class="card-body">
          +                                    @php
          +                                        $user_last_payment = getCache('card_no');
          +                                    @endphp
          +                                    @if(!empty($user_last_payment))
          +                                        <label style="margin-left: 20px"> Last Payment By : {{$user_last_payment}}
          +                                            @if(auth()->user()->last_payment_date!=null)
          +                                                at {{getStringToDate(auth()->user()->last_payment_date)}}
          +                                            @endif
          +                                        </label>
          +                                    @endif
          +                                    <form action="{{route('payment.create')}}" method="post" id="payment-report_form"
          +                                          class="needs-validation">
          +                                        @csrf
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <input id="cc-number" name="card_number" type="text"
          +                                                       value="{{getCache('card_'.auth()->id())}}"
          +                                                       placeholder="Card Number"
          +                                                       class="form-control cc-number identified visa"
          +                                                       autocomplete="off">
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-6 col-xs-12">
          +                                                <input id="expiry" name="expiry" type="text"
          +                                                       value="{{getCache('expiration_'.auth()->id())}}"
          +                                                       class="form-control" autocomplete="off" onkeyup="expiryCard()" placeholder="MM/YY" maxlength="5">
          +                                            </div>
          +                                            <div class="form-group col-md-6 col-xs-12">
          +                                                <input id="x_card_code" name="cvv" type="text"
          +                                                       value="{{getCache('cvv_'.auth()->id())}}" class="form-control"
          +                                                       autocomplete="off" placeholder="CVV">
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-6 col-xs-12 text-left">
          +                                                <input class="form-check-input" onclick="common_helper.saveCardCheckUncheck(this,'#clear_card')" type="checkbox" name="save_card"
          +                                                       value="1" id="save_card">
          +                                                <label class="form-check-label" for="saveCard">
          +                                                    Save Card
          +                                                </label>
          +                                            </div>
          +                                            <div class="form-group col-md-6 col-xs-12 text-left">
          +                                                <input onclick="common_helper.saveCardCheckUncheck(this,'#save_card')" class="form-check-input" type="checkbox" name="clear_card"
          +                                                       value="1" id="clear_card">
          +                                                <label class="form-check-label" for="saveCard">
          +                                                    Clear
          +                                                </label>
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <button id="payment-button" type="submit" onclick="return payment_form_submit(this)"
          +                                                        class="btn btn-md btn-info btn-block">
          +                                                    <i class="fa fa-lock fa-lg"></i>&nbsp;
          +                                                    <span id="payment-button-amount">Pay </span>
          +                                                    <span id="payment-button-sending"
          +                                                          style="display:none;">Sending…</span>
          +                                                </button>
          +                                            </div>
          +                                        </div>
          +
          +                                    </form>
          +
          +                                </div>
          +
          +                            </div>
          +                        </div>
          +
          +                    </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +
          +        </div>
          +    </div>
          +</div>
          +
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/modals/recurring_modal.blade.php b/resources/views/partials/modals/recurring_modal.blade.php
          new file mode 100644
          index 0000000..2808bd8
          --- /dev/null
          +++ b/resources/views/partials/modals/recurring_modal.blade.php
          @@ -0,0 +1,25 @@
          +<div class="modal fade" id="recurring_view_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" style="width: 25%">
          +        <div class="modal-content border-0">
          +            <div class="modal-header modal-header-warning">
          +                <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                <h4 class="modal-title">Subscription Information</h4>
          +
          +            </div>
          +            <div class="modal-body ">
          +                <h5 class="mb-1 text-left">Oops! There is an issue with your payment</h5>
          +                <h5 class="mb-1 text-left">Please update or add a new payment method now</h5>
          +            </div>
          +            <div class="modal-footer">
          +                <button class="btn btn-success btn-lg" id="btn_recurring">Payment</button>
          +                <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +<script>
          +    $('#btn_recurring').click((e)=>{
          +        $('#recurring_view_modal').modal('hide');
          +        common_helper.commonModalView('{{route('show.modal')}}','PAYMENT_MODAL_VIEW','payment-report-modal');
          +    });
          +</script>
          diff --git a/resources/views/partials/modals/support_modal.blade.php b/resources/views/partials/modals/support_modal.blade.php
          new file mode 100644
          index 0000000..ffa93b8
          --- /dev/null
          +++ b/resources/views/partials/modals/support_modal.blade.php
          @@ -0,0 +1,37 @@
          +
          +<div class="modal fade" id="support_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +        <div class="modal-content">
          +            <form method="post" action="{{route('create.client.support')}}" id="support_form"
          +                  autocomplete="off"
          +                  class="input-form-section">
          +                @csrf
          +                <div class="modal-header">
          +                    <h4 class="mb-2 text-center font-bold pull-left" >Support: </h4>
          +                    <button type="button" class="close pull-right" data-dismiss="modal">&times;</button>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="row modal-style" >
          +                        <p class="mb-1 text-justify">Please Only submit Technical Issues, we do not handle credit repair questions, or how to create letters specifically. We can only help with the technical issue within the software when things are not working corretly. Please send all other questions to Admin at Credit Zombies.  </p>
          +                        <p class="mb-2 text-left" >Thank you </p>
          +                    </div>
          +                    <div class="row">
          +                        <div class="form-group">
          +                            <input type="text"  class="form-control"  id="support_title" name="support_title" placeholder="Title" ></input>
          +
          +                        </div>
          +                        <div class="form-group">
          +                            <textarea rows="4" cols="50"  class="form-control"  id="support_text" name="support_text" placeholder="Please write what is your problem or needs" ></textarea>
          +
          +                        </div>
          +                    </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-secondary btn-lg pull-left" data-dismiss="modal">Close</button>
          +                    <button type="submit" class="btn btn2 pull-right" >Click For Technical Support Only</button>
          +                </div>
          +            </form>
          +        </div>
          +    </div>
          +
          +</div>
          diff --git a/resources/views/partials/modals/upload_doc_modal.blade.php b/resources/views/partials/modals/upload_doc_modal.blade.php
          new file mode 100644
          index 0000000..5100710
          --- /dev/null
          +++ b/resources/views/partials/modals/upload_doc_modal.blade.php
          @@ -0,0 +1,44 @@
          +@php
          +    $max_file_size= $file = config('constant.MAX_FILE_SIZE');
          +@endphp
          +
          +<div class="modal fade" id="upload_pic_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +    <div class="modal-dialog modal-md" >
          +
          +        <div class="modal-content">
          +            <div class="modal-header">
          +                <h4 class="mb-2 text-center font-bold pull-left" id="pic_header" > Upload Document </h4>
          +                <button type="button" class="close pull-right" data-dismiss="modal">&times;</button>
          +            </div>
          +            <form method="post" action="{{route('upload.client.image')}}" autocomplete="off" id="doc_upload_form"
          +                  enctype=multipart/form-data
          +                  class="input-form-section">
          +                @csrf
          +                <div class="modal-body">
          +                    <input type="hidden" id="doc_type" name="doc_type"/>
          +                    <div class="row">
          +                        <div class="text-center">
          +                            <img src="#"
          +                                 class="img-client" id="uploaded_doc" ><br>
          +                        </div>
          +                        <input id="profile_pic" type="file" class="form-control"
          +                               name="uploadmedia[profile]"
          +                               onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"
          +                               accept="image/jpeg,image/gif,image/png,image/x-eps">
          +                        @include('partials.file_size_label')
          +
          +                    </div>
          +                    <div class="row text-center">
          +                        <button type="submit" id="doc_upload_btn" class="btn btn2" >Upload</button>
          +                    </div>
          +                </div>
          +
          +            </form>
          +            <div class="modal-footer">
          +                <button type="button" class="btn btn-secondary btn-lg pull-left" data-dismiss="modal">Close</button>
          +            </div>
          +        </div>
          +
          +    </div>
          +
          +</div>
          diff --git a/resources/views/partials/payment_setting.blade.php b/resources/views/partials/payment_setting.blade.php
          new file mode 100644
          index 0000000..8eb2c8f
          --- /dev/null
          +++ b/resources/views/partials/payment_setting.blade.php
          @@ -0,0 +1,104 @@
          +@push('css')
          +    <link href="{{ asset('css/payment_setting.css') }}" rel="stylesheet">
          +@endpush
          +<div id="payment-report-modal" class="modal fade" role="dialog" style="padding-top: 50px">
          +    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xs-12 mx-auto">
          +        <div class="modal-dialog modal-dialog-centered">
          +            <!-- Modal content-->
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h4 class="modal-title">Add Payment Or Update New Credit Card</h4>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="payment-report-modal">
          +                        <div class="container-fluid py-3">
          +
          +                            <div class="row">
          +
          +                                <div class="card-body">
          +                                    @php
          +                                        $user_last_payment = getCache('card_no');
          +                                    @endphp
          +                                    @if(!empty($user_last_payment))
          +                                    <label style="margin-left: 20px"> Last Payment By : {{$user_last_payment}}
          +                                        @if(auth()->user()->last_payment_date!=null)
          +                                        at {{getStringToDate(auth()->user()->last_payment_date)}}
          +                                        @endif
          +                                    </label>
          +                                    @endif
          +                                    <form action="{{route('payment.create')}}" method="post" id="payment-report_form"
          +                                          class="needs-validation">
          +                                        @csrf
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <input id="cc-number" name="card_number" type="text"
          +                                                       value="{{getCache('card_'.auth()->id())}}"
          +                                                       placeholder="Card Number"
          +                                                       class="form-control cc-number identified visa"
          +                                                       autocomplete="off">
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-6 col-xs-12">
          +                                                <input id="expiry" name="expiry" type="text"
          +                                                       value="{{getCache('expiration_'.auth()->id())}}"
          +                                                       class="form-control" autocomplete="off" placeholder="MM/YY" maxlength="5">
          +                                            </div>
          +                                            <div class="form-group col-md-6 col-xs-12">
          +                                                <input id="x_card_code" name="cvv" type="text"
          +                                                       value="{{getCache('cvv_'.auth()->id())}}" class="form-control"
          +                                                       autocomplete="off" placeholder="CVV">
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-6 col-xs-12 text-left">
          +                                                <input class="form-check-input" onclick="common_helper.saveCardCheckUncheck(this,'#clear_card')" type="checkbox" name="save_card"
          +                                                       value="1" id="save_card">
          +                                                <label class="form-check-label" for="saveCard">
          +                                                    Save Card
          +                                                </label>
          +                                            </div>
          +                                            <div class="form-group col-md-6 col-xs-12 text-left">
          +                                                <input onclick="common_helper.saveCardCheckUncheck(this,'#save_card')" class="form-check-input" type="checkbox" name="clear_card"
          +                                                       value="1" id="clear_card">
          +                                                <label class="form-check-label" for="saveCard">
          +                                                    Clear
          +                                                </label>
          +                                            </div>
          +                                        </div>
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <button id="payment-button" type="submit"
          +                                                        class="btn btn-md btn-info btn-block">
          +                                                    <i class="fa fa-lock fa-lg"></i>&nbsp;
          +                                                    <span id="payment-button-amount">Pay </span>
          +                                                    <span id="payment-button-sending"
          +                                                          style="display:none;">Sending…</span>
          +                                                </button>
          +                                            </div>
          +                                        </div>
          +
          +                                    </form>
          +
          +                                </div>
          +
          +                            </div>
          +                        </div>
          +
          +                    </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +
          +        </div>
          +    </div>
          +</div>
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/permission.blade.php b/resources/views/partials/permission.blade.php
          new file mode 100644
          index 0000000..7ae35e6
          --- /dev/null
          +++ b/resources/views/partials/permission.blade.php
          @@ -0,0 +1,122 @@
          +<style>
          +    .module_text{
          +        text-align: left;
          +        padding-left: 30%;
          +    }
          +    .submodule_text{
          +        text-align: right;
          +        padding-right: 40%;
          +    }
          +
          +    @media screen and (max-width: 800px) {
          +        .module_text{
          +            text-align: left;
          +            padding-left: 1%;
          +        }
          +        .submodule_text{
          +            text-align: right;
          +            padding-right: 1%;
          +        }
          +    }
          +
          +</style>
          +<div class="row table-responsive">
          +    <label class="text">Permission</label>
          +    <table id="permission-table" class="table table-bordered rolebase-tbl" >
          +        <thead>
          +        <tr>
          +        <th>Module</th>
          +        <th>SubModule</th>
          +        </tr>
          +        </thead>
          +        <tbody>
          +        @foreach($moduleSubmoduleAssoc as $ms)
          +            <tr class="tr-height">
          +                <td class="text" >
          +                    <div  class="module_text">
          +                    <label class="label-text">{{$ms->name}}</label>
          +                    </div>
          +                </td>
          +                <td>
          +                    @foreach($ms->submodules as $submodule)
          +
          +                        @php
          +                              $checked = '';
          +                              if(!empty($employee_permission) && in_array($submodule['id'],$employee_permission->toArray()))
          +                                  $checked = 'checked';
          +                        @endphp
          +
          +                        <div class="form-check submodule_text"  id="sub_module_panel">
          +                            <label>
          +                               {{$submodule['name']}}  <input type="checkbox" {{$checked}}  name="userRole[]" value="{{$submodule['id']}}"> <span class="label-text"></span>
          +                            </label>
          +                        </div>
          +
          +                    @endforeach
          +                </td>
          +            </tr>
          +        @endforeach
          +        </tbody>
          +    </table>
          +</div>
          +
          +@push('css')
          +    <style>
          +        .rolebase-tbl label{
          +            position: relative;
          +            cursor: pointer;
          +            color: #666;
          +            font-size: 15px;
          +        }
          +
          +        .rolebase-tbl input[type="checkbox"], input[type="radio"]{
          +            position: absolute;
          +            right: 9000px;
          +        }
          +
          +        /*Check box*/
          +        .rolebase-tbl  input[type="checkbox"] + .label-text:before{
          +            content: "\f096";
          +            font-family: "FontAwesome";
          +            speak: none;
          +            font-style: normal;
          +            font-weight: normal;
          +            font-variant: normal;
          +            text-transform: none;
          +            line-height: 1;
          +            -webkit-font-smoothing:antialiased;
          +            width: 1em;
          +            display: inline-block;
          +            margin-right: 5px;
          +        }
          +
          +        .rolebase-tbl input[type="checkbox"]:checked + .label-text:before{
          +            content: "\f14a";
          +            color: #2980b9;
          +            animation: effect 250ms ease-in;
          +        }
          +
          +        .rolebase-tbl input[type="checkbox"]:disabled + .label-text{
          +            color: #aaa;
          +        }
          +
          +        .rolebase-tbl input[type="checkbox"]:disabled + .label-text:before{
          +            content: "\f0c8";
          +            color: #ccc;
          +        }
          +
          +
          +        @keyframes effect{
          +            0%{transform: scale(0);}
          +            25%{transform: scale(1.3);}
          +            75%{transform: scale(1.4);}
          +            100%{transform: scale(1);}
          +        }
          +    </style>
          +@endpush
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/security_question.blade.php b/resources/views/partials/security_question.blade.php
          new file mode 100644
          index 0000000..9a994cd
          --- /dev/null
          +++ b/resources/views/partials/security_question.blade.php
          @@ -0,0 +1,77 @@
          +@push('css')
          +{{--    <link href="{{ asset('css/payment_setting.css') }}" rel="stylesheet">--}}
          +@endpush
          +
          +<div id="security-question-modal" class="modal fade" role="dialog" style="padding-top: 50px">
          +    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xs-12 mx-auto">
          +        <div class="modal-dialog modal-dialog-centered">
          +            <!-- Modal content-->
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h4 class="modal-title">Add Security Question</h4>
          +                </div>
          +                <div class="modal-body">
          +                    <div class="payment-report-modal">
          +                        <div class="container-fluid py-3">
          +
          +                            <div class="row">
          +
          +                                <div class="card-body">
          +                                    <form action="{{route('payment.create')}}" method="post" id="security-question-form"
          +                                          class="needs-validation">
          +                                        @csrf
          +                                        @php
          +                                           $security_questions= config('constant.SECURITY_QUESTION');
          +                                        @endphp
          +                                        @foreach($security_questions as $key=>$value)
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                               <label> {{$key.'. '}} {{$value}}</label><br/>
          +                                                @php
          +                                                    $sequrity_answer='constant.SECURITY_QUESTION_ANSWERS.'.$key;
          +                                                    $security_question_answers= config($sequrity_answer);
          +                                                @endphp
          +                                                @foreach($security_question_answers as $akey=>$avalue)
          +                                                    <input type="radio" id="{{$avalue}}" name="{{'answer'.$key}}" value="{{$akey}}">
          +                                                    <label for="{{$avalue}}">{{$avalue}}</label><br/>
          +                                                @endforeach
          +
          +                                            </div>
          +                                        </div>
          +                                        @endforeach
          +                                        <div class="form-row">
          +                                            <div class="form-group col-md-12 col-xs-12">
          +                                                <button id="payment-button" type="submit"
          +                                                        class="btn btn-md btn-info btn-block">
          +                                                    <i class="fa fa-lock fa-lg"></i>&nbsp;
          +                                                    <span id="payment-button-amount">Pay </span>
          +                                                    <span id="payment-button-sending"
          +                                                          style="display:none;">Sending…</span>
          +                                                </button>
          +                                            </div>
          +                                        </div>
          +
          +                                    </form>
          +
          +                                </div>
          +
          +                            </div>
          +                        </div>
          +
          +                    </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +
          +        </div>
          +    </div>
          +</div>
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/sidemenu.blade.php b/resources/views/partials/sidemenu.blade.php
          new file mode 100644
          index 0000000..9b5b177
          --- /dev/null
          +++ b/resources/views/partials/sidemenu.blade.php
          @@ -0,0 +1,59 @@
          +@php
          +    $logo_path =  'images/'.config('app.name').'_logo.png';
          +
          +    $user_image_path = getSession('user_image');
          +    $profile_image =  getSession('profile_image');
          +@endphp
          +<div class="col-md-3 left_col">
          +    <div class="left_col scroll-view">
          +        <div class="navbar nav_title" style="border: 0; background-color: #fff; text-align: center;">
          +            <a href="{{ url('/') }}" class="site_title"><img src="{{ asset($logo_path) }}"></a>
          +        </div>
          +
          +        <div class="clearfix"></div>
          +
          +        <!-- menu profile quick info -->
          +        <div class="profile clearfix">
          +            <h2 class="welcome-t">Welcome</h2>
          +            <div class="profile_pic">
          +                @if(empty($profile_image))
          +                    <img src="{{ asset('images/user.png') }}" alt="profile picture"
          +                         class="img-circle profile_img">
          +                @else
          +                    <img src="{{getPublicFile($user_image_path)}}" alt="profile picture"
          +                         class="img-circle profile_img">
          +                @endif
          +            </div>
          +            <div class="profile_info">
          +                <h2>{{ Auth::user()->firstname }} {{ Auth::user()->lastname }}</h2>
          +            </div>
          +        </div>
          +        <!-- /menu profile quick info -->
          +
          +        <!-- sidebar menu -->
          +        <div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
          +            <div class="menu_section">
          +                <h3>Menu</h3>
          +                <ul class="nav side-menu">
          +                    <li class="{{ request()->routeIs('show.manage.clients') ? 'current-page' : '' }}">
          +                        <a href="{{ route('manage.clients') }}"><i class="fa fa-user"></i> Account Information</a>
          +                    </li>
          +                    @if(auth()->user()->is_first_login == 0)
          +                    <li class="{{ request()->routeIs('get.letter') ? 'current-page' : '' }}">
          +                        <a href="{{ route('get.letter') }}"><i class="fa fa-file-text"></i> WORK AREA</a>
          +                    </li>
          +                    @endif
          +                    <li class="{{ request()->routeIs('training_video.index') ? 'current-page' : '' }}">
          +                        <a href="{{ route('training_video.index') }}"><i class="fa fa-youtube-play"></i> Software Training</a>
          +                    </li>
          +                    <li class="{{ request()->routeIs('list.client.support') ? 'current-page' : '' }}">
          +                        <a href="{{ route('list.client.support') }}">
          +                            <i class="fa fa-user"></i>
          +                            Support
          +                        </a>
          +                    </li>
          +                </ul>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          diff --git a/resources/views/partials/smart_credit_status.blade.php b/resources/views/partials/smart_credit_status.blade.php
          new file mode 100644
          index 0000000..93b2ed8
          --- /dev/null
          +++ b/resources/views/partials/smart_credit_status.blade.php
          @@ -0,0 +1,89 @@
          +<style>
          +    .header_style{
          +        font-weight: 400 !important;
          +        color:#9c9393 !important;
          +    }
          +    .heading{
          +         padding-left: 50px !important;
          +        padding-right: 0px !important;
          +        padding-bottom: 0px !important;
          +        padding-top: 0px !important;
          +        text-align: left!important;
          +    }
          +    #client-status  .btn2 {
          +        margin: 0px !important;
          +        padding: 10px !important;
          +        font-size: 12px !important;
          +    }
          +    #client-status  .btn-position {
          +      margin-right: 50px;
          +    }
          +
          +
          +    @media (max-width: 800px) {
          +      #client-status  .btn2 {
          +            font-weight: 400 !important;
          +            font-size: 12px !important;
          +            margin: 0px!important;
          +            padding: 5px 5px !important;
          +        }
          +        #client-status  .btn-position {
          +            margin-right: 0px !important;
          +        }
          +    }
          +
          +</style>
          +@php
          +    if(auth()->user()->credit_report_company_type == config('constant.sourceType.SmartCredit')){
          +      $logo_src =  asset('images/smartcredit_logo.png');
          +      $source_name = 'Smart Credit';
          +    }else {
          +        $logo_src =  asset('images/identityiq_logo.webp');
          +        $source_name = 'Identity Iq';
          +    }
          +
          +    $credit_report_provider = getCache('credit_report_provider_link');
          +
          +    $go_to_url = $credit_report_provider[auth()->user()->credit_report_company_type];
          +
          +@endphp
          +
          +<table class="table table-responsive " id="client-status" style="margin-bottom: 0px!important;">
          +        <tr style="text-align: left!important;">
          +            <td>
          +                <span class="header_style">PARTNER COMPANY</span>
          +                <p>
          +                 <img src="{{ $logo_src }}" alt="{{$source_name}}" width="100px" height="30px" class="brand-logo">
          +                </p>
          +            </td>
          +            <td>
          +                <span class="header_style">STATUS</span>
          +                <p>
          +                    @if(Auth::user()->subscription_status == config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'))
          +                        <label>Active</label>
          +                    @else
          +                        <label>InActive</label>
          +                    @endif
          +                </p>
          +            </td>
          +            <td>
          +                <span class="header_style"> NEXT IMPORT</span>
          +                <p>
          +                    <label>{{getNextImportDate()}} </label>
          +
          +                </p>
          +            </td>
          +            <td style="width: 15%">
          +                    <span class="btn-position">
          +                        <a href="{{$go_to_url }}" target="_blank" class="btn btn-success btn2 " > Go To {{$source_name}} </a>
          +                    </span>
          +            </td>
          +
          +        </tr>
          +
          +    </table>
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/supportsubmenu.blade.php b/resources/views/partials/supportsubmenu.blade.php
          new file mode 100644
          index 0000000..b4761ba
          --- /dev/null
          +++ b/resources/views/partials/supportsubmenu.blade.php
          @@ -0,0 +1,27 @@
          +@php
          +    $supports = getSession('new_ticket');
          +    $support_count =  is_array($supports) ? count($supports) : 0 ;
          +
          +@endphp
          +@if(isAdmin() || isClient())
          +<li class="nav-item notifications-menu admin-ticket">
          +
          +        <a href="{{ $support_count>0 ? 'javascript:;' : route('list.client.support')}}" class="user-profile dropdown-toggle" data-toggle="{{ $support_count>0 ? 'dropdown' : ''}}" aria-expanded="false">
          +            <i class="fa fa-bell-o"></i>
          +            <span class="label label-warning"></span>
          +            @if($support_count > 0)
          +                <span class="badge badge-light"> @php echo $support_count @endphp </span>
          +            @endif
          +        </a>
          +
          +    @if($support_count > 0)
          +        <ul class="dropdown-menu dropdown-usermenu pull-right">
          +            @foreach($supports as $key => $obj)
          +
          +                <li><a href=" {{ route('view.client.support',$obj->id) }}"> {{$obj->title}}</a></li>
          +
          +            @endforeach
          +        </ul>
          +    @endif
          +</li>
          +@endif
          diff --git a/resources/views/partials/topbar.blade.php b/resources/views/partials/topbar.blade.php
          new file mode 100644
          index 0000000..7c73774
          --- /dev/null
          +++ b/resources/views/partials/topbar.blade.php
          @@ -0,0 +1,177 @@
          +<style>
          +    .badge {
          +        position: relative;
          +        top: -15px;
          +        left: -25px;
          +        border: 1px solid red;
          +        border-radius: 50%;
          +        background-color: red;
          +    }
          +</style>
          +
          +@php
          +
          +    $user_image_path = getSession('user_image');
          +    $profile_image =  getSession('profile_image');
          +
          +    $max_file_size= $file = config('constant.MAX_FILE_SIZE');
          +@endphp
          +
          +<!-- top navigation -->
          +<div class="top_nav">
          +    <div class="nav_menu">
          +        <nav>
          +            <div class="nav toggle">
          +                <a id="menu_toggle"><i class="fa fa-bars"></i></a>
          +            </div>
          +            <ul class="nav navbar-nav navbar-right">
          +                <li class="nav-item">
          +                    <a href="javascript:;" class="user-profile dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
          +                        @if(empty($profile_image))
          +                            <img src="{{ asset('images/user.png') }}" alt="profile picture">
          +                        @else
          +                            <img src="{{getPublicFile($user_image_path)}}" alt="profile picture">
          +                        @endif{{ Auth::user()->first_name }} {{ Auth::user()->last_name }}
          +                        <span class=" fa fa-angle-down"></span>
          +                    </a>
          +                    <ul class="dropdown-menu dropdown-usermenu pull-right">
          +
          +                        <li><a  onclick="common_helper.commonModalView('{{route('show.modal')}}','PROFILE_IMAGE_MODAL_VIEW','profile_pic_modal')"> Profile</a></li>
          +                        <li><a  onclick="common_helper.commonModalView('{{route('show.modal')}}','SUPPORT_MODAL_VIEW','support_modal')"> Technical Support </a></li>
          +                        <li><a onclick="common_helper.commonModalView('{{route('show.modal')}}','PAYMENT_MODAL_VIEW','payment-report-modal')"> Payment Settings</a></li>
          +{{--                        @if(auth()->user()->is_import == config('constant.IMPORT_REPORT_STATUS.ELIGIBLE'))--}}
          +{{--                        <li><a href="#" onclick="event.preventDefault();$(`#confirmation_modal`).modal('show')"> Cancel Payment</a></li>--}}
          +{{--                        @endif--}}
          +{{--                        @php--}}
          +{{--                           $subscription_status_view = 'Subscribed';--}}
          +{{--                           if(Auth::user()->subscription_status == config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED')){--}}
          +{{--                                  $subscription_status_view = 'cancel';--}}
          +{{--                           }--}}
          +{{--                        @endphp--}}
          +                        @if(Auth::user()->subscription_status == config('constant.SUBSCRIPTION_STATUS.SUBSCRIBED'))
          +                            <li><a href="#" onclick="subscription()"> {{'Cancel Account'}}</a></li>
          +                        @endif
          +                        <li>
          +                            <form method="post" action="{{ route('user.logout') }}">
          +                                {{ csrf_field() }}
          +                                <button type="submit" style="background-color: #fff; border: none;margin-top: 10px; margin-left:13px; color: #5A738E;" data-toggle="tooltip" data-placement="top" title="Logout">Log Out <i class="fa fa-sign-out pull-right" style="margin-right: 15px;"></i></button>
          +                            </form>
          +                        </li>
          +                    </ul>
          +                </li>
          +
          +                @include('partials.video_setting')
          +                @include('partials.supportsubmenu')
          +
          +            </ul>
          +        </nav>
          +
          +        @include('partials.smart_credit_status')
          +
          +    </div>
          +</div>
          +<!-- /top navigation -->
          +<div id="modal_target"></div>
          +
          +<!--
          +        <div class="modal fade" id="confirmation_modal" style="margin-top: 50px" tabindex="-1" aria-hidden="true">
          +            <div class="modal-dialog modal-md" id="modal-dialog-panel">
          +                <div class="modal-content">
          +                    <div class="modal-header modal-header-warning">
          +                        <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    </div>
          +                    <div class="modal-body">
          +                        <h4 class="mb-2 text-center" id="message_text">
          +                            Are you sure you want to delete your payment
          +                            and cancel Credit Zombies/SmartCredit account?
          +                        </h4>
          +                    </div>
          +                    <div class="modal-footer" style="text-align: center">
          +                        <button class="btn btn-success btn-lg" id="btn-submit-form">Yes</button>
          +                        <button type="button" class="btn btn-secondary btn-lg" data-dismiss="modal">Close</button>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +
          + -->
          +
          +@push('script')
          +
          +   <script type="text/javascript">
          +
          +            $('#popup_youtube').click(function (e) {
          +                e.preventDefault();
          +                common_helper.youtubePopup($("#popup_youtube"));
          +            });
          +
          +            const callbackfunction=(result)=>{
          +                if(result.status)
          +                {
          +                    // $('#confirmation_modal').modal('hide');
          +                    @php
          +                        unsetCache('card_'.auth()->id());
          +                        unsetCache('expiration_'.auth()->id());
          +                        unsetCache('cvv_'.auth()->id());
          +                    @endphp
          +                    window.location.href='{{route('manage.clients')}}';
          +
          +                }
          +            }
          +
          +            $('#btn-submit-form').click(function (e) {
          +               common_helper.globalAjaxRequestAsync('{{route('process.ajax')}}','POST',{action:'DELETE_RECURRING',id:null, _token:"{{ csrf_token() }}"},callbackfunction);
          +            })
          +
          +            const subscription = () => {
          +                event.preventDefault();
          +                let message = 'Are you sure you want to cancel your account?'
          +                common_helper.commonModalView('{{route('show.modal')}}','COMMON_MODAL','confirmation_modal_subscription',message);
          +            }
          +
          +            {{--$('#btn-submit-subscription').click(function (e) {--}}
          +            {{--    common_helper.globalAjaxRequestAsync('{{route('process.ajax')}}','POST',{action:'SUBSCRIPTION_SMART_CREDIT',id:null, _token:"{{ csrf_token() }}"},subscriptioncallbackfunction);--}}
          +            {{--})--}}
          +
          +            const submitSubscription = ()=>{
          +                common_helper.globalAjaxRequestAsync('{{route('process.ajax')}}','POST',{action:'SUBSCRIPTION_SMART_CREDIT',id:null, _token:"{{ csrf_token() }}"},subscriptioncallbackfunction);
          +            }
          +
          +            const subscriptioncallbackfunction = (result)=>{
          +                if(result.status)
          +                {
          +                    $('#confirmation_modal_subscription').modal('hide');
          +                    Swal.fire({icon: result.type,title: result.message,width: 450,timer: 5000});
          +                    window.location.href='{{route('manage.clients')}}';
          +                }else{
          +                    $('#confirmation_modal_subscription').modal('hide');
          +                    Swal.fire({icon: result.type,title: result.message,width: 450,timer: 5000});
          +                }
          +            }
          +
          +            const payment_form_submit =(e)=>{
          +                common_helper.formValidate('#payment-report_form',
          +                    {'card_number': 'required', 'expiry': 'required', 'cvv': 'required'},
          +                    {
          +                        'card_number': {required: "Please enter your card number"},
          +                        'expiry': {required: "Please enter expire date"},
          +                        'cvv': {required: "Please enter your card code"}
          +                    }
          +                );
          +
          +                if($('#payment-report_form').valid()) {
          +                    $('#payment-report_form').submit();
          +                }
          +
          +            }
          +
          +            const expiryCard = () =>{
          +              let data = $("#expiry").val();
          +                    if ( data.length === 2){
          +                        $("#expiry").val(data + "/");
          +                    }
          +            }
          +
          +   </script>
          +
          +@endpush
          diff --git a/resources/views/partials/training_video.blade.php b/resources/views/partials/training_video.blade.php
          new file mode 100644
          index 0000000..c144d72
          --- /dev/null
          +++ b/resources/views/partials/training_video.blade.php
          @@ -0,0 +1,71 @@
          +
          +    <div id="training-video-modal" class="modal fade" role="dialog" style="padding-top: 50px">
          +        <div class="modal-dialog modal-dialog-centered">
          +            <!-- Modal content-->
          +            <div class="modal-content">
          +                <div class="modal-header">
          +                    <button type="button" class="close" data-dismiss="modal">&times;</button>
          +                    <h4 class="modal-title">Add Training Video</h4>
          +                </div>
          +                <div class="modal-body">
          +                        <div class="container-fluid py-3">
          +                            <div class="row">
          +                                <div class="col-12 col-sm-8 col-md-6 col-lg-12 mx-auto">
          +                                    <div class="card-body">
          +                                        <form action="{{route('create.video')}}" method="post" id="training-video-form" class="needs-validation"  >
          +                                            @csrf
          +                                            <div class="form-row">
          +                                                <div class="form-group col-md-12">
          +                                                    <label>Section</label>
          +
          +                                                    <select name="section_id"
          +                                                            class="form-control" >
          +                                                        <option value="0">---Select Section---</option>
          +                                                        @foreach (getSection() as $name => $value)
          +                                                             <option value="{{$name}}">{{$value}}</option>
          +                                                        @endforeach
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +                                            <div class="form-row">
          +                                                <div class="form-group col-md-12">
          +                                                    <label>Link</label>
          +                                                    <input id="link" name="link" type="text" placeholder="Video Link" class="form-control link"   autocomplete="off"  >
          +                                                </div>
          +                                            </div>
          +                                            <div class="form-row">
          +                                                <div class="form-group col-md-12 text-left">
          +                                                    <label class="lbl-dest check-btn"><input type="checkbox" name="status" value="1"  checked class="check-equ2">
          +                                                        IsActive<span class="cr"></span></label>
          +                                                </div>
          +                                            </div>
          +                                            <div class="form-row">
          +                                                <div class="form-group pull-right">
          +                                                    <button id="submit-button" type="submit"  class="btn btn-md btn-info" >
          +                                                        <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                                        <span>Save</span>
          +                                                    </button>
          +                                                </div>
          +                                            </div>
          +
          +                                        </form>
          +                                    </div>
          +
          +                                </div>
          +                            </div>
          +                        </div>
          +                </div>
          +                <div class="modal-footer">
          +                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          +                </div>
          +            </div>
          +
          +        </div>
          +    </div>
          +
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/upload_document.blade.php b/resources/views/partials/upload_document.blade.php
          new file mode 100644
          index 0000000..7ba1a57
          --- /dev/null
          +++ b/resources/views/partials/upload_document.blade.php
          @@ -0,0 +1,84 @@
          +@php
          +$identity_file = "";
          +$ssn_file = "";
          +$state_file = "";
          +$other_doc_file = "";
          +@endphp
          +   @if (!empty($upload_medias))
          +       @foreach ($upload_medias as $upload_media)
          +           @if ($upload_media->image_type_id == config('constant.IDENTIFICATION_IMAGE_ID'))
          +               @php $identity_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.SSN_IMAGE_ID'))
          +               @php $ssn_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.STATE_PHOTO_IMAGE_ID'))
          +               @php  $state_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.MAIL_DOC_IMAGE_ID'))
          +               @php  $other_doc_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path @endphp
          +           @endif
          +       @endforeach
          +   @endif
          +
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document Proof of PHOTO IDENTIFICATION (ie
          +        Drivers License or State Identification Card)</label>
          +    @include('partials.file_size_label')
          +    <input id="identity_proof_file" type="file" onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"  class="form-control"
          +           name="uploadmedia[identification]"
          +           accept="image/jpeg,image/gif,image/png,image/x-eps">
          +    @if(!empty($identity_file))
          +        <div class="text-center">
          +            <img src="{{getPublicFile($identity_file)}}"
          +                 class="img-client"><br>
          +        </div>
          +    @endif
          +</div>
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document Proof of legal Identification
          +        number(s) or document proof current legally acquired Social Security Number
          +        (ie SSN CARD, first page of tax form, passport , green card, etc. )</label>
          +    @include('partials.file_size_label')
          +    <input id="ssn_proof_file" type="file" class="form-control"
          +           name="uploadmedia[ssn]"
          +           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"
          +           accept="image/jpeg,image/gif,image/png,image/x-eps">
          +    @if(!empty($ssn_file))
          +    <div class="text-center">
          +        <img src="{{getPublicFile($ssn_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document proof of address's street number,
          +        street name, City and State/Province/Etc. (such as a current Utility Bill or
          +        First page of a Banking statement</label>
          +    @include('partials.file_size_label')
          +    <input id="address_proof_file" type="file" class="form-control"
          +           name="uploadmedia[state_photo_id]"
          +           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"
          +           accept="image/jpeg,image/gif,image/png,image/x-eps">
          +    @if(!empty($state_file))
          +    <div class="text-center">
          +        <img src="{{getPublicFile($state_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Other Document Upload</label>
          +    @include('partials.file_size_label')
          +    <input id="other_file" type="file" class="form-control"
          +           name="uploadmedia[mail_doc]"
          +           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"
          +           accept="image/jpeg,image/gif,image/png,image/x-eps">
          +    @if(!empty($other_doc_file))
          +    <div class="text-center">
          +        <img src="{{getPublicFile($other_doc_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +
          diff --git a/resources/views/partials/upload_documents.blade.php b/resources/views/partials/upload_documents.blade.php
          new file mode 100644
          index 0000000..90d5d6f
          --- /dev/null
          +++ b/resources/views/partials/upload_documents.blade.php
          @@ -0,0 +1,119 @@
          +@php
          +$identity_file = "";
          +$ssn_file = "";
          +$state_file = "";
          +$other_doc_file = "";
          +$path = '';
          +$path_ssn ='';
          +$path_state = '';
          +$path_other = '';
          +@endphp
          +@if (!empty($upload_medias))
          +       @foreach ($upload_medias as $upload_media)
          +           @if ($upload_media->image_type_id == config('constant.IDENTIFICATION_IMAGE_ID'))
          +               @php
          +                   $identity_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path ;
          +                   $path = getPublicFile($identity_file) ;
          +                   $identity_file_model = $upload_media;
          +               @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.SSN_IMAGE_ID'))
          +
          +               @php
          +                   $ssn_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path ;
          +                   $path_ssn = getPublicFile($ssn_file);
          +                   $ssn_file_model = $upload_media;
          +               @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.STATE_PHOTO_IMAGE_ID'))
          +               @php
          +                 $state_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path;
          +                 $path_state = getPublicFile($state_file) ;
          +                 $state_file_model = $upload_media;
          +               @endphp
          +           @endif
          +           @if ($upload_media->image_type_id == config('constant.MAIL_DOC_IMAGE_ID'))
          +               @php
          +                   $other_doc_file = config('constant.UPLOAD_MEDIA_PATH') . DIRECTORY_SEPARATOR.$upload_media->user_id . DIRECTORY_SEPARATOR . $upload_media->image_path ;
          +                   $path_other = getPublicFile($other_doc_file) ;
          +                   $other_doc_file_model = $upload_media;
          +               @endphp
          +           @endif
          +       @endforeach
          +   @endif
          +<div class="row">
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document Proof of PHOTO IDENTIFICATION (ie
          +        Drivers License or State Identification Card)</label>
          +    <button type="button" class="btn btn-info btn-xs" id="identity_proof_file_btn" onclick="file_upload(`Drivers License or State Identification Card`,`{{addslashes($path) }}`,`{{config('constant.IDENTIFICATION_IMAGE_ID')}}`,`uploadmedia[identification]`)"> Upload </button>
          +
          +{{--    @include('partials.file_size_label')--}}
          +{{--    <input id="identity_proof_file" type="file" onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"  class="form-control"--}}
          +{{--           name="uploadmedia[identification]"--}}
          +{{--           accept="image/jpeg,image/gif,image/png,image/x-eps">--}}
          +    @if(!empty($identity_file))
          +        <button type="button" class="btn btn-danger btn-xs"  onclick="file_delete(`Drivers License or State Identification Card`,`{{$identity_file_model}}`)"> Delete </button>
          +        <div class="text-center"  id="identity_proof_doc_id">
          +            <img src="{{getPublicFile($identity_file)}}"
          +                 class="img-client"><br>
          +        </div>
          +    @endif
          +</div>
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document Proof of legal Identification
          +        number(s) or document proof current legally acquired Social Security Number
          +        (ie SSN CARD, first page of tax form, passport , green card, etc. )</label>
          +{{--    @include('partials.file_size_label')--}}
          +{{--    <input id="ssn_proof_file" type="file" class="form-control"--}}
          +{{--           name="uploadmedia[ssn]"--}}
          +{{--           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"--}}
          +{{--           accept="image/jpeg,image/gif,image/png,image/x-eps">--}}
          +    <button type="button" class="btn btn-info btn-xs"  onclick="file_upload(`SSN CARD, first page of tax form, passport , green card, etc.`,`{{addslashes($path_ssn) }}`,`{{config('constant.SSN_IMAGE_ID')}}`,`uploadmedia[ssn]`)"> Upload </button>
          +    @if(!empty($ssn_file))
          +        <button type="button" class="btn btn-danger btn-xs" onclick="file_delete(`SSN CARD, first page of tax form, passport , green card, etc.`,`{{ $ssn_file_model }}`)"> Delete </button>
          +    <div class="text-center" id="ssn_doc_id">
          +        <img src="{{getPublicFile($ssn_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +</div>
          +<div class="row" style="margin-top: 10px">
          +<div class="col-md-6 ">
          +    <label class="lbl-file">Please upload document proof of address's street number,
          +        street name, City and State/Province/Etc. (such as a current Utility Bill or
          +        First page of a Banking statement</label>
          +{{--    @include('partials.file_size_label')--}}
          +{{--    <input id="address_proof_file" type="file" class="form-control"--}}
          +{{--           name="uploadmedia[state_photo_id]"--}}
          +{{--           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"--}}
          +{{--           accept="image/jpeg,image/gif,image/png,image/x-eps">--}}
          +    <button type="button" class="btn btn-info btn-xs"  onclick="file_upload(`Current Utility Bill or First page of a Banking statement`,`{{addslashes($path_state) }}`,`{{config('constant.STATE_PHOTO_IMAGE_ID')}}`,`uploadmedia[state_photo_id]`)"> Upload </button>
          +    @if(!empty($state_file))
          +        <button type="button" class="btn btn-danger btn-xs"  onclick="file_delete(`Current Utility Bill or First page of a Banking statement`,`{{$state_file_model }}`)"> Delete </button>
          +    <div class="text-center" id="state_doc_id">
          +        <img src="{{getPublicFile($state_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +<div class="col-md-6">
          +    <label class="lbl-file">Other Document Upload</label>
          +    <button type="button" class="btn btn-info btn-xs" onclick="file_upload(`Other Document Upload`,`{{addslashes($path_other) }}`,`{{config('constant.MAIL_DOC_IMAGE_ID')}}`,`uploadmedia[mail_doc]`)"> Upload </button>
          +{{--    @include('partials.file_size_label')--}}
          +{{--    <input id="other_file" type="file" class="form-control"--}}
          +{{--           name="uploadmedia[mail_doc]"--}}
          +{{--           onchange="return common_helper.fileSizeValidation(this,{{$max_file_size}})"--}}
          +{{--           accept="image/jpeg,image/gif,image/png,image/x-eps">--}}
          +    @if(!empty($other_doc_file))
          +        <button type="button" class="btn btn-danger btn-xs" onclick="file_delete(`Other Document Upload`,`{{ $other_doc_file_model }}`)"> Delete </button>
          +    <div class="text-center" id="other_doc_id">
          +        <img src="{{getPublicFile($other_doc_file)}}"
          +             class="img-client"><br>
          +    </div>
          +    @endif
          +</div>
          +</div>
          +
          +
          +
          diff --git a/resources/views/partials/user_identity_question_answer.blade.php b/resources/views/partials/user_identity_question_answer.blade.php
          new file mode 100644
          index 0000000..5fc4c09
          --- /dev/null
          +++ b/resources/views/partials/user_identity_question_answer.blade.php
          @@ -0,0 +1,29 @@
          +<div class="x_content">
          +    <fieldset>
          +        <legend class="label-text">Identity Question's Answer<br></legend>
          +        <div class="row">
          +            @foreach($question_answers as $question_answer)
          +                <div class="col-md-6 col-xs-12">
          +                    <div class="form-group">
          +                        <label for="ques1"> {{$question_answer['question']}}</label>
          +                        <div class="input-group" id="show_hide_answer1">
          +                            <input class="form-control" disabled name="answer1"
          +                                   type="password"
          +                                   value="{{ $question_answer['answer']}}" id="ans1">
          +                            <div class="input-group-addon">
          +                                <a href=""><i class="fa fa-eye-slash" aria-hidden="true"></i></a>
          +                            </div>
          +                        </div>
          +                    </div>
          +
          +                </div>
          +            @endforeach
          +        </div>
          +    </fieldset>
          +</div>
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/partials/video_setting.blade.php b/resources/views/partials/video_setting.blade.php
          new file mode 100644
          index 0000000..ac0ee4f
          --- /dev/null
          +++ b/resources/views/partials/video_setting.blade.php
          @@ -0,0 +1,22 @@
          +@php
          +  $training_video_link = getCache('training_video_link');
          +@endphp
          +@if(!empty($training_video_link))
          +    @foreach($training_video_link as $key=>$link)
          +        <a  href="{{$link}}"  id="popup_youtube" class="{{$cssClass??''}}" title="Training Video" >
          +            <img style="position: relative;top:0px;" width="55" class="pull-right" src="{{asset('images/watch_now.jpg')}}" alt=""/>
          +        </a>
          +        @break;
          +    @endforeach
          +    <li class="{{$cssClass??''}}" style="font-size: large;">
          +        <a  href="{{route('training_video.index')}}">
          +            <span>Software Training</span>
          +        </a>
          +    </li>
          +@endif
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/permission/user_permission.blade.php b/resources/views/permission/user_permission.blade.php
          new file mode 100644
          index 0000000..d88df12
          --- /dev/null
          +++ b/resources/views/permission/user_permission.blade.php
          @@ -0,0 +1,112 @@
          +@extends('layouts.admin')
          +<style>
          +    .panel-heading{
          +        padding-left: 25px;
          +    }
          +</style>
          +@section('content')
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default panel-frm">
          +                <div class="row">
          +                    <div class="col-md-12">
          +                        <div class="panel-heading">
          +                            <h3>Employee Permission </h3>
          +                        </div>
          +                    </div>
          +                </div>
          +                <hr/>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="x_panel">
          +                        <div class="x_content">
          +                          <div class="row">
          +                            <div class="col-md-12">
          +                            <form method="post" action="{{route('user.role.create')}}" id="role_permission_form" autocomplete="off" class="input-form-section">
          +                                @csrf
          +
          +                                <div class="form-group">
          +                                    <label for="employee">Employees</label>
          +                                    <select name="employee_id" id="employee_dropdown"  class="form-control" >
          +                                        <option value="">Select Employee</option>
          +                                        @foreach($employees as $employee)
          +                                            <option value="{{$employee['id']}}">{{$employee['first_name'].' '.$employee['last_name']}}</option>
          +                                        @endforeach
          +                                    </select>
          +                                </div>
          +
          +                                <div class="row" style="margin-left: 2px">
          +                                    <div class="col-md-8 col-xs-12" >
          +                                        @include('partials.permission',['moduleSubmoduleAssoc'=>$moduleSubmoduleAssoc])
          +                                    </div>
          +                                </div>
          +
          +                                @if(isShowContent('user.role.create'))
          +                                    <div class="col-sm-12 text-center">
          +                                        <input class="btn btn-success btn2" type="submit" value="Save Changes">
          +                                    </div>
          +                                @endif
          +                            </form>
          +                        </div>
          +                         </div>
          +                      </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +
          +@push('script')
          +    <script>
          +        $('#employee_dropdown').change(function (){
          +           let employee_id = $('#employee_dropdown').val();
          +            $("#sub_module_panel input").prop('checked', false);
          +           if(employee_id > 0)
          +           {
          +               let url = '{{route('user.role.get')}}';
          +               let action = 'GET_USER_PERMISSION';
          +               common_helper.globalAjaxRequestAsync( url,'GET',{ id : employee_id, action : action},user_permission_callback);
          +           }
          +
          +        });
          +
          +        const user_permission_callback = (result)=>{
          +            if(result.status)
          +            {
          +                let permitted_ids = result.data;
          +
          +                $.each(permitted_ids, function(i, val){
          +
          +                    $("#sub_module_panel input[value='" + val + "']").prop('checked', true);
          +
          +                });
          +
          +            }
          +
          +        }
          +
          +            $('#role_permission_form').validate({
          +            rules: {
          +            'employee_id': 'required',
          +            'userRole': 'required',
          +        },
          +            messages: {
          +            'employee_id': {
          +                   required: "Please select an employee"
          +             },
          +            'userRole': {
          +                required: "Please select permission"
          +             },
          +
          +        },
          +            highlight: function (element) {
          +            $(element).parent().addClass("has-error");
          +             },
          +            submitHandler: function (form) {
          +            form.submit();
          +        }
          +        });
          +    </script>
          +@endpush
          diff --git a/resources/views/register/container.blade.php b/resources/views/register/container.blade.php
          new file mode 100644
          index 0000000..e69de29
          diff --git a/resources/views/register/partials/add_profile.blade.php b/resources/views/register/partials/add_profile.blade.php
          new file mode 100644
          index 0000000..521d304
          --- /dev/null
          +++ b/resources/views/register/partials/add_profile.blade.php
          @@ -0,0 +1,59 @@
          +<form class="form-element form-element--login" method="post" id="createAccountForm"
          +      novalidate="novalidate">
          +    <div class="main active">
          +        <small><i class="fa fa-smile-o"></i></small>
          +        <div class="text">
          +            <h2>Creating your account only takes a few seconds.</h2>
          +            <p>Let's start with some basic info.</p>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control" data-val="true"
          +                       data-val-length="The field First Name must be a string with a maximum length of 50."
          +                       data-val-length-max="50" data-val-regex="This field contains invalid characters"
          +                       data-val-regex-pattern="^(?=[-0-9A-Za-z.#'\s]*$).*"
          +                       data-val-required="Please enter first name" id="FirstName" name="FirstName"
          +                       placeholder="Enter first name" type="text" value="">
          +                <div class="field-validation-valid text-danger" data-valmsg-for="FirstName"
          +                     data-valmsg-replace="true"></div>
          +
          +            </div>
          +            <div class="input-div">
          +                <input class="form-control" data-val="true"
          +                       data-val-length="The field Last Name must be a string with a maximum length of 50."
          +                       data-val-length-max="50" data-val-regex="This field contains invalid characters"
          +                       data-val-regex-pattern="^(?=[-0-9A-Za-z.#'\s]*$).*"
          +                       data-val-required="Please enter last name" id="LastName" name="LastName"
          +                       placeholder="Enter last name" type="text" value="">
          +                <div class="field-validation-valid text-danger" data-valmsg-for="LastName"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control valid" data-val="true"
          +                       data-val-email="The Email field is not a valid e-mail address."
          +                       data-val-regex="Invalid email address"
          +                       data-val-regex-pattern="^([a-zA-Z0-9_\-\.+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,10})$"
          +                       data-val-required="Please enter email" id="Email" name="Email"
          +                       placeholder="Enter your email address" type="text" value="">
          +                <div class="text-danger field-validation-valid" data-valmsg-for="Email"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control valid" data-val="true"
          +                       data-val-regex="Your password must be at least eight characters. It can contain letters, numbers, periods, dashes, underscores, and these characters: @ ! # $ % ^ &amp; *"
          +                       data-val-regex-pattern="^[-a-zA-Z0-9@_*!.#$^&amp;]{8,}$"
          +                       data-val-required="Please enter password" id="Password" name="Password"
          +                       placeholder="Create your password" type="password">
          +                <div class="text-danger field-validation-valid" data-valmsg-for="Password"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="buttons">
          +            <button type="submit" value="Next" onclick="submitPage(this,'createAccountForm');" class="next_button">Next Step</button>
          +        </div>
          +    </div>
          +</form>
          diff --git a/resources/views/register/partials/create_account.blade.php b/resources/views/register/partials/create_account.blade.php
          new file mode 100644
          index 0000000..521d304
          --- /dev/null
          +++ b/resources/views/register/partials/create_account.blade.php
          @@ -0,0 +1,59 @@
          +<form class="form-element form-element--login" method="post" id="createAccountForm"
          +      novalidate="novalidate">
          +    <div class="main active">
          +        <small><i class="fa fa-smile-o"></i></small>
          +        <div class="text">
          +            <h2>Creating your account only takes a few seconds.</h2>
          +            <p>Let's start with some basic info.</p>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control" data-val="true"
          +                       data-val-length="The field First Name must be a string with a maximum length of 50."
          +                       data-val-length-max="50" data-val-regex="This field contains invalid characters"
          +                       data-val-regex-pattern="^(?=[-0-9A-Za-z.#'\s]*$).*"
          +                       data-val-required="Please enter first name" id="FirstName" name="FirstName"
          +                       placeholder="Enter first name" type="text" value="">
          +                <div class="field-validation-valid text-danger" data-valmsg-for="FirstName"
          +                     data-valmsg-replace="true"></div>
          +
          +            </div>
          +            <div class="input-div">
          +                <input class="form-control" data-val="true"
          +                       data-val-length="The field Last Name must be a string with a maximum length of 50."
          +                       data-val-length-max="50" data-val-regex="This field contains invalid characters"
          +                       data-val-regex-pattern="^(?=[-0-9A-Za-z.#'\s]*$).*"
          +                       data-val-required="Please enter last name" id="LastName" name="LastName"
          +                       placeholder="Enter last name" type="text" value="">
          +                <div class="field-validation-valid text-danger" data-valmsg-for="LastName"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control valid" data-val="true"
          +                       data-val-email="The Email field is not a valid e-mail address."
          +                       data-val-regex="Invalid email address"
          +                       data-val-regex-pattern="^([a-zA-Z0-9_\-\.+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,10})$"
          +                       data-val-required="Please enter email" id="Email" name="Email"
          +                       placeholder="Enter your email address" type="text" value="">
          +                <div class="text-danger field-validation-valid" data-valmsg-for="Email"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="input-text">
          +            <div class="input-div">
          +                <input class="form-control valid" data-val="true"
          +                       data-val-regex="Your password must be at least eight characters. It can contain letters, numbers, periods, dashes, underscores, and these characters: @ ! # $ % ^ &amp; *"
          +                       data-val-regex-pattern="^[-a-zA-Z0-9@_*!.#$^&amp;]{8,}$"
          +                       data-val-required="Please enter password" id="Password" name="Password"
          +                       placeholder="Create your password" type="password">
          +                <div class="text-danger field-validation-valid" data-valmsg-for="Password"
          +                     data-valmsg-replace="true"></div>
          +            </div>
          +        </div>
          +        <div class="buttons">
          +            <button type="submit" value="Next" onclick="submitPage(this,'createAccountForm');" class="next_button">Next Step</button>
          +        </div>
          +    </div>
          +</form>
          diff --git a/resources/views/register/partials/credit_report.blade.php b/resources/views/register/partials/credit_report.blade.php
          new file mode 100644
          index 0000000..605d3bb
          --- /dev/null
          +++ b/resources/views/register/partials/credit_report.blade.php
          @@ -0,0 +1,36 @@
          +<link rel="stylesheet" href="{{asset('css/credit_report.css')}}">
          +<div class="row" style="padding:20px 40px 20px 40px">
          +    <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +        <div class="listing listing-default">
          +            <div class="shape">
          +                <div class="shape-text">buy</div>
          +            </div>
          +            <div class="listing-content">
          +                <h3 class="lead">Standard listing</h3>
          +                <p>Buy items on normal prices. No discounts available for this listing.</p>
          +            </div>
          +        </div>
          +    </div>
          +    <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +        <div class="listing listing-radius listing-success">
          +            <div class="shape">
          +                <div class="shape-text">50%</div>
          +            </div>
          +            <div class="listing-content">
          +                <h3 class="lead">Discount listing</h3>
          +                <p>Buy now - 50% off.</p>
          +            </div>
          +        </div>
          +    </div>
          +    <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4">
          +        <div class="listing listing-danger">
          +            <div class="shape">
          +                <div class="shape-text">hot</div>
          +            </div>
          +            <div class="listing-content">
          +                <h3 class="lead">Hot Offer</h3>
          +                <p>Best selling for this period.</p>
          +            </div>
          +        </div>
          +    </div>
          +</div>
          diff --git a/resources/views/register/partials/steps.blade.php b/resources/views/register/partials/steps.blade.php
          new file mode 100644
          index 0000000..27c31fd
          --- /dev/null
          +++ b/resources/views/register/partials/steps.blade.php
          @@ -0,0 +1,16 @@
          +<div class="steps-content">
          +    <h3>Step <span class="step-number">{{$step}}</span></h3>
          +    <p class="step-number-content active">Enter your personal information to get closer to
          +        companies.</p>
          +    <p class="step-number-content d-none">Get to know better by adding your diploma,certificate and
          +        education life.</p>
          +    <p class="step-number-content d-none">Help companies get to know you better by telling then about
          +        your past experiences.</p>
          +    <p class="step-number-content d-none">Add your profile piccture and let companies find youy
          +        fast.</p>
          +</div>
          +<ul class="progress-bar">
          +    <li class="{{$step == 1 ? 'active':''}}">Create Account</li>
          +    <li class="{{$step == 2 ? 'active':''}}">Add Profile</li>
          +    <li class="{{$step == 3 ? 'active':''}}">Credit Report</li>
          +</ul>
          diff --git a/resources/views/register/partials/success.blade.php b/resources/views/register/partials/success.blade.php
          new file mode 100644
          index 0000000..d91d225
          --- /dev/null
          +++ b/resources/views/register/partials/success.blade.php
          @@ -0,0 +1,12 @@
          +<div class="main active">
          +    <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
          +        <circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/>
          +        <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
          +    </svg>
          +
          +    <div class="text congrats">
          +        <h2>Congratulations!</h2>
          +        <p>Thanks Mr./Mrs. <span class="shown_name"></span> your information have been submitted
          +            successfully for the future reference we will contact you soon.</p>
          +    </div>
          +</div>
          diff --git a/resources/views/register/register.blade.php b/resources/views/register/register.blade.php
          new file mode 100644
          index 0000000..4303eb3
          --- /dev/null
          +++ b/resources/views/register/register.blade.php
          @@ -0,0 +1,25 @@
          +@extends('layouts.register')
          +
          +@push('css')
          +
          +@endpush
          +
          +
          +<div class="register-body">
          +    <div class="main main--auto row">
          +        @if (Session::get('step') == 2)
          +            @include('register.partials.add_profile')
          +        @elseif (Session::get('step') == 3)
          +            @include('register.partials.credit_report')
          +        @else
          +            @include('register.partials.create_account')
          +        @endif
          +    </div>
          +</div>
          +
          +
          +@push('script')
          +    <script>
          +        const URL = '{{route('user.post.register')}}'
          +    </script>
          +@endpush
          diff --git a/resources/views/register/register_new.blade.php b/resources/views/register/register_new.blade.php
          new file mode 100644
          index 0000000..eaa139e
          --- /dev/null
          +++ b/resources/views/register/register_new.blade.php
          @@ -0,0 +1,60 @@
          +@extends('layouts.register')
          +<!doctype html>
          +<html lang="en">
          +<head>
          +    <meta charset="UTF-8">
          +    <meta name="viewport"
          +          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          +    <meta http-equiv="X-UA-Compatible" content="ie=edge">
          +    <meta name="csrf-token" content="{{ csrf_token() }}"/>
          +    <title>Document</title>
          +    <link rel="stylesheet" href="{{asset('css/register.css')}}">
          +
          +</head>
          +<body>
          +<div class="container">
          +    <div class="card">
          +        <div class="form">
          +            <div class="left-side">
          +                <div class="left-heading">
          +                    <h3>Creditzombies</h3>
          +                </div>
          +                @include('register.partials.steps',['step'=>Session::get('step') > 1 ? Session::get('step'):1])
          +            </div>
          +            <div class="right-side">
          +                @if (Session::get('step') == 2)
          +                    @include('register.partials.add_profile')
          +                @elseif (Session::get('step') == 3)
          +                    @include('register.partials.credit_report')
          +                @else
          +                    @include('register.partials.create_account')
          +                @endif
          +
          +            </div>
          +        </div>
          +    </div>
          +</div>
          +
          +<script>
          +    const URL = '{{route('user.post.register')}}'
          +</script>
          +<script
          +    src="{{asset('/')}}sweetalert2/sweetalert2.min.js"></script>
          +<script
          +    src="{{asset('/')}}register/bundles/modernizr_v_wBEWDufH_8Md-Pbioxomt90vm6tJN2Pyy9u9zHtWsPo1.js"></script>
          +<script
          +    src="{{asset('/')}}register/bundles/jquery_v_LuPxPpDNOuOIkOc-ZCOxmFs-zaj7aZlc0qUjCsAT7VU1.js"></script>
          +
          +<script
          +    src="{{asset('/')}}register/bundles/bootstrap_v_Ys7YWW8ftfDaEQO5B08-Ug2vMyFi6sphPvWRJc0_rkQ1.js"></script>
          +<script
          +    src="{{asset('/')}}register/bundles/jqueryval_v_hEGG8cMxk9p0ncdRUOJ-CnKN7NezhnPnWIvn6REucZo1.js"></script>
          +
          +<script src="{{asset('/')}}js/objectify.js"></script>
          +<script src="{{asset('/')}}js/register.js"></script>
          +</body>
          +</html>
          +
          +@push('css')
          +
          +@endpush
          diff --git a/resources/views/report/recurring_list.blade.php b/resources/views/report/recurring_list.blade.php
          new file mode 100644
          index 0000000..b5be902
          --- /dev/null
          +++ b/resources/views/report/recurring_list.blade.php
          @@ -0,0 +1,113 @@
          +@extends('layouts.admin')
          +
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <h1>Client Recurring List</h1>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <form action="{{route('recurring.report') }}" method="post">
          +                            @csrf
          +                            <div class="col-md-3 col-xs-12">
          +                                <div class="form-group">
          +                                    <label>Client Name</label>
          +                                    <input id="clientName"
          +                                           type="text"
          +                                           class="form-control" name="clientName" value="{{$inputData['clientName']}}" autocomplete="off">
          +
          +                                </div>
          +                            </div>
          +                            <div class="col-md-3 col-xs-12">
          +                                <div class="form-group">
          +                                    <label>From Date</label>
          +                                    <input id="fdate"
          +                                           type="text"
          +                                           class="form-control" name="fdate" value="{{$inputData['fdate']}}" autocomplete="off">
          +                                </div>
          +                            </div>
          +                            <div class="col-md-3 col-xs-12">
          +                                <div class="form-group">
          +                                    <label>To Date</label>
          +                                    <input id="tdate"
          +                                           type="text"
          +                                           class="form-control" name="tdate" value="{{$inputData['tdate']}}" autocomplete="off">
          +                                </div>
          +                            </div>
          +                        <div class="col-md-3 col-xs-12">
          +                            <div class="form-group" style="margin-top: 25px;">
          +                               <button class="btn btn-outline-info" type="submit">Search</button>
          +                            </div>
          +                        </div>
          +                        </form>
          +                    </div>
          +                    <hr/>
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +                                    <table id="datatable-responsive" class="table table-striped table-hover table-responsive dt-responsive nowrap" cellspacing="0" width="100%">
          +                                        <thead>
          +                                        <tr>
          +                                            <th>Client Id</th>
          +                                            <th>Client Name</th>
          +                                            <th>Email</th>
          +                                            <th>Subscription Id</th>
          +                                            <th>Transaction Status</th>
          +                                            <th>Transaction Id</th>
          +                                            <th>Plan Amount</th>
          +                                            <th>Month Frequency</th>
          +                                            <th>Day Of Month</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($recurringInfo))
          +                                            @foreach ($recurringInfo as $key => $obj)
          +                                                @php
          +                                                    if(($obj->transaction_status==config('constant.API_SUCCESS_CODE')))
          +                                                        {
          +                                                            $label='Success';
          +                                                        }
          +                                                    else{
          +                                                         $label='Fail';
          +                                                    }
          +                                                @endphp
          +                                                <tr class="tr-height">
          +                                                    <td>{{$obj->user_id}}</td>
          +                                                    <td>{{$obj->name}}</td>
          +                                                    <td>{{ $obj->email}}</td>
          +                                                    <td>{{ $obj->subscription_id }}</td>
          +                                                    <td>{{ $label }}</td>
          +                                                    <td>{{ $obj->transaction_id}}</td>
          +                                                    <td>{{ $obj->plan_amount }}</td>
          +                                                    <td>{{ $obj->month_frequency}}</td>
          +                                                    <td>{{ $obj->day_of_month }}</td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +                                    <div id="pagination_panel">
          +                                        {{ $recurringInfo->appends($inputData)->links('basic.pagination') }}
          +                                    </div>
          +                                </div>
          +
          +
          +                            </div>
          +                        </div>
          +                    </div>
          +
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        common_helper.datePicker('#fdate');
          +        common_helper.datePicker('#tdate');
          +    </script>
          +@endpush
          diff --git a/resources/views/report/sales_report.blade.php b/resources/views/report/sales_report.blade.php
          new file mode 100644
          index 0000000..3096497
          --- /dev/null
          +++ b/resources/views/report/sales_report.blade.php
          @@ -0,0 +1,146 @@
          +@extends('layouts.admin')
          +<style>
          +    #sales-report td{
          +        text-align: left !important;
          +        padding: 8px !important;
          +    }
          +    #table-clients th{
          +        padding: 8px !important;
          +    }
          +
          +</style>
          +@php
          +    $pageLimit = $inputData['pageLimit'];
          +    $payStatus = $inputData['payStatus'];
          +@endphp
          +@section('content')
          +    <div class="row">
          +
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +
          +                <div class="panel-heading">
          +                    <h1>Sales Report</h1>
          +                </div>
          +                <div class="panel-body">
          +
          +                        <form action="{{route('sales.report') }}" method="get" role="search">
          +                            <div class="row">
          +                                <div class="col-md-3 col-xs-12">
          +                                    <div class="form-group">
          +                                        <label>Client Name</label>
          +                                        <input id="clientName"
          +                                               type="text"
          +                                               class="form-control" name="clientName"
          +                                               value="{{$inputData['clientName']}}"
          +                                               autocomplete="off">
          +
          +                                    </div>
          +                                </div>
          +                                <div class="col-md-2 col-xs-12">
          +                                    <div class="form-group">
          +                                        <label>From Date</label>
          +                                        <input id="fdate"
          +                                               type="text"
          +                                               class="form-control" name="fdate"
          +                                               value="{{$inputData['fdate']}}"
          +                                               autocomplete="off">
          +                                    </div>
          +                                </div>
          +                                <div class="col-md-2 col-xs-12">
          +                                    <div class="form-group">
          +                                        <label>To Date</label>
          +                                        <input id="tdate"
          +                                               type="text"
          +                                               class="form-control" name="tdate"
          +                                               value="{{$inputData['tdate']}}"
          +                                               autocomplete="off">
          +                                    </div>
          +                                </div>
          +                                <div class="col-md-2 col-xs-12">
          +                                    <div class="form-group">
          +                                        <label>Transaction Status</label>
          +                                        <select name="payStatus" class="form-control">
          +                                            <option value="" @if($payStatus == '') selected @endif>Please Select</option>
          +                                            <option value="1" @if($payStatus == 1) selected @endif>Completed</option>
          +                                            <option value="2" @if($payStatus == 2) selected @endif>Pending</option>
          +                                            <option value="0" @if($payStatus == 0) selected @endif>Failed</option>
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="col-md-2 col-xs-12">
          +                                    <div class="form-group" style="margin-top: 25px;">
          +                                        <button class="btn btn-outline-info" style="width: 100%" type="submit">Search</button>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                            <div class="row">
          +                                <div class="col-md-2 col-xs-12">
          +                                    <div class="form-group">
          +                                        <label>Show</label>
          +                                        <select name="pageLimit" id="pagination" class="form-control"
          +                                                onchange="this.form.submit()">
          +                                            <option value="10" @if($pageLimit == 10) selected @endif>10</option>
          +                                            <option value="20" @if($pageLimit == 20) selected @endif>20</option>
          +                                            <option value="50" @if($pageLimit == 50) selected @endif>50</option>
          +                                            <option value="100" @if($pageLimit == 100) selected @endif>100</option>
          +                                            <option value="500" @if($pageLimit == 500) selected @endif>500</option>
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                            </div>
          +                        </form>
          +                    <div class="row">
          +                      <div class="col-md-12 col-xs-12">
          +                          <div class="table-responsive">
          +                            <table id="sales-report" class="table table-bordered table-hover">
          +                              <thead>
          +                                <tr>
          +                                  <th>Client Name</th>
          +                                  <th>Email</th>
          +                                  <th>Phone</th>
          +                                  <th>Order Id</th>
          +                                  <th>Transaction Id</th>
          +                                  <th>Auth Code</th>
          +                                  <th>Transaction Status</th>
          +                                  <th>Created At</th>
          +                                </tr>
          +                              </thead>
          +                              <tbody>
          +                              @if(!empty($salesData))
          +                              @foreach ($salesData as $key => $obj)
          +                                <tr class="tr-height">
          +                                    <td>{{$obj->first_name.' '.$obj->last_name}}</td>
          +                                    <td>{{ $obj->email}}</td>
          +                                    <td>{{ $obj->phone }}</td>
          +                                    <td>{{ $obj->order_id}}</td>
          +                                    <td>{{ $obj->transaction_id}}</td>
          +                                    <td>{{ $obj->auth_code}}</td>
          +                                    <td>{{ config('constant.SALES_STATUS.'.$obj->status)}}</td>
          +                                    <td>{{ getStringToDate($obj->created_at,'Y-m-d H:i:s')}}</td>
          +                                </tr>
          +                              @endforeach
          +                              @endif
          +                              </tbody>
          +                            </table>
          +
          +                          </div>
          +                            <div id="pagination_panel">
          +                                {{ $salesData->appends($inputData)->links('basic.pagination') }}
          +                            </div>
          +                     </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        $(function() {
          +            common_helper.datePicker('#fdate',"yyyy-mm-dd",true,null);
          +            common_helper.datePicker('#tdate',"yyyy-mm-dd",true,null);
          +        });
          +    </script>
          +@endpush
          diff --git a/resources/views/report_provider/provider_add_edit_delete.blade.php b/resources/views/report_provider/provider_add_edit_delete.blade.php
          new file mode 100644
          index 0000000..aae12e2
          --- /dev/null
          +++ b/resources/views/report_provider/provider_add_edit_delete.blade.php
          @@ -0,0 +1,173 @@
          +@extends('layouts.admin')
          +@section('content')
          +    @php
          +        $source_types = config('constant.sourceType');
          +        $credit_report_providers = $providers;
          +    @endphp
          +        <div class="row">
          +            <div class="col-md-12 col-sm-12 col-xs-12">
          +                <div class="panel panel-default">
          +                    <div class="panel-heading">
          +                        <h1>Credit Report Provider </h1>
          +                    </div>
          +                    <div class="panel-body">
          +                      <div class="row">
          +                          <div class="col-md-4">
          +                              <div class="panel-heading text-center">
          +                                  <h4>Create Item</h4>
          +                              </div>
          +                              <form action="{{route('create.provider.link')}}" method="post" id="report_provider_add_form" class="needs-validation"  >
          +                                  @csrf
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Source Type</label>
          +                                          <select class="form-control" name="source_type">
          +                                              <option value=""> Select Report Provider</option>
          +                                              @foreach($source_types as  $key=>$value)
          +                                                  <option value="{{$value}}"> {{$key}}</option>
          +                                              @endforeach
          +                                          </select>
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Link</label>
          +                                          <input name="link" type="text" placeholder="e.g. https://smartcredit.com/" class="form-control link"   autocomplete="off"  >
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group pull-right" style="margin-right: 5px">
          +                                          @if(isShowContent('create.provider.link'))
          +                                          <button id="submit-button" type="submit"  class="btn btn-md btn-info" >
          +                                              <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                              <span>Save</span>
          +                                          </button>
          +                                          @endif
          +                                      </div>
          +                                  </div>
          +
          +                              </form>
          +                          </div>
          +                          <div class="col-md-4">
          +                            <div class="panel-heading text-center">
          +                                <h4>Edit Item</h4>
          +                            </div>
          +                            <form action="{{route('update.provider.link')}}" method="post" id="report_provider_edit_form" class="needs-validation"  >
          +                                @csrf
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Source Type</label>
          +                                        <select class="form-control" name="edit_source_type">
          +                                            <option value=""> Select Report Provider</option>
          +                                            @foreach($source_types as  $key=>$value)
          +                                                <option value="{{$value}}"> {{$key}}</option>
          +                                            @endforeach
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Link</label>
          +                                        <input name="edit_link" placeholder="e.g. https://smartcredit.com/"  type="text" class="form-control">
          +                                    </div>
          +                                </div>
          +
          +                                <div class="form-row">
          +                                    <div class="form-group pull-right" style="margin-right: 5px">
          +                                        @if(isShowContent('update.provider.link'))
          +                                        <button id="submit-button" type="submit" name="edit"  class="btn btn-md btn-info" >
          +                                            <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                            <span>Save Change</span>
          +                                        </button>
          +                                        @endif
          +                                    </div>
          +                                </div>
          +
          +                            </form>
          +                        </div>
          +                          <div class="col-md-4">
          +                            <div class="panel-heading text-center">
          +                                <h4>Delete Item</h4>
          +                            </div>
          +                            <form action="{{route('delete.provider.link')}}" method="post" id="report_provider_delete_form"  class="needs-validation">
          +                                @csrf
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Source Type</label>
          +                                        <select class="form-control" name="delete_source_type">
          +                                            <option value=""> Select Report Provider</option>
          +                                            @foreach($source_types as  $key=>$value)
          +                                                <option value="{{$value}}"> {{$key}}</option>
          +                                            @endforeach
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group pull-right" style="margin-right: 5px">
          +                                        @if(isShowContent('delete.provider.link'))
          +                                        <button id="submit-button" type="submit" value="delete" name="delete" class="btn btn-md btn-danger" >
          +                                            <i class="fa fa-delete-left fa-lg"></i>&nbsp;
          +                                            <span>Delete</span>
          +                                        </button>
          +                                        @endif
          +                                    </div>
          +                                </div>
          +
          +                            </form>
          +                        </div>
          +                      </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +            common_helper.formValidate('#report_provider_add_form',
          +                {'source_type':'required','link': 'required'},
          +                {
          +                    'source_type':{required: "Please select a credit report provider"},
          +                    'link': {required: "Please enter valid link"}
          +
          +                }
          +            );
          +            common_helper.formValidate('#report_provider_edit_form',
          +                {'edit_source_type':'required','edit_link': 'required'},
          +                {
          +                    'edit_source_type':{required: "Please select a credit report provider"},
          +                    'edit_link': {required: "Please enter valid link"}
          +
          +                }
          +            );
          +            common_helper.formValidate('#report_provider_delete_form',
          +                {'delete_source_type':'required'},
          +                {
          +                    'delete_source_type':{required: "Please select a credit report provider"},
          +                })
          +
          +        })
          +
          +        $('[name="edit_source_type"]').on('change', function(){
          +
          +            let providers = [];
          +
          +            let source_type_id = $('[name="edit_source_type"]').val();
          +
          +            providers = @php echo json_encode($credit_report_providers);@endphp;
          +
          +            let link = '';
          +
          +            if(source_type_id > 0) {
          +
          +                const provider = providers[parseInt(source_type_id)];
          +
          +                link = provider !== undefined ? provider : '';
          +            }
          +            $('[name="edit_link"]').val(link);
          +        });
          +
          +    </script>
          +@endpush
          +
          diff --git a/resources/views/security_question/security_question.blade.php b/resources/views/security_question/security_question.blade.php
          new file mode 100644
          index 0000000..7062c6d
          --- /dev/null
          +++ b/resources/views/security_question/security_question.blade.php
          @@ -0,0 +1,97 @@
          +@extends('layouts.admin')
          +@section('content')
          +        <div class="row">
          +            <div class="col-md-12 col-sm-12 col-xs-12">
          +                <div class="panel panel-default">
          +                    <div class="panel-heading">
          +                        <h1>Security Question</h1>
          +                    </div>
          +                    <div class="panel-body">
          +                      <div class="row">
          +                          <div class="col-md-6">
          +                              <div class="panel-heading text-center">
          +                                  <h4>Create Item</h4>
          +                              </div>
          +                              <form action="{{route('create.security_question')}}" method="post" id="security-question-form" class="needs-validation"  >
          +                                  @csrf
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Question</label>
          +                                          <input name="question" type="text" class="form-control" >
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group pull-right" style="margin-right: 5px">
          +                                          <button id="submit-button" type="submit"  class="btn btn-md btn-info" >
          +                                              <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                              <span>Save</span>
          +                                          </button>
          +                                      </div>
          +                                  </div>
          +
          +                              </form>
          +                          </div>
          +                          <div class="col-md-6">
          +                            <div class="panel-heading text-center">
          +                                <h4>Question list</h4>
          +                            </div>
          +
          +                                  <div class="row">
          +                                      <div class="col-md-12 col-sm-12 col-xs-12">
          +                                          <div class="x_panel">
          +                                              <div class="x_content">
          +                                                  <table id="datatable-responsive" class="table table-striped table-hover table-responsive dt-responsive nowrap" cellspacing="0" width="100%">
          +                                                      <thead>
          +                                                      <tr>
          +                                                          <th>Id</th>
          +                                                          <th>Question</th>
          +{{--                                                          <th>Actions</th>--}}
          +                                                      </tr>
          +                                                      </thead>
          +                                                      <tbody>
          +                                                      @if(!empty($security_questions))
          +                                                          @foreach($security_questions as $security_question)
          +                                                              <tr class="tr-height ">
          +                                                                  <td  class="text-left">{{$security_question->id}}</td>
          +                                                                  <td  class="text-left">{{ $security_question->questions}}</td>
          +
          +{{--                                                                  <td  class="text-left">--}}
          +{{--                                                                      <a href="{{route('get.client.info',$obj->id)}}" class="btn btn-success" style="padding: 1px 6px;"> <span class="glyphicon glyphicon-pencil" title="Edit"></span></a>--}}
          +{{--                                                                      <button onclick="return clientDelete(`{{$obj->id}}`)"  class="btn btn-danger" style="padding: 1px 6px;"> <span class="glyphicon glyphicon-trash" title="Delete"></span></button>--}}
          +{{--                                                                  </td>--}}
          +                                                              </tr>
          +                                                          @endforeach
          +                                                      @endif
          +                                                      </tbody>
          +                                                  </table>
          +                                                  <div id="pagination_panel">
          +                                                      {{ $security_questions->links('basic.pagination') }}
          +                                                  </div>
          +                                              </div>
          +                                          </div>
          +                                      </div>
          +                                  </div>
          +
          +
          +                          </div>
          +
          +                      </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +@endsection
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +            common_helper.formValidate('#security-question-form',
          +                {'question':'required'},
          +                {
          +                    'question':{required: "Please enter question"},
          +                }
          +            );
          +        })
          +
          +    </script>
          +@endpush
          +
          diff --git a/resources/views/support/list.blade.php b/resources/views/support/list.blade.php
          new file mode 100644
          index 0000000..e34e7e7
          --- /dev/null
          +++ b/resources/views/support/list.blade.php
          @@ -0,0 +1,140 @@
          +
          +    @extends(isClient() ? 'layouts.app' : 'layouts.admin')
          +
          +    @push('css')
          +        <link href="{{ asset('css/support/support.css') }}" rel="stylesheet">
          +    @endpush
          +    @php
          +        $pageLimit = $searchData['pageLimit'];
          +        $status = $searchData['status'];
          +        $search_value = $searchData['search_value'];
          +    @endphp
          +@section('content')
          +    <div class="row">
          +        <div class="col-md-12 col-sm-12 col-xs-12">
          +            <div class="panel panel-default">
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Client Support</h3>
          +                    </div>
          +                </div>
          +
          +                <div class="panel-body">
          +                    <div class="row">
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel">
          +                                <div class="x_content">
          +                                    <form action="{{route('list.client.support')}}" method="get" role="search">
          +                                        <div class="row">
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Show</label>
          +                                                    <select name="pageLimit" id="pagination" class="form-control"
          +                                                            onchange="this.form.submit()">
          +                                                        <option value="10" @if($pageLimit == 10) selected @endif>10</option>
          +                                                        <option value="20" @if($pageLimit == 20) selected @endif>20</option>
          +                                                        <option value="50" @if($pageLimit == 50) selected @endif>50</option>
          +                                                        <option value="100" @if($pageLimit == 100) selected @endif>100</option>
          +                                                        <option value="500" @if($pageLimit == 500) selected @endif>500</option>
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Status</label>
          +                                                    <select name="status" id="status" class="form-control">
          +                                                        <option value="All" >All</option>
          +                                                        <option value="0" @if($status == 0) selected @endif>Open</option>
          +                                                        <option value="2" @if($status == 2) selected @endif>Close</option>
          +                                                    </select>
          +                                                </div>
          +                                            </div>
          +
          +                                            <div class="col-md-4 col-xs-12">
          +                                                <div class="form-group">
          +                                                    <label>Title/Email</label>
          +                                                    <input id="search_value"
          +                                                           type="text"
          +                                                           value="{{$searchData['search_value']}}"
          +                                                           placeholder="Search By Title/Email"
          +                                                           class="form-control" name="search_value" autocomplete="off">
          +                                                </div>
          +                                            </div>
          +                                            <div class="col-md-2 col-xs-12">
          +                                                <div class="form-group" style="margin-top: 25px;">
          +                                                    <button class="btn btn-primary btn-outline-primary"  style="width:100%" type="submit">Search</button>
          +                                                </div>
          +                                            </div>
          +                                        </div>
          +                                    </form>
          +                                <div class="table-responsive py-5">
          +                                    <table id="table-clients" class="table table-bordered table-hover">
          +                                        <thead>
          +                                        <tr>
          +                                            <th>Id</th>
          +                                            <th>Title</th>
          +                                            <th>Created Date</th>
          +                                            <th>Status</th>
          +                                            <th>Actions</th>
          +                                        </tr>
          +                                        </thead>
          +                                        <tbody>
          +                                        @if(!empty($supports))
          +                                            @foreach ($supports as $key => $obj)
          +                                                @php
          +                                                    $message = '';
          +                                                @endphp
          +
          +                                                  @if(!($obj->supportreplays->isEmpty()))
          +                                                     @php
          +                                                        $message = $obj->supportreplays->first()->message ;
          +                                                     @endphp
          +                                                  @endif
          +                                                <tr class="tr-height">
          +                                                    <td>{{ $obj->id }}</td>
          +                                                    <td>
          +                                                        <a style="color:black;" data-toggle="tooltip" title="" href="#" data-original-title="{{$message}}">{{ $obj->title }}</a>
          +                                                    </td>
          +                                                    <td>{{ getStringToDateTime($obj->created_at,'m/d/Y h:i:s a') }}</td>
          +                                                    <td>{{ config('constant.SUPPORT_STATUS.'.$obj->status) }}</td>
          +                                                    <td>
          +                                                        @if(isShowContent('view.client.support'))
          +                                                        <a href="{{route('view.client.support',$obj->id)}}"
          +                                                           class="btn" title="View Ticket" style="padding: 5px;"> <span
          +                                                                class="glyphicon glyphicon-eye-open text-success" ></span></a>
          +                                                            @if($obj->status == config('constant.SUPPORT_STATUS.Open'))
          +                                                                <button onclick="return closeTicket({{$obj}},'{{route('process.ajax')}}')"
          +                                                                        class="btn" title="Close Ticket" style="padding: 5px;"><span
          +                                                                        class="glyphicon glyphicon-remove text-danger"></span>
          +                                                                </button>
          +                                                            @endif
          +
          +                                                        @endif
          +
          +                                                    </td>
          +                                                </tr>
          +                                            @endforeach
          +                                        @endif
          +                                        </tbody>
          +                                    </table>
          +
          +                                </div>
          +                                <div id="pagination_panel">
          +                                    {{ $supports->links('basic.pagination') }}
          +
          +                                    <input type="hidden" name="redirect_url" value="{{route('list.client.support')}}">
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +
          +            </div>
          +        </div>
          +    </div>
          +    </div>
          +
          +@endsection
          +    @push('script')
          +        <script src="{{asset('/')}}js/support/support.js"></script>
          +    @endpush
          diff --git a/resources/views/support/view.blade.php b/resources/views/support/view.blade.php
          new file mode 100644
          index 0000000..1a785e9
          --- /dev/null
          +++ b/resources/views/support/view.blade.php
          @@ -0,0 +1,162 @@
          +
          + @extends( isClient() ? 'layouts.app' : 'layouts.admin')
          + @push('css')
          +     <link href="{{ asset('js/summernote/summernote.css') }}" rel="stylesheet">
          +     <link href="{{ asset('css/support/support.css') }}" rel="stylesheet">
          +
          + @endpush
          +
          +@section('content')
          +
          +@php
          +  $support = $supports->first();
          +  $max_file_size = 5*1024;
          + @endphp
          +    <div class="row">
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0">
          +            <div class="panel panel-default panel-frm">
          +
          +                <div class="panel-heading">
          +                    <div class="row" style="padding-left: 20px;padding-right: 15px">
          +                        <h3 class="pull-left">Client Support</h3>
          +                        @if($support->status == config('constant.SUPPORT_STATUS.Open') && (isSupport() || isAdmin()))
          +                            <button class="btn btn2 pull-right" onclick="reminder_btn_click({{$support->id}},'{{route('process.ajax')}}')" >Reminder</button>
          +                        @endif
          +                    </div>
          +                </div>
          +                <div class="panel-body">
          +                    <div class="clearfix"></div>
          +                    <div class="x_content">
          +                        <div class="col-md-12">
          +                            <form method="post" action="{{route('insert.client.support')}}" id="client_support_form"
          +                                  autocomplete="off"
          +                                  enctype=multipart/form-data
          +                                  class="input-form-section">
          +                                @csrf
          +                                <input type="hidden" name="id" value="{{$support->id}}">
          +                                <input type="hidden" name="support_title" value="{{$support->title}}">
          +                                <h4> Title : {{$support->title}} </h4>
          +                                <div class="row">
          +                                    <div class="form-group">
          +                                        <textarea id="supporttxt" name="support_text" placeholder="Please write what is your problem or needs">  </textarea>
          +
          +                                    </div>
          +                                </div>
          +                                <div class="row">
          +                                    <h4> Add attachment (if needed)</h4>
          +                                    <input id="doc_file" type="file" class="form-control"
          +                                           name="doc_file"
          +                                           onchange="return common_helper.fileValidation(this,{{$max_file_size}})"
          +                                           accept="image/jpeg,image/gif,image/png,image/x-eps,application/pdf,application/zip">
          +                                    <span class="text-bold"><strong>(Max. file size {{sizeFilter($max_file_size)}} and File Type jpeg, jpg, png, x-eps,pdf,zip)</strong></span>
          +
          +                                </div>
          +                                <div class="row">
          +                                    @if($support->status == config('constant.SUPPORT_STATUS.Open'))
          +                                        <button type="submit" class="btn btn2 pull-right" >Send</button>
          +                                    @endif
          +
          +                                </div>
          +                            </form>
          +                        </div>
          +                    </div>
          +                    <hr/>
          +                    <div class="row">
          +
          +                        <div class="col-md-12 col-sm-12 col-xs-12">
          +                            <div class="x_panel msger-chat">
          +                                @if(!empty($supports))
          +                                    @foreach ($supports as  $obj)
          +
          +                                        @php
          +                                        $isadmin = getSupportIsAdmin($obj);
          +                                        @endphp
          +
          +                                        @if($obj->srsender_id == auth()->user()->id)
          +
          +                                                <div class="msg left-msg">
          +                                                    <div class="msg-img"
          +                                                         style="background-image: url('{{asset('images/user.png')}}')">
          +                                                    </div>
          +                                                    <div class="msg-bubble">
          +                                                        <div class="msg-info">
          +                                                            <div class="msg-info-name">{{$obj->first_name}}</div>
          +                                                            <div class="msg-info-time">{{getStringToDateTime($obj->sr_create)}}</div>
          +                                                        </div>
          +
          +                                                        <div class="msg-text">
          +                                                           @php echo $obj->message @endphp
          +                                                        </div>
          +                                                        @if(!empty($obj->attachment_path))
          +                                                            <a href="{{ getSupportFile($obj->id.'/'.$obj->attachment_path) }}" target="_blank">Attachment</a>
          +                                                        @endif
          +
          +
          +                                                    </div>
          +                                                </div>
          +
          +                                        @elseif($isadmin)
          +
          +                                                <div class="msg left-msg">
          +                                                    <div class="msg-img"
          +                                                         style="background-image: url('{{asset('images/user.png')}}')">
          +                                                    </div>
          +                                                    <div class="msg-bubble">
          +                                                        <div class="msg-info">
          +                                                            <div class="msg-info-name">{{$obj->first_name}}</div>
          +
          +                                                            <div class="msg-info-time">{{getStringToDateTime($obj->sr_create)}}</div>
          +                                                        </div>
          +
          +                                                        <div class="msg-text">
          +                                                            @php echo $obj->message @endphp
          +                                                        </div>
          +                                                        @if(!empty($obj->attachment_path))
          +                                                            <a href="{{ getSupportFile($obj->id.'/'.$obj->attachment_path) }}" target="_blank">Attachment</a>
          +                                                        @endif
          +                                                    </div>
          +                                                </div>
          +
          +                                        @else
          +                                            <div class="msg right-msg">
          +                                                <div class="msg-img"
          +                                                     style="background-image: url('{{asset('images/user.png')}}')">
          +                                                </div>
          +
          +                                                <div class="msg-bubble">
          +                                                    <div class="msg-info">
          +                                                        <div class="msg-info-name">{{$obj->first_name}}</div>
          +                                                            @if(isAdmin() || isEmployee())
          +                                                               <div class="msg-info-name">{{$obj->email}}</div>
          +                                                            @endif
          +                                                        <div class="msg-info-time">{{getStringToDateTime($obj->sr_create)}}</div>
          +                                                    </div>
          +
          +                                                    <div class="msg-text">
          +                                                        @php echo $obj->message @endphp
          +                                                    </div>
          +                                                    @if(!empty($obj->attachment_path))
          +                                                        <a href="{{ getSupportFile($obj->id.'/'.$obj->attachment_path) }}" target="_blank">Attachment</a>
          +                                                    @endif
          +                                                </div>
          +                                            </div>
          +
          +                                        @endif
          +
          +                                    @endforeach
          +                                @endif
          +
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +
          + @push('script')
          +     <script src="{{asset('/')}}js/summernote/summernote.min.js"></script>
          +     <script src="{{asset('/')}}js/support/support.js?v=1.0.1"></script>
          + @endpush
          diff --git a/resources/views/training_video/list.blade.php b/resources/views/training_video/list.blade.php
          new file mode 100644
          index 0000000..a4a47a1
          --- /dev/null
          +++ b/resources/views/training_video/list.blade.php
          @@ -0,0 +1,49 @@
          +@extends('layouts.app')
          +@section('content')
          +    <div class="row" >
          +        <div class="col-xs-12 col-sm-12 column col-sm-offset-0 ">
          +            <div class="panel panel-default container_body" >
          +                <div class="panel-heading">
          +                   <h3>Software Training</h3>
          +                </div>
          +                <div class="panel-body">
          +                <div class="row">
          +                    @foreach($videos as $video)
          +                      <div class="col-md-3 col-xs-12">
          +                          <div class="panel panel-default">
          +                              <div class="panel-heading">
          +                                  <h5 class="panel-title">{{$video['section_name']}}</h5>
          +                              </div>
          +                              <div class="panel-body">
          +                                  <a href="{{$video['link']}}"  class="youtube_popup" id="youtube_popup_{{$video['id']}}" >
          +                                      <img style="position: relative;top:0px;" width="55" class="center-block" src="{{asset('images/watch_now.jpg')}}" alt=""/>
          +                                  </a>
          +                              </div>
          +                          </div>
          +                       </div>
          +                    @endforeach
          +                </div>
          +                </div>
          +            </div>
          +        </div>
          +    </div>
          +
          +@endsection
          +@push('script')
          +    <script>
          +
          +            $('.youtube_popup').click(function (e) {
          +                e.preventDefault();
          +                let id = $(this).attr("id");
          +                common_helper.youtubePopup($('#' + id));
          +            });
          +
          +    </script>
          +
          +@endpush
          +
          +
          +
          +
          +
          +
          diff --git a/resources/views/training_video/video_list.blade.php b/resources/views/training_video/video_list.blade.php
          new file mode 100644
          index 0000000..382c8b0
          --- /dev/null
          +++ b/resources/views/training_video/video_list.blade.php
          @@ -0,0 +1,183 @@
          +@extends('layouts.admin')
          +@section('content')
          +        <div class="row">
          +            <div class="col-md-12 col-sm-12 col-xs-12">
          +                <div class="panel panel-default">
          +                    <div class="panel-heading">
          +                        <h1>Training Video</h1>
          +                    </div>
          +                    <div class="panel-body">
          +                      <div class="row">
          +                          <div class="col-md-4">
          +                              <div class="panel-heading text-center">
          +                                  <h4>Create Item</h4>
          +                              </div>
          +                              <form action="{{route('create.video')}}" method="post" id="training-video-form" class="needs-validation"  >
          +                                  @csrf
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Section Name</label>
          +                                          <input name="section_name" type="text" class="form-control" >
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Video Link</label>
          +                                          <input id="link" name="link" type="text" placeholder="e.g. https://vimeo.com/773528229" class="form-control link"   autocomplete="off"  >
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group col-md-12">
          +                                          <label>Status</label>
          +                                          <select name="status" class="form-control" >
          +                                              <option value="">Please Select</option>
          +                                              <option value="1" selected>Active</option>
          +                                              <option value="0">Inactive</option>
          +                                          </select>
          +                                      </div>
          +                                  </div>
          +                                  <div class="form-row">
          +                                      <div class="form-group pull-right" style="margin-right: 5px">
          +                                          @if(isShowContent('create.video'))
          +                                          <button id="submit-button" type="submit"  class="btn btn-md btn-info" >
          +                                              <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                              <span>Save</span>
          +                                          </button>
          +                                          @endif
          +                                      </div>
          +                                  </div>
          +
          +                              </form>
          +                          </div>
          +                          <div class="col-md-4">
          +                            <div class="panel-heading text-center">
          +                                <h4>Edit Item</h4>
          +                            </div>
          +                            <form action="{{route('update.video')}}" method="post" id="training-video-edit-form" class="needs-validation"  >
          +                                @csrf
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Section Name</label>
          +                                        <select name="edit_section_id" id="section_id"
          +                                                class="form-control" >
          +                                            <option value="0">Select Section</option>
          +                                            @foreach ($videos as $video)
          +                                                <option value="{{$video->id}}">{{$video->section_name}}</option>
          +                                            @endforeach
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Name</label>
          +                                        <input name="edit_section_name" id="section-name"  type="text" class="form-control" disabled >
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Video Link</label>
          +                                        <input  name="edit_link" type="text" placeholder="e.g. https://vimeo.com/773528229" class="form-control link"   autocomplete="off"  >
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Status</label>
          +                                        <select name="edit_status" class="form-control" >
          +                                            <option value="">Please Select</option>
          +                                            <option value="1">Active</option>
          +                                            <option value="0">Inactive</option>
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group pull-right" style="margin-right: 5px">
          +                                        @if(isShowContent('update.video'))
          +                                        <button id="submit-button" type="submit" name="edit"  class="btn btn-md btn-info" >
          +                                            <i class="fa fa-save fa-lg"></i>&nbsp;
          +                                            <span>Save Change</span>
          +                                        </button>
          +                                        @endif
          +                                    </div>
          +                                </div>
          +
          +                            </form>
          +                        </div>
          +                          <div class="col-md-4">
          +                            <div class="panel-heading text-center">
          +                                <h4>Delete Item</h4>
          +                            </div>
          +                            <form action="{{route('delete.video')}}" method="post" id="video-delete-from"  class="needs-validation">
          +                                @csrf
          +                                <div class="form-row">
          +                                    <div class="form-group col-md-12">
          +                                        <label>Section Name</label>
          +                                        <select name="delete_section_id"
          +                                                class="form-control" >
          +                                            <option value="0">Select Section</option>
          +                                            @foreach ($videos as $video)
          +                                                <option value="{{$video->id}}">{{$video->section_name}}</option>
          +                                            @endforeach
          +                                        </select>
          +                                    </div>
          +                                </div>
          +                                <div class="form-row">
          +                                    <div class="form-group pull-right" style="margin-right: 5px">
          +                                        @if(isShowContent('delete.video'))
          +                                        <button id="submit-button" type="submit" value="delete" name="delete" class="btn btn-md btn-danger" >
          +                                            <i class="fa fa-delete-left fa-lg"></i>&nbsp;
          +                                            <span>Delete</span>
          +                                        </button>
          +                                        @endif
          +                                    </div>
          +                                </div>
          +
          +                            </form>
          +                        </div>
          +                      </div>
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +@endsection
          +@push('script')
          +    <script>
          +        $(document).ready(function() {
          +            common_helper.formValidate('#training-video-form',
          +                {'section_name':'required','link': 'required','status': 'required'},
          +                {
          +                    'section_name':{required: "Please enter section name"},
          +                    'link': {required: "Please enter valid link"},
          +                    'status':{required: "Please select status"},
          +                }
          +            );
          +            common_helper.formValidate('#video-delete-from',
          +                {'delete_section_id':'required'},
          +                {
          +                    'delete_section_id':{required: "Please select a section"},
          +                }
          +            );
          +            common_helper.formValidate('#training-video-edit-form',
          +                {'edit_section_name':'required','edit_link': 'required','edit_status': 'required'},
          +                {
          +                    'edit_section_name':{required: "Please select a section"},
          +                    'edit_link': {required: "Please enter valid link"},
          +                    'edit_status': {required: "Please select status"}
          +                })
          +
          +        })
          +
          +        $('#section_id').on('change', function(){
          +            let videos=[];
          +            let sectionid= $(this).val();
          +            videos=@php echo json_encode($videos);@endphp;
          +            if(sectionid>0) {
          +                const video= videos.find(x=>x.id===parseInt(sectionid));
          +                $('[name="edit_section_name"]').val(video.section_name);
          +                $('[name="edit_link"]').val(video.link);
          +                $('[name="edit_status"]').val(video.status);
          +            }
          +        });
          +
          +    </script>
          +@endpush
          +
          diff --git a/resources/views/vendor/livewire/bootstrap.blade.php b/resources/views/vendor/livewire/bootstrap.blade.php
          new file mode 100644
          index 0000000..9f08a7f
          --- /dev/null
          +++ b/resources/views/vendor/livewire/bootstrap.blade.php
          @@ -0,0 +1,50 @@
          +<div>
          +    @if ($paginator->hasPages())
          +        @php(isset($this->numberOfPaginatorsRendered[$paginator->getPageName()]) ? $this->numberOfPaginatorsRendered[$paginator->getPageName()]++ : $this->numberOfPaginatorsRendered[$paginator->getPageName()] = 1)
          +        
          +        <nav>
          +            <ul class="pagination">
          +                {{-- Previous Page Link --}}
          +                @if ($paginator->onFirstPage())
          +                    <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
          +                        <span class="page-link" aria-hidden="true">&lsaquo;</span>
          +                    </li>
          +                @else
          +                    <li class="page-item">
          +                        <button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</button>
          +                    </li>
          +                @endif
          +
          +                {{-- Pagination Elements --}}
          +                @foreach ($elements as $element)
          +                    {{-- "Three Dots" Separator --}}
          +                    @if (is_string($element))
          +                        <li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
          +                    @endif
          +
          +                    {{-- Array Of Links --}}
          +                    @if (is_array($element))
          +                        @foreach ($element as $page => $url)
          +                            @if ($page == $paginator->currentPage())
          +                                <li class="page-item active" wire:key="paginator-{{ $paginator->getPageName() }}-{{ $this->numberOfPaginatorsRendered[$paginator->getPageName()] }}-page-{{ $page }}" aria-current="page"><span class="page-link">{{ $page }}</span></li>
          +                            @else
          +                                <li class="page-item" wire:key="paginator-{{ $paginator->getPageName() }}-{{ $this->numberOfPaginatorsRendered[$paginator->getPageName()] }}-page-{{ $page }}"><button type="button" class="page-link" wire:click="gotoPage({{ $page }}, '{{ $paginator->getPageName() }}')">{{ $page }}</button></li>
          +                            @endif
          +                        @endforeach
          +                    @endif
          +                @endforeach
          +
          +                {{-- Next Page Link --}}
          +                @if ($paginator->hasMorePages())
          +                    <li class="page-item">
          +                        <button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</button>
          +                    </li>
          +                @else
          +                    <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
          +                        <span class="page-link" aria-hidden="true">&rsaquo;</span>
          +                    </li>
          +                @endif
          +            </ul>
          +        </nav>
          +    @endif
          +</div>
          diff --git a/resources/views/vendor/livewire/simple-bootstrap.blade.php b/resources/views/vendor/livewire/simple-bootstrap.blade.php
          new file mode 100644
          index 0000000..f06e6a9
          --- /dev/null
          +++ b/resources/views/vendor/livewire/simple-bootstrap.blade.php
          @@ -0,0 +1,41 @@
          +<div>
          +    @if ($paginator->hasPages())
          +        <nav>
          +            <ul class="pagination">
          +                {{-- Previous Page Link --}}
          +                @if ($paginator->onFirstPage())
          +                    <li class="page-item disabled" aria-disabled="true">
          +                        <span class="page-link">@lang('pagination.previous')</span>
          +                    </li>
          +                @else
          +                    @if(method_exists($paginator,'getCursorName'))
          +                        <li class="page-item">
          +                            <button dusk="previousPage" type="button" class="page-link" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
          +                        </li>
          +                    @else
          +                        <li class="page-item">
          +                            <button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
          +                        </li>
          +                    @endif
          +                @endif
          +
          +                {{-- Next Page Link --}}
          +                @if ($paginator->hasMorePages())
          +                    @if(method_exists($paginator,'getCursorName'))
          +                        <li class="page-item">
          +                            <button dusk="nextPage" type="button" class="page-link" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
          +                        </li>
          +                    @else
          +                        <li class="page-item">
          +                            <button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
          +                        </li>
          +                    @endif
          +                @else
          +                    <li class="page-item disabled" aria-disabled="true">
          +                        <span class="page-link">@lang('pagination.next')</span>
          +                    </li>
          +                @endif
          +            </ul>
          +        </nav>
          +    @endif
          +</div>
          diff --git a/resources/views/vendor/livewire/simple-tailwind.blade.php b/resources/views/vendor/livewire/simple-tailwind.blade.php
          new file mode 100644
          index 0000000..0d626a9
          --- /dev/null
          +++ b/resources/views/vendor/livewire/simple-tailwind.blade.php
          @@ -0,0 +1,43 @@
          +<div>
          +    @if ($paginator->hasPages())
          +        <nav role="navigation" aria-label="Pagination Navigation" class="flex justify-between">
          +            <span>
          +                {{-- Previous Page Link --}}
          +                @if ($paginator->onFirstPage())
          +                    <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
          +                        {!! __('pagination.previous') !!}
          +                    </span>
          +                @else
          +                    @if(method_exists($paginator,'getCursorName'))
          +                        <button type="button" dusk="previousPage" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                                {!! __('pagination.previous') !!}
          +                        </button>
          +                    @else
          +                        <button type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                                {!! __('pagination.previous') !!}
          +                        </button>
          +                    @endif
          +                @endif
          +            </span>
          +
          +            <span>
          +                {{-- Next Page Link --}}
          +                @if ($paginator->hasMorePages())
          +                    @if(method_exists($paginator,'getCursorName'))
          +                        <button type="button" dusk="nextPage" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                                {!! __('pagination.next') !!}
          +                        </button>
          +                    @else
          +                        <button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                                {!! __('pagination.next') !!}
          +                        </button>
          +                    @endif
          +                @else
          +                    <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
          +                        {!! __('pagination.next') !!}
          +                    </span>
          +                @endif
          +            </span>
          +        </nav>
          +    @endif
          +</div>
          diff --git a/resources/views/vendor/livewire/tailwind.blade.php b/resources/views/vendor/livewire/tailwind.blade.php
          new file mode 100644
          index 0000000..81d372c
          --- /dev/null
          +++ b/resources/views/vendor/livewire/tailwind.blade.php
          @@ -0,0 +1,116 @@
          +<div>
          +    @if ($paginator->hasPages())
          +        @php(isset($this->numberOfPaginatorsRendered[$paginator->getPageName()]) ? $this->numberOfPaginatorsRendered[$paginator->getPageName()]++ : $this->numberOfPaginatorsRendered[$paginator->getPageName()] = 1)
          +
          +        <nav role="navigation" aria-label="Pagination Navigation" class="flex items-center justify-between">
          +            <div class="flex justify-between flex-1 sm:hidden">
          +                <span>
          +                    @if ($paginator->onFirstPage())
          +                        <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
          +                            {!! __('pagination.previous') !!}
          +                        </span>
          +                    @else
          +                        <button type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.before" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                            {!! __('pagination.previous') !!}
          +                        </button>
          +                    @endif
          +                </span>
          +
          +                <span>
          +                    @if ($paginator->hasMorePages())
          +                        <button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.before" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
          +                            {!! __('pagination.next') !!}
          +                        </button>
          +                    @else
          +                        <span class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md select-none">
          +                            {!! __('pagination.next') !!}
          +                        </span>
          +                    @endif
          +                </span>
          +            </div>
          +
          +            <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
          +                <div>
          +                    <p class="text-sm text-gray-700 leading-5">
          +                        <span>{!! __('Showing') !!}</span>
          +                        <span class="font-medium">{{ $paginator->firstItem() }}</span>
          +                        <span>{!! __('to') !!}</span>
          +                        <span class="font-medium">{{ $paginator->lastItem() }}</span>
          +                        <span>{!! __('of') !!}</span>
          +                        <span class="font-medium">{{ $paginator->total() }}</span>
          +                        <span>{!! __('results') !!}</span>
          +                    </p>
          +                </div>
          +
          +                <div>
          +                    <span class="relative z-0 inline-flex rounded-md shadow-sm">
          +                        <span>
          +                            {{-- Previous Page Link --}}
          +                            @if ($paginator->onFirstPage())
          +                                <span aria-disabled="true" aria-label="{{ __('pagination.previous') }}">
          +                                    <span class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-l-md leading-5" aria-hidden="true">
          +                                        <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
          +                                            <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
          +                                        </svg>
          +                                    </span>
          +                                </span>
          +                            @else
          +                                <button type="button" wire:click="previousPage('{{ $paginator->getPageName() }}')" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.after" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.previous') }}">
          +                                    <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
          +                                        <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
          +                                    </svg>
          +                                </button>
          +                            @endif
          +                        </span>
          +
          +                        {{-- Pagination Elements --}}
          +                        @foreach ($elements as $element)
          +                            {{-- "Three Dots" Separator --}}
          +                            @if (is_string($element))
          +                                <span aria-disabled="true">
          +                                    <span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 cursor-default leading-5 select-none">{{ $element }}</span>
          +                                </span>
          +                            @endif
          +
          +                            {{-- Array Of Links --}}
          +                            @if (is_array($element))
          +                                @foreach ($element as $page => $url)
          +                                    <span wire:key="paginator-{{ $paginator->getPageName() }}-{{ $this->numberOfPaginatorsRendered[$paginator->getPageName()] }}-page{{ $page }}">
          +                                        @if ($page == $paginator->currentPage())
          +                                            <span aria-current="page">
          +                                                <span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 select-none">{{ $page }}</span>
          +                                            </span>
          +                                        @else
          +                                            <button type="button" wire:click="gotoPage({{ $page }}, '{{ $paginator->getPageName() }}')" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
          +                                                {{ $page }}
          +                                            </button>
          +                                        @endif
          +                                    </span>
          +                                @endforeach
          +                            @endif
          +                        @endforeach
          +
          +                        <span>
          +                            {{-- Next Page Link --}}
          +                            @if ($paginator->hasMorePages())
          +                                <button type="button" wire:click="nextPage('{{ $paginator->getPageName() }}')" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}.after" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150" aria-label="{{ __('pagination.next') }}">
          +                                    <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
          +                                        <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
          +                                    </svg>
          +                                </button>
          +                            @else
          +                                <span aria-disabled="true" aria-label="{{ __('pagination.next') }}">
          +                                    <span class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-r-md leading-5" aria-hidden="true">
          +                                        <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
          +                                            <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
          +                                        </svg>
          +                                    </span>
          +                                </span>
          +                            @endif
          +                        </span>
          +                    </span>
          +                </div>
          +            </div>
          +        </nav>
          +    @endif
          +</div>
          diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php
          new file mode 100644
          index 0000000..58d1467
          --- /dev/null
          +++ b/resources/views/welcome.blade.php
          @@ -0,0 +1,132 @@
          +<!DOCTYPE html>
          +<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
          +    <head>
          +        <meta charset="utf-8">
          +        <meta name="viewport" content="width=device-width, initial-scale=1">
          +
          +        <title>Laravel</title>
          +
          +        <!-- Fonts -->
          +        <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
          +
          +        <!-- Styles -->
          +        <style>
          +            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
          +        </style>
          +
          +        <style>
          +            body {
          +                font-family: 'Nunito';
          +            }
          +        </style>
          +    </head>
          +    <body class="antialiased">
          +        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
          +            @if (Route::has('login'))
          +                <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
          +                    @auth
          +                        <a href="{{ url('/home') }}" class="text-sm text-gray-700 underline">Home</a>
          +                    @else
          +                        <a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a>
          +
          +                        @if (Route::has('register'))
          +                            <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 underline">Register</a>
          +                        @endif
          +                    @endif
          +                </div>
          +            @endif
          +
          +            <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
          +                <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
          +                    <svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
          +                        <g clip-path="url(#clip0)" fill="#EF3B2D">
          +                            <path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
          +                        </g>
          +                    </svg>
          +                </div>
          +
          +                <div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
          +                    <div class="grid grid-cols-1 md:grid-cols-2">
          +                        <div class="p-6">
          +                            <div class="flex items-center">
          +                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
          +                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div>
          +                            </div>
          +
          +                            <div class="ml-12">
          +                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
          +                                    Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
          +                                </div>
          +                            </div>
          +                        </div>
          +
          +                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
          +                            <div class="flex items-center">
          +                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
          +                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
          +                            </div>
          +
          +                            <div class="ml-12">
          +                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
          +                                    Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
          +                                </div>
          +                            </div>
          +                        </div>
          +
          +                        <div class="p-6 border-t border-gray-200 dark:border-gray-700">
          +                            <div class="flex items-center">
          +                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
          +                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
          +                            </div>
          +
          +                            <div class="ml-12">
          +                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
          +                                    Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
          +                                </div>
          +                            </div>
          +                        </div>
          +
          +                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
          +                            <div class="flex items-center">
          +                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
          +                                <div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
          +                            </div>
          +
          +                            <div class="ml-12">
          +                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
          +                                    Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
          +                                </div>
          +                            </div>
          +                        </div>
          +                    </div>
          +                </div>
          +
          +                <div class="flex justify-center mt-4 sm:items-center sm:justify-between">
          +                    <div class="text-center text-sm text-gray-500 sm:text-left">
          +                        <div class="flex items-center">
          +                            <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
          +                                <path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
          +                            </svg>
          +
          +                            <a href="https://laravel.bigcartel.com" class="ml-1 underline">
          +                                Shop
          +                            </a>
          +
          +                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
          +                                <path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
          +                            </svg>
          +
          +                            <a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
          +                                Sponsor
          +                            </a>
          +                        </div>
          +                    </div>
          +
          +                    <div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
          +                        Build v{{ Illuminate\Foundation\Application::VERSION }}
          +                    </div>
          +                </div>
          +            </div>
          +        </div>
          +    </body>
          +</html>
          diff --git a/routes/api.php b/routes/api.php
          new file mode 100644
          index 0000000..5e6827b
          --- /dev/null
          +++ b/routes/api.php
          @@ -0,0 +1,21 @@
          +<?php
          +
          +use Illuminate\Support\Facades\Route;
          +
          +/*
          +|--------------------------------------------------------------------------
          +| API Routes
          +|--------------------------------------------------------------------------
          +|
          +| Here is where you can register API routes for your application. These
          +| routes are loaded by the RouteServiceProvider within a group which
          +| is assigned the "api" middleware group. Enjoy building your API!
          +|
          +*/
          +
          +// for testing
          +Route::post('test',[\App\Http\Controllers\TestController::class,'testing']);
          +Route::post('reverse/test',[\App\Http\Controllers\TestController::class,'reverse']);
          +Route::get('generatekey',[\App\Http\Controllers\TestController::class,'generateKeys']);
          +
          +
          diff --git a/routes/channels.php b/routes/channels.php
          new file mode 100644
          index 0000000..5d451e1
          --- /dev/null
          +++ b/routes/channels.php
          @@ -0,0 +1,18 @@
          +<?php
          +
          +use Illuminate\Support\Facades\Broadcast;
          +
          +/*
          +|--------------------------------------------------------------------------
          +| Broadcast Channels
          +|--------------------------------------------------------------------------
          +|
          +| Here you may register all of the event broadcasting channels that your
          +| application supports. The given channel authorization callbacks are
          +| used to check if an authenticated user can listen to the channel.
          +|
          +*/
          +
          +Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
          +    return (int) $user->id === (int) $id;
          +});
          diff --git a/routes/console.php b/routes/console.php
          new file mode 100644
          index 0000000..e05f4c9
          --- /dev/null
          +++ b/routes/console.php
          @@ -0,0 +1,19 @@
          +<?php
          +
          +use Illuminate\Foundation\Inspiring;
          +use Illuminate\Support\Facades\Artisan;
          +
          +/*
          +|--------------------------------------------------------------------------
          +| Console Routes
          +|--------------------------------------------------------------------------
          +|
          +| This file is where you may define all of your Closure based console
          +| commands. Each Closure is bound to a command instance allowing a
          +| simple approach to interacting with each command's IO methods.
          +|
          +*/
          +
          +Artisan::command('inspire', function () {
          +    $this->comment(Inspiring::quote());
          +})->purpose('Display an inspiring quote');
          diff --git a/routes/web.php b/routes/web.php
          new file mode 100644
          index 0000000..e8ef875
          --- /dev/null
          +++ b/routes/web.php
          @@ -0,0 +1,120 @@
          +<?php
          +
          +use Illuminate\Support\Facades\Route;
          +
          +/*
          +|--------------------------------------------------------------------------
          +| Web Routes
          +|--------------------------------------------------------------------------
          +|
          +| Here is where you can register web routes for your application. These
          +| routes are loaded by the RouteServiceProvider within a group which
          +| contains the "web" middleware group. Now create something great!
          +|
          +*/
          +
          +Route::get('/test',[\App\Http\Controllers\TestController::class, 'testing']);
          +Route::get('/terms-of-service', [\App\Http\Controllers\BasicController::class,'termsAndCondition'])->name('terms.of.service.view');
          +
          +Route::get('/', [\App\Http\Controllers\AuthController::class,'authRedirect'])->name('auth.redirect');
          +
          +Route::get('/login', [\App\Http\Controllers\AuthController::class,'showLoginForm'])->name('login');
          +
          +//Route::get('/user/register', [\App\Http\Controllers\AuthController::class,'showRegisterForm'])->name('user.register');
          +Route::post('/login', [\App\Http\Controllers\AuthController::class,'login'])->name('post.login');
          +//Route::post('/user/register', [\App\Http\Controllers\AuthController::class,'register'])->name('user.post.register');
          +Route::get('/user/create/secret-signup/{any?}', [\App\Http\Controllers\AuthController::class,'secretSignup'])->name('user.secret.signup');
          +
          +
          +Route::view('/user/{any?}', 'layouts.register')->where('any', '.*')->name('register');
          +
          +Route::group(['middleware'=>['auth']],function(){
          +
          +        Route::group(['middleware'=>['permission:admin','permissionroute']],function (){
          +            Route::match(['get','post'],'/get-clients', [\App\Http\Controllers\UserController::class, 'getAllClient'])->name('get.clients');
          +            Route::get('/training-video', [\App\Http\Controllers\TrainingVideoController::class, 'list'])->name('training_video.list');
          +            Route::post('/add/training-video', [\App\Http\Controllers\TrainingVideoController::class, 'createTrainingVideo'])->name('create.video');
          +            Route::post('/update/training-video', [\App\Http\Controllers\TrainingVideoController::class, 'editTrainingVideo'])->name('update.video');
          +            Route::get('/process/get-ajax', [\App\Http\Controllers\AjaxController::class, 'getTrainingVideo'])->name('get.section.video');
          +            Route::get('/client/{id}', [\App\Http\Controllers\UserController::class, 'getClientInfo'])->name('get.client.info');
          +            Route::post('/update-client', [\App\Http\Controllers\UserController::class, 'updateClientInfo'])->name('update.client');
          +            Route::post('/update-client-id', [\App\Http\Controllers\UserController::class, 'updateClientInfoById'])->name('update.client.id');
          +            Route::post('/delete/training-video', [\App\Http\Controllers\TrainingVideoController::class, 'deleteTrainingVideo'])->name('delete.video');
          +            Route::match(['get','post'],'/recurring/list/{any?}', [\App\Http\Controllers\ReportController::class, 'recurringReport'])->name('recurring.report');
          +            Route::match(['get','post'],'/sales/list/{any?}', [\App\Http\Controllers\ReportController::class, 'salesReport'])->name('sales.report');
          +            Route::get('/delete-client/{id}', [\App\Http\Controllers\UserController::class, 'deleteClient'])->name('delete.client');
          +            Route::post('/process/admin-ajax', [\App\Http\Controllers\AjaxController::class, 'processAdminAjaxRequest'])->name('admin.ajax.process');
          +            Route::match(['get', 'post'],'/terms-of-service/create', [\App\Http\Controllers\BasicController::class,'termAndService'])->name('terms.of.service');
          +            Route::get('/security-question', [\App\Http\Controllers\SecurityQuestionController::class, 'index'])->name('security_question.list');
          +            Route::post('/add/security-question', [\App\Http\Controllers\SecurityQuestionController::class, 'createSecurityQuestion'])->name('create.security_question');
          +            Route::post('/change-admin-info', [\App\Http\Controllers\UserController::class, 'changeAdminInfo'])->name('change.admin_info');
          +
          +            Route::get('/employee', [\App\Http\Controllers\UserController::class, 'employeeList'])->name('employee.list');
          +            Route::get('/add/employee', [\App\Http\Controllers\UserController::class, 'createEmployee'])->name('create.employee');
          +            Route::post('/add/employee', [\App\Http\Controllers\RegisterController::class, 'insertEmployee'])->name('insert.employee');
          +            Route::get('/employee/{id}', [\App\Http\Controllers\UserController::class, 'getEmployeeInfo'])->name('get.employee.info');
          +            Route::post('/update/employee', [\App\Http\Controllers\UserController::class, 'updateEmployeeInfo'])->name('update.employee');
          +
          +            Route::get('/add/client', [\App\Http\Controllers\RegisterController::class, 'createAccount'])->name('client.create');
          +            Route::post('/add/client', [\App\Http\Controllers\RegisterController::class, 'createManualAccount'])->name('client.insert');
          +
          +            Route::get('/report-provider', [\App\Http\Controllers\CreditReportProviderController::class, 'index'])->name('view.provider.link');
          +            Route::post('/add/report-provider', [\App\Http\Controllers\CreditReportProviderController::class, 'createReportProvider'])->name('create.provider.link');
          +            Route::post('/update/report-provider', [\App\Http\Controllers\CreditReportProviderController::class, 'editReportProvider'])->name('update.provider.link');
          +            Route::post('/delete/report-provider', [\App\Http\Controllers\CreditReportProviderController::class, 'deleteReportProvider'])->name('delete.provider.link');
          +        });
          +
          +        Route::group(['middleware'=>['permission:client']],function (){
          +            Route::get('/manage-clients', [\App\Http\Controllers\UserController::class, 'showManageClient'])->name('show.manage.clients');
          +            Route::post('/manage-clients', [\App\Http\Controllers\UserController::class, 'manageClient'])->name('manage.clients');
          +            Route::post('/create/payment', [\App\Http\Controllers\PaymentController::class, 'paymentSetting'])->name('payment.create');
          +            Route::get('/training-videos', [\App\Http\Controllers\TrainingVideoController::class, 'index'])->name('training_video.index');
          +            Route::post('/upload-profile-image', [\App\Http\Controllers\UserController::class, 'uploadClientImage'])->name('upload.client.image');
          +
          +            Route::group(['middleware'=>['checkSubscription']],function (){
          +                Route::match(['get', 'post'], '/get-letter', [\App\Http\Controllers\EpicVelocityController::class, 'getLetter'])->name('get.letter');
          +                Route::post('/generate-pdf', [\App\Http\Controllers\EpicVelocityController::class, 'generatePdf'])->name('generate.pdf');//
          +                Route::post('/generate-pdf-validate', [\App\Http\Controllers\EpicVelocityController::class, 'getGeneratedPdf'])->name('get.generated.pdf');
          +                Route::post('/upload/report', [\App\Http\Controllers\UserController::class, 'uploadCreditReport'])->name('upload.report');//
          +                Route::get('import/report', [\App\Http\Controllers\CreditReportController::class, 'getReport']);
          +                Route::post('/credit/report', [\App\Http\Controllers\CreditReportController::class, 'getCreditReport'])->name('get.credit.report');//
          +                Route::post('/upload/credit-report', [\App\Http\Controllers\CreditReportController::class, 'uploadCreditReport'])->name('upload.credit.report');
          +            });
          +
          +        });
          +
          +        Route::post('/add/client-support', [\App\Http\Controllers\SupportController::class, 'insertClientSupport'])->name('create.client.support');
          +        Route::match(['get', 'post'],'/client-support', [\App\Http\Controllers\SupportController::class, 'index'])->name('list.client.support');
          +        Route::get('/client-support/{id}', [\App\Http\Controllers\SupportController::class, 'view'])->name('view.client.support');
          +        Route::post('/client-support/add', [\App\Http\Controllers\SupportController::class, 'add'])->name('insert.client.support');
          +        Route::match(['get', 'post'],'/iq-call-histories', [\App\Http\Controllers\HistoryController::class, 'index'])->name('list.iq.history');
          +
          +        Route::post('/user/logout', [\App\Http\Controllers\AuthController::class, 'userLogout'])->name('user.logout');
          +        Route::get('/get/admin-ajax/', [\App\Http\Controllers\AjaxController::class, 'processAdminGetAjaxRequest'])->name('admin.ajax.get.process');
          +        Route::post('/process/ajax', [\App\Http\Controllers\AjaxController::class, 'processAjaxRequest'])->name('process.ajax');
          +        Route::post('/view/modal',[\App\Http\Controllers\ModalController::class,'showModal'])->name('show.modal');
          +});
          +
          +Route::group(['prefix'=>'api','middleware' => 'requestValidate'],function () {
          +
          +//    Route::post('create/account', [\App\Http\Controllers\RegisterController::class, 'createAccount']);
          +    Route::post('create/account', [\App\Http\Controllers\RegisterController::class, 'emailVerification']);
          +    Route::post('make/payment', [\App\Http\Controllers\RegisterController::class, 'makePaymentByUser']);
          +    Route::post('make/payments', [\App\Http\Controllers\RegisterController::class, 'makePayment']);
          +    Route::get('get/security_question', [\App\Http\Controllers\RegisterController::class, 'getSecurityQuestion']);
          +    Route::post('create/customer', [\App\Http\Controllers\RegisterController::class, 'createCustomer']);
          +    Route::post('customer/profile-verify', [\App\Http\Controllers\RegisterController::class, 'profileVerification']);
          +    Route::get('get/identity_question', [\App\Http\Controllers\RegisterController::class, 'getIdentityQuestionAnswer']);
          +    Route::post('post/identity_question', [\App\Http\Controllers\RegisterController::class, 'postIdentityQuestion']);
          +
          +
          +    Route::group(['middleware' => 'requestValidate'], function () {
          +        Route::post('add/profile', [\App\Http\Controllers\RegisterController::class, 'addProfile']);
          +        //Route::post('add/package',[\App\Http\Controllers\RegisterController::class,'addPackage']);
          +        Route::post('import/credit-report', [\App\Http\Controllers\RegisterController::class, 'importCreditReportForUser']);
          +        Route::get('get-user-info', [\App\Http\Controllers\RegisterController::class, 'getUserInfoById']);
          +//        Route::post('make/payment', [\App\Http\Controllers\RegisterController::class, 'makePaymentByUser']);
          +    });
          +
          +});
          +
          diff --git a/server.php b/server.php
          new file mode 100644
          index 0000000..5fb6379
          --- /dev/null
          +++ b/server.php
          @@ -0,0 +1,21 @@
          +<?php
          +
          +/**
          + * Laravel - A PHP Framework For Web Artisans
          + *
          + * @package  Laravel
          + * @author   Taylor Otwell <taylor@laravel.com>
          + */
          +
          +$uri = urldecode(
          +    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
          +);
          +
          +// This file allows us to emulate Apache's "mod_rewrite" functionality from the
          +// built-in PHP web server. This provides a convenient way to test a Laravel
          +// application without having installed a "real" web server software here.
          +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
          +    return false;
          +}
          +
          +require_once __DIR__.'/public/index.php';
          diff --git a/storage/app/.gitignore b/storage/app/.gitignore
          new file mode 100644
          index 0000000..8f4803c
          --- /dev/null
          +++ b/storage/app/.gitignore
          @@ -0,0 +1,3 @@
          +*
          +!public/
          +!.gitignore
          diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore
          new file mode 100644
          index 0000000..d6b7ef3
          --- /dev/null
          +++ b/storage/app/public/.gitignore
          @@ -0,0 +1,2 @@
          +*
          +!.gitignore
          diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore
          new file mode 100644
          index 0000000..05c4471
          --- /dev/null
          +++ b/storage/framework/.gitignore
          @@ -0,0 +1,9 @@
          +compiled.php
          +config.php
          +down
          +events.scanned.php
          +maintenance.php
          +routes.php
          +routes.scanned.php
          +schedule-*
          +services.json
          diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore
          new file mode 100644
          index 0000000..01e4a6c
          --- /dev/null
          +++ b/storage/framework/cache/.gitignore
          @@ -0,0 +1,3 @@
          +*
          +!data/
          +!.gitignore
          diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore
          new file mode 100644
          index 0000000..d6b7ef3
          --- /dev/null
          +++ b/storage/framework/cache/data/.gitignore
          @@ -0,0 +1,2 @@
          +*
          +!.gitignore
          diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore
          new file mode 100644
          index 0000000..d6b7ef3
          --- /dev/null
          +++ b/storage/framework/sessions/.gitignore
          @@ -0,0 +1,2 @@
          +*
          +!.gitignore
          diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore
          new file mode 100644
          index 0000000..d6b7ef3
          --- /dev/null
          +++ b/storage/framework/testing/.gitignore
          @@ -0,0 +1,2 @@
          +*
          +!.gitignore
          diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore
          new file mode 100644
          index 0000000..d6b7ef3
          --- /dev/null
          +++ b/storage/framework/views/.gitignore
          @@ -0,0 +1,2 @@
          +*
          +!.gitignore
          diff --git a/stubs/cast.stub b/stubs/cast.stub
          new file mode 100644
          index 0000000..25d35b6
          --- /dev/null
          +++ b/stubs/cast.stub
          @@ -0,0 +1,36 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
          +
          +class {{ class }} implements CastsAttributes
          +{
          +    /**
          +     * Cast the given value.
          +     *
          +     * @param  \Illuminate\Database\Eloquent\Model  $model
          +     * @param  string  $key
          +     * @param  mixed  $value
          +     * @param  array  $attributes
          +     * @return mixed
          +     */
          +    public function get($model, string $key, $value, array $attributes)
          +    {
          +        return $value;
          +    }
          +
          +    /**
          +     * Prepare the given value for storage.
          +     *
          +     * @param  \Illuminate\Database\Eloquent\Model  $model
          +     * @param  string  $key
          +     * @param  mixed  $value
          +     * @param  array  $attributes
          +     * @return mixed
          +     */
          +    public function set($model, string $key, $value, array $attributes)
          +    {
          +        return $value;
          +    }
          +}
          diff --git a/stubs/console.stub b/stubs/console.stub
          new file mode 100644
          index 0000000..0f751a3
          --- /dev/null
          +++ b/stubs/console.stub
          @@ -0,0 +1,42 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Console\Command;
          +
          +class {{ class }} extends Command
          +{
          +    /**
          +     * The name and signature of the console command.
          +     *
          +     * @var string
          +     */
          +    protected $signature = '{{ command }}';
          +
          +    /**
          +     * The console command description.
          +     *
          +     * @var string
          +     */
          +    protected $description = 'Command description';
          +
          +    /**
          +     * Create a new command instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        parent::__construct();
          +    }
          +
          +    /**
          +     * Execute the console command.
          +     *
          +     * @return int
          +     */
          +    public function handle()
          +    {
          +        return 0;
          +    }
          +}
          diff --git a/stubs/controller.api.stub b/stubs/controller.api.stub
          new file mode 100644
          index 0000000..381a9c8
          --- /dev/null
          +++ b/stubs/controller.api.stub
          @@ -0,0 +1,64 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store(Request $request)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show($id)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update(Request $request, $id)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy($id)
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.invokable.stub b/stubs/controller.invokable.stub
          new file mode 100644
          index 0000000..12d291c
          --- /dev/null
          +++ b/stubs/controller.invokable.stub
          @@ -0,0 +1,20 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Handle the incoming request.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function __invoke(Request $request)
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.model.api.stub b/stubs/controller.model.api.stub
          new file mode 100644
          index 0000000..4da21ed
          --- /dev/null
          +++ b/stubs/controller.model.api.stub
          @@ -0,0 +1,65 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ namespacedModel }};
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use {{ namespacedRequests }}
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \{{ namespacedStoreRequest }}  $request
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store({{ storeRequest }} $request)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \{{ namespacedUpdateRequest }}  $request
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update({{ updateRequest }} $request, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.model.stub b/stubs/controller.model.stub
          new file mode 100644
          index 0000000..1396bd4
          --- /dev/null
          +++ b/stubs/controller.model.stub
          @@ -0,0 +1,86 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ namespacedModel }};
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use {{ namespacedRequests }}
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for creating a new resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function create()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \{{ namespacedStoreRequest }}  $request
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store({{ storeRequest }} $request)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for editing the specified resource.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function edit({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \{{ namespacedUpdateRequest }}  $request
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update({{ updateRequest }} $request, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.nested.api.stub b/stubs/controller.nested.api.stub
          new file mode 100644
          index 0000000..c5fda60
          --- /dev/null
          +++ b/stubs/controller.nested.api.stub
          @@ -0,0 +1,71 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ namespacedModel }};
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +use {{ namespacedParentModel }};
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index({{ parentModel }} ${{ parentModelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store(Request $request, {{ parentModel }} ${{ parentModelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show({{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update(Request $request, {{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy({{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.nested.stub b/stubs/controller.nested.stub
          new file mode 100644
          index 0000000..ed6a095
          --- /dev/null
          +++ b/stubs/controller.nested.stub
          @@ -0,0 +1,94 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ namespacedModel }};
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +use {{ namespacedParentModel }};
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index({{ parentModel }} ${{ parentModelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for creating a new resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function create({{ parentModel }} ${{ parentModelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store(Request $request, {{ parentModel }} ${{ parentModelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show({{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for editing the specified resource.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function edit({{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update(Request $request, {{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  \{{ namespacedParentModel }}  ${{ parentModelVariable }}
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy({{ parentModel }} ${{ parentModelVariable }}, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/controller.plain.stub b/stubs/controller.plain.stub
          new file mode 100644
          index 0000000..da07e7d
          --- /dev/null
          +++ b/stubs/controller.plain.stub
          @@ -0,0 +1,11 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +
          +class {{ class }} extends Controller
          +{
          +    //
          +}
          diff --git a/stubs/controller.stub b/stubs/controller.stub
          new file mode 100644
          index 0000000..2e6b620
          --- /dev/null
          +++ b/stubs/controller.stub
          @@ -0,0 +1,85 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ rootNamespace }}Http\Controllers\Controller;
          +use Illuminate\Http\Request;
          +
          +class {{ class }} extends Controller
          +{
          +    /**
          +     * Display a listing of the resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function index()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for creating a new resource.
          +     *
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function create()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Store a newly created resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function store(Request $request)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Display the specified resource.
          +     *
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function show($id)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Show the form for editing the specified resource.
          +     *
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function edit($id)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Update the specified resource in storage.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function update(Request $request, $id)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Remove the specified resource from storage.
          +     *
          +     * @param  int  $id
          +     * @return \Illuminate\Http\Response
          +     */
          +    public function destroy($id)
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/event.stub b/stubs/event.stub
          new file mode 100644
          index 0000000..47f8c91
          --- /dev/null
          +++ b/stubs/event.stub
          @@ -0,0 +1,36 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Broadcasting\Channel;
          +use Illuminate\Broadcasting\InteractsWithSockets;
          +use Illuminate\Broadcasting\PresenceChannel;
          +use Illuminate\Broadcasting\PrivateChannel;
          +use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
          +use Illuminate\Foundation\Events\Dispatchable;
          +use Illuminate\Queue\SerializesModels;
          +
          +class {{ class }}
          +{
          +    use Dispatchable, InteractsWithSockets, SerializesModels;
          +
          +    /**
          +     * Create a new event instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Get the channels the event should broadcast on.
          +     *
          +     * @return \Illuminate\Broadcasting\Channel|array
          +     */
          +    public function broadcastOn()
          +    {
          +        return new PrivateChannel('channel-name');
          +    }
          +}
          diff --git a/stubs/factory.stub b/stubs/factory.stub
          new file mode 100644
          index 0000000..3e00f36
          --- /dev/null
          +++ b/stubs/factory.stub
          @@ -0,0 +1,20 @@
          +<?php
          +
          +namespace {{ factoryNamespace }};
          +
          +use Illuminate\Database\Eloquent\Factories\Factory;
          +
          +class {{ factory }}Factory extends Factory
          +{
          +    /**
          +     * Define the model's default state.
          +     *
          +     * @return array
          +     */
          +    public function definition()
          +    {
          +        return [
          +            //
          +        ];
          +    }
          +}
          diff --git a/stubs/job.queued.stub b/stubs/job.queued.stub
          new file mode 100644
          index 0000000..4b78746
          --- /dev/null
          +++ b/stubs/job.queued.stub
          @@ -0,0 +1,35 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Bus\Queueable;
          +use Illuminate\Contracts\Queue\ShouldBeUnique;
          +use Illuminate\Contracts\Queue\ShouldQueue;
          +use Illuminate\Foundation\Bus\Dispatchable;
          +use Illuminate\Queue\InteractsWithQueue;
          +use Illuminate\Queue\SerializesModels;
          +
          +class {{ class }} implements ShouldQueue
          +{
          +    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
          +
          +    /**
          +     * Create a new job instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Execute the job.
          +     *
          +     * @return void
          +     */
          +    public function handle()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/job.stub b/stubs/job.stub
          new file mode 100644
          index 0000000..89dc9d7
          --- /dev/null
          +++ b/stubs/job.stub
          @@ -0,0 +1,30 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Foundation\Bus\Dispatchable;
          +
          +class {{ class }}
          +{
          +    use Dispatchable;
          +
          +    /**
          +     * Create a new job instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Execute the job.
          +     *
          +     * @return void
          +     */
          +    public function handle()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/mail.stub b/stubs/mail.stub
          new file mode 100644
          index 0000000..f432a81
          --- /dev/null
          +++ b/stubs/mail.stub
          @@ -0,0 +1,33 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Bus\Queueable;
          +use Illuminate\Contracts\Queue\ShouldQueue;
          +use Illuminate\Mail\Mailable;
          +use Illuminate\Queue\SerializesModels;
          +
          +class {{ class }} extends Mailable
          +{
          +    use Queueable, SerializesModels;
          +
          +    /**
          +     * Create a new message instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Build the message.
          +     *
          +     * @return $this
          +     */
          +    public function build()
          +    {
          +        return $this->view('view.name');
          +    }
          +}
          diff --git a/stubs/markdown-mail.stub b/stubs/markdown-mail.stub
          new file mode 100644
          index 0000000..e4c7cd4
          --- /dev/null
          +++ b/stubs/markdown-mail.stub
          @@ -0,0 +1,33 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Bus\Queueable;
          +use Illuminate\Contracts\Queue\ShouldQueue;
          +use Illuminate\Mail\Mailable;
          +use Illuminate\Queue\SerializesModels;
          +
          +class {{ class }} extends Mailable
          +{
          +    use Queueable, SerializesModels;
          +
          +    /**
          +     * Create a new message instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Build the message.
          +     *
          +     * @return $this
          +     */
          +    public function build()
          +    {
          +        return $this->markdown('{{ view }}');
          +    }
          +}
          diff --git a/stubs/markdown-notification.stub b/stubs/markdown-notification.stub
          new file mode 100644
          index 0000000..5438f04
          --- /dev/null
          +++ b/stubs/markdown-notification.stub
          @@ -0,0 +1,58 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Bus\Queueable;
          +use Illuminate\Contracts\Queue\ShouldQueue;
          +use Illuminate\Notifications\Messages\MailMessage;
          +use Illuminate\Notifications\Notification;
          +
          +class {{ class }} extends Notification
          +{
          +    use Queueable;
          +
          +    /**
          +     * Create a new notification instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Get the notification's delivery channels.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return array
          +     */
          +    public function via($notifiable)
          +    {
          +        return ['mail'];
          +    }
          +
          +    /**
          +     * Get the mail representation of the notification.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return \Illuminate\Notifications\Messages\MailMessage
          +     */
          +    public function toMail($notifiable)
          +    {
          +        return (new MailMessage)->markdown('{{ view }}');
          +    }
          +
          +    /**
          +     * Get the array representation of the notification.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return array
          +     */
          +    public function toArray($notifiable)
          +    {
          +        return [
          +            //
          +        ];
          +    }
          +}
          diff --git a/stubs/middleware.stub b/stubs/middleware.stub
          new file mode 100644
          index 0000000..855594c
          --- /dev/null
          +++ b/stubs/middleware.stub
          @@ -0,0 +1,21 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Closure;
          +use Illuminate\Http\Request;
          +
          +class {{ class }}
          +{
          +    /**
          +     * Handle an incoming request.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
          +     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
          +     */
          +    public function handle(Request $request, Closure $next)
          +    {
          +        return $next($request);
          +    }
          +}
          diff --git a/stubs/migration.create.stub b/stubs/migration.create.stub
          new file mode 100644
          index 0000000..f4a56a0
          --- /dev/null
          +++ b/stubs/migration.create.stub
          @@ -0,0 +1,31 @@
          +<?php
          +
          +use Illuminate\Database\Migrations\Migration;
          +use Illuminate\Database\Schema\Blueprint;
          +use Illuminate\Support\Facades\Schema;
          +
          +class {{ class }} extends Migration
          +{
          +    /**
          +     * Run the migrations.
          +     *
          +     * @return void
          +     */
          +    public function up()
          +    {
          +        Schema::create('{{ table }}', function (Blueprint $table) {
          +            $table->id();
          +            $table->timestamps();
          +        });
          +    }
          +
          +    /**
          +     * Reverse the migrations.
          +     *
          +     * @return void
          +     */
          +    public function down()
          +    {
          +        Schema::dropIfExists('{{ table }}');
          +    }
          +}
          diff --git a/stubs/migration.stub b/stubs/migration.stub
          new file mode 100644
          index 0000000..fd0e437
          --- /dev/null
          +++ b/stubs/migration.stub
          @@ -0,0 +1,28 @@
          +<?php
          +
          +use Illuminate\Database\Migrations\Migration;
          +use Illuminate\Database\Schema\Blueprint;
          +use Illuminate\Support\Facades\Schema;
          +
          +class {{ class }} extends Migration
          +{
          +    /**
          +     * Run the migrations.
          +     *
          +     * @return void
          +     */
          +    public function up()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Reverse the migrations.
          +     *
          +     * @return void
          +     */
          +    public function down()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/migration.update.stub b/stubs/migration.update.stub
          new file mode 100644
          index 0000000..f1a04eb
          --- /dev/null
          +++ b/stubs/migration.update.stub
          @@ -0,0 +1,32 @@
          +<?php
          +
          +use Illuminate\Database\Migrations\Migration;
          +use Illuminate\Database\Schema\Blueprint;
          +use Illuminate\Support\Facades\Schema;
          +
          +class {{ class }} extends Migration
          +{
          +    /**
          +     * Run the migrations.
          +     *
          +     * @return void
          +     */
          +    public function up()
          +    {
          +        Schema::table('{{ table }}', function (Blueprint $table) {
          +            //
          +        });
          +    }
          +
          +    /**
          +     * Reverse the migrations.
          +     *
          +     * @return void
          +     */
          +    public function down()
          +    {
          +        Schema::table('{{ table }}', function (Blueprint $table) {
          +            //
          +        });
          +    }
          +}
          diff --git a/stubs/model.pivot.stub b/stubs/model.pivot.stub
          new file mode 100644
          index 0000000..35a674a
          --- /dev/null
          +++ b/stubs/model.pivot.stub
          @@ -0,0 +1,10 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Database\Eloquent\Relations\Pivot;
          +
          +class {{ class }} extends Pivot
          +{
          +    //
          +}
          diff --git a/stubs/model.stub b/stubs/model.stub
          new file mode 100644
          index 0000000..18f7583
          --- /dev/null
          +++ b/stubs/model.stub
          @@ -0,0 +1,10 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Database\Eloquent\Factories\HasFactory;
          +
          +class {{ class }} extends BaseModel
          +{
          +    use HasFactory;
          +}
          diff --git a/stubs/notification.stub b/stubs/notification.stub
          new file mode 100644
          index 0000000..b170a46
          --- /dev/null
          +++ b/stubs/notification.stub
          @@ -0,0 +1,61 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Bus\Queueable;
          +use Illuminate\Contracts\Queue\ShouldQueue;
          +use Illuminate\Notifications\Messages\MailMessage;
          +use Illuminate\Notifications\Notification;
          +
          +class {{ class }} extends Notification
          +{
          +    use Queueable;
          +
          +    /**
          +     * Create a new notification instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Get the notification's delivery channels.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return array
          +     */
          +    public function via($notifiable)
          +    {
          +        return ['mail'];
          +    }
          +
          +    /**
          +     * Get the mail representation of the notification.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return \Illuminate\Notifications\Messages\MailMessage
          +     */
          +    public function toMail($notifiable)
          +    {
          +        return (new MailMessage)
          +                    ->line('The introduction to the notification.')
          +                    ->action('Notification Action', url('/'))
          +                    ->line('Thank you for using our application!');
          +    }
          +
          +    /**
          +     * Get the array representation of the notification.
          +     *
          +     * @param  mixed  $notifiable
          +     * @return array
          +     */
          +    public function toArray($notifiable)
          +    {
          +        return [
          +            //
          +        ];
          +    }
          +}
          diff --git a/stubs/observer.plain.stub b/stubs/observer.plain.stub
          new file mode 100644
          index 0000000..e2506b7
          --- /dev/null
          +++ b/stubs/observer.plain.stub
          @@ -0,0 +1,8 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +class {{ class }}
          +{
          +    //
          +}
          diff --git a/stubs/observer.stub b/stubs/observer.stub
          new file mode 100644
          index 0000000..32ca095
          --- /dev/null
          +++ b/stubs/observer.stub
          @@ -0,0 +1,63 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use {{ namespacedModel }};
          +
          +class {{ class }}
          +{
          +    /**
          +     * Handle the {{ model }} "created" event.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return void
          +     */
          +    public function created({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Handle the {{ model }} "updated" event.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return void
          +     */
          +    public function updated({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Handle the {{ model }} "deleted" event.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return void
          +     */
          +    public function deleted({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Handle the {{ model }} "restored" event.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return void
          +     */
          +    public function restored({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Handle the {{ model }} "force deleted" event.
          +     *
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return void
          +     */
          +    public function forceDeleted({{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/policy.plain.stub b/stubs/policy.plain.stub
          new file mode 100644
          index 0000000..b014d85
          --- /dev/null
          +++ b/stubs/policy.plain.stub
          @@ -0,0 +1,21 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Auth\Access\HandlesAuthorization;
          +use {{ namespacedUserModel }};
          +
          +class {{ class }}
          +{
          +    use HandlesAuthorization;
          +
          +    /**
          +     * Create a new policy instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/policy.stub b/stubs/policy.stub
          new file mode 100644
          index 0000000..985babb
          --- /dev/null
          +++ b/stubs/policy.stub
          @@ -0,0 +1,94 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Auth\Access\HandlesAuthorization;
          +use {{ namespacedModel }};
          +use {{ namespacedUserModel }};
          +
          +class {{ class }}
          +{
          +    use HandlesAuthorization;
          +
          +    /**
          +     * Determine whether the user can view any models.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function viewAny({{ user }} $user)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can view the model.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function view({{ user }} $user, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can create models.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function create({{ user }} $user)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can update the model.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function update({{ user }} $user, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can delete the model.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function delete({{ user }} $user, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can restore the model.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function restore({{ user }} $user, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine whether the user can permanently delete the model.
          +     *
          +     * @param  \{{ namespacedUserModel }}  $user
          +     * @param  \{{ namespacedModel }}  ${{ modelVariable }}
          +     * @return \Illuminate\Auth\Access\Response|bool
          +     */
          +    public function forceDelete({{ user }} $user, {{ model }} ${{ modelVariable }})
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/provider.stub b/stubs/provider.stub
          new file mode 100644
          index 0000000..6dedc58
          --- /dev/null
          +++ b/stubs/provider.stub
          @@ -0,0 +1,28 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Support\ServiceProvider;
          +
          +class {{ class }} extends ServiceProvider
          +{
          +    /**
          +     * Register services.
          +     *
          +     * @return void
          +     */
          +    public function register()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Bootstrap services.
          +     *
          +     * @return void
          +     */
          +    public function boot()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/request.stub b/stubs/request.stub
          new file mode 100644
          index 0000000..e1a3dd8
          --- /dev/null
          +++ b/stubs/request.stub
          @@ -0,0 +1,20 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +
          +class {{ class }} extends BaseRequest
          +{
          +
          +    /**
          +     * Get the validation rules that apply to the request.
          +     *
          +     * @return array
          +     */
          +    public function rules()
          +    {
          +        return [
          +            //
          +        ];
          +    }
          +}
          diff --git a/stubs/resource-collection.stub b/stubs/resource-collection.stub
          new file mode 100644
          index 0000000..ddec961
          --- /dev/null
          +++ b/stubs/resource-collection.stub
          @@ -0,0 +1,19 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Http\Resources\Json\ResourceCollection;
          +
          +class {{ class }} extends ResourceCollection
          +{
          +    /**
          +     * Transform the resource collection into an array.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
          +     */
          +    public function toArray($request)
          +    {
          +        return parent::toArray($request);
          +    }
          +}
          diff --git a/stubs/resource.stub b/stubs/resource.stub
          new file mode 100644
          index 0000000..05bacc3
          --- /dev/null
          +++ b/stubs/resource.stub
          @@ -0,0 +1,19 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Http\Resources\Json\JsonResource;
          +
          +class {{ class }} extends JsonResource
          +{
          +    /**
          +     * Transform the resource into an array.
          +     *
          +     * @param  \Illuminate\Http\Request  $request
          +     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
          +     */
          +    public function toArray($request)
          +    {
          +        return parent::toArray($request);
          +    }
          +}
          diff --git a/stubs/rule.stub b/stubs/rule.stub
          new file mode 100644
          index 0000000..587ec32
          --- /dev/null
          +++ b/stubs/rule.stub
          @@ -0,0 +1,40 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Contracts\Validation\{{ ruleType }};
          +
          +class {{ class }} implements {{ ruleType }}
          +{
          +    /**
          +     * Create a new rule instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Determine if the validation rule passes.
          +     *
          +     * @param  string  $attribute
          +     * @param  mixed  $value
          +     * @return bool
          +     */
          +    public function passes($attribute, $value)
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Get the validation error message.
          +     *
          +     * @return string
          +     */
          +    public function message()
          +    {
          +        return 'The validation error message.';
          +    }
          +}
          diff --git a/stubs/seeder.stub b/stubs/seeder.stub
          new file mode 100644
          index 0000000..5662969
          --- /dev/null
          +++ b/stubs/seeder.stub
          @@ -0,0 +1,18 @@
          +<?php
          +
          +namespace Database\Seeders;
          +
          +use Illuminate\Database\Seeder;
          +
          +class {{ class }} extends Seeder
          +{
          +    /**
          +     * Run the database seeds.
          +     *
          +     * @return void
          +     */
          +    public function run()
          +    {
          +        //
          +    }
          +}
          diff --git a/stubs/test.stub b/stubs/test.stub
          new file mode 100644
          index 0000000..84c75cb
          --- /dev/null
          +++ b/stubs/test.stub
          @@ -0,0 +1,22 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\Foundation\Testing\RefreshDatabase;
          +use Illuminate\Foundation\Testing\WithFaker;
          +use Tests\TestCase;
          +
          +class {{ class }} extends TestCase
          +{
          +    /**
          +     * A basic feature test example.
          +     *
          +     * @return void
          +     */
          +    public function test_example()
          +    {
          +        $response = $this->get('/');
          +
          +        $response->assertStatus(200);
          +    }
          +}
          diff --git a/stubs/test.unit.stub b/stubs/test.unit.stub
          new file mode 100644
          index 0000000..b6816aa
          --- /dev/null
          +++ b/stubs/test.unit.stub
          @@ -0,0 +1,18 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use PHPUnit\Framework\TestCase;
          +
          +class {{ class }} extends TestCase
          +{
          +    /**
          +     * A basic unit test example.
          +     *
          +     * @return void
          +     */
          +    public function test_example()
          +    {
          +        $this->assertTrue(true);
          +    }
          +}
          diff --git a/stubs/view-component.stub b/stubs/view-component.stub
          new file mode 100644
          index 0000000..eab8fd3
          --- /dev/null
          +++ b/stubs/view-component.stub
          @@ -0,0 +1,28 @@
          +<?php
          +
          +namespace {{ namespace }};
          +
          +use Illuminate\View\Component;
          +
          +class {{ class }} extends Component
          +{
          +    /**
          +     * Create a new component instance.
          +     *
          +     * @return void
          +     */
          +    public function __construct()
          +    {
          +        //
          +    }
          +
          +    /**
          +     * Get the view / contents that represent the component.
          +     *
          +     * @return \Illuminate\Contracts\View\View|\Closure|string
          +     */
          +    public function render()
          +    {
          +        return {{ view }};
          +    }
          +}
          diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php
          new file mode 100644
          index 0000000..547152f
          --- /dev/null
          +++ b/tests/CreatesApplication.php
          @@ -0,0 +1,22 @@
          +<?php
          +
          +namespace Tests;
          +
          +use Illuminate\Contracts\Console\Kernel;
          +
          +trait CreatesApplication
          +{
          +    /**
          +     * Creates the application.
          +     *
          +     * @return \Illuminate\Foundation\Application
          +     */
          +    public function createApplication()
          +    {
          +        $app = require __DIR__.'/../bootstrap/app.php';
          +
          +        $app->make(Kernel::class)->bootstrap();
          +
          +        return $app;
          +    }
          +}
          diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
          new file mode 100644
          index 0000000..cdb5111
          --- /dev/null
          +++ b/tests/Feature/ExampleTest.php
          @@ -0,0 +1,21 @@
          +<?php
          +
          +namespace Tests\Feature;
          +
          +use Illuminate\Foundation\Testing\RefreshDatabase;
          +use Tests\TestCase;
          +
          +class ExampleTest extends TestCase
          +{
          +    /**
          +     * A basic test example.
          +     *
          +     * @return void
          +     */
          +    public function testBasicTest()
          +    {
          +        $response = $this->get('/');
          +
          +        $response->assertStatus(200);
          +    }
          +}
          diff --git a/tests/TestCase.php b/tests/TestCase.php
          new file mode 100644
          index 0000000..2932d4a
          --- /dev/null
          +++ b/tests/TestCase.php
          @@ -0,0 +1,10 @@
          +<?php
          +
          +namespace Tests;
          +
          +use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
          +
          +abstract class TestCase extends BaseTestCase
          +{
          +    use CreatesApplication;
          +}
          diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php
          new file mode 100644
          index 0000000..358cfc8
          --- /dev/null
          +++ b/tests/Unit/ExampleTest.php
          @@ -0,0 +1,18 @@
          +<?php
          +
          +namespace Tests\Unit;
          +
          +use PHPUnit\Framework\TestCase;
          +
          +class ExampleTest extends TestCase
          +{
          +    /**
          +     * A basic test example.
          +     *
          +     * @return void
          +     */
          +    public function testBasicTest()
          +    {
          +        $this->assertTrue(true);
          +    }
          +}
          diff --git a/webpack.mix.js b/webpack.mix.js
          new file mode 100644
          index 0000000..1080f9f
          --- /dev/null
          +++ b/webpack.mix.js
          @@ -0,0 +1,27 @@
          +const mix = require('laravel-mix');
          +
          +/*
          + |--------------------------------------------------------------------------
          + | Mix Asset Management
          + |--------------------------------------------------------------------------
          + |
          + | Mix provides a clean, fluent API for defining some Webpack build steps
          + | for your Laravel applications. By default, we are compiling the CSS
          + | file for the application as well as bundling up all the JS files.
          + |
          + */
          +
          +const path = require('path');
          +mix.webpackConfig({
          +    resolve: {
          +        alias: {
          +            '@': path.resolve(__dirname, 'resources/js')
          +        },
          +    },
          +});
          +
          +mix.disableNotifications();
          +
          +mix.js('resources/js/app.js', 'public/js/vue')
          +    .vue();
          +